﻿var TimeToFade = 500.0;
var OPAQUE = 2;
var TRANSPARENT = -2;
var FADING_OUT = -1;
var FADING_IN = 1;

function setDivVisible(divId, visible)
{
	var e = document.getElementById(divId);
	if (visible)
	{
		fadeIn(divId);
		e.style.display = 'block';
	}
	else
	{
		fadeOut(divId);
		e.style.display = 'none';
	}
}

function setHeaderEnabled(divId, enabled)
{
	var e = document.getElementById(divId);
	if (enabled)
	{
		e.style.color = '#ba1111';
	}
	else
	{
		e.style.color = '#b0b0b0';
	}
}

function fadeIn(divId)
{
	var element = document.getElementById(divId);
	if (element == null)
		return;
		
	element.style.display = 'block';
		
	// if no fading started, set fade state to transparent
	if (element.FadeState == null)
	{
		element.FadeState = TRANSPARENT;
	}
	
	// if opaque or already fading in, skip
	if (element.FadeState == OPAQUE || element.FadeState == FADING_IN)
		return
    
    // if fading out, flip
	if (element.FadeState == FADING_OUT)
	{
		element.FadeState = FADING_IN;
		element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
	}
	else
	{
		// otherwise, set fading in, start timer
		element.FadeState = FADING_IN;
		element.FadeTimeLeft = TimeToFade;
		setTimeout("animateFade(" + new Date().getTime() + ",'" + divId + "')", 33);
	}  
}

function fadeOut(divId)
{
	var element = document.getElementById(divId);
	if (element == null)
		return;
		
	// if no fading started, set fade state to opaque
	if (element.FadeState == null)
	{
		element.FadeState = OPAQUE;
	}
	
	// if transparent or already fading out, skip
	if (element.FadeState == TRANSPARENT || element.FadeState == FADING_OUT)
		return
    
    // if fading in, flip
	if (element.FadeState == FADING_IN)
	{
		element.FadeState = FADING_OUT;
		element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
	}
	else
	{
		// otherwise, set fading out, start timer
		element.FadeState = FADING_OUT;
		element.FadeTimeLeft = TimeToFade;
		setTimeout("animateFade(" + new Date().getTime() + ",'" + divId + "')", 33);
	}  
}

function animateFade(lastTick, eid)
{  
	var curTick = new Date().getTime();
	var elapsedTicks = curTick - lastTick;
  
	var element = document.getElementById(eid);

	// if done
	if(element.FadeTimeLeft <= elapsedTicks)
	{
		element.style.opacity = element.FadeState == FADING_IN ? '1' : '0';
		element.style.filter = 'alpha(opacity = ' 
			+ (element.FadeState == FADING_IN ? '100' : '0') + ')';
		element.FadeState = element.FadeState == FADING_IN ? OPAQUE : TRANSPARENT;
		return;
	}
 
	element.FadeTimeLeft -= elapsedTicks;
	var newOpVal = element.FadeTimeLeft/TimeToFade;
	if(element.FadeState == FADING_IN)
		newOpVal = 1 - newOpVal;

	element.style.opacity = newOpVal;
	element.style.filter = 'alpha(opacity = ' + (newOpVal*100) + ')';
	setTimeout("animateFade(" + curTick + ",'" + eid + "')", 33);
}
