
var mainImg = null;
var tempImg = null;
var imgToFadeTo = null;
var timeOutID = -1;
var queued = null;
var blocking = false;
var globalMouseOver = false;

var ns_imageToChangeTo = null;

function NS_SwapImage()
{
	if( ns_imageToChangeTo ){
		mainImg.src = pre_imgs[ns_imageToChangeTo].src;
	}
	timeOutID = -1;
	ns_imageToChangeTo = null;
}

function SetOpacity( el, amount )
{
	if( typeof el.filters == 'undefined' ){
		// alert( el.style.opacity );
		var op = amount / 100;
		if( op >= 1.0 )
			op = 0.99;
		if( op < 0.0 )
			op = 0.0;
		el.style.opacity = op;
	}
	else {
		// alert( el.filters.alpha.opacity );
		el.filters.alpha.opacity = amount;
	}
}
function GetOpacity( el )
{
	if( typeof el.filters == 'undefined' ){
		// alert( el.style.opacity );
		return el.style.opacity * 100;
	}
	else {
		// alert( el.filters.alpha.opacity );
		return el.filters.alpha.opacity;
	}
}

function InitFade( mainImgID, tempImgID )
{
	mainImg = document.getElementById( mainImgID );
	tempImg = document.getElementById( tempImgID );
}

function ProcessFade()
{
	var op = GetOpacity( tempImg );
	if( op >= 99 ){
		mainImg.src = imgToFadeTo.src;
		SetOpacity( tempImg, 0 );
		timeOutID = -1;

		if(	queued != null ){
			var temp = queued;
			queued = null;
			FadeToWithForce( temp, true, true );
		}
		else {
			blocking = false;
		}
	}
	else{
		SetOpacity( tempImg, op + 30 );
		setTimeout( "ProcessFade();", 10 );
	}
}

function FadeTo( imgName, bMouseOver )
{
	FadeToWithForce( imgName, false, bMouseOver );
}

function FadeToWithForce( imgName, forced, bMouseOver )
{

	if( typeof pre_imgs == 'undefined' || typeof pre_imgs[imgName] == 'undefined' )
		return;

	if( ! mainImg || ! tempImg )
		return;

	if( navigator.userAgent.indexOf( "Netscape/7" ) != -1 ){
		if( bMouseOver ){
			mainImg.src = pre_imgs[imgName].src;
			if( timeOutID != -1 )
				clearTimeout( timeOutID );
		}
		else {
			ns_imageToChangeTo = imgName;
			timeOutID = setTimeout( 'NS_SwapImage()', 100 );
		}
		return;
	}

	/*
	if( timeOutID != -1 ){
		// clearTimeout( timeOutID );
		queued = imgName;
		return;
	}
	*/

	if( bMouseOver && !globalMouseOver ){
		// Let it go through if we had a mouseout and this is a mouse over.
	}
	else{
		if( blocking && !forced ){
			queued = imgName;
			return;
		}
	}

	blocking = true;
	SetOpacity( tempImg, 0 );
	tempImg.src = pre_imgs[imgName].src;
	imgToFadeTo = pre_imgs[imgName];
	globalMouseOver = bMouseOver;
	if( bMouseOver ){
		setTimeout( 'ProcessFade()', 10 );
	}
	else {
		// Wait for a bit to allow for another mouse over.
		setTimeout( 'ProcessFade()', 300 );
	}
}
