	$(document).ready(function() {
		$("#primaryTableContentArea").bind("mouseover", function() { hideMenus(); });
		$("#headerBanner").bind("mouseover", function() { hideMenus(); });
	});


// FORMAT AUTOCOMPLETE RESULTS
	function formatAutoComplete(row) {
				return "<b>" + row[1] + ":</b> " + row[0];
			}

// SET THICKBOX BINDS
	function setThickbox()
	{
		tb_init('a.thickbox, area.thickbox, input.thickbox');
		imgLoader = new Image();// preload image
		imgLoader.src = tb_pathToImage;
	}

// SWITCH LISTINGS WITHOUT LEAVING PAGE
	function switchListings(fmls,zip)
	{
		rePopulateModule('ListingAgent', 'data=' + fmls);
		rePopulateModule('PropertySnapshot', 'data=' + fmls);
		rePopulateModule('pageSubtitleText', 'data=' + fmls);
		rePopulateModule('primaryPhoto', 'data=' + fmls);
		populateRating('YourPersonalRating', fmls);
		rePopulateModule('AboutThisProperty', 'data=' + fmls);
		rePopulateModule('InteriorFeatures', 'data=' + fmls);
		rePopulateModule('RoomInformation', 'data=' + fmls);
		rePopulateModule('ExteriorFeatures', 'data=' + fmls);
		rePopulateModule('FinancialConsiderations', 'data=' + fmls);
		rePopulateModule('SearchTools', 'data=' + fmls);
		rePopulateModule('quickNote', 'data=' + fmls);
		demographicComparison(zip);
		setListingPageTitle(fmls);
		setTimeout("bindGallery()",1000);
	}

// NAVIGATION STUFF
	var oldMenu = 'NULL';

	function changeMenu(id)
	{
		var currentState = $("#" + id).css("display");
		if (currentState == 'none')
		{
			if (oldMenu != 'NULL') { $("#" + oldMenu).slideUp("fast"); }
			$("#" + id).slideDown("normal");
			oldMenu = id;
		}
	}
	function hideMenus()
	{
		if (oldMenu != 'NULL') { $("#" + oldMenu).slideUp("fast"); }
		oldMenu = 'NULL';
	}
	function setNavLocation(id, image) { $('#' + id).attr("src", image); }

// IMAGE GALLERY FUNCTIONS
	function toggleThumbs()
	{
		var currentState = $("#thumbGrid").css("display");
		if (currentState == 'none')
		{
			$("#thumbGrid").fadeIn("fast");
			$("#thumbGrid").animate({width:328}, {duration: 600, easing: 'expoin'});
			//$("#morePhotos").html('<img src="img/hideGallery.gif" border="0">');
			$("#morePhotos").html('Hide Gallery');
			//$("#propertyPhoto").find("#morePhotos").bind("click", function(){ toggleThumbs(); });
		} else {
			$("#thumbGrid").animate({width:0}, {duration: 600, easing: 'expoin'});
			$("#thumbGrid").fadeOut("fast");
			//$("#morePhotos").html('<img src="img/showGallery.gif" border="0">');
			$("#morePhotos").html('Show Photo Gallery');
		}
		//$("#morePhotos").bind("click", function(){ toggleThumbs(); });
	}
	// BINDS ALL FUNCTIONS FOR THE IMAGE GALLERY
	function bindGallery()
	{
		$("#mainPhoto").bind("click", function(){ toggleThumbs(); });
		$("#morePhotos").bind("click", function(){ toggleThumbs(); });
		$("#closeThumbs").bind("click", function(){ toggleThumbs(); });
		$(".currentThumbGridContent_imgs img").bind("mouseover", function(){
			var image = $(this).attr("src");
			$("#mainPhoto").attr("src",image);
			tb_init('#mainPhoto a');
		});
		$("#scrollUpLink").bind("mouseover", function(){ setMovement('up',150); });
		$("#scrollUpLink").bind("mouseout", function(){ setMovement('stop',150); });
		$("#scrollDownLink").bind("mouseover", function(){ setMovement('down',150); });
		$("#scrollDownLink").bind("mouseout", function(){ setMovement('stop',150); });
		setThickbox();
	}
	// AJAX CALL TO GET THE GALLERY (PASSING THE FMLS AS DATA)
	// THEN CALLS bindGallery() TO BIND ALL FUNCTIONS
	function getGallery(id, file, data)
	{
		$.ajax({
		  type: "POST",
		  url: "ajax/" + file + ".php",
		  data: data,
		  success: function(msg){
		    $("#" + id).html( msg );
		    bindGallery();
		  }
		});
	}

	// SCROLLING STUFF FOR GALLERY
			// SET SPEED
				var speed = 2;
				var currentTop = '0';
				var heightLimit = 300;
			// THE MOVE FUNCTION
				function move(){
					if (movement == 'down')
					{
						// CALCULATE NEW TOP AS INTEGER
		 					currentTop = currentTop - speed;
						// SET THE DIV TOP TO THE newTop VALUE
							$('#currentThumbGridContent').css("top", currentTop+"px");
						// SET TIMEOUT TO KEEP DOING IT
							if (currentTop > heightLimit) {	setTimeout("move()",16); }
					}
					if (movement == 'up')
					{
						// CALCULATE NEW TOP AS INTEGER
		 					currentTop = currentTop + speed;
						// SET THE DIV TOP TO THE newTop VALUE
							$('#currentThumbGridContent').css("top", currentTop+"px");
						// SET TIMEOUT TO KEEP DOING IT
							if (currentTop < 0) {	setTimeout("move()",16); }
					}
				}
			// THE FUNCTION WE CALL
				function setMovement(action, bottomMargin) {
					// SET WHICH DIV TO SCROLL
						var contentHeight = $('#currentThumbGridContent').height();
					// DO NOT TOUCH
						heightLimit = 0 - (contentHeight - bottomMargin);

					movement = action;
					move();
				}

 // START IAN FUNCTIONS

// ########## Cookie Functions ############### //
	function readCookie(name)
	{
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++)
		{
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	}
	
	function eraseCookie(name)
	{
		createCookie(name,"",-1);
	}
	
	function createCookie(name,value,days)
	{
		if (days)
		{
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	}
	
	function getObj(ID)
	{
		return document.getElementById(ID);	
	}
	
	function getParentObj(ID)
	{
		return window.parent.document.getElementById(ID);
	}	
	
	function GetXmlHttpObject()
	{
		var objXMLHttp=null
		if (window.XMLHttpRequest)
			objXMLHttp=new XMLHttpRequest()
		else if (window.ActiveXObject)
			objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
			return objXMLHttp
	}
	
	function CreateXMLObj(LoadFile)
	{
		if (window.ActiveXObject)
		{	xmldoc = new ActiveXObject("MSXML2.DOMDocument.4.0");
			xmldoc.async = false;
		}else
		{
			xmldoc = document.implementation.createDocument("", "", null);
			xmldoc.async = false;
		}
		if (LoadFile.indexOf(".xml") != -1 || LoadFile.indexOf(".xsl") != -1 )
			xmldoc.load(LoadFile);
		else xmldoc.loadXML(LoadFile);
		return xmldoc;
	}
	
	function EmailValidation(Email)
	{
		var reg = /^[A-z0-9][\w.-]*@[A-z0-9][\w\-\.]+\.[A-z0-9]{2,6}$/;
		var Result = reg.exec(Email);
		if (Result != null) return true;
		else return false;
	}
	
	function IsNumeric(sText)
	{
	   var ValidChars = "0123456789.";
	   var IsNumber=true;
	   var Char;
	
	 
	   for (i = 0; i < sText.length && IsNumber == true; i++) 
		  { 
		  Char = sText.charAt(i); 
		  if (ValidChars.indexOf(Char) == -1) 
			 {
			 IsNumber = false;
			 }
		  }
	   return IsNumber;
	}	
	
	function Comma(number) 
	{
		number = '' + number;
		if (number.length > 3) 
		{
			var mod = number.length % 3;
			var output = (mod > 0 ? (number.substring(0,mod)) : '');
			for (i=0 ; i < Math.floor(number.length / 3); i++) 
			{
				if ((mod == 0) && (i == 0))
					output += number.substring(mod+ 3 * i, mod + 3 * i + 3);
				else
					output+= ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);
			}
			return (output);
		}
		else return number;
	}	

	function removeCommas(aNum) 
	{
		aNum=aNum.replace(/,/g,"");
		aNum=aNum.replace(/\s/g,"");
		return aNum;
	}

	function pause(numberMillis)
	{
		var now = new Date();
		var exitTime = now.getTime() + numberMillis;
		while (true)
		{
		now = new Date();
		if (now.getTime() > exitTime)
		return;
		}
	}
	
	function isArray(obj)
	{
		return (typeof(obj.length)=="undefined") ? false : true;
	}
	
	function commafy(val){
		var pos;
		val = val.split(",").join(""); // remove existing commas if present.
		var dot=val.indexOf("."); // locate decmal
		if(dot<0)dot=val.length; // use end if no decimal
		var r="";
		for(pos=dot-3;pos>=1;pos-=3) // put commas in
		r=","+val.substr(pos,3)+r;
		r=val.substring(0,pos+3)+r; // put start of string on
		dot=val.indexOf("."); // check for decimal
		if(dot>0)r+=val.substring(dot);// put fraction part on
		return r;
	}
	
	function gup( name )
	{  
		name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");  
		var regexS = "[\\?&]"+name+"=([^&#]*)";  
		var regex = new RegExp( regexS );  
		var results = regex.exec( window.location.href );  
		if( results == null )    
			return "";  
		else    
			return results[1];
	}	

	function performNewSearch()
	{
		//window.location.href = 'http://' + DOCUMENT_ROOT + '/' + searchPage;	
		window.location.href = searchPage;	
	}

	// For Zip validation
	function validateZip(elem)
	{
		var string = elem;
		if (elem!='Zip Code'){
			string = string.replace(" ", "");
			var ArrayZip = string.split(',');
	
			for ( var i in ArrayZip )
			{
				if (!checkZip(ArrayZip[i]))
				{
					alert('Invalid Zip Code');
					$('#1086_quickSearch').focus();
					out=1;
					return false;
				}
			}
		}return true;
	}

	// For price validation
	function validatePrice(elem)
	{
		elem.value= elem.value.match(/\d*/);
	}

	function submitSearchForm(formID)
	{
		$('#'+formID).attr('action', resultPage);
		$('#'+formID).submit();
	}
