﻿var hdnPropertyType;
var ddlPropertyType;

var hdnPropertySubType;
var ddlPropertySubType;

var radBuy;
var radRentST;
var radRentLT;

var includedTypes;

var divPropertySubType;

function InitPropertyTypeScript(initradBuy, initradRentST, initradRentLT, inithdnPropertyType, inithdnPropertySubType, incTypes) {

    ddlPropertyType = document.getElementById('ddlPropertyType');
    ddlPropertySubType = document.getElementById('ddlPropertySubType');
    divPropertySubType = document.getElementById('divSubType');
    hdnPropertyType = inithdnPropertyType;
    hdnPropertySubType = inithdnPropertySubType;

    radBuy = initradBuy;
    radRentST = initradRentST;
    radRentLT = initradRentLT;

    includedTypes = incTypes;
}

function UpdatePropertyTypeList() {

    var selectedType = null;

    if (ddlPropertyType.options.length > 0) {
        selectedType = ddlPropertyType.options[ddlPropertyType.selectedIndex].value;
    }

    var propertyTypes = GetPropertyTypes();

    var newIndexToSelect = -1;
    var houseIndex = -1;
    var allIndex = -1;
    var allResIndex = -1;

    $(ddlPropertyType).empty();
    var listCounter = 0; // this keeps track of the index in the drop down
                         // of the items being added. they wont corresspond
                         // to array indices in the case of RENT

    //alert(includedTypes);

    for (i = 0; i < propertyTypes.length; i++) {
        if (includedTypes == null || includedTypes.length == 0 || includedTypes.search(propertyTypes[i]['text']) != -1) {

            // this logic deals with the user selecting rent and displaying fewer options in the ddl
            if (
            radBuy.checked == true
            ||
            (
                radRentLT.checked == true &&
                (
                    propertyTypes[i]['text'] == 'House' ||
                    propertyTypes[i]['text'] == 'Apartment' ||
                    propertyTypes[i]['text'] == 'All Residential' ||
                    propertyTypes[i]['text'] == 'Commercial'
                )
            )
            ||
            (
                radRentST.checked == true &&
                (
                    propertyTypes[i]['text'] == 'House' ||
                    propertyTypes[i]['text'] == 'Apartment'||
                    propertyTypes[i]['text'] == 'All Residential' 
                )
            )
            ) {

                if (radBuy.checked == true && i == 2) {
                    //TODO
                    // add horizontal separator - &mdash;
                    // not done yet because it will mean adding validation etc.

                }

                var o = document.createElement('option');
                o.text = propertyTypes[i]['text'];
                o.value = propertyTypes[i]['value'];

                if (o.value == selectedType) {
                    newIndexToSelect = listCounter;
                }

                if (o.text == 'House') {
                    houseIndex = listCounter;
                }
                if (o.text == 'All') {
                    allIndex = listCounter;
                }
                if (o.text == 'All Residential') {
                    allResIndex = listCounter;
                }
                

                try {
                    ddlPropertyType.add(o, null); // standards compliant; doesn't work in IE
                }
                catch (ex) {
                    ddlPropertyType.add(o); // IE only
                }

                listCounter++;
            }
        }
    }
   
    if (newIndexToSelect > -1) {
        ddlPropertyType.selectedIndex = newIndexToSelect;
        hdnPropertyType.value = ddlPropertyType.options[newIndexToSelect].value;
    }
    else {
        if (allIndex != -1) {
            ddlPropertyType.selectedIndex = allIndex;  //All
            hdnPropertyType.value = ddlPropertyType.options[allIndex].value;
        }
        else if (allResIndex != -1){
            ddlPropertyType.selectedIndex = allResIndex;  //House
            hdnPropertyType.value = ddlPropertyType.options[allResIndex].value;
        }
        else {
            ddlPropertyType.selectedIndex = houseIndex;  //House
            hdnPropertyType.value = ddlPropertyType.options[houseIndex].value;
        }


    }

    if (ddlPropertySubType != null) {
        
        UpdateSubTypeList();
        
    }
    
}

function StoreSelectedSubType() {
    var selectedSubType = null;

    if (ddlPropertySubType.options.length > 0) {
        selectedSubType = ddlPropertySubType.options[ddlPropertySubType.selectedIndex].value;
    }

    hdnPropertySubType.value = selectedSubType;

    
}

function StorePropertyType() {
    var selectedType = null;

    if (ddlPropertyType.options.length > 0) {
        selectedType = ddlPropertyType.options[ddlPropertyType.selectedIndex].value;
    }

    hdnPropertyType.value = selectedType;
    selectedPriceChanged();
}

function UpdateSubTypeList() {
    StorePropertyType();
    var selectedType = null;

    if (ddlPropertyType.options.length > 0) {
        selectedType = ddlPropertyType.options[ddlPropertyType.selectedIndex].value;
    }

    var selectedSubType = null;

    if (ddlPropertySubType.options.length > 0) {
        selectedSubType = ddlPropertySubType.options[ddlPropertySubType.selectedIndex].value;
    }

    var propertyTypes = GetPropertyTypes();

    var propertySubTypes = null;

   
    for (i = 0; i < propertyTypes.length; i++) {
        if (propertyTypes[i]['value'] == selectedType) {
            propertySubTypes = propertyTypes[i]['sub-types'];
        }
    }
    
    if (propertySubTypes == null || propertySubTypes.length < 1) {
        $(divPropertySubType).hide(0);
        hdnPropertySubType.value = '';
    }
    else {
        
        var newIndexToSelect = -1;

        $(ddlPropertySubType).empty();

        var oAll = document.createElement('option');
        oAll.text = 'All';
        oAll.value = '';

        try {
            ddlPropertySubType.add(oAll, null); // standards compliant; doesn't work in IE
        }
        catch (ex) {
            ddlPropertySubType.add(oAll); // IE only
        }

        for (i = 0; i < propertySubTypes.length; i++) {
        
            var o = document.createElement('option');
            o.text = propertySubTypes[i].split('|')[1];
            o.value = propertySubTypes[i].split('|')[0];

            if (o.value == selectedSubType) {
                newIndexToSelect = i + 1;
            }

            try {
                ddlPropertySubType.add(o, null); // standards compliant; doesn't work in IE
            }
            catch (ex) {
                ddlPropertySubType.add(o); // IE only
            }
            
        }

        if (newIndexToSelect > -1) {
            ddlPropertySubType.selectedIndex = newIndexToSelect;
            hdnPropertySubType.value = ddlPropertySubType.options[newIndexToSelect].value;
        }
        else {
            ddlPropertySubType.selectedIndex = 0;  //All
            hdnPropertySubType.value = '';
        }
        //$(divPropertySubType).css('display', 'block');
        $(divPropertySubType).show(0);
        StoreSelectedSubType();
    }
}
