var  default_time = 200.0; //default time to fade

// FadeStates: -2 Transparent, 2 Opaque, -1 Opaque to Transparent, 1 Transparent to Opaque

//start & finish opacities: 0 to 1
function fadeon(eid,finish,time){
	var element = document.getElementById(eid);
	if(element==null)
		return;
	if(!finish)
		finish=1;
	element.Finish=finish;
	if(!time)
		time=default_time;
	element.TimeToFade=time;
	
	if(element.style.display=="none"||element.style.display==""||element.style.display==null){
		element.style.display="block";
		element.style.opacity=0;
		element.style.filter="alpha(opacity=0)";
		element.FadeState=1;
		element.FadeTimeLeft=element.TimeToFade;
		element.Start=element.style.opacity;
		setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 15);
	} else if(element.FadeState==-1){
		element.FadeState=1;
		element.FadeTimeLeft=element.TimeToFade-element.FadeTimeLeft;
	} else if(element.FadeState==-2) {
		element.FadeState=1;
		element.FadeTimeLeft=element.TimeToFade;
		element.Start=element.style.opacity;
		setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 15);
	}
}

function fadeoff(eid,finish,time){		
	var element = document.getElementById(eid);
	if(element==null)
		return;
	if(!finish)
		finish=0;
	element.Finish=finish;
	if(!time)
		time=default_time;
	element.TimeToFade=time;
	
	if(element.FadeState==1){
		element.FadeState=-1;
		element.FadeTimeLeft=element.TimeToFade-element.FadeTimeLeft;
		element.Finish=0;
	} else if(element.FadeState==2) {
		element.FadeState=-1;
		element.FadeTimeLeft=element.TimeToFade;
		element.Start=element.style.opacity;
		setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 15);
	}
}

function animateFade(lastTick, eid) {
		
	var curTick = new Date().getTime();
	var elapsedTicks = curTick - lastTick;
 
	var element = document.getElementById(eid);
		 
	if(element.FadeTimeLeft <= elapsedTicks){
		element.style.opacity=element.Finish;
		element.style.filter='alpha(opacity='+element.Finish*100+')';
		element.FadeState = element.FadeState == 1 ? 2 : -2;
		if(element.style.opacity==0)
			element.style.display="none";
  	  	else
  	  		if(element.style.removeAttribute)
  	  			if(element.opacity==1)
  	  				element.style.removeAttribute('filter');
  	  		
  	  	return;
  	}
  	
  	element.FadeTimeLeft -= elapsedTicks;
  	var newOpVal = (element.FadeTimeLeft/element.TimeToFade);
  	
  	if(element.Start>0)
  		newOpVal = newOpVal * element.Start;
  	
  	if(element.FadeState == 1)
  		newOpVal = 1 - newOpVal;
  	
  	if(element.Finish>0)
  		newOpVal=newOpVal*element.Finish;
  	
  	element.style.opacity = newOpVal;
  	element.style.filter = 'alpha(opacity='+(newOpVal*100)+')';
 
  	setTimeout("animateFade(" + curTick + ",'" + eid + "')", 15);
}

