var myCompanyId = "";
var currentSearchStr = ""
var hintOpen = false;
var currentHintIndex = -1;
var numResults = 0;
var addressHintClass = "addresshint";
var searchResultClass = "searchlisting";
var hostname = top.location.hostname;
var searchFilterRoot = "/";
if(hostname == "localhost") {
	searchFilterRoot = "/cafe.rc.propertysitecontent/"
} 

$(document).ready(function() {
		
	
	$("#expandAdvanced").click(function(e){
		e.preventDefault();
		showDialog("Advanced Options","AdvancedSearchOptions","",910);
	});
	
	$("#advancedOptionsWrap input:checkbox").live("click",function(){
		setAdvancedCookies();
	});
	$("#advancedOptionsWrap input:text").live("change",function(){
		setAdvancedCookies();
	});
	$("#txtCity").keyup(function(event) {
		if(event.keyCode == "27") {			
			$("#hintList li").removeClass("selected");
			$("#hintContainer").hide();
			hintOpen = false;	
			currentHintIndex = -1;
		} else if(event.keyCode == "13") {
			if(currentHintIndex > -1 && hintOpen) {
				event.preventDefault();
				$("#hintList li.selected a").click();
			} else {
				PostForm();	
			}
		} else if(event.keyCode == "38") { //up
			moveHintSelectionUp();
		} else if(event.keyCode == "40") { //down
			if(hintOpen){
				moveHintSelectionDown();
			} else {				
				showHint($(this).val());	
			}
		} else {
			showHint($(this).val());	
		}
    });

    $(".formtextfield").focusin(function () {
        if ($(this).val() == $(this).attr("alt")) {
            $(this).val("");
        }
    });
    $(".formtextfield").focusout(function () {
        if ($(this).val() == "") {
            $(this).val($(this).attr("alt"));
        }
    });
	
	BindFilterCookies();
	
	
	
});

function moveHintSelectionUp() {
	if(currentHintIndex >= 0) {
		currentHintIndex = currentHintIndex - 1;
		$("#hintList li").removeClass("selected");		
		$("#hintList li:eq(" + currentHintIndex + ")").addClass("selected");
	}
}

function moveHintSelectionDown() {
	if(currentHintIndex < numResults - 1) {
		currentHintIndex = currentHintIndex + 1;
		$("#hintList li").removeClass("selected");
		$("#hintList li:eq(" + currentHintIndex + ")").addClass("selected");	
	}
}
function showHint(partialCity){	
	
	if($("#hintContainer").length == 0){
		$("#txtCity").parent().append("<div id='hintContainer'></div>");
	}
	
	$("#hintContainer").hide();
	hintOpen = false;
	
	if(partialCity == ""){ return; }
	
	currentHintIndex = -1;
	partialCity = partialCity.replace("'","%27").replace(" ", "%20");
	$("#hintContainer").load(searchFilterRoot + "rcLoadContent.ashx?contentclass=" + addressHintClass + "&partialCity=" + partialCity, function(){
		if($("#hintResultCount").length != 0 ) {
			$("#hintContainer").show();
			hintOpen = true;
			numResults = $(".hintItem").length;
		}
	});
}

function hintClick(hintText) {
	$("#txtCity").val(hintText);
	$("#hintContainer").hide();
	hintOpen = false;
}

function PostForm(params) {

	if($("#hintContainer").is(":visible")){
		$("#hintList li.selected a").click();
		//return false;	
	}
	var iRent = 0;
	var iApartment = 0;
	var iCompare = 0;
	var iApartmentGuide = 0;
	var path = poly.getPath();
	if(typeof(params) == "undefined"){ params = "";}
	if (path.length == 0 && ($("#txtPropertyName").val() == "" || $("#txtPropertyName").length == 0) && ($("#txtCompanyName").val() == "" || $("#txtCompanyName").length == 0) && ($("#txtCity").val() == "") && querySt("txtCity") == "") {
		if($("#txtCityError").length == 0){
			$("#txtCity").parent().append("<label id='txtCityError' class='txtCityError'>Please enter an address, a city and state, or a ZIP code.</label>");
		}
		$("#txtCityError").show();
		$("#txtCity").focus(function(){
			$("#txtCityError").hide();
		});
		return false;
	}
		
	//--begin get Lat/Long
	var Address = $("#txtCity").val();
	
	var geocoder = new google.maps.Geocoder();
	var latlng = "";
	if(params.indexOf("isBoxSearch") == -1){
		geocoder.geocode( { 'address': Address}, function(results, status) {
			if (status == google.maps.GeocoderStatus.OK) {
				params = params + "LatLng=(" + results[0].geometry.location.lat() + "," + results[0].geometry.location.lng() + ")&";
				SetCookie("LatLng","(" + results[0].geometry.location.lat() + "," + results[0].geometry.location.lng() + ")");
			} 
			doPost(params, Address);
		});
	} else {
		// Clear cookie values so we call geolocation in code
		SetCookie("LatLng","");
		doPost(params, Address)
	}
	
    return false;
}

	function doPost(params, Address){	
	
		var path = poly.getPath();
		if (window.location.toString().toLowerCase().indexOf('searchlisting') == -1  && poly.getPath().length == 0) {
			s = buildURL("apartmentsforrent/searchlisting.aspx", params);
			window.location.href = s;
		} else {
			var url = buildURL("rcloadcontent.ashx", params) + "contentclass=" + searchResultClass;
			$("#resultsWrap").html("<img id='imgPreLoader' src='" + searchFilterRoot + "images/build_PageLoading.gif' alt='Loading...' />");
			$("#cbsaWrapper").hide();
			document.title = "Apartments in " + Address + " | RentCAF&eacute";
			$("#resultsWrap").load(url, function () {
				initFavorites();
				
				if(path.length > 0){
					poly.setPath(path);
					poly.setMap(map);
					$("#mapDiv").ResultsMap('setBoxButton');
					$(".searchLocationDisplay").html("");	
				} else {
					$(".searchLocationDisplay").html(" in " + $("#txtCity").val());
				}
				
				BindFilterCookies();
			});
		}	
	}

	function buildURL( baseurl,  params, omit){
		if(!omit){
			omit = "";
		}
		if(!params){
			params = "";
		}
		var bShowDetailSite = 0;
		var sPropertyName = "";
		var sCompanyName = "";
		var strPageSize = $("#cmbNumResults").val();		
		var s = searchFilterRoot + baseurl + "?";
		
		$("#searchForm .formtextfield").each(function(){
			if ((($(this).hasClass('number') && isNumber($(this).val())) || !$(this).hasClass("number")) && $(this).val() != "" && $(this).val() != $(this).attr("alt") && omit.toLowerCase() != $(this).attr("id") && params.toLowerCase().indexOf($(this).attr("id")) == -1) {
				s += $(this).attr("id") + "=" + $(this).val() + "&";
			} else if($(this).hasClass('number') && !isNumber($(this).val())) {
				$(this).val("");	
				
			}		
		});
		$("#advancedOptionsWrap .formtextfield").each(function(){
			if ($(this).val() != "" && $(this).val() != $(this).attr("alt") && omit.toLowerCase() != $(this).attr("id") && params.toLowerCase().indexOf($(this).attr("id")) == -1) {
				if($(this).val().indexOf("script") == -1){
					s += $(this).attr("id") + "=" + $(this).val() + "&";		
				}
			}		
		});
		$("#searchForm .searchSelect").each(function(){
			if ($(this).val() != "" && $(this).val() != $(this).attr("alt") && omit.toLowerCase() != $(this).attr("id") && params.toLowerCase().indexOf($(this).attr("id")) == -1) {
				s += $(this).attr("id") + "=" + $(this).val() + "&";
			}		
		});
		$("#searchForm .FormCheckBoxField").each(function(){
			if ($(this).is(":checked") && omit.toLowerCase() != $(this).attr("id") && params.toLowerCase().indexOf($(this).attr("id")) == -1) {
				s += $(this).attr("id") + "=true&";
			}		
		});
		if(omit.toLowerCase() != "area" && params.toLowerCase().indexOf("latlng") == -1){
			var path = poly.getPath();
			var i = 0;
			var maxLat = -1000;
			var maxLng = -1000;
			var minLat = 1000;
			var minLng = 1000;
	
			if(path.length > 0){ 
	
				while (i < path.length) {
					var clat = path.getAt(i).lat();
					var clng = path.getAt(i).lng();
					if (clat < minLat && clat > 0) minLat = clat;
					if (clat > maxLat && clat > 0) maxLat = clat;
					if (clng < minLng && clng < 0) minLng = clng;
					if (clng > maxLng && clng < 0) maxLng = clng;
					i++;
				}
				var centerLat = (minLat + maxLat) / 2;
				var centerLng = (minLng + maxLng) / 2;
				s += "LatLng=(" + centerLat + "," + centerLng + ")&swLat=" + minLat + "&swLng=" + minLng + "&neLat=" + maxLat + "&neLng=" + maxLng + "&"
			}
			
		}
		if($("#cmbSort").length > 0){
			if($("#cmbSort").val() != "" && omit.toLowerCase() != "sort" && params.toLowerCase().indexOf("sort") == -1){
				var aSort = $("#cmbSort").val().split("^");
				s += "Sort=" + aSort[0] + "&Order=" + aSort[1] + "&sPageSize=" + strPageSize + "&";
			}
		}
		
		if(params != ""){
			s += params;
		}
		
		SetFilterCookies();
		
		var theUrl = s.substring(0,s.length).replace("'"," ").replace(/ /g, "%20");
			
		return theUrl;
	
	}

    function SetFilterCookies() {
    	$(".formtextfield").each(function(){
    		if($(this).val() != $(this).attr("alt")){
    			var val = $(this).val();
    			if(val != null && val != "undefined"){
    				SetCookie($(this).attr("id"),val);	    	
    			} else {    				
    				SetCookie($(this).attr("id"),"");	
    			}
    		} else {
    			SetCookie($(this).attr("id"),"");	   			
    		}	
    	});
    	
    	$(".FormCheckBoxField").each(function(){
			if($(this).is(":checked")){
    			SetCookie($(this).attr("id"),"true");	    	
    		} else {
    			SetCookie($(this).attr("id"),"");	
    		}
    	});
    	
    	$("select").each(function(){
    		if($(this).val()){
    			SetCookie($(this).attr("id"),$(this).val());	
    		} else {
    			SetCookie($(this).attr("id"),0);		
    		}
    	});
    	
    	$(".expandable").each(function(){
    		if ($(this).is(":visible")) {
	            SetCookie($(this).attr("id"), 1);
	        } else {
	            SetCookie($(this).attr("id"), 0);
	        }    		
    	});
    	
    	setAdvancedCookies();
      

    }
     function BindFilterCookies(){
      //Clear this value incase the user clicks a CBSA Link, we'll have to do geolocation 
      //in code. TODO - Add function to do this client-side 
     	SetCookie("LatLng","");

     	$(".formtextfield").each(function(){
     		var val = GetCookie($(this).attr("id"));     		
     		if(val != null && val != "undefined" && val != ""){	  	
    			$("#" + $(this).attr("id")).val(val);
     		} else {
     			$("#" + $(this).attr("id")).val($(this).attr("alt"));
     		} 	    	
    	});
    	$(".FormCheckBoxField").each(function(){
			if(GetCookie($(this).attr("id")) == "true"){	  	
    			$("#" + $(this).attr("id")).attr("checked",true);
     		}else {
     			$("#" + $(this).attr("id")).attr("checked",false);
     		}
    	});
    	
    	$("select").each(function(){
			if(GetCookie($(this).attr("id")) != null){	  	
    			$("#" + $(this).attr("id")).val(GetCookie($(this).attr("id")));
     		}
    	});
     	
     	$(".expandable").each(function(){
    		if (GetCookie($(this).attr("id")) == 1 ) {
	            $(this).show();
	            $(this).prev(".expander").addClass("open");
	        } else {
	            $(this).hide();
	            $(this).prev(".expander").removeClass("open");
	        }    		
    	});   
    	    	
  		bindAdvancedCookies();
     }

   	function setAdvancedCookies(){
   		var specificSet = false;
   		var propertyTypeSet = false;
   		var amenitySet = false;
    	var amenitiesCookie = "#";
    	
    	$("#activeAdvancedFilters .specific").html("");    	
    	$("#activeAdvancedFilters .amenities").html("");    	
    	$("#activeAdvancedFilters .propertyTypes").html("");
    	
    	$("#advancedOptionsWrap input.amenityCheckbox:checkbox").each(function(){
    		if($(this).is(":checked")){  
    			amenitySet = true;  			
				var val = $("label[for='checkbox" + $(this).attr("id").replace("checkbox","") + "']").html();
    			amenitiesCookie += $(this).attr("id").replace("checkbox","") + "#";
    			$("#activeAdvancedFilters .amenities").append("<div id='filteredAmenity" + $(this).attr("id").replace("checkbox","") + "' class='filteredAmenity margintop5 clearfix'><span>" + val +"</span></div>");
    		}
    	});
    	
    	$("#advancedOptionsWrap input.propertyTypeCheckbox:checkbox").each(function(){
    		if($(this).is(":checked")){    			
    			propertyTypeSet = true;
				var val = $("label[for='propertyTypeCheckbox" + $(this).attr("id").replace("propertyTypeCheckbox","") + "']").html();				
				SetCookie(val.toLowerCase() + "CB","1");
    			$("#activeAdvancedFilters .propertyTypes").append("<div id='filteredAPropertyType" + $(this).attr("id").replace("propertyTypeCheckbox","") + "' class='filteredPropertyType margintop5 clearfix'><span>" + val +"</span></div>");
    		} else {
    			var val = $("label[for='propertyTypeCheckbox" + $(this).attr("id").replace("propertyTypeCheckbox","") + "']").html();				
    			SetCookie(val.toLowerCase() + "CB","");	
    		}
    	});
    	
    	SetCookie("SelectedAmenities", amenitiesCookie);
    	    	 
    	$("#advancedOptionsWrap .formtextfield").each(function(){
    		if($(this).val() != "" && isClean($(this).val())){
    			specificSet = true;
    			var val = $(this).val();
    			SetCookie($(this).attr("id"),val);	     				
    			var title = $(this).prev().html();
    			$("#activeAdvancedFilters .specific").append("<h2>" + title + "</h2><div id='filteredSpecific" + $(this).attr("id") + "' class='filteredSpecific margintop5 clearfix'><span>" + val + "</span></div>");   	    		
    		} else {
    			SetCookie($(this).attr("id"),"");	
    		}	
    	});
    	if(amenitySet){
    		$("#activeAdvancedFilters .amenities").prepend("<h2>Amenities</h2>");	
    	}
    	if(propertyTypeSet){
    		$("#activeAdvancedFilters .propertyTypes").prepend("<h2>Property Types</h2>");	
    	}
    	
    	if(specificSet || propertyTypeSet || amenitySet){
    		$("#activeAdvancedFilters").show();
    	} 
        
   	}
   	
   	function bindAdvancedCookies(){
   		var specificSet = false;
   		var propertyTypeSet = false;
   		var amenitySet = false;
   		
   		$("#activeAdvancedFilters .specific").html("");    	
    	$("#activeAdvancedFilters .amenities").html("");    	
    	$("#activeAdvancedFilters .propertyTypes").html("");
   		$("#activeAdvancedFilters").hide();
   		
   		
   		var amenitiesCookie = GetCookie("SelectedAmenities");
   		if(amenitiesCookie != null && amenitiesCookie.length > 1) {   			   		
	   		amenitiesCookie = amenitiesCookie.substring(1, amenitiesCookie.length - 1);	
			var amenitiesArr = amenitiesCookie.split("#");

			for(var i = 0; i < amenitiesArr.length; i++){
				amenitySet = true;
				$("#checkbox" + amenitiesArr[i]).attr("checked", true);
				var val = $("label[for='checkbox" + amenitiesArr[i] + "']").html();
				$("#activeAdvancedFilters .amenities").append("<div id='filteredAmenity" + amenitiesArr[i] + "' class='filteredAmenity margintop5 clearfix'><span>" + val +"</span></div>");
			}		
		
		}
		var count = 0;
		$("#advancedOptionsWrap .propertyTypeCheckbox").each(function(){
			var val = $("label[for='propertyTypeCheckbox" + $(this).attr("id").replace("propertyTypeCheckbox","") + "']").html();				
    		var pTypeCookie = GetCookie(val.toLowerCase() + "CB");	  		    		

    		if(pTypeCookie != "undefined" && pTypeCookie != null && pTypeCookie != ""){
    			propertyTypeSet = true;	
				$("#propertyTypeCheckbox" + count).attr("checked", true);
    			$("#activeAdvancedFilters .propertyTypes").append("<div id='filteredPropertyType" + count + "' class='filteredPropertyType margintop5 clearfix'><span>" + val +"</span></div>");	
    		}
    		count++;			
		});
    			    	
    	$("#advancedOptionsWrap .formtextfield").each(function(){
    		
     		var val = GetCookie($(this).attr("id"));     		
     		if(val != "undefined" && val != null && val != "" && val.indexOf("script") == -1){	  
     			specificSet = true;	
    			$("#" + $(this).attr("id")).val(val);
    			var title = $(this).prev().html();
    			$("#activeAdvancedFilters .specific").append("<h2>" + title + "</h2><div id='filteredSpecific" + $(this).attr("id") + "' class='filteredSpecific margintop5 clearfix'><span>" + val +"</span></div>");   	
     		} else {
     			$("#" + $(this).attr("id")).val($(this).attr("alt"));
     		} 	    	     		
     		
    	});
    	
    	if(amenitySet){
    		$("#activeAdvancedFilters .amenities").prepend("<h2>Amenities</h2>");	
    	}
    	if(propertyTypeSet){
    		$("#activeAdvancedFilters .propertyTypes").prepend("<h2>Property Types</h2>");	
    	}
    	
    	if(specificSet || propertyTypeSet || amenitySet){
    		$("#activeAdvancedFilters").show();
    	} 
    	
   	}

	function clearAdvancedCookies(){
    	SetCookie("SelectedAmenities", "#");
    	 		    	
    	$("#advancedOptionsWrap input.propertyTypeCheckbox:checkbox").each(function(){
			var val = $("label[for='propertyTypeCheckbox" + $(this).attr("id").replace("propertyTypeCheckbox","") + "']").html();				
			SetCookie(val.toLowerCase() + "CB","");			
    	}); 		 
		 
    	$("#advancedOptionsWrap .formtextfield").each(function(){
			SetCookie($(this).attr("id"),"");				
    	}); 	
        
   	}

   	function isClean(val) {
   	    if ((val.indexOf("&") == -1) &&
            (val.indexOf("<") == -1) &&
            (val.indexOf(">") == -1) &&
            (val.indexOf("\"") == -1) &&
   	        (val.indexOf("/") == -1)) {
            return true
   	    }
   	    return false;
   	}
	
	/*
	Function to read querystring
	*/
	function querySt(ji) {
	    hu = window.location.search.substring(1);
	    gy = hu.split("&");
	    for (i = 0; i < gy.length; i++) {
	        ft = gy[i].split("=");

	        if (ft[0] == ji) {
	            return ft[1];
	        }

	    }
	    return '';
	}

	function StateManagementString(sQueryString) {
	    if (sQueryString == "" || sQueryString == 0) {
	        return '';
	    }
	    else {
	        return sQueryString;
	    }
	}

	



