﻿/// <reference path="/common/templates/hotel/_shared/scripts/jquery-1.3.2-vsdoc.js" />

/*
* Namespace for RF Hotel_1. All the functionalities in this namespace
* are hotel_1 type specific (e.g. balmoral, amigo, etc. Choo 20/07/2009)
*/
var RF = window.RF ||
{};

RF.Hotel_1 = {};

RF.Hotel_1 = (function() {

	var fastSpeed = 500;
	var slowSpeed = 1000;

	function init() {
		heartbeat();
		checkAvailability();
		roomsAndSuites();
		groupRates();
		offersAndPackages();
		roccoBE();
		corporateLogin();
		genericSliding(".hub_rates_container");
		genericSlideShow(".hub_rates_container", ".hub_rates_image_container");
		genericSliding(".custom_suites_container");
		genericSlideShow(".custom_suites_container", ".custom_suites_image_container");
	}

	function heartbeat() {
		try {
			setInterval("PageMethods.Heartbeat();", 60000);
		} catch (e) { }
	}

	function roomsAndSuites() {
		$(".dlink_details").hide();
		var showDetails = $("#ShowDetailsDlinkHiddenField").val();
		var hideDetails = $("#HideDetailsDlinkHiddenField").val();
		$(".dlink_room_trigger").html(showDetails);
		$(".dlink_room_trigger").click(function(e) {
			if ($(this).html() == showDetails) {
				$(this).html(hideDetails);
			}
			else {
				$(this).html(showDetails);
			}
			if ($(this).parent().parent().next().find(".dlink_details").is(":visible") == false) {
				$(this).parent().parent().next().find(".dlink_details").slideDown(fastSpeed);
			}
			else {
				$(this).parent().parent().next().find(".dlink_details").slideUp(fastSpeed);
			}
			e.preventDefault();
		});
	}

	function groupRates() {
		$(".group_rates_container .each .content").hide();
		$(".group_rates_container .each .findoutmore").click(function(e) {
			if ($(this).nextAll(".content").is(":visible") == false) {
				$(this).nextAll(".content").slideDown(fastSpeed);
			}
			else {
				$(this).nextAll(".content").slideUp(fastSpeed);
			}
			e.preventDefault();
		});
	}

	function offersAndPackages() {
		$(".dlink_rate_container .dlink_rate_table tr").each(function() {
			if ($(this).attr("class").match("active") == null) {
				$(this).hide();
			}
		});
		if ($("#dlink_rate_list").find("li.active").size() == 0) {
			$("#dlink_rate_list").find("li").eq(0).addClass("active");
		}

		$("#dlink_rate_list .trigger").click(function(e) {
			return;
			var sender = $(this);
			$(sender).parent().siblings().removeClass("active");
			$(sender).parent().addClass("active");
			$(".dlink_rate_container .dlink_rate_table tr").removeClass("active");
			var index = $(this).attr("class");
			index = index.replace("trigger ", "");
			$(".dlink_rate_container .dlink_rate_table tr").hide();
			$(".dlink_rate_container .dlink_rate_table ." + index).addClass("active");
			$(".dlink_rate_container .dlink_rate_table ." + index).fadeIn(fastSpeed);
			//Update selected rate
			//var selectedRateCode = $(".dlink_rate_table").find("tr." + index).find("input[id*=RateCodeHiddenField]").val();
			$(".selected_rate_container").children("input[type=hidden]").val(index);
			e.preventDefault();
		});
		$(".dlink_rate_images").each(function() {
			slideshowEngine = new imageslideshowEngine();
			slideshowEngine.images = $(this).children("img").get();
			slideshowEngine.init(5000, fastSpeed);
		});
		$(".dlink_room_images").each(function() {
			slideshowEngine = new imageslideshowEngine();
			slideshowEngine.images = $(this).children("img").get();
			slideshowEngine.init(5000, fastSpeed);
		});
	}

	function roccoBE() {
		if ($("#roccobe_flashloader").size() > 0) {
			var roccoBEFlashLoaderContent = $("#roccobe_flashloader").html();
			if (roccoBEFlashLoaderContent.length == 0) {
				$("#roccobe.stage1 fieldset").fadeIn("fast");
			}
		}
	}

	function corporateLogin() {
		$(".corporate_login_trigger").click(function(e) {
			var container = $(this).closest("#corporate_login");
			var resultMessageContainer = $(this).closest("#corporate_login").find(".corporate_login_result_message");
			if ($(resultMessageContainer).is(":visible")) {
				$(resultMessageContainer).slideUp("fast");
			}
			var username = $(container).find(".username_textbox").val();
			var password = $(container).find(".password_textbox").val();

			if (username.length == 0 || password.length == 0) {
				e.preventDefault();
				return false;
			}
			var isValidProfile = false;
			$.ajax({
				async: false,
				type: "POST",
				url: "/common/modules/roccoforte/roccobe/roccobe_gui/handler/CorporateMemberHandler.ashx",
				data: "command=login_check&username=" + $.trim(username) + "&password=" + $.trim(password),
				success: function(response) {
					if (response != null && response != "") {
						if (response.validatedCode == 999) {
							isValidProfile = true;
							//Google croos domain tracking
							var currentProperty = $(".current_property_codename").val();
							var currentLanguage = $("#current_language_hiddenfield").val();
							var isRequiredSelfPostback = $("#content").find("[id$='IsRequiredSelfPostbackHiddenField']").val();
							//Add google cross domain
							if (isRequiredSelfPostback == undefined || isRequiredSelfPostback.length == 0) {
								var f = document.getElementById("aspnetForm");
								f.setAttribute("onsubmit", "_gaq.push(['_linkByPost', this]);");
							}
						}
					}
					if (!isValidProfile) {
						var container = $("#corporate_login").find(".corporate_login_result_message").slideDown("slow");
						e.preventDefault();
						return false;
					}
				}
			});
			if (!isValidProfile) {
				e.preventDefault();
				return false;
			}
		});
	}

	function checkAvailability() {
		$("#check_availability").find(".panel_arrival_date").click(function(e) {
			$(this).next("input").click();
			return false;
		});
		$("#check_availability").find(".panel_arrival_date").keypress(function(e) {
			$(this).next("input").click();
			return false;
		});
		$("#check_availability").find(".panel_departure_date").click(function(e) {
			$(this).next("input").click();
			return false;
		});
		$("#check_availability").find(".panel_departure_date").keypress(function(e) {
			$(this).next("input").click();
			return false;
		});
		$("#check_availability").find(".purpose").change(function() {
			var sender = $(this);
			if ($(sender).val() == "-1") {
				if (!$(this).hasClass("check_availability_validation")) {
					$(this).addClass("check_availability_validation");
					return false;
				}
			}
			$(this).removeClass("check_availability_validation");
		});

		//Deeplink
		$(".dlink_calendar_container").find(".dlink_arrival_date").click(function(e) {
			$(this).next("input").click();
			return false;
		});
		$(".dlink_calendar_container").find(".dlink_arrival_date").keypress(function(e) {
			$(this).next("input").click();
			return false;
		});
		$(".dlink_calendar_container").find(".dlink_departure_date").click(function(e) {
			$(this).next("input").click();
			return false;
		});
		$(".dlink_calendar_container").find(".dlink_departure_date").keypress(function(e) {
			$(this).next("input").click();
			return false;
		});

		var currentProperty = $(".current_property_codename").val();
		var currentLanguage = $("#current_language_hiddenfield").val();
		//Google croos domain tracking
		var isRequiredSelfPostback = $("#content").find("[id$='IsRequiredSelfPostbackHiddenField']").val();
		//Add google cross domain
		if (isRequiredSelfPostback == undefined || isRequiredSelfPostback.length == 0) {
			var f = document.getElementById("aspnetForm");
			f.setAttribute("onsubmit", "_gaq.push(['_linkByPost', this]);");
		}
	}

	function checkAvailabilityPanel(sender) {
		$("#check_availability").find(".check_availability_validation").removeClass("check_availability_validation");
		var selectedPurpose = $("#check_availability").find(".purpose");
		var arrivalDate = $("#check_availability").find(".panel_arrival_date");
		var departureDate = $("#check_availability").find(".panel_departure_date");
		var isValidArrivalDate = true;
		var isValidDepatureDate = true;
		var isValidPurpose = true;

		//		if ($(selectedPurpose).val() == "-1") {

		//			isValidPurpose = false;
		//		}

		//		var todayDate = new Date();
		//		todayDate.setFullYear(todayDate.getFullYear(), todayDate.getMonth(), todayDate.getDate());
		//		var arrivalDateTime = new Date();
		//		var arrivalDateSplit = $(arrivalDate).val().split("/");
		//		arrivalDateTime.setFullYear(arrivalDateSplit[2], arrivalDateSplit[1] - 1, arrivalDateSplit[0]);
		//		if (arrivalDateTime < todayDate) {
		//			isValidArrivalDate = false;
		//		}
		//		var departureDateTime = new Date();
		//		var departureDateSplit = $(departureDate).val().split("/");
		//		departureDateTime.setFullYear(departureDateSplit[2], departureDateSplit[1] - 1, departureDateSplit[0]);
		//		if (departureDateTime < todayDate) {
		//			isValidDepatureDate = false;
		//		}

		//		if (!isValidArrivalDate) {
		//			$(arrivalDate).addClass("check_availability_validation");
		//		}
		//		if (!isValidDepatureDate) {
		//			$(departureDate).addClass("check_availability_validation");
		//		}
		//		if (!isValidPurpose) {
		//			$(selectedPurpose).addClass("check_availability_validation");
		//		}

		//		if (!isValidArrivalDate || !isValidDepatureDate || !isValidPurpose) {
		//			return false;
		//		}

		var numberOfGuests = $(".panel_content").find("#guests").find("select");
		var numberOfRooms = $(".panel_content").find("#rooms").find("select");
		var currentLocale = $(".current_locale_hiddenfield").val().split('-')[0];
		if ($(numberOfGuests).val() == "2+" || $(numberOfRooms).val() == "3+") {
			switch (currentLocale) {
				default:
				case "en":
				case "de":
				case "it":
					window.location = "http://" + window.location.hostname + "/special/booking-enquiries";
					return false;
					//				case "de":
					//					window.location = "http://" + window.location.hostname + "/special/sofortkontakt";
					//					return false;
					//				case "it":
					//					window.location = "http://" + window.location.hostname + "special/parla-con-lhotel";
					//					return false;
			}
			return false;
		}
		return true;
		RF.Hotels.setPPCTracking(sender);
	}

	function genericSliding(container) {
		$(container + " .each .content").hide();
		$(container + " .each .findoutmore").click(function(e) {
			if ($(this).nextAll(".content").is(":visible") == false) {
				$(this).nextAll(".content").slideDown(fastSpeed);
			}
			else {
				$(this).nextAll(".content").slideUp(fastSpeed);
			}
			e.preventDefault();
		});
	}

	//Internal functions
	function genericSlideShow(container, imageContainer) {
		try {
			$(container + " .each").each(function() {
				slideshowEngine = new imageslideshowEngine();
				slideshowEngine.images = $(this).children(imageContainer).children("img").get();
				slideshowEngine.init(6000, slowSpeed);
			});
		} catch (e) { }
	}

	return {
		init: init,
		checkAvailabilityPanel: checkAvailabilityPanel
	};
})();

$(RF.Hotel_1.init);

