您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
SpyShare for Ogame: Allows you to share spy reports with your buddies even if you are not in the same alliance
- // ==UserScript==
- // @name SpyShare
- // @namespace SpyShareNamespace
- // @author [TSN]Kanly
- // @include *.ogame.gameforge.com/game/*
- // @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
- // @description SpyShare for Ogame: Allows you to share spy reports with your buddies even if you are not in the same alliance
- // @version 2.0
- // ==/UserScript==
- var SSR = {};
- var noSpyShareTxt = "\n\n\ If you see this message then you don't have the SpyShare Tool, it is not active/working or Commander is not activated. For more info check the[url=https://greasyfork.org/scripts/4739-spyshare] SpyShare Page[/url]";
- function main() {
- SSR.Data.init();
- SSR.Updater.check();
- SSR.Init.init();
- }
- SSR.Updater = {
- scriptId: 4739,
- updStr: "",
- scriptName: "",
- checkD: 1,
- checkH: 0,
- checkM: 0,
- checkS: 0,
- checkInterval: 0,
- currVersion: 0,
- parseVersion: function(data) {
- return parseInt(data.match(/@version\s+\d+/)[0].match(/\d+/));
- },
- call: function(alertResp) {
- GM_xmlhttpRequest({
- method: 'GET',
- url: 'https://greasyfork.org/scripts/4739-spyshare/code/' + this.scriptId + '.meta.js',
- onload: function (response) {
- SSR.Updater.compare(response.responseText, alertResp);
- }
- });
- },
- compare: function(metaData, alertResp) {
- try{
- var newVersion = parseInt(metaData.match(/@version\s+[\d\.]+/)[0].match(/[\d\.]+/)[0].replace(".",""));
- if (newVersion > this.currVersion) {
- if (confirm('A new version of the ' + this.scriptName + ' user script is available. Do you want to update?')) {
- SSR.Storage.store(this.updStr, new Date().getTime() + "");
- top.location.href = 'https://greasyfork.org/scripts/4739-spyshare/code/' + this.scriptId + '.user.js';
- }
- else {
- if (confirm('Do you want to turn off auto updating for this script?')) {
- SSR.Storage.store(this.updStr, "off");
- GM_registerMenuCommand("Auto Update " + this.scriptName,
- function () {
- SSR.Storage.store(SSR.Updater.updStr, new Date().getTime() + "");
- SSR.Updater.call(true);
- });
- alert('Automatic updates can be re-enabled for this script from the User Script Commands submenu.');
- }
- else {
- SSR.Storage.store(this.updStr, new Date().getTime() + "");
- }
- }
- }
- else {
- if (alertResp)
- alert('No updates available for ' + this.scriptName);
- SSR.Storage.store(this.updStr, new Date().getTime()+ "");
- }
- }catch(e){}
- },
- check: function() {
- try {
- var meta = GM_getResourceText('meta');
- var updStat;
- var timeNow = new Date().getTime();
- //this.scriptName = meta.match(/@name\s+(.*)\s*\n/i)[1];
- this.scriptName = GM_info.script.name;
- //this.currVersion = meta.match(/@version\s+\d+/)[0].match(/\d+/);
- this.currVersion = parseInt(GM_info.script.version.replace(".",""));
- this.updStr = "updated_" + this.scriptId;
- this.checkInterval = ((((this.checkD*24 + this.checkH)*60 + this.checkH)*60 + this.checkM)*60 + this.checkS)*1000;
- updStat = SSR.Storage.get(this.updStr, 0);
- if (updStat === "off") {
- GM_registerMenuCommand("Enable " + this.scriptName + " updates",
- function () {
- SSR.Storage.store(SSR.Updater.updStr, new Date().getTime() + "");
- SSR.Updater.call(true);
- });
- }
- else {
- if (timeNow > parseInt(updStat) + this.checkInterval) {
- SSR.Storage.store(this.updStr, timeNow + "");
- this.call();
- }
- }
- GM_registerMenuCommand("Check " + this.scriptName + " for updates",
- function () {
- SSR.Storage.store(SSR.Updater.updStr, new Date().getTime() + '');
- SSR.Updater.call(true);
- });
- }catch(e){}
- }
- };
- SSR.Data = {
- universe: '',
- playerId: 0,
- buddies: [],
- page: '',
- allianceName: '',
- init: function() {
- SSR.Data.playerId = document.getElementsByName("ogame-player-id")[0].content;
- SSR.Data.universe = document.getElementsByName("ogame-universe")[0].content;
- SSR.Data.allianceName = document.getElementsByName("ogame-alliance-tag")[0].content;
- SSR.Data.page = (unsafeWindow.location+"").match(/page=[^&]+((?=&)|(?=#)|)/g)[0].replace("page=", "");
- }
- };
- SSR.Storage = {
- getPrefix: function() {
- var s = SSR.Data.universe+"::"+SSR.Data.playerId+":::";
- return s;
- },
- store: function(name, value) {
- GM_setValue(SSR.Storage.getPrefix()+name, value);
- },
- get: function(name, defValue) {
- return GM_getValue(SSR.Storage.getPrefix()+name, defValue);
- },
- remove: function(name) {
- GM_deleteValue(SSR.Storage.getPrefix()+name);
- }
- };
- SSR.Init = {
- init: function() {
- if (SSR.Init.hasCommander() === false)
- return;
- SSR.Buddies.getBuddies();
- if (SSR.Data.page === "messages") {
- GM_addStyle(SSR.shareSection.getCss());
- SSR.Utils.waitForKeyElements('#mailz', SSR.Reports.fullSpyReports, false);
- SSR.Utils.waitForKeyElements('.read.messagebox', SSR.Reports.widgetMessagePopUp, false);
- }
- },
- hasCommander: function() {
- var found = false;
- $('#officers').find('a.tooltipHTML.on').each(function() {
- var cls = $(this).attr('class');
- if (cls.indexOf('commander') != -1)
- found = true;
- });
- return found;
- }
- };
- SSR.Reports = {
- widgetMessagePopUp: function(jNode) {
- var widget = jNode;
- var isSharedRep = false;
- var isSpyReport = false;
- var isAllianceSharedRep = false;
- if (jNode.find('.infohead th[scope="row"]').next().text().match(/\[spyShare\]/g)) {
- isSharedRep = true;
- }
- else if ((kk = jNode.find('.textWrapper .note').text().match(/_SPY_SHARE_/g)) && kk && kk.length === 2) {
- isSharedRep = true;
- isAllianceSharedRep = true;
- }
- else if ($('.infohead span.playerName a[target="_parent"]').exists() === false && $('.defenseattack.spy').exists()) {
- isSpyReport = true;
- }
- if (isSharedRep === false && isSpyReport === false)
- return;
- if (isSharedRep) {
- var info = jNode.find('.note .other.newMessage');
- if (info.exists() === false && isAllianceSharedRep === true)
- info = jNode.find('.textWrapper .note');
- info = info.text();
- info = info.match(/_SPY_SHARE_.+_SPY_SHARE_/g)[0].replace(/_SPY_SHARE_/g, '');
- info = JSON.decode(info);
- jNode.find('.showMsgNavi').remove();
- jNode.find('.answerHeadline.open').remove();
- jNode.find('.answerForm').remove();
- jNode.find('.note').html(SSR.Reports.formSharedReportHtml(info));
- }
- else if (isSpyReport) {
- jNode.find('.defenseattack.spy').parent().append(SSR.shareSection.getHtml(true));
- jNode.find('.textWrapper').css('max-height', 'none');
- SSR.shareSection.initEvents(jNode);
- }
- },
- fullSpyReports: function(jNode) {
- $('[id^="spioDetails_"]').each(function () {
- $(this).find('.defenseattack.spy').parent().append(SSR.shareSection.getHtml(true));
- });
- SSR.shareSection.initEvents(jNode);
- },
- formSharedReportHtml: function(info) {
- var html = '';
- var resTable = '';
- var tables = '';
- var header = '';
- html = formHeader(info.header);
- html += formResTable(info.resources);
- for (var section in info.data) {
- if (info.data.hasOwnProperty(section) && section !== "resources") {
- html += formTable(section+"", info.data[section]);
- }
- }
- function formHeader(hdr) {
- var s =
- '<table cellpadding="0" cellspacing="0" class="material spy">'+
- '<tbody>'+
- '<tr>'+
- '<th class="area" style="color: #6f9fc8" colspan="6" plunder_status='+hdr.pl_st+'>'+
- '<span style="float: left; color: '+hdr.act_clr+';" title='+hdr.act_title+'> '+hdr.act+'</span>'+hdr.part1+
- '<a target="_parent" href="javascript:showGalaxy('+SSR.Utils.formatCoords(hdr.coords, true)+')">'+SSR.Utils.formatCoords(hdr.coords, false)+'</a>'+hdr.part2+
- '<span class='+hdr.tar_class+'>'+hdr.player+'</span>)'+hdr.part3+
- '</th>'+
- '</tr>';
- return s;
- }
- function formResTable(res) {
- var s =
- '<tr class="areadetail">'+
- '<td colspan="6">'+
- '<table class="fragment spy2">'+
- '<tbody>'+
- '<tr>'+
- '<td class="item">'+res[0].name+'</td>'+
- '<td>'+res[0].value+'</td>'+
- '<td class="item">'+res[1].name+'</td>'+
- '<td>'+res[1].value+'</td>'+
- '</tr>'+
- '<tr>'+
- '<td class="item">'+res[2].name+'</td>'+
- '<td>'+res[2].value+'</td>'+
- '<td class="item">'+res[3].name+'</td>'+
- '<td>'+res[3].value+'</td>'+
- '</tr>'+
- '</tbody>'+
- '</table>';
- return s;
- };
- function formTable(title, data) {
- var html = '<table cellpadding="0" cellspacing="0" class="fleetdefbuildings spy">'+
- '<tbody>'+
- '<tr>'+
- '<th class="area" colspan="4">'+title+'</th>'+
- '</tr>';
- var n = 0;
- for (var entry in data) {
- if (data.hasOwnProperty(entry)) {
- if (n%2 === 0)
- html += '<tr>';
- html += '<td class="key">'+entry+'</td>'+
- '<td class="value">'+data[entry]+'</td>';
- if (n%2 === 1)
- html += '</tr>';
- n++;
- }
- }
- html += '</tbody>'+
- '</table>';
- return html;
- }
- return html;
- },
- extractSpyReportData: function(buttTable) {
- var item = buttTable;
- var info = {};
- var res = [];
- var curRes = {};
- var header = {};
- var fltdefbuilt = {};
- /*
- header:{
- pl_st:1,
- act_title: Activitate,
- tar_class: status_abbr_honorableTarget,
- act:33,
- act_clr: #848484
- player: nume,
- coords:["1", "167", "12"],
- part1: Resurse la Planeta',
- part2: Jucator:,
- part3: in 02-02 18:28:02
- }
- <th class="area" colspan="6" plunder_status="1">
- <span style="float: left; color: #848484;" title="Activitate"> -- </span>
- Resurse la<figure class="planetIcon planet tooltip js_hideTipOnMobile" title="Planeta"></figure>Caledonia <a target="_parent" href="javascript:showGalaxy(1,172,8)">[1:172:8]</a>
- (Jucator: <span class="status_abbr_honorableTarget">focul</span>) in 02-02 14:33:23
- </th>
- '53 ' 'Resurse la HomeDepo' '[1:167:12]' '(Jucator: ' 'Billy') ' in 02-02 18:28:02'
- activity part1 coords part2 player date
- */
- // get activity
- item.siblings('.aktiv.spy').each(function () {
- var item = $(this);
- header.act_title = item.find('th.area').text();
- if (item.find('font').exists()) {
- header.act_clr = item.find('font').attr('color');
- header.act = item.find('font').text();
- }
- else {
- header.act_clr = "#848484";
- header.act = "-- ";
- }
- });
- // get header info
- item.siblings('.material.spy').find('th.area').each(function () {
- var item = $(this);
- var coords = {};
- var txt;
- // plunder status
- header.pl_st = (item.is('[plunder_status]') === true) ? item.attr("plunder_status") : "0";
- // get target name
- item.find('span:last').each(function() {
- header.player = $(this).text();
- header.tar_class = $(this).attr("class");
- });
- txt = item.text();
- txt = txt.replace(header.act, '');
- txt = txt.replace(header.player, '');
- // get coords
- var coordsStr = txt.match(/\[[^\]]+\]/g);
- if (coordsStr && coordsStr[0]) {
- header.coords = coordsStr[0].match(/\d+/g);
- txt = txt.replace(coordsStr, '');
- }
- else
- header.coords = ["0", "0", "0"];
- // get "(Player: "
- var playerSec = txt.match(/\([^\)]+/g);
- if (playerSec && playerSec[0]) {
- header.part2 = playerSec[0];
- txt = txt.replace(playerSec, '');
- } else
- header.part2 = "(Player: ";
- // get time
- var dateSec = txt.match(/[^\)]+(.+)/);
- if (dateSec && dateSec[1]) {
- header.part3 = dateSec[1].replace(')', '');
- txt = txt.replace(dateSec[1], '');
- }
- else
- header.part3 = " no time available";
- header.part1 = txt;
- });
- info.header = header;
- // get resources
- item.siblings('.material.spy').find('.fragment.spy2').each(function() {
- var resCont = $(this);
- resCont.find('td').each(function() {
- var item = $(this);
- if (item.attr('class') === 'item')
- curRes.name = item.text();
- else {
- curRes.value = item.text();
- res.push(curRes);
- curRes = {};
- }
- });
- });
- info.resources = res;
- // get fleet
- item.siblings('.fleetdefbuildings.spy').each(function() {
- var section = $(this).find('th.area').text();
- var values = {};
- $(this).find('td.key').each(function() {
- values[$(this).text()] = $(this).next().text();
- });
- fltdefbuilt[section] = values;
- });
- info.data = fltdefbuilt;
- return info;
- }
- };
- SSR.Buddies = {
- getBuddies: function() {
- SSR.Data.buddies = JSON.decode(SSR.Storage.get("myBuddies", '[]'));
- SSR.Utils.waitForKeyElements('#buddylist', SSR.Buddies.extractBuddies, false);
- if (SSR.Data.buddies.length === 0)
- SSR.Buddies.requestBuddies();
- },
- requestBuddies: function() {
- var url = 'http://'+SSR.Data.universe+'/game/index.php?page=buddies&action=9&ajax=1';
- var host = SSR.Data.universe;
- var ref = 'http://'+SSR.Data.universe+'/game/index.php?page=overview';
- var contType = 'application/x-www-form-urlencoded';
- var payload = '';
- SSR.Utils.sendRequest({
- method: 'GET',
- url: url,
- host: host,
- acc: '*/*',
- ref: ref,
- contType: contType,
- payload: '',
- onloadFun: SSR.Buddies.parseBuddiesStr});
- },
- parseBuddiesStr: function(resp) {
- var html = $.parseHTML(resp);
- SSR.Buddies.extractBuddies($(html, 'table#buddylist'));
- },
- extractBuddies: function(jNode) {
- SSR.Data.buddies.length = 0;
- jNode.find('tbody tr').each(function() {
- var item = $(this);
- var name = item.find('span:first').text();
- var id = item.find('.deleteBuddy').attr('id');
- SSR.Data.buddies.push({id:id, name:name});
- });
- SSR.Storage.remove("myBuddies");
- SSR.Storage.store("myBuddies", JSON.encode(SSR.Data.buddies));
- }
- };
- SSR.shareSection = {
- getCss: function() {
- var css =
- 'a.sendShareInfo.ok {'+
- 'color: green;'+
- '}'+
- 'a.sendShareInfo.err {'+
- 'color: red;'+
- '}'+
- 'td.blockTD {'+
- 'display: inline-block;'+
- '}'+
- '.dropdown-check-list {'+
- 'display: inline-block;'+
- 'font-family: Verdana,Arial,SunSans-Regular,Sans-Serif;'+
- 'font-size: 12px;'+
- '}'+
- '.dropdown-check-list .anchor {'+
- 'position: relative;'+
- 'cursor: pointer;'+
- 'display: inline-block;'+
- 'padding: 5px 50px 5px 10px;'+
- 'background-color: #23282d;'+
- 'border: 1px solid #000;'+
- 'color:#6f9fc8;'+
- '-webkit-touch-callout: none;'+
- '-webkit-user-select: none;'+
- '-khtml-user-select: none;'+
- '-moz-user-select: none;'+
- '-ms-user-select: none;'+
- 'user-select: none;'+
- '}'+
- '.dropdown-check-list .anchor:after {'+
- 'position: absolute;'+
- 'content: "";'+
- 'border-left: 2px solid lawnGreen;'+
- 'border-top: 2px solid lawnGreen;'+
- 'padding: 5px;'+
- 'right: 10px;'+
- 'top: 20%;'+
- '-moz-transform: rotate(-135deg);'+
- '-ms-transform: rotate(-135deg);'+
- '-o-transform: rotate(-135deg);'+
- '-webkit-transform: rotate(-135deg);'+
- 'transform: rotate(-135deg);'+
- '}'+
- '.dropdown-check-list.visible .anchor:after {'+
- 'top: 40%;'+
- '-moz-transform: rotate(45deg);'+
- '-ms-transform: rotate(45deg);'+
- '-o-transform: rotate(45deg);'+
- '-webkit-transform: rotate(45deg);'+
- 'transform: rotate(45deg);'+
- '}'+
- '.dropdown-check-list ul.items {'+
- 'padding: 2px;'+
- 'display: none;'+
- 'margin: 0;'+
- 'border: 1px solid #000;'+
- 'border-top: none;'+
- 'background-color: #161A1F;'+
- 'color: #848484;'+
- '}'+
- '.dropdown-check-list ul.items li, .dropdown-check-list ul.items input {'+
- 'cursor: pointer;'+
- 'list-style: none;'+
- '-webkit-touch-callout: none;'+
- '-webkit-user-select: none;'+
- '-khtml-user-select: none;'+
- '-moz-user-select: none;'+
- '-ms-user-select: none;'+
- 'user-select: none;'+
- '}'+
- '.dropdown-check-list.visible li.groupHeader {'+
- 'color: #6f9fc8;'+
- '}'+
- '.dropdown-check-list.visible .items {'+
- 'display: block;'+
- '}';
- return css;
- },
- getHtml: function(addTable) {
- var html = '';
- if (addTable)
- html += '<table cellpadding="0" cellspacing="0" class="spy"><tbody>'+
- '<tr><th class="area" colspan="4">Share it</th></tr>';
- html +=
- '<tr>'+
- '<td>' + SSR.shareSection.getListHtml() + '</td>'+
- '<td class="blockTD"><a class="btn_blue share_button">Share</a></td>'+
- '<td class="blockTD"><a class="sendShareInfo"></a></td>'+
- '</tr>';
- if (addTable)
- html += '</tbody></table>';
- return html;
- },
- getListHtml: function() {
- // buddies: [{id:id, name:name}, ... ]
- var html =
- '<div class="shareList dropdown-check-list">'+
- '<span class="anchor">Share With</span>'+
- '<ul class="items">';
- if (SSR.Data.buddies.length !== 0)
- html += '<li class="groupHeader"><input type="checkbox" data="Friend" class="shareGroup"/>All Friends </li>';
- for (var bud in SSR.Data.buddies) {
- html += '<li><input type="checkbox" data="'+SSR.Data.buddies[bud].id+'" class="share Friend" />'+SSR.Data.buddies[bud].name+'</li>';
- }
- html += '<li class="groupHeader"><input type="checkbox" id="allianceShare" data="Ally" class="shareGroup" />'+SSR.Data.allianceName+' Alliance </li>';
- /*
- for (var allId in allies) {
- if (allies.hasOwnProperty(allId))
- html += '<li><input type="checkbox" data="'+allId+'" class="share Ally" />'+allies[allId]+'</li>';
- }
- */
- html += '</ul>'+
- '</div>';
- return html;
- },
- updateShareNote: function(jNode, status, txt) {
- if (status === 'err')
- jNode.parent().siblings().find('a.sendShareInfo').removeClass('ok').addClass('err');
- else
- jNode.parent().siblings().find('a.sendShareInfo').removeClass('err').addClass('ok');
- jNode.parent().siblings().find('a.sendShareInfo').text(txt);
- },
- initEvents: function(wrapper) {
- // show/hide list
- wrapper.find('.shareList .anchor').click(function(ev) {
- var item = $(this).parent();
- if (item.hasClass('visible'))
- item.removeClass('visible');
- else
- item.addClass('visible');
- });
- // check/uncheck groups
- wrapper.find('.shareList input:checkbox.shareGroup').click(function(ev) {
- var item = $(this);
- var newState = item.is(':checked');
- var cls = item.attr('data');
- if (!newState)
- item.parent().siblings().find('input:checkbox:checked.'+cls).click();
- else
- item.parent().siblings().find('input:checkbox.'+cls).not(':checked').click();
- });
- // share button
- wrapper.find('a.share_button').click(function(ev) {
- var item = $(this);
- var dest = [];
- var inf = '';
- var allianceShare = false;
- ev.preventDefault();
- item.parent().siblings().find('input:checked.share').each(function() {
- dest.push($(this).attr('data'));
- });
- allianceShare = item.parent().siblings().find('#allianceShare:checked').exists();
- if (dest.length === 0 && allianceShare === false) {
- SSR.shareSection.updateShareNote(item, 'err', 'No destination selected!');
- return;
- }
- else {
- info = SSR.Reports.extractSpyReportData(item.closest('table'));
- SSR.Utils.sendSharedMessages(item, dest,
- '[spyShare] '+info.header.player+" ["+SSR.Utils.formatCoords(info.header.coords, false)+"]",
- "_SPY_SHARE_"+JSON.encode(info)+"_SPY_SHARE_"+noSpyShareTxt, allianceShare);
- }
- });
- }
- };
- SSR.Utils = {
- sendRequest: function(opts) {
- var hdr = {
- 'Accept-Language': 'en-us,en;q=0.5',
- 'Accept-Encoding': 'gzip, deflate',
- 'Connection': 'keep-alive'
- };
- var onLoadFun = opts.onLoadFun;
- hdr.Accept = (opts.acc && opts.acc !== '') ? opts.acc : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
- if (opts.host) hdr.Host = opts.host;
- if (opts.ref) hdr.Referer = opts.ref;
- if (opts.contType) hdr['Content-Type'] = opts.contType;
- GM_xmlhttpRequest({
- method: opts.method,
- url: opts.url,
- headers: hdr,
- data: opts.payload,
- onload: function(response) {
- if (opts.onloadFun)
- opts.onloadFun(response.responseText);
- },
- onabort: function(resp) {
- if (opts.onabortFun)
- opts.onabortFun(resp.responseText);
- },
- onerror: function(resp) {
- if (opts.onerrorFun)
- opts.onerrorFun(resp.responseText);
- },
- ontimeout: function(resp) {
- if (opts.ontimeoutFun)
- opts.ontimeoutFun(resp.responseText);
- }
- });
- },
- sendSharedMessages: function(jNode, dest, subj, content, allianceShare) {
- var sent = 0;
- var curBuddy = 0;
- var totalMsg = dest.length;
- if (allianceShare) {
- totalMsg++;
- curBuddy = -1;
- sendAlliance();
- }
- else {
- sendSingle(dest[curBuddy]);
- }
- function sendAlliance() {
- var url = 'http://'+SSR.Data.universe+'/game/index.php?page=allianceBroadcast';
- var host = SSR.Data.universe;
- var ref = 'http://'+SSR.Data.universe+'/game/index.php?page=alliance';
- var contType = 'application/x-www-form-urlencoded';
- var payload = 'empfaenger=200&'+'&text='+content+'&ajax=1';
- SSR.Utils.sendRequest({
- method: 'POST',
- url: url,
- host: host,
- acc: '',
- ref: ref,
- contType: contType,
- payload: payload,
- onloadFun: messageSentOk});
- }
- function sendSingle() {
- var url = 'http://'+SSR.Data.universe+'/game/index.php?page=messages&to='+dest[curBuddy];
- var host = SSR.Data.universe;
- var ref = 'http://'+SSR.Data.universe+'/game/index.php?page=messages';
- var contType = 'application/x-www-form-urlencoded';
- var payload = 'betreff='+subj+'&text='+content;
- SSR.Utils.sendRequest({
- method: 'POST',
- url: url,
- host: host,
- acc: '',
- ref: ref,
- contType: contType,
- payload: payload,
- onloadFun: messageSentOk});
- }
- function messageSentOk(resp) {
- sent++;
- curBuddy++;
- SSR.shareSection.updateShareNote(jNode, 'ok', sent+'/'+totalMsg+' messages sent!');
- if (curBuddy < dest.length)
- unsafeWindow.setTimeout(sendSingle, 300);
- }
- },
- formatCoords: function(coords, isHref) {
- var del = (isHref ? ',' : ':');
- var s = parseInt(coords[0]) + del + parseInt(coords[1]) + del + parseInt(coords[2]);
- return s;
- },
- waitForKeyElements: function (selectorTxt, actionFunction, bWaitOnce, iframeSelector) {
- var targetNodes, btargetsFound;
- if (typeof iframeSelector == "undefined")
- targetNodes = $(selectorTxt);
- else
- targetNodes = $(iframeSelector).contents()
- .find(selectorTxt);
- if (targetNodes && targetNodes.length > 0) {
- /*--- Found target node(s). Go through each and act if they
- are new.
- */
- targetNodes.each(function () {
- var jThis = $(this);
- var alreadyFound = jThis.data('alreadyFound') || false;
- if (!alreadyFound) {
- //--- Call the payload function.
- unsafeWindow.setTimeout(function () {
- actionFunction(jThis);
- }, 100);
- jThis.data('alreadyFound', true);
- }
- });
- btargetsFound = true;
- } else {
- btargetsFound = false;
- }
- //--- Get the timer-control variable for this selector.
- var controlObj = SSR.Utils.waitForKeyElements.controlObj || {};
- var controlKey = selectorTxt.replace(/[^\w]/g, "_");
- var timeControl = controlObj[controlKey];
- //--- Now set or clear the timer as appropriate.
- if (btargetsFound && bWaitOnce && timeControl) {
- //--- The only condition where we need to clear the timer.
- clearInterval(timeControl);
- delete controlObj[controlKey]
- } else {
- //--- Set a timer, if needed.
- if (!timeControl) {
- timeControl = setInterval(function () {
- SSR.Utils.waitForKeyElements(selectorTxt,
- actionFunction,
- bWaitOnce,
- iframeSelector
- );
- },
- 2000
- );
- controlObj[controlKey] = timeControl;
- }
- }
- SSR.Utils.waitForKeyElements.controlObj = controlObj;
- }
- };
- JSON=new function(){this.encode=function(){var self=arguments.length?arguments[0]:this,result,tmp;if(self===null)
- result="null";else if(self!==undefined&&(tmp=$[typeof self](self))){switch(tmp){case Array:result=[];for(var i=0,j=0,k=self.length;j<k;j++){if(self[j]!==undefined&&(tmp=JSON.encode(self[j])))
- result[i++]=tmp;};result="[".concat(result.join(","),"]");break;case Boolean:result=String(self);break;case Date:result='"'.concat(self.getFullYear(),'-',d(self.getMonth()+1),'-',d(self.getDate()),'T',d(self.getHours()),':',d(self.getMinutes()),':',d(self.getSeconds()),'"');break;case Function:break;case Number:result=isFinite(self)?String(self):"null";break;case String:result='"'.concat(self.replace(rs,s).replace(ru,u),'"');break;default:var i=0,key;result=[];for(key in self){if(self[key]!==undefined&&(tmp=JSON.encode(self[key])))
- result[i++]='"'.concat(key.replace(rs,s).replace(ru,u),'":',tmp);};result="{".concat(result.join(","),"}");break;}};return result;};var c={"\b":"b","\t":"t","\n":"n","\f":"f","\r":"r",'"':'"',"\\":"\\","/":"/"},d=function(n){return n<10?"0".concat(n):n},e=function(c,f,e){e=eval;delete eval;if(typeof eval==="undefined")eval=e;f=eval(""+c);eval=e;return f},i=function(e,p,l){return 1*e.substr(p,l)},p=["","000","00","0",""],rc=null,rd=/^[0-9]{4}\-[0-9]{2}\-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$/,rs=/(\x5c|\x2F|\x22|[\x0c-\x0d]|[\x08-\x0a])/g,rt=/^([0-9]+|[0-9]+[,\.][0-9]{1,3})$/,ru=/([\x00-\x07]|\x0b|[\x0e-\x1f])/g,s=function(i,d){return"\\".concat(c[d])},u=function(i,d){var n=d.charCodeAt(0).toString(16);return"\\u".concat(p[n.length],n)},v=function(k,v){return $[typeof result](result)!==Function&&(v.hasOwnProperty?v.hasOwnProperty(k):v.constructor.prototype[k]!==v[k])},$={"boolean":function(){return Boolean},"function":function(){return Function},"number":function(){return Number},"object":function(o){return o instanceof o.constructor?o.constructor:null},"string":function(){return String},"undefined":function(){return null}},$$=function(m){function $(c,t){t=c[m];delete c[m];try{e(c)}catch(z){c[m]=t;return 1}};return $(Array)&&$(Object)};try{rc=new RegExp('^("(\\\\.|[^"\\\\\\n\\r])*?"|[,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t])+?$')}
- catch(z){rc=/^(true|false|null|\[.*\]|\{.*\}|".*"|\d+|\d+\.\d+)$/};this.decode=function(string, secure) {
- if (typeof(string) != 'string' || !string.length) return new Object();
- if (secure && !(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '')))
- return new Object();
- return eval('(' + string + ')');
- }}
- $.fn.exists = function () {
- return this.length !== 0;
- }
- if (document.body) {
- main();
- }