//Immediately call function on load
initSlideshow();

//Initial settings function
function initSlideshow()
{
	//Initialize and fill the slideshow array with 'slide divs'
	var divSlides3 = new Array();
	divSlides3[0] = document.getElementById("slide1");
	divSlides3[1] = document.getElementById("slide2");
	divSlides3[2] = document.getElementById("slide3");


	//Initialize and fill function array
	var func3 = new Array();
	func3[0] = function () {
		//Reset draw in image
		document.getElementById("slideImg1").style.height = "0%";
		modHeight(document.getElementById("slideImg1"),100, 4);

		//Position and animate text
		document.getElementById("slideText0a").style.position = "absolute";
		document.getElementById("slideText0a").style.left = "310px";
		document.getElementById("slideText0a").style.top = "50px";
		moveH(document.getElementById("slideText0a"),1250,50);
		set_opacity(document.getElementById("slideText0a"),0);
		fade(document.getElementById("slideText0a"),200,5);
		//Position and animate text
		document.getElementById("slideText0b").style.position = "absolute";
		document.getElementById("slideText0b").style.left = "415px";
		document.getElementById("slideText0b").style.top = "80px";
		set_opacity(document.getElementById("slideText0b"),0);
		fade(document.getElementById("slideText0b"),200,5);
		var callNext2 = function () { fade(document.getElementById("slideText0d"),250, 5); }; //Fade in black text
		var callNext1 = function () { fade(document.getElementById("slideText0c"),250, 5,callNext2); }; //Fade in gray text then call fade in black text
		moveH(document.getElementById("slideText0b"),1250,-50, callNext1); //Move element then call fade in gray text
		//Position and animate text
		set_opacity(document.getElementById("slideText0c"),0);
		document.getElementById("slideText0c").style.position = "absolute";
		//Position and animate text
		set_opacity(document.getElementById("slideText0d"),0);
		document.getElementById("slideText0d").style.position = "absolute";
	}; 
	func3[1] = function () {
		//Reset draw in image
		document.getElementById("slideImg2").style.height = "0%";
		modHeight(document.getElementById("slideImg2"),100, 4);

		//Position and animate text
		document.getElementById("slideText1a").style.position = "absolute";
		document.getElementById("slideText1a").style.left = "435px";
		document.getElementById("slideText1a").style.top = "40px";
		set_opacity(document.getElementById("slideText1a"),0);
		fade(document.getElementById("slideText1a"),200,5);
		moveH(document.getElementById("slideText1a"),1250,50);
		//Position and animate text
		document.getElementById("slideText1b").style.position = "absolute";
		document.getElementById("slideText1b").style.left = "495px";
		document.getElementById("slideText1b").style.top = "80px";
		set_opacity(document.getElementById("slideText1b"),0);
		fade(document.getElementById("slideText1b"),200,5);
		var callNext2 = function () { fade(document.getElementById("slideText1d"),250, 5); }; //Fade in black text
		var callNext1 = function () { fade(document.getElementById("slideText1c"),250, 5,callNext2); }; //Fade in gray text then call fade in black text
		moveH(document.getElementById("slideText1b"),1250,-50, callNext1); //Move element then call fade in gray text
		//Position and animate text
		set_opacity(document.getElementById("slideText1c"),0);
		document.getElementById("slideText1c").style.position = "absolute";
		//Position and animate text
		set_opacity(document.getElementById("slideText1d"),0);
		document.getElementById("slideText1d").style.position = "absolute";
	};
	func3[2] = function () {
		//Reset draw in image
		document.getElementById("slideImg3").style.height = "0%";
		modHeight(document.getElementById("slideImg3"),100, 4);

		//Position and animate text
		document.getElementById("slideText2a").style.position = "absolute";
		document.getElementById("slideText2a").style.left = "440px";
		document.getElementById("slideText2a").style.top = "80px";
		document.getElementById("slideText2a").style.width = "300px";
		set_opacity(document.getElementById("slideText2a"),0);
		fade(document.getElementById("slideText2a"),200,5);
		var callNext2 = function () { fade(document.getElementById("slideText2d"),250, 5); }; //Fade in black text
		var callNext1 = function () { fade(document.getElementById("slideText2c"),250, 5,callNext2); }; //Fade in gray text then call fade in black text
		moveH(document.getElementById("slideText2a"),1250,-50, callNext1); //Move element then call fade in gray text
		//Position and animate text
		set_opacity(document.getElementById("slideText2c"),0);
		document.getElementById("slideText2c").style.position = "absolute";
		//Position and animate text
		set_opacity(document.getElementById("slideText2d"),0);
		document.getElementById("slideText2d").style.position = "absolute";
	}; 

	//Call slideshow
	doSlideshow(divSlides3, 2, 7500, func3); 

}

//Moves an object horizontally gradually
function moveH(obj,totalTime,totalDist,callNext)
{
	if ((totalTime / totalDist > 1) || (totalTime / totalDist < -1))
	{
		totalTime /= totalDist; //Total time becomes delay
		if (totalTime < 0) { totalTime *= -1; }
		var dist = totalDist / totalTime; //Dist becomes distance per call

		moveHRecur(obj,dist,totalDist,totalTime,callNext);
	}
	else
	{
	    //Functionality not yet written
	}
}
function moveHRecur(obj,dist,totalDist,delay,callNext)
{
	//Get, parse, and increment location value
	var loc = obj.style.left.replace("px","");
	if (loc == "")
		loc = 0;
	loc = parseInt(loc) + dist;

	//Set location value
	obj.style.left = loc + "px";

	totalDist -= dist;
	if (((totalDist > 0) && (dist > 0)) || ((totalDist < 0) && (dist < 0)))
	{
		setTimeout(function() { moveHRecur(obj,dist,totalDist,delay,callNext) },delay);
	}
	else if (callNext != undefined)
	{
		callNext();
	}
}

//Moves an object horizontally gradually
function moveV(obj,totalTime,totalDist,callNext)
{
	if ((totalTime / totalDist > 1) || (totalTime / totalDist < -1))
	{
		totalTime /= totalDist; //Total time becomes delay
		if (totalTime < 0) { totalTime *= -1; }
		var dist = totalDist / totalTime; //Dist becomes distance per call

		moveVRecur(obj,dist,totalDist,totalTime,callNext);
	}
	else
	{
	    //Functionality not yet written
	}
}
function moveVRecur(obj,dist,totalDist,delay,callNext)
{
	//Get, prse, and increment location value
	var loc = obj.style.top.replace("px","");
	if (loc == "")
		loc = 0;
	loc = parseInt(loc) + dist;

	//Set location value
	obj.style.top = loc + "px";

	totalDist -= dist;
	if (((totalDist > 0) && (dist > 0)) || ((totalDist < 0) && (dist < 0)))
	{
		setTimeout(function() { moveVRecur(obj,dist,totalDist,delay,callNext) },delay);
	}
}

//Fades an object in or out gradually
function fade(obj,totalTime, percent, callNext)
{
	totalTime /= percent; //Get 'step' time
	fadeRecur(obj,percent,totalTime,callNext);
}
function fadeRecur(obj,amount,delay,callNext)
{
	mod_opacity(obj,amount); //Modify opacity for each individual browser

	if ((obj.style.opacity > 0) && (obj.style.opacity < 1))
	{
		setTimeout(function() { fadeRecur(obj,amount,delay,callNext) }, delay ); //Call fade again after resting
	}
	else
	{
		if (callNext != undefined)
			callNext();
	}
}
//Adjust an objects height in percent gradually
function modHeight(obj,totalTime, percent, callNext)
{
	if (obj.style.height == undefined)
	{
		obj.style.height = "0%";
	}
	totalTime /= percent;
	modHeightRecur(obj,totalTime,percent,callNext);
}
function modHeightRecur(obj,delay, percent, callNext)
{
	//Get, prse, and increment location value
	var h = obj.style.height.replace("%","");
	if (h == "")
		h = 0;
	h = parseInt(h) + percent;

	obj.style.height = h + "%";

	if (((percent > 0) && (h < 100)) || ((percent < 0) && (h > 0)))
		setTimeout(function () { modHeightRecur(obj,delay, percent, callNext) }, delay);
	else if (callNext != undefined)
		callNext();
}

//Slideshow function
function doSlideshow(divArray, cur, longPause, fullFunc)
{
	//Set next element in array, looping back to start if necessary
	var next = cur + 1;
	if (next >= divArray.length)
		next = 0;

	divArray[next].style.visibility = "visible";
	divArray[cur].style.visibility = "hidden";

      cur = next; //Prepare next element
	if (fullFunc != undefined)
		fullFunc[next](); //Call it

	//Recursively call function using all the standard paramters, delay by 'curPause' amount
	setTimeout(function() { doSlideshow(divArray,next,longPause,fullFunc) }, longPause);
}


//Set opacity
function set_opacity(element, percent)
{
   //Try catch block is used because of browser differences
   try
   {
      element.filters.alpha.opacity = percent; //Set opacity to full, IE
   }
   catch (err)
   {
   }
   try
   {
	percent /= 100;
      element.style.opacity = percent; //Set opacity to full, others
   }
   catch (err)
   {
   }
}
//Decrease opacity by 10%
function mod_opacity(element, percent)
{
   //Try catch block is used because of browser differences
   try
   {
      element.filters.alpha.opacity += percent; //Decrease opacity by 10%, IE	
   }
   catch (err)
   {
   }
   try
   {
	percent /= 100; //Get decimal
	var value = parseFloat(element.style.opacity); //Store opacity value to var
	if (isNaN(value))
	{
		if (percent > 0)
			value = 0;
		else
			value = 1;
	}
      value += percent;	//Set 'ridiculously small values' to 0. Required due to Chrome precision issues.
	if (value < .05) { value = 0; }
	else if (value > .95) { value = 1; }
      element.style.opacity = value;
	if (value == 0) { element.visibility = "hidden"; }
   }
   catch (err)
   {
   }
}
