//IE only
function ImageWiper()
{
	var dynImages = new Array();
	var objImages = new Array();
		
	this.add = add;
	this.getImage = getImage;
	this.size = size;
	this.getRandomImage = getRandomImage;
	this.preLoadImage = preLoadImage;
	this.getObjImages = getObjImages;
	
	function preLoadImage()
	{
		for (x = 0; x < dynImages.length; x++)
		{
			var myImage = new Image();
			myImage.src = dynImages[x][0];
			objImages.push(myImage);
		}
	}
	
	function getObjImages(jvarIndex)
	{
		if(jvarIndex < objImages.length)
		{
			return objImages[jvarIndex].src;
		}
	}
	
	function add(jvarImage, jvarURL, jvarAlt)
	{
		dynImages.push(new Array(jvarImage, jvarURL, jvarAlt));
	}
	
	var temp = 0;
	function getRandomImage(varLoadArea, varImageId, varSpeed)
	{
	
		var randomNum = Math.ceil(Math.random()*objImages.length - 1);
		
		while(randomNum == temp)
		{
			randomNum = Math.ceil(Math.random()*objImages.length - 1);
		}
		
		temp = randomNum;
		
		blendimage(varLoadArea, varImageId, objImages[randomNum].src, varSpeed, objImages);
	}
	var sequence = 0;
	function getImage(varLoadArea, varImageId, varSpeed)
	{
		blendimage(varLoadArea, varImageId, objImages[sequence].src, varSpeed, objImages);
		sequence++;
		if(sequence > (objImages.length-1))
		{
			sequence = 0;	
		}
	}
	function size()
	{
		return dynImages.length;
	}
}

//External source


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) {
	if(!document.getElementById(id).style){
		alert(id);
	}
	var object = document.getElementById(id).style; 
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 101);
	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, aryObjImage) {
	var speed = Math.round(millisec / 100);
	var timer = 0;
	
	//set the current image as background
	
	var imgURL = document.getElementById(imageid).src;
	
	for(var i = 0; i < aryObjImage.length; i++)
	{
		 var dynURL = aryObjImage[i];
		 if(imgURL.indexOf(dynURL.src) >= 0)
		 {	
			 document.getElementById(divid).style.backgroundImage = "url(" + dynURL.src + ")";
		 }
	}
	
	//document.getElementById(divid).style.backgroundImage = "url(" + document.getElementById(imageid).src + ")";
	
	//make image transparent
	changeOpac(0, imageid);
	
	//make new image
	for(var i = 0; i < aryObjImage.length; i++)
	{
		 var dynURL = aryObjImage[i];
		 
		 if(imagefile.indexOf(dynURL.src) >= 0)
		 {	
			 document.getElementById(imageid).src = dynURL.src;
		 }
	}
	//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)
}
