﻿//***********   Methods for capturing the state of the webpage   ***********//

function SendToFriendWithTab(tab)
{
    var strUrl;
    if ($.jqURL.strip().indexOf("/Discover/_en/index.aspx") > 0 )
        strUrl = "/SendToFriend/_en/index.aspx?pagetype=DiscoverIndex&actions=" + GetClickEvent() + GetMapEvents();
	else if ($.jqURL.strip().indexOf("/Discover/_en/Details.aspx") > 0 )
	{
        strUrl = "/SendToFriend/_en/index.aspx?pagetype=DiscoverDetail&TripItemId=" + $.jqURL.get("TripItemID").replace("#TripItemDetailsMap", "") + "&actions=" + GetClickEvent() + GetMapEvents();
        switch (tab)
	    {
	        case "map" :
                strUrl += "&tab=map";
	        case "detail" :
                strUrl += "&tab=detail";
	    }    
    }
    if (strUrl != null)
        $.jqURL.loc(strUrl);
}

function SendToFriend()
{
    SendToFriendWithTab(null);
}

function GetClickEvent()
{
    var ClickEvent = "";
    var SelectedCategories = trim(GetCategoriesSelected());
    if (SelectedCategories != "")
        ClickEvent += "click|" + SelectedCategories + ",";
    
    return ClickEvent;
}

function GetCategoriesSelected()
{
    var retValue = "";
    $( "#SearchMap input:checkbox" ).each(
        function(){
            if ($(this)[0].checked)
                retValue = retValue + $(this)[0].id + "~";
        }
    );
    retValue = retValue.substring(0, retValue.length - 1);
    return retValue;
}

function GetMapEvents()
{
    var MapEvent = "";
    if (map != null)
    {
        MapEvent += "map|";
        MapEvent += "latitude_" + map.getCenter().y + "~";
        MapEvent += "longitude_" + map.getCenter().x + "~";
        MapEvent += "zoom_" + map.getZoom();
    }
    return MapEvent;
}

//***********   Methods for rebuilding the state of the webpage   ***********//
$(document).ready( function(args)
{
    var actions = $.jqURL.get("actions");
    if (actions != null)
    {
        var actions = actions.split(",");
        for (var actionCount=0; actionCount<actions.length; actionCount++)
        {
            var events = actions[actionCount].split("|");
            switch(events[0])
            {
                case "click": default :
                    ClickEventHandler(events[1]);
                    break;
                case "map" :
                    GoogleMapEventHandler(events[1]);
                    break;
            }
        }
    }
});

function ClickEventHandler(controls)
{
    var ControlsClicked = "";
    var controls = controls.split("~");
    for (var controlsCount = 0; controlsCount<controls.length; controlsCount++)
    {
        if (ControlsClicked.indexOf(controls[controlsCount]) < 0)
        {
            $("#" + controls[controlsCount]).click();
            ControlsClicked += controls[controlsCount];
        }
    }
}

function GoogleMapEventHandler(settings)
{
    if (map != null)
    {
        var latitude;
        var longitude;
        var zoom;
        var settings = settings.split("~");
        for(var settingsCount=0; settingsCount<settings.length; settingsCount++)
        {
            var setting = settings[settingsCount];
            setting = setting.split("_");
            switch(setting[0])
            {
                case "latitude" : default :
                    latitude = setting[1];
                case "longitude" :
                    longitude = setting[1];
                case "zoom" :
                    zoom = setting[1];
            }
        }
        map.setCenter(new GLatLng(parseFloat(latitude),parseFloat(longitude)), parseInt(zoom));
    }
}