﻿// setup input id variables for convenience
var ddPropertyType = "#ctl00_cphMain_ddPropertyType";
var ddMinPrice = "#ctl00_cphMain_ddMinPrice";
var ddMaxPrice = "#ctl00_cphMain_ddMaxPrice";
var ddBeds = "#ctl00_cphMain_ddBeds";
var ddBaths = "#ctl00_cphMain_ddBaths";
var ddUnits = "#ctl00_cphMain_ddUnits";
var ddCounty = "#ctl00_cphMain_ddCounty";
var ddCity = "#ctl00_cphMain_ddCity";
var MoreOptionsDiv = "#ctl00_cphMain_MoreOptions";
var txtZip = "#ctl00_cphMain_txtZip";
var txtStreet = "#ctl00_cphMain_txtStreet";
var txtSubdivision = "#ctl00_cphMain_txtSubdivision";
var txtCondominium = "#ctl00_cphMain_txtCondominium";
var txtMLS = "#ctl00_cphMain_txtMLS";
var ddSchoolDistrict = "#ctl00_cphMain_ddSchoolDistrict";
var ddResultsPerPage = "#ctl00_cphMain_ddResultsPerPage";
var searchName = "#ctl00_cphMain_txtSearchName";

// arrays for price dropdowns
var priceVal = ["25000", "50000", "100000", "150000", "200000", "250000", "300000", "400000", "500000", "1000000"];
var priceTxt = ["$25,000", "$50,000", "$100,000", "$150,000", "$200,000", "$250,000", "$300,000", "$400,000", "$500,000", "$1,000,000"];

// default values
var resultsPerPage = 10;
var SortOrder = "Price";
var SortDir = "asc";
var options = "less";
var view = "list";

// set search parameters to default
var _zip = "", _street = "", _subdiv = "", _condo = "", _category = 1, _priceMin = 0, _priceMax = 999999999, _beds = 0, _baths = 0, _county = "", _city = "", _school = "", _units = 0;
var _firstName = "", _lastName = "", _email = "", _listingStatus = "2", _listingCompany = "", _description = "", _mls = "";

// update dropdowns when category changes
function onCategoryChange() {
    var cat = $(ddPropertyType + " option:selected").val();

    // show/hide subdivision & school district
    if (cat != "1" && cat != "2" && cat != "3") {
        $("#Subdivision").css("display", "none");
        $("#Subdivision").val("");
        $("#SchoolDistrict").css("display", "none");
        $("#SchoolDistrict").val("");
    }
    else {
        $("#Subdivision").css("display", "block");
        $("#SchoolDistrict").css("display", "block");
    }

    // show/hide condominium name
    if (cat == "6") {
        $("#CondominiumName").css("display", "block");
    }
    else {
        $("#CondominiumName").css("display", "none");
        $("#CondominiumName").val("");
    }

    // show/hide units
    if (cat == "4" || cat == "6") {
        $("#Units").css("display", "block");
    }
    else {
        $("#Units").css("display", "none");
        $("#Units").val("0");
    }

    // show/hide bed & bath
    if (cat == "3" || cat == "5" || cat == "7") {
        $("#Bedrooms").css("display", "none");
        $("#Bedrooms").val("0");
        $("#Bathrooms").css("display", "none");
        $("#Bathrooms").val("0");
    }
    else {
        $("#Bedrooms").css("display", "block");
        $("#Bathrooms").css("display", "block");
    }
}

// Set sesion values for search parameters & map/list view
function SetCookies() {
    // have cookies expire in 7 days
    var exp = 7;
    // only set cookies if values aren't default
    UpdateCookie("view", view, "map", exp)
    UpdateCookie("resultsPerPage", resultsPerPage, 10, exp);
    UpdateCookie("category", _category, -1, exp);
    UpdateCookie("priceMin", _priceMin, 0, exp);
    UpdateCookie("priceMax", _priceMax, 999999999, exp);
    UpdateCookie("beds", _beds, 0, exp);
    UpdateCookie("baths", _baths, 0, exp);
    UpdateCookie("county", _county, "", exp);
    UpdateCookie("city", _city, "", exp);
    UpdateCookie("mls", _mls, "", exp);
    UpdateCookie("zip", _zip, "", exp);
    UpdateCookie("street", _street, "", exp);
    UpdateCookie("subdiv", _subdiv, "", exp);
    UpdateCookie("school", _school, "", exp);
    UpdateCookie("condo", _condo, "", exp);
    UpdateCookie("units", _units, 0, exp);
    UpdateCookie("sortOrder", SortOrder, "Price", exp);
    UpdateCookie("sortDir", SortDir, "asc", exp);
    UpdateCookie("firstName", _firstName, "", exp);
    UpdateCookie("lastName", _lastName, "", exp);
    UpdateCookie("email", _email, "", exp);
    UpdateCookie("listingStatus", _listingStatus, "2", exp);
    UpdateCookie("listingCompany", _listingCompany, "", exp);
    UpdateCookie("description", _description, "", exp);
    UpdateCookie("options", options, "less", exp);
}

function UpdateCookie(key, val, def, exp) {
    if (val != def)
        SetCookie(key, val, exp);
    else
        ClearCookie(key);
}

// Set cookie
function SetCookie(name, value, expOffset) {
    var cookieExp = new Date();
    cookieExp.setDate(cookieExp.getDate() + expOffset);
    document.cookie = name + "=" + value + "; expires=" + cookieExp + "path=/";
}

// Clear cookie
function ClearCookie(name) {
    var cookieExp = new Date();
    cookieExp.setDate(cookieExp.getDate() - 1);
    document.cookie = name + "=; expires=" + cookieExp + "path=/";
}

// read the specified cookie
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;
}

// update city & schooldistrict dropdowns when county selection changes
function onCountyChange() {
    var county = $(ddCounty + " option:selected").val();
    var category = $(ddPropertyType + " option:selected").val();
    var city = $(ddCity + " option:selected").val();
    // update cities
    EliteProp.MapService.UpdateCities(county, updateCities, onFailure);
    // update school districts
    EliteProp.MapService.UpdateSchoolDistricts(county, updateSchoolDistricts, onFailure);
}

// update city dropdown
function updateCities(newCities) {
    var selectedCity = $(ddCity + " option:selected").val();
    var selectedIndex = 0;

    // clear options except default
    $(ddCity + " option").each(function (i) { if (i > 0) $(ddCity + " option:last").remove(); });
    // add in all valid options
    $(newCities).each(function (i, v) {
        $(ddCity).append('<option value="' + v + '">' + v + '</option>');
    });

    // reset selected max value
    $(ddCity).val(selectedCity);
}

// update school districts
function updateSchoolDistricts(newSchools) {
    // clear options except default
    $(ddSchoolDistrict + " option").each(function (i) { if (i > 0) $(ddSchoolDistrict + " option:last").remove(); });
    // add in all valid options
    $(newSchools).each(function (i, v) {
        $(ddSchoolDistrict).append('<option value="' + v.SchoolDistrictName + '">' + v.SchoolDistrictName + '</option>');
    });
}

// show more search options
function MoreOptions() {
    $("#Divider").html("<a href=\"javascript:LessOptions();\" onclick=\"LessOptions();\">&lt;&lt; Less Options</a>");
    $(MoreOptionsDiv).css("display", "block");
    options = "more";
}

// hide advanced search options
function LessOptions() {
    $("#Divider").html("<a href=\"javascript:MoreOptions();\" onclick=\"MoreOptions();\">More Options &gt;&gt;</a>");
    $(MoreOptionsDiv).css("display", "none");
    options = "less";
}

// open map help window
function MapHelp() { window.open('Map_Help.htm', 'Help', 'width=420,height=600,resizable=yes,scrollbars=yes'); }

// set options to more or less
function SetOptions() {
    // load options
    if (ReadCookie("options") != null) {
        options = ReadCookie("options");
        if (options == "more") 
            MoreOptions();
        if (options == "less") 
            LessOptions();
    }
}

function onMinPriceChange() {
    var value = $(ddMinPrice + " option:selected").val()/1;
    var maxValue = $(ddMaxPrice + " option:selected").val()/1;

    // remove all options but default
    $(ddMaxPrice + " option").each(function (i) { if (i > 0) $(ddMaxPrice + " option:last").remove(); });
    // add in all valid options
    $(priceVal).each(function (i) {
        if (priceVal[i]/1 >= value)
            $(ddMaxPrice).append('<option value="' + priceVal[i] + '">' + priceTxt[i] + '</option>');
    });

    // reset selected max value
    $(ddMaxPrice).val(maxValue);
}

function onMaxPriceChange() {
    var value = $(ddMaxPrice + " option:selected").val() / 1;
    var minValue = $(ddMinPrice + " option:selected").val() / 1;

    // remove all options but default
    $(ddMinPrice + " option").each(function (i) { if (i > 0) $(ddMinPrice + " option:last").remove(); });
    // add in all valid options
    $(priceVal).each(function (i) {
        if (priceVal[i] / 1 <= value) 
            $(ddMinPrice).append('<option value="' + priceVal[i] + '">' + priceTxt[i] + '</option>');
    });

    // reset selected max value
    $(ddMinPrice).val(minValue);
}

function SaveSearch() {
    // check if user has a saved search with searchName already
    EliteProp.MapService.CheckSearchName($(searchName).val(), onNameCheckComplete, onFailure);
}

function onNameCheckComplete(nameExists) {
    if (nameExists) {
        // confirm replacement before saving
        if (confirm("A saved search called '" + $(searchName).val() + "' already exists. Would you like to replace it with this search?")) 
            DoSearchSave();
    }
    else
        DoSearchSave(); 
}

function DoSearchSave() {
    // update search values
    var autoElite = $("#ctl00_cphMain_chkElite").attr("checked");
    var autoLW = $("#ctl00_cphMain_chkListWisconsin").attr("checked");
    // update search variables
    UpdateValues();
    // save search
    EliteProp.MapService.SaveSearch(_street, autoElite, autoLW, _baths, _beds, _city, _condo, _county, _category,
        _priceMax, _priceMin, _school, $(searchName).val(), _subdiv, _units, _zip, _firstName, _lastName, _email, 
        _listingStatus, _listingCompany, _description, SavedSearchResult, onFailure);
}

function SavedSearchResult(success) {
    if (!success) { document.location.href = "Login.aspx?ReturnUrl=%2fPropertySearch.aspx" }
}

function lnkSaveSearch_Click() {
    var defaultName = $(ddPropertyType + " option:selected").text();
    if ($(txtZip).val() != "") 
        defaultName += " " + $(txtZip).val();
    else if ($(ddCity + " option:selected").text() != "") 
        defaultName += " " + $(ddCity + " option:selected").text();
    else if ($(ddCounty + " option:selected").text() != "") 
        defaultName += " " + $(ddCounty + " option:selected").text() + " County";

    $(searchName).val(defaultName);
}

function CheckLoggedIn(loggedIn) {
    if (!loggedIn) {
        $("#tblSaveSearchError").css("display", "block");
        $("#tblSaveSearch").css("display", "none");
        $("#ctl00_cphMain_btnSave").css("display", "none");
    }
    else {
        $("#tblSaveSearchError").css("display", "none");
        $("#tblSaveSearch").css("display", "block");
        $("#ctl00_cphMain_btnSave").css("display", "block");
    }
}

// update search variables
function UpdateValues() {
    _category = $(ddPropertyType + " option:selected").val();
    _priceMin = $(ddMinPrice + " option:selected").val();
    _priceMax = $(ddMaxPrice + " option:selected").val();
    _beds = $(ddBeds + " option:selected").val();
    _baths = $(ddBaths + " option:selected").val();
    _county = $(ddCounty + " option:selected").val();
    _city = $(ddCity + " option:selected").val();
    _units = $(ddUnits + " option:selected").val();
    _mls = $(txtMLS).val();
    if (options == "more") {
        _zip = $(txtZip).val();
        _street = $(txtStreet).val();
        _subdiv = $(txtSubdivision).val();
        _school = $(ddSchoolDistrict + " option:selected").val();
        _condo = $(txtCondominium).val();
        if ($("#ctl00_cphMain_divAdmin").length) {
            _firstName = $("#ctl00_cphMain_txtFirstName").val();
            _lastName = $("#ctl00_cphMain_txtLastName").val();
            _email = $("#ctl00_cphMain_txtEmail").val();
            _listingStatus = $("#ctl00_cphMain_ddListingStatus").val();
            _listingCompany = $("#ctl00_cphMain_ddlListingCompany").val();
            _description = $("#ctl00_cphMain_txtDescription").val();
        }
    }
    else {
        _zip = _street = _subdiv = _school = _condo = _firstName = _lastName = _email = _listingCompany = _description = "";
        _listingStatus = "2";
    }
}

// get requested query string variable
function Query(variable) {
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        if (pair[0] == variable)
            return pair[1];
    }
    return false
}

// load page in correct mode
function PageMode() {
    if (Query("mode") == "advanced")
            MoreOptions();
}

// remove map-related cookies
function ClearMapCookies() {
    ClearCookie("seLat");
    ClearCookie("seLng");
    ClearCookie("nwLat");
    ClearCookie("nwLng");
    ClearCookie("centerLat");
    ClearCookie("centerLng");
    ClearCookie("mapZoom");
}
