$(document).ready(function () {
/* start */

// carousel loga hotelu
var opts = { 
	align: 'middle',
  size: 50,
	distance: 60,
  coefficient : 1.5,
  labels: 'bc',
	duration: 500
  };
jQuery(document).ready(function(){
  jQuery('#jqdock').jqDock(opts);
});

// promo slideshow
$('#promo').cycle({
	fx: 'fade',
	speed:    2000, 
	timeout:  4000 
});

// lightbox
$(".lightbox").lightbox();


// tabs
$("#tabs").tabs();

// dialog info
$('#dialog').dialog({
	autoOpen: false
});
$('#modcanres').click(function() {
	$('#dialog').dialog('open');
	return false;
});

// externi odkazy do noveho okna
$("a.external").attr('target', '_blank');


// prenastaveni formatu datumu pro pripadnou lokalizaci, abych umel desifrovat
if (getLang () != "en") {
	$.datepicker.regional[getLang ()] = {dateFormat:'mm/dd/yy'};
	$.datepicker.setDefaults($.datepicker.regional[getLang ()]);
}

/* --------------------------------------------------------------- */
// calendar
$('#calholder_arr').datepicker({
	numberOfMonths: 2,
	minDate: 0, 
	maxDate: '+1Y',
	showAnim: null,
	duration:0,
	firstDay: 1,
	onClose: function() { 
		$('#promo').toggleClass('novis');
		$('#tabs').toggleClass('novis');
	},
	onSelect: function(dateText, inst) {
		var date = new Date(dateText);
		var arrayM = new Array();
		arrayM = {1:"January",2:"February",3:"March",4:"April",5:"May",6:"June",7:"July",8:"August",9:"September",10:"October",11:"November",12:"December"};

		$("#arrival_day").val(date.getDate());
		$("#arrival_monthyear").val(""+arrayM[parseInt(date.getMonth()+1,10)]+" "+date.getFullYear());
		calChangeArr();
	}
});
$('#cal_arr').click(function() {
	$('#promo').toggleClass('novis');
	$('#tabs').toggleClass('novis');
	$('#calholder_arr').datepicker('show');
});

$('#calholder_dep').datepicker({
	numberOfMonths: 2,
	minDate: '+1D', 
	maxDate: '+1Y +1D',
	showAnim: null,
	duration:0,
	firstDay: 1,

	onClose: function() { 
		$('#promo').toggleClass('novis');
		$('#tabs').toggleClass('novis');
	},
	onSelect: function(dateText, inst) {
		var date = new Date(dateText);
		var arrayM = new Array();
		arrayM = {1:"January",2:"February",3:"March",4:"April",5:"May",6:"June",7:"July",8:"August",9:"September",10:"October",11:"November",12:"December"};

		$("#departure_day").val(date.getDate());
		$("#departure_monthyear").val(""+arrayM[parseInt(date.getMonth()+1,10)]+" "+date.getFullYear());
		calChangeDep();
	}
});
$('#cal_dep').click(function() {
	$('#promo').toggleClass('novis');
	$('#tabs').toggleClass('novis');	
	dates = parseDates();
	//$('#calholder_dep').datepicker( "setDate", '2010/05/10');
		dates[1].setTime(dates[0].getTime() + 86400000);
	$('#calholder_dep').datepicker("option", "minDate", dates[1]);
	$('#calholder_dep').datepicker('show');
});

// posun kalendare
$('#arrival_day, #arrival_monthyear').change(function() {
	calChangeArr();
});
$('#departure_day, #departure_monthyear').change(function() {
	calChangeDep();
});
function calChangeArr () {
	var montharray=new Array("January","February","March","April","May","June","July","August","September","October","November","December");
	dates = parseDates();
	if (dates[0].getTime() >= dates[1].getTime())
		dates[1].setTime(dates[0].getTime() + 86400000);
	$('#departure_day').val(dates[1].getDate());
	$('#departure_monthyear').val(montharray[dates[1].getMonth()] + ' ' + dates[1].getFullYear());
}
function calChangeDep () {
	var montharray=new Array("January","February","March","April","May","June","July","August","September","October","November","December");
	dates = parseDates();
	if (dates[1].getTime() <= dates[0].getTime())
		dates[0].setTime(dates[1].getTime() - 86400000);
	$('#arrival_day').val(dates[0].getDate());
	$('#arrival_monthyear').val(montharray[dates[0].getMonth()] + ' ' + dates[0].getFullYear());
}
function parseDates () {
	ad = $('#arrival_day').val();
	xa = $('#arrival_monthyear').val();
	xa = xa.split(' ');
	am = xa[0];
	ay = xa[1];
	adate = new Date(am+' '+ad+', '+ay);

	dd = $('#departure_day').val();
	xd = $('#departure_monthyear').val();
	xd = xd.split(' ');
	dm = xd[0];
	dy = xd[1];
	ddate = new Date(dm+' '+dd+', '+dy);

	return (Array(adate, ddate));
}

/* --------------------------------------------------------------- */

// otevirani a zavirani popisku
$('.priceopen').hover(function(event) {
	$(this).toggleClass('hover');
});
$('.priceopen').each(function(index) {
	$(this).click(function () {
		$('tr.'+$(this).attr("rel")).toggle();
		$('div.'+$(this).attr("rel")).toggle('blind');
		return false;
	});
});
$('.closetr').each(function(index) {
	$(this).click(function () {
		$('tr.'+$(this).attr("rel")).hide();
		$('div.'+$(this).attr("rel")).hide('blind');
		return false;
	});
});

// odeslani az po vybrani nejakeho pokoje + uprava ceny
// moznost zvolit benefity
roomchooseCheck();
$('#roomchoose .tp select').each(function() {
	$(this).change(function () {
		roomchooseCheck();
	});
});
function roomchooseCheck() {
	$('#roomchoose input[type=submit]').attr('disabled', 'disabled');
	$('#roomchoose .submitbox').removeClass('active');
	var total = 0;
	$('#roomchoose #totalprice span').html(total);
	$('#roomchoose .tp select').each(function() {
		tp = parseInt($(this).val());
		pokoj_id = $(this).attr('rel');			
		if (tp>0) {
			$('tr.pri_'+pokoj_id+':hidden').show();
			$('div.pri_'+pokoj_id+':hidden').show('blind');
			$('#roomchoose input[type=submit]').removeAttr('disabled');
			$('#roomchoose .submitbox').addClass('active');
			
			roomprice = tp*$('#roomchoose #tph_'+pokoj_id).html();
			total = total + roomprice;
			$('#roomchoose #totalprice span').html(total);
			//$('#roomchoose #tp_'+pokoj_id).html(tp*$('#roomchoose #tph_'+pokoj_id).html());

			// zapnu vyber benefitu a omezim pocet na aktualni pocet dle poctu pokoju a prictu k total price
			$('.pri_'+pokoj_id+'.benefit select').removeAttr('disabled');
			$('.pri_'+pokoj_id+'.benefit select').each(function () { 
				$(this).children().slice(0,tp+2).removeAttr('disabled'); 
				$(this).children().slice(tp+1).attr('disabled', 'disabled'); 

				tpb = parseInt($(this).val());
				if (tpb > tp)
					$(this).val(tp);
				benefitprice = tpb*$('.pri_'+pokoj_id+'.benefit #tpb_'+$(this).attr('rel')).html();
				total = total + benefitprice;
				//alert ('P '+benefitprice);
			});
		}
		else {
			// vypnu vyber benefitu
			$('.pri_'+pokoj_id+'.benefit select').val(0);
			$('.pri_'+pokoj_id+'.benefit select').attr('disabled', 'disabled');
		}
	});
}

/* --------------------------------------------------------------- */

// rezervace - transfer
$('#transferdata').hide();
function transfer_show() {
	if ($('#ft_tyes').attr('checked'))
		$('#transferdata').show('blind');
	else
		$('#transferdata').hide('blind');
}
$("#ft_tyes, #ft_tno").change(transfer_show);


// formular - zvyraznine
$('.normalform .inputbox').hover(function(event) {
	$(this).toggleClass('hover');
});

// booking validace
$('form#booking .inputbox.required input, form#booking .inputbox.required select').bind('blur keyup change', function () {
	testValid (this);
});

$('form#booking').submit(function () {
	var form_error = false;
	form_ok = true;
	$('form#booking .inputbox.required input, form#booking .inputbox.required select').each (function () {
		tv = testValid(this);
		if(tv) {
			form_ok = false;
			form_error = tv;
		}
	});
	defvalid ($('form#booking .submitbox input[type=submit]'), form_ok);	
	if (!form_ok) {
		setTimeout ("$('form#booking .submitbox').removeClass('error').children('.err_msg').addClass('hide')",4000);
		
		var eburl = '/error-booking.php?';
		$('form#booking :input').each (function () {
			eburl = eburl + $(this).attr('name') + '=' + $(this).val() + '&';
		});
		eburl = eburl + 'failedon='+form_error;
		$.ajax({ url: eburl });
		//alert ('EB: '+eburl);
	}
	
	// ne 2x submit
	if (this.beenSubmitted || !form_ok)
		return false;
	else if (form_ok)
		this.beenSubmitted = true;
});

// vlastni kontrola formulare
function testValid(el) {
	validerror = false;
	// jmeno
	if ($(el).attr('name')=='jmeno') {
		if(!defvalid (el, $(el).val()))
				validerror = 'jmeno';
	}
	// email
	if ($(el).attr('name')=='email') {
		val = $(el).val();
		if(!defvalid (el, /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(val)))
			validerror = 'email';
	}
	// card_name
	if ($(el).attr('name')=='card_name') {
		if (!defvalid (el, $(el).val()))
			validerror = 'card name';
	}
	// Expiration Date (card_mesic+card_rok
	if ($(el).attr('name')=='card_mesic' || $(el).attr('name')=='card_rok') {
		val = new Date ();
		if (!defvalid (el, ($('#f_card_rok').val()+$('#f_card_mesic').val() > val.getFullYear()+(val.getMonth()<10 ? '0'+val.getMonth() : val.getMonth())) ? 1: 0))
			validerror = 'card expiration';
	}
	// Cislo karty (card_number + card_type)
	if ($(el).attr('name')=='card_type' || $(el).attr('name')=='card_num1' || $(el).attr('name')=='card_num2' || $(el).attr('name')=='card_num3' || $(el).attr('name')=='card_num4') {
		if ($('#f_card_type').val() == 'American Express')
			cislo = $('#f_card_num1').val()+$('#f_card_num2').val()+$('#f_card_num3').val();
		else
			cislo = $('#f_card_num1').val()+$('#f_card_num2').val()+$('#f_card_num3').val()+$('#f_card_num4').val();
		result = cc_check(cislo, $('#f_card_type').val());
		if (!defvalid ($('#f_card_type'), result))
			validerror = 'card number';
	}
	// souhlas
	if ($(el).attr('name')=='souhlas') {
		if(!defvalid (el, $(el).is(':checked')))
				validerror = 'aggreament';
	}
	return validerror;
}

// vysledek kontroly
function defvalid (el, result) {
	if (result) {
			$(el).parent().removeClass('error').addClass('ok');
			$(el).parent().children('.err_msg').addClass('hide');
		}
		else {
			//$(this).focus();
			$(el).parent().removeClass('ok').addClass('error');
			$(el).parent().children('.err_msg').removeClass('hide');
		}
	return result;
}

/* --------------------------------------------------------------- */

// transfer validace
$('form#conres .inputbox.required input, form#conres .inputbox.required select').bind('blur keyup change', function () {
	testValidTransfer (this);
});

$('form#conres').submit(function () {
	form_ok = true;
	$('form#conres .inputbox.required input, form#conres .inputbox.required select').each (function () {
		if(testValidTransfer(this))
			form_ok = false;
	});
	defvalid ($('form#conres .submitbox input[type=submit]'), form_ok);	
	if (!form_ok)
		setTimeout ("$('form#conres .submitbox').removeClass('error').children('.err_msg').addClass('hide')",4000);
	
	// ne 2x submit
	if (this.beenSubmitted || !form_ok)
		return false;
	else if (form_ok)
		this.beenSubmitted = true;
});

// vlastni kontrola formulare
function testValidTransfer(el) {
	validerror = false;
	// jmeno
	if ($(el).attr('name')=='jmeno') {
		if(!defvalid (el, $(el).val()))
				validerror = true;
	}
	// email
	if ($(el).attr('name')=='email') {
		val = $(el).val();
		if(!defvalid (el, /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(val)))
			validerror = true;
	}
	// termin
	if ($(el).attr('name')=='termin') {
		if (!defvalid (el, $(el).val()))
			validerror = true;
	}
	// arrival
	if ($(el).attr('name')=='arrival') {
		if (!defvalid (el, $(el).val()))
			validerror = true;
	}
	// flightnumber
	if ($(el).attr('name')=='flightnumber' && $('#f_ttype_airport').attr('checked')) {
		if (!defvalid (el, $(el).val()))
			validerror = true;
	}
	// trainstation
	if ($(el).attr('name')=='trainstation' && $('#f_ttype_train').attr('checked')) {
		if (!defvalid (el, $(el).val()))
			validerror = true;
	}
	// departure
	if ($(el).attr('name')=='departure') {
		if (!defvalid (el, $(el).val()))
			validerror = true;
	}
	// kom_protirobotum
	if ($(el).attr('name')=='kom_protirobotum') {
		if (!defvalid (el, $(el).val()==4))
			validerror = true;
	}
	// souhlas
	if ($(el).attr('name')=='agree') {
		if(!defvalid (el, $(el).is(':checked')))
				validerror = true;
	}
	return validerror;
}

// prepinani formulare transferu
$('#f_ttype_airport, #f_ttype_train').change (function () {
	if ($('#f_ttype_airport').attr('checked')) {
		//$('#conres_form').hide('blind');
		$('#f_car_lim_train, #f_car_van_train, #ib_c_trainstation').hide();
		$('#f_car_lim_air, #f_car_van_air, #ibc_c_flightnumber').show();
		$('#conres_form').show('blind',null,1000);
	}
	else {	
		//$('#conres_form').hide('blind');
		$('#f_car_lim_air, #f_car_van_air, #ibc_c_flightnumber').hide();
		$('#f_car_lim_train, #f_car_van_train, #ib_c_trainstation').show();
		$('#conres_form').show('blind',null,1000);
	}
});
$('#f_car_lim_train, #f_car_van_train, #ib_c_trainstation').hide();
$('#conres_form').hide();

// kalendar u tranferu
$('#c_termin').datepicker({
	numberOfMonths: 1,
	minDate: 0, 
	maxDate: '+1Y',
	showAnim: null,
	duration:0,
	dateFormat: 'd. m. yy',
	firstDay: 1
});
$('#cal_transfer').click(function() {
	$('#c_termin').datepicker('show');
});

/* --------------------------------------------------------------- */

// meeting room validace
$('form#meeting .inputbox.required input, form#meeting .inputbox.required select').bind('blur keyup change', function () {
	testValidMeeting (this);
});

$('form#meeting').submit(function () {
	form_ok = true;
	$('form#meeting .inputbox.required input, form#meeting .inputbox.required select').each (function () {
		if(testValidMeeting(this))
			form_ok = false;
	});
	defvalid ($('form#meeting .submitbox input[type=submit]'), form_ok);	
	if (!form_ok)
		setTimeout ("$('form#meeting .submitbox').removeClass('error').children('.err_msg').addClass('hide')",4000);
	
	// ne 2x submit
	if (this.beenSubmitted || !form_ok)
		return false;
	else if (form_ok)
		this.beenSubmitted = true;
});

// vlastni kontrola formulare
function testValidMeeting(el) {
	validerror = false;
	// jmeno
	if ($(el).attr('name')=='jmeno') {
		if(!defvalid (el, $(el).val()))
				validerror = true;
	}
	// email
	if ($(el).attr('name')=='email') {
		val = $(el).val();
		if(!defvalid (el, /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(val)))
			validerror = true;
	}
	// termin
	if ($(el).attr('name')=='termin') {
		if (!defvalid (el, $(el).val()))
			validerror = true;
	}
	// from
	if ($(el).attr('name')=='from') {
		if (!defvalid (el, $(el).val() && $('#m_till').val()))
			validerror = true;
	}
	// till
	if ($(el).attr('name')=='till') {
		if (!defvalid (el, $(el).val() && $('#m_from').val()))
			validerror = true;
	}

	// pocet osob
	/*
	if ($('#m_cbreak').val()!='' && $('#pocet_osob').is(':hidden')) {
		alert ('ahoj');
		$('#pocet_osob').show('blind');
	}
	else if ($('#pocet_osob').is(':visible'))
		$('#pocet_osob').hide('blind');
		*/	
	// kom_protirobotum
	if ($(el).attr('name')=='kom_protirobotum') {
		if (!defvalid (el, $(el).val()==4))
			validerror = true;
	}
	return validerror;
}

// prepinani formulare transferu
$('#meeting_order').click (function (e) {
	$(this).hide();
	$('#meeting').show('blind',null,1000);
	e.preventDefault();
});
$('#meeting').hide();
//$('#pocet_osob').hide();

// kalendar u tranferu
$('#m_termin').datepicker({
	numberOfMonths: 1,
	minDate: 0, 
	maxDate: '+1Y',
	showAnim: null,
	duration:0,
	dateFormat: 'd. m. yy',
	firstDay: 1
});
$('#cal_meeting').click(function() {
	$('#m_termin').datepicker('show');
});

/* --------------------------------------------------------------- */

/* END */
});

// cc check
function cc_check(number, type)	{
	if (number == '' || !/^[0-9 ]+$/.test(number))
		return false;
	
	// inspired by http://www.eflo.net/downloads.php#mod10
	var ccno = number.replace(/ /g, '');
	var cclen = ccno.length;
	var ccsum = 0;
	for (var i=0; i < cclen; i++) {
		var ccdig = parseInt(ccno.charAt(cclen-(i+1)));
		if (i % 2 == 1) {
			ccdig *= 2;
			if (ccdig >= 10) {
				ccdig = (1+ccdig % 10);
			} 
		}
		ccsum += ccdig;
	}
	if (ccsum % 10 != 0) {
		return false;
	}
	switch (type) {
		case 'American Express': return length_correct(number, 13, 15) && /^34|^37/.test(number); // American Express
		
		case 'VISA': return (/^450875|^484406|^484407|^484408|^484411|^484412|^484413|^484414|^484415|^484416|^484417|^484418|^484419|^48442|^48443|^48444|^484450|^484451|^484452|^484453|^484454|^484455|^49173|^49174|^49175|^491880/.test(number) ? false : length_correct(number, 13, 16) && /^4/.test(number)); // VISA
		
		case 'Master/Euro Card': return length_correct(number, 16) && /^51|^52|^53|^54|^55/.test(number); // EC/MC
		
		default: return true;
	}
}
function length_correct(number, valid_length1) {
	for (var i=1; i < arguments.length; i++) {
		if (number.length == arguments[i]) {
			return true;
		}
	}
	return false;
}

// Prepinani poctu poli podle vybrane karty pri rezervaci
function changeCard() {
	i = document.form1.card_type.selectedIndex
	card = document.form1.card_type.options[i].value
	if(card == "American Express") {
		document.form1.card_num4.style.display="none";
		document.getElementById('f_card_num2').setAttribute('maxLength', 6);
		document.getElementById('f_card_num3').setAttribute('maxLength', 5);
		document.getElementById('f_card_num2').setAttribute('Size', 6);
		document.getElementById('f_card_num3').setAttribute('Size', 5);
		//document.getElementById('cvctr').style.display="none";
		}
	else {
		document.form1.card_num4.style.display="inline";
		document.getElementById('f_card_num2').setAttribute('maxLength', 4);
		document.getElementById('f_card_num3').setAttribute('maxLength', 4);
		document.getElementById('f_card_num2').setAttribute('Size', 4);
		document.getElementById('f_card_num3').setAttribute('Size', 4);
		//document.getElementById('cvctr').style.display="block";
		}
	}