//GLOBAL VARS
var selected;


function addEvent(elm, evType, fn, useCapture)
{
	if (elm.addEventListener){
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}else if (elm.attachEvent){
		var r = elm.attachEvent('on' + evType, fn);
		return;
	}else{
		elm['on' + evType] = fn;
	}
}

function removeEvent(elm, evType, fn, useCapture)
{
	if (elm.removeEventListener){
		elm.removeEventListener(evType, fn, useCapture);
		return true;
	}else if (elm.detachEvent){
		var r = elm.detachEvent('on' + evType, fn);
		return;
	}else{
		elm['on' + evType] = fn;
	}
}

function startOver(){
	var url = '/roomGallery/unsetSession.php';
	
	//alert(url);
	
	try{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
		}
	
	catch (e){
		// Internet Explorer
		try{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
			}
		catch (e){
			try{
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
				}
			catch (e){
				alert("Your browser does not support AJAX!");
				return false;
				}
			}
		}
		
		xmlHttp.onreadystatechange=redirectAfterSessionDestroy;
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
		
}

function redirectAfterSessionDestroy(){
	if (xmlHttp.readyState==4)
		{// 4 = "loaded"
			if (xmlHttp.status==200)
			{// 200 = "OK"
				
				window.location = '/gallery';
								
			 }
			else
			{
				//alert("Problem retrieving data:" + xmlHttp.statusText);
			}
		}
}

function changeLimit(){

var newRoomsNum = document.getElementById('limit').value;
var oldRoomsNum = document.getElementById('numRooms');

oldRoomsNum.innerHTML = newRoomsNum
requery();

}

function evaluatePaginator(){
	
	var prevButton = document.getElementById('prev');
	var nextButton = document.getElementById('next');
	
	var startNumCont = document.getElementById('startRooms');
	var startNum = parseFloat(startNumCont.innerHTML);
	
	var lastNumCont = document.getElementById('numRooms');
	if(lastNumCont.innerHTML){
		lastNum = 0;
	}else{
		var lastNum = parseFloat(lastNumCont.innerHTML);
	}
	
	var totalNumCont = document.getElementById('allrooms');
	var totalNum = parseFloat(totalNumCont.innerHTML);
	
	
	var limit = document.getElementById('limit').value;
	
	if(startNum != 1){
		
		if(limit >= totalNum){
			startNumCont.innerHTML = '1';
			prevButton.style.display = 'none';
		}
		
	}
	
	if(totalNum <= lastNum){
		lastNumCont.innerHTML = totalNum;
		nextButton.style.display = 'none';
	}
	
	
	
	if(totalNum > lastNum){
		
		if(totalNum < limit){
			
			lastNumCont.innerHTML = totalNum;
			nextButton.style.display = 'none';
		}
		
		if(totalNum > limit){
			
			if(lastNum > totalNum){
			lastNumCont.innerHTML = limit;
			
			}
			
			if(lastNum < limit){
			lastNumCont.innerHTML = limit;
			//alert(lastNum);
			}
			
			nextButton.style.display = 'inline';
		}
	
	} 
	
}

function getQueryLimit(inc){

 var getLimit = parseFloat(document.getElementById('limit').value);
 
 var getAll = parseFloat(document.getElementById('allrooms').innerHTML);
 
 var getStart = document.getElementById('startRooms');
 var getFinish = document.getElementById('numRooms');
 
 start = parseFloat(getStart.innerHTML);
 finish = parseFloat(getFinish.innerHTML);
 
 if(inc == 'up'){
 
	 var newStart = start+getLimit;
	 var newFinish = finish+getLimit;
	 
	 var queryLimit = newStart-1+','+getLimit;
	 
	 if(newFinish > getAll){
	 document.getElementById('next').style.display = 'none';
	 newFinish = getAll;
	 
	 }
	 
	 document.getElementById('prev').style.display = 'inline';
 
 }else if(inc == 'down'){
 
	 var newStart = start-getLimit;
	 
	if(finish==getAll){
		
		var howManyPicsContainer = document.getElementById('photoList');
		
		var howManyPics = howManyPicsContainer.getElementsByTagName('img');
				
		var newFinish = finish-howManyPics.length;
		
		}else{
	
	 	var newFinish = finish-getLimit;
	 
	 	}
	 	
	 var queryLimit = newStart-1+','+getLimit;
	 
	 //alert(newStart+'<'+getAll);
	 
	if(newStart < getLimit){
	 	document.getElementById('prev').style.display = 'none';
	 }
	 
	 if(newFinish < getAll){
	 	document.getElementById('next').style.display = 'inline';
	 }
 
 }else{
	 var newStart = start;
	 var newFinish = finish;
	 
	 var queryLimit = 0+','+getLimit;

 }
 
 getStart.innerHTML = newStart;
 getFinish.innerHTML = newFinish;

return queryLimit

}


function buildURL(inc){
 
 var galleryDiv = document.getElementById('searchResults');
 
 var searchContainer = document.getElementById('searchContainer')
 
 var getAllInput = searchContainer.getElementsByTagName('li');
 
  queryLimit = getQueryLimit(inc);

 var allSearchCriteria = '';
 for(inputx = 0;inputx < getAllInput.length;inputx++){
 	
 	 
 	 if(getAllInput[inputx].focused == 'YES' && getAllInput[inputx].className == 'pline')
 	 {
 	 	 //alert(getAllInput[inputx].innerHTML);
 	 	 var pline = getAllInput[inputx].innerHTML;
 	 }
 	 else
 	 {
 	 
			if(getAllInput[inputx].focused == 'YES'){
				
				if(getAllInput[inputx].parentNode.id == 'roomStyle'){
				
					var dataType = 'style';
					
					}else{
					
					var dataType = 'room';
					
					}
				//need to determine which data this is
				
				allSearchCriteria += getAllInput[inputx].innerHTML+'='+dataType+'&';
 		}
 	 }
 }
 

 allSearchCriteria += 'pline='+pline+'&	limit='+queryLimit;
 
 //alert(allSearchCriteria);
 
 return allSearchCriteria;
 
}

function requery(inc){
	if(inc == 'featured'){
		//no need to build the query, I know what it is.
		var getVars =  'room=Featured&limit=0,16';
		
	}else{
		
		var getVars = buildURL(inc);
	
	}
	
	var url = '/roomGallery/getResults.php?'+getVars;
	
	//alert(url);
	
	try{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
		}
	
	catch (e){
		// Internet Explorer
		try{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
			}
		catch (e){
			try{
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
				}
			catch (e){
				alert("Your browser does not support AJAX!");
				return false;
				}
			}
		}
		
		xmlHttp.onreadystatechange=addNode
		xmlHttp.open("GET",url,true);
		xmlHttp.send(null);
}

function addNode(){
	
		if (xmlHttp.readyState==4)
		{// 4 = "loaded"
			if (xmlHttp.status==200)
			{// 200 = "OK"
				
				var oldGallery = document.getElementById('photoList')
				
				oldGallery.parentNode.removeChild(oldGallery);
				
				document.getElementById('galleryContainer').innerHTML=xmlHttp.responseText;
				
				document.getElementById('allrooms').innerHTML = document.getElementById('newTotalRooms').value;
				evaluatePaginator();
				document.getElementById('searchResultBar').style.display = 'table';
								
			 }
			else
			{
				//alert("Problem retrieving data:" + xmlHttp.statusText);
			}
		}
		
}


function checkOtherCatAvailablility(el,targetCat){
	
		var allElsInCat = targetCat.getElementsByTagName('li');
		
		var focusedEls = '';
		
		elsmany = 0;
		for(elsi = 0;elsi < allElsInCat.length;elsi++){
			 
			 if(allElsInCat[elsi].focused == 'YES'){
			 	
			 	if(elsmany > 0){
			 		focusedEls += ',';
			 	}
			 	
			 	focusedEls += allElsInCat[elsi].id  
			 	elsmany++;
			 }
			 
		}
		
		//alert(focusedEls);
		
		var url = 'roomGallery/checkCategories.php?el='+focusedEls+'&cat='+targetCat.id+'&focused='+el.focused;
		
		//alert(url);
		
		
	try{
		// Firefox, Opera 8.0+, Safari
		xmlHttpRequest=new XMLHttpRequest();
		}
	
	catch (e){
		// Internet Explorer
		try{
			xmlHttpRequest=new ActiveXObject("Msxml2.XMLHTTP");
			}
		catch (e){
			try{
				xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");
				}
			catch (e){
				alert("Your browser does not support AJAX!");
				return false;
				}
			}
		}
		
		xmlHttpRequest.onreadystatechange=disableCategories
		xmlHttpRequest.open("GET",url,true);
		xmlHttpRequest.send(null);
		
}


function disableCategories(){
		//alert('function called');
		if (xmlHttpRequest.readyState==4)
		{// 4 = "loaded"
			if (xmlHttpRequest.status==200)
			{// 200 = "OK"
				
				var toEnable = xmlHttpRequest.responseText.split(',');
								
				var parentEl = document.getElementById('roomStyle');
					
				var allEls = parentEl.getElementsByTagName('li');
					
				for(alli = 0;alli<allEls.length;alli++){ //  DISABLE ALL LISTENERS ONLY TO CONTINUE TO REENABLE ALL NECESSARY in next loop
					
					if(allEls[alli].focused != 'YES'){
					
					allEls[alli].style.color = '#5a5a49';
					removeEvent(allEls[alli],'mouseover', mouseOverCat, false);
					removeEvent(allEls[alli],'mouseout', mouseOutCat, false);
					removeEvent(allEls[alli],'mousedown', mouseDownCat, false);
					}
				}
				
				if(toEnable.length > 1){
				
					for(var eni = 1;eni < toEnable.length;eni++){ //turns back on listeners nesseary elements
						
						var elToEnable = document.getElementById(toEnable[eni]);
						
						elToEnable.style.color = '#000';
						addEvent(elToEnable, 'mouseover', mouseOverCat, false);
						addEvent(elToEnable, 'mouseout', mouseOutCat, false);
						addEvent(elToEnable, 'mousedown', mouseDownCat, false);				
					
					}
					
					
				}else{
									
					for(alli = 0;alli < allEls.length; alli++){ //  turns listeners on all elements in parent el
						allEls[alli].style.color = '#000';
						addEvent(allEls[alli], 'mouseover', mouseOverCat, false);
						addEvent(allEls[alli], 'mouseout', mouseOutCat, false);
						addEvent(allEls[alli], 'mousedown', mouseDownCat, false);
					}
				}
				
				
				for(alli = 0;alli < allEls.length;alli++){
				
					if(allEls[alli].focused == "YES"){ //checks to see if this list element is focused....if it isnt the next block of code doesn't matter
						
						var inArray = function(thisvalue){
							for(rai = 0;rai < toEnable.length;rai++){
							
								if(toEnable[rai] === thisvalue){ //checks to see if this focused id is in the returned array because if it is 
									
									return true;
								}
							}
							return false;
						}
						
						
						if(inArray(allEls[alli].id)){
							allEls[alli].style.color = '#d39602';
							allEls[alli].style.listStyleImage = "url('/roomGallery/images/checked.gif')";
						}else{
							
							if(allEls[alli].focused == 'YES'){
							
							allEls[alli].style.color = '#ab9152';
							allEls[alli].focused = 'YES';
							allEls[alli].style.listStyleImage = "url('/roomGallery/images/noresultcheck.gif')";
							}
						}
						
						
					}				
				
				}
				
			 }
			else
			{
				//alert("Problem retrieving data:" + xmlHttp.statusText);
			}
		}

}

function mouseOverCat(e){
	var el;
	if(window.event && window.event.srcElement)
		el = window.event.srcElement;
	if (e && e.target)
		el = e.target;
	if(!el) return;
	
	if(el.focused == 'YES'){
		
	}else{
		document.body.style.cursor = 'pointer';
		el.style.color = '#fff';
		el.style.listStyleImage = "url('/roomGallery/images/arrow.gif')";
	}
}

function mouseOutCat(e){
	var el;
	if(window.event && window.event.srcElement)
		el = window.event.srcElement;
	if (e && e.target)
		el = e.target;
	if(!el) return;
	
	if(el.focused == 'YES'){
	
	}else{
		document.body.style.cursor = 'default';
		el.style.color = '#000';
		el.style.listStyleImage = 'none';
	}
}

function mouseDownCat(e){
	
	
	if(e == 'featured'){
		requery('featured');
	}else{
		var el;
		if(window.event && window.event.srcElement)
			el = window.event.srcElement;
		if (e && e.target)
			el = e.target;
		if(!el) return;
		
		if(el.className == 'pline')
		{
			var allpline = el.parentNode.getElementsByTagName('li');
			
			for(var plinei=0;plinei<allpline.length;plinei++)
			{
				
				allpline[plinei].style.color = '#000';
				allpline[plinei].style.listStyleImage = 'none';
				allpline[plinei].focused="NO";
				
			}
		
		}
		
		if(el.focused == 'YES'){
	
			el.style.color = '#fff';
			el.style.listStyleImage = "url('/roomGallery/images/arrow.gif')";
			el.focused="NO";
			
		
		}else{
			
			el.style.color = '#d39602';
			el.style.listStyleImage = "url('/roomGallery/images/checked.gif')";
			el.focused="YES";
			
		
		}
		
		//focus on only this els parent node.
		var catClicked = el.parentNode;
		
		if(catClicked.id == 'roomTypes'){
		checkOtherCatAvailablility(el,catClicked);
		}
		requery();
	}
	
}

function mouseOver(){
document.body.style.cursor = 'pointer';
}

function mouseOut(){
document.body.style.cursor = 'default';
}


function initiate(){
 var getTotalRooms = document.getElementById('allrooms').innerHTML;
 var getViewingRooms = document.getElementById('numRooms').innerHTML;
 var nextButton = document.getElementById('next');
  
 if(getTotalRooms > getViewingRooms){
 	
 	nextButton.style.display = 'inline';
 	
 }
 
}

function addListeners()
{
	if(!document.getElementsByTagName) return;
		
	var searchCat = document.getElementsByTagName('li')
	
	for (var i = 0; i < searchCat.length; i++){
			
			if(searchCat[i].className == 'checked'){
				searchCat[i].focused = 'YES';
			}
			
			addEvent(searchCat[i], 'mouseover', mouseOverCat, false);
			addEvent(searchCat[i], 'mouseout', mouseOutCat, false);
			addEvent(searchCat[i], 'mousedown', mouseDownCat, false);
	}

}

addEvent(window, 'load', addListeners, false);
