/*Tribal Wars Map version 2.2101*/
var status='Start'; var auto=''; var encode=encodeURIComponent;
function _popupControl() {}
if(!this.JSON||!JSON.parse){JSON={'parse':function(text) {return eval('('+text+')');}};}

if (!this.lang) {var lang={'showmen':['Village page at Tribal Wars.','Village','(options)','(highlight)','Edit the highlighted village\\\'s colour,<br />assign it to a group or delete it.','Highlight this village.','Set a main village which will be selected<br />when links to Tribal Wars are opened. Also<br />sets the player who\\\'s morale is displayed.','Set main','Delete the marker.','Delete marker','Display a round marker on the map.','Add marker','Edit the circle\\\'s colour and radius or delete it.','Circle','Draws a blue &quot;First church&quot; circle at this<br />coordinate. You can edit it afterwards.','Draw circle','Player page at Tribal Wars.','Player','Edit the highlighted player\\\'s colour,<br />assign it to a group or delete it.','Highlight this player.','Displays a list of the player\\\'s villages,<br />selecting one will display its village menu.','Village list','Tribe page at Tribal Wars.','Tribe','Edit the highlighted tribe\\\'s colour,<br />assign it to a group or delete it.','Highlight this tribe.','Displays a list of the tribe\\\'s members,<br />selecting one will display their menu.','Member list','Historical data, comparisons and<br />performance ratings for a tribe\\\'s members.','Historical data','View player and tribe point graphs<br />and links to relevant TW Stats pages.','Open a new tab/window to this<br />abandoned village\\\'s TW Stats page.','TW Stats','BBcodes for village, player and tribe. You<br />can also generate a BBcode list of the<br />player\\\'s villages or the tribe\\\'s members.','BBcodes','View, edit and save notes<br />for this village, player or tribe.','Notes','No village at<br />this coordinate','','Set start coordinate for travel<br />times and line/circle drawing.','Set start','Set destination coordinate for travel<br />times and line/circle drawing.','Set destination','Center map on ','.','Center map','View, edit and save notes<br />for this player or tribe.','Notes','No data','Unset main village.','Unset main','Unset start coordinate.','Unset start','Unset destination coordinate.','Unset destination'],
'twstats':['TW Stats graph','Points','ODA','ODD','Player graph. Click to view at TW Stats.','Tribe graph. Click to view at TW Stats.','Village conquer history','Close'],
'errorMessage':['Error description:','Line:','Browser:','Initiate status:','Settings:','UserID:','Options:','Ignore','Reload/refresh page','Reset your configuration','Email error report to ',''],
'bbcode':['BBcodes','select code','BBcode','Forum BBcode','HTML','BBcode village list','BBcode member list','Close','Displays a list of the player\\\'s<br />villages in BBcode format.','Displays a list of the tribe\\\'s<br />members in BBcode format.'],
'save':['Failed to save your settings. ','Retry','Cannot save settings (an error has occured).'],
'setDefaultCoordinate':['Setting ',' as default coordinate...','Could not set ',' as default coordinate. ','Retry','Default coordinate: '],
'textbox':['Close','Right click and select copy link location: ','Link'],
'bonus':[['','10% higher wood production','10% higher clay production','10% higher iron production','10% more population','10% faster recruitment in the barracks','10% faster recruitment in the stables','10% faster recruitment in the workshop','3% more resources are produced',''],['','100% higher wood production','100% higher clay production','100% higher iron production','10% more population','33% faster recruitment in the barracks','33% faster recruitment in the stables','50% faster recruitment in the workshop','30% more resources are produced','50% more storage capacity and merchants']]};};

function $(v){return(document.getElementById(v));}
function $S(v){return(document.getElementById(v).style);}
function toggle(el) {jQuery('#'+el).slideToggle(500);}
function is_num(num) {if (/^[0-9]+$/.test(num)) {return true;} else {return false;}}
function is_num2(num) {if (/^\-?[0-9]+$/.test(num)) {return true;} else {return false;}}
function number(n) {if (n!=-1/0&&n!=1/0) {n+=''; var rgx = /([0-9]+)([0-9]{3})/; while (rgx.test(n)) {n=n.replace(rgx, '$1'+'.'+'$2');}}; return n;}
function datetime(n, full) {var chours = Math.max(Math.round(n/3600), 0); if (chours>=24) {var csd=Math.floor(chours/24); var ch=csd+(full?csd==1?' day':' days':'d'); if (chours-(csd*24)>0) {ch+=(full?' and ':' ')+(chours-(csd*24))+(full?(chours-(csd*24))==1?' hour':' hours':'h');};} else {var ch=chours+(full?(chours-(csd*24))==1?' hour':' hours':'h');}; return ch;}
function setCl(el,cl) {if (el.firstChild) {el.firstChild.className=cl;} else {el.className=cl;}}
function setCookie(name,value,days) {var expires=''; if (days) {var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); expires = "; expires="+date.toGMTString();} document.cookie = name+'='+escape(value)+expires+'; path='+serversettings.folder;}
function errorMessage(message) {if ($('errordescription')) {$('errordescription').innerHTML=message; if ($S('error').display!='block') {$S('errsne').display='block';}}}
window.onerror=function() {if (arguments[0]!='Script error.') {var t=lang.errorMessage; var settext=''; try {settext=minsets();} catch(err) {}; errorMessage('<div class="fixWidth lefta"><u>'+t[0]+'</u> '+arguments[0]+'<br /><u>'+t[1]+'</u> '+arguments[2]+'<br /><u>'+t[2]+'</u> '+navigator.userAgent+'<br /><u>'+t[3]+'</u> '+status+'<br /><u>'+t[4]+'</u>'+settext+'<br /><u>'+t[5]+'</u> '+userid+'<br /><br /><u>'+t[6]+'</u><br /><a href="javascript:;" onclick="document.getElementById(\'error\').style.display=\'none\';">'+t[7]+'</a><br /><a href=\'javascript: window.location=window.location;\'>'+t[8]+'</a><br /><a href=\'?settings=_\'>'+t[9]+'</a><br /><a href="mailto: contact@tribalwarsmap.com?subject=Error report&amp;cc=&amp;bcc=&amp;body=Error description:%20'+encode(arguments[0])+'%0ALine:%20'+encode(arguments[2])+'%0ABrowser:%20'+encode(navigator.userAgent)+'%0AInitiate status:%20'+encode(status)+'%0A%0ASettings:%20'+settext+'%0AUserID:%20'+encode(userid)+'">'+t[10]+'contact@tribalwarsmap.com'+t[11]+'</a></div>'); return true;}}

var hotkeylist={};
var vars={'defaulthotkeys':{'CTRL.37':['ml',0,0],'CTRL.38':['mu',0,0],'CTRL.39':['mr',0,0],'CTRL.40':['md',0,0],'CTRL.ALT.84':['tt',0,0],'CTRL.ALT.67':['ct',0,0],'CTRL.ALT.76':['lt',0,0],'CTRL.ALT.77':['tm',0,0],'27':['cl',0,0]},
'defx':500,'defy':500,'xc':100,'yc':100,'width':100,'height':50,'display':0,'qtip':false,'tip':false,'men':false,'serverurl':'','change':false,'viltd':[],'none':{},'villageid':{},'colelement':'','timers':'','player':0,'minx':0,'miny':0,'bordertop':'<tr><td class="qtl"><div /></td><td class="qt"></td><td class="qtr"><div /></td></tr>','borderbottom':'<tr><td class="qbl"></td><td class="qb"></td><td class="qbr"></td></tr>','spacer':'<tr><td class="qsl"></td><td class="qs"></td><td class="qsr"></td></tr>','borderleft':'<tr><td class="ql"></td><td class="qc" valign="top">','borderlefta':'<tr><td class="ql"></td><td class="qc lefta" valign="top">','borderlefth1':'<tr><td class="ql"></td><td class="qc h1" valign="top">','borderright':'</td><td class="qr"></td></tr>','vars.browser':false,'timeminimap':false,'tribes':{},'players':{},'villages':{},'villages2':{},'minover':false,'vars.serverpage':'','last':'#000000','mapx':0,'mapy':0,'search':0,'ie67':0,'moveurl':function (x,y) {var loc = '?x='+x+'&y='+y;
if (external) {if (config!='') {loc=encode(config)+loc;} else {loc+='&settings='+minsets();}}
if (serversettings.logintype=='1') {loc='public:'+encode(userid)+(external&&config!=''?'-':'')+loc;}
return serversettings.folder+loc;},'dat':new Date().getMonth()+'-'+new Date().getDate()+'-'+new Date().getHours(),'tooltips':true,'attmap':true,'attminimap':true,'posleft':0,'postop':0,'iconheight':38,'iconwidth':53,'notechange':false,'notec':'','text':'','wheel':false,'cis':false,'lastclick':false,'minw':4,'clmenc':0,'lastmen':0,'lastment':0,'hoverx':0,'hovery':0,'smallmen':0,'lastm':0,'hotkeycreate':0,'tooltipvars':[0,0,0],'mapcols':['444444','B40000','969696','FFFFFF','000000','30490e','436213','252589','FF0000','FFFF00','444444','a2a2a2','828282','FFFFFF','FFFFFF','FF0000','FF0000'],'firstretry':true,'keyfunc':function(ev) {var ev=ev||window.event; var kCode=ev.keyCode||ev.which; if (ev.target) {var el=ev.target;} else {var el=ev.srcElement;}
if (el.tagName!='INPUT'&&el.tagName!='TEXTAREA'&&kCode!=16&&kCode!=17&&kCode!=18) {var canc=false;
if (vars.change=='key') {vars.change=false; settings('newhotkey',kCode,String.fromCharCode(kCode),ev.ctrlKey,ev.altKey,ev.shiftKey); canc=true;}
else {if (ev.shiftKey) {kCode='SHIFT.'+kCode;}; if (ev.altKey) {kCode='ALT.'+kCode;}; if (ev.ctrlKey) {kCode='CTRL.'+kCode;};
if (hotkeylist[kCode]||vars.defaulthotkeys[kCode]) {var action=hotkeylist[kCode]||vars.defaulthotkeys[kCode];
if (action[1]&&is_num(action[2])) {if (action[1]=='P'||action[1]=='T') {showmen(action[1]=='T'?action[2]:0,action[1]=='P'?action[2]:0,0,'tribe',0,action[0]); canc=true;}
else if (vars.villageid[action[2]]) {var xy=vars.villageid[action[2]].split('-'); vars.lastclick=false; showmen(xy[1],xy[2],0,0,0,action[0]); canc=true;}}
else {switch(action[0]) {
//Move map
case 'mu': mov(data.xcord,(data.ycord-data.height)); break;
case 'ml': mov((data.xcord-data.width),data.ycord); break;
case 'md': mov(data.xcord,(data.ycord*1+data.height*1)); break;
case 'mr': mov((data.xcord*1+data.width*1),data.ycord); break;
//Toggle window
case 'sh': display.search(); break;
case 'hs': display.highlights(); break;
case 'ms': display.markers(); break;
case 'ls': display.lines(); break;
case 'cs': display.churches(); break;
case 'ns': display.notes(); break;
case 'ts': display.traveltimes(); break;
//Others
case 'tt': changetooltipsetting(0, 0, 'toggletooltips'); break;
case 'tl': draw.toggle(); break;
case 'tc': draw.churchtoggle(); break;
case 'tm': toggleMap(); break;
case 'cl': Close(); break;
case 'he': vars.lastclick=false; highlightMode(); break;
case 'fltr': filter.toggle(); break;
case 'com': mainvillage.center(); break;
case 'cos': if (is_num2(data.xstart)&&is_num2(data.ystart)) {mov(data.xstart,data.ystart);}; break;
case 'cod': if (is_num2(data.xdest)&&is_num2(data.ydest)) {mov(data.xdest,data.ydest);}; break;
default: if (vars.smallmen) {vars.lastclick=false; showmen(vars.hoverx,vars.hovery,0,vars.smallmen==2?'tribe':0,0,action[0]);};
}; canc=true;}}}
if (canc) {ev.cancelBubble=true; ev.returnValue=false; if (ev.stopPropagation) {ev.stopPropagation(); ev.preventDefault();}; return false;}}},
'wds':1,'hes':1};

function move(evt) {var x=0,y=0; if (!evt) {evt=window.event;}
if (evt.pageX||evt.pageY) {x=evt.pageX; y=evt.pageY;}
else if (evt.clientX||evt.clientY){x=evt.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;y+=evt.clientY+document.body.scrollTop+document.documentElement.scrollTop;}
vars.xc = x; vars.yc = y; var tip=vars.tip; if (tip&&tip.style.display=='block') {if (x+tip.offsetWidth+13>vars.width&&x-tip.offsetWidth-7>0) {tip.style.left=(x-tip.offsetWidth-7)+'px';} else {tip.style.left=(x+13)+'px';} if (y+tip.offsetHeight>vars.height&&y-tip.offsetHeight-2>0) {tip.style.top=(y-tip.offsetHeight-2)+'px';} else {tip.style.top=y+'px';}}}
function mu(ev) {if (!ev) {ev=window.event;}; vars.lastclick=false; if (ev.target) {var el=ev.target;} else {var el=ev.srcElement;}
var clo=0; var c=0;
if (vars.hotkeycreate) {if (vars.smallmen) {setTimeout(function() {hotkeyfunction.save(0,0,0,1);},1); return false;}}
if (ev.button==2) {if (data.rightclick=='1'&&vars.smallmen) {document.oncontextmenu(ev); return false;}}
else {while (el&&c<25) {if (el.id=='men') {c=99; vars.lastclick=true;} else if (el.tagName=='BODY') {clo=1; c=99;} else if (el.parentNode) {el=el.parentNode; c++;} else {c=99;}}
if (clo&&vars.men.style.display=='block'&&(!vars.notechange||confirm('You have editted your note. Discard note changes?'))) {vars.notechange=false; vars.clmenc=true; setTimeout(function() {Close(1);},1);}}}

var fetch={'coordinfo':function(x,y) {jQuery.ajax({'url':'data.php?type=villagecoord&&x='+x+'&y='+y+'&ms='+vars.dat,
'success':function() {if (!villagedata['C-'+x+'-'+y]) {vars.none['C-'+x+'-'+y]=true;}},
'dataType':'parse'});},
'k':function(x,y) {if (x<0||y<0) {return '?';} else {
var yk = Math.floor(y/100); if (yk>0) {yk=yk+''+Math.floor(x/100);} else {yk=Math.floor(x/100);}; return yk;}},
'village':[function(id) {var xy=id.split('-');
if (villagedata[id]) {return villagedata[id][3]+' ('+xy[1]+'|'+xy[2]+') K'+fetch.k(xy[1],xy[2]);}
else {return '('+xy[1]+'|'+xy[2]+') K'+fetch.k(xy[1],xy[2]);}},
function(id,special) {var xy=id.split('-');
if (villagedata[id]) {var url=vars.serverpage+'screen=info_village&id='+villagedata[id][0]; if (special==1) {var name=xy[1]+'|'+xy[2];} else {var name=villagedata[id][3]+' ('+xy[1]+'|'+xy[2]+') K'+fetch.k(xy[1],xy[2]);}}
else {var url='more.php?type=coordinate&x='+xy[1]+'&y='+xy[2]; if (special==1) {var name=xy[1]+'|'+xy[2];} else {var name='('+xy[1]+'|'+xy[2]+') K'+fetch.k(xy[1],xy[2]);}}
return '<a'+(special?'':' class="spl"')+' href="'+url+'" target="_blank" onclick="showmen(\''+xy[1]+'\',\''+xy[2]+'\',event); return false;" oncontextmenu="if (data.rightclick==\'1\') {return false;}" onmouseover="show(tooltiptext(\''+xy[1]+'\',\''+xy[2]+'\'));" onmouseout="msu();">'+name+'</a>';
},
function(id,special) {if (vars.villageid[id]) {return fetch.village[1](vars.villageid[id],special);} else {return '<a'+(special?'':' class="spl"')+' href="'+vars.serverpage+'screen=info_village&id='+id+'" target="_blank" onmouseover="show(\'No village info ['+id+'].<br />Click to open village page at Tribal Wars.&lt;/div>\',1);" onmouseout="msu();">Village ['+id+']</a>';}}],
'player':[function(id) {if (playerdata[id]) {return playerdata[id][2];} else {return 'Player ['+id+']';}},
function(id,special) {if (playerdata[id]) {var pd=playerdata[id];} else {var pd=[0,0,'Player ['+id+']'];}
return '<a'+(special?'':' class="spl"')+' href="'+vars.serverpage+'screen=info_player&id='+id+'" target="_blank" onclick="showmen(\''+pd[1]+'\',\''+id+'\',event,\'tribe\'); return false;" oncontextmenu="if (data.rightclick==\'1\') {return false;}" onmouseover="show(tooltiptext(\''+pd[1]+'\', \''+id+'\', 1));" onmouseout="msu();">'+pd[2]+'</a>';}],
'tribe':[function(id,special) {if (tribedata[id]) {return tribedata[id][2]+(special?'':' ['+tribedata[id][9]+']');} else {return 'Tribe ['+id+']';}},
function(id,special) {if (tribedata[id]) {var pd=tribedata[id][2]+' ['+tribedata[id][9]+']';} else {var pd='Tribe ['+id+']';}
return '<a'+(special?'':' class="spl"')+' href="'+vars.serverpage+'screen=info_ally&id='+id+'" target="_blank" onclick="showmen(\''+id+'\',\'\',event,\'tribe\'); return false;" oncontextmenu="if (data.rightclick==\'1\') {return false;}" onmouseover="show(tooltiptext(\''+id+'\', 0, 1));" onmouseout="msu();">'+pd+'</a>';}]};


function Close(c) {if (!c) {vars.clmenc=true;}; setTimeout(function () {if (vars.clmenc) {jQuery(vars.men).stop(); jQuery(vars.men).slideUp(300); vars.change=false; vars.notechange=false;}}, 1);}
function hide(me) {if (vars.tip) {if (me) {if (!vars.display) {vars.tip.style.display='none'; vars.hoverx=0; vars.hovery=0; vars.smallmen=0;}} else {vars.tip.style.display='none'; vars.hoverx=0; vars.hovery=0; vars.smallmen=0;}}}
function msu() {vars.display=0; setTimeout(function() {hide(1);}, 10);}
function msd() {vars.display=0; setTimeout(function() {hide(1);}, 150);}
function show(text,spec) {if (vars.tip) {if (data.tooltips.charAt(0)!='1') {vars.display=1; vars.qtip.innerHTML=(spec?'<div class="la">'+text+'</div>':text); vars.tip.style.display='block'; var offw=vars.tip.offsetWidth; var offh=vars.tip.offsetHeight;
var x = vars.xc; if (x+offw+13>vars.width&&x-offw-7>0) {x=x-offw-7;} else {x=x+13;}
var y = vars.yc; if (y+offh>vars.height&&y-offh-2>0) {y=y-offh-2;}
vars.tip.style.left=x+'px'; vars.tip.style.top=y+'px';}}}
function cancelcol() {vars.change=false; vars.clmenc=false; if (vars.notechange||(vars.hotkeycreate&&vars.smallmen)) {return false;} else {return true;}}
function convertani(w,h,x,y) {vars.men.firstChild.style.width='100%'; jQuery(vars.men).animate({'width':w,'height':h,'left':Math.max(x, 0),'top':Math.max(y, 0)}, 300, 0, function() {vars.men.firstChild.style.width=''; vars.men.style.width=''; vars.men.style.height=''; vars.men.style.left=Math.max(x, 0)+'px'; vars.men.style.top=Math.max(y, 0)+'px';});}
function mend() {var m=vars.men; jQuery(m).stop();
if (vars.lastclick) {var x=parseInt(m.style.left); var y=parseInt(m.style.top);
m.style.display='block'; var aw=(m.offsetWidth-2)+'px'; var ah=(m.offsetHeight-2)+'px'; if (vars.text!='') {m.innerHTML=vars.text; vars.text='';}
m.style.width=''; m.style.height='';
if ($('vlist')) {var v=$('vlist'); if (v.offsetHeight>v.clientHeight) {v.style.paddingRight=Math.min(v.offsetHeight-v.clientHeight+3, 30)+'px';} else if (v.offsetHeight<=v.clientHeight-21) {v.style.paddingRight='3px';}}
var offw=m.offsetWidth; var offh=m.offsetHeight; m.style.width=aw; m.style.height=ah;
if (x+offw>vars.width&&vars.xc<vars.width) {x=vars.width-offw;};
if (y+offh>vars.height&&vars.yc<vars.height) {y=vars.height-offh;}
convertani(offw-2,offh-2,x,y);}
else {
if (m.style.display!='block') {m.style.width=''; m.style.height='';
m.style.top=vars.yc+'px'; m.style.left=vars.xc+'px'; if (vars.text!='') {m.innerHTML=vars.text; vars.text='';}; m.style.display='block';
if ($('vlist')) {var v=$('vlist'); if (v.offsetHeight>v.clientHeight) {v.style.paddingRight=Math.min(v.offsetHeight-v.clientHeight+3, 30)+'px';} else if (v.offsetHeight<=v.clientHeight-21) {v.style.paddingRight='3px';}}
var offw=m.offsetWidth; var x=vars.xc-Math.round(offw/2); if (x+offw>vars.width) {if (vars.xc<vars.width) {x=vars.width-offw;} else {x=vars.xc-offw;}}; m.style.left=Math.max(x, 0)+'px';
var offh=m.offsetHeight; var y=vars.yc-12; if (y+offh>vars.height) {if (vars.yc<vars.height) {y=vars.height-offh;} else {y=vars.yc-offh+12;}}; m.style.top=Math.max(y, 0)+'px';
m.style.display='none';
jQuery(m).slideDown(300);}
else {var aw=(m.offsetWidth-2)+'px'; var ah=(m.offsetHeight-2)+'px'; if (vars.text!='') {m.innerHTML=vars.text; vars.text='';}
m.style.width=''; m.style.height='';
if ($('vlist')) {var v=$('vlist'); if (v.offsetHeight>v.clientHeight) {v.style.paddingRight=Math.min(v.offsetHeight-v.clientHeight+3, 30)+'px';} else if (v.offsetHeight<=v.clientHeight-21) {v.style.paddingRight='3px';}}
var offw=m.offsetWidth; var offh=m.offsetHeight; m.style.width=aw; m.style.height=ah;
var x=vars.xc-Math.round(offw/2); if (x+offw>vars.width) {if (vars.xc<vars.width) {x=vars.width-offw;} else {x=vars.xc-offw;}}
var y=vars.yc-12; if (y+offh>vars.height) {if (vars.yc<vars.height) {y=vars.height-offh;} else {y=vars.yc-offh+12;}}
convertani(offw-2,offh-2,x,y);}}
hide();}
function ment() {var m=vars.men; jQuery(m).stop();
if (m.style.display!='block') {m.style.width=''; m.style.height='';
var x=vars.xc; var y=vars.yc; if (vars.text!='') {m.innerHTML=vars.text; vars.text='';}; m.style.display='block';
if ($('vlist')) {var v=$('vlist'); if (v.offsetHeight>v.clientHeight) {v.style.paddingRight=Math.min(v.offsetHeight-v.clientHeight+3, 30)+'px';} else if (v.offsetHeight<=v.clientHeight-21) {v.style.paddingRight='3px';}}
var offw=m.offsetWidth; if (x+offw+13>vars.width&&x-offw-7>0) {x=x-offw-7;} else {x=x+13;};
m.style.left=Math.max(x, 0)+'px';
var offh=m.offsetHeight; if (y+offh>vars.height&&y-offh-2>0) {y=y-offh-2;};
m.style.top=Math.max(y, 0)+'px'; m.style.display='none';
jQuery(m).slideDown(300);}
else {var aw=(m.offsetWidth-2)+'px'; var ah=(m.offsetHeight-2)+'px'; if (vars.text!='') {m.innerHTML=vars.text; vars.text='';}
m.style.width=''; m.style.height='';
if ($('vlist')) {var v=$('vlist'); if (v.offsetHeight>v.clientHeight) {v.style.paddingRight=Math.min(v.offsetHeight-v.clientHeight+3, 30)+'px';} else if (v.offsetHeight<=v.clientHeight-21) {v.style.paddingRight='3px';}}
var offw=m.offsetWidth; var offh=m.offsetHeight; m.style.width=aw; m.style.height=ah;
var x=vars.xc; var y=vars.yc;
if (x+offw+13>vars.width&&x-offw-7>0) {x=x-offw-7;} else {x=x+13;};
if (y+offh>vars.height&&y-offh-2>0) {y=y-offh-2;};
convertani(offw-2,offh-2,x,y);}
hide();}
function toggleCheckbox(setting, el, ch, value) {if (data[setting]==value) {if ($(el)) {$(el).checked=ch?true:false;}; return true;} else {if ($(el)) {$(el).checked=ch?false:true;}; return false;}}
function checkcoordinate(x,y,func) {if (!func(x)) {x=x.split('|'); if (!x[1]) {x=x[0].split('/'); if (!x[1]) {x[1]='';}}; y=x[1].replace(/\)/,''); x=x[0].replace(/\(/,'');};
if (func(x)&&func(y)) {return [x,y];} else {alert('Not a valid coordinate.'); return false;}}
function hex2rgb(hex) {return [parseInt(hex.substring(0,2),16),parseInt(hex.substring(2,4),16),parseInt(hex.substring(4,6),16)]}
var gradientHighlight={'func':function(score,sp) {var t=gradientHighlight;
if (score>=t.turnp) {var per = Math.min(score-t.turnp, t.am1);
var r=Math.round(t.rb+t.radd*per);
var g=Math.round(t.gb+t.gadd*per);
var b=Math.round(t.bb+t.badd*per);}
else if (score>=t.turnp2) {var per=Math.min(Math.abs(score-t.turnp), t.am2);
var r=Math.round(t.rb2+t.radd2*per);
var g=Math.round(t.gb2+t.gadd2*per);
var b=Math.round(t.bb2+t.badd2*per);}
else {var per=Math.min(Math.abs(score-t.turnp2), t.am3);
var r=Math.round(t.rb3+t.radd3*per);
var g=Math.round(t.gb3+t.gadd3*per);
var b=Math.round(t.bb3+t.badd3*per);}
return sp?toHex(r)+toHex(g)+toHex(b):'rgb('+r+','+g+','+b+')';}}

function minsets() {return encode([data.lighttribes,data.lightplayers,data.minimap,data.minimapx,data.minimapy,data.mainvillage,data.xstart,data.ystart,data.xdest,data.ydest,data.mode,data.iconsize,data.width,data.height,data.map,data.lightvillages,data.mpos,data.filtert,data.filter,data.spoints,data.id,data.props,data.last,data.markers,data.def,data.groups,data.defgroup,data.lines,data.mcol,data.church,data.lt,data.ct,data.cto,data.ani,data.tooltips,data.minsize,data.mo,data.ctop,data.menu,data.hotkeys,data.rightclick,data.colours].join('_'));}
function mincolsets() {var cols=vars.mapcols; return cols[1]+'-'+cols[2]+'-'+cols[4]+'-'+cols[5]+'-'+cols[6]+'-'+cols[7]+'-'+cols[8]+'-'+cols[9]+'-'+cols[11]+'-'+cols[12]+'-'+cols[14]+'-'+cols[15]+'-'+cols[16];}
function save() {if (!external) {
try {jQuery.ajax({'url':'more.php?type=save&ms='+new Date().getTime(),
'error':function(w,err) {if (err!='parsererror') {errorMessage('Failed to save your settings. <a href="javascript:;" onclick="save(); jQuery(\'#error\').slideUp(500);">Retry</a>');}},
'data':'userid='+encode(userid)+'&savedata='+minsets(),
'type':'post'});}
catch(err) {errorMessage('Cannot save settings.');}}}
function setDefaultCoordinate() {if (!external) {var t=lang.setDefaultCoordinate; var x=data.xcord; var y=data.ycord;
$('defcoord').innerHTML=t[0]+'<b>'+x+'|'+y+'</b>'+t[1];
vars.savehttp=jQuery.ajax({'url':'more.php?type=default&ms='+new Date().getTime(),
'error':function() {if ($('defcoord')) {$('defcoord').innerHTML=t[2]+'<b>'+x+'|'+y+'</b>'+t[3]+'<a href="javascript: setDefaultCoordinate();">'+t[4]+'</a>';}},
'success':function() {if ($('defcoord')) {$('defcoord').innerHTML=t[5]+'<b>'+x+'|'+y+'</b>'; vars.defx=x; vars.defy=y;}},
'data':'userid='+encode(userid)+'&defx='+x+'&defy='+y,
'type':'post'});}}
var textbox={'menu':function(title, text, tclass, specialtitle, hideclose, ign, spec) {vars.text=['<table cellpadding="0" cellspacing="0" class="',tclass,'">',vars.bordertop,(specialtitle?title:vars.borderlefth1+'<b><u>'+title+'</u></b>'),vars.borderright,vars.spacer,(specialtitle&&(hideclose||spec)?vars.borderlefth1:vars.borderleft),text,vars.borderright,(hideclose?'':(vars.spacer+vars.borderlefth1+'<a class="spl" href="javascript: Close();"><b>'+lang.textbox[0]+'</b></a>'+vars.borderright)),vars.borderbottom,'</table>'].join(''); if (ign) {ment();} else {mend();}},
'link':function(title, text, linkdata, specialtext) {if (cancelcol()) {textbox.menu(title, [(specialtext?text:'<div class="lefta ws" style="width: 300px;">'+text+'</div>'),vars.borderright,vars.spacer,vars.borderleft,'<div><input type="text" class="oi" style="width: 300px" value="',linkdata,'" readonly="readonly" onclick="this.select();" /><br />',lang.textbox[1],'<a href="',linkdata,'">',lang.textbox[2],'</a></div>'].join(''), 't100 ie');}},
'question':function(func,funcvar,text,title,name,pretext) {if (cancelcol()) {
textbox.menu(title, ['<div class="lefta">',text,'</div>',vars.borderright,vars.spacer,vars.borderleft,'<form action="javascript:;" onsubmit="',func,'(\'',funcvar,'\',this.childNodes[1].value)"><span>',name,'</span><input type="text" class="oi" style="width: 130px;" value="',pretext,'" maxlength="20" onkeydown="return submitenter(this, event);" /><input type="submit" value="" class="sbut" /></form>'].join(''), 't100 fc');}}};

function showmen(x,y,ev,map,rc,act,spec) {if (cancelcol()) {var ac=0; if (act) {ac=act;} else {
try {if (ev) {var s=ev.shiftKey; var a=ev.altKey; var c=ev.ctrlKey; var st=-1;
if (c&&a) {st=0;}
else if (c&&s) {st=1;}
else if (c) {st=2;}
else if (a) {st=3;}
else if (s) {st=4;}
if (rc) {st+=6;}
if (st>=0) {ac=data.menu.charAt(st)+'';
if (!/^[1vhpjtkmacibnwxqu]{1}$/.test(ac)) {switch(st) {
case 0: ac='c'; break;
case 1: ac='m'; break;
case 2: ac='v'; break;
case 3: ac='t'; break;
case 4: ac='p'; break;
case 5: ac='s'; break;
case 6: ac='q'; break;
case 7: ac='a'; break;
case 8: ac='h'; break;
case 9: ac='j'; break;
case 10: ac='k'; break;}}}}} catch(e) {}}

var id='C-'+x+'-'+y; var player=''; var tribe=''; var smallmen=false;
if (map=='tribe') {map=0; smallmen=true; id=''; player=y; tribe=x;} else if (map==2&&!rc) {villagelist.fetch(1,spec,'main',''); vars.lastclick=true; return 1;} else if (map&&!rc) {tooltipInfo(x,y,1,0); return 1;}
var vild=false; if (!smallmen&&villagedata[id]) {vild=villagedata[id]; player=vild[1];};
if (!tribe) {if (playerdata[player]) {tribe=playerdata[player][1];}}

if (ac) {switch(ac) {
case 'v': if (vild) {window.open(vars.serverpage+'screen=info_village&id='+vild[0]);}; return 1; break;
case 'h': if (vild) {if (vars.villages[vild[0]]) {highlight.options(vild[0], 'village');} else {highlight.add(vild[0], 'village');}}; return 1; break;
case 'p': if (player!='0'&&player!='') {window.open(vars.serverpage+'screen=info_player&id='+player);}; return 1; break;
case 'j': if (player!='0'&&player!='') {if (vars.players[player]) {highlight.options(player, 'player');} else {highlight.add(player, 'player');}}; return 1; break;
case 't': if (tribe!='0'&&tribe!='') {window.open(vars.serverpage+'screen=info_tribe&id='+tribe);}; return 1; break;
case 'k': if (tribe!='0'&&tribe!='') {if (vars.tribes[tribe]) {highlight.options(tribe, 'tribe');} else {highlight.add(tribe, 'tribe');}}; return 1; break;
case 'm': if (vild&&player!='0'&&player!='') {mainvillage.set(vild[0],1);}; return 1; break;
case 'a': if (vild) {if (marker.list[id]) {marker.del(x,y);} else {marker.add(x,y);}}; return 1; break;
case 'c': if (!smallmen&&vars.lastm<(new Date().getTime()-500)) {mov(x,y); vars.lastm=new Date().getTime();}; return 1; break;
case 'b': bbcode(0,id,player,tribe,0); return 1; break;
case 'n': notelist(id,player,tribe); return 1; break;
case 'w': manual(x,y,1); return 1; break;
case 'x': manual(x,y); return 1; break;
case 'q': if ((player!='0'&&player!='')||(tribe!='0'&&tribe!='')) {twstats(player,tribe,(vild?vild[0]:''));} else if (vild) {window.open('http://'+serversettings.twstatsdomain+'/'+serversettings.prefix+data.server+'/index.php?page=village&id='+vild[0]);}; return 1; break;
case 'i': tooltipInfo(x,y,0,smallmen); return 1; break;
case 'u': if (tribe!='0'&&tribe!='') {window.open(serversettings.folder+'history/tribe/'+tribe);}; return 1; break;}}

var text=[]; var t=lang.showmen;
if (vild) {text.push('<table cellpadding="0" cellspacing="0" class="tb1"><tr><td class="righta"><div><a class="spl" href="',vars.serverpage,'screen=info_village&id=',vild[0],'" target="_blank" onmouseover="show(\'',t[0],'\',1);" onmouseout="msu();" onclick="Close()">',t[1],'&nbsp;</a></div></td><td class="lefta"><div><a class="spl" href="javascript: ');
if (vars.villages[vild[0]]) {text.push('highlight.options(\'',vild[0],'\', \'village\');" onmouseover="show(\'',t[4],'\',1);" onmouseout="msu();"><img class="colimg smb" style="background-color: #',vars.villages[vild[0]],'" alt="" src="img/trans.gif" /> ',t[2]);}
else {text.push('highlight.add(\'',vild[0],'\', \'village\');" onmouseover="show(\'',t[5],'\',1);" onmouseout="msu();">',t[3]);}
text.push('</a></div></td></tr></table>');
if (player!='0'&&player!='') {if (vild[0]+'-'+player==data.mainvillage) {text.push('<a class="spl" href="javascript: mainvillage.unset();" onmouseover="show(\'',t[49],'\',1);" onmouseout="msu();">',t[50],'</a>');}
else {text.push('<a class="spl" href="javascript: mainvillage.set(\'',vild[0],'\', \'',player,'\');" onmouseover="show(\'',t[6],'\',1);" onmouseout="msu();">',t[7],'</a>');}}
if (marker.list[id]) {text.push('<a class="spl" href="javascript: marker.del(\''+x+'\',\''+y+'\');" onmouseover="show(\'',t[8],'\',1);" onmouseout="msu();">',t[9],'</a>');}
else {text.push('<a class="spl" href="javascript: marker.add(\''+x+'\',\''+y+'\');" onmouseover="show(\'',t[10],'\',1);" onmouseout="msu();">',t[11],'</a>');}
var list=draw.churchlist; var l=list.length; var ch=false;
for(var i=0;i<l;i++) {if (list[i][0]==x&&list[i][1]==y) {ch=list[i]; break;}}
if (ch) {text.push('<a class="spl" href="javascript: draw.circleoptions(\''+x+'\',\''+y+'\');" onmouseover="show(\'',t[12],'\',1);" onmouseout="msu();">',t[13],' <img class="colimg smb" style="background-color: #',ch[3],'" alt="" src="img/trans.gif" /> ',t[2],'</a>');}
else {text.push('<a class="spl" href="javascript:;" onclick="display.churchinit(); draw.churchadd(\'',x,'\',\'',y,'\',\'1\',\'252589\',\'6\'); Close();" onmouseover="show(\'',t[14],'\',1);" onmouseout="msu();">',t[15],'</a>');}}

if (player!='0'&&player!='') {
text.push('<table cellpadding="0" cellspacing="0" class="tb1"><tr><td class="righta"><div><a class="spl" href="',vars.serverpage,'screen=info_player&id=',player,'" target="_blank" onmouseover="show(\'',t[16],'\',1);" onmouseout="msu();" onclick="Close()">',t[17],'&nbsp;</a></div></td><td class="lefta"><div><a class="spl" href="javascript: ');
if (vars.players[player]) {text.push('highlight.options(\'',player,'\',\'player\');" onmouseover="show(\'',t[18],'\',1);" onmouseout="msu();"><img class="colimg smb" style="background-color: #',vars.players[player],'" alt="" src="img/trans.gif" /> ',t[2]);} 
else {text.push('highlight.add(\'',player,'\',\'player\');" onmouseover="show(\'',t[19],'\',1);" onmouseout="msu();">',t[3]);}
text.push('</a></div></td></tr></table><a class="spl" href="http://'+serversettings.twstatsdomain+'/',serversettings.prefix,data.server,'/index.php?page=player&mode=villages&id=',player,'" onclick="villagelist.fetch(1,',player,',\'list\',\'\'); return false;" onmouseover="show(\'',t[20],'\',1);" onmouseout="msu();" target="_blank">',t[21],'</a>');}

if (tribe!='0'&&tribe!='') {
text.push('<table cellpadding="0" cellspacing="0" class="tb1"><tr><td class="righta"><div><a class="spl" href="',vars.serverpage,'screen=info_ally&id=',tribe,'" target="_blank" onmouseover="show(\'',t[22],'\',1);" onmouseout="msu();" onclick="Close()">',t[23],'&nbsp;</a></div></td><td class="lefta"><div><a class="spl" href="javascript: ');
if (vars.tribes[tribe]) {text.push('highlight.options(\'',tribe,'\', \'tribe\');" onmouseover="show(\'',t[24],'\',1);" onmouseout="msu();"><img class="colimg smb" style="background-color: #',vars.tribes[tribe],'" alt="" src="img/trans.gif" /> ',t[2]);}
else {text.push('highlight.add(\'',tribe,'\', \'tribe\');" onmouseover="show(\'',t[25],'\',1);" onmouseout="msu();">',t[3]);}
text.push('</a></div></td></tr></table><a class="spl" href="http://',serversettings.twstatsdomain,'/',serversettings.prefix,data.server,'/index.php?page=tribe&mode=members&id=',tribe,'" onclick="memberlist.fetch(1,',tribe,',\'list\',0); return false;" onmouseover="show(\'',t[26],'\',1);" onmouseout="msu();" target="_blank">',t[27],'</a>\
<a class="spl" href="',serversettings.folder,'history/tribe/',tribe,'" onmouseover="show(\'',t[28],'\',1);" onmouseout="msu();" target="_blank">',t[29],'</a>');}

if (smallmen||vild) {text.push('<a class="spl" href="http://',serversettings.twstatsdomain,'/',serversettings.prefix,data.server,'/index.php?page=',(vild?'village&id='+vild[0]:((player!='0'&&player!='')?'player&id='+player:'tribe&id='+tribe)),'" target="_blank"');
if ((player!='0'&&player!='')||(tribe!='0'&&tribe!='')) {text.push(' onclick="twstats(\'',player,'\',\'',tribe,'\',\'',(vild?vild[0]:''),'\'); return false;" onmouseover="show(\'',t[30],'\',1);" onmouseout="msu();"');}
else {text.push(' onmouseover="show(\'',t[31],'\',1);" onmouseout="msu();" onclick="Close();"');}
text.push('>',t[32],'</a><a class="spl" href="javascript: bbcode(0,\'',id,'\',\'',player,'\',\'',tribe,'\',0);" onmouseover="show(\'',t[33],'\',1);" onmouseout="msu();">',t[34],'</a>');}

if (!smallmen) {if (!vild) {if (vars.none[id]) {text.push(t[37]);} else {text.push(t[38]);}
text.push(vars.borderright,vars.spacer,vars.borderleft);}

text.push('<a class="spl" href="javascript: notelist(\'',id,'\',\'',player,'\',\'',tribe,'\');" onmouseover="show(\'',t[35],'\',1);" onmouseout="msu();">',t[36],'</a>\
<a class="spl" href="traveltimes?world=',data.server,'&xs=',x,'&ys=',y,'" target="_blank" onclick="manual(',x,', ',y,',1); return false;" onmouseover="show(\'',t[39],'\',1);" onmouseout="msu();">',t[40],'</a>\
<a class="spl" href="traveltimes?world=',data.server,'&xd=',x,'&yd=',y,'" target="_blank" onclick="manual(',x,', ',y,'); return false;" onmouseover="show(\'',t[41],'\',1);" onmouseout="msu();">',t[42],'</a>\
<a class="spl" href="',vars.moveurl(x,y),'" target="_blank" onclick="mov(',x,',',y,'); return false;" onmouseover="show(\'',t[43],x,'|',y,t[44],'\',1);" onmouseout="msu();">',t[45],'</a>');}
else if ((player!='0'&&player!='')||(tribe!='0'&&tribe!='')) {text.push('<a class="spl" href="javascript: notelist(\'\',\'',player,'\',\'',tribe,'\');" onmouseover="show(\'',t[46],'\',1);" onmouseout="msu();">',t[47],'</a>');}

textbox.menu(smallmen?'<a class="spl tl" href="javascript: tooltipInfo(\''+tribe+'\',\''+player+'\',0,1);">'+(player!='0'&&player!=''?fetch.player[0](player):tribe!='0'&&tribe!=''?fetch.tribe[0](tribe,1):t[48])+'</a>':'<a class="spl tl" href="javascript: tooltipInfo('+x+', '+y+');">('+x+'|'+y+') K'+fetch.k(x,y)+'</a>', text.join(''), 't100 ie');}}

function twstats(player, tribe, village, tab) {if (cancelcol()&&serversettings.twstatsdomain!='') {var s=serversettings.prefix+data.server; var url='http://'+serversettings.twstatsdomain+'/'; var t=lang.twstats;
vars.text=['<table cellpadding="0" cellspacing="0" class="t100 twstats"><tr><td class="qtl"><div /></td><td class="qt" colspan="5"></td><td class="qtr"><div /></td></tr>\
<tr><td class="ql"></td><td class="qc h1" colspan="5"><b><u>',t[0],'</u></b>',vars.borderright,'\
<tr><td class="qsl"></td><td class="qs"></td><td class="qspt"></td><td class="qs"></td><td class="qspt"></td><td class="qs"></td><td class="qsr"></td></tr>\
<tr class="setqc"><td class="ql"></td><td class="qc\
',(tab!='oda'&&tab!='odd'?' sel"><b>'+t[1]+'</b>':'"><a class="spl" href="javascript: twstats(\''+player+'\',\''+tribe+'\',\''+village+'\');">'+t[1]+'</a>'),'\
</td><td class="qsv"></td><td class="qc\
',(tab=='oda'?' sel"><b>'+t[2]+'</b>':'"><a class="spl" href="javascript: twstats(\''+player+'\',\''+tribe+'\',\''+village+'\',\'oda\');">'+t[2]+'</a>'),'\
</td><td class="qsv"></td><td class="qc\
',(tab=='odd'?' sel"><b>'+t[3]+'</b>':'"><a class="spl" href="javascript: twstats(\''+player+'\',\''+tribe+'\',\''+village+'\',\'odd\');">'+t[3]+'</a>'),vars.borderright,'\
<tr><td class="qsl"></td><td class="qs"></td><td class="qspbm"></td><td class="qs"></td><td class="qspbm"></td><td class="qs"></td><td class="qsr"></td></tr>',(player!='0'&&player!=''?'\
<td class="ql"></td><td class="qc qcnm" colspan="5"><a href="'+url+s+'/index.php?page=player&id='+player+'" target="_blank" onclick="Close()"><img src="'+url+'image.php?type=playergraph&id='+player+'&s='+s+'&graph='+tab+'" alt="'+t[4]+'" title="" width="340" height="130" /></a>'+vars.borderright+'<tr><td class="qsl"></td><td class="qs" colspan="5"></td><td class="qsr"></td></tr>':''),(tribe!='0'&&tribe!=''?'\
<td class="ql"></td><td class="qc qcnm" colspan="5"><a href="'+url+s+'/index.php?page=tribe&id='+tribe+'" target="_blank" onclick="Close()"><img src="'+url+'image.php?type=tribegraph&id='+tribe+'&s='+s+'&graph='+tab+'" alt="'+t[5]+'" title="" width="340" height="130" /></a>'+vars.borderright+'<tr><td class="qsl"></td><td class="qs" colspan="5"></td><td class="qsr"></td></tr>':''),'\
<tr><td class="ql"></td><td class="qc h1" colspan="5">',(village!='0'&&village!=''?'\
<a href="'+url+s+'/index.php?page=village&mode=conquers&id='+village+'" target="_blank" onclick="Close()">'+t[6]+'</a> - <a ':'<a class="spl" '),'href="javascript: Close();"><b>',t[7],'</b></a>',vars.borderright,'\
<tr><td class="qbl"></td><td class="qb" colspan="5"></td><td class="qbr"></td></tr></table>'].join(''); mend();}}

function bbcode(type, id, player, tribe, ign) {if (cancelcol()) {var t=lang.bbcode; var left='',right=''; var urlpart=vars.serverurl+'page.php?page=inbound&screen=info_';
var typen='bbcodes'; if (type==1) {typen='bbcodes2';} else if (type==2) {typen='html';};
if (id!=''&&villagedata[id]) {var vname=fetch.village[0](id); var xy = id.split('-'); var vild=villagedata[id];
if (type==1) {left='[url="'+urlpart+'village&id='+vild[0]+'"]'+vname+'[/url]';}
else if (type==2) {left='&lt;a href="'+urlpart+'village&id='+vild[0]+'"&gt;'+vname+'&lt;/a&gt;&lt;br /&gt;';}
else {left='[village]('+xy[1]+'|'+xy[2]+')[/village]';};
right='<a href="'+urlpart+'village&id='+vild[0]+'" target="_blank" onclick="Close()">'+vname+'</a>';}
if (player!=''&&player!='0'&&playerdata[player]) {var pname=fetch.player[0](player); if (left!='') {left+='<br />';}; 
if (type==1) {left+='[url="'+urlpart+'player&id='+player+'"]'+pname+'[/url]';}
else if (type==2) {left+='&lt;a href="'+urlpart+'player&id='+player+'"&gt;'+pname+'&lt;/a&gt;&lt;br /&gt;';}
else {left+='[player]'+pname+'[/player]';};
if (right!='') {right+='<br />';}; right+='<a href="'+urlpart+'player&id='+player+'" target="_blank" onclick="Close()">'+pname+'</a>';}
if (tribe!=''&&tribe!='0'&&tribedata[tribe]) {var tname=fetch.tribe[0](tribe,1); if (left!='') {left+='<br />';};
if (type==1) {left+='[url="'+urlpart+'ally&id='+tribe+'"]'+tname+'[/url]';}
else if (type==2) {left+='&lt;a href="'+urlpart+'ally&id='+tribe+'"&gt;'+tname+'&lt;/a&gt;&lt;br /&gt;';}
else {left+='[ally]'+tname+'[/ally]';};
if (right!='') {right+='<br />';}; right+='<a href="'+urlpart+'ally&id='+tribe+'" target="_blank" onclick="Close()">'+tname+'</a>';}
vars.text=['<table cellpadding="0" cellspacing="0" class="t100 ie"><tr><td class="qtl"><div /></td><td class="qt" colspan="3"></td><td class="qtr"><div /></td></tr>\
<tr><td class="ql"></td><td class="qc h1" colspan="3"><b><u>'+t[0]+'</u> <a href="javascript: select(\'bbcodes\');">('+t[1]+')</a></b>',vars.borderright,'\
<tr><td class="qsl"></td><td class="qs" colspan="3"></td><td class="qsr"></td></tr>\
<tr><td class="ql"></td><td class="qc h1" colspan="3"><div>',(type!=1&&type!=2?'<b>'+t[2]+'</b> - ':'<a href="javascript: bbcode(0,\''+id+'\',\''+player+'\',\''+tribe+'\','+ign+');">'+t[2]+'</a> - '),(type==1?'<b>'+t[3]+'</b> - ':'<a href="javascript: bbcode(1,\''+id+'\',\''+player+'\',\''+tribe+'\','+ign+');">'+t[3]+'</a> - '),(type==2?'<b>'+t[4]+'</b>':'<a href="javascript: bbcode(2,\''+id+'\',\''+player+'\',\''+tribe+'\','+ign+');">'+t[4]+'</a>'),'</div>',vars.borderright,'\
<tr><td class="qsl"></td><td class="qs"></td><td class="qspt"><div /></td><td class="qs"></td><td class="qsr"></td></tr>\
<tr><td class="ql"></td><td class="qc"><div id="bbcodes">',left,'</div></td><td class="qsv"></td><td class="qc"><div>',right,'</div>',vars.borderright,'\
<tr><td class="qsl"></td><td class="qs"></td><td class="qspbm"></td><td class="qs"></td><td class="qsr"></td></tr>\
<tr><td class="ql"></td><td class="qc h1" colspan="3"><div>',(!ign&&player!=''&&player!='0'?'<a href="javascript: villagelist.fetch(1,'+player+',\''+typen+'\',\'\');" onmouseover="show(\''+t[8]+'\',1);" onmouseout="msu();">'+t[5]+'</a> - ':''),(!ign&&tribe!=''&&tribe!='0'?'<a href="javascript: memberlist.fetch(1,'+tribe+',\''+typen+'\',\'\');" onmouseover="show(\''+t[9]+'\',1);" onmouseout="msu();">'+t[6]+'</a> - ':''),((!ign&&((player!=''&&player!='0')||(tribe!=''&&tribe!='0')))?'<a':'<a class="spl"'),' href="javascript: Close();"><b>'+t[7]+'</b></a></div>',vars.borderright,'\
<tr><td class="qbl"></td><td class="qb" colspan="3"></td><td class="qbr"></td></tr></table>'].join(''); mend();}}

var group={'villages':{},'players':{},'tribes':{},'list':{},'initiate':false,

'init':function() {group.initiate=true; var gr=data.groups.split('-'); var l=gr.length;
for(var i=0;i<l;i=i+6) {if (gr[i]&&gr[i+1]) {if (!gr[i+3]) {gr[i+3]='';}; if (!gr[i+4]) {gr[i+4]='';}; if (!gr[i+5]) {gr[i+5]='';};
group.list[gr[i]]=[gr[i+1],gr[i+2],gr[i+3].split('.'),gr[i+4].split('.'),gr[i+5].split('.')];}}
gr=group.list; var c=''; var tr=vars.tribes; var pl=vars.players; var vl=vars.villages;
for(var qs in gr) {
c=gr[qs][2]; l=c.length; for(var i=0;i<l;i++) {if (tr[c[i]]) {group.tribes[c[i]]=qs;} else {c.splice(i,1); i--; l--;}}
c=gr[qs][3]; l=c.length; for(var i=0;i<l;i++) {if (pl[c[i]]) {group.players[c[i]]=qs;} else {c.splice(i,1); i--; l--;}}
c=gr[qs][4]; l=c.length; for(var i=0;i<l;i++) {if (vl[c[i]]) {group.villages[c[i]]=qs;} else {c.splice(i,1); i--; l--;}}};
if (data.defgroup&&!group.list[data.defgroup]) {data.defgroup=0;}},

'change':function(id,type,sp) {if (!group.initiate) {group.init();};
var gr=group.list; var text=['<div>']; var f=false; var ass=false; if (sp) {ass=data.defgroup;} else if (group[type+'s'][id]) {ass=group[type+'s'][id];}; var c=false; var list=[];
for(var i in gr) {if (!c) {c=true;}; if (ass==i) {list.push('<b>',gr[i][0],'</b>'); f=true;}
else {list.push('<a class="spl" href="javascript: ',(sp?('group.def(\''+i+'\');">'):('group.assign(\''+id+'\',\''+type+'\',\''+i+'\');">')),gr[i][0],'</a>');}};
if (f) {text.push('<a class="spl" href="javascript: ',(sp?('group.def(0);">None</a>'):('group.unassign(\''+id+'\',\''+type+'\');">None</a>')));} else {text.push('<b>None</b>');};
text.push(list.join(''));
if (!c) {if (confirm('No groups have been created yet. Do you want to create a new group?')) {textbox.question('group.create','',group.lt,'Create new group','Group name: ','');} else {Close();}} else if (cancelcol()) {
text.push('</div>'); textbox.menu((sp?'Set default group':'Change group'), text.join(''), 't100 ie');}},

'def':function(id) {Close(); data.defgroup=id; save();},

'editcolour':function(col,gid) {if (group.list[gid]) {col=highlight.hexcheck(col); if (col!='') {Close(); var gr=group.villages;
for(var i in gr) {if (gr[i]==gid) {highlight.edicol(i,col,'village',1);}}
gr=group.players;
for(var i in gr) {if (gr[i]==gid) {highlight.edicol(i,col,'player',1);}}
gr=group.tribes;
for(var i in gr) {if (gr[i]==gid) {highlight.edicol(i,col,'tribe',1);}}

highlight.build('village'); highlight.build('player'); highlight.build('tribe'); mode('normal',1);}}},

'unassign':function(id,type) {display.highlightcontrolsinit();
if (group[type+'s'][id]) {var gid=group[type+'s'][id];
var par='vil'; if (type=='tribe') {par='tri';} else if (type=='player') {par='pla';}
delete group[type+'s'][id];
if ($(type+'-'+id)) {if ($(par).innerHTML=='No '+type+'s highlighted.') {$(par).innerHTML='';}
$(par).appendChild($(type+'-'+id));}}
group.build(); group.textupdate(type,gid); Close();},

'assign':function(id,type,gid) {display.highlightcontrolsinit();
var par='vil'; var pid=false; if (type=='tribe') {par='tri';} else if (type=='player') {par='pla';};
if (group[type+'s'][id]) {pid=group[type+'s'][id];}; group[type+'s'][id]=gid;
if ($(type+'-'+id)&&$('group-'+gid+'-'+par)) {
$('group-'+gid+'-'+par).firstChild.firstChild.appendChild($(type+'-'+id));
if ($(par).innerHTML=='') {$(par).innerHTML='No '+type+'s highlighted.';}}
group.build(); if (pid) {group.textupdate(type,pid);}; group.textupdate(type,gid); Close();},

'textupdate':function(type,gid) {if (group.list[gid]) {
var name='Village'; var par='vil'; var num=4; if (type=='tribe') {par='tri'; name='Tribe'; num=2;} else if (type=='player') {par='pla'; name='Player'; num=3;};

if ($('group-'+gid+'-name')) {$('group-'+gid+'-name').innerHTML='<b>'+group.list[gid][0]+'</b> ('+(group.list[gid][2].length+group.list[gid][3].length+group.list[gid][4].length)+')';}
if ($('group-'+gid+'-'+par)) {var l=group.list[gid][num].length; var el=$('group-'+gid+'-'+par);
if (l) {$('group-'+gid+'-'+par).firstChild.firstChild.firstChild.innerHTML=name+'s ('+l+'):';
if (group.list[gid][1]!='0') {el.style.display='';}} else {el.style.display='none';}}}},

'lt':'A group name can only contain spaces, alphabetic characters and numeric characters.',
'name':function (gid,name) {if (group.list[gid]) {if (/^([a-zA-Z0-9 ]){1,20}$/.test(name)) {Close(); group.list[gid][0]=name; group.build(); if ($('group-'+gid+'-name')) {$('group-'+gid+'-name').innerHTML='<b>'+group.list[gid][0]+'</b> ('+(group.list[gid][2].length+group.list[gid][3].length+group.list[gid][4].length)+')';}} else {alert(group.lt);}}},

'create':function(fil,name) {display.highlightcontrolsinit();
if (/^([a-zA-Z0-9 ]){1,20}$/.test(name)) {Close(); var gr=group.list; var id=1; var freenum=true;
while(freenum) {if (gr[id]) {id++;} else {freenum=false;}};
group.list[id]=[name,1,[],[],[]]; group.add(id); group.build();} else {alert(group.lt);}},

'add':function(id,queue) {if (id&&group.list[id]&&!$('group-'+id)) {
var text = ['<table cellpadding="0" cellspacing="1" id="group-',id,'" class="ttt"><tr><td class="fl"><div id="group-',id,'-name"><b>',group.list[id][0],'</b> (',group.list[id][2].length+group.list[id][3].length+group.list[id][4].length,')</div></td><td class="stsr fr"><div><a href="javascript: group.toggle(\'',id,'\');" id="group-',id,'-toggle">'];
var ds=''; if (group.list[id][1]=='0') {ds=' style="display: none;"'; text.push('Expand');} else {text.push('Collapse');};
var sd=group.list[id][2]; var l=sd.length; var ar=vars.tribes; var h=ds;
if (!l) {h=' style="display: none;"';}
text.push('</a> - <a href="javascript: group.options(\'',id,'\');">Options</a></div></td></tr><tr'); text.push(h); text.push(' id="group-'); text.push(id); text.push('-tri"><td colspan="2"><div class="lefta"><div>Tribes (',l,'):</div>');
for(var i=0;i<l;i++) {text.push(highlight.addtribe(sd[i],ar[sd[i]],1));};
sd=group.list[id][3]; l=sd.length; ar=vars.players;
if (!l) {h=' style="display: none;"';} else {h=ds;}
text.push('</div></td></tr><tr',h,' id="group-',id,'-pla"><td colspan="2"><div class="lefta"><div>Players (',l,'):</div>');
for(var i=0;i<l;i++) {text.push(highlight.addplayer(sd[i],ar[sd[i]],1));};
sd=group.list[id][4]; l=sd.length; ar=vars.villages;
if (!l) {h=' style="display: none;"';} else {h=ds;}
text.push('</div></td></tr><tr',h,' id="group-',id,'-vil"><td colspan="2"><div class="lefta"><div>Villages (',l,'):</div>');
for(var i=0;i<l;i++) {text.push(highlight.addvillage(sd[i],ar[sd[i]],1));};
text.push('</div></td></tr></table>');
if (queue) {return text.join('');} else if ($('gro').innerHTML=='No groups created.') {$('gro').innerHTML=text.join('');} else {$('gro').innerHTML+=text.join('');};
}},

'toggle':function(id) {if (group.list[id]&&$('group-'+id+'-toggle')) {var d='';
if (group.list[id][1]!='0') {group.list[id][1]=0; d='none'; $('group-'+id+'-toggle').innerHTML='Expand'; group.build();}
else {group.list[id][1]=''; $('group-'+id+'-toggle').innerHTML='Collapse'; group.build();}
if (group.list[id][2].length) {$S('group-'+id+'-tri').display=d;}; if (group.list[id][3].length) {$S('group-'+id+'-pla').display=d;}; if (group.list[id][4].length) {$S('group-'+id+'-vil').display=d;};}},

'build':function(me) {var datavil2={}; var datapla2={}; var datatri2={};
var gr=group.villages; var datavil={};
for(var i in gr) {if (datavil[gr[i]]) {datavil[gr[i]].push(i);} else {datavil[gr[i]]=[i];}}
gr=group.players; var datapla={};
for(var i in gr) {if (datapla[gr[i]]) {datapla[gr[i]].push(i);} else {datapla[gr[i]]=[i];}}
gr=group.tribes; var datatri={};
for(var i in gr) {if (datatri[gr[i]]) {datatri[gr[i]].push(i);} else {datatri[gr[i]]=[i];}}
gr=group.list; var datag={}; 
for(var i in gr) {datag[i]=gr[i]; if (!datatri[i]) {datatri[i]=[];}; datag[i][2]=datatri[i]; if (!datapla[i]) {datapla[i]=[];}; datag[i][3]=datapla[i]; if (!datavil[i]) {datavil[i]=[];}; datag[i][4]=datavil[i];};
group.list=datag; data.groups=''; var first=true;
for(var i in datag) {if (first) {data.groups=i+'-'+datag[i][0]+'-'+datag[i][1]+'-'+datag[i][2].join('.')+'-'+datag[i][3].join('.')+'-'+datag[i][4].join('.'); first=false;}
else {data.groups+='-'+i+'-'+datag[i][0]+'-'+datag[i][1]+'-'+datag[i][2].join('.')+'-'+datag[i][3].join('.')+'-'+datag[i][4].join('.');}};
if (!me) {save();}},

'bbcode':function(gid,typer,amount,nog) {if (cancelcol()) {
var main=[]; var villag=[];
if (group.list[gid]||nog) {
var xy,gr,vl,pl,tl,vilid,vild,kx,gro,tmp; var first=false; var v=false; var xl=0;

if (nog) {tmp=vars.tribes; gro=group.tribes; gr=[]; for(var f in tmp) {if (nog==2||!gro[f]) {gr.push(f);}}} else {gr=group.list[gid][2];}; tl=gr.length; xl=tl;
if (amount!=1&&amount!=2) {vild=tribedata;
if (tl&&amount!=3) {villag.push('<div><b>Tribes:</b></div>');}

for(var f=0;f<tl;f++) {if (vild[gr[f]]) {
if (typer==1) {villag.push('<div>[ally]',vild[gr[f]][2],'[/ally]</div>');}
else if (typer==2) {villag.push('<div>[url="',vars.serverurl,'page.php?page=inbound&screen=info_ally&id=',gr[f],'"]',vild[gr[f]][2],'[/url]</div>');}
else if (typer==3) {villag.push('<div>&lt;a href="',vars.serverurl,'page.php?page=inbound&screen=info_ally&id=',gr[f],'"&gt;',vild[gr[f]][2],'&lt;/a&gt;&lt;br /&gt;</div>');}}
}};

first=false; if (nog) {tmp=vars.players; gro=group.players; gr=[]; for(var f in tmp) {if (nog==2||!gro[f]) {gr.push(f);}}} else {gr=group.list[gid][3];}; pl=gr.length; xl+=pl;
if (amount!=1&&amount!=3) {vild=playerdata;
if (pl&&amount!=2) {villag.push('<div><b>Players:</b></div>'); first=true;}

for(var f=0;f<pl;f++) {if (vild[gr[f]]) {
if (typer==1) {villag.push('<div>[player]',vild[gr[f]][2],'[/player]</div>');}
else if (typer==2) {villag.push('<div>[url="',vars.serverurl,'page.php?page=inbound&screen=info_player&id=',gr[f],'"]',vild[gr[f]][2],'[/url]</div>');}
else if (typer==3) {villag.push('<div>&lt;a href="',vars.serverurl,'page.php?page=inbound&screen=info_player&id=',gr[f],'"&gt;',vild[gr[f]][2],'&lt;/a&gt;&lt;br /&gt;</div>');}}
}};

first=false; if (nog) {tmp=vars.villages; gro=group.villages; gr=[]; for(var f in tmp) {if (nog==2||!gro[f]) {gr.push(f);}}} else {gr=group.list[gid][4];}; vl=gr.length; xl+=vl;
if (amount!=2&&amount!=3) {vilid=vars.villageid; vild=villagedata;
if (vl&&amount!=1) {villag.push('<div><b>Villages:</b></div>'); first=true;}

for(var f=0;f<vl;f++) {if (vilid[gr[f]]) {xy = vilid[gr[f]].split('-');
if (typer==1) {villag.push('<div>[village](',xy[1],'|',xy[2],')[/village]</div>');}
else if (typer==2) {villag.push('<div>[url="',vars.serverurl,'page.php?page=inbound&screen=info_village&id=',gr[f],'"]',fetch.village[0](vilid[gr[f]]),'[/url]</div>');}
else if (typer==3) {villag.push('<div>&lt;a href="',vars.serverurl,'page.php?page=inbound&screen=info_village&id=',gr[f],'"&gt;',fetch.village[0](vilid[gr[f]]),'&lt;/a&gt;&lt;br /&gt;</div>');}}
}};

main.push('<div>');
if (typer==1) {main.push('<b>BBcode</b> - ');} else {main.push('<a href="javascript: group.bbcode(\'',gid,'\',1,',amount,',',nog,');">BBcode</a> - ');};
if (typer==2) {main.push('<b>Forum BBcode</b> - ');} else {main.push('<a href="javascript: group.bbcode(\'',gid,'\',2,',amount,',',nog,');">Forum BBcode</a> - ');}
if (typer==3) {main.push('<b>HTML</b>');} else {main.push('<a href="javascript: group.bbcode(\'',gid,'\',3,',amount,',',nog,');">HTML</a>');}
main.push('</div>',vars.borderright,vars.spacer,vars.borderleft,'<div>');
if (tl) {if (amount==3) {main.push('<b>Tribes (',tl,')</b> - ');}
else {main.push('<a href="javascript: group.bbcode(\'',gid,'\',',typer,',3,',nog,');">Tribes (',tl,')</a> - ');}}
if (pl) {if (amount==2) {main.push('<b>Players (',pl,')</b> - ');}
else {main.push('<a href="javascript: group.bbcode(\'',gid,'\',',typer,',2,',nog,');">Players (',pl,')</a> - ');}}
if (vl) {if (amount==1) {main.push('<b>Villages (',vl,')</b> - ');}
else {main.push('<a href="javascript: group.bbcode(\'',gid,'\',',typer,',1,',nog,');">Villages (',vl,')</a> - ');}}
if (amount!=1&&amount!=2&&amount!=3) {main.push('<b>All (',xl,')</b>');}
else {main.push('<a href="javascript: group.bbcode(\'',gid,'\',',typer,',0,',nog,');">All (',xl,')</a>');}
main.push('</div>',vars.borderright,vars.spacer);
if (!villag.length) {if (nog==2) {villag.push('<div class="center">No highlights.</div>');} else if (nog) {villag.push('<div class="center">No ungrouped highlights.</div>');} else {villag.push('<div class="center">This group has no members.</div>');}}} else {villag=['<div class="center">No group info.</div>'];}
main.push('<tr><td class="ql"></td><td class="qc qcnm"><div class="lefta maxh" id="vlist">',villag.join(''),'</div>');
textbox.menu((nog==2?'All highlights BBcode list':nog?'Ungrouped highlights BBcode list':group.list[gid][0]+' - Member BBcode list'), main.join(''), 't100 ie');}},

'options':function(id) {if (group.list[id]) {if (cancelcol()) {textbox.menu('Group options', ['<div>\
',(group.list[id][4].length?'<a class="spl" href="javascript: group.openvillagepages(\''+id+'\');" onmouseover="show(\'Open a tab/window to the village page at<br />Tribal Wars for every village in this group.\',1);" onmouseout="msu();">Open all village pages</a>':''),'\
<a class="spl" href="javascript: group.bbcode(\'',id,'\',1,0,0);" onmouseover="show(\'Generate a BBcode list of all<br />the members of this group.\',1);" onmouseout="msu();">Member BBcode list</a>\
<a class="spl" href="javascript: highlight.edit(\'',id,'\', \'group\');" onmouseover="show(\'Edit all the group\\\'s members their colour.\',1);" onmouseout="msu();">Edit member colours</a>\
<a class="spl" href="javascript: textbox.question(\'group.name\',\'',id,'\',group.lt,\'Change group name\',\'Group name: \',\'',group.list[id][0],'\');" onmouseover="show(\'Change this group\\\'s name.\',1);" onmouseout="msu();">Change group name</a>\
<a class="spl" href="javascript: group.del(\'',id,'\');" onmouseover="show(\'Delete this group (members will not be deleted).\',1);" onmouseout="msu();">Delete group</a>\
<a class="spl" href="javascript: group.del(\'',id,'\',1);" onmouseover="show(\'Delete this group and all of its members.\',1);" onmouseout="msu();">Delete group and members</a>\
</div>'].join(''), 't100 ie');}}},

'openvillagepages':function(id) {if (group.list[id]) {var mark=group.list[id][4]; var vild=villagedata; var l=mark.length;
for(var i=0;i<l;i++) {window.open(vars.serverpage+'screen=info_village&id='+group.list[id][4][i]);}}},
'openallvillagepages':function(ig) {var a=1; if (data.lightvillages) {var mark=data.lightvillages.split('-'); var l=mark.length;
for(var i=0;i<l;i+=2) {if (ig||!group.villages[mark[i]]) {window.open(vars.serverpage+'screen=info_village&id='+mark[i]); a=0;}}}
if (a) {alert('No '+(ig?'villages highlighted.':'ungrouped villages.'));}},

'del':function(gid,me) {Close(); var t='Are you sure you want to delete this group? Its members will not be deleted.'; if (me) {t='Are you sure you want to delete this group and all of its members?';}; if (confirm(t)) {if (data.defgroup==gid) {data.defgroup=0;}; if (group.list[gid]) {delete group.list[gid]; var gr=group.villages;
for(var i in gr) {if (gr[i]==gid) {if (me) {highlight.del(i,'village',1);} else {if ($('village-'+i)) {if ($('vil').innerHTML=='No villages highlighted.') {$('vil').innerHTML='';}; $('vil').appendChild($('village-'+i));}}; delete group.villages[i];}}
gr=group.players;
for(var i in gr) {if (gr[i]==gid) {if (me) {highlight.del(i,'player',1);} else {if ($('player-'+i)) {if ($('pla').innerHTML=='No players highlighted.') {$('pla').innerHTML='';}; $('pla').appendChild($('player-'+i));}}; delete group.players[i];}}
gr=group.tribes;
for(var i in gr) {if (gr[i]==gid) {if (me) {highlight.del(i,'tribe',1);} else {if ($('tribe-'+i)) {if ($('tri').innerHTML=='No tribes highlighted.') {$('tri').innerHTML='';}; $('tri').appendChild($('tribe-'+i));}}; delete group.tribes[i];}}

if ($('group-'+gid)) {jQuery('#group-'+gid).remove();}
if ($('gro').innerHTML=='') {$('gro').innerHTML='No groups created.';}
group.build(me);
if (me) {highlight.build('village'); highlight.build('player'); highlight.build('tribe'); mode('normal',1);}}}}}

function select(id) {if (document.selection&&document.selection.empty) {document.selection.empty();}
else if (window.getSelection) {window.getSelection().removeAllRanges();}
if (document.selection&&document.body.createTextRange) {var range = document.body.createTextRange();
range.moveToElementText($(id));
range.select();}
else if (window.getSelection) {var range = document.createRange();
range.selectNode($(id));
window.getSelection().addRange(range);}
else {alert('The required methods are not supported by your browser. Select the text manually.');}}

var villagelist={'highlight':function(id, element, remove) {if (villagedata[id]) {
var v=villagedata[id];
element=element.parentNode.parentNode;
if (remove) {highlight.del(v[0],'village'); element.firstChild.innerHTML='<a class="spl" href="javascript:;" onclick="villagelist.highlight(\''+id+'\', this, 0);">'+fetch.village[0](id)+'</a>';
element.childNodes[1].innerHTML='';}
else {highlight.add(v[0],'village',1);
element.firstChild.innerHTML='<div>'+fetch.village[0](id)+'</div>';
element.childNodes[1].innerHTML='<a class="dell" href="javascript:;" onclick="villagelist.highlight(\''+id+'\', this, 1);">(delete) <img class="colimg" src="img/trans.gif" alt="" style="background-color: #'+vars.villages[v[0]]+';" /></a>';}
mend();}},

'sort':function(a,b) {var x = a[0][3].toLowerCase(); var y = b[0][3].toLowerCase(); var so=0; if (x<y) {so=-1;} else if (x>y) {so=1;} else {x = parseInt(a[0][0]); y = parseInt(b[0][0]); if (x<y) {so=-1;} else if (x>y) {so=1;}}; return (so);},
'fetch':function(dt, id, type, amount) {var vild=villagedata; var v=[]; for(var i in vild) {if (vild[i][1]==id) {v.push([vild[i],i]);}}; villagelist.villages[id]=v;
if (id!='0'&&id!='') {if (!playerdata[id]||v.length<parseInt(playerdata[id][3])) {
if (dt) {villagelist.show(id, type, 2, amount);} else {vars.change=['villagelist-'+id, type, amount];};

jQuery.ajax({'url':'data.php?id='+id+'&type=villagelist&ms='+vars.dat,
'success':function() {if (dt&&vars.change[0]=='villagelist-'+id) {v=[]; for(var i in vild) {if (vild[i][1]==id) {v.push([vild[i],i]);}}; villagelist.villages[id]=v; v.sort(villagelist.sort);
villagelist.show(id, vars.change[1], 0, vars.change[2]);}},
'error':function() {if (dt&&vars.change[0]=='villagelist-'+id) {villagelist.show(id, vars.change[1], 1, vars.change[2]);}},
'dataType':'parse'});}
else if (dt) {villagelist.show(id, type, 0, amount);}}},
'villages':{},
'show':function(id,type,err,amount) {if (cancelcol()) {var ms=new Date().getTime(); vars.change=['villagelist-'+id, type, amount]; var main=[];
var typer=0; if (type=='bbcodes') {typer=1;} else if (type=='highlight') {typer=2;} else if (type=='main') {typer=3;} else if (type=='bbcodes2') {typer=4;} else if (type=='html') {typer=5;}
if (id&&id!='0'&&id!=''&&playerdata[id]&&villagelist.villages[id]) {var villag=['<table cellpadding="0" cellspacing="0" class="vlit">']; var xy,kx; var v = villagelist.villages[id]; v.sort(villagelist.sort); var xl = v.length;
var title='<div><b><u>'+playerdata[id][2]+' - Village list</u> <a href="javascript: select(\'vlist\');">(select list)</a></b></div>';

var cont={}; var vilsdf=vars.villages;
for(var f=0;f<xl;f++) {
xy = v[f][1].split('-'); kx = fetch.k(xy[1],xy[2]); if (cont[kx]) {cont[kx]++;} else {cont[kx]=1;}
if (amount==''||kx==amount) {if (typer==1) {villag.push('<tr><td>[village](',xy[1],'|',xy[2],')[/village]');}
else if (typer==4) {villag.push('<tr><td>[url="',vars.serverurl,'page.php?page=inbound&screen=info_village&id=',v[f][0][0],'"]',fetch.village[0](v[f][1]),'[/url]');}
else if (typer==5) {villag.push('<tr><td>&lt;a href="',vars.serverurl,'page.php?page=inbound&screen=info_village&id=',v[f][0][0],'"&gt;',fetch.village[0](v[f][1]),'&lt;/a&gt;&lt;br /&gt;');}
else {villag.push('<tr onmouseover="show(tooltiptext(\'',xy[1],'\',\'',xy[2],'\'));" onmouseout="msu();"><td class="tb1">');
if (typer==2) {if (vilsdf[v[f][0][0]]) {villag.push('<div>',fetch.village[0](v[f][1]),'</div></td><td><a href="javascript:;" class="dell" onclick="villagelist.highlight(\''+v[f][1]+'\', this, 1);">(delete) <img class="colimg" style="background-color: #',vilsdf[v[f][0][0]],';" alt="" src="img/trans.gif" /></a>');}
else {villag.push('<a class="spl" href="javascript:;" onclick="villagelist.highlight(\''+v[f][1]+'\', this, 0);">',fetch.village[0](v[f][1]),'</a></td><td></td><td>');}}
else if (typer==3) {villag.push('<a class="spl" href="',vars.serverpage,'screen=info_village&id=',v[f][0][0],'" onclick="mainvillage.set(\'',v[f][0][0],'\',\'',id,'\',1);return false;">',fetch.village[0](v[f][1]),'</a>');}
else {villag.push('<a class="spl" href="',vars.serverpage,'screen=info_village&id=',v[f][0][0],'" onclick="showmen(\'',xy[1],'\',\'',xy[2],'\',event); return false;" oncontextmenu="if (data.rightclick==\'1\') {return false;}">',fetch.village[0](v[f][1]),'</a>');}}
villag.push('</td></tr>');}}
villag.push('</table>');

var con=0; main.push('<div>');
if (typer!=3) {
if (typer==0) {main.push('<b>Normal list</b> - ');} else {main.push('<a href="javascript: villagelist.show(\'',id,'\',\'list\',',err,',\'',amount,'\');" onmouseover="show(\'Displays a list of the player\\\'s villages,<br />selecting one will display its village menu.\',1);" onmouseout="msu();">Normal list</a> - ');}
if (typer==1||typer==4||typer==5) {main.push('<b>BBcode list</b> - ');} else {main.push('<a href="javascript: villagelist.show(\'',id,'\',\'bbcodes\',',err,',\'',amount,'\');" onmouseover="show(\'Displays a list of the player\\\'s<br />villages in BBcode format.\',1);" onmouseout="msu();">BBcode list</a> - ');}
if (typer==2) {main.push('<b>Highlight list</b>');} else {main.push('<a href="javascript: villagelist.show(\''+id+'\', \'highlight\', '+err+', \''+amount+'\');" onmouseover="show(\'Displays a list of the player\\\'s villages with your<br />highlights displayed, selecting one will highlight it.\',1);" onmouseout="msu();">Highlight list</a>');}
main.push('<br />');}
if (typer==0) {main.push('Click a village to view its menu.');}
else if (typer==2) {main.push('Click a village to highlight it.');}
else if (typer==3) {main.push('<div><a href="javascript: mainvillage.center();">Center on main</a> - <a href="javascript: mainvillage.unset();">Unset main</a><br />Click a village to set it as your main.</div>');}
else {if (typer==1) {main.push('<b>BBcode</b> - ');} else {main.push('<a href="javascript: villagelist.show(\'',id,'\',\'bbcodes\',',err,',\'',amount,'\');">BBcode</a> - ');};
if (typer==4) {main.push('<b>Forum BBcode</b> - ');} else {main.push('<a href="javascript: villagelist.show(\'',id,'\',\'bbcodes2\',',err,',\'',amount,'\');">Forum BBcode</a> - ');}
if (typer==5) {main.push('<b>HTML</b>');} else {main.push('<a href="javascript: villagelist.show(\'',id,'\',\'html\',',err,',\'',amount,'\');">HTML</a>');}}

main.push('</div>',vars.borderright,vars.spacer,vars.borderlefth1,'<div>');

var aTemp=[]; var co=''; for(var co in cont) {aTemp.push([co,cont[co]]);}
aTemp.sort(function (a,b) {if (parseInt(a[0])>parseInt(b[0])) {return 1;} else {return -1;}});
cont={}; co=aTemp.length;

for(var i=0;i<co;i++) {if (aTemp[i][0]==amount) {main.push('<b>K',aTemp[i][0],' (',aTemp[i][1],')</b>');} 
else {main.push('<a href="javascript: villagelist.show(\'',id,'\',\'',type,'\',',err,',\'',aTemp[i][0],'\',1);">K',aTemp[i][0],' (',aTemp[i][1],')</a>');}
con++; if (con>=4) {main.push('<br />'); con=0;} else {main.push(' - ');}}
if (amount=='') {main.push('<b>All (',xl,')</b>');} 
else {main.push('<a href="javascript: villagelist.show(\'',id,'\',\'',type,'\',',err,',\'\');">All (',xl,')</a>');};
main.push('</div>',vars.borderright,vars.spacer,'<tr><td class="ql"></td><td class="qc qcnm" valign="top">\
<div class="lefta maxh" id="vlist">',villag.join(''),'</div>'); if (err==2||err==1) {main.push(vars.borderright,vars.spacer,vars.borderleft);}} else {var title='<b><u>No player info</u></b>';
if (typer==3) {main.push('<div><a href="javascript: mainvillage.center();">Center on main</a> - <a href="javascript: mainvillage.unset();">Unset main</a><br />Click a village to set it as your main.</div>');}}

if (err==2) {main.push('Please wait. Loading player village data.');} else if (err==1) {main.push('Could not load player village data. <a href="javascript: villagelist.fetch(1,'+id+',\''+type+'\',\''+amount+'\');">Retry</a>');}
textbox.menu(vars.borderlefth1+title,main.join(''),'t100 ie',1,0,0,1);}}}

var memberlist={'highlight':function(id, element, remove) {if (playerdata[id]) {
var v=playerdata[id];
element=element.parentNode.parentNode;
if (remove) {highlight.del(id,'player'); element.firstChild.innerHTML='<a class="spl" href="javascript:;" onclick="memberlist.highlight(\''+id+'\', this, 0);">'+v[2]+'</a>'; element.childNodes[1].innerHTML='';}
else {highlight.add(id,'player',1);
element.firstChild.innerHTML='<div>'+v[2]+'</div>';
element.childNodes[1].innerHTML='<a class="dell" href="javascript:;" onclick="memberlist.highlight(\''+id+'\', this, 1);">(delete) <img class="colimg" style="background-color: #'+vars.players[id]+';" alt="" src="img/trans.gif" /></a>';}
mend();}},
'sort':function(a,b) {var x = a[0][2].toLowerCase(); var y = b[0][2].toLowerCase(); var so=0; if (x<y) {so=-1;} else if (x>y) {so=1;} else {x = parseInt(a[0][1]); y = parseInt(b[0][1]); if (x<y) {so=-1;} else if (x>y) {so=1;}}; return (so);},
'sortrank':function(a,b) {var x = parseInt(a[0][8]); var y = parseInt(b[0][8]); var so=0; if (x<y||b[0][0]=='0'||b[0][3]=='0') {so=-1;} else if (x>y||a[0][0]=='0'||a[0][3]=='0') {so=1;} else {x = a[0][2].toLowerCase(); y = b[0][2].toLowerCase(); if (x<y) {so=-1;} else if (x>y) {so=1;} else {x = parseInt(a[0][1]); y = parseInt(b[0][1]); if (x<y) {so=-1;} else if (x>y) {so=1;}}}; return (so);},
'sortoda':function(a,b) {var x = parseInt(a[0][11]); var y = parseInt(b[0][11]); var so=0; if (x<y) {so=-1;} else if (x>y) {so=1;} else {x = a[0][2].toLowerCase(); y = b[0][2].toLowerCase(); if (x<y) {so=-1;} else if (x>y) {so=1;} else {x = parseInt(a[0][1]); y = parseInt(b[0][1]); if (x<y) {so=-1;} else if (x>y) {so=1;}}}; return (so);},
'sortodd':function(a,b) {var x = parseInt(a[0][12]); var y = parseInt(b[0][12]); var so=0; if (x<y) {so=-1;} else if (x>y) {so=1;} else {x = a[0][2].toLowerCase(); y = b[0][2].toLowerCase(); if (x<y) {so=-1;} else if (x>y) {so=1;} else {x = parseInt(a[0][1]); y = parseInt(b[0][1]); if (x<y) {so=-1;} else if (x>y) {so=1;}}}; return (so);},
'sortactivity':function(a,b) {var x = parseInt(a[0][4]); if (x<parseInt(a[0][6])) {x=parseInt(a[0][6]);}; var y = parseInt(b[0][4]); if (y<parseInt(b[0][6])) {y=parseInt(b[0][6]);}; var so=0; if (x<y) {so=-1;} else if (x>y) {so=1;} else {x = a[0][2].toLowerCase(); y = b[0][2].toLowerCase(); if (x<y) {so=-1;} else if (x>y) {so=1;} else {x = parseInt(a[0][1]); y = parseInt(b[0][1]); if (x<y) {so=-1;} else if (x>y) {so=1;}}}; return (so);},
'fetch':function(dt, id, type, sort) {var vild=playerdata; var v=[]; for(var i in vild) {if (vild[i][1]==id) {v.push([vild[i],i]);}}; memberlist.villages[id]=v;
if (id!='0'&&id!='') {if (!tribedata[id]||v.length<parseInt(tribedata[id][1])) {
if (dt) {memberlist.show(id, type, 2, 0);} else {vars.change=['memberlist-'+id, type, sort];};

jQuery.ajax({'url':'data.php?id='+id+'&type=memberlist&ms='+vars.dat,
'success':function() {if (dt&&vars.change[0]=='memberlist-'+id) {v=[]; for(var i in vild) {if (vild[i][1]==id) {v.push([vild[i],i]);}}; memberlist.villages[id]=v;
memberlist.show(id, vars.change[1], 0, vars.change[2]);}} ,
'error':function() {if (dt&&vars.change[0]=='memberlist-'+id) {memberlist.show(id, vars.change[1], 1, vars.change[2]);}},
'dataType':'parse'});}
else if (dt) {memberlist.show(id, type, 0, sort);}}},
'villages':{},
'show':function(id,type,err,sort) {if (cancelcol()) {vars.change=['memberlist-'+id, type, sort]; var main=[];
var typer=0; if (type=='bbcodes') {typer=1;} else if (type=='highlight') {typer=2;} else if (type=='activity') {typer=3;} else if (type=='bbcodes2') {typer=4;} else if (type=='html') {typer=5;};
if (id&&id!='0'&&id!=''&&tribedata[id]&&memberlist.villages[id]) {var villag=['<table cellpadding="0" cellspacing="0" class="vlit">'];
var title='<div><b><u>'+tribedata[id][2]+' - Member list</u> <a href="javascript: select(\'vlist\');">(select list)</a></b></div>';
var v=memberlist.villages[id]; var xl=v.length;
if (sort==1) {v.sort(memberlist.sortrank);} else if (sort==2) {v.sort(memberlist.sortactivity);} else if (sort==3) {v.sort(memberlist.sortoda);} else if (sort==4) {v.sort(memberlist.sortodd);} else {v.sort(memberlist.sort);}

var curtime=new Date().getTime()/1000+serversettings.time; var d=datetime; var sfd=''; var vilsdf=vars.players;
for(var f=0;f<xl;f++) {if (v[f][0][0]!='0'&&v[f][0][3]!='0'&&v[f][0][8]!='0') {
if (typer==1) {villag.push('<tr><td>[player]',v[f][0][2],'[/player]');}
else if (typer==4) {villag.push('<tr><td>[url="',vars.serverurl,'page.php?page=inbound&screen=info_player&id=',v[f][1],'"]',v[f][0][2],'[/url]');}
else if (typer==5) {villag.push('<tr><td>&lt;a href="',vars.serverurl,'page.php?page=inbound&screen=info_player&id=',v[f][1],'"&gt;',v[f][0][2],'&lt;/a&gt;&lt;br /&gt;');}
else {villag.push('<tr onmouseover="show(tooltiptext(\'',v[f][0][1],'\',\'',v[f][1],'\', 1));" onmouseout="msu();"><td class="tb1">');
if (typer==2) {if (vilsdf[v[f][1]]) {villag.push('<div>',v[f][0][2],'</div></td><td><a href="javascript:;" class="dell" onclick="memberlist.highlight(\''+v[f][1]+'\', this, 1);">(delete) <img class="colimg" style="background-color: #',vilsdf[v[f][1]],';" alt="" src="imh/trans.gif" /></a>');}
else {villag.push('<a class="spl" href="javascript:;" onclick="memberlist.highlight(\''+v[f][1]+'\', this, 0);">',v[f][0][2],'</a></td><td></td><td>');}}
else if (typer==3) {sfd=v[f][0][4]; if (v[f][0][6]>sfd) {sfd=v[f][0][6];}
villag.push('<a class="spl" href="',vars.serverpage,'screen=info_player&id=',v[f][1],'" onclick="showmen(\'',v[f][0][1],'\',\'',v[f][1],'\', event, \'tribe\');return false;">',d(curtime-sfd),' - ',v[f][0][2],'</a>');}
else {villag.push('<a class="spl" href="',vars.serverpage,'screen=info_player&id=',v[f][1],'" onclick="showmen(\'',v[f][0][1],'\',\'',v[f][1],'\', event, \'tribe\');return false;">',v[f][0][2],'</a>');}
villag.push('</td></tr>');}}}
villag.push('</table>');
main.push('<div>');
if (typer==0) {main.push('<b>Normal list</b> - ');} else {main.push('<a href="javascript: memberlist.show(\'',id,'\',\'list\',',err,',',sort,');" onmouseover="show(\'Displays a list of the tribe\\\'s members,<br />selecting one will display their menu.\',1);" onmouseout="msu();">Normal list</a> - ');}
if (typer==1||typer==4||typer==5) {main.push('<b>BBcode list</b> - ');} else {main.push('<a href="javascript: memberlist.show(\'',id,'\',\'bbcodes\',',err,',',sort,');" onmouseover="show(\'Displays a list of the tribe\\\'s<br />members in BBcode format.\',1);" onmouseout="msu();">BBcode list</a> - ');}
if (typer==2) {main.push('<b>Highlight list</b> - ');} else {main.push('<a href="javascript: memberlist.show(\''+id+'\',\'highlight\','+err+','+sort+');" onmouseover="show(\'Displays a list of the tribe\\\'s members with your<br />highlights displayed, selecting one will highlight them.\',1);" onmouseout="msu();">Highlight list</a> - ');}
if (typer==3) {main.push('<b>Activity list</b>');} else {main.push('<a href="javascript: memberlist.show(\'',id,'\',\'activity\',',err,',',sort,');" onmouseover="show(\'Displays a list of the tribe\\\'s members with<br />the time since the last known activity,<br />selecting one will display their menu.\',1);" onmouseout="msu();">Activity list</a>');}
main.push('<br />');
if (typer==0||typer==3) {main.push('Click a player to view their menu.');}
else if (typer==2) {main.push('Click a player to highlight them.');}
else {if (typer==1) {main.push('<b>BBcode</b> - ');} else {main.push('<a href="javascript: memberlist.show(\'',id,'\',\'bbcodes\',',err,',',sort,');">BBcode</a> - ');};
if (typer==4) {main.push('<b>Forum BBcode</b> - ');} else {main.push('<a href="javascript: memberlist.show(\'',id,'\',\'bbcodes2\',',err,',',sort,');">Forum BBcode</a> - ');}
if (typer==5) {main.push('<b>HTML</b>');} else {main.push('<a href="javascript: memberlist.show(\'',id,'\',\'html\',',err,',',sort,');">HTML</a>');}}
main.push('</div>',vars.borderright,vars.spacer,vars.borderlefth1,'<div>Sort by: ');
if (sort!=1&&sort!=2&&sort!=3&&sort!=4) {main.push('<b>Name</b> - ');}
else {main.push('<a href="javascript: memberlist.show(\'',id,'\',\'',type,'\',',err,',0);">Name</a> - ');}
if (sort==1) {main.push('<b>Points</b> - ');} else {main.push('<a href="javascript: memberlist.show(\'',id,'\',\'',type,'\',',err,',1);">Points</a> - ');}
if (sort==3) {main.push('<b>ODA</b> - ');} else {main.push('<a href="javascript: memberlist.show(\'',id,'\',\'',type,'\',',err,',3);">ODA</a> - ');}
if (sort==4) {main.push('<b>ODD</b> - ');} else {main.push('<a href="javascript: memberlist.show(\'',id,'\',\'',type,'\',',err,',4);">ODD</a> - ');}
if (sort==2) {main.push('<b>Activity</b>');} else {main.push('<a href="javascript: memberlist.show(\'',id,'\',\'',type,'\',',err,',2);">Activity</a>');}
main.push('</div>',vars.borderright,vars.spacer,'<tr><td class="ql"></td><td class="qc qcnm" valign="top">\
<div class="lefta maxh" id="vlist">',villag.join(''),'</div>'); if (err==2||err==1) {main.push(vars.borderright,vars.spacer,vars.borderleft);}} else {var title='<b><u>No tribe info</u></b>';}

if (err==2) {main.push('Please wait. Loading tribe member data.');} else if (err==1) {main.push('Could not load tribe member data. <a href="javascript: memberlist.fetch(1,',id,',\'',type,'\',\'',sort,'\');">Retry</a>');}
textbox.menu(vars.borderlefth1+title,main.join(''),'t100 ie',1,0,0,1);}}}

function savenote(type,id,noteid,desc,content) {vars.notechange=false; display.notesinit();
var notelement=false; if ($('note-'+id+'-'+noteid)) {notelement=$('note-'+id+'-'+noteid);}
var desce=desc.replace(/\r\n|\n|\r/g, '<br />'); var contente=content.replace(/\r\n|\n|\r/g, '<br />');

if (!external) {
if (desce==''&&contente=='') {
if (notelement&&!(notelement.parentNode.childNodes.length>2)) {if (note[id]) {delete note[id];}; jQuery($('note-'+id)).remove(); if (!$(type+'notelist').childNodes.length>0) {$(type+'notelist').innerHTML='No '+type+' notes.';}}
else {if (note[id]&&note[id][noteid]) {delete note[id][noteid];}; jQuery(notelement).remove();}}

else {if (note[id]&&note[id][noteid]) {note[id][noteid][0]=desce; note[id][noteid][1]=contente;}
else {if (!note[id]) {note[id]={};}; note[id][noteid]=[desce,contente];}
if (notelement) {notelement.firstChild.firstChild.innerHTML=(desce==''?'&nbsp;':desce);}
else if ($(type+'notelist').innerHTML=='No '+type+' notes.') {$(type+'notelist').innerHTML='<table class="ttt" cellpadding="1" cellspacing="1">'+display['note'+type+'add'](id)+'</table>';}
else {$(type+'notelist').innerHTML+=display['note'+type+'add'](id);}}

savenoteajax(type,id,noteid,desc,content);}
Close();}

function savenoteajax(type,id,noteid,desc,content) {jQuery.ajax({'url':'note.php?id='+encode(id)+'&userid='+encode(userid)+'&noteid='+noteid+'&ms='+new Date().getTime(),
'data':'description='+encode(desc)+'&content='+encode(content),
'error':function() {if (confirm((desc==''&&content==''?'Note could not be deleted. Do you want to retry deleting the note?':'Note could not be saved. Do you want to retry saving?'))) {
savenoteajax(type,id,noteid,desc,content);}},
'type':'post'});}

function notelist(id, player, tribe) {if (cancelcol()) {var not; var text=[];

if (id!='') {text.push(display.notevillageadd(id,0,2));}

if (player!=''&&player!='0') {if (id!='') {text.push(vars.borderright,vars.spacer,vars.borderleft);};
text.push(display.noteplayeradd('P-'+player,0,2));}

if (tribe!=''&&tribe!='0') {if ((player!=''&&player!='0')||id!='') {text.push(vars.borderright,vars.spacer,vars.borderleft);};
text.push(display.notetribeadd('T-'+tribe,0,2));}

textbox.menu('Notes', text.join(''), 't100 ie');}}

function notes(nid, noteid) {if (cancelcol()) {var no=false;

var id=nid.split('-'); var type='village'; if (id[0]=='P') {type='player';} else if (id[0]=='T') {type='tribe';}
if (note[nid]) {no=note[nid];}

if (!noteid) {if (no) {l=no.length; var num=[]; for(var i in no) {num[i]=true;}
var curr=1; while(!noteid) {if (num[curr]) {curr++;} else {noteid=curr;}}} else {noteid=1;}
no=false;}

var text=['<form action="javascript:;" onsubmit="savenote(\'',type,'\', \'',nid,'\', \'',noteid,'\', $(\'ajaxdesc\').value, $(\'ajaxnote\').value);"><table cellpadding="1" cellspacing="1" class="ttt" style="width: 406px;">\
<tr><td><div><b>Note description (optional)</b><br />Enter the note\'s description bellow, this text will be displayed in the village\'s tooltip and note list.</div></td></tr>\
<tr><td><div><textarea id="ajaxdesc" onkeydown="vars.notechange=true" onfocus="vars.notec=this.innerHTML" onblur="if (vars.notec!=this.innerHTML) {vars.notechange=true}">',(no?note[nid][noteid][0].replace(/<br \/>/g, '\n'):''),'</textarea></div></td></tr>\
<tr><td><div><b>Note content (optional)</b><br />Enter the note\'s content bellow. You can choose to enter only a description above and leave the content bellow empty.</div></td></tr>\
<tr><td><div id="notecontent"><textarea id="ajaxnote" onkeydown="vars.notechange=true" onfocus="vars.notec=this.innerHTML" onblur="if (vars.notec!=this.innerHTML) {vars.notechange=true}">',(no?note[nid][noteid][1].replace(/<br \/>/g, '\n'):''),'</textarea></div></td></tr>\
<tr><td><div class="center" id="notesafe">'];
if (external) {text.push('While viewing a link to configuration notes cannot be editted.');} else {text.push('<input type="submit" class="sbut" value="" />',(no?'<input type="submit" value="" class="debut" onclick="savenote(\''+type+'\', \''+nid+'\', \''+noteid+'\', \'\', \'\'); return false;" />':''));}
text.push('</div></td></tr></table></form>');
textbox.menu(fetch[type][0](type!='village'?id[1]:nid)+' - '+(no?'View/edit ':'Add ')+'note', text.join(''), 't100');}}

var draw={'xs':0,'ys':0,'xd':0,'yd':0,'wrapper':false,'wrapperoverlay':false,'list':[],'churchlist':[],

'toggle':function() {var ch=toggleCheckbox('lt', 'drawtoggle', 1, '1'); if (ch) {data.lt=''; draw.refresh(1);} else {data.lt='1'; draw.refresh();} save(); mapurl();},
'churchtoggle':function() {var ch=toggleCheckbox('ct', 'churchtoggle', 1, '1'); if (ch) {data.ct=''; draw.refresh(1);} else {data.ct='1'; draw.refresh();} save(); mapurl();},
'churchopacity':function(op) {data.ctop=op; draw.refresh(); save(); if (vars.ie67) {$S('linewrapperoverlay').filter=op!=''?'alpha(opacity='+op*10+')':'alpha(opacity=20)';} else {$S('linewrapperoverlay').opacity=op!=''?op/10:'0.2';}; refmapurl();},

'listadd':function(arr,ign) {var text=[];
if (!ign) {text.push('<table cellpadding="0" cellspacing="0" id="line-',arr[0],'-',arr[1],'-',arr[2],'-',arr[3],'">');}
text.push('<tr><td><img class="colimg" style="background-color:#',arr[5],';" alt="" src="img/trans.gif" /></td><td class="fl"><div>',fetch.village[1]('C-'+arr[0]+'-'+arr[1],1),'<span> &mdash; </span>',fetch.village[1]('C-'+arr[2]+'-'+arr[3],1),' - ',arr[4],'px solid','</div></td><td class="fr"><div><a href="javascript: draw.options(\'',arr[0],'\',\'',arr[1],'\',\'',arr[2],'\',\'',arr[3],'\');">Options</a></div></td></tr>');
if (!ign) {text.push('</table>');}
return text.join('');},
'churchlistadd':function(arr,ig,ign,co) {var name='Circle (radius: '+arr[4]+')'; if (arr[2]==1) {name='First church';} else if (arr[2]==2) {name='Church level 1';} else if (arr[2]==3) {name='Church level 2';} else if (arr[2]=='4') {name='Church level 3';}
var text=[];
if (!ign) {text.push('<table cellpadding="0" cellspacing="0"',(!ig?' id="church-'+arr[0]+'-'+arr[1]+'"':''),'>');}
text.push('<tr><td><img class="colimg" style="background-color:#',arr[3],';" alt="" src="img/trans.gif" /></td><td class="fl"><div>',co=='C-'+arr[0]+'-'+arr[1]?'(this village)':fetch.village[1]('C-'+arr[0]+'-'+arr[1],ig?2:1),' - ',name,'</div></td>');
if (!ig) {text.push('<td class="fr"><div><a href="javascript: draw.circleoptions(\'',arr[0],'\',\'',arr[1],'\');">Options</a></div></td>');}
text.push('</tr>'); if (!ign) {text.push('</table>');}
return text.join('');},

'stroke':function(x,y,x2,y2,stroke) {var list=draw.list; var l=list.length; var id=false;
for(var i=0;i<l;i++) {if (list[i][0]==x&&list[i][1]==y&&list[i][2]==x2&&list[i][3]==y2) {id=list[i]; break;}}

if (id) {draw.add(x,y,x2,y2,stroke,id[5]); Close();}},
'type':function(x,y,x2,y2) {if (cancelcol()) {var list=draw.list; var l=list.length; var id=false;
for(var i=0;i<l;i++) {if (list[i][0]==x&&list[i][1]==y&&list[i][2]==x2&&list[i][3]==y2) {id=true; stroke=list[i][4]; break;}}

if (id) {var text=['<div>'];
if (stroke!='2'&&stroke!='3') {text.push('<b>1px solid</b><br />');} else {text.push('<a class="spl" href="javascript: draw.stroke(\'',x,'\',\'',y,'\',\'',x2,'\',\'',y2,'\',\'1\');">1px solid</a>');}
if (stroke=='2') {text.push('<b>2px solid</b><br />');} else {text.push('<a class="spl" href="javascript: draw.stroke(\'',x,'\',\'',y,'\',\'',x2,'\',\'',y2,'\',\'2\');">2px solid</a>');}
if (stroke=='3') {text.push('<b>3px solid</b>');} else {text.push('<a class="spl" href="javascript: draw.stroke(\'',x,'\',\'',y,'\',\'',x2,'\',\'',y2,'\',\'3\');">3px solid</a>');}
text.push('</div>');
textbox.menu('Line type', text.join(''), 't100 ie');}}},

'options':function(x,y,x2,y2) {if (cancelcol()) {textbox.menu('Line options', '<div>\
<a class="spl" href="javascript: highlight.edit(\''+x+'-'+y+'-'+x2+'-'+y2+'\',\'line2\');" onmouseover="show(\'Edit this line\\\'s colour.\',1);" onmouseout="msu();">Edit colour</a>\
<a class="spl" href="javascript: draw.type(\''+x+'\',\''+y+'\',\''+x2+'\',\''+y2+'\');" onmouseover="show(\'Edit this line\\\'s type.\',1);" onmouseout="msu();">Edit type</a>\
<a class="spl" href="javascript: draw.del(\''+x+'\',\''+y+'\',\''+x2+'\',\''+y2+'\');" onmouseover="show(\'Delete this line.\',1);" onmouseout="msu();">Delete</a>\
</div>', 't100 ie');}},

'saveradius':function(x,y) {
var churchtype=5; var radius=$('optchurchr').value; if ($('optchurch1').checked) {churchtype=1; radius=6;} else if ($('optchurch2').checked) {churchtype=2; radius=4;} else if ($('optchurch3').checked) {churchtype=3; radius=6;} else if ($('optchurch4').checked) {churchtype=4; radius=8;}
var list=draw.churchlist; var l=list.length; var id=false;
for(var i=0;i<l;i++) {if (list[i][0]==x&&list[i][1]==y) {id=list[i]; break;}};
if (id) {draw.churchadd(x,y,churchtype,id[3],radius);};
Close();},
'radius':function(x,y) {if (cancelcol()) {var list=draw.churchlist; var l=list.length; var id=false;
for(var i=0;i<l;i++) {if (list[i][0]==x&&list[i][1]==y) {id=list[i]; break;}}

if (id) {textbox.menu('Circle radius', ['<div><form action="javascript:;" onsubmit="draw.saveradius(\'',x,'\',\'',y,'\');">\
<table cellpadding="0" cellspacing="0" class="la" style="margin: 0px auto;">\
<tr><td><input id="optchurch1" type="radio" name="churchtype" class="rad"',(id[2]=='1'?' checked="checked"':''),' /></td><td>First church</td></tr>\
<tr><td><input id="optchurch2" type="radio" name="churchtype" class="rad"',(id[2]=='2'?' checked="checked"':''),' /></td><td>Church level 1</td></tr>\
<tr><td><input id="optchurch3" type="radio" name="churchtype" class="rad"',(id[2]=='3'?' checked="checked"':''),' /></td><td>Church level 2</td></tr>\
<tr><td><input id="optchurch4" type="radio" name="churchtype" class="rad"',(id[2]=='4'?' checked="checked"':''),' /></td><td>Church level 3</td></tr>\
<tr><td valign="top"><input id="optchurch5" type="radio" name="churchtype" class="rad"',(id[2]!='1'&&id[2]!='2'&&id[2]!='3'&&id[2]!='4'?' checked="checked"':''),' /></td><td>Custom: <input id="optchurchr" type="text" class="oi" maxlength="3" onkeydown="return submitenter(this, event);" value="',id[4],'" /></td></tr>\
</table>\
<input type="submit" class="sbut" value="" /></form></div>'].join(''), 't100 ie');}}},

'circleoptions':function(x,y) {if (cancelcol()) {display.churchinit();
textbox.menu('Circle options', ['<div>\
<a class="spl" href="javascript: highlight.edit(\'',x,'-',y,'\',\'circle2\');" onmouseover="show(\'Edit this circle\\\'s colour.\',1);" onmouseout="msu();">Edit colour</a>\
<a class="spl" href="javascript: draw.radius(\'',x,'\',\'',y,'\');" onmouseover="show(\'Edit this circle\\\'s radius.\',1);" onmouseout="msu();">Edit radius</a>\
<a class="spl" href="javascript: draw.circledel(\'',x,'\',\'',y,'\');" onmouseover="show(\'Delete this circle.\',1);" onmouseout="msu();">Delete</a>\
</div>'].join(''), 't100');}},

'line':function(x,y,x2,y2,stroke,colour) {if (!(x<draw.xs&&x2<draw.xs)&&!(x>draw.xd&&x2>draw.x2)&&!(y<draw.ys&&y2<draw.ys)&&!(y>draw.yd&&y2>draw.yd)) {
var w=vars.iconwidth; var h=vars.iconheight;

var xstart=(x-draw.xs)*w+Math.ceil(w/2); var xdest=(x2-draw.xs)*w+Math.ceil(w/2);
var ystart=(y-draw.ys)*h+Math.ceil(h/2); var ydest=(y2-draw.ys)*h+Math.ceil(h/2);
if (stroke==3) {xstart--; xdest--; ydest--; ystart--;}

if (draw.wrapper) {draw.wrapper.setColor('#'+colour); draw.wrapper.setStroke(stroke);
draw.wrapper.drawLine(xstart,ystart,xdest,ydest);}
}},
'ellipse':function(list) {var ts=data.ctop/10; if (!is_num(data.ctop)||data.ctop<0||data.ctop>8) {ts=0.2;};
var colour=list[0][3]; var arr=[colour]; var bgadd={}; var bgs=[colour,ts]; var coordinates={}; var w=vars.iconwidth; var h=vars.iconheight;
var c=''; var cg='';

if (!draw.wrapper||!draw.wrapperoverlay) {return false;}; draw.wrapper.setColor('#'+colour); draw.wrapper.setStroke(1); draw.wrapperoverlay.setColor('#'+colour); draw.wrapperoverlay.setStroke(1);

function addline(xsd,ysd,offsetx,offsety) {if (xsd>=draw.xs&&xsd<draw.xd&&ysd>=draw.ys&&ysd<draw.yd) {
var xstart=(xsd-draw.xs)*w-1; var ystart=(ysd-draw.ys)*h-1;
arr.push(xstart,ystart,xstart+offsetx,ystart+offsety);}}

var x,y,x2,y2,radius,ox,oy;
var l=list.length; for(var xq=0;xq<l;xq++) {
x=list[xq][0]; y=list[xq][1]; radius=list[xq][4]; ox=x; oy=y; x2=x*1+radius*1; y2=y*1+radius*1; x=x-radius; y=y-radius;
if (!(x<draw.xs&&x2<draw.xs)&&!(x>=draw.xd&&x2>=draw.xd)&&!(y<draw.ys&&y2<draw.ys)&&!(y>=draw.yd&&y2>=draw.yd)) {

for(var cy=y;cy<=y2;cy++) {for(var cx=x;cx<=x2;cx++) {
if (cx>=0&&cx<1000&&cy>=0&&cy<1000&&Math.ceil(Math.sqrt(Math.pow(cx-ox,2)+Math.pow(cy-oy,2)))<=radius) {
coordinates[cx+'_'+cy]=[1,1,1,1]; c=coordinates[cx+'_'+cy];
if (coordinates[(cx-1)+'_'+cy]) {coordinates[(cx-1)+'_'+cy][3]=0; c[1]=0;}
if (coordinates[(cx+1)+'_'+cy]) {coordinates[(cx+1)+'_'+cy][1]=0; c[3]=0;}
if (coordinates[cx+'_'+(cy-1)]) {coordinates[cx+'_'+(cy-1)][0]=0; c[2]=0;}
if (coordinates[cx+'_'+(cy+1)]) {coordinates[cx+'_'+(cy+1)][2]=0; c[0]=0;}
}}}
//Is displayed
}
//End loop
}

for(var i in coordinates) {cg=coordinates[i]; c=i.split('_'); if (ts>0) {bgadd[c[0]+'-'+c[1]]=[c[0],c[1]];};
/*Right*/if (cg[3]) {addline(c[0]*1+1,c[1],0,h);}
/*Bottom*/if (cg[0]) {addline(c[0],c[1]*1+1,w,0);}
/*Left*/if (cg[1]) {addline(c[0],c[1],0,h);}
/*Top*/if (cg[2]) {addline(c[0],c[1],w,0);}}

var curx,curx2,xstart,ystart,xsd,ysd,offw;
for(var i in bgadd) {xsd=bgadd[i][0]; ysd=bgadd[i][1]; curx=xsd*1+1; curx2=xsd-1;
if (xsd>=draw.xs&&xsd<draw.xd&&ysd>=draw.ys&&ysd<draw.yd) {
xstart=(xsd-draw.xs)*w; ystart=(ysd-draw.ys)*h; offw=0;
while (curx<draw.xd&&bgadd[curx+'-'+ysd]) {offw+=w; delete bgadd[curx+'-'+ysd]; curx++;}
while (curx2>=draw.xs&&bgadd[curx2+'-'+ysd]) {xstart-=w; offw+=w; delete bgadd[curx2+'-'+ysd]; curx2--;}
bgs.push(xstart,ystart,w+offw,h);
}
}

if (arr.length>1) {if (bgs.length>2) {l=bgs.length; for(var i=2;i<l;i+=4) {draw.wrapperoverlay.fillRect(bgs[i],bgs[i+1],bgs[i+2],bgs[i+3]);}};
l=arr.length; for(var i=1;i<l;i+=4) {draw.wrapper.drawLine(arr[i],arr[i+1],arr[i+2],arr[i+3]);}
}},

'add':function(x,y,x2,y2,stroke,colour) {x=checkcoordinate(x,y,is_num); if (x) {y=x[1]; x=x[0]; x2=checkcoordinate(x2,y2,is_num); if (x2) {y2=x2[1]; x2=x2[0];
x=x*1; y=y*1; x2=x2*1; y2=y2*1; if (x!=x2||y!=y2) {
var list=draw.list; var l=list.length; var exists='no'; for(var i=0;i<l;i++) {if (list[i][0]==x&&list[i][1]==y&&list[i][2]==x2&&list[i][3]==y2) {exists=i; break;}};
var arr=[x,y,x2,y2,stroke,colour]; if (exists!='no') {draw.list[exists]=arr;} else {draw.list.push(arr);}

draw.build(); draw.line(x,y,x2,y2,stroke,colour); if (draw.wrapper) {draw.wrapper.paint();}; display.drawinit(); 
if (exists!='no'&&$('line-'+x+'-'+y+'-'+x2+'-'+y2)) {$('line-'+x+'-'+y+'-'+x2+'-'+y2).innerHTML=draw.listadd(arr,1);}
else if ($('linelist').innerHTML=='No lines to display.') {$('linelist').innerHTML=draw.listadd(arr);}
else {$('linelist').innerHTML+=draw.listadd(arr);}
} else {alert('Start and destination coordinates are the same.');}}}},
'churchadd':function(x,y,churchtype,colour,radius) {x=checkcoordinate(x,y,is_num); if (x) {y=x[1]; x=x[0];
if (x<1000&&y<1000) {x=x*1; y=y*1;
if (is_num(radius)) {radius=radius*1;

var list=draw.churchlist; var l=list.length; var exists='no'; for(var i=0;i<l;i++) {if (list[i][0]==x&&list[i][1]==y) {exists=i; break;}};
var arr=[x,y,churchtype,colour,radius]; if (exists!='no') {draw.churchlist[exists]=arr;} else {draw.churchlist.push(arr);}

draw.churchbuild(); draw.refresh(); display.drawinit();
if (exists!='no'&&$('church-'+x+'-'+y)) {$('church-'+x+'-'+y).innerHTML=draw.churchlistadd(arr,0,1);}
else if ($('churchlist').innerHTML=='No circles to display.') {$('churchlist').innerHTML=draw.churchlistadd(arr);}
else {$('churchlist').innerHTML+=draw.churchlistadd(arr);}} else {alert('Not a valid radius.');}} else {alert('Not a valid coordinate.');}}},

'del':function(x,y,x2,y2) {var list=draw.list; var l=list.length; for(var i=0;i<l;i++) {if (list[i][0]==x&&list[i][1]==y&&list[i][2]==x2&&list[i][3]==y2) {list.splice(i,1); i--; l--;}}; jQuery('#line-'+x+'-'+y+'-'+x2+'-'+y2).remove(); if ($('linelist').innerHTML=='') {$('linelist').innerHTML='No lines to display.';}; draw.build(); draw.refresh(); Close();},
'circledel':function(x,y) {var list=draw.churchlist; var l=list.length; for(var i=0;i<l;i++) {if (list[i][0]==x&&list[i][1]==y) {list.splice(i,1); i--; l--;}}; jQuery('#church-'+x+'-'+y).remove(); if ($('churchlist').innerHTML=='') {$('churchlist').innerHTML='No circles to display.';}; draw.churchbuild(); draw.refresh(); Close();},

'build':function() {var list=draw.list; var vb=list.length; var n=[]; for(var xc=0;xc<vb;xc++) {n.push(list[xc].join('-'));}; data.lines=n.join('-'); save(); refmapurl();},
'churchbuild':function() {var list=draw.churchlist; var vb=list.length; var n=[]; for(var xc=0;xc<vb;xc++) {n.push(list[xc].join('-'));}; data.church=n.join('-'); save(); refmapurl();},

'refresh':function(ig,ig2) {var list=draw.churchlist; var l=list.length;
if (!ig&&draw.wrapper) {draw.wrapper.clear(); draw.wrapperoverlay.clear();}

if (!ig2) {var tem=0;
if (data.ct!='1') {var quecol={};
for(var i=0;i<l;i++) {if (quecol[list[i][3]]) {quecol[list[i][3]].push(list[i]);} else {quecol[list[i][3]]=[list[i]];}}

for (var i in quecol) {draw.ellipse(quecol[i]);}}
if (data.lt!='1') {list=draw.list; l=list.length;
for(var i=0;i<l;i++) {draw.line(list[i][0],list[i][1],list[i][2],list[i][3],list[i][4],list[i][5]);}}

if (draw.wrapper&&draw.wrapperoverlay) {draw.wrapper.paint(); draw.wrapperoverlay.paint();}}},

'init':function() {var list=data.lines.split('-'); var l=list.length; var num=is_num;
for(var i=0;i<l;i=i+6) {if (num(list[i])&&num(list[i+1])&&num(list[i+2])&&num(list[i+3])&&num(list[i+4])&&highlight.hexcheck(list[i+5],1)!='') {draw.list.push([list[i],list[i+1],list[i+2],list[i+3],list[i+4],list[i+5]]);}}
list=data.church.split('-'); l=list.length;
for(var i=0;i<l;i=i+5) {if (num(list[i])&&num(list[i+1])&&num(list[i+2])&&highlight.hexcheck(list[i+3],1)!=''&&num(list[i+4])) {draw.churchlist.push([list[i],list[i+1],list[i+2],list[i+3],list[i+4]]);}}

draw.wrapper=new jsGraphics('linewrapper'); draw.wrapperoverlay=new jsGraphics('linewrapperoverlay'); draw.refresh(1);}
}

var marker={'list':{},
'openvillagepages':function() {var a=1; var mark=marker.list; var vild=villagedata;
for(var i in mark) {if (vild[i]) {window.open(vars.serverpage+'screen=info_village&id='+vild[i][0]); a=0;}}
if (a) {alert('No markers.');}},

'markersadd':function(id) {if (marker.list[id]) {var xy=id.split('-');
return ['<table cellpadding="0" cellspacing="0" id="marker-',id,'"><tr><td class="fl"><div>',fetch.village[1](id),'</div></td><td class="fr"><div><a href="javascript: marker.del(\'',xy[1],'\', \'',xy[2],'\');">Delete</a></div></td></tr></table>'].join('');}},

'add':function(x,y) {
if ($('C-'+x+'-'+y)&&$('C-'+x+'-'+y).firstChild&&!$('mark-'+x+'-'+y)) {$('C-'+x+'-'+y).firstChild.innerHTML+='<img class="mark" id="mark-'+x+'-'+y+'" src="img/trans.gif" alt="" />';}
if (!marker.list['C-'+x+'-'+y]) {marker.list['C-'+x+'-'+y]=true;
display.markersinit(); if (!$('marker-C-'+x+'-'+y)) {if ($('markerlist').innerHTML=='No markers.') {$('markerlist').innerHTML=marker.markersadd('C-'+x+'-'+y);} else {$('markerlist').innerHTML+=marker.markersadd('C-'+x+'-'+y);}}
marker.build();}; Close();},

'del':function(x,y) {if (marker.list['C-'+x+'-'+y]) {delete marker.list['C-'+x+'-'+y]; display.markersinit();
if ($('mark-'+x+'-'+y)) {jQuery('#mark-'+x+'-'+y).remove();};
if ($('marker-C-'+x+'-'+y)) {jQuery('#marker-C-'+x+'-'+y).remove();};
if ($('markerlist').innerHTML=='') {$('markerlist').innerHTML='No markers.';};
marker.build();}; Close();},

'build':function() {var list=marker.list; var da=[]; var xy=''; for(i in list) {xy=i.split('-'); da.push(xy[1]+'-'+xy[2]);}; data.cto=da.join('-'); save();},

'init':function() {var list=data.cto.split('-'); var l=list.length; var num=is_num; for(var i=0;i<l;i=i+2) {if (num(list[i])&&num(list[i+1])) {marker.list['C-'+list[i]+'-'+list[i+1]]=true;}}
}}

function mapurl(ig,em) {if (!ig) {var e=encode;
var file='minimap.php?m='+e(data.mode)+'&x='+data.xcord+'&y='+data.ycord+'&w='+e(data.map=='yes'?vars.mapx:data.minimapx)+'&h='+e(data.map=='yes'?vars.mapy:data.minimapy)+'&col='+mincolsets(); 
if (data.minsize!='') {file+='&minw='+e(data.minsize);}
if (data.filtert=='yes') {file+='&filter='+e(data.filter);}
if (file=='points'&&data.spoints!='') {file+='&spoints='+e(data.spoints);}
if (!/^activity|points|conquer|attack|defend|growth|tribe$/.test(data.mode)||data.filtert=='yes') {if (data.lighttribes!='') {file+='&tribes='+e(data.lighttribes);}; if (data.lightplayers!='') {file+='&players='+e(data.lightplayers);}; if (data.lightvillages!='') {file+='&villages='+e(data.lightvillages);}}
if (data.lt!='1'&&data.lines!='') {file+='&lines='+e(data.lines);}
if (data.ct!='1'&&data.church!='') {file+='&circles='+e(data.church)+'&ct='+e(data.ctop);}
if (data.map=='yes') {file+='&n=1';} else {file+='&h2='+e(data.height)+'&w2='+e(data.width);}
file+='&ms='+vars.dat;
if (vars.ie67&&file.length>2000) {file=file.substring(0,2000);}

if (data.minimap!='no'&&data.map!='yes'&&$('minim')&&$('minim').src!=file) {$('minim').src=file;} 
if (data.map=='yes'&&$('mapim')&&$('mapim').src!=file) {$('mapim').src=file;}}

if (vars.minover) {if (vars.minover==2) {minout(1); setTimeout(function() {minover(1);},1);} else {minout(); setTimeout(function() {minover();},1);}}}
function refmapurl() {clearTimeout(vars.timeminimap); vars.timeminimap=setTimeout(function() {mapurl();},10);}

function calctime() {if (!display.times) {display.traveltimesinit();} else {
var xs = data.xstart; var xd =  data.xdest; var ys = data.ystart; var yd = data.ydest;
if (is_num2(xs)&&is_num2(ys)&&is_num2(xd)&&is_num2(yd)) {
function clock(time) {time=Math.round(time); var hours = Math.floor(time/3600); var minutes = Math.floor((time-(hours*3600))/60); var seconds = Math.floor(time-(hours*3600)-(minutes*60)); var cl = hours+':'; if (minutes<=9) {cl = cl+'0'+minutes+':';} else {cl = cl+minutes+':';} if (seconds<=9) {cl = cl+'0'+seconds;} else {cl = cl+seconds;} return cl;}
var sword=1320,axe=1080,scout=540,light=600,heavy=660,ram=1800,noble=2100,merch=360;
var xdif = Math.sqrt(Math.pow(xs-xd,2)+Math.pow(ys-yd,2)); $('distance').innerHTML='Distance: '+(Math.round(xdif*10)/10)+' village'+(xdif==1?'':'s')+'.'; xdif=xdif/serversettings.speed;
if ($('pa')) {$('pa').innerHTML=clock(light*xdif);};
if ($('ma')) {$('ma').innerHTML=clock(light*xdif); $('ar').innerHTML=clock(axe*xdif);};
$('spm').innerHTML = clock(axe*xdif); $('swm').innerHTML = clock(sword*xdif); $('am').innerHTML = clock(axe*xdif); $('sc').innerHTML = clock(scout*xdif); $('lc').innerHTML = clock(light*xdif); $('hc').innerHTML = clock(heavy*xdif); $('rm').innerHTML = clock(ram*xdif); $('ct').innerHTML = clock(ram*xdif); $('nb').innerHTML = clock(noble*xdif); 
//$('me').innerHTML = clock(merch*xdif);
}}}

function manual(x, y, type) {x=checkcoordinate(x,y,is_num2); if (x) {y=x[1]*1; x=x[0]*1; Close(); display.traveltimesinit(); var same=false; if ($('xbs')&&$('xbd')) {$('xbs').value=x; $('xbd').value=y;}
x=x*1; y=y*1;
var lt = ''; if (type) {lt=$('startloc'); if (data.xstart==x&&data.ystart==y) {same=true;}; data.xstart=x; data.ystart=y;} else {lt=$('destloc'); if (data.xdest==x&&data.ydest==y) {same=true;}; data.xdest=x; data.ydest=y;}
var coord='C-'+x+'-'+y;
if (!villagedata[coord]&&!vars.none['C-'+x+'-'+y]) {
jQuery.ajax({'url':'data.php?type=villagecoord&&x='+x+'&y='+y+'&ms='+vars.dat,
'success':function() {if (!villagedata[coord]) {vars.none[coord]=true;}; if ((type&&x==data.xstart&&y==data.ystart)||(!type&&x==data.xdest&&y==data.ydest)) {lt.innerHTML=fetch.village[1](coord);}},
'dataType':'parse'});}
lt.innerHTML=fetch.village[1](coord); calctime(); if (!same) {save();}
if (!display.timesdisplay) {display.traveltimes();} else {display.timesicon(type);}}}

var namesearch={'searchq':0,'search3':0,'prefetched':{'player':{},'tribe':{},'village':{}},'timeout':false,
'search':function() {this.getnames($('searchselect').value, $('searchbox').value);},

'parseresults':function(temp) {var temptribedata=temp.tribedata;
for(var i in temptribedata) {tribedata[i]=temptribedata[i];}
var tempplayerdata=temp.playerdata;
for(var i in tempplayerdata) {playerdata[i]=tempplayerdata[i];}
var tempvillagedata=temp.villagedata;
for(var i in tempvillagedata) {vars.villageid[tempvillagedata[i][0]]=i; villagedata[i]=tempvillagedata[i];}},

'getnames':function(type, val, spec) {
if (type=='player'&&val.length<4) {$('searchresults').innerHTML='<div class="ws">When searching for a player your search query must be at least 4 characters long.</div>';} 
else if (val.length<2&&type!='village') {$('searchresults').innerHTML='<div class="ws">When searching for a tribe your search query must be at least 2 characters long.</div>';}
else {if (type=='village') {var x=val.split('|'); if (!x[1]) {x=x[0].split('/'); if (!x[1]) {x[1]='';}}; var y=x[1].replace(/\)/,''); x=x[0].replace(/\(/,''); if (!is_num2(x)||!is_num2(y)) {$('searchresults').innerHTML='<div class="ws">Your coordinate search query must use one of these formats: X|Y, (X|Y), X/Y, (X/Y).</div>'; return false;}; var url='data.php?type=villagecoord&x='+x+'&y='+y; var char3=x+'|'+y; val=char3;}
else if (type=='player') {var char3=val.substr(0,4); var url='search.php?type=player&q='+encode(char3);}
else {var char3=val.substr(0,2); var url='search.php?type=tribe&q='+encode(char3);}
this.searchq=val; this.search3=char3; var valn=val.replace('<', '&lt;');
if (this.prefetched[type][char3]) {this.results(type, val, (this.prefetched[type][char3]==2?'Loading search results...':''), spec);}
else {this.prefetched[type][char3]=2;
this.results(type, val, 'Loading search results...', spec);
jQuery.ajax({'url':url+'&ms='+vars.dat,
'success':function() {namesearch.prefetched[type][char3]=1; namesearch.results(type, val, '', spec);},
'error':function() {namesearch.prefetched[type][char3]=0; namesearch.results(type, val, 'Could not load search results. <a href="javascript: namesearch.getnames(\''+type+'\',namesearch.searchq,\''+spec+'\');">Retry</a>', spec);},
'dataType':'parse'});}}},

'results':function(type, val, pre, spec) {
if (type=='village') {var char3=val;}
else if (type=='player') {var char3=val.substr(0,4);}
else {var char3=val.substr(0,2);}
if ($('searchresults')&&this.search3==char3) {val=this.searchq;

var vild=villagedata; var num=3; var num2=0; if (type=='tribe') {vild=tribedata; num=2; num2=9;} else if (type=='player') {vild=playerdata; num=2;}
var specials=['\\', '/', '^', '$', '.', '+', '?', '|', '(', ')', '[', ']', '{', '}', '*']; var esc=new RegExp('(\\'+specials.join('|\\')+')', 'g');
var text=[]; var results=[]; var regex=new RegExp('^'+val.replace(esc, '\\$1')+'.*$', 'i');
delete vild['l'];

if (type=='village') {var xy=val.split('|'); xy='C-'+xy[0]+'-'+xy[1]; if (vild[xy]) {results.push([vild[xy],fetch[type][1](xy)]);}}
else {for(var i in vild) {if (regex.test(vild[i][num])||(num2&&regex.test(vild[i][num2]))) {
if (spec) {results.push([vild[i],'<a class="spl" href="'+serversettings.folder+'history/'+i+'" onmouseover="show(tooltiptext(\''+i+'\', 0, 1));" onmouseout="msu();">'+fetch[type][0](i)+'</a>']);}
else {results.push([vild[i],fetch[type][1](i)]);}
}}}

if (num==3) {results.sort(villagelist.sort);} else if (num==2) {results.sort(memberlist.sort);}
var l=results.length;
if (l) {text.push('<b>',l,'</b> ',type,(l==1?'':'s'),' found.<br />'); for(var i=0;i<l;i++) {text.push(results[i][1]);}}
else {text.push('No '+type+'s found.<br />');}
text.push(pre);

var v=$('searchresults'); v.innerHTML=text.join('');
if (v.offsetHeight>v.clientHeight) {v.style.paddingRight=Math.min(v.offsetHeight-v.clientHeight+3, 30)+'px';} else if (v.offsetHeight<=v.clientHeight-21) {v.style.paddingRight='3px';}}}};

function subm(e, type) {var keynum = ""; if (window.event) {keynum = e.keyCode;} else if (e.which) {keynum = e.which;} if (keynum==13) {namesearch.getnames(type, 0); return false;}}

var highlight={'set':function(cl) {if ($('colourinput')) {var pr=highlight.hexcheck($('colourinput').value);
if (pr!='') {if (pr!=data.last) {data.last=pr; save();}; if ($('defaultcoldiv')) {$S('defaultcoldiv').backgroundColor='#'+pr;}; if ($('defspan')) {$S('defspan').backgroundColor='#'+pr;}; if (cl) {Close();}}}},

'options':function(id,type) {if (cancelcol()) {textbox.menu('Highlight options', ['<div>\
<a class="spl" href="javascript: highlight.edit(\'',id,'\',\'',type,'\');" onmouseover="show(\'Edit this highlighted ',type,'\\\'s colour.\',1);" onmouseout="msu();">Edit colour</a>\
<a class="spl" href="javascript: group.change(\'',id,'\',\'',type,'\');" onmouseover="show(\'Change this highlighted ',type,'\\\'s group.\',1);" onmouseout="msu();">Change group</a>\
<a class="spl" href="javascript: Close(); highlight.del(\'',id,'\', \'',type,'\');" onmouseover="show(\'Delete this highlighted ',type,'.\',1);" onmouseout="msu();">Delete</a>\
</div>'].join(''), 't100 ie');}},

'check':function() {if (highlight.hexcheck(data.last,1)=='') {data.last='000000';}},

'hexcheck':function(hex,ig) {if (hex!==''&&/^#?[0-9a-f]{6}$/i.test(hex)) {if (hex.length==7) {return hex.substring(1);} else {return hex};} else {if (!ig) {alert('Not a valid hex colour.');}; return '';}},

'toggle':function() {var ch=toggleCheckbox('def', 'highlighttoggle', 0, '1'); if (ch) {data.def='';} else {data.def='1';}; save();},

'build':function(type) {var arr=vars[type+'s']; data['light'+type+'s']=''; var first=true;
for(var idc in arr) {if (first) {data['light'+type+'s']=idc+'-'+arr[idc]; first=false;} else {data['light'+type+'s']+='-'+idc+'-'+arr[idc];}}},

'del':function(id, type, ig) {if (vars[type+'s'][id]) {display.highlightcontrolsinit(); var el = $(type+'-'+id); var par = el.parentNode; par.removeChild(el); if (par.innerHTML=='') {par.innerHTML='No '+type+'s highlighted.';}; delete vars[type+'s'][id];
if (type=='village'&&vars.villageid[id]) {var id2=vars.villageid[id]; delete vars.villages2[id2];
if (villagedata[id2]&&(villagedata[id2][1]==0||villagedata[id2][1]=='')) {
if ($(id2)) {$S(id2).backgroundPosition=backpos(villagedata[id2][2])+'px  -'+(vars.height*(villagedata[id2][5]!='0'?4:2))+'px';}}}; if (!ig) {if (group[type+'s'][id]) {var gid=group[type+'s'][id]; delete group[type+'s'][id]; delete group[type+'s'][id]; group.build(1); group.textupdate(type,gid);}; highlight.build(type); mode('normal',1);}}},

'insert':function(colour,ign) {colour=highlight.hexcheck(colour,1);
if (colour!='') {if (highlight.quickcols[colour]) {$('quickcoltext').innerHTML='Delete quick colour';} else {$('quickcoltext').innerHTML='Add quick colour';}}
else {colour='E0D3B8'; $('quickcoltext').innerHTML='Invalid colour';};
if (!ign) {$('colourinput').value='#'+colour;}; $S('colourspan').backgroundColor='#'+colour; $S('colouraddspan').backgroundColor='#'+colour; if ($('colourdefspan')) {$S('colourdefspan').backgroundColor='#'+colour;}},
'it':function(element) {highlight.insert(element.getAttribute('bgcolor').toUpperCase());},

'edicol':function(id, pr, type, ig) {if (vars[type+'s'][id]) {if (!ig) {pr=highlight.hexcheck(pr);}
if (pr!='') {Close(); if (vars[type+'s'][id]!=pr) {display.highlightcontrolsinit();
$(type+'-'+id).firstChild.firstChild.firstChild.firstChild.style.background='#'+pr; vars[type+'s'][id]=pr;
if (type=='village'&&vars.villageid[id]) {vars.villages2[vars.villageid[id]]=pr;}; if (!ig) {highlight.build(type); mode('normal',1);}}}}},

'quickcols':false,
'quickcoladd':function(i) {return '<img id="quickcol'+i+'" onclick="highlight.insert(\''+i+'\');" class="colimg point" style="background-color: #'+i+'; float: left; margin-right: 2px; margin-bottom: 2px;" alt="" src="img/trans.gif" />';},
'quickcol':function() {var hex=highlight.hexcheck($('colourinput').value); if (hex!='') {if (highlight.quickcols[hex]) {delete highlight.quickcols[hex]; jQuery('#quickcol'+hex).remove(); $('quickcoltext').innerHTML='Add quick colour';} else {highlight.quickcols[hex]=true; $('quickcollist').innerHTML+=highlight.quickcoladd(hex); $('quickcoltext').innerHTML='Delete quick colour';}; var list=[]; for(var i in highlight.quickcols) {list.push(i);}; data.mcol=list.join('-'); save();}},
'toggleSphere':function() {if (vars.wheel) {vars.wheel=false;} else {vars.wheel=true;}; toggle('min'); toggle('mini');},
'edit':function(id,type,n) {if (cancelcol()) {var colour=''; highlight.check();

switch(type) {
case 'favourite': colour=data.last; break;
case 'line': colour=display.drawcol; break;
case 'line2': id=id.split('-'); var list=draw.list; var l=list.length; 
for(var i=0;i<l;i++) {if (list[i][0]==id[0]&&list[i][1]==id[1]&&list[i][2]==id[2]&&list[i][3]==id[3]) {id=list[i]; colour=list[i][5]; break;}}; break;
case 'circle': colour=display.churchcol; break;
case 'circle2': id=id.split('-'); var list=draw.churchlist; var l=list.length; 
for(var i=0;i<l;i++) {if (list[i][0]==id[0]&&list[i][1]==id[1]) {id=list[i]; colour=list[i][3]; break;}}; break;
case 'group': colour=data.last; break;
case 'colour': colour=vars.mapcols[id]; break;
default: if (vars[type+'s']&&vars[type+'s'][id]) {colour=vars[type+'s'][id];}};

if (colour!='') {
var text=['<table cellpadding="0" cellspacing="0" class="t100 qcs ie">',vars.bordertop,vars.borderlefth1,'<div class="cols"><b><u>Edit ',(n?n.toLowerCase():(type=='favourite'?'favourite colour':(type=='group'?'group member colours':(type=='line2'?'line colour':(type=='circle2'?'circle colour':type+' colour'))))),'</u></b></div>',vars.borderright,vars.spacer,vars.borderleft,'<div id="colours">\
<div id="min"',(vars.wheel?' style="display: block;""':''),'></div>\
<div id="mini"',(vars.wheel?' style="display: block;""':''),'><div id="mSpec" style="height: 168px; width: 168px;" onmousedown="coreXY(event)"><div id="mCur" onmousedown="return false;"',(vars.ie67?' ondrag="return false;" onselectstart="return false;"':''),'></div><div class="mIG" onmousedown="return false;""',(vars.ie67?' ondrag="return false;" onselectstart="return false;"':''),'></div></div></div><table cellpadding="0" cellspacing="1">\
<tr><td onclick="highlight.it(this);" class="twc" colspan="8" valign="middle" bgcolor="#e0d3b8"><div>Tribal Wars colours:</div></td><td onclick="highlight.it(this);" bgcolor="#969696" onmouseover="show(\'Abandoned villages\',1);" onmouseout="msd();"></td><td onclick="highlight.it(this);" bgcolor="#b40000" onmouseover="show(\'Other villages\',1);" onmouseout="msd();"></td><td onclick="highlight.it(this);" bgcolor="#f40000" onmouseover="show(\'Enemies\',1);" onmouseout="msd();"></td><td onclick="highlight.it(this);" bgcolor="#0000f4" onmouseover="show(\'Your tribe\',1);" onmouseout="msd();"></td><td onclick="highlight.it(this);" bgcolor="#800080" onmouseover="show(\'Non-Aggression-Pact (NAP)\',1);" onmouseout="msd();"></td><td onclick="highlight.it(this);" bgcolor="#f0c800" onmouseover="show(\'Your villages\',1);" onmouseout="msd();"></td><td onclick="highlight.it(this);" bgcolor="#00a0f4" onmouseover="show(\'Allies\',1);" onmouseout="msd();"></td></tr>\
<tr><td onclick="highlight.it(this);" bgcolor="#190707"></td><td onclick="highlight.it(this);" bgcolor="#2a0a0a"></td><td onclick="highlight.it(this);" bgcolor="#3b0b0b"></td><td onclick="highlight.it(this);" bgcolor="#610b0b"></td><td onclick="highlight.it(this);" bgcolor="#8a0808"></td><td onclick="highlight.it(this);" bgcolor="#b40404"></td><td onclick="highlight.it(this);" bgcolor="#df0101"></td><td onclick="highlight.it(this);" bgcolor="#ff0000"></td><td onclick="highlight.it(this);" bgcolor="#fe2e2e"></td><td onclick="highlight.it(this);" bgcolor="#fa5858"></td><td onclick="highlight.it(this);" bgcolor="#f78181"></td><td onclick="highlight.it(this);" bgcolor="#f5a9a9"></td><td onclick="highlight.it(this);" bgcolor="#f6cece"></td><td onclick="highlight.it(this);" bgcolor="#f8e0e0"></td><td onclick="highlight.it(this);" bgcolor="#fbefef"></td></tr>\
<tr><td onclick="highlight.it(this);" bgcolor="#191007"></td><td onclick="highlight.it(this);" bgcolor="#2a1b0a"></td><td onclick="highlight.it(this);" bgcolor="#3b240b"></td><td onclick="highlight.it(this);" bgcolor="#61380b"></td><td onclick="highlight.it(this);" bgcolor="#8a4b08"></td><td onclick="highlight.it(this);" bgcolor="#b45f04"></td><td onclick="highlight.it(this);" bgcolor="#df7401"></td><td onclick="highlight.it(this);" bgcolor="#ff8000"></td><td onclick="highlight.it(this);" bgcolor="#fe9a2e"></td><td onclick="highlight.it(this);" bgcolor="#faac58"></td><td onclick="highlight.it(this);" bgcolor="#f7be81"></td><td onclick="highlight.it(this);" bgcolor="#f5d0a9"></td><td onclick="highlight.it(this);" bgcolor="#f6e3ce"></td><td onclick="highlight.it(this);" bgcolor="#f8ece0"></td><td onclick="highlight.it(this);" bgcolor="#fbf5ef"></td></tr>\
<tr><td onclick="highlight.it(this);" bgcolor="#181907"></td><td onclick="highlight.it(this);" bgcolor="#292a0a"></td><td onclick="highlight.it(this);" bgcolor="#393b0b"></td><td onclick="highlight.it(this);" bgcolor="#5e610b"></td><td onclick="highlight.it(this);" bgcolor="#868a08"></td><td onclick="highlight.it(this);" bgcolor="#aeb404"></td><td onclick="highlight.it(this);" bgcolor="#d7df01"></td><td onclick="highlight.it(this);" bgcolor="#ffff00"></td><td onclick="highlight.it(this);" bgcolor="#f7fe2e"></td><td onclick="highlight.it(this);" bgcolor="#f4fa58"></td><td onclick="highlight.it(this);" bgcolor="#f3f781"></td><td onclick="highlight.it(this);" bgcolor="#f2f5a9"></td><td onclick="highlight.it(this);" bgcolor="#f5f6ce"></td><td onclick="highlight.it(this);" bgcolor="#f7f8e0"></td><td onclick="highlight.it(this);" bgcolor="#fbfbef"></td></tr>\
<tr><td onclick="highlight.it(this);" bgcolor="#101907"></td><td onclick="highlight.it(this);" bgcolor="#1b2a0a"></td><td onclick="highlight.it(this);" bgcolor="#243b0b"></td><td onclick="highlight.it(this);" bgcolor="#38610b"></td><td onclick="highlight.it(this);" bgcolor="#4b8a08"></td><td onclick="highlight.it(this);" bgcolor="#5fb404"></td><td onclick="highlight.it(this);" bgcolor="#74df00"></td><td onclick="highlight.it(this);" bgcolor="#80ff00"></td><td onclick="highlight.it(this);" bgcolor="#9afe2e"></td><td onclick="highlight.it(this);" bgcolor="#acfa58"></td><td onclick="highlight.it(this);" bgcolor="#bef781"></td><td onclick="highlight.it(this);" bgcolor="#d0f5a9"></td><td onclick="highlight.it(this);" bgcolor="#e3f6ce"></td><td onclick="highlight.it(this);" bgcolor="#ecf8e0"></td><td onclick="highlight.it(this);" bgcolor="#f5fbef"></td></tr>\
<tr><td onclick="highlight.it(this);" bgcolor="#071907"></td><td onclick="highlight.it(this);" bgcolor="#0a2a0a"></td><td onclick="highlight.it(this);" bgcolor="#0b3b0b"></td><td onclick="highlight.it(this);" bgcolor="#0b610b"></td><td onclick="highlight.it(this);" bgcolor="#088a08"></td><td onclick="highlight.it(this);" bgcolor="#04b404"></td><td onclick="highlight.it(this);" bgcolor="#01df01"></td><td onclick="highlight.it(this);" bgcolor="#00ff00"></td><td onclick="highlight.it(this);" bgcolor="#2efe2e"></td><td onclick="highlight.it(this);" bgcolor="#58fa58"></td><td onclick="highlight.it(this);" bgcolor="#81f781"></td><td onclick="highlight.it(this);" bgcolor="#a9f5a9"></td><td onclick="highlight.it(this);" bgcolor="#cef6ce"></td><td onclick="highlight.it(this);" bgcolor="#e0f8e0"></td><td onclick="highlight.it(this);" bgcolor="#effbef"></td></tr>\
<tr><td onclick="highlight.it(this);" bgcolor="#071910"></td><td onclick="highlight.it(this);" bgcolor="#0a2a1b"></td><td onclick="highlight.it(this);" bgcolor="#0b3b24"></td><td onclick="highlight.it(this);" bgcolor="#0b6138"></td><td onclick="highlight.it(this);" bgcolor="#088a4b"></td><td onclick="highlight.it(this);" bgcolor="#04b45f"></td><td onclick="highlight.it(this);" bgcolor="#01df74"></td><td onclick="highlight.it(this);" bgcolor="#00ff80"></td><td onclick="highlight.it(this);" bgcolor="#2efe9a"></td><td onclick="highlight.it(this);" bgcolor="#58faac"></td><td onclick="highlight.it(this);" bgcolor="#81f7be"></td><td onclick="highlight.it(this);" bgcolor="#a9f5d0"></td><td onclick="highlight.it(this);" bgcolor="#cef6e3"></td><td onclick="highlight.it(this);" bgcolor="#e0f8ec"></td><td onclick="highlight.it(this);" bgcolor="#effbf5"></td></tr>\
<tr><td onclick="highlight.it(this);" bgcolor="#071918"></td><td onclick="highlight.it(this);" bgcolor="#0a2a29"></td><td onclick="highlight.it(this);" bgcolor="#0b3b39"></td><td onclick="highlight.it(this);" bgcolor="#0b615e"></td><td onclick="highlight.it(this);" bgcolor="#088a85"></td><td onclick="highlight.it(this);" bgcolor="#04b4ae"></td><td onclick="highlight.it(this);" bgcolor="#01dfd7"></td><td onclick="highlight.it(this);" bgcolor="#00ffff"></td><td onclick="highlight.it(this);" bgcolor="#2efef7"></td><td onclick="highlight.it(this);" bgcolor="#58faf4"></td><td onclick="highlight.it(this);" bgcolor="#81f7f3"></td><td onclick="highlight.it(this);" bgcolor="#a9f5f2"></td><td onclick="highlight.it(this);" bgcolor="#cef6f5"></td><td onclick="highlight.it(this);" bgcolor="#e0f8f7"></td><td onclick="highlight.it(this);" bgcolor="#effbfb"></td></tr>\
<tr><td onclick="highlight.it(this);" bgcolor="#071019"></td><td onclick="highlight.it(this);" bgcolor="#0a1b2a"></td><td onclick="highlight.it(this);" bgcolor="#0b243b"></td><td onclick="highlight.it(this);" bgcolor="#0b3861"></td><td onclick="highlight.it(this);" bgcolor="#084b8a"></td><td onclick="highlight.it(this);" bgcolor="#045fb4"></td><td onclick="highlight.it(this);" bgcolor="#0174df"></td><td onclick="highlight.it(this);" bgcolor="#0080ff"></td><td onclick="highlight.it(this);" bgcolor="#2e9afe"></td><td onclick="highlight.it(this);" bgcolor="#58acfa"></td><td onclick="highlight.it(this);" bgcolor="#81bef7"></td><td onclick="highlight.it(this);" bgcolor="#a9d0f5"></td><td onclick="highlight.it(this);" bgcolor="#cee3f6"></td><td onclick="highlight.it(this);" bgcolor="#e0ecf8"></td><td onclick="highlight.it(this);" bgcolor="#eff5fb"></td></tr>\
<tr><td onclick="highlight.it(this);" bgcolor="#070719"></td><td onclick="highlight.it(this);" bgcolor="#0a0a2a"></td><td onclick="highlight.it(this);" bgcolor="#0b0b3b"></td><td onclick="highlight.it(this);" bgcolor="#0b0b61"></td><td onclick="highlight.it(this);" bgcolor="#08088a"></td><td onclick="highlight.it(this);" bgcolor="#0404b4"></td><td onclick="highlight.it(this);" bgcolor="#0101df"></td><td onclick="highlight.it(this);" bgcolor="#0000ff"></td><td onclick="highlight.it(this);" bgcolor="#2e2efe"></td><td onclick="highlight.it(this);" bgcolor="#5858fa"></td><td onclick="highlight.it(this);" bgcolor="#8181f7"></td><td onclick="highlight.it(this);" bgcolor="#a9a9f5"></td><td onclick="highlight.it(this);" bgcolor="#cecef6"></td><td onclick="highlight.it(this);" bgcolor="#e0e0f8"></td><td onclick="highlight.it(this);" bgcolor="#efeffb"></td></tr>\
<tr><td onclick="highlight.it(this);" bgcolor="#100719"></td><td onclick="highlight.it(this);" bgcolor="#1b0a2a"></td><td onclick="highlight.it(this);" bgcolor="#240b3b"></td><td onclick="highlight.it(this);" bgcolor="#380b61"></td><td onclick="highlight.it(this);" bgcolor="#4b088a"></td><td onclick="highlight.it(this);" bgcolor="#5f04b4"></td><td onclick="highlight.it(this);" bgcolor="#7401df"></td><td onclick="highlight.it(this);" bgcolor="#8000ff"></td><td onclick="highlight.it(this);" bgcolor="#9a2efe"></td><td onclick="highlight.it(this);" bgcolor="#ac58fa"></td><td onclick="highlight.it(this);" bgcolor="#be81f7"></td><td onclick="highlight.it(this);" bgcolor="#d0a9f5"></td><td onclick="highlight.it(this);" bgcolor="#e3cef6"></td><td onclick="highlight.it(this);" bgcolor="#ece0f8"></td><td onclick="highlight.it(this);" bgcolor="#f5effb"></td></tr>\
<tr><td onclick="highlight.it(this);" bgcolor="#190718"></td><td onclick="highlight.it(this);" bgcolor="#2a0a29"></td><td onclick="highlight.it(this);" bgcolor="#3b0b39"></td><td onclick="highlight.it(this);" bgcolor="#610b5e"></td><td onclick="highlight.it(this);" bgcolor="#8a0886"></td><td onclick="highlight.it(this);" bgcolor="#b404ae"></td><td onclick="highlight.it(this);" bgcolor="#df01d7"></td><td onclick="highlight.it(this);" bgcolor="#ff00ff"></td><td onclick="highlight.it(this);" bgcolor="#fe2ef7"></td><td onclick="highlight.it(this);" bgcolor="#fa58f4"></td><td onclick="highlight.it(this);" bgcolor="#f781f3"></td><td onclick="highlight.it(this);" bgcolor="#f5a9f2"></td><td onclick="highlight.it(this);" bgcolor="#f6cef5"></td><td onclick="highlight.it(this);" bgcolor="#f8e0f7"></td><td onclick="highlight.it(this);" bgcolor="#fbeffb"></td></tr>\
<tr><td onclick="highlight.it(this);" bgcolor="#190710"></td><td onclick="highlight.it(this);" bgcolor="#2a0a1b"></td><td onclick="highlight.it(this);" bgcolor="#3b0b24"></td><td onclick="highlight.it(this);" bgcolor="#610b38"></td><td onclick="highlight.it(this);" bgcolor="#8a084b"></td><td onclick="highlight.it(this);" bgcolor="#b4045f"></td><td onclick="highlight.it(this);" bgcolor="#df0174"></td><td onclick="highlight.it(this);" bgcolor="#ff0080"></td><td onclick="highlight.it(this);" bgcolor="#fe2e9a"></td><td onclick="highlight.it(this);" bgcolor="#fa58ac"></td><td onclick="highlight.it(this);" bgcolor="#f781be"></td><td onclick="highlight.it(this);" bgcolor="#f5a9d0"></td><td onclick="highlight.it(this);" bgcolor="#f6cee3"></td><td onclick="highlight.it(this);" bgcolor="#f8e0ec"></td><td onclick="highlight.it(this);" bgcolor="#fbeff5"></td></tr>\
<tr><td onclick="highlight.it(this);" bgcolor="#000000"></td><td onclick="highlight.it(this);" bgcolor="#0b0b0b"></td><td onclick="highlight.it(this);" bgcolor="#151515"></td><td onclick="highlight.it(this);" bgcolor="#1c1c1c"></td><td onclick="highlight.it(this);" bgcolor="#2e2e2e"></td><td onclick="highlight.it(this);" bgcolor="#424242"></td><td onclick="highlight.it(this);" bgcolor="#585858"></td><td onclick="highlight.it(this);" bgcolor="#6e6e6e"></td><td onclick="highlight.it(this);" bgcolor="#848484"></td><td onclick="highlight.it(this);" bgcolor="#a4a4a4"></td><td onclick="highlight.it(this);" bgcolor="#bdbdbd"></td><td onclick="highlight.it(this);" bgcolor="#d8d8d8"></td><td onclick="highlight.it(this);" bgcolor="#e6e6e6"></td><td onclick="highlight.it(this);" bgcolor="#f2f2f2"></td><td onclick="highlight.it(this);" bgcolor="#ffffff"></td></tr>\
</table></div>',vars.borderright,vars.spacer,vars.borderleft,'<table class="tb1 colf" cellpadding="0" cellspacing="0">']
if (type!='favourite') {text.push('<tr><td class="lefta"><a href="javascript: highlight.insert(data.last);"><img id="defspan" class="colimg" style="background-color: #',data.last,';" alt="" src="img/trans.gif" /> Use favourite</a></td><td class="righta"><a href="javascript: highlight.set();">Update favourite <img id="colourdefspan" class="colimg" style="background-color:#',colour,';" alt="" src="img/trans.gif" /></a></td>\
</tr>');}

if (!highlight.quickcols) {highlight.quickcols={}; var list=data.mcol.split('-'); var l=list.length; for(var i=0;i<l;i++) {var hex=highlight.hexcheck(list[i],1); if (hex!='') {highlight.quickcols[hex]=true;}}}
text.push('<tr><td class="lefta"><b>Quick colours</b></td><td class="fr"><a href="javascript: highlight.quickcol();"><span id="quickcoltext">',(highlight.quickcols[colour]?'Delete quick colour':'Add quick colour'),'</span> <img id="colouraddspan" class="colimg" style="background-color: #',colour,';" alt="" src="img/trans.gif" /></a></td></tr><tr><td colspan="2" id="quickcollist">');
for(var i in highlight.quickcols) {text.push(highlight.quickcoladd(i));}
text.push('</td></tr></table>',vars.borderright,vars.spacer,'<tr><td class="ql"></td><td class="qc ec"><form action="javascript:;" onsubmit="');
if (type=='group') {text.push('group.editcolour($(\'colourinput\').value, \'',id,'\')');}
else if (type=='line') {text.push('var col=highlight.hexcheck($(\'colourinput\').value); if (col!=\'\') {display.drawcol=col; $S(\'drawcol\').backgroundColor=\'#\'+col; Close();}');}
else if (type=='line2') {text.push('var col=highlight.hexcheck($(\'colourinput\').value); if (col!=\'\') {draw.add(\'',id[0],'\',\'',id[1],'\',\'',id[2],'\',\'',id[3],'\',\'',id[4],'\',col); Close();}');}
else if (type=='circle') {text.push('var col=highlight.hexcheck($(\'colourinput\').value); if (col!=\'\') {display.churchcol=col; $S(\'churchcol\').backgroundColor=\'#\'+col; Close();}');}
else if (type=='circle2') {text.push('var col=highlight.hexcheck($(\'colourinput\').value); if (col!=\'\') {draw.churchadd(\'',id[0],'\',\'',id[1],'\',\'',id[2],'\',col,\'',id[4],'\'); Close();}');}
else if (type=='colour') {text.push('var col=highlight.hexcheck($(\'colourinput\').value); if (col!=\'\') {vars.mapcols[\'',id,'\']=col; changecolours();}');}
else if (type!='favourite') {text.push('highlight.edicol(\'',id,'\', $(\'colourinput\').value, \'',type,'\')');} else {text.push('highlight.set(1)');}
text.push('"><div><a onmouseover="show(\'Toggle colour sphere\');" onmouseout="msu();" href="javascript: highlight.toggleSphere();">Sphere</a><span id="colourspan" style="background-color:#',colour,';"></span><input maxlength="7" id="colourinput" type="text" class="oi" value="#',colour,'" onkeydown="return submitenter(this, event);" onkeyup="highlight.insert(this.value,1);" /><input type="submit" class="sbut" value="" /></div></form>',vars.borderright,vars.spacer,vars.borderleft,'<a class="spl" href="javascript: Close();">Close</a>',vars.borderright,vars.borderbottom,'</table>');
vars.text=text.join(''); mend();}}},

'add':function(name, type, nc) {if (!vars[type+'s'][name]) {if (!nc) {Close();}; display.highlightcontrolsinit();
var col=''; if (data.def=='1') {highlight.check(); col=data.last;} else {var c=['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']; for(var i=0;i<6;i++) {col+=c[Math.round(Math.random()*15)];};};
vars[type+'s'][name]=col; 

if (data.defgroup&&group.list[data.defgroup]) {group[type+'s'][name]=data.defgroup; group.build(1); group.textupdate(type,data.defgroup);}
var func = ''; if (type=='player') {func=highlight.addplayer;} else if (type=='tribe') {func=highlight.addtribe;} else {if (vars.villageid[name]) {vars.villages2[vars.villageid[name]]=col;}; func=highlight.addvillage;}
highlight.build(type); func(name, col); 
; mode('normal',1);} else {alert('This '+type+' is already highlighted.');}},

'addvillage':function(id, colour, queue) {if (id&&colour&&!$('village-'+id)) {
var text=['<table cellpadding="0" cellspacing="0" id="village-',id,'"><tr><td><img class="colimg" style="background-color:#',colour,';" alt="" src="img/trans.gif" /></div></td><td class="fl"><div>',fetch.village[2](id),'</div></td><td class="fr"><div><a href="javascript: highlight.options(\'',id,'\', \'village\');">Options</a></div></td></tr></table>'];
if (queue) {return text.join('');} else {if (group.villages[id]&&$('group-'+group.villages[id]+'-vil')) {$('group-'+group.villages[id]+'-vil').firstChild.firstChild.innerHTML+=text.join('');} else if ($('vil').innerHTML=='No villages highlighted.') {$('vil').innerHTML=text.join('');} else {$('vil').innerHTML+=text.join('');}};
}},

'addplayer':function(id, colour, queue) {if (id&&colour&&!$('player-'+id)) {
var text=['<table cellpadding="0" cellspacing="0" id="player-',id,'"><tr><td><img class="colimg" style="background-color:#',colour,';" alt="" src="img/trans.gif" /></div></td><td class="fl"><div>',fetch.player[1](id),'</div></td><td class="fr"><div><a href="javascript: highlight.options(\'',id,'\', \'player\');">Options</a></div></td></tr></table>'].join('');
if (queue) {return text;} else {if (group.players[id]&&$('group-'+group.players[id]+'-pla')) {$('group-'+group.players[id]+'-pla').firstChild.firstChild.innerHTML+=text;} else if ($('pla').innerHTML=='No players highlighted.') {$('pla').innerHTML=text;} else {$('pla').innerHTML+=text;}};
}},

'addtribe':function(id, colour, queue) {if (id&&colour&&!$('tribe-'+id)) {
var text=['<table cellpadding="0" cellspacing="0" id="tribe-',id,'"><tr><td><img class="colimg" style="background-color:#',colour,';" alt="" src="img/trans.gif" /></div></td><td class="fl"><div>',fetch.tribe[1](id),'</div></td><td class="fr"><div><a href="javascript: highlight.options(\'',id,'\', \'tribe\');">Options</a></div></td></tr></table>'].join('');
if (queue) {return text;} else {if (group.tribes[id]&&$('group-'+group.tribes[id]+'-tri')) {$('group-'+group.tribes[id]+'-tri').firstChild.firstChild.innerHTML+=text;} else if ($('tri').innerHTML=='No tribes highlighted.') {$('tri').innerHTML=text;} else {$('tri').innerHTML+=text;}}
}}}

function tooltipInfo(x,y,ign,small) {if (cancelcol()) {var s = 'C-'+x+'-'+y;
if (small) {textbox.menu(vars.borderleft+tooltiptext(x,y,1,1), ['<a href="javascript: showmen(\'',x,'\',\'',y,'\', 0, \'tribe\');" onmouseover="show(\'Show the player/tribe menu.\',1);" onmouseout="msu();">Show menu</a> - <a href="javascript: Close();"><b>Close</b></a>'].join(''), 't100 ie', true, true);}
else if (!vars.none[s]&&((data.filtert!='yes'||filter.check(s))||ign)) {textbox.menu(vars.borderleft+tooltiptext(x,y,0,1), ['<a href="',vars.moveurl(x,y),'" target="_blank" onclick="mov(',x,',',y,'); return false;" onmouseover="show(\'Center map on ',x,'|',y,'.\',1);" onmouseout="msu();">Center map</a> - <a href="javascript: showmen(\'',x,'\',\'',y,'\');" onmouseover="show(\'Show the village menu.\',1);" onmouseout="msu();">Show menu</a> - <a href="javascript: Close();"><b>Close</b></a>'].join(''), 't100 ie', true, true, ign);}
else {textbox.menu(vars.borderleft+'No village at this coordinate ('+x+'|'+y+') K'+fetch.k(x,y)+'.', ['<a href="',vars.moveurl(x,y),'" target="_blank" onclick="mov(',x,',',y,'); return false;" onmouseover="show(\'Center map on ',x,'|',y,'.\',1);" onmouseout="msu();">Center map</a> - <a href="javascript: Close();"><b>Close</b></a>'].join(''), 't100 ie', true, true, ign);}}}

function mappos(minw) {var minw2=Math.floor(minw/2); var offx=24+minw2; var offy=76+minw2;
if (vars.ie67) {offx++; offy++;}
else if (vars.browser=='Firefox 2') {offx--; offy--;}

var xqs = vars.mapx; var yqs = vars.mapy; if (xqs%2==0) {xqs=Math.ceil(xqs/2);} else {xqs=Math.floor(xqs/2);}; if (yqs%2==0) {yqs=Math.ceil(yqs/2);} else {yqs=Math.floor(yqs/2);};
return ([Math.round(data.xcord-xqs+Math.floor((vars.xc-offx)/minw)),Math.round(data.ycord-yqs+Math.floor((vars.yc-offy)/minw))]);}

function minimappos(minw) {var minw2=Math.floor(minw/2); var offx=2-minw2; var offy=2-minw2;
if (vars.browser=='MSIE 7') {offx+=2; offy+=2;}
else if (vars.browser=='Firefox 2') {offx+=1; offy+=1;}
else if (vars.browser=='MSIE 6') {offx+=3; offy+=3;}

var xqs = data.minimapx; var yqs = data.minimapy; if (xqs%2==0) {xqs=Math.ceil(xqs/2);} else {xqs=Math.floor(xqs/2);}; if (yqs%2==0) {yqs=Math.ceil(yqs/2);} else {yqs=Math.floor(yqs/2);};
return([Math.round(data.xcord-xqs+Math.floor((vars.xc-offx-vars.minx)/minw)),Math.round(data.ycord-yqs+Math.floor((vars.yc-offy-vars.miny)/minw))]);}

function minover(map) {var minw=vars.minw;
if (!map&&is_num(data.mo)) {if (vars.ie67) {$S('minparent').filter='alpha(opacity=100)';} else {$S('minparent').opacity=1;}};
if (map) {var ximg=$S('mimg'); var xqs = vars.mapx; var yqs = vars.mapy; var mp=mappos; vars.minover=2; var hwidth = data.xcord-Math.floor(vars.mapx/2); var hwidth2 = data.xcord*1+Math.ceil(vars.mapx/2); var hheight = data.ycord-Math.floor(vars.mapy/2); var hheight2 = data.ycord*1+Math.ceil(vars.mapy/2);}
else {var ximg = $S('ximg'); var mp=minimappos; vars.minover=1; var hwidth = data.xcord-Math.floor(data.minimapx/2); var hwidth2 = data.xcord*1+Math.ceil(data.minimapx/2); var hheight = data.ycord-Math.floor(data.minimapy/2); var hheight2 = data.ycord*1+Math.ceil(data.minimapy/2); var hheight = data.ycord-Math.floor(data.minimapy/2); var hheight2 = data.ycord*1+Math.ceil(data.minimapy/2);}


var s2=''; var pl=vars.player; var curfil=false; if (data.filtert=='yes') {curfil=true;}; var ms=msu; var mnv2=data.ycord-yqs; var vild=villagedata; var none=vars.none; var check=filter.check; var filtered=true; var sh=show; var ttext=tooltiptext; var pre=true; var hover=markers.hoverlist; var previ=0; var showm=false; var hc=/^activity|points|conquer|attack|defend|growth|tribe$/.test(data.mode)?vars.mapcols[13]:vars.mapcols[3];

function eng() {var ref=mp(minw); if (map) {showm=$('mapembed');} else {showm=$('minimapembed');}

var s='C-'+ref[0]+'-'+ref[1]; if (s!=s2) {s2=s; if (ref[0]>=hwidth&&ref[0]<hwidth2&&ref[1]>=hheight&&ref[1]<hheight2) {
ximg.marginLeft=(((ref[0]-hwidth)*minw)-12)+'px'; ximg.marginTop=(((ref[1]-hheight)*minw)-12)+'px'; if (pre) {ximg.display='block'; pre=false;};
if (curfil&&vild[s]) {filtered=check(s);};
if (vild[s]&&filtered) {sh(ttext(ref[0],ref[1])); 
if (showm.showm) {if (vild[s][1]!='0'&&vild[s][1]!=''&&hover[vild[s][1]]) {if (vild[s][1]!=previ) {previ=vild[s][1]; showm.showm('showplayers',minw+'_'+hc+'_'+hover[vild[s][1]]);}} else {previ=0; showm.showm('clearplayers',0);}}} else {ms(); if (showm.showm) {previ=0; showm.showm('clearplayers',0);}}}
else {ms(); if (showm.showm) {previ=0; showm.showm('clearplayers',0);}; ximg.display='none'; pre=true;}
}}; eng();

document.onmousemove=function (evt){move(evt); eng();}}

function minout(map) {
if (!map&&is_num(data.mo)) {if (vars.ie67) {$('mindiv').parentNode.style.filter='alpha(opacity='+data.mo*10+')';} else {$('mindiv').parentNode.style.opacity=data.mo/10;}};
document.onmousemove=function (evt){move(evt);}; if (map) {$S('mimg').display='none';} else {$S('ximg').display='none';}; hide(); vars.minover=0; if (map) {if ($('mapembed').showm) {$('mapembed').showm('clearplayers',0);}} else if ($('minimapembed').showm) {$('minimapembed').showm('clearplayers',0);}}

function mapdata(map,ev,rc) {if (map) {var ref=mappos(vars.minw);} else {var ref=minimappos(vars.minw);};
if (map) {var xqs = vars.mapx; var yqs = vars.mapy;} else {var xqs = data.minimapx; var yqs = data.minimapy;}
var hwidth = data.xcord-Math.floor(xqs/2); var hwidth2 = data.xcord*1+Math.ceil(xqs/2); var hheight = data.ycord-Math.floor(yqs/2); var hheight2 = data.ycord*1+Math.ceil(yqs/2);

if (ref[0]>=hwidth&&ref[0]<hwidth2&&ref[1]>=hheight&&ref[1]<hheight2) {showmen(ref[0], ref[1], ev, 1, rc);}}

function calcminimapsize() {$('minimapembed').width=data.minimapx*vars.minw+1; $('minimapembed').height=data.minimapy*vars.minw+1;
$S('mindiv').width=((data.minimapx*vars.minw)+1)+'px'; $S('mindiv').height=((data.minimapy*vars.minw)+1)+'px'; $S('xspan').width=((data.minimapx*vars.minw)+1)+'px'; $S('xspan').height=((data.minimapy*vars.minw)+1)+'px';}
function calcpos(init) {var minw=vars.minw;
if (data.map=='yes') {var m=$S('map'); var wd=vars.width-54; m.width=wd+'px'; var he=vars.height-107; m.height=he+'px';
var hdw=Math.floor((wd-1)/minw);
var wdh=Math.floor((he-1)/minw);

if (hdw>200&&wdh>200) {hdw=200; wdh=200;}
else {while (hdw*wdh>40000) {if (hdw>wdh) {hdw--;} else {wdh--;}}}
vars.mapx=hdw; vars.mapy=wdh; if (init) {m.display='block';}; m=$S('mspan'); m.width=(hdw*minw+1)+'px'; m.height=(wdh*minw+1)+'px'; $('mapembed').height=wdh*minw+1; $('mapembed').width=hdw*minw+1;}
else if (data.minimap!='no') {var mi=$('minimap'); var mix=0; var miy=0;
if (data.mpos=='br') {mix=vars.width;} 
else if (data.mpos=='bl') {miy=vars.height;} 
else {mix=vars.width-(data.minimapx*minw)-35; miy=vars.height-(data.minimapy*minw)-50;}
vars.minx=(mix*1)+minw; vars.miny=(miy*1)+minw; mi.style.left=mix+'px'; mi.style.top=miy+'px'; if (init) {mi.style.display='block';}}

var wds=vars.width-28-vars.posleft; var hes=vars.height-43-vars.postop;
var linewrapper=$S('linewrapper'); linewrapper.width=wds+'px'; linewrapper.height=hes+'px'; linewrapper.clip='rect(0px '+wds+'px '+hes+'px 0px)';
linewrapper=$S('linewrapperoverlay'); linewrapper.width=wds+'px'; linewrapper.height=hes+'px'; linewrapper.clip='rect(0px '+wds+'px '+hes+'px 0px)';
vars.wds=wds; vars.hes=hes;
if (!init) {draw.refresh();}; putinview();}

function changemapsize() {var x=$('mapwidth').value; var y=$('mapheight').value;
if (is_num(x)&&is_num(y)&&x>0&&y>0) {
if (x*y>40000) {alert('The map cannot contain more than a total of 40.000 villages, for example a width of 400 villages and a height of 100 villages. Other examples: 200x200, 800x50.');}
else if ((x*y<=5000||confirm('You are setting the map size to high values. This will reduce speed, are you sure you want to do this?'))&&(data.width!=x||data.height!=y)) {data.width=x; data.height=y; save(); mov(data.xcord,data.ycord,0,1,1);}}
else {alert("The width and height of the map must be numbers and higher than zero.");}}
function changeminimapsize() {var x=$('minimapwidth').value; var y=$('minimapheight').value;
if (is_num(x)&&is_num(y)&&x>0&&y>0) {if (x*y>40000) {alert("The minimap cannot contain more than a total of 40.000 villages, for example a width of 400 villages and a height of 100 villages. Other examples: 200x200, 800x50.");}
else if (data.minimapx!=x||data.minimapy!=y) {data.minimapx=x; data.minimapy=y; save(); calcminimapsize(); refmapurl(); calcpos(); mov(data.xcord,data.ycord,0,1);}} else {alert("The width and height of the minimap must be numbers and higher than zero.");}}
function changeminimapopacity(op) {data.mo=op; save(); if (vars.ie67) {$('mindiv').parentNode.style.filter=op!=''?'alpha(opacity='+op*10+')':'alpha(opacity=100)';} else {$('mindiv').parentNode.style.opacity=op!=''?op/10:'1';}}

function changepointsmode() {var min=$('pointswhite').value; var max=$('pointsred').value; var minmax=min+'-'+max; if (max==''&&min=='') {minmax='';}
else if (!is_num(min)||!is_num(max)) {alert('Minimum and maximum point values must be numbers and cannot be negative.'); return false;}
else if (parseInt(min)>parseInt(max)) {alert('Minimum point value must be lower or equal to maximum point value.'); return false;}
if (data.spoints!=minmax) {data.spoints=minmax; save(); if (data.mode=='points') {mode('points');}}}

function changeWorld() {if (cancelcol()) {var pr=serversettings.prefix;
var text=[]; for(var i=serversettings.serverstart;i<=serversettings.servernum;i++) {if (data.server==i) {text.push('<b>',serversettings.world,' ',i,'</b><br />');} else {text.push('<a class="spl" href="http://',pr,i,'.',serversettings.domain,serversettings.folder,'" onclick="Close();">',serversettings.world,' ',i,'</a>');}}
if (serversettings.classic) {if (data.server=='c1') {text.push('<b>',serversettings.classic,'</b>');} else {text.push('<a class="spl" href="http://',pr,'c1.',serversettings.domain,serversettings.folder,'">',serversettings.classic,'</a>');}}
text.push(vars.borderright,vars.spacer,vars.borderlefta,
'<div class="twflag tribalwarsnet">',pr=='en'?'<b>tribalwars.net</b>':'<a class="spl" href="http://www.tribalwarsmap.com/">tribalwars.net</a>','</div>',
'<div class="twflag tribalwarsuk">',pr=='uk'?'<b>tribalwars.co.uk</b>':'<a class="spl" href="http://www.tribalwarsmap.co.uk/">tribalwars.co.uk</a>','</div>',
'<div class="twflag tribalwarsde">',pr=='de'?'<b>die-staemme.de</b>':'<a class="spl" href="http://www.diestaemmekarte.de/">die-staemme.de</a>','</div>',
'<div class="twflag tribalwarsnl">',pr=='nl'?'<b>tribalwars.nl</b>':'<a class="spl" href="http://www.tribalwarsmap.com/nl/">tribalwars.nl</a>','</div>',
'<div class="twflag tribalwarspl">',pr=='pl'?'<b>plemiona.pl</b>':'<a class="spl" href="http://www.plemionamapa.pl">plemiona.pl</a>','</div>',
'<div class="twflag tribalwarsse">',pr=='sv'?'<b>tribalwars.se</b>':'<a class="spl" href="http://www.tribalwarsmap.com/se/">tribalwars.se</a>','</div>',
'<div class="twflag tribalwarsbr">',pr=='br'?'<b>tribalwars.com.br</b>':'<a class="spl" href="http://www.tribalwarsmap.com/br/">tribalwars.com.br</a>','</div>',
'<div class="twflag tribalwarspt">',pr=='pt'?'<b>tribalwars.com.pt</b>':'<a class="spl" href="http://www.tribalwarsmap.com/pt/">tribalwars.com.pt</a>','</div>',
'<div class="twflag tribalwarscz">',pr=='cs'?'<b>divokekmeny.cz</b>':'<a class="spl" href="http://www.tribalwarsmap.com/cz/">divokekmeny.cz</a>','</div>',
'<div class="twflag tribalwarsro">',pr=='ro'?'<b>triburile.ro</b>':'<a class="spl" href="http://www.tribalwarsmap.com/ro/">triburile.ro</a>','</div>',
'<div class="twflag tribalwarsgr">',pr=='gr'?'<b>fyletikesmaxes.gr</b>':'<a class="spl" href="http://www.tribalwarsmap.com/gr/">fyletikesmaxes.gr</a>','</div>',
'<div class="twflag tribalwarsno">',pr=='no'?'<b>tribalwars.no</b>':'<a class="spl" href="http://www.tribalwarsmap.com/no/">tribalwars.no</a>','</div>',
'<div class="twflag tribalwarssk">',pr=='sk'?'<b>divoke-kmene.sk</b>':'<a class="spl" href="http://www.tribalwarsmap.com/sk/">divoke-kmene.sk</a>','</div>',
'<div class="twflag tribalwarshu">',pr=='hu'?'<b>klanhaboru.hu</b>':'<a class="spl" href="http://www.tribalwarsmap.com/hu/">klanhaboru.hu</a>','</div>',
'<div class="twflag tribalwarsdk">',pr=='dk'?'<b>tribalwars.dk</b>':'<a class="spl" href="http://www.tribalwarsmap.com/dk/">tribalwars.dk</a>','</div>',
'<div class="twflag tribalwarsba">',pr=='ba'?'<b>plemena.net</b>':'<a class="spl" href="http://www.tribalwarsmap.com/ba/">plemena.net</a>','</div>',
'<div class="twflag tribalwarsit">',pr=='it'?'<b>tribals.it</b>':'<a class="spl" href="http://www.tribalwarsmap.com/it/">tribals.it</a>','</div>',
'<div class="twflag tribalwarstr">',pr=='tr'?'<b>klanlar.org</b>':'<a class="spl" href="http://www.tribalwarsmap.com/tr/">klanlar.org</a>','</div>',
'<div class="twflag tribalwarsfr">',pr=='fr'?'<b>guerretribales.fr</b>':'<a class="spl" href="http://www.tribalwarsmap.com/fr/">guerretribales.fr</a>','</div>',
'<div class="twflag tribalwarses">',pr=='es'?'<b>guerrastribales.es</b>':'<a class="spl" href="http://www.tribalwarsmap.com/es/">guerrastribales.es</a>','</div>',
'<div class="twflag tribalwarssi">',pr=='si'?'<b>vojnaplemen.si</b>':'<a class="spl" href="http://www.tribalwarsmap.com/si/">vojnaplemen.si</a>','</div>',
'<div class="twflag tribalwarslt">',pr=='lt'?'<b>genciukarai.lt</b>':'<a class="spl" href="http://www.tribalwarsmap.com/lt/">genciukarai.lt</a>','</div>',
'<div class="twflag tribalwarshr">',pr=='hr'?'<b>plemena.com.hr</b>':'<a class="spl" href="http://www.tribalwarsmap.com/hr/">plemena.com.hr</a>','</div>',
'<div class="twflag tribalwarsid">',pr=='id'?'<b>perangkaum.net</b>':'<a class="spl" href="http://www.tribalwarsmap.com/id/">perangkaum.net</a>','</div>');
textbox.menu('World', text.join(''), 't100 ie');}}

function toggleProps() {var ch=toggleCheckbox('props', 'toggleprops', 1, 'no'); if (ch) {data.props='';} else {data.props='no';}; save(); mov(data.xcord,data.ycord,0,1);}
function toggleAnimations() {var ch=toggleCheckbox('ani', 'toggleanimations', 1, '1'); if (ch) {data.ani=''; jQuery.fx.off=false;} else {data.ani='1'; jQuery.fx.off=true;}; save();}
function toggleMap() {var ch=toggleCheckbox('map', 'togglemap', 0, 'yes'); 
if (ch) {data.map=''; $S('map').display='none';}
else {data.map='yes'; $S('minimap').display='none';}; save(); calcpos(1); mov(data.xcord,data.ycord,0,1,0,1); mapurl(0,1);}
function toggleMinimap() {var ch=toggleCheckbox('minimap', 'toggleminimap', 1, 'no'); if (ch) {data.minimap=''; if (data.map!='yes') {$S('minimap').display='block'; mov(data.xcord, data.ycord,0,1,0,1); calcpos(1); mapurl(0,1);}} else {data.minimap='no'; $S('minimap').display='none';} save();}

function changeminimapposition(pos) {if (data.mpos!=pos) {data.mpos=pos; calcpos(); save();}}
function changeminimapiconsize(size) {if (size!='3'&&size!='5') {data.minsize=''; vars.minw=4;} else {data.minsize=size*1; vars.minw=size*1;}; $('ximg').className='ximg'+size; $('mimg').className='ximg'+size; save(); calcpos(); calcminimapsize(); refmapurl(); generatemap(1);}

function changecolours(scheme) {
if (scheme=='1') {vars.mapcols=['444444','B40000','969696','FFFFFF','000000','30490e','436213','252589','FF0000','FFFF00','444444','a2a2a2','828282','FFFFFF','FFFFFF','FF0000','FF0000'];}
else if (scheme=='2') {vars.mapcols=['444444','a2a2a2','646464','FFFFFF','000000','484848','505050','252589','FF0000','FFFF00','444444','a2a2a2','646464','FFFFFF','FFFFFF','FF0000','FF0000'];}
var dat=vars.mapcols.join('-'); if (data.colours!=dat) {data.colours=dat; mode(data.mode,1,0,1); mapurl(0,1);}; settings('colours');}

function changetooltipsetting(setting, value, el) {var tts=data.tooltips; var tarr=[0,0,0,0,0,0,0,0];
for(var i=0;i<8;i++) {if (tts.charAt(i)!='') {tarr[i]=tts.charAt(i);}};
if (el) {if (tarr[setting]=='1') {tarr[setting]='0'; if ($(el)) {$(el).checked=true;}} else {tarr[setting]='1'; if ($(el)) {$(el).checked=false;}}}
else {tarr[setting]=value;};
data.tooltips=tarr.join(''); save();}

function changeclicksetting(setting, value) {var tts=data.menu; var tarr=['c','m','v','t','p','s','q','a','h','j','k'];
for(var i=0;i<11;i++) {if (tts.charAt(i)!='') {tarr[i]=tts.charAt(i);}};
tarr[setting]=value; data.menu=tarr.join(''); save();}

function setIconsize() {var size=data.iconsize; switch(size) {
case 'minimal': vars.iconheight=12; vars.iconwidth=16; break;
case '27': case 'xsmall': vars.iconheight=18; vars.iconwidth=24; break;
case 'small': vars.iconheight=24; vars.iconwidth=32; break;
default: vars.iconheight=38; vars.iconwidth=53;}}
function changeiconsize(size) {data.iconsize=size; save(); setIconsize(); document.getElementsByTagName('body')[0].className=size; var ma = $('main'); vars.width=ma.offsetWidth; vars.height=ma.offsetHeight; ma=$('linewrapper'); vars.posleft=parseInt(ma.offsetLeft); vars.postop=parseInt(ma.offsetTop); var ma=$S('pos'); ma.left=''; ma.top=''; calcpos(); mode(data.mode);}

var markers={'curplayer':{},'curp':0,'curt':0,'curtt':0,'highplayerlist':{},'hoverlist':{},
'toggle':function() {var ch=toggleCheckbox('markers', 'markerstoggle', 0, '1'); if (ch) {data.markers='';} else {data.markers='1';}; save(); mov(data.xcord,data.ycord,0,1);},
'show':function(id) {if (data.markers=='1') {markers.curt=0; if (markers.highplayerlist[id]&&markers.curp!=id&&!markers.curplayer[id]) {
for(var i in markers.curplayer) {markers.restore(i);}; markers.curp=id; markers.curplayer[id]=[];
var hpl=markers.highplayerlist[id]; var curplayer=markers.curplayer[id]; var l=hpl.length; var cl='';
var v=[]; for(var i=0;i<l;i++) {cl=$(hpl[i]); curplayer.push([hpl[i], cl.className]); cl.className+=' m';};
}}},
'inrest':function(id) {if ((markers.curp!=id||markers.curt)&&markers.curplayer[id]) {if (markers.curp==id) {markers.curp=0;}
var vills=markers.curplayer[id]; var l=vills.length; for(var i=0;i<l;i++) {$(vills[i][0]).className=vills[i][1];}; delete markers.curplayer[id];}},
'restore':function(id) {if (data.markers=='1') {if (markers.curplayer[id]) {markers.curt=1; setTimeout(function() {markers.inrest(id);}, 1);}}}}

var modes={'highlight':function() {var villages=vars.villages2; var xl=0; var height=vars.iconheight; var bp=backpos; var cols=vars.mapcols;
var vad=vars.villageid; var viltd=vars.viltd; var vild=villagedata; var vpl=vars.players; var pd=playerdata; var vtr=vars.tribes;
var l=viltd.length; var p=0; for(var i=0;i<l;i++) {p=vild[viltd[i]]; if (p) {
if (villages[viltd[i]]) {$S(viltd[i]).backgroundColor='#'+villages[viltd[i]]; if (p&&p[1]==0||p[1]=='') {$S(viltd[i]).backgroundPosition=bp(p[2])+'px -'+(height*(p[5]!='0'?5:3))+'px';}}
else if (p&&p[1]==0||p[1]=='') {$S(viltd[i]).backgroundPosition=bp(p[2])+'px -'+(height*(p[5]!='0'?4:2))+'px';}
else {if (vpl[p[1]]) {$S(viltd[i]).backgroundColor='#'+vpl[p[1]];}
else if (pd[p[1]]&&vtr[pd[p[1]][1]]) {$S(viltd[i]).backgroundColor='#'+vtr[pd[p[1]][1]];}
else {$S(viltd[i]).backgroundColor='#'+cols[0];}}
}}},
'conquer':function(a) {var viltd=vars.viltd; var l = viltd.length; var id,p,per; var vild=villagedata; var playd=playerdata; var bp=backpos; var cols=vars.mapcols; var curtime=new Date().getTime()/1000+serversettings.time; var cols=vars.mapcols; var height=vars.iconheight;
var col1=hex2rgb(cols[8]); var col2=hex2rgb(cols[9]); var col3=hex2rgb(cols[10]);
var rb=col2[0]*1; var radd=(col1[0]-col2[0])/0.75; var gb=col2[1]*1; var gadd=(col1[1]-col2[1])/0.75; var bb=col2[2]*1; var badd=(col1[2]-col2[2])/0.75;
var rb2=col2[0]*1; var radd2=(col3[0]-col2[0])/0.25; var gb2=col2[1]*1; var gadd2=(col3[1]-col2[1])/0.25; var bb2=col2[2]*1; var badd2=(col3[2]-col2[2])/0.25;

for(var i=0;i<l;i++) {id = vild[viltd[i]];
if (id) {if (id[1]==0||id[1]=='') {$S(viltd[i]).backgroundPosition=bp(id[2])+'px -'+(height*(id[5]!='0'?4:2))+'px';} else {
if (a) {if (id[1]&&playd[id[1]]&&playd[id[1]][4]) {if (a==3) {p=curtime-playd[id[1]][7];} else if (a==2) {p=curtime-playd[id[1]][6];} else {p=curtime-playd[id[1]][4];}} else {p=0;}}
else if (id[4]!='0'&&id[4]!='') {p=curtime-id[4];} else {p=0;}
if (p&&p<338400) {if (p<259200) {per=0.75-p/345600; $S(viltd[i]).backgroundColor='rgb('+Math.round(rb+radd*per)+','+Math.round(gb+gadd*per)+','+Math.round(bb+badd*per)+')';}
else {per=p/345600-0.75; $S(viltd[i]).backgroundColor='rgb('+Math.round(rb2+radd2*per)+','+Math.round(gb2+gadd2*per)+','+Math.round(bb2+badd2*per)+')';}}
else {$S(viltd[i]).backgroundColor='#'+cols[10];}
}}}},
'activity':function() {var viltd=vars.viltd; var l=viltd.length; var id,p,per; var vild=villagedata; var bp=backpos; var cols=vars.mapcols; var playd=playerdata; var curtime=new Date().getTime()/1000+serversettings.time;
var col1=hex2rgb(cols[8]); var col2=hex2rgb(cols[9]); var col3=hex2rgb(cols[10]); var height=vars.iconheight;
var rb=col2[0]*1; var radd=(col1[0]-col2[0])/0.71; var gb=col2[1]*1; var gadd=(col1[1]-col2[1])/0.71; var bb=col2[2]*1; var badd=(col1[2]-col2[2])/0.71;
var rb2=col3[0]*1; var radd2=(col2[0]-col3[0])/0.29; var gb2=col3[1]*1; var gadd2=(col2[1]-col3[1])/0.29; var bb2=col3[2]*1; var badd2=(col2[2]-col3[2])/0.29;

for(var i=0;i<l;i++) {id = vild[viltd[i]]; if (vild[viltd[i]]) {if (id[1]==0||id[1]=='') {$S(viltd[i]).backgroundPosition=bp(id[2])+'px -'+(height*(id[5]!='0'?4:2))+'px';} else if (id[1]&&playd[id[1]]) {p=curtime-Math.max(playd[id[1]][4],playd[id[1]][6]);

if (p>=604800) {$S(viltd[i]).backgroundColor='#'+cols[8];}
else if (p>=172800) {per=p/604800-0.29; $S(viltd[i]).backgroundColor='rgb('+Math.round(rb+radd*per)+','+Math.round(gb+gadd*per)+','+Math.round(bb+badd*per)+')';}
else if (p>=7200) {per=p/604800; $S(viltd[i]).backgroundColor='rgb('+Math.round(rb2+radd2*per)+','+Math.round(gb2+gadd2*per)+','+Math.round(bb2+badd2*per)+')';}
else {$S(viltd[i]).backgroundColor='#'+cols[10];}} else {$S(viltd[i]).backgroundColor='#'+cols[10];}}}},
'tribe':function() {var viltd=vars.viltd; var l = viltd.length; var id; var vild=villagedata; var bp=backpos; var cols=vars.mapcols; var playd=playerdata; var height=vars.iconheight;
for(var i=0;i<l;i++) {id = vild[viltd[i]]; if (id) {if (id[1]==0||id[1]=='') {$S(viltd[i]).backgroundPosition=bp(id[2])+'px -'+(height*(id[5]!='0'?4:2))+'px';} else if (id[1]&&playd[id[1]]&&playd[id[1]][1]==0) {$S(viltd[i]).backgroundColor='#'+cols[16];} else {$S(viltd[i]).backgroundColor='#'+cols[10];}}}},
'points':function() {var min=serversettings.pointsmin; var max=serversettings.pointsmax; if (data.spoints) {var f=data.spoints.split('-'); if (is_num(f[0])&&is_num(f[1])&&parseInt(f[0])<=parseInt(f[1])) {min=f[0]; max=f[1];}};
var viltd=vars.viltd; var l=viltd.length; var per,points,id; var vild=villagedata; var bp=backpos; var cols=vars.mapcols; var playd=playerdata;

var col1=hex2rgb(cols[14]); var col2=hex2rgb(cols[15]); var rb=col1[0]*1; var radd=(col2[0]-col1[0]); var gb=col1[1]*1; var gadd=(col2[1]-col1[1]); var bb=col1[2]*1; var badd=(col2[2]-col1[2]); var height=vars.iconheight;
for(var i=0;i<l;i++) {id = vild[viltd[i]]; if (id) {if (id[1]==0||id[1]=='') {$S(viltd[i]).backgroundPosition=bp(id[2])+'px -'+(height*(id[5]!='0'?4:2))+'px';} else if (id[1]&&playd[id[1]]&&playd[id[1]][0]) {points=playd[id[1]][0];
if (points<=min) {$S(viltd[i]).backgroundColor='#'+cols[14];}
else if (points>max) {$S(viltd[i]).backgroundColor='#'+cols[15];}
else {per=(points-min)/max; $S(viltd[i]).backgroundColor='rgb('+Math.round(rb+radd*per)+','+Math.round(gb+gadd*per)+','+Math.round(bb+badd*per)+')';}}
else {$S(viltd[i]).backgroundColor='#'+cols[14];}}}}}

function backpos(points) {if (data.iconsize=='small') {if (points>10999) {return '-160';} else if (points>8999) {return '-128';} else if (points>2999) {return '-96';} else if (points>999) {return '-64';} else if (points>299) {return '-32';} else {return '-0';}}
else if (data.iconsize=='xsmall'||data.iconsize=='27') {if (points>10999) {return '-120';} else if (points>8999) {return '-96';} else if (points>2999) {return '-72';} else if (points>999) {return '-48';} else if (points>299) {return '-24';} else {return '-0';}}
else if (data.iconsize=='minimal') {if (points>10999) {return '-96';} else if (points>8999) {return '-64';} else if (points>2999) {return '-48';} else if (points>999) {return '-32';} else if (points>299) {return '-16';} else {return '-0';}}
else {if (points>10999) {return '-265';} else if (points>8999) {return '-212';} else if (points>2999) {return '-159';} else if (points>999) {return '-106';} else if (points>299) {return '-53';} else {return '-0';}}}

var info={'login':function() {show('Login with your Tribal Wars account to access<br />your settings from any computer and protect them<br />from hard disk crashes. You will be redirected to<br />http://www.'+serversettings.twdomain+'/external_auth.php to login<br />with your Tribal Wars username and password.',1);},
'normal':function(ret) {show('<div class="la fc">Normal mode uses your highlights to colour villages on the map.'+(ret?'<div class="center">Click to change the highlight mode.</div></div>':'</div>'));},
'activity':function(ret) {var text=['<div class="la fc">Activity mode tracks the time since a player has last increased in points or defeated an enemy unit while attacking. When points and ODA (Opponents defeated as attacker) don\'t increase a player\'s villages are coloured from <img class="colimg" style="background-color: #',vars.mapcols[0],'" src="img/trans.gif" alt="" /> to <img class="colimg" style="background-color: #',vars.mapcols[9],'" src="img/trans.gif" alt="" /> for 2 days, from <img class="colimg" style="background-color: #',vars.mapcols[9],'" src="img/trans.gif" alt="" /> to <img class="colimg" style="background-color: #',vars.mapcols[8],'" src="img/trans.gif" alt="" /> for 1 week.<br />\
Go to the "Colours" tab at the "Settings" menu to change colours.<div class="center">'];

var cols=vars.mapcols; var col1=hex2rgb(cols[8]); var col2=hex2rgb(cols[9]); var col3=hex2rgb(cols[10]);
var rb=col2[0]*1; var radd=(col1[0]-col2[0])/0.71; var gb=col2[1]*1; var gadd=(col1[1]-col2[1])/0.71; var bb=col2[2]*1; var badd=(col1[2]-col2[2])/0.71;
var rb2=col3[0]*1; var radd2=(col2[0]-col3[0])/0.29; var gb2=col3[1]*1; var gadd2=(col2[1]-col3[1])/0.29; var bb2=col3[2]*1; var badd2=(col2[2]-col3[2])/0.29;

function gc(p) {if (p>=172800) {var per=p/604800-0.29; return 'rgb('+Math.round(rb+radd*per)+','+Math.round(gb+gadd*per)+','+Math.round(bb+badd*per)+')';}
else {var per=p/604800; return 'rgb('+Math.round(rb2+radd2*per)+','+Math.round(gb2+gadd2*per)+','+Math.round(bb2+badd2*per)+')';}}

text.push('<table class="preview" cellpadding="0" cellspacing="0" align="center"><tr><td colspan="7" class="nob"></td></tr><tr>');
for(var i=1;i<8;i++) {text.push('<td class="nob">',i,'d</td>');}
text.push('</tr><tr><td class="btd tdb" colspan="2">');
for(i=0;i<=60;i++) {text.push('<div style="',i==30?'border-right: 1px solid #000000;':'','height: 5px; width: 1px; background-color: ',gc(i*2880),';"></div>');};
text.push('</td><td rowspan="2" colspan="5">');
for(i=20;i<70;i++) {text.push('<div style="',i==29||i==39||i==49||i==59?'border-right: 1px solid #000000;':'','background-color: ',gc(i*8640),';"></div>');};
text.push('</td></tr><tr><td class="btd ttd" colspan="2">');
col3=hex2rgb(vars.mapcols[11]); rb2=col3[0]*1; radd2=(col2[0]-col3[0])/0.29; gb2=col3[1]*1; gadd2=(col2[1]-col3[1])/0.29; bb2=col3[2]*1; badd2=(col2[2]-col3[2])/0.29;
for(i=0;i<=60;i++) {text.push('<div style="',i==30?'border-right: 1px solid #000000;':'','height: 5px; width: 1px; background-color: ',gc(i*2880),';"></div>');};
text.push('</td></tr></table>',(ret?'<div class="center">Click to change the highlight mode.</div>':''),'</div></div>');
show(text.join(''));},
'conquergraph':function() {var cols=vars.mapcols; var col1=hex2rgb(cols[8]); var col2=hex2rgb(cols[9]); var col3=hex2rgb(cols[10]);
var rb=col2[0]*1; var radd=(col1[0]-col2[0])/54; var gb=col2[1]*1; var gadd=(col1[1]-col2[1])/54; var bb=col2[2]*1; var badd=(col1[2]-col2[2])/54;
var rb2=col2[0]*1; var radd2=(col3[0]-col2[0])/18; var gb2=col2[1]*1; var gadd2=(col3[1]-col2[1])/18; var bb2=col2[2]*1; var badd2=(col3[2]-col2[2])/18;

function gc(p) {if (p<54) {var per=54-p; return 'rgb('+Math.round(rb+radd*per)+','+Math.round(gb+gadd*per)+','+Math.round(bb+badd*per)+')';}
else {var per=p-54; return 'rgb('+Math.round(rb2+radd2*per)+','+Math.round(gb2+gadd2*per)+','+Math.round(bb2+badd2*per)+')';}}

var text=['<table class="preview" cellpadding="0" cellspacing="0" align="center"><tr><td colspan="7" class="nob"></td></tr><tr><td class="nob">1d</td><td class="nob">2d</td><td class="nob">3d</td><td class="nob">4d</td></tr><tr><td colspan="3" rowspan="2" class="btd">'];
for(i=0;i<=54;i++) {text.push('<div style="',i==18||i==37?'border-right: 1px solid #000000;':'','background-color: ',gc(i),';"></div>');};
text.push('</td><td class="tdb">');
for(i=162;i<216;i++) {text.push('<div style="height: 5px; width: 1px; background-color: ',gc(i/3),';"></div>');};
text.push('</td></tr><tr><td class="ttd">');
col3=hex2rgb(cols[11]); rb2=col2[0]*1; radd2=(col3[0]-col2[0])/18; gb2=col2[1]*1; gadd2=(col3[1]-col2[1])/18; bb2=col2[2]*1; badd2=(col3[2]-col2[2])/18;
for(i=162;i<216;i++) {text.push('<div style="height: 5px; width: 1px; background-color: ',gc(i/3),';"></div>');};
text.push('</td></tr></table>'); return text.join('');},
'conquer':function(ret) {info.attack(ret,3);},
'defend':function(ret) {info.attack(ret,2);},
'growth':function(ret) {info.attack(ret,1);},
'attack':function(ret,a) {show(['<div class="la fc">',(a=='3'?'Conquer mode colours villages on the map depending on how long ago they were captured.':(a=='2'?'Defend mode colours villages on the map depending on how long ago a player last increased in ODD (Opponents defeated as defender).':(a=='1'?'Growth mode colours villages on the map depending on how long ago a player last increased in points.':'Attack mode colours villages on the map depending on how long ago a player last increased in ODA (Opponents defeated as attacker).'))),' From <img class="colimg" style="background-color: #',vars.mapcols[8],'" src="img/trans.gif" alt="" /> to <img class="colimg" style="background-color: #',vars.mapcols[9],'" src="img/trans.gif" alt="" /> for 0-3 days, from <img class="colimg" style="background-color: #',vars.mapcols[9],'" src="img/trans.gif" alt="" /> to <img class="colimg" style="background-color: #',vars.mapcols[0],'" src="img/trans.gif" alt="" /> for 3-4 days.<br />\
Go to the "Colours" tab at the "Settings" menu to change colours.<div class="center">',info.conquergraph(),(ret?'Click to change the highlight mode.':''),'</div></div>'].join(''));},
'pointsgraph':function(w) {var text=['<table cellpadding="0" cellspacing="0" class="preview" align="center"><tr><td colspan="3" class="center nob">Minimum points &rArr; Maximum points</td></tr>\
<tr><td class="btd"><div style="width: 30px; background-color: #',vars.mapcols[14],';"></div></td><td class="btd">'];
var col1=hex2rgb(vars.mapcols[14]); var col2=hex2rgb(vars.mapcols[15]); var perfh=gradientHighlight;
perfh.turnp=0; perfh.turnp2=0;
perfh.am1=w; perfh.rb=col2[0]*1; perfh.radd=(col1[0]-col2[0])/w; perfh.gb=col2[1]*1; perfh.gadd=(col1[1]-col2[1])/w; perfh.bb=col2[2]*1; perfh.badd=(col1[2]-col2[2])/w;
for(i=w;i>=0;i--) {text.push('<div style="background-color: ',perfh.func(i),';"></div>');};
text.push('</td><td><div style="width: 30px; background-color: #',vars.mapcols[15],';"></div></td></tr></table>'); return text.join('');},
'points':function(ret) {show(['<div class="la fc">Points mode colours villages from Minimum <img class="colimg" style="background-color: #',vars.mapcols[14],'" src="img/trans.gif" alt="" /> to Maximum <img class="colimg" style="background-color: #',vars.mapcols[15],'" src="img/trans.gif" alt="" /> depending on their owner\'s points. The auto value is ',number(serversettings.pointsmin),' for "Minimum and lower points" and ',number(serversettings.pointsmax),' for "Maximum and higher points".<br />\
Go to the "Colours" tab at the "Settings" menu to change the minimum and maximum point values and colours.\
<div class="center">',info.pointsgraph(50),(ret?'Click to change the highlight mode.':''),'</div></div>'].join(''));},
'tribe':function(ret) {show('<div class="la fc">Tribeless mode colours villages on the map whose owner isn\'t a member of a tribe <img class="colimg" style="background-color: #'+vars.mapcols[16]+'" src="img/trans.gif" alt="" />.<br />\
Go to the "Colours" tab at the "Settings" menu to change this colour.'+(ret?'<div class="center">Click to change the highlight mode.</div>':'')+'</div>');}}

function mode(type,ov,cl,ne) {switch(type) {
case 'activity': modes.activity(); $('modename').innerHTML='Activity'; break;
case 'points': modes.points(); $('modename').innerHTML='Points'; break;
case 'conquer': modes.conquer(); $('modename').innerHTML='Conquer'; break;
case 'attack': modes.conquer(2); $('modename').innerHTML='Attack'; break;
case 'defend': modes.conquer(3); $('modename').innerHTML='Defend'; break;
case 'growth': modes.conquer(1); $('modename').innerHTML='Growth'; break;
case 'tribe': modes.tribe(); $('modename').innerHTML='Tribeless'; break;
default: modes.highlight(); $('modename').innerHTML='Normal';}

if (ov||data.mode!=type) {data.mode=type; save();}; if (!ne) {refmapurl();}; if (cl) {Close();}}

function modeinfo() {switch(data.mode) {
case 'activity': info.activity(1); break;
case 'points': info.points(1); break;
case 'conquer': info.conquer(1); break;
case 'attack': info.attack(1); break;
case 'defend': info.defend(1); break;
case 'growth': info.growth(1); break;
case 'tribe': info.tribe(1); break;
default: info.normal(1);}}

function highlightMode() {if (cancelcol()) {var text=[]; var m=data.mode;
if (m!='activity'&&m!='points'&&m!='conquer'&&m!='attack'&&m!='defend'&&m!='growth'&&m!='tribe') {text.push('<b>Normal</b><br >');}
else {text.push('<a class="spl" href="javascript: mode(\'\',0,1);" onmouseover="info.normal();" onmouseout="msu();">Normal</a>');}
if (m=='activity') {text.push('<b>Activity</b>');} else {text.push('<a class="spl" href="javascript: mode(\'activity\',0,1);" onmouseover="info.activity();" onmouseout="msu();">Activity</a>');}
if (m=='points') {text.push('<b>Points</b>');} else {text.push('<a class="spl" href="javascript: mode(\'points\',0,1);" onmouseover="info.points();" onmouseout="msu();">Points</a>');}
if (m=='conquer') {text.push('<b>Conquer</b>');} else {text.push('<a class="spl" href="javascript: mode(\'conquer\',0,1);" onmouseover="info.conquer();" onmouseout="msu();">Conquer</a>');}
if (m=='attack') {text.push('<b>Attack</b>');} else {text.push('<a class="spl" href="javascript: mode(\'attack\',0,1);" onmouseover="info.attack();" onmouseout="msu();">Attack</a>');}
if (m=='defend') {text.push('<b>Defend</b>');} else {text.push('<a class="spl" href="javascript: mode(\'defend\',0,1);" onmouseover="info.defend();" onmouseout="msu();">Defend</a>');}
if (m=='growth') {text.push('<b>Growth</b>');} else {text.push('<a class="spl" href="javascript: mode(\'growth\',0,1);" onmouseover="info.growth();" onmouseout="msu();">Growth</a>');}
if (m=='tribe') {text.push('<b>Tribeless</b>');} else {text.push('<a class="spl" href="javascript: mode(\'tribe\',0,1);" onmouseover="info.tribe();" onmouseout="msu();">Tribeless</a>');}
textbox.menu('Highlight mode', text.join(''), 't100 ie');}}

var filter={'last':'','lastparsed':[],
'toggle':function () {if (data.filtert=='yes') {data.filtert=''; $('fils').innerHTML='off'; if ($('filterset')) {$('filterset').checked=false;};} else {data.filtert='yes'; $('fils').innerHTML='<span class="red">on</span>'; if ($('filterset')) {$('filterset').checked=true;};}; save(); refmapurl(); mov(data.xcord,data.ycord,0,1);},
'save':function () {var alt = ' must be a number and cannot be negative'; var alt2 = ' must be a number and higher than zero'; var alt3=', you can leave the value empty if you wish not to use it.';
var min=$('filterminpoints').value; if (min&&!is_num(min)) {alert('Minimum points'+alt+alt3); return false;}
var max=$('filtermaxpoints').value; if ((max&&!is_num(max))||max==='0') {alert('Maximum points'+alt2+alt3); return false;};
var ab=$('filterab').value;
var abmin=$('filterminab').value; if (abmin&&!is_num(abmin)) {alert('Minimum abandoned points'+alt+alt3); return false;}
var abmax=$('filtermaxab').value; if ((abmax&&!is_num(abmax))||abmax==='0') {alert('Maximum abandoned points'+alt2+alt3); return false;};
var tb=$('filtertr').value;
var hg=''; if ($('filterhighlight').checked) {hg='1';};
var qc=min+'-'+max+'-'+ab+'-'+abmin+'-'+abmax+'-'+tb+'-'+hg;
if (data.filtert!='yes'||data.filter!=qc) {
data.filter=qc; data.filtert='yes'; $('fils').innerHTML='<span class="red">on</span>'; if ($('filterset')) {$('filterset').checked=true;}; save(); refmapurl(); mov(data.xcord,data.ycord,0,1);}},
'check':function (id) {var fs=[]; var tr=true; if (filter.last!=data.filter) {fs=data.filter.split('-'); filter.lastparsed=fs; filter.last=data.filter;} else {fs=filter.lastparsed;}
if (villagedata[id]) {var vild=villagedata[id]; var points=vild[2];
if (fs[6]==1&&vars.villages2[id]) {tr=false;}
if (fs[0]&&is_num(fs[0])&&points<fs[0]) {return false} 
if (fs[1]&&is_num(fs[1])&&points>fs[1]) {return false;}
var player = vild[1];
if (player==0||player=='') {
if (fs[2]==2) {return false;}
if (fs[3]&&is_num(fs[3])&&points<fs[3]) {return false;}
if (fs[4]&&is_num(fs[4])&&points>fs[4]) {return false;}
}
else {
if (fs[6]==1&&vars.players[player]) {tr=false;}
if (fs[2]==1) {return false;}
else if ((fs[6]==1||fs[5]==1||fs[5]==2)&&playerdata[player]) {
if (fs[6]==1&&vars.tribes[playerdata[player][1]]) {tr=false;}
if (fs[5]==1) {if (playerdata[player][1]==0||playerdata[player][1]=='') {return false;}}
else if (fs[5]==2) {if (playerdata[player][1]!='0'&&playerdata[player][1]!='') {return false;}}
}}
if (fs[6]==1&&tr) {return false;} else {return true;}} else {return false;}}}

function tooltiptext(x,y,small,ign) {var villageid=0; var playerid=0; var tribeid=0; var tts=data.tooltips;
if (ign) {tts='00000021';} else {vars.hoverx=x; vars.hovery=y; if (small) {vars.smallmen=2;} else {vars.smallmen=1;}};
var oddisp=tts.charAt(2); var rank=tts.charAt(6);

var xy=['C',x,y]; var id='C-'+x+'-'+y; if (small||villagedata[id]) {var text=[]; var curtime=new Date().getTime()/1000+serversettings.time; var n=number; var d=datetime; var pld=false;
text.push('<table cellpadding="1" cellspacing="1" class="t100 ttt">');

if (!small) {var vid=villagedata[id]; villageid=vid[0];
if (tts.charAt(1)!='1') {var arr=[]; var list=draw.churchlist; var l=list.length; var cla=draw.churchlistadd;
for(var i=0;i<l;i++) {
if (Math.ceil(Math.sqrt(Math.pow(xy[1]-list[i][0],2)+Math.pow(xy[2]-list[i][1],2)))<=list[i][4]) {arr.push(cla(list[i],1,0,id));}}
if (arr.length) {text.push('<tr><td class="circles">',arr.join(''),'</tr></td>');}}

text.push('<tr><td><div>');
if (note[id]) {text.push('<div class="noteicon"></div>');}
text.push('<b>',vid[3],'</b> (',xy[1],'|',xy[2],') K',fetch.k(x,y));
if (vid[5]!='0'&&vid[5]!='') {text.push('<br />',lang.bonus[serversettings.bonus][vid[5]]);};
text.push('<br />Points: ',n(vid[2]));
if (vid[4]!='0'&&vid[4]!=''&&(curtime-vid[4])<=345600) {text.push('<br />Conquered ',d(curtime-vid[4], 1),' ago from ',vid[6]);}
var not,l;
if (note[id]) {not=note[id]; l=not.length; for(var i in not) {if (not[i][0]!='') {text.push('</div></td></tr><tr><td><div class="notedesc">',not[i][0],'</div>');}}}
text.push('</div></td></tr>'); var player=vid[1];} else {var player=y;}

if (player!='0'&&player!='') {playerid=player; if (playerdata[player]) {pld=playerdata[player];
text.push('<tr><td><div>');
if (note['P-'+player]) {text.push('<div class="noteicon"></div>');}
text.push('<b>'); if (pld[5]>curtime-serversettings.protection*86400) {text.push('Beginner protection for ',d(pld[5]-((curtime-serversettings.protection*86400)), 1),'</b><br /><b>');}
text.push(pld[2],'</b>: Points: ',n(pld[0]),', Villages: ',pld[3]);
if (rank!='1'&&rank!='3') {text.push(', Rank: ',n(pld[8]));}

if (oddisp!=3&&oddisp!=2) {text.push('<br />ODA: ',n(pld[9]));
if (rank!='1'&&rank!='3') {text.push(', Rank: ',n(pld[11]));}
text.push(', ODD: ',n(pld[10]));
if (rank!='1'&&rank!='3') {text.push(', Rank: ',n(pld[12]));}}

if (tts.charAt(4)!='1') {text.push('<br />Last activity: ',d(curtime-Math.max(pld[4],pld[6])),', Points: ');
if (pld[4]!='0'&&pld[4]!='') {text.push(d(curtime-pld[4]));} else {text.push('?');}; text.push(', ODA: '); if (pld[6]!='0'&&pld[6]!='') {text.push(d(curtime-pld[6]));} else {text.push('?');}; text.push(', ODD: '); if (pld[7]!='0'&&pld[7]!='') {text.push(d(curtime-pld[7]));} else {text.push('?');}};
if (note['P-'+player]) {not=note['P-'+player]; l=not.length; for(var i in not) {if (not[i][0]!='') {text.push('</div></td></tr><tr><td><div class="notedesc">',not[i][0],'</div>');}}}
text.push('</div></td></tr>'); var tribe=pld[1];} else {var tribe=false;}} else {var tribe=false;}; if (!tribe&&small) {tribe=x;}

if (tribe!='0'&&tribe!='') {tribeid=tribe; if (tribedata[tribe]) {var trd=tribedata[tribe];
text.push('<tr><td><div>');
if (note['T-'+tribe]) {text.push('<div class="noteicon"></div>');}
if (tts.charAt(7)=='1') {text.push('<b>',trd[2],'</b> [<b>',trd[9],'</b>]');}
else if (tts.charAt(7)=='2') {text.push('<b>',trd[9],'</b>');}
else {text.push('<b>',trd[2],'</b>');}
text.push(': Points: ',n(trd[3]),', Members: ',trd[1]);
if (rank!='2'&&rank!='3') {text.push(', Rank: ',n(trd[4]));};
if (tts.charAt(5)!='1') {text.push('<br />Total points: ',n(trd[0]),', Avg points: ',n(Math.round(trd[0]/trd[1])));}

if (oddisp!=3&&oddisp!=1) {text.push('<br />ODA: ',n(trd[5]));
if (rank!='2'&&rank!='3') {text.push(', Rank: ',n(trd[7]));}
text.push(', ODD: ',n(trd[6]));
if (rank!='2'&&rank!='3') {text.push(', Rank: ',n(trd[8]));}}

if (note['T-'+tribe]) {not=note['T-'+tribe]; l=not.length; for(var i in not) {if (not[i][0]!='') {text.push('</div></td></tr><tr><td><div class="notedesc">',not[i][0],'</div>');}}}
text.push('</div></td></tr>');}}

if (!small&&tts.charAt(3)!='1') {if (pld) {if (vars.player) {if (serversettings.morale=='2'&&pld[5]!='0'&&pld[5]!='') {var n = Math.min((pld[0]/vars.player)*3+Math.min(0.25+((curtime-pld[5])/43200000), 0.5), 1);
text.push('<tr><td><div>Morale: ',Math.round(n*100),'%</div></td></tr>');}
else if (serversettings.morale=='1') {var n = Math.min((pld[0]/vars.player)*3+0.3, 1);
text.push('<tr><td><div>Morale: ',Math.round(n*100),'%</div></td></tr>');}}}
else {if (vars.player&&(serversettings.morale=='2'||serversettings.morale=='1')) {text.push('<tr><td><div>Morale: 100%</div></td></tr>');};
text.push('<tr><td class="ca"><div><b>Abandoned</b></div></td></tr>');}}

text.push('</table>'); vars.tooltipvars=[villageid,playerid,tribeid];
if (small&&text.length==2) {return 'No player/tribe info.';}
return text.join('');}
else if (vars.none[id]) {return 'No village at this coordinate ('+xy[1]+'|'+xy[2]+') K'+fetch.k(x,y)+'.';}
else {return 'No village info ('+xy[1]+'|'+xy[2]+') K'+fetch.k(x,y)+'.';}}

function generatemap() {var curtime=new Date().getTime()/1000+serversettings.time; var protime=Math.round(curtime-serversettings.protection*86400); var vilid=''; var vild=''; var vcla=''; var curfil=false; if (data.filtert=='yes') {curfil=true; var check=filter.check;}; var cl=[]; var ct=''; var prop=0; var cpr=false; var filtered=true; var vilda=villagedata; var playda=playerdata; var prop=props; var hasplay=false; var cols=vars.mapcols; var vilcol=cols[10]; var abcol=cols[12]; var tmpv='';

var func='';
if (data.mode=='activity') {var col1=hex2rgb(cols[8]); var col2=hex2rgb(cols[9]); var col3=hex2rgb(vilcol);
var rb=col2[0]*1; var radd=(col1[0]-col2[0])/0.71; var gb=col2[1]*1; var gadd=(col1[1]-col2[1])/0.71; var bb=col2[2]*1; var badd=(col1[2]-col2[2])/0.71;
var rb2=col3[0]*1; var radd2=(col2[0]-col3[0])/0.29; var gb2=col3[1]*1; var gadd2=(col2[1]-col3[1])/0.29; var bb2=col3[2]*1; var badd2=(col2[2]-col3[2])/0.29; var th=toHex;

func=function (b, v) {if (v[1]!='0'&&v[1]!=''&&playda[v[1]]) {var p=curtime-Math.max(playda[v[1]][4],playda[v[1]][6]);
if (p>=604800) {return '" style="background-color:#'+cols[8];}
else if (p>=172800) {per=p/604800-0.29; return '" style="background-color:rgb('+Math.round(rb+radd*per)+','+Math.round(gb+gadd*per)+','+Math.round(bb+badd*per)+')';}
else if (p>=7200) {per=p/604800; return '" style="background-color:rgb('+Math.round(rb2+radd2*per)+','+Math.round(gb2+gadd2*per)+','+Math.round(bb2+badd2*per)+')';}};
return '';}}
else if (data.mode=='points') {var minpoints=serversettings.pointsmin; var maxpoints=serversettings.pointsmax; if (data.spoints) {var f=data.spoints.split('-'); if (is_num(f[0])&&is_num(f[1])&&f[0]<=f[1]) {minpoints=f[0]; maxpoints=f[1];}};
var col1=hex2rgb(cols[14]); var col2=hex2rgb(cols[15]); var rb=col1[0]*1; var radd=(col2[0]-col1[0]); var gb=col1[1]*1; var gadd=(col2[1]-col1[1]); var bb=col1[2]*1; var badd=(col2[2]-col1[2]); var th=toHex;

func=function (b, v) {if (v[1]!='0'&&v[1]!=''&&v[1]&&playda[v[1]]&&playda[v[1]][0]) {var points=playda[v[1]][0];
if (points<=minpoints) {return '" style="background-color:#'+cols[14];}
else if (points>maxpoints) {return '" style="background-color:#'+cols[15];}
else {var per=(points-minpoints)/maxpoints; return '" style="background-color:rgb('+Math.round(rb+radd*per)+','+Math.round(gb+gadd*per)+','+Math.round(bb+badd*per)+')';}}
else {return '';}}}
else if (data.mode=='conquer'||data.mode=='growth'||data.mode=='defend'||data.mode=='attack') {var a=2;
if (data.mode=='conquer') {a=0;} else if (data.mode=='growth') {a=1;} else if (data.mode=='defend') {a=3;}
var col1=hex2rgb(cols[8]); var col2=hex2rgb(cols[9]); var col3=hex2rgb(vilcol);
var rb=col2[0]*1; var radd=(col1[0]-col2[0])/0.75; var gb=col2[1]*1; var gadd=(col1[1]-col2[1])/0.75; var bb=col2[2]*1; var badd=(col1[2]-col2[2])/0.75;
var rb2=col2[0]*1; var radd2=(col3[0]-col2[0])/0.25; var gb2=col2[1]*1; var gadd2=(col3[1]-col2[1])/0.25; var bb2=col2[2]*1; var badd2=(col3[2]-col2[2])/0.25; var th=toHex;

func=function (b, v) {
if (a) {if (v[1]!='0'&&v[1]!=''&&playda[v[1]]&&playda[v[1]][4]) {if (a==3) {var p=curtime-playda[v[1]][7];} else if (a==2) {var p=curtime-playda[v[1]][6];} else {var p=curtime-playda[v[1]][4];}} else {var p=0;}}
else if (v[4]!='0'&&v[4]!='') {var p=curtime-v[4];} else {var p=0;}
if (p&&p<338400) {if (p<259200) {var per=0.75-p/345600; return '" style="background-color: rgb('+Math.round(rb+radd*per)+','+Math.round(gb+gadd*per)+','+Math.round(bb+badd*per)+')';}
else {var per=p/345600-0.75; return '" style="background-color: rgb('+Math.round(rb2+radd2*per)+','+Math.round(gb2+gadd2*per)+','+Math.round(bb2+badd2*per)+')';}}
return '';}}
else if (data.mode=='tribe') {
func=function (b, v) {if (v[1]!='0'&&v[1]!=''&&playda[v[1]]&&playda[v[1]][1]==0) {return '" style="background-color: #'+cols[16];}
return '';}}
else {var bp=backpos; var vad=vars.villageid; var villages=vars.villages2; var vpl=vars.players; var vtr=vars.tribes;
var height=vars.iconheight; vilcol=cols[0]; abcol=cols[2];
func=function (b, v) {
if (villages[b]) {var r = '" style="background-color:#'+villages[b]; if (v[1]==0||v[1]=='') {r+=';background-position:'+bp(v[2])+'px -'+(height*(v[5]!='0'?5:3))+'px';}; return r;}
else {if (vpl[v[1]]) {return '" style="background-color:#'+vpl[v[1]];}
else if (playda[v[1]]&&vtr[playda[v[1]][1]]) {return '" style="background-color:#'+vtr[playda[v[1]][1]];}}
return '';}}

var hregex=/99$|^\-1$|\-[0-9]{0,}101$/;
var lregex=/[49]$/; var lregex2=/[16]$/;
var table=[];

var max2 = data.xcord*1+Math.ceil(data.width/2); draw.xd=max2; var count2 = data.xcord-Math.floor(data.width/2); draw.xs=count2; var max = data.ycord*1+Math.ceil(data.height/2); draw.yd=max; var count = data.ycord-Math.floor(data.height/2); draw.ys=count;
var m = data.mainvillage.split('-'); var url = vars.serverpage+'screen=info_village&id='; var doeshigh=false; if (data.markers=='1') {doeshigh=true; markers.curplayer={}; markers.highplayerlist={}; markers.curp=0;}; var showp=true; if (data.props=='no') {showp=false;}; var playd=playerdata; vars.viltd=[]; var viltd=vars.viltd;

table.push('<table cellpadding="0" cellspacing="0"><tbody><tr><td class="tl" onclick="display.help()"><div id="himg"></div></td>');
for(var xnow=count2;xnow<max2;xnow++) {if (xnow!=max2-1) {if ((xnow>0&&lregex.test(xnow))||(xnow<0&&lregex2.test(xnow))) {if (hregex.test(xnow)) {cl[xnow]=' bl';} else {cl[xnow]=' sl';}} else {cl[xnow]='';}} else {cl[xnow]='';}
table.push('<td class="t"><div>',xnow,'</div></td>');};
table.push('</tr>');

for(var ynow=count;ynow<max;ynow++) {if (ynow!=max-1) {if ((ynow>0&&lregex.test(ynow))||(ynow<0&&lregex2.test(ynow))) {if (hregex.test(ynow)) {ct=' bt';} else {ct=' st';}} else {ct='';}} else {ct='';}
table.push('<tr><td class="l"><div>',ynow,'</div></td>');

for(var xnow=count2;xnow<max2;xnow++) {
vilid='C-'+xnow+'-'+ynow; if (curfil) {if (vilda[vilid]) {filtered=check(vilid);} else {filtered=true;}}; if (vilda[vilid]&&filtered) {
vild=vilda[vilid]; tmpv=func(vilid, vild); if (vild[1]!='0'&&vild[1]!='') {hasplay=true; if (tmpv=='') {tmpv='" style="background-color:#'+vilcol;}} else {hasplay=false;};
viltd.push(vilid); table.push('<td id="',vilid,tmpv,'" onmouseover="show(tooltiptext(\'',xnow,'\',\'',ynow,'\'));'); 
if (doeshigh&&hasplay) {if (markers.highplayerlist[vild[1]]) {markers.highplayerlist[vild[1]].push(vilid);} else {markers.highplayerlist[vild[1]]=[vilid];}};
if (hasplay) {table.push('markers.show(\'',vild[1],'\');');}; table.push('" onmouseout="msu();'); if (hasplay) {table.push('markers.restore(\'',vild[1],'\');');}
table.push('" class="');
if (vild[2]>10999) {vcla='f';} else if (vild[2]>8999) {vcla='e';} else if (vild[2]>2999) {vcla='d';} else if (vild[2]>999) {vcla='c';} else if (vild[2]>299) {vcla='b';} else {vcla='a';};
if (vild[5]!='0') {if (!hasplay) {vcla+='qss';} else {vcla+='s';}} else if (!hasplay) {vcla+='q';}
if (hasplay&&playda[vild[1]]&&playda[vild[1]][5]&&playda[vild[1]][5]>protime) {vcla+=' p';} else if (vild[4]!='0'&&vild[4]!=''&&(curtime-vild[4]<86400)) {vcla+=' n';}
table.push(vcla,ct,cl[xnow],'"><a href="',url,vild[0],'" onclick="showmen(\'',xnow,'\',\'',ynow,'\', event); return false;" oncontextmenu="if (data.rightclick==\'1\') {return false;}" target="_blank">');
if (marker.list[vilid]) {table.push('<img class="mark" id="mark-',xnow,'-',ynow,'" src="img/trans.gif" alt="" />');}
table.push('</a></td>');}
else {if (showp) {cpr=prop[vilid];}

table.push('<td class="'); if (cpr) {table.push('t',cpr,' ');}; table.push(cl[xnow],ct,'">&nbsp;</td>');}
}; table.push('</tr>');}
table.push('<tr><td class="bb" colspan="',data.width*1+1,'" valign="middle"><div id="load"></div></td></tr></tbody></table>');
$('mtb').innerHTML=table.join('');}

var mainvillage={'place':function() {var m = data.mainvillage.split('-'); if (m[1]&&m[1]!='0'&&m[1]!=''&&playerdata[m[1]]) {vars.player=playerdata[m[1]][0];} else {vars.player=0;}; if (m[0]&&m[0]!='0'&&m[0]!=''&&vars.villageid[m[0]]&&$(vars.villageid[m[0]])) {$(vars.villageid[m[0]]).firstChild.appendChild($('mainv')); $S('mainv').display='';} else {$S('mainv').display='none';};},
'url':function() {var url=vars.serverpage+'screen=info_village&id=';
var list=vars.viltd; var l = list.length; var vild=villagedata; for(var i=0;i<l;i++) {if (vild[list[i]]) {$(list[i]).firstChild.href=url+vild[list[i]][0];}}
list=vars.villages; for(var i in list) {if ($('village-'+i)) {$('village-'+i).firstChild.firstChild.childNodes[1].firstChild.firstChild.href=url+i;}}
list=marker.list; for(var i in list) {if ($('marker-'+i)&&vild[i]) {$('marker-'+i).firstChild.firstChild.firstChild.firstChild.firstChild.href=url+vild[i][0];}}
list=data.lines.split('-'); l=list.length;
for(var i=0;i<l;i=i+6) {if ($('line-'+list[i]+'-'+list[i+1]+'-'+list[i+2]+'-'+list[i+3])) {
if (vild['C-'+list[i]+'-'+list[i+1]]) {$('line-'+list[i]+'-'+list[i+1]+'-'+list[i+2]+'-'+list[i+3]).firstChild.firstChild.childNodes[1].firstChild.firstChild.href=url+vild['C-'+list[i]+'-'+list[i+1]][0];}
if (vild['C-'+list[i+2]+'-'+list[i+3]]) {$('line-'+list[i]+'-'+list[i+1]+'-'+list[i+2]+'-'+list[i+3]).firstChild.firstChild.childNodes[1].firstChild.childNodes[2].href=url+vild['C-'+list[i+2]+'-'+list[i+3]][0];}}}
list=data.church.split('-'); l=list.length;
for(var i=0;i<l;i=i+5) {if ($('church-'+list[i]+'-'+list[i+1])&&vild['C-'+list[i]+'-'+list[i+1]]) {$('church-'+list[i]+'-'+list[i+1]).firstChild.firstChild.childNodes[1].firstChild.firstChild.href=url+vild['C-'+list[i]+'-'+list[i+1]][0];}}
if (is_num(data.xstart)&&is_num(data.ystart)&&vild['C-'+data.xstart+'-'+data.ystart]&&$('startloc')) {$('startloc').firstChild.href=url+vild['C-'+data.xstart+'-'+data.ystart][0];}
if (is_num(data.xdest)&&is_num(data.ydest)&&vild['C-'+data.xdest+'-'+data.ydest]&&$('destloc')) {$('destloc').firstChild.href=url+vild['C-'+data.xdest+'-'+data.ydest][0];}

url=vars.serverpage; var el=''; var t=[]; list=note;
for(var i in list) {if ($('note-'+i)) {t=i.split('-'); el=$('note-'+i).firstChild.firstChild.firstChild.firstChild;
if (t[0]=='P') {el.href=url+'screen=info_player&id='+t[1];}
else if (t[0]=='T') {el.href=url+'screen=info_ally&id='+t[1];}
else if (vild['C-'+t[1]+'-'+t[2]]) {el.href=url+'screen=info_village&id='+vild['C-'+t[1]+'-'+t[2]][0];}
}}

url=vars.serverpage+'screen=info_ally&id=';
list=vars.tribes; for(var i in list) {if ($('tribe-'+i)) {$('tribe-'+i).firstChild.firstChild.childNodes[1].firstChild.firstChild.href=url+i;}}
url=vars.serverpage+'screen=info_player&id=';
list=vars.players; for(var i in list) {if ($('player-'+i)) {$('player-'+i).firstChild.firstChild.childNodes[1].firstChild.firstChild.href=url+i;}}
},
'unset':function() {Close(); data.mainvillage=''; save(); $('mainvil').innerHTML='none'; mainvillage.init(); mainvillage.place(); mainvillage.url();},
'set':function(id,ig) {if (vars.villageid[id]&&villagedata[vars.villageid[id]]) {if (!ig) {Close();}; var player = villagedata[vars.villageid[id]][1];
if (id+'-'+player!=data.mainvillage) {var s=data.mainvillage.split('-'); data.mainvillage=id+'-'+player; save();
mainvillage.init(); mainvillage.place(); mainvillage.url(); if (!s[1]||s[1]!=player) {villagelist.fetch(0, player);}}} else {alert('Village data missing, cannot set main.');}},
'init':function() {var m=data.mainvillage.split('-');
if (m[0]&&m[0]!='0'&&m[0]!='') {vars.serverpage=vars.serverurl+'game.php?village='+m[0]+'&';
if (vars.villageid[m[0]]) {var xy = vars.villageid[m[0]].split('-');
$('mainvil').innerHTML='<a href="javascript:;" onclick="showmen(\''+xy[1]+'\',\''+xy[2]+'\',event,2,0,0,\''+m[1]+'\'); return false;" oncontextmenu="if (data.rightclick==\'1\') {return false;}" onmouseover="show(tooltiptext(\''+xy[1]+'\',\''+xy[2]+'\'));" onmouseout="msu();">'+fetch.village[0](vars.villageid[m[0]])+'</a>';}
else {$('mainvil').innerHTML='<a href="javascript: villagelist.show(\''+m[1]+'\',\'main\',0,\'\');">No village info</a>';}}
else {vars.serverpage=vars.serverurl+'page.php?page=inbound&';}},
'center':function () {var id = data.mainvillage.split('-')[0]; if (!id) {alert('Cannot center on main village. Main village not set.');} else if (!vars.villageid[id]) {alert('Cannot center on main village. Main village is not loaded. It is possible the main village does not exist anymore or is missing from the database. Reloading/refreshing the page might fix this issue.');} else {var xy = vars.villageid[id].split('-'); mov(xy[1],xy[2]);}}}

var worldMap={'options':function() {if (cancelcol()) {var twstatspart = '';
if (data.lighttribes) {var tr = data.lighttribes.split('-'); l = tr.length; for(var i=0;i<l;i+=2) {if (tr[i]!=''&&tr[i+1]!='') {
twstatspart+='&tribe_'+Math.round(i/2)+'_id='+tr[i]+'&tribe_'+Math.round(i/2)+'_colour='+tr[i+1];}}}
if (data.lightplayers) {var pl = data.lightplayers.split('-'); l = pl.length; for(var i=0;i<l;i+=2) {if (pl[i]!=''&&pl[i+1]!='') {
twstatspart+='&player_'+Math.round(i/2)+'_id='+pl[i]+'&player_'+Math.round(i/2)+'_colour='+pl[i+1];}}}
if (data.lightvillages) {var vl = data.lightvillages.split('-'); l = vl.length; for(var i=0;i<l;i+=2) {if (vl[i]!=''&&vl[i+1]!='') {
twstatspart+='&village_'+Math.round(i/2)+'_id='+vl[i]+'&village_'+Math.round(i/2)+'_colour='+vl[i+1];}}}
var twstatsurl = 'http://'+serversettings.twstatsdomain+'/'+serversettings.prefix+data.server+'/index.php?page=map'+twstatspart+'&zoom=100&centrex=500&centrey=500&grid=1';
if (vars.ie67&&twstatsurl.length>2024) {twstatsurl=twstatsurl.substring(0,2024);}

textbox.menu('World map', ['<a href="javascript: worldMap.choice(\'Highlights\', \'',twstatsurl,'\', \'<br />world map with your current highlights\');" onmouseover="show(\'Generate a world map with your current highlights.\',1);" onmouseout="msu();">Highlights</a><br />\
<a href="javascript: worldMap.top();" onmouseover="show(\'Generate a world map of the top players/tribes.<br />You can define the number of players/tribes next.\',1);" onmouseout="msu();">Top #</a>'].join(''), 't100 ie');}},

'top':function() {
textbox.menu('World map', ['Top #',vars.borderright,vars.spacer,vars.borderleft,'<form action="javascript:;" onsubmit="worldMap.fetch($(\'playertop\').value, $(\'tribetop\').value);">\
# of players: <input id="playertop" type="text" class="oi" value="0" maxlength="3" onkeydown="return submitenter(this, event);" /><br />\
# of tribes: <input id="tribetop" type="text" class="oi" value="10" maxlength="3" onkeydown="return submitenter(this, event);" /><br />\
<input type="submit" class="gbut" value="" /></form>'].join(''), 't100 ie');},

'fetch':function(playertop, tribetop) {if (cancelcol()) {if (is_num(playertop)&&is_num(tribetop)) {
var title='Top '+playertop+' players, '+tribetop+' tribes'; var title2=title+vars.borderright+vars.spacer+vars.borderleft;
textbox.menu('World Map', title2+'<div>Generating world map link. Please wait...</div>', 't100 ie');
vars.change='worldmaptop';
jQuery.ajax({'url':'more.php?type=top&playertop='+playertop+'&tribetop='+tribetop+'&ms='+new Date().getTime(),
'success':function(links) {if (vars.change=='worldmaptop') {worldMap.choice(title, links['twstats'], ' world map<br />with the top '+playertop+' players and top '+tribetop+' tribes highlighted');}},
'error':function(ds, err, errt) {if (vars.change=='worldmaptop') {textbox.menu('World Map', title2+'<div>Could not generate world map links. <a href="javascript: worldMap.fetch(\''+playertop+'\',\''+tribetop+'\');">Retry</a></div>', 't100 ie');}},
'dataType':'json'});} else {alert('# of players and # of tribes must be numbers');}}},

'choice':function(title, twstatsurl, extratext) {
textbox.menu('World Map', [title,vars.borderright,vars.spacer,vars.borderleft,'<a class="spl" href="',twstatsurl,'" target="_blank" onmouseover="show(\'Open a new tab/window to TW Stats\\\'',extratext,'.\',1);" onmouseout="msu();" onclick="Close()">TW Stats</a>'].join(''), 't100 ie');}}

function more() {if (cancelcol()) {textbox.menu('More', ['Features\
<a class="spl" href="javascript: worldMap.options();" onmouseover="show(\'Open a menu to generate world<br />maps using your current highlighting.\',1);" onmouseout="msu();">World Map</a>\
<a class="spl" href="javascript: minimapLink();" onmouseover="show(\'Generate a link to your minimap<br />which you can share and embed.\',1);" onmouseout="msu();">Minimap link</a>\
<a class="spl" href="',vars.moveurl(data.xcord,data.ycord),'" target="_blank" onmouseover="show(\'Reload the current coordinate<br />with new data from the server.\',1);" onmouseout="msu();" onclick="mov(',data.xcord,',',data.ycord,',1); return false;">Reload/update map</a>\
<a class="spl" href="javascript: linkToConfiguration();" onmouseover="show(\'Generate a link you can use to share your<br />configuration with other players/computers.\',1);" onmouseout="msu();">Link to configuration</a>\
<a class="spl" href="javascript: publicConfiguration();" onmouseover="show(\'Generate a link to a new blank public configuration.<br />Anyone can edit this configuration using this link.\',1);" onmouseout="msu();">Public configuration</a>',vars.borderright,vars.spacer,vars.borderleft,'\
Other<br />\
<a class="spl" href="javascript: display.help();" onmouseover="show(\'Contact info and help.\',1);" onmouseout="msu();" onclick="Close()">Help</a>\
<a class="spl" href="http://www.',serversettings.domain,serversettings.folder,'" target="_blank" onmouseover="show(\'Tribal Wars Map\\\'s homepage with various<br />links and information about Tribal Wars Map.\',1);" onmouseout="msu();" onclick="Close()">Home</a>\
<a class="spl" href="javascript: toggle(\'adds\');" onmouseover="show(\'Important news and info (automatically<br />displayed when the map loads).\',1);" onmouseout="msu();" onclick="Close()">Messages</a>\
<a class="spl" href="changelog.html" target="_blank" onmouseover="show(\'The changelog detailing additions and<br />changes made to the tool in the past.\',1);" onmouseout="msu();" onclick="Close()">Changelog</a>\
<a class="spl" href="http://www.',serversettings.domain,serversettings.folder,'traveltimes" target="_blank" onmouseover="show(\'Calculate Travel Times/Distance<br />using a standalone client.\',1);" onmouseout="msu();" onclick="Close()">Travel Times</a><a class="spl" href="history" target="_blank" onmouseover="show(\'Historical data, comparisons and<br />performance ratings for a tribe\\\'s members.\',1);" onmouseout="msu();">Historical data</a>'].join(''), 't100 ie');}}


function linkToConfiguration() {if (cancelcol()) {vars.change='linktoconfiguration';
textbox.menu('Link to configuration', '<div>Generating a link to your configuration. Please wait...</div>', 't100 ie');

jQuery.ajax({'url':'more.php?type=link&ms='+new Date().getTime(),
'data':'oldid='+encode(userid)+'&settings='+minsets()+'&defx='+data.xcord+'&defy='+data.ycord,
'success':function(text) {if (vars.change=='linktoconfiguration'&&text) {textbox.link('Link to configuration', 'Using this link you can access a copy of the current configuration, this is useful to share your configuration with other players/computers.', 'http://'+serversettings.prefix+data.server+'.'+serversettings.domain+serversettings.folder+encode(text));}},
'error':function() {if (vars.change=='linktoconfiguration') {textbox.menu('Link to configuration', '<div>Could not generate a link to your configuration. <a href="javascript: linkToConfiguration();">Retry</a></div>', 't100 ie');}},
'type':'post'});
}}

function publicConfiguration() {if (cancelcol()) {vars.change='publicconfiguration';
textbox.menu('Public configuration', '<div>Creating a new public configuration. Please wait...</div>', 't100 ie');

jQuery.ajax({'url':'more.php?type=public&ms='+new Date().getTime(),
'success':function(text) {if (vars.change=='publicconfiguration'&&text) {textbox.link('Public configuration', 'This link can be used to access a (new blank) public configuration. You can share and use this link to acccess edit its configuration, this is useful when cookies are disabled or to use a single configuration accross several players/computers.', 'http://'+serversettings.prefix+data.server+'.'+serversettings.domain+serversettings.folder+'public:'+encode(text));}},
'error':function() {if (vars.change=='publicconfiguration') {textbox.menu('Public configuration', '<div>Could not create a new public configuration. <a href="javascript: publicConfiguration();">Retry</a></div>', 't100 ie');}}});
}}

function minimapLink() {if (cancelcol()) {vars.change='minimaplink';
textbox.menu('Minimap link', '<div>Generating a link to your minimap. Please wait...</div>', 't100 ie');

var highlights='__'; if (!/^activity|points|conquer|attack|defend|growth|tribe$/.test(data.mode)||data.filtert=='yes') {highlights=data.lighttribes+'_'+data.lightplayers+'_'+data.lightvillages;}

jQuery.ajax({'url':'more.php?type=minimap&ms='+new Date().getTime(),
'data':'settings='+encode(data.xcord+'_'+data.ycord+'_'+data.mode+'_'+(data.map=='yes'?vars.mapx:data.minimapx)+'_'+(data.map=='yes'?vars.mapy:data.minimapy)+'_'+(data.filtert=='yes'?data.filter:'')+'_'+data.minsize+'_'+highlights+'_'+(data.lt!='1'?data.lines:'')+'_'+(data.ct!='1'?data.church:'')+'__'+(data.mode=='points'?data.spoints:'')+'_'+data.ctop+'_'+mincolsets()),
'success':function(text) {if (vars.change=='minimaplink'&&text) {var link='http://'+serversettings.prefix+data.server+'.'+serversettings.domain+serversettings.folder+'minimap/'+encode(text);
textbox.link('Minimap link', '<a href="'+link+'" target="_blank"><img src="'+link+'" alt="Minimap" /></a>', link, 1);}},
'error':function() {if (vars.change=='minimaplink') {textbox.menu('Minimap link', '<div>Could not generate a link to your minimap. <a href="javascript: minimapLink();">Retry</a></div>', 't100 ie');}},
'type':'post'});
}}

var hotkeyfunction={'lastsave':[0,0],
'rightclick':function() {if (vars.browser=='Opera') {alert('If you wish to use this feature in Opera, go to:\n"Tools"->"Quick Preferences"->"Edit Site Preferences"\nOr press F12 and then D for Hotkey access.\nThen go to the "Scripting" tab and check:\n"Allow script to receive right clicks"\nThis does not allow the tool to cancel the default action, which shows your context menu. For full right click support you\'ll need to use a different browser.');}
var ch=toggleCheckbox('rightclick', 'rightclickcheck',0,'1'); if (ch) {data.rightclick='';} else {data.rightclick='1';}; save(); settings('hotkeys');},
'save':function(kCode,act,chec,spec) {
if (chec&&!spec) {if (confirm('Please select the village, player or tribe the action will be performed on when the hotkey is pressed. To do so click any village, player or tribe name, village on the map or village on the minimap. You can also use the search to find the correct village, player or tribe.')) {hotkeyfunction.lastsave=[kCode,act]; Close(); vars.hotkeycreate=[kCode,act];}}
else {if (!hotkeylist[kCode]||confirm('This hotkey already exists. Do you want to overwrite it?')) {var hotkeyn='New hotkey created';
if (!spec) {spec=['',''];} else {kCode=hotkeyfunction.lastsave[0]; act=hotkeyfunction.lastsave[1];
if (act=='1'||act=='i'||act=='v'||act=='w'||act=='x'||act=='c') {if (!vars.tooltipvars[0]) {alert('Not a valid village.'); return false;} else {spec=['C',vars.tooltipvars[0]]; hotkeyn+=' for '+fetch.village[0](vars.villageid[vars.tooltipvars[0]]);}};
if (act=='m') {if (!vars.tooltipvars[0]||!vars.tooltipvars[1]) {alert('Not a valid main village.'); return false;} else {spec=['C',vars.tooltipvars[0]]; hotkeyn+=' for '+fetch.village[0](vars.villageid[vars.tooltipvars[0]]);}};
if (act=='p') {if (!vars.tooltipvars[1]) {alert('Not a valid player.'); return false;} else {spec=['P',vars.tooltipvars[1]]; hotkeyn+=' for '+fetch.player[0](vars.tooltipvars[1]);}};
if (act=='t'||act=='u') {if (!vars.tooltipvars[2]) {alert('Not a valid tribe.'); return false;} else {spec=['T',vars.tooltipvars[2]]; hotkeyn+=' for '+fetch.tribe[0](vars.tooltipvars[2]);}}}
hotkeylist[kCode]=[act,spec[0],spec[1]]; vars.hotkeycreate=false; hotkeyfunction.build();}; settings('hotkeys',0,0,0,0,0,hotkeyn);}},
'dropdown':function(def,number,spec) {if (spec==2) {return '<select id="newhotkeyaction">\
<optgroup label="Move map">\
<option value="mu">Move map up\
<option value="ml">Move map left\
<option value="md">Move map down\
<option value="mr">Move map right\
</optgroup>\
<optgroup label="Toggle window">\
<option value="sh">Toggle Search window\
<option value="hs">Toggle Highlights window\
<option value="ms">Toggle Markers window\
<option value="ls">Toggle Lines window\
<option value="cs">Toggle Circles window\
<option value="ns">Toggle Notes window\
<option value="ts">Toggle Travel times window\
</optgroup>\
<optgroup label="Others">\
<option value="tt">Show/hide tooltips\
<option value="tl">Display/hide lines\
<option value="tc">Display/hide circles\
<option value="tm">Show/hide minimap map overlay\
<option value="cl">Close menu\
<option value="he">Highlight mode\
<option value="fltr">Filter on/off\
<option value="com">Center map on main village\
<option value="cos">Center map on start\
<option value="cod">Center map on destination\
</optgroup>\
</select>';}
else if (spec==3) {return ['<select id="newhotkeyaction">\
<option value="1">Menu</option>\
<option value="i">Tooltip info</option>\
<option value="v">Village page</option>\
<option value="m">Set main</option>\
<option value="p">Player page</option>\
<option value="t">Tribe page</option>\
<option value="u">Historical data</option>\
<option value="w">Set start</option>\
<option value="x">Set destination</option>\
<option value="c">Center map</option>\
</select>'].join('');}
else {var c=data.menu.charAt(number); if (!/^[1vhpjtkmacibnwxqu]{1}$/.test(c)) {c=def;};
return ['<select ',(spec?'id="newhotkeyaction"':'onchange="changeclicksetting('+number+', this.value);"'),spec==4?' disabled="disabled"':'','>\
<option value="1"',(c=='1'?' selected="selected"':''),'>Menu</option>\
<option value="i"',(c=='i'?' selected="selected"':''),'>Tooltip info</option>\
<option value="v"',(c=='v'?' selected="selected"':''),'>Village page</option>\
<option value="h"',(c=='h'?' selected="selected"':''),'>Highlight village</option>\
<option value="m"',(c=='m'?' selected="selected"':''),'>Set main</option>\
<option value="a"',(c=='a'?' selected="selected"':''),'>Add/delete marker</option>\
<option value="p"',(c=='p'?' selected="selected"':''),'>Player page</option>\
<option value="j"',(c=='j'?' selected="selected"':''),'>Highlight player</option>\
<option value="t"',(c=='t'?' selected="selected"':''),'>Tribe page</option>\
<option value="u"',(c=='u'?' selected="selected"':''),'>Historical data</option>\
<option value="k"',(c=='k'?' selected="selected"':''),'>Highlight tribe</option>\
<option value="q"',(c=='q'?' selected="selected"':''),'>TW Stats</option>\
<option value="b"',(c=='b'?' selected="selected"':''),'>BBcodes</option>\
<option value="n"',(c=='n'?' selected="selected"':''),'>Notes</option>\
<option value="w"',(c=='w'?' selected="selected"':''),'>Set start</option>\
<option value="x"',(c=='x'?' selected="selected"':''),'>Set destination</option>\
<option value="c"',(c=='c'?' selected="selected"':''),'>Center map</option>\
</select>'].join('');}},
'build':function() {var hotkeydata=[]; for(var i in hotkeylist) {hotkeydata.push(i,hotkeylist[i][0],hotkeylist[i][1],hotkeylist[i][2]);}; data.hotkeys=hotkeydata.join('-'); save();}}

function formsubmit() {var f=$('submitform'); f.submit(); if (f.onsubmit) {f.onsubmit();}; return false;}
function settings(tab,kCode,character,ctrl,alt,shift,err) {if (cancelcol()) {

var text=['<table cellpadding="0" cellspacing="0" class="t100 ie"><tr><td class="qtl"><div /></td><td class="qt" colspan="13"></td><td class="qtr"><div /></td></tr>\
<tr><td class="ql"></td><td class="qc h1" colspan="13"><b><u>Settings</u></b>',vars.borderright,'\
<tr><td class="qsl"></td><td class="qs"></td><td class="qspt"><div /></td><td class="qs"></td><td class="qspt"><div /></td><td class="qs"></td><td class="qspt"><div /></td><td class="qs"></td><td class="qspt"><div /></td><td class="qs"></td><td class="qspt"><div /></td><td class="qs"></td><td class="qspt"><div /></td><td class="qs"></td><td class="qsr"></td></tr>\
<tr class="setqc"><td class="ql"></td><td class="qc\
',(!/^map|minimap|points|filter|tooltips|hotkeys|newhotkey|colours$/.test(tab)?' sel"><div><b>Other</b></div>':'"><a class="spl" href="javascript: settings();" onmouseover="show(\'Toggle animations and change<br />the default coordinate.\',1);" onmouseout="msu();">Other</a>'),'\
</td><td class="qsv"></td><td class="qc\
',(tab=='map'?' sel"><div><b>Map</b></div>':'"><a class="spl" href="javascript: settings(\'map\');" onmouseover="show(\'Configure how the map is displayed<br />by changing size, icon size and more.\',1);" onmouseout="msu();">Map</a>'),'\
</td><td class="qsv"></td><td class="qc\
',(tab=='minimap'?' sel"><div><b>Minimap</b></div>':'"><a class="spl" href="javascript: settings(\'minimap\');" onmouseover="show(\'Configure how the minimap is displayed<br />by changing size, icon size and more.\',1);" onmouseout="msu();">Minimap</a>'),'\
</td><td class="qsv"></td><td class="qc\
',(tab=='filter'?' sel"><div><b>Filter</b></div>':'"><a class="spl" href="javascript: settings(\'filter\');" onmouseover="show(\'Hide villages on the map.\',1);" onmouseout="msu();">Filter</a>'),'\
</td><td class="qsv"></td><td class="qc\
',(tab=='hotkeys'?' sel"><div><b>Hotkeys</b></div>':'"><a class="spl" href="javascript: settings(\'hotkeys\');" onmouseover="show(\'Create hotkeys to quickly access<br />specific actions and reduce the<br />number of clicks required to navigate.\',1);" onmouseout="msu();">Hotkeys</a>'),'\
</td><td class="qsv"></td><td class="qc\
',(tab=='colours'?' sel"><div><b>Colours</b></div>':'"><a class="spl" href="javascript: settings(\'colours\');" onmouseover="show(\'Configure how the map and minimap<br />are highlighted and coloured.\',1);" onmouseout="msu();">Colours</a>'),'\
</td><td class="qsv"></td><td class="qc\
',(tab=='tooltips'?' sel"><div><b>Tooltip</b></div>':'"><a class="spl" href="javascript: settings(\'tooltips\');" onmouseover="show(\'Choose which data is displayed in the tooltip.\',1);" onmouseout="msu();">Tooltips</a>'),vars.borderright,'\
<tr><td class="qsl"></td><td class="qs"></td><td class="qspbm"></td><td class="qs"></td><td class="qspbm"></td><td class="qs"></td><td class="qspbm"></td><td class="qs"></td><td class="qspbm"></td><td class="qs"></td><td class="qspbm"></td><td class="qs"></td><td class="qspbm"></td><td class="qs"></td><td class="qsr"></td></tr>\
<tr><td class="ql"></td><td class="qc la h1" colspan="13"><div>',(tab=='filter'?'\
Leave a value empty to ignore it. Click save to apply changes.':(!tab?'Click one of the tabs above to choose a catagory.':(err?'<span class="red">'+err+'.</span><br />':'')+'\
Settings are applied and saved automatically.')),'</div>',vars.borderright,'\
<tr><td class="qsl"></td><td class="qs" colspan="13"></td><td class="qsr"></td></tr>\
<tr><td class="ql"></td><td class="qc" colspan="13" valign="top"><form action="javascript:;" onsubmit="',(
tab=='colours'?'changepointsmode()':(
tab=='filter'?'filter.save()':(
tab=='minimap'?'changeminimapsize()':(
tab=='map'?'changemapsize()':(
tab=='newhotkey'?'hotkeyfunction.save($(\'hotkeyn\').value,$(\'newhotkeyaction\').value,$(\'hotkeya\').checked)':'return false;'))))),';">\
<table cellpadding="1" cellspacing="1" class="ttt sets"><tr>'];

switch(tab) {
case 'filter': var f=''; if (!data.filter) {f=['','','','','','',''];} else {f=data.filter.split('-');};

text.push('<td colspan="2"><div class="point" onclick="filter.toggle();"><input type="checkbox" id="filterset" class="cb"',(data.filtert=='yes'?' checked="checked"':''),'/> Enable filter</div></td></tr></table>\
<table cellpadding="1" cellspacing="1" class="ttt sets"><tr><td colspan="2"><div class="center"><b>Filter settings</b></div></td></tr>\
<tr><td colspan="2"><div class="point" onclick="if ($(\'filterhighlight\').checked) {$(\'filterhighlight\').checked=false;} else {$(\'filterhighlight\').checked=true;}"><input onclick="if ($(\'filterhighlight\').checked) {$(\'filterhighlight\').checked=false;} else {$(\'filterhighlight\').checked=true;}" type="checkbox" id="filterhighlight" class="cb"',(f[6]=='1'?' checked="checked"':''),'/> Only display highlighted villages</div></td></tr>\
<tr><td class="d16" style="width: 50%;"><div>Minimum village points: </div><div>Maximum village points: </div></td>\
<td class="i55"><input type="text" class="oi" id="filterminpoints" value="'+f[0]+'" onkeypress="return submitenter(this, event);" /><br /><input type="text" class="oi" id="filtermaxpoints" value="'+f[1]+'" onkeypress="return submitenter(this, event);" /></td></tr>\
<tr><td class="d16" style="width: 50%;"><div>Minimum abandoned village points: </div><div>Maximum abandoned village points: </div></td>\
<td class="i55"><input type="text" class="oi" id="filterminab" value="'+f[3]+'" onkeypress="return submitenter(this, event);" /><br /><input type="text" class="oi" id="filtermaxab" value="'+f[4]+'" onkeypress="return submitenter(this, event);" /></td></tr>\
<tr><td><div>\
<select id="filterab">\
<option value=""',(f[2]!='1'&&f[2]!='2'?' selected="selected"':''),'>Ignore</option>\
<option value="1"',(f[2]=='1'?' selected="selected"':''),'>Abandoned</option>\
<option value="2"',(f[2]=='2'?' selected="selected"':''),'>Not abandoned</option>\
</select> Abandoned</div></td>\
<td><div>\
<select id="filtertr">\
<option value=""',(f[5]!='1'&&f[5]!='2'?' selected="selected"':''),'>Ignore</option>\
<option value="1"',(f[5]=='1'?' selected="selected"':''),'>Tribe</option>\
<option value="2"',(f[5]=='2'?' selected="selected"':''),'>Tribeless</option>\
</select> Tribe status</div></td>\
</div></td></tr>\
<tr><td colspan="2"><div class="center"><input type="submit" class="sbut" value="" /></div></td>'); break;
case 'map': text.push('<td style="width: 50%;"><div class="point" onclick="toggleMap();" onmouseover="show(\'Overlays the minimap over the<br />entire map  (Hotkey: CTRL+ALT+M).\',1);" onmouseout="msu();">\
<input id="togglemap" type="checkbox" class="cb" ',(data.map!='yes'?'':' checked="checked"'),'/> Show minimap map overlay</div></td>\
<td><div class="point" onclick="markers.toggle();" onmouseover="show(\'Displays an icon in the center of all a<br />player\\\'s villages on the map while your<br />mouse is over one of their villages.\',1);" onmouseout="msu();">\
<input id="markerstoggle" type="checkbox" class="cb" ',(data.markers!='1'?'':' checked="checked"'),'/> Show player markers</div></td></tr>\
<tr><td><div class="point" onclick="toggleProps();" onmouseover="show(\'Toggle scenery like forest, mountains and lakes.\',1);" onmouseout="msu();">\
<input id="toggleprops" type="checkbox" class="cb" ',(data.props!='no'?' checked="checked"':''),'/> Show scenery</div></td>\
<td><div onmouseover="show(\'Change the size of the map\\\'s icons.\',1);" onmouseout="msu();">\
<select onchange="changeiconsize(this.value);">\
<option value="minimal"',(data.iconsize=='minimal'?' selected="selected"':''),'>Minimal (0.3x)</option>\
<option value="xsmall"',(data.iconsize=='xsmall'||data.iconsize=='27'?' selected="selected"':''),'>Extra small (0.45x)</option>\
<option value="small"',(data.iconsize=='small'?' selected="selected"':''),'>Small (0.6x)</option>\
<option value=""',(data.iconsize!='small'&&data.iconsize!='xsmall'&&data.iconsize!='27'&&data.iconsize!='minimal'?' selected="selected"':''),'>Medium (1x)</option>\
</select> Icon size</div></td></tr></table>\
<table cellpadding="1" cellspacing="1" class="ttt sets"><tr><td colspan="2"><div class="center"><b>Change map size</b></div></td></tr>\
<tr><td colspan="2"><div class="la">Change the number of horizontal and vertical villages displayed by the<br />map up to a maximum of 40.000 villages at a time. Click save to apply.</div></td></tr>\
<tr><td class="d16" style="width: 50%;"><div>Number of horizontal villages:</div><div>Number of vertical villages:</div></td>\
<td><input type="text" id="mapwidth" class="oi" value="',data.width,'" maxlength="4" onkeypress="return submitenter(this, event);" /><br />\
<input type="text" id="mapheight" class="oi" value="',data.height,'" maxlength="4"  onkeypress="return submitenter(this, event);" /></td></tr>\
<tr><td colspan="2"><div class="center"><input type="submit" class="sbut" value="" /></div></td>'); break;
case 'minimap': text.push('<td style="width: 50%;"><div class="point" onclick="toggleMinimap();" onmouseover="show(\'Toggle the minimap.\',1);" onmouseout="msu();">\
<input id="toggleminimap" type="checkbox" class="cb" ',(data.minimap!='no'?' checked="checked"':''),'/> Show minimap</div></td>\
<td><div onmouseover="show(\'Change the minimap\\\'s visiblity/transparency/opacity<br />while your mouse is not over it.\',1);" onmouseout="msu();">\
<select onchange="changeminimapopacity(this.value);">\
<option value="0"',(data.mo=='0'?' selected="selected"':''),'>0%</option>\
<option value="1"',(data.mo=='1'?' selected="selected"':''),'>10%</option>\
<option value="2"',(data.mo=='2'?' selected="selected"':''),'>20%</option>\
<option value="3"',(data.mo=='3'?' selected="selected"':''),'>30%</option>\
<option value="4"',(data.mo=='4'?' selected="selected"':''),'>40%</option>\
<option value="5"',(data.mo=='5'?' selected="selected"':''),'>50%</option>\
<option value="6"',(data.mo=='6'?' selected="selected"':''),'>60%</option>\
<option value="7"',(data.mo=='7'?' selected="selected"':''),'>70%</option>\
<option value="8"',(data.mo=='8'?' selected="selected"':''),'>80%</option>\
<option value="9"',(data.mo=='9'?' selected="selected"':''),'>90%</option>\
<option value=""',(!is_num(data.mo)?' selected="selected"':''),'>100%</option>\
</select> Mouseout visibility</div></td></tr>\
<tr><td><div onmouseover="show(\'Change the minimap\\\'s position.\',1);" onmouseout="msu();">\
<select onchange="changeminimapposition(this.value);">\
<option value=""',(data.mpos!='bl'&&data.mpos!='br'?' selected="selected"':''),'>Inside bottom-right</option>\
<option value="br"',(data.mpos=='br'?' selected="selected"':''),'>Outside top-right</option>\
<option value="bl"',(data.mpos=='bl'?' selected="selected"':''),'>Outside bottom-left</option>\
</select> Position</div></td>\
<td><div onmouseover="show(\'Change the minimap\\\'s icon size.\',1);" onmouseout="msu();">\
<select onchange="changeminimapiconsize(this.value);">\
<option value="3"',(data.minsize=='3'?' selected="selected"':''),'>3</option>\
<option value=""',(data.minsize!='3'&&data.minsize!='5'?' selected="selected"':''),'>4 (default)</option>\
<option value="5"',(data.minsize=='5'?' selected="selected"':''),'>5 (TW)</option>\
</select> Icon size</div></td></tr></table>\
<table cellpadding="1" cellspacing="1" class="ttt sets"><tr><td colspan="2"><div class="center"><b>Change minimap size</b></div></td></tr>\
<tr><td colspan="2"><div class="la">Change the number of horizontal and vertical villages displayed by the<br />minimap up to a maximum of 40.000 villages at a time. Click save to apply.</div></td></tr>\
<tr><td class="d16" style="width: 50%;"><div>Number of horizontal villages:</div><div>Number of vertical villages:</div></td>\
<td><input type="text" id="minimapwidth" class="oi" value="',data.minimapx,'" maxlength="4" onkeypress="return submitenter(this, event);" /><br />\
<input type="text" id="minimapheight" class="oi" value="',data.minimapy,'" maxlength="4"  onkeypress="return submitenter(this, event);" /></form></td></tr>\
<tr><td colspan="2"><div class="center"><input type="submit" class="sbut" value="" /></div></td>'); break;
case 'colours': var perfh=gradientHighlight; var col1=hex2rgb(vars.mapcols[8]); var col2=hex2rgb(vars.mapcols[9]); var col3=hex2rgb(vars.mapcols[10]);
perfh.turnp=50; perfh.turnp2=0;
perfh.am1=50; perfh.rb=col2[0]*1; perfh.radd=(col1[0]-col2[0])/50; perfh.gb=col2[1]*1; perfh.gadd=(col1[1]-col2[1])/50; perfh.bb=col2[2]*1; perfh.badd=(col1[2]-col2[2])/50;
perfh.am2=50; perfh.rb2=col2[0]*1; perfh.radd2=(col3[0]-col2[0])/50; perfh.gb2=col2[1]*1; perfh.gadd2=(col3[1]-col2[1])/50; perfh.bb2=col2[2]*1; perfh.badd2=(col3[2]-col2[2])/50;

function colourElement(val, text) {return ['<a class="spl" href="javascript: highlight.edit(\'',val,'\', \'colour\', \'',text,'\');"><img class="colimg" style="background-color: #',vars.mapcols[val],'" src="img/trans.gif" alt="" />',text,'</a>'].join('');}
text.push('<td colspan="2">Edit the colours bellow or select a scheme: <a href="javascript: changecolours(1);">Default</a>, <a href="javascript: changecolours(2);">Gray</a></td></tr>\
<tr><td colspan="2" class="center"><b>Minimap style</b></td></tr>\
<tr><td style="width: 50%;">',colourElement(4, 'Minimap continent line'),'</td>\
<td>',colourElement(5, 'Minimap sector line'),'</td></tr>\
<tr><td>',colourElement(6, 'Minimap background'),'</td>\
<td>',colourElement(7, 'Minimap area rectangle'),'</td></tr>\
<tr><td colspan="2" class="center"><b>Normal mode</b></td></tr>\
<tr><td>',colourElement(0, 'Map village'),'</td>\
<td>',colourElement(1, 'Minimap village'),'</td></tr>\
<tr><td>',colourElement(2, 'Minimap abandoned village'),'</td>\
<td>',colourElement(3, 'Minimap player highlight'),'</td></tr>\
<tr><td colspan="2" class="center"><b>Highlight modes</b></td></tr>\
<tr><td>',colourElement(10, 'Map village'),'</td>\
<td>',colourElement(11, 'Minimap village'),'</td></tr>\
<tr><td>',colourElement(12, 'Minimap abandoned village'),'</td>\
<td>',colourElement(13, 'Minimap player highlight'),'</td></tr>\
<tr><td colspan="2" class="center"><b>Tribeless mode</b></td></tr>\
<tr><td colspan="2">',colourElement(16, 'Tribeless village highlight'),'</tr>\
<tr><td colspan="2" class="center"><b>Activity, Conquer, Growth, Attack and Defend mode</b></td></tr>\
<tr><td>',colourElement(8, 'Highlight maximum'),'</td>\
<td>',colourElement(9, 'Highlight medium'),'</td></tr>\
<tr><td colspan="2" class="center"><table class="preview" cellpadding="0" cellspacing="0" align="center"><tr><td colspan="2" class="nob">Maximum &rArr; Medium</td><td colspan="2" class="nob">Medium &rArr; Normal</td></tr>\
<tr><td class="btd" rowspan="2"><div style="width: 30px; background-color: #',vars.mapcols[8],';"></div></td><td rowspan="2" class="btd">');
for(i=100;i>50;i--) {text.push('<div style="background-color: ',perfh.func(i),';"></div>');};
text.push('</td><td class="btd tdb tdl">');
for(i=50;i>=0;i--) {text.push('<div style="height: 5px; background-color: ',perfh.func(i),';"></div>');};
text.push('</td><td class="tdb"><div style="width: 30px; height: 5px; background-color: #',vars.mapcols[10],';"></div></td></tr><tr><td class="btd ttd tdl">');
var col3=hex2rgb(vars.mapcols[11]);
perfh.rb2=col2[0]*1; perfh.radd2=(col3[0]-col2[0])/50; perfh.gb2=col2[1]*1; perfh.gadd2=(col3[1]-col2[1])/50; perfh.bb2=col2[2]*1; perfh.badd2=(col3[2]-col2[2])/50;
for(i=50;i>=0;i--) {text.push('<div style="height: 5px; background-color: ',perfh.func(i),';"></div>');};
text.push('</td><td class="ttd"><div style="width: 30px; height: 5px; background-color: #',vars.mapcols[11],';"></div></td></tr></table></td></tr>\
<tr><td colspan="2" class="center"><b>Points mode</b></td></tr>\
<tr><td>',colourElement(14, 'Minimum points'),'</td>\
<td>',colourElement(15, 'Maximum points'),'</td></tr>\
<tr><td colspan="2" class="center">',info.pointsgraph(100));
var f = ['','']; if (data.spoints) {f=data.spoints.split('-'); if (!is_num(f[0])||!is_num(f[1])||parseInt(f[0])>parseInt(f[1])) {f=['',''];}}
text.push('</td></tr>\
<tr><td class="d16"><div>Minimum and lower points:</div><div>Maximum and higher points:</div></td>\
<td class="i55"><input type="text" class="oi" id="pointswhite" value="'+f[0]+'" onkeypress="return submitenter(this, event);" /><br />\
<input type="text" class="oi" id="pointsred" onkeypress="return submitenter(this, event);" value="'+f[1]+'" /></td></tr>\
<tr><td colspan="2">Leave minimum and maximum point values empty to use the auto values,<br />',number(serversettings.pointsmin),' and ',number(serversettings.pointsmax),'. Click save to apply changes.</td></tr>\
<tr><td colspan="2"><div class="center"><input type="submit" class="sbut" value="" /></div></td></td>');
break;
case 'hotkeys': var rc=4; if (data.rightclick=='1') {rc=0;}; text.push('<td colspan="3" class="center"><b>Left click/Right click hotkeys</b></td></tr>\
<tr><td colspan="3" class="lefta">Configure left and right click actions when clicking a village, player<br />\
or tribe name and when clicking villages on the map and minimap.</td></tr>\
<tr><td colspan="3" class="lefta"><div class="point" onclick="hotkeyfunction.rightclick();" onmouseover="show(\'Allows you to use Right click actions<br />and hotkeys configurable bellow.\',1);" onmouseout="msu();"><input class="cb" id="rightclickcheck" type="checkbox"',(data.rightclick=='1'?' checked="checked"':''),'/> Use right click actions/hotkeys</div></td></tr>\
<tr><td class="center tb1 iewfix"><b>Hotkey</b></td><td class="center"><b>Left click</b></td><td class="center"><b>Right click</b></td></tr>\
<tr><td>Single click</td><td>Menu/Tooltip info</td><td>',hotkeyfunction.dropdown('0',5,rc),'</td></tr>\
<tr><td>Double click</td><td>Center map (minimap)</td><td>None</td></tr>\
<tr><td>CTRL</td><td>',hotkeyfunction.dropdown('v',2),'</td><td>',hotkeyfunction.dropdown('h',8,rc),'</td></tr>\
<tr><td>ALT</td><td>',hotkeyfunction.dropdown('p',3),'</td><td>',hotkeyfunction.dropdown('j',9,rc),'</td></tr>\
<tr><td>SHIFT</td><td>',hotkeyfunction.dropdown('t',4),'</td><td>',hotkeyfunction.dropdown('k',10,rc),'</td></tr>\
<tr><td>CTRL+ALT</td><td>',hotkeyfunction.dropdown('c',0),'</td><td>',hotkeyfunction.dropdown('q',6,rc),'</td></tr>\
<tr><td>CTRL+SHIFT</td><td>',hotkeyfunction.dropdown('m',1),'</td><td>',hotkeyfunction.dropdown('a',7,rc),'</td></tr></table>\
<table cellpadding="1" cellspacing="1" class="ttt sets"><tr><td colspan="3" class="center"><b>Custom hotkeys</b></td></tr>\
<tr><td colspan="3" class="lefta">Configure hotkeys for virtually every action, you can configure<br />\
hotkeys to perform actions on the village, player or tribe your mouse is<br />\
over or bind specific actions for a village, player or tribe to a hotkey<br />\
For example: CTRL+ALT+1: Set [name of village] as main village.</td></tr>\
<tr>'); 

function getAction(ac) {var act='<span class="red">No description</span>';
switch(ac[0]) {
case 'mu': act='Move map up'; break;
case 'ml': act='Move map left'; break;
case 'md': act='Move map down'; break;
case 'mr': act='Move map right'; break;
case 'sh': act='Toggle Search window'; break;
case 'hs': act='Toggle Highlights window'; break;
case 'ms': act='Toggle Markers window'; break;
case 'ls': act='Toggle Lines window'; break;
case 'cs': act='Toggle Circles window'; break;
case 'ns': act='Toggle Notes window'; break;
case 'ts': act='Toggle Travel times window'; break;
case 'tt': act='Show/hide tooltips'; break;
case 'tl': act='Display/hide lines'; break;
case 'tc': act='Display/hide circles'; break;
case 'tm': act='Show/hide minimap map overlay'; break;
case 'cl': act='Close menu'; break;
case 'he': act='Highlight mode'; break;
case 'fltr': act='Filter on/off'; break;
case 'com': act='Center map on main village'; break;
case 'cos': act='Center map on start'; break;
case 'cod': act='Center map on destination'; break;
case 'i': act='Tooltip info'; break;
case 'v': act='Village page'; break;
case 'h': act='Highlight village'; break;
case 'm': act='Set main'; break;
case 'a': act='Add/delete marker'; break;
case 'p': act='Player page'; break;
case 'j': act='Highlight player'; break;
case 't': act='Tribe page'; break;
case 'h': act='Historical data'; break;
case 'k': act='Highlight tribe'; break;
case 'q': act='TW Stats'; break;
case 'b': act='BBcodes'; break;
case 'n': act='Notes'; break;
case 'w': act='Set start'; break;
case 'x': act='Set destination'; break;
case 'c': act='Center map'; break;
case '1': act='Menu'; break;}
if (ac[1]=='T') {act+=': '+fetch.tribe[0](ac[2]);}
else if (ac[1]=='P') {act+=': '+fetch.player[0](ac[2]);}
else if (ac[1]) {if (vars.villageid[ac[2]]) {act+=': '+fetch.village[0](vars.villageid[ac[2]]);} else {act+=': Village ['+ac[2]+']';}};
return act;}

var hkt=''; var lt=''; var l=0; var hkl=hotkeylist;
var hkl2={'CTRL+ALT+SHIFT':[],'CTRL+ALT':[],'CTRL+SHIFT':[],'ALT+SHIFT':[],'CTRL':[],'ALT':[],'SHIFT':[]};

for(var i in hkl) {hkt=i.split('.'); l=hkt.length-1; lt=''; if (l) {lt=hkt[0]; if (l>1) {lt+='+'+hkt[1];}; if (l>2) {lt+='+'+hkt[2];}}; if (hkl2[lt]) {hkl2[lt].push(lt+'+'+String.fromCharCode(hkt[l]).toUpperCase()+'</div></td><td class="tb1">'+getAction(hkl[i])+'</td><td><a href="javascript:;" onclick="delete hotkeylist[\''+i+'\']; hotkeyfunction.build(); settings(\'hotkeys\');">Delete</a>');}};
var ad=0; for(var i in hkl2) {l=hkl2[i].length; for(var f=0;f<l;f++) {ad++; text.push('<tr><td><div>',hkl2[i][f],'</td></tr>');}}
if (!ad) {text.push('<tr><td colspan="3">No custom hotkeys configured.</td></tr>');};
text.push('</td></tr>\
<tr><td colspan="3" class="lefta"><a class="spl" href="javascript: settings(\'newhotkey\');">Create new hotkey/update hotkey</a></td></tr></table>\
<table cellpadding="1" cellspacing="1" class="ttt sets"><tr><td colspan="2" class="center"><b>Default hotkeys</b></td></tr></td></tr>\
<tr><td colspan="2" class="lefta">Default hotkeys, you can overwrite these with custom hotkeys.</td></tr>\
<tr><td><div>CTRL+Up Arrow</div></td><td class="tb1">Move map up</td></tr>\
<tr><td><div>CTRL+Left Arrow</div></td><td class="tb1">Move map left</td></tr>\
<tr><td><div>CTRL+Down Arrow</div></td><td class="tb1">Move map down</td></tr>\
<tr><td><div>CTRL+Right Arrow</div></td><td class="tb1">Move map right</td></tr>\
<tr><td><div>CTRL+ALT+T</div></td><td class="tb1">Show/hide tooltips</td></tr>\
<tr><td><div>CTRL+ALT+L</div></td><td class="tb1">Display/hide lines</td></tr>\
<tr><td><div>CTRL+ALT+C</div></td><td class="tb1">Display/hide circles</td></tr>\
<tr><td><div>CTRL+ALT+M</div></td><td class="tb1">Show/hide minimap map overlay</td></tr>\
<tr><td><div>Escape/Esc</div></td><td class="tb1">Close menu</td>'); break;
case 'newhotkey': vars.change='key'; if (kCode) {vars.lastclick=true;};
text.push('<td class="center"><b>Create new hotkey <a href="javascript: settings(\'newhotkey\');">(restart)</a></b></td></tr>\
<tr><td>');
if (kCode) {
text.push('<b>New hotkey</b>: ',(ctrl?'CTRL+':''),(alt?'ALT+':''),(shift?'SHIFT+':''),character.toUpperCase(),'</td></yt>\
<tr><td><b>Details</b>: Character: ',character.toUpperCase(),' (ASCII: ',kCode,'), Modifiers:',(ctrl?' CTRL'+(alt||shift?',':''):''),(alt?' ALT'+(shift?',':''):''),(shift?' SHIFT':''),(ctrl||alt||shift?'':' None'),'</td></tr>\
<tr><td><b>Choose action type</b>:<br />\
<input type="radio" class="rad" checked="checked" name="newhotkeyactiontype" onchange="if (this.checked) {$(\'actiondropdown\').innerHTML=hotkeyfunction.dropdown(0,0,1);}"> Perform an action on the village, player or tribe your mouse is over<br />\
<input type="radio" class="rad" name="newhotkeyactiontype" onchange="if (this.checked) {$(\'actiondropdown\').innerHTML=hotkeyfunction.dropdown(0,0,3);}" id="hotkeya"> Perform an action on one specific village, player or tribe<br />\
<input type="radio" class="rad" name="newhotkeyactiontype" onchange="if (this.checked) {$(\'actiondropdown\').innerHTML=hotkeyfunction.dropdown(0,0,2);}"> Choose a preset action\
</td></tr>\
<tr><td><b>Choose action</b>:\
<div id="actiondropdown">',hotkeyfunction.dropdown(0,0,1),'</div></td></tr>\
<tr><td class="center"><input id="hotkeyn" type="hidden" value="',(ctrl?'CTRL.':''),(alt?'ALT.':''),(shift?'SHIFT.':''),kCode,'" /><input type="submit" class="sbut" value="" /></td>');}
else {text.push('Press a key combination on your keyboard that you want to<br />configure a hotkey for. Valid modifiers (combination keys)<br />are CTRL, ALT and SHIFT. For example: CTRL+SHIFT+Q.<br />If a hotkey already exists, you will be asked if you want to update it.</td>');};
 break;
case 'tooltips': var tts=data.tooltips; var cs=tts.charAt(2); var rank=tts.charAt(6);
text.push('<td style="width: 50%;"><div class="point" onclick="changetooltipsetting(0, 0, \'toggletooltips\'); hide();" onmouseover="show(\'Toggle the tooltips (Hotkey: CTRL+ALT+T).\',1);" onmouseout="msu();">\
<input id="toggletooltips" type="checkbox" class="cb" ',(tts.charAt(0)!='1'?' checked="checked"':''),'/> Show tooltips</div></td>\
<td><div class="point" onclick="changetooltipsetting(3, 0, \'toggletmorale\');" onmouseover="show(\'Toggle morale tooltp data when a main<br />village is set and the server uses morale.\',1);" onmouseout="msu();">\
<input id="toggletmorale" type="checkbox" class="cb" ',(tts.charAt(3)!='1'?' checked="checked"':''),'/> Show morale</div></td></tr>\
<tr><td><div class="point" onclick="changetooltipsetting(4, 0, \'toggleact\');" onmouseover="show(\'Toggle last activity, points increase, ODA<br />increase and ODD increase time data.\',1);" onmouseout="msu();">\
<input id="toggleact" type="checkbox" class="cb" ',(tts.charAt(4)!='1'?' checked="checked"':''),'/> Show last activity</div></td>\
<td><div class="point" onclick="changetooltipsetting(5, 0, \'toggletpo\');" onmouseover="show(\'Toggle total tribe points and<br />average tribe points data.\',1);" onmouseout="msu();">\
<input id="toggletpo" type="checkbox" class="cb" ',(tts.charAt(5)!='1'?' checked="checked"':''),'/> Show total and avg tribe points</div></td></tr>\
<tr><td><div class="point" onclick="changetooltipsetting(1, 0, \'togglecto\');" onmouseover="show(\'Toggle circle tooltip data when<br />a village is in a circle\\\'s radius.\',1);" onmouseout="msu();">\
<input id="togglecto" type="checkbox" class="cb" ',(tts.charAt(1)!='1'?' checked="checked"':''),'/> Show circles</div></td>\
<td><div onmouseover="show(\'Choose how tribe names are displayed.\',1);" onmouseout="msu();">\
<select onchange="changetooltipsetting(7, this.value);">\
<option value="0"',(tts.charAt(7)!='1'&&tts.charAt(7)!='2'?' selected="selected"':''),'>Tag only</option>\
<option value="2"',(tts.charAt(7)=='2'?' selected="selected"':''),'>Name only</option>\
<option value="1"',(tts.charAt(7)=='1'?' selected="selected"':''),'>Tag and Name</option>\
</select> Tribe tag/name</div></td></tr>\
<tr><td><div onmouseover="show(\'Choose how rank data is displayed.\',1);" onmouseout="msu();">\
<select onchange="changetooltipsetting(6, this.value);">\
<option value="0"',(rank!='1'&&rank!='2'&&rank!='3'?' selected="selected"':''),'>Players and tribes</option>\
<option value="2"',(rank=='2'?' selected="selected"':''),'>Players only</option>\
<option value="1"',(rank=='1'?' selected="selected"':''),'>Tribes only</option>\
<option value="3"',(rank=='3'?' selected="selected"':''),'>Never</option>\
</select> Rank data</div></td>\
<td><div onmouseover="show(\'Choose how opponents defeated data is displayed.\',1);" onmouseout="msu();">\
<select onchange="changetooltipsetting(2, this.value);">\
<option value="0"',(cs!='1'&&cs!='2'&&cs!='3'?' selected="selected"':''),'>Players and tribes</option>\
<option value="1"',(cs=='1'?' selected="selected"':''),'>Players only</option>\
<option value="2"',(cs=='2'?' selected="selected"':''),'>Tribes only</option>\
<option value="3"',(cs=='3'?' selected="selected"':''),'>Never</option>\
</select> OD data</div></td>'); break;
default: text.push('<td><div class="point" onclick="toggleAnimations();" onmouseover="show(\'Toggle menu animations.\',1);" onmouseout="msu();">\
<input id="toggleanimations" type="checkbox" class="cb" ',(data.ani!='1'?' checked="checked"':''),'/> Play menu animations</div></td></tr>\
<tr><td><span id="defcoord">Default coordinate: <b>',vars.defx,'|',vars.defy,'</b>',(data.xcord==vars.defx&&data.ycord==vars.defy?'':'. <a href="javascript: setDefaultCoordinate();" onmouseover="show(\'Set the coordinate the map will<br />load by default when opened.\',1);" onmouseout="msu();">Set <b>'+data.xcord+'|'+data.ycord+'</b> as default coordinate</a>'),'</span>\
<a class="spl" href="javascript: highlightMode();" onmouseover="show(\'Choose how the map highlights villages.\',1);" onmouseout="msu();">Change highlight mode</a>\
<a class="spl" href="javascript: changeWorld();" onmouseover="show(\'Change the world/server displayed.\',1);" onmouseout="msu();">Change world/server</a></td>');}

text.push('</tr></table></form>',vars.borderright,'<tr><td class="qsl"></td><td class="qs" colspan="13"></td><td class="qsr"></td></tr>\
<tr><td class="ql"></td><td class="qc h1" colspan="13"><a class="spl" href="javascript: Close();"><b>Close</b></a>',vars.borderright,'\
<tr><td class="qbl"></td><td class="qb" colspan="13"></td><td class="qbr"></td></tr></table>');

vars.text=text.join(''); mend();}}

function movemap(map) {var ret=''; if (map) {ret=mappos(vars.minw);} else {ret=minimappos(vars.minw);}; var xpos=ret[0]; var ypos=ret[1];
if (xpos!=data.xcord||ypos!=data.ycord) {mov(xpos,ypos);} else {alert('You\'re already at this coordinate ('+xpos+'|'+ypos+').');};}

function changecoord() {var x = $('x').value; var y = $('y').value; x=checkcoordinate(x,y,is_num2); if (x) {mov(x[0],x[1]);}}

function moveout(sp) {if (data.map!='yes'||sp) {$S('mainv').display='none'; $S('xst').display='none'; $S('xde').display='none'; var d=document.body; d.appendChild($('mainv')); d.appendChild($('xst')); d.appendChild($('xde')); generatemap(); if (display.timesdisplay) {display.timesicon(0,1); display.timesicon(1,1);}; mainvillage.place(); var ma = $('main'); vars.width=ma.offsetWidth; vars.height=ma.offsetHeight; calcpos();}}

function mov(x,y,nocache,noclose,nm,nr) {if (is_num2(x)&&is_num2(y)) {var ts=new Date().getTime(); $('x').value=x; $('y').value=y; document.title=x+'|'+y+' - Tribal Wars Map';
if (!noclose) {Close(); hide();}
data.xcord=x; data.ycord=y; moveout(nm); if (!nr) {refmapurl();};

var max2=Math.max(data.map=='yes'?vars.mapx:data.minimap!='no'?data.minimapx:0, data.width);
var max=Math.max(data.map=='yes'?vars.mapy:data.minimap!='no'?data.minimapy:0, data.height);
var count2 = x-Math.floor(max2/2); max2=x*1+Math.ceil(max2/2);
var count = y-Math.floor(max/2); max=y*1+Math.ceil(max/2);

var cached=true; var vildata=villagedata; var none=vars.none; var prop=props;
var minx=max2; var maxx=count2-1; var miny=max; var maxy=count-1;
if (nocache) {cached=false; minx=count2-1; maxx=max2; miny=count-1; maxy=max;}
for(var ynow=count;ynow<max;ynow++) {for(var xnow=count2;xnow<max2;xnow++) {if (!vildata['C-'+xnow+'-'+ynow]&&!none['C-'+xnow+'-'+ynow]) {cached=false;
if (xnow<minx) {minx=xnow;}
if (xnow>maxx) {maxx=xnow;}
if (ynow<miny) {miny=ynow;}
if (ynow>maxy) {maxy=ynow;}}}}

if (cached) {serversettings.load=0; var lastupdated=Math.max(Math.round((new Date().getTime()/1000+serversettings.time-serversettings.lastu)/60), 1); $('load').innerHTML='This page was generated using a cached copy and took '+(Math.round((new Date().getTime()-ts)/10)/100)+' seconds to load. Last updated <span id="lsu">'+lastupdated+' minute'+(lastupdated==1?'':'s')+'</span> ago.';}
else {$('himg').className='loading';
$('load').innerHTML='Please wait. Loading <a href="'+vars.moveurl(x,y)+'" target="_blank" onclick="mov('+x+','+y+'); return false;">'+x+'|'+y+'</a>...';
var tempu=serversettings.lastu;

jQuery.ajax({'url':'ajaxmap.php?x='+minx+'&y='+miny+'&x2='+maxx+'&y2='+maxy+'&ms='+ts,
'error':function() {if (data.xcord==x&&data.ycord==y) {
$('himg').className='failed'; $('load').innerHTML='Failed to move the map to <a href="'+vars.moveurl(x,y)+'" target="_blank" onclick="mov('+x+','+y+'); return false;">'+x+'|'+y+'</a>.';}},

'success':function(temp) {if (temp) {serversettings.lastu=temp.lastu; serversettings.load=temp.load;

var prop=props; var tempprops=temp.props;
for(var i in tempprops) {prop[i]=tempprops[i];}
namesearch.parseresults(temp);
var vild=villagedata;
for(var ynow=miny;ynow<=maxy;ynow++) {for(var xnow=minx;xnow<=maxx;xnow++) {if (!vild['C-'+xnow+'-'+ynow]) {none['C-'+xnow+'-'+ynow]=true;}}}

if (tempu!=serversettings.lastu) {var dat=new Date(); vars.dat=dat.getMonth()+'-'+dat.getDate()+'-'+dat.getHours();}
if (data.xcord==x&&data.ycord==y) {moveout(nm); refmapurl();
var lastupdated=Math.max(Math.round((new Date().getTime()/1000+serversettings.time-serversettings.lastu)/60), 1); $('load').innerHTML='Loaded in '+(Math.round((new Date().getTime()-ts)/10)/100)+' seconds. Last updated <span id="lsu">'+lastupdated+' minute'+(lastupdated==1?'':'s')+'</span> ago.';}}},

'dataType':'json'});}}}

function putinview(el) {var elpos=$('pos');

if (el) {var l=0; var t=0;
if (typeof(window.pageYOffset)=='number') {t = window.pageYOffset; l = window.pageXOffset;}
else if (document.body.scrollLeft||document.body.scrollTop) {t = document.body.scrollTop; l = document.body.scrollLeft;}
else if (document.documentElement&&(document.documentElement.scrollLeft||document.documentElement.scrollTop)) {
t = document.documentElement.scrollTop;
l = document.documentElement.scrollLeft;}

if (l!=display.movex||t!=display.movey) {display.movex=l; display.movey=t; jQuery(elpos).stop(); var dont=true;
var pos=elpos.childNodes; var le=pos.length; for(var i=0;i<le;i++) {if (pos[i].style&&pos[i].style.display&&pos[i].style.display=='block') {dont=false; break;}};

if (dont) {elpos.style.left=(l+vars.posleft)+'px'; elpos.style.top=(t+vars.postop)+'px'; toggle(el);}
else {jQuery(elpos).animate({'left':(l+vars.posleft),'top':(t+vars.postop)}, 500, 0, function() {this.style.left=(l+vars.posleft)+'px'; this.style.top=(t+vars.postop)+'px'; toggle(el);});}}
else {toggle(el);}}

elpos.style.width=(vars.width-display.movex-vars.posleft)+'px';}

var display={'movex':0,'movey':0,
'times':false,'timesdisplay':false,
'timesicon':function(start, show) {var st, coord;
if (start&&is_num(data.xstart)&&is_num(data.ystart)) {st=$('xst'); coord='C-'+data.xstart+'-'+data.ystart;} else if (is_num(data.xdest)&&is_num(data.ydest)) {st=$('xde'); coord='C-'+data.xdest+'-'+data.ydest;}
if (coord) {if (display.timesdisplay) {if ($(coord)&&$(coord).firstChild) {$(coord).firstChild.appendChild(st); st.style.display='';}}
else if (!show) {st.style.display='none';}}},
'traveltimesinit':function () {if (!display.times) {
var table=['<table cellpadding="0" cellspacing="0">',vars.bordertop,vars.borderleft,'<b><u>Travel times</u></b>',vars.borderright,vars.spacer,vars.borderleft,'<form action="javascript:;" onsubmit="manual($(\'xbs\').value, $(\'xbd\').value,1);">X: <input type="text" id="xbs" class="oi" onkeydown="return submitenter(this, event);" /> Y: <input type="text" id="xbd" class="oi" onkeydown="return submitenter(this, event);" /><br/><input type="submit" class="stbut" value="" /><input type="submit" class="dbut" value="" onclick="manual($(\'xbs\').value, $(\'xbd\').value); return false;" /></form>',vars.borderright,vars.spacer,vars.borderleft,'\
<table cellpadding="0" cellspacing="0"><tr><td><img src="img/trans.gif" alt="" class="green" /></td><td class="tb1" id="startloc">',(is_num(data.xstart)&&is_num(data.ystart)?fetch.village[1]('C-'+data.xstart+'-'+data.ystart):'No start set'),'</td></tr></table>',vars.borderright,vars.spacer,vars.borderleft,'\
<table cellpadding="0" cellspacing="0"><tr><td><img src="img/trans.gif" alt="" class="red" /></td><td class="tb1" id="destloc">',(is_num(data.xdest)&&is_num(data.ydest)?fetch.village[1]('C-'+data.xdest+'-'+data.ydest):'No destination set'),'</td></tr></table>',vars.borderright,vars.spacer,'\
<tr><td class="ql"></td><td class="qc">\
<table cellpadding="0" cellspacing="1" class="table">\
<tr><td colspan="3" id="distance">Distance: 0 villages.</td></tr>\
<tr><td class="ic"><img src="img/unit/spear.gif" alt="" /></td><td class="la">Spear fighter</td><td class="ra" id="spm">0:00:00</td></tr>\
<tr><td class="ic"><img src="img/unit/sword.gif" alt="" /></td><td class="la">Swordsman</td><td class="ra" id="swm">0:00:00</td></tr>\
<tr><td class="ic"><img src="img/unit/axe.gif" alt="" /></td><td class="la">Axeman</td><td class="ra" id="am">0:00:00</td></tr>'];
if (serversettings.archer!='0') {table.push('<tr><td class="ic"><img src="img/unit/archer.gif" alt="" /></td><td class="la">Archer</td><td class="ra" id="ar">0:00:00</td></tr>');};
table.push('<tr><td class="ic"><img src="img/unit/scout.gif" alt="" /></td><td class="la">Scout</td><td class="ra" id="sc">0:00:00</td></tr>\
<tr><td class="ic"><img src="img/unit/light.gif" alt="" /></td><td class="la">Light cavalry</td><td class="ra" id="lc">0:00:00</td></tr>');
if (serversettings.archer!='0') {table.push('<tr><td class="ic"><img src="img/unit/marcher.gif" alt="" /></td><td class="la">Mounted archer</td><td class="ra" id="ma">0:00:00</td></tr>');};
table.push('<tr><td class="ic"><img src="img/unit/heavy.gif" alt="" /></td><td class="la">Heavy cavalry</td><td class="ra" id="hc">0:00:00</td></tr>\
<tr><td class="ic"><img src="img/unit/ram.gif" alt="" /></td><td class="la">Ram</td><td class="ra" id="rm">0:00:00</td></tr>\
<tr><td class="ic"><img src="img/unit/catapult.gif" alt="" /></td><td class="la">Catapult</td><td class="ra" id="ct">0:00:00</td></tr>');
if (serversettings.paladin!='0') {table.push('<tr><td class="ic"><img src="img/unit/paladin.gif" alt="" /></td><td class="la">Paladin</td><td class="ra" id="pa">0:00:00</td></tr>');};
table.push('<tr><td class="ic"><img src="img/unit/noble.gif" alt="" /></td><td class="la">Nobleman</td><td class="ra" id="nb">0:00:00</td></tr>\
</table>',vars.borderright,vars.spacer,vars.borderleft,'\
<a href="javascript: display.traveltimes();" class="spl"><b>Close</b></a>\
',vars.borderright,vars.borderbottom,'</table>');
$('time').innerHTML=table.join('');

display.times=true; calctime();}},
'traveltimes':function() {if (display.timesdisplay) {display.timesdisplay=false;} else {display.traveltimesinit(); display.timesdisplay=true;}; display.timesicon(); display.timesicon(1); putinview('time');},
'highlight':false,'colourinput':false,
'highlightcontrolsinit':function() {if (!display.highlight) {highlight.check(); if (!group.initiate) {group.init();}
var table=['<table cellpadding="0" cellspacing="0">',vars.bordertop,vars.borderleft,'<b><u>Highlights</u></b>',vars.borderright,vars.spacer,vars.borderlefta,'<div>\
<a class="spl" href="javascript: group.bbcode(0,1,0,2);">All highlights BBcode list</a>\
<a class="spl" href="javascript: group.bbcode(0,1,0,1);">Ungrouped highlights BBcode list</a>\
<a class="spl" href="javascript: group.openallvillagepages(1);">Open all highlights village pages</a>\
<a class="spl" href="javascript: group.openallvillagepages();">Open ungrouped highlights village pages</a>\
</div>',vars.borderright,vars.spacer,vars.borderlefta,'\
<div class="point" onclick="highlight.toggle()"><input id="highlighttoggle" type="checkbox" class="cb" ',(data.def==1?'checked="checked" ':''),'/> Use your favourite colour when adding<br />new highlights instead of a random colour.</div>\
<a class="spl" href="javascript: highlight.edit(\'\', \'favourite\');"><img class="colimg" id="defaultcoldiv" style="background-color: #'+data.last+';" alt="" src="img/trans.gif" /> Edit favourite colour</a>\
</div>',vars.borderright,vars.spacer,vars.borderleft,'<b><u>Villages</u></b>',vars.borderright,vars.spacer,'<tr><td class="ql"></td><td class="qc" id="vil">'];
var vill=[]; for(var qg in vars.villages) {if (!group.villages[qg]) {vill.push(highlight.addvillage(qg, vars.villages[qg],1));}};
if (vill.length) {table.push(vill.join(''));} else {table.push('No villages highlighted.');}
table.push(vars.borderright,vars.spacer,vars.borderleft,'<b><u>Players</u></b>',vars.borderright,vars.spacer,'<tr><td class="ql"></td><td class="qc" id="pla">');
var play=[]; for(var qg in vars.players) {if (!group.players[qg]) {play.push(highlight.addplayer(qg, vars.players[qg],1));}};
if (play.length) {table.push(play.join(''));} else {table.push('No players highlighted.');}
table.push(vars.borderright,vars.spacer,vars.borderleft,'<b><u>Tribes</u></b>',vars.borderright,vars.spacer,'\
<tr><td class="ql"></td><td class="qc" id="tri">');
var trib=[]; for(var qg in vars.tribes) {if (!group.tribes[qg]) {trib.push(highlight.addtribe(qg, vars.tribes[qg],1));}};
if (trib.length) {table.push(trib.join(''));} else {table.push('No tribes highlighted.');}
table.push(vars.borderright,vars.spacer,vars.borderleft,'<b><u>Groups</u></b><br />\
<a href="javascript: group.change(0,0,1);">Default group</a> - \
<a href="javascript: textbox.question(\'group.create\',\'\',group.lt,\'Create new group\',\'Group name: \',\'\');">Create new group</a>',vars.borderright,vars.spacer,'\
<tr><td class="ql"></td><td class="qc" id="gro">');
var gro=[]; for(var qsd in group.list) {gro.push(group.add(qsd,1));};
if (gro.length) {table.push(gro.join(''));} else {table.push('No groups created.');}
table.push(vars.borderright,vars.spacer,vars.borderleft,'\
<a class="spl" href="javascript: display.highlights();"><b>Close</b></a></td><td class="qr"></td></tr>\
',vars.borderbottom,'</table>');
$('table').innerHTML=table.join('');
display.highlight=true;}},
'highlights':function() {display.highlightcontrolsinit(); putinview('table');},
'helpd':false,
'helpinit':function() {if (!display.helpd) {var x=vars.borderright+vars.spacer+vars.borderlefta; var c=vars.borderright+vars.spacer+vars.borderleft;
$('help').innerHTML=['<table cellpadding="0" cellspacing="0">',vars.bordertop,vars.borderleft,'<b><u>Contact info</u></b>',x,'\
You can contact Tribal Wars Map by sending an email to <a href="mailto:contact@tribalwarsmap.com">contact@tribalwarsmap.com</a>. You can discuss Tribal Wars Map at the official Tribal Wars forums in the <a href="',$('discussion').href,'" target="_blank">Tribal Wars Map discussion topic</a>.',c,'\
<b><u>Help</u></b>',x,'\
<a href="javascript:;" onmouseover="show(\'This is the tooltip that appears over<br />most links and describes their purpose.<br />This link does not serve any purpose.\',1);" onmouseout="msu();">Features are often described using a tooltip, mouseover this link to view an example of such a tooltip</a>.',x,'Tooltips use "#d" and "#h" to display times in the past. For example 2d 5h means 2 days and 5 hours ago.',x,'\
You can have unlimited configurations on a single server by changing the part in front of the server number, <a href="http://anything1.',serversettings.domain,serversettings.folder,'">http://anything1.',serversettings.domain,serversettings.folder,'</a> is the same as <a href="http://',serversettings.prefix,'1.',serversettings.domain,serversettings.folder,'">http://',serversettings.prefix,'1.',serversettings.domain,serversettings.folder,'</a> except that it uses a different configuration.',x,'\
When you enter a coordinate in "X:" "Y:" to change the coordinate, draw a line/circle or set a travel time, you can use the "X|Y", "X/Y", "(X|Y)" or "(X/Y)" format in the "X:" box and the tool will recognize this as a valid coordinate.',c,'\
<a href="javascript: display.help();" class="spl"><b>Close</b></a>',vars.borderright,vars.borderbottom,'</table>'].join(''); display.helpd=true;}},
'help':function () {display.helpinit(); putinview('help');},
'drawd':false,'drawcol':'000000',
'drawinit':function() {if (!display.drawd) {var table=['<table cellpadding="0" cellspacing="0">',vars.bordertop,vars.borderleft,'<b><u>Lines</u></b>',vars.borderright,vars.spacer,vars.borderlefta,'<div onclick="draw.toggle()" class="point"><input type="checkbox" class="cb" id="drawtoggle"',(data.lt!='1'?' checked="checked"':''),'/> Display lines (Hotkey: CTRL+ALT+L)</div>',vars.borderright,vars.spacer,vars.borderlefta,'\
<div>Fill in the form bellow and click "Save"<br />to draw a line between two coordinates.</div>',vars.borderright,vars.spacer,vars.borderleft,'<form action="javascript:;" onsubmit="var stroke=\'1\'; if ($(\'linet2\').checked) {stroke=\'2\';} else if ($(\'linet3\').checked) {stroke=\'3\';} draw.add($(\'linex1\').value,$(\'liney1\').value,$(\'linex2\').value,$(\'liney2\').value,stroke,display.drawcol);">\
<b>Start</b><br />\
X1: <input type="text" id="linex1" class="oi" onkeydown="return submitenter(this, event);" /> Y1: <input type="text" id="liney1" class="oi" onkeydown="return submitenter(this, event);" /><br />\
<b>Destination</b><br />\
X2: <input type="text" id="linex2" class="oi" onkeydown="return submitenter(this, event);" /> Y2: <input type="text" id="liney2" class="oi" onkeydown="return submitenter(this, event);" /><br />\
<a href="javascript:;" onclick="$(\'linex1\').value=data.xstart; $(\'liney1\').value=data.ystart; $(\'linex2\').value=data.xdest; $(\'liney2\').value=data.ydest;">Use start and destination</a><br />\
<b>Line type (map only)</b>\
<table cellpadding="0" cellspacing="0" class="la" style="margin: 0px auto;">\
<tr><td><div class="linew1"></div></td><td><input id="linet1" type="radio" name="linetype" class="rad" checked="checked" /> 1px solid</td></tr>\
<tr><td><div class="linew2"></div></td><td><input id="linet2" type="radio" name="linetype" class="rad" /> 2px solid</td></tr>\
<tr><td><div class="linew3"></div></td><td><input id="linet3" type="radio" name="linetype" class="rad" /> 3px solid</td></tr>\
</table>\
<b>Line colour</b>\
<div><a href="javascript: highlight.edit(\'\', \'line\');"><img id="drawcol" class="colimg" style="background-color: #',display.drawcol,';" alt="" src="img/trans.gif" /> Edit colour</a></div>\
<input type="submit" value="" class="sbut" /></form>\
',vars.borderright,vars.spacer,'<tr><td class="ql"></td><td class="qc" id="linelist">'];
var li=[]; var sp=draw.list; var l=sp.length; for(var i=0;i<l;i++) {li.push(draw.listadd(sp[i]));};
if (li.length) {table.push(li.join(''));} else {table.push('No lines to display.');};
table.push(vars.borderright,vars.spacer,vars.borderleft,'\
<a href="javascript: display.lines();" class="spl"><b>Close</b></a>',vars.borderright,vars.borderbottom,'</table>');
$('draw').innerHTML=table.join(''); display.drawd=true;}},
'lines':function () {display.drawinit(); putinview('draw');},
'churchd':false,'churchcol':'252589',
'churchinit':function() {if (!display.churchd) {var table=['<table cellpadding="0" cellspacing="0">',vars.bordertop,vars.borderleft,'<b><u>Circles</u></b>',vars.borderright,vars.spacer,vars.borderlefta,'<div onclick="draw.churchtoggle()" class="point"><input type="checkbox" class="cb" id="churchtoggle"',(data.ct!='1'?' checked="checked"':''),'/> Display circles (Hotkey: CTRL+ALT+C)</div>\
<div style="margin-top: 1px;"><select onchange="draw.churchopacity(this.value);">\
<option value="0"',(data.ctop=='0'?' selected="selected"':''),'>0%</option>\
<option value="1"',(data.ctop=='1'?' selected="selected"':''),'>10%</option>\
<option value=""',(!is_num(data.ctop)?' selected="selected"':''),'>20%</option>\
<option value="3"',(data.ctop=='3'?' selected="selected"':''),'>30%</option>\
<option value="4"',(data.ctop=='4'?' selected="selected"':''),'>40%</option>\
<option value="5"',(data.ctop=='5'?' selected="selected"':''),'>50%</option>\
<option value="6"',(data.ctop=='6'?' selected="selected"':''),'>60%</option>\
<option value="7"',(data.ctop=='7'?' selected="selected"':''),'>70%</option>\
<option value="8"',(data.ctop=='8'?' selected="selected"':''),'>80%</option>\
</select> Circle background visibility</div>',vars.borderright,vars.spacer,vars.borderlefta,'<div>\
Fill in the form bellow and click "Save"<br />\
to display a circle (ellipse) on the map.<br />\
Circles will automatically combine to form<br />\
one circle when they are the same colour.</div>',vars.borderright,vars.spacer,vars.borderleft,'<form action="javascript:;" onsubmit="var churchtype=5; var radius=$(\'churchr\').value; if ($(\'church1\').checked) {churchtype=1; radius=6;} else if ($(\'church2\').checked) {churchtype=2; radius=4;} else if ($(\'church3\').checked) {churchtype=3; radius=6;} else if ($(\'church4\').checked) {churchtype=4; radius=8;}\
draw.churchadd($(\'churchx\').value,$(\'churchy\').value,churchtype,display.churchcol,radius);">\
<b>Circle coordinates</b><br />\
X: <input type="text" id="churchx" class="oi" onkeydown="return submitenter(this, event);" /> Y: <input type="text" id="churchy" class="oi" onkeydown="return submitenter(this, event);" /><br />\
<a href="javascript:;" onclick="$(\'churchx\').value=data.xstart; $(\'churchy\').value=data.ystart;">Use start</a> - <a href="javascript:;" onclick="$(\'churchx\').value=data.xdest; $(\'churchy\').value=data.ydest;">Use destination</a><br />\
<b>Circle radius</b><br />\
<table cellpadding="0" cellspacing="0" class="la" style="margin: 0px auto;">\
<tr><td><input id="church1" type="radio" name="churchtype" class="rad" checked="checked" /></td><td>First church</td></tr>\
<tr><td><input id="church2" type="radio" name="churchtype" class="rad" /></td><td>Church level 1</td></tr>\
<tr><td><input id="church3" type="radio" name="churchtype" class="rad" /></td><td>Church level 2</td></tr>\
<tr><td><input id="church4" type="radio" name="churchtype" class="rad" /></td><td>Church level 3</td></tr>\
<tr><td valign="top"><input id="church5" type="radio" name="churchtype" class="rad" /></td><td>Custom: <input id="churchr" type="text" class="oi" maxlength="3" onkeydown="return submitenter(this, event);" /></td></tr>\
</table>\
<b>Circle colour</b>\
<div><a href="javascript: highlight.edit(\'\', \'circle\');"><img id="churchcol" class="colimg" style="background-color: #',display.churchcol,';" alt="" src="img/trans.gif" /> Edit colour</a> - <a href="javascript:;" onclick="display.churchcol=\'252589\'; $S(\'churchcol\').backgroundColor=\'#252589\';">Default</a></div>\
<input type="submit" value="" class="sbut" /></form>\
',vars.borderright,vars.spacer,'<tr><td class="ql"></td><td class="qc" id="churchlist">'];
var li=[]; var sp=draw.churchlist; var l=sp.length; for(var i=0;i<l;i++) {li.push(draw.churchlistadd(sp[i]));};
if (li.length) {table.push(li.join(''));} else {table.push('No circles to display.');};
table.push(vars.borderright,vars.spacer,vars.borderleft,'\
<a href="javascript: display.churches();" class="spl"><b>Close</b></a>',vars.borderright,vars.borderbottom,'</table>');
$('church').innerHTML=table.join(''); display.churchd=true;}},
'churches':function() {display.churchinit(); putinview('church');},
'notesd':false,
'notevillageadd':function(id,num,spec) {if (note[id]||spec==2) {
var text=['<table cellpadding="1" cellspacing="1" class="ttt"',(spec?'':' id="note-'+id+'"'),'><tr><td>',fetch.village[1](id),'</td></tr>'];
if (note[id]) {var not=note[id];
for(var i in not) {if (spec!=1||num[i]) {text.push('<tr',(spec?'':' id="note-'+id+'-'+i+'"'),' class="point nds" onclick="notes(\'',id,'\',\'',i,'\');" onmouseover="show(\'View/edit this note.\',1);" onmouseout="msu();"><td><div class="notedesc">',(not[i][0]!=''?not[i][0]:'No description.'),'</div></td></tr>');}}}
if (spec==2&&!external) {text.push('<tr><td><a class="spl" href="javascript: notes(\'',id,'\',0);">Add a note for ',fetch.village[0](id),'</a></td></tr>');}
text.push('</table>'); return text.join('');}},
'noteplayeradd':function(id,num,spec) {if (note[id]||spec==2) {var pid=id.split('-')[1];
var text=['<table cellpadding="1" cellspacing="1" class="ttt"',(spec?'':' id="note-'+id+'"'),'><tr><td>',fetch.player[1](pid),'</td></tr>'];
if (note[id]) {var not=note[id]; for(var i in not) {if (spec!=1||num[i]) {text.push('<tr',(spec?'':' id="note-'+id+'-'+i+'"'),' class="point nds" onclick="notes(\'',id,'\',\'',i,'\');" onmouseover="show(\'View/edit this note.\',1);" onmouseout="msu();"><td><div class="notedesc">',(not[i][0]!=''?not[i][0]:'No description.'),'</div></td></tr>');}}}
if (spec==2&&!external) {text.push('<tr><td><a class="spl" href="javascript: notes(\'',id,'\',0);">Add a note for ',fetch.player[0](pid),'</a></td></tr>');}
text.push('</table>'); return text.join('');}},
'notetribeadd':function(id,num,spec) {if (note[id]||spec==2) {var pid=id.split('-')[1];
var text=['<table cellpadding="1" cellspacing="1" class="ttt"',(spec?'':' id="note-'+id+'"'),'><tr><td colspan="2">',fetch.tribe[1](pid),'</td></tr>'];
if (note[id]) {var not=note[id]; for(var i in not) {if (spec!=1||num[i]) {text.push('<tr',(spec?'':' id="note-'+id+'-'+i+'"'),' class="point nds" onclick="notes(\'',id,'\',\'',i,'\');" onmouseover="show(\'View/edit this note.\',1);" onmouseout="msu();"><td><div class="notedesc">',(not[i][0]!=''?not[i][0]:'No description.'),'</div></td></tr>');}}}
if (spec==2&&!external) {text.push('<tr><td><a class="spl" href="javascript: notes(\'',id,'\',0);">Add a note for ',fetch.tribe[0](pid),'</a></td></tr>');}
text.push('</table>'); return text.join('');}},
'notesinit':function() {if (!display.notesd) {var table=['<table cellpadding="0" cellspacing="0">',vars.bordertop,vars.borderleft,'\
<u><b>Village notes</b></u>',vars.borderright,vars.spacer,vars.borderleft,'<div id="villagenotelist">'];
delete note['l'];
var li=[]; for(i in note) {var xy=i.split('-'); if (xy[0]=='C') {li.push(display.notevillageadd(i));}};
if (!li.length) {table.push('No village notes.');}
table.push(li.join(''),vars.borderright,vars.spacer,vars.borderleft,'<u><b>Player notes</b></u>',vars.borderright,vars.spacer,vars.borderleft,'<div id="playernotelist">');
li=[]; for(i in note) {var xy=i.split('-'); if (xy[0]=='P') {li.push(display.noteplayeradd(i));}};
if (!li.length) {table.push('No player notes.');}
table.push(li.join(''),'</div>',vars.borderright,vars.spacer,vars.borderleft,'<u><b>Tribe notes</b></u>',vars.borderright,vars.spacer,vars.borderleft,'<div id="tribenotelist">');
li=[]; for(i in note) {var xy=i.split('-'); if (xy[0]=='T') {li.push(display.notetribeadd(i));}};
if (!li.length) {table.push('No tribe notes.');}
table.push(li.join(''),'</div>',vars.borderright,vars.spacer,vars.borderleft,'\
<a href="javascript: display.notes();" class="spl"><b>Close</b></a>',vars.borderright,vars.borderbottom,'</table>');
$('notes').innerHTML=table.join(''); display.notesd=true;}},
'notes':function() {display.notesinit(); putinview('notes');},
'markersd':false,
'markersinit':function() {if (!display.markersd) {var table=['<table cellpadding="0" cellspacing="0">',vars.bordertop,vars.borderleft,'\
<u><b>Markers</b></u>',vars.borderright,vars.spacer,vars.borderlefta,'<a href="javascript: marker.openvillagepages();" class="spl">Open all markers village pages.</a>',vars.borderright,vars.spacer,vars.borderleft,'<div id="markerlist">'];
var li=[]; for(i in marker.list) {li.push(marker.markersadd(i));};
if (!li.length) {table.push('No markers.');}
table.push(li.join(''),'</div>',vars.borderright,vars.spacer,vars.borderleft,'\
<a href="javascript: display.markers();" class="spl"><b>Close</b></a>',vars.borderright,vars.borderbottom,'</table>');
$('markers').innerHTML=table.join(''); display.markersd=true;}},
'markers':function() {display.markersinit(); putinview('markers');},
'reports':function() {alert('Not available yet.');},
'searchd':false,
'searchinit':function() {if (!display.searchd) {
$('search').innerHTML=['<table cellpadding="0" cellspacing="0">',vars.bordertop,vars.borderleft,'\
<u><b>Search</b></u>',vars.borderright,vars.spacer,vars.borderleft,'\
<form action="javascript:;" onsubmit="namesearch.search();"><input type="text" id="searchbox" class="oi wd" value="" onkeypress="if (namesearch.timeout) {clearTimeout(namesearch.timeout);}; namesearch.timeout=setTimeout(function() {namesearch.search();},250);" />\
<select id="searchselect" onchange="namesearch.search();">\
<option value="village">Coordinate</option>\
<option value="player" selected="selected">Players</option>\
<option value="tribe">Tribes</option>\
</select><input type="submit" class="sebut" value="" /></form>\
',vars.borderright,vars.spacer,'<tr><td class="ql"></td><td class="qc qcnm la">\
<div class="maxh" id="searchresults"><div class="ws">Enter your search query in the input above. Search results will be served while you type.</div></div>\
',vars.borderright,vars.spacer,vars.borderleft,'\
<a href="javascript: display.search();" class="spl"><b>Close</b></a>',vars.borderright,vars.borderbottom,'</table>'].join(''); display.searchd=true;}},
'search':function() {display.searchinit(); putinview('search');}}

function submitenter(ele, e) {
var keycode; if (window.event) {keycode = window.event.keyCode;} else if (e) {keycode = e.which;} else {return true;}
if (keycode == 13) {var f=ele.form; f.submit(); if (f.onsubmit) {f.onsubmit();}; return false;} else {return true;}}

function baseinit() {jQuery.noConflict(); jQuery.ajaxSetup({
'dataFilter':function(data, type) {if (data!='') {if (type=='json') {return JSON.parse(data);} else if (type=='parse') {return namesearch.parseresults(JSON.parse(data));} else {return data;}} else {return 0;}},
'dataType':'text','cache':true});
var u = navigator.userAgent;
if (u.indexOf('Opera')!=-1) {vars.browser='Opera';}
else if (u.indexOf('MSIE 8')!=-1) {vars.browser='MSIE 8'; vars.ie67=true;}
else if (u.indexOf('MSIE 7')!=-1) {vars.browser='MSIE 7'; vars.ie67=true;}
else if (u.indexOf('MSIE 6')!=-1) {vars.browser='MSIE 6'; vars.ie67=true;}
else if (u.indexOf('Firefox 2')!=-1) {vars.browser='Firefox 2';}
if (data.server=='c1') {vars.serverurl='http://classic.'+serversettings.twdomain+'/';} else {vars.serverurl='http://'+serversettings.prefix+data.server+'.'+serversettings.twdomain+'/';};
vars.tip=document.createElement('div'); vars.tip.setAttribute('id','qTip'); vars.men=document.createElement('div'); vars.men.setAttribute('id','men'); vars.tip.innerHTML='<table cellpadding="0" cellspacing="0"><tr><td class="qtl"><div /></td><td class="qt"></td><td class="qtr"><div /></td></tr><tr><td class="ql"></td><td class="qc"><div></div></td><td class="qr"></td></tr><tr><td class="qbl"></td><td class="qb"></td><td class="qbr"></td></tr></table>'; vars.qtip=vars.tip.firstChild.firstChild.childNodes[1].childNodes[1].firstChild; document.body.appendChild(vars.tip); document.body.appendChild(vars.men);
document.onmousemove=move;
document.onclick=function(ev) {ev=ev||window.event,el=ev.target||ev.srcElement; if (el.tagName=='HTML') {if (!vars.notechange||confirm('You have editted your note. Discard note changes?')) {Close();}}}
document.onmouseup=mu;
setTimeout(function() {if ($('adde')&&$('adde').offsetHeight<5) {$('adde').innerHTML+='<div class="center">If you are blocking advertisements, consider <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&amp;business=contact%40tribalwarsmap%2ecom&amp;item_name=Tribal%20Wars%20Map&amp;page_style=Tribal_Wars_Map&amp;no_shipping=1&amp;return=http%3a%2f%2fwww%2etribalwarsmap%2ecom%2fdonated%2ehtml&amp;cn=Anything%20you%20want%20to%20add%3f&amp;tax=0&amp;currency_code=USD&amp;lc=US&amp;bn=PP%2dDonationsBF&amp;charset=UTF%2d8" target="_blank">donating</a>.<br />Tribal Wars Map relies on advertising income and donations to pay server maintenance.</div>';}},100);}
function initiate_map() {status='Primary functions'; baseinit(); if (serversettings.baseonly) {return false;};

status='Basic variables';
vars.defx=data.xcord; vars.defy=data.ycord;
setIconsize(); if (data.ani=='1') {jQuery.fx.off=true;}
if (data.minsize=='3') {vars.minw=3;} else if (data.minsize=='5') {vars.minw=5;}

status='ID to coordinate table'; var vi=vars.villageid; var vild=villagedata; for(var i in vild) {vi[villagedata[i][0]]=i;}

status='Coordinates with no village'; var none=vars.none;
if (data.map!='yes') {var max2=data.minimapx; if (data.width*1>max2*1||data.minimap=='no') {max2=data.width;};
var max=data.minimapy; if (data.height*1>max*1||data.minimap=='no') {max=data.height;};
var count2 = data.xcord-Math.floor(max2/2); max2=data.xcord*1+Math.ceil(max2/2);
var count = data.ycord-Math.floor(max/2); max=data.ycord*1+Math.ceil(max/2);
for(var ynow=count;ynow<max;ynow++) {for(var xnow=count2;xnow<max2;xnow++) {if (!vild['C-'+xnow+'-'+ynow]) {none['C-'+xnow+'-'+ynow]=true;}}}}
var l=varsnone.length; for(var i=0;i<l;i++) {if (!vild[varsnone[i]]) {none[varsnone[i]]=true;}};

status='Parse highlights';
if (data.lightvillages) {var vil=vars.villages; var vil2=vars.villages2; var vl = data.lightvillages.split('-'); var vll=vl.length; for(var i=0;i<vll;i+=2) {vil[vl[i]]=vl[i+1]; if (vi[vl[i]]) {vil2[vi[vl[i]]]=vl[i+1];}}}
if (data.lightplayers) {var pla=vars.players; var pl = data.lightplayers.split('-'); var pll=pl.length; for(var i=0;i<pll;i+=2) {pla[pl[i]]=pl[i+1];}}
if (data.lighttribes) {var tri=vars.tribes; var tr = data.lighttribes.split('-'); var trl=tr.length; for(var i=0;i<trl;i+=2) {tri[tr[i]]=tr[i+1];}}

if (vars.ie67) {status='Display menu (IE)'; $S('maindiv').display='block'; $S('coord').display='block';};

status='Initiate colours'; if (data.colours) {list=data.colours.split('-'); l=list.length; for(var i=0;i<l;i++) {var hex=highlight.hexcheck(list[i],1); if (hex!='') {vars.mapcols[i]=hex;}}};
status='Initiate mainvillage'; mainvillage.init();
status='Initiate markers'; marker.init();
status='Generate map'; generatemap();

if (data.mainvillage) {status='Place mainvillage'; mainvillage.place();};

status='Bind keyboard shortcuts'; if (document.addEventListener) {document.addEventListener('keydown', vars.keyfunc, false)} else if (document.attachEvent) {document.attachEvent('onkeydown', vars.keyfunc);} else {document.onkeydown=vars.keyfunc;};

status='Bind right click actions'; document.oncontextmenu=function(ev) {if (data.rightclick=='1'&&vars.smallmen) {
if (vars.lastment>(new Date().getTime()-200)||(vars.lastmen==vars.hoverx+'_'+vars.hovery&&vars.lastment>(new Date().getTime()-500))) {return false;} else {vars.lastment=new Date().getTime(); vars.lastmen=vars.hoverx+'_'+vars.hovery; showmen(vars.hoverx,vars.hovery,ev,vars.smallmen==2?'tribe':vars.minover,1); return false;}}};

if (!vars.ie67) {status='Display menu (!IE)'; $S('maindiv').display='block'; $S('coord').display='block';};

status='Initiate boundary variables'; var ma = $('main'); vars.width=ma.offsetWidth; vars.height=ma.offsetHeight; ma=$('linewrapper'); vars.posleft=parseInt(ma.offsetLeft); ma=$('linewrapper'); vars.postop=parseInt(ma.offsetTop);
ma=$S('mindiv'); ma.width=((data.minimapx*vars.minw)+1)+'px'; ma.height=((data.minimapy*vars.minw)+1)+'px'; ma=$S('xspan'); ma.width=((data.minimapx*vars.minw)+1)+'px'; ma.height=((data.minimapy*vars.minw)+1)+'px';

status='Initiate lines and circles'; draw.init();
status='Initiate hotkeys'; if (data.hotkeys) {var list=data.hotkeys.split('-'); l=list.length; for(var i=0;i<l;i+=4) {if (list[i]!='') {hotkeylist[list[i]]=[list[i+1],list[i+2],list[i+3]];}}};
status='Place minimap'; calcpos(1);
status='Generate minimap'; mapurl(0,1);

status='Display generate time and update info'; var lastupdated=Math.max(Math.round((new Date().getTime()/1000+serversettings.time-serversettings.lastu)/60), 1); $('load').innerHTML='Loaded in '+(Math.round((new Date().getTime()-ts)/10)/100)+' seconds. Last updated <span id="lsu">'+lastupdated+' minute'+(lastupdated==1?'':'s')+'</span> ago.';

status='Start "last updated" interval'; setInterval(function() {if ($('lsu')) {var lastups=Math.max(Math.round((new Date().getTime()/1000+serversettings.time-serversettings.lastu)/60), 1); $('lsu').innerHTML=lastups+' minute'+(lastups==1?'':'s');}},60000);

status='Collapse loading menu'; $S('loadingspacer').display='none'; $S('ldspacer').display='none'; $S('lddiv').display='none'; $S('loading').display='none';

if (data.map=='yes') {status='Load minimap map overlay data'; mov(data.xcord,data.ycord,1,1);}

status='Display message close link'; if ($('addhide')) {$('addhide').innerHTML='<a href="javascript: toggle(\'adds\');" class="spl"><b>Close</b></a>';}
status='Finished';}

/* DHTML Color Sphere | http://www.colorjack.com/software/dhtml+color+sphere.html */
var hsv=[0,0,100];
function toHex(v){v=Math.min(Math.max(0,Math.round(v)),255);return('0123456789ABCDEF'.charAt((v-v%16)/16)+'0123456789ABCDEF'.charAt(v%16));}
function coreXY(e){var o = 'mCur';
function point(a,b){commit([vars.xc+a,vars.yc+b]);}
function M(v,a,z){return(Math.max(!isNaN(z)?z:0,!isNaN(a)?Math.min(a,v):v));}
function commit(v){var W=168; var W2=W/2; var W3=W2/2; var x=v[0]-W2-3,y=W-v[1]-W2+21,SV=Math.sqrt(Math.pow(x,2)+Math.pow(y,2)),hue=Math.atan2(x,y)/(Math.PI*2);hsv=[hue>0?(hue*360):((hue*360)+360),SV<W3?(SV/W3)*100:100,SV>=W3?Math.max(0,1-((SV-W3)/(W2-W3)))*100:100];
function hsv2rgb(r){var R,B,G,S=r[1]/100; var V=r[2]/100; var H=r[0]/360; if(S>0){if(H>=1) {H=0;} H=6*H; var F=H-Math.floor(H);var A=Math.round(255*V*(1.0-S)); B=Math.round(255*V*(1.0-(S*F))); var C=Math.round(255*V*(1.0-(S*(1.0-F)))); V=Math.round(255*V);switch(Math.floor(H)){case 0:R=V;G=C;B=A;break;case 1:R=B;G=V;B=A;break;case 2:R=A;G=V;B=C;break;case 3:R=A;G=B;B=V;break;case 4:R=C;G=A;B=V;break;case 5:R=V;G=A;B=B;break;}return([R?R:0,G?G:0,B?B:0]);}else{return([(V=Math.round(V*255)),V,V]);}}
function cords(W){var W2=W/2,rad=(hsv[0]/360)*(Math.PI*2), hyp=(hsv[1]+(100-hsv[2]))/100*(W2/2);$S('mCur').left=Math.round(Math.abs(Math.round(Math.sin(rad)*hyp)+W2+3))+'px';$S('mCur').top=Math.round(Math.abs(Math.round(Math.cos(rad)*hyp)-W2-21))+'px';}
function rgb2hex(r){return(toHex(r[0])+toHex(r[1])+toHex(r[2]));}; cords(W); highlight.insert(rgb2hex(hsv2rgb(hsv)));}
function absPos(e) {var r={x:e.offsetLeft,y:e.offsetTop}; if(e.offsetParent) {var v=absPos(e.offsetParent); r.x+=v.x; r.y+=v.y;} return(r);}
var d=$S(o);
var ab=absPos($(o).parentNode);point(-(ab.x-5),-(ab.y-28),e); var oX=parseInt(d.left, 10)-vars.xc; var oY=parseInt(d.top, 10)-vars.yc;
document.onmousemove=function(e){move(e);point(oX,oY);};
document.onmouseup=function(){document.onmousemove=function(evt){move(evt);}; document.onmouseup=mu;}}

/* wz_jsgraphics.js v. 3.05 | http://www.walterzorn.com | http://www.devira.com | http://www.walterzorn.de | (c) 2002-2004 Walter Zorn | LICENSE: LGPL */
var jg_ok,jg_ie,jg_fast,jg_dom,jg_moz;function _chkDHTM(wnd,x,i){x=wnd.document.body||null;jg_ie=x&&typeof x.insertAdjacentHTML!="undefined"&&wnd.document.createElement;jg_dom=(x&&!jg_ie&&typeof x.appendChild!="undefined"&&typeof wnd.document.createRange!="undefined"&&typeof(i=wnd.document.createRange()).setStartBefore!="undefined"&&typeof i.createContextualFragment!="undefined");jg_fast=jg_ie&&wnd.document.all&&!wnd.opera;jg_moz=jg_dom&&typeof x.style.MozOpacity!="undefined";jg_ok=!!(jg_ie||jg_dom)}function _pntCnvDom(){var x=this.wnd.document.createRange();x.setStartBefore(this.cnv);x=x.createContextualFragment(jg_fast?this._htmRpc():this.htm);if(this.cnv)this.cnv.appendChild(x);this.htm=""}function _pntCnvIe(){if(this.cnv)this.cnv.insertAdjacentHTML("BeforeEnd",jg_fast?this._htmRpc():this.htm);this.htm=""}function _pntDoc(){this.wnd.document.write(jg_fast?this._htmRpc():this.htm);this.htm=''}function _pntN(){}function _mkDiv(x,y,w,h){this.htm+='<div style="position:absolute;'+'left:'+x+'px;'+'top:'+y+'px;'+'width:'+w+'px;'+'height:'+h+'px;'+'clip:rect(0,'+w+'px,'+h+'px,0);'+'background-color:'+this.color+(!jg_moz?';overflow:hidden':'')+';"><\/div>'}function _mkDivIe(x,y,w,h){this.htm+='%%'+this.color+';'+x+';'+y+';'+w+';'+h+';'}function _mkDivPrt(x,y,w,h){this.htm+='<div style="position:absolute;'+'border-left:'+w+'px solid '+this.color+';'+'left:'+x+'px;'+'top:'+y+'px;'+'width:0px;'+'height:'+h+'px;'+'clip:rect(0,'+w+'px,'+h+'px,0);'+'background-color:'+this.color+(!jg_moz?';overflow:hidden':'')+';"><\/div>'}var _regex=/%%([^;]+);([^;]+);([^;]+);([^;]+);([^;]+);/g;function _htmRpc(){return this.htm.replace(_regex,'<div style="overflow:hidden;position:absolute;background-color:'+'$1;left:$2px;top:$3px;width:$4px;height:$5px"></div>\n')}function _htmPrtRpc(){return this.htm.replace(_regex,'<div style="overflow:hidden;position:absolute;background-color:'+'$1;left:$2px;top:$3px;width:$4px;height:$5px;border-left:$4px solid $1"></div>\n')}function _mkLin(x1,y1,x2,y2){if(x1>x2){var _x2=x2;var _y2=y2;x2=x1;y2=y1;x1=_x2;y1=_y2}var dx=x2-x1,dy=Math.abs(y2-y1),x=x1,y=y1,yIncr=(y1>y2)?-1:1;if(dx>=dy){var pr=dy<<1,pru=pr-(dx<<1),p=pr-dx,ox=x;while(dx>0){--dx;++x;if(p>0){this._mkDiv(ox,y,x-ox,1);y+=yIncr;p+=pru;ox=x}else p+=pr}this._mkDiv(ox,y,x2-ox+1,1)}else{var pr=dx<<1,pru=pr-(dy<<1),p=pr-dy,oy=y;if(y2<=y1){while(dy>0){--dy;if(p>0){this._mkDiv(x++,y,1,oy-y+1);y+=yIncr;p+=pru;oy=y}else{y+=yIncr;p+=pr}}this._mkDiv(x2,y2,1,oy-y2+1)}else{while(dy>0){--dy;y+=yIncr;if(p>0){this._mkDiv(x++,oy,1,y-oy);p+=pru;oy=y}else p+=pr}this._mkDiv(x2,oy,1,y2-oy+1)}}}function _mkLin2D(x1,y1,x2,y2){if(x1>x2){var _x2=x2;var _y2=y2;x2=x1;y2=y1;x1=_x2;y1=_y2}var dx=x2-x1,dy=Math.abs(y2-y1),x=x1,y=y1,yIncr=(y1>y2)?-1:1;var s=this.stroke;if(dx>=dy){if(dx>0&&s-3>0){var _s=(s*dx*Math.sqrt(1+dy*dy/(dx*dx))-dx-(s>>1)*dy)/dx;_s=(!(s-4)?Math.ceil(_s):Math.round(_s))+1}else var _s=s;var ad=Math.ceil(s/2);var pr=dy<<1,pru=pr-(dx<<1),p=pr-dx,ox=x;while(dx>0){--dx;++x;if(p>0){this._mkDiv(ox,y,x-ox+ad,_s);y+=yIncr;p+=pru;ox=x}else p+=pr}this._mkDiv(ox,y,x2-ox+ad+1,_s)}else{if(s-3>0){var _s=(s*dy*Math.sqrt(1+dx*dx/(dy*dy))-(s>>1)*dx-dy)/dy;_s=(!(s-4)?Math.ceil(_s):Math.round(_s))+1}else var _s=s;var ad=Math.round(s/2);var pr=dx<<1,pru=pr-(dy<<1),p=pr-dy,oy=y;if(y2<=y1){++ad;while(dy>0){--dy;if(p>0){this._mkDiv(x++,y,_s,oy-y+ad);y+=yIncr;p+=pru;oy=y}else{y+=yIncr;p+=pr}}this._mkDiv(x2,y2,_s,oy-y2+ad)}else{while(dy>0){--dy;y+=yIncr;if(p>0){this._mkDiv(x++,oy,_s,y-oy+ad);p+=pru;oy=y}else p+=pr}this._mkDiv(x2,oy,_s,y2-oy+ad+1)}}}function _mkLinDott(x1,y1,x2,y2){if(x1>x2){var _x2=x2;var _y2=y2;x2=x1;y2=y1;x1=_x2;y1=_y2}var dx=x2-x1,dy=Math.abs(y2-y1),x=x1,y=y1,yIncr=(y1>y2)?-1:1,drw=true;if(dx>=dy){var pr=dy<<1,pru=pr-(dx<<1),p=pr-dx;while(dx>0){--dx;if(drw)this._mkDiv(x,y,1,1);drw=!drw;if(p>0){y+=yIncr;p+=pru}else p+=pr;++x}}else{var pr=dx<<1,pru=pr-(dy<<1),p=pr-dy;while(dy>0){--dy;if(drw)this._mkDiv(x,y,1,1);drw=!drw;y+=yIncr;if(p>0){++x;p+=pru}else p+=pr}}if(drw)this._mkDiv(x,y,1,1)}function _mkRect(x,y,w,h){var s=this.stroke;this._mkDiv(x,y,w,s);this._mkDiv(x+w,y,s,h);this._mkDiv(x,y+h,w+s,s);this._mkDiv(x,y+s,s,h-s)}function _mkRectDott(x,y,w,h){this.drawLine(x,y,x+w,y);this.drawLine(x+w,y,x+w,y+h);this.drawLine(x,y+h,x+w,y+h);this.drawLine(x,y,x,y+h)}function jsgFont(){this.PLAIN='font-weight:normal;';this.BOLD='font-weight:bold;';this.ITALIC='font-style:italic;';this.ITALIC_BOLD=this.ITALIC+this.BOLD;this.BOLD_ITALIC=this.ITALIC_BOLD}var Font=new jsgFont();function jsgStroke(){this.DOTTED=-1}var Stroke=new jsgStroke();function jsGraphics(cnv,wnd){this.setColor=function(x){this.color=x.toLowerCase()};this.setStroke=function(x){this.stroke=x;if(!(x+1)){this.drawLine=_mkLinDott;this.drawRect=_mkRectDott}else if(x-1>0){this.drawLine=_mkLin2D;this.drawRect=_mkRect}else{this.drawLine=_mkLin;this.drawRect=_mkRect}};this.setPrintable=function(arg){this.printable=arg;if(jg_fast){this._mkDiv=_mkDivIe;this._htmRpc=arg?_htmPrtRpc:_htmRpc}else this._mkDiv=arg?_mkDivPrt:_mkDiv};this.drawPolyline=this.drawPolyLine=function(x,y){for(var i=x.length-1;i;){--i;this.drawLine(x[i],y[i],x[i+1],y[i+1])}};this.fillRect=function(x,y,w,h){this._mkDiv(x,y,w,h)};this.drawString=function(txt,x,y){this.htm+='<div style="position:absolute;white-space:nowrap;'+'left:'+x+'px;'+'top:'+y+'px;'+'font-family:'+this.ftFam+';'+'font-size:'+this.ftSz+';'+'color:'+this.color+';'+this.ftSty+'">'+txt+'<\/div>'};this.drawStringRect=function(txt,x,y,width,halign){this.htm+='<div style="position:absolute;overflow:hidden;'+'left:'+x+'px;'+'top:'+y+'px;'+'width:'+width+'px;'+'text-align:'+halign+';'+'font-family:'+this.ftFam+';'+'font-size:'+this.ftSz+';'+'color:'+this.color+';'+this.ftSty+'">'+txt+'<\/div>'};this.clear=function(){this.htm="";if(this.cnv)this.cnv.innerHTML=""};this.setStroke(1);this.color="#000000";this.htm="";this.wnd=wnd||window;if(!jg_ok)_chkDHTM(this.wnd);if(jg_ok){if(cnv){if(typeof(cnv)=="string")this.cont=document.all?(this.wnd.document.all[cnv]||null):document.getElementById?(this.wnd.document.getElementById(cnv)||null):null;else if(cnv==window.document)this.cont=document.getElementsByTagName("body")[0];else this.cont=cnv;this.cnv=this.wnd.document.createElement("div");this.cnv.style.fontSize=0;this.cont.appendChild(this.cnv);this.paint=jg_dom?_pntCnvDom:_pntCnvIe}else this.paint=_pntDoc}else this.paint=_pntN;this.setPrintable(false)}function _mkLinVirt(aLin,x1,y1,x2,y2){var dx=Math.abs(x2-x1),dy=Math.abs(y2-y1),x=x1,y=y1,xIncr=(x1>x2)?-1:1,yIncr=(y1>y2)?-1:1,p,i=0;if(dx>=dy){var pr=dy<<1,pru=pr-(dx<<1);p=pr-dx;while(dx>0){--dx;if(p>0){aLin[i++]=x;y+=yIncr;p+=pru}else p+=pr;x+=xIncr}}else{var pr=dx<<1,pru=pr-(dy<<1);p=pr-dy;while(dy>0){--dy;y+=yIncr;aLin[i++]=x;if(p>0){x+=xIncr;p+=pru}else p+=pr}}for(var len=aLin.length,i=len-i;i;)aLin[len-(i--)]=x};function _CompInt(x,y){return(x-y)}

/* jQuery JavaScript Library v1.3.2 | http://jquery.com/ | Copyright (c) 2009 John Resig | Dual licensed under the MIT and GPL licenses. | http://docs.jquery.com/License */
(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
/* Sizzle CSS Selector Engine - v0.9.3 | Copyright 2009, The Dojo Foundation | Released under the MIT, BSD, and GPL Licenses. | http://sizzlejs.com/ */
(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML='   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
jQuery(document).ready(initiate_map);
status='Javascript loaded';
