//    Code copyright 2007 by Michael D Cato of Hays Technical Services, Buda TX.
//
var tickspeed=6000		//change speed in milliseconds
var transInterval=750	//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() {
	if ((pauseShow==false) && (selected.length > 1)) {
	    prevDiv = selectedDiv;
		selectedDiv=(selectedDiv<selected.length-1)? selectedDiv+1 : 0
		if (isIE == true) {
			TransContainer.filters[0].Apply()
			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";
			var newInterval = parseInt(transInterval / transSteps);
			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 == '')
    {
        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;
					    }
				    }
			    }
		    }
		    if (catMatch == true) {
		        selected[numSelected] = i / 3
		        numSelected++
		    }
		}
		
		if (numSelected > 0)
		{
			document.getElementById("PicDiv").style.display="";       // Turn on picture display.
		
			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 = [];
		}
    }
}

function initGallery(){
	determineBrowser()
	FillBody()
	totalDivs=partscollect.length
	selected = new Array()

	inited = true;
}

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()
{
	partscollect=new Array()
	var numDivs=0
	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';
		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);
		
		document.getElementById("TransContainer").appendChild(newDiv);
		partscollect[numDivs] = newDiv;
		numDivs++;
	}
}
