// JavaScript Document

var FYHA = {};
FYHA.findYourHomePageUrl = "FYHStandard.aspx";
FYHA.searchResultsPageUrl = "HomeSearchResults.aspx";
FYHA.cityStateZip;
FYHA.maxDistanceRange;
FYHA.homeType;
FYHA.beds;
FYHA.baths;
FYHA.squareFootage;
FYHA.price;
FYHA.immediateAvailability;
FYHA.additionalOptions;
FYHA.modelOptions;
FYHA.firstFloorOwnersSuite;
FYHA.basement;
FYHA.garage;
FYHA.communityAmenities;
FYHA.waterfront;
FYHA.walkingTrails;
FYHA.woodedLots;
FYHA.golf;
FYHA.tennis;
FYHA.clubhouse;
FYHA.fyhaGo;
FYHA.seeMoreOptions;
FYHA.additionalOptionsOpenText = "Hide additional options";
FYHA.additionalOptionsClosedText = "Open additional options";
FYHA.cityStateZipId = "cityStateZip";
FYHA.fyhaGoId = "fyhaGo";
FYHA.assetRoot = "./";
FYHA.showOptions = true;


FYHA.init = function(){
	FYHA.cityStateZip = FYHA.$(FYHA.cityStateZipId);
	FYHA.maxDistanceRange = FYHA.$("maxDistanceRange");
	FYHA.homeType = FYHA.$("homeType");
	FYHA.beds = FYHA.$("beds");
	FYHA.baths = FYHA.$("baths");
	FYHA.price = FYHA.$("price");
	FYHA.minSquareFootage = FYHA.$("minSquareFootage");
	FYHA.maxSquareFootage = FYHA.$("maxSquareFootage");
	FYHA.immediateAvailability = FYHA.$("immediateAvailability");
	FYHA.additionalOptions = FYHA.$("additionalOptions");
	FYHA.modelOptions = FYHA.$("modelOptions");
	FYHA.firstFloorOwnersSuite = FYHA.$("firstFloorOwnersSuite");
	FYHA.basement = FYHA.$("basement");
	FYHA.garage = FYHA.$("garage");
	FYHA.communityAmenities = FYHA.$("communityAmenities");
	FYHA.waterfront = FYHA.$("waterfront");
	FYHA.walkingTrails = FYHA.$("walkingTrails");
	FYHA.woodedLots = FYHA.$("woodedLots");
	FYHA.golf = FYHA.$("golf");
	FYHA.tennis = FYHA.$("tennis");
	FYHA.clubhouse = FYHA.$("clubhouse");
	FYHA.fyhaGo = FYHA.$(FYHA.fyhaGoId);
	FYHA.seeMoreOptions = FYHA.$("additionalOptions");
	//alert(document.getElementById("fyhaGo"));
	FYHA.hideAdditionalOptions();
	
	FYHA.addWatermark(FYHA.cityStateZip, "City & State or Zip");
	FYHA.addWatermark(FYHA.maxDistanceRange, "Max. Distance Range");
	FYHA.addWatermark(FYHA.homeType, "All Home Types");
	
	if(FYHA.additionalOptions){FYHA.additionalOptions.innerHTML = FYHA.additionalOptionsClosedText;}
//	if(FYHA.beds){FYHA.addWatermark(FYHA.beds, "Beds")};
//	if(FYHA.beds){FYHA.addWatermark(FYHA.baths, "Baths")};
//	if(FYHA.price){FYHA.addWatermark(FYHA.minPrice, "Min")};
//	if(FYHA.price){FYHA.addWatermark(FYHA.maxPrice, "Max")};
//	if(FYHA.beds){FYHA.addWatermark(FYHA.minSquareFootage, "Min")};
//	if(FYHA.beds){FYHA.addWatermark(FYHA.maxSquareFootage, "Max")};

	if(FYHA.price){FYHA.addWatermark(FYHA.price, "All Prices")};
	if(FYHA.minSquareFootage){FYHA.addWatermark(FYHA.minSquareFootage, "Min")};
	if(FYHA.maxSquareFootage){FYHA.addWatermark(FYHA.maxSquareFootage, "Max")};
	
	if(FYHA.additionalOptions){
		FYHA.additionalOptions.onclick = function(){
			if(this.innerHTML == FYHA.additionalOptionsOpenText){
				this.innerHTML = FYHA.additionalOptionsClosedText;
				FYHA.hideAdditionalOptions();
			}else{
				this.innerHTML = FYHA.additionalOptionsOpenText;
				FYHA.showAdditionalOptions();
			}
		}
	}
	
	if(FYHA.seeMoreOptions){
		//FYHA.seeMoreOptions.onclick = function(){
		//	window.location = FYHA.findYourHomePageUrl;
		//}
		FYHA.seeMoreOptions.style["display"] = (FYHA.showOptions)? "block" : "none";
	}

	if(FYHA.fyhaGo){
		FYHA.fyhaGo.onclick = function(){
			location.href = FYHA.assetRoot + FYHA.searchResultsPageUrl + "?" +FYHA.getRequestParams();
		}
	}
	

	
}

FYHA.$ = function(n){
	return 	document.getElementById(n);
}

FYHA.isAdditionalOptionsSelected = function(){
	if(!FYHA.additionalOptions){return false;}
	return (FYHA.additionalOptions.innerHTML == FYHA.additionalOptionsOpenText);
}

FYHA.showAdditionalOptions = function(){
	if(FYHA.communityAmenities){
		FYHA.communityAmenities.style["display"] = "block";
	}
	if(FYHA.modelOptions){
		FYHA.modelOptions.style["display"] = "block";
	}
}

FYHA.hideAdditionalOptions = function(){
	if(FYHA.communityAmenities){
		FYHA.communityAmenities.style["display"] = "none";
	}
	if(FYHA.modelOptions){
		FYHA.modelOptions.style["display"] = "none";
	}
}

FYHA.addWatermark = function(e, t){

	e.watermark = t;
	
	e.onfocus = function(){
		if(this.value == this.watermark){
			this.value = "";
		}
		this.className = this.className.split(" watermark").join("");
	}

	e.onblur = function(){
		switch(this.type){
			case "text":
				if(this.value == "" || this.value == this.watermark){
					this.value = this.watermark;
					this.className += " watermark";
				}
				break;
			case "select-one":
				var firstOption = this.options[0]; 
				if(!firstOption){
					return;
				}
				firstOption = this.options[0]; 
				if(firstOption.value != this.watermark){
					var wmOption = document.createElement('option');
					wmOption.text = this.watermark;
					wmOption.value = this.watermark;
					
					try {
					  this.add(wmOption, firstOption); // standards compliant; doesn't work in IE
					  this.selectedIndex = 0;
					}catch(ex) {
					  this.add(wmOption, 0); // IE only
					  this.selectedIndex = 0;
					}
					
				}
				firstOption = this.options[0];  
				
				if(this.selectedIndex <= 0){
					this.className += " watermark";
				}
				
				break;
		}
	}
	e.onblur();

}

/**
	finds named item and adds it's value to the given paramter object
**/
FYHA.addParam = function(itemName, params){
	if(FYHA[itemName]){
		if(FYHA[itemName].watermark){
			if(FYHA[itemName].watermark == FYHA.valueOf(FYHA[itemName])){//null items that match thier watermark
			    params[itemName] = '';
				return;	
			}
		}
		
		params[itemName] = FYHA.valueOf(FYHA[itemName]);
		//alert("add " + params[itemName]);
		return;		
	}
}

/**
	returns an object with key / values of the current state of the form
**/
FYHA.getRequestParams = function(){
	var params = {};
	//params.toString = function(){
	//	var ret = [];
	//	for(var key in this){
	//		if(typeof(this[key])!= "function"){ 
	//			ret.push(key + ":" + this[key] + "\n");
	//		}
	//	}
	//	return ret.join("");
	//}
	params.toString = function(){
		var ret = [];
		for(var key in this){
			if(typeof(this[key])!= "function"){ 
				ret.push(key + "=" + escape(this[key]));
			}
		}
		return ret.join("&");
	}
	FYHA.addParam("cityStateZip", params);
	FYHA.addParam("maxDistanceRange", params);
	FYHA.addParam("homeType", params);
	FYHA.addParam("beds", params);
	FYHA.addParam("baths", params);
	FYHA.addParam("price", params);
	FYHA.addParam("minSquareFootage", params);
	FYHA.addParam("maxSquareFootage", params);
	FYHA.addParam("immediateAvailability", params);
	//if(FYHA.isAdditionalOptionsSelected()){
		FYHA.addParam("firstFloorOwnersSuite", params);
		FYHA.addParam("basement", params);
		FYHA.addParam("garage", params);
		FYHA.addParam("waterfront", params);
		FYHA.addParam("walkingTrails", params);
		FYHA.addParam("woodedLots", params);
		FYHA.addParam("golf", params);
		FYHA.addParam("tennis", params);
		FYHA.addParam("clubhouse", params);
	//}
	return params;
}

/**
	return the current value of the given item
**/
FYHA.valueOf = function(item){
	//alert(item.type + " " + item.id);
	switch(item.type){
		case "text":
			return item.value;
		case "select-one":
			return (!item.options[item.selectedIndex].value)? item.options[item.selectedIndex].text : item.options[item.selectedIndex].value;
		case "checkbox":
			return item.checked;
		default:
			return "UNKNOWN ELEMENT:"+item.type;
	}
}



















