$(document).ready(function()
{
	var langCode = $("html").attr("xml:lang") || 'cs'; 
    
	$('.captcha-box')
		.each(function(){
			$('.captchaAnswer', this).val($('.captchaHelp', this).val());
		})
		.addClass('out');	
	
	$('.pdbox').pdBox({ minWidth: 540 });

	var datePickerLangs = {
		'cs': {
				month_names: ["Leden", "Únor", "Březen", "Duben", "Květen", "Červen", "Červenec", "Srpen", "Září", "Říjen", "Listopad", "Prosinec"],
				short_month_names: ["Led", "Úno", "Bře", "Dub", "Kvě", "Čer", "Čvc", "Srp", "Zář", "Říj", "Lis", "Pro"],
				short_day_names: ["Ne", "Po", "Út", "St", "Čt", "Pá", "So"],
				start_of_week: 1
			},
		'en': {
				month_names: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
				short_month_names: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
				short_day_names: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
				start_of_week: 1
			},
		'de': {
				month_names: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
				short_month_names: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
				short_day_names: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
				start_of_week: 1
			}
	};
	
	
	
	$.extend(DateInput.DEFAULT_OPTS, datePickerLangs[langCode] );
	
	$.extend(DateInput.DEFAULT_OPTS, 
	{
		stringToDate: function(string)
		{
			var matches;
			if (matches = string.match(/^(\d{1,2})\.(\d{1,2})\.(\d{4,4})$/)) {
				return new Date(matches[3], matches[2] - 1, matches[1]);
			}
			else {
				return null;
			};
		},
		
		dateToString: function(date) 
		{
			var month = (date.getMonth() + 1).toString();
			var dom = date.getDate().toString();
			return dom + '.' + month + '.' + date.getFullYear();
		}
	});
	
	$('.date-picker').date_input();
	
	$('.room-type')
		.css({ width: '80%' })		
		.after(' <img src="/css/img/ico-plus.png" class="ico-plus" title="Přidat pokoj" alt="Přidat" />')
		.after(' <img src="/css/img/ico-minus.png" class="ico-minus" title="Odebrat pokoj" alt="Odebrat" />');

	var updatePlusMinusVisibility = function()
	{
		$('.room-row .ico-plus')
			.filter(':last')
				.show()
			.end()
			.filter(':not(:last)')
				.hide()
			.end();
		
		$('.room-row .ico-minus')
			.filter(':first')
				.hide()
			.end()
			.filter(':not(:first)')
				.show()
			.end();
	}

	var minusClick = function()
	{
		$(this).parent().remove();
		updatePlusMinusVisibility();
		updatePriceInfo();
	};	
	
	var plusClick = function()
	{
		if($('.room-row').size() < 3)
		{
			var parentClone = $(this).parent().clone();
			
			$('.room-row:last').after(parentClone);
				
			$('.ico-plus', parentClone).bind('click', plusClick);
			$('.ico-minus', parentClone).bind('click', minusClick);
			$('select', parentClone).bind('change', function()
			{
				updatePriceInfo();
			});
			
			updatePlusMinusVisibility();
			updatePriceInfo();
		}
		else alert('Maximálně můžete rezervovat 3 pokoje najednou');
	};

	$('.room-row .ico-minus').bind('click', minusClick);
	$('.room-row .ico-plus').bind('click', plusClick);	
	
	
	$('.date-picker, .room-row select, .cf-packages input').bind('change', function()
	{		
		updatePriceInfo();
	});
	
	$('#reservation-form').eq(0).each(function(){
		updatePlusMinusVisibility();
		updatePriceInfo();	
	});
	
	
		/* Mapka */
	if($.fn.kfTooltip)
	{
		var tooltips = {};
		// $('img[usemap=#mapka], img[usemap=#mapka-de]').removeAttr('alt');
		$('table.packages td .desc').hide();
		$('table.packages td strong').after('<img src="/css/img/ico-help.png" class="help" />');
		$('table.packages td img.help')
			.kfTooltip({ 
				loadContent: function($this, $box)
				{		
					var desc = $this.parents('td').find('.desc').html();
					$box.append('<div class="tooltip-box"><div class="tooltip-arrow"></div><div class="inner"><p>' + desc +  '</p></div></div>');				
					$box[0].style.filter = null;
				},
				timeoutEnter: 150,
				timeoutLeave: 150
			});
	}
	
	
});

function updatePriceInfo()
{
	var oneDayMs = 1000 * 60 * 60 * 24;
	var langCode = $("html").attr("xml:lang") || 'cs';
	if(langCode == 'de') langCode = 'en';
	var lang = {
		'cs': {	
			'Počet dní': 'Počet dní',
			'Předběžná cena': 'Předběžná cena',
			'currency': 'Kč'
		},
		'en': {	
			'Počet dní': 'Days',
			'Předběžná cena': 'Price',
			'currency': '€'
		}
	};
	var isTradeDate = false;
	
	var computePrice = function(dateFrom, dateTo, room)
	{
		var currentDateMs = dateFrom.getTime();
		var dateToMs = dateTo.getTime();
		var price = 0;
		var pricesExpo = [
			{ from: '8.7.2010', to: '11.7.2010', 	prices: {'cs': [3243, 2854, 3892], 'en': [125, 110, 150] }, isTradeDate: true },
			{ from: '12.8.2010', to: '17.8.2010', 	prices: {'cs': [3762, 3762, 5059], 'en': [145, 145, 195] }, isTradeDate: true },
			{ from: '12.9.2010', to: '18.9.2010', 	prices: {'cs': [3762, 3762, 5059], 'en': [145, 145, 195] }, isTradeDate: true },
			{ from: '1.1.2009', to: '31.12.2030', 	prices: {'cs': [1768, 1430, 2210], 'en': [68, 55, 85] }, isTradeDate: false }
		];
		while(currentDateMs < dateToMs)
		{
			for(var i = 0, l = pricesExpo.length; i < l; i++)
			{
				var fromSplit = pricesExpo[i].from.split('.');
				var toSplit = pricesExpo[i].to.split('.');
				var fromDateMs = new Date(fromSplit[2], fromSplit[1] - 1, fromSplit[0]).getTime();
				var toDateMs = new Date(toSplit[2], toSplit[1] - 1, toSplit[0]).getTime();
				if(currentDateMs >= fromDateMs && currentDateMs <= toDateMs)
				{
					if(pricesExpo[i].isTradeDate) isTradeDate = true;										
					price += pricesExpo[i].prices[langCode][room];
					break;
				}
			}
			currentDateMs += oneDayMs;
		}
		return price;
	}
		
	var dateFrom = DateInput.DEFAULT_OPTS.stringToDate($('#sfDateFrom').val());
	var dateTo = DateInput.DEFAULT_OPTS.stringToDate($('#sfDateTo').val());
	
	if(dateFrom instanceof Date)
	{
		var today = new Date();
		if(dateFrom < today)
		{
			$('#sfDateFrom').val(DateInput.DEFAULT_OPTS.dateToString(today));
		}
	}	

	if(dateFrom instanceof Date && dateTo instanceof Date)
	{
		var dayDiff = Math.floor((dateTo.getTime() - dateFrom.getTime()) / oneDayMs);
		if(dayDiff <= 0)
		{
			dateTo = new Date();
			dateTo.setTime(dateFrom.getTime() + oneDayMs);
			$('#sfDateTo').val(DateInput.DEFAULT_OPTS.dateToString(dateTo));
			dayDiff = 1;
		}
		
		var room = $('#sfRooms').val();
		
		var price = 0;
		
		$('.room-row select').each(function(){
			price += computePrice(dateFrom, dateTo, $(this).val());
		});
		
		/* Datum zasahuje do veletrhu => nejsou povoleny ubytovací balíčky: */
		if(!isTradeDate)
		{			
			$('.cf-packages input').attr('disabled', false);
			if($('#cfPackage1').is(':checked')) 
			{
				price = price - price * 0.10; 
			}
			if($('#cfPackage2').is(':checked')) 
			{
				price = price - price * 0.15; 
			}
			if($('#cfPackage4').is(':checked')) 
			{
				price = price - price * 0.15; 
			}
		}
		else $('.cf-packages input').attr('disabled', true).attr('checked', false);
		
		price = Math.round(price);

		
		$('#date-calc').html(lang[langCode]['Počet dní'] + ': <strong>' + dayDiff + '</strong>, ' + lang[langCode]['Předběžná cena'] + ': <strong>' + price + ' ' + lang[langCode]['currency'] + '</strong>').show();
		$('#computedPrice').val(price);
		$('#computedDays').val(dayDiff);
		$('#computedCurrency').val(lang[langCode]['currency']);
	}
	else $('#date-calc').empty().hide();
}
