// JavaScript Document

//dynamic_menu.js



//configuration variables

var timeout = 250; //milliseconds

var fadeSpeed = 500; //milliseconds

var useFade = true;



// timers array

var timers = new Array();



// state array -- by id, value = active, false = inactive

var state = new Array();



// lastOpacity: used to prevent multiple timers from making the fade flicker

var lastOpacity = new Array();



//MSIE has its own way of setting opacity, so we have to detect it

//all the other major browsers support the standard DOM opacity property

var msie = false;

if( navigator.appName == "Microsoft Internet Explorer" ) msie = true;



// entry point: set element to visible and clear its timers

function setMenu( id )

{

	var e = document.getElementById(id);

	e.style.visibility = "visible";

	state[id] = true;

	setOpacity(id,1);

	if(timers[id]) {

		clearTimeout(timers[id]);

		timers[id] = undefined;

	}

}



// set element to hidden and reset its opacity

// typically called by a timer

// may be used as an entry point to bypass timers and fades

function hideMenu( id )

{

	var e = document.getElementById(id);

	state[id] = false;

	e.style.visibility = "hidden";

	if(useFade) setOpactiy( id, 1 );

}



//entry point: hid the menu using fade (if enabled)

function clearMenu( id )

{

	if(useFade) timers[id] = setTimeout( 'fadeMenu( "' + id + '")', timeout );

	else timers[id] = setTimeout( 'hideMenu( "' + id + '")', timeout );

}



//set the opacity

//special support for MSIE

function setOpacity ( id, value )

{

	var e = document.getElementById(id);

	

	if(state[id]) value = 1; //menu fade was interrupted

	else if(lastOpacity[id] && (lastOpacity[id] < value)) value = lastOpacity[id]; //prevents flicker if bultiple timers

	if(msie) e.style.filter = 'alpha(opacity=' + value * 100 + ')'; //MS Internet Explorer

	else e.style.opacity = (value); // Everyone else (stadard DOM)

	

	if( value == 0 ) hideMenu( id );  // when all faded, reset the menu state

	lastOpacity[id] = value;

}



// fade a menu

// typically called by a timer

function fadeMenu ( id )

{

	var start = 0;

	var end = 0;

	var s = Math.round( fadeSpeed / 25 );

	var timer = 0;

	var i;

	

	state[id] = false;

	

	for( i = s; i >= 0; i-- ) {

		setTimeout( "setOpacity('" + id + "'," + ( i / s ) + ")", timer++ * fadeSpeed / s )	

	}

}








