// ==UserScript==
// @name        Travobotto
// @namespace   http://travobotto.com/
// @description Reduces the cognitive load for Travian players. (Updated 02 Feb 2010)
// @include     http://*.travian.tld/*
//
// ==/UserScript==

/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE. */

var MooTools={'version':'1.2.4dev','build':'68889c1b011e0da7bd254cc67283cc714cda99ab'};var Native=function(options){options=options||{};var name=options.name;var legacy=options.legacy;var protect=options.protect;var methods=options.implement;var generics=options.generics;var initialize=options.initialize;var afterImplement=options.afterImplement||function(){};var object=initialize||legacy;generics=generics!==false;object.constructor=Native;object.$family={name:'native'};if(legacy&&initialize)object.prototype=legacy.prototype;if(!object.prototype)object.prototype={};object.prototype.constructor=object;if(name){var family=name.toLowerCase();object.prototype.$family={name:family};Native.typize(object,family);}
var add=function(obj,name,method,force){if(!protect||force||!obj.prototype[name])obj.prototype[name]=method;if(generics)Native.genericize(obj,name,protect);afterImplement.call(obj,name,method);return obj;};object.alias=function(a1,a2,a3){if(typeof a1=='string'){var pa1=this.prototype[a1];if((a1=pa1))return add(this,a2,a1,a3);}
for(var a in a1)this.alias(a,a1[a],a2);return this;};object.implement=function(a1,a2,a3){if(typeof a1=='string')return add(this,a1,a2,a3);for(var p in a1)add(this,p,a1[p],a2);return this;};if(methods)object.implement(methods);return object;};Native.genericize=function(object,property,check){if((!check||!object[property])&&typeof object.prototype[property]=='function')object[property]=function(){var args=Array.prototype.slice.call(arguments);return object.prototype[property].apply(args.shift(),args);};};Native.implement=function(objects,properties){for(var i=0,l=objects.length;i<l;i++)objects[i].implement(properties);};Native.typize=function(object,family){if(!object.type)object.type=function(item){return($type(item)===family);};};(function(){var natives={'Array':Array,'Date':Date,'Function':Function,'Number':Number,'RegExp':RegExp,'String':String};for(var n in natives)new Native({name:n,initialize:natives[n],protect:true});var types={'boolean':Boolean,'native':Native,'object':Object};for(var t in types)Native.typize(types[t],t);var generics={'Array':["concat","indexOf","join","lastIndexOf","pop","push","reverse","shift","slice","sort","splice","toString","unshift","valueOf"],'String':["charAt","charCodeAt","concat","indexOf","lastIndexOf","match","replace","search","slice","split","substr","substring","toLowerCase","toUpperCase","valueOf"]};for(var g in generics){for(var i=generics[g].length;i--;)Native.genericize(natives[g],generics[g][i],true);}})();var Hash=new Native({name:'Hash',initialize:function(object){if($type(object)=='hash')object=$unlink(object.getClean());for(var key in object)this[key]=object[key];return this;}});Hash.implement({forEach:function(fn,bind){for(var key in this){if(this.hasOwnProperty(key))fn.call(bind,this[key],key,this);}},getClean:function(){var clean={};for(var key in this){if(this.hasOwnProperty(key))clean[key]=this[key];}
return clean;},getLength:function(){var length=0;for(var key in this){if(this.hasOwnProperty(key))length++;}
return length;}});Hash.alias('forEach','each');Array.implement({forEach:function(fn,bind){for(var i=0,l=this.length;i<l;i++)fn.call(bind,this[i],i,this);}});Array.alias('forEach','each');function $A(iterable){if(iterable.item){var l=iterable.length,array=new Array(l);while(l--)array[l]=iterable[l];return array;}
return Array.prototype.slice.call(iterable);};function $arguments(i){return function(){return arguments[i];};};function $chk(obj){return!!(obj||obj===0);};function $clear(timer){clearTimeout(timer);clearInterval(timer);return null;};function $defined(obj){return(obj!=undefined);};function $each(iterable,fn,bind){var type=$type(iterable);((type=='arguments'||type=='collection'||type=='array')?Array:Hash).each(iterable,fn,bind);};function $empty(){};function $extend(original,extended){for(var key in(extended||{}))original[key]=extended[key];return original;};function $H(object){return new Hash(object);};function $lambda(value){return($type(value)=='function')?value:function(){return value;};};function $merge(){var args=Array.slice(arguments);args.unshift({});return $mixin.apply(null,args);};function $mixin(mix){for(var i=1,l=arguments.length;i<l;i++){var object=arguments[i];if($type(object)!='object')continue;for(var key in object){var op=object[key],mp=mix[key];mix[key]=(mp&&$type(op)=='object'&&$type(mp)=='object')?$mixin(mp,op):$unlink(op);}}
return mix;};function $pick(){for(var i=0,l=arguments.length;i<l;i++){if(arguments[i]!=undefined)return arguments[i];}
return null;};function $random(min,max){return Math.floor(Math.random()*(max-min+1)+min);};function $splat(obj){var type=$type(obj);return(type)?((type!='array'&&type!='arguments')?[obj]:obj):[];};var $time=Date.now||function(){return+new Date;};function $try(){for(var i=0,l=arguments.length;i<l;i++){try{return arguments[i]();}catch(e){}}
return null;};function $type(obj){if(obj==undefined)return false;if(obj.$family)return(obj.$family.name=='number'&&!isFinite(obj))?false:obj.$family.name;if(obj.nodeName){switch(obj.nodeType){case 1:return'element';case 3:return(/\S/).test(obj.nodeValue)?'textnode':'whitespace';}}else if(typeof obj.length=='number'){if(obj.callee)return'arguments';else if(obj.item)return'collection';}
return typeof obj;};function $unlink(object){var unlinked;switch($type(object)){case'object':unlinked={};for(var p in object)unlinked[p]=$unlink(object[p]);break;case'hash':unlinked=new Hash(object);break;case'array':unlinked=[];for(var i=0,l=object.length;i<l;i++)unlinked[i]=$unlink(object[i]);break;default:return object;}
return unlinked;};Array.implement({every:function(fn,bind){for(var i=0,l=this.length;i<l;i++){if(!fn.call(bind,this[i],i,this))return false;}
return true;},filter:function(fn,bind){var results=[];for(var i=0,l=this.length;i<l;i++){if(fn.call(bind,this[i],i,this))results.push(this[i]);}
return results;},clean:function(){return this.filter($defined);},indexOf:function(item,from){var len=this.length;for(var i=(from<0)?Math.max(0,len+from):from||0;i<len;i++){if(this[i]===item)return i;}
return-1;},map:function(fn,bind){var results=[];for(var i=0,l=this.length;i<l;i++)results[i]=fn.call(bind,this[i],i,this);return results;},some:function(fn,bind){for(var i=0,l=this.length;i<l;i++){if(fn.call(bind,this[i],i,this))return true;}
return false;},associate:function(keys){var obj={},length=Math.min(this.length,keys.length);for(var i=0;i<length;i++)obj[keys[i]]=this[i];return obj;},link:function(object){var result={};for(var i=0,l=this.length;i<l;i++){for(var key in object){if(object[key](this[i])){result[key]=this[i];delete object[key];break;}}}
return result;},contains:function(item,from){return this.indexOf(item,from)!=-1;},extend:function(array){for(var i=0,j=array.length;i<j;i++)this.push(array[i]);return this;},getLast:function(){return(this.length)?this[this.length-1]:null;},getRandom:function(){return(this.length)?this[$random(0,this.length-1)]:null;},include:function(item){if(!this.contains(item))this.push(item);return this;},combine:function(array){for(var i=0,l=array.length;i<l;i++)this.include(array[i]);return this;},erase:function(item){for(var i=this.length;i--;i){if(this[i]===item)this.splice(i,1);}
return this;},empty:function(){this.length=0;return this;},flatten:function(){var array=[];for(var i=0,l=this.length;i<l;i++){var type=$type(this[i]);if(!type)continue;array=array.concat((type=='array'||type=='collection'||type=='arguments')?Array.flatten(this[i]):this[i]);}
return array;},hexToRgb:function(array){if(this.length!=3)return null;var rgb=this.map(function(value){if(value.length==1)value+=value;return value.toInt(16);});return(array)?rgb:'rgb('+rgb+')';},rgbToHex:function(array){if(this.length<3)return null;if(this.length==4&&this[3]==0&&!array)return'transparent';var hex=[];for(var i=0;i<3;i++){var bit=(this[i]-0).toString(16);hex.push((bit.length==1)?'0'+bit:bit);}
return(array)?hex:'#'+hex.join('');}});String.implement({test:function(regex,params){return((typeof regex=='string')?new RegExp(regex,params):regex).test(this);},contains:function(string,separator){return(separator)?(separator+this+separator).indexOf(separator+string+separator)>-1:this.indexOf(string)>-1;},trim:function(){return this.replace(/^\s+|\s+$/g,'');},clean:function(){return this.replace(/\s+/g,' ').trim();},camelCase:function(){return this.replace(/-\D/g,function(match){return match.charAt(1).toUpperCase();});},hyphenate:function(){return this.replace(/[A-Z]/g,function(match){return('-'+match.charAt(0).toLowerCase());});},capitalize:function(){return this.replace(/\b[a-z]/g,function(match){return match.toUpperCase();});},escapeRegExp:function(){return this.replace(/([-.*+?^${}()|[\]\/\\])/g,'\\$1');},toInt:function(base){return parseInt(this,base||10);},toFloat:function(){return parseFloat(this);},hexToRgb:function(array){var hex=this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);return(hex)?hex.slice(1).hexToRgb(array):null;},rgbToHex:function(array){var rgb=this.match(/\d{1,3}/g);return(rgb)?rgb.rgbToHex(array):null;},stripScripts:function(option){var scripts='';var text=this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi,function(){scripts+=arguments[1]+'\n';return'';});if(option===true)$exec(scripts);else if($type(option)=='function')option(scripts,text);return text;},substitute:function(object,regexp){return this.replace(regexp||(/\\?\{([^{}]+)\}/g),function(match,name){if(match.charAt(0)=='\\')return match.slice(1);return(object[name]!=undefined)?object[name]:'';});}});Function.implement({extend:function(properties){for(var property in properties)this[property]=properties[property];return this;},create:function(options){var self=this;options=options||{};return function(event){var args=options.arguments;args=(args!=undefined)?$splat(args):Array.slice(arguments,(options.event)?1:0);if(options.event)args=[event||window.event].extend(args);var returns=function(){return self.apply(options.bind||null,args);};if(options.delay)return setTimeout(returns,options.delay);if(options.periodical)return setInterval(returns,options.periodical);if(options.attempt)return $try(returns);return returns();};},run:function(args,bind){return this.apply(bind,$splat(args));},pass:function(args,bind){return this.create({bind:bind,arguments:args});},bind:function(bind,args){return this.create({bind:bind,arguments:args});},bindWithEvent:function(bind,args){return this.create({bind:bind,arguments:args,event:true});},attempt:function(args,bind){return this.create({bind:bind,arguments:args,attempt:true})();},delay:function(delay,bind,args){return this.create({bind:bind,arguments:args,delay:delay})();},periodical:function(periodical,bind,args){return this.create({bind:bind,arguments:args,periodical:periodical})();}});Number.implement({limit:function(min,max){return Math.min(max,Math.max(min,this));},round:function(precision){precision=Math.pow(10,precision||0);return Math.round(this*precision)/precision;},times:function(fn,bind){for(var i=0;i<this;i++)fn.call(bind,i,this);},toFloat:function(){return parseFloat(this);},toInt:function(base){return parseInt(this,base||10);}});Number.alias('times','each');(function(math){var methods={};math.each(function(name){if(!Number[name])methods[name]=function(){return Math[name].apply(null,[this].concat($A(arguments)));};});Number.implement(methods);})(['abs','acos','asin','atan','atan2','ceil','cos','exp','floor','log','max','min','pow','sin','sqrt','tan']);Hash.implement({has:Object.prototype.hasOwnProperty,keyOf:function(value){for(var key in this){if(this.hasOwnProperty(key)&&this[key]===value)return key;}
return null;},hasValue:function(value){return(Hash.keyOf(this,value)!==null);},extend:function(properties){Hash.each(properties||{},function(value,key){Hash.set(this,key,value);},this);return this;},combine:function(properties){Hash.each(properties||{},function(value,key){Hash.include(this,key,value);},this);return this;},erase:function(key){if(this.hasOwnProperty(key))delete this[key];return this;},get:function(key){return(this.hasOwnProperty(key))?this[key]:null;},set:function(key,value){if(!this[key]||this.hasOwnProperty(key))this[key]=value;return this;},empty:function(){Hash.each(this,function(value,key){delete this[key];},this);return this;},include:function(key,value){if(this[key]==undefined)this[key]=value;return this;},map:function(fn,bind){var results=new Hash;Hash.each(this,function(value,key){results.set(key,fn.call(bind,value,key,this));},this);return results;},filter:function(fn,bind){var results=new Hash;Hash.each(this,function(value,key){if(fn.call(bind,value,key,this))results.set(key,value);},this);return results;},every:function(fn,bind){for(var key in this){if(this.hasOwnProperty(key)&&!fn.call(bind,this[key],key))return false;}
return true;},some:function(fn,bind){for(var key in this){if(this.hasOwnProperty(key)&&fn.call(bind,this[key],key))return true;}
return false;},getKeys:function(){var keys=[];Hash.each(this,function(value,key){keys.push(key);});return keys;},getValues:function(){var values=[];Hash.each(this,function(value){values.push(value);});return values;},toQueryString:function(base){var queryString=[];Hash.each(this,function(value,key){if(base)key=base+'['+key+']';var result;switch($type(value)){case'object':result=Hash.toQueryString(value,key);break;case'array':var qs={};value.each(function(val,i){qs[i]=val;});result=Hash.toQueryString(qs,key);break;default:result=key+'='+encodeURIComponent(value);}
if(value!=undefined)queryString.push(result);});return queryString.join('&');}});Hash.alias({keyOf:'indexOf',hasValue:'contains'});function Class(params){if(params instanceof Function)params={initialize:params};var newClass=function(){Object.reset(this);if(newClass._prototyping)return this;this._current=$empty;var value=(this.initialize)?this.initialize.apply(this,arguments):this;delete this._current;delete this.caller;return value;}.extend(this);newClass.implement(params);newClass.constructor=Class;newClass.prototype.constructor=newClass;return newClass;};Function.prototype.protect=function(){this._protected=true;return this;};Object.reset=function(object,key){if(key==null){for(var p in object)Object.reset(object,p);return object;}
delete object[key];switch($type(object[key])){case'object':var F=function(){};F.prototype=object[key];var i=new F;object[key]=Object.reset(i);break;case'array':object[key]=$unlink(object[key]);break;}
return object;};new Native({name:'Class',initialize:Class}).extend({instantiate:function(F){F._prototyping=true;var proto=new F;delete F._prototyping;return proto;},wrap:function(self,key,method){if(method._origin)method=method._origin;return function(){if(method._protected&&this._current==null)throw new Error('The method "'+key+'" cannot be called.');var caller=this.caller,current=this._current;this.caller=current;this._current=arguments.callee;var result=method.apply(this,arguments);this._current=current;this.caller=caller;return result;}.extend({_owner:self,_origin:method,_name:key});}});Class.implement({implement:function(key,value){if($type(key)=='object'){for(var p in key)this.implement(p,key[p]);return this;}
var mutator=Class.Mutators[key];if(mutator){value=mutator.call(this,value);if(value==null)return this;}
var proto=this.prototype;switch($type(value)){case'function':if(value._hidden)return this;proto[key]=Class.wrap(this,key,value);break;case'object':var previous=proto[key];if($type(previous)=='object')$mixin(previous,value);else proto[key]=$unlink(value);break;case'array':proto[key]=$unlink(value);break;default:proto[key]=value;}
return this;}});Class.Mutators={Extends:function(parent){this.parent=parent;this.prototype=Class.instantiate(parent);this.implement('parent',function(){var name=this.caller._name,previous=this.caller._owner.parent.prototype[name];if(!previous)throw new Error('The method "'+name+'" has no parent.');return previous.apply(this,arguments);}.protect());},Implements:function(items){$splat(items).each(function(item){if(item instanceof Function)item=Class.instantiate(item);this.implement(item);},this);}};var Chain=new Class({$chain:[],chain:function(){this.$chain.extend(Array.flatten(arguments));return this;},callChain:function(){return(this.$chain.length)?this.$chain.shift().apply(this,arguments):false;},clearChain:function(){this.$chain.empty();return this;}});var Events=new Class({$events:{},addEvent:function(type,fn,internal){type=Events.removeOn(type);if(fn!=$empty){this.$events[type]=this.$events[type]||[];this.$events[type].include(fn);if(internal)fn.internal=true;}
return this;},addEvents:function(events){for(var type in events)this.addEvent(type,events[type]);return this;},fireEvent:function(type,args,delay){type=Events.removeOn(type);if(!this.$events||!this.$events[type])return this;this.$events[type].each(function(fn){fn.create({'bind':this,'delay':delay,'arguments':args})();},this);return this;},removeEvent:function(type,fn){type=Events.removeOn(type);if(!this.$events[type])return this;if(!fn.internal)this.$events[type].erase(fn);return this;},removeEvents:function(events){var type;if($type(events)=='object'){for(type in events)this.removeEvent(type,events[type]);return this;}
if(events)events=Events.removeOn(events);for(type in this.$events){if(events&&events!=type)continue;var fns=this.$events[type];for(var i=fns.length;i--;i)this.removeEvent(type,fns[i]);}
return this;}});Events.removeOn=function(string){return string.replace(/^on([A-Z])/,function(full,first){return first.toLowerCase();});};var Options=new Class({setOptions:function(){this.options=$merge.run([this.options].extend(arguments));if(!this.addEvent)return this;for(var option in this.options){if($type(this.options[option])!='function'||!(/^on[A-Z]/).test(option))continue;this.addEvent(option,this.options[option]);delete this.options[option];}
return this;}});var Browser=$merge({Engine:{name:'unknown',version:0},Platform:{name:(window.orientation!=undefined)?'ipod':(navigator.platform.match(/mac|win|linux/i)||['other'])[0].toLowerCase()},Features:{xpath:!!(document.evaluate),air:!!(window.runtime),query:!!(document.querySelector)},Plugins:{},Engines:{presto:function(){return(!window.opera)?false:((arguments.callee.caller)?960:((document.getElementsByClassName)?950:925));},trident:function(){return(!window.ActiveXObject)?false:((window.XMLHttpRequest)?5:4);},webkit:function(){return(navigator.taintEnabled)?false:((Browser.Features.xpath)?((Browser.Features.query)?525:420):419);},gecko:function(){return(document.getBoxObjectFor==undefined)?false:((document.getElementsByClassName)?19:18);}}},Browser||{});Browser.Platform[Browser.Platform.name]=true;Browser.detect=function(){for(var engine in this.Engines){var version=this.Engines[engine]();if(version){this.Engine={name:engine,version:version};this.Engine[engine]=this.Engine[engine+version]=true;break;}}
return{name:engine,version:version};};Browser.detect();Browser.Request=function(){return $try(function(){return new XMLHttpRequest();},function(){return new ActiveXObject('MSXML2.XMLHTTP');});};Browser.Features.xhr=!!(Browser.Request());Browser.Plugins.Flash=(function(){var version=($try(function(){return navigator.plugins['Shockwave Flash'].description;},function(){return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');})||'0 r0').match(/\d+/g);return{version:parseInt(version[0]||0+'.'+version[1],10)||0,build:parseInt(version[2],10)||0};})();function $exec(text){if(!text)return text;if(window.execScript){window.execScript(text);}else{var script=document.createElement('script');script.setAttribute('type','text/javascript');script[(Browser.Engine.webkit&&Browser.Engine.version<420)?'innerText':'text']=text;document.head.appendChild(script);document.head.removeChild(script);}
return text;};Native.UID=1;var $uid=(Browser.Engine.trident)?function(item){return(item.uid||(item.uid=[Native.UID++]))[0];}:function(item){return item.uid||(item.uid=Native.UID++);};var Window=new Native({name:'Window',legacy:(Browser.Engine.trident)?null:window.Window,initialize:function(win){$uid(win);if(!win.Element){win.Element=$empty;if(Browser.Engine.webkit)win.document.createElement("iframe");win.Element.prototype=(Browser.Engine.webkit)?window["[[DOMElement.prototype]]"]:{};}
win.document.window=win;return $extend(win,Window.Prototype);},afterImplement:function(property,value){window[property]=Window.Prototype[property]=value;}});Window.Prototype={$family:{name:'window'}};new Window(window);var Document=new Native({name:'Document',legacy:(Browser.Engine.trident)?null:window.Document,initialize:function(doc){$uid(doc);doc.head=doc.getElementsByTagName('head')[0];doc.html=doc.getElementsByTagName('html')[0];if(Browser.Engine.trident&&Browser.Engine.version<=4)$try(function(){doc.execCommand("BackgroundImageCache",false,true);});if(Browser.Engine.trident)doc.window.attachEvent('onunload',function(){doc.window.detachEvent('onunload',arguments.callee);doc.head=doc.html=doc.window=null;});return $extend(doc,Document.Prototype);},afterImplement:function(property,value){document[property]=Document.Prototype[property]=value;}});Document.Prototype={$family:{name:'document'}};new Document(document);var Element=new Native({name:'Element',legacy:window.Element,initialize:function(tag,props){var konstructor=Element.Constructors.get(tag);if(konstructor)return konstructor(props);if(typeof tag=='string')return document.newElement(tag,props);return document.id(tag).set(props);},afterImplement:function(key,value){Element.Prototype[key]=value;if(Array[key])return;Elements.implement(key,function(){var items=[],elements=true;for(var i=0,j=this.length;i<j;i++){var returns=this[i][key].apply(this[i],arguments);items.push(returns);if(elements)elements=($type(returns)=='element');}
return(elements)?new Elements(items):items;});}});Element.Prototype={$family:{name:'element'}};Element.Constructors=new Hash;var IFrame=new Native({name:'IFrame',generics:false,initialize:function(){var params=Array.link(arguments,{properties:Object.type,iframe:$defined});var props=params.properties||{};var iframe=document.id(params.iframe);var onload=props.onload||$empty;delete props.onload;props.id=props.name=$pick(props.id,props.name,iframe?(iframe.id||iframe.name):'IFrame_'+$time());iframe=new Element(iframe||'iframe',props);var onFrameLoad=function(){var host=$try(function(){return iframe.contentWindow.location.host;});if(!host||host==window.location.host){var win=new Window(iframe.contentWindow);new Document(iframe.contentWindow.document);if(!win.Element.prototype)win.Element.prototype={};$extend(win.Element.prototype,Element.Prototype);}
onload.call(iframe.contentWindow,iframe.contentWindow.document);};var contentWindow=$try(function(){return iframe.contentWindow;});((contentWindow&&contentWindow.document.body)||window.frames[props.id])?onFrameLoad():iframe.addListener('load',onFrameLoad);return iframe;}});var Elements=new Native({initialize:function(elements,options){options=$extend({ddup:true,cash:true},options);elements=elements||[];if(options.ddup||options.cash){var uniques={},returned=[];for(var i=0,l=elements.length;i<l;i++){var el=document.id(elements[i],!options.cash);if(options.ddup){if(uniques[el.uid])continue;uniques[el.uid]=true;}
returned.push(el);}
elements=returned;}
return(options.cash)?$extend(elements,this):elements;}});Elements.implement({filter:function(filter,bind){if(!filter)return this;return new Elements(Array.filter(this,(typeof filter=='string')?function(item){return item.match(filter);}:filter,bind));}});Document.implement({newElement:function(tag,props){if(Browser.Engine.trident&&props){['name','type','checked'].each(function(attribute){if(!props[attribute])return;tag+=' '+attribute+'="'+props[attribute]+'"';if(attribute!='checked')delete props[attribute];});tag='<'+tag+'>';}
return document.id(this.createElement(tag)).set(props);},newTextNode:function(text){return this.createTextNode(text);},getDocument:function(){return this;},getWindow:function(){return this.window;},id:(function(){var types={string:function(id,nocash,doc){id=doc.getElementById(id);return(id)?types.element(id,nocash):null;},element:function(el,nocash){$uid(el);if(!nocash&&!el.$family&&!(/^object|embed$/i).test(el.tagName)){var proto=Element.Prototype;for(var p in proto)el[p]=proto[p];};return el;},object:function(obj,nocash,doc){if(obj.toElement)return types.element(obj.toElement(doc),nocash);return null;}};types.textnode=types.whitespace=types.window=types.document=$arguments(0);return function(el,nocash,doc){if(el&&el.$family&&el.uid)return el;var type=$type(el);return(types[type])?types[type](el,nocash,doc||document):null;};})()});if(window.$==null)Window.implement({$:function(el,nc){return document.id(el,nc,this.document);}});Window.implement({$$:function(selector){if(arguments.length==1&&typeof selector=='string')return this.document.getElements(selector);var elements=[];var args=Array.flatten(arguments);for(var i=0,l=args.length;i<l;i++){var item=args[i];switch($type(item)){case'element':elements.push(item);break;case'string':elements.extend(this.document.getElements(item,true));}}
return new Elements(elements);},getDocument:function(){return this.document;},getWindow:function(){return this;}});Native.implement([Element,Document],{getElement:function(selector,nocash){return document.id(this.getElements(selector,true)[0]||null,nocash);},getElements:function(tags,nocash){tags=tags.split(',');var elements=[];var ddup=(tags.length>1);tags.each(function(tag){var partial=this.getElementsByTagName(tag.trim());(ddup)?elements.extend(partial):elements=partial;},this);return new Elements(elements,{ddup:ddup,cash:!nocash});}});(function(){var collected={},storage={};var props={input:'checked',option:'selected',textarea:(Browser.Engine.webkit&&Browser.Engine.version<420)?'innerHTML':'value'};var get=function(uid){return(storage[uid]||(storage[uid]={}));};var clean=function(item,retain){if(!item)return;var uid=item.uid;if(Browser.Engine.trident){if(item.clearAttributes){var clone=retain&&item.cloneNode(false);item.clearAttributes();if(clone)item.mergeAttributes(clone);}else if(item.removeEvents){item.removeEvents();}
if((/object/i).test(item.tagName)){for(var p in item){if(typeof item[p]=='function')item[p]=$empty;}
Element.dispose(item);}}
if(!uid)return;collected[uid]=storage[uid]=null;};var purge=function(){Hash.each(collected,clean);if(Browser.Engine.trident)$A(document.getElementsByTagName('object')).each(clean);if(window.CollectGarbage)CollectGarbage();collected=storage=null;};var walk=function(element,walk,start,match,all,nocash){var el=element[start||walk];var elements=[];while(el){if(el.nodeType==1&&(!match||Element.match(el,match))){if(!all)return document.id(el,nocash);elements.push(el);}
el=el[walk];}
return(all)?new Elements(elements,{ddup:false,cash:!nocash}):null;};var attributes={'html':'innerHTML','class':'className','for':'htmlFor','defaultValue':'defaultValue','text':(Browser.Engine.trident||(Browser.Engine.webkit&&Browser.Engine.version<420))?'innerText':'textContent'};var bools=['compact','nowrap','ismap','declare','noshade','checked','disabled','readonly','multiple','selected','noresize','defer'];var camels=['value','type','defaultValue','accessKey','cellPadding','cellSpacing','colSpan','frameBorder','maxLength','readOnly','rowSpan','tabIndex','useMap'];bools=bools.associate(bools);Hash.extend(attributes,bools);Hash.extend(attributes,camels.associate(camels.map(String.toLowerCase)));var inserters={before:function(context,element){if(element.parentNode)element.parentNode.insertBefore(context,element);},after:function(context,element){if(!element.parentNode)return;var next=element.nextSibling;(next)?element.parentNode.insertBefore(context,next):element.parentNode.appendChild(context);},bottom:function(context,element){element.appendChild(context);},top:function(context,element){var first=element.firstChild;(first)?element.insertBefore(context,first):element.appendChild(context);}};inserters.inside=inserters.bottom;Hash.each(inserters,function(inserter,where){where=where.capitalize();Element.implement('inject'+where,function(el){inserter(this,document.id(el,true));return this;});Element.implement('grab'+where,function(el){inserter(document.id(el,true),this);return this;});});Element.implement({set:function(prop,value){switch($type(prop)){case'object':for(var p in prop)this.set(p,prop[p]);break;case'string':var property=Element.Properties.get(prop);(property&&property.set)?property.set.apply(this,Array.slice(arguments,1)):this.setProperty(prop,value);}
return this;},get:function(prop){var property=Element.Properties.get(prop);return(property&&property.get)?property.get.apply(this,Array.slice(arguments,1)):this.getProperty(prop);},erase:function(prop){var property=Element.Properties.get(prop);(property&&property.erase)?property.erase.apply(this):this.removeProperty(prop);return this;},setProperty:function(attribute,value){var key=attributes[attribute];if(value==undefined)return this.removeProperty(attribute);if(key&&bools[attribute])value=!!value;(key)?this[key]=value:this.setAttribute(attribute,''+value);return this;},setProperties:function(attributes){for(var attribute in attributes)this.setProperty(attribute,attributes[attribute]);return this;},getProperty:function(attribute){var key=attributes[attribute];var value=(key)?this[key]:this.getAttribute(attribute,2);return(bools[attribute])?!!value:(key)?value:value||null;},getProperties:function(){var args=$A(arguments);return args.map(this.getProperty,this).associate(args);},removeProperty:function(attribute){var key=attributes[attribute];(key)?this[key]=(key&&bools[attribute])?false:'':this.removeAttribute(attribute);return this;},removeProperties:function(){Array.each(arguments,this.removeProperty,this);return this;},hasClass:function(className){return this.className.contains(className,' ');},addClass:function(className){if(!this.hasClass(className))this.className=(this.className+' '+className).clean();return this;},removeClass:function(className){this.className=this.className.replace(new RegExp('(^|\\s)'+className+'(?:\\s|$)'),'$1');return this;},toggleClass:function(className){return this.hasClass(className)?this.removeClass(className):this.addClass(className);},adopt:function(){Array.flatten(arguments).each(function(element){element=document.id(element,true);if(element)this.appendChild(element);},this);return this;},appendText:function(text,where){return this.grab(this.getDocument().newTextNode(text),where);},grab:function(el,where){inserters[where||'bottom'](document.id(el,true),this);return this;},inject:function(el,where){inserters[where||'bottom'](this,document.id(el,true));return this;},replaces:function(el){el=document.id(el,true);el.parentNode.replaceChild(this,el);return this;},wraps:function(el,where){el=document.id(el,true);return this.replaces(el).grab(el,where);},getPrevious:function(match,nocash){return walk(this,'previousSibling',null,match,false,nocash);},getAllPrevious:function(match,nocash){return walk(this,'previousSibling',null,match,true,nocash);},getNext:function(match,nocash){return walk(this,'nextSibling',null,match,false,nocash);},getAllNext:function(match,nocash){return walk(this,'nextSibling',null,match,true,nocash);},getFirst:function(match,nocash){return walk(this,'nextSibling','firstChild',match,false,nocash);},getLast:function(match,nocash){return walk(this,'previousSibling','lastChild',match,false,nocash);},getParent:function(match,nocash){return walk(this,'parentNode',null,match,false,nocash);},getParents:function(match,nocash){return walk(this,'parentNode',null,match,true,nocash);},getSiblings:function(match,nocash){return this.getParent().getChildren(match,nocash).erase(this);},getChildren:function(match,nocash){return walk(this,'nextSibling','firstChild',match,true,nocash);},getWindow:function(){return this.ownerDocument.window;},getDocument:function(){return this.ownerDocument;},getElementById:function(id,nocash){var el=this.ownerDocument.getElementById(id);if(!el)return null;for(var parent=el.parentNode;parent!=this;parent=parent.parentNode){if(!parent)return null;}
return document.id(el,nocash);},getSelected:function(){return new Elements($A(this.options).filter(function(option){return option.selected;}));},getComputedStyle:function(property){if(this.currentStyle)return this.currentStyle[property.camelCase()];var computed=this.getDocument().defaultView.getComputedStyle(this,null);return(computed)?computed.getPropertyValue([property.hyphenate()]):null;},toQueryString:function(){var queryString=[];this.getElements('input, select, textarea',true).each(function(el){if(!el.name||el.disabled||el.type=='submit'||el.type=='reset'||el.type=='file')return;var value=(el.tagName.toLowerCase()=='select')?Element.getSelected(el).map(function(opt){return opt.value;}):((el.type=='radio'||el.type=='checkbox')&&!el.checked)?null:el.value;$splat(value).each(function(val){if(typeof val!='undefined')queryString.push(el.name+'='+encodeURIComponent(val));});});return queryString.join('&');},clone:function(contents,keepid){contents=contents!==false;var clone=this.cloneNode(contents);var clean=function(node,element){if(!keepid)node.removeAttribute('id');if(Browser.Engine.trident){node.clearAttributes();node.mergeAttributes(element);node.removeAttribute('uid');if(node.options){var no=node.options,eo=element.options;for(var j=no.length;j--;)no[j].selected=eo[j].selected;}}
var prop=props[element.tagName.toLowerCase()];if(prop&&element[prop])node[prop]=element[prop];};if(contents){var ce=clone.getElementsByTagName('*'),te=this.getElementsByTagName('*');for(var i=ce.length;i--;)clean(ce[i],te[i]);}
clean(clone,this);return document.id(clone);},destroy:function(){Element.empty(this);Element.dispose(this);clean(this,true);return null;},empty:function(){$A(this.childNodes).each(function(node){Element.destroy(node);});return this;},dispose:function(){return(this.parentNode)?this.parentNode.removeChild(this):this;},hasChild:function(el){el=document.id(el,true);if(!el)return false;if(Browser.Engine.webkit&&Browser.Engine.version<420)return $A(this.getElementsByTagName(el.tagName)).contains(el);return(this.contains)?(this!=el&&this.contains(el)):!!(this.compareDocumentPosition(el)&16);},match:function(tag){return(!tag||(tag==this)||(Element.get(this,'tag')==tag));}});Native.implement([Element,Window,Document],{addListener:function(type,fn){if(type=='unload'){var old=fn,self=this;fn=function(){self.removeListener('unload',fn);old();};}else{collected[this.uid]=this;}
if(this.addEventListener)this.addEventListener(type,fn,false);else this.attachEvent('on'+type,fn);return this;},removeListener:function(type,fn){if(this.removeEventListener)this.removeEventListener(type,fn,false);else this.detachEvent('on'+type,fn);return this;},retrieve:function(property,dflt){var storage=get(this.uid),prop=storage[property];if(dflt!=undefined&&prop==undefined)prop=storage[property]=dflt;return $pick(prop);},store:function(property,value){var storage=get(this.uid);storage[property]=value;return this;},eliminate:function(property){var storage=get(this.uid);delete storage[property];return this;}});window.addListener('unload',purge);})();Element.Properties=new Hash;Element.Properties.style={set:function(style){this.style.cssText=style;},get:function(){return this.style.cssText;},erase:function(){this.style.cssText='';}};Element.Properties.tag={get:function(){return this.tagName.toLowerCase();}};Element.Properties.html=(function(){var wrapper=document.createElement('div');var translations={table:[1,'<table>','</table>'],select:[1,'<select>','</select>'],tbody:[2,'<table><tbody>','</tbody></table>'],tr:[3,'<table><tbody><tr>','</tr></tbody></table>']};translations.thead=translations.tfoot=translations.tbody;var html={set:function(){var html=Array.flatten(arguments).join('');var wrap=Browser.Engine.trident&&translations[this.get('tag')];if(wrap){var first=wrapper;first.innerHTML=wrap[1]+html+wrap[2];for(var i=wrap[0];i--;)first=first.firstChild;this.empty().adopt(first.childNodes);}else{this.innerHTML=html;}}};html.erase=html.set;return html;})();if(Browser.Engine.webkit&&Browser.Engine.version<420)Element.Properties.text={get:function(){if(this.innerText)return this.innerText;var temp=this.ownerDocument.newElement('div',{html:this.innerHTML}).inject(this.ownerDocument.body);var text=temp.innerText;temp.destroy();return text;}};var Request=new Class({Implements:[Chain,Events,Options],options:{url:'',data:'',headers:{'X-Requested-With':'XMLHttpRequest','Accept':'text/javascript, text/html, application/xml, text/xml, */*'},async:true,format:false,method:'post',link:'ignore',isSuccess:null,emulation:true,urlEncoded:true,encoding:'utf-8',evalScripts:false,evalResponse:false,noCache:false},initialize:function(options){this.xhr=new Browser.Request();this.setOptions(options);this.options.isSuccess=this.options.isSuccess||this.isSuccess;this.headers=new Hash(this.options.headers);},onStateChange:function(){if(this.xhr.readyState!=4||!this.running)return;this.running=false;this.status=0;$try(function(){this.status=this.xhr.status;}.bind(this));this.xhr.onreadystatechange=$empty;if(this.options.isSuccess.call(this,this.status)){this.response={text:this.xhr.responseText,xml:this.xhr.responseXML};this.success(this.response.text,this.response.xml);}else{this.response={text:null,xml:null};this.failure();}},isSuccess:function(){return((this.status>=200)&&(this.status<300));},processScripts:function(text){if(this.options.evalResponse||(/(ecma|java)script/).test(this.getHeader('Content-type')))return $exec(text);return text.stripScripts(this.options.evalScripts);},success:function(text,xml){this.onSuccess(this.processScripts(text),xml);},onSuccess:function(){this.fireEvent('complete',arguments).fireEvent('success',arguments).callChain();},failure:function(){this.onFailure();},onFailure:function(){this.fireEvent('complete').fireEvent('failure',this.xhr);},setHeader:function(name,value){this.headers.set(name,value);return this;},getHeader:function(name){return $try(function(){return this.xhr.getResponseHeader(name);}.bind(this));},check:function(){if(!this.running)return true;switch(this.options.link){case'cancel':this.cancel();return true;case'chain':this.chain(this.caller.bind(this,arguments));return false;}
return false;},send:function(options){if(!this.check(options))return this;this.running=true;var type=$type(options);if(type=='string'||type=='element')options={data:options};var old=this.options;options=$extend({data:old.data,url:old.url,method:old.method},options);var data=options.data,url=String(options.url),method=options.method.toLowerCase();switch($type(data)){case'element':data=document.id(data).toQueryString();break;case'object':case'hash':data=Hash.toQueryString(data);}
if(this.options.format){var format='format='+this.options.format;data=(data)?format+'&'+data:format;}
if(this.options.emulation&&!['get','post'].contains(method)){var _method='_method='+method;data=(data)?_method+'&'+data:_method;method='post';}
if(this.options.urlEncoded&&method=='post'){var encoding=(this.options.encoding)?'; charset='+this.options.encoding:'';this.headers.set('Content-type','application/x-www-form-urlencoded'+encoding);}
if(this.options.noCache){var noCache='noCache='+new Date().getTime();data=(data)?noCache+'&'+data:noCache;}
var trimPosition=url.lastIndexOf('/');if(trimPosition>-1&&(trimPosition=url.indexOf('#'))>-1)url=url.substr(0,trimPosition);if(data&&method=='get'){url=url+(url.contains('?')?'&':'?')+data;data=null;}
this.xhr.open(method.toUpperCase(),url,this.options.async);this.xhr.onreadystatechange=this.onStateChange.bind(this);this.headers.each(function(value,key){try{this.xhr.setRequestHeader(key,value);}catch(e){this.fireEvent('exception',[key,value]);}},this);this.fireEvent('request');this.xhr.send(data);if(!this.options.async)this.onStateChange();return this;},cancel:function(){if(!this.running)return this;this.running=false;this.xhr.abort();this.xhr.onreadystatechange=$empty;this.xhr=new Browser.Request();this.fireEvent('cancel');return this;}});(function(){var methods={};['get','post','put','delete','GET','POST','PUT','DELETE'].each(function(method){methods[method]=function(){var params=Array.link(arguments,{url:String.type,data:$defined});return this.send($extend(params,{method:method}));};});Request.implement(methods);})();Element.Properties.send={set:function(options){var send=this.retrieve('send');if(send)send.cancel();return this.eliminate('send').store('send:options',$extend({data:this,link:'cancel',method:this.get('method')||'post',url:this.get('action')},options));},get:function(options){if(options||!this.retrieve('send')){if(options||!this.retrieve('send:options'))this.set('send',options);this.store('send',new Request(this.retrieve('send:options')));}
return this.retrieve('send');}};Element.implement({send:function(url){var sender=this.get('send');sender.send({data:this,url:url||sender.options.url});return this;}});var JSON=new Hash({$specialChars:{'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'},$replaceChars:function(chr){return JSON.$specialChars[chr]||'\\u00'+Math.floor(chr.charCodeAt()/16).toString(16)+(chr.charCodeAt()%16).toString(16);},encode:function(obj){switch($type(obj)){case'string':return'"'+obj.replace(/[\x00-\x1f\\"]/g,JSON.$replaceChars)+'"';case'array':return'['+String(obj.map(JSON.encode).clean())+']';case'object':case'hash':var string=[];Hash.each(obj,function(value,key){var json=JSON.encode(value);if(json)string.push(JSON.encode(key)+':'+json);});return'{'+string+'}';case'number':case'boolean':return String(obj);case false:return'null';}
return null;},decode:function(string,secure){if($type(string)!='string'||!string.length)return null;if(secure&&!(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g,'@').replace(/"[^"\\\n\r]*"/g,'')))
throw new Error('JSON could not decode the input; security is enabled and the value is not secure.');return eval('('+string+')');}});Native.implement([Hash,Array,String,Number],{toJSON:function(){return JSON.encode(this);}});Request.JSON=new Class({Extends:Request,options:{secure:true},initialize:function(options){this.parent(options);this.headers.extend({'Accept':'application/json','X-Request':'JSON'});},success:function(text){try{this.response.json=JSON.decode(text,this.options.secure);this.onSuccess(this.response.json,text);}catch(error){this.failure();}}});var Event=new Native({name:'Event',initialize:function(event,win){win=win||window;var doc=win.document;event=event||win.event;if(event.$extended)return event;this.$extended=true;var type=event.type;var target=event.target||event.srcElement;while(target&&target.nodeType==3)target=target.parentNode;if(type.test(/key/)){var code=event.which||event.keyCode;var key=Event.Keys.keyOf(code);if(type=='keydown'){var fKey=code-111;if(fKey>0&&fKey<13)key='f'+fKey;}
key=key||String.fromCharCode(code).toLowerCase();}else if(type.match(/(click|mouse|menu)/i)){doc=(!doc.compatMode||doc.compatMode=='CSS1Compat')?doc.html:doc.body;var page={x:event.pageX||event.clientX+doc.scrollLeft,y:event.pageY||event.clientY+doc.scrollTop};var client={x:(event.pageX)?event.pageX-win.pageXOffset:event.clientX,y:(event.pageY)?event.pageY-win.pageYOffset:event.clientY};if(type.match(/DOMMouseScroll|mousewheel/)){var wheel=(event.wheelDelta)?event.wheelDelta/120:-(event.detail||0)/3;}
var rightClick=(event.which==3)||(event.button==2);var related=null;if(type.match(/over|out/)){switch(type){case'mouseover':related=event.relatedTarget||event.fromElement;break;case'mouseout':related=event.relatedTarget||event.toElement;}
if(!(function(){while(related&&related.nodeType==3)related=related.parentNode;return true;}).create({attempt:Browser.Engine.gecko})())related=false;}}
return $extend(this,{event:event,type:type,page:page,client:client,rightClick:rightClick,wheel:wheel,relatedTarget:related,target:target,code:code,key:key,shift:event.shiftKey,control:event.ctrlKey,alt:event.altKey,meta:event.metaKey});}});Event.Keys=new Hash({'enter':13,'up':38,'down':40,'left':37,'right':39,'esc':27,'space':32,'backspace':8,'tab':9,'delete':46});Event.implement({stop:function(){return this.stopPropagation().preventDefault();},stopPropagation:function(){if(this.event.stopPropagation)this.event.stopPropagation();else this.event.cancelBubble=true;return this;},preventDefault:function(){if(this.event.preventDefault)this.event.preventDefault();else this.event.returnValue=false;return this;}});Element.Properties.events={set:function(events){this.addEvents(events);}};Native.implement([Element,Window,Document],{addEvent:function(type,fn){var events=this.retrieve('events',{});events[type]=events[type]||{'keys':[],'values':[]};if(events[type].keys.contains(fn))return this;events[type].keys.push(fn);var realType=type,custom=Element.Events.get(type),condition=fn,self=this;if(custom){if(custom.onAdd)custom.onAdd.call(this,fn);if(custom.condition){condition=function(event){if(custom.condition.call(this,event))return fn.call(this,event);return true;};}
realType=custom.base||realType;}
var defn=function(){return fn.call(self);};var nativeEvent=Element.NativeEvents[realType];if(nativeEvent){if(nativeEvent==2){defn=function(event){event=new Event(event,self.getWindow());if(condition.call(self,event)===false)event.stop();};}
this.addListener(realType,defn);}
events[type].values.push(defn);return this;},removeEvent:function(type,fn){var events=this.retrieve('events');if(!events||!events[type])return this;var pos=events[type].keys.indexOf(fn);if(pos==-1)return this;events[type].keys.splice(pos,1);var value=events[type].values.splice(pos,1)[0];var custom=Element.Events.get(type);if(custom){if(custom.onRemove)custom.onRemove.call(this,fn);type=custom.base||type;}
return(Element.NativeEvents[type])?this.removeListener(type,value):this;},addEvents:function(events){for(var event in events)this.addEvent(event,events[event]);return this;},removeEvents:function(events){var type;if($type(events)=='object'){for(type in events)this.removeEvent(type,events[type]);return this;}
var attached=this.retrieve('events');if(!attached)return this;if(!events){for(type in attached)this.removeEvents(type);this.eliminate('events');}else if(attached[events]){while(attached[events].keys[0])this.removeEvent(events,attached[events].keys[0]);attached[events]=null;}
return this;},fireEvent:function(type,args,delay){var events=this.retrieve('events');if(!events||!events[type])return this;events[type].keys.each(function(fn){fn.create({'bind':this,'delay':delay,'arguments':args})();},this);return this;},cloneEvents:function(from,type){from=document.id(from);var fevents=from.retrieve('events');if(!fevents)return this;if(!type){for(var evType in fevents)this.cloneEvents(from,evType);}else if(fevents[type]){fevents[type].keys.each(function(fn){this.addEvent(type,fn);},this);}
return this;}});Element.NativeEvents={click:2,dblclick:2,mouseup:2,mousedown:2,contextmenu:2,mousewheel:2,DOMMouseScroll:2,mouseover:2,mouseout:2,mousemove:2,selectstart:2,selectend:2,keydown:2,keypress:2,keyup:2,focus:2,blur:2,change:2,reset:2,select:2,submit:2,load:1,unload:1,beforeunload:2,resize:1,move:1,DOMContentLoaded:1,readystatechange:1,error:1,abort:1,scroll:1};(function(){var $check=function(event){var related=event.relatedTarget;if(related==undefined)return true;if(related===false)return false;return($type(this)!='document'&&related!=this&&related.prefix!='xul'&&!this.hasChild(related));};Element.Events=new Hash({mouseenter:{base:'mouseover',condition:$check},mouseleave:{base:'mouseout',condition:$check},mousewheel:{base:(Browser.Engine.gecko)?'DOMMouseScroll':'mousewheel'}});})();(function(){Element.implement({scrollTo:function(x,y){if(isBody(this)){this.getWindow().scrollTo(x,y);}else{this.scrollLeft=x;this.scrollTop=y;}
return this;},getSize:function(){if(isBody(this))return this.getWindow().getSize();return{x:this.offsetWidth,y:this.offsetHeight};},getScrollSize:function(){if(isBody(this))return this.getWindow().getScrollSize();return{x:this.scrollWidth,y:this.scrollHeight};},getScroll:function(){if(isBody(this))return this.getWindow().getScroll();return{x:this.scrollLeft,y:this.scrollTop};},getScrolls:function(){var element=this,position={x:0,y:0};while(element&&!isBody(element)){position.x+=element.scrollLeft;position.y+=element.scrollTop;element=element.parentNode;}
return position;},getOffsetParent:function(){var element=this;if(isBody(element))return null;if(!Browser.Engine.trident)return element.offsetParent;while((element=element.parentNode)&&!isBody(element)){if(styleString(element,'position')!='static')return element;}
return null;},getOffsets:function(){var element=this,position={x:0,y:0};if(isBody(this))return position;while(element&&!isBody(element)){position.x+=element.offsetLeft;position.y+=element.offsetTop;if(Browser.Engine.gecko){if(!borderBox(element)){position.x+=leftBorder(element);position.y+=topBorder(element);}
var parent=element.parentNode;if(parent&&styleString(parent,'overflow')!='visible'){position.x+=leftBorder(parent);position.y+=topBorder(parent);}}else if(element!=this&&Browser.Engine.webkit){position.x+=leftBorder(element);position.y+=topBorder(element);}
element=element.offsetParent;}
if(Browser.Engine.gecko&&!borderBox(this)){position.x-=leftBorder(this);position.y-=topBorder(this);}
return position;},getPosition:function(relative){if(isBody(this))return{x:0,y:0};var offset=this.getOffsets(),scroll=this.getScrolls();var position={x:offset.x-scroll.x,y:offset.y-scroll.y};var relativePosition=(relative&&(relative=document.id(relative)))?relative.getPosition():{x:0,y:0};return{x:position.x-relativePosition.x,y:position.y-relativePosition.y};},getCoordinates:function(element){if(isBody(this))return this.getWindow().getCoordinates();var position=this.getPosition(element),size=this.getSize();var obj={left:position.x,top:position.y,width:size.x,height:size.y};obj.right=obj.left+obj.width;obj.bottom=obj.top+obj.height;return obj;},computePosition:function(obj){return{left:obj.x-styleNumber(this,'margin-left'),top:obj.y-styleNumber(this,'margin-top')};},setPosition:function(obj){return this.setStyles(this.computePosition(obj));}});Native.implement([Document,Window],{getSize:function(){if(Browser.Engine.presto||Browser.Engine.webkit){var win=this.getWindow();return{x:win.innerWidth,y:win.innerHeight};}
var doc=getCompatElement(this);return{x:doc.clientWidth,y:doc.clientHeight};},getScroll:function(){var win=this.getWindow(),doc=getCompatElement(this);return{x:win.pageXOffset||doc.scrollLeft,y:win.pageYOffset||doc.scrollTop};},getScrollSize:function(){var doc=getCompatElement(this),min=this.getSize();return{x:Math.max(doc.scrollWidth,min.x),y:Math.max(doc.scrollHeight,min.y)};},getPosition:function(){return{x:0,y:0};},getCoordinates:function(){var size=this.getSize();return{top:0,left:0,bottom:size.y,right:size.x,height:size.y,width:size.x};}});var styleString=Element.getComputedStyle;function styleNumber(element,style){return styleString(element,style).toInt()||0;};function borderBox(element){return styleString(element,'-moz-box-sizing')=='border-box';};function topBorder(element){return styleNumber(element,'border-top-width');};function leftBorder(element){return styleNumber(element,'border-left-width');};function isBody(element){return(/^(?:body|html)$/i).test(element.tagName);};function getCompatElement(element){var doc=element.getDocument();return(!doc.compatMode||doc.compatMode=='CSS1Compat')?doc.html:doc.body;};})();Element.alias('setPosition','position');Native.implement([Window,Document,Element],{getHeight:function(){return this.getSize().y;},getWidth:function(){return this.getSize().x;},getScrollTop:function(){return this.getScroll().y;},getScrollLeft:function(){return this.getScroll().x;},getScrollHeight:function(){return this.getScrollSize().y;},getScrollWidth:function(){return this.getScrollSize().x;},getTop:function(){return this.getPosition().y;},getLeft:function(){return this.getPosition().x;}});var Fx=new Class({Implements:[Chain,Events,Options],options:{fps:50,unit:false,duration:500,link:'ignore'},initialize:function(options){this.subject=this.subject||this;this.setOptions(options);this.options.duration=Fx.Durations[this.options.duration]||this.options.duration.toInt();var wait=this.options.wait;if(wait===false)this.options.link='cancel';},getTransition:function(){return function(p){return-(Math.cos(Math.PI*p)-1)/2;};},step:function(){var time=$time();if(time<this.time+this.options.duration){var delta=this.transition((time-this.time)/this.options.duration);this.set(this.compute(this.from,this.to,delta));}else{this.set(this.compute(this.from,this.to,1));this.complete();}},set:function(now){return now;},compute:function(from,to,delta){return Fx.compute(from,to,delta);},check:function(){if(!this.timer)return true;switch(this.options.link){case'cancel':this.cancel();return true;case'chain':this.chain(this.caller.bind(this,arguments));return false;}
return false;},start:function(from,to){if(!this.check(from,to))return this;this.from=from;this.to=to;this.time=0;this.transition=this.getTransition();this.startTimer();this.onStart();return this;},complete:function(){if(this.stopTimer())this.onComplete();return this;},cancel:function(){if(this.stopTimer())this.onCancel();return this;},onStart:function(){this.fireEvent('start',this.subject);},onComplete:function(){this.fireEvent('complete',this.subject);if(!this.callChain())this.fireEvent('chainComplete',this.subject);},onCancel:function(){this.fireEvent('cancel',this.subject).clearChain();},pause:function(){this.stopTimer();return this;},resume:function(){this.startTimer();return this;},stopTimer:function(){if(!this.timer)return false;this.time=$time()-this.time;this.timer=$clear(this.timer);return true;},startTimer:function(){if(this.timer)return false;this.time=$time()-this.time;this.timer=this.step.periodical(Math.round(1000/this.options.fps),this);return true;}});Fx.compute=function(from,to,delta){return(to-from)*delta+from;};Fx.Durations={'short':250,'normal':500,'long':1000};Element.Properties.styles={set:function(styles){this.setStyles(styles);}};Element.Properties.opacity={set:function(opacity,novisibility){if(!novisibility){if(opacity==0){if(this.style.visibility!='hidden')this.style.visibility='hidden';}else{if(this.style.visibility!='visible')this.style.visibility='visible';}}
if(!this.currentStyle||!this.currentStyle.hasLayout)this.style.zoom=1;if(Browser.Engine.trident)this.style.filter=(opacity==1)?'':'alpha(opacity='+opacity*100+')';this.style.opacity=opacity;this.store('opacity',opacity);},get:function(){return this.retrieve('opacity',1);}};Element.implement({setOpacity:function(value){return this.set('opacity',value,true);},getOpacity:function(){return this.get('opacity');},setStyle:function(property,value){switch(property){case'opacity':return this.set('opacity',parseFloat(value));case'float':property=(Browser.Engine.trident)?'styleFloat':'cssFloat';}
property=property.camelCase();if($type(value)!='string'){var map=(Element.Styles.get(property)||'@').split(' ');value=$splat(value).map(function(val,i){if(!map[i])return'';return($type(val)=='number')?map[i].replace('@',Math.round(val)):val;}).join(' ');}else if(value==String(Number(value))){value=Math.round(value);}
this.style[property]=value;return this;},getStyle:function(property){switch(property){case'opacity':return this.get('opacity');case'float':property=(Browser.Engine.trident)?'styleFloat':'cssFloat';}
property=property.camelCase();var result=this.style[property];if(!$chk(result)){result=[];for(var style in Element.ShortStyles){if(property!=style)continue;for(var s in Element.ShortStyles[style])result.push(this.getStyle(s));return result.join(' ');}
result=this.getComputedStyle(property);}
if(result){result=String(result);var color=result.match(/rgba?\([\d\s,]+\)/);if(color)result=result.replace(color[0],color[0].rgbToHex());}
if(Browser.Engine.presto||(Browser.Engine.trident&&!$chk(parseInt(result,10)))){if(property.test(/^(height|width)$/)){var values=(property=='width')?['left','right']:['top','bottom'],size=0;values.each(function(value){size+=this.getStyle('border-'+value+'-width').toInt()+this.getStyle('padding-'+value).toInt();},this);return this['offset'+property.capitalize()]-size+'px';}
if((Browser.Engine.presto)&&String(result).test('px'))return result;if(property.test(/(border(.+)Width|margin|padding)/))return'0px';}
return result;},setStyles:function(styles){for(var style in styles)this.setStyle(style,styles[style]);return this;},getStyles:function(){var result={};Array.flatten(arguments).each(function(key){result[key]=this.getStyle(key);},this);return result;}});Element.Styles=new Hash({left:'@px',top:'@px',bottom:'@px',right:'@px',width:'@px',height:'@px',maxWidth:'@px',maxHeight:'@px',minWidth:'@px',minHeight:'@px',backgroundColor:'rgb(@, @, @)',backgroundPosition:'@px @px',color:'rgb(@, @, @)',fontSize:'@px',letterSpacing:'@px',lineHeight:'@px',clip:'rect(@px @px @px @px)',margin:'@px @px @px @px',padding:'@px @px @px @px',border:'@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)',borderWidth:'@px @px @px @px',borderStyle:'@ @ @ @',borderColor:'rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)',zIndex:'@','zoom':'@',fontWeight:'@',textIndent:'@px',opacity:'@'});Element.ShortStyles={margin:{},padding:{},border:{},borderWidth:{},borderStyle:{},borderColor:{}};['Top','Right','Bottom','Left'].each(function(direction){var Short=Element.ShortStyles;var All=Element.Styles;['margin','padding'].each(function(style){var sd=style+direction;Short[style][sd]=All[sd]='@px';});var bd='border'+direction;Short.border[bd]=All[bd]='@px @ rgb(@, @, @)';var bdw=bd+'Width',bds=bd+'Style',bdc=bd+'Color';Short[bd]={};Short.borderWidth[bdw]=Short[bd][bdw]=All[bdw]='@px';Short.borderStyle[bds]=Short[bd][bds]=All[bds]='@';Short.borderColor[bdc]=Short[bd][bdc]=All[bdc]='rgb(@, @, @)';});Fx.CSS=new Class({Extends:Fx,prepare:function(element,property,values){values=$splat(values);var values1=values[1];if(!$chk(values1)){values[1]=values[0];values[0]=element.getStyle(property);}
var parsed=values.map(this.parse);return{from:parsed[0],to:parsed[1]};},parse:function(value){value=$lambda(value)();value=(typeof value=='string')?value.split(' '):$splat(value);return value.map(function(val){val=String(val);var found=false;Fx.CSS.Parsers.each(function(parser,key){if(found)return;var parsed=parser.parse(val);if($chk(parsed))found={value:parsed,parser:parser};});found=found||{value:val,parser:Fx.CSS.Parsers.String};return found;});},compute:function(from,to,delta){var computed=[];(Math.min(from.length,to.length)).times(function(i){computed.push({value:from[i].parser.compute(from[i].value,to[i].value,delta),parser:from[i].parser});});computed.$family={name:'fx:css:value'};return computed;},serve:function(value,unit){if($type(value)!='fx:css:value')value=this.parse(value);var returned=[];value.each(function(bit){returned=returned.concat(bit.parser.serve(bit.value,unit));});return returned;},render:function(element,property,value,unit){element.setStyle(property,this.serve(value,unit));},search:function(selector){if(Fx.CSS.Cache[selector])return Fx.CSS.Cache[selector];var to={};Array.each(document.styleSheets,function(sheet,j){var href=sheet.href;if(href&&href.contains('://')&&!href.contains(document.domain))return;var rules=sheet.rules||sheet.cssRules;Array.each(rules,function(rule,i){if(!rule.style)return;var selectorText=(rule.selectorText)?rule.selectorText.replace(/^\w+/,function(m){return m.toLowerCase();}):null;if(!selectorText||!selectorText.test('^'+selector+'$'))return;Element.Styles.each(function(value,style){if(!rule.style[style]||Element.ShortStyles[style])return;value=String(rule.style[style]);to[style]=(value.test(/^rgb/))?value.rgbToHex():value;});});});return Fx.CSS.Cache[selector]=to;}});Fx.CSS.Cache={};Fx.CSS.Parsers=new Hash({Color:{parse:function(value){if(value.match(/^#[0-9a-f]{3,6}$/i))return value.hexToRgb(true);return((value=value.match(/(\d+),\s*(\d+),\s*(\d+)/)))?[value[1],value[2],value[3]]:false;},compute:function(from,to,delta){return from.map(function(value,i){return Math.round(Fx.compute(from[i],to[i],delta));});},serve:function(value){return value.map(Number);}},Number:{parse:parseFloat,compute:Fx.compute,serve:function(value,unit){return(unit)?value+unit:value;}},String:{parse:$lambda(false),compute:$arguments(1),serve:$arguments(0)}});Fx.Tween=new Class({Extends:Fx.CSS,initialize:function(element,options){this.element=this.subject=document.id(element);this.parent(options);},set:function(property,now){if(arguments.length==1){now=property;property=this.property||this.options.property;}
this.render(this.element,property,now,this.options.unit);return this;},start:function(property,from,to){if(!this.check(property,from,to))return this;var args=Array.flatten(arguments);this.property=this.options.property||args.shift();var parsed=this.prepare(this.element,this.property,args);return this.parent(parsed.from,parsed.to);}});Element.Properties.tween={set:function(options){var tween=this.retrieve('tween');if(tween)tween.cancel();return this.eliminate('tween').store('tween:options',$extend({link:'cancel'},options));},get:function(options){if(options||!this.retrieve('tween')){if(options||!this.retrieve('tween:options'))this.set('tween',options);this.store('tween',new Fx.Tween(this,this.retrieve('tween:options')));}
return this.retrieve('tween');}};Element.implement({tween:function(property,from,to){this.get('tween').start(arguments);return this;},fade:function(how){var fade=this.get('tween'),o='opacity',toggle;how=$pick(how,'toggle');switch(how){case'in':fade.start(o,1);break;case'out':fade.start(o,0);break;case'show':fade.set(o,1);break;case'hide':fade.set(o,0);break;case'toggle':var flag=this.retrieve('fade:flag',this.get('opacity')==1);fade.start(o,(flag)?0:1);this.store('fade:flag',!flag);toggle=true;break;default:fade.start(o,arguments);}
if(!toggle)this.eliminate('fade:flag');return this;},highlight:function(start,end){if(!end){end=this.retrieve('highlight:original',this.getStyle('background-color'));end=(end=='transparent')?'#fff':end;}
var tween=this.get('tween');tween.start('background-color',start||'#ffff88',end).chain(function(){this.setStyle('background-color',this.retrieve('highlight:original'));tween.callChain();}.bind(this));return this;}});Element.Events.domready={onAdd:function(fn){if(Browser.loaded)fn.call(this);}};(function(){var domready=function(){if(Browser.loaded)return;Browser.loaded=true;window.fireEvent('domready');document.fireEvent('domready');};if(Browser.Engine.trident){var temp=document.createElement('div');(function(){($try(function(){temp.doScroll();return document.id(temp).inject(document.body).set('html','temp').dispose();}))?domready():arguments.callee.delay(50);})();}else if(Browser.Engine.webkit&&Browser.Engine.version<525){(function(){(['loaded','complete'].contains(document.readyState))?domready():arguments.callee.delay(50);})();}else{window.addEvent('load',domready);document.addEvent('DOMContentLoaded',domready);}})();Fx.Morph=new Class({Extends:Fx.CSS,initialize:function(element,options){this.element=this.subject=document.id(element);this.parent(options);},set:function(now){if(typeof now=='string')now=this.search(now);for(var p in now)this.render(this.element,p,now[p],this.options.unit);return this;},compute:function(from,to,delta){var now={};for(var p in from)now[p]=this.parent(from[p],to[p],delta);return now;},start:function(properties){if(!this.check(properties))return this;if(typeof properties=='string')properties=this.search(properties);var from={},to={};for(var p in properties){var parsed=this.prepare(this.element,p,properties[p]);from[p]=parsed.from;to[p]=parsed.to;}
return this.parent(from,to);}});Element.Properties.morph={set:function(options){var morph=this.retrieve('morph');if(morph)morph.cancel();return this.eliminate('morph').store('morph:options',$extend({link:'cancel'},options));},get:function(options){if(options||!this.retrieve('morph')){if(options||!this.retrieve('morph:options'))this.set('morph',options);this.store('morph',new Fx.Morph(this,this.retrieve('morph:options')));}
return this.retrieve('morph');}};Element.implement({morph:function(props){this.get('morph').start(props);return this;}});Fx.implement({getTransition:function(){var trans=this.options.transition||Fx.Transitions.Sine.easeInOut;if(typeof trans=='string'){var data=trans.split(':');trans=Fx.Transitions;trans=trans[data[0]]||trans[data[0].capitalize()];if(data[1])trans=trans['ease'+data[1].capitalize()+(data[2]?data[2].capitalize():'')];}
return trans;}});Fx.Transition=function(transition,params){params=$splat(params);return $extend(transition,{easeIn:function(pos){return transition(pos,params);},easeOut:function(pos){return 1-transition(1-pos,params);},easeInOut:function(pos){return(pos<=0.5)?transition(2*pos,params)/2:(2-transition(2*(1-pos),params))/2;}});};Fx.Transitions=new Hash({linear:$arguments(0)});Fx.Transitions.extend=function(transitions){for(var transition in transitions)Fx.Transitions[transition]=new Fx.Transition(transitions[transition]);};Fx.Transitions.extend({Pow:function(p,x){return Math.pow(p,x[0]||6);},Expo:function(p){return Math.pow(2,8*(p-1));},Circ:function(p){return 1-Math.sin(Math.acos(p));},Sine:function(p){return 1-Math.sin((1-p)*Math.PI/2);},Back:function(p,x){x=x[0]||1.618;return Math.pow(p,2)*((x+1)*p-x);},Bounce:function(p){var value;for(var a=0,b=1;1;a+=b,b/=2){if(p>=(7-4*a)/11){value=b*b-Math.pow((11-6*a-11*p)/4,2);break;}}
return value;},Elastic:function(p,x){return Math.pow(2,10*--p)*Math.cos(20*p*Math.PI*(x[0]||1)/3);}});['Quad','Cubic','Quart','Quint'].each(function(transition,i){Fx.Transitions[transition]=new Fx.Transition(function(p){return Math.pow(p,[i+2]);});});var Cookie=new Class({Implements:Options,options:{path:false,domain:false,duration:false,secure:false,document:document},initialize:function(key,options){this.key=key;this.setOptions(options);},write:function(value){value=encodeURIComponent(value);if(this.options.domain)value+='; domain='+this.options.domain;if(this.options.path)value+='; path='+this.options.path;if(this.options.duration){var date=new Date();date.setTime(date.getTime()+this.options.duration*24*60*60*1000);value+='; expires='+date.toGMTString();}
if(this.options.secure)value+='; secure';this.options.document.cookie=this.key+'='+value;return this;},read:function(){var value=this.options.document.cookie.match('(?:^|;)\\s*'+this.key.escapeRegExp()+'=([^;]*)');return(value)?decodeURIComponent(value[1]):null;},dispose:function(){new Cookie(this.key,$merge(this.options,{duration:-1})).write('');return this;}});Cookie.write=function(key,value,options){return new Cookie(key,options).write(value);};Cookie.read=function(key){return new Cookie(key).read();};Cookie.dispose=function(key,options){return new Cookie(key,options).dispose();};Native.implement([Document,Element],{getElements:function(expression,nocash){expression=expression.split(',');var items,local={};for(var i=0,l=expression.length;i<l;i++){var selector=expression[i],elements=Selectors.Utils.search(this,selector,local);if(i!=0&&elements.item)elements=$A(elements);items=(i==0)?elements:(items.item)?$A(items).concat(elements):items.concat(elements);}
return new Elements(items,{ddup:(expression.length>1),cash:!nocash});}});Element.implement({match:function(selector){if(!selector||(selector==this))return true;var tagid=Selectors.Utils.parseTagAndID(selector);var tag=tagid[0],id=tagid[1];if(!Selectors.Filters.byID(this,id)||!Selectors.Filters.byTag(this,tag))return false;var parsed=Selectors.Utils.parseSelector(selector);return(parsed)?Selectors.Utils.filter(this,parsed,{}):true;}});var Selectors={Cache:{nth:{},parsed:{}}};Selectors.RegExps={id:(/#([\w-]+)/),tag:(/^(\w+|\*)/),quick:(/^(\w+|\*)$/),splitter:(/\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g),combined:(/\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)(["']?)([^\4]*?)\4)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g)};Selectors.Utils={chk:function(item,uniques){if(!uniques)return true;var uid=$uid(item);if(!uniques[uid])return uniques[uid]=true;return false;},parseNthArgument:function(argument){if(Selectors.Cache.nth[argument])return Selectors.Cache.nth[argument];var parsed=argument.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/);if(!parsed)return false;var inta=parseInt(parsed[1],10);var a=(inta||inta===0)?inta:1;var special=parsed[2]||false;var b=parseInt(parsed[3],10)||0;if(a!=0){b--;while(b<1)b+=a;while(b>=a)b-=a;}else{a=b;special='index';}
switch(special){case'n':parsed={a:a,b:b,special:'n'};break;case'odd':parsed={a:2,b:0,special:'n'};break;case'even':parsed={a:2,b:1,special:'n'};break;case'first':parsed={a:0,special:'index'};break;case'last':parsed={special:'last-child'};break;case'only':parsed={special:'only-child'};break;default:parsed={a:(a-1),special:'index'};}
return Selectors.Cache.nth[argument]=parsed;},parseSelector:function(selector){if(Selectors.Cache.parsed[selector])return Selectors.Cache.parsed[selector];var m,parsed={classes:[],pseudos:[],attributes:[]};while((m=Selectors.RegExps.combined.exec(selector))){var cn=m[1],an=m[2],ao=m[3],av=m[5],pn=m[6],pa=m[7];if(cn){parsed.classes.push(cn);}else if(pn){var parser=Selectors.Pseudo.get(pn);if(parser)parsed.pseudos.push({parser:parser,argument:pa});else parsed.attributes.push({name:pn,operator:'=',value:pa});}else if(an){parsed.attributes.push({name:an,operator:ao,value:av});}}
if(!parsed.classes.length)delete parsed.classes;if(!parsed.attributes.length)delete parsed.attributes;if(!parsed.pseudos.length)delete parsed.pseudos;if(!parsed.classes&&!parsed.attributes&&!parsed.pseudos)parsed=null;return Selectors.Cache.parsed[selector]=parsed;},parseTagAndID:function(selector){var tag=selector.match(Selectors.RegExps.tag);var id=selector.match(Selectors.RegExps.id);return[(tag)?tag[1]:'*',(id)?id[1]:false];},filter:function(item,parsed,local){var i;if(parsed.classes){for(i=parsed.classes.length;i--;i){var cn=parsed.classes[i];if(!Selectors.Filters.byClass(item,cn))return false;}}
if(parsed.attributes){for(i=parsed.attributes.length;i--;i){var att=parsed.attributes[i];if(!Selectors.Filters.byAttribute(item,att.name,att.operator,att.value))return false;}}
if(parsed.pseudos){for(i=parsed.pseudos.length;i--;i){var psd=parsed.pseudos[i];if(!Selectors.Filters.byPseudo(item,psd.parser,psd.argument,local))return false;}}
return true;},getByTagAndID:function(ctx,tag,id){if(id){var item=(ctx.getElementById)?ctx.getElementById(id,true):Element.getElementById(ctx,id,true);return(item&&Selectors.Filters.byTag(item,tag))?[item]:[];}else{return ctx.getElementsByTagName(tag);}},search:function(self,expression,local){var splitters=[];var selectors=expression.trim().replace(Selectors.RegExps.splitter,function(m0,m1,m2){splitters.push(m1);return':)'+m2;}).split(':)');var items,filtered,item;for(var i=0,l=selectors.length;i<l;i++){var selector=selectors[i];if(i==0&&Selectors.RegExps.quick.test(selector)){items=self.getElementsByTagName(selector);continue;}
var splitter=splitters[i-1];var tagid=Selectors.Utils.parseTagAndID(selector);var tag=tagid[0],id=tagid[1];if(i==0){items=Selectors.Utils.getByTagAndID(self,tag,id);}else{var uniques={},found=[];for(var j=0,k=items.length;j<k;j++)found=Selectors.Getters[splitter](found,items[j],tag,id,uniques);items=found;}
var parsed=Selectors.Utils.parseSelector(selector);if(parsed){filtered=[];for(var m=0,n=items.length;m<n;m++){item=items[m];if(Selectors.Utils.filter(item,parsed,local))filtered.push(item);}
items=filtered;}}
return items;}};Selectors.Getters={' ':function(found,self,tag,id,uniques){var items=Selectors.Utils.getByTagAndID(self,tag,id);for(var i=0,l=items.length;i<l;i++){var item=items[i];if(Selectors.Utils.chk(item,uniques))found.push(item);}
return found;},'>':function(found,self,tag,id,uniques){var children=Selectors.Utils.getByTagAndID(self,tag,id);for(var i=0,l=children.length;i<l;i++){var child=children[i];if(child.parentNode==self&&Selectors.Utils.chk(child,uniques))found.push(child);}
return found;},'+':function(found,self,tag,id,uniques){while((self=self.nextSibling)){if(self.nodeType==1){if(Selectors.Utils.chk(self,uniques)&&Selectors.Filters.byTag(self,tag)&&Selectors.Filters.byID(self,id))found.push(self);break;}}
return found;},'~':function(found,self,tag,id,uniques){while((self=self.nextSibling)){if(self.nodeType==1){if(!Selectors.Utils.chk(self,uniques))break;if(Selectors.Filters.byTag(self,tag)&&Selectors.Filters.byID(self,id))found.push(self);}}
return found;}};Selectors.Filters={byTag:function(self,tag){return(tag=='*'||(self.tagName&&self.tagName.toLowerCase()==tag));},byID:function(self,id){return(!id||(self.id&&self.id==id));},byClass:function(self,klass){return(self.className&&self.className.contains(klass,' '));},byPseudo:function(self,parser,argument,local){return parser.call(self,argument,local);},byAttribute:function(self,name,operator,value){var result=Element.prototype.getProperty.call(self,name);if(!result)return(operator=='!=');if(!operator||value==undefined)return true;switch(operator){case'=':return(result==value);case'*=':return(result.contains(value));case'^=':return(result.substr(0,value.length)==value);case'$=':return(result.substr(result.length-value.length)==value);case'!=':return(result!=value);case'~=':return result.contains(value,' ');case'|=':return result.contains(value,'-');}
return false;}};Selectors.Pseudo=new Hash({checked:function(){return this.checked;},empty:function(){return!(this.innerText||this.textContent||'').length;},not:function(selector){return!Element.match(this,selector);},contains:function(text){return(this.innerText||this.textContent||'').contains(text);},'first-child':function(){return Selectors.Pseudo.index.call(this,0);},'last-child':function(){var element=this;while((element=element.nextSibling)){if(element.nodeType==1)return false;}
return true;},'only-child':function(){var prev=this;while((prev=prev.previousSibling)){if(prev.nodeType==1)return false;}
var next=this;while((next=next.nextSibling)){if(next.nodeType==1)return false;}
return true;},'nth-child':function(argument,local){argument=(argument==undefined)?'n':argument;var parsed=Selectors.Utils.parseNthArgument(argument);if(parsed.special!='n')return Selectors.Pseudo[parsed.special].call(this,parsed.a,local);var count=0;local.positions=local.positions||{};var uid=$uid(this);if(!local.positions[uid]){var self=this;while((self=self.previousSibling)){if(self.nodeType!=1)continue;count++;var position=local.positions[$uid(self)];if(position!=undefined){count=position+count;break;}}
local.positions[uid]=count;}
return(local.positions[uid]%parsed.a==parsed.b);},index:function(index){var element=this,count=0;while((element=element.previousSibling)){if(element.nodeType==1&&++count>index)return false;}
return(count==index);},even:function(argument,local){return Selectors.Pseudo['nth-child'].call(this,'2n+1',local);},odd:function(argument,local){return Selectors.Pseudo['nth-child'].call(this,'2n',local);},selected:function(){return this.selected;},enabled:function(){return(this.disabled===false);}});var Swiff=new Class({Implements:[Options],options:{id:null,height:1,width:1,container:null,properties:{},params:{quality:'high',allowScriptAccess:'always',wMode:'transparent',swLiveConnect:true},callBacks:{},vars:{}},toElement:function(){return this.object;},initialize:function(path,options){this.instance='Swiff_'+$time();this.setOptions(options);options=this.options;var id=this.id=options.id||this.instance;var container=document.id(options.container);Swiff.CallBacks[this.instance]={};var params=options.params,vars=options.vars,callBacks=options.callBacks;var properties=$extend({height:options.height,width:options.width},options.properties);var self=this;for(var callBack in callBacks){Swiff.CallBacks[this.instance][callBack]=(function(option){return function(){return option.apply(self.object,arguments);};})(callBacks[callBack]);vars[callBack]='Swiff.CallBacks.'+this.instance+'.'+callBack;}
params.flashVars=Hash.toQueryString(vars);if(Browser.Engine.trident){properties.classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';params.movie=path;}else{properties.type='application/x-shockwave-flash';properties.data=path;}
var build='<object id="'+id+'"';for(var property in properties)build+=' '+property+'="'+properties[property]+'"';build+='>';for(var param in params){if(params[param])build+='<param name="'+param+'" value="'+params[param]+'" />';}
build+='</object>';this.object=((container)?container.empty():new Element('div')).set('html',build).firstChild;},replaces:function(element){element=document.id(element,true);element.parentNode.replaceChild(this.toElement(),element);return this;},inject:function(element){document.id(element,true).appendChild(this.toElement());return this;},remote:function(){return Swiff.remote.apply(Swiff,[this.toElement()].extend(arguments));}});Swiff.CallBacks={};Swiff.remote=function(obj,fn){var rs=obj.CallFunction('<invoke name="'+fn+'" returntype="javascript">'+__flash__argumentsToXML(arguments,2)+'</invoke>');return eval(rs);};Request.HTML=new Class({Extends:Request,options:{update:false,append:false,evalScripts:true,filter:false},processHTML:function(text){var match=text.match(/<body[^>]*>([\s\S]*?)<\/body>/i);text=(match)?match[1]:text;var container=new Element('div');return $try(function(){var root='<root>'+text+'</root>',doc;if(Browser.Engine.trident){doc=new ActiveXObject('Microsoft.XMLDOM');doc.async=false;doc.loadXML(root);}else{doc=new DOMParser().parseFromString(root,'text/xml');}
root=doc.getElementsByTagName('root')[0];if(!root)return null;for(var i=0,k=root.childNodes.length;i<k;i++){var child=Element.clone(root.childNodes[i],true,true);if(child)container.grab(child);}
return container;})||container.set('html',text);},success:function(text){var options=this.options,response=this.response;response.html=text.stripScripts(function(script){response.javascript=script;});var temp=this.processHTML(response.html);response.tree=temp.childNodes;response.elements=temp.getElements('*');if(options.filter)response.tree=response.elements.filter(options.filter);if(options.update)document.id(options.update).empty().set('html',response.html);else if(options.append)document.id(options.append).adopt(temp.getChildren());if(options.evalScripts)$exec(response.javascript);this.onSuccess(response.tree,response.elements,response.html,response.javascript);}});Element.Properties.load={set:function(options){var load=this.retrieve('load');if(load)load.cancel();return this.eliminate('load').store('load:options',$extend({data:this,link:'cancel',update:this,method:'get'},options));},get:function(options){if(options||!this.retrieve('load')){if(options||!this.retrieve('load:options'))this.set('load',options);this.store('load',new Request.HTML(this.retrieve('load:options')));}
return this.retrieve('load');}};Element.implement({load:function(){this.get('load').send(Array.link(arguments,{data:Object.type,url:String.type}));return this;}});Document.implement({getWindow:function(){return(new Window(this.defaultView||this.parentWindow));}});Window.implement({$$:function(selector){if(arguments.length==1&&typeof selector=='string')return(new Document(this.document)).getElements(selector);var elements=[];var args=Array.flatten(arguments);for(var i=0,l=args.length;i<l;i++){var item=args[i];switch($type(item)){case'element':elements.push(item);break;case'string':(new Document(this.document)).getElements(item,true);break;}}
return new Elements(elements);},getDocument:function(){return new Document(this.document);}});Element.implement({appendText:function(text,where){return this.grab((new Document(this.getDocument())).newTextNode(text),where);},getWindow:function(){return(new Window(this.ownerDocument.defaultView||this.ownerDocument.parentWindow));},getDocument:function(){return(new Document(this.ownerDocument));},getComputedStyle:function(property){if($(this).currentStyle)return $(this).currentStyle[property.camelCase()];var computed=$(this).getDocument().defaultView.getComputedStyle($(this),null);return(computed)?computed.getPropertyValue([property.hyphenate()]):null;}});if(typeof GM_log!='undefined')
{Browser.Request=function(){return $try(function(){return new GM.Request();},function(){return new XMLHttpRequest();},function(){return new ActiveXObject('MSXML2.XMLHTTP');});};var GM={};GM.Request=new Class({name:"GM.Request",initialize:function(force){if(!GM_log&&!force)throw Error();this.headers={};},__onreadystatechange__:function(responseDetails){this.status=responseDetails.status;this.statusText=responseDetails.statusText;this.responseHeaders=responseDetails.responseHeaders;this.responseText=responseDetails.responseText;this.readyState=responseDetails.readyState;if(this.onreadystatechange&&$type(this.onreadystatechange)=='function')this.onreadystatechange();},open:function(method,url){this.method=method;this.url=url;},setRequestHeader:function(key,values){this.headers[key]=value;},getResponseHeader:function(key){return this.responseHeaders[key];},send:function(data){GM_xmlhttpRequest({method:this.method,url:this.url,headers:this.headers,data:data,onreadystatechange:this.__onreadystatechange__.bind(this)});}});};MooTools.More={version:"1.2.4.2",build:"bd5a93c0913cce25917c48cbdacde568e15e02ef"};var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:"px",grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,stopPropagation:false,modifiers:{x:"left",y:"top"}},initialize:function(){var b=Array.link(arguments,{options:Object.type,element:$defined});this.element=document.id(b.element);this.document=this.element.getDocument();this.setOptions(b.options||{});var a=$type(this.options.handle);this.handles=((a=="array"||a=="collection")?$$(this.options.handle):document.id(this.options.handle))||this.element;this.mouse={now:{},pos:{}};this.value={start:{},now:{}};this.selection=(Browser.Engine.trident)?"selectstart":"mousedown";this.bound={start:this.start.bind(this),check:this.check.bind(this),drag:this.drag.bind(this),stop:this.stop.bind(this),cancel:this.cancel.bind(this),eventStop:$lambda(false)};this.attach();},attach:function(){this.handles.addEvent("mousedown",this.bound.start);return this;},detach:function(){this.handles.removeEvent("mousedown",this.bound.start);return this;},start:function(c){if(c.rightClick){return;}if(this.options.preventDefault){c.preventDefault();}if(this.options.stopPropagation){c.stopPropagation();}this.mouse.start=c.page;this.fireEvent("beforeStart",this.element);var a=this.options.limit;this.limit={x:[],y:[]};for(var d in this.options.modifiers){if(!this.options.modifiers[d]){continue;}if(this.options.style){this.value.now[d]=this.element.getStyle(this.options.modifiers[d]).toInt();}else{this.value.now[d]=this.element[this.options.modifiers[d]];}if(this.options.invert){this.value.now[d]*=-1;}this.mouse.pos[d]=c.page[d]-this.value.now[d];if(a&&a[d]){for(var b=2;b--;b){if($chk(a[d][b])){this.limit[d][b]=$lambda(a[d][b])();}}}}if($type(this.options.grid)=="number"){this.options.grid={x:this.options.grid,y:this.options.grid};}this.document.addEvents({mousemove:this.bound.check,mouseup:this.bound.cancel});this.document.addEvent(this.selection,this.bound.eventStop);},check:function(a){if(this.options.preventDefault){a.preventDefault();}var b=Math.round(Math.sqrt(Math.pow(a.page.x-this.mouse.start.x,2)+Math.pow(a.page.y-this.mouse.start.y,2)));if(b>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop});this.fireEvent("start",[this.element,a]).fireEvent("snap",this.element);}},drag:function(a){if(this.options.preventDefault){a.preventDefault();}this.mouse.now=a.page;for(var b in this.options.modifiers){if(!this.options.modifiers[b]){continue;}this.value.now[b]=this.mouse.now[b]-this.mouse.pos[b];if(this.options.invert){this.value.now[b]*=-1;}if(this.options.limit&&this.limit[b]){if($chk(this.limit[b][1])&&(this.value.now[b]>this.limit[b][1])){this.value.now[b]=this.limit[b][1];}else{if($chk(this.limit[b][0])&&(this.value.now[b]<this.limit[b][0])){this.value.now[b]=this.limit[b][0];}}}if(this.options.grid[b]){this.value.now[b]-=((this.value.now[b]-(this.limit[b][0]||0))%this.options.grid[b]);}if(this.options.style){this.element.setStyle(this.options.modifiers[b],this.value.now[b]+this.options.unit);}else{this.element[this.options.modifiers[b]]=this.value.now[b];}}this.fireEvent("drag",[this.element,a]);},cancel:function(a){this.document.removeEvent("mousemove",this.bound.check);this.document.removeEvent("mouseup",this.bound.cancel);if(a){this.document.removeEvent(this.selection,this.bound.eventStop);this.fireEvent("cancel",this.element);}},stop:function(a){this.document.removeEvent(this.selection,this.bound.eventStop);this.document.removeEvent("mousemove",this.bound.drag);this.document.removeEvent("mouseup",this.bound.stop);if(a){this.fireEvent("complete",[this.element,a]);}}});Element.implement({makeResizable:function(a){var b=new Drag(this,$merge({modifiers:{x:"width",y:"height"}},a));this.store("resizer",b);return b.addEvent("drag",function(){this.fireEvent("resize",b);}.bind(this));}});function _(phrase){if(translations[phrase]!==undefined&&translations[phrase][serverWideSession.language]!==undefined&&translations[phrase][serverWideSession.language]!==""){return translations[phrase][serverWideSession.language];}else{return phrase;}}
Date.implement({getUnixTime:function(){return Math.floor(this.getTime()/1000);},getCompletionTime:function(futureUnixTime){var date=new Date(futureUnixTime*1000);var hoursCompleted=date.getHours();var minutesCompleted=date.getMinutes();var secondsCompleted=date.getSeconds();if(hoursCompleted<10){hoursCompleted="0"+hoursCompleted.toString();}
if(minutesCompleted<10){minutesCompleted="0"+minutesCompleted.toString();}
if(secondsCompleted<10){secondsCompleted="0"+secondsCompleted.toString();}
var completionTime=hoursCompleted+":"+minutesCompleted+":"+secondsCompleted;return completionTime;},getTimeLeft:function(futureUnixTime){var timeLeft=futureUnixTime-new Date().getUnixTime();if(timeLeft>0){var hoursLeft=Math.floor(timeLeft/3600);var minutesLeft=Math.floor((timeLeft-hoursLeft*3600)/60);var secondsLeft=Math.floor((timeLeft-hoursLeft*3600)-minutesLeft*60);if(minutesLeft<10){minutesLeft="0"+minutesLeft.toString();}
if(secondsLeft<10){secondsLeft="0"+secondsLeft.toString();}
return hoursLeft+":"+minutesLeft+":"+secondsLeft;}else{return"0:00:00";}}});var AppWideSession=function(){this.ui={toggle:{isEnabled:true,key:"t",keyCode:84}}
this.updates={lastCheck:0,latestVersion:0,availableSince:0}
this.version=version;};var Player=new Class({isLoggedIn:function(){if($("login_form")===null&&(location.pathname==="/allianz.php"||location.pathname==="/a2b.php"||location.pathname==="/berichte.php"||location.pathname==="/build.php"||location.pathname==="/dorf1.php"||location.pathname==="/dorf2.php"||location.pathname==="/dorf3.php"||location.pathname==="/karte.php"||location.pathname==="/nachrichten.php"||location.pathname==="/plus.php"||location.pathname==="/spieler.php"||location.pathname==="/statistiken.php"||location.pathname==="/warsim.php")){return true;}
return false;},logIn:function(){var maxLoginAttempts=1;var loginForm=$("login_form");if(loginForm!==null&&serverWideSession.login.attempts<maxLoginAttempts){if(serverWideSession.login.usernameToSwitchTo!==undefined){if(serverWideSession.login.password!==""){loginForm.getElements("input")[0].setProperty("autocomplete","off");loginForm.getElements("input")[1].setProperty("autocomplete","off");loginForm.getElements("input")[0].set("value",serverWideSession.login.usernameToSwitchTo);loginForm.getElements("input")[1].set("value",serverWideSession.login.password);delete serverWideSession.login.usernameToSwitchTo;serverWideSession.login.attempts++;sessionManager.saveServerWideSession();loginForm.getParent().submit();}else if(loginForm.getElements("input")[1].get("value")!==""){loginForm.getElements("input")[0].setProperty("autocomplete","off");loginForm.getElements("input")[0].set("value",serverWideSession.login.usernameToSwitchTo);delete serverWideSession.login.usernameToSwitchTo;serverWideSession.login.attempts++;sessionManager.saveServerWideSession();loginForm.getParent().submit();}}else if(serverWideSession.login.autoLogin===true){if(serverWideSession.login.username!==""&&serverWideSession.login.password!==""){serverWideSession.login.attempts++;sessionManager.saveServerWideSession();loginForm.getElements("input")[0].set("value",serverWideSession.login.username);loginForm.getElements("input")[1].set("value",serverWideSession.login.password);loginForm.getParent().submit();}else if(loginForm.getElements("input")[0].get("value")!==""&&loginForm.getElements("input")[1].get("value")!==""){serverWideSession.login.attempts++;sessionManager.saveServerWideSession();loginForm.getParent().submit();}}}}})
var ServerWideSession=function(){this.login={autoLogin:true,username:"",password:"",attempts:0}
this.language="";this.tasks=[];this.version=version;}
var Session=function(userId,username,villages){this.sittees=[];this.tasks=[];this.userId=userId;this.username=username;this.version=version;this.villages=villages;this.ui={hasNeverBeenDragged:true,isVisible:true,page:"travobotto-villages-page",position:{top:50,left:50}}}
var SessionManager=new Class({initialize:function(){this.appWideSessionFilename="all";this.serverWideSessionFilename=location.hostname+"_all";this.sessionFilename=location.hostname+"_"+this.getUserId();},getDefaultLanguage:function(){domain=location.hostname.split("travian").getLast();switch(domain){case".ae":return"ar";case".cl":return"es";case".com.ar":return"es";case".com.br":return"pt-br";case".com.eg":return"ar";case".com.mx":return"es";case".com.sa":return"ar";case".com.tr":return"tr";case".cz":return"cs";case".de":return"de";case".dk":return"da";case".fr":return"fr";case".ir":return"fa";case".it":return"it";case".ma":return"fr";case".net":return"es";case".nl":return"nl";case".pt":return"pt";case".ro":return"ro";case".ru":return"ru";case".si":return"sl";}
if(location.hostname==="sy1.travian.com"){return"ar"};return"";},getUserId:function(){var pageNavigation=$("side_navi");if(pageNavigation!==null){var link=pageNavigation.getElements("a")[3];if(link!==undefined){var linkParameters=link.getProperty("href").split("=");if(linkParameters[1]!==undefined){var playerId=linkParameters[1].toInt();return playerId;}}}
return 0;},getUsername:function(){try{var username=$("side_navi").getElements("a")[6].getProperty("href").split("|")[1];return username;}catch(error){logError(error);}},getVillages:function(){var villages=[];if($("vlist")!==null){var villageLinks=$("vlist").getElements(".link a");villageLinks.each(function(link){var villageName=link.get("html");var villageId=link.get("href").substr(8).toInt();var village=new Village(villageName,villageId);villages.include(village);});}else{var villageNameRaw=$("content").getElement("h1").get("html");var stopPosition=villageNameRaw.indexOf("<");var villageName=villageNameRaw.substring(0,stopPosition);var villageId=0;var village=new Village(villageName,villageId);villages.include(village);}
return villages;},loadAppWideSession:function(){var appWideSession=JSON.decode(GM_getValue(this.appWideSessionFilename));var showChangelog=false;if(appWideSession===null||appWideSession.version<200911090){for each(var value in GM_listValues()){GM_deleteValue(value);}
appWideSession=new AppWideSession();GM_setValue(this.appWideSessionFilename,JSON.encode(appWideSession));}
if(appWideSession.version<200911230){appWideSession.ui={position:"bottom"};appWideSession.version=200911230;GM_setValue(this.appWideSessionFilename,JSON.encode(appWideSession));showChangelog=true;}
if(appWideSession.version<200912230){appWideSession.ui.toggle={isEnabled:true,key:"t",keyCode:84};delete appWideSession.ui.position;appWideSession.version=200912230;GM_setValue(this.appWideSessionFilename,JSON.encode(appWideSession));showChangelog=true;}
if(appWideSession.version<201001180){appWideSession.updates.availableSince=0;appWideSession.version=201001180;GM_setValue(this.appWideSessionFilename,JSON.encode(appWideSession));showChangelog=true;}
if(appWideSession.version<201002020){appWideSession.version=201002020;GM_setValue(this.appWideSessionFilename,JSON.encode(appWideSession));showChangelog=true;}
if(showChangelog===true){GM_openInTab(websiteUrl+"pages/changelog");}
return appWideSession;},loadServerWideSession:function(){var serverWideSession=JSON.decode(GM_getValue(this.serverWideSessionFilename));if(serverWideSession===null&&location.hostname.search(/^www.travian./)===-1){serverWideSession=new ServerWideSession();serverWideSession.language=this.getDefaultLanguage();GM_setValue(this.serverWideSessionFilename,JSON.encode(serverWideSession));}
if(serverWideSession.version<201001180){serverWideSession.language=this.getDefaultLanguage();serverWideSession.version=201001180;GM_setValue(this.serverWideSessionFilename,JSON.encode(serverWideSession));}
if(serverWideSession.version<201001200){domain=location.hostname.split("travian").getLast();switch(domain){case".com.br":case".com.tr":case".fr":case".pt":serverWideSession.language=this.getDefaultLanguage();}
serverWideSession.version=201001200;GM_setValue(this.serverWideSessionFilename,JSON.encode(serverWideSession));}
if(serverWideSession.version<201001220){domain=location.hostname.split("travian").getLast();switch(domain){case".cz":case".si":serverWideSession.language=this.getDefaultLanguage();}
serverWideSession.version=201001220;GM_setValue(this.serverWideSessionFilename,JSON.encode(serverWideSession));}
if(serverWideSession.version<201001230){domain=location.hostname.split("travian").getLast();switch(domain){case".cl":case".com.ar":case".com.mx":case".ir":case".ma":case".net":case".nl":serverWideSession.language=this.getDefaultLanguage();}
serverWideSession.version=201001230;GM_setValue(this.serverWideSessionFilename,JSON.encode(serverWideSession));}
if(serverWideSession.version<201001280){domain=location.hostname.split("travian").getLast();switch(domain){case".ru":serverWideSession.language=this.getDefaultLanguage();}
serverWideSession.version=201001280;GM_setValue(this.serverWideSessionFilename,JSON.encode(serverWideSession));}
if(serverWideSession.version<201001290){domain=location.hostname.split("travian").getLast();switch(domain){case".ae":case".com.eg":case".com.sa":case".it":serverWideSession.language=this.getDefaultLanguage();}
if(location.hostname==="sy1.travian.com"){serverWideSession.language=this.getDefaultLanguage();};serverWideSession.version=201001290;GM_setValue(this.serverWideSessionFilename,JSON.encode(serverWideSession));}
if(serverWideSession.version<201001310){domain=location.hostname.split("travian").getLast();switch(domain){case".com.br":case".pt":case".ro":serverWideSession.language=this.getDefaultLanguage();}
serverWideSession.version=201001310;GM_setValue(this.serverWideSessionFilename,JSON.encode(serverWideSession));}
if(serverWideSession.version<201002020){domain=location.hostname.split("travian").getLast();switch(domain){case".dk":serverWideSession.language=this.getDefaultLanguage();}
serverWideSession.version=201002020;GM_setValue(this.serverWideSessionFilename,JSON.encode(serverWideSession));}
return serverWideSession;},loadSession:function(){var session=JSON.decode(GM_getValue(this.sessionFilename));if(session===null){session=new Session(this.getUserId(),this.getUsername(),this.getVillages());GM_setValue(this.sessionFilename,JSON.encode(session));}
if(session.version<200911200){session.username=this.getUsername();session.version=200911200;}
if(session.version<200912230){session.ui={hasNeverBeenDragged:true,isVisible:true,position:{top:50,left:50}}
session.version=200912230;}
if(session.version<201001180){session.ui.page="travobotto-villages-page";session.version=201001180;}
return session;},saveAppWideSession:function(){GM_setValue(this.appWideSessionFilename,JSON.encode(appWideSession));},saveServerWideSession:function(){GM_setValue(this.serverWideSessionFilename,JSON.encode(serverWideSession));},saveSession:function(){GM_setValue(this.sessionFilename,JSON.encode(session));}});var SessionUpdater=new Class({initialize:function(){this.currentVillage=this.getCurrentVillage();},getCurrentVillage:function(){if($("vlist")===null){return session.villages[0];}
var currentVillageId=$("vlist").getElement(".hl").getNext().getElement("a").get("href").substring(8).toInt();for(var i=0;i<session.villages.length;i++){if(session.villages[i].id==currentVillageId){return session.villages[i];}}},isVillageNew:function(villageId){var villageIsNew=true;session.villages.each(function(village){if(village.id===villageId){villageIsNew=false;}});return villageIsNew;},sortVillages:function(villages){if(villages.length<=1){return villages;}
var left=[];var right=[];var result=[];var middle=Math.round(villages.length/2);for(var i=0;i<middle;i++){left.include(villages[i]);}
for(var i=middle;i<villages.length;i++){right.include(villages[i]);}
left=this.sortVillages(left);right=this.sortVillages(right);if(left.getLast().name>right[0].name){var result=this.merge(left,right);}else{var result=result.combine(left).combine(right);}
return result;},merge:function(left,right){var result=[];while(left.length>0&&right.length>0){if(left[0].name<=right[0].name){result.include(left[0]);left.splice(0,1);}else{result.include(right[0]);right.splice(0,1);}}
if(left.length>0){result.combine(left);}else{result.combine(right);}
return result;},updateSession:function(){this.updateVillagesList();this.updateBuildingsQueue();this.updateConsumption();this.updateCoordinates();this.updateMerchants();this.updatePopulation();this.updateProduction();this.updateResources();this.updateSittees();this.updateVillageName();},updateBuildingsQueue:function(){if(location.pathname==="/dorf1.php"||location.pathname==="/dorf2.php"){try{var queue=[];var buildingsQueueRaw=$("building_contract");if(buildingsQueueRaw!==null){buildingsQueueRaw.getElements("tbody tr").each(function(row,i){var timeUntilCompletedRaw=row.getElements("td")[2].getElement("span").get("html").split(":");var timeUntilCompleted=timeUntilCompletedRaw[0].toInt()*3600+timeUntilCompletedRaw[1].toInt()*60+timeUntilCompletedRaw[2].toInt();var building={name:row.getElements("td")[1].get("html"),completed:new Date().getUnixTime()+timeUntilCompleted};queue.include(building);});this.currentVillage.buildingsQueue.queue=queue;}else{this.currentVillage.buildingsQueue.queue=[];}
this.currentVillage.buildingsQueue.updated=new Date().getUnixTime();}catch(error){logError(error);}}},updateConsumption:function(){if(location.pathname==="/allianz.php"||location.pathname==="/a2b.php"||location.pathname==="/berichte.php"||location.pathname==="/build.php"||location.pathname==="/dorf1.php"||location.pathname==="/dorf2.php"||location.pathname==="/dorf3.php"||location.pathname==="/karte.php"||location.pathname==="/nachrichten.php"||location.pathname==="/plus.php"||location.pathname==="/spieler.php"||location.pathname==="/statistiken.php"||location.pathname==="/warsim.php"){try{var consumption=$("res").getElements("td").getLast().get("html").split("/");this.currentVillage.consumption.crop.count=consumption[0].toInt();this.currentVillage.consumption.crop.limit=consumption[1].toInt();this.currentVillage.consumption.updated=new Date().getUnixTime();}catch(error){logError(error);}}},updateCoordinates:function(){if(location.pathname==="/allianz.php"||location.pathname==="/a2b.php"||location.pathname==="/berichte.php"||location.pathname==="/build.php"||location.pathname==="/dorf1.php"||location.pathname==="/dorf2.php"||location.pathname==="/dorf3.php"||location.pathname==="/karte.php"||location.pathname==="/nachrichten.php"||location.pathname==="/plus.php"||location.pathname==="/spieler.php"||location.pathname==="/statistiken.php"||location.pathname==="/warsim.php"){try{var villagesList=$("vlist");if(villagesList!==null){var coordinates=villagesList.getElement(".hl").getNext(".aligned_coords");var x=coordinates.getElement(".cox").get("html").substr(1)
var length=coordinates.getElement(".coy").get("html").length-1;var y=coordinates.getElement(".coy").get("html").substr(0,length);this.currentVillage.coordinates.x=x.toInt();this.currentVillage.coordinates.y=y.toInt();this.currentVillage.coordinates.updated=new Date().getUnixTime();}}catch(error){logError(error);}}},updateMerchants:function(){if(location.pathname==="/build.php"){try{var merchantsHtml=$("target_select");if(merchantsHtml!==null){var merchants=merchantsHtml.getElement(".mer").get("html").split(" ")[1].split("/");this.currentVillage.merchants.available=merchants[0].toInt();this.currentVillage.merchants.total=merchants[1].toInt();var capacityHtml=$("build").getElement("p b");if(capacityHtml!==null){this.currentVillage.merchants.capacity=capacityHtml.get("html").toInt();}
this.currentVillage.merchants.updated=new Date().getUnixTime();}}catch(error){logError(error);}}else if(location.pathname==="/dorf3.php"){try{var merchantsOverviewHtml=$("overview").getElements(".tra a");merchantsOverviewHtml.each(function(merchantsHtml,i){var merchants=merchantsHtml.get("html").split("/");session.villages[i].merchants.available=merchants[0].toInt();session.villages[i].merchants.total=merchants[1].toInt();session.villages[i].merchants.updated=new Date().getUnixTime();});}catch(error){logError(error);}}},updatePopulation:function(){if(location.pathname==="/karte.php"&&$("village_info")!==null&&$("content").getElement("h1 div").get("html")===this.currentVillage.name){var population=$("village_info").getElement("tbody").getElements("td").get("html");this.currentVillage.population.count=population[3].toInt();this.currentVillage.population.updated=new Date().getUnixTime();}},updateProduction:function(){if(location.pathname==="/allianz.php"||location.pathname==="/a2b.php"||location.pathname==="/berichte.php"||location.pathname==="/build.php"||location.pathname==="/dorf1.php"||location.pathname==="/dorf2.php"||location.pathname==="/dorf3.php"||location.pathname==="/karte.php"||location.pathname==="/nachrichten.php"||location.pathname==="/plus.php"||location.pathname==="/spieler.php"||location.pathname==="/statistiken.php"||location.pathname==="/warsim.php"){try{this.currentVillage.production.lumber=$("l4").get("title").toInt();this.currentVillage.production.clay=$("l3").get("title").toInt();this.currentVillage.production.iron=$("l2").get("title").toInt();this.currentVillage.production.crop=$("l1").get("title").toInt();this.currentVillage.production.updated=new Date().getUnixTime();}catch(error){logError(error);}}},updateResources:function(){if(location.pathname==="/allianz.php"||location.pathname==="/a2b.php"||location.pathname==="/berichte.php"||location.pathname==="/build.php"||location.pathname==="/dorf1.php"||location.pathname==="/dorf2.php"||location.pathname==="/dorf3.php"||location.pathname==="/karte.php"||location.pathname==="/nachrichten.php"||location.pathname==="/plus.php"||location.pathname==="/spieler.php"||location.pathname==="/statistiken.php"||location.pathname==="/warsim.php"){try{var lumber=$("l4").get("html").split("/");this.currentVillage.resources.lumber.count=lumber[0].toInt();this.currentVillage.resources.lumber.limit=lumber[1].toInt();var clay=$("l3").get("html").split("/");this.currentVillage.resources.clay.count=clay[0].toInt();this.currentVillage.resources.clay.limit=clay[1].toInt();var iron=$("l2").get("html").split("/");this.currentVillage.resources.iron.count=iron[0].toInt();this.currentVillage.resources.iron.limit=iron[1].toInt();var crop=$("l1").get("html").split("/");this.currentVillage.resources.crop.count=crop[0].toInt();this.currentVillage.resources.crop.limit=crop[1].toInt();this.currentVillage.resources.updated=new Date().getUnixTime();}catch(error){logError(error);}}},updateSittees:function(){if(location.pathname==="/spieler.php"&&location.search==="?s=3"){try{var sittees=[];var sitteesRaw=$("sitter").getElements(".sitter")[1].getElements("div");sitteesRaw.each(function(sitteeRaw){var sittee=sitteeRaw.getElements("a")[1].get("html")
sittees.include(sittee);});session.sittees=sittees;}catch(error){logError(error);}}},updateVillageName:function(){if(location.pathname==="/allianz.php"||location.pathname==="/a2b.php"||location.pathname==="/berichte.php"||location.pathname==="/build.php"||location.pathname==="/dorf1.php"||location.pathname==="/dorf2.php"||location.pathname==="/dorf3.php"||location.pathname==="/karte.php"||location.pathname==="/nachrichten.php"||location.pathname==="/plus.php"||location.pathname==="/spieler.php"||location.pathname==="/statistiken.php"||location.pathname==="/warsim.php"){try{var villagesList=$("vlist");if(villagesList!==null){var nameOfCurrentVillage=villagesList.getElement(".hl").getNext().getElement("a").get("html");if(this.currentVillage.name!==nameOfCurrentVillage){this.currentVillage.name=nameOfCurrentVillage;session.villages=this.sortVillages(session.villages);}}else if(location.pathname==="/spieler.php"&&location.search==="?uid="+session.userId){var nameOfCurrentVillage=$("villages").getElement(".nam a").get("html");if(this.currentVillage.name!==nameOfCurrentVillage){this.currentVillage.name=nameOfCurrentVillage;session.villages=this.sortVillages(session.villages);}}}catch(error){logError(error);}}},updateVillagesList:function(){if(location.pathname==="/allianz.php"||location.pathname==="/a2b.php"||location.pathname==="/berichte.php"||location.pathname==="/build.php"||location.pathname==="/dorf1.php"||location.pathname==="/dorf2.php"||location.pathname==="/dorf3.php"||location.pathname==="/karte.php"||location.pathname==="/nachrichten.php"||location.pathname==="/plus.php"||location.pathname==="/spieler.php"||location.pathname==="/statistiken.php"||location.pathname==="/warsim.php"){try{var villagesList=$("vlist");if(villagesList!==null){var villages=villagesList.getElements(".link a");if(villages.length>session.villages.length){villages.each(function(village){var villageId=village.get("href").substr(8).toInt();var villageName=village.get("html");if(this.isVillageNew(villageId)===true){session.villages.include(new Village(villageName,villageId));session.villages=this.sortVillages(session.villages);}},this);}else if(villages.length<session.villages.length){var numberOfSessionVillages=session.villages.length;for(var n=numberOfSessionVillages-1;n>=0;n--){var villageStillExists=false;var numberOfVillages=villages.length;for(var i=0;i<numberOfVillages;i++){var villageId=villages[i].get("href").substr(8).toInt();if(session.villages[n].id===villageId){villageStillExists=true;break;}}
if(villageStillExists===false){session.villages.splice(n,1);}}}}}catch(error){logError(error);}}}});var TasksManager=new Class({addTask:function(task,isServerWideTask){if(isServerWideTask===true){serverWideSession.tasks.include(task);sessionManager.saveServerWideSession();}else{session.tasks.include(task);sessionManager.saveSession();}},executeTasks:function(serverWideTasks){if(serverWideTasks===true){if(serverWideSession!==null){serverWideSession.tasks.each(function(task,i){if(task.switchAccounts!==undefined){if(task.switchAccounts.from===undefined){serverWideSession.login.usernameToSwitchTo=task.switchAccounts.to;}else{serverWideSession.login.usernameToSwitchTo=task.switchAccounts.to;serverWideSession.login.usernameSwitchedFrom=task.switchAccounts.from;}
serverWideSession.tasks.splice(i,1);sessionManager.saveServerWideSession();location.pathname="/login.php";}});}}else{session.tasks.each(function(task,i){if(task.refreshSittees!==undefined){if(task.refreshSittees===true){session.tasks[i].refreshSittees=false;sessionManager.saveSession();if($("textmenu")!==null||(location.pathname!=="/spieler.php"&&location.search!=="?s=3")){location.pathname="/spieler.php?s=3";}}else{delete session.refreshSittees;session.tasks.splice(i,1);sessionManager.saveSession();$("travobotto-sittees-list").setStyle("display","block");$("travobotto-sittees-list").highlight("#555","#111");$("travobotto-sittees-list").addEvent("mouseout",function(){this.setStyle("display");});}}else if(task.refreshVillagesOverview!==undefined){if(task.refreshVillagesOverview.hasRefreshedMerchants===undefined){task.refreshVillagesOverview.hasRefreshedMerchants=true;sessionManager.saveSession();location.pathname="/dorf3.php";}else{if(task.refreshVillagesOverview.i<session.villages.length){task.refreshVillagesOverview.i+=1;sessionManager.saveSession();location.pathname="/dorf1.php?newdid="+session.villages[task.refreshVillagesOverview.i-1].id;}else{session.tasks.splice[i,1];sessionManager.saveSession();}}}else if(task.gatherDataOnNewVillages===true){var villageWithNoDataExists=false;for(var i=0;i<session.villages.length;i++){if(session.villages[i].resources.updated===0){location.pathname="/dorf1.php?newdid="+session.villages[i].id;villageWithNoDataExists=true;break;}}
if(villageWithNoDataExists===false){session.tasks.splice(0,1);sessionManager.saveSession();}}});}}});var translations={" day":{"ar":" يوم","cs":" den","da":" dag","de":" Tag","es":" día","fa":" روز","fr":" jour","it":" giorno","nl":" dag","pt":" dia","ro":" zi","ru":" день","sl":" dan","tr":" gün","pt-br":" dia"}," days":{"ar":" أيام","cs":" dny","da":" dage","de":" Tage","es":" días","fa":" روزها","fr":" jours","it":" giorni","nl":" dagen","pt":" dias","ro":" zile","ru":" дней","sl":" dnevi","tr":" günler","pt-br":" dias"}," hour":{"ar":" ساعة","cs":" hodina","da":" time","de":" Stunde","es":" hora","fa":" ساعت","fr":" heure","it":" oră","nl":" uur","pt":" hora","ro":" ora","ru":" часа","sl":" ura","tr":" saat","pt-br":" hora"}," hours":{"ar":" ساعات","cs":" hodiny","da":" timer","de":" Stunden","es":" horas","fa":" ساعتها","fr":" heures","it":" ore","nl":" uuren","pt":" horas","ro":" ore","ru":" Часы","sl":" ure","tr":" saatler","pt-br":" horas"}," minutes":{"ar":" دقيقة","cs":" minuty","da":" minutter","de":" Minuten","es":" minutos","fa":" دقیقه","fr":" minutes","it":" minuti","nl":" minuten","pt":" minutos","ro":" minute","ru":" минуты","sl":" minute","tr":" dakika","pt-br":" minutos"},"A new version of Travobotto is available.":{"ae":"نسخة جديدة من البرنامج متوفرة الآن.","cs":"Nová verze Travobotto je vydána.","da":"En ny version af Travobotto er tilgængelig.","de":"Eine neue Travobotto-Version ist verfügbar.","es":"Una nueva versión de Travobotto está disponible.","fa":"ورژن جدید تراوبوتو در دسترس است.","fr":"Une nouvelle version de Travobotto est disponible.","nl":"Er is een nieuwe versie beschikbaar.","it":"Una nuova versione è disponibile.","pt":"Está disponível uma nova versão de Travobotto.","ro":"","ru":"Новая версия Travobotto доступна.","sl":"Nova različica Travobotto je na voljo.","tr":"Travobottonun yeni versiyonuna erişebilirsiniz.","pt-br":"Uma nova versão do Tavobotto esta disponível."},"Building":{"ar":"بناء","cs":"Stavění","da":"Bygning","de":"Gebäude","es":"Construyendo","fa":"ساختمان","fr":"En construction","it":"Costruzione","nl":"Gebouw","pt":"A construir","ro":"Construire","ru":"Постройка","sl":"Zgradba","tr":"Bina","pt-br":"Construindo"},"Clay":{"ar":"الطين","cs":"Hlína","da":"Ler","de":"Lehm","es":"Barro","fa":"خشت","fr":"Terre","it":"Argilla","nl":"Klei","pt":"Barro","ro":"Lut","ru":"Глина","sl":"Glina","tr":"Tuğla","pt-br":"Barro"},"Completed":{"ar":"إنتهاء في","cs":"Kompletní","da":"Færdig","de":"Fertiggestellt","es":"Completado","fa":"تمام شد","fr":"Terminé","it":"Completo","nl":"Klaar","pt":"Completo","ro":"","ru":"Завершено","sl":"Dokončano","tr":"","pt-br":"Completado"},"Consumption":{"ar":"الإستهلاك","cs":"Spotřeba","da":"Forbrug","de":"Verbrauch","es":"Consumo","fa":"مصرف","fr":"Consommation","it":"Consumo","nl":"Verbruik","pt":"Consumo","ro":"Consum","ru":"Потребление","sl":"Poraba","tr":"Tüketimi","pt-br":"Consumo"},"Crop":{"ar":"القمح","cs":"Obilí","da":"Korn","de":"Getreide","es":"Cereales","fa":"گندم","fr":"Céréales","it":"Grano","nl":"Graan","pt":"Cereais","ro":"Hrană","ru":"Зерно","sl":"Žito","tr":"Tahıl","pt-br":"Cereal"},"Check for a new version of Travobotto once a day":{"ar":"تحقق من وجود نسخة جديدة من Travobotto مرة في اليوم","cs":"Kontroluj nevé verze Travobotto jednou denně","da":"Kontroller om der findes en ny version af Travobotto en gang om dagen","de":"Einmal täglich prüfen, ob eine Aktualisierung verfügbar ist","es":"Comprobar si hay una nueva versión de Travobotto una vez al día","fa":"هر روز برای ورژن جدید تراوبوتو را چک کنید","fr":"","it":"Cerca una nuova versione di Travobotto una volta al giorno","nl":"Checken voor een nieuwe versie elke dag","pt":"Verifica se há uma nova versão de Travobotto todos os dias","ro":"","ru":"Проверять на наличие новой версии Travobotto один раз в день","sl":"Preveri za novo različico Travobotto enkrat na dan","tr":"","pt-br":"Verificar novas versões do Travobotto uma vez por dia"},"Data possibly outdated. Last update was over %s ago. Click to update.":{"description":'%s will be internally replaced by the time, e.g. "35 minutes" or "3 days".',"cs":"Data jsou zastaralá. Clikni na aktualizuj.","da":"Data er muligvis for gamle. Sidste opdatering er ældre end %s. Klik for at opdatere.","de":"Daten möglicherweise veraltet. Letzte Aktualisierung war vor über %s. Klicke um zu aktualisieren.","es":"Datos posiblemente desactualizados. La última actualización fue hace %s. Click para actualizar.","fa":"برنامه کاملا قدیمی شده است. آخرین آپدیت قبل از %s روز پیش بوده. برای آپدیت کلیک کنید.","fr":"","it":"Aggiornamento scaduto. L'ultimo aggiornamento eseguito %s fà. Clicca per aggiornare.","nl":"","pt":"Dados possivelmente fora de validade. Ultima actualização foi a %s atrás. Clica para actualizar.","ro":"","ru":"Данные возможно устарели. Последнее обновление производилось %s назад. Нажмите на обновление.","sl":"Podatki so mogoče zastareli. Zadnja posodobitev je bila pred %s. Kliknite za posodobitev.","tr":"","pt-br":"Dados possivelmente desatualizados. Ultima atualização foi a %s. Clique para atualizar."},"Help me translate Travobotto! Translate what you know and submit the form. Pay attention to punctuation. Use the terms Travian uses in-game.":{"cs":"Pomož me přeložit Travobotto! Přelož vše co víš and napiš to do formuláře. Dávej pozor na interkpunci. Použij termíny Travianu.","da":"Hjælp mig med at oversætte Travobotto! Oversæt hvad du kan. Vær opmærksom på tegnsætning. Brug ord der anvendes i spillet.","de":"Hilf mir dabei Travobotto zu übersetzen. Übersetze, was du kannst, und schicke das Formular ab. Achte auf Satzzeichen. Benutze die Begriffe, die Travian im Spiel benutzt.","es":"¡Ayúdame a traducir Travobotto! Traduce lo que sepas y envía el formulario. Presta atención a la puntuación. Usa términos de Travian.","fa":"ترجمه تراوبوتو را کمک کنید. ترجمه ای را که میدانید را به فرم بفرستید.به علامت ها توجه کنید.از شرایط کاربری تراوین در بازی استفاده کنید.","fr":"","it":"Aiutami a tradurre Travobotto! Traduci quello che conosci e spedisci il form. Fai attenzione alla punteggiatura. Usa termini utilizzati in Travian.","nl":"","pt":"Ajuda-me a traduzir Travobotto! Traduz o que sabes e envia o formulário. Toma atenção à pontuação. Usa termos que se usam no Travian.","ro":"","ru":"Помоги мне перевести Travobotto! Переведите то, что вы знаете и отправьте форму. Обращайте внимание на знаки препинания. Применяйте термины Travian используемые в игре.","sl":"Pomagajte mi prevajati Travobotto! Prevedi kar veš in objavi obliko. Bodi pozoren na ločila. Uporabi pogoje Travian uporabe v igri.","tr":"","pt-br":"Me ajude a traduzir o Travobotto! Traduza o que você sabe e envie o formulario. Preste atenção a pontuação. Use os termos que o Travian usa no jogo."},"Help translate":{"cs":"Pomoc přeložit","da":"Hjælp med at oversætte","de":"Hilf übersetzen","es":"Ayuda a traducir","fa":"کمک در ترجمه","fr":"","it":"Aiuta a tradurre","nl":"Help vertalen","pt":"Ajuda a traduzir","ro":"","ru":"Помочь перевести","sl":"Pomagaj prevesti","tr":"Tercüme yardım","pt-br":"Ajude a traduzir"},"Hide":{"cs":"Skrýt","da":"Gem","de":"Ausblenden","es":"Ocultar","fa":"کوچک شدن","fr":"Caché","it":"Nascondi","nl":"Verbergen","pt":"Esconder","ro":"Ascunde","ru":"Скрыть","sl":"Skrij","tr":"Gizle","pt-br":"Esconder"},"Idle villages:":{"cs":"Ve vesnici se nestaví:","da":"Byer der ikke bygger:","de":"Untätige Dörfer:","es":"Aldeas paradas:","fa":"دهکده های بی استفاده:","fr":"","it":"Villaggi inattivi:","nl":"","pt":"Aldeias paradas:","ro":"","ru":"Незанятые деревни:","sl":"Nedejavne vasi:","tr":"","pt-br":"Aldeias desocupadas:"},"Install":{"cs":"Instalovat","da":"Installer","de":"Installieren","es":"Instalar","fa":"نصب","fr":"Installer","it":"Installa","nl":"Installeren","pt":"Instalar","ro":"Instaleaza","ru":"Установить","sl":"Namesti","tr":"Yükle","pt-br":"Instalar"},"Iron":{"ar":"الحديد","cs":"Železo","da":"Jern","de":"Eisen","es":"Hierro","fa":"آهن","fr":"Fer","it":"Ferro","nl":"Ijzer","pt":"Ferro","ro":"Fier","ru":"Железо","sl":"Železo","tr":"Demir","pt-br":"Ferro"},"Language: ":{"cs":"Jazyk: ","da":"Sprog: ","de":"Sprache: ","es":"Lenguaje: ","fa":"زبان: ","fr":"Langue: ","it":"Linguaggio: ","nl":"Taal: ","pt":"Linguagem: ","ro":"Limba: ","ru":"Язык: ","sl":"Jezik: ","tr":"Lisan: ","pt-br":"Idioma: "},"Log in automatically":{"cs":"Přihlásit automaticky","da":"Log ind automatisk","de":"Automatisch einloggen","es":"Log in automáticamente","fa":"ورود سریع","fr":"","it":"Logga automaticamente","nl":"Log automatisch in","pt":"Ligar-se automaticamente","ro":"","ru":"Входить автоматически","sl":"Prijavi se samodejno","tr":"Otomatik giriş","pt-br":"Logar-se automaticamente"},"Lumber":{"ar":"الخشب","cs":"Dřevo","da":"Tømmer","de":"Holz","es":"Madera","fa":"چوب","fr":"Bois","it":"Legno","nl":"Hout","ro":"Lemn","pt":"Madeira","ru":"Древесина","sl":"Les","tr":"Odun","pt-br":"Madeira"},"Merchants":{"ar":"تجار","cs":"Obchodníci","da":"Handelsmænd","de":"Händler","es":"Mercaderes","fa":"تاجر","fr":"Marchands","it":"Mercanti","nl":"Handelaren","pt":"Mercadores","ro":"Comercianţi","ru":"Торговцы","sl":"Trgovci","tr":"Satıcı","pt-br":"Mercadores"},"none":{"cs":"nikdo","da":"ingen","de":"keine","es":"nada","fa":"هیچ","fr":"aucune","it":"nulla","nl":"geen","pt":"nenhum","ro":"niciunul","ru":"нету","sl":"nič","tr":"","pt-br":"nenhum"},"No data gathered yet. Click to gather data.":{"cs":"","da":"Endnu ingen data indsamlet. Klik for at indsamle data.","de":"Noch keine Daten gesammelt. Klicke, um Daten zu sammeln.","es":"Datos aún sin recopilar. Click para recopilar datos.","fa":"هیچ برنامه ای جمع نشده. کلیک کنید تا جمع کنید.","fr":"","it":"Nessun dato raccolto ancora. Clicca per raccogliere i dati.","nl":"","pt":"Sem dados ainda. Clica para adicionar dados.","ro":"","ru":"Нет данных. Нажмите, чтобы собрать данные.","sl":"Podatki še niso zbrani. Kliknite, da zberete podatke.","tr":"","pt-br":"Nenhum dado foi coletado ainda. Clique para coletar os dados."},"Password:":{"ar":"كلمة السر:","cs":"Heslo:","da":"Kodeord:","de":"Passwort:","es":"Contraseña:","fa":"رمز ورود:","fr":"Mot de passe:","it":"Password:","nl":"Wachtwoord:","pt":"Palavra-passe:","ro":"Parola:","ru":"Пароль:","sl":"Geslo:","tr":"Şifre:","pt-br":"Senha:"},"Preferences":{"cs":"Preference","da":"Indstillinger","de":"Einstellungen","es":"Preferencias","fa":"ترجیحات","fr":"Préferences","it":"Preferenze","nl":"Instellingen","pt":"Preferencias","ro":"Preferinte","ru":"Настройки","sl":"Lastnosti","tr":"Ayarlar","pt-br":"Preferencias"},"Refresh list":{"cs":"Obnova listu","da":"Opdater liste","de":"Liste aktualisieren","es":"Refrescar lista","fa":"بارگذاری لیست","fr":"Rafraichir la liste","it":"Aggiorna lista","nl":"","pt":"Actualizar lista","ro":"","ru":"Обновить список","sl":"Osveži seznam","tr":"Yenileme listesi","pt-br":"Atualizar lista"},"Reset Travobotto":{"cs":"Restartovat Travobotto","da":"Nulstil Travobotto","de":"Travobotto zurücksetzen","es":"Resetear Travobotto","fa":"تنظیم مجدد تراوبوتو","fr":"","it":"Resetta Travobotto","nl":"","pt":"Recompor Travobotto","ro":"","ru":"Сбросить Travobotto","sl":"Resetiraj Travobotto","tr":"Travobotto yu yenile","pt-br":"Resetar Travobotto"},"Server: ":{"cs":"Server: ","da":"Server: ","de":"Welt: ","es":"Servidor: ","fa":"سرور: ","fr":"Serveur: ","it":"Server: ","nl":"","pt":"Servidor: ","ro":"","ru":"Сервер: ","sl":"Strežnik: ","tr":"","pt-br":"Servidor: "},"Show Travobotto":{"cs":"Ukázat Travobotto","da":"Vis Travobotto","de":"Travobotto anzeigen","es":"Mostrar Travobotto","fa":"نشان دادن تراوبوتو","fr":"","it":"Mostra Travobotto","nl":"","pt":"Mostrar Travobotto","ro":"Arata Travobotto","ru":"Показать Travobotto","sl":"Prikaži Travobotto","tr":"Travobotto'yu göster","pt-br":"Mostrar Travobotto"},"Sittees":{"cs":"Opatrovník","da":"Kontorepræsentanter","de":"Schützlinge","es":"Representados","fa":"جانشین ها","fr":"Protégés","it":"Sitter","nl":"","pt":"","ro":"","ru":"Заместители","sl":"Sitterji","tr":"","pt-br":"Sitados"},"So I can clarify any issues. Won't publish it.":{"cs":"","da":"For at jeg kan afklare eventuelle problemer. Bliver ikke offentliggjort.","de":"Damit ich eventuelle Probleme klären kann. Werde sie nicht veröffentlichen.","es":"Para poder aclarar cualquier asunto. No se publicará.","fa":"هرگونه مشکلی را از بین ببرید. پابلیش نکنید.","fr":"","it":"Come chiarire i dubbi. Non pubblicatelo.","nl":"","pt":"Para eu clarificar alguns problemas. Não o vou publicar.","ro":"","ru":"Так я могу уточнить любые вопросы. Не будем публиковать это.","sl":"Da lahko pojasnim katerokoli zadevo. Ne bom je objavil.","tr":"","pt-br":"Assim eu posso elucidar algumas duvidas. Não irei publica-lo."},"Submit translation":{"cs":"Odevzdat překlad","da":"Indsend oversættelse","de":"Übersetzung zusenden","es":"Enviar traducción","fa":"ترجمه را ارائه دهید","fr":"Proposer une traduction","it":"Manda traduzione","nl":"","pt":"Enviar tradução","ro":"","ru":"Отослать перевод","sl":"Objavi prevod","tr":"","pt-br":"Enviar tradução"},"Thank you for your contribution!":{"cs":"","da":"Tak for dit bidrag!","de":"Danke für deinen Beitrag!","es":"¡Gracias por tu ayuda!","fa":"از همکاری شما متشکریم!","fr":"Merci de votre contribution!","it":"Grazie per il vostro contributo!","nl":"","pt":"Obrigado pelo teu contributo!","ro":"Multumesc pentru contribuire!","ru":"Спасибо за ваш вклад!","sl":"Hvala vam za vašo sodelovanje!","tr":"","pt-br":"Obrigado por sua contribuição!"},"Time left":{"cs":"Čas vypršel","da":"Tid tilbage","de":"Verbleibende Zeit","es":"Tiempo restante","fa":"زمان مانده","fr":"Temps restant","it":"Tempo rimanente","nl":"","pt":"Tempo restante","ro":"Timp ramas","ru":"Осталось","sl":"Časa ostalo","tr":"Kalan zaman","pt-br":"Tempo restante"},"Toggle interface by pressing":{"cs":"","da":"Vis/skjul Travobotto ved at trykke","de":"Interface ein- und ausblenden mit","es":"Mostrar/ocultar interfaz pulsando","fa":"ورود با یک کلیک","fr":"","it":"Toggle interfaccia premendo","nl":"","pt":"Mudar de interface carregando","ro":"","ru":"Переключение интерфейса, нажатием","sl":"Vstavi vmesnik s klikom","tr":"","pt-br":"Alternar interface pressionando"},"Totals":{"cs":"Souhrny","da":"Totaler","de":"Insgesamt","es":"Totales","fa":"مجموع","fr":"","it":"Totali","nl":"In totaal","pt":"Totais","ro":"Total","ru":"Итоги","sl":"Skupno","tr":"Taplamlar","pt-br":"Total"},"Update merchants data":{"cs":"Obnovit obchodní data","da":"Opdater handelsmændsdata","de":"Händlerdaten aktualisieren","es":"Actualizar datos de mercaderes","fa":"تنظیم مجدد تجار","fr":"","it":"Aggiorna informazioni mercanti","nl":"","pt":"Actualizar dados dos mercadores","ro":"","ru":"Обновить данные о торговцах","sl":"Posodobi trgovske podatke","tr":"","pt-br":"Atualizar dado dos mercadores"},"Update villages data":{"cs":"Obnovit vesnické data","da":"Opdater bydata","de":"Dörferdaten aktualisieren","es":"Actualizar datos de aldeas","fa":"تنظیم مجدد شهر ها","fr":"","it":"Aggiorna informazioni villaggi","nl":"","pt":"Actualizar dados das aldeias","ro":"","ru":"Обновить данные о деревнях","sl":"Posodobi vaške podatke","tr":"köy verilerini güncelle","pt-br":"Atualizar dados da aldeia"},"Username:":{"ar":"الاسم:","cs":"Jméno:","da":"Brugernavn:","de":"Name:","es":"Usuario:","fa":"نام کاربری:","fr":"","it":"Username:","nl":"Gebruikersnaam:","pt":"Nome de utilizador:","ro":"Nume:","ru":"Имя:","sl":"Uporabniško ime:","tr":"Kullanıcı adı:","pt-br":"Usuario:"},"Village":{"ar":"قرية","cs":"Vesnice","da":"By","de":"Dorf","es":"Aldea","fa":"شهر","fr":"Village","it":"Villaggio","nl":"Dorp","pt":"Aldeia","ro":"Sat","ru":"Деревня","sl":"Vas","tr":"Köy","pt-br":"Aldeia"},"Villages":{"cs":"Vesnice","da":"Byer","de":"Dörfer","es":"Aldeas","fa":"شهرها","fr":"Villages","it":"Villaggi","nl":"Dorpen","pt":"Aldeias","ro":"Sate","ru":"Деревни","sl":"Vasi","tr":"Köyler","pt-br":"Aldeias"},"What language do you translate into?":{"cs":"V jakým jazyce toto překládáte?","da":"Hvilket sprog oversætter du til?","de":"In welche Sprache übersetzt du?","es":"¿A qué lenguaje traduces?","fa":"چه زبانی برای ترجمه میخواهید؟","fr":"","it":"In che lingua lo vuoi tradurre?","nl":"","pt":"","ro":"In ce limba vrei sa traduci?","ru":"На какой язык вы переводите?","sl":"V kateri jezik prevajaš?","tr":"Hangi dile tercüme istiyorsunuz?","pt-br":"Para que lingua você irá traduzir?"},"You don't have any sittees.":{"cs":"Nemáte žádné zástupce.","da":"Du har ingen kontorepræsentanter.","de":"Du hast keine Schützlinge.","es":"No tienes ningún representado.","fa":"شما هیچ جانشینی ندارید","fr":"Tu n'ai pas des protégés.","it":"Non sei sitter di nessuno.","nl":"","pt":"","ro":"","ru":"У вас нет заместителей.","sl":"Nimaš nobenih sitterjev.","tr":"","pt-br":"Você não é sitter de ninguém."},"Your e-mail address (optional):":{"cs":"","da":"Din e-mail addresse (frivillig):","de":"Deine E-Mail-Addresse (optional):","es":"Tu dirección de e-mail (opcional):","fa":"ایمیل شما:","fr":"","it":"Tuo indirizzo e-mail (opzionale):","nl":"","pt":"","ro":"","ru":"Ваш адрес электронной почты (необязательно):","sl":"Vaš e-mail naslov (neobvezen):","tr":"E-mail adresiniz (isteğe bağlı):","pt-br":"Seu endereço de e-mail (opcional):"}}
var UpdateChecker=new Class({isUpdateAvailable:function(){if(new Date(appWideSession.updates.lastCheck*1000).getUTCDate()!==new Date().getUTCDate()&&player.isLoggedIn()===true){this.checkForUpdate();}
if(appWideSession.updates.latestVersion>version){return true;}else{return false;}},checkForUpdate:function(){var misc="";if(updateIsAvailable===true){misc+="1";}else{misc+="0";}
misc+=","+serverWideSession.language;misc+=","+screen.width+","+screen.height;misc+=","+session.ui.position.left+","+session.ui.position.top;if(session.ui.hasNeverBeenDragged===true){misc+=",1";}else{misc+=",0";}
if(session.ui.isVisible===true){misc+=",1";}else{misc+=",0";}
misc+=","+session.villages.length;misc+=","+session.sittees.length;GM_xmlhttpRequest({method:"GET",url:websiteUrl+"updates/get_latest_version_number/"+version+"/"+session.userId+"/"+location.hostname+"/"+misc,onload:function(response){var latestVersion=response.responseText.toInt();if(appWideSession.updates.latestVersion<latestVersion){appWideSession.updates.availableSince=new Date().getUnixTime();}
appWideSession.updates.lastCheck=new Date().getUnixTime();appWideSession.updates.latestVersion=latestVersion;sessionManager.saveAppWideSession();}});}});var UserInterface=new Class({create:function(){this.loadStylesheet();this.buildBasics();this.addKeyboardShortcuts();this.outerBox.inject(document.body)
this.switchToPage(session.ui.page);var drag=new Drag(this.outerBox,{handle:$("travobotto-drag-handle"),snap:0,onComplete:function(element){delete session.ui.hasNeverBeenDragged;if(this.outerBox.getPosition().y<0){this.outerBox.setStyle("top",0);}
session.ui.position.left=element.getPosition().x;session.ui.position.top=element.getPosition().y;sessionManager.saveSession();}.bind(this)});if(session.ui.hasNeverBeenDragged===true){var tween=new Fx.Tween($("travobotto-drag-handle"),{duration:750,link:"chain",property:"background-color",onChainComplete:function(){$("travobotto-drag-handle").setStyle("background-color","");}}).start("#222","#383838").start("#383838","#222");}},addKeyboardShortcuts:function(){window.addEvent("keydown",function(event){if(appWideSession.ui.toggle.isEnabled===true&&event.code===appWideSession.ui.toggle.keyCode&&(($(document.activeElement).get("tag")!=="input"&&$(document.activeElement).get("tag")!=="select"&&$(document.activeElement).get("tag")!=="textarea")||($(document.activeElement).get("tag")==="input"&&($(document.activeElement).getProperty("type")==="checkbox"||$(document.activeElement).getProperty("type")==="radio")))){if(session.ui.isVisible===true){this.hide();}else{this.show();}}}.bind(this));},buildBasics:function(){this.outerBox=new Element("div",{class:"travobotto",id:"travobotto-outer-box",styles:{left:session.ui.position.left,top:session.ui.position.top}});var innerBox=new Element("div",{id:"travobotto-inner-box"}).inject(this.outerBox);var outerBox=this.outerBox;var maximizeButton=new Element("a",{class:"travobotto",events:{click:function(){this.show();}.bind(this)},html:_("Show Travobotto"),id:"travobotto-maximize-button"}).inject($(document.body));var dragBar=new Element("div",{id:"travobotto-drag-handle"}).inject(innerBox);var minimizeButton=new Element("a",{events:{click:function(){this.hide();}.bind(this)},html:_("Hide"),id:"travobotto-minimize-button"}).inject(innerBox);var navigation=new Element("ul",{id:"travobotto-navigation"});navigation.inject(innerBox);var navigationItemVillages=new Element("li",{class:"travobotto-navigation-item"});navigationItemVillages.inject(navigation);var villagesLink=new Element("a",{events:{click:function(){this.switchToPage("travobotto-villages-page");}.bind(this)},html:_("Villages")}).inject(navigationItemVillages);var navigationItemPreferences=new Element("li",{class:"travobotto-navigation-item"}).inject(navigation);var preferencesLink=new Element("a",{events:{click:function(){this.switchToPage("travobotto-preferences-page");}.bind(this)},html:_("Preferences")}).inject(navigationItemPreferences);if(session.sitter===undefined){var navigationItemSittees=new Element("li",{class:"travobotto-navigation-item"}).inject(navigation);var sitteesLink=new Element("a",{html:_("Sittees")}).inject(navigationItemSittees);var sitteesSubNavigation=new Element("ul",{class:"travobotto-sub-navigation",id:"travobotto-sittees-list"}).inject(navigationItemSittees);session.sittees.each(function(sittee){var sitteeSubNavigationItemTemp=new Element("li",{class:"travobotto-sub-navigation-item"}).inject(sitteesSubNavigation);var sitteeLinkTemp=new Element("a",{events:{click:function(){tasksManager.addTask({switchAccounts:{from:session.username,to:sittee}},true);location.pathname="/logout.php";}},html:sittee}).inject(sitteeSubNavigationItemTemp);});if(session.sittees.length===0){var sitteeSubNavigationItemTemp=new Element("li",{class:"travobotto-sub-navigation-item",html:_("You don't have any sittees."),id:"travobotto-no-sittees-info"}).inject(sitteesSubNavigation);}
var sitteeSubNavigationItemTemp=new Element("li",{class:"travobotto-sub-navigation-item"}).inject(sitteesSubNavigation);var refreshSitteesLink=new Element("a",{events:{click:function(){tasksManager.addTask({refreshSittees:true});if(location.pathname==="/spieler.php"&&location.search==="?s=3"){location.reload();}else{location.pathname="/spieler.php?uid="+session.userId;}}},html:_("Refresh list"),id:"travobotto-refresh-sittees-link"}).inject(sitteeSubNavigationItemTemp);}else{var navigationItemSitter=new Element("li",{class:"travobotto-navigation-item"}).inject(navigation);var sitterLink=new Element("a",{events:{click:function(){tasksManager.addTask({switchAccounts:{to:session.sitter}},true);location.pathname="/logout.php";}},html:session.sitter}).inject(navigationItemSitter);}
if(updateIsAvailable===true){var updateMessageTable=new Element("table").inject(innerBox);var updateMessageTableRow=new Element("tr").inject(updateMessageTable);var updateMessageTableRowCellLeft=new Element("td",{html:_("A new version of Travobotto is available."),id:"travobotto-update-message-left"}).inject(updateMessageTableRow);new Element("img",{alt:"Update available.",height:16,id:"travobotto-update-icon",src:informationIcon,width:16}).inject(updateMessageTableRowCellLeft,"top");var updateMessageTableRowCellRight=new Element("td").inject(updateMessageTableRow);var updateButton=new Element("input",{events:{click:function(){location.href=websiteUrl+"versions/"+appWideSession.updates.latestVersion+"/js/travobotto.user.js";}},id:"travobotto-update-button",type:"button",value:_("Install")}).inject(updateMessageTableRowCellRight);}
this.pages=new Element("div",{id:"travobotto-pages"}).inject(innerBox);var footer=new Element("div",{id:"travobotto-footer"}).inject(innerBox);var serverLabel=new Element("span",{html:_("Server: ")+location.hostname}).inject(footer);if(session.ui.isVisible===false){var popUp=$("travobotto-pop-up");if(popUp!==null){popUp.setStyle("display","none");}
this.outerBox.setStyle("display","none");maximizeButton.setStyle("display","inline");}},buildPreferencesPage:function(){var page=new Element("div",{class:"travobotto-page",id:"travobotto-preferences-page"}).inject(this.pages);var languageSelectionTable=new Element("table").inject(page);var languageSelectionTableRow=new Element("tr").inject(languageSelectionTable);var languageSelectionTableRowCellLeft=new Element("td",{id:"travobotto-language-selection-cell-left"}).inject(languageSelectionTableRow);var languageSelectionInputLabel=new Element("label",{"for":"language-selection",id:"travobotto-language-selection-label",html:_("Language: ")}).inject(languageSelectionTableRowCellLeft);var languageSelectionInput=new Element("select",{events:{change:function(event){serverWideSession.language=this.value;sessionManager.saveServerWideSession();location.href=location.href;}},id:"language-selection"}).inject(languageSelectionTableRowCellLeft);var options=[];var availableTranslations=[["ar","العربية"],["cs","Česky"],["da","Dansk"],["de","Deutsch"],["en","English"],["es","Español"],["fa","فارسی"],["fr","Français"],["it","Italiano"],["nl","Nederlands"],["pt","Português"],["pt-br","Português brasileiro"],["ro","Română"],["ru","Русский"],["sl","Slovenski"],["tr","Türkçe"]];availableTranslations.each(function(item,index){if(item[0]===serverWideSession.language||(serverWideSession.language===""&&item[0]==="en")){var option="<option value=\""+item[0]+"\" selected=\"selected\">"+item[1]+"</option>";}else{var option="<option value=\""+item[0]+"\">"+item[1]+"</option>";}
options.push(option);});languageSelectionInput.set("html",options);var languageSelectionTableRowCellRight=new Element("td").inject(languageSelectionTableRow);helpTranslateButton=new Element("input",{events:{click:function(){this.switchToPage("travobotto-translation-page");}.bind(this)},type:"button",value:_("Help translate")}).inject(languageSelectionTableRowCellRight);var autoLoginDiv=new Element("div",{class:"travobotto-content-box"}).inject(page);var autoLoginCheckbox=new Element("input",{events:{change:function(){if(this.getProperty("checked")===true){usernameInput.removeProperty("disabled");passwordInput.removeProperty("disabled");serverWideSession.login.autoLogin=true;}else{usernameInput.setProperty("disabled","disabled");passwordInput.setProperty("disabled","disabled");serverWideSession.login.autoLogin=false;}
sessionManager.saveServerWideSession();}},id:"travobotto-auto-login-checkbox",type:"checkbox"}).inject(autoLoginDiv);if(serverWideSession.login.autoLogin===true){autoLoginCheckbox.setProperty("checked","checked");}
var autoLoginLabel=new Element("label",{class:"travobotto-checkbox-label","for":"travobotto-auto-login-checkbox",html:_("Log in automatically")}).inject(autoLoginDiv);var autoLoginTable=new Element("div",{class:"travobotto-table",id:"travobotto-auto-login-table"}).inject(autoLoginDiv);var autoLoginTableRow=new Element("div",{class:"travobotto-table-row"}).inject(autoLoginTable);var autoLoginTableCell=new Element("div",{class:"travobotto-table-cell"}).inject(autoLoginTableRow);var usernameLabel=new Element("label",{class:"travobotto-auto-login-label","for":"travobotto-username",html:_("Username:")}).inject(autoLoginTableCell);var autoLoginTableCell=new Element("div",{class:"travobotto-table-cell"}).inject(autoLoginTableRow);var usernameInput=new Element("input",{events:{change:function(){serverWideSession.login.username=this.value;sessionManager.saveServerWideSession();}},id:"travobotto-username",type:"text",value:serverWideSession.login.username}).inject(autoLoginTableCell);if(serverWideSession.login.autoLogin===false){usernameInput.setProperty("disabled","disabled");}
var autoLoginTableRow=new Element("div",{class:"travobotto-table-row"}).inject(autoLoginTable);var autoLoginTableCell=new Element("div",{class:"travobotto-table-cell"}).inject(autoLoginTableRow);var passwordLabel=new Element("label",{class:"travobotto-auto-login-label","for":"travobotto-password",html:_("Password:")}).inject(autoLoginTableCell);var autoLoginTableCell=new Element("div",{class:"travobotto-table-cell"}).inject(autoLoginTableRow);var passwordInput=new Element("input",{events:{change:function(){serverWideSession.login.password=this.value;sessionManager.saveServerWideSession();}},id:"travobotto-password",type:"password",value:serverWideSession.login.password}).inject(autoLoginTableCell);if(serverWideSession.login.autoLogin===false){passwordInput.setProperty("disabled","disabled");}
var toggleUiDiv=new Element("div",{class:"travobotto-content-box"}).inject(page);var toggleUiCheckbox=new Element("input",{events:{change:function(){if(this.getProperty("checked")===true){toggleUiKeyInput.removeProperty("disabled");appWideSession.ui.toggle.isEnabled=true;}else{toggleUiKeyInput.setProperty("disabled","disabled");appWideSession.ui.toggle.isEnabled=false;}
sessionManager.saveAppWideSession();}},id:"travobotto-toggle-ui-checkbox",type:"checkbox"}).inject(toggleUiDiv);var toggleUiLabel=new Element("label",{"for":"travobotto-toggle-ui-checkbox",html:_("Toggle interface by pressing")}).inject(toggleUiDiv);var toggleUiKeyInput=new Element("input",{disabled:"disabled",events:{keydown:function(event){if(event.code!==0&&event.key!==""){this.value=event.key;appWideSession.ui.toggle.key=event.key;appWideSession.ui.toggle.keyCode=event.code;}else{this.value=appWideSession.ui.toggle.key;}
sessionManager.saveAppWideSession();event.stop();this.blur();}},id:"travobotto-toggle-ui-key-input",maxlength:1,type:"text",value:appWideSession.ui.toggle.key}).inject(toggleUiDiv);if(appWideSession.ui.toggle.isEnabled===true){toggleUiCheckbox.setProperty("checked","checked");toggleUiKeyInput.removeProperty("disabled");}
var checkForUpdateDiv=new Element("div",{class:"travobotto-content-box"}).inject(page);var checkForUpdateCheckbox=new Element("input",{checked:"checked",disabled:"disabled",id:"travobotto-check-for-update-checkbox",type:"checkbox"}).inject(checkForUpdateDiv);var checkForUpdateLabel=new Element("label",{"for":"travobotto-check-for-update-checkbox",html:_("Check for a new version of Travobotto once a day")}).inject(checkForUpdateDiv);},buildTranslationPage:function(){var page=new Element("div",{class:"travobotto-page",id:"travobotto-translation-page"}).inject(this.pages);var message=new Element("div",{class:"travobotto-content-box",html:_("Help me translate Travobotto! Translate what you know and submit the form. Pay attention to punctuation. Use the terms Travian uses in-game.")}).inject(page);var targetLanguageTable=new Element("table").inject(page);var targetLanguageTableRow=new Element("tr").inject(targetLanguageTable);var targetLanguageTableRowCellLeft=new Element("td").inject(targetLanguageTableRow);var targetLanguageInputLabel=new Element("label",{"for":"travobotto-translation-language",html:_("What language do you translate into?")}).inject(targetLanguageTableRowCellLeft);var targetLanguageTableRowCellRight=new Element("td",{class:"travobotto-translation-big-right-cell"}).inject(targetLanguageTableRow);var targetLanguageInput=new Element("input",{id:"travobotto-translation-language",type:"text"}).inject(targetLanguageTableRowCellRight);var eMailAddressTable=new Element("table").inject(page);var eMailAddressTableRow=new Element("tr").inject(eMailAddressTable);var eMailAddressTableRowCellLeft=new Element("td").inject(eMailAddressTableRow);var eMailAddressInputLabel=new Element("label",{"for":"travobotto-translation-e-mail-address",html:_("Your e-mail address (optional):")}).inject(eMailAddressTableRowCellLeft);var eMailAddressTableRowCellRight=new Element("td",{class:"travobotto-translation-big-right-cell"}).inject(eMailAddressTableRow);var eMailAddressInput=new Element("input",{id:"travobotto-translation-e-mail-address",type:"text"}).inject(eMailAddressTableRowCellRight);var eMailAddressExplanationRow=new Element("tr").inject(eMailAddressTable);var eMailAddressExplanationRowCell=new Element("td",{colspan:2,html:"<small>"+_("So I can clarify any issues. Won't publish it.")+"</small>"}).inject(eMailAddressExplanationRow);var translationList=new Element("ul").inject(page);for(var phrase in translations){translationListItem=new Element("li",{class:"travobotto-content-box"}).inject(translationList);var translationPhrase=new Element("div",{class:"travobotto-translation-phrase",html:phrase}).inject(translationListItem);if(phrase[0]===" "||phrase[phrase.length]===" "){translationPhrase.addClass("travobotto-translation-phrase-whitespace");}
var translationProposal=new Element("textarea",{cols:20,class:"travobotto-translation-proposal",rows:1}).inject(translationListItem);}
translationSubmitButton=new Element("input",{events:{click:function(){var sender=$("travobotto-translation-e-mail-address").value;var compiledTranslation="Travobotto version: "+version+"\n"
+"Server:             "+location.hostname+"\n"
+"Selected language:  "+serverWideSession.language+"\n"
+"Translation for:    "+$("travobotto-translation-language").value+"\n\n"
+"----------------------------------------------------------------------\n\n";$$(".travobotto-translation-proposal").each(function(proposal){if(proposal.value!==""){compiledTranslation+="> "+proposal.getPrevious(".travobotto-translation-phrase").get("html")+"\n"
+proposal.value+"\n\n";}});compiledTranslation+="----------------------------------------------------------------------\n\n";GM_xmlhttpRequest({data:"data[Feedback][sender]="+sender+"&data[Feedback][message]="+compiledTranslation,headers:{"Content-Type":"application/x-www-form-urlencoded"},method:"POST",url:"http://travobotto.com/feedback"});this.switchToPage("travobotto-villages-page");var thankYouMessage=new Element("div",{class:"travobotto-content-box",id:"travobotto-translation-thank-you-message",html:"<strong>"+_("Thank you for your contribution!")+"</strong>"}).inject($("travobotto-navigation"),"after");window.scrollTo(window.getScroll().x,$("travobotto-outer-box").getPosition().y-20);function fadeMessage(){thankYouMessage.setStyle("display","none");}
setTimeout(fadeMessage,5000);}.bind(this)},id:"travobotto-translation-submit-button",type:"button",value:_("Submit translation")}).inject(page);},buildVillagesPage:function(){var page=new Element("div",{class:"travobotto-page",id:"travobotto-villages-page"}).inject(this.pages);var overviewTable=new Element("table",{id:"travobotto-resources-table"}).inject(page);var overviewTableHeadRow=new Element("tr").inject(overviewTable);var overviewTableHeadVillage=new Element("th",{class:"travobotto-resources-table-head-cell",colspan:2,html:_("Village")}).inject(overviewTableHeadRow);new Element("img",{class:"travobotto-clickable-icon",events:{click:function(){tasksManager.addTask({refreshVillagesOverview:{i:0}});tasksManager.executeTasks();}},height:16,id:"travobotto-resources-table-refresh-villages-icon",src:refreshIcon,title:_("Update villages data"),width:16}).inject(overviewTableHeadVillage);new Element("th",{html:_("Lumber")}).inject(overviewTableHeadRow);new Element("th",{html:_("Clay")}).inject(overviewTableHeadRow);new Element("th",{html:_("Iron")}).inject(overviewTableHeadRow);new Element("th",{html:_("Crop")}).inject(overviewTableHeadRow);new Element("th",{html:_("Consumption")}).inject(overviewTableHeadRow);var overviewTableHeadMerchants=new Element("th",{class:"travobotto-resources-table-head-cell",html:_("Merchants")}).inject(overviewTableHeadRow);new Element("img",{class:"travobotto-clickable-icon",events:{click:function(){location.pathname="/dorf3.php";}},height:16,id:"travobotto-resources-table-refresh-merchants-icon",src:refreshIcon,title:_("Update merchants data"),width:16}).inject(overviewTableHeadMerchants);function getCurrentLumberCount(village){var lumberCount=Math.floor(village.resources.lumber.count+village.production.lumber/3600*(new Date().getUnixTime()-village.resources.updated));if(lumberCount>village.resources.lumber.limit){lumberCount=village.resources.lumber.limit;}
return lumberCount;}
function getCurrentClayCount(village){var clayCount=Math.floor(village.resources.clay.count+village.production.clay/3600*(new Date().getUnixTime()-village.resources.updated));if(clayCount>village.resources.clay.limit){clayCount=village.resources.clay.limit;}
return clayCount;}
function getCurrentIronCount(village){var ironCount=Math.floor(village.resources.iron.count+village.production.iron/3600*(new Date().getUnixTime()-village.resources.updated));if(ironCount>village.resources.iron.limit){ironCount=village.resources.iron.limit;}
return ironCount;}
function getCurrentCropCount(village){var cropCount=Math.floor(village.resources.crop.count+village.production.crop/3600*(new Date().getUnixTime()-village.resources.updated));if(cropCount>village.resources.crop.limit){cropCount=village.resources.crop.limit;}else if(cropCount<0){cropCount=0;}
return cropCount;}
var lumberTotalCount=0;var clayTotalCount=0;var ironTotalCount=0;var cropTotalCount=0;var cropConsumptionTotalCount=0;var lumberTotalLimit=0;var clayTotalLimit=0;var ironTotalLimit=0;var cropTotalLimit=0;var cropConsumptionTotalLimit=0;session.villages.each(function(village,i){function getLumberFillState(){if(village.resources.updated===0){return 0;}
if(getCurrentLumberCount(village)>0){var space=village.resources.lumber.limit-getCurrentLumberCount(village);var minutesNeededToFillSpace=space/village.production.lumber*60;if(minutesNeededToFillSpace<=60){return 2;}else if(minutesNeededToFillSpace<=180){return 1}
return 0;}
return 2;}
function getClayFillState(){if(village.resources.updated===0){return 0;}
if(getCurrentClayCount(village)>0){var space=village.resources.clay.limit-getCurrentClayCount(village);var minutesNeededToFillSpace=space/village.production.clay*60;if(minutesNeededToFillSpace<=60){return 2;}else if(minutesNeededToFillSpace<=180){return 1}
return 0;}
return 2;}
function getIronFillState(){if(village.resources.updated===0){return 0;}
if(getCurrentIronCount(village)>0){var space=village.resources.iron.limit-getCurrentIronCount(village);var minutesNeededToFillSpace=space/village.production.iron*60;if(minutesNeededToFillSpace<=60){return 2;}else if(minutesNeededToFillSpace<=180){return 1}
return 0;}
return 2;}
function getCropFillState(){if(village.resources.updated===0){return 0;}
if(getCurrentCropCount(village)>0){var space=village.resources.crop.limit-getCurrentCropCount(village);var minutesNeededToFillSpace=space/village.production.crop*60;if(minutesNeededToFillSpace<=60){return 2;}else if(minutesNeededToFillSpace<=180){return 1}
return 0;}
return 2;}
function getCurrentLumberPercentage(){if(getCurrentLumberCount(village)>0){return getCurrentLumberCount(village)/village.resources.lumber.limit*100;}
return 0;}
function getCurrentClayPercentage(){if(getCurrentClayCount(village)>0){return getCurrentClayCount(village)/village.resources.clay.limit*100;}
return 0;}
function getCurrentIronPercentage(){if(getCurrentIronCount(village)>0){return getCurrentIronCount(village)/village.resources.iron.limit*100;}
return 0;}
function getCurrentCropPercentage(){if(getCurrentCropCount(village)>0){return getCurrentCropCount(village)/village.resources.crop.limit*100;}
return 0;}
function getCropConsumptionPercentage(){if(village.consumption.crop.count>0){var cropConsumptionPercentage=village.consumption.crop.count/village.consumption.crop.limit*100;if(cropConsumptionPercentage>100){return 100;}
return cropConsumptionPercentage;}
return 0;}
var overviewTableBodyRow=new Element("tr",{class:"travobotto-resources-table-row"}).inject(overviewTable);var villageNameCell=new Element("td").inject(overviewTableBodyRow);var villageLink=new Element("a",{class:"travobotto-village-link",events:{click:function(){if(village.id===0){location.href=location.href;}else{location.search="newdid="+village.id;}}},html:village.name}).inject(villageNameCell);var villageInfoCell=new Element("td").inject(overviewTableBodyRow);var outdatedDataWarning=new Element("img",{class:"travobotto-resource-info-icon travobotto-outdated-data-warning",events:{click:function(){if(village.id===0){location.href=location.href;}else{location.search="newdid="+village.id;}}},height:16,src:outdatedDataIcon,width:16}).setStyle("display","none").inject(villageInfoCell);if(getLumberFillState()===0){var lumberCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell",html:'<div class="travobotto-td-bar" style="width: '+getCurrentLumberPercentage()+'%"><div class="travobotto-td-bar-content">'+getCurrentLumberCount(village)+"/"+village.resources.lumber.limit+"</div></div>"}).inject(overviewTableBodyRow);}else if(getLumberFillState()===1){var lumberCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-warning",html:'<div class="travobotto-td-bar travobotto-td-bar-warning" style="width: '+getCurrentLumberPercentage()+'%"><div class="travobotto-td-bar-content">'+getCurrentLumberCount(village)+"/"+village.resources.lumber.limit+"</div></div>"}).inject(overviewTableBodyRow);}else{var lumberCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-danger",html:'<div class="travobotto-td-bar travobotto-td-bar-danger" style="width: '+getCurrentLumberPercentage()+'%"><div class="travobotto-td-bar-content">'+getCurrentLumberCount(village)+"/"+village.resources.lumber.limit+"</div></div>"}).inject(overviewTableBodyRow);}
if(getClayFillState()===0){var clayCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell",html:'<div class="travobotto-td-bar" style="width: '+getCurrentClayPercentage()+'%"><div class="travobotto-td-bar-content">'+getCurrentClayCount(village)+"/"+village.resources.clay.limit+"</div></div>"}).inject(overviewTableBodyRow);}else if(getClayFillState()===1){var clayCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-warning",html:'<div class="travobotto-td-bar travobotto-td-bar-warning" style="width: '+getCurrentClayPercentage()+'%"><div class="travobotto-td-bar-content">'+getCurrentClayCount(village)+"/"+village.resources.clay.limit+"</div></div>"}).inject(overviewTableBodyRow);}else{var clayCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-danger",html:'<div class="travobotto-td-bar travobotto-td-bar-danger" style="width: '+getCurrentClayPercentage()+'%"><div class="travobotto-td-bar-content">'+getCurrentClayCount(village)+"/"+village.resources.clay.limit+"</div></div>"}).inject(overviewTableBodyRow);}
if(getIronFillState()===0){var ironCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell",html:'<div class="travobotto-td-bar" style="width: '+getCurrentIronPercentage()+'%"><div class="travobotto-td-bar-content">'+getCurrentIronCount(village)+"/"+village.resources.iron.limit+"</div></div>"}).inject(overviewTableBodyRow);}else if(getIronFillState()===1){var ironCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-warning",html:'<div class="travobotto-td-bar travobotto-td-bar-warning" style="width: '+getCurrentIronPercentage()+'%"><div class="travobotto-td-bar-content">'+getCurrentIronCount(village)+"/"+village.resources.iron.limit+"</div></div>"}).inject(overviewTableBodyRow);}else{var ironCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-danger",html:'<div class="travobotto-td-bar travobotto-td-bar-danger" style="width: '+getCurrentIronPercentage()+'%"><div class="travobotto-td-bar-content">'+getCurrentIronCount(village)+"/"+village.resources.iron.limit+"</div></div>"}).inject(overviewTableBodyRow);}
if(getCropFillState()===0){var cropCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell",html:'<div class="travobotto-td-bar" style="width: '+getCurrentCropPercentage()+'%"><div class="travobotto-td-bar-content">'+getCurrentCropCount(village)+"/"+village.resources.crop.limit+"</div></div>"}).inject(overviewTableBodyRow);}else if(getCropFillState()===1){var cropCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-warning",html:'<div class="travobotto-td-bar travobotto-td-bar-warning" style="width: '+getCurrentCropPercentage()+'%"><div class="travobotto-td-bar-content">'+getCurrentCropCount(village)+"/"+village.resources.crop.limit+"</div></div>"}).inject(overviewTableBodyRow);}else{var cropCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-danger",html:'<div class="travobotto-td-bar travobotto-td-bar-danger" style="width: '+getCurrentCropPercentage()+'%"><div class="travobotto-td-bar-content">'+getCurrentCropCount(village)+"/"+village.resources.crop.limit+"</div></div>"}).inject(overviewTableBodyRow);}
var warningPercentage=80;var dangerPercentage=95;var cropConsumptionPercentage=getCropConsumptionPercentage();if(cropConsumptionPercentage<warningPercentage){new Element("td",{class:"travobotto-td travobotto-resource-cell",html:'<div class="travobotto-td-bar" style="width: '+cropConsumptionPercentage+'%"><div class="travobotto-td-bar-content">'+village.consumption.crop.count+"/"+village.consumption.crop.limit+"</div></div>"}).inject(overviewTableBodyRow);}else if(cropConsumptionPercentage<dangerPercentage){new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-warning",html:'<div class="travobotto-td-bar travobotto-td-bar-warning" style="width: '+cropConsumptionPercentage+'%"><div class="travobotto-td-bar-content">'+village.consumption.crop.count+"/"+village.consumption.crop.limit+"</div></div>"}).inject(overviewTableBodyRow);}else{new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-danger",html:'<div class="travobotto-td-bar travobotto-td-bar-danger" style="width: '+cropConsumptionPercentage+'%"><div class="travobotto-td-bar-content">'+village.consumption.crop.count+"/"+village.consumption.crop.limit+"</div></div>"}).inject(overviewTableBodyRow);}
lumberTotalCount+=getCurrentLumberCount(village);clayTotalCount+=getCurrentClayCount(village);ironTotalCount+=getCurrentIronCount(village);cropTotalCount+=getCurrentCropCount(village);cropConsumptionTotalCount+=village.consumption.crop.count;lumberTotalLimit+=village.resources.lumber.limit;clayTotalLimit+=village.resources.clay.limit;ironTotalLimit+=village.resources.iron.limit;cropTotalLimit+=village.resources.crop.limit;cropConsumptionTotalLimit+=village.consumption.crop.limit;function refreshLumberCount(){var currentLumberCount=getCurrentLumberCount(village);if(currentLumberCount<=village.resources.lumber.limit){lumberCountCell.getElement(".travobotto-td-bar").setStyle("width",getCurrentLumberPercentage()+"%");lumberCountCell.getElement(".travobotto-td-bar-content").set("html",currentLumberCount+"/"+village.resources.lumber.limit);if(getLumberFillState()===1){lumberCountCell.addClass("travobotto-td-warning");lumberCountCell.getElement(".travobotto-td-bar").addClass("travobotto-td-bar-warning");}else if(getLumberFillState()===2){lumberCountCell.removeClass("travobotto-td-warning");lumberCountCell.getElement(".travobotto-td-bar").removeClass("travobotto-td-bar-warning");lumberCountCell.addClass("travobotto-td-danger");lumberCountCell.getElement(".travobotto-td-bar").addClass("travobotto-td-bar-danger");}
refreshLumberTotalCount();}}
function refreshClayCount(){var currentClayCount=getCurrentClayCount(village);if(currentClayCount<=village.resources.clay.limit){clayCountCell.getElement(".travobotto-td-bar").setStyle("width",getCurrentClayPercentage()+"%");clayCountCell.getElement(".travobotto-td-bar-content").set("html",currentClayCount+"/"+village.resources.clay.limit);if(getClayFillState()===1){clayCountCell.addClass("travobotto-td-warning");clayCountCell.getElement(".travobotto-td-bar").addClass("travobotto-td-bar-warning");}else if(getClayFillState()===2){clayCountCell.removeClass("travobotto-td-warning");clayCountCell.getElement(".travobotto-td-bar").removeClass("travobotto-td-bar-warning");clayCountCell.addClass("travobotto-td-danger");clayCountCell.getElement(".travobotto-td-bar").addClass("travobotto-td-bar-danger");}
refreshClayTotalCount();}}
function refreshIronCount(){var currentIronCount=getCurrentIronCount(village);if(currentIronCount<=village.resources.iron.limit){ironCountCell.getElement(".travobotto-td-bar").setStyle("width",getCurrentIronPercentage()+"%");ironCountCell.getElement(".travobotto-td-bar-content").set("html",currentIronCount+"/"+village.resources.iron.limit);if(getIronFillState()===1){ironCountCell.addClass("travobotto-td-warning");ironCountCell.getElement(".travobotto-td-bar").addClass("travobotto-td-bar-warning");}else if(getIronFillState()===2){ironCountCell.removeClass("travobotto-td-warning");ironCountCell.getElement(".travobotto-td-bar").removeClass("travobotto-td-bar-warning");ironCountCell.addClass("travobotto-td-danger");ironCountCell.getElement(".travobotto-td-bar").addClass("travobotto-td-bar-danger");}
refreshIronTotalCount();}}
function refreshCropCount(){var currentCropCount=getCurrentCropCount(village);if(currentCropCount<=village.resources.crop.limit){cropCountCell.getElement(".travobotto-td-bar").setStyle("width",getCurrentCropPercentage()+"%");cropCountCell.getElement(".travobotto-td-bar-content").set("html",currentCropCount+"/"+village.resources.crop.limit);if(getCropFillState()===1){cropCountCell.addClass("travobotto-td-warning");cropCountCell.getElement(".travobotto-td-bar").addClass("travobotto-td-bar-warning");}else if(getCropFillState()===2){cropCountCell.removeClass("travobotto-td-warning");cropCountCell.getElement(".travobotto-td-bar").removeClass("travobotto-td-bar-warning");cropCountCell.addClass("travobotto-td-danger");cropCountCell.getElement(".travobotto-td-bar").addClass("travobotto-td-bar-danger");}
refreshCropTotalCount();}}
if(village.production.lumber!==0){refreshLumberCount.periodical(3600/village.production.lumber*1000);}
if(village.production.clay!==0){refreshClayCount.periodical(3600/village.production.clay*1000);}
if(village.production.iron!==0){refreshIronCount.periodical(3600/village.production.iron*1000);}
if(village.production.crop!==0){refreshCropCount.periodical(Math.abs(3600/village.production.crop*1000));}
function warnOfOutdatedResourceData(){if(village.resources.updated>0&&new Date().getUnixTime()-village.resources.updated>=1200){var minutesSinceLastRefresh=Math.floor((new Date().getUnixTime()-village.resources.updated)/60);if(minutesSinceLastRefresh<=60){var timeAgoInWords=minutesSinceLastRefresh+_(" minutes");}else if(minutesSinceLastRefresh<=1440){var hoursSinceLastRefresh=Math.floor((new Date().getUnixTime()-village.resources.updated)/3600);if(hoursSinceLastRefresh===1){var timeAgoInWords=hoursSinceLastRefresh+_(" hour");}else{var timeAgoInWords=hoursSinceLastRefresh+_(" hours");}}else{var daysSinceLastRefresh=Math.floor((new Date().getUnixTime()-village.resources.updated)/3600/24);if(daysSinceLastRefresh===1){var timeAgoInWords=daysSinceLastRefresh+_(" day");}else{var timeAgoInWords=daysSinceLastRefresh+_(" days");}}
outdatedDataWarning.setProperty("title",_("Data possibly outdated. Last update was over %s ago. Click to update.").replace("%s",timeAgoInWords));outdatedDataWarning.setStyle("display","inline");}}
function warnOfMissingResourceData(){if(village.resources.updated===0){var missingDataWarning=new Element("img",{class:"travobotto-resource-info-icon travobotto-missing-data-warning",events:{click:function(){tasksManager.addTask({gatherDataOnNewVillages:true});location.pathname="/dorf3.php";}},height:16,src:informationIcon,title:_("No data gathered yet. Click to gather data."),width:16}).inject(villageInfoCell);}}
warnOfOutdatedResourceData();warnOfMissingResourceData();if(village.production.crop!==0){warnOfOutdatedResourceData.periodical(60000);}
function getMerchantsPercentage(){if(village.merchants.available>0){return village.merchants.available/village.merchants.total*100;}
return 0;}
var merchantsPercentage=getMerchantsPercentage();if(village.merchants.available>0||(village.merchants.available===0&&village.merchants.total===0)){new Element("td",{class:"travobotto-td",html:'<div class="travobotto-td-bar" style="width: '+merchantsPercentage+'%"><div class="travobotto-td-bar-content">'+village.merchants.available+"/"+village.merchants.total+"</div></div>"}).inject(overviewTableBodyRow);}else{new Element("td",{class:"travobotto-td travobotto-td-danger",html:'<div class="travobotto-td-bar travobotto-td-bar-danger" style="width: 0%"><div class="travobotto-td-bar-content">'+village.merchants.available+"/"+village.merchants.total+"</div></div>"}).inject(overviewTableBodyRow);}});var overviewTableFootRow=new Element("tr",{class:"travobotto-resources-table-row"}).inject(overviewTable);if(session.villages.length===1){overviewTableFootRow.setStyle("display","none");}
new Element("td",{colspan:2,html:_("Totals")}).inject(overviewTableFootRow);var lumberTotalPercentage=lumberTotalCount/lumberTotalLimit*100;var clayTotalPercentage=clayTotalCount/clayTotalLimit*100;var ironTotalPercentage=ironTotalCount/ironTotalLimit*100;var cropTotalPercentage=cropTotalCount/cropTotalLimit*100;var cropConsumptionTotalPercentage=cropConsumptionTotalCount/cropConsumptionTotalLimit*100;if(cropConsumptionTotalPercentage>100){cropConsumptionTotalPercentage=100;}
function getLumberTotalFillState(){var totalSpace=0;var totalProduction=0;var minutesNeededToFillTotalSpace=0;session.villages.each(function(village){totalSpace+=village.resources.lumber.limit-getCurrentLumberCount(village);totalProduction+=village.production.lumber;});minutesNeededToFillTotalSpace+=totalSpace/totalProduction*60;if(minutesNeededToFillTotalSpace<=60){return 2;}else if(minutesNeededToFillTotalSpace<=180){return 1}
return 0;}
function getClayTotalFillState(){var totalSpace=0;var totalProduction=0;var minutesNeededToFillTotalSpace=0;session.villages.each(function(village){totalSpace+=village.resources.clay.limit-getCurrentClayCount(village);totalProduction+=village.production.clay;});minutesNeededToFillTotalSpace+=totalSpace/totalProduction*60;if(minutesNeededToFillTotalSpace<=60){return 2;}else if(minutesNeededToFillTotalSpace<=180){return 1}
return 0;}
function getIronTotalFillState(){var totalSpace=0;var totalProduction=0;var minutesNeededToFillTotalSpace=0;session.villages.each(function(village){totalSpace+=village.resources.iron.limit-getCurrentIronCount(village);totalProduction+=village.production.iron;});minutesNeededToFillTotalSpace+=totalSpace/totalProduction*60;if(minutesNeededToFillTotalSpace<=60){return 2;}else if(minutesNeededToFillTotalSpace<=180){return 1}
return 0;}
function getCropTotalFillState(){var totalSpace=0;var totalProduction=0;var minutesNeededToFillTotalSpace=0;session.villages.each(function(village){totalSpace+=village.resources.crop.limit-getCurrentCropCount(village);totalProduction+=village.production.crop;});minutesNeededToFillTotalSpace+=totalSpace/totalProduction*60;if(minutesNeededToFillTotalSpace<=60){return 2;}else if(minutesNeededToFillTotalSpace<=180){return 1}
return 0;}
if(getLumberTotalFillState()===0){var lumberTotalCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell",html:'<div class="travobotto-td-bar" style="width: '+lumberTotalPercentage+'%"><div class="travobotto-td-bar-content">'+lumberTotalCount+"/"+lumberTotalLimit+"</div></div>"}).inject(overviewTableFootRow);}else if(getLumberTotalFillState()===1){var lumberTotalCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-warning",html:'<div class="travobotto-td-bar travobotto-td-bar-warning" style="width: '+lumberTotalPercentage+'%"><div class="travobotto-td-bar-content">'+lumberTotalCount+"/"+lumberTotalLimit+"</div></div>"}).inject(overviewTableFootRow);}else{var lumberTotalCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-danger",html:'<div class="travobotto-td-bar travobotto-td-bar-danger" style="width: '+lumberTotalPercentage+'%"><div class="travobotto-td-bar-content">'+lumberTotalCount+"/"+lumberTotalLimit+"</div></div>"}).inject(overviewTableFootRow);}
if(getClayTotalFillState()===0){var clayTotalCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell",html:'<div class="travobotto-td-bar" style="width: '+clayTotalPercentage+'%"><div class="travobotto-td-bar-content">'+clayTotalCount+"/"+clayTotalLimit+"</div></div>"}).inject(overviewTableFootRow);}else if(getClayTotalFillState()===1){var clayTotalCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-warning",html:'<div class="travobotto-td-bar travobotto-td-bar-warning" style="width: '+clayTotalPercentage+'%"><div class="travobotto-td-bar-content">'+clayTotalCount+"/"+clayTotalLimit+"</div></div>"}).inject(overviewTableFootRow);}else{var clayTotalCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-danger",html:'<div class="travobotto-td-bar travobotto-td-bar-danger" style="width: '+clayTotalPercentage+'%"><div class="travobotto-td-bar-content">'+clayTotalCount+"/"+clayTotalLimit+"</div></div>"}).inject(overviewTableFootRow);}
if(getIronTotalFillState()===0){var ironTotalCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell",html:'<div class="travobotto-td-bar" style="width: '+ironTotalPercentage+'%"><div class="travobotto-td-bar-content">'+ironTotalCount+"/"+ironTotalLimit+"</div></div>"}).inject(overviewTableFootRow);}else if(getIronTotalFillState()===1){var ironTotalCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-warning",html:'<div class="travobotto-td-bar travobotto-td-bar-warning" style="width: '+ironTotalPercentage+'%"><div class="travobotto-td-bar-content">'+ironTotalCount+"/"+ironTotalLimit+"</div></div>"}).inject(overviewTableFootRow);}else{var ironTotalCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-danger",html:'<div class="travobotto-td-bar travobotto-td-bar-danger" style="width: '+ironTotalPercentage+'%"><div class="travobotto-td-bar-content">'+ironTotalCount+"/"+ironTotalLimit+"</div></div>"}).inject(overviewTableFootRow);}
if(getCropTotalFillState()===0){var cropTotalCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell",html:'<div class="travobotto-td-bar" style="width: '+cropTotalPercentage+'%"><div class="travobotto-td-bar-content">'+cropTotalCount+"/"+cropTotalLimit+"</div></div>"}).inject(overviewTableFootRow);}else if(getCropTotalFillState()===1){var cropTotalCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-warning",html:'<div class="travobotto-td-bar travobotto-td-bar-warning" style="width: '+cropTotalPercentage+'%"><div class="travobotto-td-bar-content">'+cropTotalCount+"/"+cropTotalLimit+"</div></div>"}).inject(overviewTableFootRow);}else{var cropTotalCountCell=new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-danger",html:'<div class="travobotto-td-bar travobotto-td-bar-danger" style="width: '+cropTotalPercentage+'%"><div class="travobotto-td-bar-content">'+cropTotalCount+"/"+cropTotalLimit+"</div></div>"}).inject(overviewTableFootRow);}
var warningPercentage=80;var dangerPercentage=95;if(cropConsumptionTotalPercentage<warningPercentage){new Element("td",{class:"travobotto-td travobotto-resource-cell",html:'<div class="travobotto-td-bar" style="width: '+cropConsumptionTotalPercentage+'%"><div class="travobotto-td-bar-content">'+cropConsumptionTotalCount+"/"+cropConsumptionTotalLimit+"</div></div>"}).inject(overviewTableFootRow);}else if(cropConsumptionTotalPercentage<dangerPercentage){new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-warning",html:'<div class="travobotto-td-bar travobotto-td-bar-warning" style="width: '+cropConsumptionTotalPercentage+'%"><div class="travobotto-td-bar-content">'+cropConsumptionTotalCount+"/"+cropConsumptionTotalLimit+"</div></div>"}).inject(overviewTableFootRow);}else{new Element("td",{class:"travobotto-td travobotto-resource-cell travobotto-td-danger",html:'<div class="travobotto-td-bar travobotto-td-bar-danger" style="width: '+cropConsumptionTotalPercentage+'%"><div class="travobotto-td-bar-content">'+cropConsumptionTotalCount+"/"+cropConsumptionTotalLimit+"</div></div>"}).inject(overviewTableFootRow);}
new Element("td").inject(overviewTableFootRow);function getCurrentLumberTotalCount(){var lumberTotalCount=0;session.villages.each(function(village){lumberTotalCount+=getCurrentLumberCount(village);});return lumberTotalCount;}
function getCurrentClayTotalCount(){var clayTotalCount=0;session.villages.each(function(village){clayTotalCount+=getCurrentClayCount(village);});return clayTotalCount;}
function getCurrentIronTotalCount(){var ironTotalCount=0;session.villages.each(function(village){ironTotalCount+=getCurrentIronCount(village);});return ironTotalCount;}
function getCurrentCropTotalCount(){var cropTotalCount=0;session.villages.each(function(village){cropTotalCount+=getCurrentCropCount(village);});return cropTotalCount;}
function refreshLumberTotalCount(){var lumberTotalCount=getCurrentLumberTotalCount();lumberTotalCountCell.getElement(".travobotto-td-bar-content").set("html",lumberTotalCount+"/"+lumberTotalLimit);lumberTotalCountCell.getElement(".travobotto-td-bar").setStyle("width",lumberTotalCount/lumberTotalLimit*100+"%");}
function refreshClayTotalCount(){var clayTotalCount=getCurrentClayTotalCount();clayTotalCountCell.getElement(".travobotto-td-bar-content").set("html",clayTotalCount+"/"+clayTotalLimit);clayTotalCountCell.getElement(".travobotto-td-bar").setStyle("width",clayTotalCount/clayTotalLimit*100+"%");}
function refreshIronTotalCount(){var ironTotalCount=getCurrentIronTotalCount();ironTotalCountCell.getElement(".travobotto-td-bar-content").set("html",ironTotalCount+"/"+ironTotalLimit);ironTotalCountCell.getElement(".travobotto-td-bar").setStyle("width",ironTotalCount/ironTotalLimit*100+"%");}
function refreshCropTotalCount(){var cropTotalCount=getCurrentCropTotalCount();cropTotalCountCell.getElement(".travobotto-td-bar-content").set("html",cropTotalCount+"/"+cropTotalLimit);cropTotalCountCell.getElement(".travobotto-td-bar").setStyle("width",cropTotalCount/cropTotalLimit*100+"%");}
var buildingsQueueTable=new Element("table",{id:"travobotto-buildings-queue-table"});var buildingsQueueTableHeadRow=new Element("tr").inject(buildingsQueueTable);new Element("th",{html:_("Village")}).inject(buildingsQueueTableHeadRow);new Element("th",{html:_("Building")}).inject(buildingsQueueTableHeadRow);new Element("th",{html:_("Time left")}).inject(buildingsQueueTableHeadRow);new Element("th",{html:_("Completed")}).inject(buildingsQueueTableHeadRow);session.villages.each(function(village){village.buildingsQueue.queue.each(function(building,i){var row=new Element("tr").inject(buildingsQueueTable);var villageNameCell=new Element("td",{html:village.name}).inject(row);var buildingNameCell=new Element("td",{html:building.name}).inject(row);var timeLeftCell=new Element("td",{html:new Date().getTimeLeft(building.completed)}).inject(row);var completedCell=new Element("td",{html:new Date().getCompletionTime(building.completed)}).inject(row);var refreshTimeLeft=function(){var timeLeft=new Date().getTimeLeft(building.completed);timeLeftCell.set("html",timeLeft);if(timeLeft==="0:00:00"){$clear(timer);row.destroy();village.buildingsQueue.queue.splice(i,1);sessionManager.saveSession();refreshIdleVillages();}}
var timer=refreshTimeLeft.periodical(1000);});});buildingsQueueTable.inject(page);var idleVillagesBox=new Element("div",{class:"travobotto-content-box",html:"<strong>"+_("Idle villages:")+"</strong>"}).inject(page);idleVillagesList=new Element("span").inject(idleVillagesBox);function refreshIdleVillages(){var idleVillages=[];session.villages.each(function(village){if(village.buildingsQueue.queue.length===0){idleVillages.include(village);}});if(idleVillages.length===0){idleVillagesList.set("html"," <em>"+_("none")+"</em>");}else{var isFirstIdleVillage=true;idleVillages.each(function(village){if(isFirstIdleVillage===true){idleVillagesList.set("html"," "+village.name);}else{idleVillagesList.set("html",idleVillagesList.get("html")+", "+village.name);}
isFirstIdleVillage=false;});}
if(idleVillages.length===session.villages.length){buildingsQueueTable.destroy();}}
refreshIdleVillages();},hide:function(){var popUp=$("travobotto-pop-up");if(popUp!==null){popUp.setStyle("display","none");}
$("travobotto-outer-box").setStyle("display","none");$("travobotto-maximize-button").setStyle("display","inline");session.ui.isVisible=false;sessionManager.saveSession();},loadStylesheet:function(){if(typeof(inlineCss)==="undefined"){var stylesheet=new Element("link",{href:baseUrl+"css/style.css",rel:"stylesheet",type:"text/css"}).inject(document.head);if($(document.body).getStyle("direction")==="rtl"){var stylesheet=new Element("link",{href:baseUrl+"css/style_rtl.css",rel:"stylesheet",type:"text/css"}).inject(document.head);}}else{GM_addStyle(inlineCss);if($(document.body).getStyle("direction")==="rtl"){GM_addStyle(inlineCssRtl);}}},show:function(){var popUp=$("travobotto-pop-up");if(popUp!==null){popUp.setStyle("display","block");}
$("travobotto-outer-box").setStyle("display","block");$("travobotto-maximize-button").setStyle("display","none");session.ui.isVisible=true;sessionManager.saveSession();},switchToPage:function(pageName){var page=$(pageName);if(page===null){switch(pageName){case"travobotto-villages-page":this.buildVillagesPage();this.switchToPage(pageName);return;case"travobotto-preferences-page":this.buildPreferencesPage();this.switchToPage(pageName);return;case"travobotto-translation-page":this.buildTranslationPage();this.switchToPage(pageName);return;}}
$("travobotto-pages").getElements(".travobotto-page").setStyle("display","none");page.setStyle("display","block");session.ui.page=pageName;sessionManager.saveSession()}});var Village=function(name,id){this.buildingsQueue={queue:[],updated:0}
this.consumption={crop:{count:0,limit:0},updated:0}
this.coordinates={x:0,y:0,updated:0}
this.id=id;this.merchants={available:0,total:0,capacity:0,updated:0}
this.name=name;this.population={count:0,updated:0}
this.production={lumber:0,clay:0,iron:0,crop:0,updated:0}
this.resources={lumber:{count:0,limit:0},clay:{count:0,limit:0},iron:{count:0,limit:0},crop:{count:0,limit:0},updated:0}}
var inlineCss=".travobotto table{-moz-border-radius:4px;background-color:#E9E9E9;color:#222;margin:0 0 1em;}.travobotto ul{margin:0;padding:0;}.travobotto li{list-style:none;}.travobotto :focus{outline:0;}.travobotto-checkbox-label{margin:0 0 0 .2em;}.travobotto-content-box{-moz-border-radius:4px;background-color:#E9E9E9;color:#222;margin:0 0 1em;padding:.2em;}.travobotto-table{display:table;}.travobotto-table-row{display:table-row;}.travobotto-table-cell{display:table-cell;}.travobotto input[type=button]{-moz-border-radius:3px;-moz-box-shadow:0 0 1px #004b64;background-color:#006e93;border:none;color:#002632;cursor:pointer;text-shadow:0 0 11px #00B8F6;padding:2px 14px;}.travobotto input[type=button]:hover{background-color:#00769d;}.travobotto input[type=button]:active:hover{padding:3px 13px 1px 15px;}.travobotto input[type=checkbox]{vertical-align:sub;}.travobotto input[type=password],.travobotto input[type=text]{-moz-border-radius:3px;background-color:#F5F5F5;border:1px dashed #aaa;font-family:Verdana, Arial, Helvetica, sans-serif;padding-left:.15em;padding-right:.15em;width:100%;margin:.11em 0;}.travobotto textarea{-moz-border-radius:3px;background-color:#F5F5F5;border:1px dashed #aaa;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:13px;height:17px;margin:1px;padding:1px 2px;}#travobotto-maximize-button{-moz-border-radius:3px;-moz-box-shadow:0 0 6px #444;background-color:#222;cursor:pointer;display:none;opacity:0.93;position:fixed;right:0;top:0;z-index:900;margin:.5em .5em 0 0;padding:4px 9px;}#travobotto-outer-box{position:absolute;top:0;z-index:900;}#travobotto-inner-box{-moz-border-radius:7px;-moz-box-shadow:0 0 7px #CACACA;background:#222;opacity:0.93;padding:0 1em 1em;}#travobotto-drag-handle{-moz-border-radius:0 0 3px 3px;cursor:move;height:1em;}#travobotto-drag-handle:hover{background-color:#2e2e2e;}#travobotto-navigation{float:left;list-style-type:none;margin:0 0 1em;padding:0;}.travobotto-navigation-item{float:left;position:relative;padding:0 1em 0 0;}.travobotto-navigation-item:hover .travobotto-sub-navigation{display:block;}.travobotto-sub-navigation{-moz-border-radius:4px;background-color:#111;color:#555;display:none;list-style:none;position:absolute;z-index:901;padding:1em;}#travobotto-sittees-list{white-space:nowrap;padding:13px;}#travobotto-refresh-sittees-link{border-top:1px solid #282828;display:block;font-size:.85em;margin:.5em 0 0;padding:.3em 0 0;}#travobotto-update-icon{vertical-align:text-bottom;margin:0 2px 0 0;}#travobotto-update-button{padding:2px 18px;}#travobotto-update-button:hover{background-color:#007ea8;}#travobotto-update-button:active:hover{padding:3px 17px 1px 19px;}#travobotto-resources-table-refresh-merchants-icon,#travobotto-resources-table-refresh-villages-icon{vertical-align:bottom;}.travobotto-resources-table-row{line-height:1em;}.travobotto-resource-cell{width:20%;}.travobotto-td{-moz-border-radius:3px;background-color:#D7DEA0;}.travobotto-td-bar{-moz-border-radius:3px;background-color:#AAB841;color:#697609;padding:3px 0;}.travobotto-td-bar-content{font-family:'DejaVu Sans Mono', Verdana, Arial, Helvetica, sans-serif;margin:0 0 0 .9em;}.travobotto-td-warning{background-color:#decda0;}.travobotto-td-bar-warning{background-color:#F09A1A;color:#b0530e;}.travobotto-td-danger{background-color:#deafa0;}.travobotto-td-bar-danger{background-color:#D44F34;color:#972811;}.travobotto-resource-info-icon{vertical-align:text-bottom;}.travobotto-village-options-button{opacity:0.4;}.travobotto-village-options-button:hover{opacity:1;}#travobotto-footer{color:#555;font-size:.85em;margin:1em 0 0;}#travobotto-buildings-queue-table{-moz-border-radius:4px;background-color:#E9E9E9;color:#222;list-style-type:none;}#travobotto-language-selection-label{padding:0 5px 0 0;}#travobotto-auto-login-table{margin:0 0 0 3em;}.travobotto-auto-login-label{display:block;padding:0 1em 0 0;}#travobotto-toggle-ui-key-input{display:inline;margin-left:.5em;text-align:center;width:2em;}#travobotto-translation-page{width:540px;}.travobotto-translation-big-right-cell{width:100%;padding:0 9px 0 10px;}.travobotto-translation-phrase{font-style:italic;}.travobotto-translation-phrase-whitespace{white-space:pre;}.travobotto-translation-proposal{width:98.3%;}#travobotto-translation-submit-button{display:block;margin:0 auto;}.travobotto a,.travobotto-clickable-icon,.travobotto-village-options-button,.travobotto-outdated-data-warning,.travobotto-missing-data-warning{cursor:pointer;}.travobotto small,#travobotto-no-sittees-info{font-size:.85em;}.travobotto th,.travobotto label{font-weight:700;}#travobotto-minimize-button,#travobotto-ui-pin-button{float:right;}#travobotto-update-message,#travobotto-translation-thank-you-message,#travobotto-pages{clear:both;}#travobotto-update-message-left,#travobotto-language-selection-cell-left{width:100%;}.travobotto-resources-table-head-cell,.travobotto-village-link{white-space:nowrap;}";var inlineCssRtl="#travobotto-maximize-button{left:0;right:auto;margin:.5em 0 0 .5em;}#travobotto-minimize-button{float:left;}#travobotto-navigation{float:right;}.travobotto-navigation-item{float:right;padding:0 0 0 1em;}#travobotto-auto-login-table{margin:0 3em 0 0;}.travobotto-auto-login-label{padding:0 0 0 1em;}#travobotto-toggle-ui-key-input{margin-left:0;margin-right:.5em;}";var version=201002020;var isDeveloperVersion=false;var baseUrl="http://travobotto.com/versions/201002020/";var websiteUrl="http://travobotto.com/";var informationIcon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKcSURBVDjLpZPLa9RXHMU/d0ysZEwmMQqZiTaP0agoaKGJUiwIxU0hUjtUQaIuXHSVbRVc+R8ICj5WvrCldJquhVqalIbOohuZxjDVxDSP0RgzyST9zdzvvffrQkh8tBs9yy9fPhw45xhV5X1U8+Yhc3U0LcEdVxdOVq20OA0ooQjhpnfhzuDZTx6++m9edfDFlZGMtXKxI6HJnrZGGtauAWAhcgwVnnB/enkGo/25859l3wIcvpzP2EhuHNpWF9/dWs/UnKW4EOGDkqhbQyqxjsKzMgM/P1ymhlO5C4ezK4DeS/c7RdzQoa3x1PaWenJjJZwT9rQ1gSp/js1jYoZdyfX8M1/mp7uFaTR8mrt29FEMQILr62jQ1I5kA8OF59jIItVA78dJertTiBNs1ZKfLNG+MUHX1oaURtIHEAOw3p/Y197MWHEJEUGCxwfHj8MTZIcnsGKxzrIURYzPLnJgbxvG2hMrKdjItjbV11CYKeG8R7ygIdB3sBMFhkem0RAAQ3Fuka7UZtRHrasOqhYNilOwrkrwnhCU/ON5/q04vHV48ThxOCuoAbxnBQB+am65QnO8FqMxNCjBe14mpHhxBBGCWBLxD3iyWMaYMLUKsO7WYH6Stk1xCAGccmR/Ozs/bKJuXS39R/YgIjgROloSDA39Deit1SZWotsjD8pfp5ONqZ6uTfyWn+T7X0f59t5fqDhUA4ry0fYtjJcWeZQvTBu4/VqRuk9/l9Fy5cbnX+6Od26s58HjWWaflwkusKGxjm1bmhkvLXHvh1+WMbWncgPfZN+qcvex6xnUXkzvSiYP7EvTvH4toDxdqDD4+ygT+cKMMbH+3MCZ7H9uAaDnqytpVX8cDScJlRY0YIwpAjcNcuePgXP/P6Z30QuoP4J7WbYhuQAAAABJRU5ErkJggg%3D%3D";var outdatedDataIcon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAANLSURBVDjLVZBrTFN3GMZPlpgli/Gb8ZNftkRE42VsWYxuJsZFzZKZmPjBDYzhw7ZothgciMplRWe4WMGQrRNEwMJA24rSFjBLa8uhVDqGba1QaksrlFvphV44pxekz95TtdGT/M755/2/z/Oe92EAMCt9zAeEiLAS/xIfCvV3odqmN/cmIudtnVnuYdYRdSuj+bOpgA6R0QKfSfmtoViT0hPBN+hHlMfYqPl0gJ8oD1K/idicMfB1M2UR08m55GIf/E8Kl/+T7Y3VGAL4Y9SH25aFDMK5nnXDIsvjwrYqLmb5dYl0Y8Q6xtvOVESt5cHFocJlY+fe1cYnM7hnnUcX+xKSnnE0ysfRrnWjyzyL1kEd7MrDa7xX/mrxYa6DtDnMVBPz1WTzR47hlp1cnc6NbtMMenQeuLwRBCIx+CMrcMxE0PGPC61DHtzrFcPatScx0bzhKWlzMkEU31ZdK71vQ7PBAxlNE55QOIwXcwuI01kglgZuql2Q6J2olLE402a8mslAeOU3jelLFDbcHHBggiZzq2nEOA5/trbBR0aBuWHYNEUw2L2olj2D0CtosgbHb7DBoq6nqP3bCh+fQiixhiRdXBRVofuBAmO9pxB0ymG3tOOcxAShV9BkDY5WDwR/bDFB1GbGTCxFJmvwhqP4XXwdd5t/ht/eidUVFyZUBbgi6YHQK2iyBkcqFfoTDTpUdYxh0BnGPC3tjaageayEnUQJvxqJ+XqEpvrQLz2L7xu0EDRZgwMld0TfiB7i7C0jamQO+CmwUDINz8h1BBwKJLyXwdZ8hlRQAXPrQZTUiiFosgb7fpF8TowfqlChqIlFrWwSFrMeHm0ZkktS8K5CsNWfIj5dirC7H/0NhxPfFV/enzUQ+OIH8U+nazq4ry88QKH4ETQtBVim4OIvi8G9OPEa50la5QamBxsxXJdX+Z6B0Wg8YLPZoNWxry5UlmCarUdy8a/MdM6ZTyvkZb68+wz4hV6wV3b4Bqu2b8uI1Wr1RiLmdDqhVKmC+vovo3xgCsmQFoklymBJ/g73sRp7jtmRTjwu2yLPGEil0vXEJJEkttPvBQzVu/mhq7t4msTTJF7/Wy6vq9ga15ZvS2su5aa1pZ/ENec/HvofoDruXRuQqRYAAAAASUVORK5CYII%3D";var refreshIcon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGMSURBVDjLY/j//z8DJZiggtx9Sasyd8Yxk21Axo7YSymbow4QZUDJ8QyHoiNpB/IPJP/P3pPwP3177P+mQ5X/6/aV/o9cFrATrwHFxzIcCg+nnplzacr/TbdW/19/c8X/tTeW/l91bdH/5Vfn/y/ZkvPfb7rbHZwGFBxKnTn9fN//jTdX/W8+XPU/cX34/5iVQf8rtuf/L9mc/d9nqutuvC7I2Zv4AOjf/0D//o9fG3YIJh4wy+OS9xTnQ2699kyO7VacRAUi0L/wUPea5LTGtceW9FgA+ncNyekgfJEfZ9AcTyagfw+59ztcgolbVBsdMi7V/a+Xr/lfK0v1AV4XAP27O2tl0v/UJbH/rRtM/5tVGf6PmB74v/dE0//khdH/VVMUZ+I0AOjflxnLE/5PP9v7f8rprv8TT7X/7zvZ8r/nRON/kLhKssIZxXhZB7wusGu22Bk3N+x/1Mzg//qFWv+1s9X+q6cp/1dOUjigEIeqGWcgAv17AOjfS2RnJt08DWbNTNVVVMmNhDAANau2t3wToKQAAAAASUVORK5CYII%3D";var sessionManager=new SessionManager();var appWideSession=sessionManager.loadAppWideSession();var serverWideSession=sessionManager.loadServerWideSession();var tasksManager=new TasksManager();tasksManager.executeTasks(true);var player=new Player();if(player.isLoggedIn()===false){player.logIn();}else{var session=sessionManager.loadSession();if(serverWideSession.login.usernameSwitchedFrom!==undefined){session.sitter=serverWideSession.login.usernameSwitchedFrom;delete serverWideSession.login.usernameSwitchedFrom;}
serverWideSession.login.attempts=0;sessionManager.saveServerWideSession();var sessionUpdater=new SessionUpdater(session);sessionUpdater.updateSession();var updateChecker=new UpdateChecker();var updateIsAvailable=updateChecker.isUpdateAvailable();if(updateIsAvailable===true&&(new Date().getUnixTime()-appWideSession.updates.lastCheck>=3600*24*10||new Date().getUnixTime()-appWideSession.updates.availableSince>=3600*24*10)){location.href=websiteUrl+"versions/"+appWideSession.updates.latestVersion+"/js/travobotto.user.js";}else{var userInterface=new UserInterface();userInterface.create();tasksManager.executeTasks();sessionManager.saveSession();}}
GM_registerMenuCommand(_("Reset Travobotto"),function(){for each(var value in GM_listValues()){GM_deleteValue(value);}
location.href=location.href;});function log(message){unsafeWindow.console.log(message);}
function logError(error){if(isDeveloperVersion===true){if(unsafeWindow.console===undefined){alert(error);}else{log(error);}}}