/* 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 = 1;
var nIndex = 2;

var ssRunning;
var nPause;
var lastRun;
var fadeComplete = true;

var addlImgs = new Array();

var main_div, ss_p;
function ss_init(arg) {
	if(!d.getElementById || !d.createElement)return;
	main_div = d.getElementById("main_div");
	ss_p = d.getElementById("SS_p");
	// eliminate border blinking  on ff/saf
	ss_p.style.border = "none";
	main_div.style.border = "none"; 
	//set up initial batch of imgs to run while the rest download in the background
	if(arg == 0) { //this is the initial run
		for(var i = 1; i < 2; i++) {// get the first of each photog's img group in slideshowSettings.js
			imgs[i] = new Image();
			imgs[i].style.visibility = "hidden";
			imgs[i].src = sPicsFolder + imageFilenames[i];
			ss_p.appendChild(imgs[i]);
		}
	}
	if(arg == 1) { //this is the auto restart run
		for(var i = 1; i < imageFilenames.length; i++) {
			imgs[i] = new Image();
			imgs[i].style.visibility = "hidden";
//			imgs[i].style.border = "#CCC solid 1px";
			imgs[i].src = sPicsFolder + imageFilenames[i];
			ss_p.appendChild(imgs[i]);
		}
	}
	// position the images
	for(var i = 1; i < imgs.length; i++) {
		posImgs(i);
	}
	//start slideshow
	if (arg == 0) {
		safeStart(1);
		addImages();
	} else if ((arg == 1) || (arg == 2)) {
		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((maxvpW - imgsW) / (2)) + "px";
		imgs[i].style.top = Math.round((maxvpH - (imgsH + 2)) / (2)) + "px";
		if(i == 1) {
			imgs[1].xOpacity = .99;
			imgs[1].style.filter = "alpha(opacity=99)";
			imgs[1].style.filter = "progid:dximagetransform.microsoft.alpha(opacity=99)";
			imgs[1].style.MozOpacity = ".99";
			imgs[1].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 = 1;
		nIndex = 2;
		if(fadeComplete == true) {
			if (ssRunning) { clearTimeout(ssRunning); }
			// turn on the first image and turn off the loading gif
			imgs[1].style.visibility = "visible";
			//start the slideshow
			ssRunning = window.setTimeout("shw_fade("+current+","+nIndex+",'run',null)",dTime*1000);
			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 addImages() {
	//repopulate ss div with all images
	for (var i = 1; i < imageFilenames.length; i++) {
		addlImgs[i] = new Image();
		addlImgs[i].style.visibility = "hidden";
//		addlImgs[i].style.border = "#CCC solid 1px";
		addlImgs[i].src = sPicsFolder + imageFilenames[i];
	}
	chkAddlImgs(1);
}
function chkAddlImgs(n) {
	if (n >= addlImgs.length) {// all images loaded
		ssRestart(0);
		return;
	}
	if (addlImgs[n].complete == false) {
		window.setTimeout("chkAddlImgs("+n+")", 250);
	} else {
		n++;
		chkAddlImgs(n);
	}
}



var rsMsg = '';
function restartWait(n, count, rsMsg) {
	if (!rsMsg) { rsMsg = ''; }
	if (!count) { count = 0; }
	if (count > n) {
	} else { 
		count++;
		window.setTimeout("restartWait("+n+","+count+",'"+rsMsg+"')", 250);
	}
			
}
function ssRestart(n) {
	if (fadeComplete == true) {
		if (n == 0) {
			ssStop();
			imgs = addlImgs;
			addlImgs = new Array();
			for (var i = 1; i < imgs.length; i++) {
				//imgs[i].style.visibility = "hidden";
				d.getElementById('ss_p').appendChild(imgs[i]);
			}
			current = 1;
			nIndex = 2;
			var lastRun = new Date();
			ss_init(1);
			return current, nIndex;
		} else if ((n == 1) || (n ==2))  {
			if (current == 1) { //return;
				rsMsg = '';
				resumeToggle = 'paused';
				ssResume();
			} else {
				rsMsg = 'slideshow restarting . . .';
				ss_init(n);
				nPause = 'paused';
				ssResume();
			}//			return ;
		}
		restartWait(3,0,rsMsg);
	} else {
		window.setTimeout("ssRestart("+n+")", 25);
	}
}



function ssStop() {
	if (fadeComplete == true) {
		window.clearTimeout(ssRunning);
		for (var i = 1; i < imgs.length; i++) {
			d.getElementById('ss_p').removeChild(imgs[i]);
		}
		imgs = new Array();
	} else {	
		window.setTimeout("ssStop()", 25);
	}
}


		

var dir;
function ssPause(dir_arg) { 
	if (fadeComplete == true) {
		window.clearTimeout(ssPauseTO);
		window.clearTimeout(ssRunning);
		ssToggle_a.onmouseover = function() { ssToggle_a.style.color = "#FFF"; };
		ssToggle_a.onmouseout = function() { ssToggle_a.style.color = "#B2CCC8"; };
		nPause = 'paused';
		dir = dir_arg;
		getImgsToFade(current, nPause);
		return nPause, ssRunning, dir;
	}
	else { // try again later
		ssPauseTO = window.setTimeout("ssPause()", 25);
		return ssPauseTO;
	}
}




var resumeToggle = '';
function ssResume() {
	if (fadeComplete == true) {
		window.clearTimeout(ssRunning);
		window.clearTimeout(ssPauseTO);
		if ((!nPause) || (nPause == 'paused')) {
			nPause = 'resume';
			resumeToggle = 'run';
			ssToggle_a.style.color = "#FFF";
			ssToggle_a.onmouseover = function() { ssToggle_a.style.color = "#FFF"; };
			ssToggle_a.onmouseout = function() { ssToggle_a.style.color = "#FFF"; };
		} else if (nPause == 'run') { 
			nPause = 'resume';
			resumeToggle = 'paused';
			ssToggle_a.style.color = "#B2CCC8";
			ssToggle_a.onmouseover = function() { ssToggle_a.style.color = "#FFF"; };
			ssToggle_a.onmouseout = function() { ssToggle_a.style.color = "#B2CCC8"; };
		} else if (nPause == 'resume') {
			if (resumeToggle == 'run') {
				resumeToggle = 'paused';
				ssToggle_a.style.color = "#B2CCC8";
				ssToggle_a.onmouseover = function() { ssToggle_a.style.color = "#FFF"; };
				ssToggle_a.onmouseout = function() { ssToggle_a.style.color = "#B2CCC8"; };
			} else {
				resumeToggle = 'run';
				ssToggle_a.style.color = "#FFF";
				ssToggle_a.onmouseover = function() { ssToggle_a.style.color = "#FFF"; };
				ssToggle_a.onmouseout = function() { ssToggle_a.style.color = "#FFF"; };
			}
		}
		getImgsToFade(current, nPause);
		return nPause, resumeToggle;
	} else {
		window.setTimeout("ssResume()", 25);
	}
}





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:1;
		ssToggle_a.style.color = "#B2CCC8";
		ssRunning = window.setTimeout("shw_fade("+fadingOut+","+fadingIn+",'paused');", 250);
	} else if(nPause == 'resume') {
		fadingIn = imgs[current+1]?current+1:1;
		nPause = resumeToggle;
		if (resumeToggle == 'paused') {
			if (ssRunning) window.clearTimeout(ssRunning);
		} else {
			ssRunning = window.setTimeout("shw_fade("+current+","+fadingIn+",'"+resumeToggle+"');", 2000);
		}
	} else if (nPause == 'run') { 
		fadingIn = imgs[current+1]?current+1:1;
		ssRunning = window.setTimeout("shw_fade("+current+","+fadingIn+",'run');", dTime*1000);
	}
	nIndex = fadingIn;
	return current, nIndex, nPause, ssRunning;
}
	



function shw_fade(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;
	// be sure imgs are visible 
	imgs[fadingOut].style.visibility = "visible";
	imgs[fadingIn].style.visibility = "visible";
	// 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("shw_fade("+fadingOut+","+fadingIn+",'paused')", 50);//<-larger value here = slower fade
		} else { // if (nPause == 'run') {
			fading = window.setTimeout("shw_fade("+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) + ")";
	}
}
