/**
 * @author dylan
 */

var returnType="csv";
var arrImages=new Array();
var myInterval;
var req;
var globalId;
var globalDir;
var globalSpeed;
var currentImageCounter=0;
var working=false;
var slideshowDebug=false;
var preloadInterval;

function slideshow(id,dir,speed) {
	if (myInterval) {
		clearInterval(myInterval);
		myInterval=0;
	}
	contentId = id;
	globalId='slideshowImageImg';
	globalDir=dir;
	globalSpeed=speed;

	var contentEl = document.getElementById(contentId);
	contentEl.innerHTML = "<img id='slideshowImageImg' width='600' height='400' src='images/slideshows/blank_black_600x400.jpg' alt='slideshow img' />"

	if (window.XMLHttpRequest) {
		// Mozilla, Safari
       req = new XMLHttpRequest();
		if (req.overrideMimeType) {
            req.overrideMimeType('text/xml');
         }
    } else if (window.ActiveXObject) {
		// IE
        req = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
		alert('unknown browser');
		return false;
	}
	
	if (!req) {
		alert('Cannot create XMLHTTP instance');
		return false;
	}
	
    req.onreadystatechange = processReqChange;
    req.open("GET", './slideshow.php?imgdir='+globalDir+'&returnType='+returnType, true);
    req.send(null);
}

function processReqChange() {
    if (req.readyState == 4) {
        if (req.status == 200) {
			if (returnType=="xml") {
				// xml
				var response = req.responseXML.documentElement;
				//alert(originalResponse.responseText);
				
				var tmpImages = response.getElementsByTagName('image');
				alert(tmpImages[0].firstChild.data);
				
				//var root = originalResponse.getElementsByTagName('root').item(0);
				//var root = domObj.root;
				//alert(root);
				//for (var iNode = 0; iNode < root.childNodes.length; iNode++) {
				//	alert('h');
				//	var node = root.childNodes.item(iNode);
				//	for (i = 0; i < node.childNodes.length; i++) {
				//		var imageNode = node.childNodes.item(i);
				//		//alert(imageNode.data);
				//		arrImages.push(imageNode.data);
				//	}
				//}
			} else {
				//csv
				var response = req.responseText;
				//alert(response);
				arrImages = response.split(",");
				preloadedImages = new Array();
				for (i=0; i<arrImages.length; i++) {
					preloadedImages[i] = new Image();
					preloadedImages[i].src = globalDir +"/"+ arrImages[i];
				}
				preloadInterval = setInterval("checkPreload(preloadedImages)",100);
			}
        } else {
            alert("There was a problem retrieving the XML data:\n" + req.statusText);
  	   }
    }
}

function checkPreload(preloadedImages) {
	var preloadImagesCount=3;
	var imagesLoaded = true;
	if (preloadedImages.length < 3) {
		preloadImagesCount=preloadedImages.length;
	}
	for (i=0; i<preloadImagesCount; i++) {
		if (!preloadedImages[i].complete) {
			imagesLoaded = false;
		}
	}
	if (imagesLoaded) {
		swapImage();
		myInterval = setInterval("swapImage()",globalSpeed);
		clearInterval(preloadInterval);
	}
}

function swapImage() {
	// debug
	if (slideshowDebug) {
		var now = new Date();
		var infoEl = document.getElementById('info');
		var infoHTML = infoEl.innerHTML;
		infoHTML+=now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+" swapImage() called<br/>";
		infoEl.innerHTML = infoHTML;
	}
	// debug
	
	
	currentImageCounter++;
	if (currentImageCounter>arrImages.length-1) {
		currentImageCounter=0;
	}
	if (false==fade(globalId,globalDir+'/'+arrImages[currentImageCounter], 1000)) {
		clearInterval(myInterval);
	}
}

function getNodeValue(obj,tag)
{
	return obj.getElementsByTagName(tag)[0].firstChild.nodeValue;
}
