// stores reference to the XMLHttpRequest object
var xmlHttp = createXmlHttpRequestObject();

//retrieves the XMLHttpRequestObject
function createXmlHttpRequestObject() {
	//stores the reference to the XMLHttpRequest object
	var xmlHttp;
	
	//if running IE6 or older
	if(window.ActiveXObject) {
		try {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");	
		}
		catch (e) {
			xmlHttp = false;	
		}
	}
	
	//if running Mozilla or other browsers
	else {
		try {
			xmlHttp = new XMLHttpRequest();
		}
		catch (e) {
			xmlHttp = false;
		}
	}
	//return the created object or display an error message
	if(!xmlHttp) {
		alert ("Error creating the XMLHttpRequest object.");
	} else {
		return xmlHttp;	
	}
}

//make asynchronous HTTP request using the XMLHttpRequest object
function homefinder_process() {
	
	document.body.style.cursor = "wait";
	
	//proceed only if the xmlObject isn't busy
	if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
		
		//retrieve the name typed by the user on the form
		//var bedroomCount = encodeURIComponent (document.getElementById("bedroomCount").value); //old..
		
		//get Storey selection from radio button group:
		var storeySelection = document.homefinder.storeySelect;
		for (i=0; i<storeySelection.length; i++) {
		  if (storeySelection[i].checked == true) {
		  	var selectedStoreys = storeySelection[i].value
		  }
		}
		
		//get Bedrooms selection from radio button group:
		var bedroomSelection = document.homefinder.bedroomSelect;
		for (i=0; i<bedroomSelection.length; i++) {
		  if (bedroomSelection[i].checked == true) {
		  	var selectedBedrooms = bedroomSelection[i].value
		  }
		}
		
		//get Block-width slider values (min and max) from slider (defined as an array with two indexes):
		var blockWidthRange = $( "#lotWidth-range" ).slider( "option", "values" );
		var blockRangeMin = blockWidthRange[0] * 100;
		var blockRangeMax = blockWidthRange[1] * 100;
		//alert("min: " + blockRangeMin + "  max: " + blockRangeMax);
		
		//execute the quickstart.php page from the server
		xmlHttp.open("GET", "ajaxhomefind.php?bedrooms=" + selectedBedrooms + "&storeys=" + selectedStoreys + "&blockRangeBot=" + blockRangeMin + "&blockRangeTop=" + blockRangeMax, true);
		//define the method to handle server responses
		xmlHttp.onreadystatechange = homefinder_handleServerResponse;
		//make the server request
		xmlHttp.send();
	} else {
		//if the connection is busy, try again after one second
		setTimeout('homefinder_process()', 1000);	
	}
}

//callback function executed when a message is received from the server
function homefinder_handleServerResponse() {
	//move forward only if the transaction has completed
	if(xmlHttp.readyState == 4) {
		//status of 200 indicates the transaction completed successfully
		if(xmlHttp.status == 200) {
			//extract the XML retrieved from the server
			var xmlResponse = xmlHttp.responseXML;
			
			document.body.style.cursor = "default";
			
			//hide gallery if visible
			if (document.getElementById("slideshowify-bg").style.visibility = "visible") {
				$('#slideshowify-bg').fadeOut('slow', function() {
					// Animation complete, now:
					
						var homefinderBg = document.getElementById("homefinder-bg");
						homefinderBg.style.overflow = "visible";
						var homesWrapper = document.getElementById("homesWrapper");
						homesWrapper.style.visibility = "visible";
						
						//hide all boxes
						$(".homeListingItem-index").css("display","none")
						
						
						nodes=xmlResponse.getElementsByTagName("home");
						var noOfResults = nodes.length;
						var noOfResultRows = Math.ceil(nodes.length / 3);
						//alert("total rows: "+noOfResultRows);
						
						// determine container height before resize
						var homeContainerHeight = ((noOfResultRows * 170)+0) //THE +0 WAS FOR EXTRA PADDING ON THE BOTTOM
						
						// no need for container height to resize lower than default div height:
						if (homeContainerHeight < 343) {
							//reset to minimum height:
							homeContainerHeight = 343;
						}
						
						// RESIZE container div sho make room for homes
						function animateHomes() {
							
						  $('#homeFinder').animate({
							height: homeContainerHeight+"px"
						  }, 500, 'swing');
						  
						  $('#homefinder-bg').animate({
							height: homeContainerHeight+"px"
						  }, 500, 'swing', function() {
							
							//fade in all relevant homes
							for (i=0;i<nodes.length;i++) {1
								//relevantHomesArray[i] = x[i].attributes.getNamedItem('id').value;
								homeID = nodes[i].attributes.getNamedItem('id').value
								
								//fade in relevant homes matching the ID specified in each loop-through
								$('#homeListing-' + homeID).fadeIn('slow', function() {
									// Animation complete, now:
								});
							 }
						  
						  });
						  
						  }
						  
						  /* Animate the Homes dropdown */
						  animateHomes();
					
					
				});
			}
			
			
			
			//restart sequence (ie. a continuous polling fuction)
			//setTimeout('homefinder_process()', 1000);
		}
		//a HTTP status different than 200 signals an error..
		else {
			alert("There was a problem accessing the server: " + xmlHttp.statusText);	
		}
	}
}
