//DBR 1.7 DEFAULT THEME
/**
 * Controls number of fields in flights ASF
 * depending on fly type selection.
 */
var flyTripControl = function() {
	var DISABLE = false;

	var o = ($(this).val()) ? $(this) : $('input[type=radio]:checked','#asf');
	var inputs = $('.datepicker-t,.out-date,.out-time','.direction');

	$('#esky_calendar,#esky_cities').remove();

	if (o.not(':disabled')) {

		var mode = o.val();
		$('#trip-type-selection label').removeClass('selected');
		$('li.' + mode + ' label').addClass('selected');

		switch (mode) {
			case 'roundtrip':
				if (DISABLE) {
					inputs.removeAttr('disabled').removeClass('disabled');
				}
				else {
					inputs.show();
				}
				$('.direction').not(':first').remove();
				break;
			case 'onewaytrip':
				if (DISABLE) {
					inputs.attr('disabled', 'disabled').addClass('disabled').val('');
				}
				else {
					inputs.hide().val('');
				}
				inputs.prev('label').removeClass(cl_Error);
				$('input.virgin', '.direction').val('').removeClass('virgin');
				$('.direction').not(':first').remove();
				break;
			case 'multiple':
				if (DISABLE) {
					inputs.attr('disabled', 'disabled').addClass('disabled').val('');
				}
				else {
					inputs.hide().val('');
				}
				inputs.prev('label').removeClass(cl_Error);
				$('input.virgin', '.direction').val('').removeClass('virgin');
				var i = 1;
				var t = 4;
				while ($('.direction').size() < 5) {
					$('.direction:first').clone().hide().insertAfter('.direction:last');
					$('.direction:last').fieldReset('input,select').fieldNumberControl({
						'label': 'for',
						'input,select': 'id,name,tabindex',
						'a.btn-city': 'href'
					}, i++).fieldNumberControl({
						'input': 'tabindex'
					}, t).show();
					t = t + 4;


				}
				//$('#flight-asf').checkAll(asf_multiple,false);
				break;
		};

		/* CALENDAR */
		$('.datepicker-f').unbind('click').click(function(){
			$this = $(this);
			if ($this.hasClass('disabled'))
				return false;
			$this.esky_calendar({
				thisInput: ($this.get(0).nodeName == 'INPUT') ? $this.attr('id') : $this.prev().attr('id'),
				linkedInput: false,
				blockTo : new Date().zeroTime().addDays(1),
				allowSameDay : true,
				loop: 2,
				i18n : I18N_CalendarText
			});
			return false;
		});
		$('.datepicker-t').unbind('click').click(function(){
			$this = $(this);
			if ($this.hasClass('disabled'))
				return false;
			$this.esky_calendar({
				thisInput: ($this.get(0).nodeName == 'INPUT') ? $this.attr('id') : $this.prev().attr('id'),
				linkedInput: 'fly_from_date_0',
				blockTo : new Date().zeroTime().addDays(1),
				allowSameDay : true,
				loop: 2,
				i18n : I18N_CalendarText
			});
			return false;
		});


		/* AUTOCOMPLETE */
		$('input.airport').autocomplete(ibeConfig.autocomplete, {
			delay: 300,
			minChars: 3,
			matchSubset: 1,
			matchContains: 1,
			cacheLength: 10,
			autoFill: false,
			maxItemsToShow: 15,
			autoFillOne: true
		});
		$('a.map-button').unbind('click').destinator();
	}
};
var flyTripControlQSF = function() {
	var DISABLE = false;
	var o = ($(this).val()) ? $(this) : $('input[type=radio]:checked','#qsf');
	var inputs = $('.out-date,.out-time','#qsf');

	$('#esky_calendar,#esky_cities').remove();

	switch(o.val()){
		case 'roundtrip':
			if (DISABLE) {
				inputs.removeAttr('disabled');
				inputs.next().removeClass('btn-calendar-disabled');
			}
			else {
				inputs.show();
				inputs.next().show();
			}
		break;
		case 'onewaytrip':
			if(DISABLE){
				inputs.attr('disabled','disabled').val('');
				inputs.next().addClass('btn-calendar-disabled');
			}else{
				inputs.hide().val('');
				inputs.next().hide();
			}
			inputs.prev('label').removeClass(cl_Error);
			$('input.virgin','.search-segment').val('').removeClass('virgin');
		break;
	}
	$('.datepicker-f').unbind('click').click(function(){
		$this = $(this);
		if ($this.hasClass('disabled'))
			return false;
		$this.esky_calendar({
			thisInput: ($this.get(0).nodeName == 'INPUT') ? $this.attr('id') : $this.prev().attr('id'),
			linkedInput: false,
			blockTo : new Date().zeroTime().addDays(1),
			allowSameDay : true,
			loop: 2,
			i18n : I18N_CalendarText
		});
		return false;
	});
	$('.datepicker-t').unbind('click').click(function(){
		$this = $(this);
		if ($this.hasClass('disabled'))
			return false;
		$this.esky_calendar({
			thisInput: ($this.get(0).nodeName == 'INPUT') ? $this.attr('id') : $this.prev().attr('id'),
			linkedInput: 'fly_from_date_0',
			blockTo : new Date().zeroTime().addDays(1),
			allowSameDay : true,
			loop: 2,
			i18n : I18N_CalendarText
		});
		return false;
	});

	$('a.btn-city').unbind().destinator();
	$('input.airport-autocomplete').autocomplete(ibeConfig.autocomplete,{
		delay: 300,
		minChars: 3,
		matchSubset: 1,
		matchContains: 1,
		cacheLength: 10,
		autoFill: false,
		maxItemsToShow: 15,
		//width: 400,
		autoFillOne: true,
		formatItem: formatItem
	});
};

var correct_options = {
	filters : {
		'*' : 'Trim'
	},
	rules : {
		'.city-selector' : 'Required'
	},
	options : validationOptions,
	display : validationDecorator
};
var contact_after_error_options = {
	filters: {
		'*': 'Trim',
		client_tel: 'Digits'
	},
	rules: {
		client_mail: 'EmailAddress',
		client_tel: 'Regex(/^\\+?[\\d \\-]{9,32}$/i)'
	},
	messages: I18N_ContactAfterErrorOptions,
//	options: validationOptions,
	display: validationDecorator,
	options: {
		labelErrorClass : validationOptions.labelErrorClass,
		messagesErrorId : validationOptions.messagesErrorId,
		breakChain : validationOptions.breakChain,
		postAction : function(){
			$form_after_error = $(this);
			var formHeight = $form_after_error.height();

			$form_after_error.append($('<div></div>').addClass('form-processing').height($form_after_error.height()).width($form_after_error.width() - 35).text(I18N_FlightsErrorMessageSending)).animate({
				height: (formHeight/2)
			}, 1000);

			$.ajax({
				url: $form_after_error.attr('action'),
				data: $form_after_error.serialize(),
				type: 'POST',
				success: function(){
					$text = $form_after_error.prev();
					$form_after_error.remove();
					$text.after($('<p></p>').addClass('text success').text(I18N_FlightsErrorMessageSend));
				},
				error: function(){
					$form_after_error.animate({
						height: formHeight
					}, 1000, false, function(){
						$('div.form-processing', $form_after_error).remove();
						$('p.text.error').remove();
						$form_after_error.prev().after($('<p></p>').addClass('text error').text(I18N_FlightsErrorMessageNotSend))
					});
				}
			});
			return false;
		}
	}
};
var flight_options = {
	filters : {
		'*' : 'Trim'
	},
	rules : {
		'.passenger_type' : 'Required',
		'.passenger_firstname' : ['Required','Regex(/^[a-z'+allowedChars+'][a-z \\-'+allowedChars+']{1,31}$/i)'],
		'.passenger_lastname' : ['Required','Regex(/^[a-z'+allowedChars+'][a-z \\-'+allowedChars+']{1,31}$/i)'],
		payment_type : 'Required',
		'.baggage' : 'Required',
		'.insured_title' : 'Required',
		'.insured_firstname' : 'Required',
		'.insured_lastname' : 'Required',
		'#insurance_departure_country' : 'Required',
		'#insurance_arrival_country' : 'Required',
		'#insurance_start_date' : 'Date',
		'#insurance_end_date' : 'Date',
		'#insurance_value_ticket_only_v' : 'Required',
		'#insurance_value_ticket_v' : 'Required',
		'#insurance_value_hotel_v' : 'Required',
		'#insurance_value_other_v' : 'Required',
		'.required-field' : 'Required',
		'#payment_cc_select' : 'SelectCc',
		passenger_dob_1 : ['Date','BeforeDate(departureDate(18),1)'],	//Adult (+18)
		passenger_dob_2 : ['Date','DateBetween(departureDate(12),departureDate(2),1)'],	//Children (0-12)
		passenger_dob_3 : ['Date','DateBetween(departureDate(18),departureDate(12),1)'],	//Yougth (12-18)
		passenger_dob_4 : ['Date','AfterDate(arrivalDate(2),1)','BeforeDate(departureDate(0),1)','BeforeDate(todayDate(),1)']	//Infant (0-2)
	},
	groups : {
		passenger_dob_1 : {'fields':['.dob_1_y','.dob_1_m','.dob_1_d'],glue:'-'},
		passenger_dob_2 : {'fields':['.dob_2_y','.dob_2_m','.dob_2_d'],glue:'-'},
		passenger_dob_3 : {'fields':['.dob_3_y','.dob_3_m','.dob_3_d'],glue:'-'},
		passenger_dob_4 : {'fields':['.dob_4_y','.dob_4_m','.dob_4_d'],glue:'-'}
	},
	messages : I18N_FlightOptions,
	options : validationOptions,
	display : validationDecorator
};
var flight_payment = {
	filters : {
		'*' : 'Trim',
		'#payer_phone' : 'Digits',
		'#payment_card_cc_number' : 'Digits',
		'#payment_card_cc_cvv' : 'Digits'
	},
	rules : {
		'#payer_title' : 'Required',
		'#payer_firstname' : 'Regex(/^[a-z'+allowedChars+'][a-z \\-'+allowedChars+']{1,31}$/i)',
		'#payer_lastname' : 'Regex(/^[a-z'+allowedChars+'][a-z \\-'+allowedChars+']{1,31}$/i)',
		'#payer_street' : 'Regex(/^[\\w \\.\\-'+allowedChars+']{2,31}$/i)',
		'#payer_streetno' : 'Regex(/^[\\w\\d ł/]{1,16}$/i)',
		'#payer_code1' : 'ZipCode(getPayerLanguage)',
		'#payer_city' : 'Regex(/^[a-z'+allowedChars+'][\\w \\-'+allowedChars+']{2,31}$/i)',
		'#payer_country' : 'NotEmpty',
		'#payer_phone' : 'Regex(/^\\+?[\\d \\-]{9,32}$/i)',
		'#payer_email' : 'EmailAddress',

		'#invoice_name' : 'Regex(/^[a-z0-9 \\.\\-'+allowedChars+']{2,64}$/i)',
		'#invoice_nip' : 'Nip(getInvoiceLanguage)',
		'#invoice_street' : 'Regex(/^[\\w \\.\\-'+allowedChars+']{2,31}$/i)',
		'#invoice_streetno' : 'Regex(/^[\\w\\d ł/]{1,16}$/i)',
		'#invoice_code1' : 'ZipCode(getInvoiceLanguage)',
		'#invoice_city' : 'Regex(/^[a-z'+allowedChars+'][\\w \\-'+allowedChars+']{2,31}$/i)',
		'#invoice_country' : 'NotEmpty',

		'#payment_card_first_name' : 'Regex(/^[a-z'+allowedChars+'][a-z \\-'+allowedChars+']{2,15}$/i)',
		'#payment_card_last_name' : 'Regex(/^[a-z'+allowedChars+'][a-z \\-'+allowedChars+']{2,15}$/i)',
		'#payment_card_cc_number' : ['Required','Ccnum'],
		payment_card_date : 'CcExpireDate',
		'#payment_card_cc_cvv' : 'CcCvv',

		'#accept_terms' : 'Required'
	},
	groups : {
		payment_card_date : {'fields':['#payment_card_year','#payment_card_month'],glue:'-'}
	},
	messages : I18N_FlightPayment,
	options : validationOptions,
	display : validationDecorator
};
var flight_checkin = {
	filters : {
		'*' : 'Trim'
	},
	rules : {
		'.document_type' : 'Required',
		'.document_expiration_date' : ['Date','AfterDate(todayDate(),1)'],
		'.document_id' : 'Required',
		'.date_of_birth' : ['Date','BeforeDate(todayDate(),1)'],
		'.payer_country' : 'Required',
		'#email' : 'EmailAddress'
	},
	messages : I18N_FlightCheckin,
	options : validationOptions,
	display : validationDecorator
};


/* ---------- DESTINATOR FUNCTIONS ----------- */
var closeDestinator = function() {
	$destinator = $('#destinator');
	if ($destinator.length > 0) {
		$destinator.empty().remove();
	}
}
var setDestination = function(target, value) {
	$('#' + target).attr('value', value).removeClass('virgin');
	closeDestinator();
}
/* ---------- JQUERY EXTENSIONS ---------- */
jQuery.fn.extend({
	/*
	 * DESTINATOR - select destination from flash map
	 */
	destinator: function() {
		$(this).each(function(){
			$(this).click(function(){
				if ($('#destinator').length > 0) {
					closeDestinator();
					return false;
				}
				var ww = $(window).width();
				var input = $(this).prev();
				var xy = input.offset();
				var dx = xy.left; //destinator offset x
				if (xy.left > ww/2) { //if QSF is on the right side of the screen, align destinator to right
					dx = xy.left + input.width() + parseInt(input.css('padding-left'))*2 - 711;
				}

				$('body').append(
					$('<div></div>')
					.attr('id', 'destinator')
					.css({top: xy.top + input.height() + 8, left: dx})
					.append(
						$('<div></div>')
						.attr('id', 'destinatorContent')
						.append(
							$('<p></p>')
							.html('Do działania mapy niezbędny jest plugin <a href="http://get.adobe.com/flashplayer/" target="_blank">Adobe Flash</a> - prosimy o jego zainstalowanie.')
						)
					)
				);

				swfobject.embedSWF(ibeConfig.host + "/swf/destinator.swf", "destinatorContent", "750", "500", "9.0.0", "", {input:input.attr('id')});

				try {
					eskyTracker._trackEvent('Flash', 'QSF - mapa lotnisk', 'Otwarcie mapy lotnisk (flash)');
				}catch(e){void(e);}

				return false;
			});
		});
	}
});

/* ONLOAD */
$(document).ready(function()
{
	//$('form#correct-form').validate(correct_options);

	$('.transaction-currency').hover(
		function(e){

			var cursor = getCursorPosition(e);
			$tip = $('#transaction-currency-tip');

			$tip
				.css({
					'top': cursor.y - $tip.height() - 25,
					'left': cursor.x - $tip.width() - 80
				})
				.show();
		},
		function(){
			$('#transaction-currency-tip')
				.hide();
		}
	);
	$('.cvv-help_toggle').hover(function(e){
		$tip = $('#cvv-tip');
		var cursor = getCursorPosition(e);
		var object = getJQObjectDimensions($tip);
		var view = getViewportSize(true);
		var padding = 25;

		var x = (cursor.x + object.width + padding > view.width) ? view.width - (object.width + padding * 2) : cursor.x;
		var y = (cursor.y + object.height + padding > view.height) ? cursor.y - (object.height + padding * 2) : cursor.y + padding;

		$tip.css({
			'top': y,
			'left': x
		}).show();
	}, function(){
		$('#cvv-tip').hide();
	});

	/* Search result tips */
	//$('.help-lowcost').tipBox(TXT_TIP_Lowcost);
	$('.overnight').tipBox(TXT_TIP_Overnight);
	$('.pending').tipBox(TXT_TIP_PendingReservation,400);
	//$('p.changed big.city').tipBox(TXT_TIP_CityChanged);

	if($('form#flight-qsf').size() > 0) {
		flyTripControlQSF();
		$('input[type=radio]','#qsf').click(flyTripControlQSF);
		$(window).unload(function(){
			//$('form#flight-qsf').saveQuery('esky_flights',(7*24*60*60*1000)); //Save for 7 days
		});
	}

	$('form.flight.result.optional').submit(function(){
		$('#optional_confirmation').remove();
		var $optionalResevation = $(this);
		if ($optionalResevation.data('terms')=='accepted') {
			return true;
		}
		else {
			var viewport = getViewportSize();
			var viewportTotal = getViewportSize(true);

			var $mask = $('<div id="mask"><iframe></iframe></div>').height(viewportTotal.height);
			var $confirmBox = $('<div id="optional_confirmation"><h2>' + I18N_OptionalReservationHeader + '</h2><p>' + I18N_OptionalReservationText.replace(/\n/gm, '<br/>') + '</p><button class="ok"><span><em>' + I18N_OptionalReservationSubmit + '</em></span></button><button class="cancel"><span><em>' + I18N_OptionalReservationCancel + '</em></span></button></div>');



			$('button.cancel', $confirmBox).click(function(){
				$confirmBox.remove();
				$mask.remove();
				return false;
			});
			$('button.ok', $confirmBox).click(function(){
				$confirmBox.remove();
				$mask.remove();
				$optionalResevation.data('terms','accepted').submit();
				return false;
			});

			$('body').append($mask).append($confirmBox);
			$confirmBox.fadeIn('fast');

			return false;
		}
	});

	if ($('form#flight-asf-correct').size() > 0)
	{
		$('input.airport-autocomplete').autocomplete(ibeConfig.autocomplete,{
			delay: 300,
			minChars: 3,
			matchSubset: 1,
			matchContains: 1,
			cacheLength: 10,
			autoFill: false,
			maxItemsToShow: 15,
			//width: 400,
			autoFillOne: true,
			formatItem: formatItem
		});
		$('a.btn-city').unbind().destinator();
	}



	if ($('form#asf').size() > 0) {
		$asf = $('form#asf');
		$('#trip-type-selection label').click(function(){
			$('input:enabled',$(this)).focus().click();
		});

		if($('input.virgin').size()==4){ //TODO: Find better way to check if form is already filled by DBR
			$asf.loadQuery('esky_flights', 'fly_trip_type');

			flyTripControl();
			$asf.loadQuery('esky_flights');
		} else {
			flyTripControl();
		}
		$asf.submit(function(){
			$('input.virgin',$asf).removeClass('virgin').val('');
			$(this).saveQuery('esky_flights',(7*24*60*60*1000)); //Save for 7 days
		});

		$('input[type=radio]', '#asf').click(flyTripControl);
	}

	/* Baggage options for WIZZ Air on options page */
	$('select.baggage_option_1').each(function(){
		var select = FindId($(this).attr('id'));
		//Disable if baggage is not chosen and number of kg ise set to "select option" value.
		if($('#'+select.name+'0').val()<=0&&$(this).val()==0){
			$(this).val('').attr('disabled','disabled');
		}
		$('#'+select.name+'0').change(function(){
			if($(this).val()>0){
				$('#'+select.name+'1').removeAttr('disabled');
			} else {
				$('#'+select.name+'1').val('').attr('disabled','disabled');
			}
		});
	});
	//Maksymalna waga jednej sztuki bagażu wynosi 32 kg. Aby przewieźć większą ilość bagażu,
	//należy wybrać większą ilość sztuk bagażu rejestrowanego.
	$('select.baggage_option_1').change(function(){

		var select = FindId($(this).attr('id'));
		var options = {};
		$('option',$(this)).each(function(){
			var baggage = /^(?:.+ - )?(\d+).?kg.+$/.exec($(this).text());
			var kg = (baggage) ? baggage[1] : '';
			options[$(this).val()] = kg;
		});

		var kg = options[this.value];
		var bags = $('#'+select.name+'0').val();

		if(bags * 32 < kg) {
			var bagsRequired = Math.ceil(kg/32);
			var autoCorrect = confirm("Maksymalna waga jednej sztuki bagażu wynosi 32 kg. Aby przewieźć "+kg+" kg bagażu, należy wybrać minimum "+bagsRequired+" sztuk(i) bagażu rejestrowanego.\n\nProszę kliknąć OK, aby dopasować automatycznie liczbę bagaży do wagi bagażu.\nProszę kliknąć Anuluj, aby wybrać inną wagę bagażu.");
			if (autoCorrect) {
				$('#' + select.name + '0').val(bagsRequired);
			} else {
				$(this).val('');
			}
		}
	});
	$('select.baggage_option_0').change(function(){
		var select = FindId($(this).attr('id'));
		var selectWeigth = $('#'+select.name+'1').get(0);
		var baggage = /^(?:.+ - )?(\d+).?kg.+$/.exec($(selectWeigth.options[selectWeigth.selectedIndex]).text());
		if (baggage) {
			var kg = baggage[1];
			var bags = $(this).val();
			if (bags * 32 < kg) {
				var bagsRequired = Math.ceil(kg/32);
				var autoCorrect = confirm("Maksymalna waga jednej sztuki bagażu wynosi 32 kg. Aby przewieźć "+kg+" kg bagażu, należy wybrać minimum "+bagsRequired+" sztuk(i) bagażu rejestrowanego.\n\nProszę kliknąć OK, aby dopasować automatycznie liczbę bagaży do wagi bagażu.\nProszę kliknąć Anuluj, aby wybrać inną wagę bagażu.");
				if (autoCorrect) {
					$(this).val(bagsRequired);
				} else {
					$('#' + select.name + '1').val('');
				}
			}
		}
	});

	if($('form#options-form').size() > 0) {

		var calculate = function () {
			$.getJSON(ibeConfig.calculateFlightPrice, $options.serialize(), function (response, status) {

				$table = $('table.price');
				var Item = { Options : {
					Description : $('#item_6 .description p',$table),
					Price : $('#item_6 .price p',$table)
					},
					Insurance : {
						Price: $('#item_insurance .price p',$table),
						PriceHeader: $('#ins-header-price')
					},
					Total : $('#item_13',$table)
				};

				Item.Options.Price.hide();
				Item.Insurance.Price.hide();
				Item.Total.hide();

				if (status == 'success') {
					var Description = (response.Options.Description!='') ?
						' (' + response.Options.Description + ')'
						: '';
					Item.Options.Description.text(response.Options.Name + Description);
					Item.Options.Price.html(response.Options.Price+' <span class="currency">'+response.Options.Currency+'</span>').fadeIn();
					Item.Insurance.Price.html(response.Insurance.Price+' <span class="currency">'+response.Insurance.Currency+'</span>').fadeIn();
					Item.Insurance.PriceHeader.html('<span class="important-price">' +response.Insurance.Price+'</span> <span class="currency">'+response.Insurance.Currency+'</span>').fadeIn();
					Item.Total.html(response.Total.Price+' <span class="currency">'+response.Total.Currency+'</span>').fadeIn();
				}
			});
			return false;
		}

		var name = 'esky_options';

		$options = $('form#options-form');
		//$options.loadQuery(name); //calculatePriceRaw();

		calculate();
		$('.calculate').change(calculate);

		$options.validate(flight_options);
		/*
		$(window).unload(function(){
			$options.saveQuery(name,(10*60*1000)); //Save for 10 minutes
		});
		*/
	}
	if($('form#payment-form').size() > 0) {
		$payment = $('form#payment-form');
		$payment.validate(flight_payment);
	}
	if ($('form#online-checkin').size() > 0) {
		$('form#online-checkin').validate(flight_checkin);
	}




	/* Ubezpieczenia */

	if($('#insurance-buy').size() > 0) {
		$('.pop-calendar')
		.unbind()
		.not('.btn-calendar-disabled')
		.click(function(){
			var o = $(this);
			o.esky_calendar({thisInput:o.attr('rel'),linkedInput:o.attr('rev'),loop:2,blockedDays:1,allowSameDay:true,i18n:I18N_CalendarText,clickCallback:calculate});
			return false;
		});

		$('#insurance_type_full').click(function() {
			j = $('#insurance_type_full');
			if (!j.is(':checked')) {
				$('#insurance-travel').not('.hidden').addClass('hidden');
				$('#insurance-cancellation-cost').removeClass('hidden');
				$('#insurance-cancellation-cost input').removeClass('hidden');
				hideAllPrices();
			} else {
				$('#insurance-travel').removeClass('hidden');
				$('#insurance-cancellation-cost').addClass('hidden');
				$('#insurance-cancellation-cost input').addClass('hidden');
				$('#insurance_value_hotel').click();
			}

			return true;
		});

		$('#insurance_type_ticket').click(function() {
			j = $('#insurance_type_ticket');

			if (!j.is(':checked')) {
				$('#insurance-travel').removeClass('hidden');
				$('#insurance-cancellation-cost').addClass('hidden');
				$('#insurance-cancellation-cost input').addClass('hidden');
				$('#insurance_value_hotel').click();
			} else {
				$('#insurance-travel').not('.hidden').addClass('hidden');
				$('#insurance-cancellation-cost').removeClass('hidden');
				$('#insurance-cancellation-cost input').removeClass('hidden');
				hideAllPrices();
			}

			return true;
		});

		$('#insurance_toggle').click(function() {
			j = $('#insurance_toggle');
			$details = $('#insurance-details');

			if (!j.is(':checked')) {
				if (!$details.hasClass('hidden')) {
					$('.insurance-details-toggle').click();
				};
			} else
			{
				if ($details.hasClass('hidden')) {
					$('.insurance-details-toggle').click();
				};
			};

			return true;
		});

		/* wybór pakietu turystycznego */

		var hideAllPrices = function() {
			$('#ins-flight-price').not('.hidden').addClass('hidden');
			$('#ins-flight-price input').not('.hidden').addClass('hidden');
			$('#ins-hotel-price').not('.hidden').addClass('hidden');
			$('#ins-hotel-price input').not('.hidden').addClass('hidden');
			$('#ins-other-price').not('.hidden').addClass('hidden');
			$('#ins-other-price input').not('.hidden').addClass('hidden');
			$('#insurance_value_other_description').not('.hidden').addClass('hidden');
		};

		$('#insurance_value_ticket').click(function() {
			j = $('#ins-flight-price');

			if ($(this).is(':checked')) {
				hideAllPrices();
				j.removeClass('hidden');
				$('#ins-flight-price input').removeClass('hidden');
			};
			return true;
		});

		$('#insurance_value_hotel').click(function() {
			j = $('#ins-hotel-price');
			if ($(this).is(':checked')) {
				hideAllPrices();
				j.removeClass('hidden');
				$('#ins-hotel-price input').removeClass('hidden');
			};
			return true;
		});

		$('#insurance_value_other').click(function() {
			j = $('#ins-other-price');
			if ($(this).is(':checked')) {
				hideAllPrices();
				j.removeClass('hidden');
				$('#ins-other-price input').removeClass('hidden');
				$('#insurance_value_other_description').removeClass('hidden');
			};
			return true;
		});

		$('#insurance_value_none').click(function() {
			hideAllPrices();
			return true;
		});

		$('#ins-person-add').click(function() {
			$('.person:first').clone().fieldReset('input,select').insertAfter('.person:last');
			$('.person:last').insuranceFieldNumberControl({'label':'for','input':'id','select':'id'},$('.person').size()-1)
			.insuranceFieldNumberControlArray({'input':'name','select':'name'},$('.person').size()-1);
			calculate();
			return false;
		});

		$('#ins-person-remove').click(function() {
			if ($('.person').size()>1) {
				$('.person:last').remove();
				calculate();
			}
			return false;
		});

		// sprawdzamy stan zaznaczen po zaladowaniu strony i ustawiamy widocznosc jesli trzeba
		if ($('#insurance_type_ticket').is(':checked')) {
			$('#insurance-travel').not('.hidden').addClass('hidden');
			$('#insurance-cancellation-cost').removeClass('hidden');
			$('#insurance-cancellation-cost input').removeClass('hidden');
		} else {
			$('#insurance-travel').removeClass('hidden');
			$('#insurance-cancellation-cost').addClass('hidden');
			$('#insurance-cancellation-cost input').addClass('hidden');
		};

		if ($('#insurance_value_ticket:checked').size()>0) {
			$('#insurance_value_ticket').click();
		}
		if ($('#insurance_value_hotel:checked').size()>0) {
			$('#insurance_value_hotel').click();
		}
		if ($('#insurance_value_other:checked').size()>0) {
			$('#insurance_value_other').click();
		}
		if ($('#insurance_value_none:checked').size()>0) {
			$('#insurance_value_none').click();
		}

		// autocomplete of insured based on passengers
		var ac_pass_complete = function () {
			var i = $('.passenger_type').size(); // number of passengers

			for(var l=0;l<i;l++) {
				passenger_title = '';
				passenger_firstname = '';
				passenger_lastname = '';

				passenger_title = $('#passenger_type_' + l).val();
				passenger_firstname = $('#passenger_firstname_' + l).val();
				passenger_lastname = $('#passenger_lastname_' + l).val();

				// if corresponding insured exists - copy data from passengers to insured
				if ($('#insurance_insured_'+l+'_first_name').size()>0) {
					if ($('#insurance_insured_' + l + '_title').val()=='') {
						$('#insurance_insured_' + l + '_title').val(passenger_title);
					};
					if ($('#insurance_insured_' + l + '_first_name').val()=='') {
						$('#insurance_insured_' + l + '_first_name').val(passenger_firstname);
					};
					if ($('#insurance_insured_' + l + '_last_name').val()=='') {
						$('#insurance_insured_' + l + '_last_name').val(passenger_lastname);
					};
				};
			};

		};

		if ($('#messages').size()>0 && $('#messages li').size()>0) {
			$('.insurance-details-toggle').click();
		};

		ac_pass_complete();
		$('.ins_pass_ac').change(ac_pass_complete);

	};

	/* /Ubezpieczenia */

	/*
	 * Obsługa formularza do wysyłania danych klienta w przypadku nieudanej rezerwacji.
	 * Występuje na końcu procesu rezerwacji lub w połączeniu z ASF.
	 */
	if ($('form#contact-after-error').size() > 0) {
		$('form#contact-after-error').validate(contact_after_error_options);
	}
/*
	$('form#contact-after-error').submit(function(){
		$form = $(this);
		var formHeight = $form.height();

		$form.append($('<div></div>')
			.addClass('form-processing')
			.height($form.height())
			.width($form.width()-35)
			.text(I18N_FlightsErrorMessageSending)
		).animate({
			height:(formHeight/2)
		},1000);

		$.ajax({
			url : $form.attr('action'),
			data : $form.serialize(),
			type : 'POST',
			success : function(){
				$text = $form.prev();
				$form.remove();
				$text.after($('<p></p>')
					.addClass('text success')
					.text(I18N_FlightsErrorMessageSend)
				);
			},
			error : function(){
				$form.animate({
					height:formHeight
					},1000,false,function(){
						$('div.form-processing',$form).remove();
						$form.prev().after($('<p></p>')
							.addClass('text error')
							.text(I18N_FlightsErrorMessageNotSend)
						)
					}
				);
			}
		});
		return false;
	});
*/

});