
/*
Slideshow, yeah
*/

var SS = {};

SS.isIE = ((navigator.appVersion.indexOf("MSIE")!= -1)&&!window.opera);
SS.imgs = new Array();		// images for slideshow
SS.img1 = null;				// top image elemenet
SS.img2 = null;				// bottom image element

// resizer params
SS.resizer = {};
SS.resizer.width = 521;
SS.resizer.height = 163;
SS.resizer.keepAspect = 'y';
SS.resizer.crop = 'y';


// swapper params
SS.swap = {};
SS.swap.currIndex = null;
SS.swap.tHdlSwap = null;
SS.swap.tIncSwap = 2500;

// fader params
SS.fade = {};
SS.fade.tHdlFade = null;
SS.fade.tIncFade = 25;
SS.fade.opInc = 0.01;
SS.fade.opacity = 1;

SS.init = function(img1, img2, galJSON) {
	SS.img1 = id(img1);
	SS.img2 = id(img2);
	SS.loadImages(galJSON);
	SS.start();
}

SS.start = function() {
	if (SS.imgs.length == 0) return;
	
	// images
	//SS.img1.src = SS.imgs[0];
	//SS.img2.src = SS.imgs[0];
	SS.swap.currIndex = 0;
	SS.fade.opacity = 1;
	SS.applyOpacity();
	
	// start fader
	SS.swapImg();
}

SS.swapImg = function() {
	var newIndex = SS.swap.currIndex + 1;
	if (newIndex >= SS.imgs.length) newIndex = 0;
	
	if (SS.imgs[newIndex].obj.complete) {
		SS.swap.currIndex = newIndex;
		
		SS.img1.src = SS.img2.src;
		SS.img1.alt = SS.img2.alt;
		/*
		SS.fade.opacity = 1;
		SS.applyOpacity();
		
		SS.img2.src = SS.imgs[newIndex];
		*/
		
		SS.swap.tHdlSwap = setTimeout(SS.startFade, SS.swap.tIncSwap);
	}
	else {
		SS.swap.tHdlSwap = setTimeout(SS.swapImg, SS.swap.tIncSwap);
	}
	
}

SS.startFade = function() {
	/* Had to move these lines here because of lag caused by image.php */
	SS.fade.opacity = 1;
	SS.applyOpacity();
	
	SS.img2.src = SS.imgs[SS.swap.currIndex].src;
	SS.img2.alt = SS.imgs[SS.swap.currIndex].alt;
	
	SS.fade.tHdlFade = setInterval(SS.fadeImg, SS.fade.tIncFade);
}

SS.fadeImg = function() {
	SS.fade.opacity -= SS.fade.opInc;
	SS.applyOpacity();
	if (SS.fade.opacity < 0.03) {
		clearInterval(SS.fade.tHdlFade);
		SS.swapImg();
	}
}

SS.loadImages = function(galJSON) {
	for (imgIndex in galJSON.files) {
		
		imgData = galJSON.files[imgIndex];
		var obj = new Image();
		obj.src = SS.resizerURL(imgData.source);
		SS.imgs.push({'src':SS.resizerURL(imgData.source), 'alt':imgData.alt, 'obj':obj});
	}
}

SS.resizerURL = function(src) {
	var url = './admin/image-resizer.php';
	url += '?w=' + SS.resizer.width;
	url += '&h=' + SS.resizer.height;
	url += '&keepAspect=' + SS.resizer.keepAspect;
	url += '&crop=' + SS.resizer.crop;
	url += '&img=' + src;
	return url;
}

SS.applyOpacity = function () {
	var opacity = SS.fade.opacity;
	if (opacity < 0) opacity = 0;
	var img = SS.img1;
	if (SS.isIE) {
		img.style.filter = "alpha(opacity=" + opacity*100 + ")";
	}
	else {
		// code for normal correctly programmed browsers
		img.style.opacity = opacity;
	}
}

/*
DOM
*/
function id(e) {
	if (typeof e == "string") return document.getElementById(e);
	return e;
}


