/*-----------------------------------------
 DECLARE GLOBAL VARS FOR HOMEPAGE PHOTO STUFF
-----------------------------------------*/

var _STR_FRAME = "testimonials";
var _STR_SLIDE = "photo-slide";
var _STR_THUMBS = "list-images";
var _STR_THUMBSNAV = "thumbs-nav-right";
var _STR_SLIDESHOWNAV = "nav";

var _SHOW_SPEED = 3500;
var _FADE_INCREMENT = 10;
var _FADE_SPEED = 50;
var _FADE_ON = false;
var _TIMER_FADE;
var _TIMER_START;
var _TIMER_DISPLAY;
var _TIMER_THUMBS;
var _ARR_PHOTO = new Array();
var _ARR_THUMBSET = new Array();
var _ARR_THUMBINDEX = new Array();
var _INT_PHOTO = 0;
var _THUMBS_QUANTITY = 8;

// ----- functions for homepage photo stuff

function shuffleArray(arrInput) {
	var i = arrInput.length;
	if ( i == 0 ) {
		return false;
	}
	while ( --i ) {
		var j = Math.floor( Math.random() * ( i + 1 ) );
		var tempi = arrInput[i];
		var tempj = arrInput[j];
		arrInput[i] = tempj;
		arrInput[j] = tempi;
	}
}

function changeSlide(intDirection) {
	_FADE_ON = false;
	moveSlide(intDirection);
}

function moveSlide(intDirection) {
	_INT_PHOTO += intDirection;
	if (_INT_PHOTO >= _ARR_PHOTO.length) {
		_INT_PHOTO = 0;
	} else if (_INT_PHOTO < 0) {
		_INT_PHOTO = _ARR_PHOTO.length - 1;
	}
	clearTimeout(_TIMER_DISPLAY);
	fadeOut(100);
}

function photo(strTitle, strURL, strText) {
	this.title = strTitle;
	this.text = strText;
	this.image = new Image();
	this.image.src = strURL;

	// prevent reloading
	if(!this.image.complete) {
		this.image.onload = function() {}
	}
}

function playSlideShow() {
	_FADE_ON = true;
	startSlideShow(_INT_PHOTO);
}

function pauseSlideShow() {
	_FADE_ON = false;
	clearTimeout(_TIMER_DISPLAY);
}

function plotSlideShowNav() {
	var objSlideShowNav = document.getElementById(_STR_SLIDESHOWNAV);
	objSlideShowNav.innerHTML = '&lt; <a href="javascript: changeSlide(-1);">previous</a> | <a href="javascript: showAll();">show all</a> | <!--<a href="javascript: pauseSlideShow(-1);">stop</a> | <a href="javascript: playSlideShow(1);">play</a> |--> <a href="javascript: changeSlide(1)">next</a> &gt;';
}

function plotPhotoLoading() {
	var objFrame = document.getElementById(_STR_FRAME);
	objFrame.innerHTML = '<div id="photo-blank">Loading...</div>';
}

function startSlideShow(intIndex) {
	plotSlideShowNav();
	plotPhotoLoading();
	var objCurrent = _ARR_PHOTO[intIndex];
	if (objCurrent.image.complete) {
//		alert("image load done");
		clearTimeout(_TIMER_START)
		showSlide(intIndex);
	} else {
//		alert("image load not done");
		_TIMER_START = setTimeout("startSlideShow(" + intIndex + ")", 1000);
	}
}

function showSlide(intIndex) {
	var objImage = _ARR_PHOTO[intIndex];
	var objFrame = document.getElementById(_STR_FRAME);
	//alert(intIndexCurrent);
	//alert(objFrame.innerHTML);
	if (objFrame.style.MozOpacity!=null) {  
		objFrame.innerHTML = '<h2>' + objImage.title + '</h2><table><tr><td><img id="' + _STR_SLIDE + '" src="' + objImage.image.src + '" width="' + objImage.image.width + '" height="' + objImage.image.height + '" align="left"/></td><td>' + objImage.text + '</td></tr></table>';
		fadeIn(0);
	} else {
		objFrame.innerHTML = '<h2>' + objImage.title + '</h2><table><tr><td><img id="' + _STR_SLIDE + '" src="' + objImage.image.src + '" width="' + objImage.image.width + '" height="' + objImage.image.height + '" align="left"/></td><td>' + objImage.text + '</td></tr></table>';
		fadeIn(100);
	}
}

function fadeIn(intOpacityCurrent) {
	if (intOpacityCurrent < 100) {
		intOpacityCurrent += _FADE_INCREMENT;
		//alert("start fading in " + intOpacityCurrent);
		fadeImage(intOpacityCurrent);
		_TIMER_FADE = setTimeout("fadeIn(" + intOpacityCurrent + ")", _FADE_SPEED);
	} else {
		//alert("fading in done");
		clearTimeout(_TIMER_FADE);
		if (_FADE_ON) {
			_TIMER_DISPLAY = setTimeout("moveSlide(1);", _SHOW_SPEED);
		}
	}
}

function fadeOut(intOpacityCurrent) {
	if (intOpacityCurrent > 0) {
		intOpacityCurrent -= _FADE_INCREMENT;
		//alert("start fading out " + intOpacityCurrent);
		fadeImage(intOpacityCurrent);
		_TIMER_FADE = setTimeout("fadeOut(" + intOpacityCurrent + ")", _FADE_SPEED);
	} else {
		//alert("fading out done");
		clearTimeout(_TIMER_FADE);
		showSlide(_INT_PHOTO);
	}
}

function fadeImage(intOpacity) {
	var objSlide = document.getElementById(_STR_SLIDE);
	with(objSlide) {
		if (style) {
			if (style.MozOpacity!=null) {  
				/* Mozilla's pre-CSS3 proprietary rule */
				//alert("moz fade");
				style.MozOpacity = (intOpacity/100) - .001;
			//} else if (style.intOpacity=null) {
				//alert ("that");
				/* CSS3 compatible */
			//	style.opacity = (intOpacity/100) - .001;
			//} else if (style.filter!=null) {
				/* IE's proprietary filter */
				//style.filter = "alpha(opacity="+intOpacity+")";
			}
		}
	}
}

function initThumbs(intStart) {
	var objThumbs = document.getElementById(_STR_THUMBS);
	var strLoading = '<div id="thumbs-blank">Thumbnails loading...</div>';
	objThumbs.innerHTML = strLoading;

	var intEnd = (intStart - 1 + _THUMBS_QUANTITY > _ARR_PHOTO.length) ? _ARR_PHOTO.length - 1: intStart - 1 + _THUMBS_QUANTITY;
	_ARR_THUMBSET = new Array();
	_ARR_THUMBINDEX = new Array();
	for (i=intStart; i<=intEnd; i++) {
		_ARR_THUMBSET[_ARR_THUMBSET.length] = _ARR_PHOTO[i];
		_ARR_THUMBINDEX[_ARR_THUMBINDEX.length] = i;
//		alert(_ARR_THUMBS[i].image.complete);
	}
	checkThumbStatus(intStart, intEnd);
}

function checkThumbStatus(intStart, intEnd) {
	for (i=0; i<_ARR_THUMBSET.length; i++) {
		if (!_ARR_THUMBSET[i].thumb.complete) {
			_ARR_THUMBSET[i].thumb.onload = function() {
				//_THUMBS_PROGRESS = i / _THUMBS_QUANTITY;
				//alert(_THUMBS_PROGRESS);
			}
//			alert("not done");
			_TIMER_THUMBS = setTimeout("checkThumbStatus(" + intStart + ", " + intEnd + ")", 1000);
			return null;
		}
	}
//	alert("done");
	clearTimeout(_TIMER_THUMBS);
	plotThumbs(intStart, intEnd);
}

function plotThumbs(intStart, intEnd) {
	var objThumbs = document.getElementById(_STR_THUMBS);
	var strThumbs = '';
	
	for (i=0; i<_ARR_THUMBSET.length; i++) {
		strThumbs += '<li><a href="javascript: gotoSlide(' + _ARR_THUMBINDEX[i] + ')"><img src="/n.gif" style="background: url(' + _ARR_THUMBSET[i].thumb.src + '); " width="' + _ARR_THUMBSET[i].thumb.width + '" height="' + _ARR_THUMBSET[i].thumb.height + '"></a></li>';
	}
	objThumbs.innerHTML = strThumbs;

	var objNav = document.getElementById(_STR_THUMBSNAV);
	var strNav = '';

	strNav += '(' + (intStart - 1 + 2) + ' - ' + (intEnd -1 + 2) + ' of ' + _ARR_PHOTO.length + ') ';
	strNav += '&lt; ';
	if (intStart - _THUMBS_QUANTITY >= 0) {
		strNav += '<a href="javascript: initThumbs(' + (intStart - _THUMBS_QUANTITY) + ')">';
	}
	strNav += 'previous';
	if (intStart - _THUMBS_QUANTITY >= 0) {
		strNav += '</a>';
	}
	strNav += ' | ';
	if (intEnd + 1 < _ARR_PHOTO.length) {
		strNav += '<a href="javascript: initThumbs(' + (intEnd -1 + 2) + ')">';
	}
	strNav += 'next';
	if (intEnd + 1 < _ARR_PHOTO.length) {
		strNav += '</a>';
	}
	strNav += ' &gt;';
	objNav.innerHTML = strNav;
}

function gotoSlide(intIndex) {
	_INT_PHOTO = intIndex;
	pauseSlideShow();
	showSlide(intIndex);
}

function showAll() {
	var objFrame = document.getElementById(_STR_FRAME);
	objFrame.innerHTML = '';
	for (i=0; i<_ARR_PHOTO.length; i++) {
		var objImage = _ARR_PHOTO[i];
		objFrame.innerHTML += '<h2>' + objImage.title + '</h2><table><tr><td><img id="' + _STR_SLIDE + '" src="' + objImage.image.src + '" width="' + objImage.image.width + '" height="' + objImage.image.height + '" align="left"/></td><td>' + objImage.text + '</td></tr></table>';
		objFrame.innerHTML += '<a href="#top">back to top</a><hr>'
	}
}