///////////////////////////////////////////////////////////////////////
//     This fade library was designed by Erik Arvidsson for WebFX    //
//                                                                   //
//     For more info and examples see: http://webfx.eae.net          //
//     or send mail to erik@eae.net                                  //
//                                                                   //
//     Feel free to use this code as long as this disclaimer is      //
//     intact.                                                       //
//                                                                   //
//     Last updated: 2000-11-22                                      //
///////////////////////////////////////////////////////////////////////

window.status = "Loading fade package...";

var fadeSteps = 4;				// Number of steps to loop
var fademsec = 25;				// The time between each step (note that most computer have problem
								// handling to small values due to hardware limitations)


var fadeArray = new Array();	// Needed to keep track of wich elements are animating

//////////////////  fade  ////////////////////////////////////////////////////////////
//                                                                                  //
//   parameter: fadeIn                                                              //
// description: A boolean value. If true the element fades in, otherwise fades out  //
//              The steps and msec are optional. If not provided the default        //
//              values are used                                                     //
//                                                                                  //
//////////////////////////////////////////////////////////////////////////////////////

function fade (el, fadeIn,steps,msec) {
//	alert(el);
	msec = msec * 5;
	window.setTimeout("finished()",msec-10);	
	if (fadeIn) {
		$("#"+el).css("filter", "alpha(opacity=0)");
		$("#"+el).css("MozOpacity", "0");
		$("#"+el).css("opacity", "0");
		//show(el);
		currentOpac(el,99,msec);		
	} else {
		$("#"+el).css("filter", "alpha(opacity=99)");
		$("#"+el).css("MozOpacity", "0.99");
		$("#"+el).css("opacity", "0.99");
		currentOpac(el,1,msec);	
		window.setTimeout("$(\"#"+el+"\").css(\"visibility\",\"hidden\")",msec+25);	
	}
/*	
	var ele = document.getElementById(el);
	if (ele) {
		if (fadeIn) {
			ele.style.filter = "alpha(opacity=0)";
			ele.style.MozOpacity = 0;
			ele.style.opacity = 0;
			show(el);
			currentOpac(el,99,msec);		
		} else {
			ele.style.filter = "alpha(opacity=99)";
			ele.style.MozOpacity = 0.99;
			ele.style.opacity = 0.99;
			currentOpac(el,1,msec);	
			window.setTimeout("$(\"#"+el+"\").css(\"visibility\",\"hidden\")",msec+25);	
		}
	}
*/	
}

function fadeA(el, fadeIn, steps, msec) {
		
	el = document.getElementById(el);
	if (steps == null) steps = fadeSteps;
	if (msec == null) msec = fademsec;
	
	if (el.fadeIndex == null)
		el.fadeIndex = fadeArray.length;
	fadeArray[el.fadeIndex] = el;
	
	if (el.fadeStepNumber == null) {
		if (el.style.visibility == "hidden" || el.style.display == "none")
			el.fadeStepNumber = 0;
		else
			el.fadeStepNumber = steps;
		if (fadeIn) {
			el.style.filter = "Alpha(Opacity=0)";
			el.style.MozOpacity = 0;
			el.style.opacity = 0;
		}
		else {
			el.style.filter = "Alpha(Opacity=99)";
			el.style.MozOpacity = 0.99;
			el.style.opacity = 0.99;
		}
	}
			
	window.setTimeout("repeatFade(" + fadeIn + "," + el.fadeIndex + "," + steps + "," + msec + ")", msec);
}

//////////////////////////////////////////////////////////////////////////////////////
//  Used to iterate the fading

function repeatFade(fadeIn, index, steps, msec) {	
	el = fadeArray[index];
	c = el.fadeStepNumber;	
	if (el.fadeTimer != null)
		window.clearTimeout(el.fadeTimer);
	if ((c == 0) && (!fadeIn)) {			//Done fading out
		el.style.display = "none";		// If the platform doesn't support filter it will hide anyway	
		el.style.visibility = "hidden";		// If the platform doesn't support filter it will hide anyway
//		el.style.filter = "";
		stop = 0;
		finished();
		return;
	}
	else if ((c==steps) && (fadeIn)) {	//Done fading in!
		el.style.filter = "";
		el.style.MozOpacity = 1;
		el.style.visibility = "visible";
		el.style.display = " ";	
		//alert(el.style.display);
		finished();
		return;
	}
	else {
		(fadeIn) ? 	c++ : c--;
		el.style.visibility = "visible";
		el.style.display = "";
		el.style.filter = "alpha(opacity=" + (100*c/steps)-1 + ")";	
		el.style.MozOpacity = (c / steps) - 0.01;
		el.style.opacity = (c / steps) - 0.01;

		el.fadeStepNumber = c;
		el.fadeTimer = window.setTimeout("repeatFade(" + fadeIn + "," + index + "," + steps + "," + msec + ")", msec);
	}
}

window.status = "";


function opacity(id, opacStart, opacEnd, millisec) {
	//speed for each frame
	var speed = Math.round(millisec / 100);
	var timer = 0;

	//determine the direction for the blending, if start and end are the same nothing happens
	if(opacStart > opacEnd) {
		for(i = opacStart; i >= opacEnd; i--) {
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	} else if(opacStart < opacEnd) {
		for(i = opacStart; i <= opacEnd; i++)
			{
			setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	}
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
	var object = document.getElementById(id)
	if (object) {
		object = object.style; 
		object.opacity = (opacity / 100);
		object.MozOpacity = (opacity / 100);
		object.KhtmlOpacity = (opacity / 100);
		object.filter = "alpha(opacity=" + opacity + ")";		
	}
}

function shiftOpacity(id, millisec) {
	//if an element is invisible, make it visible, else make it ivisible
	if(document.getElementById(id).style.opacity == 0) {
		opacity(id, 0, 100, millisec);
	} else {
		opacity(id, 100, 0, millisec);
	}
}

function blendimage(divid, imageid, imagefile, millisec) {
	var speed = Math.round(millisec / 100);
	var timer = 0;
	
	//set the current image as background
	document.getElementById(divid).style.backgroundImage = "url(" + document.getElementById(imageid).src + ")";
	
	//make image transparent
	changeOpac(0, imageid);
	
	//make new image
	document.getElementById(imageid).src = imagefile;

	//fade in image
	for(i = 0; i <= 100; i++) {
		setTimeout("changeOpac(" + i + ",'" + imageid + "')",(timer * speed));
		timer++;
	}
}

function currentOpac(id, opacEnd, millisec) {
	//standard opacity is 100
	var currentOpac = 100;
	//if the element has an opacity set, get it
	if(document.getElementById(id).style.opacity < 100) {
		currentOpac = document.getElementById(id).style.opacity * 100;
	}

	//call for the function that changes the opacity
	opacity(id, currentOpac, opacEnd, millisec)
}
