//<![CDATA[

/* holy javascript batman! */

// our target audience is msie, gecko, opera, and khtml
var agent=navigator.userAgent.toString();
var opera=(agent.indexOf('Opera')!=-1); // Opera
var msie=(agent.indexOf('MSIE')!=-1&&!opera); // IE
var khtml=(agent.indexOf('KHTML')!=-1); // Safari, Konqueror
var gecko=(agent.indexOf('Gecko')!=-1&&!khtml) // Firefox

// alert users of non mshtml/gecko (safari) engine browsers
// that the page may not display correctly
/*if(!(	(agent.indexOf('Gecko')!=-1 && agent.indexOf('Safari')==-1) || // mozilla good, safari bad
	agent.indexOf('Opera')!=-1 || // opera good (or close enough)
	agent.indexOf('MSIE')!=-1 // ie6/7 good
	|| (agent.indexOf('Windows')!=-1 && agent.indexOf('Safari')!=-1) // why does windows safari work?
))alert('Warning: Page may not display correctly!');*/

// utilities
function e(id){return document.getElementById(id);}
function _rnd(a){return Math.floor(Math.random()*a);}
function array_randomize(a){
	var b=a.length;
	if(b==0)return false;
	while(--b){
		var c=_rnd(b+1);
		var d=a[b];
		a[b]=a[c];
		a[c]=d;
	}
	return a;
}
// array_indexOf( array, value, begin, strict ) - Return index of the first element that matches value
function array_indexOf(a,v,b,s){
	for(var i=+b||0;i<a.length;i++)
		if(a[i]===v||s&&a[i]==v)return i;
	return -1;
}
var daysArray=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
var monthsArray=['January','February','March','April','May','June','July','August','September','October','November','December'];
function clock(){
	var oDiv=e('clock');
	var tDate=new Date(); // get current date/time
	var h=tDate.getHours();
	var period=((h<12)?('AM'):('PM')); // determine am/pm
	h=((h>12)?(h-12):((h==0)?(12):(h))); // change 24h to 12h
	var m='00'+tDate.getMinutes();
	oDiv.innerHTML=h+':'+m.substr(m.length-2,2)+' '+period; // time
	oDiv.title=
		daysArray[tDate.getDay()]+', '+ // (0 for Sunday thru 6 for Saturday)
		monthsArray[tDate.getMonth()]+' '+ // (0 for January thru 11 for December)
		tDate.getDate()+', '+ // (between 1 and 31)
		tDate.getFullYear(); // date 'Tuesday, May 23, 2006'
	return;
}
function changeOpac(opacity,obj){
	obj.style.opacity=(opacity/100);
	obj.style.MozOpacity=(opacity/100);
	obj.style.KhtmlOpacity=(opacity/100);
	obj.style.filter='alpha(opacity='+opacity+')';
	return;
}
var fadeshow={
	currentElement: null,
	degree: 0,
	delay: 5000,
	imageArray: [],
	imageHistory: [],
	imagePath: '/res/background/',
	imageStyle: 'position:absolute;top:-116px;left:0;background-color:silver;display:block;',
	parentElement: 'background',
	timerID: null,
	fade: function(){
		if(this.degree<100){
			this.degree+=10;
			changeOpac(this.degree,this.currentElement);
		}else{
			clearInterval(this.timerID);
			this.degree=0;
			setTimeout('fadeshow.rotate()',this.delay);
		}
		return;
	},
	rotate: function(){
		this.currentElement=e(((this.currentElement.id=='fadeimage0')?'fadeimage1':'fadeimage0'));
		//this.imageArray.sort(function(){return 0.5-Math.random();});
		//this.imageArray=array_randomize(this.imageArray); // randomize image array
		// prevent repeats
		var ptr=0;
		do{
			ptr=_rnd(this.imageArray.length);
		}while(array_indexOf(this.imageHistory,ptr)!=(-1)); // pick a random image that isn't in the image history
		this.imageHistory.splice(0,0,ptr);
		this.imageHistory.splice(this.imageHistory.length-1,1); // make the array fifo, remove elements
		this.currentElement.src=this.imageArray[ptr].src;
		changeOpac(this.degree,this.currentElement);
		this.currentElement.style.zIndex++;
		this.timerID=setInterval('fadeshow.fade()',50);
		return;
	},
	start: function(){
		// preload images
		var _arr=[];
		for(var i=0;i<this.imageArray.length;i++){
			_arr[i]=new Image(798,599);
			_arr[i].src=this.imagePath+this.imageArray[i];
		}
		this.imageArray=_arr;
		this.imageHistory=new Array(Math.round(this.imageArray.length/2)); // half the size of the image array
		this.imageHistory[0]=_rnd(this.imageArray.length);
		e(this.parentElement).innerHTML=
			'<img src="'+this.imageArray[this.imageHistory[0]].src+'" alt="" id="fadeimage0" style="'+this.imageStyle+'" />'+
			'<img src="'+this.imageArray[this.imageHistory[0]].src+'" alt="" id="fadeimage1" style="'+this.imageStyle+'" />';
		this.currentElement=e('fadeimage0');
		this.currentElement.style.zIndex++;
		changeOpac(100,this.currentElement); // IE needs this for some reason
		setTimeout('fadeshow.rotate()',this.delay);
		return;
	}
};
var intro={
	el: null,
	st: null,
	init: function(pt){ // create intro
		this.el=document.createElement('div');
		this.el.style.width='100%';//'798px';
		this.el.style.textAlign='center';
		this.el.style.marginTop='25px';
		//this.el.style.border='1px solid #f00';
		changeOpac(0,this.el);
		var oLink=document.createElement('a');
		oLink.href='http://www.mozilla.com/en-US/firefox/';
		oLink.title="Get Firefox";
		oLink.innerHTML=(msie?"<div style=\"cursor:pointer;height:400px;width:400px;"+
			"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader("+
			"src='/res/Firefox-logo.png',sizingMethod='scale');\">&nbsp;<\/div>":
			"<img src=\"/res/Firefox-logo.png\" alt=\"\" width=\"400\" height=\"400\" style=\"border:0px none;cursor:pointer;\" />");
		this.el.appendChild(oLink);
		pt.appendChild(this.el);
		return;
	},
	start: function(pt){
		if(this.el==null)this.init(pt);
		this.el.style.display="";
		this.st=new Date().getTime();
		this.fade();
		return;
	},
	fade: function(){
		var tm=new Date().getTime()-this.st;
		if(tm<=1000){ // fade in
			tm=Math.round(tm*.025);
			changeOpac(tm,this.el);
			setTimeout('intro.fade()',tm);
		}else if(tm>1000&&tm<=2000){ // fade out
			tm=Math.round((2000-tm)*.025);
			changeOpac(tm,this.el);
			setTimeout('intro.fade()',tm);
		}else if(tm>2000){ // finished intro
			changeOpac(0,this.el);
			this.el.style.display='none';
			//intro.start(); // loop
		}
		return;
	}
};
// install handlers
document.oncontextmenu=function(ev){ // html validator dosen't like oncontextmenu="javascript:return false;"
	if(!ev)var ev=window.event;
	var tg=(window.event)?ev.srcElement:ev.target;
	return((tg.tagName!='IMG')?true:false); // don't steal the images
};
window.onresize=function(){
	if(gecko)return;
	var obj=e('page').style;
	var sz=window.size();
	if(msie){ // manual centering
		var pt=window.center();
		obj.margin='0px';
		obj.top=((sz.height<=600)?'0px':((pt.y-300)+'px'));
		obj.left=((sz.width<=800)?'0px':((pt.x-400)+'px'));
	}else if(khtml){ // vertical limit
		obj.marginTop=((sz.height<=600)?'0px':'auto');
	}else if(opera){ // horizontal & vertical limit
		obj.marginTop=((sz.height<=600)?'0px':'auto');
		obj.marginLeft=((sz.width<=800)?'0px':'auto');
	}
	return;
};
window.onload=function(){
	if(khtml){
		document.body.style.overflow='hidden';
	}else{
		document.body.style.height='auto';
		document.documentElement.style.height='auto';
	}
	window.onresize();
	// create menus
	AddMenus();
	// set menu opacity
//	changeOpac(80,'dropmenudiv');
	var nodes=e('topmenu').getElementsByTagName('LI');
	for(var i=0;i<nodes.length;i++)
		if(!(/^(menu[0-9])$/).test(nodes.item(i).childNodes[0].id.toString()))
			changeOpac(80,nodes.item(i));
	// create link
	e('auth').innerHTML=_decode64('EUwNRV9ISxAPQExEQVlCF1lBTkVIQV1tXlhDVElYWU5FSF5eA0hJWBJeWE9HSE5ZEHlhbggfHXpIT15EWUgPE1lBTkVIQV1tXlhDVElYWU5FSF5eA0hJWBECTBM=',45);
	// decode any encoded page segments
	var elements=document.getElementsByTagName('span');
//	var r1=/^base64:\/\/\|([A-Za-z0-9\+\/=]+)\|\/$/;
	var r2=/^code64:\/\/\|([A-Za-z0-9\+\/=]+)\|([0-9]{1,2})\|\/$/;
	for(var i=0;i<elements.length;i++){
		with(elements[i]){
//			if(r1.test(innerHTML))innerHTML=base64_decode(s.replace(r1,"$1"));
			if(r2.test(innerHTML)){
				var a=[];
				eval(innerHTML.replace(r2,"a=[\"$1\",\"$2\"];"));
				innerHTML=_decode64(a[0],parseInt(a[1],10));
			}
		}
	}
	// add copyright
	e('copy').innerHTML='Copyright &copy; '+(new Date()).getFullYear();
	// start clock
	clock();
	setInterval('clock()',1000);
	// start fadeshow
	changeOpac(65,e('background'));
	fadeshow.start();
	if((_rnd(50)==24)&&!gecko)intro.start(e('content'));
	return;
};
//]]>
