﻿var cbswbe_lastheight;
$(window).hashchange(function() {
	var re = new RegExp("\#\\d+\\+\\d+\$");
	var m = re.exec(window.location.hash);
	var hash_count = Number($.cookie('hash_count')) || 0;
	if (m != null) {
		var s = "";
		for (i = 0; i < m.length; i++) {
			s = s + m[i] + "\n";
		}
		var h = parseInt(s.substring(1).split("+")[0]) + 10;
		if (cbswbe_lastheight != h) {
			document.getElementById("cbs_wbe").style.height = h + 'px';
			cbswbe_lastheight = h;
		}
		if (!$.browser.webkit && !$.browser.opera) {
			hash_count++;
			$.cookie('hash_count', hash_count.toString());
			window.location.replace(window.location.href.replace(/#.*$/, '#' + hash_count));
		}			
	}
	else {
		var regex = new RegExp("\#\\d+$");
		var match = regex.exec(window.location.hash)
		if (match != null) {
			var current_hash_count = Number(window.location.hash.substring(1));
			if (hash_count > current_hash_count) {
				window.history.go(-hash_count);
			}
		}
	}
});

$(function() {
	$.datepicker.regional['en'] = {
		closeText: 'Done',
		prevText: 'Prev',
		nextText: 'Next',
		currentText: 'Today',
		monthNames: ['January','February','March','April','May','June',
		'July','August','September','October','November','December'],
		monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
		'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
		dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
		dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
		dayNamesMin: ['Su','Mo','Tu','We','Th','Fr','Sa'],
		weekHeader: 'Wk',
		dateFormat: 'dd/mm/yy',
		firstDay: 1,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: '',
		boxTitle: 'Online booking',
		arrivalDateLabel: 'Arrival date:',
		departureDateLabel: 'Departure date:',
		reserveButtonText: 'Check and book',
		validArrivalDate: 'Please enter valid arrival date!',
		validDepartureDate: 'Please enter valid departure date!',
		validDateRange: 'Please enter departure date after the arrival date!',
		bookingUrl: '/default.aspx/booking/en'
	};
    $.datepicker.regional['bg'] = {
        closeText: 'затвори',
        prevText: '&#x3c;назад',
        nextText: 'напред&#x3e;',
		nextBigText: '&#x3e;&#x3e;',
        currentText: 'днес',
        monthNames: ['Януари','Февруари','Март','Април','Май','Юни',
        'Юли','Август','Септември','Октомври','Ноември','Декември'],
        monthNamesShort: ['Яну','Фев','Мар','Апр','Май','Юни',
        'Юли','Авг','Сеп','Окт','Нов','Дек'],
        dayNames: ['Неделя','Понеделник','Вторник','Сряда','Четвъртък','Петък','Събота'],
        dayNamesShort: ['Нед','Пон','Вто','Сря','Чет','Пет','Съб'],
        dayNamesMin: ['Не','По','Вт','Ср','Че','Пе','Съ'],
		weekHeader: 'Wk',
        dateFormat: 'dd.mm.yy',
		firstDay: 1,
        isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: '',
		boxTitle: 'Онлайн резервация',
		arrivalDateLabel: 'Дата на пристигане:',
		departureDateLabel: 'Дата на заминаване:',
		reserveButtonText: 'Провери и резервирай',
		validArrivalDate: 'Моля въведете валидна дата на пристигане!',
		validDepartureDate: 'Моля въведете валидна дата на заминаване!',
		validDateRange: 'Моля въведете дата на заминаване след датата на пристигане!',
		bookingUrl: '/default.aspx/rezervacija/bg'
	};
	$.datepicker.regional['fr'] = {
		closeText: 'Fermer',
		prevText: '&#x3c;Préc',
		nextText: 'Suiv&#x3e;',
		currentText: 'Courant',
		monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',
		'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
		monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun',
		'Jul','Aoû','Sep','Oct','Nov','Déc'],
		dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
		dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
		dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
		weekHeader: 'Sm',
		dateFormat: 'dd/mm/yy',
		firstDay: 1,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: '',
		boxTitle: "Réservation en ligne",
        arrivalDateLabel: "Date d'arrivée:",
        departureDateLabel: "Date de départ:",
        reserveButtonText: "Vérifier et réserver",
        validArrivalDate: "S'il vous plaît entrez la date d'arrivée valide!",
        validDepartureDate: "S'il vous plaît entrez la date de départ valide!",
        validDateRange: "S'il vous plaît entrez la date de départ après la date d'arrivée!", 
		bookingUrl: '/default.aspx/reservations/fr'
	};
	var lang = $('meta[http-equiv=content-language]').attr('content');
	var datepickerOptions = $.extend($.datepicker.regional[lang], {
		showOn: "button",
		buttonImage: "/images/calendar.gif",
		buttonImageOnly: true,
		showOtherMonths: true,
		selectOtherMonths: true,
		minDate: new Date(),
		onSelect: function () {
			$(this).css("color", "black").css("border-color", "#B89239");
		}
	});
	$("#BoxTitle").text(datepickerOptions.boxTitle);
	$("#ArrivalDateLabel").text(datepickerOptions.arrivalDateLabel);
	$("#DepartureDateLabel").text(datepickerOptions.departureDateLabel);
	$("#BookingCheck").text(datepickerOptions.reserveButtonText);
	$("#ArrivalDate,#DepartureDate").val(datepickerOptions.dateFormat).css("color", "grey").click(function () {
		var input = $(this);
		if (input.val() === datepickerOptions.dateFormat) {
			input.val("").css("color", "black");
		}
	}).change(function () {
		var input = $(this);
		if (input.val().length === 0) {
			input.val(datepickerOptions.dateFormat).css("color", "grey");
		}
		else if (input.val() !== datepickerOptions.dateFormat) {
			try {
				$.datepicker.parseDate(datepickerOptions.dateFormat, input.val());
				input.css("border-color", "#B89239");
			} catch(e) {
				input.css("border-color", "red");
			}
		}
	}).datepicker(datepickerOptions);
	$("#BoxMessage").click(function () {
		$(this).fadeOut(400);
	});
	$("#BookingCheck").click(function () {
		var error, arrivalDate, departureDate, days, month, day;
		if ($('#BoxMessage').is(':visible')) {
			$('#BoxMessage').fadeOut(400);
			return false;
		}
		try {
			$.datepicker.parseDate(datepickerOptions.dateFormat, $("#ArrivalDate").val());
			arrivalDate = $("#ArrivalDate").datepicker("getDate");
			try {
				$.datepicker.parseDate(datepickerOptions.dateFormat, $("#DepartureDate").val());
				departureDate = $("#DepartureDate").datepicker("getDate");
				if (arrivalDate >= departureDate) {
					error = datepickerOptions.validDateRange;
				}
			} catch(e) {
				error = datepickerOptions.validDepartureDate;
			}
		} catch(e) {
			error = datepickerOptions.validArrivalDate;
		}
		if (error) {
			$("#BoxMessage").text(error).fadeTo(400, 0.8);
			return false;
		}
		days = Math.floor((departureDate - arrivalDate) / (1000 * 60 * 60 * 24));
		month = arrivalDate.getMonth() + 1;
		day = arrivalDate.getDate();
		$.cookie('wcbs_from', arrivalDate.getFullYear() + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day :day), {path: '/'});
		$.cookie('wcbs_days', days.toString(), {path: '/'});
		window.location.href = datepickerOptions.bookingUrl;
		return false;
	});
	$(".ReservationBox").show();
	
	if ($("#cbs_wbe").length > 0) {
		var wcbs_profile_id = $.cookie('wcbs_profile_id');
		var wcbs_from = $.cookie('wcbs_from', {path: '/'});
		var wcbs_days = $.cookie('wcbs_days', {path: '/'});
		var wcbs_ihst = window.location.href;
		var wcbs_url = "http://infomatic.clockbs.com/wbe2011/subs/BLACKCAT/hotels/219/sessions/new?lang=" + lang + (wcbs_from ? "&wcbs_from=" + wcbs_from : "") + (wcbs_days ? "&wcbs_days=" + wcbs_days : "") + (wcbs_profile_id ? "&wcbs_profile_id=" + wcbs_profile_id : "") + "&wcbs_ihst=" + escape(wcbs_ihst);
		$("#cbs_wbe").attr("src", wcbs_url);
		$.cookie('wcbs_from', null);
		$.cookie('wcbs_days', null);
		$.cookie('hash_count', null);
	}
	
	if ($("#WeatherBox").length > 0) {
		$.getJSON("http://pipes.yahoo.com/pipes/pipe.run?_id=fc4a3b618bab082461639740403170b6&url=http%3A%2F%2Fweather.yahooapis.com%2Fforecastrss%3Fw%3D15000045%26u%3Dc&_render=json&_callback=?", function (data) {
			if (data && data.value && data.value.items) {
				var weatherChannel = data.value.items[0].channel;
				$("#weatherImage").attr("src", "http://l.yimg.com/a/i/us/we/52/" + weatherChannel.item["yweather:condition"].code + ".gif");
				$("#weatherImage").attr("title", weatherChannel.item["yweather:condition"].text);
				$("#weatherTemp").text(weatherChannel.item["yweather:condition"].temp);
				$("#weatherWind").text(weatherChannel["yweather:wind"].speed);
				$("#weatherHumidity").text(weatherChannel["yweather:atmosphere"].humidity);
				$("#weatherPressure").text(weatherChannel["yweather:atmosphere"].pressure);
				$("#weatherSunrise").text(weatherChannel["yweather:astronomy"].sunrise);
				$("#weatherSunset").text(weatherChannel["yweather:astronomy"].sunset);
				$("#weatherNext1").attr("src", "http://l.yimg.com/a/i/us/we/52/" + weatherChannel.item["yweather:forecast"][0].code + ".gif");
				$("#weatherNext1").attr("title", weatherChannel.item["yweather:forecast"][0].text);
				$("#dayNext1").text(weatherChannel.item["yweather:forecast"][0].date);
				$("#dayNext1Min").text(weatherChannel.item["yweather:forecast"][0].low);
				$("#dayNext1Max").text(weatherChannel.item["yweather:forecast"][0].high);
				$("#weatherNext2").attr("src", "http://l.yimg.com/a/i/us/we/52/" + weatherChannel.item["yweather:forecast"][1].code + ".gif");
				$("#weatherNext2").attr("title", weatherChannel.item["yweather:forecast"][1].text);
				$("#dayNext2").text(weatherChannel.item["yweather:forecast"][1].date);
				$("#dayNext2Min").text(weatherChannel.item["yweather:forecast"][1].low);
				$("#dayNext2Max").text(weatherChannel.item["yweather:forecast"][1].high);
				$("#WeatherBox").show();
			}
		});
	}
});

