﻿var BiaAreas = null;
var MapService = null;
var PanelLinks = null;
var ContentLinks = null;
var TitleControl = null;
var ContentControl = null;
var PageTrackerIdent = null;

function Initialize(links, title, content, lpanel, psection, pitem, tracker)
{
    var creator = new ObjectCreator();
    ContentLinks = creator.Load(document.getElementById(links).value);
    
    PanelLinks = document.getElementById(lpanel);
    TitleControl = document.getElementById(title);
    ContentControl = document.getElementById(content);
    
    document.getElementById('MainContentPanel').style.display = "block";
    LoadMapControl();
    PageTrackerIdent = tracker;
    LoadContentPages(psection, pitem);
}

function LoadContentPages(psection, pitem)
{
    for (var i = 0; i < ContentLinks.length; i++)
    {
        var pages = ContentLinks[i].Pages;
        
        for (var k = 0; k < pages.length; k++)
        {
            var page = pages[k];
            var field = document.createElement('div');
            page.Field = field;

            field.className = "static_sellink";
            if (k != 0) field.innerHTML = "&#8226;  " + page.Title;
            else field.innerHTML = page.Title;
            
            PanelLinks.appendChild(field);
            field.SectionIndex = i;
            field.PageIndex = k; 
            field.onclick = function() {SelectPage(this.SectionIndex, this.PageIndex)};
        }
    }
    SetDisplayStyles(psection, pitem);
}

function SelectPage(section, page)
{
    var title;
    SetDisplayStyles(section, page);
    var p = ContentLinks[section].Pages[page];
    
    if (page == 0) title = p.Title;
    else
    {
        var r = ContentLinks[section].Pages[0];
        title = "<a href='#' onclick='SelectPage(" + section + ",0)'>" + r.Title + " > </a>" + p.Title;
    }
    
    LoadPageContent(p.Title, title, p.Url);
}

function SetDisplayStyles(section, page)
{
    for (var i = 0; i < ContentLinks.length; i++)
    {
        var pages = ContentLinks[i].Pages;
        for (var k = 0; k < pages.length; k++)
        {
            var p = pages[k];
            if (k == 0) p.Field.className = "static_mnonsel";
            else p.Field.className = "static_nonsel";
            
            if (i == section) p.Field.style.display = "block";
            else if (k != 0) p.Field.style.display = "none";
        }
    }
        
    var field = ContentLinks[section].Pages[page].Field;
    field.className = (page == 0) ? "static_msellink" : "static_sellink";
}

function LoadPageContent(title, titleLink, url)
{
    var request = false;
    TitleControl.innerHTML = titleLink;
    document.title = "CLSLink British Columbia Commercial Real Estate Search - " + title;
    
    if (window.XMLHttpRequest) 
    {
        try 
        {
            request = new XMLHttpRequest();
        } 
        catch (e) 
        {
            request = false;
        }
    } 
    else if (window.ActiveXObject) 
    {
        try 
        {
            request = new ActiveXObject("Msxml2.XMLHTTP");
        } 
        catch (e) 
        {
            try 
            {
                request = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch (e) 
            {
                request = false;
            }
        }
    }

    if (request) 
    {
        request.open('GET', url, false);
        request.send(null);
        ContentControl.innerHTML = request.responseText;
        LoadMapControl();

        var tracker = _gat._getTracker(PageTrackerIdent);
        tracker._trackPageview(url);
    }

    scroll(0,0);
}

function ExeContactSubmit(e)
{
    var keynum = null;
    
    if(e != null && e.which)
    {
        keynum = e.which;
    }
    else if(e != null && window.event)
    {
        keynum = e.keyCode;
    }
    
    return (keynum != 13);
}

function ContactSubmit()
{
    var fieldError = document.getElementById('ContactErrorInfo');
    var fieldStatus = document.getElementById('ContactStatus');
    
    var fieldName = document.getElementById('ContactFieldName');
    var fieldEmail = document.getElementById('ContactFieldEmail');
    var fieldTitle = document.getElementById('ContactFieldSubject');
    var fieldMessage = document.getElementById('ContactFieldMessage');
    
    var error = "";
    ResetContactFields(fieldError, fieldName, fieldEmail, fieldTitle, fieldMessage);
    
    if (fieldMessage.value.length == 0)
    {
        fieldMessage.focus();
        fieldMessage.className = "contact_binput_error";
        error = "&#8226;  Message field is required.<br/>" + error;
    }
    if (fieldTitle.value.length == 0)
    {
        fieldTitle.focus();
        fieldTitle.className = "contact_sinput_error";
        error = "&#8226;  Subject field is required.<br/>" + error;
    }
    if (fieldEmail.value.length == 0)
    {
        fieldEmail.focus();
        fieldEmail.className = "contact_sinput_error";
        error = "&#8226;  Email field is required.<br/>" + error;
    }
    if (fieldName.value.length == 0)
    {
        fieldName.focus();
        fieldName.className = "contact_sinput_error";
        error = "&#8226;  Name field is required.<br/>" + error;
    }
    
    if (error.length > 0)
    {
        fieldError.style.display = 'block';
        fieldError.innerHTML = "<div class='contact_errinfo'>" + error + "</div>";
    }
    else
    {
        fieldStatus.style.display = 'block';
        fieldStatus.innerHTML = "Submitting your message, please wait...";
        RealEstateService.SendFeedback(fieldName.value, fieldEmail.value, fieldTitle.value, fieldMessage.value, OnResult, OnError);
    }
    
    return false;
}

function OnResult(result)
{
    document.getElementById('ContactStatus').style.display = 'none';

    if (result)
    {
        ClearContactFields();
        document.getElementById('ContactFieldName').focus();
        document.getElementById('ContactErrorInfo').style.display = 'none';
        alert('Your message has been submitted successfully.');
    }
    else
    {
        OnError(result);
    }
}

function ResetContactFields(error, name, email, subject, message)
{
    error.style.display = "none";

    name.className = "contact_sinput";
    email.className = "contact_sinput";
    subject.className = "contact_sinput";
    message.className = "contact_binput";
}

function ClearContactFields()
{
    document.getElementById('ContactFieldName').value = '';
    document.getElementById('ContactFieldEmail').value = '';
    document.getElementById('ContactFieldSubject').value = '';
    document.getElementById('ContactFieldMessage').value = '';
}

function OnError(result)
{
    var fieldError = document.getElementById('ContactErrorInfo');
    fieldError.style.display = 'block';
    
    var error = "&#8226;  Failed to submit your message, ";
    error = error + "please make sure email address is correct and try again.";
    fieldError.innerHTML = "<div class='contact_errinfo'>" + error + "</div>";
}

function LoadMapControl()
{
    var map = document.getElementById('MapApplication');
    if (map == null) 
    {
        MapService = null;
        return;
    }

    var field = document.getElementById("MapBiaIdentifier");
    if (field == null) return;
 
    var options = new VEMapOptions();
    options.EnableBirdseye = false;
    MapService = new VEMap('MapApplication');
    MapService.SetDashboardSize(VEDashboardSize.Tiny);
    
    MapService.LoadMap(null, null, VEMapStyle.Road, false, VEMapMode.Mode2D, true, 0, options);
    MapService.SetScaleBarDistanceUnit(VEDistanceUnit.Kilometers);    
    
    if (BiaAreas != null) LoadBiaItem(field.value);
    else RealEstateService.GetBusinessImprovementAreas(OnBiaReceived);
}

function OnBiaReceived(result)
{
    BiaAreas = result.Items;
    LoadBiaItem(document.getElementById("MapBiaIdentifier").value);
}

function LoadBiaItem(area)
{
    var bia = null;
    for (var i = 0; i < BiaAreas.length; i++)
    {
        if (BiaAreas[i].Value == area)
        {
            bia = BiaAreas[i];
            break;
        }
    }
    if (bia == null) return;
    var shapeLayer = new VEShapeLayer();
    
    for (var m = 0; m < bia.Shape.length; m++)
    {
        var part = bia.Shape[m];
        var pt = new Array(part.Points.length);
        for (var i = 0; i < part.Points.length; i++)
        {
            pt[i] = new VELatLong(part.Points[i].Y, part.Points[i].X);
        }
        
        var shape = new VEShape(VEShapeType.Polygon, pt);
        shape.SetLineWidth(2);
        shape.SetLineColor(new VEColor(255, 0, 0, 0.5));
        shape.SetFillColor(new VEColor(252, 237, 204, 0.45));
        shape.HideIcon();
        shapeLayer.AddShape(shape);
    }
    
    var point = new VELatLong(bia.Center.Y, bia.Center.X);
    var shape = new VEShape(VEShapeType.Pushpin, point);
    shape.SetCustomIcon(CreateBiaIcon(area, bia.Name));

    shapeLayer.AddShape(shape);
    MapService.AddShapeLayer(shapeLayer);
    MapService.SetMapView(shapeLayer.GetBoundingRectangle());
}

function CreateBiaIcon(area, name)
{
    return "<div class='bia_mapicon' onclick='LocationSearch(" + area + ")'>" + "</div>";
}

function LocationSearch(area)
{
    window.location.href = "PropertySearch.aspx?area=" + area + "&ttype=0";
}

