// ==UserScript==
// @name        Travobotto
// @namespace   http://travobotto.com/
// @description Reduces the cognitive load for Travian players. (Updated 29 Apr 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(){var loginRequiringPages=["/allianz.php","/a2b.php","/berichte.php","/build.php","/dorf1.php","/dorf2.php","/dorf3.php","/karte.php","/nachrichten.php","/plus.php","/spieler.php","/statistiken.php","/warsim.php"];if($("login_form")===null&&loginRequiringPages.contains(location.pathname)===true){return true;}
return false;},logIn:function(){try{var loginTable=$("login_form");var maxLoginAttempts=1;if(loginTable!==null&&serverWideSession.login.attempts<maxLoginAttempts){var form=loginTable.getParent();var inputs=form.getElements("input");if(serverWideSession.login.usernameToSwitchTo!==undefined){if(serverWideSession.login.password!==""){inputs[0].setProperty("autocomplete","off");inputs[1].setProperty("autocomplete","off");inputs[0].set("value",serverWideSession.login.usernameToSwitchTo);inputs[1].set("value",serverWideSession.login.password);delete serverWideSession.login.usernameToSwitchTo;this.__submitForm(form,inputs);}else if(form.getElements("input")[1].get("value")!==""){inputs[0].setProperty("autocomplete","off");inputs[0].set("value",serverWideSession.login.usernameToSwitchTo);delete serverWideSession.login.usernameToSwitchTo;this.__submitForm(form,inputs);}}else if(serverWideSession.login.autoLogin===true){if(serverWideSession.login.username!==""&&serverWideSession.login.password!==""){inputs[0].set("value",serverWideSession.login.username);inputs[1].set("value",serverWideSession.login.password);this.__submitForm(form,inputs);}else if(inputs[0].get("value")!==""&&inputs[1].get("value")!==""){this.__submitForm(form,inputs);}}}}catch(error){logError(error);}},__submitForm:function(form,inputs){try{if(inputs[3].getProperty("name")==="w"){inputs[3].setProperty("value",screen.width+":"+screen.height);}else{logError("Login anti-detection measure failed.");}
serverWideSession.login.attempts++;sessionManager.saveServerWideSession();form.submit();}catch(error){logError(error);}}})
var ServerWideSession=function(){this.login={autoLogin:true,username:"",password:"",attempts:0}
this.language="";this.tasks=[];this.version=version;}
var Session=function(userId,villages){this.isTravianPlus=false;this.sittees=[];this.tasks=[];this.userId=userId;this.username="";this.version=version;this.villages=villages;this.ui={hasNeverBeenDragged:true,isVisible:true,page:"travobotto-villages-page",showResources:true,showTasks:true,showTroopMovements:true,showResourceAmounts:true,showResourcePercentages:false,showMerchantCounts:true,showMerchantPercentages:false,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".ba":return"hr";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".com.ua":return"uk";case".com.vn":return"vi";case".cz":return"cs";case".de":return"de";case".dk":return"da";case".fi":return"fi";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".org":return"de";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(){try{return $("side_navi").getElements("a")[3].getProperty("href").split("=")[1].toInt();}catch(error){return 0;}},getVillages:function(){try{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;}catch(error){logError(error);return[new Village("",0)];}},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<201004290){appWideSession.version=201004290;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));}
if(serverWideSession.version<201003270){domain=location.hostname.split("travian").getLast();switch(domain){case".ba":case".fi":serverWideSession.language=this.getDefaultLanguage();}
serverWideSession.version=201003270;GM_setValue(this.serverWideSessionFilename,JSON.encode(serverWideSession));}
if(serverWideSession.version<201004020){domain=location.hostname.split("travian").getLast();switch(domain){case".com.ua":serverWideSession.language=this.getDefaultLanguage();}
serverWideSession.version=201004020;GM_setValue(this.serverWideSessionFilename,JSON.encode(serverWideSession));}
if(serverWideSession.version<201004290){domain=location.hostname.split("travian").getLast();switch(domain){case".com.vn":serverWideSession.language=this.getDefaultLanguage();}
serverWideSession.version=201004290;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.getVillages());GM_setValue(this.sessionFilename,JSON.encode(session));}
if(session.version<200911200){session.username="";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;}
if(session.version<201003270){session.isTravianPlus=false;session.ui.showResources=true;session.ui.showTasks=true;session.ui.showResourceAmounts=true;session.ui.showResourcePercentages=false;session.ui.showMerchantCounts=true;session.ui.showMerchantPercentages=false;session.version=201003270;}
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(){try{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];}}}catch(error){logError(error);return session.villages[0];}},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.updateTravianPlusStatus();this.updateVillagesList();this.updateBuildingsQueue();this.updateConsumption();this.updateCoordinates();this.updateMerchants();this.updatePopulation();this.updateProduction();this.updateResources();this.updateSittees();this.updateTroopMovements();this.updateUsername();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(){try{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();}}catch(error){logError(error)}},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").replace("&amp;","&");sittees.include(sittee);});session.sittees=sittees;}catch(error){logError(error);}}},updateUsername:function(){if(location.pathname==="/statistiken.php"){try{session.username=$("player").getElement(".hl .pla a").get("html").replace("&amp;","&");}catch(error){logError(error);}}},updateTravianPlusStatus:function(){try{session.isTravianPlus=$("logo").getElement("img").hasClass("logo_plus");}catch(error){logError(error);}},updateTroopMovements:function(){var isMovement=function(heading){try{if(heading.getNext("table").getElement(".in")!==null){return true;};return false;}catch(error){logError(error);return false;}}
var parseMovements=function(heading){try{var table=heading.getNext("table");var movements=[];var again=true;while(again===true){var movementNameRaw=table.getElements("thead a")[1];if(movementNameRaw.getElement("p")!==null){var movementName=movementNameRaw.getElement("p").get("html");}else{var movementName=movementNameRaw.get("html");}
var timeLeftRaw=table.getElement(".in").getElement("span").get("html");var arrivalTime=new Date().getUnixTimeFromTimeLeft(timeLeftRaw);movements.push([movementName,arrivalTime]);table=table.getNext();if(table.get("tag")!=="table"){again=false;}}
return movements;}catch(error){logError(error);return[];}}
if(location.pathname==="/build.php"){try{var build=$("build");if(build!==null&&build.hasClass("gid16")===true){var incoming=[];var outgoing=[];var elements=build.getChildren();var groups=[[]];var i=0;elements.each(function(element){switch(element.get("tag")){case"h4":groups[i].push(element);break;case"p":if(element.hasClass("info")===true){groups.push([]);i++;}
break;}});groups.each(function(group,i){if(i===0&&group.length>1){var hasIncomingTroops=isMovement(group[0]);if(hasIncomingTroops===true){incoming.combine(parseMovements(group[0]));if(group.length===3||group.length===4){if(isMovement(group[2])===true){outgoing.combine(parseMovements(group[2]));}}}else{if(group.length===2||group.length===3){if(isMovement(group[1])===true){outgoing.combine(parseMovements(group[1]));}}}}else if(i>0){if(isMovement(group.getLast())===true){incoming.combine(parseMovements(group.getLast()));}}});this.currentVillage.troopMovements.incoming=incoming;this.currentVillage.troopMovements.outgoing=outgoing;}}catch(error){logError(error)}}},updateTroopMovements_ORIGINAL:function(){var parseMovements=function(root){try{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;}catch(error){logError(error);}}
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.step===undefined){if(session.username===""){task.refreshSittees.step=0;}else{task.refreshSittees.step=1;}}
if(task.refreshSittees.step===0){task.refreshSittees.step++;sessionManager.saveSession();$(document.body).setStyle("cursor","wait");location.pathname="/statistiken.php";}else if(task.refreshSittees.step===1){task.refreshSittees.step++;sessionManager.saveSession();$(document.body).setStyle("cursor","wait");if(location.pathname==="/spieler.php"&&location.search==="?s=3"){location.href=location.href;}else{location.pathname="/spieler.php?uid="+session.userId;}}else if(task.refreshSittees.step===2){task.refreshSittees.step++;sessionManager.saveSession();var maxDelayInSeconds=3;var delayInMilliSeconds=Math.round(maxDelayInSeconds*1000*Math.random());$(document.body).setStyle("cursor","wait");(function(){if($("textmenu")!==null||(location.pathname!=="/spieler.php"&&location.search!=="?s=3")){location.pathname="/spieler.php?s=3";}}).delay(delayInMilliSeconds);}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){$(document.body).setStyle("cursor","wait");if(task.refreshVillagesOverview.hasRefreshedMerchants===undefined){task.refreshVillagesOverview.hasRefreshedMerchants=true;sessionManager.saveSession();location.pathname="/dorf3.php";}else{var maxDelayInSeconds=3;var delayInMilliSeconds=Math.round(maxDelayInSeconds*1000*Math.random());(function(){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;sessionManager.saveSession();var parameters="";if(session.villages.length>1){parameters="?newdid="+session.villages[n].id;}
location.pathname="/dorf1.php"+parameters;return;}}
$(document.body).setStyle("cursor");session.tasks.splice(i,1);sessionManager.saveSession();}).delay(delayInMilliSeconds);}}else if(task.goTo!==undefined){var maxDelayInSeconds=3;var delayInMilliSeconds=Math.round(maxDelayInSeconds*1000*Math.random());$(document.body).setStyle("cursor","wait");(function(){session.tasks.splice(0,1);sessionManager.saveSession();location.href=task.goTo;}).delay(delayInMilliSeconds);}});}}});var translations={" day":{"ar":" يوم","bg":" ден","cs":" den","da":" dag","de":" Tag","es":" día","fa":" روز","fi":" päivä","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","uk":" День","zh":"日"}," days":{"ar":" أيام","bg":" дни","cs":" dny","da":" dage","de":" Tagen","es":" días","fa":" روزها","fi":" päivää","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","uk":" Дні","zh":"日"}," hour":{"ar":" ساعة","bg":" час","cs":" hodina","da":" time","de":" Stunde","es":" hora","fa":" ساعت","fi":" tunti","fr":" heure","he":" שעה","hr":" sat","hu":" óra","id":" jam","it":" ora","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","uk":" Година","zh":"小時"}," hours":{"ar":" ساعات","bg":" часове","cs":" hodiny","da":" timer","de":" Stunden","es":" horas","fa":" ساعتها","fi":" tuntia","fr":" heures","he":" שעות","hr":" sati","hu":" órák","id":" jam","it":" ore","ja":"時","lt":" val.","ms":" setiap jam","nl":" uren","pl":" godziny","pt":" horas","pt-br":" horas","ro":" ore","ru":" Часы","sk":" hodiny","sl":" ure","sv":" timmar","th":" ชั่วโมง","tr":" saatler","uk":" Години","zh":"小時"}," minutes":{"ar":" دقيقة","bg":" минути","cs":" minuty","da":" minutter","de":" Minuten","es":" minutos","fa":" دقیقه","fi":" minuuttia","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","uk":" Хвилини","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":"ورژن جدید تراوبوتو در دسترس است.","fi":"Uusi versio Travobotosta on saatavilla.","fr":"Une nouvelle version de Travobotto est disponible.","he":"קיימת גירסה חדשה של טריובוטו.","hr":"Nova verzija Travobota je dostupna.","hu":"Elérhető a Travobotto legújabb verziója.","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.","uk":"З'явилася нова версія Travobotto.","zh":"有新的Travobotto版本可用."},"Arrival":{"ar":"الوصول","bg":"Пристигане","cs":"Příjezd","da":"Ankomst","de":"Ankunft","es":"Llegada","fa":"زمان رسیدن","fi":"Perillä","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","uk":"Прибуття","zh":"到達"},"Better translation:":{"ar":"ترجمة أفضل:","bg":"По-добър превод:","cs":"Lepší překlad:","de":"Bessere Übersetzung:","es":"Mejor traducción:","fa":"ترجمه بهتر:","fi":"Parempi käännös:","fr":"Meilleure traduction:","he":"תרגום יותר טוב:","hr":"Bolji prijevod:","hu":"Jobb fordítás","id":"Terjemah yang baik:","it":"Migliore traduzione:","ja":"より良い翻訳:","lt":"Geresnis vertimas:","ms":"Alih bahasa yang bagus.","nl":"Een meer correcte vertaling:","pl":"Lepsze tłumaczenie:","pt":"Melhor tradução:","pt-br":"Melhor tradução:","sk":"Lepší preklad:","sl":"Boljši prevod:","sv":"Bättre översättning:","th":"คำแปลที่ดีกว่า:","uk":"Кращий переклад:","zh":"更好的翻譯："},"Building":{"ar":"بناء","bg":"Сграда","cs":"Stavění","da":"Bygning","de":"Gebäude","es":"Construyendo","fa":"ساختمان","fi":"Rakennus","fr":"En construction","he":"בבניה","hr":"Zgrada","hu":"Építkezés","id":"Membangun","it":"Costruzione","ja":"建設","lt":"Pastatas","ms":"Bangunan","nl":"Gebouw","pl":"Budowa","pt":"Em construção","pt-br":"Construindo","ro":"Construire","ru":"Постройка","sk":"Stavanie","sl":"Zgradba","sv":"Byggnad","th":"สิ่งก่อสร้าง","tr":"Bina","uk":"Будівля","vi":"Kiến trúc","zh":"建築物"},"Cancel":{"ar":"الغاء","bg":"Oтменям","cs":"Zrušit","de":"Abbrechen","es":"Cancelar","fa":"لغو","fi":"Peruuta","fr":"Annuler","he":"ביטול","hr":"Odustani","hu":"Mégse","id":"Batal","it":"Cancella","ja":"キャンセル","lt":"Atšaukti","ms":"Padam","nl":"Annuleer","pl":"Anulowanie","pt":"Cancelar","pt-br":"Cancelar","sk":"Zrušiť","sl":"Ustavi","sv":"Avbryt","th":"ยกเลิก","tr":"Geri","uk":"Відмінити","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":"هر روز برای ورژن جدید تراوبوتو را چک کنید","fi":"Tarkista onko Travoboton uusin versio kerran päivässä","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","hu":"A Travobotto újabb verziójának keresése naponta egyszer","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":"Check voor een nieuwe versie elke dag","pl":"Sprawdzaj nową wersje Travobotto raz dziennie","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 วันละครั้ง","tr":"Travobottonun yeni versiyonu var mı?","uk":"Перевіряти наявність нових версій Travobotto один раз на добу","zh":"每日檢查Travobotto新版本"},"Clay":{"ar":"الطين","bg":"Глина","cs":"Hlína","da":"Ler","de":"Lehm","es":"Barro","fa":"خشت","fi":"Savi","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","uk":"Глина","vi":"Đất sét","zh":"泥"},"Completed":{"ar":"إنتهاء في","bg":"Завършен","cs":"Kompletní","da":"Færdig","de":"Fertiggestellt","es":"Completado","fa":"تمام شد","fi":"Valmis","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":"เสร็จสิ้น","tr":"Tamamlandı","uk":"Завершення","vi":"Kết thúc","zh":"完成"},"Consumption":{"ar":"الإستهلاك","bg":"Консумация","cs":"Spotřeba","da":"Forbrug","de":"Verbrauch","es":"Consumo","fa":"مصرف","fi":"Kulutus","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","uk":"Споживання","vi":"Tiêu thụ","zh":"消耗量"},"Crop":{"ar":"القمح","bg":"Жито","cs":"Obilí","da":"Korn","de":"Getreide","es":"Cereales","fa":"گندم","fi":"Vilja","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","uk":"Зерно","vi":"Lúa","zh":"糧"},"Current translation:":{"ar":"الترجمة الحالية:","bg":"Сегашен превод:","cs":"Aktuální překlad:","de":"Derzeitige Übersetzung:","es":"Traducción actual:","fa":"ترجمه موجود:","fi":"Tämänhetkinen käännös:","fr":"Traduction actuelle:","he":"התרגום הנוכחי:","hr":"Trenutni prijevod:","hu":"Jelenlegi fordítás:","id":"Terjemah sekarang:","it":"Traduzione corrente:","ja":"現在の翻訳:","lt":"Dabartinis vertimas:","ms":"Bahasa sekarang:","nl":"Huidige vertaling:","pl":"Aktualne tłumaczenie:","pt":"Tradução atual:","pt-br":"Tradução atual:","sk":"Aktuálni preklad:","sl":"Trenutni prevod:","sv":"Nuvarande översättning:","th":"การแปลปัจจุบัน:","uk":"Поточний переклад:","zh":"當前翻譯："},"Data possibly outdated. Last update was over %s ago. Click to update.":{"description":'<em>%s</em> will be internally replaced by the timespan, e.g. "38 minutes" or "2 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.","hu":"Az adatok elavultak. Az utolsó frissítés tobb mint %s óta volt. Kattints ide a frissítéshez.","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.","nl":"Data mogelijk verouderd. Laatste update, %s geleden. Klik om te vernieuwen.","pl":"Data prawdopodobnie jest błędna. Ostatnia aktualizacja została zakończona %s temu. Kliknij, aby zaktualizować.","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.","hu":"Segíts nekem lefordítani Travobottót! Fordítsd le azt, amit tudsz, és terjeszd be az alakot. Figyelj a központozásra. Használja a Travian használat kifejezéseket-játék.","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.","nl":"Help mij om Travobotto te vertalen! Vertaal wat je weet en verstuur dit formulier. Let op de punten. Gebruik de termen die travian in-game gebruikt.","pl":"Pomóż mi przetłumaczyć Travobotto! Przetłumacz wszystko co potrafisz przetłumaczyć. Uważaj na znaki interpunkcyjne. Używaj odpowiednich nazw dla gry.","pt":"Ajuda-me a traduzir Travobotto! Traduz o que sabes e envia o formulário. Toma atenção à pontuação. Utiliza 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.","uk":"Допоможіть мені перекласти Travobotto! Перекладіть все що зможете і заповніть форму. Зверніть увагу на пунктуацію. Використовуйте терміни, які використовуються в Травіан.","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":"کمک در ترجمه","fi":"Auta kääntämään","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 met vertalen","pl":"Pomóż w tłumaczeniu","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","uk":"Допоможіть перекласти","zh":"幫忙翻譯"},"Hide":{"ar":"إخفاء","bg":"Скрий","cs":"Skrýt","da":"Gem","de":"Ausblenden","es":"Ocultar","fa":"پنهان شدن","fi":"Piilota","fr":"Caché","he":"החבא","hr":"Sakrij","hu":"Rejteni","id":"Sembunyi","it":"Nascondi","ja":"隠す","lt":"Slėpti","ms":"Sembunyi","nl":"Verbergen","pl":"Ukryj","pt":"Esconder","pt-br":"Esconder","ro":"Ascunde","ru":"Скрыть","sk":"Skryť","sl":"Skrij","sv":"Dölj","th":"ซ่อน","tr":"Gizle","uk":"Сховати","zh":"隱藏"},"Hint:":{"ar":"تلميح:","cs":"Nápověda:","de":"Hinweis:","fa":"وظیفه:","fi":"Neuvo:","he":"רמז:","hr":"Savet:","lt":"Patarimas:","nl":"Hint:","pl":"Wskazówka:","pt":"Sugestão:","pt-br":"Dica:","th":"บอกใบ้:","uk":"Порада:"},"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:","hu":"Tétlen falvak:","id":"Desa idle:","it":"Villaggi inattivi:","lt":"Kaimai be darbo:","ms":"Kampung yang tidak beroperasi:","nl":"Inactieve dorpen:","pl":"Bezczynne osady:","pt":"Aldeias paradas:","pt-br":"Aldeias desocupadas:","ru":"Незанятые деревни:","sk":"V dedine sa nestavia:","sl":"Nedejavna naselja:","sv":"Stillastående byar:","th":"หมู่บ้านที่ไม่ทำงาน:","uk":"Незайняті поселення:","zh":"閒置村莊："},"Install":{"ar":"تثبيت","bg":"Инсталирай","cs":"Instalovat","da":"Installer","de":"Installieren","es":"Instalar","fa":"نصب","fi":"Asenna","fr":"Installer","he":"התקן","hr":"Instalacija","hu":"Telepíteni","id":"Instal","it":"Installa","lt":"Įrašyti","ms":"Simpan","nl":"Installeren","pl":"Instaluj","pt":"Instalar","pt-br":"Instalar","ro":"Instaleaza","ru":"Установить","sk":"Instalovať","sl":"Namesti","sv":"Installera","th":"ติดตั้ง","tr":"Yükle","uk":"Встановити","zh":"安裝"},"Iron":{"ar":"الحديد","bg":"желязо","cs":"Železo","da":"Jern","de":"Eisen","es":"Hierro","fa":"آهن","fi":"Rauta","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","uk":"Залізо","vi":"Sắt","zh":"鐵"},"Language: ":{"ar":"لغة: ","bg":"Език: ","cs":"Jazyk: ","da":"Sprog: ","de":"Sprache: ","es":"Lenguaje: ","fa":"زبان: ","fi":"Kieli: ","fr":"Langue: ","he":"שפה: ","hr":"Jezik: ","hu":"Nyelv: ","id":"Bahasa: ","it":"Lingua: ","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: ","uk":"Мова: ","zh":"語言： "},"Log in automatically":{"ar":"تسجيل الدخول تلقائيا","bg":"Влизай автоматично","cs":"Přihlásit automaticky","da":"Log ind automatisk","de":"Automatisch einloggen","es":"Log in automáticamente","fa":"ورود اتوماتیک","fi":"Kirjaudu sisään automaattisesti","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ş","uk":"Заходити в гру автоматично","zh":"自動登入"},"Lumber":{"ar":"الخشب","bg":"Дърво","cs":"Dřevo","da":"Tømmer","de":"Holz","es":"Madera","fa":"چوب","fi":"Puu","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","uk":"Дерево","vi":"Gỗ","zh":"木"},"Merchants":{"ar":"تجار","bg":"Търговеца","cs":"Obchodníci","da":"Handelsmænd","de":"Händler","es":"Mercaderes","fa":"تجار","fi":"Kauppiaat","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ı","uk":"Торговці","vi":"Lái Buôn","zh":"商人"},"none":{"ar":"بلا","bg":"няма","cs":"nikdo","da":"ingen","de":"keine","es":"nada","fa":"هیچ","fi":"ei yhtään","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":"ไม่มี","uk":"немає","zh":"沒有"},"New language":{"ar":"لغة جديدة","bg":"Нов език","cs":"Nový jazyk","de":"Neue Sprache","es":"Nuevo idioma","fa":"زبان جدید","fi":"Uusi kieli","fr":"Nouvelle langue","he":"שפה חדשה","hr":"Novi jezik","hu":"Új nyelv","id":"Bahasa baru","it":"Nuova lingua","ja":"新しい村","lt":"Nauja kalba","ms":"Bahasa baru","nl":"Nieuwe taal","pl":"Nowy język","pt":"Novo idioma","pt-br":"Novo idioma","ru":"Новый язык","sk":"Nový jazyk","sl":"Nov jezik","sv":"Ny översättning","th":"ภาษาใหม่","uk":"Інша мова","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.","hu":"Adat nem gyűlt össze még. Kattints redőadatokba.","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.","nl":"Nog geen data verzameld. Klik om data te verzamelen.","pl":"Brak danych. Kliknij, aby zebrać dane.","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:","fa":"عبارت اصلی:","fi":"Alkuperäinen lause:","fr":"Phrase originale:","he":"ביטוי מקורי:","hr":"Originalna fraza:","id":"Frase asli:","lt":"Originali frazė:","ms":"Bahasa asal:","nl":"Oorspronkelijke zin:","pl":"Orginalny tekst:","pt":"Sentença original:","pt-br":"Sentença original:","sk":"Pôvodná veta:","sl":"Originalna fraza:","sv":"Original fras:","th":"วลีเดิม:","uk":"В оригіналі:","zh":"原件短語："},"Password:":{"ar":"كلمة المرور:","bg":"Парола:","cs":"Heslo:","da":"Kodeord:","de":"Passwort:","es":"Contraseña:","fa":"رمز ورود:","fi":"Salasana:","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:","uk":"Пароль:","vi":"Mật khẩu:","zh":"密碼："},"Preferences":{"ar":"الخيارات","bg":"Предпочитания","cs":"Preference","da":"Indstillinger","de":"Einstellungen","es":"Preferencias","fa":"تنظیمات","fi":"Asetukset","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","uk":"Налаштування","zh":"偏好設定"},"Refresh list":{"ar":"تحديث القائمة","bg":"Презареди листа","cs":"Obnova listu","da":"Opdater liste","de":"Liste aktualisieren","es":"Refrescar lista","fa":"بارگذاری لیست","fi":"Päivitä lista","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","nl":"Vernieuw lijst","pl":"Odśwież liste","pt":"Actualizar lista","pt-br":"Atualizar lista","ru":"Обновить список","sk":"Obnova listu","sl":"Osveži seznam","sv":"Förnya listan","th":"รีเฟรชรายการ","tr":"Yenileme listesi","uk":"Обновити сторінку","zh":"重新載入列表"},"Reset Travobotto":{"ar":"إعادة Travobotto","bg":"Рестартирай Travobotto","cs":"Restartovat Travobotto","da":"Nulstil Travobotto","de":"Travobotto zurücksetzen","es":"Resetear Travobotto","fa":"تنظیم مجدد تراوبوتو","fi":"Resetoi Travobotto","fr":"Réinitialiser Travobotto","he":"אתחל טריובוטו","hr":"Resetiraj Travobotto","hu":"Travobotto alaphelyzetbe","it":"Resetta Travobotto","lt":"Atsatyti Travobotto","nl":"Herstel Travobotto","pl":"Zresetuj Travobotto","pt":"Reiniciar Travobotto","pt-br":"Resetar Travobotto","ru":"Сбросить Travobotto","sk":"Reštartovať Travobotto","sl":"Resetiraj Travobotto","sv":"Starta om Travobotto","th":"เริ่ม Travobotto ใหม่","tr":"Travobotto yu yenile","uk":"Перезавантажити Travobotto","zh":"重設Travobotto"},"Resources":{"ar":"الموارد","cs":"Zdroje","de":"Rohstoffe","fa":"منابع","fi":"Resurssit","fr":"Ressources","he":"משאבים","lt":"Resursai","hr":"Resursi","nl":"Grondstoffen","pl":"Zasoby","pt":"Recursos","pt-br":"Recursos","ru":"Ресурсы","th":"ทรัพยากร","uk":"Ресурси","zh":"資源"},"Show Travobotto":{"ar":"أظهار Travobotto","bg":"Покажи Travobotto","cs":"Ukázat Travobotto","da":"Vis Travobotto","de":"Travobotto einblenden","es":"Mostrar Travobotto","fa":"نشان دادن تراوبوتو","fi":"Näytä Travobotto","fr":"Montrer Travobotto","he":"הראה טריובוטו","hr":"Pokazi Travobotto","hu":"Mutasd a Travobotto-t","it":"Mostra Travobotto","lt":"Rodyti Travobotto","ms":"Tunjukkan Travobotto","nl":"Toon Travobotto","pl":"Pokaż 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","uk":"Показати Travobotto","zh":"顯示Travobotto"},"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":"نمایش یا عدم نمایش Travobotto با یک کلیک","fi":"Näytä/piilota Travobotto painamalla","fr":"Interface d'interrupteur à bascule en appuyant","he":'הראה/הסתר את טריבוטו ע"י הקשה על:',"hr":"Pritisnite za izmjenu maske","it":"Mostra/nascondi Travobotto premendo","lt":"Pakeiskite išvaizdą spausdami čia","ms":"Ubah dengan menekan butang ini","nl":"Toon/verberg Travobotto door te klikken","pl":"Pokaż/ukryj Travobotto przez użycie","pt":"Mudar de interface primindo","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":"สลับหน้าจอโดยการกด","uk":"Щоб показати/сховати Travobotto нажміть","zh":"開/關快捷按鍵"},"Sittees":{"description":"Sittees are players who share their account with you so you can take care of it while they are away. You could also say <em>Protégés</em>. In German it is <em>Schützlinge</em>. If it is too hard to translate, simply translate <em>Shared Accounts</em>.","ar":"التوكيلات","bg":"Ситъри","cs":"Opatrovník","da":"Kontorepræsentanter","de":"Schützlinge","es":"Representados","fa":"جانشین ها","fi":"Kylävahdit","fr":"Protégés","he":"שומרי חשבון ","hr":"Sitteri","hu":"Helyettesek","it":"Sitter","lt":"Siteriai","ms":"Penjaga","nl":"Sitters","pl":"Zastępca","pt":"Sitters","pt-br":"Sitados","ru":"Заместители","sk":"Opatrovateľ","sl":"Sitterji","th":"แหล่งที่ตั้ง","uk":"Замісник","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":"هرگونه مشکلی را از بین ببرید. پابلیش نکنید.","fi":"Jotta voin selvittää pulmat. Ei tulla julkaisemaan.","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":"","pl":"Tylko dla wyjaśnienia wątpliwości dotyczących tłumaczenia. Adres nie zostanie opublikowany.","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":"ترجمه را ارائه دهید","fi":"Lisää käännös","fr":"Proposer une traduction","he":"שלח תרגום ","hr":"Posalji prijevod","id":"Kirim terjemahan","it":"Manda traduzione","lt":"Pateikti vertimą","ms":"Hantar alih bahasa","nl":"Stuur vertaling op","pl":"Wyślij tłumaczenie","pt":"Enviar tradução","pt-br":"Enviar tradução","ru":"Отослать перевод","sk":"Odovzdať preklad","sl":"Objavi prevod","sv":"Skicka översättning","th":"ส่งคำแปล","uk":"Відіслати переклад","zh":"呈交翻譯"},"Tasks":{"ar":"المهام","cs":"Úkoly","de":"Aufgaben","fa":"فعالیت ها","fi":"Tehtävät","fr":"Tâches","he":"משימות","hr":"Zadaci","lt":"Užduotys","nl":"Opdrachten","pl":"Zadania","pt":"Tarefas","pt-br":"Tarefas","ru":"Задачи","th":"ภารกิจ","uk":"Завдання","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":"از همکاری شما متشکریم!","fi":"Kiitos avusta!","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!","nl":"Bedankt voor je bijdrage!","pl":"Dziękujemy za udział!","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":"ขอขอบคุณสำหรับการสนับสน� ��นของคุณ!","uk":"Дякую Вам за внесок!","zh":"多謝你的功勞"},"Time left":{"ar":"الوقت المتبقي","bg":"Останало време","cs":"Čas vypršel","da":"Tid tilbage","de":"Verbleibende Zeit","es":"Tiempo restante","fa":"زمان مانده","fi":"Aikaa jäljellä","fr":"Temps restant","he":"זמן שנישאר","hr":"Vrijeme preostalo","hu":"Idő hátra","id":"Waktu selesai","it":"Tempo rimanente","lt":"Liko laiko","ms":"Masa yg tinggal","nl":"Resterende tijd","pl":"Pozostały czas","pt":"Tempo restante","pt-br":"Tempo restante","ro":"Timp ramas","ru":"Осталось","sk":"Čas vypršal","sl":"Dokončano čez","sv":"Tid kvar","th":"เวลาที่เหลือ","tr":"Kalan zaman","uk":"Залишилось часу","vi":"Thời gian diễn ra","zh":"時間倒數"},"Totals":{"ar":"المجموع","bg":"Общо","cs":"Souhrny","da":"Totaler","de":"Insgesamt","es":"Totales","fa":"مجموع","fi":"Yhteensä","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","uk":"Загалом","zh":"總數"},"Translate into":{"ar":"لغة الترجمة","bg":"Преведете на","cs":"Přeložit do","de":"Übersetze in","es":"Traducir a","fa":"ترجمه به","fi":"Käännä jhk","fr":"Traduire par","he":"תרגם ל ","hr":"Prevedi na","hu":"Fordítani","id":"Terjemah ke dalam","it":"Traduci in","lt":"Išversti į","ms":"Alih bahasa ke","nl":"Vertaal naar","pl":"Przetłumacz na","pt":"Traduzir para","pt-br":"Traduzir para","sk":"Preložiť do","sl":"Prevedi v","sv":"Översätt till","th":"แปลเป็น","uk":"Перекладіть","zh":"翻譯成"},"Translation:":{"ar":"الترجمة:","bg":"Превод:","cs":"Překlad:","de":"Übersetzung:","es":"Traducción:","fa":"ترجمه:","fi":"Käännös:","fr":"Traduction:","he":"תרגום:","hr":"Prijevod:","hu":"Fordítani:","id":"Terjemahan:","it":"Traduzione:","lt":"Vertimas:","ms":"Alih bahasa:","nl":"Vertaling:","pl":"Tłumaczenie:","pt":"Tradução:","pt-br":"Tradução:","ru":"Перевод:","sk":"Preklad:","sl":"Prevod:","sv":"Översättning:","th":"แปล:","uk":"Переклад:","zh":"翻譯成："},"Translation starts here":{"ar":"بداء الترجمه من هنا","bg":"Преводът запчва от тук","cs":"Překlad starts here","de":"Übersetzung beginnt hier","es":"La traducción comienza aquí","fa":"ترجمه شروع می شود از اینجا","fi":"Kääntäminen alkaa tästä","fr":"Traduction commence ici","he":"התרגום מתחיל מכאן ","hr":"Prijevod pocinje ovdje","id":"Terjemah dimulai sekarang","it":"La traduzione comincia qui","lt":"Vertimo pradžia","ms":"Alih bahasa bermula di sini","nl":"De vertaling begint hier","pl":"Tłumaczenie zaczynasz tutaj","pt":"Tradução inicia-se aqui","pt-br":"Tradução inicia-se aqui","sk":"Preklad začína tu","sl":"Prevod se začne tukaj","sv":"Översättningen börjar här","th":"แปล เริ่มที่","uk":"Переклад починається тут","zh":"翻譯由此開始"},"Troop movements":{"ar":"تحركات القوات","bg":"Придвижване на войските","cs":"Přesuny","da":"Troppebevægelser","de":"Truppenbewegungen","es":"Movimientos de tropas","fa":"حرکت لشگریان","fi":"Joukkojen liikkeet","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","uk":"Пересування військ","vi":"Di Chuyển Lính","zh":"軍隊移動"},"Update merchants data":{"ar":"تحديث بيانات التجار","bg":"Обнови данните за търговците","cs":"Obnovit obchodní data","da":"Opdater handelsmændsdata","de":"Händlerdaten aktualisieren","es":"Actualizar datos de mercaderes","fa":"تنظیم مجدد تجار","fi":"Päivitä kauppiaiden tiedot","fr":"Mettez à jour les données des 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","nl":"Update handelaren","pl":"Aktualizacja danych handlowców","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":"ปรับปรุงข้อมูลพ่อค้า","uk":"Обновити дані торговців","zh":"更新商人資料"},"Update villages data":{"ar":"تحديث بيانات القرى","bg":"Обнови данните за градовете","cs":"Obnovit vesnické data","da":"Opdater landsbyerdata","de":"Dörferdaten aktualisieren","es":"Actualizar datos de aldeas","fa":"تنظیم مجدد دهکده ها","fi":"Päivitä kylien tiedot","fr":"Mettez à jour les données des 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","nl":"Update dorpen","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","uk":"Обновити дані поселень","zh":"更新杓莊資料"},"Username:":{"ar":"أسم المستخدم:","bg":"Потребителско име:","cs":"Jméno:","da":"Brugernavn:","de":"Benutzername:","es":"Usuario:","fa":"نام کاربری:","fi":"Käyttätunnus:","he":"שם מישתמש:","hr":"Korisnicko ime:","hu":"Felhasználónév:","it":"Nome utente:","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ı:","uk":"Логін:","vi":"Tên truy cập:","zh":"玩家名稱："},"Village":{"ar":"قرية","bg":"Град","cs":"Vesnice","da":"Landsby","de":"Dorf","es":"Aldea","fa":"دهکده","fi":"Kylä","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","uk":"Поселення","vi":"Làng","zh":"村莊"},"Villages":{"ar":"القرى","bg":"Градове","cs":"Vesnice","da":"Landsbyer","de":"Dörfer","es":"Aldeas","fa":"دهکده ها","fi":"Kylät","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","uk":"Поселення","vi":"Làng","zh":"村莊"},"You don't have any sittees.":{"description":"Alternatively, you can translate <em>No one shares his account with you.</em>","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":"شما هیچ جانشینی ندارید","fi":"Sinulla ei ole yhtään kylävahteja.","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":"シッターはいません","lt":"Jūs neturite jokio siterių.","ms":"Anda tiada penjaga.","nl":"Je hebt geen sitters.","pl":"Nie możesz dodać zastępców.","pt":"Não tens sitters.","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":"คุณยังไม่มีแหล่งที่ตั้ง.","uk":"У вас немає замісників.","zh":"你沒有任何代管."},"Your e-mail address (optional):":{"ar":"عنوان بريدك الإلكتروني (اختياري):","bg":"Твоят e-mail адрес (по избор):","cs":"Vaše emailová adresa (volitelně):","da":"Din e-mail addresse (frivillig):","de":"Deine E-Mail-Addresse (optional):","es":"Tu dirección de e-mail (opcional):","fa":"ایمیل شما:","fi":"Sähköpostiosoitteesi (valinnainen):","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):","nl":"Je e-mail (optioneel):","pl":"Twój adres e-mailowy (opcjonalne):","pt":"O teu endereço de e-mail (opcional):","pt-br":"Teu 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ı):","uk":"Ваш e-mail (необов'язково):","zh":"你的電郵地址(可不填)："}}
var UpdateChecker=new Class({isUpdateAvailable:function(){if(new Date(appWideSession.updates.lastCheck*1000).getDate()!==new Date().getDate()&&player.isLoggedIn()===true){appWideSession.updates.lastCheck=new Date().getUnixTime();sessionManager.saveAppWideSession();this.checkForUpdate();}
return appWideSession.updates.latestVersion>version;},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;if(session.isTravianPlus===true){misc+=",1";}else{misc+=",0";}
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();var pattern=/^[0-9]+$/;if(pattern.test(latestVersion)===true){if(appWideSession.updates.latestVersion<latestVersion){appWideSession.updates.availableSince=new Date().getUnixTime();}
appWideSession.updates.latestVersion=latestVersion;sessionManager.saveAppWideSession();}}});}});var UserInterface=new Class({create:function(){this.loadStylesheet();this.buildBasics();this.addKeyboardShortcuts();this.builtPages=[];this.switchToPage(session.ui.page);this.outerBox.inject(document.body)
if(session.ui.isVisible===false){this.hide();}},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 dragHandle=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"}).inject(innerBox);var navigationItemVillages=new Element("li",{class:"travobotto-navigation-item"}).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);if(session.sittees.length>0&&session.username!==""){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);});}else{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:{}});tasksManager.executeTasks();}},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);var drag=new Drag(this.outerBox,{handle:dragHandle,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)});},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);return page;},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-heading",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);return page;},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);}
buildResourcesSection=function(){var resourcesTableHeading=new Element("div",{class:"travobotto-heading travobotto-clickable",events:{click:function(){var table=$("travobotto-resources-table");var icon=$("travobotto-resources-table-heading-icon");if(table.getStyle("display")==="none"){table.setStyle("display");icon.setProperty("src",collapseIcon);session.ui.showResources=true;}else{table.setStyle("display","none");icon.setProperty("src",expandIcon);session.ui.showResources=false;}
sessionManager.saveSession();}},html:_("Resources")}).inject(page);var resourcesTableHeadingIcon=new Element("img",{class:"travobotto-heading-icon",height:16,id:"travobotto-resources-table-heading-icon",src:collapseIcon,width:16}).inject(resourcesTableHeading,"top");var resourcesTable=new Element("table",{id:"travobotto-resources-table"}).inject(page);if(session.ui.showResources===false){resourcesTable.setStyle("display","none");resourcesTableHeadingIcon.setProperty("src",expandIcon);}
var resourcesTableHeadRow=new Element("tr").inject(resourcesTable);var resourcesTableHeadVillage=new Element("th",{colspan:2,html:_("Village")}).inject(resourcesTableHeadRow);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(resourcesTableHeadVillage);new Element("th",{html:_("Lumber")}).inject(resourcesTableHeadRow);new Element("th",{html:_("Clay")}).inject(resourcesTableHeadRow);new Element("th",{html:_("Iron")}).inject(resourcesTableHeadRow);new Element("th",{html:_("Crop")}).inject(resourcesTableHeadRow);new Element("th",{html:_("Consumption")}).inject(resourcesTableHeadRow);var resourcesTableHeadMerchants=new Element("th",{html:_("Merchants")}).inject(resourcesTableHeadRow);new Element("img",{class:"travobotto-clickable travobotto-resources-table-head-icon",events:{click:function(){tasksManager.addTask({goTo:"/dorf3.php"});tasksManager.addTask({goTo:location.href});tasksManager.executeTasks();}},height:16,src:refreshIcon,title:_("Update merchants data"),width:16}).inject(resourcesTableHeadMerchants);var totalResourceLimit={"lumber":0,"clay":0,"iron":0,"crop":0,"cropConsumption":0};session.villages.each(function(village,i){var resourcesTableBodyRow=new Element("tr",{class:"travobotto-resources-table-row"}).inject(resourcesTable);var villageNameCell=new Element("td").inject(resourcesTableBodyRow);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(resourcesTableBodyRow);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);warnOfOutdatedResourceData(village,outdatedDataWarning);warnOfOutdatedResourceData.periodical(60000,this,[village,outdatedDataWarning]);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);}
["lumber","clay","iron","crop","cropConsumption"].each(function(resourceType){var cell=createResourceCell(village,resourceType).inject(resourcesTableBodyRow);if(resourceType!=="cropConsumption"&&village.production[resourceType]!==0){refreshResourceCell.periodical(Math.abs(Math.round(3600/village.production[resourceType]*1000)),this,[village,resourceType,cell]);}});var merchantsCell=createMerchantsCell(village).inject(resourcesTableBodyRow);totalResourceLimit["lumber"]+=village.resources.lumber.limit;totalResourceLimit["clay"]+=village.resources.clay.limit;totalResourceLimit["iron"]+=village.resources.iron.limit;totalResourceLimit["crop"]+=village.resources.crop.limit;totalResourceLimit["cropConsumption"]+=village.consumption.crop.limit;});var resourcesTableFootRow=new Element("tr",{class:"travobotto-resources-table-row"}).inject(resourcesTable);if(session.villages.length===1){resourcesTableFootRow.setStyle("display","none");}
new Element("td",{colspan:2,html:_("Totals")}).inject(resourcesTableFootRow);var totalResourceCells={"lumber":createResourceCell("total","lumber").inject(resourcesTableFootRow),"clay":createResourceCell("total","clay").inject(resourcesTableFootRow),"iron":createResourceCell("total","iron").inject(resourcesTableFootRow),"crop":createResourceCell("total","crop").inject(resourcesTableFootRow),"cropConsumption":createResourceCell("total","cropConsumption").inject(resourcesTableFootRow)}
new Element("td").inject(resourcesTableFootRow);function getResourceAmount(village,resourceType){if(village==="total"){var amount=0;session.villages.each(function(village){amount+=getResourceAmount(village,resourceType);});return amount;}else{if(resourceType==="cropConsumption"){return village.consumption.crop.count;}else{var amount=Math.floor(village.resources[resourceType].count+village.production[resourceType]/3600*(new Date().getUnixTime()-village.resources.updated));var limit=getResourceLimit(village,resourceType);if(amount<0){amount=0;}else if(amount>limit){amount=limit;}
return amount;}}}
function getResourceLimit(village,resourceType){if(village==="total"){return totalResourceLimit[resourceType];}else{if(resourceType==="cropConsumption"){return village.consumption.crop.limit;}else{return village.resources[resourceType].limit;}}}
function getResourcePercentage(village,resourceType){var limit=getResourceLimit(village,resourceType);var percentage=0;var percentageForDisplay=0;if(limit>0){percentage=getResourceAmount(village,resourceType)/limit*100;percentageForDisplay=Math.floor(percentage*10)/10;if(percentage>100){percentage=100;}}
return[percentage,percentageForDisplay];}
function getResourceFillState(village,resourceType){if(village==="total"){if(resourceType==="cropConsumption"){var percentage=getResourcePercentage("total",resourceType)[0];if(percentage>95){return 2;}else if(percentage>80){return 1;}
return 0;}else{var totalSpace=0;var totalProduction=0;session.villages.each(function(village){totalSpace+=getResourceLimit(village,resourceType)-getResourceAmount(village,resourceType);totalProduction+=village.production[resourceType];});var minutesNeededToFillTotalSpace=totalSpace/totalProduction*60;if(minutesNeededToFillTotalSpace<=60){return 2;}else if(minutesNeededToFillTotalSpace<=180){return 1}
return 0;}}else{if(resourceType==="cropConsumption"){if(village.consumption.updated===0){return 0;}
if(village.consumption.crop.count>0){var percentage=getResourcePercentage(village,resourceType)[0];if(percentage>95){return 2;}else if(percentage>80){return 1;}
return 0;}
return 2;}else{if(village.resources.updated===0){return 0;}
if(getResourceAmount(village,resourceType)>0){var space=getResourceLimit(village,resourceType)-getResourceAmount(village,resourceType);var minutesNeededToFillSpace=space/village.production[resourceType]*60;if(minutesNeededToFillSpace<=60){return 2;}else if(minutesNeededToFillSpace<=180){return 1}
return 0;}
return 2;}}}
function createResourceCell(village,resourceType){var percentage=getResourcePercentage(village,resourceType);var amount=getResourceAmount(village,resourceType);var limit=getResourceLimit(village,resourceType);var fillState=getResourceFillState(village,resourceType);var cell=new Element("td",{class:"travobotto-resource-cell"});var bar=new Element("div",{class:"travobotto-resource-cell-bar",styles:{width:percentage[0]+"%"}}).inject(cell);var content=new Element("div",{class:"travobotto-resource-cell-bar-content"}).inject(bar);var amountContent=new Element("span",{class:"travobotto-resource-cell-amount",html:amount+"/"+limit}).inject(content);if(session.ui.showResourceAmounts===false){amountContent.addClass("travobotto-resource-cell-amount-hidden");}
var percentageContent=new Element("span",{class:"travobotto-resource-cell-percentage",html:percentage[1]+"%"}).inject(content);if(session.ui.showResourcePercentages===false){percentageContent.addClass("travobotto-resource-cell-percentage-hidden");}
if(fillState===1){cell.addClass("travobotto-resource-cell-warning");bar.addClass("travobotto-resource-cell-bar-warning");}else if(fillState===2){cell.addClass("travobotto-resource-cell-danger");bar.addClass("travobotto-resource-cell-bar-danger");}
return cell;}
function refreshResourceCell(village,resourceType,cell){var amount=getResourceAmount(village,resourceType);var limit=getResourceLimit(village,resourceType);if(amount<=limit){var percentage=getResourcePercentage(village,resourceType);var fillState=getResourceFillState(village,resourceType);cell.getElement(".travobotto-resource-cell-bar").setStyle("width",percentage[0]+"%");cell.getElement(".travobotto-resource-cell-amount").set("html",amount+"/"+limit);cell.getElement(".travobotto-resource-cell-percentage").set("html",percentage[1]+"%");if(fillState===1){cell.addClass("travobotto-resource-cell-warning");cell.getElement(".travobotto-resource-cell-bar").addClass("travobotto-resource-cell-bar-warning");}else if(fillState===2){cell.removeClass("travobotto-resource-cell-warning");cell.getElement(".travobotto-resource-cell-bar").removeClass("travobotto-resource-cell-bar-warning");cell.addClass("travobotto-resource-cell-danger");cell.getElement(".travobotto-resource-cell-bar").addClass("travobotto-resource-cell-bar-danger");}
if(village!=="total"){refreshResourceCell("total",resourceType,totalResourceCells[resourceType]);}}}
function warnOfOutdatedResourceData(village,icon){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");}}
icon.setProperty("title",_("Data possibly outdated. Last update was over %s ago. Click to update.").replace("%s",timeAgoInWords));icon.setStyle("display","inline");}}
function getMerchantsPercentage(village){var percentage=0;var percentageForDisplay=0;if(village.merchants.total>0){percentage=village.merchants.available/village.merchants.total*100;percentageForDisplay=Math.floor(percentage*10)/10;}
return[percentage,percentageForDisplay];}
function createMerchantsCell(village){var percentage=getMerchantsPercentage(village);var cell=new Element("td",{class:"travobotto-resource-cell"});var bar=new Element("div",{class:"travobotto-resource-cell-bar",styles:{width:percentage[0]+"%"}}).inject(cell);var content=new Element("div",{class:"travobotto-resource-cell-bar-content"}).inject(bar);var amountContent=new Element("span",{class:"travobotto-resource-cell-amount",html:village.merchants.available+"/"+village.merchants.total}).inject(content);if(session.ui.showMerchantCounts===false){amountContent.addClass("travobotto-resource-cell-merchant-count-hidden");}
var percentageContent=new Element("span",{class:"travobotto-resource-cell-percentage",html:percentage[1]+"%"}).inject(content);if(session.ui.showMerchantPercentages===false){percentageContent.addClass("travobotto-resource-cell-merchant-percentage-hidden");}
if(village.merchants.available===0&&village.merchants.total>0){cell.addClass("travobotto-resource-cell-danger");bar.addClass("travobotto-resource-cell-bar-danger");}
return cell;}}
buildTasksSection=function(){try{var tasksTableHeading=new Element("div",{class:"travobotto-heading travobotto-clickable",events:{click:function(){var table=$("travobotto-tasks-section");var icon=$("travobotto-tasks-table-heading-icon");if(table.getStyle("display")==="none"){table.setStyle("display");icon.setProperty("src",collapseIcon);session.ui.showTasks=true;}else{table.setStyle("display","none");icon.setProperty("src",expandIcon);session.ui.showTasks=false;}
sessionManager.saveSession();}},html:_("Tasks")}).inject(page);var tasksTableHeadingIcon=new Element("img",{class:"travobotto-heading-icon",height:16,id:"travobotto-tasks-table-heading-icon",src:collapseIcon,width:16}).inject(tasksTableHeading,"top");var tasksCount=new Element("span",{class:"travobotto-heading-hint"}).inject(tasksTableHeading);var tasksSection=new Element("div",{id:"travobotto-tasks-section"}).inject(page);if(session.ui.showTasks===false){tasksSection.setStyle("display","none");tasksTableHeadingIcon.setProperty("src",expandIcon);}
var numberOfTasks=0;var buildingsQueueTable=new Element("table",{class:"travobotto-data-table",id:"travobotto-tasks-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();numberOfTasks-=1;tasksCount.set("html"," ("+numberOfTasks+")");}}
var timer=refreshTimeLeft.periodical(1000);numberOfTasks+=1;});});tasksCount.set("html"," ("+numberOfTasks+")");buildingsQueueTable.inject(tasksSection);var idleVillagesBox=new Element("div",{class:"travobotto-content-box",html:"<strong>"+_("Idle villages:")+"</strong>",id:"travobotto-idle-villages-list"}).inject(tasksSection);var 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();}catch(error){logError(error);}}
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();}else{numberOfMovements-=1;troopMovementsCount.set("html"," ("+numberOfMovements+")");}}}
var timer=refreshTimeLeft.periodical(1000);Element("td",{html:new Date().getCompletionTime(movement[1])}).inject(troopMovementsTableRow);numberOfMovements+=1;}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 troopMovementsHeading=new Element("div",{class:"travobotto-heading travobotto-clickable",events:{click:function(){var table=$("travobotto-troop-movements-table");var icon=$("travobotto-troop-movements-heading-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",{class:"travobotto-heading-icon",height:16,id:"travobotto-troop-movements-heading-icon",src:collapseIcon,width:16}).inject(troopMovementsHeading,"top");var troopMovementsCount=new Element("span",{class:"travobotto-heading-hint"}).inject(troopMovementsHeading);var troopMovementsTable=new Element("table",{class:"travobotto-data-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 numberOfMovements=0;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(numberOfMovements>0){troopMovementsCount.set("html"," ("+numberOfMovements+")");troopMovementsSection.inject(page);}}catch(error){logError(error);}}
buildResourcesSection();buildTasksSection();buildTroopMovementsSection();return page;},createTranslationList:function(container,selectedLanguage){for(var phrase in translations){var translationTable=new Element("table").inject(container);var translationTableTopRow=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(typeof(translations[phrase]["description"])!=="undefined"){var translationTableDescriptionRow=new Element("tr").inject(translationTable);var translationTableDescriptionRowCellLeft=new Element("td",{class:"travobotto-translation-table-col-left travobotto-translation-hint",html:_("Hint:")}).inject(translationTableDescriptionRow);var translationTableDescriptionRowCellRight=new Element("td",{class:"travobotto-translation-hint",html:translations[phrase]["description"]}).inject(translationTableDescriptionRow);}
if(selectedLanguage!=="new-language"){var translationTableMiddleRow=new Element("tr").inject(translationTable);var translationTableMiddleRowCellLeft=new Element("td",{class:"travobotto-translation-table-col-left",html:_("Current translation:")}).inject(translationTableMiddleRow);var translationTableMiddleRowCellRight=new Element("td",{class:"travobotto-current-translation",html:this.getCurrentTranslation(phrase,selectedLanguage)}).inject(translationTableMiddleRow);}
var translationTableBottomRow=new Element("tr").inject(translationTable);var translationTableBottomRowCellLeft=new Element("td",{class:"travobotto-translation-table-col-left",html:_("Better translation:")}).inject(translationTableBottomRow);if(selectedLanguage==="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"],["fi","Suomi"],["sv","Svenska"],["th","ไทย"],["tr","Türkçe"],["uk","Українська"],["vi","Tiếng Việt"],["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=null;if(this.builtPages.contains(pageName)===false){switch(pageName){case"travobotto-villages-page":page=this.buildVillagesPage();break;case"travobotto-preferences-page":page=this.buildPreferencesPage();break;case"travobotto-translation-page":page=this.buildTranslationPage();break;}
this.builtPages.push(pageName);}else{page=$(pageName);}
this.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-heading{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;}.travobotto-heading-icon{opacity:0.5;vertical-align:middle;}.travobotto-heading-hint{font-size:.8em;}.travobotto a,.travobotto-clickable{cursor:pointer;}.travobotto-table{display:table;}.travobotto-table-row{display:table-row;}.travobotto-table-cell{display:table-cell;}.travobotto-data-table td,.travobotto-data-table th{padding:0 2em 0 0;}.travobotto-data-table td:last-of-type,.travobotto-data-table th:last-of-type{padding:0;}.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(76,140,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:#FBFBFB;float:right;position:relative;top:-30px;margin:0 0 0 7px;padding:0 9px;}#travobotto-navigation{background:#FBFBFB;-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:#FBFBFB;clear:both;position:relative;top:-30px;padding:7px;}.section-margin{margin-bottom:14px;}.travobotto-resources-table-head-icon{vertical-align:bottom;}.travobotto-resources-table-row{line-height:1em;}.travobotto-resource-cell{-moz-border-radius:3px;background-color:#dae0a6;}.travobotto-resource-cell-bar{-moz-border-radius:3px;background-color:#b0bd4e;color:#737f19;padding:3px 0;}.travobotto-resource-cell-bar-content{margin:0 0 0 .9em;}.travobotto-resource-cell-amount-hidden,.travobotto-resource-cell-percentage-hidden,.travobotto-resource-cell-merchant-count-hidden,.travobotto-resource-cell-merchant-percentage-hidden{display:none;}.travobotto-resource-cell-warning{background-color:#e0d0a6;}.travobotto-resource-cell-bar-warning{background-color:#f1a129;color:#b55e1e;}.travobotto-resource-cell-danger{background-color:#e0b4a6;}.travobotto-resource-cell-bar-danger{background-color:#d75b41;color:#9e3621;}#travobotto-idle-villages-list{max-width:740px;margin:0 0 7px;}.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{direction:ltr;font-style:italic;text-align:left;}.travobotto-current-translation{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,.travobotto-translation-hint{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-data-table td,.travobotto-data-table th{padding:0 0 0 2em;}.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=201004290;var isDeveloperVersion=false;var baseUrl="http://travobotto.com/versions/201004290/";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 optionsIcon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAH0SURBVDjLlZPLbxJRGMX5X/xbjBpjjCtXLl2L0YWkaZrhNQwdIA4FZxygC22wltYYSltG1HGGl8nopCMPX9AUKQjacdW4GNPTOywak7ZAF/eRe/M73/nOzXUAcEwaqVTKmUgkGqIoWoIgWP/fTYSTyaSTgAfdbhemaSIej+NcAgRudDod9Pt95PN5RKPR8wnwPG/Z1XVdB8dxin0WDofBsiyCwaA1UYBY/tdqtVAqlRCJRN6FQiE1k8mg2WyCpunxArFY7DKxfFir1VCtVlEoFCBJEhRFQbFYhM/na5wKzq/+4ALprzqxbFUqFWiaBnstl8tQVRWyLMPr9R643W7nCZhZ3uUS+T74jR7Y5c8wDAO5XA4MwxzalklVy+PxNCiKcp4IkbbhzR4K+h9IH02wax3MiAYCgcBfv99/4TS3xxtfepcTCPyKgGl5gCevfyJb/Q3q6Q5uMcb7s3IaTZ6lHY5f70H6YGLp7QDx9T0kSRtr5V9wLbZxw1N/fqbAHIEXsj1saQR+M8BCdg8icbJaHOJBqo3r1KfMuJdyuBZb2NT2R5a5l108JuFl1CHuJ9q4NjceHgncefSN9LoPcYskT9pYIfA9Al+Z3X4xzUdz3H74RbODWlGGeCYPcVf4jksz08HHId6k63USFK7ObuOia3rYHkdyavlR+267GwAAAABJRU5ErkJggg%3D%3D";function log(message){unsafeWindow.console.log(message);}
function logError(error){if(isDeveloperVersion===true){if(unsafeWindow.console===undefined){alert(error);}else{unsafeWindow.console.error(error);}}}
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;if(session.sitter===session.username){delete session.sitter;sessionManager.saveSession();}
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;});