var projectObj = new ajaxObject(cur_url+'AJAX/projects.php', updateProject);
var projectObj2 = new ajaxObject(cur_url+'AJAX/projects.php', updateProject); 
var projectSObj = new ajaxObject(cur_url+'AJAX/projectSess.php', updateItem); 

var tempKey = "";
var tempIndex = "";

function loadFirstImage(key,index){
	tempKey = key;
	tempIndex = index;
	pVars = "key="+key+"&index="+index+"&type=first";
	projectObj.update(pVars,'POST');	
	return false;
}

function loadSlideshow(){
	pVars = "key="+tempKey+"&index="+tempIndex+"&type=rest";
	projectObj2.update(pVars,'POST');
	
	//stepcarousel.loadcontent('gallery', cur_url+'AJAX/projects.php?key='+key+'&index='+index);
	return false;
}

function toggleAccordian(){

}

var curPhoto = 0;
var numPhotos = 0;

/**
 * This function is called by the AJAX obj above. 
 * 1. It waits for a 200 HTTP status
 * 2. It splits the response Text on the pipe character ("|")
 * 3. It resets the numPhotos and curPhoto variable
 * 4. It resizes the galleryDiv image to be wide enough for all of the elements
 * 5. Shows or hides the arrows depending on whether or not there are multiple images
 * 6. Write the slideshow contents to the galleryDiv div
 */
function updateProject(responseText, responseStatus) {
	// check response status
	if (responseStatus == 200) {
		responses = responseText.split("|");
		
		if(responses[1] == "FIRST"){
			curPhoto = 0;
			document.getElementById("galleryDiv").style.width = "700px";
			document.getElementById("leftArrow").style.display = "none";
			document.getElementById("rightArrow").style.display = "none";
			document.getElementById('galleryDiv').innerHTML = responses[0];
			loadSlideshow();
			
		}else{
		
			numPhotos = responses[1];
						
			var newW = responses[1]*700;
			var restW = newW-700;
			
			document.getElementById("galleryDiv").style.width = newW+"px";
			document.getElementById("restOfImages").style.width = restW+"px";
			
			if(numPhotos > 1){
				document.getElementById("leftArrow").style.display = "none";
				document.getElementById("rightArrow").style.display = "block";
			}else{
				document.getElementById("leftArrow").style.display = "none";
				document.getElementById("rightArrow").style.display = "none";
			}
			
			document.getElementById('restOfImages').innerHTML = responses[0];
		}
	}
}

function updateItem(responseText, responseStatus) {
	// check response status
	if (responseStatus == 200){
		//this is an empty response call back
		//alert("response is "+responseText);
	}
}

/**
 * This function takes in a "left" or "right" and calls the movePhotos() function in the appropiate direction
 */
function slidePhotos(direction){
	curPosTxt = document.getElementById('galleryDiv').style.left;
	
	len = curPosTxt.length;
	len2 = curPosTxt.substr(0, len-2);
	oldLeft = parseInt(len2);
	
	if(direction == "right"){
		movePhotos(5,curPhoto+1);
	}else if(direction == "left"){
		movePhotos(5,curPhoto-1);
	}
}


/**
 * This function handles sliding the photos based on relative position to the existing position of the photos
 */
function movePhotos(steps, pos){
	if(pos > 0) document.getElementById("leftArrow").style.display = "block";
	else if(pos == 0) document.getElementById("leftArrow").style.display = "none";
	if(pos == numPhotos -1) document.getElementById("rightArrow").style.display = "none";
	else if(numPhotos > 1 && pos < numPhotos -1) document.getElementById("rightArrow").style.display = "block";
	
	if(pos == curPhoto) return false;
	else if(steps < 0){
		curPhoto = pos;
		return false;
	}
	else{
		dif = pos - curPhoto;
				
		var step = 0;
		
		if(steps == 5) step = Math.round(700*.45);
		else if(steps == 4) step = Math.round(700*.55);
		else if(steps == 3) step = Math.round(700*.7);
		else if(steps == 2) step = Math.round(700*.85);
		else if(steps == 1) step = Math.round(700*.9);
		else if(steps == 0) step = 700;
		
		if(dif > 0){
			newX = (-curPhoto*700) - ((step * dif));
		}else{
			newX = (-curPhoto*700) + (-step*dif);
		}
		
				
		newXS = newX.toString()+"px";
		document.getElementById('galleryDiv').style.left = newXS;
		
		var newStep = steps - 1;
		the_timeout2 = setTimeout('movePhotos('+newStep+','+pos+');',40);	
	}
}

//need to set up some arrays for handling the on or off state of projects
var onCats = new Array();
var onProjects = new Array();
var padding = 0;				//this is padding for layout stuff


/**
 * Functions decides whether or not to open or close a category
 * 
 */
function toggleCategory(cat){
	
	var divID = "catDiv"+cat;
	
	var pos = onCats.indexOf(divID);
	
	if(pos == -1){
		if(onCats.length > 0){
			//need to close the project too
			if(onProjects.length > 0){
				var divOH = document.getElementById(onProjects[0]).offsetHeight;
				var catH = document.getElementById(onCats[0]).offsetHeight;
				animateNestedCollapse(onCats[0],onProjects[0],6,catH,divOH);
				
				var divOH = document.getElementById(onCats[0]).offsetHeight;
				animateCollapse(onCats[0],6,divOH);
				
				onProjects = new Array();
				onCats = new Array();
				
				setTimeout('toggleCategory2("'+divID+'");',350);
			}else{
				var divOH = document.getElementById(onCats[0]).offsetHeight;
				animateCollapse(onCats[0],6,divOH);
				onCats = new Array();
				setTimeout('toggleCategory2("'+divID+'");',350);
			}
			
		}else{
			toggleCategory2(divID);
		}
	}else{
		var divH = document.getElementById(divID).offsetHeight;
		animateCollapse(divID,6,divH);
		onCats.splice(pos,1);
		
		pVars = "cat=&item=CAT";
		projectSObj.update(pVars,'POST');
	}

}

//this function only opens categories
function toggleCategory2(divID){
	document.getElementById(divID).style.display = "block";
	var divH = document.getElementById(divID).offsetHeight + padding;
	document.getElementById(divID).style.height = "0px";
	animateExpansion(divID,6,divH);
		
	onCats.push(divID);
	
	pVars = "cat="+divID+"&item=CAT";
	projectSObj.update(pVars,'POST');
}

/**
 * Functions decides whether or not to open or close a project
 * 
 */
function toggleProject(cat,project, key, index){
	var divID = "projectDiv"+cat+"-"+project;
	var catID = "catDiv"+cat;
	
	var pos = onProjects.indexOf(divID);
	
	if(pos == -1){
		if(onProjects.length > 0){
			var divOH = document.getElementById(onProjects[0]).offsetHeight;
			var catH = document.getElementById(catID).offsetHeight;
			animateNestedCollapse(catID,onProjects[0],6,catH,divOH);
			onProjects = new Array();
			setTimeout('toggleProject2("'+cat+'","'+project+'","'+key+'","'+index+'");',350);
		}else{
			toggleProject2(cat,project, key, index);
		}
		
	}else{
		var divH = document.getElementById(divID).offsetHeight;
		var catH = document.getElementById(catID).offsetHeight;
		animateNestedCollapse(catID,divID,6,catH,divH);
		//document.getElementById(divID).style.display = "none";
		onProjects.splice(pos,1);
		
		pVars = "project=&item=PRO";
		projectSObj.update(pVars,'POST');
	}
}

//this function only open nested projects
function toggleProject2(cat,project, key, index){
	var divID = "projectDiv"+cat+"-"+project;
	var catID = "catDiv"+cat;

	document.getElementById(divID).style.display = "block";
	var divH = document.getElementById(divID).offsetHeight + padding;
	var catH = document.getElementById(catID).offsetHeight;
	document.getElementById(divID).style.height = "0px";
	animateNestedExpansion(catID,divID,6,catH,divH);
	onProjects.push(divID);
	
	setTimeout('loadFirstImage("'+key+'","'+index+'");',350);
	
	pVars = "project="+divID+"&item=PRO";
	projectSObj.update(pVars,'POST');
}


function animateCollapse(divID, steps, h){
	if(steps != 0){		
		
		if(steps == 6) newH = Math.round(h*.75);
		else if(steps == 5) newH = Math.round(h*.55);
		else if(steps == 4) newH = Math.round(h*.35);
		else if(steps == 3) newH = Math.round(h*.25);
		else if(steps == 2) newH = Math.round(h*.1);
		else if(steps == 1) newH = 0;
		newHTxt = newH.toString() + "px";
					
		document.getElementById(divID).style.height = newHTxt;
		
		newStep3 = steps - 1;
		the_timeout3 = setTimeout('animateCollapse("'+divID+'",'+newStep3+','+h+');',40);
	}else{
		document.getElementById(divID).style.display = "none";
		//var hReset = h - padding;
		//document.getElementById(divID).style.height = hReset+"px";
		document.getElementById(divID).style.height = "auto";
	}
}


function animateExpansion(divID, steps, h){
	if(steps != 0){		
		
		if(steps == 6) newH = Math.round(h*.25);
		else if(steps == 5) newH = Math.round(h*.45);
		else if(steps == 4) newH = Math.round(h*.65);
		else if(steps == 3) newH = Math.round(h*.75);
		else if(steps == 2) newH = Math.round(h*.9);
		else if(steps == 1) newH = h;
		newHTxt = newH.toString() + "px";
					
		document.getElementById(divID).style.height = newHTxt;
		
		newStep4 = steps - 1;
		the_timeout4 = setTimeout('animateExpansion("'+divID+'",'+newStep4+','+h+');',40);
	}
}

function animateNestedCollapse(divID, nestID, steps, divH, nestH){
	if(steps != 0){		
		
		if(steps == 6) newH = Math.round(nestH*.75);
		else if(steps == 5) newH = Math.round(nestH*.55);
		else if(steps == 4) newH = Math.round(nestH*.35);
		else if(steps == 3) newH = Math.round(nestH*.25);
		else if(steps == 2) newH = Math.round(nestH*.1);
		else if(steps == 1) newH = 0;
		newHTxt = newH.toString() + "px";
		
		newDivH = divH - nestH + newH;
		divHTxt = newDivH.toString() + "px";
		
		document.getElementById(divID).style.height = divHTxt;					
		document.getElementById(nestID).style.height = newHTxt;
		
		newStep3 = steps - 1;
		the_timeout3 = setTimeout('animateNestedCollapse("'+divID+'","'+nestID+'",'+newStep3+','+divH+','+nestH+');',30);
	}else{
		document.getElementById(nestID).style.display = "none";
		var hReset = nestH - padding;
		document.getElementById(nestID).style.height = hReset+"px";
		//document.getElementById(nestID).style.height = "auto";
	}
}


function animateNestedExpansion(divID, nestID, steps, divH,nestH){
	if(steps != 0){		
		
		if(steps == 6) newH = Math.round(nestH*.25);
		else if(steps == 5) newH = Math.round(nestH*.45);
		else if(steps == 4) newH = Math.round(nestH*.65);
		else if(steps == 3) newH = Math.round(nestH*.75);
		else if(steps == 2) newH = Math.round(nestH*.9);
		else if(steps == 1) newH = nestH;
		nestHTxt = newH.toString() + "px";
		
		newDivH = newH+divH;
		divHTxt = newDivH.toString() + "px";			
				
		document.getElementById(divID).style.height = divHTxt;
		document.getElementById(nestID).style.height = nestHTxt;
		
		newStep4 = steps - 1;
		the_timeout4 = setTimeout('animateNestedExpansion("'+divID+'","'+nestID+'",'+newStep4+','+divH+','+nestH+');',40);
	}
}
