var myResRend = false;
var favRend = false;




$(document).ready(function() {
    var authenticated = false;
    var loggedIn = false;
    var userName = "";
    var emailAddress = "";


    // remove login links from FunVille
    var loc = new String(location.href);
    if (loc.indexOf('Funville') != -1)
        $("ul.login-links").hide();

    
        $("#toplogin2").attr("action", sURL);
    

    try {
   

    if ($.cookie("CarnivalUserCookie") != null) {
        userName = $.cookie("UserFirstName");
        emailAddress = $.cookie("UserEmailAddress");
        loggedIn = true;
    }

    if ($.cookie("MSCSAuth") != null)
        authenticated = true;
	 
	 
	 }
    catch(e) {
    	// for cookie not being available
    }
    
    if (loggedIn && authenticated) {
        $("#welcome").show();
        $("#txtAction1").html(userName);
        $("#lnkLogin").attr("href", "/MyProfile.aspx");
        if (emailAddress != null && emailAddress != "")
            $("#tbEmailAddress").attr("value", emailAddress);

        $("#txtAction2").html("Logout");
        $("#lnkAction2").attr("href", "/SignInRegister.aspx?action=signout");

    }

    if (loggedIn && !authenticated) {
        $("#welcome").show();
        $("#txtAction1").html(userName);
        $("#lnkLogin").click(function() {
            $("#loginform").fadeIn();
        }
        );

        if (emailAddress != null && emailAddress != "")
            $("#tbEmailAddress").attr("value", emailAddress);

        $("#txtAction2").html("Not " + userName);
        $("#lnkAction2").attr("href", "/SignInRegister.aspx?action=signout");


    }

    if (!loggedIn && !authenticated) {
        $("#txtAction1").html("Log In");
        $("#lnkLogin").click(function() {
            $("#loginform").fadeIn();
        }
        );
        $("#txtAction2").html("Register");
        $("#lnkAction2").attr("href", "/FullRegistration.aspx");

    }





    var msg = getDaysTillSailMessage();
    if (msg != "") {
        $("#cruise-message").html(msg);
        $("#cruise-days").show();
    }


    // populate saved cruise count without calling service
    UpdateFavoritesHeaderCount();

    // my res dropdown call out
    $("#lnkMyRes").mouseover(function() {
        if (!myResRend) {
            $.webservice({
                url: "/MyRes.asmx",
                requestType: "httpget",
               data: {},
                dataType: "xml",
                nameSpace: "http://tempuri.org/",
                methodName: "GetMyRes",
                contentType: "application/xml",
                success: function(data, textStatus) {
                    //alert($(data).find("CruiseMessage").text());
                   // $("#cruise-message").html($(data).find("CruiseMessage").text());
                    myResRend = true;
                    $("#divMyRes").html($(data).find("MyResHTML").text());
                    //document.write(data);
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
               //     alert(errorThrown);
                }
            });
        }
    });


    // favorites call out
    $("#lnkFavs").mouseover(function() {
        if (!favRend) {
            GetFavorites(favoritesDoneHeader, favoritesFailed);
        }

    });


  var $headerSearch = $("#qslink");
  	
  	    $headerSearch.find("a.special-rates").bind("click", function(){
  	    	//console.debug("is open %o", $(this).hasClass("open"));
  	    	
  	    	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.change(dropDownChangedHeader);
	            ddlMonthsHeader.change(dropDownChangedHeader);
	            ddlDestinationsHeader.change(dropDownChangedHeader);
	            ddlCruiseLengthsHeader.change(dropDownChangedHeader);
	            ddlStateResidenceHeader.change(specialRatesChangedHeader);
	            chkSeniorHeader.click(specialRatesChangedHeader);
	            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 UpdateFavoritesHeaderCount() {
    var savedCruisesCount = 0;
    var FavoritesCookieName = "FAVSBSK";
    try {
      if ($.cookie(FavoritesCookieName) != null) {
        var cookieVal = $.cookie(FavoritesCookieName);
        savedCruisesCount = cookieVal.count("&");

      }
    }
    catch(e) {
     // console.debug("Update FavouriesHeader %o", e);
    }
    $("#savedCount").html(savedCruisesCount);
}
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(e) {
     // console.debug("sail date error %o", e);
    }
    if (sailDate != null && sailDate != "") {
        var t = Date.parse(sailDate);
        var x = Date.parse(Date());
        var days = Math.round(((t - x) / days));
        retVal = "You cruise in " + days + " days!"
    }
    return retVal;
}

function clearSearch() {
	var searchText = document.getElementById("search-input1");
	searchText.value = "";
}

function goSearch() {
	var searchText = document.getElementById("search-input1");
	var searchTerm = jQuery.trim(searchText.value);
	//alert("searchTerm " +searchTerm);
	if (searchTerm.length > 0) {
		//alert(searchTerm + " " +"/Search/Default.aspx?q=" + searchTerm);
		location.href = "/cms/SiteSearch/index.aspx?q=" + $.trim(searchTerm);
	}
	//per CQ#100570, no error to be displayed
	//else {
	//	alert("Please enter text in the search box to search carnival.com!");
	//	return false;
	//}
}


function favoritesDoneHeader(context) {

    $("#crlistspinner").hide();
    favRend = true;
    var sailingIDs = [];
    
	var s = context.d.Itineraries;
	//console.debug("d %o", context.d);
	var disc = [];
	    try {
	        if (s.length > 0) {
		for (var i = 0; s[i].value != 'undefined'; i++) {
	           // console.debug("itin %o sailings %d", s[i], s[i].Sailings.length);
	            var temp = new Object();


	            for (var j = 0, len = s[i].Sailings.length; j < len; j++) {
	                sailingIDs.push(s[i].Sailings[j].SailingId);
	                var temp = new Object();
	                temp['desc'] = s[i].ItnDescriptionText;
	                temp['url'] = "/Itinerary.aspx" + s[i].Sailings[j].DetailsHREF
	                //set price of interior cabin, unless that is empty and then
	                // cascade down
	                if (s[i].Sailings[j].INPriceText.indexOf("empty") == -1)
	                    temp['price'] = s[i].Sailings[j].INPriceText;
	                else if (s[i].Sailings[j].OVPriceText.indexOf("empty") == -1)
	                    temp['price'] = s[i].Sailings[j].OVPriceText;
	                else if (s[i].Sailings[j].BAPriceText.indexOf("empty") == -1)
	                    temp['price'] = s[i].Sailings[j].BAPriceText;
	                else if (s[i].Sailings[j].STPriceText.indexOf("empty") == -1)
	                    temp['price'] = s[i].Sailings[j].STPriceText;

	                disc.push(temp);
	            }
		}

	        }

	    } catch (_err) {

	    }
	
  

	
	$("#cruises-list").html("");
	for (var i = 0, len = disc.length; i < len; i++) {
	    var liHtml;
	    if (i % 2 == 0)
		    liHtml = "<li class='colored'><a href='" + disc[i].url + "'>" + disc[i].desc + " from " + disc[i].price + "</a></li>";
	    else
		    liHtml = "<li><a href='" + disc[i].url + "'>" + disc[i].desc + " from " + disc[i].price + "</a></li>";
        $("#cruises-list").append(liHtml);
       
	}

	UpdateFavoritesHeaderCount();
	UpdateFavorites(sailingIDs);

}

function favoritesFailed() {

}

function closeLogin() {
    $("#loginform").fadeOut();
}


function tbxEnterKeyPressedTOP(e) {

    if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
        if (!e) var e = window.event;
        e.cancelBubble = true;
        if (e.stopPropagation)
            e.stopPropagation();
        var buttono = document.getElementById("imglogin");
        if (buttono) {
            if (location.protocol == "https:") {
                // document.forms['toplogin'].action = "/SignInTopSSL.aspx";
                document.forms['toplogin'].submit();
            }
            else {
                //document.forms['toplogin'].action = "/SignInTop.aspx";
                document.forms['toplogin'].submit();
            }
            return false;
        }
    }
}

function showPhoneNumber() {
	$(".showPhoneNumberLink").hide();
	//$(".showPhoneNumberNumber").show();
	var $phone = $(".showPhoneNumberNumber").css({overflow: "hidden", display: "block", marginLeft: 110});
	
	
	var $marginLefty = $phone;	
	    $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 paramsTemp = decodeURI(temp[1]);
  
  obj["path"] = temp[0];
  
  paramsArr = paramsTemp.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;
   
}