﻿/* Tabs */
var PropertyTabs = new function() {

    this.Show = function(oTabObject, oDiv) {

        oTabObject = f.SafeObject(oTabObject);
        oDiv = f.SafeObject(oDiv);

        var aTabs = f.GetElementsByClassName('a', 'propertyTab', 'divPropertyTabs');
        var aDivs = f.GetElementsByClassName('div', 'propertyTab', 'divPropertyContent');
        for (var i = 0; i < aTabs.length; i++) {
            f.SetClassIf(aTabs[i], 'selected', aTabs[i] == oTabObject);
            f.ShowIf(aDivs[i], aDivs[i] == oDiv);
        }

        //hack to centre the map until google fixes it
        if (oDiv.id == 'divLocationAndMap' && f.GetObject('divMap')) {
            PropertyMap.Map.CentreAndZoom(12);
        }
    }

}


/* Map */
var PropertyMap = new function () {

    //properties
    var me = this;
    this.Map;
    this.RedirectURLs = new Array();


    //setup redirects
    this.SetupRedirects = function (sRedirects) {
        var aRedirects = sRedirects.split('#');
        for (var i = 0; i < aRedirects.length; i++) {
            var oRedirect = aRedirects[i].split(',');
            this.RedirectURLs[oRedirect[0]] = oRedirect[1];
        }
    }
    this.AddRedirect = function (iPropertyID, sURL) {
        this.RedirectURLs[iPropertyID] = sURL;
    }


    //event handlers
    this.AfterZoom = function () {
        f.HidePopup();
    }

    this.OnClick = function (oMarker) {
        window.location = me.GetRedirectURL(me.GetIDFromMarker(oMarker));
    }

    this.OnMouseOver = function (oMarker) {
        f.ShowPopup(me.Map.GetMarkerScreenPosition(oMarker), 'geographyPopup', '',
            'divGeographyPopup_Property_' + me.GetIDFromMarker(oMarker), true, -192, 28);
    }

    this.OnMouseOut = function (oMarker) {
        f.HidePopup();
    }


    //support functions
    this.GetIDFromMarker = function (oMarker) {
        return oMarker.MarkerID.split('_')[1];
    }

    this.GetRedirectURL = function (iPropertyID) {
        return this.RedirectURLs[iPropertyID];
    }


    /* Places of interest */
    this.PlacesOfInterest = new function () {

        this.OnMouseOver = function (oMarker) {
            f.ShowPopup(PropertyMap.Map.GetMarkerScreenPosition(oMarker), 'geographyPopup', '',
                'divGeographyPopup_PlaceOfInterest_' + PropertyMap.GetIDFromMarker(oMarker), true, -192, 28);
        }

        this.OnMouseOut = function (oMarker) {
            f.HidePopup();
        }

    }

}


/* Email Property Details */
var EmailPropertyDetails = new function () {

    this.Validate = function (iPropertyID) {

        var oValidator = new Validator();
        oValidator.AddValidation('txtEmailTo', 'Email', 'NotEmpty IsEmail');

        if (oValidator.Validate()) {
            ff.Call('EmailPropertyDetails', function (s) { EmailPropertyDetails.CallBack(s); }, iPropertyID, f.GetValue('txtEmailTo'));
        }
    }

    this.CallBack = function (sResponse) {
        var oEmailMessage = f.GetObject("EmailMessage");
        oEmailMessage.innerHTML = sResponse;
        oEmailMessage.style.display = "";
    }

}
/* Ajax stuff */

/* Flight Deals WebService */
var oFlightDeals = new WebService();
oFlightDeals.Go = function(PropertyID, FlyToText, StartDate, Direction) {
    aParams = new Array(['PropertyID', PropertyID], ['FlyToText', FlyToText], ['StartDate', StartDate], ['Direction', Direction]);
    this.RunWebService('/webservices/support.asmx', 'http://intuitivesystems', 'GetFlightDeals', aParams, this, false);
}

oFlightDeals.Done = function(oXML) {
    var sHTML = this.GetTagValue(oXML, 'GetFlightDealsResult');
    f.SetHTML('divFlightDealsHolder', sHTML);

}
