﻿var PageCtrl = null;
var PropertyTypes = null;
var FavoriteAreas = null;
var MostSearchAreas = null;
var CurrentSearchPanel = 0;
var CurrentSelectArea = "";

function InitializePageControls(fields, tab)
{
    var creator = new ObjectCreator();
    PageCtrl = creator.Load(document.getElementById(fields).value);
    
    var fieldLoader = new PageFieldLoader();
    fieldLoader.Load(PageCtrl);
    
    FavoriteAreas = creator.Load(PageCtrl.FieldFavorite.value);
    MostSearchAreas = creator.Load(PageCtrl.FieldMostSearch.value);
    PropertyTypes = creator.Load(PageCtrl.FieldPropertyTypes.value);
    
    LoadPropertyTypes();
    SelectTransTypeItem();
    SelectSearchPanel((tab == 0) ? 0 : 1);
}

function SelectSearchPanel(tab)
{
    if (tab == 0)
    {
        PageCtrl.PanelQuick.style.display = "block";
        PageCtrl.ButtonQuick.style.display = "block";
        PageCtrl.PanelAdvanced.style.display = "none";
        PageCtrl.ButtonAdvanced.style.display = "none";
        AttachAddressFieldEvent(PageCtrl.TextQuickAddress);
    }
    else
    {
        PageCtrl.PanelQuick.style.display = "none";
        PageCtrl.ButtonQuick.style.display = "none";
        PageCtrl.PanelAdvanced.style.display = "block";
        PageCtrl.ButtonAdvanced.style.display = "block";
        AttachAddressFieldEvent(PageCtrl.TextAdvancedAddress);
    }

    HideLocationPicker();
    CurrentSearchPanel = tab;
    LoadMostSearchAreas(true);
}

function RealtorSearch(e, area, role, name)
{
    var keynum;
    
    if(e != null && e.which)
    {
        keynum = e.which;
    }
    else if(e != null && window.event)
    {
        keynum = e.keyCode;
    }
    if (e != null && keynum != 13 && keynum != 0)
    {
        return true;
    }

    var mask = "Enter REALTOR® Last Name";
    
    var location = document.getElementById(area).value;
    var realtor = document.getElementById(name).value;
    var specialization = document.getElementById(role).value;

    var url = "http://realtors.clslink.ca/page/realtors/ezlist_members";

    if (specialization == '1048320')
    {
        if (realtor.length > 0 && realtor != mask) url = url + "_lastname=" + realtor;
        if (location.length > 0) url = url + "_board=" + location;
        url = url + "_spec=" + specialization + ".aspx";
    }
    else
    {
        if (realtor.length > 0 && realtor != mask) url = url + "_lastname=" + realtor;
        if (location.length > 0) url = url + "_board=" + location;
        url = url + ".aspx";
    }
    
    window.location.href = url;

    return false;
}

function AddressSearch(e, address, ptype, ttype, watermark)
{
    var keynum;
    
    if(e != null && e.which)
    {
        keynum = e.which;
    }
    else if(e != null && window.event)
    {
        keynum = e.keyCode;
    }

    if (keynum != 13 && keynum != 0 && e != null)
    {
        return true;
    }

    var location = document.getElementById(address).value;
    
    if (location == null || location.length == 0 || location == watermark)
    {
        var info = "Please enter the city or address or postal code.";
        ShowMessageBox(document.getElementById(address), info, 'left');
        return false;
    }
    
    var link = "Services/PropertySearch.aspx?address=" + location;
    
    var field = document.getElementById(ptype);
    link = link + "&ptype=" + field[field.selectedIndex].value;
    
    field = document.getElementById(ttype)
    link = link + "&ttype=" + field[field.selectedIndex].value;
    
    window.location.href = link;
    
    return false;
}

function LoadFavoriteAreas()
{
    var result = "";
    var total = (FavoriteAreas != null) ? FavoriteAreas.length : 0;
    
    for (var i = 0; i < total; i++)
    {
        var n = FavoriteAreas[i].Name;
        var v = FavoriteAreas[i].Value;
        result += ("<a href='javascript:LocationSearch(" + v + ")'>" + n + "</a><br/>");
    }
    
    PageCtrl.PanelFavoriteQuick.innerHTML = result;
    PageCtrl.PanelFavoriteAdvanced.innerHTML = result;
}

function LoadMostSearchAreas(vertical)
{
    var leftpan = "";
    var rightpan = "";
    var favorite = "";

    var field = null;
    if (CurrentSearchPanel == 0) 
    {
        field = PageCtrl.SelectAreasQuick;
    }
    else
    {
        field = PageCtrl.SelectAreasAdvanced;
    }
    var selIndex = field.selectedIndex;
    
    var item = MostSearchAreas[selIndex];
    if (selIndex == 0)
    {
        LoadFavoriteAreas();
        PageCtrl.LabelMostQuick.innerHTML = "Most Searched:";
        PageCtrl.LabelMostAdvanced.innerHTML = "Most Searched:";
    }
    else
    {
        PageCtrl.LabelMostQuick.innerHTML = "";
        PageCtrl.LabelMostAdvanced.innerHTML = "";
    }
    
    if (CurrentSearchPanel == 0)
    {
        PageCtrl.LabelTitleQuick.innerHTML = item.Title;
    }
    else
    {
        PageCtrl.LabelTitleAdvanced.innerHTML = item.Title;
    }
    
    var total = item.Areas.length;
    var column = (selIndex == 0) ? 2 : 3;
    var cnumber = parseInt(total / column + 0.5);
    
    for (var i = 0; i < total; i++)
    {
        var n = item.Areas[i].Name;
        var v = item.Areas[i].Value;
        var func = "javascript:LocationSearch(" + v + ")";
        var current = "<a href='" + func + "'>" + n + "</a><br/>";
        
        if (!vertical)
        {
            if (i % column == 0) leftpan += current;
            else if (i % column == 1) rightpan += current;
            else favorite += current;
        }
        else
        {
            if (i < cnumber) leftpan += current;
            else if (i < 2 * cnumber) rightpan += current;
            else favorite += current;
        }
    }
    
    if (CurrentSearchPanel == 0)
    {
        PageCtrl.PanelAreaLeftQuick.innerHTML = leftpan;
        PageCtrl.PanelAreaRightQuick.innerHTML = rightpan;
    }
    else
    {
        PageCtrl.PanelAreaLeftAdvanced.innerHTML = leftpan;
        PageCtrl.PanelAreaRightAdvanced.innerHTML = rightpan;
    }
    
    if (CurrentSearchPanel == 0 && selIndex != 0)
    {
        PageCtrl.PanelFavoriteQuick.innerHTML = favorite;
    }
    else if (CurrentSearchPanel != 0 && selIndex != 0)
    {
        PageCtrl.PanelFavoriteAdvanced.innerHTML = favorite;
    }
}

function LocationSearch(area)
{
    if (CurrentSearchPanel != 0)
    {
        CurrentSelectArea = area;
        ExecutePropertySearch(null);
    }
    else
    {
        var ttype = "0";
        var options = document.getElementsByName("RadioTransTypes");
        
        for (i = 0; i < options.length; i++)
        {
            if (options[i].checked)
            {
                ttype = options[i].value;
                break;
            }
        }
        window.location.href = "Services/PropertySearch.aspx?area=" + area + "&ttype=" + ttype;
    }
}

function LoadPropertyTypes()
{
    var number = (PropertyTypes != null) ? PropertyTypes.length : 0;
    
    for (var i = 0; i < number; i++)
    {
        var item = document.createElement("option");
        item.text = PropertyTypes[i].Name;
        item.value = PropertyTypes[i].Value;
        PageCtrl.SelectMainType.options.add(item);
    }
    
    if (number > 0)
    {
        PageCtrl.SelectMainType.selectedIndex = 0;
        SelectMainType();
    }
}

function SelectTransTypeItem()
{
    var index = PageCtrl.SelectTransactionType.selectedIndex;
    var value = PageCtrl.SelectTransactionType.options[index].value;

    var label = document.getElementById('FieldTransLabel');
    var info = document.getElementById('FieldTransRateInfo');
    
    if (value == 0)
    {
        info.innerHTML = "";
        label.innerHTML = "Price / Lease Rate Range:";
    }
    else if (value == 1)
    {
        info.innerHTML = "";
        label.innerHTML = "Price Range:";
    }
    else
    {
        label.innerHTML = "Lease Rate Range:";
        info.innerHTML = "$ per square foot per annum";
    }
}

function SelectMainType()
{
    var index = PageCtrl.SelectMainType.selectedIndex;
    
    PageCtrl.SelectSubType.selectedIndex = -1; 
    PageCtrl.SelectSubType.options.length = 0;
    
    var type = PropertyTypes[index];
    var subtypes = type.SubTypes;
    var number = (subtypes != null) ? subtypes.length : 0;
    
    for (var i = 0; i < number; i++)
    {
        var item = document.createElement("option");
        item.text = subtypes[i].Name;
        item.value = subtypes[i].Value;
        PageCtrl.SelectSubType.options.add(item);
    }
    
    if (number > 0)
    {
        PageCtrl.SelectSubType.selectedIndex = 0;
    }
}

function ShowLocationPicker()
{
    if (PageCtrl.AdvancedLocationPicker.style.display != "none")
    {
        HideLocationPicker();
    }
    else
    {
        PageCtrl.AdvancedLocationPicker.style.display = "block";
    }
}

function HideLocationPicker()
{
    PageCtrl.AdvancedLocationPicker.style.display = "none";
}

function ValidAddressCriteria()
{
    var watermark = "Enter City or Address or Postal Code";
    var value = PageCtrl.TextAdvancedAddress.value;

    return (value.length != 0  && value != watermark)
}

function InvokeKeyEvent(e)
{
    var keyval = (e.which) ? e.which : event.keyCode
    
    return !(keyval > 31 && (keyval < 48 || keyval > 57)) && (keyval != 13);
}

function ExecutePropertySearch(e)
{
    var keynum;
    
    if(e != null && e.which)
    {
        keynum = e.which;
    }
    else if(e != null && window.event)
    {
        keynum = e.keyCode;
    }
    
    if (e != null && keynum != 13 && keynum != 0)
    {
        return true;
    }
    var url = "";
    var page = "Services/PropertySearch.aspx";
    
    if (CurrentSelectArea.length == 0 && !ValidAddressCriteria())
    {
        var info = "Please enter the city or address or postal code."
        ShowMessageBox(PageCtrl.TextAdvancedAddress, info, 'bottom');
        return false;
    }
    
    if (CurrentSelectArea.length == 0)
    {
        url = "?address=" + PageCtrl.TextAdvancedAddress.value;
    }
    else
    {
        url = "?area=" + CurrentSelectArea;
    }

    var mindex = PageCtrl.SelectMainType.selectedIndex;
    var sindex = PageCtrl.SelectSubType.selectedIndex;
    
    var ptypes = "&ptype=" + PageCtrl.SelectMainType.options[mindex].value;
    var subtype = (sindex >= 0) ? PageCtrl.SelectSubType.options[sindex].value : "";

    url = url + ptypes + "-" + subtype;

    var nval = PageCtrl.TextMinSize.value;
    url = url + "&lsize=" + ((nval == "any" || nval.length == 0) ? "-1" : nval);
    nval = PageCtrl.TextMaxSize.value;
    url = url + "&rsize=" + ((nval == "any" || nval.length == 0) ? "-1" : nval);

    nval = PageCtrl.TextMinRate.value;
    url = url + "&lrate=" + ((nval == "any" || nval.length == 0) ? "-1" : nval);
    nval = PageCtrl.TextMaxRate.value;
    url = url + "&rrate=" + ((nval == "any" || nval.length == 0) ? "-1" : nval);
    
    var ttype =  PageCtrl.SelectTransactionType.selectedIndex;
    url = url + "&ttype=" + PageCtrl.SelectTransactionType.options[ttype].value;
    
    window.location.href = page + url;
    
    return false;
}

function ExecStaticSearch()
{
    window.location.href = "http://classic.clslink.ca/clslink/propertysearch2/areaselect.cfm";
}
