$(function() {
    $("[id$='btnContinue']").bind("click",SaveToCart);
    $("[id$='hlSave']").click(SaveToCart);
    displayContinueModal();
    //on page load remove all link should be disabled
    DeactiveRemoveLink();
    switch($("[id$=hdnPageName]").val().toLowerCase()){
        case "seasonpassesexplorer":
            var params = $("[id$=hdnParam]").val().split(",");
            GetSeasonPasses(params);
            $(".mainTabsPnB li a").bind("click", function(e){
                e.preventDefault();
                var cat = $(this).text().split(" ")[0];
                params[7] = cat;
                GetSeasonPasses(params);
                $(".mainTabsPnB li").removeClass("tabs-selected");
                $(".mainTabsPnB li a").removeClass("tabs-selected");
                $(this).closest("li").addClass("tabs-selected");
                $(this).addClass("tabs-selected");
                return false;
            });
            break;
        case "seasonpassesrenewal":
        
            $("#additionalProfileInfoCarousel li").each(function (i) {
                if($(this).find("input[id$=hdnIPCode]").val()==$("[id$=hdnIPCODEUser]").val())
                {
                    $(this).addClass("tabs-selected");
                }   
                else
                {
                    $(this).removeClass("tabs-selected");
                }    
            });
            var params = $("[id$=hdnParam]").val().split(",");
            params[1] = $("#additionalProfileInfoCarousel li.tabs-selected input[id$=hdnIPCode]").val();
            GetSeasonPasses(params);
            $(".photoTabs li a").bind("click", function(e){
                e.preventDefault();
                var ipcode = $(this).siblings("input[id$=hdnIPCode]").val();
                params[1] = ipcode;
                GetSeasonPasses(params);
                $(".photoTabs li").removeClass("tabs-selected");
                $(this).closest("li").addClass("tabs-selected");
                return false;
            });
            break;
    }
    
      /* modify to fix - artf1019242 : K | Lodging | UI Issues on results page [SA] */
      if($('#keystone').length >0){    
        $('.singleColumn .lodgingFilterContainer').css('padding','0 10px');
        if(($.browser.msie)&&($.browser.version == "6.0")){
            $("#keystone .singleColumn .seasonPassExplorerContainer .listFilterContainer").css("margin","0px");
            $("#keystone .singleColumn .seasonPassExplorerContainer .darkGreyBoxContainer").attr("style","margin:0px!important;");
        }
      }
      /* end of fix - artf1019242 [SA] */
      
      /* added to fix - artf1009067 : Key And Bc| UI issues for Season pass renewal and 
                        artf1021848 : BC, Vail | Season Pass | UI Issues
                        artf1008069 : K | BC | Season pass renewal | Navigation arrow is too close to the container [SA] */
        if($('#beavercreek').length >0){    
            if(($.browser.msie)&&($.browser.version == "6.0")){
                //$('.singleColumn .seasonPassExplorerContainer').css('padding','0 10px'); //by rk for artf1021848 : BC, Vail | Season Pass | UI Issues 
                $("#beavercreek .singleColumn .seasonPassExplorerContainer .listFilterContainer").css("margin","0px");
                $("#beavercreek .singleColumn .seasonPassExplorerContainer .darkGreyBoxContainer").attr("style","margin:0px!important;");
            }
        }
      /* end of the fix - artf1009067 | artf1021848 & artf1008069 [SA] */
        
      /* added to fix - artf1021848 : BC, Vail | Season Pass | UI Issues [SA] */
      if($('#vail').length >0){    
          if(($.browser.msie)&&($.browser.version == "6.0")){
            $("#vail .singleColumn .seasonPassExplorerContainer .listFilterContainer").css("margin","0px");
            $("#vail .singleColumn .seasonPassExplorerContainer .darkGreyBoxContainer").attr("style","margin:0px 4px !important;");
            }
         }  
      /* end of fix - artf1021848 [SA] */
});


function pageLoadHandlers(){
	/*$(".gBox").gBox({
		theme: "gradientBox",
		callback: function(){
			$(".draggable").show();
		}
	});*/
	
    //$(".whiteBox").gBox({ theme:"whiteBox"});
    //$(".gradientBox").gBox({ theme:"gradientBox"});
    //$(".lightGreyBox").gBox({ theme:"lightGreyBox"});
	
    $(".draggable").draggable({
        helper: 'clone',
        start: function(event, ui){
            ui.helper.css("width", $(this).outerWidth());
        }
    });//Make season pass detail boxes draggable
    
	$("#droppable").droppable({
		drop: function(event, ui) {
		switch($("[id$=hdnPageName]").val().toLowerCase())
		{
            case "seasonpassesexplorer":
		    if($(".hiddenIsLodging").val() == "true")
		    {
		        if($("#droppable ul li").length >= 19)
		            return;		        
		    }
		    else
		    {
		        if($("#droppable ul li").length >= 8)
		            return;	
		    }
		    break;
		    case "seasonpassesrenewal":
		        if($("#droppable ul li").length >= 8)
		            return;
		        break;
		}
		    
			addSeasonPassToTray(ui.draggable);
            
		},
		tolerance: "touch"
	});
}


//Function Name : displayContinueModal
//Purpose : This function is used to open modal window
//Parameters : NA
function displayContinueModal(){

    if ( $('.saveToTripDialog').length > 0 && $('body > .ui-dialog .saveToTripDialog').length == 0 ){
        $('.saveToTripDialog').eq(0).dialog({
            bgiframe: true,
            autoOpen: false,
            width: 960,
            height: 620,
            modal: true,
            resizable: false,
            position: 'center',
            zIndex: 6000,
            closeOnEscape: true
        });
    }
    
    var objDialog = $('body > .ui-dialog .saveToTripDialog');

	$('.seasonPassContainer .linkSave, .draggable .linkSave').unbind("click").bind("click", function(e) {
	    e.preventDefault();
	    
	    // grabs url from href and loads it into the modal window
	    var urlContent = $(this).attr('href');	

	    $('iframe', objDialog)
	        .attr('src',urlContent)
	        .attr('width','100%')
	        .attr('height','100%')
	        .attr('scrolling','no');	        
	    try {
	        objDialog.dialog('open');
	    } catch (e){}
        return false;
    })
	
	$('.linkLeftAligned').click(function(e) {
	    e.preventDefault();    
	    
	    if($("#droppable ul li").length <= 0)
        {
            var divError = $(".noProduct")
            var errorMsg = "<span id='lblErrorMessage' class='errorMessage'>Please select a product before proceeding.</span>"; 
            divError.html(errorMsg);
		    return false;		
	    }

	    // grabs url from href and loads it into the modal window
	    var hd = $("[id$='_hdSeasonPass']"); 
	    var hdnField = hd.val();	    
	    var urlContent = $(this).attr('href') + "&ProductId=" + hdnField;	
        
	    $('iframe', objDialog)
	        .attr('src',urlContent)
	        .attr('width','100%')
	        .attr('height','100%')
	        .attr('scrolling','no');	        
	    try {
	        objDialog.dialog('open');
	    } catch (e){}
        return false;
    })
};

function getEquipClassName(obj){
	var clsNameStart 	= obj.className.indexOf("equip-");
	var clsNameEnd 		= obj.className.indexOf(" ", clsNameStart) >= 0 ? obj.className.indexOf(" ", clsNameStart) : obj.className.length;
	var clsName 		= obj.className.substring(clsNameStart, clsNameEnd);
	return clsName;
}

function ticketFilter(minDays,maxDays){
	var arrRows = $("div.largeGbox");
	arrRows.find(".lgbDays span:first").each(function (i) {
		var clsName = getEquipClassName( $(arrRows[i]).parents("li")[0] );
		
		if ( $("li.equipTypeItem input." + clsName)[0].checked ) {
			if ( $(this).html() >= minDays && $(this).html() <= maxDays ) {
				$(arrRows[i]).parents("li").show();
			} else {
				$(arrRows[i]).parents("li").hide();
			}
		}
	});
}

function addSeasonPassToTray(draggedObj){
	var droplet = $("#dropTemplate :first").clone().appendTo(
		$("<li></li>").appendTo("#droppable ul")
	);
	
	droplet.find(".type").html(
		draggedObj.find(".lgbTitle h4").html()
	);
	droplet.find(".days").html(
		draggedObj.find(".lgbDays").html()
	);
	droplet.find(".amount").html(
		draggedObj.find(".lgbAmount").html()
	);
	droplet.find(".iconDelete").click(function(){
		$(this).parents("li").remove();
		DeactiveRemoveLink();
	})
	
	//remove the error message if length is >0
	 if($("#droppable ul li").length > 0)
    {
        var divError = $(".noProduct")
        divError.html('');
        ActiveRemoveLink();
	}
	
	
}

function clearPurchaseTray(){
	$(".dropItem li").not("#hiddenDroppableTicketTemplate").remove();
	DeactiveRemoveLink();
}

//This method posts an AJAX Call for getting the SeasonPasses from the database.
function GetSeasonPasses(params)
{

    var isRenewal = params[0];
    var ipCode = params[1];
    var storeId = params[2];
    var storeComponentId = params[3];
    var saleLocationCode = params[4];
    var securityLevelCode = params[5];
    var dateTime = params[6];
    var category = params[7];
    var sku = params[8];
    
    dataString = "{\"isRenewal\" : \""+isRenewal
                +"\",\"ipCode\": \"" + ipCode
                +"\",\"storeId\": \"" + storeId
                +"\",\"storeComponentId\": \"" + storeComponentId
                +"\",\"saleLocationCode\": \"" + saleLocationCode
                +"\",\"securityLevelCode\": \"" + securityLevelCode
                +"\",\"dateTime\": \"" + dateTime    
                +"\",\"category\": \"" + category
                +"\",\"sku\": \"" + sku     
                +"\"}"
                
        // remove the error message on click of any tab
        var divError = $(".noProduct")
        divError.html('');
        
    //Show loading icon on ajax call 
    $("#tab1").showLoading({loadingStr: "Please wait a moment while we search for your results"});
    $.ajax({
        type: "POST",
        url: "/vailresorts/Sites/PlanningAndBooking/WebServices/SeasonPasses.svc/GetSeasonPasses",
        data: dataString,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            $('#tab1').html(msg.d);
            pageLoadHandlers();
            var hdnval = $(".txtSearchClass").val();
            if (hdnval != "") {
                searchCriteria = hdnval.toString().split(',');
                AddEditedItemToBucket(searchCriteria);
            }

            displayContinueModal();
            $(".selectThis").unbind('click').bind('click', function() {
                animateToTray($(this));
            })
        },
        error: function(xhr, status, error) {
            handlePnB_SeasonPasses_Error(xhr, status, error);
        }
    });
          
          return false;
 }
 
 function handlePnB_SeasonPasses_Error(xhr, status, error)
{
    var errMsg = getErrorMessage(xhr,status,error);

    if ($(".loadingPlaceholder").length > 0) {
        $(".loadingPlaceholder").hide();
        $(".loadingPlaceholder").parent().html('<div class="largeGboxContainer"><span class="errorMessage">' + errMsg + '</span></div>');
    }
    else {
        $(".noProduct").html('<div class="largeGboxContainer"><span class="errorMessage">' + errMsg + '</span></div>');
    }
}
 
 function SaveToCart()
{    
    // show the error message if no product is selected
    if($("#droppable ul li").length <= 0)
    {
        var divError = $(".noProduct")
        var errorMsg = "<span id='lblErrorMessage' class='errorMessage'>Please select a product before proceeding.</span>"; 
        divError.html(errorMsg);
		return false;		
	}
    var hd=$("[id$='_hdSeasonPass']");  
    var li = $("ul.dropItem li");
    var emptyString = '';
    hd.val(emptyString);
    $("ul.dropItem li").each(function(i){ 
                var div1 = $(this).find(".boxData");
                var div2 = div1.find(".amount");
                var sSKU = div2.find("input[type=hidden][class='hdnSKU']").val();
                var sDisplayCategoryCode = div2.find("input[type=hidden][class='hdnDisplayCategoryCode']").val();
                var sIPCode = div2.find("input[type=hidden][class='hdnIPCode']").val();

    if(sSKU!='' && sSKU!=undefined)
    {
        if(hd.val()=='')
            {
            
                hd.val(sSKU+'|'+sDisplayCategoryCode + '|' + sIPCode);
            }
            else
            {
            
                 hd.val(hd.val() +'?' +sSKU+'|'+ sDisplayCategoryCode + '|' + sIPCode);
            }
            }
       });
            if(hd.val()=='')      
            return false;            
           
        return true; 
             
}

// This method adds the edited item to purchase tray.
function AddEditedItemToBucket(searchCriteria)
{
        var ul=$('.dropTray .dragDropBoxMiddle #droppable .dropItem');
        var spanImage="<span class='iconDelete'><img alt='Delete' src='/VailResorts/sites/PlanningAndBooking/assets/img/iconDelete.gif'/></span>";
        var verHTML = "<h6><span class='type'>" +searchCriteria[2] + "</span>- <span class='days'></span></h6>";
        var inputSKU = "<input  class='hdnSKU' type='hidden' value='"+searchCriteria[0]+"' />" ;
        var inputCategory = "<input  class='hdnDisplayCategoryCode' type='hidden' value='"+searchCriteria[3]+"' />";   
        var inputIPCode = "<input  class='hdnIPCode' type='hidden' value='"+searchCriteria[4]+"' />";   
        verHTML = verHTML + "<span class='amount'>$" +searchCriteria[1]+ inputSKU + inputCategory + inputIPCode +"</span>";
        verHTML = "<li><div class='boxData clearfix'>"+spanImage+ verHTML+ " </div></li>";
        $('.dropTray .dragDropBoxMiddle #droppable .dropItem').html(verHTML);
        $(".dropTray .dragDropBoxMiddle #droppable .dropItem .boxData .iconDelete").click(function(){
		$(this).parents("li").remove(); 
		DeactiveRemoveLink();
		})
		ActiveRemoveLink();
		SelectTabs(searchCriteria[3]);
 }
 
 //This method shows the category slelected on Product edit.
 function SelectTabs(category)
 {  if(category && category != "" && category !=null)
    {
        $(".mainTabsPnB>li").removeClass("tabs-selected");
        $(".mainTabsPnB>li>a").removeClass("tabs-selected");    
        $("a."+ category).addClass("tabs-selected").closest("li").addClass("tabs-selected"); 
    }
 }
 
 //This method enable the 'Remove Link' when user add product to purchase tray.
 function ActiveRemoveLink()
 {
  		if($("#droppable ul li").length > 0)
        {
            $(".linkClear").attr("href","javascript:clearPurchaseTray();");
	        $(".linkClear").attr("style"," ");
	    }

 }
 
 //This method disable the 'Remove Link' when user remove all the products from purchase tray.
 function DeactiveRemoveLink()
 {
 		if($("#droppable ul li").length == 0)
        {
            $(".linkClear").css("color","#666");
            $(".linkClear").attr("href","#a");
            $(".linkClear").css("cursor","text");
            $(".linkClear").css("textDecoration","none");
	    }

 }
	
	function animateToTray(obj){
	    //to display no. of 	graggable items in the tray.
	  if($(".hiddenIsLodging").length > 0){
	      if($(".hiddenIsLodging").val() == "true"){
	            if($("#droppable ul li:not(:hidden)").length > 18){
	                return;		        
	             }
	        } 
	        else {
	            if($("#droppable ul li:not(:hidden)").length > 7){
	                return;	
	            }
	        }
    }
    
	var clickedItem = obj.closest(".draggable");
	var animationObj = clickedItem.clone();
	var myParentContainer = obj.closest("li");
	var positionX = clickedItem.offset().left+"px";
	var positionY = clickedItem.offset().top+"px";
	var purchaseTray = $(".dottedBoxTop").offset();
	var endPosX = purchaseTray.left-180;
	var endPosY = purchaseTray.top+60;
	var notificationBubble = "<div class='addedToCartBubble'>Added to Purchase Tray</div>";
	animationObj.css({
		'position':'absolute',
		'top': positionY,
		'left' : positionX,
		'width': myParentContainer.width(),
		'z-index':9999
	});
	animationObj.appendTo("body");
	//animationObj.prependTo(myParentContainer);
	//notificationBubble.prependTo(myParentContainer);

	animationObj.animate( {
		'top':endPosY,
		'left':endPosX
	}, 800,function(){
		addTicketToTray(animationObj);
		$(this).fadeOut(function(){
			$(this).remove();
		});
	});
}

function addTicketToTray(draggedObj){
	var droplet = $("#dropTemplate :first").clone().appendTo(
		$("<li></li>").appendTo("#droppable ul")
	);
	
	
	
	droplet.find(".type").html(
		draggedObj.find(".lgbTitle h4").html()
	);
	droplet.find(".days").html(
		draggedObj.find(".lgbDays").html()
	);
	droplet.find(".amount").html(
		draggedObj.find(".lgbAmount").html()
	);
	droplet.find(".iconDelete").click(function(){
		$(this).parents("li").remove();
		    if($("#droppable ul li").length == 0)
            {
                 $(".linkClear").attr("style"," color: #666; cursor: text; text-decoration: none");
            }
	})
	
	//remove the error message if length is >0
	 if($("#droppable ul li").length > 0)
    {
        var divError = $(".noProduct")
        divError.html('');
        ActiveRemoveLink();
	}
	//var ticketID = draggedObj.find(".hiddenTicketID").html();
	//droplet.find("input[name='purchasedTicketID']").attr("value",ticketID);
}