/* shwFade_ar.js (c)2008 SugarHill Works LLC - http://www.sugarhillworks.com */

// ----- SOME BASIC SETTINGS  -------- 
// randomize the order
//imageFilenames.sort( randOrd );

// set the amount of time an image displays in SECONDS ( 3 , 3.5, 3.25 etc)
var dTime = 5;

var d = document; 
var imgs = new Array();
var current = 0;
var nIndex = 1;

var ssRunning;
var nPause;
var lastRun;
var fadeComplete = true;

var addlImgs = new Array();

var main_div, ss_p;
function so_init(arg) {
	if(!d.getElementById || !d.createElement)return;
	main_div = d.getElementById("ss_div");
	ss_p = d.getElementById("ss_p");
	// eliminate border blinking  on ff/saf
	ss_p.style.border = "none";
	main_div.style.border = "none"; 
	for(var i = 0; i < imageFilenames.length; i++) {
		imgs[i] = new Image();
		imgs[i].style.visibility = "hidden";
		imgs[i].src = sPicsFolder + imageFilenames[i];
		ss_p.appendChild(imgs[i]);
	}
	// position the images
	for(var i = 0; i < imgs.length; i++) {
		posImgs(i);
	}
	//start slideshow
	safeStart(1);
	return ssRunning;
}



function posImgs(i) {
	// redundant positioning code is for Safari image rendering bug and IE not supporting image onload ...
	var imgsW = imgs[i].width;
	var imgsH = imgs[i].height;
	if ((imgsH < 50) || (imgsW < 50)) {
		window.setTimeout("posImgs("+i+");",50);
	} else {
		imgs[i].style.visibility = "hidden";
		imgs[i].style.position = "absolute";
		imgs[i].style.left = Math.round((360 - imgsW) / (2)) + "px";
		imgs[i].style.top = Math.round((312 - imgsH) / (2)) + "px";
		if(i == 0) {
			imgs[0].xOpacity = .99;
			imgs[0].style.filter = "alpha(opacity=99)";
			imgs[0].style.filter = "progid:dximagetransform.microsoft.alpha(opacity=99)";
			imgs[0].style.MozOpacity = ".99";
			imgs[0].style.opacity = ".99";
		}
		else {
			imgs[i].xOpacity = 0;
			imgs[i].style.filter = "alpha(opacity=0)";
			imgs[i].style.filter = "progid:dximagetransform.microsoft.alpha(opacity=0)";
			imgs[i].style.MozOpacity = "0";
			imgs[i].style.opacity = "0";
		}
	}
}




function safeStart(n) {
	if(n >= imgs.length) { //this code block only happens when all the images have loaded.
		current = 0;
		nIndex = 1;
		if(fadeComplete == true) {
			if (ssRunning) { clearTimeout(ssRunning); }
			// turn on the first image and turn off the loading gif
			imgs[0].style.visibility = "visible";
			//start the slideshow
			//ssRunning = window.setTimeout("so_xfade("+current+","+nIndex+",'run',null)",dTime*1000);
			getImgsToFade(0, 'run');
			return current, nIndex;
		} else {
			window.setTimeout("safeStart("+n+")", 25);
			return n;
		}
	}
	if (imgs[n].complete == false) {
		window.setTimeout("safeStart("+n+")", 250);
	} else {
		n++;
		safeStart(n);
	}
}





function getImgsToFade(current, nPause) {
	// stop scrolling the thumbs if necessary...
	var fadingOut = current;
	var fadingIn;
	// make moused-over photographer's work the next image to fade in
	if (nPause == 'paused')
	{ 
		if (ssRunning) window.clearTimeout(ssRunning);
		fadingIn = imgs[current + dir]?current+dir:0;
		imgs[fadingOut].style.visibility = "visible";
		imgs[fadingIn].style.visibility = "visible";
		ssRunning = window.setTimeout("so_xfade("+fadingOut+","+fadingIn+",'paused');", 250);
	} else if(nPause == 'resume') {
		fadingIn = imgs[current+1]?current+1:0;
		nPause = resumeToggle;
		imgs[fadingOut].style.visibility = "visible";
		imgs[fadingIn].style.visibility = "visible";
		if (resumeToggle == 'paused') {
			if (ssRunning) window.clearTimeout(ssRunning);
		} else {
			ssRunning = window.setTimeout("so_xfade("+current+","+fadingIn+",'"+resumeToggle+"');", 2000);
		}
	} else if (nPause == 'run') { 
		fadingIn = imgs[current+1]?current+1:0;
		imgs[fadingOut].style.visibility = "visible";
		imgs[fadingIn].style.visibility = "visible";
		ssRunning = window.setTimeout("so_xfade("+current+","+fadingIn+",'run');", dTime*1000);
	}
	nIndex = fadingIn;
	return current, nIndex, nPause, ssRunning;
}
	



function so_xfade(current_arg,nIndex_arg,nPause) { 
	var fading; //for the fading timeouts
	// get opacity values for current and next images
	var fadingOut = current_arg;
	var fadingIn = nIndex_arg;
	if(fadingOut == fadingIn)return;
	if(!imgs[fadingIn])return;
	// increment the opacity of each image
	cOpacity = imgs[fadingOut].xOpacity;
	nOpacity = imgs[fadingIn].xOpacity;
	cOpacity-=.09; 
	cOpacity.toFixed(2);
	nOpacity+=.09; 
	nOpacity.toFixed(2);
	imgs[fadingOut].xOpacity = cOpacity;
	imgs[fadingIn].xOpacity = nOpacity;
	setOpacity(imgs[fadingOut]);
	setOpacity(imgs[fadingIn]);
	// things to do one time when the xfade is complete
	if ((cOpacity <= 0) || (nOpacity >= .99)) {
		//force xfade to complete
		imgs[fadingOut].xOpacity = -1;
		imgs[fadingIn].xOpacity = 1;
		setOpacity(imgs[fadingOut]);
		setOpacity(imgs[fadingIn]);
		fadingOut = fadingIn;
		lastRun = new Date();
		fadeComplete = true;
		if (nPause == 'run') {
			getImgsToFade(fadingOut, nPause);
			resumeImg = fadingOut;
		}
		current = fadingOut;
		if (current.toString().length == 1) { var nav_spcs = "&nbsp;&nbsp;&nbsp;" } 
		else { var nav_spcs = "&nbsp;"; }
	} else {
		fadeComplete = false;
		if (nPause == 'paused') { 
			fading = window.setTimeout("so_xfade("+fadingOut+","+fadingIn+",'paused')", 50);//<-larger value here = slower fade
		} else { // if (nPause == 'run') {
			fading = window.setTimeout("so_xfade("+fadingOut+","+fadingIn+",'run')", 50);//<-larger value here = slower fade
		}
	}
	
	function setOpacity(obj) {
		if(obj.xOpacity > .99) {
			obj.xOpacity = .99;
		}
		if(obj.xOpacity < 0) {
			obj.xOpacity = 0;
		}
		obj.style.opacity = obj.xOpacity;
		obj.style.MozOpacity = obj.xOpacity;
		obj.style.filter = "alpha(opacity=" + (obj.xOpacity*100) + ")";
	}
}
