// JavaScript Document
//Navigation functions
//TODO 
//Image not found
//Instructions
//Jerkyness
var thumbsArray = new Array();
var thumbsDivs = "";
var totalImages = 0;
var imgHeight = 112;
var imgIndx = 0;
var totalHeight = 0;
var scrolledHeight = 0;
var visibleImages = 3;
var currentImage= 0;
var animationInProgress=false;

var visTop = 0;

function showEnlarged(eURL, imgTitle, imgMedium, imgDate, imgDimensions, avail, imgIndx){
	currentImage = imgIndx;
document.getElementById('enlargedImage').innerHTML =  '<img src="'+eURL+'\" class=\"enlargedImg\" alt="'+imgTitle+'">';
document.getElementById('imgInfo').innerHTML = '<p>'+imgTitle+'<br/>'+imgMedium+'<br/>'+imgDate+'<br/>'+imgDimensions+'<br/>'+avail+'</p>';
	highlightCurrentThumb();

}
loadImage = "";
strStart = "";
function checkUrl(){
	locate = window.location.toString();
	strStart = locate.indexOf("=");
	//see if # exists
	if(strStart !== -1){
		var imgStr = validateImage(locate);
		return imgStr;

	}else{
		return false;
	}	
}

function validateImage(str){
	strStart = str.indexOf("=");
	strLength = (str.length-str.indexOf("=")+1);
	loadImage = str.substr(strStart+1, strLength);
	//String after = is at least 1 digit long
	if(loadImage.length >0){
		//String after = is a number
		if(!isNaN(loadImage)){ 
			//String after = is a number withing the range of total images
			if(loadImage <= (totalImages-1)) {
				return true;
			}else {
				//alert('Greater than number');
				return false;
			}
		}else{
			//alert('This is not a number');
			return false;
		}
	}else{
		return false;
	}
}


function checkLoadImage(){
	var displayUpdating = checkUrl();
	if(displayUpdating){
         currentImage = loadImage;
		 displayImage();
		 checkScroll();
	}else{
		currentImage = 0;
		var thumb = thumbsArray[0];
		var imgDate = thumb[5];
		showEnlarged(thumb[0], thumb[2], thumb[3], thumb[4], imgDate, thumb[6], 0);
		
	}
}

//on load
function loadXMLDoc(dname){
var xmlDoc;
	if (window.XMLHttpRequest){
	  xmlDoc=new window.XMLHttpRequest();
	  xmlDoc.open("GET",dname,false);
	  xmlDoc.setRequestHeader("Cache-control", "no-cache");
	  xmlDoc.setRequestHeader("Pragma", "no-cache");
	  xmlDoc.send("");
	  return xmlDoc.responseXML;
	}
	// IE 5 and IE 6
	else {
	  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	  xmlDoc.async=false;
	  xmlDoc.load(dname);
	  return xmlDoc;
	}
	alert("Error loading document");
	return null;
}

function processImagesXML(url){
	//var doc = XML.load(url);
	var doc = loadXMLDoc(url);
	
	var thumbs =doc.getElementsByTagName("thumbImg");
	for(var e=0; e<thumbs.length;e++){
		totalImages+=1;
		 thumbArray= new Array();
		 x=doc.getElementsByTagName("thumbImg")[e].childNodes;
		 y=doc.getElementsByTagName("thumbImg")[e].firstChild;
		//preload full size image
		 var img = new Image();
		 img.src = doc.getElementsByTagName("imgLocation")[e].firstChild.nodeValue;
		 //preload thumbnail
		 var imgT = new Image();
		 imgT.src = doc.getElementsByTagName("thumbLocation")[e].firstChild.nodeValue;
		 
		 for (i=0;i<x.length;i++){
			if (y.nodeType==1) {
				thumbArray.push(y.firstChild.nodeValue);
				//Process only element nodes (type 1)
			 //alert(y.firstChild.nodeValue);
			 }
			  y=y.nextSibling;
		  }
			thumbsArray.push(thumbArray);		
	}
	//alert(thumbsArray);
	totalHeight = (totalImages*imgHeight);
	processImages();
}

function processImages(){
	for(var g=0;g<thumbsArray.length;g++){ 
		var thumb = thumbsArray[g];
		var imgDate  = escape(thumb[5]);
		//var str = '<div><a href="javascript:setDeepLink(\''+g+'\');showEnlarged(\''+thumb[0]+'\', \''+thumb[2]+'\', \''+thumb[3]+'\', \''+thumb[4]+'\', \''+imgDate+'\', \''+thumb[6]+'\','+(g)+');" rel="address:/'+g+'"><img src="'+thumb[1]+'" alt="'+thumb[2]+'" class="imgThumb" id="imgThumb'+g+'"/></a></div>\n';
		
		var str = '<div><a href="javascript:deselectCurrentThumb();setDeepLink(\''+g+'\');"><img src="'+thumb[1]+'" alt="'+thumb[2]+'" class="imgThumb" id="imgThumb'+g+'"/></a></div>\n';
		thumbsDivs+=str;
	}
	document.getElementById('thumbNails').innerHTML = thumbsDivs;
	checkLoadImage();
}

function enableTopScroll(){
	document.getElementById('topScroll').innerHTML = '<a href="#" onclick="scrollImages(\'down\'); return false;"><img src="../images/topScroll.gif" border="0"/></a>';
}
function disableTopScroll(){
	document.getElementById('topScroll').innerHTML = '<img src="../images/topScrollDisabled.gif" border="0"/>';
}
function enableBottomScroll(){
	document.getElementById('bottomScroll').innerHTML = '<a href="#" onclick="scrollImages(\'up\'); return false;"><img src="../images/bottomScroll.gif" border="0"/></a>';
}
function disableBottomScroll(){
	document.getElementById('bottomScroll').innerHTML = '<img src="../images/bottomScrollDisabled.gif" border="0"/>';
}

function scrollImages(direction){
	if(!animationInProgress){
	if(direction == 'up'){
	    var pos = -(imgHeight);
		scrolledHeight+=imgHeight;
		visTop+=imgHeight;
		//alert('up'+visTop);
	}else if (direction == 'down'){
		scrolledHeight-=imgHeight;
		var pos = imgHeight;
		visTop-=imgHeight;
	}
	animationInProgress = true;
	new Effect.Move('thumbNails', {y:pos, mode: 'relative', duration:0.8,  afterFinish:updateInProgress});

    checkScrolls();
	}
}
//Complete
function getNextImage(){
	if(!animationInProgress){
		deselectCurrentThumb();
	if(currentImage<(totalImages-1)){
	   var ci = parseInt(currentImage);
	      ci+=1;
		  currentImage = ci;
	}else if(currentImage == (totalImages-1)){
		currentImage = 0; 
	}
	 setDeepLink(currentImage);	
	}
}

function checkScroll(){
	var cp = (parseInt(currentImage)+1)*imgHeight;
	var visBottom = (visibleImages*imgHeight)+visTop;	
	//alert('Check Scroll: cp: '+cp+' visTop: '+visTop+' visBottom: '+visBottom);
	if(cp>=visBottom){
		var dif = cp - visBottom;
		var toPos = -(dif);
		scrollImagesUpTo(toPos);
		visTop+=dif;
	}else if (cp<=visTop){
		var dif = visTop - cp+imgHeight;
		scrollImagesDownTo(dif);
		visTop-=dif;		
	}
}

function scrollImagesUpTo(toPos){
	if(!animationInProgress){
		scrolledHeight-=toPos;
		
		animationInProgress = true;
		new Effect.Move('thumbNails', {y:toPos, mode: 'relative', duration:0.8,  afterFinish:updateInProgress});
	
		checkScrolls();
	}
}

function scrollImagesDownTo(toPos){
	if(!animationInProgress){
		scrolledHeight-=toPos;
		
		animationInProgress = true;
		new Effect.Move('thumbNails', {y:toPos, mode: 'relative', duration:0.8,  afterFinish:updateInProgress});
	
		checkScrolls();
	}
}

function updateInProgress(){
	animationInProgress = false;
}

function checkScrolls(){
   // alert(scrolledHeight);
	if(scrolledHeight == 0){
		disableTopScroll();
		enableBottomScroll();
	}
	if(scrolledHeight == (totalImages*imgHeight)){
		enableTopScroll(); 
		disableBottomScroll();			
	}
    //end of images
	if(scrolledHeight == ((totalImages*imgHeight)-(visibleImages*imgHeight))){
		disableBottomScroll();
	}
	if(scrolledHeight>0 && scrolledHeight <((totalImages*imgHeight)-(visibleImages*imgHeight))){
		enableBottomScroll();
	}
	
	if(scrolledHeight > 0){
		enableTopScroll();
	}
}

function displayImage(){
	var thumb = thumbsArray[currentImage];
	var imgDate = thumb[5];
	showEnlarged(thumb[0], thumb[2], thumb[3], thumb[4], imgDate, thumb[6], currentImage);
}

function getPrevImage(){
	if(!animationInProgress){
		deselectCurrentThumb();
	if(currentImage==0){
	   currentImage = totalImages-1;
	}else{
		 var ci = parseInt(currentImage)
	      ci-=1;
		  currentImage = ci;
	} 
    setDeepLink(currentImage);
	}
}

function highlightCurrentThumb(){
	currentThumb = 'imgThumb'+currentImage;
	document.getElementById(currentThumb).className = 'imgThumbHighlighted';
}

function deselectCurrentThumb(){
	var currentThumb = 'imgThumb'+currentImage;
	document.getElementById(currentThumb).className = 'imgThumb';
}

function setDeepLink(ci){	
	SWFAddress.setValue('?img='+ci);
	//Track google
	pageTracker._trackPageview("Painting/index.html#/?img="+ci);
}



	
