var nowtime=200911301735;
//getnowpls();
function getnowpls(){ // for daylight timezone switching
 try{req = new ActiveXObject("Microsoft.XMLHTTP");}
 catch(e){req = new XMLHttpRequest();}
 req.open("get", ''+'/js/timezones_date.htm'+'', true);
 req.onreadystatechange = myCode;
 req.send(null);
 function myCode(){if(req.readyState == 4){ if(req.status == 200 || req.status == 0){ nowtime=parseInt(eval(''+req.responseText+''),10);} } }
}
function runtimezonescript(){
	function getElementsByClassName(strClassName,obj) {
	    var ar=arguments[2]||new Array();
    	var re=new RegExp("\\b"+strClassName+"\\b","gi");
	    if(re.test(obj.className)) ar.push(obj);
	    for (var i=0;i<obj.childNodes.length;i++) getElementsByClassName(strClassName,obj.childNodes[i],ar);
	    return ar;
	}
	var aryClassElements=getElementsByClassName('timezone',document);
	for (var i=0;i<aryClassElements.length;i++) timeZone(aryClassElements[i]);
}

function timeZone(classelement){
/*	MANUAL
	%H%   - hours (eg. 2)
	%H2%  - hours (eg. 02) with leading zero
	%M%   - minutes (eg. 2)
	%M2%  - minutes (eg. 02) with leading zero
	%Z%   - timezone
	%DW%  - day of week (eg. Friday)
	%DD%  - day (eg. 2)
	%DD2% - day (eg. 02) with leading zero
	%EDD% - end of day: st, nd, rd, th (only for en)
	%DM%  - month (eg. 5)
	%DM2% - month (eg. 05) with leading zero
	%DMT% - month (eg. May)
	%DY%  - year (eg. 2009)
	%DY2% - year (eg. 09)
*/
	var val=classelement.innerHTML;
	var t=val.split("/");
	var TC=(typeof(t[1])=="undefined"||t[1]=="zone")?true:false; // short version 06:00/pattern or full 06:00/4/9/2009/pattern
	if(typeof(t[1])=="undefined")t[1]="";
	var time=t[0].split(":");

	function chtime(diff){ // check the hour, if < 0 then day-one if > 0 then day+one
		if(!TC)	t[1]=noze(t[1]);
		time[0]=noze(time[0]);
		diff=noze(diff);
		if(diff>0) if(time[0]+diff>24) {if(!TC)t[1]++;time[0]=diff-(24-time[0]);} else time[0]=time[0]+diff;
		else if(diff<0) if(time[0]+diff<0) {if(!TC)t[1]--;time[0]=24+time[0]+diff;} else time[0]=time[0]+diff;
	}

	var host=location.host;
	var myzone=(host.indexOf('azartia')>=0)?"CET":((host.indexOf('five') >= 0 || host.indexOf('fireball') >= 0 || host.indexOf('glitterball') >= 0)?"BST":"ET");

	var change=((nowtime>"200910250000"&&nowtime<"200911010000")||(nowtime>"201010310000"&&nowtime<"200911070000"))?-1:0;
	switch(myzone) {
		case("BST"):chtime(change+5);myzone=(nowtime>"200910250000"&&nowtime<"201003280000")?"GMT":myzone;break;
		case("CET"):chtime(change+6);break;
		default:noze(time[0]);break;
	}

	var lang=document.getElementsByTagName('html')[0].getAttribute('lang'); // from - <html lang="en"...>
	var months_def=datetimezones.en.months; // needed for day of the week
	var base="datetimezones."+lang;
	var months=eval(base+".months");
	var dow=eval(base+".dow");

	function putpattern(d,s){ // take pattern from lang and fill the blank spots with default pattern set
		var ret=[];
		for(i in d){ret[i]=(typeof(s[i])=="undefined")?d[i]:s[i];}
		return ret;
	}

	var epatt=eval("datetimezones."+lang+".pattern"); // local pattern set
	var patterns=(typeof(eval("datetimezones."+lang+".pattern"))=="undefined")?datetimezones.pattern:putpattern(datetimezones.pattern,epatt);

	function noze(i){return parseInt(i,10);}
	function zero(i){i=parseInt(i,10);return (i>9)?i:"0"+i;}
	function endofday(i){
		var ret="";
		switch(i){
			case(1):
			case(21):
			case(31):ret="st";break;
			case(2):
			case(22):ret="nd";break;
			case(3):
			case(23):ret="rd";break;
			default:ret="th";break;
		}
		return ret;
	}
	function getpatt(p){
		eval('var input={"%H%":time[0],"%H2%":zero(time[0]),"%M%":noze(time[1]),"%M2%":zero(time[1]),"%Z%":myzone'+((!TC)?',"%DW%":dow[(new Date(noze(t[1])+" "+months_def[noze(t[2])]+", "+((t[3].length<4)?"20"+t[3]:t[3]))).getDay()],"%DD%":noze(t[1]),"%DD2%":zero(t[1]),"%DM%":noze(t[2]),"%DM2%":zero(t[2]),"%DMT%":months[noze(t[2])],"%DY%":(t[3].length<4)?"20"+t[3]:t[3]'+((lang=="en")?',"%EDD%":endofday(noze(t[1]))':'')+',"%DY2%":(t[3].length>2)?t[3].substring(2,4):t[3]};':"}"));
if(!TC) pt=p.split("%");
		patt=(TC)?((t[1]=="")?patterns['time']:patterns['zone']):((pt.length>2)?p:patterns[p]);
		if(t.length>5&&!TC){
			var ppa=new Array;var y=0;
			for(var x=4;x<t.length;x++){
				ppa[y]=t[x];
				y++;
			}
			patt=ppa.join("/");
		}
		for(key in input) patt=patt.replace(key,input[key]);
		return patt;
	}
	classelement.innerHTML=(TC)?getpatt(t[4]):((t.length==4||t[4]=="")?getpatt(eval("patterns['"+patterns['default']+"']")):getpatt(t[4]));
}
