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


// randomize the order
//imageFilenames.sort( randOrd );

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

//var leftNum = 0;
//var navNums;
var ssRunning;
var nPause;
var lastRun;
var fadeComplete = true;

var addlImgs = new Array();
//var restartDiv;

//var ssPauseTO;

//var resumeImg;
//var navArwL = new Image();
//var navArwR = new Image();
//var ssPoll;

//var thmsDivW=0;// for use in the auto scroll functions

var main_div, ss_p;//, ssToggle_a, thms_tbl, thms_tr = new Array(), thms_tds = new Array(), thms_as = new Array(), thms_imgs = new Array();
function so_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 < 5; 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]);
		}
	}
//	imgs.sort(randOrd);
	if(arg == 1) { //this is the auto restart run
//		thmsDivW = 0;
		for(var i = 1; i < imageFilenames.length; i++) {// get the first of each photog's img group in slideshowSettings.js
			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]);
				//populate the sliding div with the thumbnails for this portfolio
//	thms_tds = new Array();
//	thms_imgs = new Array();
	//	for (var i = 1; i < thumbFilenames.length; i++) {
//			thms_tds[i] = document.createElement('td');
//			thms_as[i] = document.createElement('a');
//			thms_as[i].href = "#";
//			thms_imgs[i] = new Image();
//			thms_imgs[i].src = thmsFolder + "/" + thumbFilenames[i];
//			thms_imgs[i].alt = i;
//			thms_imgs[i].onclick = function() { 
//				nIndex = parseInt(this.alt);
//				nPause = 'paused';
//				ssRunning = window.setTimeout("so_xfade("+current+","+nIndex+",'paused');", 250);
//			}
//			thms_tr[0].appendChild(thms_tds[i]);
//			thms_tds[i].appendChild(thms_as[i]);
//			thms_as[i].appendChild(thms_imgs[i]);
//	//	}
//			thmsDivW += (thms_imgs[i].width + 1);
		}
	}
//	thmsDivW += 10;//table padding L R
	// 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)) {
//		if (hSlideIsUp == true) { hSlide(); }
		safeStart(1);
	}
	return ssRunning;
}


//function addPauseMO() {
//	for(var i = 0; i < namesL_a.length; i++) {
//		namesL_a[i].onmouseover = function() {
//			ssPause(i);
//		}
//		namesL_a[i].onmouseout = function() {
//			ssResume(i);
//		}
//	}
//}


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";
//		if (current.toString().length == 1) { var nav_spcs = "&nbsp;&nbsp;&nbsp;" } 
//		else { var nav_spcs = "&nbsp;"; }
//		nav_nums.innerHTML = nav_spcs + current +"&nbsp;/&nbsp;" + (imgs.length - 1) + "&nbsp;&nbsp;";
//		if(current > 1) { navArwL.style.visibility = 'visible'; } else { navArwL.style.visibility = 'hidden'; }
//		if(current >= (imgs.length - 1)) { navArwR.style.visibility = 'hidden'; } else { navArwR.style.visibility = 'visible' }
//			main_div.style.background = "none";
			//start the slideshow
			ssRunning = window.setTimeout("so_xfade("+current+","+nIndex+",'run',null)",1500);
//			addPauseMO();
			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];
	}
	//repopulate the thumbnails div with all thumbs
//	for (var i = 1; i < thumbFilenames.length; i++) {
//		thms_tds[i] = document.createElement('td');
//		thms_tr[0].appendChild(thms_tds[i]);
//	}
//	for (var i = 1; i < thumbFilenames.length; i++) {
//		thms_tds[i].appendChild(document.createTextNode('thm'));
//	}
//	for (var i = 1; i < thumbFilenames.length; i++) {
//		thms_imgs[i] = new Image();
//		thms_imgs[i].src = thmsFolder + "/" + thumbFilenames[i];
//		thms_imgs[i].alt = i;
//		thms_imgs[i].onclick = function() { 
//			nIndex = parseInt(this.alt);
//			nPause = 'paused';
//			ssRunning = window.setTimeout("so_xfade("+current+","+nIndex+",'paused');", 250);
//		}
//		thms_tds[i].appendChild(thms_imgs[i]);
//		//alert(thms_imgs[i].src);
//	}
	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) {
//		main_div.removeChild(restartDiv);
//		restartDiv.innerHTML = '';
//		count = null;
	} else { 
//		restartDiv.innerHTML = rsMsg;
		count++;
		window.setTimeout("restartWait("+n+","+count+",'"+rsMsg+"')", 250);
	}
			
}
//function makeRestartDiv() {//create a div for a temporary displayed message
//	restartDiv = d.createElement('div');
//	restartDiv.style.position = "absolute";
//	restartDiv.style.bottom = "0px";
//	restartDiv.style.width = "100%";
//	restartDiv.style.height = "auto";
//	restartDiv.style.margin = "0 auto";
//	restartDiv.style.textAlign = "center";
////	restartDiv.innerHTML = "slideshow restarting...";
//	main_div.appendChild(restartDiv);
//}
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();
			so_init(1);
			return current, nIndex;
		} else if ((n == 1) || (n ==2))  {
			if (current == 1) { //return;
				rsMsg = '';
				resumeToggle = 'paused';
				ssResume();
			} else {
				rsMsg = 'slideshow restarting . . .';
				so_init(n);
				nPause = 'paused';
				ssResume();
			}//			return ;
		}
		restartWait(3,0,rsMsg);
	} else {
		window.setTimeout("ssRestart("+n+")", 25);
	}
}



//		function fadeImgOut() {
//			//alert(imgs[0].xOpacity);
//			var scOpacity = imgs[0].xOpacity;
//			scOpacity -= .03;
//			scOpacity.toFixed(2); 
//			if(scOpacity <= 0) {
//				scOpacity = 0;
//			}
//			imgs[0].xOpacity = scOpacity;
//			imgs[0].style.opacity = scOpacity;
//			imgs[0].MozOpacity = scOpacity;
//			imgs[0].style.filter = "alpha(opacity=" + (scOpacity*100) + ")";
//			if(imgs[0].xOpacity > 0) {
//				window.setTimeout("fadeImgOut();", 300);
//			} else {
//				return;
//			}
//		}
//
function ssStop() {
	if (fadeComplete == true) {
		window.clearTimeout(ssRunning);
//		window.clearInterval(ssPoll);
//		fadeImgOut();
//		main_div.style.background = "url("+ldgImg.src+") center no-repeat";
		for (var i = 1; i < imgs.length; i++) {
			d.getElementById('ss_p').removeChild(imgs[i]);
		}
		imgs = new Array();
//		var tdsToRem = thms_tr[0].getElementsByTagName('td');
//		
//		//tdsToRem[1].removeChild(timg[0]);
//		for (var ti = 0; ti < tdsToRem.length; ti++) {
//			var tas = tdsToRem[ti].getElementsByTagName('a');
//			var timg = tas[0].getElementsByTagName('img');
//			//tdsToRem[ti].appendChild(document.createTextNode("thm remd"));
//			tas[0].removeChild(timg[0]);
//			tdsToRem[ti].removeChild(tas[0]);
//		}
//		for (var ti = 0; ti < tdsToRem.length; ti++) {
//			thms_tr[0].removeChild(tdsToRem[ti]);
//		}
	} 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);
//		alert(nPause);
//	if(restartDiv) { main_div.removeChild(restartDiv); }
		if ((!nPause) || (nPause == 'paused')) {
//			alert('nPause: '+nPause+'\nresumeToggle: '+resumeToggle);
			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') { 
//			alert('nPause: '+nPause+'\nresumeToggle: '+resumeToggle);
			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') {
//			alert('nPause: '+nPause+'\nresumeToggle: '+resumeToggle);
			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);
	}
}




////poll to see if the slideshow stalled 
//function ssPoller(arg) {
//	var rnow = new Date();
//	if ((rnow - lastRun) > 6500) {
//		window.clearTimeout(ssRunning);
//		if(fadeComplete !== true) {
//			return;
//		}
//		else {
//			ssResume();
//		}
//	}
//}
////ssPoll = window.setInterval("ssPoller();",6000);




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("so_xfade("+fadingOut+","+fadingIn+",'paused');", 250);
	} else if(nPause == 'resume') {
//		fadingIn = imgs[resumeImg+1]?resumeImg+1:0;
		fadingIn = imgs[current+1]?current+1:1;
		nPause = resumeToggle;
		if (resumeToggle == 'paused') {
			if (ssRunning) window.clearTimeout(ssRunning);
		} else {
			ssRunning = window.setTimeout("so_xfade("+current+","+fadingIn+",'"+resumeToggle+"');", 2000);
		}
	} else if (nPause == 'run') { 
//		if (hSlideIsUp == true) { hSlide(); }
		fadingIn = imgs[current+1]?current+1:1;
//		ssToggle_a.style.color = "#FFF";
		ssRunning = window.setTimeout("so_xfade("+current+","+fadingIn+",'run');", 3000);
	}
	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;
	// 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);
//  positioning code: may not be necessary here
//	imgs[fadingIn].style.position = "absolute";
//	imgs[fadingIn].style.left = ((maxvpW - imgs[fadingIn].width) / (2)) + "px";
//	imgs[fadingIn].style.top = ((maxvpH - imgs[fadingIn].height) / (2)) + "px";
	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;"; }
//		nav_nums.innerHTML = nav_spcs + current +"&nbsp;/&nbsp;" + (imgs.length - 1) + "&nbsp;&nbsp;";
//		if(current > 1) { navArwL.style.visibility = 'visible'; } else { navArwL.style.visibility = 'hidden'; }
//		if(current >= (imgs.length - 1)) { navArwR.style.visibility = 'hidden'; } else { navArwR.style.visibility = 'visible' }
	} 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) + ")";
	}
}

