// ==UserScript==
// @name        Travobotto
// @namespace   http://travobotto.com/
// @description Reduces the cognitive load for Travian players. (Updated 25 Feb 2010)
// @include     http://*.travian.*
//
// ==/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";}},getUnixTimeFromTimeLeft:function(timeLeft){var timeLeftRaw=timeLeft.split(":");var unixTime=new Date().getUnixTime()+timeLeftRaw[0].toInt()*3600+timeLeftRaw[1].toInt()*60+timeLeftRaw[2].toInt();return unixTime;}});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",showTroopMovements:true,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".asia":return"th";case".bg":return"bg";case".cl":return"es";case".cn":return"zh";case".co.id":return"id";case".co.il":return"he";case".com.ar":return"es";case".com.br":return"pt-br";case".com.eg":return"ar";case".com.hr":return"hr";case".com.mx":return"es";case".com.my":return"ms";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".hk":return"zh";case".hu":return"hu";case".ir":return"fa";case".it":return"it";case".jp":return"ja";case".lt":return"lt";case".ma":return"fr";case".net":return"es";case".nl":return"nl";case".pl":return"pl";case".pt":return"pt";case".ro":return"ro";case".ru":return"ru";case".se":return"sv";case".si":return"sl";case".sk":return"sk";case".tw":return"zh";}
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<201002250){appWideSession.version=201002250;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));}
if(serverWideSession.version<201002130){domain=location.hostname.split("travian").getLast();switch(domain){case".bg":case".cn":case".hk":serverWideSession.language=this.getDefaultLanguage();}
serverWideSession.version=201002130;GM_setValue(this.serverWideSessionFilename,JSON.encode(serverWideSession));}
if(serverWideSession.version<201002160){domain=location.hostname.split("travian").getLast();switch(domain){case".co.id":case".hu":case".pl":case".tw":serverWideSession.language=this.getDefaultLanguage();}
serverWideSession.version=201002160;GM_setValue(this.serverWideSessionFilename,JSON.encode(serverWideSession));}
if(serverWideSession.version<201002170){domain=location.hostname.split("travian").getLast();switch(domain){case".com.hr":serverWideSession.language=this.getDefaultLanguage();}
serverWideSession.version=201002170;GM_setValue(this.serverWideSessionFilename,JSON.encode(serverWideSession));}
if(serverWideSession.version<201002250){domain=location.hostname.split("travian").getLast();switch(domain){case".asia":case".co.il":case".com.my":case".jp":case".lt":case".se":case".sk":serverWideSession.language=this.getDefaultLanguage();}
serverWideSession.version=201002250;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;}
if(session.version<201002130){session.villages.each(function(village){village.troopMovements={incoming:[],outgoing:[]}});session.version=201002130;}
if(session.version<201002160){session.ui.showTroopMovements=true;session.version=201002160;}
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.updateTroopMovements();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);}}},updateTroopMovements:function(){var parseMovements=function(root){var movement=[];var again=true;while(again===true){var movementNameHtml=root.getElements("thead a")[1];if(movementNameHtml.getElement("p")!==null){var movementName=movementNameHtml.getElement("p").get("html");}else{var movementName=movementNameHtml.get("html");}
var timeLeftRaw=root.getElement(".in").getElement("span").get("html");var timeLeft=new Date().getUnixTimeFromTimeLeft(timeLeftRaw);movement.push([movementName,timeLeft]);root=root.getNext();if(root.get("tag")!=="table"){again=false;}}
return movement;}
if(location.pathname==="/build.php"){try{var build=$("build");if(build!==null&&build.hasClass("gid16")===true){var incoming=[];var outgoing=[];var headlines=build.getElements("h4");if(headlines.length>1){hasIncomingTroops=false;var table=headlines[0].getNext("table");if(table.getElement(".in")!==null&&table.getNext("h4").getNext("table").getElement("img.r4")!==null){incoming=parseMovements(table);hasIncomingTroops=true;}
if((headlines.length===2||headlines.length===3)&&hasIncomingTroops===false){var headlineStart=1;}else if(headlines.length>=3&&hasIncomingTroops===true){var headlineStart=2;}
if(headlineStart!==undefined){if(headlines[headlineStart].getNext("table").getElement(".in")!==null){outgoing=parseMovements(headlines[headlineStart].getNext("table"));}}}
this.currentVillage.troopMovements.incoming=incoming;this.currentVillage.troopMovements.outgoing=outgoing;}}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("#BADF8E","#6a923b");$("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{var movements=$("movements");if(movements!==null&&movements.getElements(".mov").length>0){location.pathname="/build.php?id=39";return;}
if(task.refreshVillagesOverview.i===undefined){task.refreshVillagesOverview.i=0;}
for(var n=task.refreshVillagesOverview.i;n<session.villages.length;n++){if(task.refreshVillagesOverview.onlyNewVillages===undefined||(task.refreshVillagesOverview.onlyNewVillages!==undefined&&session.villages[n].resources.updated===0)){task.refreshVillagesOverview.i+=1;location.pathname="/dorf1.php?newdid="+session.villages[n].id;return;}}
session.tasks.splice(i,1);sessionManager.saveSession();}}else if(task.goTo!==undefined){session.tasks.splice(0,1);sessionManager.saveSession();location.href=task.goTo;}});}}});var translations={" day":{"ar":" يوم","bg":" ден","cs":" den","da":" dag","de":" Tag","es":" día","fa":" روز","fr":" jour","he":" יום","hr":" dan","hu":" nap","id":" hari","it":" giorno","ja":"日","lt":" diena","ms":" hari","nl":" dag","pl":" dzień","pt":" dia","pt-br":" dia","ro":" zi","ru":" день","sk":" deň","sl":" dan","sv":" dag","th":" วัน","tr":" gün","zh":"日"}," days":{"ar":" أيام","bg":" дни","cs":" dny","da":" dage","de":" Tagen","es":" días","fa":" روزها","fr":" jours","he":" ימים","hr":" dani","hu":" napok","id":" hari","it":" giorni","ja":"日","lt":" dienos","ms":" hari-hari","nl":" dagen","pl":" dni","pt":" dias","pt-br":" dias","ro":" zile","ru":" дней","sk":" dni","sl":" dnevi","sv":" dagar","th":" วัน","tr":" günler","zh":"日"}," hour":{"ar":" ساعة","bg":" час","cs":" hodina","da":" time","de":" Stunde","es":" hora","fa":" ساعت","fr":" heure","he":" שעה","hr":" sat","hu":" óra","id":" jam","it":" oră","ja":"時","lt":" valanda","ms":" jam","nl":" uur","pl":" godzina","pt":" hora","pt-br":" hora","ro":" ora","ru":" часа","sk":" hodina","sl":" ura","sv":" timme","th":" ชั่วโมง","tr":" saat","zh":"小時"}," hours":{"ar":" ساعات","bg":" часове","cs":" hodiny","da":" timer","de":" Stunden","es":" horas","fa":" ساعتها","fr":" heures","he":" שעות","hr":" sati","hu":" órák","id":" jam","it":" ore","ja":"時","lt":" val.","ms":" setiap jam","nl":" uuren","pl":" godziny","pt":" horas","pt-br":" horas","ro":" ore","ru":" Часы","sk":" hodiny","sl":" ure","sv":" timmar","th":" ชั่วโมง","tr":" saatler","zh":"小時"}," minutes":{"ar":" دقيقة","bg":" минути","cs":" minuty","da":" minutter","de":" Minuten","es":" minutos","fa":" دقیقه","fr":" minutes","he":" דקות","hr":" minute","hu":" percek","id":" menit","it":" minuti","ja":"分","lt":" min.","ms":" setiap minit","nl":" minuten","pl":" minuty","pt":" minutos","pt-br":" minutos","ro":" minute","ru":" минуты","sk":" minúty","sl":" minute","sv":" minuter","th":" นาที","tr":" dakika","zh":"分鐘"},"A new version of Travobotto is available.":{"ar":"نسخة جديدة من البرنامج متوفرة الآن.","bg":"Налична е нова версия на Travobotto.","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.","he":"ניתן לעדכן לגירסה חדשה של טריובוטו.","hr":"Nova verzija Travobota je dostupna.","id":"Versi baru Travobotto telah tersedia.","it":"Una nuova versione è disponibile.","ja":"Travobotto の新しいバージョンがあります。","lt":"Išleista nauja Travobotto versija.","ms":"Versi baru Travobotto sudah ada.","nl":"Er is een nieuwe versie beschikbaar.","pl":"Nowa wersja jest dostępna.","pt":"Está disponível uma nova versão de Travobotto.","pt-br":"Uma nova versão do Tavobotto esta disponível.","ru":"Новая версия Travobotto доступна.","sk":"Nová verzia Travobotto je vydaná.","sl":"Nova različica Travobotto je na voljo.","sv":"En ny version av Travobotto är tillgänglig.","th":"มีรุ่นใหม่ของ Travobotto ออกแล้ว.","tr":"Travobottonun yeni versiyonuna erişebilirsiniz.","zh":"有新的Travobotto版本可用."},"Arrival":{"ar":"الوصول","bg":"Пристигане","cs":"Příjezd","da":"Ankomst","de":"Ankunft","es":"Llegada","fa":"زمان رسیدن","fr":"Arrivée","he":"הגעה","hr":"Dolazak","hu":"Érkezés","id":"Datang","it":"Arrivo","ja":"到着","lt":"Atvykimas","ms":"Ketibaan","nl":"Aankomst","pl":"Przybędą","pt":"Chegada","pt-br":"Chegada","ro":"Sosire","ru":"Прибытие","sk":"Príchod","sl":"Prihod","sv":"Ankomst","th":"มาถึง","tr":"Ulaşım","zh":"到達"},"Better translation:":{"ar":"ترجمة أفضل:","bg":"По-добър превод:","cs":"Lepší překlad:","de":"Bessere Übersetzung:","es":"Mejor traducción:","fa":"ترجمه بهتر:","fr":"Meilleure traduction:","he":"תרגום יותר טוב:","hr":"Bolji prijevod:","hu":"Jobb fordítás","id":"Terjemah yang baik:","ja":"より良い翻訳:","lt":"Geresnis vertimas:","ms":"Alih bahasa yang bagus.","pt":"Melhor tradução:","pt-br":"Melhor tradução:","sk":"Lepší preklad:","sv":"Bättre översättning:","th":"คำแปลที่ดีกว่า:","zh":"更好的翻譯："},"Building":{"ar":"بناء","bg":"Сграда","cs":"Stavění","da":"Bygning","de":"Gebäude","es":"Construyendo","fa":"ساختمان","fr":"En construction","he":"בבניה","hr":"Zgrada","hu":"Építkezés","id":"Membangun","it":"Costruzione","ja":"建設","lt":"Pastatas","ms":"Bangunan","nl":"Gebouw","pl":"Budowa","pt":"A construir","pt-br":"Construindo","ro":"Construire","ru":"Постройка","sk":"Stavanie","sl":"Zgradba","sv":"Byggnad","th":"สิ่งก่อสร้าง","tr":"Bina","zh":"建築物"},"Cancel":{"ar":"الغاء","bg":"Oтменям","cs":"Zrušit","de":"Abbrechen","es":"Cancelar","fa":"کنسل","fr":"Annuler","he":"ביטול","hr":"Odustani","hu":"Mégse","id":"Batal","ja":"キャンセル","lt":"Atšaukti","ms":"Padam","pl":"Anulowanie","pt":"Cancelar","pt-br":"Cancelar","sk":"Zrušiť","sv":"Avbryt","th":"ยกเลิก","zh":"取消"},"Check for a new version of Travobotto once a day":{"ar":"تحقق من وجود نسخة جديدة من Travobotto مرة في اليوم","bg":"Проверка за нова версия на Travobotto веднъж дневно","cs":"Kontroluj nové 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":"Vérifier une fois par jour si une nouvelle version de Travobotto est disponible","he":"לחץ לקבלה של גירסה חדשה של טריבוטו פעם ביום","hr":"Jednom dnevno provjeri da li postoji nova verzija Travobotta","id":"Cek versi baru Travobotto sekali per hari","it":"Cerca una nuova versione di Travobotto una volta al giorno","ja":"の新しいバージョンがあるかを毎日チェックする。","lt":"Tikrinti Travobotto atnaujinimus kasdien","ms":"Periksa versi baru Travobotto setiap hari","nl":"Checken voor een nieuwe versie elke dag","pt":"Verifica se há uma nova versão de Travobotto todos os dias","pt-br":"Verificar novas versões do Travobotto uma vez por dia","ru":"Проверять на наличие новой версии Travobotto один раз в день","sk":"Skontroluj nové verzie Travobotto raz za deň","sl":"Preveri za novo različico Travobotto enkrat na dan","sv":"Kolla om det finns en nyare version av Travobotto en gång om dagen","th":"ตรวจสอบรุ่นใหม่ของ Travabotto วันละครั้ง","zh":"每日檢查Travobotto新版本"},"Clay":{"ar":"الطين","bg":"Глина","cs":"Hlína","da":"Ler","de":"Lehm","es":"Barro","fa":"خشت","fr":"Terre","he":"טיט","hr":"Glina","hu":"Agyag","id":"Liat","it":"Argilla","ja":"粘土","lt":"Molis","ms":"Tanah liat","nl":"Klei","pl":"Glina","pt":"Barro","pt-br":"Barro","ro":"Lut","ru":"Глина","sk":"Hlina","sl":"Glina","sv":"Lera","th":"โคลน","tr":"Tuğla","zh":"泥"},"Completed":{"ar":"إنتهاء في","bg":"Завършен","cs":"Kompletní","da":"Færdig","de":"Fertiggestellt","es":"Completado","fa":"تمام شد","fr":"Terminé","he":"הושלם","hr":"Zavrseno","hu":"Elkészült","id":"Selesai","it":"Completo","ja":"完了","lt":"Užbaigta","ms":"Selesai","nl":"Klaar","pl":"Wykonano","pt":"Completo","pt-br":"Completado","ru":"Завершено","sk":"Kompletné","sl":"Dokončano","sv":"Färdig","th":"เสร็จสิ้น","zh":"完成"},"Consumption":{"ar":"الإستهلاك","bg":"Консумация","cs":"Spotřeba","da":"Forbrug","de":"Verbrauch","es":"Consumo","fa":"مصرف","fr":"Consommation","he":"צריכה","hr":"Potrošnja","hu":"Fogyasztás","id":"Konsumsi","it":"Consumo","ja":"消費","lt":"Suvartojimas","ms":"Penggunaan","nl":"Verbruik","pl":"Zużycie","pt":"Consumo","pt-br":"Consumo","ro":"Consum","ru":"Потребление","sk":"Spotreba","sl":"Poraba","sv":"Konsumtion","th":"การบริโภค","tr":"Tüketimi","zh":"消耗量"},"Crop":{"ar":"القمح","bg":"Жито","cs":"Obilí","da":"Korn","de":"Getreide","es":"Cereales","fa":"گندم","fr":"Céréales","he":"יבול","hr":"Hrana","hu":"Búza","id":"Gandum","it":"Grano","ja":"穀物","lt":"Grūdai","ms":"Tanaman","nl":"Graan","pl":"Zboże","pt":"Cereais","pt-br":"Cereal","ro":"Hrană","ru":"Зерно","sk":"Obilie","sl":"Žito","sv":"Vete","th":"ธัญพืช","tr":"Tahıl","zh":"糧"},"Current translation:":{"ar":"الترجمة الحالية:","bg":"Сегашен превод:","cs":"Aktuální překlad:","de":"Derzeitige Übersetzung:","es":"Traducción actual:","fa":"ترجمه موجود:","fr":"Traduction actuelle:","he":"תרגום הנוכחי:","hr":"Trenutni prijevod:","hu":"Jelenlegi fordítás:","id":"Terjemah sekarang:","ja":"現在の翻訳:","lt":"Dabartinis vertimas:","ms":"Bahasa sekarang:","pt":"Tradução atual:","pt-br":"Tradução atual:","sk":"Aktuálni preklad:","sv":"Nuvarande översättning:","th":"การแปลปัจจุบัน:","zh":"當前翻譯："},"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".',"ar":"ربما البيانات قديمه. آخر تحديث كان قبل أكثر من %s. انقر على تحديث.","bg":"Данните са остаряли. Последен ъпдейт е направен преди %s. Натиснете тук за да се ъпдейтне.","cs":"Data jsou zastaralá. Klikni 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":"Données probablement périmées. La dernière mise à jour était sur %s. Le clic pour mettre à jour.","he":"המידע לא בתוקף. עידקון אחרון לפני %s. לחץ לעידכון.","hr":"Mogucnost starih podataka. Posljednji update bio je prije %s. Kliknite za azuriranje.","id":"Data telah kadaluarsa. Update terakhir beberapa jam lalu. Klik untuk update.","it":"Aggiornamento scaduto. L'ultimo aggiornamento eseguito %s fà. Clicca per aggiornare.","lt":"Duomenys gali būti pasenę. Paskutinis atnaujinimas buvo prieš %s. Spauskite, kad atnaujintumėte.","ms":"Data sudah tidak di kemaskini. Kemaskini terakhir sudah %s lepas. Tekan untuk kemaskini.","pt":"Dados possivelmente fora de validade. Ultima actualização foi a %s atrás. Clica para actualizar.","pt-br":"Dados possivelmente desatualizados. Ultima atualização foi a %s atras. Clique para atualizar.","ru":"Данные возможно устарели. Последнее обновление производилось %s назад. Нажмите на обновление.","sk":"Data sú zastaralé. Klikni na aktualizuj.","sl":"Podatki so mogoče zastareli. Zadnja posodobitev je bila pred %s. Kliknite za posodobitev.","sv":"Datan är möjligtvis föråldrad. Senaste uppdatering var över %s sedan. Klicka för att uppdatera.","th":"ข้อมูลที่มีอยู่เก่าแล้ว. การปรับปรุงล่าสุดมาแล้ว. คลิกที่นี่เพื่อปรับปรุง.","zh":"資料或許已經過時.最後更新在%s前.按更新."},"Help me translate Travobotto! Translate what you know and submit the form. Pay attention to punctuation. Use the terms Travian uses in-game.":{"ar":"مساعدتي في ترجمة Travobotto! ترجم ماتعرفه و قدم النموذج.أيضاً عليك مراعات علامات الترقيم. استخدم مصطلحات تستخدم في لعبة ترافيان.","bg":"Помогни ми да преведа Travobotto! Преведи каквото можеш и попълни формата. Обърни внимание на пунктоацията. Използвай термини от Травиан.","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":"Aidez-moi à traduire Travobotto! Traduisez ce que vous savez et soumettez la forme. Prêtez l'attention à la ponctuation. Utilisez les termes Travian des utilisations dans-jeu.","he":"עזור לי לתרגם את טריובוטו! תרגם את מה שאתה יכול ושלח את הטופס. סם לב לדיקדוק. יש להישתמש במונחים כפי שמקובל באתר טרוויאן.","hr":"Pomozite mi prevesti Travobotto! Prevedite sto znate i posaljite obrazac. Obratite paznju na interpunkciju. Koristite nazive koji se koriste u Travianu.","id":"Bantu kami menerjemahkan ke dalam bahasa Anda.","it":"Aiutami a tradurre Travobotto! Traduci quello che conosci e spedisci il form. Fai attenzione alla punteggiatura. Usa termini utilizzati in Travian.","lt":"Padėkite man išversti Travobotto! Išversk ką žinai ir išsiųsk formą. Naudokite terminus, kuriuos Travian naudoja žaidime.","ms":"Tolong kami untuk alih bahasa Travobotto! Alih bahasa apa yang anda tahu. Ambil perhatian.sila guna kan syarat-syarat dan peraturan Travian.","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.","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.","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.","sv":"Hjälp mig översätta Travobotto! Översätta vad du känner till och skicka formuläret. Var uppmärksam på skiljetecken. Använder termerna Travian använder i spelet.","th":"ช่วยแปล Travobotto! แปลสิ่งที่คุณรู้และส่งแ� ��บฟอร์ม. สนใจจ่ายเพื่อ การเว้นวรรคตอน. ใช้คำ ที่ใช้ในเกม Travian.","zh":"幫忙翻譯Travobotto!翻譯成你知道的和呈交格式.請注意���點.請用Travian的語言."},"Help translate":{"ar":"مساعدة في الترجمة","bg":"Помогни с превода","cs":"Pomoc přeložit","da":"Hjælp med at oversætte","de":"Hilf übersetzen","es":"Ayuda a traducir","fa":"کمک در ترجمه","he":"עזור לתרגם","hr":"Pomogni prevesti","hu":"Segítség fordítása","id":"Bantu terjemah","it":"Aiuta a tradurre","ja":"翻訳を手伝う","lt":"Padėti išversti","ms":"Tolong alih bahasa","nl":"Help vertalen","pt":"Ajuda a traduzir","pt-br":"Ajude a traduzir","ru":"Помочь перевести","sk":"Pomôcť preložiť","sl":"Pomagaj prevesti","sv":"Hjälp mig översätta","th":"ช่วยแปล","tr":"Tercüme yardım","zh":"幫忙翻譯"},"Hide":{"ar":"إخفاء","bg":"Скрий","cs":"Skrýt","da":"Gem","de":"Ausblenden","es":"Ocultar","fa":"کوچک شدن","fr":"Caché","he":"החבא","hr":"Sakrij","hu":"Rejteni","id":"Sembunyi","it":"Nascondi","ja":"隠す","lt":"Slėpti","ms":"Sembunyi","nl":"Verbergen","pt":"Esconder","pt-br":"Esconder","ro":"Ascunde","ru":"Скрыть","sk":"Skryť","sl":"Skrij","sv":"Dölj","th":"ซ่อน","tr":"Gizle","zh":"隱藏"},"Idle villages:":{"ar":"قرى خاملة:","bg":"Свободни градове:","cs":"Ve vesnici se nestaví:","da":"Landsbyer der ikke bygger:","de":"Untätige Dörfer:","es":"Aldeas paradas:","fa":"دهکده های بی استفاده:","fr":"Villages sans occupation:","he":"כפרים אידיאלים:","hr":"Naselja u mirovanju:","id":"Desa idle:","it":"Villaggi inattivi:","lt":"Kaimai be darbo:","ms":"Kampung yang tidak beroperasi:","pt":"Aldeias paradas:","pt-br":"Aldeias desocupadas:","ru":"Незанятые деревни:","sk":"V dedine sa nestavia:","sl":"Nedejavne naselja:","sv":"Stillastående byar:","th":"หมู่บ้านที่ไม่ทำงาน:","zh":"閒置村莊："},"Install":{"ar":"تثبيت","bg":"Инсталирай","cs":"Instalovat","da":"Installer","de":"Installieren","es":"Instalar","fa":"نصب","fr":"Installer","he":"התקן","hr":"Instalacija","hu":"Telepíteni","id":"Instal","it":"Installa","lt":"Įrašyti","ms":"Simpan","nl":"Installeren","pt":"Instalar","pt-br":"Instalar","ro":"Instaleaza","ru":"Установить","sk":"Instalovať","sl":"Namesti","sv":"Installera","th":"ติดตั้ง","tr":"Yükle","zh":"安裝"},"Iron":{"ar":"الحديد","bg":"желязо","cs":"Železo","da":"Jern","de":"Eisen","es":"Hierro","fa":"آهن","fr":"Fer","he":"ברזל","hr":"Željezo","hu":"Vas","id":"Besi","it":"Ferro","ja":"鉄","lt":"Geležis","ms":"Besi","nl":"Ijzer","pl":"Żelazo","pt":"Ferro","pt-br":"Ferro","ro":"Fier","ru":"Железо","sk":"Železo","sl":"Železo","sv":"Järn","th":"เหล็ก","tr":"Demir","zh":"鐵"},"Language: ":{"ar":"لغة: ","bg":"Език: ","cs":"Jazyk: ","da":"Sprog: ","de":"Sprache: ","es":"Lenguaje: ","fa":"زبان: ","fr":"Langue: ","he":"שפה: ","hr":"Jezik: ","hu":"Nyelv: ","id":"Bahasa: ","it":"Linguaggio: ","lt":"Kalba: ","ms":"Bahasa","nl":"Taal: ","pl":"Język: ","pt":"Linguagem: ","pt-br":"Idioma: ","ro":"Limba: ","ru":"Язык: ","sk":"Jazyk: ","sl":"Jezik: ","sv":"Språk: ","th":"ภาษา: ","tr":"Lisan: ","zh":"語言： "},"Log in automatically":{"ar":"تسجيل الدخول تلقائيا","bg":"Влизай автоматично","cs":"Přihlásit automaticky","da":"Log ind automatisk","de":"Automatisch einloggen","es":"Log in automáticamente","fa":"ورود سریع","fr":"Connectez-vous automatiquement","he":"היתחבר אוטומתית","hr":"Prijavi me automatski","hu":"Automatikus belépés","id":"Log ini otomatis","it":"Logga automaticamente","lt":"Prijungti automatiškai","ms":"Automatik masuk","nl":"Log automatisch in","pl":"Loguj automatycznie","pt":"Ligar-se automaticamente","pt-br":"Logar-se automaticamente","ru":"Входить автоматически","sk":"Prihlásiť automaticky","sl":"Prijavi se samodejno","sv":"Logga in automatiskt","th":"เข้าสู่ระบบอัตโนมัติ","tr":"Otomatik giriş","zh":"自動登入"},"Lumber":{"ar":"الخشب","bg":"Дърво","cs":"Dřevo","da":"Tømmer","de":"Holz","es":"Madera","fa":"چوب","fr":"Bois","he":"עץ","hr":"Drvo","hu":"Fa","id":"Kayu","it":"Legno","ja":"木","lt":"Mediena","ms":"Kayu","nl":"Hout","ro":"Lemn","pl":"Drewno","pt":"Madeira","pt-br":"Madeira","ru":"Древесина","sk":"Drevo","sl":"Les","sv":"Trä","th":"ไม้","tr":"Odun","zh":"木"},"Merchants":{"ar":"تجار","bg":"Търговеца","cs":"Obchodníci","da":"Handelsmænd","de":"Händler","es":"Mercaderes","fa":"تاجر","fr":"Marchands","he":"סוחרים","hr":"Trgovci","hu":"Kereskedők","id":"Pedagang","it":"Mercanti","ja":"商人","lt":"Prekeiviai","ms":"Pedagang","nl":"Handelaren","pl":"Handlarze","pt":"Mercadores","pt-br":"Mercadores","ro":"Comercianţi","ru":"Торговцы","sk":"Obchodníci","sl":"Trgovci","sv":"Köpmän","th":"พ่อค้า","tr":"Satıcı","zh":"商人"},"none":{"ar":"بلا","bg":"няма","cs":"nikdo","da":"ingen","de":"keine","es":"nada","fa":"هیچ","fr":"aucune","he":"ריק","hr":"nijedan","hu":"nincs","id":"kosong","it":"nulla","ja":"なし","lt":"nėra","ms":"tiada","nl":"geen","pl":"zero","pt":"nenhum","pt-br":"nenhum","ro":"niciunul","ru":"нету","sk":"nikto","sl":"nič","sv":"inga","th":"ไม่มี","zh":"沒有"},"New language":{"ar":"لغة جديدة","bg":"Нов език","cs":"Nový jazyk","de":"Neue Sprache","es":"Nuevo idioma","fa":"زبان جدید","fr":"Nouvelle langue","he":"שפה חדשה","hr":"Novi jezik","hu":"Új nyelv","id":"Bahasa baru","ja":"新しい村","lt":"Nauja kalba","ms":"Bahasa baru","pl":"Nowy język","pt":"Novo idioma","pt-br":"Novo idioma","sk":"Nový jazyk","sv":"Ny översättning","th":"ภาษาใหม่","zh":"新的語言"},"No data gathered yet. Click to gather data.":{"ar":"لا توجد بيانات تم جمعها حتى الآن. انقر فوق جمع البيانات.","bg":"Няма данни. Натисни за да събереш данни.","cs":"Žádné údaje shromážděné dosud. Klikněte pro shromažďování údajů.","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":"Aucune donnée rassemblée encore. Le clic pour rassembler des données.","he":"לא מובטח מידע חדש. לחץ לאגור מידע.","hr":"Nema prikupljenih podataka. Klikni za prikupljanje podataka.","id":"Tidak ada data. Klik untuk mendapatkan data.","it":"Nessun dato raccolto ancora. Clicca per raccogliere i dati.","lt":"Informacija dar nesurinkta. Spauskite, kad surinktumėte info.","ms":"Tiada data baru. Klik di sini untuk mendapat data baru.","pt":"Sem dados ainda. Clica para adicionar dados.","pt-br":"Nenhum dado foi coletado ainda. Clique para coletar os dados.","ru":"Нет данных. Нажмите, чтобы собрать данные.","sk":"Žiadne údaj zhromaždené do teraz. Kliknite pre zhromaždenie údajov.","sl":"Podatki še niso zbrani. Kliknite, da zberete podatke.","sv":"Ingen data insamlade än. Klicka för att samla in data.","th":"ไม่มีข้อมูลที่รวบรวมไว้. คลิกเพื่อนรวบรวมข้อมูล.","zh":"還未收集資料.按此收集資料."},"Original phrase:":{"ar":"الجملة الأصلية:","bg":"Оригинална фраза:","cs":"Původní věta:","de":"Originaler Ausdruck:","es":"Texto original:","fr":"Phrase originale:","he":"ביטוי מקורי:","hr":"Originalna fraza:","id":"Frase asli:","lt":"Originali frazė:","ms":"Bahasa asal:","pt":"Sentença original:","pt-br":"Sentença original:","sk":"Pôvodná veta:","sv":"Original fras:","th":"วลีเดิม:","zh":"原件短語："},"Password:":{"ar":"كلمة المرور:","bg":"Парола:","cs":"Heslo:","da":"Kodeord:","de":"Passwort:","es":"Contraseña:","fa":"رمز ورود:","fr":"Mot de passe:","he":"סיסמה:","hr":"Zaporka:","hu":"Jelszó:","it":"Password:","ja":"パスワード：","lt":"Slaptažodis:","ms":"Kata kunci:","nl":"Wachtwoord:","pl":"Hasło:","pt":"Palavra-passe:","pt-br":"Senha:","ro":"Parola:","ru":"Пароль:","sk":"Heslo:","sl":"Geslo:","sv":"Lösenord:","th":"รหัสผ่าน:","tr":"Şifre:","zh":"密碼："},"Preferences":{"ar":"الخيارات","bg":"Предпочитания","cs":"Preference","da":"Indstillinger","de":"Einstellungen","es":"Preferencias","fa":"ترجیحات","fr":"Préferences","he":"העדפות","hr":"Podesavanja","hu":"Tulajdonságok","id":"Pilihan","it":"Preferenze","lt":"Nustatymai","ms":"Kandungan","nl":"Instellingen","pl":"Ustawienia","pt":"Preferencias","pt-br":"Preferencias","ro":"Preferinte","ru":"Настройки","sk":"Preferencie","sl":"Lastnosti","sv":"Inställningar","th":"ตั้งค่า","tr":"Ayarlar","zh":"優先"},"Refresh list":{"ar":"تحديث القائمة","bg":"Презареди листа","cs":"Obnova listu","da":"Opdater liste","de":"Liste aktualisieren","es":"Refrescar lista","fa":"بارگذاری لیست","fr":"Rafraichir la liste","he":"רענן רשימה","hr":"Osvjezi listu","hu":"Frissítsd a listát","id":"Refresh daftar","it":"Aggiorna lista","lt":"Atnaujinti sąrašą","ms":"Kemaskini","pt":"Actualizar lista","pt-br":"Atualizar lista","ru":"Обновить список","sk":"Obnova listu","sl":"Osveži seznam","sv":"Förnya listan","th":"รีเฟรชรายการ","tr":"Yenileme listesi","zh":"重新載入列表"},"Reset Travobotto":{"ar":"إعادة Travobotto","bg":"Рестартирай Travobotto","cs":"Restartovat Travobotto","da":"Nulstil Travobotto","de":"Travobotto zurücksetzen","es":"Resetear Travobotto","fa":"تنظیم مجدد تراوبوتو","he":"אתחל טריובוטו","hr":"Resetiraj Travobotto","hu":"Travobotto alaphelyzetbe","it":"Resetta Travobotto","lt":"Atsatyti Travobotto","pt":"Recompor Travobotto","pt-br":"Resetar Travobotto","ru":"Сбросить Travobotto","sk":"Reštartovať Travobotto","sl":"Resetiraj Travobotto","sv":"Starta om Travobotto","th":"เริ่ม Travobotto ใหม่","tr":"Travobotto yu yenile","zh":"重設Travobotto"},"Show Travobotto":{"ar":"أظهار Travobotto","bg":"Покажи Travobotto","cs":"Ukázat Travobotto","da":"Vis Travobotto","de":"Travobotto anzeigen","es":"Mostrar Travobotto","fa":"نشان دادن تراوبوتو","he":"הראה טריובוטו","hr":"Pokazi Travobotto","hu":"Mutasd a Travobotto-t","it":"Mostra Travobotto","lt":"Rodyti Travobotto","ms":"Tunjukkan Travobotto","pt":"Mostrar Travobotto","pt-br":"Mostrar Travobotto","ro":"Arata Travobotto","ru":"Показать Travobotto","sk":"Ukázať Travobotto","sl":"Prikaži Travobotto","sv":"Visa Travobotto","th":"แสดง Travobotto","tr":"Travobotto'yu göster","zh":"顯示Travobotto"},"Sittees":{"ar":"التوكيلات","bg":"Ситъри","cs":"Opatrovník","da":"Kontorepræsentanter","de":"Schützlinge","es":"Representados","fa":"جانشین ها","fr":"Protégés","he":"שומרי חשבון ","hr":"Sitteri","hu":"Helyettesek","it":"Sitter","ms":"Penjaga","pl":"Zastępca","pt-br":"Sitados","ru":"Заместители","sk":"Opatrovateľ","sl":"Sitterji","th":"แหล่งที่ตั้ง","zh":"設定"},"So I can clarify any issues. Won't publish it.":{"ar":"حتى أتمكن من الاستفسار عن بعض الاشياء التي لن انشرها.","bg":"За разясняване на всякакви питания. Няма да бъде публикуван.","cs":"Tak jsem si vyjasnit všechny problémy. Nebude publikovat.","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":"Donc je peux clarifier des questions. Ne le publiera pas.","he":"בישביל שאוכל להבהיר אי הבנות. אני לא אפורסם אותו.","hr":"Kako bih vas mogao kontaktirati u slucaju nekih nedoumica. Necu je objaviti.","it":"Come chiarire i dubbi. Non pubblicatelo.","lt":"Taigi, aš galiu paaiškinti visus neaiškumus. Neviešinsiu jų.","ms":"","pt":"Para eu clarificar alguns problemas. Não o vou publicar.","pt-br":"Assim eu posso elucidar algumas duvidas. Não irei publica-lo.","ru":"Так я могу уточнить любые вопросы. Не будем публиковать это.","sk":"Tak som  si vyjasnil všetky problémy. Nebudem ich publikovať.","sl":"Da lahko pojasnim katerokoli zadevo. Ne bom je objavil.","sv":"Så jag kan klargöra eventuella problem. Kommer inte publicera den.","th":"เพื่อให้สามารถชี้แจงปัญ� ��าได้เท่านั้น. เราจะไม่เผยแพร่มัน.","zh":"我可以詳述仕何問題.不要發佈此."},"Submit translation":{"ar":"تقديم الترجمة","bg":"Изпрати превода","cs":"Odevzdat překlad","da":"Indsend oversættelse","de":"Übersetzung zusenden","es":"Enviar traducción","fa":"ترجمه را ارائه دهید","fr":"Proposer une traduction","he":"שלח תרגום ","hr":"Posalji prijevod","id":"Kirim terjemahan","it":"Manda traduzione","lt":"Pateikti vertimą","ms":"Hantar alih bahasa","pt":"Enviar tradução","pt-br":"Enviar tradução","ru":"Отослать перевод","sk":"Odovzdať preklad","sl":"Objavi prevod","sv":"Skicka översättning","th":"ส่งคำแปล","zh":"呈交翻譯"},"Thank you for your contribution!":{"ar":"شكراً لك على المساعده !","bg":"Благодаря ти за съдействието!","cs":"Děkujeme vám za váš příspěvek!","da":"Tak for dit bidrag!","de":"Danke für deinen Beitrag!","es":"¡Gracias por tu ayuda!","fa":"از همکاری شما متشکریم!","fr":"Merci de votre contribution!","he":"תודה על התרומה שלך!","hr":"Hvala na vasem doprinosu!","id":"Terima kasih atas kontribusi Anda!","it":"Grazie per il vostro contributo!","lt":"Ačiū už Jūsų prisidėjimą!","ms":"Terima kasih atas perhatian anda!","pt":"Obrigado pelo teu contributo!","pt-br":"Obrigado por sua contribuição!","ro":"Multumesc pentru contribuire!","ru":"Спасибо за ваш вклад!","sk":"Ďakujeme vám za váš príspevok!","sl":"Hvala vam za vašo sodelovanje!","sv":"Tack för ditt bidrag!","th":"ขอขอบคุณสำหรับการสนับสน� ��นของคุณ!","zh":"多謝你的功勞"},"Time left":{"ar":"الوقت المتبقي","bg":"Останало време","cs":"Čas vypršel","da":"Tid tilbage","de":"Verbleibende Zeit","es":"Tiempo restante","fa":"زمان مانده","fr":"Temps restant","he":"זמן שנישאר","hr":"Vrijeme preostalo","hu":"Idő hátra","id":"Waktu selesai","it":"Tempo rimanente","lt":"Liko laiko","ms":"Masa yg tinggal","pt":"Tempo restante","pt-br":"Tempo restante","ro":"Timp ramas","ru":"Осталось","sk":"Čas vypršal","sl":"Časa ostalo","sv":"Tid kvar","th":"เวลาที่เหลือ","tr":"Kalan zaman","zh":"時間倒數"},"Show/Hide Travobotto by pressing":{"ar":"تغيير شكل السكربت بالضغط على","bg":"Интерфейс чрез кликане","cs":"Přepínač rozhraní stiskem","da":"Vis/skjul Travobotto ved at trykke","de":"Travobotto ein- und ausblenden mit","es":"Mostrar/ocultar interfaz pulsando","fa":"ورود با یک کلیک","fr":"Interface d'interrupteur à bascule en appuyant","hr":"Pritisnite za izmjenu maske","it":"Toggle interfaccia premendo","lt":"Pakeiskite išvaizdą spausdami čia","ms":"Ubah dengan menekan butang ini","pt":"Mudar de interface carregando","pt-br":"Alternar interface pressionando","ru":"Переключение интерфейса, нажатием","sk":"Prepínač rozhraní stiskom","sl":"Vstavi vmesnik s klikom","sv":"Växla gränssnittet genom att trycka ","th":"สลับหน้าจอโดยการกด","zh":"開/關快捷按鍵"},"Totals":{"ar":"المجموع","bg":"Общо","cs":"Souhrny","da":"Totaler","de":"Insgesamt","es":"Totales","fa":"مجموع","fr":"Totaux","he":"כלים","hr":"Total","hu":"Összes","it":"Totali","lt":"Išviso","ms":"Jumlah","nl":"In totaal","pl":"Razem","pt":"Totais","pt-br":"Total","ro":"Total","ru":"Итоги","sk":"Celkom","sl":"Skupno","sv":"Totalt","th":"ผลรวม","tr":"Taplamlar","zh":"總數"},"Translate into":{"bg":"Преведете на","cs":"Přeložit do","de":"Übersetze in","es":"Traducir a","fr":"Traduire par","he":"תרגם ל ","hr":"Prevedi na","hu":"Fordítani","id":"Terjemah ke dalam","lt":"Išversti į","ms":"Alih bahasa ke","pt":"Traduzir para","pt-br":"Traduzir para","sk":"Preložiť do","sv":"Översätt till","th":"แปลเป็น","zh":"翻譯成"},"Translation:":{"ar":"الترجمة:","bg":"Превод:","cs":"Překlad:","de":"Übersetzung:","es":"Traducción:","fr":"Traduction:","he":"תרגום:","hr":"Prijevod:","hu":"Fordítani:","id":"Terjemahan:","lt":"Vertimas:","ms":"Alih bahasa:","pl":"Tłumaczenie:","pt":"Tradução:","pt-br":"Tradução:","sk":"Preklad:","sv":"Översättning:","th":"แปล:","zh":"翻譯成："},"Translation starts here":{"ar":"بداء الترجمه من هنا","bg":"Преводът запчва от тук","cs":"Překlad starts here","de":"Übersetzung beginnt hier","es":"La traducción comienza aquí","fr":"Traduction commence ici","he":"תרגום מתחיל מכאן ","hr":"Prijevod pocinje ovdje","id":"Terjemah dimulai sekarang","lt":"Vertimo pradžia","ms":"Alih bahasa bermula di sini","pt":"Tradução inicia-se aqui","pt-br":"Tradução inicia-se aqui","sk":"Preklad začína tu","sv":"Översättningen börjar här","th":"แปล เริ่มที่","zh":"翻譯由此開始"},"Troop movements":{"ar":"تحركات القوات","bg":"Придвижване на войските","cs":"Přesuny","da":"Troppebevægelser","de":"Truppenbewegungen","es":"Movimientos de tropas","fa":"حرکت لشگریان","fr":"Mouvements de troupes","he":"תנועות כוחות","hr":"Kretanje vojske","hu":"Csapat mozgás","id":"Pergerakan pasukan","it":"Movimenti di truppe","ja":"兵士の移動","lt":"Karių judėjimas","ms":"Pergerakan askar","nl":"Troepenbewegingen","pl":"Ruchy jednostek","pt":"Movimentações de tropas","pt-br":"Movimentações de tropas","ro":"Mişcări de trupe","ru":"Передвижения войск","sk":"Pohyb jednotiek","sl":"Premiki enot","sv":"Trupp rörelser","th":"ความเคลื่อนไหวของกองกำลัง","tr":"Askeri hareket","zh":"軍隊移動"},"Update merchants data":{"ar":"تحديث بيانات التجار","bg":"Обнови данните за търговците","cs":"Obnovit obchodní data","da":"Opdater handelsmændsdata","de":"Händlerdaten aktualisieren","es":"Actualizar datos de mercaderes","fa":"تنظیم مجدد تجار","fr":"Mettez à jour des données de marchands","he":"עדכן תנועת סוחרים ","hr":"Azuriranje podataka o trgovcima","hu":"Frissíteni a kereskedők adatait","id":"Update data pedagang","it":"Aggiorna informazioni mercanti","lt":"Atnaujinti prekeivių informaciją","ms":"Kemaskini data pasar","pt":"Actualizar dados dos mercadores","pt-br":"Atualizar dado dos mercadores","ru":"Обновить данные о торговцах","sk":"Obnoviť obchodní data","sl":"Posodobi trgovske podatke","sv":"Uppdatera köpmän","th":"ปรับปรุงข้อมูลพ่อค้า","zh":"更新商人資料"},"Update villages data":{"ar":"تحديث بيانات القرى","bg":"Обнови данните за градовете","cs":"Obnovit vesnické data","da":"Opdater landsbyerdata","de":"Dörferdaten aktualisieren","es":"Actualizar datos de aldeas","fa":"تنظیم مجدد دهکده ها","fr":"Mettez à jour des données de villages","he":"עדכן מידע בכפרים ","hr":"Azuriranje podataka o selima","hu":"Frissíteni a faluk adatait","id":"Update data desa","it":"Aggiorna informazioni villaggi","lt":"Atnaujinti gyvenviečių informacija","ms":"Kemaskini data kampung","pl":"Dane osady uaktualnione","pt":"Actualizar dados das aldeias","pt-br":"Atualizar dados da aldeia","ru":"Обновить данные о деревнях","sk":"Obnoviť dedinské data","sl":"Posodobi vaške podatke","sv":"Uppdatera Byar","th":"ปรับปรุงข้อมูลหมู่บ้าน","tr":"köy verilerini güncelle","zh":"更新杓莊資料"},"Username:":{"ar":"أسم المستخدم:","bg":"Потребителско име:","cs":"Jméno:","da":"Brugernavn:","de":"Name:","es":"Usuario:","fa":"نام کاربری:","he":"שם מישתמש:","hr":"Korisnicko ime:","hu":"Felhasználónév:","it":"Username:","ja":"名前：","lt":"Slapyvardis:","ms":"Kata nama:","nl":"Gebruikersnaam:","pl":"Nazwa:","pt":"Nome de utilizador:","pt-br":"Usuário:","ro":"Nume:","ru":"Имя:","sk":"Meno:","sl":"Uporabniško ime:","sv":"Användarnamn:","th":"ชื่อผู้ใช้:","tr":"Kullanıcı adı:","zh":"玩家名稱："},"Village":{"ar":"قرية","bg":"Град","cs":"Vesnice","da":"Landsby","de":"Dorf","es":"Aldea","fa":"دهکده","fr":"Village","he":"כפר","hr":"Naselje","hu":"Falu","id":"Desa","it":"Villaggio","ja":"村","lt":"Gyvenvietė","ms":"Kampung","nl":"Dorp","pl":"Osada","pt":"Aldeia","pt-br":"Aldeia","ro":"Sat","ru":"Деревня","sk":"Dedina","sl":"Naselje","sv":"By","th":"หมู่บ้าน","tr":"Köy","zh":"村莊"},"Villages":{"ar":"القرى","bg":"Градове","cs":"Vesnice","da":"Landsbyer","de":"Dörfer","es":"Aldeas","fa":"دهکده ها","fr":"Villages","he":"כפרים","hr":"Naselja","hu":"Falvak","id":"Desa","it":"Villaggi","ja":"村","lt":"Gyvenvietės","ms":"Kampung-kampung","nl":"Dorpen","pl":"Osady","pt":"Aldeias","pt-br":"Aldeias","ro":"Sate","ru":"Деревни","sk":"Dediny","sl":"Naselja","sv":"Byar","th":"หมู่บ้าน","tr":"Köyler","zh":"村莊"},"You don't have any sittees.":{"ar":"ليس لديك أي توكيل.","bg":"Нямате ситъри.","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.","he":"אין לך שומרי חשבון ","hr":"Nemate niti jednog sittera.","hu":"Nincs egy helyettesed sem.","id":"Kamu tidak punya sittees.","it":"Non sei sitter di nessuno.","ja":"シッターはいません","ms":"Anda tiada penjaga.","pl":"Nie możesz dodać zastępców.","pt":"","pt-br":"Você não é sitter de ninguém.","ru":"У вас нет заместителей.","sk":"Nemáte žiadneho zástupcu.","sl":"Nimaš nobenih sitterjev.","sv":"Du har inga sittees.","th":"คุณยังไม่มีแหล่งที่ตั้ง.","zh":"你沒有任何設定."},"Your e-mail address (optional):":{"ar":"عنوان بريدك الإلكتروني (اختياري):","bg":"Твоят e-mail адрес (по избор):","da":"Din e-mail addresse (frivillig):","de":"Deine E-Mail-Addresse (optional):","es":"Tu dirección de e-mail (opcional):","fa":"ایمیل شما:","he":"לא חובה (תא הדואר האלקטרוני):","hr":"Vasa e-mail adresa (opcionalno):","hu":"A te mail címed (opcionális):","id":"Email kamu (opsional):","it":"Tuo indirizzo e-mail (opzionale):","ja":"メールアドレス（任意）:","lt":"Jūsų el. pašto adresas (nebūtina):","ms":"Email anda (tidak wajib):","pl":"Twój adres e-mailowy (opcjonalne):","pt":"Seu endereço de e-mail (opcional):","pt-br":"Seu endereço de e-mail (opcional):","ru":"Ваш адрес электронной почты (необязательно):","sl":"Vaš e-mail naslov (neobvezen):","sv":"Din e-mail adress (frivilligt):","th":"ที่อยู่อีเมลของคุณ(ตัวเลือกเสริม):","tr":"E-mail adresiniz (isteğe bağlı):","zh":"你的電郵地址(可不填)："}}
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+"/"+new Date().getUnixTime(),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)
if(session.ui.isVisible===false){this.hide();}
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)});},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));},autoResizeTextarea:function(textarea){textarea.setStyle("overflow","hidden");textarea.setStyle("resize","none");textarea.store("minimumHeight",textarea.getStyle("height").toInt());textarea.store("textLength",textarea.value.length);textarea.store("tween",new Fx.Tween(textarea,{link:"cancel"}));if(textarea.getScrollSize().y>textarea.getStyle("height").toInt()&&textarea.getScrollSize().y>textarea.getSize().y){textarea.setStyle("height",textarea.getScrollSize().y);}
textarea.addEvent("keyup",function(){if(this.value.length<this.retrieve("textLength")){if(this.getSize().y>this.getStyle("height").toInt()){this.store("windowScrollY",window.getScroll().y);this.setStyle("height",this.retrieve("minimumHeight"));if(this.getScrollSize().y>this.retrieve("minimumHeight")){this.setStyle("height",this.getScrollSize().y);window.scrollTo(window.getScroll().x,this.retrieve("windowScrollY"));}}}else{if(this.getScrollSize().y>this.getStyle("height").toInt()&&this.getScrollSize().y>this.getSize().y){this.retrieve("tween").start("height",this.getScrollSize().y);}}
this.store("textLength",this.value.length);});},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",{class:"travobotto-navigation-link",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",{class:"travobotto-navigation-link",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",{class:"travobotto-navigation-link",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",{class:"travobotto-popup-link",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",{class:"travobotto-popup-link",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",{class:"travobotto-navigation-link",events:{click:function(){tasksManager.addTask({switchAccounts:{to:session.sitter}},true);location.pathname="/logout.php";}},html:session.sitter}).inject(navigationItemSitter);}
this.pages=new Element("div",{id:"travobotto-pages"}).inject(innerBox);},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=this.getListOfTranslations();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",{"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:_("Show/Hide Travobotto 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 languageSelectionTable=new Element("table").inject(page);var languageSelectionTableRow=new Element("tr").inject(languageSelectionTable);var languageSelectionTableCellLeft=new Element("td",{id:"travobotto-target-translation-table-cell-left"}).inject(languageSelectionTableRow);var languageSelectionTableCellRight=new Element("td",{id:"travobotto-target-translation-table-cell-right"}).inject(languageSelectionTableRow);var languageSelectionLabel=new Element("label",{"for":"travobotto-target-translation-selection-input",html:_("Translate into")}).inject(languageSelectionTableCellLeft);var languageSelectionInput=new Element("select",{events:{change:function(){if($("travobotto-target-translation-selection-input").value==="new-language"){$("travobotto-new-language-input").setStyle("visibility","visible");}else{$("travobotto-new-language-input").setStyle("visibility","hidden");}
$("travobotto-translation-box").empty();this.createTranslationList($("travobotto-translation-box"),$("travobotto-target-translation-selection-input").value);}.bind(this)},id:"travobotto-target-translation-selection-input"}).inject(languageSelectionTableCellLeft);var existingTranslations=this.getListOfTranslations();existingTranslations.each(function(language){if(language[0]!==""&&language[0]!=="en"){var option=new Element("option",{html:language[1],value:language[0]}).inject(languageSelectionInput);if(serverWideSession.language===language[0]){option.set("selected","selected");}}});var option=new Element("option",{disabled:"disabled",html:"------------------------"}).inject(languageSelectionInput);var newLanguageOption=new Element("option",{html:_("New language"),value:"new-language"}).inject(languageSelectionInput);var newLanguageInput=new Element("input",{id:"travobotto-new-language-input",type:"text"}).inject(languageSelectionTableCellRight);if(serverWideSession.language===""||serverWideSession.language==="en"){newLanguageOption.set("selected","selected");newLanguageInput.setStyle("visibility","visible");}else{newLanguageInput.setStyle("visibility","hidden");}
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);new Element("div",{class:"travobotto-content-separator",html:_("Translation starts here")}).inject(page);var translationBox=new Element("div",{id:"travobotto-translation-box"}).inject(page);this.createTranslationList(translationBox,languageSelectionInput.value);var formFooter=new Element("div",{class:"travobotto-form-footer"}).inject(page);translationSubmitButton=new Element("input",{events:{click:function(){var sender=$("travobotto-translation-e-mail-address").value;if($("travobotto-target-translation-selection-input").value!=="new-language"){var translationFor=$("travobotto-target-translation-selection-input").value;}else{var translationFor=$("travobotto-new-language-input").value;}
var compiledTranslation="Travobotto version: "+version+"\n"
+"Server:             "+location.hostname+"\n"
+"UI language:        "+serverWideSession.language+"\n"
+"Translation for:    "+translationFor+"\n\n"
+"----------------------------------------------------------------------\n\n";$$(".travobotto-translation-proposal").each(function(proposal){if(proposal.value!==""){compiledTranslation+="> "+proposal.getParent("table").getElement(".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-message",id:"travobotto-translation-thank-you-message",html:'<img class="travobotto-message-icon" height="16" src="'+heartIcon+'" width="16" />'+_("Thank you for your contribution!")}).inject($("travobotto-villages-page"),"top");window.scrollTo(window.getScroll().x,$("travobotto-outer-box").getPosition().y-20);function fadeMessage(){var morph=new Fx.Morph(thankYouMessage).start({"height":0,"padding-bottom":0,"padding-top":0});}
setTimeout(fadeMessage,5000);}.bind(this)},id:"travobotto-translation-submit-button",type:"button",value:_("Submit translation")}).inject(formFooter);var cancelButton=new Element("a",{class:"travobotto-cancel-button",events:{click:function(){this.switchToPage("travobotto-preferences-page");window.scrollTo(window.getScroll().x,$("travobotto-outer-box").getPosition().y-20);}.bind(this)},html:_("Cancel")}).inject(formFooter);},buildVillagesPage:function(){var page=new Element("div",{class:"travobotto-page",id:"travobotto-villages-page"}).inject(this.pages);if(updateIsAvailable===true){var updateMessageTable=new Element("table").inject(page);var updateMessageTableRow=new Element("tr").inject(updateMessageTable);var updateMessageTableRowCellLeft=new Element("td",{class:"travobotto-message",html:_("A new version of Travobotto is available."),id:"travobotto-update-message-left"}).inject(updateMessageTableRow);new Element("img",{alt:"Update available.",class:"travobotto-message-icon",height:16,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";}},type:"button",value:_("Install")}).inject(updateMessageTableRowCellRight);}
var overviewTable=new Element("table",{id:"travobotto-resources-table"}).inject(page);var overviewTableHeadRow=new Element("tr").inject(overviewTable);var overviewTableHeadVillage=new Element("th",{colspan:2,html:_("Village")}).inject(overviewTableHeadRow);new Element("img",{class:"travobotto-clickable travobotto-resources-table-head-icon",events:{click:function(){tasksManager.addTask({refreshVillagesOverview:{}});tasksManager.executeTasks();}},height:16,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",{html:_("Merchants")}).inject(overviewTableHeadRow);new Element("img",{class:"travobotto-clickable travobotto-resources-table-head-icon",events:{click:function(){tasksManager.addTask({goTo:location.href});location.pathname="/dorf3.php";}},height:16,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(){try{var villageList=$("vlist");if(villageList!==null){location.href=villageList.getElements(".link a")[i].getProperty("href");}else{location.href=location.href;}}catch(error){logError(error);}}.pass(i)},html:village.name}).inject(villageNameCell);var villageInfoCell=new Element("td").inject(overviewTableBodyRow);var outdatedDataWarning=new Element("img",{class:"travobotto-clickable",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-clickable",events:{click:function(){tasksManager.addTask({refreshVillagesOverview:{onlyNewVillages:true}});tasksManager.executeTasks();}},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");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();buildTroopMovementsSection=function(){try{var insertMovement=function(type,element,movement,village,i){if(new Date().getTimeLeft(movement[1])!=="0:00:00"){var troopMovementsTableRow=new Element("tr").inject(element);var troopMovementsTableRowCell=new Element("td",{html:village.name}).inject(troopMovementsTableRow);if(type==="incoming"){if($(document.body).getStyle("direction")==="rtl"){var icon=arrowLeftIcon;}else{var icon=arrowRightIcon;}}else{if($(document.body).getStyle("direction")==="rtl"){var icon=arrowRightIcon;}else{var icon=arrowLeftIcon;}}
new Element("td",{html:'<img class="travobotto-troop-movement-direction-icon" height="16" src="'+icon+'" width="16" />'+movement[0]}).inject(troopMovementsTableRow);var troopMovementsTableRowCell=new Element("td",{html:new Date().getTimeLeft(movement[1])}).inject(troopMovementsTableRow);var refreshTimeLeft=function(){var timeLeft=new Date().getTimeLeft(movement[1]);troopMovementsTableRowCell.set("html",timeLeft);if(timeLeft==="0:00:00"){$clear(timer);troopMovementsTableRow.destroy();if(troopMovementsTable.getElements("tr").length<=1){troopMovementsSection.destroy();}}}
var timer=refreshTimeLeft.periodical(1000);Element("td",{html:new Date().getCompletionTime(movement[1])}).inject(troopMovementsTableRow);hasMovements=true;}else{if(type==="incoming"){village.troopMovements.incoming.splice(i,1);}else{village.troopMovements.outgoing.splice(i,1);}
sessionManager.saveSession();}}
var troopMovementsSection=new Element("div");var troopMovementsSeparator=new Element("div",{class:"travobotto-content-separator travobotto-clickable",events:{click:function(){var table=$("travobotto-troop-movements-table");var icon=$("travobotto-troop-movements-icon");if(table.getStyle("display")==="none"){table.setStyle("display");icon.setProperty("src",collapseIcon);session.ui.showTroopMovements=true;}else{table.setStyle("display","none");icon.setProperty("src",expandIcon);session.ui.showTroopMovements=false;}
sessionManager.saveSession();}},html:_("Troop movements")}).inject(troopMovementsSection);var troopMovementsIcon=new Element("img",{height:16,id:"travobotto-troop-movements-icon",src:collapseIcon,width:16}).inject(troopMovementsSeparator,"top");var troopMovementsTable=new Element("table",{html:"<thead>"+"<tr>"+"<th>"+_("Village")+"</th>"+"<th>"+_("Troop movements")+"</th>"+"<th>"+_("Time left")+"</th>"+"<th>"+_("Arrival")+"</th>"+"</tr>"+"</thead>",id:"travobotto-troop-movements-table"}).inject(troopMovementsSection);if(session.ui.showTroopMovements===false){troopMovementsTable.setStyle("display","none");troopMovementsIcon.setProperty("src",expandIcon);}
var hasMovements=false;session.villages.each(function(village){village.troopMovements.incoming.each(function(movement,i){insertMovement("incoming",troopMovementsTable,movement,village,i);});village.troopMovements.outgoing.each(function(movement,i){insertMovement("outgoing",troopMovementsTable,movement,village,i);});});if(hasMovements===true){troopMovementsSection.inject(page);}}catch(error){logError(error);}}
buildTroopMovementsSection();},createTranslationList:function(container){for(var phrase in translations){var translationTable=new Element("table").inject(container);var translationTableTopRow=new Element("tr").inject(translationTable);var translationTableMiddleRow=new Element("tr").inject(translationTable);var translationTableBottomRow=new Element("tr").inject(translationTable);var translationTableTopRowCellLeft=new Element("td",{class:"travobotto-translation-table-col-left",html:_("Original phrase:")}).inject(translationTableTopRow);var translationTableTopRowCellRight=new Element("td",{class:"travobotto-translation-phrase",html:phrase}).inject(translationTableTopRow);if($("travobotto-target-translation-selection-input").value!=="new-language"){var translationTableMiddleRowCellLeft=new Element("td",{class:"travobotto-translation-table-col-left",html:_("Current translation:")}).inject(translationTableMiddleRow);var translationTableMiddleRowCellRight=new Element("td",{class:"travobotto-translation-phrase",html:this.getCurrentTranslation(phrase,$("travobotto-target-translation-selection-input").value)}).inject(translationTableMiddleRow);}
var translationTableBottomRowCellLeft=new Element("td",{class:"travobotto-translation-table-col-left",html:_("Better translation:")}).inject(translationTableBottomRow);if($("travobotto-target-translation-selection-input").value==="new-language"){translationTableBottomRowCellLeft.set("html",_("Translation:"));}
var translationTableBottomRowCellRight=new Element("td",{class:"travobotto-translation-table-col-right"}).inject(translationTableBottomRow);var translationProposal=new Element("textarea",{cols:20,class:"travobotto-translation-proposal",rows:1}).inject(translationTableBottomRowCellRight);this.autoResizeTextarea(translationProposal);}},getCurrentTranslation:function(phrase,languageCode){if(translations[phrase]!==undefined&&translations[phrase][languageCode]!==undefined){return translations[phrase][languageCode];}
return"";},getListOfTranslations:function(){var availableTranslations=[["ar","العربية"],["bg","Български"],["cs","Česky"],["da","Dansk"],["de","Deutsch"],["en","English"],["es","Español"],["fa","فارسی"],["fr","Français"],["hr","Hrvatski"],["id","Indonesia"],["it","Italiano"],["he","עברית"],["lt","Lietuvių"],["hu","Magyar"],["ms","Bahasa Melayu"],["nl","Nederlands"],["ja","日本語"],["pl","Polski"],["pt","Português"],["pt-br","Português brasileiro"],["ro","Română"],["ru","Русский"],["sk","Slovenčina"],["sl","Slovenščina"],["sv","Svenska"],["th","ไทย"],["tr","Türkçe"],["zh","中文"],];return availableTranslations;},hide:function(){$("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(){$("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}
this.troopMovements={incoming:[],outgoing:[]}}
var inlineCss=".travobotto{color:#444;}.travobotto table{background-color:transparent;margin:0 0 7px;}.travobotto th{background:none;font-weight:700;text-align:left;white-space:nowrap;}.travobotto ul{margin:0;padding:0;}.travobotto li{list-style:none;}.travobotto :focus{outline:0;}.travobotto-content-box{padding:2px 0;}.travobotto-content-separator{color:rgba(35,65,0,0.35);cursor:default;font-size:1.1em;font-weight:700;text-align:center;text-shadow:1px 1px 0 #fff;margin:14px 0 7px;}.travobotto a,.travobotto-clickable{cursor:pointer;}.travobotto-table{display:table;}.travobotto-table-row{display:table-row;}.travobotto-table-cell{display:table-cell;}.travobotto input[type=checkbox]{vertical-align:sub;}.travobotto input[type=password],.travobotto input[type=text]{-moz-border-radius:3px;background-color:#fff;border:1px dashed #aaa;font-family:Verdana, Arial, Helvetica, sans-serif;padding-left:.15em;padding-right:.15em;width:100%;margin:2px 1px;}.travobotto textarea{-moz-border-radius:3px;background-color:#fff;border:1px dashed #aaa;font-family:Verdana, Arial, Helvetica, sans-serif;font-size:13px;height:17px;margin:2px 1px;padding:1px 2px;}.travobotto input[type=password]:focus,.travobotto input[type=text]:focus,.travobotto textarea:focus{border:2px solid #BADF8E;margin:1px 0;}.travobotto label{font-weight:700;}.travobotto input[type=button]{-moz-border-radius:3px;-moz-box-shadow:1px 1px 2px #91AE6F;background-color:#ADCF84;border:1px solid #7E9760;color:#50603d;cursor:pointer;vertical-align:middle;padding:1px 10px;}.travobotto input[type=button]:hover{background-color:#b7db8b;}.travobotto input[type=button]:active:hover{-moz-box-shadow:0 0 2px #91AE6F;margin:1px 0 -1px;}.travobotto-cancel-button{vertical-align:middle;margin:0 15px;}.travobotto-form-footer{text-align:center;margin:7px 0;}#travobotto-maximize-button{-moz-border-radius:100%;background-color:#333;color:#71D000;cursor:pointer;display:none;opacity:0.7;position:fixed;right:0;top:0;z-index:900;margin:.5em .5em 0 0;padding:4px 9px;}#travobotto-maximize-button:hover{color:#00BC00;}#travobotto-outer-box{-moz-border-radius:11px;background:rgba(35,65,0,0.25);overflow:hidden;position:absolute;top:0;z-index:900;}#travobotto-inner-box{-moz-border-radius:7px;margin:7px 7px -23px;}#travobotto-drag-handle{cursor:move;height:37px;position:relative;width:100%;margin:-7px 0 0;}#travobotto-minimize-button{-moz-border-radius:100%;background:rgba(244,246,246,1);float:right;position:relative;top:-30px;margin:0 0 0 7px;padding:0 9px;}#travobotto-navigation{background:#f6f6f6;-moz-border-radius:7px 7px 0 0;float:left;list-style-type:none;position:relative;top:-30px;padding:7px 7px 0;}.travobotto-navigation-item{float:left;position:relative;}.travobotto-navigation-item:hover .travobotto-sub-navigation{display:block;}.travobotto-sub-navigation{-moz-border-radius:4px;background-color:rgba(106,146,59,0.95);color:#A1C17B;display:none;list-style:none;position:absolute;z-index:901;padding:1em;}#travobotto-sittees-list{white-space:nowrap;padding:7px;}#travobotto-refresh-sittees-link{border-top:1px solid #A1C17B;display:block;font-size:.85em;margin:.5em 0 0;padding:.3em 0 0;}.travobotto-message{-moz-border-radius:4px;background-color:#B7DB8B;color:#50603D;overflow:hidden;padding:2px;}.travobotto-message-icon{vertical-align:text-bottom;margin:0 2px 0 0;}#travobotto-pages{-moz-border-radius:0 7px 7px;background:#f6f6f6;clear:both;position:relative;top:-30px;padding:7px;}.travobotto-resources-table-head-icon{vertical-align:bottom;}.travobotto-resources-table-row{line-height:1em;}.travobotto-resource-cell{width:20%;}.travobotto-td{-moz-border-radius:3px;background-color:#dae0a6;}.travobotto-td-bar{-moz-border-radius:3px;background-color:#b0bd4e;color:#737f19;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:#e0d0a6;}.travobotto-td-bar-warning{background-color:#f1a129;color:#b55e1e;}.travobotto-td-danger{background-color:#e0b4a6;}.travobotto-td-bar-danger{background-color:#d75b41;color:#9e3621;}#travobotto-troop-movements-icon{opacity:0.5;vertical-align:middle;}.travobotto-troop-movement-direction-icon{vertical-align:top;margin:0 1px 0 0;}#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-target-translation-table-cell-right{width:100%;padding:0 9px 0 0;}.travobotto-translation-table-col-left{vertical-align:top;white-space:nowrap;padding:0 1em 0 0;}.travobotto-translation-big-right-cell{width:100%;padding:0 9px 0 10px;}.travobotto-translation-phrase{font-style:italic;}.travobotto-translation-proposal{width:97.3%;}a.travobotto-popup-link{color:#badf8e;}a.travobotto-popup-link:hover{color:#adcf84;}.travobotto small,#travobotto-no-sittees-info{font-size:.85em;}.travobotto-navigation-link,#travobotto-target-translation-selection-input{margin:0 .5em;}#travobotto-update-message,#travobotto-translation-thank-you-message{clear:both;}#travobotto-update-message-left,#travobotto-language-selection-cell-left,.travobotto-translation-table-col-right{width:100%;}.travobotto-village-link,#travobotto-target-translation-table-cell-left{white-space:nowrap;}#travobotto-feedback-page,#travobotto-translation-page{width:540px;}";var inlineCssRtl=".travobotto th{text-align:right;}.travobotto input[type=button]{-moz-box-shadow:-1px 1px 2px #91AE6F;}#travobotto-maximize-button{left:0;right:auto;margin:.5em 0 0 .5em;}#travobotto-minimize-button{float:left;margin:0 7px 0 0;}#travobotto-pages{-moz-border-radius:7px 0 7px 7px;}.travobotto-message-icon{margin:0 0 0 2px;}.travobotto-troop-movement-direction-icon{margin:0 0 0 1px;}#travobotto-auto-login-table{margin:0 3em 0 0;}#travobotto-toggle-ui-key-input{margin-left:0;margin-right:.5em;}#travobotto-navigation,.travobotto-navigation-item{float:right;}.travobotto-auto-login-label,.travobotto-translation-table-col-left{padding:0 0 0 1em;}";var version=201002250;var isDeveloperVersion=false;var baseUrl="http://travobotto.com/versions/201002250/";var websiteUrl="http://travobotto.com/";var arrowLeftIcon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADrSURBVDjLY/z//z8DJYCJgUIwyAwoPZHJBsS7STGABY1/9e+fvzKkGMAIiwWgzRfF2ST0/vz5w/Dw/UOGXz9/M/z6AcK/GH4CMZj+jmCD5C70X2VkgWo+KcYqrqfArcTw598fBhluOTD9++9fIP7N8PsfEP/9AxUD0b8ZVq9ci/AC0Nm//zD+Yfj19xdY0R+got9gxb8RNNQAkNyf/0CxX39QvZC5M+68MJuIAQczJ8PDlw8ZXr9/g9XZIK+BNP/5/Yfh/sJHjIzIKTF2VchNoEI5oAbHDWk7TpAcjUDNukDNB4nVjOKFEZwXAOOhu7x6WtPJAAAAAElFTkSuQmCC";var arrowRightIcon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADvSURBVDjLY/z//z8DJYCJgUIwxAwImOWx22uSExvZBvz68cvm5/dfV5HFGEGxUHoiExwVf//8Zfjz+w/D719/GH79/A3UAMK/GH4CMYiWFJJk+PXrN8PN27cunWq/oA/SwwIzyUrYluHvP6AB//7A8e+/f4H4N8Pvf0D8Fyb2h+HLl696WllqJ69Nu2XOArMZpBCuGajoN1jxbwT9FyH36/dvkCt/w10Acvb+h3uxOhvoZzCbi4OLQVJSiuH1q9cMt2/cvXB7zj0beBgQAwwKtS2AFuwH2vwIqFmd5Fi40H/1BFDzQaBrdTFiYYTnBQAI58A33Wys0AAAAABJRU5ErkJggg%3D%3D";var collapseIcon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABhSURBVCjPY/jPgB8y0FHBkb37/+/6v+X/+v8r/y/ei0XB3v+H4HDWfywKtgAl1oLhof8TsClYA5SAgEP/27EpWIxkQj02BbOQ3FCGTcGEdV3/W4B6K/+X/M9fNzAhSbYCAMiTH3pTNa+FAAAAAElFTkSuQmCC";var expandIcon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABjSURBVCjPY/jPgB8y0FHBkb37/+/6v+X/+v8r/y/ei0XB3v+H4HDWfywKtgAl1v7/D8SH/k/ApmANUAICDv1vx6ZgMZIJ9dgUzEJyQxk2BRPWdf1vAeqt/F/yP3/dwIQk2QoAfUogHsamBmcAAAAASUVORK5CYII%3D";var heartIcon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJ/SURBVDjLpZNLiI1xGMZ/3/edOWZojjkiudbMuEVMM4SMBVlbSUpZyAIhG4qlkcJWycZOSslCMTNFuYVpRrkzLuMy5tA4xulcv//t/Vt80ZTLxltvz7N43vd5F+8TeO/5n0r9JNLTs9A7t8FbO0WsfSvWdtdv2VIAKJ45kxWtt4rWh5xSQ6LUyeldXVcAAu890t29zzt3hPp0ljBCyiVMofhMjNkmWldE64t1U5qWTpjXiiuVqDx8RDX35ZxTalfgrl7d6K2+HC5cQBBGYAyk05jhYWrPX350WpcbWpsX17e0QGEMwgiasnzv7eX7oyfHUmLt3mjWTIJqFXJfwAlYS13zHKKV7XN9rInqG6D/AYgkBo0TyXSuId/Xvz0lxiyJMhkYegfGghdwDl68JpycgSiAwTeAgLYJ5scIWgUXx5mUGJPGOYgVKJUs0CZZMpIDaxNnEfAOlAFxYDSilKRE66K3dlpgDcQ1sC4ZtjbB8dxacBZSIYQhTqkwFKWu28FBmD0TKmWo1SCOwagEdZxgrZYYlEowv4X8jVuIUudDp9SJyodP7+NPI9C2FNJRIipXk4FqDVQM1QrUhbB2FYXRMXJXusdE667Ae0/++PFlotTZhmzjiknLlxOO5mDgCQRBcnq1Cm2L8M3zGO3p5fPte0/FmN0d/f13gp+v/Pnw4clOqQOi1P5sR1tj46wZcPceFMuwdjXFbwXen7+gRevTYsyxjoGB/K9PHF/vduxY4ZQ61dQ8d/XUDevBWfJ37jJy/eaQaL2z/f79a+P1wZ/C9Grz5ian1FHRek92zozg68s3l0Trg+19fUO/ib33f+3H69ZtetjZuf9fmuB/4/wDFoO2ZVesLdkAAAAASUVORK5CYII%3D";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);}}}