// JavaScript Document
var ElemOpacity = 0;
var PageOpacity = 0;
var ElemTimer;
var PageTimer;
var msElemLimitMutiplier=10;
var msPageLimitMutiplier=13;
var start;
var end;

//document.write ("<div id=\"timings\"></div>");

function FadeOut(objID, Opacity, fadeType, opacityStep){
	end = new Date();
//	var strMsgType = 'Ok:';
	if (end-start > msLimit){
		Opacity = 0;
//		strMsgType = 'Error:';
	};
  	if (Opacity > 0){
    	Opacity -= opacityStep;
	} 
  	else {
		Opacity = 0;
		if (fadeType == 'page')
	    	clearInterval(PageTimer);
		else
	    	clearInterval(ElemTimer);
//		document.getElementById('timings').innerHTML = strMsgType + (end-start) + '/' + msLimit;
  	};
	document.getElementById(objID).style.filter = "alpha(style=0,opacity=" + Opacity + ")";
	document.getElementById(objID).style.opacity = Opacity /100;
	start = new Date();
	return Opacity;
}

function FadeIn(objID, Opacity, fadeType, opacityStep){
	end = new Date();
//	var strMsgType = 'Ok:';
	if (end-start > msLimit){
		Opacity=100;
//		strMsgType = 'Error:';
	};
	if (Opacity < 100){
		Opacity += opacityStep;
	} 
	else {
		Opacity = 100;
		if (fadeType == 'page')
			clearInterval(PageTimer);
		else
			clearInterval(ElemTimer);

//		document.getElementById('timings').innerHTML = strMsgType + (end-start) + '/' + msLimit;
	};
	document.getElementById(objID).style.filter = "alpha(style=0,opacity=" + Opacity + ")";
	document.getElementById(objID).style.opacity = Opacity /100;
	start = new Date();
	return Opacity;
}

function XBrowserAddHandler(target,eventName,handlerName){
	if ( target.addEventListener )
		target.addEventListener(eventName, handlerName, false);
	else if ( target.attachEvent )
		target.attachEvent("on" + eventName, handlerName);
	else
		target["on" + eventName] = handlerName;
}

var objDivID;
var pageTimeStep;
function pageFadeIn(objID, objLoadID, timeStep){
//	alert("hello");
	objDivID = objID;
	pageTimeStep = timeStep;
	document.getElementById(objLoadID).style.zIndex = -10;
	document.getElementById(objLoadID).style.visibility = "hidden";
	XBrowserAddHandler(window,'load', function(){evtFunctionIn(objDivID)});
}

var evtFunctionIn = function divFadeIn(objID){
	document.getElementById(objID).style.opacity = 0;
	document.getElementById(objID).style.filter = "alpha(style=0,opacity=0)";
	document.getElementById(objID).style.visibility = "visible";
	msLimit = msPageLimitMutiplier * pageTimeStep + 100
//	msLimit = 5
	start = new Date();
//	start = 0;
//	end = 0;
	PageTimer = setInterval("PageOpacity = FadeIn('"+objID+"',PageOpacity, 'page', 10)", 10);
//	alert(window.location);
	return true;
}

var objDOMnxtProcId;
var msLimit;
function FadeElement(strType, objDOMElement, timeStep, opacityStep){
	if (ElemTimer!='undefined')	clearInterval(ElemTimer);
	objDOMnxtProcId = objDOMElement.id;
	msLimit = msElemLimitMutiplier * timeStep + 30;
//	msLimit = 5
	start = new Date();
//	start = 0;
//	end = 0;
	switch (strType){
		case 'in':
			ElemOpacity = 0;
			ElemTimer = setInterval("ElemOpacity=FadeIn(objDOMnxtProcId, ElemOpacity, 'elem', " + opacityStep + ")", timeStep);
			break;
		case 'out':
			msLimit = msElemLimitMutiplier * timeStep + 300;
			ElemTimer = setInterval("ElemOpacity=FadeOut(objDOMnxtProcId, ElemOpacity, 'elem', " + opacityStep + ")", timeStep);
	}
}

//-------------------------------------------------------------------
//--------------------- Under Development ---------------------------
//-------------------------------------------------------------------

var elems_a = document.getElementsByTagName('a');
function pageFadeOut(){
	for (var i=0;i<elems_a.length;i++){
		href = elems_a[i].href;
		XBrowserAddHandler(elems_a[i],'mouseup', function(){evtFunctionOut(objDivID, i, href)});
		XBrowserAddHandler(elems_a[i],'click', function(){evtFunctionNull()});
		elems_a[i].href = '#';
	}
}

var target;
var evtFunctionNull = function divDoNull(){return false;}
evtFunctionOut = function divFadeOut(objID,ii,ahref){
	if (PageTimer!='undefined')	clearInterval(PageTimer);
	PageTimer = setInterval("PageOpacity=FadeOut('"+objID+"', PageOpacity, 'page')", 10);
	target = ahref;
	checkIfZero();
//	alert(target);
//	alert(this.href);
	return false;
}

function checkIfZero(){
	if (PageOpacity>0) {
		window.setTimeout("checkIfZero();",100);
	}
	else {
//		alert(PageOpacity);
		document.getElementById(objDivID).style.visibility = 'visible';
		document.getElementById(objDivID).style.opacity = 1;
		document.getElementById(objDivID).style.filter = "alpha(style=0,opacity=100)";
		window.location = target;
	}
}

