//    Code copyright 2007 by Michael D Cato of Hays Technical Services, Buda TX.
//
var tickspeed=3000		//change speed in milliseconds
var transInterval=500	//number of milliseconds to complete fade
var transSteps=12		//number steps to complete fade
var selectedDiv=0		//current slide
var curIntervalTimer=null
var prevDiv=0			//previous slide (for FF/Opera fades)
var totalDivs=0			//number of slides
var pauseShow=false		//mouse over slide
var tickEvt
var isIE=false
var isNS=false
var isFF=false
var isOpera=false
var partscollect=null
var category=null
var inited=false
var selected=null


function determineBrowser() {
//alert(navigator.appName + "\nScreen x,y: " + screen.width + "," + screen.height + "\nWindows x,y: " + document.body.offsetWidth + "," + document.body.offsetHeight)
	if (navigator.appName == "Microsoft Internet Explorer") isIE=true;
//alert("isIE=" + isIE)
}

function setOpacity(amt, obj) {
	obj.style.KHTMLOpacity = amt;
	obj.style.MozOpacity = amt;
	obj.style.opacity = amt;
}

function nonIEtransition() {
	var inDiv = partscollect[selected[selectedDiv]];
	var outDiv = partscollect[selected[prevDiv]];
	var curOpacity = parseFloat(outDiv.style.opacity) - (1.0 / parseFloat(transSteps));
	setOpacity(curOpacity, outDiv);
	if (curOpacity < 0.08) {
		setOpacity(0.0, outDiv);
		outDiv.style.display="none";
	}

	curOpacity = parseFloat(inDiv.style.opacity) + (1.0 / parseFloat(transSteps));
	if (curOpacity > 0.92) { curOpacity = 0.99999; }
	setOpacity(curOpacity, inDiv);
	if (curOpacity > 0.92)
	{
		inDiv.style.display="block";
		clearInterval(curIntervalTimer);	// Commit fade suicide
	}
}

function displayNext() {
//alert("displayNext: pauseShow=" + pauseShow);
//alert("displayNext: TransContainer.filters=" + TransContainer.filters);
	if ((pauseShow==false) && (selected.length > 1)) {
	    prevDiv = selectedDiv;
		selectedDiv=(selectedDiv<selected.length-1)? selectedDiv+1 : 0
		if (isIE == true) {
			TransContainer.filters[0].Apply()
//alert("selectedDiv=" + selectedDiv + " selected[selectedDiv]=" + selected[selectedDiv] + " nextDiv=" + nextDiv + " selected[nextDiv]=" + selected[nextDiv])
			partscollect[selected[selectedDiv]].style.visibility="visible"
			partscollect[selected[prevDiv]].style.visibility="hidden"
			TransContainer.filters[0].Play()
		} else {
			clearInterval(curIntervalTimer);
			partscollect[selected[selectedDiv]].style.KHTMLOpacity = 0.0;
			partscollect[selected[selectedDiv]].style.MozOpacity = 0.0;
			partscollect[selected[selectedDiv]].style.opacity = 0.0;
			partscollect[selected[selectedDiv]].style.display="block";
			//partscollect[selected[prevDiv]].style.display="none";
			var newInterval = parseInt(transInterval / transSteps);
//alert("displayNext: newInterval: " + newInterval);
			curIntervalTimer = setInterval("nonIEtransition()", newInterval);
		}
	}
}

function startgallery(userCategory)
{
	var numSelected=0;
    category = userCategory;
    if (inited == false) { initGallery() }
    
    if (selected.length > 0) {
        clearInterval(tickEvt)
	    partscollect[selected[selectedDiv]].style.visibility="hidden"
	    partscollect[selected[selectedDiv]].style.display="none"
        selected = []
        if (selected.length != 0) { alert("selected isn't empty!"); }
    }
    numSelected = 0;
    
    if (userCategory == '')
    {
        //clearInterval(tickEvt)
        document.getElementById("PicDiv").style.display="none";       // Turn off picture display.
        selected = [];
    } else {
	    for (var i=0; i<Gallery1.length; i+=numCols) {
		    var catMatch = true;
		    if (category != "") {
			    var cats = Gallery1[i+2].split(" ");
			    var catMatch = false;
			    if (cats.length > 0) {
				    for (var j=0; j<cats.length; j++) {
					    if (cats[j] == category) {
						    catMatch = true;
						    break;
					    }
				    }
			    }
		    }
//          alert("catMatch=" + catMatch)
		    if (catMatch == true) {
		        selected[numSelected] = i / 3
		        numSelected++
		    }
		}
		
		if (numSelected > 0)
		{
			//fisherYates(selected);	// Randomize pics
			shuffle(selected);
		    
			document.getElementById("PicDiv").style.display="";       // Turn on picture display.
		
//			alert("start: about to hide Paused")
			document.getElementById("PauseID").style.display="none"
//			alert("start: about to turn on picture")
			partscollect[selected[0]].style.visibility="visible";
			partscollect[selected[0]].style.display="block";
			partscollect[selected[0]].style.opacity=0.99999;
			selectedDiv = 0;
			prevDiv = -1;
			tickEvt = setInterval("displayNext()",tickspeed)
		}
		else // nothing selected
		{
	        document.getElementById("PicDiv").style.display="none";       // Turn off picture display.
			selected = [];
		}
//		alert("numSelected=" + numSelected)
//		alert("selected=" + selected)
    }
}

function initGallery(){
	determineBrowser()
//alert("initGallery:  partscollect=" + partscollect)
	FillBody()
	totalDivs=partscollect.length
	selected = new Array()

	inited = true;
}

function PicWindow(){
	var children = partscollect[selected[selectedDiv]].childNodes;
//	alert(" nodeName=" + partscollect[selected[selectedDiv]].nodeName + " nodeType=" + partscollect[selected[selectedDiv]].nodeType + " src=" + partscollect[selected[selectedDiv]].src);
	for (var i=0; i<children.length; i++) {
//		alert(i + " of " + children.length + " nodeName=" + children[i].nodeName + " nodeType=" + children[i].nodeType + " src=" + children[i].src);
		if (children[i].nodeName == "DIV") {
			pChilds = children[i].childNodes;
			for (var j=0; j<pChilds.length; j++)
			{
				if (pChilds[j].nodeName == "IMG") {
//					alert("PicWindow: " + pChilds[j].src);
					window.open(pChilds[j].src.replace(picSm,picLg),'RockSolidPicture','width=660,height=660,chromeless');
					break;
				}
			}
		}
	}
}

function doPrev(){
	if (isIE) {
		partscollect[selected[selectedDiv]].style.visibility="hidden"
	} else {
		partscollect[selected[selectedDiv]].style.display="none"
	}
	selectedDiv--
	if (selectedDiv < 0)
		selectedDiv = selected.length - 1
	if (isIE) {
		partscollect[selected[selectedDiv]].style.visibility="visible"
	} else {
		partscollect[selected[selectedDiv]].style.display="block"
	}
}

function doNext(){
	if (isIE) {
		partscollect[selected[selectedDiv]].style.visibility="hidden"
	} else {
		partscollect[selected[selectedDiv]].style.display="none"
	}
	selectedDiv++
	if (selectedDiv > selected.length - 1)
		selectedDiv = 0
	if (isIE) {
		partscollect[selected[selectedDiv]].style.visibility="visible"
	} else {
		partscollect[selected[selectedDiv]].style.display="block"
	}
}


function PauseGallery()
{
    pauseShow=true;
    document.getElementById("PauseID").style.display="block";
}
function ResumeGallery()
{
    pauseShow=false;
    document.getElementById("PauseID").style.display="none";
}


// Creates DIVs and fills them with all pictures and captions
// so that they can be turned on/off at will.
function FillBody()
{
//alert("FillBody")
	//For loop for individual divs goes here to create the following for each picture/description:
	//			<div id="Staining" class="gallerycontent" subject="Flooring" src="../Images/P1024/DSC00913.jpg" style="position:absolute; top:30px; left:25px; width:320px; height:350px">
	//				<p align="center">
	//				<img border="0" src="../Images/P1024/DSC00913.jpg" width="320" height="320"><br>Floor Staining</p>
	//			</div>
	//
	partscollect=new Array()
	var numDivs=0
	var tmStart = new Date().getTime();
	for (var i=0; i<Gallery1.length; i+=numCols) {
		var newDiv = document.createElement("div");
		if (isIE == true) {
			newDiv.style.visibility="hidden";
		} else {
			newDiv.style.display="none";
		}
		newDiv.className = 'gallerycontent';
		var newP = document.createElement("div");
		newP.className = 'gallerytext';
		//newP.setAttribute("align", "center");
		var newImg = document.createElement("img");
		newImg.setAttribute("src", Gallery1[i]);
		newP.appendChild(newImg);
		newP.appendChild(document.createElement("br"));
		var txt2 = document.createTextNode(Gallery1[i+1]);
		newP.appendChild(txt2);
		newDiv.appendChild(newP);
		
//		var dbgP = document.createElement("div");
//		dbgP.className = 'gallerytext Sub4';
//		dbgP.appendChild( document.createTextNode(numDivs + "   " + Gallery1[i]) );
//		newDiv.appendChild(dbgP);
		
		document.getElementById("TransContainer").appendChild(newDiv);
		partscollect[numDivs] = newDiv;
		numDivs++;
	}
    var tmElapsed = new Date().getTime() - tmStart;
//alert(tmElapsed);
//alert("FillBody:  num DIVs created = " + numDivs);
}


// Randomize an array
function fisherYates ( myArray ) {
//alert("fisherYates BEFORE=" + myArray)
  var i = myArray.length;
  if ( i == 0 ) return false;
  while ( --i ) {
     var j = Math.floor( Math.random() * ( i + 1 ) );
     var tempi = myArray[i];
     var tempj = myArray[j];
     myArray[i] = tempj;
     myArray[j] = tempi;
   }
//alert("fisherYates AFTER=" + myArray)
}

function shuffle( myArray ) {
//alert("shuffle BEFORE="	+ myArray);
	var n = myArray.length;
	for (var i=0; i<n; i++) {
		var r = i + Math.floor( Math.random() * (n - i));
		var tempx = myArray[r];
		myArray[r] = myArray[i];
		myArray[i] = tempx;
	}
//alert("shuffle AFTER=" + myArray);
}
