// JavaScript Document

// confiiguration variables
var timeout		=	0; // milliseconds
var fadeSpeed	=	100; // milliseconds
var useFade		=	false;

// 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;
	}
}

function selMenuLeft( id )
{
	var e = document.getElementById(id);
	e.style.background = "url(/img/menu/menuknop_down.png) no-repeat";	
}

function deselMenuLeft( id )
{
	var e = document.getElementById(id);
	e.style.background = "url(/img/menu/menuknop_standaard.png)";	
}


function selMenuRight( id )
{
	var e = document.getElementById(id);
	e.style.background = "url(/img/menu/menuknop_down.png) no-repeat";	
}

function deselMenuRight( id )
{
	var e = document.getElementById(id);
	e.style.background = "url(/img/menu/menuknop_standaard.png)";	
}


function show( id )
{
	var e = document.getElementById(id);
	e.style.visibility = "visible";	
}

function hide( id )
{
	var e = document.getElementById(id);
	e.style.visibility = "hidden";	
}

// set element to hidden and rest 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) setOpacity( id, 1 );
}

// entry point: hide 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 multiple timers are set
	
	if(msie) e.style.filter = 'alpha(opacity=' + value * 100 + ')'; // MS Internet Explorer
	else e.style.opacity = (value); // everyone else standard 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 ); // fade in 25ns increments
	var timer = 0;
	var i;
	
	state[id] = false;
	
	for( i = s; i >= 0 ; i-- ) {
		setTimeout( "setOpacity('" + id + "'," + ( i / s ) + ")", timer++ * fadeSpeed / s )
	}
}
