sdi.cart.events = {};


sdi.cart.events.passCategoryListing = {
    init : function(){
    	$("select.quantity").change(function() {
			var num = $.trim($(this).val());
			if(!num || num === "") {
				num = 0;
			}
			if($.browser.opera){ /* Opera needs a little help for some reason */
				$(this).trigger('click')
			}
			$("select.quantity").attr("disabled", "disabled");

			sdi.cart.canSubmit = false;
			sdi.cart.addToCart($(this).attr("name"), $(this).val(), function(bean) {
				$("select.quantity").removeAttr("disabled");
			});
    	}).bind("keypress", function(event){
            if(event.which == 13){
                event.preventDefault();
            }
        });

        $("#addSkuToCart").submit(function(){
            //make sure all ajax requests have completed
            //wait 10 sec and proceed forward
            for(var i = 0; i < sdi.cart.numSubmitRetries && !sdi.cart.canSubmit; i++){
                setTimeout("", 500);
            }
            
            //make sure that at least one quantity was selected
            var allZero = true;
            var quantityElements = $("select.quantity");
            for(var i=0; i < quantityElements.length; i++) {
            	var qtyElementSelector = "#" + quantityElements[i].id + " :selected";
            	var qty = $.trim($(qtyElementSelector).val());
            	if(qty > 0) {
            		allZero = false;
            		break;
            	}
            }
            
            if(allZero) {
            	alert("Please select quantity");
            	return false;
            }
            
        }).bind("keypress", function(event){
            if(event.which == 13){
                event.preventDefault();
            }
        });

        $("#continue2").click(function(){
            $("#addSkuToCart").submit();
        });

        sdi.cart.events.common.cartAlertModal();
    }

}; //passCategoryListing


sdi.cart.events.checkoutBilling = {
	options : {
        progress: 55
    },
    init : function(args){
        this.options = $.extend({}, this.options, args);
        $("#progressbar").progressbar({
            value: this.options.progress 
        });

        sdi.cart.updateBillingStates();

        $("#billingAddresscountry").change(function(){
            sdi.cart.updateBillingStates();
        });

        $("#paypal").click(function(){
            sdi.cart.selectPayPal();
        });

        $("#credit").click(function(){
            sdi.cart.selectCreditCard();
        });

        //hide the promo input box
        $('ul.promocode').hide();

        //create promocode link
        $('p.promocode').click(function () {
            $('ul.promocode').toggle();
        });
        
        $("#applyGiftCertificateCode").live('click', function(event) {
        	//$(this).hide().prev('.loading').show();
            var giftCertificateCode = $("#giftCertificateCode").val();
            sdi.cart.ajax.applyGiftCertificate({"giftCertificateCode": giftCertificateCode}, sdi.cart.applyGiftCertificate);
       });

        $("#applyCode").click(function(){
        	$(this).hide().prev('.loading').show();
            var code = $("input[name='customer.promocode']").val();
            sdi.cart.ajax.setPromotionCode({"promotionCode": code}, sdi.cart.updateCoupon);
        });
        
        $("#removePtCode").click(function(){
        	
        	$(".promotionCodeSuccessBtn").css('display', 'none');
        	$(".removingPtCode").removeClass('hide');
        	
        	sdi.cart.ajax.removePtPromotionCode(null, sdi.cart.removePtCoupon);
        });
        
        $("#applyPtCode").click(function(){
            var code = $("input[name='customer.promocode']").val();
            var emailAddress = $("input[name='customer.email']").val();
            $(".applyingPtCode").removeClass('hide');
            $(".applyingPtCodeButton").css('display', 'none');
            //$(".applyingPtCodeButton").addClass('hide');
            $(".promotionErrorMessage").addClass('hide');
            sdi.cart.ajax.setPtPromotionCode({"promotionCode": code, "emailAddress" : emailAddress}, sdi.cart.updatePtCoupon);
        });
        

        //$(".datepicker").datepicker({ dateFormat: 'mm/dd/yy', showOn: 'button', buttonImage:'/img/ui/calender.gif',  buttonImageOnly: true, buttonText: 'Choose your dates'});

        $(".removeAttractionX").live("click", function(){
            var thisLink = $(this);
            var uidPk = thisLink.attr("rel");
            sdi.cart.pt.removeAttraction(uidPk);
            return false;
        });

        $("#continue2").click(function(){
            $("#billship").submit(); 
        });

    }
}; //checkoutBilling


sdi.cart.events.checkoutShipping = {

    init : function(){
        $("#progressbar").progressbar({
            value: 25
        });
        
        $(".removeShoppingItem").live("click", function(event) {
        	var uidPk = $(this).data("uidpk");
        	sdi.cart.removeFromCart(uidPk);
        });

        $("#selectedShippingServiceLevel").change(function(){
            sdi.cart.updateShippingChoice(this.value);
        });

        $("input[name='billingIsShipping']").click(function(){
            sdi.cart.shippingOptionChange();
        });

        sdi.cart.updateShippingStates();

        $("#shippingIsBillingCheckbox").click(function(){
            var shippingUidPk = $("#selectedShippingServiceLevel").val();
            sdi.cart.billingIsShippingState(shippingUidPk);
        });

        $("#toBeNotified").click(function(){
            var input = $("input[name='customer.toBeNotified']"); 
            var value = input.val();

            if(value == "true"){
                input.val(false);
            } else if(value == "false"){
                input.val(true);
            } else {
                input.val(true);
            }
        });


        $("#shippingAddresscountry").change(function(){
            sdi.cart.updateShippingStates();
        });

        $('#billship').submit(function(){
            var ret = sdi.cart.validateShippingChoice(); 

            if(ret){
                $("#continue").attr("disabled", true);

                if($("input[name='billingIsShipping']").val() == "2"){
                    $("#shippingAddresscountry").val("");
                    $("#shippingAddressfirstName").val("");
                    $("#shippingAddresslastName").val("");
                    $("#shippingAddressstreet1").val("");
                    $("#shippingAddressstreet2").val("");
                    $("#shippingAddresssubCountry").val("");
                    $("#shippingAddresszipOrPostalCode").val("");
                }
            }

            return ret;
        });

        $(".removeAttractionX").live("click", function(){
            var thisLink = $(this);
            var uidPk = thisLink.attr("rel");
            sdi.cart.pt.removeAttraction(uidPk);
            return false;
        });
        
    }, //init

    over : function(event) {
        $(this).addClass('hover');
    },

    out : function(event) {
        $(this).removeClass('hover');
    }


}; //checkoutShipping


sdi.cart.events.checkoutConfirm = {
	options : {
        progress: 77
    },
    init : function(args){
        this.options = $.extend({}, this.options, args);
        $("#progressbar").progressbar({
            value: this.options.progress
        });

        $("#submitButton2").click(function(){
            $("#billship").submit(); 
        });

        $('#billship').submit(function(){
            $("#submit").attr("disabled", true);
        });

        $(".removeAttractionX").live("click", function(){
            var thisLink = $(this);
            var uidPk = thisLink.attr("rel");
            sdi.cart.pt.removeAttraction(uidPk);
            return false;
        });      
        
        $("#billship").submit(function() {
        	if (this.beenSubmitted) {
        		return false;
        	} else {
                this.beenSubmitted = true;
            }
        });
    }

}; //checkoutConfirm


sdi.cart.events.ptMainPage = {
    continueUrl:  "",

    init : function(){
        sdi.cart.events.common.pt.init();

        $("#modalContinue").click(function(){
            var numAdult = $("#modalNumAdult").val();
            var numChildren = $("#modalNumChildren").val();
            if(numAdult == "")
        		numAdult = 0;
        	if(numChildren == "")
        		numChildren = 0;
        	
            if((numAdult == "" && numChildren == "") || (numAdult == 0 && numChildren == 0)){
                alert("You need to enter at least 1 traveler to continue");
            } else {     	
                sdi.cart.ajax.setPtTravelers({"numAdults": numAdult, "numChildren": numChildren}, function(cartBean){
                    sdi.cart.pt.addAttraction(sdi.cart.curUidPk, function(){
                        $("#modal").dialog("close");
                        window.location.href = unescape(sdi.cart.events.ptMainPage.continueUrl);
                    });
                });
            }

            return false;
        });

        $("#modalKeepShopping").click(function(){
            var numAdult = $("#modalNumAdult").val();
            var numChildren = $("#modalNumChildren").val();
            if(numAdult == "")
        		numAdult = 0;
        	if(numChildren == "")
        		numChildren = 0;

            if((numAdult == "" && numChildren == "") || (numAdult == 0 && numChildren == 0)){
                alert("You need to enter at least 1 traveler to continue");
            } else {
                sdi.cart.ajax.setPtTravelers({"numAdults": numAdult, "numChildren": numChildren}, function(cartBean){
                    sdi.cart.pt.addAttraction(sdi.cart.curUidPk, function(){
                        $("#modal").dialog("close");
                    });
                });

             }

            return false;
        });

    }
}; //ptMainPage


sdi.cart.events.ptAttrationList = {
    init : function(){
        sdi.cart.events.common.pt.init();

        if($("input[name='categorySelect']:checked").size() < $("input[name='categorySelect']").size()){
            $(".expand ul").show();
        } else {
            $(".expand ul").hide();
        }

        $(".overflow div").addClass("overflowhidden");

        $(".toggle").click(function() {

            var thisPara = $(this);
            thisPara.toggleClass("selected");
            thisPara.next().toggle();
            return false;
        });

        $('.overflow a').click(function() {
            var thisLink = $(this);

            if (thisLink.next().hasClass("overflowhidden")) {
                thisLink.text("less");
            } else {
                thisLink.text("more");
            }
            thisLink.next().toggleClass("overflowhidden");
            thisLink.toggleClass("selected");
            return false;
        });

        $("#changeNumTravelers").click(function(){
            $('#stepOne').toggle('slow');
            return false;
        });

        //give focus to the num adult box
        $("input[name='numAdult']").focus();

        $(".summaryTooltip").tooltip({
            bodyHandler: function() {
                return $($(this).attr("href")).html();
            },
            showURL: false
        }).click(function(){
            return false;
        });

        $("#modalKeepShopping").click(function(){
            var numAdult = $("#modalNumAdult").val();
            var numChildren = $("#modalNumChildren").val();
            
            if(numAdult == "")
        		numAdult = 0;
        	if(numChildren == "")
        		numChildren = 0;
            
            if((numAdult == "" && numChildren == "") || (numAdult == 0 && numChildren == 0)){
                alert("You need to enter at least 1 traveler to continue");
            } else {
                sdi.cart.ajax.setPtTravelers({"numAdults": numAdult, "numChildren": numChildren}, function(cartBean){
                    sdi.cart.pt.addAttraction(sdi.cart.curUidPk);
                    $("#stepTwoNumAdult").text(numAdult);
                    $("#stepTwoNumChild").text(numChildren);

                    $("#stepOne").hide();
                    $("#stepTwo").show();
                    $("#modal").dialog("close");
                });
            }

            return false;
        });

    }

}; //ptAttrationList


sdi.cart.events.common = {

    pt : {
        init : function(){
            $(".addAttractionLink").click(function(){
                var thisLink = $(this);
                var uidPk = thisLink.attr("rel");
                sdi.cart.curUidPk = uidPk;
                sdi.cart.pt.addAttraction(uidPk);
                return false;
            });

            $(".removeAttractionLink").click(function(){
                var thisLink = $(this);
                var uidPk = thisLink.attr("rel");
                sdi.cart.curUidPk = uidPk;
                sdi.cart.pt.removeAttraction(uidPk);
                return false;
            });

            $(".removeAttractionX").live("click", function(){
                var thisLink = $(this);
                var uidPk = thisLink.attr("rel");
                sdi.cart.curUidPk = uidPk;
                sdi.cart.pt.removeAttraction(uidPk);
                return false;
            });

            $("#ptTravelersButton").click(function(){
                sdi.cart.pt.setPtTravelers();
                return false;
            });

            sdi.cart.events.common.cartAlertModal();
            sdi.cart.events.common.numTravelersModal();
            sdi.attractionModal.init();
        }
    },

    cartAlertModal : function(){
        //alert modal
        var modal = $("#alertModal");

        modal.dialog({
            autoOpen: true,
            closeOnEscape: false,
            resizable: false,
            draggable: true,
            modal: true,
            width: 600,
            height: 400,
            position: 'top',
            close: function(event, ui) {
                //empty cart        	
                sdi.cart.ajax.clearCartItems(function(cartBean){
                    location.reload();
                });
            },
            buttons: {
                "Empty my cart, keep shopping": function() {
                    //empty cart
                    if(modal.dialog("isOpen")){
                        sdi.cart.ajax.clearCartItems(function(cartBean){
                            location.reload();
                        });
                    }
                },
                "Cancel, return to previous page": function() {
                    history.back();
                }
            }

        });
    },

    numTravelersModal : function(){
        //modal
        $('#modal').dialog({
            autoOpen: false,
            resizable: false,
            draggable: false,
            modal: true,
            width: 600,
            height: 400,
            position: 'top',
            close: function(event, ui) {
                $("#loading_" + sdi.cart.curUidPk).hide();
                if(sdi.util.cookies.readCookie("sdiNumTravelers") == null){
                    $("#addAttraction_" + sdi.cart.curUidPk).show();
                    $("body").css("cursor", "auto");
                }
            }
        });
    }

};



