There are 12 previous versions of this script.
Add Syntax Highlighting (this will take a few seconds, probably freezing your browser while it works)
// coding: utf-8
// ==UserScript==
// @name Ikariam x500 Payloads
// @version 25
// @author oliezekat
// @namespace x500-payloads.ikariam
// @description Add buttons on views where you need to set resources payload.
// @include http://s*.ikariam.*/*
// @include http://s*.*.ikariam.*/*
// @exclude http://support.ikariam.*/*
// @exclude http://board.*.ikariam.*/*
// ==/UserScript==
if (!x500Payloads) var x500Payloads = {};
x500Payloads =
{
/* Requires modules */
Log: {},
DOM: {},
Ikariam: {},
DB: {},
Updater: {},
StartTime: 0,
LogEnabled: false,
View: '',
EnhancedBy: '',
/* Script metas */
ScriptName: 'Ikariam x500 Payloads',
Version: 25,
HomePage: '',
ScriptURL: '',
UserScriptsID: 43668
};
x500Payloads.Init = function()
{
this.StartTime = new Date().getTime();
this.HomePage = 'http://userscripts.org/scripts/show/'+this.UserScriptsID;
this.ScriptURL = 'http://userscripts.org/scripts/source/'+this.UserScriptsID+'.user.js';
/* Init Log */
this.Log.Init(this);
this.Log._Enabled = this.LogEnabled;
this.Log.Add('Start...');
this.DOM.Init(this);
this.Ikariam.Init(this);
this.DB.Init(this);
this.DB.Load_Options();
this.Updater.Init(this);
this.EnhancedBy = 'Enhanced by <a target="_blank" href="'+this.HomePage+'"><b>'+this.ScriptName+'</b></a> (v. <i>'+this.Version+'</i>).';
if (this.DB.Options['AvailableVersion'] > this.Version)
this.EnhancedBy += ' <a href="'+this.ScriptURL+'?version='+this.DB.Options['AvailableVersion']+'.user.js'+'" style="color: red;"><b>NEW RELEASE V. <i>'+this.DB.Options['AvailableVersion']+'</i> AVAILABLE !</b></a>';
if (this.Ikariam.View() =='transport')
{
this.View_Transport();
}
else if (this.Ikariam.View() =='branchOffice')
{
this.View_BranchOffice();
}
else if (this.Ikariam.View() =='takeOffer')
{
this.View_TakeOffer();
}
else if (this.Ikariam.View() =='colonize')
{
this.View_Colonize();
}
else if (this.Ikariam.View() =='resource')
{
this.View_Resource();
}
else if (this.Ikariam.View() =='tradegood')
{
this.View_Resource();
}
this.Log.Add('End !');
};
x500Payloads.CheckScriptUpdate = function()
{
if ((this.DB.Options['LastCheckUpdate'] == undefined) || (this.DB.Options['LastCheckUpdate'] < this.StartTime - (1000 * 60 * 60 * 24)))
{
var self = this;
var ScriptURL = 'http://userscripts.org/scripts/source/'+this.UserScriptsID+'.meta.js?since='+this.StartTime;
this.Updater.Check(ScriptURL, function(availableVersion) { self._CompareScriptUpdate(availableVersion); });
}
else
{
this.Log.Add('Not need check update today');
}
};
x500Payloads._CompareScriptUpdate = function(availableVersion)
{
this.Log.Add('Available version: '+availableVersion);
if (availableVersion != 0)
{
availableVersion = parseInt(availableVersion);
if ((availableVersion > this.Version) && ((this.DB.Options['AvailableVersion'] == undefined) || (availableVersion > this.DB.Options['AvailableVersion'])))
{
if (confirm("Do you want to install \""+this.ScriptName+"\" v. "+availableVersion+" ?"))
{
GM_openInTab(this.ScriptURL+'?version='+availableVersion+'.user.js');
}
}
this.DB.Options['AvailableVersion'] = availableVersion;
this.DB.Options['LastCheckUpdate'] = this.StartTime;
this.DB.Save_Options();
}
};
x500Payloads.View_Transport = function()
{
var nodes = x500Payloads.DOM.Get_Nodes("//ul[@class='resourceAssign']/li");
if (nodes != null)
{
// define CSS
var default_style = <><![CDATA[
#mainview ul.resourceAssign { width: 660px; }
#container .resourceAssign li { padding:0px; background-position:0 center;}
#container .resourceAssign .sliderinput { margin:0 0 0 30px; width:400px;}
#container .resourceAssign input.textfield { margin-top: 2px; position:relative;top:-26px;margin-left:-5px;}
input.x500Payloads,
input.x500Payloads:active {margin: 0px; padding: 1px 3px; margin-top: 3px; font-size: 10px; }
input.x500Payloads { position: absolute; top: 3px;}
]]></>.toXMLString();
GM_addStyle(default_style);
var capacityField = '';
if (document.getElementById('textfield_capacity') != null)
{
capacityField = 'textfield_capacity';
}
var _self = this;
// Add buttons
for (var i=0; i < nodes.snapshotLength; i++)
{
var li = nodes.snapshotItem(i);
var Good = li.className;
// create button
var input = document.createElement('input');
input.type = "button";
input.value = "+5k";
input.title = "Add 5000 goods";
input.style.left = '616px';
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", "textfield_"+Good);
input.setAttribute("capacityfield", capacityField);
input.setAttribute("amount", 5000);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
li.appendChild(input);
// create button
var input = document.createElement('input');
input.type = "button";
input.value = "+1k";
input.title = "Add 1000 goods";
input.style.left = '578px';
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", "textfield_"+Good);
input.setAttribute("capacityfield", capacityField);
input.setAttribute("amount", 1000);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
li.appendChild(input);
// create button
var input = document.createElement('input');
input.type = "button";
input.value = "+500";
input.title = "Add 500 goods";
input.style.left = '534px';
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", "textfield_"+Good);
input.setAttribute("capacityfield", capacityField);
input.setAttribute("amount", 500);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
li.appendChild(input);
// create button
var input = document.createElement('input');
input.type = "button";
input.value = "–";
input.title = "Remove 500 goods";
input.style.left = '508px';
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", "textfield_"+Good);
input.setAttribute("capacityfield", capacityField);
input.setAttribute("amount", -500);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
li.appendChild(input);
var maxId = 'slider_'+Good+'_max';
var maxLink = document.getElementById(maxId);
maxLink.setAttribute("textfield", "textfield_"+Good);
maxLink.setAttribute("capacityfield", capacityField);
maxLink.addEventListener('click', x500Payloads.Max_500_Event, false);
}
if (capacityField != '')
{
window.setInterval(function() { _self.CapacityPerShip_Timer(capacityField); }, 1000);
}
}
// Add footer
x500Payloads.Insert_Footer();
this.CheckScriptUpdate();
};
x500Payloads.View_TakeOffer = function()
{
var nodes = x500Payloads.DOM.Get_Nodes("//div[@id='mainview']//td[@class='input']/input");
if (nodes != null)
{
// define CSS
var default_style = <><![CDATA[
input.x500Payloads,
input.x500Payloads:active { margin: 0px; padding: 1px 4px; margin-left: 3px; font-size: 10px; }
]]></>.toXMLString();
GM_addStyle(default_style);
var capacityField = '';
if (document.getElementById('textfield_capacity') != null)
{
capacityField = 'textfield_capacity';
}
var _self = this;
// Add buttons
for (var i=0; i < nodes.snapshotLength; i++)
{
var textfield = nodes.snapshotItem(i);
var textfieldId = textfield.id;
var td = textfield.parentNode;
// create button
var input = document.createElement('input');
input.type = "button";
input.value = "+5k";
input.title = "Add 5000 goods";
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", textfieldId);
input.setAttribute("capacityfield", capacityField);
input.setAttribute("amount", 5000);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
td.insertBefore(input, textfield.nextSibling);
// create button
var input = document.createElement('input');
input.type = "button";
input.value = "+1k";
input.title = "Add 1000 goods";
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", textfieldId);
input.setAttribute("capacityfield", capacityField);
input.setAttribute("amount", 1000);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
td.insertBefore(input, textfield.nextSibling);
// create button
var input = document.createElement('input');
input.type = "button";
input.value = "+500";
input.title = "Add 500 goods";
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", textfieldId);
input.setAttribute("capacityfield", capacityField);
input.setAttribute("amount", 500);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
td.insertBefore(input, textfield.nextSibling);
// create button
var input = document.createElement('input');
input.type = "button";
input.value = "–";
input.title = "Remove 500 goods";
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", textfieldId);
input.setAttribute("capacityfield", capacityField);
input.setAttribute("amount", -500);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
td.insertBefore(input, textfield.nextSibling);
var maxId = textfieldId.replace('textfield_','')+'Max';
var maxLink = document.getElementById(maxId);
maxLink.setAttribute("textfield", textfieldId);
maxLink.setAttribute("capacityfield", capacityField);
maxLink.addEventListener('click', x500Payloads.Max_500_Event, false);
}
if (capacityField != '')
{
window.setInterval(function() { _self.CapacityPerShip_Timer(capacityField); }, 1000);
}
}
// Add footer
x500Payloads.Insert_Footer();
this.CheckScriptUpdate();
};
x500Payloads.Set_BranchOffice_Style = function()
{
var default_style = <><![CDATA[
#branchOffice #container #mainview table.tablekontor td.select { padding-left:0px; width: auto; }
input.x500Payloads,
input.x500Payloads:active { margin: 0px; padding: 1px 4px; margin-left: 3px; font-size: 10px; }
]]></>.toXMLString();
GM_addStyle(default_style);
};
x500Payloads.View_BranchOffice = function()
{
var nodes = this.DOM.Get_Nodes("//table[@class='tablekontor']//td/input");
if (nodes != null)
{
this.Set_BranchOffice_Style();
var _self = this;
// Add buttons to increase or decrease payload
for (var i=0; i < nodes.snapshotLength; i=i+2)
{
var textfield = nodes.snapshotItem(i);
var td = textfield.parentNode;
// create button
var input = document.createElement('input');
input.type = "button";
input.value = "+5k";
input.title = "Add 5000 goods";
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", textfield.id);
input.setAttribute("amount", 5000);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
td.insertBefore(input, textfield.nextSibling);
// create button
var input = document.createElement('input');
input.type = "button";
input.value = "+1k";
input.title = "Add 1000 goods";
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", textfield.id);
input.setAttribute("amount", 1000);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
td.insertBefore(input, textfield.nextSibling);
// create button
var input = document.createElement('input');
input.type = "button";
input.value = "+500";
input.title = "Add 500 goods";
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", textfield.id);
input.setAttribute("amount", 500);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
td.insertBefore(input, textfield.nextSibling);
// create button
var input = document.createElement('input');
input.type = "button";
input.value = "–";
input.title = "Remove 500 goods";
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", textfield.id);
input.setAttribute("amount", -500);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
td.insertBefore(input, textfield.nextSibling);
}
// Add buttons to increase or decrease prices
for (var i=1; i < nodes.snapshotLength; i=i+2)
{
var textfield = nodes.snapshotItem(i);
var td = textfield.parentNode;
var input = document.createElement('input');
input.type = "button";
input.value = "+5";
input.title = "Add 5 gold";
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", textfield.id);
input.setAttribute("amount", 5);
input.setAttribute("rounded", 1);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
td.insertBefore(input, textfield.nextSibling);
var input = document.createElement('input');
input.type = "button";
input.value = "+";
input.title = "Add 1 gold";
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", textfield.id);
input.setAttribute("amount", 1);
input.setAttribute("rounded", 1);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
td.insertBefore(input, textfield.nextSibling);
var input = document.createElement('input');
input.type = "button";
input.value = "–";
input.title = "Remove 1 gold";
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", textfield.id);
input.setAttribute("amount", -1);
input.setAttribute("rounded", 1);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
td.insertBefore(input, textfield.nextSibling);
}
}
// Add footer
x500Payloads.Insert_Footer();
this.CheckScriptUpdate();
};
x500Payloads.Set_Resource_Style = function()
{
var default_style = <><![CDATA[
input.x500Payloads,
input.x500Payloads:active { margin: 0px; padding: 1px 4px; margin-left: 3px; font-size: 10px; }
]]></>.toXMLString();
GM_addStyle(default_style);
};
x500Payloads.View_Resource = function()
{
this.Set_Resource_Style();
var donate = this.DOM.Get_First_Node("//form[@id='donateForm']/div");
if (donate != null)
{
var donateWood = document.getElementById("donateWood");
var _self = this;
// create button
var input = document.createElement('input');
input.type = "button";
input.value = "+5k";
input.title = "Add 5000 woods";
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", 'donateWood');
input.setAttribute("amount", 5000);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
donate.insertBefore(input, donateWood.nextSibling);
// create button
var input = document.createElement('input');
input.type = "button";
input.value = "+1k";
input.title = "Add 1000 woods";
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", 'donateWood');
input.setAttribute("amount", 1000);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
donate.insertBefore(input, donateWood.nextSibling);
// create button
var input = document.createElement('input');
input.type = "button";
input.value = "+500";
input.title = "Add 500 woods";
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", 'donateWood');
input.setAttribute("amount", 500);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
donate.insertBefore(input, donateWood.nextSibling);
// create button
var input = document.createElement('input');
input.type = "button";
input.value = "–";
input.title = "Remove 500 woods";
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", 'donateWood');
input.setAttribute("amount", -500);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
donate.insertBefore(input, donateWood.nextSibling);
var br = document.createElement('br');
donate.insertBefore(br, donateWood.nextSibling);
}
// Add footer
x500Payloads.Insert_Footer();
this.CheckScriptUpdate();
};
x500Payloads.Max_500_Event = function(e)
{
if (!e) { e = window.event; }
var obj = e.srcElement ? e.srcElement : e.target;
while (obj.tagName != 'A')
{
obj = obj.parentNode;
}
var button = obj;
// unfocus button
button.blur();
var TextfieldID = button.getAttribute('textfield');
var Amount = 0;
if (button.hasAttribute('amount'))
{
Amount = parseInt(button.getAttribute('amount'));
}
var Rounded = 500;
if (button.hasAttribute('capacityfield'))
{
var capacityField = button.getAttribute('capacityfield');
var capacityInput = document.getElementById(capacityField);
Rounded = 100*parseInt(capacityInput.value);
}
else if (button.hasAttribute('rounded'))
{
Rounded = parseInt(button.getAttribute('rounded'));
}
var PrevMax = 0;
if (button.hasAttribute('prevmax'))
{
PrevMax = parseInt(button.getAttribute('prevmax'));
}
var input = document.getElementById(TextfieldID);
if (input.value == '') input.value = 0;
// Increase value or complete to x500 value
var origValue = parseInt(input.value);
if ((Amount > 0) && (origValue < Amount)) origValue = Amount;
var newValue = origValue;
if (newValue < Rounded)
{
// Do nothing
}
else
{
newValue = Math.floor(newValue/Rounded)*Rounded;
}
// Tip to allow double-click
if ((PrevMax == 0) || (PrevMax != newValue))
{
input.value = newValue;
button.setAttribute("PrevMax", newValue);
}
else
{
input.value = origValue;
button.setAttribute("PrevMax", origValue);
}
// fire event
var evt = document.createEvent("KeyEvents");
evt.initKeyEvent('keyup', true, true, window, false, false, false, false, 13, 0);
input.dispatchEvent(evt);
}
x500Payloads.Add_500_Event = function(e)
{
if (!e) { e = window.event; }
var obj = e.srcElement ? e.srcElement : e.target;
while (obj.tagName != 'INPUT')
{
obj = obj.parentNode;
}
var button = obj;
// unfocus button
button.blur();
var TextfieldID = button.getAttribute('textfield');
var Amount = 500;
if (button.hasAttribute('amount'))
{
Amount = parseInt(button.getAttribute('amount'));
}
var Rounded = 500;
if (button.hasAttribute('capacityfield'))
{
var capacityField = button.getAttribute('capacityfield');
var capacityInput = document.getElementById(capacityField);
Rounded = 100*parseInt(capacityInput.value);
}
else if (button.hasAttribute('rounded'))
{
Rounded = parseInt(button.getAttribute('rounded'));
}
var input = document.getElementById(TextfieldID);
if (input.value == '') input.value = 0;
// Increase value or complete to x500 value
var newValue = parseInt(input.value);
if (Amount >= 0)
{
newValue = Math.floor(newValue/Rounded)*Rounded + Amount;
}
else
{
newValue = Math.floor(newValue/Rounded)*Rounded;
if (newValue == parseInt(input.value)) newValue = newValue + Amount;
}
if (newValue <= 0) newValue = 0;
input.value = newValue;
// fire event
var evt = document.createEvent("KeyboardEvent");
if (evt.initKeyboardEvent)
{
evt.initKeyboardEvent('keyup', true, true, window, false, false, false, false, 13, 0);
}
else
{
evt.initKeyEvent('keyup', true, true, window, false, false, false, false, 13, 0);
}
input.dispatchEvent(evt);
}
x500Payloads.CapacityPerShip_Timer = function(capacityField)
{
var capacityInput = document.getElementById(capacityField);
var capacityIndex = parseInt(capacityInput.value);
var lastIndex = 0;
if (capacityInput.hasAttribute('lastvalue'))
{
lastIndex = parseInt(capacityInput.getAttribute('lastvalue'));
}
if (capacityIndex != lastIndex)
{
var nodes = this.DOM.Get_Nodes("//input[@capacityfield='"+capacityField+"']");
if (nodes != null)
{
for (var i=0; i < nodes.snapshotLength; i++)
{
var button = nodes.snapshotItem(i);
var Amount = '500';
if (button.hasAttribute('amount'))
{
Amount = button.getAttribute('amount');
}
var initAmount = '';
if (button.hasAttribute('initamount'))
{
initAmount = button.getAttribute('initamount');
}
else
{
initAmount = Amount;
button.setAttribute("initamount", Amount);
}
if (initAmount == '-500')
{
button.title = "Remove "+(capacityIndex*100)+" goods";
button.setAttribute("amount", (capacityIndex*-100));
}
else if (initAmount == '500')
{
button.value = '+'+(capacityIndex*100);
button.title = "Add "+(capacityIndex*100)+" goods";
button.setAttribute("amount", (capacityIndex*100));
}
else if (initAmount == '1000')
{
if (capacityIndex == 4)
{
button.value = '+2k';
button.title = "Add 2000 goods";
button.setAttribute("amount", 2000);
}
else if (capacityIndex == 3)
{
button.value = '+3k';
button.title = "Add 3000 goods";
button.setAttribute("amount", 3000);
}
else
{
button.value = '+1k';
button.title = "Add 1000 goods";
button.setAttribute("amount", 1000);
}
}
else if (initAmount == '5000')
{
if (capacityIndex == 4)
{
button.value = '+4k';
button.title = "Add 4000 goods";
button.setAttribute("amount", 4000);
}
else if (capacityIndex == 3)
{
button.value = '+6k';
button.title = "Add 6000 goods";
button.setAttribute("amount", 6000);
}
else
{
button.value = '+5k';
button.title = "Add 5000 goods";
button.setAttribute("amount", 5000);
}
}
}
}
capacityInput.setAttribute("lastvalue", capacityIndex);
}
};
x500Payloads.Insert_Footer = function()
{
var div = document.createElement('div');
div.id = 'x500PayloadsFooter';
div.setAttribute("style", "margin-bottom: 10px; text-align: right;");
div.innerHTML = x500Payloads.EnhancedBy;
var mainview = document.getElementById("mainview");
mainview.appendChild(div);
};
x500Payloads.View_Colonize = function()
{
var nodes = x500Payloads.DOM.Get_Nodes("//ul[@class='resourceAssign']/li");
if (nodes != null)
{
// define CSS
var default_style = <><![CDATA[
#mainview ul.resourceAssign { width: 660px; }
#container .resourceAssign li { padding:0px; background-position:0 center;}
#container .resourceAssign .sliderinput { margin:0 0 0 30px; width:400px;}
#container .resourceAssign input.textfield { margin-top: 2px; position:relative;top:-26px;margin-left:-5px;}
input.x500Payloads,
input.x500Payloads:active {margin: 0px; padding: 1px 3px; margin-top: 3px; font-size: 10px; }
input.x500Payloads { position: absolute; top: 3px;}
#container .resourceAssign .summary {left: 540px !important;}
]]></>.toXMLString();
GM_addStyle(default_style);
var capacityField = '';
if (document.getElementById('textfield_capacity') != null)
{
capacityField = 'textfield_capacity';
}
var _self = this;
// Add buttons
for (var i=0; i < nodes.snapshotLength; i++)
{
var li = nodes.snapshotItem(i);
var Good = li.className;
if ((Good == undefined) || (Good == '')) continue;
if (document.getElementById("textfield_"+Good) == null)
{
// Old fix for colonize
if (Good == 'wood') Good = 'resource';
if (Good == 'glass') Good = 'crystal';
}
// create button
var input = document.createElement('input');
input.type = "button";
input.value = "+1k";
input.title = "Add 1000 goods";
input.style.left = '578px';
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", "textfield_"+Good);
input.setAttribute("capacityfield", capacityField);
input.setAttribute("amount", 1000);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
li.appendChild(input);
// create button
var input = document.createElement('input');
input.type = "button";
input.value = "+500";
input.title = "Add 500 goods";
input.style.left = '534px';
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", "textfield_"+Good);
input.setAttribute("capacityfield", capacityField);
input.setAttribute("amount", 500);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
li.appendChild(input);
// create button
var input = document.createElement('input');
input.type = "button";
input.value = "–";
input.title = "Remove 500 goods";
input.style.left = '508px';
input.setAttribute("class", "button x500Payloads");
input.setAttribute("textfield", "textfield_"+Good);
input.setAttribute("capacityfield", capacityField);
input.setAttribute("amount", -500);
input.addEventListener('click', x500Payloads.Add_500_Event, false);
li.appendChild(input);
var maxId = 'slider_'+Good+'_max';
var maxLink = document.getElementById(maxId);
maxLink.setAttribute("textfield", "textfield_"+Good);
maxLink.setAttribute("capacityfield", capacityField);
maxLink.addEventListener('click', x500Payloads.Max_500_Event, false);
}
if (capacityField != '')
{
window.setInterval(function() { _self.CapacityPerShip_Timer(capacityField); }, 1000);
}
}
// Add footer
x500Payloads.Insert_Footer();
this.CheckScriptUpdate();
};
x500Payloads.DOM =
{
_Parent: null
};
x500Payloads.DOM.Init = function(parent)
{
this._Parent = parent;
};
x500Payloads.DOM.Get_Nodes = function(path, root)
{
var contextNode = root ? root.evaluate ? root : root.ownerDocument : document;
return contextNode.evaluate(path, contextNode, null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
};
x500Payloads.DOM.Get_First_Node = function(path, root)
{
var value = this.Get_Nodes(path, root);
if (value.snapshotLength >= 1)
{
return value.snapshotItem(0);
}
return null;
};
x500Payloads.Log =
{
_Parent: null,
_Enabled: false
};
x500Payloads.Log.Init = function(parent)
{
this._Parent = parent;
};
x500Payloads.Log.Add = function(msg)
{
if (this._Enabled == true)
{
GM_log(msg);
}
};
x500Payloads.Updater =
{
_Parent: null,
_ScriptURL: '',
_availableVersion: 0
};
x500Payloads.Updater.Init = function(parent)
{
this._Parent = parent;
};
// CallBackFct function receive available version number (or null value if failed) as argument
x500Payloads.Updater.Check = function(ScriptURL, CallBackFct)
{
this._availableVersion = 0;
this._ScriptURL = ScriptURL;
var self = this;
GM_xmlhttpRequest({
method: "GET",
url: ScriptURL,
headers: { Accept:"text/javascript; charset=UTF-8" },
overrideMimeType: "application/javascript; charset=UTF-8",
onload: function(response) { self._ParseScript(response, CallBackFct); }
});
};
x500Payloads.Updater._ParseScript = function(response, CallBackFct)
{
var availableVersion = 0;
if (response.status == 200)
{
var resReg = /@version\s+(\d+)/.exec(response.responseText);
if (resReg != null)
{
availableVersion = resReg[1];
}
}
this._availableVersion = availableVersion;
if (typeof CallBackFct == 'function')
{
CallBackFct.call(this._Parent, availableVersion, response);
}
};
x500Payloads.DB =
{
_Parent: null,
Prefix: null,
Options: {}
};
x500Payloads.DB.Init = function(parent, host)
{
// Requires: Ikariam
this._Parent = parent;
if (host == undefined) host = this._Parent.Ikariam.Host();
var prefix = host;
prefix = prefix.replace('.ikariam.', '-');
prefix = prefix.replace('.', '-');
this.Prefix = prefix;
};
x500Payloads.DB.Serialize = function(data)
{
return uneval(data);
};
x500Payloads.DB.UnSerialize = function(data)
{
return eval(data);
};
x500Payloads.DB.Load_Options = function()
{
this.Options = this.UnSerialize(GM_getValue(this.Prefix+'.Opt', false)) || {};
};
x500Payloads.DB.Save_Options = function()
{
GM_setValue(this.Prefix+'.Opt', this.Serialize(this.Options));
};
x500Payloads.Ikariam =
{
_Parent: null,
_View: null,
_Host: null
};
x500Payloads.Ikariam.Init = function(parent)
{
this._Parent = parent;
};
x500Payloads.Ikariam.Host = function()
{
if (this._Host == null)
{
this._Host = '';
this._Host = document.location.host;
}
return this._Host;
};
x500Payloads.Ikariam.View = function()
{
if (this._View == null)
{
this._View = '';
// Fetch view name
try
{
this._View = document.getElementsByTagName("body")[0].id;
}
catch (e)
{
var url_view = /[\?&]view=([a-zA-Z0-9\-_]+)/.exec(document.URL);
if (url_view != null) this._View = RegExp.$1;
}
}
return this._View;
};
x500Payloads.Init();