var myResRend = false;
var favRend = false;
var authenticated = false;
var loggedIn = false;

/**
* Called on document load.
*/
function WSGetSailingDateMessage ()
{
    //if (!SessionStore.SailingDate)
    //{
        var lsReturn = "";
        if (location.href.indexOf("localhost") > -1) {
            return lsReturn;
        }
        $.webservice(
        {
            url: "/MyRes.asmx",
			ifModified:true,
			cache: true,
            requestType: "httpget",
            data: {},
            dataType: "xml",
            nameSpace: "http://tempuri.org/",
            methodName: "GetMyRes",
            contentType: "application/xml",
            success: function(data)
            {
                lsReturn = $(data).find("MyResHTML").text();
                //SessionStore.SailingDate =
                //{
                //    data: lsReturn
                //};
                
                myResRend = true;
            },
            error: function(XMLHttpRequest, textStatus, errorThrown)
            {
            }
        });

        return lsReturn;
    //}
    //else
    //{
    //    return SessionStore.SailingDate;
    //}
}

$(document).ready(function()
{
    var userName = "";
    var emailAddress = "";

    // Log out clicked
    $("#lnkAction2").click(function()
    {

        if (loc.toLowerCase().indexOf('bookedguest') > 0 || loc.toLowerCase().indexOf('myres') > 0)
        {

            document.location = "/BookedGuest/Guest/LogOutRedirect";
            return false; // stop event propagation (prevent page to go to href of the link)

        }
    });

    // Remove log on links from FunVille
    try
    {
        var loc = new String(location.href);
        if (loc.toLowerCase().indexOf('/funville') != -1 || loc.toLowerCase().indexOf('/activities') != -1)
        {
            $("ul.login-links").hide();
            $("#header2010 .top ul.right").hide();
        }
        else
        {
            if (loc.toLowerCase().indexOf('bookedguest') < 0 && loc.toLowerCase().indexOf('/myres') < 0)
            {
                $("#toplogin2").attr("action", sURL);
            }
        }
    }
    catch (aoXcp)
    {
        $("ul.login-links").hide();
        $("#header2010 .top ul.right").hide();
    }
    //else {
        if (loc.toLowerCase().indexOf('bookedguest') < 0 && loc.toLowerCase().indexOf('/myres') < 0) {
            $("#toplogin2").attr("action", sURL);
        }
    //}

    try
    {
        if ($.cookie("CarnivalUserCookie") != null)
        {
            userName = $.cookie("UserFirstName");
            emailAddress = $.cookie("UserEmailAddress");
            loggedIn = true;
        }

        if ($.cookie("MSCSAuth") != null)
        {
            authenticated = true;
        }

    }
    catch (aoXcp)
    {
    }

    if (loggedIn && authenticated)
    {
        $("#welcome").show();
        $("#txtAction1").html(userName);

        $("#lnkLogin").attr("href", "").addClass("not-a-link").click(function()
        {
            return false;
        });

        $("li#myprofile").css("display", "block");
        if (emailAddress != null && emailAddress != "")
        {
            $("#tbEmailAddress").attr("value", emailAddress);
        }

        $("#txtAction2").html("Logout");

        $("#lnkAction2").attr("href", "/SignInRegister.aspx?action=signout").click(function()
        {
            var url = location.href.toLowerCase();
            var dom = "carnival.com";
            if (url.indexOf("dev.carnival.com") != -1)
            {
                dom = "dev.carnival.com";
            }

            if (url.indexOf("syscarnival.com") != -1)
            {
                dom = "syscarnival.com";
            }

            if (url.indexOf("uatcarnival.com") != -1)
            {
                dom = "uatcarnival.com";
            }

            $.cookie('MSCSAuth', null, { path: '/', domain: dom, secure: false });
        });

        $(window).load(function()
        {
            if ($("#cruise-message").text().length > 5)
            {

                $("#header").addClass("loggedIn");
                $("ul.top-nav .top-link1").show();
                var txt = $("#cruise-message").text();
                var pat = /\d+\.?\d*/g;
                var num = txt.match(pat)[0];
                if (num < 10)
                {
                    $(".loggedIn a.top-manage-cruises").css("left", "70px");
                }

                if (num > 99)
                {
                    $(".loggedIn a.top-manage-cruises").css("left", "75px");
                }
            }
        });

    }

    if (loggedIn && !authenticated)
    {
        $("#welcome").show();
        $("#txtAction1").html(userName);
        $("li#myprofile").css("display", "block");
        $("#lnkLogin").addClass("not-a-link").click(function()
        {
            if (loc.toLowerCase().indexOf('bookedguest') != -1)
            {
                document.location.href = "/BookedGuest/Guest";
            }
            else
            {
                $("#loginform").fadeIn();
            }
        });

        if (emailAddress != null && emailAddress != "")
        {
            $("#tbEmailAddress").attr("value", emailAddress);
        }

        $("#txtAction2").html("Not " + userName);
        $("#lnkAction2").attr("href", "/SignInRegister.aspx?action=signout");
        if (loc.toLowerCase().indexOf('bookedguest') != -1)
        {
            $("#lnkAction2").attr("href", "/BookedGuest/Guest");
        }

        $(window).load(function()
        {
            if ($("#cruise-message").text().length > 5)
            {

                $("#header").addClass("loggedIn");
                $("ul.top-nav .top-link1").show();
                var txt = $("#cruise-message").text();
                var pat = /\d+\.?\d*/g;
                var num = txt.match(pat)[0];
                if (num < 10)
                {
                    $(".loggedIn a.top-manage-cruises").css("left", "70px");
                }

                if (num > 99)
                {
                    $(".loggedIn a.top-manage-cruises").css("left", "75px");
                }
            }
        });
    }

    if (!loggedIn && !authenticated)
    {
        $("#txtAction1").html("Log In");
        $("li#myprofile").css("display", "none");
        $("#lnkLogin").removeClass("not-a-link").click(function()
        {
            if (loc.toLowerCase().indexOf('bookedguest') != -1)
            {
                document.location.href = "/BookedGuest/Guest";
            }
            else
            {
                $("#loginform").fadeIn();
            }
        });

        $("#txtAction2").html("Register");
        $("#lnkAction2").attr("href", "/FullRegistration.aspx");
        if (loc.toLowerCase().indexOf('bookedguest') != -1)
        {
            $("#lnkAction2").attr("href", "/BookedGuest/Guest");
        }
    }

    var msg = getDaysTillSailMessage();
    if (msg != "")
    {
        $("#cruise-message").html(msg);
        $("#cruise-days").show();
    }

    // Populate saved cruise count without calling service
    UpdateFavoritesHeaderCount();


/*    $("#lnkMyRes").mouseover(function()
    {
        if (!myResRend)
        {
            var lsMessage = this.WSGetSailingDateMessage();
            $("#divMyRes").html(lsMessage);
        }
    });*/

    // Favorites call out
    $("#lnkFavs").mouseover(function()
    {
        if (!favRend)
        {
            GetFavorites(favoritesDoneHeader, favoritesFailed);
        }

    });

    var $headerSearch = $("#qslink");

    $headerSearch.find("a.special-rates").bind("click", function()
    {
        if ($(this).hasClass("open"))
        {
            $(this).toggleClass("open", false);
            $(this).parents("div.quick-search").find("div.block").slideUp();
        }
        else
        {
            $(this).toggleClass("open", true);
            $(this).parents("div.quick-search").find("div.block").slideDown();
        }
    });

    var resetList = false;
    $headerSearch.one("mouseenter", function(event)
    {
        ddlMonthsHeader = $("#ddlMonthHeader-top");
        ddlPortsHeader = $("#ddlPortsHeader-top");
        ddlDestinationsHeader = $("#ddlDestinationHeader-top");
        ddlCruiseLengthsHeader = $("#ddlCruiseLengthsHeader-top");
        ddlStateResidenceHeader = $("#ddlStatesHeader-top");
        chkSeniorHeader = $("#chkSeniorHeader-top");
        chkPastGuestHeader = $("#chkPastGuestHeader-top");

        ddlPortsHeader.unbind('change');
        ddlPortsHeader.change(dropDownChangedHeader);
        
        ddlMonthsHeader.unbind('change');
        ddlMonthsHeader.change(dropDownChangedHeader);
        
        ddlDestinationsHeader.unbind('change');
        ddlDestinationsHeader.change(dropDownChangedHeader);
        
        ddlCruiseLengthsHeader.unbind('change');
        ddlCruiseLengthsHeader.change(dropDownChangedHeader);
        
        ddlStateResidenceHeader.unbind('change');
        ddlStateResidenceHeader.change(specialRatesChangedHeader);
        
        chkSeniorHeader.unbind('click');
        chkSeniorHeader.click(specialRatesChangedHeader);
        
        chkPastGuestHeader.unbind('click');
        chkPastGuestHeader.click(specialRatesChangedHeader);
    }).mouseenter(function(event)
    {
        if (!resetList)
        {
            SearchHeader(null, SuccessHeader, FailedHeader);
            resetList = true;
        }
    });

    

});

String.prototype.count = function(s1)
{
    return (this.length - this.replace(new RegExp(s1, "g"), '').length) / s1.length;
};

function setNumberOfFavorites()
{
    var liCountOfFavorites = 0;
    var loFavoriteCookie = FAVCOOKIE.current;
    if (loFavoriteCookie != "" && loFavoriteCookie != null)
    {
        var loSailings = loFavoriteCookie.split(FAVCOOKIE.favDelim);

        // Check for expired favorites before assignment
        $.each(loSailings, function(aiIndex, asValue)
        {
            var loDate = new Date(asValue.split("&")[1]);
            if (loDate >= new Date())
            {
                liCountOfFavorites++;
            }
            else
            {
                // Remove expired favorite
                RemoveFavorite(asValue.split("&")[0]);
            }
        });


        self.NumberOfFavorites = liCountOfFavorites;
    }
    else
    {
        self.NumberOfFavorites = liCountOfFavorites;
    }

    return self.NumberOfFavorites;
}

function UpdateFavoritesHeaderCount()
{
    var savedCruisesCount = 0;
    var FavoritesCookieName = "FAVSBSK";
    var liCountOfFavorites = 0;
    try
    {
        if ($.cookie(FavoritesCookieName) != null)
        {
            var cookieVal = $.cookie(FavoritesCookieName);
            var loSailings = cookieVal.split("|");

            // Check for expired favorites before assignment
            $.each(loSailings, function(aiIndex, asValue)
            {
                var loDate = new Date(asValue.split("&")[1]);
                if (loDate >= new Date())
                {
                    liCountOfFavorites++;
                }
                else
                {
                    // Remove expired favorite
                    RemoveFavorite(asValue.split("&")[0]);
                }
            });
        }
        else
        {
            // Try AJAX call if not logged in
            if (!loggedIn)
            {
                var lsMessage = this.WSGetSailingDateMessage();
                $("#divMyRes").html(lsMessage);
            }
        }

        savedCruisesCount = liCountOfFavorites;
    }
    catch(aoXcp)
    {
    }

    if (location.href.toLowerCase().indexOf("search2") > -1)
    {
       $("#favorite-cruises").html(savedCruisesCount);
    }

    $("#savedCount").html(savedCruisesCount);
    if (savedCruisesCount > 0)
    {
        $("#mysavedcruises").show();
    }
    else
    {
        $("#mysavedcruises").hide();
    }
}

function getDaysTillSailMessage()
{
    var retVal = "";
    var minutes = 1000 * 60;
    var hours = minutes * 60;
    var days = hours * 24;
    var years = days * 365;

    try
    {
        var sailDate = $.cookie("SailDate");
    }
    catch(aoXcp)
    {
    }

    if (sailDate != null && sailDate != "")
    {
        var t = Date.parse(sailDate);
        var x = Date.parse(Date());
        days = parseInt(((t - x) / days));
        retVal = "You cruise in " + days + " days!"
    }
    
    return retVal;
}

function clearSearch()
{
    var searchText = document.getElementById("search-input1");
    searchText.value = "";
}

function trim(str)
{
    return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}

function goSearch()
{
    var searchText = document.getElementById("search-input1");
    var searchTerm = searchText.value;//jQuery.trim(searchText.value);
    searchTerm = trim(str);

    if (searchTerm.length > 0)
    {
        //alert(searchTerm + " " +"/Search/Default.aspx?q=" + searchTerm);
        location.href = "/cms/SiteSearch/index.aspx?q=" + searchTerm; //$.trim(searchTerm);
    }
}

function favoritesDoneHeader(context)
{
    $("#crlistspinner").hide();
    favRend = true;
    var sailingIDs = [];
    var loSailingDates = [];
    var s = context.Itineraries;
    var disc = [];
    try
    {
        if (s.length > 0)
        {
            for (var liCounter = 0; s[liCounter].value != 'undefined'; liCounter++)
            {
                var temp = new Object();

                for (var j = 0, len = s[liCounter].Sailings.length; j < len; j++)
                {
                    var lsSailDate = s[liCounter].Sailings[j].CalendarDaysText;
                    if (lsSailDate.indexOf("<") > -1)
                    {
                        lsSailDate = lsSailDate.split("<")[0];
                    }
                    
                    loSailingDates.push(lsSailDate);
                    sailingIDs.push(s[liCounter].Sailings[j].SailingId);
                    var temp = new Object();
                    temp['desc'] = s[liCounter].ItnDescriptionText;
                    temp['url'] = "/BookingEngine/ProductView/" + s[liCounter].Sailings[j].DetailsHREF;

                    // Set price of interior cabin, unless that is empty and then cascade down
                    if (s[liCounter].Sailings[j].INPriceText.indexOf("empty") == -1)
                    {
                        temp['price'] = s[liCounter].Sailings[j].INPriceText;
                    }
                    else
                    {
                        if (s[liCounter].Sailings[j].OVPriceText.indexOf("empty") == -1)
                        {
                            temp['price'] = s[liCounter].Sailings[j].OVPriceText;
                        }
                        else
                        {
                            if (s[liCounter].Sailings[j].BAPriceText.indexOf("empty") == -1)
                            {
                                temp['price'] = s[liCounter].Sailings[j].BAPriceText;
                            }
                            else
                            {
                                if (s[liCounter].Sailings[j].STPriceText.indexOf("empty") == -1)
                                {
                                    temp['price'] = s[liCounter].Sailings[j].STPriceText;
                                }
                            }
                        }
                    }

                    disc.push(temp);
                }
            }
        }
    }
    catch (aoXcp)
    {
    }

    $("#cruises-list").html("");
    for (var liCounter0 = 0, len = disc.length; liCounter0 < len; liCounter0++)
    {
        var liHtml;
        if (liCounter0 % 2 == 0)
        {
            liHtml = "<li class='colored'><a href='" + disc[liCounter0].url + "'>" + disc[liCounter0].desc + " from " + disc[liCounter0].price + "</a></li>";
        }
        else
        {
            liHtml = "<li><a href='" + disc[liCounter0].url + "'>" + disc[liCounter0].desc + " from " + disc[liCounter0].price + "</a></li>";
        }

        $("#cruises-list").append(liHtml);

    }

    UpdateFavoritesHeaderCount();
    UpdateFavorites(sailingIDs, loSailingDates);
}

function favoritesFailed()
{
}

function closeLogin()
{
    $("#loginform").fadeOut();
}

function tbxEnterKeyPressedTOP(aoEvent)
{
    if ((aoEvent.which && aoEvent.which == 13) || (aoEvent.keyCode && aoEvent.keyCode == 13))
    {
        if (!aoEvent)
        {
            aoEvent = window.event;
        }

        aoEvent.cancelBubble = true;
        if (aoEvent.stopPropagation)
        {
            aoEvent.stopPropagation();
        }

        var loButton = document.getElementById("imglogin");
        if (loButton)
        {
            if (location.protocol == "https:")
            {
                document.forms['toplogin'].submit();
            }
            else
            {
                document.forms['toplogin'].submit();
            }
        }
    }

    return false;
}

function showPhoneNumber()
{
    $(".showPhoneNumberLink").hide();
    var $marginLefty = $(".showPhoneNumberNumber").css({overflow: "hidden", display: "block", marginLeft: 110});
    $marginLefty.animate(
    {
        marginLeft: parseInt($marginLefty.css('marginLeft'), 10) == 0 ? $marginLefty.outerWidth() : 0
    });

    var s = s_gi("carnivalprod");
    s.linkTrackVars = 'events';
    s.linkTrackEvents = 'event56';
    s.events = 'event56';
    s.tl(this, 'o', 'Call Us Click');
}

function urlToObj(url)
{
    var obj = {};
    obj.params = {};

    var temp = url.split("?");
    var path = temp[0];
    var loParameters = decodeURI(temp[1]);

    obj["path"] = temp[0];

    paramsArr = loParameters.split("&");

    obj.params.length = paramsArr.length;

    var tempArr = null;
    for (var i = 0, len = paramsArr.length; i < len; i++)
    {
        tempArr = paramsArr[i].split("=");
        obj.params[tempArr[0]] = tempArr[1];

    }

    return obj;
}

function favoritesDone(context)
{
    if ($("#remove").css("display") == "inline")
    {
        $("#remove").css("display", "none");
        $("#save").css("display", "inline");
        $("#lisave").css("padding", "6px 22px 4px");
        $("#lishare").css("padding", "3px 22px 4px");
        $("#liprint").css("padding", "3px 22px 4px");
        UpdateFavoritesHeaderCount();
    }
    else
    {
        if ($("#save").css("display") == "inline")
        {
            $("#remove").css("display", "inline");
            $("#save").css("display", "none");
            $("#lisave").css("padding", "6px 19px 4px");
            $("#lishare").css("padding", "3px 19px 4px");
            $("#liprint").css("padding", "3px 19px 4px");
            UpdateFavoritesHeaderCount();
        }
    }
}

function failed()
{
}

