function handlePnBEquipmentError(xhr, status, error) {
	var errMsg = getErrorMessage(xhr, status, error);
	$("#ajaxContentContainer").html('<div class="largeGboxContainer"><span class="errorMessage">' + errMsg + '</span></div>');
}

$(document).ready(function () {
	$("[id$='btnContinue']").unbind("click").bind("click", SaveToCart);

	//Add click Event to SaveToTrip
	$("[id$='hlSave']").click(SaveToCart);
	DeactiveRemoveLink();
	displayContinueModal();

	var w = '';

	if ($('[id$=hdnMapDimensions]').length > 0) {
		w = Number($('[id$=hdnMapDimensions]').val().split(',')[0]);
	}

	if (w >= 960 || w == '') {
		w = 960;
	}

	//setting up the modal window attributes
	$('.equipmentRentalLocationMapModal').dialog({
		bgiframe: true,
		autoOpen: false,
		width: w,
		modal: true,
		resizable: false,
		position: 'center',
		closeOnEscape: true
	});

	attachFilterEvents(w);

	//setting up the modal window attributes
	$('.divShowWhatsThis').dialog({
		bgiframe: true,
		autoOpen: false,
		width: 460,
		height: 250,
		modal: true,
		resizable: false,
		position: 'center',
		closeOnEscape: true
	});

	$('.openModalWhatsThis').click(function () {
		try {
			$('.divShowWhatsThis').dialog('open');
		} catch (e) { }

		return false;
	});

	// accordian
	if ($('.accordion').text()) {
		$('.accordion').accordion({
			header: '.heading',
			collapsible: true
		});
	}

	if ($('#beavercreek').length > 0) {
		if (jQuery.browser.msie) {
			$('.singleColumn .equipmentRentalContainer ').css('padding', '0 10px');
		}
	}

	var fullURL = parent.document.URL.toLowerCase();
	var filterCriteria;
	var SelectedValue = $("select.ddlEquipRentalSelect").val();
	var StartDate = $("[id$='_txtStartDate']").val();
	var UserType = $(".userTypeLabel .userTypeItem input[type=radio]:checked").val();

	if (fullURL.indexOf('search=') != -1) {

		var hdEdidtedProductSKU = $("[id$='_hdEditedProductSKU']");
		var extractURL = fullURL.substring(fullURL.indexOf('search=') + 7, fullURL.length);
		var searchCriteria = extractURL.toString().split(',');

		if (searchCriteria.length == 5) {
			var sku = searchCriteria[1];
			var sellingComponentCode = searchCriteria[3];
			UserType = searchCriteria[4];
			filterCriteria = StartDate + "," + SelectedValue + "," + UserType + "," + sku + "," + sellingComponentCode;
		} else {
			UserType = searchCriteria[1];
			filterCriteria = StartDate + "," + SelectedValue + "," + UserType;
		}

	} else {
		filterCriteria = StartDate + "," + SelectedValue + "," + UserType;
	}

	// Set the Email Href value
	var newurl = $("input[id$=hidEmailVacation]").val() + '?Search=' + StartDate + "," + UserType;
	$(".emailVacationLink").attr('href', newurl);

	if ($("input[id$=hdnIsEquipmentRentalSaleable]").val().toLowerCase() == 'false') {

		$(".listFilterContainer").addClass("hideDiv");
		$(".liftTicketContainer").addClass("hideDiv");
		$(".liftTicketListFilters ").addClass("hideDiv");

	} else {

		initInterstitial();

		$("#ajaxContentContainer").showLoading({ loadingStr: "Please wait a moment while we search for your results", autoFocus: false });

		if ($("[id*=hidMinDays]").val()) {
			ApplyDataFilter();
		} else {
		$.ajax({
			type: "POST",
			url: "/vailresorts/sites/PlanningAndBooking/WebServices/EquipmentRental.svc/GetEquipmentRentalResults",
			async: true,
			data: "{\"filterCriteria\" : \"" + filterCriteria + "\"}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			success: function (msg) {

				if ($.browser.msie) {
					RenderHTML(msg);
					var hdnval = $("input.txtSearchClass").val();

					if (hdnval != "") {

						var arrSearch = hdnval.toString().split(',');

						if (arrSearch.length == 7) {
							AddEditedItemToBucket(arrSearch[0], arrSearch[1], arrSearch[2], arrSearch[3], arrSearch[4], arrSearch[5], arrSearch[6]);
						}
					}

					$(".selectThis").unbind('click').bind('click', function () {
						attachSelectModalWindow($(this));
					});
				} else {
					RenderHTML(msg);

					var hdnval = $("input.txtSearchClass").val();

					if (hdnval != "") {
						var arrSearch = hdnval.toString().split(',');

						if (arrSearch.length == 7) {
							AddEditedItemToBucket(arrSearch[0], arrSearch[1], arrSearch[2], arrSearch[3], arrSearch[4], arrSearch[5], arrSearch[6]);
						}
					}

					TagEquipmentRentalResults();

					$(".selectThis").unbind('click').bind('click', function () {
						attachSelectModalWindow($(this));
					});
				}

				hideInterstitial();
			},
			error: function (xhr, status, error) {
				handlePnBEquipmentError(xhr, status, error);
			}
		});
	}
	}

	//Ajax Call to the Equipment rental Service
	$("select.ddlEquipRentalSelect").change(function () {
		ApplyDataFilter();
	});

	//Ajax Call to the Group Lesson Service on click of sales location radio button
	$(".userTypeLabel .userTypeItem input:radio").unbind("click").bind("click", function () {
		var StartDate = $("[id$='_txtStartDate']").val();
		var UserType = $(".userTypeLabel .userTypeItem input[type=radio]:checked").val();
		var newurl = $("input[id$=hidEmailVacation]").val() + '?Search=' + StartDate + "," + UserType;
		$(".emailVacationLink").attr('href', newurl);
		ApplyDataFilter();
	});

	$(".equipmentSplList .collapsibleLink").click(function () {
		var $childLayer = $(this).parents("li").find("ul");
		var me = this;
		$childLayer.slideToggle(350, function () {
			if ($childLayer.css("display") == "none") {
				$(me).attr("src", "/VailResorts/sites/PlanningAndBooking/assets/img/iconPlus.gif");
			} else {
				$(me).attr("src", "/VailResorts/sites/PlanningAndBooking/assets/img/iconMinus.gif");
			}
		});
	});

	$("li.equipTypeItem input.btnChkbox").click(function () {
		var clsName = getEquipClassName(this);
		if (this.checked) {
			$("ul.draggableArea ." + clsName).show();
		} else {
			$("ul.draggableArea ." + clsName).hide();
		}
	});

	var sliderMin = $("[id*=hidMinDays]").val();
	var sliderMax = $("[id*=hidMaxDays]").val();
	$("#daySlider").slider({
		animate: true,
		range: true,
		min: 1,
		max: 7,
		step: 1,
		values: [sliderMin || 1, sliderMax || 7],
		change: function (event, ui) {
			// Set the min & max days of slider in hidden variable
			$("[id*=hidMinDays]").val(ui.values[0]);
			$("[id*=hidMaxDays]").val(ui.values[1]);

			ApplyDataFilter();
			//ticketFilter(ui.values[0], ui.values[1]);
		}
	});

	//Init datepicker calendar
	var cal = $("input[name='startDateTextField']").datepicker({
		showOn: 'button',
		buttonImage: 'assets/img/icon_calender.gif',
		buttonImageOnly: true,
		maxDate: '+1y',
		minDate: '0',
		onSelect: function (dateText, inst) { updateSeason(this) }
	});

	$("#startDatePicker").click(function () {
		$("input[name='startDateTextField']").datepicker('show');
	});

	$('div#iFrameModal').dialog({
		bgiframe: true,
		autoOpen: false,
		width: 700,
		height: 600,
		modal: true,
		resizable: false,
		position: 'center',
		closeOnEscape: true
	});

	$(".mapOfLocations").click(function () {
		var mapUrl = $(this).attr('href');
		$('div#iFrameModal iframe').attr({
			src: mapUrl,
			width: '100%',
			height: '100%',
			scrolling: 'no'
		});
		$('div#iFrameModal').dialog('open');
		$('.ui-widget-overlay').css('z-index', 2000);
		$('.ui-dialog').css('z-index', 5000);
		return false;
	});

	$('#equipWhatIsThisDialog').dialog({
		bgiframe: true,
		autoOpen: false,
		width: 960,
		modal: true,
		resizable: false,
		position: 'center',
		closeOnEscape: true
	});
});

//Function Name : displayContinueModal
//Purpose : This function is used to open modal window
//Parameters : NA

function displayContinueModal() {
	$('.saveToTripDialog').dialog({
		bgiframe: true,
		autoOpen: false,
		width: 960,
		height: 855,
		modal: true,
		resizable: false,
		position: 'center',
		closeOnEscape: true
	});

	// Open dialog for lists
	$('.lgbSave .linkSave').unbind("click").bind("click", function (e) {
		e.preventDefault();
		var urlContent = $(this).attr('href');

		$('body > .ui-dialog .saveToTripDialog iframe')
	        .attr('src', urlContent)
	        .attr('width', '100%')
	        .attr('height', '100%')
	        .attr('scrolling', 'no');
		$('body > .ui-dialog .saveToTripDialog').dialog('open');

		return false;
	});

	// Open dialog for bucket
	$('.linkLeftAligned').click(function (e) {
		e.preventDefault();

		if ($("#droppable ul li").length <= 0) {
			var divError = $("#customErrorMessages")
			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$='_hdEquipments']");
		var hdnField = hd.val();
		var urlContent = $(this).attr('href') + "&ProductId=" + hdnField;

		$('.saveToTripDialog iframe')
	        .attr('src', urlContent)
	        .attr('width', '100%')
	        .attr('height', '100%')
	        .attr('scrolling', 'no');

		$('.saveToTripDialog').dialog('open');

		return false;
	})
};

//Function Name : attachFilterEvents
//Purpose : This function is used to bind all the required events to the controls
function attachFilterEvents(w) {
	$('.equipmentRentalLocationMap').click(function (e) {
		e.preventDefault();

		// grabs url from href and loads it into the modal window
		var urlContent = $(this).attr('href');
		$(".equipmentRentalLocationMapModal img").attr("src", "").attr("src", urlContent).attr("width", w - 20);
		$('.equipmentRentalLocationMapModal').dialog('open');
		$('.ui-widget-overlay').css('z-index', 2000);
		$('.ui-dialog').css('z-index', 5000);

		return false;
	});
};

function ApplyDataFilter() {
	var StartDate = $("[id$='_txtStartDate']").val();

	if (StartDate != "") {
		var SortValue = $("select.ddlEquipRentalSelect").val();
		var minDay = $("[id*=hidMinDays]").val();
		var maxDay = $("[id*=hidMaxDays]").val();
		var EquipmentType = GetEquipmentType();
		var UserType = $(".userTypeLabel .userTypeItem input[type=radio]:checked").val();
		var filterCriteria = StartDate + "," + SortValue + "," + minDay + "," + maxDay + "," + EquipmentType + "," + UserType;

		$("#ajaxContentContainer").showLoading({ loadingStr: "Please wait a moment while we search for your results", autoFocus: false });

		$.ajax({
			type: "POST",
			url: "/vailresorts/sites/PlanningAndBooking/WebServices/EquipmentRental.svc/GetEquipmentRentalFilteredResults",
			data: "{\"filterCriteria\" : \"" + filterCriteria + "\"}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			success: function (msg) {
				RenderHTML(msg);

				$(".selectThis").unbind('click').bind('click', function () {
					attachSelectModalWindow($(this));
				});

				hideInterstitial();
			},
			error: function (xhr, status, error) {
				handlePnBEquipmentError(xhr, status, error);
			}
		});
	} else {
		var SortValue = $("select.ddlEquipRentalSelect").val();
		var minDay = $("[id*=hidMinDays]").val();
		var maxDay = $("[id*=hidMaxDays]").val();
		var EquipmentType = GetEquipmentType();
		var UserType = $(".userTypeLabel .userTypeItem input[type=radio]:checked").val();
		var filterCriteria = "InvalidDate" + "," + SortValue + "," + minDay + "," + maxDay + "," + EquipmentType + "," + UserType;

		initInterstitial();

		$("#ajaxContentContainer").showLoading({ loadingStr: "Please wait a moment while we search for your results", autoFocus: false });

		$.ajax({
			type: "POST",
			url: "/vailresorts/sites/PlanningAndBooking/WebServices/EquipmentRental.svc/GetEquipmentRentalFilteredResults",
			data: "{\"filterCriteria\" : \"" + filterCriteria + "\"}",
			contentType: "application/json; charset=utf-8",
			dataType: "json",
			success: function (msg) {
				RenderHTML(msg);

				$(".selectThis").unbind('click').bind('click', function () {
					attachSelectModalWindow($(this));
				});

				hideInterstitial();
			},
			error: function (xhr, status, error) {
				handlePnBEquipmentError(xhr, status, error);
			}
		});
	}
}

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) {

	if (parseInt($(this).html()) >= parseInt(minDays) && parseInt($(this).html()) <= parseInt(maxDays)) {
		$(arrRows[i]).parents("li").show();
	} else {
		$(arrRows[i]).parents("li").hide();
	}

	});
	$(".draggableArea li").removeClass("first");
	$(".draggableArea li:visible:first").addClass("first");

	if ($(".draggableArea li:visible").length > 0) {
		$(".largeGboxContainer .errorMessage").addClass("hideDiv");
	} else {
		$(".largeGboxContainer .errorMessage").removeClass("hideDiv");
	}
}

function addTicketToTray(draggedObj) { //alert('hi003');
	var droplet = $("#dropTemplate :first").clone().appendTo(
		$("<li></li>").appendTo("#droppable ul")
	);

	var hiddenSelectedSKU = droplet.find("input[name='hdSelectedSKU']");
	var hiddenSelectedSCCode = droplet.find("input[name='hdSelectedSellingCompCode']");
	var hiddenSelectedPStartDate = droplet.find("input[name='hdSelectedPStartDate']");
	var hiddenSelectedUserType = droplet.find("input[name='hdSelectedUserType']");

	hiddenSelectedSKU.val(draggedObj.find(".lgbMoreInfoDialogContent .hdSKU #hdEquipmentSKU").val());
	hiddenSelectedSCCode.val(draggedObj.find(".lgbMoreInfoDialogContent .hdSKU #hdSellingCompCode").val());
	hiddenSelectedPStartDate.val(draggedObj.find(".lgbMoreInfoDialogContent .ProductStartDate .hdPStartDate").val());
	hiddenSelectedUserType.val($(".userTypeLabel .userTypeItem input[type=radio]:checked").val());

	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();
	});
	
	if ($("#droppable ul li").length > 0) {
		ActiveRemoveLink();
		var divError = $("#customErrorMessages")
		divError.html('');
	}
}

function clearPurchaseTray() {
	$(".dropItem li").not("#hiddenDroppableTicketTemplate").remove();
	DeactiveRemoveLink();
}

function equipmentRentalFilter() {
	var StartDate = $("[id$='_txtStartDate']").val();

	
	if (StartDate != "") {
		$("[id$='_reqdStartDateValidator']").hide();

		var SortValue = $("select.ddlEquipRentalSelect").val();
		var EquipmentType = GetEquipmentType();
		var UserType = $(".userTypeLabel .userTypeItem input[type=radio]:checked").val();
		var filterCriteria = StartDate + "," + SortValue + "," + EquipmentType + "," + UserType;

		// Set the Email Href value
		var newurl = $("input[id$=hidEmailVacation]").val() + '?Search=' + StartDate + "," + UserType;
		$(".emailVacationLink").attr('href', newurl);

		////AM
		initInterstitial();

		$("#ajaxContentContainer").showLoading({ loadingStr: "Please wait a moment while we search for your results", autoFocus: false });

		$.ajax({
            type: "POST",
            url: "/vailresorts/sites/PlanningAndBooking/WebServices/EquipmentRental.svc/GetEquipmentRentalFilteredResults",
            data: "{\"filterCriteria\" : \"" + filterCriteria + "\"}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
            	RenderHTML(msg);

            	// Modal dialog for save
            	displayContinueModal();

            	$(".selectThis").unbind('click').bind('click', function () {
            		attachSelectModalWindow($(this));
            	});           	
            	
            	hideInterstitial();
            },
            error: function (xhr, status, error) {
            	handlePnBEquipmentError(xhr, status, error);
            }
        });
	} else {
		$("[id$='_reqdStartDateValidator']").show();
	}
}

function SelectEquipmentFilters() {

	var StartDate = $("[id$='_txtStartDate']").val();
	var SortValue = $("select.ddlEquipRentalSelect").val();
	var EquipmentType = "";

	if ($("[id*=equipTypeSkiing]").is(":checked") == true && $("[id*=equipTypeSnowboarding]").is(":checked") == true) {
		EquipmentType = $("[id*=equipTypeSkiing]").val() + "~" + $("[id*=equipTypeSnowboarding]").val();
	} else if ($("[id*=equipTypeSkiing]").is(":checked") == true && $("[id*=equipTypeSnowboarding]").is(":checked") == false) {
		EquipmentType = $("[id*=equipTypeSkiing]").val() + "~";
	} else if ($("[id*=equipTypeSkiing]").is(":checked") == false && $("[id*=equipTypeSnowboarding]").is(":checked") == true) {
		EquipmentType = "~" + $("[id*=equipTypeSnowboarding]").val();
	} else {
		EquipmentType = "undefined";
	}

	var UserType = $(".userTypeLabel .userTypeItem input[type=radio]:checked").val();
	var filterCriteria = StartDate + "," + SortValue + "," + EquipmentType + "," + UserType;

	$("#ajaxContentContainer").showLoading({ loadingStr: "Please wait a moment while we search for your results", autoFocus: false });

	$.ajax({
		type: "POST",
		url: "/vailresorts/sites/PlanningAndBooking/WebServices/EquipmentRental.svc/GetEquipmentRentalFilteredResults",
		data: "{\"filterCriteria\" : \"" + filterCriteria + "\"}",
		contentType: "application/json; charset=utf-8",
		dataType: "json",
		success: function (msg) {
			RenderHTML(msg);

			if ($("[id*=hidMinDays]").val().length > 0) {
				ticketFilter($("[id*=hidMinDays]").val(), $("[id*=hidMaxDays]").val());
			}

			$(".selectThis").unbind('click').click(function () {
				attachSelectModalWindow($(this));
			});

			hideInterstitial();
		},
		error: function (xhr, status, error) {
			handlePnBEquipmentError(xhr, status, error);
		}
	});
}

function RenderHTML(msg) {
	$('#ajaxContentContainer').removeClass('loading');

	$('#ajaxContentContainer').html(msg.d);

    
	$(".draggable").show();

	$(".draggableArea li:first").addClass("first");

	if ($("#dialogContainer").length == 0) {
		$("body").append('<div id="dialogContainer"></div>');
		$('#dialogContainer').dialog({
			bgiframe: true,
			autoOpen: false,
			width: 500,
			modal: true,
			resizable: false,
			position: 'center',
			closeOnEscape: true
		});
	}

	$("a.lgbMoreInfo").click(function () {
		var content = $(this).next(".lgbMoreInfoDialogContent").html();
		//$('#dialogContainer').html("<div class='gradientBox'>" + content + "</div>").dialog('open');
		$('#dialogContainer').html('<div class="gBoxWrapper"><div class="gradientBoxTopLeft"><span></span></div><div class="gradientBoxMiddleLeft"><div class="gradientBoxMiddleRight"><div class="gradientBoxContentWrapper gBoxContentContainer">' + content + '</div></div></div><div class="gradientBoxBottomLeft"><span></span></div></div>').dialog('open');
		//$(".gradientBox").gBox({ theme:"gradientBox"});

		return false;
	});

	$(".draggable").draggable({
		helper: 'clone',
		start: function (event, ui) {
			ui.helper.css("width", $(this).outerWidth());
		}
	});
	
	//Make ticket price boxes draggable
	$("#droppable").droppable({
    	drop: function (event, ui) {
    		addTicketToTray(ui.draggable);
    	},
    	tolerance: "touch"
    });

	displayContinueModal();
}

function SaveToCart() {

	if ($("#droppable ul li").length <= 0) {
		var divError = $("#customErrorMessages")
		var errorMsg = "<span id='lblErrorMessage' class='errorMessage'>Please select a product before proceeding.</span>";
		divError.html(errorMsg);
		return false;
	}

	/* KR artf1041404 - To prevent multi clicks on the button */
	var thisButton = $(arguments.callee.caller.arguments[0].target);
	$("<img src='/VailResorts/sites/global/assets/img/blank.gif' alt='' class='buttonLayer' />").prependTo(thisButton.parent());
	$(".buttonLayer").css("width", ($(thisButton).width() + 30));
	$(".buttonLayer").css("left", $(thisButton).position().left);
	$(".buttonLayer").css("height", ($(thisButton).height() + 5));

	var hd = $("[id$='_hdEquipments']");

	hd.val("");

	$('.dropItem li').each(function (i) {
		if (hd.val() == '') {
			hd.val($(this).find('.boxData #hdSelectedSKU').val() + '|' + $(this).find('.boxData #hdSelectedPStartDate').val() + '|' + $(this).find('.boxData #hdSelectedSellingCompCode').val() + '|' + $(this).find('.boxData #hdSelectedUserType').val());
		}
		else {
			hd.val(hd.val() + ',' + $(this).find('.boxData #hdSelectedSKU').val() + '|' + $(this).find('.boxData #hdSelectedPStartDate').val() + '|' + $(this).find('.boxData #hdSelectedSellingCompCode').val() + '|' + $(this).find('.boxData #hdSelectedUserType').val());
		}
	});

	if (hd.val() == '') {
		return false;
	}

	return true;
}

///<summary>
///This method is used to add the edited product to the bucket
///</summary>
function AddEditedItemToBucket(sku, startDate, price, name, noOfDays, sellingComponentCode, userType) {
	var ul = $('.dropTray .dragDropBoxMiddle #droppable .dropItem');
	var hdStartDate = "<input id='hdSelectedPStartDate' name='hdSelectedPStartDate' type='hidden' value='" + startDate + "'/>";
	var hdSKU = "<input id='hdSelectedSKU' name='hdSelectedSKU' type='hidden' value='" + sku + "'/>";
	var hdSCC = "<input id='hdSelectedSellingCompCode' name='hdSelectedSellingCompCode' type='hidden' value='" + sellingComponentCode + "'/>";
	var hdUserType = "<input id='hdSelectedUserType' type='hidden' name='hdSelectedUserType' value='" + userType + "'/>";
	var spanImage = "<span class='iconDelete'><img alt='Delete' src='/VailResorts/sites/PlanningAndBooking/assets/img/iconDelete.gif'/></span>";
	var spanName = "<h6><span class='type'>" + name + "</span>- <span class='days'>" + noOfDays + " Days</span></h6>";
	var spanPrice = "<span class='amount'>$" + price + "</span>";
	ul.html("<li><div class='boxData clearfix'>" + spanImage + " " + hdSKU + " " + hdSCC + " " + hdUserType + " " + hdStartDate + " " + spanName + " " + spanPrice + " </div></li>");

	$(".dropTray .dragDropBoxMiddle #droppable .dropItem .boxData .iconDelete").click(function () {
		$(this).parents("li").remove();
		DeactiveRemoveLink();
	});

	ActiveRemoveLink();
}

//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", "javascript:void(0);");
		$(".linkClear").css("cursor", "text");
		$(".linkClear").css("textDecoration", "none");
	}
}

function animateToTray(obj) {
	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,
		'z-index': 9999
	});

	animationObj.prependTo(myParentContainer);
	animationObj.animate({
		'top': endPosY,
		'left': endPosX
	}, 800, function () {
		addTicketToTray(animationObj);
		$(this).fadeOut(function () {
			$(this).remove();
		});
	});
}

function GetEquipmentType() {
	var EquipmentType = "";

	if ($("[id*=equipTypeSkiing]").is(":checked") == true && $("[id*=equipTypeSnowboarding]").is(":checked") == true) {
		EquipmentType = $("[id*=equipTypeSkiing]").val() + "~" + $("[id*=equipTypeSnowboarding]").val();
	} else if ($("[id*=equipTypeSkiing]").is(":checked") == true && $("[id*=equipTypeSnowboarding]").is(":checked") == false) {
		EquipmentType = $("[id*=equipTypeSkiing]").val() + "~";
	} else if ($("[id*=equipTypeSkiing]").is(":checked") == false && $("[id*=equipTypeSnowboarding]").is(":checked") == true) {
		EquipmentType = "~" + $("[id*=equipTypeSnowboarding]").val();
	} else {
		EquipmentType = "undefined";
	}

	return EquipmentType;
}

function SetStartDate(startDate) {
	$("[id$='_txtStartDate']").val(startDate);
	$("input[id$=hdnDataCount]").val('');
}

function attachSelectModalWindow(obj) {
	var clickedItem = obj.closest(".largeGbox");

	AddSelectModalWindow(window.event, clickedItem);

	if (jQuery.browser.msie) {
		$('#datePickerModalRental .selectStartDate').css('height', 'auto');
		$('#datePickerModalRental span.btnGrey input').css('overflow', 'visible');
		$('#datePickerModalRental span.btnGrey input').css('margin-right', '8px');
	}
}

function AddSelectModalWindow(event, ui) {
	$("body").find("#datePickerModalRental").remove();
	var datePickerModalRental = $("#datePickerModalRental");
	$("body").append("<div id='datePickerModalRental'></div>");
	datePickerModalRental = $("#datePickerModalRental");

	datePickerModalRental.html(['',
		'<div id="datePickerModal">',
		'<div class="gBoxWrapper">',
			'<div class="roundedCornerTopLeft"><span></span></div>',
			'<div class="roundedCornerMiddleLeft">',
				'<div class="roundedCornerMiddleRight gBoxContentContainer">',
					'<div class="whiteBox">',
							'<div class="selectStartDate">',
								'<ul>',
									'<li>',
										'<span>Start Date:</span>',
										'<input name="rentalSelectedDate" type="text" class="textBoxSmall withCalendar" />',
										'<span class="lblQuantity">Quantity:</span>',
										'<select name="quantity" id="quantity" class="quantity">',
											'<option value="1" selected>1</option>',
											'<option value="2">2</option>',
											'<option value="3">3</option>',
											'<option value="4">4</option>',
											'<option value="5">5</option>',
											'<option value="6">6</option>',
											'<option value="7">7</option>',
											'<option value="8">8</option>',
											'<option value="9">9</option>',
											'<option value="10">10</option>',
										'</select>',
									'</li>',
									'<li>',
									'<div class="clearfix">',
										'<span class="btnGrey"><input type="button" id="btnAddAndViewCart" value="Add & View Cart" /></span>',
										'<span class="btnGrey"><input type="button" id="btnAddAndSelectAnotherRental" value="Add & Select Another Rental" /></span>',
										'<span class="btnGrey"><input type="button" id="btnCancel" value="Cancel" /></span>',
									'</div>',
								'</li>',
							'</ul>',
						'</div>',
					'</div>',
				'</div>',
			'</div>',
			'<div class="roundedCornerBottomLeft"><span></span></div>',
		'</div>',
	'</div>'
	].join(''));

	datePickerModalRental.dialog({
		bgiframe: true,
		autoOpen: false,
		width: 500,
		modal: true,
		resizable: false,
		position: 'center',
		closeOnEscape: true
	});

	datePickerModalRental.bind('dialogbeforeclose', function (event, ui) {
		datePickerModalRental.find(".withCalendar").datepicker('hide', 1);
	});

	var buttonImg = "";
	var bodyId = $('body').attr('id');

	switch (bodyId) {
		case 'keystone':
			buttonImg = '/VailResorts/sites/Keystone/assets/img/icon_calender.gif';
			break;

		case 'breckenridge':
			buttonImg = '/VailResorts/sites/breckenridge/assets/img/icon_calender.gif';
			break;

		case 'beavercreek':
			buttonImg = '/VailResorts/sites/beavercreek/assets/img/icon_calendar.gif';
			break;

		case 'vail':
			buttonImg = '/VailResorts/sites/vail/assets/img/icon_calender.gif';
			break;

		case 'heavenly':
			buttonImg = '/VailResorts/sites/heavenly/assets/img/icon_calender.gif';
			break;
	}

	$(".withCalendar", datePickerModalRental).datepicker({
		showOn: 'both',
		buttonImage: buttonImg,
		buttonImageOnly: true,
		defaultDate: '11/18/2011',
		beforeShow: function () {
			setTimeout(function () {
				$(".ui-datepicker-calendar tbody td a").trigger("mouseover").trigger("mouseout");
			}, 100);
		}
	});

	datePickerModalRental.find("#btnCancel").click(function () {
		datePickerModalRental.dialog("close");
	});

	datePickerModalRental.find("#btnAddAndSelectAnotherRental").click(function () {
		var isValidDate = ValidDateRentalModal();
		if (isValidDate == true) {
			getValuesOfSelectedItem(ui);
			var doCloseModalWindow = checkAvailibility(false);
			if (doCloseModalWindow == true) {
				datePickerModalRental.dialog("close");
				window.location.reload(true);
			}
		}
	});

	datePickerModalRental.find("#btnAddAndViewCart").click(function () {
		var isValidDate = ValidDateRentalModal();
		if (isValidDate == true) {
			getValuesOfSelectedItem(ui);
			var doCloseModalWindow = checkAvailibility(true);
			if (doCloseModalWindow == true) {
				datePickerModalRental.dialog("close");
			}
		}
	});

	var todaysDate = createDateObj($(".hiddenTodaysDate").val());
	var startDate;
	if ($(".dateSelection .textBoxSmall.withCalendar.hasDatepicker").val() != '') {
		startDate = createDateObj($(".dateSelection .textBoxSmall.withCalendar.hasDatepicker").val());
	} else {
		startDate = createDateObj($(".hiddenTodaysDate").val());
		startDate.setDate(todaysDate.getDate() + 2);
	}

	var endDate = createDateObj($(".hiddenTodaysDate").val());
	endDate.setDate(todaysDate.getDate() + 365);
	$(".withCalendar", datePickerModalRental).datepicker('option', 'minDate', startDate);
	datePickerModalRental.find(".selectStartDate input:text").val(createDateStr(startDate));
	$(".withCalendar", datePickerModalRental).datepicker('option', 'maxDate', endDate);

	$(".withCalendar", datePickerModalRental).datepicker('disable');
	datePickerModalRental.dialog('open');
	$('.ui-widget-overlay').css('z-index', 2000);
	$('.ui-dialog').css('z-index', 5000);
	$(".withCalendar", datePickerModalRental).datepicker('enable');
}

// Create a date object from an american date format mm/dd/yyyy
function createDateObj(str) {
	if (str == null) { return null; }

	if (str.indexOf("/") > -1) {
		var arrDate = str.split("/");
		var strDate = [arrDate[2], arrDate[0], arrDate[1]].join("/");
		var o = new Date(strDate);
		if (o.toString() == "NaN") {
			return null;
		} else {
			return o;
		}
	} else {
		var arrMonth = ["", "january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"];

		var arrDate = str.split(",");
		var month = $.trim(arrDate[1]).split(" ")[0];
		month = ($.inArray(month.toLowerCase(), arrMonth)).toString();
		var date = $.trim(arrDate[1]).split(" ")[1];
		var year = $.trim(arrDate[2]).split(" ")[0];
		var strDate = [year, month, date].join("/");
		var o = new Date(strDate);
		
		if (o.toString() == "NaN") {
			return null;
		} else {
			return o;
		}
	}
}

function getValuesOfSelectedItem(obj) {
	var clickedItem = obj.closest(".largeGbox");
	var selectedRental = $("[id$='hdnSelectedEquipmentRenatal']");
	var StartDate = $(".selectStartDate input[type=text]").val();
	var UserType = $(".userTypeLabel .userTypeItem input[type=radio]:checked").val();
	selectedRental.val(StartDate + '|' + clickedItem.find('#hdEquipmentSKU').val() + '|' + clickedItem.find('#hdSellingCompCode').val() + '|' + UserType);
}

function checkAvailibility(clickedButton) {
	var doCloseWindow = false;
	var selectedRental = $("[id$='hdnSelectedEquipmentRenatal']").val();
	var StartDate = $(".selectStartDate input[type=text]").val();
	var rentalEditProduct = $("[id$='hdnRentalEditProduct']").val();
	var SortValue = $("select.ddlEquipRentalSelect").val();
	var minDay = $("[id*=hidMinDays]").val();
	var maxDay = $("[id*=hidMaxDays]").val();
	var EquipmentType = GetEquipmentType();
	var UserType = $(".userTypeLabel .userTypeItem input[type=radio]:checked").val();
	var filterCriteria = StartDate + "," + SortValue + "," + minDay + "," + maxDay + "," + EquipmentType + "," + UserType;
	var rentalQuantity = $(".selectStartDate select.quantity").val();

	//Code to show spinner
	$("#datePickerModalRental").find(".selectStartDate ul li.errorMessageModalWindow").remove();
	$("#datePickerModalRental").find(".selectStartDate ul").prepend("<li class='errorMessageModalWindow'></li>");
	$(".errorMessageModalWindow").showLoading({ loadingStr: "Please wait a moment while we search for your results", autoFocus: false });

	$.ajax({
		type: "POST",
		url: "/vailresorts/sites/PlanningAndBooking/WebServices/EquipmentRental.svc/CheckAvailibilityForSelectedRental",
		data: "{\"filterCriteria\" : \"" + filterCriteria + "\",\"selectedRental\" : \"" + selectedRental + "\",\"rentalEditProduct\" : \"" + rentalEditProduct + "\",\"rentalQuantity\" : \"" + rentalQuantity + "\"}",
		async: false,
		contentType: "application/json; charset=utf-8",
		dataType: "json",
		success: function (msg) {
			var response = msg.d;
			//Button clicked is add and view
			if (clickedButton == true) {
				if (response.indexOf('http') >= 0) {
					parent.window.location = msg.d;
					doCloseWindow = true;
					$("#datePickerModalRental").find(".selectStartDate ul li.errorMessageModalWindow").remove();
				} else {
					$("#datePickerModalRental").find(".selectStartDate ul li.errorMessageModalWindow").remove();
					$("#datePickerModalRental").find(".selectStartDate ul").prepend("<li class='errorMessageModalWindow errorMessage'>" + msg.d + "</li>");
				}
			} else {
				if (response.indexOf('http') >= 0) {
					//remain on same page and add the product to cart
					doCloseWindow = true;
					$("#datePickerModalRental").find(".selectStartDate ul li.errorMessageModalWindow").remove();
				} else {
					$("#datePickerModalRental").find(".selectStartDate ul li.errorMessageModalWindow").remove();
					$("#datePickerModalRental").find(".selectStartDate ul").prepend("<li class='errorMessageModalWindow errorMessage'>" + msg.d + "</li>");
				}
			}
		},
		error: function (xhr, status, error) {
			handlePnBEquipmentError(xhr, status, error);
		}
	});

	return doCloseWindow;
}

function createDateStr(date) {
	if (date == null) {
		return null; 
	}
	
	if (typeof date == "string") {
		date = createDateObj(date);
	}

	return date.getMonth() + 1 + "/" + date.getDate() + "/" + date.getFullYear();
}

function ValidDateRentalModal() {
	var todaysDate = createDateObj($(".hiddenTodaysDate").val());
	var startDate = createDateObj($(".hiddenTodaysDate").val());
	startDate.setDate(todaysDate.getDate() + 2);
	var validDate = startDate;
	startDate = $(".selectStartDate input[type=text]").val();
	var errorMessagedate = "You have entered the following invalid data:<br><ul><li>Rental Start Date - date format must be MM/DD/YYYY</li></ul><br>Please re-enter your data.";
	var today = new Date();
	var errorMessageRequiredDate = "Please complete the following required fields:<br><ul><li>Start Date </ul></li>";
	var errorMessagePriorDate = "You have entered the following invalid data:<br><ul><li>Rental Start Date - Start Date must be greater than current date.</li></ul><br>Please re-enter your data.";
	
	$("#datePickerModalRental").find(".selectStartDate ul li.errorMessageModalWindow").remove();
	
	if (startDate == '') {
		$("#datePickerModalRental").find(".selectStartDate ul li.errorMessageModalWindow").remove();
		$("#datePickerModalRental").find(".selectStartDate ul").prepend("<li class='errorMessageModalWindow errorMessage'>" + errorMessageRequiredDate + "</li>");
		return false;
	} else {
        var myDate = new Date(startDate);   
		var minValidDate = new Date(validDate);
		
		if (myDate == "Invalid Date" || myDate == "NaN") {
			$("#datePickerModalRental").find(".selectStartDate ul li.errorMessageModalWindow").remove();
			$("#datePickerModalRental").find(".selectStartDate ul").prepend("<li class='errorMessageModalWindow errorMessage'>" + errorMessagedate + "</li>");
			
			return false;
		} else if (IsDateMMDDYYYY(startDate) == false) {
			$("#datePickerModalRental").find(".selectStartDate ul li.errorMessageModalWindow").remove();
			$("#datePickerModalRental").find(".selectStartDate ul").prepend("<li class='errorMessageModalWindow errorMessage'>" + errorMessagedate + "</li>");
			
			return false;
		} else if (today > myDate) {
			var errorDateMessage = 'You have entered an invalid date, ' + createDateStr(startDate) + '. Please revise your date to be ' + createDateStr(validDate) + ' or later.';

			$("#datePickerModalRental").find(".selectStartDate ul li.errorMessageModalWindow").remove();
			$("#datePickerModalRental").find(".selectStartDate ul").prepend("<li class='errorMessageModalWindow errorMessage'>" + errorDateMessage + "</li>");
			
			return false;
		} else if (myDate < minValidDate) {
			var errorDateMessage = 'You have entered an invalid date, ' + createDateStr(startDate) + '. Please revise your date to be ' + createDateStr(validDate) + ' or later.';

			$("#datePickerModalRental").find(".selectStartDate ul li.errorMessageModalWindow").remove();
			$("#datePickerModalRental").find(".selectStartDate ul").prepend("<li class='errorMessageModalWindow errorMessage'>" + errorDateMessage + "</li>");
			
			return false;
		} else if (IsMaximumDateRange(myDate)) {
			$("#datePickerModalRental").find(".selectStartDate ul li.errorMessageModalWindow").remove();
			$("#datePickerModalRental").find(".selectStartDate ul").prepend("<li class='errorMessageModalWindow errorMessage'>" + "You have entered the following invalid data:<br><ul><li>Rental Start date should not be more then 365 days from now.</li></ul>Please re-enter your data." + "</li>");
			
			return false;
		} else {
			$("#datePickerModalRental").find(".selectStartDate ul li.errorMessageModalWindow").remove();
			$("#datePickerModalRental").find(".selectStartDate ul").prepend("<li class='errorMessageModalWindow errorMessage'>" + "" + "</li>");
			
			return true;
		}
	}
}
