//Javascript supporting SearchControl
var customarray = new Array ();
function ClearWarningMessage(){
	var oWarning = document.getElementById(document.getElementById('divWarning').value);
	oWarning.innerHTML = "";
	oWarning.style.display = "none"
}
function RepopulateCityList(){
	ClearWarningMessage();
	var lstState = document.getElementById(document.getElementById('lstState').value);
	if (customarray.length == 0 && lstState.selectedIndex > 0)
		GetCities();
	SetSearchAll(JSResource.ExactCity);
}
function GetCities(){
	var lstState = document.getElementById(document.getElementById('lstState').value);
	var sStateName = lstState.options[lstState.selectedIndex].text;
	var txtCity = document.getElementById(document.getElementById('txtCity').value);
	
	CSi.ApartmentGuide.WebProject.AjaxMethods.SearchAjaxMethods.GetCities(sStateName, GetCitiesCallback)
}
function GetCityList(sStateName){
	if (sStateName == "State")
		return "";
	else    
		return CSi.ApartmentGuide.WebProject.AjaxMethods.SearchAjaxMethods.GetCities(sStateName).value;
}
function GetCitiesCallback(res){
	PopulateCities(res.value);
    initCityLookAheadCtrl()
}
function PopulateCities(sCityList){
	customarray.length = 0;
	if (sCityList == null) return;
	var saCities = sCityList.split ('|');
	for (var iCity = 0; iCity < saCities.length; iCity++) {
		customarray[iCity] = saCities[iCity];
	}
} 
function SetDropDownListByText(lst, textValue) {
    for (i = 0; i < lst.length; i++) {
        if (lst.options[i].text == textValue) {
            lst.selectedIndex = i;
            break;
        }
    }
}  
function GetBases(){
	var lstBranch = document.getElementById(document.getElementById('lstBranch').value);
	var sBranchId = lstBranch.options[lstBranch.selectedIndex].value;

	var sBaseList;
	if (sBranchId == "0")
		sBaseList = "Base";
	else
		sBaseList = CSi.ApartmentGuide.WebProject.AjaxMethods.SearchAjaxMethods.GetBases(sBranchId).value;
		
	PopulateDropDownList(document.getElementById('lstBase').value, sBaseList);
	
	var lstBase = document.getElementById(document.getElementById('lstBase').value);
	var htxtBranchCollege = document.getElementById(document.getElementById('BranchCollege').value);
	SetDropDownListByText(lstBase, htxtBranchCollege.value);
}
function GetColleges(){
	var lstState = document.getElementById(document.getElementById('lstStateCollege').value);
	var sStateId = lstState.options[lstState.selectedIndex].value;

	var sCollegeList;
	if (sStateId == "0")
		sCollegeList = "College";
	else
		sCollegeList = CSi.ApartmentGuide.WebProject.AjaxMethods.SearchAjaxMethods.GetColleges(sStateId).value;
		
	PopulateDropDownList(document.getElementById('lstCollege').value, sCollegeList);
	
	var lstCollege = document.getElementById(document.getElementById('lstCollege').value);
	var htxtBranchCollege = document.getElementById(document.getElementById('BranchCollege').value);
	SetDropDownListByText(lstCollege, htxtBranchCollege.value);
}
function GetPrices(){
	var lstTerm = document.getElementById(document.getElementById('lstTerm').value);
	var sTermId = lstTerm.options[lstTerm.selectedIndex].value;
	var sLowPriceList = CSi.ApartmentGuide.WebProject.AjaxMethods.SearchAjaxMethods.GetLowPrices(sTermId);
	var sHighPriceList = CSi.ApartmentGuide.WebProject.AjaxMethods.SearchAjaxMethods.GetHighPrices(sTermId);
	PopulateDropDownList(document.getElementById('lstPriceFrom').value, sLowPriceList.value);
	PopulateDropDownList(document.getElementById('lstPriceTo').value, sHighPriceList.value);

	//set PriceTo to "Any"
	var lstPriceTo = document.getElementById(document.getElementById('lstPriceTo').value);
	lstPriceTo.selectedIndex = lstPriceTo.options.length - 1;
}
function PopulateDropDownList(lstId, sListVals){
	var lst = document.getElementById(lstId);
	var saListVals = sListVals.split('^');
	lst.options.length = 0;
	var saListNameVal;
	for (var iLst = 0; iLst < saListVals.length; iLst++) {
		saListNameVal = saListVals[iLst].split('|');
		var optn = document.createElement ('OPTION');
		optn.text = saListNameVal[0];
		optn.value = saListNameVal[1];
		lst.options.add (optn);
	}
} 
function AddItem(oListBox, sVal, sText){
	var newOpt = document.createElement("OPTION");
	newOpt.value=sVal;
	newOpt.text = sText;
	newOpt.innerText = sText;

	oListBox.insertBefore(newOpt, oListBox.options[0]);
}

function Validate()
{
	var errMsg = "";
	var hfListingType = document.getElementById('ListingType');
	
	if(hfListingType != null)
	{
		var lstType = document.getElementById('ListingType').value;
		
		switch (lstType)
		{
			case '1':
			case '2':
			case '5':
				var lstState = document.getElementById(document.getElementById('lstState').value);
				var txtZip = document.getElementById(document.getElementById('txtZip').value);
				var txtCity = document.getElementById(document.getElementById('txtCity').value);
				var index = lstState.selectedIndex;
				
				if(txtZip != null)
				{
					if (txtZip.value == "" && lstState.selectedIndex == 0 && txtCity.value == "")
					{
						errMsg = JSResource.StateCityZip; //"Select a State and City or Zip Code.";
					}
					else if(txtZip.value == "" && lstState.selectedIndex == 0 && txtCity.value != "")
						errMsg = JSResource.SelectState;
					else if (txtZip.value != "" && !IsZipCodeValid(txtZip.value).value)
					{
						errMsg = JSResource.ZipCode; //"The Zip Code entered is invalid."; 
					}
					else if (lstState.selectedIndex > 0 && txtZip.value == "")
					{
						if (txtCity.value == "")
						{
							errMsg = JSResource.SelectCity; //"Select a City."
						}
						else if (!IsCityValid(txtCity.value, lstState.options[index].text))
						{
							errMsg = JSResource.CityInvalid; //"The City entered is invalid.";
						}
					}
				}
				else
				{
					if (lstState.selectedIndex > 0) 
					{
						if (txtCity.value == "")
							errMsg = JSResource.SelectCity; // "Select a City."
						else if (!IsCityValid(txtCity.value, lstState.options[index].text))
							errMsg = JSResource.CityInvalid; //"The City entered is invalid.";
					} 
					else
						errMsg = JSResource.StateCity; //"Select a State and City.";
				}
				break;
				
			case '3':
				var lstBranch = document.getElementById(document.getElementById('lstBranch').value);
				var lstBase = document.getElementById(document.getElementById('lstBase').value);

				if (lstBranch.selectedIndex <= 0)
					errMsg = JSResource.SelectBranch;// "Select a Branch";
				if (lstBase.selectedIndex <= 0)
					if (errMsg == "")
						errMsg = JSResource.SelectBase; // "Select a Base";
					else
						errMsg += JSResource.AndBase;// " and Base"
				if (errMsg != "")
					errMsg += ".";
				break;
				
			case '4':
				var lstState = document.getElementById(document.getElementById('lstStateCollege').value);
				var lstCollege = document.getElementById(document.getElementById('lstCollege').value);

				if (lstState.selectedIndex <= 0)
					errMsg = JSResource.SelectState; // "Select a State";
				if (lstCollege.selectedIndex <= 0)
					if (errMsg == "")
						errMsg = JSResource.SelectCollege; //"Select a College";
					else
						errMsg += JSResource.AndCollege; //" and College"
				if (errMsg != "")
					errMsg += ".";            
				break;
		}
	}
	
	//Validate Price Reange
	if (!IsPriceRangeValid()){
		var msg = JSResource.PriceFrom; //'"Price From" must be less than or equal to " Price To"';
		if (errMsg !="")
			errMsg = errMsg + '<br/>' + msg;
		else
			errMsg =  msg;
	}
	
	var oWarning = document.getElementById(document.getElementById('divWarning').value);
	if (errMsg != "")
	{
		oWarning.innerHTML = errMsg;
		oWarning.style.display = "block"
		return false;
	} 
	else{
		oWarning.style.display = "none"
		return true;
	}
}

function IsCityValid(sCity, sState){
	if (customarray.length > 0){
		for (var iCity=0; iCity < customarray.length; iCity++) {
			if (customarray[iCity].toLowerCase() == sCity.trim().toLowerCase())
				return true;
		}
		return false;
	}
	else
		return CSi.ApartmentGuide.WebProject.AjaxMethods.SearchAjaxMethods.IsCityValid(sCity, sState);
}
function ValidateZip(){
	var txtZip = document.getElementById(document.getElementById('txtZip').value);
	var errMsg = "";
	if (!IsZipCodeValid(txtZip.value).value){
		errMsg = JSResource.ZipCode; //"The Zip Code entered is invalid.";
		var oWarning = document.getElementById(document.getElementById('divWarning').value);
		oWarning.innerHTML = errMsg;
		oWarning.style.display = "block"
	}
}
function IsZipCodeValid(sZipCode){
	return CSi.ApartmentGuide.WebProject.AjaxMethods.SearchAjaxMethods.IsZipCodeValid(sZipCode);
}
function ClearStateCity(){
	ClearWarningMessage();
	var txtCity = document.getElementById(document.getElementById('txtCity').value);
	txtCity.value = "";
	var lstState = document.getElementById(document.getElementById('lstState').value);
	lstState.selectedIndex = 0;
	
	//set tabindex
	SetTabOrder(true);
	SetSearchAll(JSResource.ExactZipCode);
}
function ResetStateCity(){
	var txtZip = document.getElementById(document.getElementById('txtZip').value);
	var txtCity = document.getElementById(document.getElementById('txtCity').value);

	if (txtZip.value != "")
		ClearStateCity();        
}
function SetTabOrder(isZipCode){
	if (isZipCode){
		document.getElementById(document.getElementById('lstState').value).tabIndex="1";
		document.getElementById(document.getElementById('txtCity').value).tabIndex="2";
		document.getElementById(document.getElementById('txtZip').value).tabIndex="3";
		document.getElementById(document.getElementById('lstRadius').value).tabIndex="4";
	}
	else{
		document.getElementById(document.getElementById('txtZip').value).tabIndex="1";
		document.getElementById(document.getElementById('lstState').value).tabIndex="2";
		document.getElementById(document.getElementById('txtCity').value).tabIndex="3";
		document.getElementById(document.getElementById('lstRadius').value).tabIndex="4";
	}
}
function ResetZip(){
	ClearWarningMessage();
	var txtZip = document.getElementById(document.getElementById('txtZip').value);
	txtZip.value = "";
	
	//set tabindex
	SetTabOrder(false);
	SetSearchAll(JSResource.ExactCity);
}



function initCityLookAheadCtrl(){
	
	
	
	loadCities();
}
function formatExt( e, obj ){
	if(e.keyCode == 9){
		return;
	}
	var validchars = '0123456789'; // define valid characters
	p = obj.value;
	for (var i = p.length; i >= 0; i--) 
	{
		if (validchars.indexOf(p.charAt(i)) == -1)
		{
			p = p.replace(p.charAt(i),'');
		}
	}
	if ( ! isValid( p, validchars ) ) {
		p = p.substring(0,p.length - 1 );
	}
	obj.value = p;
}
function IsPriceRangeValid(){
	var lstFrom = document.getElementById(document.getElementById('lstPriceFrom').value);
	var fromValue = parseInt(lstFrom.options[lstFrom.selectedIndex].value);
	
	var lstTo = document.getElementById(document.getElementById('lstPriceTo').value);
	var toValue = parseInt(lstTo.options[lstTo.selectedIndex].value);
	
	if (fromValue <=toValue || toValue == -1)
		return true;
	else
		return false;
}
function SetSearchAll(selectText){
    var lstRadius = document.getElementById(document.getElementById('lstRadius').value);
    lstRadius.options[0].text = selectText;
}
function SaveSelectedBranchCollege(objId){
	var lstDropDown = document.getElementById(objId);
	var sBranchCollege = lstDropDown.options[lstDropDown.selectedIndex].text;
	var htxtBranchCollege = document.getElementById(document.getElementById('BranchCollege').value);
	htxtBranchCollege.value = sBranchCollege;
}

function ShowHideOptions(objId){
	var obj = document.getElementById(objId);
	
	if(obj.style.display == "none")
		obj.style.display = "";
	else
		obj.style.display = "none";
	
	//set hiden field to current style
	document.getElementById('liSrchOptions').value = obj.style.display
	return false;
}

function SetCityDefaultRadius(city)
{
    var lstRadius = document.getElementById(document.getElementById('lstRadius').value);
    var lstState = document.getElementById(document.getElementById('lstState').value);
    var state = lstState.options[lstState.selectedIndex].text;
    if (state == "" || city == "") return;
    
    var defaultRadius = CSi.ApartmentGuide.WebProject.AjaxMethods.SearchAjaxMethods.GetCityDefaultRadius(state, city).value;
    if (defaultRadius != null)
    {
        for (var i=0; i<lstRadius.options.length; i++)
        {
            lstRadius.options[i].selected = (defaultRadius == lstRadius.options[i].value);
        }
    }   
    else
    {
        lstRadius.selectedIndex = 0;
    }
}

function changelstRadius( bzip )    //S1002
{
   var lstRadius = document.getElementById(document.getElementById('lstRadius').value);
   if(bzip == true)
   {
     SetSearchAll(JSResource.ExactZipCode);     
     lstRadius.selectedIndex = 0;
   } 
   else
   {
     var txtZip = document.getElementById(document.getElementById('txtZip').value);
     if (txtZip.value == "")
     {
         SetSearchAll(JSResource.ExactCity);
         var defaultRadius = document.getElementById('hdnRadiusDefault').value;     
         var txtCity = document.getElementById(document.getElementById('txtCity').value);
         if (txtCity.value != "")
         {
            SetCityDefaultRadius(txtCity.value);
         }
         else
         {
             if (defaultRadius != null)
             {
                for (var i=0; i<lstRadius.options.length; i++)
                {
                    lstRadius.options[i].selected = (defaultRadius == lstRadius.options[i].value);
                }
             }
         }  
     } 
   } 
}
//Start for Refine Search Widget(SearchResults page)
function CloseFeatureDivs(item)
{
	var x = 1;
	
	for (x=1; x<3; x++)
	{
		var objDiv = document.getElementById("divFeatures" + x);
		var objBtn = document.getElementById(document.getElementById("btnFeatures" + x).value);

		if (x != item)
		{
			objDiv.style.display = "";
			objBtn.src = objBtn.src.replace("Open", "Closed");
		}
	}
}

function toggleFeatures(obj)
{
	ClearWarningMessage();
	
	if(obj.id == document.getElementById("btnFeatures1").value)
	{
		CloseFeatureDivs(1);
	    var objFeatures = document.getElementById("divFeatures1");
    }
	else if(obj.id == document.getElementById("btnFeatures2").value)
	{
		CloseFeatureDivs(2);
	    var objFeatures = document.getElementById("divFeatures2");
	}

	if(objFeatures != null)
	{
		var imgUrl = obj.src;
		
		if(objFeatures.style.display == "block")
		{
			objFeatures.style.display = "";
			if(window.event) // IE
    			document.getElementById("refineDiv").style.height = "600px";
            else // Netscape/Firefox/Opera
    			document.getElementById("refineDiv").style.height = "500px";

			obj.src = imgUrl.replace("Open", "Closed");
		}
		else
		{
			objFeatures.style.display = "block";
			if(window.event) // IE
    			document.getElementById("refineDiv").style.height = "860px";
            else // Netscape/Firefox/Opera
    			document.getElementById("refineDiv").style.height = "760px";
    			
			obj.src = imgUrl.replace("Closed", "Open");
		}
	}
	
	return false;
}

function ValidateAndLog(){
	ClearWarningMessage();
	var isValid = Validate();
	if(isValid){
		//log webtrends event for refine search widget
		LogRefineSearchSelection();
	}
	return isValid;
}

function LogRefineSearchSelection()
{
	//get all selected features
	var selfeatures = '';
	var chklApartmentFeatures = document.getElementById(document.getElementById("chklApartmentFeatures").value);
	var chklCommunityFeatures = document.getElementById(document.getElementById("chklCommunityFeatures").value);
	var chklPopular = document.getElementById(document.getElementById("chklPopular").value);
	
	if(chklApartmentFeatures != null)
		selfeatures += GetSelectedElements(chklApartmentFeatures);
	if(chklCommunityFeatures != null)
		selfeatures += GetSelectedElements(chklCommunityFeatures);
	if(chklPopular != null)
		selfeatures += GetSelectedElements(chklPopular);
	
	//get Prices
	var oPriceLow = document.getElementById(document.getElementById("lstPriceFrom").value);
	var priceLow = oPriceLow.options[oPriceLow.selectedIndex].value;
	var oPriceHi = document.getElementById(document.getElementById("lstPriceTo").value);
	var priceHi = oPriceHi.options[oPriceHi.selectedIndex].value;
	var priceRange = priceLow + '-' + priceHi;
	
	//Get Beds
	var oBeds = document.getElementById(document.getElementById("lstBedrooms").value);
	var beds = oBeds.options[oBeds.selectedIndex].text;
	
	//GetBath
	var oBath = document.getElementById(document.getElementById("lstBaths").value);
	var bath = oBath.options[oBath.selectedIndex].text;
	
	//Build Key Value pair string for WenTrends logging
	var kvp='';
	if(msLisingType != '')
		kvp ="'DCSext.MultiSearchListingType', '" + msLisingType +"',";
	if(msState != '')
		kvp +="'DCSext.MultiSearchState', '" + msState +"',";
	if(msCity != '')
		kvp +="'DCSext.MultiSearchCity', '" + msCity +"',";
	if(msZip != '')
		kvp +="'DCSext.MultiSearchZip', '" + msZip +"',";
	if(priceRange != '')
		kvp +="'DCSext.MultiSearchPrice', '" + priceRange +"',";
	if(beds != '')
		kvp +="'DCSext.MultiSearchBeds', '" + beds +"',";
	if(bath != '')
		kvp +="'DCSext.MultiSearchBaths', '" + bath +"',";
	if(selfeatures != '')
		kvp +="'DCSext.MultiSearchFeatures', '" + selfeatures +"',";
	
	if(kvp.lastIndexOf(',')==kvp.length-1)
		kvp=kvp.substring(0,kvp.length-1);
		
	eval("dcsMultiTrackCsiEvent('DCS.dcsuri', '/AdvanceFeatures.aspx', " + kvp + ")");
}

function GetSelectedElements(obj){
	var selectedElements = '';
	var arrayOfCheckBoxes = obj.getElementsByTagName("input");
	
	for(counter = 0; counter<arrayOfCheckBoxes.length; counter++)
	{
		if (arrayOfCheckBoxes[counter].checked)
			if(arrayOfCheckBoxes[counter].nextSibling.tagName == "LABEL")
				selectedElements += arrayOfCheckBoxes[counter].nextSibling.innerHTML + ";";
	}
	
	return selectedElements
}


