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


var thmsPerRow = 5;
var pldNum = 10;//one more than the number of images to load while the rest download in the background

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

var navnums;
var ssRunning;
var nPause;
var fadeComplete = true;

var addlImgs = new Array();

var ssPauseTO;

var navArwL = new Image();
var navArwR = new Image();

var main_div, ss_p;
var thms_tbl, thms_trs = new Array(), thms_tds = new Array(), thms_as = new Array(), thms_imgs = new Array();
var gTitle;
var trsToRem = 0;
var oSize_bg, oSize_cntr;

function so_init(arg) {
	if(!d.getElementById || !d.createElement)return;
	deactivateControls();
	if(arg == 0) { //this is the initial run
		d.title = defaultTitle + titleSeparator + portfolioTitle;
		gTitle = d.getElementById('gTitle');
		gTitle.appendChild(d.createTextNode(portfolioTitle));
		main_div = d.getElementById("main_div"); 
		makeRestartDiv();
		ss_p = d.getElementById("ss_p");
		thms_tbl = d.getElementById('thms_tbl');
		navArwL = d.getElementById("navArwL_img");
		navArwR = d.getElementById("navArwR_img");
		navnums = d.getElementById("navnums");
		//set up initial batch of imgs [ pldNum value ] to run while the rest download...
		if(pldNum >= imageFilenames.length) {
			so_init(1);
			return;
		}
		make_ssP(pldNum+1);
		make_thmsTbl(pldNum+1);
		trsToRem = thms_tbl.getElementsByTagName('tr').length;

	}
	if(arg == 1) { //this is the auto restart run
		make_ssP(imageFilenames.length);
		make_thmsTbl(thumbFilenames.length);
	}
	
	
	// position the images
	for(var i = 0; i < imgs.length; i++) {
		posImgs(i);
	}
	//start slideshow
	if (arg == 0) {
		safeStart(1);
		addImages();
	} else if ((arg == 1) || (arg == 2)) {
		safeStart(1);
		if(statementText) { setTimeout("stmtSlide();", 2000); }
		// ------ set up oversize image layout ------
		oSize_bg = d.getElementById('oSize_bg');
		oSize_cntr = d.getElementById('oSize_cntr');
		if(statementText != '') {
			deactivateControls();
		} else {
			activateThms();
			activateControls();
		}
		full_scr_cntr = d.getElementById('full_scr_cntr');
	}
	
	return ssRunning;
}

function make_ssP(numImgs) {
	ss_p.innerHTML = '';
	imgs[0] = new Image();
	imgs[0].src = '../../img/imgW.gif';
	ss_p.appendChild(imgs[0]);
	for(var i = 1; i < numImgs; i++) {
		imgs[i] = new Image();
		imgs[i].style.visibility = "hidden";
		imgs[i].src = sPicsFolder + imageFilenames[i];
		imgs[i].style.position = 'absolute';
		imgs[i].style.left = '-800px';
		ss_p.appendChild(imgs[i]);
	}
}

// ----- to re-activate the portfolio controls if a statement must load first -----
function activateThms() { //thms deactivated in make_ThmsTbl()
	if(thms_imgs[1].onclick == '' | !thms_imgs[1].onclick | !thms_imgs[1].onclick == null) {
		for(var i = 0; i < thms_imgs.length; i++) {
			thms_imgs[i].onclick = function() { 
				nIndex = parseInt(this.alt);
				nPause = 'paused';
				showThms();
				//ssRunning = window.setTimeout("so_xfade("+current+","+nIndex+",'paused');", 1250);
			}
		}
	} else {
		return;
	}
}
function activateControls() {
	if(statementText != '') {
		if(d.getElementById('icoStmt')) d.getElementById('icoStmt').style.visibility = 'visible';
	}
	if(d.getElementById('icoThmbs')) d.getElementById('icoThmbs').style.visibility = 'visible';
	if(d.getElementById('navArwLimg')) d.getElementById('navArwLimg').style.visibility = 'visible';
	if(d.getElementById('navArwRimg')) d.getElementById('navArwRimg').style.visibility = 'visible';
}
function deactivateControls() {
	if(d.getElementById('icoStmt')) d.getElementById('icoStmt').style.visibility = 'hidden';
	if(d.getElementById('icoThmbs')) d.getElementById('icoThmbs').style.visibility = 'hidden';
	if(d.getElementById('navArwLimg')) d.getElementById('navArwLimg').style.visibility = 'hidden';
	if(d.getElementById('navArwRimg')) d.getElementById('navArwRimg').style.visibility = 'hidden';
	if(d.getElementById('icoEnlg')) d.getElementById('icoEnlg').style.visibility = 'hidden';
}
//----------------------------------------------------------------------------------
function make_thmsTbl(numThms) {//populate the sliding div with the thumbnails for this portfolio
	numThms-=1;
	var numRows = parseInt(numThms/thmsPerRow);
	if(thms_tbl.innerHTML == '') {
		thms_tbody = d.createElement('tbody');
	} else {
		thms_tbody = thms_tbl.firstChild;
	}
	for(var i = 0; i < numThms; i++) {
		thms_tds[i] = d.createElement('td');
		thms_tds[i].style.width = Math.floor(100/thmsPerRow) + '%';
		thms_as[i] = d.createElement('a');
		thms_as[i].href = "#";
		thms_imgs[i] = new Image();
		thms_imgs[i].src = thmsFolder + "/" + thumbFilenames[i+1];
		thms_imgs[i].alt = i+1;
//		if(statementText != '') {//kill thms till statement is showing
//			thms_imgs[i].onclick = '';
//		} else {
//			thms_imgs[i].onclick = function() { 
//				nIndex = parseInt(this.alt);
//				nPause = 'paused';
//				showThms();
//				//ssRunning = window.setTimeout("so_xfade("+current+","+nIndex+",'paused');", 1250);
//			}
//		}
		thms_tds[i].appendChild(thms_as[i]);
		thms_as[i].appendChild(thms_imgs[i]);
	}
	//make all rows with full number of thumbs
	var ti = 0;
	var ri = 0;
	
	if(numThms >= thmsPerRow) {
		for(var ri = 0; ri < numRows; ri++) {
			thms_trs[ri] = d.createElement('tr');
			for(var j = 0; j < thmsPerRow; j++) {
				thms_trs[ri].appendChild(thms_tds[ti]);
				ti += 1;
			}
		}
	}
	//make the last row
	if(((numThms%thmsPerRow) != 0) || (numThms < thmsPerRow)) {
		thms_trs[ri] = d.createElement('tr');
		thms_trs[ri].className = 'lastrow';
		for(var lti = 0; lti < thmsPerRow; lti++) {
			if(thms_tds[ti]) { 
				thms_trs[ri].appendChild(thms_tds[ti]);
			}
			if(!thms_tds[ti]) {
				thms_tds[ti] = d.createElement('td');
				thms_tds[ti].innerHTML = '&nbsp;';
				thms_tds[ti].className = 'blank_thm';
			}
			thms_trs[ri].appendChild(thms_tds[ti]);
			ti += 1;
		}
	}
	else {
		thms_trs[ri-1].className = 'lastrow';
	}

	for(var i = 0; i < thms_trs.length; i++) {
		thms_tbody.appendChild(thms_trs[i]);
	}
	thms_tbl.appendChild(thms_tbody);
	init_flexcroll();
}


function init_flexcroll() {
	if(thumbFilenames.length-1 > thms_max_noscr) {
		CSBfleXcroll('thms_div');
		if(!d.getElementById('thms_div_vscrollerbase')) {
			setTimeout("init_flexcroll();", 1000);
			return;
		} else {
			if(d.getElementById('thms_div_vscrollerbase').style.visibility == 'visible') {
				//do nothing alert(d.getElementById('thms_div_vscrollerbase').style.visibility);
			} else {
				setTimeout("init_flexcroll();", 1000);
			}
		}
	}
}

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.position = "absolute";
		imgs[i].style.top = Math.round((maxvpH - (imgsH + 2)) / (2)) + "px";
		imgs[i].style.left = '-800px';
		imgs[i].style.visibility = "visible";
		imgs[i].onmouseover = function() { imgs[i].style.cursor = "pointer"; };
		imgs[i].onmouseout = function() { imgs[i].style.cursor = "default"; };
		//if(!triptychs) {
			imgs[i].onclick = function() { ssPause(1); };
		//} else {
		//	imgs[i].onclick = function() { show_oSize(); };
		//}
	}
}




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); }
			if (current.toString().length == 1) { var nav_spcs = "&nbsp;&nbsp;&nbsp;" } 
			else { var nav_spcs = "&nbsp;"; }
			navnums.innerHTML = ''; nav_spcs + current +"&nbsp;/&nbsp;" + (imgs.length - 1) + "&nbsp;&nbsp;";
			if(statementText != '') {
				if(d.getElementById('icoStmt')) d.getElementById('icoStmt').style.visibility = 'visible';
			}
			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
	addlImgs[0] = new Image();
	addlImgs[0].src = '../../img/imgW.gif';

	for (var i = 1; i < imageFilenames.length; i++) {
		addlImgs[i] = new Image();
		addlImgs[i].src = sPicsFolder + imageFilenames[i];
	}
	for (var i = 0; i < imageFilenames.length; i++) {
		var imgsW = addlImgs[i].width;
		var imgsH = addlImgs[i].height;
		addlImgs[i].style.visibility = 'hidden';
		addlImgs[i].style.position = 'absolute';
		addlImgs[i].style.top = Math.round((maxvpH - (imgsH + 2)) / (2)) + "px";
	}
	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.top = "50%";
	restartDiv.style.width = "100%";
	restartDiv.style.height = "25%";
	restartDiv.style.background = 'none';
	restartDiv.style.margin = "0 auto";
	restartDiv.style.textAlign = "center";
	restartDiv.innerHTML = '';
	main_div.appendChild(restartDiv);
}
function ssRestart(n) {
	if (fadeComplete == true) {
		if (n == 0) {
			restartDiv.innerHTML = rsMsg;
			ssStop();
			imgs = addlImgs;
			addlImgs = new Array();
			for (var i = 0; i < imgs.length; i++) {
				//imgs[i].style.visibility = "hidden";
				d.getElementById('ss_p').appendChild(imgs[i]);
			}
			current = 0;
			nIndex = 1;
			so_init(1);
			return current, nIndex;
		}// else if ((n == 1) || (n ==2))  {
//			if (current == 1) { //return;
//				rsMsg = 'loading the images';
//				resumeToggle = 'paused';
//				ssResume();
//			} else {
//				rsMsg = 'loading all images...';
//				so_init(n);
//				nPause = 'paused';
//				ssResume();
//			}//			return ;
//		}
		restartWait(8,0,rsMsg);
	} else {
		window.setTimeout("ssRestart("+n+")", 25);
	}
}

//function ssRestart(n) {
//	if (fadeComplete == true) {
//		ssStop();
//		ss_p.innerHTML = '';
//		imgs = addlImgs;
//		addlImgs = new Array();
//		for (var i = 0; i < imgs.length; i++) {
//			//imgs[i].style.visibility = "hidden";
//			d.getElementById('ss_p').appendChild(imgs[i]);
//		}
//		current = 0;
//		nIndex = 1;
//		so_init(1);
//		return current, nIndex;
//	} else {
//		window.setTimeout("ssRestart("+n+")", 25);
//	}
//}


function ssStop() {
	if (fadeComplete == true) {
		window.clearTimeout(ssRunning);
		for (var i = 0; i < imgs.length; i++) {
			d.getElementById('ss_p').removeChild(imgs[i]);
		}
		imgs = new Array();
		for (var i = 0; i < trsToRem; i++) {
			var tdsToRem = thms_trs[i].getElementsByTagName('td');
			for (var ti = 0; ti < tdsToRem.length; ti++) {
				var tas = tdsToRem[ti].getElementsByTagName('a');
				var timg = tas[0].getElementsByTagName('img');
				tas[0].removeChild(timg[0]);
				tdsToRem[ti].removeChild(tas[0]);
			}
			for (var ti = 0; ti < tdsToRem.length; ti++) {
				thms_trs[i].removeChild(tdsToRem[ti]);
			}
			thms_tbody.removeChild(thms_trs[i]);
		}
		thms_tbl.removeChild(thms_tbody);
	} else {	
		window.setTimeout("ssStop()", 25);
	}
}


		

var dir;
function ssPause(dir_arg) {
	if(thmsSlideIsUp == false) {
		thmsSlide();
	}
	if(stmtSlideIsUp == true) {
		stmtSlide();
	}
	if(triptychs == true) d.getElementById('toEnlg').style.visibility = 'visible';
	if ((fadeComplete == true) && (thmsSliding == false) && (stmtSliding == false)) {
		window.clearTimeout(ssPauseTO);
		window.clearTimeout(ssRunning);
		nPause = 'paused';
		dir = dir_arg;
		getImgsToFade(current, nPause);
		return nPause, ssRunning, dir;
	}
	else { // try again later
		ssPauseTO = window.setTimeout("ssPause("+dir_arg+")", 25);
		return ssPauseTO;
	}
}




function getImgsToFade(current, nPause) {
	var fadingOut = current;
	var fadingIn;
	// get the next image to fade in
	if (nPause == 'paused')
	{ 
		if (ssRunning) window.clearTimeout(ssRunning);
		if (current+dir < 1) {
			fadingIn = imgs.length-1;
		} else {
			fadingIn = imgs[current + dir]?current+dir:1;
		}
		imgs[fadingIn].style.left = '-800px';
		ssRunning = window.setTimeout("so_xfade("+fadingOut+","+fadingIn+",'paused');", 250);
	} else if (nPause == 'run') { 
		fadingIn = imgs[current+1]?current+1:1;
		ssRunning = window.setTimeout("so_xfade("+current+","+fadingIn+",'run');", 3000);
	}
	nIndex = fadingIn;
	return current, nIndex, nPause, ssRunning;
}
	
function showThms() {
	if(thmsSliding == true | stmtSliding == true) {
		return;
	}
	if(stmtSlideIsUp == true) {
		stmtSlide();
		if(thmsSlideIsUp == false){
			return;//do nothing
		} else {//alert('thmsSlideIsUp='+thmsSlideIsUp);
			setTimeout("so_xfade(current, 0, 'paused');", 750);
			setTimeout("thmsSlide();", 1750);
			if(triptychs == true) d.getElementById('toEnlg').style.visibility = 'hidden';
		}
	} else {
		if(thmsSlideIsUp == false){
			thmsSlide();
			setTimeout("so_xfade(current, nIndex, 'paused');", 1250);
			if(triptychs == true) d.getElementById('toEnlg').style.visibility = 'visible';
		} else {
			so_xfade(current, 0, 'paused');
			setTimeout("thmsSlide();", 1250);
			if(triptychs == true) d.getElementById('toEnlg').style.visibility = 'hidden';
		}
	}
}

function showStmt() {
	if(stmtSliding == true | thmsSliding == true) {
		return;
	}
	stmtSlide();
}


var cLeft = 0, nLeft = 0;
function so_xfade(current_arg,nIndex_arg,nPause) { 
	var fading; //for the fading timeouts
	// get values for current and next images
	var fadingOut = current_arg;
	var fadingIn = nIndex_arg;

	if(fadingOut == fadingIn)return;
	if(!imgs[fadingIn])return;
	// increment the position of each image
	if ((nLeft - 800) < -30) {
		cLeft += 15;//10
		nLeft += 15;//10
	} else if ((nLeft - 800) < -10) {
		cLeft += 5;
		nLeft += 5;
	} else {
		cLeft += 1;
		nLeft += 1;
	}
	imgs[fadingOut].style.left = cLeft  + 'px';
	imgs[fadingIn].style.left = nLeft - 800 + 'px';
	// things to do one time when the xfade is complete
	if (imgs[fadingIn].offsetLeft > 0) {
		//force xfade to complete
		imgs[fadingOut].style.left =  '-800px';
		imgs[fadingIn].style.left = '0px';
		fadingOut = fadingIn;
		fadeComplete = true;
		if (nPause == 'run') {
			getImgsToFade(fadingOut, nPause);
		}
		current = fadingOut;
		if (current.toString().length == 1) { var nav_spcs = "&nbsp;&nbsp;&nbsp;" } 
		else { var nav_spcs = "&nbsp;"; }
		if((current==0)) {
			navnums.innerHTML = '';
			if(d.getElementById('icoEnlg')) d.getElementById('icoEnlg').style.visibility = 'hidden';
		} else {
			navnums.innerHTML = nav_spcs + current +"&nbsp;/&nbsp;" + (imgs.length - 1) + "&nbsp;&nbsp;";
			if(statementText != '') {
				if(d.getElementById('icoEnlg')) d.getElementById('icoEnlg').style.visibility = 'visible';
			}
		}
		cLeft = 0;
		nLeft = 0;
	} else {
		fadeComplete = false;
		if(d.getElementById('icoEnlg')) d.getElementById('icoEnlg').style.visibility = 'hidden';
		if (nPause == 'paused') { 
			fading = window.setTimeout("so_xfade("+fadingOut+","+fadingIn+",'paused')", 15);//<-larger value here = slower fade //15
		} else { 
			fading = window.setTimeout("so_xfade("+fadingOut+","+fadingIn+",'run')", 15);//<-larger value here = slower fade //15
		}
	}
	
}

//---------------- oversize images flyout layout ------------------------------
var oSizeImg;
var ztUh;
var ztDw = 0;//100;
var ztDh = 0;//100;
var ztw = ztDw, zth = ztDh;
var ztUw = 665;
var ztwincr = 20;
var zthincr = 30;
var tipIsUp = false;
var tipIsDown = false;
var slidingUp = false;
var slidingDown = false;
var full_scr_cntr, fs_content_wrapper;
function show_oSize() {
	if((slidingUp == true) || (slidingDown == true)) { 
		setTimeout('show_oSize()', 100);
		return;
	}
	if((tipIsUp == true)) {//hide
		full_scr_cntr.style.visibility = 'hidden';
		fs_content_wrapper = d.getElementById('oSize_cntr_contentwrapper');
		if(fs_content_wrapper) {
			fs_content_wrapper.innerHTML = '';
		}
		contract_oSize();
	} else {
		ztUh = full_scr_cntr.offsetHeight;
		oSizeImg = new Image();
		var img_p = d.createElement('p');
		oSizeImg.src = oSizeFolder + imageFilenames[current];
		//oSizeImg.onclick = function() { show_oSize(); }
		img_p.appendChild(oSizeImg);
		if(fs_content_wrapper) {
			fs_content_wrapper.appendChild(img_p);
		} else {
			oSize_cntr.appendChild(img_p);
		}
		oSizeImg.style.visibility = 'hidden';
		oSize_cntr.style.visiblity = 'hidden';
		oSize_bg.style.visibility = 'visible';
		expand_oSize();
	}
}
function expand_oSize() {
	if(tipIsUp == true) return;
	ztw += ztwincr; if(ztw>ztUw)ztw=ztUw;
	zth += zthincr; if(zth>ztUh)zth=ztUh;
	if((ztw==ztUw)&&(zth==ztUh)) {
		oSize_bg.style.width = ztw + 'px';
		oSize_bg.style.height = zth + 'px';
		oSize_cntr.style.width = ztw + 'px';
		oSize_cntr.style.height = zth + 'px';
		oSize_cntr.style.top = "-" + oSize_cntr.offsetTop + "px";
		oSize_cntr.style.visibility = "visible";
		oSizeImg.style.visibility = "visible";
		CSBfleXcroll('oSize_cntr');
		full_scr_cntr.style.visibility = 'visible';
		slidingUp = false;
		tipIsUp = true;
		tipIsDown = false;
		return;
	} else {
		slidingUp = true;
		tipIsUp = false;
		oSize_bg.style.width = ztw + 'px';
		oSize_bg.style.height = zth + 'px';
		oSize_cntr.style.width = ztw + 'px';
		oSize_cntr.style.height = zth + 'px';
		setTimeout('expand_oSize()', 25);
		return;
	}
}
function contract_oSize() {
	if(tipIsDown == true) return;
	fleXcrollTo('oSize_cntr',false,'0px',false);//reset scroll pos for next img
	ztw -= ztwincr; if(ztw<ztDw)ztw=ztDw;
	zth -= zthincr; if(zth<ztDh)zth=ztDh;
	if((ztw==ztDw)&&(zth==ztDh)) { 
		oSize_bg.style.width = ztw + 'px';
		oSize_bg.style.height = zth + 'px';
		oSize_cntr.style.width = ztw + 'px';
		oSize_cntr.style.height = zth + 'px';
		oSize_cntr.style.top = "-" + ztDh + "px";
		slidingDown = false;
		tipIsDown = true;
		tipIsUp = false;
		return;
	} else {
		slidingDown = true;
		tipIsDown = false;
		oSize_bg.style.width = ztw + 'px';
		oSize_bg.style.height = zth + 'px';
		oSize_cntr.style.width = ztw + 'px';
		oSize_cntr.style.height = zth + 'px';
		setTimeout('contract_oSize()', 25);
		return;
	}
}














