/* IE6 flicker fix
-------------------------------------------------- */
try { document.execCommand("BackgroundImageCache", false, true); } catch(err) {}

var bookingSearchBox = {
	'calendarColouring': {
		'timeFrame': {
			'start': undefined,
			'end': undefined
		},
		'cachedColourings': new Array()
	},
	'selectedHotelID': undefined
};

jQuery.preloadImages = function() {
	for (var i = 0; i < arguments.length; i++) {
		jQuery("<img>").attr("src", arguments[i]);
	}
}

/* Dropdowns */

var currDropId = '';
var timerDrop = '';
var prevDrop = '';
var prevDropOwner = '';

var addthis_config = {
	ui_click: true
};

function showDrop(rel,target,special){
	window.clearTimeout(timerDrop);
	if(rel != prevDropOwner){ realHideDrop(); } else { return false; }
	prevDrop = target;
	prevDropOwner = rel;
	$(target).removeClass('drop-hidden').css({
		top: $(rel).offset().top + $(rel).outerHeight() + 'px',
		left: $(rel).offset().left + 'px'
	}).hover(cancelHideDrop,hideDrop);
	$('SPAN.dropstart SPAN.a',$(target)).css({
		width: $(rel).outerWidth() - 1 + 'px'
	})
	$(rel).addClass('open');
	if(special && special == 'menu'){
		if($(rel).hasClass('item1') || $(rel).hasClass('active')){
			$(target).css('marginLeft','0');
		} else {
			$(target).css('marginLeft','14px');
		}
	} else if (special) {
		currDropId = special;
	}
}

function cancelHideDrop(){
	window.clearTimeout(timerDrop);
}

function hideDrop(){
	window.clearTimeout(timerDrop);
	timerDrop = window.setTimeout('realHideDrop()',150);
}

function realHideDrop(){
	$(prevDrop).addClass('drop-hidden');
	$(prevDropOwner).removeClass('open')
	prevDrop = '';
	prevDropOwner = '';
}

function toggleNewsletter(ref){
	if($('#join01').hasClass('hidden')){
		$('#join01').removeClass('hidden').css({
			left: $(ref).offset().left + 'px',
			top: $(ref).offset().top + $(ref).outerHeight() + 'px'
		})
	} else {
		$('#join01').addClass('hidden');
	}
	return false;
}

var _zeroPad = function(num) {
	var s = '0'+num;
	return s.substring(s.length-2)
};

$(document).ready(function() {
	$('#currentlang').click(function(event){
		$r = $('#languages');
		if($r.is(':visible')){
			$('#languages').css('display','none');
			$(document).unbind('click.menu');
		} else {
			$r.css({
				display: 'block',
				left: $(this).offset().left + 'px',
				top: $(this).offset().top + $(this).outerHeight() + 'px'
			});
			$(document).bind('click.menu',function(){
				$('#languages').css('display','none');
				$(document).unbind('click.menu');
			})
		}
		event.stopPropagation();
		return false;
	});

	$('.ihasahover').hover(function(){ $(this).addClass('hover'); },function(){ $(this).removeClass('hover'); });

	Date.format = 'dd.mm.yyyy';
	// setBookingCalendarTimeFrame();

	$('INPUT.forms_pickdate').each(function() {
		$(this).datePicker({hideLegend: true, startDate: '01.01.1000', showYearNavigation: false}).dpSetOffset(0,24);
	});

	$('INPUT.pickdate').each(function() {
		$(this).datePicker({hideLegend: true, showYearNavigation: false}).dpSetOffset(0,24);
	});

	$('DIV.quickbook INPUT.pickdate').each(function() {
		$(this)
			.dpSetPosition($.dpConst.POS_TOP,$.dpConst.POS_RIGHT).dpSetOffset($(this)[0].offsetHeight+2,-4)
			.dpSetRenderCallback(
				function(d, currentDate, month, year)
				{
					$(d).removeClass('low2 low medium high na full');
					if (typeof(bookingSearchBox.selectedHotelID) != 'undefined')
					{
						var key = currentDate.getFullYear()+_zeroPad(currentDate.getMonth()+1)+_zeroPad(currentDate.getDate());
						var now = new Date();
						if (parseInt(now.getFullYear()+_zeroPad(now.getMonth()+1)+_zeroPad(now.getDate()), 10) <= key && typeof(bookingSearchBox.calendarColouring.cachedColourings[bookingSearchBox.selectedHotelID]) != 'undefined')
						{
							var className = bookingSearchBox.calendarColouring.cachedColourings[bookingSearchBox.selectedHotelID][key];
							$(d).addClass(className);
						}
					}
				}
			)
	});

	if ($('DIV.quickbook INPUT.pickdate#checkin').length > 0 && $('DIV.quickbook INPUT.pickdate#checkin').val().length == 0)
	{
		var defaultStartDate = new Date();
		var defaultStartDateString = defaultStartDate.asString();
		$('DIV.quickbook INPUT.pickdate#checkin').val(defaultStartDateString);
		var defaultEndDateString = defaultStartDate.addDays(1).asString();
		$('DIV.quickbook INPUT.pickdate#checkout').val(defaultEndDateString);
	}

	initSubMenu.init();

	$('#room_plus').click(function(){handleRoomsCount(+1);});
	$('#room_minus').click(function(){handleRoomsCount(-1);});
	$('#rooms').change(function(){handleRoomsCount(0);});
	$('#rooms').blur(function(){handleRoomsCount(0);});

	$('#rooms_search_box').change(function()
	{
		// var hotelID = parseInt($('#rooms_search_box option:selected').val(), 10);
		var hotelID = parseInt($('#rooms_search_box').val(), 10);
		if (hotelID > 0)
		{
			bookingSearchBox.selectedHotelID = hotelID;
			if (typeof(bookingSearchBox.calendarColouring.cachedColourings[hotelID]) == 'undefined')
			{
				loadBookingCalendarColors();
			}
		}
		else
		{
			bookingSearchBox.selectedHotelID = undefined;
		}
	});

	$('#rooms_search_box').trigger('change');

	$('#rooms_search_button').click(function()
	{
		// var hotelID = parseInt($('#rooms_search_box option:selected').val(), 10);
		var hotelID = parseInt($('#rooms_search_box').val(), 10);
		if (hotelID < 1)
		{
			alert('Please select a hotel!');
			return false;
		}

		var checkIn = Date.fromString($('#checkin').val());
		var checkOut = Date.fromString($('#checkout').val());

		var currentDate = new Date().zeroTime();

		if (checkIn < currentDate) {
			alert('Check in date is invalid or in the past!');
			return false;
		}

		// var adults = parseInt($('#adults option:selected').val(), 10);
		// var children = parseInt($('#children option:selected').val(), 10);

		var adults = parseInt($('#adults').val(), 10);
		var children = parseInt($('#children').val(), 10);

		if (adults + children > 4) {
			alert('Maximum number of people per room is 4!');
			return false;
		}

		if (children > 2) {
			alert('Maximum number of children per room is 2!');
			return false;
		}

		var promocode = $.trim($('#promocode').val());

		var rac_type = parseInt($('#rac_type').val());

		var hotel_codes = {
			4: 'TLLZR',
			5: 'TLLPR',
			6: '',
			7: 'RIXZL',
			8: 'RIXZE',
			9: 'RIXZR',
			10: 'VNOZL',
			11: 'KUNPR',
			14: 'LEDZS'
		};

		if (hotel_codes[hotelID] && rac_type != 1)
		{
			var checkInMonth = (parseInt(checkIn.getMonth().toString()) + 1).toString();
			var checkInDate = checkIn.getDate().toString();
			var checkOutMonth = (parseInt(checkOut.getMonth().toString()) + 1).toString();
			var checkOutDate = checkOut.getDate().toString();

			var checkInFull = '' + (checkInDate.length <= 1 ? '0' + checkInDate : checkInDate) + '%2F' + (checkInMonth.length <= 1 ? '0' + checkInMonth : checkInMonth) + '%2F' +  checkIn.getFullYear();

			var checkOutFull = '' + (checkOutDate.length <= 1 ? '0' + checkOutDate : checkOutDate) + '%2F' + (checkOutMonth.length <= 1 ? '0' + checkOutMonth : checkOutMonth) + '%2F' +  checkOut.getFullYear();

			var url = 'http://www.radissonblu.com/booking-entrance?language=en&rooms=1&arrival=' + checkInFull + '&departure=' + checkOutFull;

			url += '&sitaCode=' + hotel_codes[hotelID];

			if (adults > 0) {
				url += '&adults_room1=' + adults;
			}

			if (children > 0) {
				url += '&children_room1=' + children;
			}

			if (promocode.length > 0) {
				url += '&paccode=' + promocode.toUpperCase();
			}

			window.open(url, '_blank');
		} 
		else
		{
			var url = js_site_url + js_site_lang + '/room-booking/available-rooms/hotels/' + hotelID + '/checkin/' + checkIn.asString() + '/checkout/' + checkOut.asString() + '/adults/' + adults;

			if (children > 0) {
				url += '/children/' + children;
			}

			if (promocode.length > 0) {
				url += '/code/' + promocode.toUpperCase();
			}

			if (typeof(_var) != 'undefined' && typeof(_var.search_parameters) != 'undefined' && _var.search_parameters.pguid && _var.search_parameters.pdomain) {
				url += '/pguid/'+_var.search_parameters.pguid+'/pdomain/'+_var.search_parameters.pdomain;
			}

			window.location = url;
		}
	});

	/* Modal */
	 //select all the a tag with name equal to modal
	$('a[name=modal]').click(function(e) {
		//Cancel the link behavior
		e.preventDefault();
		//Get the A tag
		var id = $(this).attr('href');

		//Get the screen height and width
		var maskHeight = $(document).height();
		var maskWidth = $(window).width();

		//Set height and width to mask to fill up the whole screen
		$('#mask').css({'width':maskWidth,'height':maskHeight});

		//transition effect
		$('#mask').fadeIn(200);
		$('#mask').fadeTo("slow",0.8);

		//Get the window height and width
		var winH = $(window).height();
		var winW = $(window).width();

		//Set the popup window to center
		$(id).css('top',  winH/2-$(id).height()/2);
		$(id).css('left', winW/2-$(id).width()/2);

		//transition effect
		$(id).fadeIn(200);
		return false;
	});
	//if close button is clicked
	$('.window .close').click(function (e) {
		//Cancel the link behavior
		e.preventDefault();
		$('#mask, .window').hide();
	});
	//if mask is clicked
	//if mask is clicked
 	$('#mask').click(function () {
			$(this).hide();
		$('.window').hide();
	});
});

function setBookingCalendarTimeFrame()
{
	var startDate = new Date();
	var endDate = new Date();

	startDate.setDate(1);

	endDate.setDate(0);
	endDate.setMonth(endDate.getMonth()+1);
	endDate.setYear(endDate.getFullYear()+1);

	timeFrame = {'start': startDate.asString(), 'end': endDate.asString()};

	bookingSearchBox.calendarColouring.timeFrame.start = startDate.asString();
	bookingSearchBox.calendarColouring.timeFrame.end = endDate.asString();
}

function bookingCalendarColorsAlreadyLoaded()
{
	return;
}

function loadBookingCalendarColors()
{
	return; // Closed

	$.getJSON(
		js_site_url + 'static/RevalRoomBooking/hotelRoomsCalendarColours/' + bookingSearchBox.selectedHotelID + '/' + bookingSearchBox.calendarColouring.timeFrame.start + '/' + bookingSearchBox.calendarColouring.timeFrame.end,
		function (data) {
			bookingSearchBox.calendarColouring.cachedColourings[bookingSearchBox.selectedHotelID] = data;
		}
	);
}

var initSubMenu = {
	init: function() {
		$('.subMenuCall>ul>li>a').each(function(preImg, preImgItem){
			if ($(preImgItem).attr('rel').toString()) {
				$.preloadImages($(preImgItem).attr('rel').toString());
			}
		});

		$('.subMenuCall>ul>li>a').click(function(){

			var callPage = parseInt($(this).attr('href'), 10);
			var headerImg = $(this).attr('rel');

			$('#content-page').slideUp('fast', function(){
				$('#subHeaderImg').fadeOut();
				if (callPage > 0)
				{
					$('#content-page').html($("#called-content-page-" + callPage).html()).slideDown(function(){
						$('#subHeaderImg').attr('src', headerImg).fadeIn();
					});
				}
			});

			$('.subMenuCall>ul>li>a').removeClass('active');
			$(this).addClass('active');

			return false;
		});
	}
};

/* Booking calendar */

function getNewDate(date, days, id) {

	var checkIn = Date.fromString(date);
	var currentDate = new Date().zeroTime();

	if (checkIn < currentDate)
	{
		date = currentDate.asString();
		$('#checkin').val(date);
	}

	if((date != '') && (days != '')) {
		var olddate = new Date(date.substring(6, 10), date.substring(3, 5) - 1, date.substring(0, 2));
		olddate.setDate(olddate.getDate() + eval(days));
		var day = (olddate.getDate() + '').length == 1 ? ("0" + olddate.getDate()) : olddate.getDate();
		var month = olddate.getMonth() + 1;
		month = (month + '').length == 1 ? ("0" + month) : month;
		$('#' + id)[0].value = day + '.' + month + '.' + olddate.getFullYear();
	}
}

function getDateDif(date1, date2, id) {
	if((date1 != '') && (date2 != '')) {
		var d1 = new Date(date1.substring(6, 10), date1.substring(3, 5) - 1, date1.substring(0, 2));
		var d2 = new Date(date2.substring(6, 10), date2.substring(3, 5) - 1, date2.substring(0, 2));
		d11 = d1.getTime();
		d12 = d2.getTime();
		var one_day = 1000 * 60 * 60 * 24;
		var dif = d12 - d11;
		var result = Math.round(dif / one_day);
		if (result >= 0) $('#' + id)[0].value = result;
		else $('#' + id)[0].value = 0;
	}
}

function checkDates(date1, date2, id1, id2) {
	if((date1 != '') && (date2 != '')) {
		var d1 = new Date(date1.substring(6, 10), date1.substring(3, 5) - 1, date1.substring(0, 2));
		var d2 = new Date(date2.substring(6, 10), date2.substring(3, 5) - 1, date2.substring(0, 2));
		var next = new Date();
		next.setDate(d1.getDate() + 1);
		var month = next.getMonth() + 1;
		var nextdate = _zeroPad(next.getDate()) + '.' + _zeroPad(month) + '.' + next.getFullYear();
		d11 = d1.getTime();
		d12 = d2.getTime();
		var one_day = 1000 * 60 * 60 * 24;
		var dif = d12 - d11;
		var result = Math.ceil(dif / one_day);
		if (result <= 0) {
			$('#' + id1)[0].value = nextdate;
			$('#' + id2)[0].value = '1';
		}
	}
}

function form_minus(ref) {
	if (ref.value > 1) { ref.value = ref.value - 1; }
}

function form_plus(ref) {
	if (ref.value < 1) { ref.value = 0; }
	ref.value = eval(ref.value) + 1;
}

function handleRoomsCount (increment)
{
	var inputValue = parseInt($('#rooms').val(), 10) + increment;
	var roomsNow = Math.min(4, Math.max(1, inputValue));
	var roomsVisible = $('div.room:visible').length;

	$('#rooms').val(roomsNow);

	if (roomsVisible < roomsNow)
	{
		for (var i = 1; i <= roomsNow; i++)
		{
			if ($('div.room#room'+i+':visible').length == 0) $('div.room#room'+i).show();
		}
	}
	else if (roomsVisible > roomsNow)
	{
		for (var i = 4; i > roomsNow; i--)
		{
			if ($('div.room#room'+i+':visible').length == 1)
			{
				$('div.room#room'+i).hide();
				$('div.room#room'+i+' select:eq(0)').val(1);
				$('div.room#room'+i+' select:eq(1)').val(0);
			}
		}
	}
}

/* Tooltip */

function showTooltip(ref,txt){
	$('body').append('<div id="tooltip"><div id="tooltip-inner"></div><div id="tooltip-ending"></div></div>');
	$('#tooltip').bgiframe();
	$('#tooltip-inner')[0].innerHTML = txt;
	$('#tooltip')[0].style.top = $(ref).offset().top - $('#tooltip')[0].offsetHeight + 'px';
	fit = $(document).width() - $(ref).offset().left - $('#tooltip').width();
	if( fit < 0 ){
		$('#tooltip')[0].style.left = $(ref).offset().left + fit + 'px';
		$('#tooltip-ending')[0].style.backgroundPosition = fit - fit - ($(document).width() - $(ref).offset().left) + 'px 0';
	} else {
		$('#tooltip')[0].style.left = $(ref).offset().left + 'px';
	}
	$(ref).bind('mouseout',function tmp() {
		$('#tooltip').remove();
		$(ref).unbind('mouseout', tmp);
		$('IFRAME.bgiframe').remove();
	});
	// $('BODY').width()
}

/* Language dropdown */

function toggleLang(ref){
	$('#languages').toggleClass('hidden');
	if(!$('#languages').hasClass('hidden')){
		$(document).bind('mouseup', toggleLang);
		$('#currentregion').bind('mouseup',function() { return false; });
		$('#languages')[0].style.left = $(ref).offset().left + 'px';
		$('#languages')[0].style.top = $(ref).offset().top + ref.offsetHeight + 'px';
	} else {
		$(document).unbind('mouseup', toggleLang);
	}
}

/* Hotels dropdown */

var t;
var t2;
function toggleHotelslist(ref,list){
	$('.hotelslist02').addClass('hidden');
	$('#menu01 A.open').removeClass('open');
	$(list).removeClass('hidden');
	try {
		$(list)[0].style.left = $(ref).offset().left + 'px';
		$(list)[0].style.top = $(ref).offset().top + ref.offsetHeight + 'px';
		$(list)[0].style.backgroundPosition = $(ref)[0].offsetWidth - 2 + 'px 0';		
	} catch (e) { }
	$(ref).addClass('open');

	$(ref).mouseover(function(){ clearTimeout(t); });
	$(ref).mouseout(function(){	toggleHotelslistHide(ref,list); });

	$(list).mouseover(function(){ clearTimeout(t); });
	$(list).mouseout(function(){ toggleHotelslistHide(ref,list); });
}

function toggleFrontMaphotellist(ref,list,side){
	clearTimeout(t2);
	t2 = setTimeout( function(){
		clearTimeout(t2);
		$(list).removeClass('hidden');
			$(list)[0].style.top = $(ref).offset().top + 'px';
			$(list)[0].style.backgroundPosition = $(ref)[0].offsetWidth - 2 + 'px 0';
			if (side=='right'){
				$(list)[0].style.left = $(ref).offset().left + ref.offsetWidth + 'px';
			} else {
				$(list)[0].style.left = $(ref).offset().left - $(list)[0].offsetWidth + 'px';
			}

		$(ref).mouseover(function(){ clearTimeout(t); });
		$(ref).mouseout(function(){	toggleHotelslistHide(ref,list); });

		$(list).mouseover(function(){ clearTimeout(t); });
		$(list).mouseout(function(){ toggleHotelslistHide(ref,list); });
	}, 500);
}

function toggleHotelslistHide(ref,list){
	clearTimeout(t);
	t = setTimeout( function(){
		clearTimeout(t);
		$(list).addClass('hidden');
		$(ref).removeClass('open');
	}, 100);
}

/* Hotels dropdown */

var t;
function toggleLogin(ref,list){
	$('.login-boxes-forms').addClass('hidden');

	$(list).removeClass('hidden');

	try {
		$(list)[0].style.left = $(ref).offset().left + ref.offsetWidth + 'px';
		$(list)[0].style.top = $(ref).offset().top + 'px';
		$(list)[0].style.backgroundPosition = $(ref)[0].offsetWidth - 2 + 'px 0';
	} catch (e) { }
	
	$(ref).addClass('open');

	$(ref).mouseover(function(){ clearTimeout(t); });
	$(ref).mouseout(function(){	toggleHotelslistHide(ref,list); });

	$(list).mouseover(function(){ clearTimeout(t); });
	$(list).mouseout(function(){ toggleHotelslistHide(ref,list); });
}

/* Tabs switcher */

function showTab(ref,set){
	$('#'+set+' > LI > A').each(function(i,a){
		$(a).removeClass('active');
		$($(a).attr('href')).addClass('hidden');
	});
	$(ref).addClass('active');
	$($(ref).attr('href')).removeClass('hidden');
	return false;
}

/* Room upgrade on booking process */

function upgRoom(o) {
	ch = o.checked;
	$(".room_upgrade_check").attr('checked', '');
	o.checked = ch;
	els = getElementsByClassName('room_upgrade');
	roomtype = $('#default_room_type').attr('value');
	total_price_ = parseFloat(document.getElementById('total_price').value);
	for(i=0;i<els.length;i++) {
		if(document.getElementById('ch_upgrade_to_room_'+els[i].value).checked) {
			total_price_ += parseFloat(document.getElementById('room_price_'+els[i].value).value);
			roomtype = document.getElementById('room_type_'+els[i].value).innerHTML;
		}
	}
	$('#room_type').html(roomtype);
	document.getElementById('final_price').innerHTML = total_price_.toFixed(2) + ' ' + document.getElementById('currency').value;

	$("#div_final_price").animate({opacity: 'hide'}, "fast");
	$("#div_final_price").animate({opacity: 'show'}, "fast");
}

function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}

/* Checkbox toggler */

function toggleMe(ref,target){
	if( $(ref).attr('checked') ){
		$(target).slideDown();
	} else {
		$(target).slideUp();
	}
}

/*
if (typeof($.prompt) !== 'undefined')
{
	function alert()
	{
		$.prompt(arguments[0], {overlayspeed:'fast', promptspeed:'fast'});
		$('#jqibuttons>button:eq(0)').focus();
	}
}
*/
function confirmCustom() {
	f = arguments[1];

	arg = new Array();
	$.each( arguments, function(i, n){if(i>1){arg.push(n)};}); // make arg(array) from arguments(object)

	b = {};
	b[yes_string] = true;
	b[no_string] = false;
	a = $.prompt(arguments[0], {
		overlayspeed:'fast',
		promptspeed:'fast',
		callback: function() {if(arguments[0]){f.apply(null,arg);}},
		buttons: b});
	$('#jqibuttons>button:eq(0)').focus();
	$('#jqibuttons>button').keydown(function(e) {
		if (e.which == 37) { // left btn
			$(this).prev().focus();
		} else if (e.which == 39) { // right
			$(this).next().focus();
		}
	});
}

function confirmRedirect(text,link){
	confirmCustom(
		text,
		function (link){
			document.location = link;
		},
		link
	);
}
