﻿//function starts process to populate the city drop down list
function StateDropDown_OnChange(ddlStateId) {
    var ddlStateValue = getSelectedItemInDropDownList(ddlStateId);
    if (ddlStateValue != "0" && ddlStateValue != "-1" && ddlStateValue != undefined) {
        getCities(ddlStateValue);
    }
    else setDefaultForCityDropDown();
}
function btnSubmit_Click() {
    toggleVisibility("searchResults", "loadingResults");
    
    var ddlStateId = getStateDropDownId();
    var ddlRealEstateTypeId = getRealEstateTypeId();
    var ddlRealEstateId = getRealEstateId();
    var ddlCityId = getCityDropDownId();

    var ddlStateValue = getSelectedItemInDropDownList(ddlStateId);
    var ddlCityValue = getSelectedItemInDropDownList(ddlCityId);
    var ddlRealEstateValue = getSelectedItemInDropDownList(ddlRealEstateId);
    var ddlRealEstateTypeValue = getSelectedItemInDropDownList(ddlRealEstateTypeId);

    var dataString = "{ddlRealEstateTypeValue: '" + ddlRealEstateTypeValue + "', ddlRealEstateValue: '" + ddlRealEstateValue + "', ddlStateValue: '" + ddlStateValue + "', ddlCityValue: '" + ddlCityValue + "'}";
    getSearchResultHtml(dataString);
}
//AJAX calls
    //Call to PageMethod to get the city data
    function getCities(ddlStateValue) {
        $.ajax({
            type: "POST",
            url: "../PropertyListing/Search.aspx/GetCityListing",
            data: "{'ddlStateValue': '" + ddlStateValue + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
                var response = msg.d;
                populateCityDropDown(response);
            },
            error: function(msg) {
                alert(msg.d);
            }
        });
    }
    function getSearchResultHtml(dataString) {
        $.ajax({
            type: "POST",
            url: "../PropertyListing/Search.aspx/GetPropertyListingInformation",
            data: dataString,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
                var response = msg.d;
                addResultsHtmlToPage(response);
            },
            error: function(msg) {
                alert(msg.d);
            }
        });
    }
//Gets the city dropdown id
function getCityDropDownId() {
    var ddlCity = $(".jsCityDropDown");
    var cityId = ddlCity.attr("id");
    return cityId;
}
function getStateDropDownId(){
    return $(".jsState").attr("id");
}
function getRealEstateTypeId(){
    return $(".jsRealEstateType").attr("id");
}
//Gets the RealEstate dropdown id
function getRealEstateId() {
    return $(".jsRealEstate").attr("id");
}
//Sets the default values for the city dropdown list
function setDefaultForCityDropDown() {
    var id = getCityDropDownId();
    var defaultHtml = createOption("Select State", "Select State");

    clearDropDown(id);
    addDropDownItems(id, defaultHtml);
    disableElement(id);
}
//Does the work of populating the city dropdown list
function populateCityDropDown(cityHtml) {
    var cityId = getCityDropDownId();
    clearDropDown(cityId);
    if (cityHtml == "") {
        clearDropDown(cityId);
        cityHtml = createOption("Select State", "Select Valid State");
        addDropDownItems(cityId, cityHtml);
        disableElement(cityId);
    }
    else {
        clearDropDown(cityId);
        addDropDownItems(cityId, cityHtml);
        enableElement(cityId);
    }
}
//Add Search Results to the page.
function addResultsHtmlToPage(html) {
    if(html == "" || html == undefined) html = "<div class=\"Instructions\"><b>There are no properties that match your criteria.</b></div>";
    $("div#searchResults").html(html);
    toggleVisibility("loadingResults", "searchResults");        
}
//Filters out the real estate values by type
function filterRealEstateDDL(id) {
    var ddlRealEstateTypeValue = getSelectedItemInDropDownList(id);
    var ddlRealEstateId = getRealEstateId();

    if (ddlRealEstateTypeValue != "0" && ddlRealEstateTypeValue != "-1" && ddlRealEstateTypeValue != undefined) {
        var idsToShow = getOptionValuesFromTypeValue(ddlRealEstateTypeValue);
        toggleVisibilityForOptions(ddlRealEstateId, idsToShow);
    }
    else addAllOptions(ddlRealEstateId);
}
//Retrieves the realestate values and text from hidden label
function getOptionValuesFromTypeValue(typeValue) {
    var lblValue = $(".RealEstateType_" + typeValue + "").html();
    return lblValue.split("~ ");
}
//Adds back all the option items to the real estate drop down.
function addAllOptions(id) {
    var Values = $(".jsRealEstateTypeIds").html();
    var vArray = Values.split(" ");
    var html = "";
    html = html + getDefaultHtmlForRealEstate();
    for (var i = 0; i < vArray.length; i++) {
        var valueTextPairArray = getOptionValuesFromTypeValue(vArray[i]);
        for (var i = 0; i < valueTextPairArray.length; i++) {
            var valueTextPair = valueTextPairArray[i].split(":");
            var value = valueTextPair[0];
            var text = valueTextPair[1];
            html = html + createOption(value, text);
        }
    }
    addDropDownItems(id, html);
}
//Adds and removes relevant items
function toggleVisibilityForOptions(ddlId, idsToShow) {
    var numOfValues = idsToShow.length;
    var html = getDefaultHtmlForRealEstate();
    clearDropDown(ddlId)
    for (var i = 0; i < numOfValues; i++) {
        var valueTextPair = idsToShow[i].split(":");
        var value = valueTextPair[0];
        var text = valueTextPair[1];
        html = html + createOption(value, text);
    }
    addDropDownItems(ddlId, html);
}
//default values for RealEstate dropdownlist
function getDefaultHtmlForRealEstate() {
    var html = createOption("0", "Select Business Type");
    var html = html + createOption("-1", "All Business Types");
    return html;
}

