var googleCode = 'UA-859886-1';
var connectError = '<div class="errors"><h1>Wystąpił błąd</h1><div class="error"><p>Wystąpił błąd w czasie ładowania strony, spróbuj ponownego wyszukiwania.</p></div></div>';

function varDump(variable, maxDeep)
{
        var deep = 0;
        var maxDeep = maxDeep || 5;

        function fetch(object, parent)
        {
                var buffer = '';
                deep++;

                for (var i in object) {
                        if (parent) {
                                objectPath = parent + '.' + i;
                        } else {
                                objectPath = i;
                        }
				

                        if (typeof object[i] == 'object') {
							/*
                                buffer += ",   ";
                                if (deep < maxDeep) {
                                        buffer += fetch(object[i], objectPath);
                                }
                                */
                        } else if (typeof object[i] == 'function') {
							/*
                                buffer += ",   ";
                                */
                        } else if (typeof object[i] == 'string') {
                        buffer += objectPath + ' (' + typeof object[i] + ')';
							
                                buffer += ': "' + object[i] + "\",    ";
                        } else {
							/*
							try {
								buffer += ': ' + object[i] + ",   ";
							}
							catch (e) {
								
							}
							*/
                        }
                }

                deep--;
                return buffer;
        }

        if (typeof variable == 'object') {
                return fetch(variable);
        }

        return '(' + typeof variable + '): ' + variable + ",  ";
}

/***
 * mainForm
 */

function initMainForm(){
    if ($("#departureDateCalendar").attr("id")) {
		$("#departureDateCalendar").datepicker({
			dateFormat: "dd-mm-yy",
			changeMonth: true,
			changeYear: true,
			defaultDate: calendarStartDate,
			minDate: calendarStartDate,
			maxDate: calendarMaxDate,
			altField: "#segments_0_date",
			onSelect: function(dateText, inst){
				$("#departureDateSpan").html(dateText);
				var returnVal = $("#mainSerchForm input[name=returnTrip]").attr('checked');
				if (returnVal == true) {
					var selectedDate1 = $("#returnDateCalendar").datepicker('getDate');
					$("#returnDateCalendar").datepicker("option", "minDate", dateText);
					if (lastSelectedReturnDate != null) {
						$("#returnDateCalendar").datepicker('setDate', lastSelectedReturnDate);
					}
					else {
						$("#returnDateCalendar").datepicker('setDate', dateText);
					}
					
					$("#returnDateCalendar").datepicker("option", "minDate", dateText);
					var selectedDate2 = $("#returnDateCalendar").datepicker('getDate');
					if ($.datepicker.formatDate("yy-mm-dd", selectedDate1) != $.datepicker.formatDate("yy-mm-dd", selectedDate2)) {
						$("#returnDateSpan").html($.datepicker.formatDate("dd-mm-yy", selectedDate2));
						
						lastSelectedReturnDate = null;
					}
				}
			}
		});
		$("#departureDateSpan").html($.datepicker.formatDate("dd-mm-yy", $("#departureDateCalendar").datepicker('getDate')));
	}                                                                  
                                                                                                                                                                                                                             
    if ($("#returnDateCalendar").attr("id")) {
       $("#returnDateCalendar").datepicker({
           dateFormat: "dd-mm-yy",
                                                    changeMonth: true,
                                                    changeYear: true,
                                                    defaultDate: calendarStartDate,
                                                    minDate: calendarStartDate,
                                                    maxDate: calendarMaxDate,
                                                    altField: "#segments_1_date",
                                                    onSelect: function(dateText, inst){
                                                        lastSelectedReturnDate = dateText;
                                                        $("#returnDateSpan").html(dateText);
                                                    }
                                                });
                                                $("#returnDateSpan").html($.datepicker.formatDate("dd-mm-yy", $("#returnDateCalendar").datepicker('getDate')));
                                                  }
    
   $("#segments_2_date").datepicker({
                                                        dateFormat: "dd-mm-yy",
                                                        changeMonth: true,
                                                        changeYear: true,
                                                        minDate: +2,
                                                        maxDate: +355,
                                                        showOn: 'both',
                                                        buttonImage: '/public/images/calendar_ico.gif',
                                                        buttonImageOnly: true,
                                                        beforeShow: function(){
                                               //             $("#segments_2_date").val('');
                                                        },
                                                        onSelect: function(dateText, inst){
                                                            $("#segments_3_date").datepicker("option", "minDate", dateText);
                                                            var selectedDate1 = $("#segments_3_date").datepicker('getDate');
                                                            var selectedDate2 = $("#segments_4_date").datepicker('getDate');
                                                            if ($.datepicker.formatDate("dd/m/yy", selectedDate1) == dateText &&
                                                            $.datepicker.formatDate("dd/m/yy", selectedDate1) == $.datepicker.formatDate("dd/m/yy", selectedDate2)) {
                                                                $("#segments_4_date").val('');
                                                                $("#segments_3_date").val('');
                                                            }
                                                            else {
                                                                $("#segments_4_date").datepicker("option", "minDate", dateText);
                                                            }
                                                        }
                                                    });
    
    $("#segments_3_date").datepicker({
                                                        dateFormat: "dd-mm-yy",
                                                        changeMonth: true,
                                                        changeYear: true,
                                                        minDate: +2,
                                                        maxDate: +355,
                                                        showOn: 'both',
                                                        buttonImage: '/public/images/calendar_ico.gif',
                                                        buttonImageOnly: true,
                                                        beforeShow: function(){
                                                            var selectedDate1 = $("#segments_2_date").datepicker('getDate');
                                                            if (selectedDate1) {
                                                                $("#segments_3_date").datepicker("option", "minDate", selectedDate1);
                                                            }
                                                            else {
                                                                $("#segments_3_date").datepicker("option", "minDate", +2);
                                                            }
                                                            
                                                //            $("#segments_3_date").val('');
                                                        },
                                                        onSelect: function(dateText, inst){
                                                            var selectedDate1 = $("#segments_2_date").datepicker('getDate');
                                                            if ($.datepicker.formatDate("dd/m/yy", selectedDate1) == dateText) {
                                                                $("#segments_4_date").val('');
                                                            }
                                                            else {
                                                                $("#segments_4_date").datepicker("option", "minDate", dateText);
                                                            }
                                                        }
                                                    });
    
   $("#segments_4_date").datepicker({
                                                        dateFormat: "dd-mm-yy",
                                                        changeMonth: true,
                                                        changeYear: true,
                                                        minDate: +2,
                                                        maxDate: +355,
                                                        showOn: 'both',
                                                        buttonImage: '/public/images/calendar_ico.gif',
                                                        buttonImageOnly: true,
                                                        beforeShow: function(){
                                                            var selectedDate1 = $("#segments_2_date").datepicker('getDate');
                                                            if (selectedDate1) {
                                                                $("#segments_4_date").datepicker("option", "minDate", selectedDate1);
                                                            }
                                                            else {
                                                                $("#segments_4_date").datepicker("option", "minDate", +2);
                                                            }
                                                            
                                                            var selectedDate2 = $("#segments_3_date").datepicker('getDate');
                                                            if (selectedDate2) {
                                                                if ($.datepicker.formatDate('dd/m/yy', selectedDate1) == $.datepicker.formatDate('dd/m/yy', selectedDate2)) {
                                                                    var date = $.datepicker.formatDate('dd/m/yy', selectedDate1).split('/');
                                                                    if (date[0].substr(0, 1) == '0') {
                                                                        date[0] = date[0].substr(1, 1);
                                                                    }
                                                                    date[0] = parseInt(date[0]) + 1;
                                                                    selectedDate2 = date[0] + '-' + date[1] + '-' + date[2];
                                                                    $("#segments_4_date").datepicker("option", "minDate", selectedDate2);
                                                                }
                                                                else {
                                                                    $("#segments_4_date").datepicker("option", "minDate", selectedDate2);
                                                                }
                                                            }
                                                            
                                                //            $("#segments_4_date").val('');
                                                        }
                                                    });
    


    $("#segments_0_to").bind({
        click: function(){
            var value = $(this).val();
            if (value == "wpisz kod lub nazwę miasta") {
                $(this).val("");
            }
        },
        blur: function(){
            var value = $(this).val();
            if (value == "") {
                $(this).val("wpisz kod lub nazwę miasta");
            }
        },
        keydown: function(){
            $("#segments_0_toCode").val('');
        }
    });
    
    $("#segments_0_from").bind({
        click: function(){
            var value = $(this).val();
            if (value == "Warszawa ") {
                $(this).val("");
            }
        },
        blur: function(){
            var value = $(this).val();
            if (value == "") {
                $(this).val("Warszawa ");
            }
        },
        keydown: function(){
            $("#segments_0_fromCode").val('');
        }
    });
    
    
    $("#segments_2_from").keydown(function(){
        $("#segments_2_fromCode").val('');
    });
    $("#segments_2_to").keydown(function(){
        $("#segments_2_toCode").val('');
    });
    
    $("#segments_3_from").keydown(function(){
        $("#segments_3_fromCode").val('');
    });
    $("#segments_3_to").keydown(function(){
        $("#segments_3_toCode").val('');
    });
    
    $("#segments_4_from").keydown(function(){
        $("#segments_4_fromCode").val('');
    });
    $("#segments_4_to").keydown(function(){
        $("#segments_4_toCode").val('');
    });
    
    $("#simple").click(function(){
		_gaq.push(['_trackEvent', 'zakladki formularza', 'proste', '', 0]);
        $("input.searchFormPart2[type=text]").val("");
        $("input.searchFormPart2").attr('disabled', 'disabled');
        $("input.searchFormPart1").attr('disabled', false);
    });
    
    $("#multi").click(function(){
		_gaq.push(['_trackEvent', 'zakladki formularza', 'wieloodcinkowe', '', 0]);
        $("#segments_2_from").val("Warszawa");
        $("input.searchFormPart1[type=text]").val("");
        $("#segments_0_from").val("Warszawa ");
        $("#segments_0_to").val("wpisz kod lub nazwę miasta");
        $("#departureDateCalendar").datepicker("setDate", calendarStartDate);
        $("#returnDateCalendar").datepicker("option", "minDate", calendarStartDate);
        $("#returnDateCalendar").datepicker("setDate", calendarStartDate);
        $("#returnDateSpan").html(calendarStartDate);
        $("#departureDateSpan").html(calendarStartDate);
        lastSelectedReturnDate = null;
        /***
         * disable input
         */
        $("input.searchFormPart2").attr('disabled', false);
        $("input.searchFormPart1").attr('disabled', 'disabled');
        
    });
	
	function boldify(m){
    	return '<b>'+m+'<\/b>';
	}

	function autocompleteFormatItem(rowData, index, rowCount, input, max) {
		var val = $(input).val();
		return '<span class="name">'+rowData[0].replace(val, boldify, 'gi')+'</span> <span class="code">('+rowData[1]+')</span>';
	}												




	var autocompleteConfig = { 
		minChars:3, 
		maxItemsToShow: 10,
		cellSeparator: '|',
    	formatItem: autocompleteFormatItem,
		matchContains: true,
		selectFirst: true,
		onItemSelect: function(listItem, input) {
			var val = $(input);
			var id = $(input).attr('id');
		
			//var itemText = listItem.innerHTML;

			var code = listItem['extra'][0];
			
						var inputCode = $('#'+id+'Code').val(code);
		}
 	}
	
	$('#segments_0_to').autocomplete('/autocomplete', autocompleteConfig);
	$('#segments_0_from').autocomplete('/autocomplete', autocompleteConfig);
	$('#segments_2_to').autocomplete('/autocomplete', autocompleteConfig);
	$('#segments_2_from').autocomplete('/autocomplete', autocompleteConfig);
	$('#segments_3_to').autocomplete('/autocomplete', autocompleteConfig);
	$('#segments_3_from').autocomplete('/autocomplete', autocompleteConfig);
	$('#segments_4_to').autocomplete('/autocomplete', autocompleteConfig);
	$('#segments_4_from').autocomplete('/autocomplete', autocompleteConfig);
}

/***
 * init on all sites
 */
$().ready(function(){
    $(".fancy").fancybox({
        'titlePosition': 'inside',
        'type': 'iframe',
        'width': 610,
        'height': 590,
        'autoScale': false,
        'transitionIn': 'elastic',
        'transitionOut': 'elastic',
        onCleanup: function(){
            $('#fancybox-inner').html('');
        },
        onStart: function(){
            var link = $(this).attr('href');
            googleRecordFancyLink(link, 'fancy', 'click');
            $('#fancybox-inner').css('display', 'none');
        },
        onComplete: function(){
            $('#fancybox-inner').css('display', 'block');
        }
    });
    $(".fancy-przelew").fancybox({
        'type': 'iframe',
        'width': 730,
        'height': 460,
        'autoScale': false,
        'transitionIn': 'elastic',
        'transitionOut': 'elastic',
        onCleanup: function(){
            $('#fancybox-inner').html('');
        },
        onStart: function(){
            $('#fancybox-inner').css('display', 'none');
        },
        onComplete: function(){
            $('#fancybox-inner').css('display', 'block');
        }
    });
    $(".fancyMap").fancybox({
        'titleShow' : false,
        'type': 'iframe',
        'width': 764,
        'height': 352,
        'autoScale': false,
		'scrolling' : 'no',
        'transitionIn': 'elastic',
        'transitionOut': 'elastic',
        onCleanup: function(){
            $('#fancybox-inner').html('');
			if ($.browser.msie) {
				$('.sky').css('display', 'block');
			}			
        },
        onStart: function(){
			_gaq.push(['_trackEvent', 'mapa', 'otwarcie', '', 0]);
            $('#fancybox-inner').css('display', 'none');
			if ($.browser.msie) {
				$('.sky').css('display', 'none');
			}
        },
        onComplete: function(){
            $('#fancybox-inner').css('display', 'block');
        }
    });
    $("ul.tabs li").click(function(){
        var ul = $(this).parent();
        var element_index = ul.children().index(this);
        
        ul.children(".active").removeClass("active");
        $(this).addClass("active");
        
        ul.next().children("div:visible").hide();
        ul.next().children("div").eq(element_index).show(0);
        
        return false;
    });
	
});

/***
 * function to register outgoing links, <a href="..." onclick="googleRecordOutboundLink(this, 'category', 'action')">...
 * @param {Object} link
 * @param {Object} category
 * @param {Object} action
 */

function googleRecordOutboundLink(link, category){
		_gaq.push(['_trackEvent', 'link wychodzący ' + category, 'click', link.href, 0]);
		if (!$(link).attr('target')) {
			setTimeout('document.location = "' + link.href + '"', 100)
			return false;
		}
}

/***
 * function to register clicks on link with fancybox
 * @param {Object} link
 * @param {Object} category
 * @param {Object} action
 */

function googleRecordFancyLink(link, category, action){
    try {
        var thisDomain = window.location.protocol + "//" + window.location.host;
        link = link.replace(thisDomain, '');
        _gaq.push(['_trackPageview', link]);
    } 
    catch (err) {
    }
}

/**
 * @TODO end this function
 * @param {Object} id
 * @param {Object} elems
 *  [0: {
 *  	sku: "",
 *  	name: "",
 *  	category: "",
 *  	price: "",
 *  	quantity: ""
 *  	}
 *  ]
 */
function googleSellTracking(id, elems){
	_gaq.push(['_setCustomVar', 1, 'rezerwowal', '1', 1]);
	var amount = 0;
	for (i in elems) {
		amount += elems[i].price * elems[i].quantity;
	}
    _gaq.push(['_addTrans', id, // order ID - required
 		'lataj.pl', // affiliation or store name
 		amount, // total - required
 		'0', // tax
 		'0', // shipping
 		'', // city
 		'', // state or province
 		'' // country
	]);
    
    // add item might be called for every item in the shopping cart
    // where your ecommerce engine loops through each item in the cart and
    // prints out _addItem for each
	for (i in elems) {
		_gaq.push(['_addItem', id, // order ID - required
 			elems[i].sku, // SKU/code
 			elems[i].name, // product name
 			elems[i].category, // category or variation
 			elems[i].price, // unit price - required
 			elems[i].quantity // quantity - required
		]);
	}
    _gaq.push(['_trackTrans']); //submits transaction to the Analytics servers
}

/***
 * function added to advertisements to mesure click 
 * @param {Object} link=this
 * @param {Object} source
 * @param {Object} medium
 * @param {Object} term
 * @param {Object} content
 * @param {Object} campaign
 */

function googleRecordAdvLink(link, source, medium, term, content, campaign){
    var url = link.href;
    var data = '';
    if (source) {
        data += 'utm_source=' + source;
    }
    if (medium) {
        if (data) {
            data += '&'
        }
        data += 'utm_medium=' + medium;
    }
    if (term) {
        if (data) {
            data += '&'
        }
        data += 'utm_term=' + term;
    }
    if (content) {
        if (data) {
            data += '&'
        }
        data += 'utm_content=' + content;
    }
    if (campaign) {
        if (data) {
            data += '&'
        }
        data += 'utm_campaign=' + campaign;
    }
    if (data) {
        if (url.indexOf('?') != -1) {
            url += '&' + data;
            
        }
        else {
            url += '?' + data;
        }
    }
    link.href = url;
	return false;
}

function goToHash(hash) {
	location.href = '#'+hash;
}

/***
 * functions for pager
 */
function getPagedItems(href, htmlElement, pageNumber, searchHash){

    searchHash = typeof(searchHash) != 'undefined' ? searchHash : '';
    
    _gaq.push(['_trackPageview', href + '/' + pageNumber]);
    $('#' + htmlElement).css('display', 'none');
	$('#searchLoader').css('display', 'block');
    $('#' + htmlElement).load(href + '/' + pageNumber + '/' + searchHash, function(response, status, xhr){
	    $(this).css('display', 'block');
		$('#searchLoader').css('display', 'none');
        if (status == "error") {
            $(this).html(connectError);
        }
        if (response == "") {
            $(this).html(connectError);
        }
		var results = $('.connectionsResult');
		if (results.length) {
			var displaySorting = $('#sorting').css('display');
			if (displaySorting == 'none') {
				$('#sorting').slideDown("slow");
			}
		}
    });
	window.scrollTo(0,0);
}

/***
 * validation
 */

/***
 * function to validate forms
 * @param {Object} thisForm
 * @param {Object} formType
 */

function validateForm(thisForm, formType){

    var errorsValidate = new Array();
    var errorMessages = "";
    var submit = null;
    
    setErrorClass(".errorInput", false);
    
    with (thisForm, formType) {
    
        switch (formType) {
			case 'contactForm':
				validate_required('#companyName', 'Proszę wpisać nazwę firmy');
				validate_required('#contactPerson', 'Proszę wpisać osobę kontaktową');
				validate_required('#contactPhone', 'Proszę wpisać telefon kontaktowy');
				if (validate_required('#email', 'Proszę wpisać prawidłowy e-mail')) {
					validate_email('#email', 'Proszę wpisać prawidłowy e-mail');
				}
				break
			case 'checkInsuranceReservation' :
				submit = "#checkInsuranceReservationForm input[type=submit]";
				validate_required_checked('#acceptInsuranceRegulations', 'Proszę zakceptować warunki ubezpieczenia');
				break
			case 'promotionFull':
				submit = "#promotionSearch a.submit";
				validate_required('#dayFrom', 'Proszę wybrać dzień wylotu');
				validate_required('#dayTo', 'Proszę wybrać dzień powrotu');
				break;
			case 'checkReservationData':
				submit = "#checkReservationData input[type=submit]";
				validate_required_checked('#acceptRegulations', 'Proszę zakceptować regulamin');
				if ($('#acceptInsuranceRegulations').attr('id')) {
					validate_required_checked('#acceptInsuranceRegulations', 'Proszę zakceptować warunki ubezpieczenia');
				}
				break;
			case 'newsletter':
				submit = "input[type=submit]";
				validate_required('input[name=s_email]', 'Proszę podać e-mail');
				validate_email('input[name=s_email]', 'Proszę podać e-mail');
				break;
			case 'reservation':
				submit = "#reservationForm input[type=submit]";
				var requiredFields = $('input.required');
				var valAll = true;
				for (i=0; i<requiredFields.length; i++) {
					val = validate_required(requiredFields[i], null);
					if (!val) {
						valAll = false;
					}
				}
				if ($("#factureType1").attr('checked')) {
					if (!validate_required("#firm", null)) {
						valAll = false;
					}
					if (!validate_required("#taxIdNumber", null)) {
						valAll = false;
					}
				}
				if ($('#paymentType').val()=='creditCard') {
					if (!validate_required("#cc_type", null)) {
						valAll = false;
					}		
					if (!validate_required("#cc_name", null)) {
						valAll = false;
					}		
					if (!validate_required("#cc_surname", null)) {
						valAll = false;
					}		
					if (!validate_required("#cc_cardNumber", null)) {
						valAll = false;
					}
					else {
						validate_cc("#cc_type", "#cc_cardNumber", 'Podany numer karty kredytowej nie odpowiada jej typowi', 'Błędny numer karty kredytowej');
					}		
					if ($('#cc_type').val() != 'DC') {
						if (!validate_required("#cc_vvCode", null)) {
							valAll = false;
						}
					}			
					if (!validate_required_select("#cc_expMonth", '--', null)) {
						valAll = false;
					}			
					if (!validate_required_select("#cc_expYear", '----', null)) {
						valAll = false;
					}	
					validate_cc_expire_date("#cc_expMonth", "#cc_expYear", "Nieprawidłowa data ważności karty");
				}
				if (!valAll) {
					errorsValidate.splice(errorsValidate.length, 0, 'Pola zaznaczone na żółto muszą być wypełnione.');
				}
				validate_required_one_phone(['input.phone0', 'input.cellPhone0'], 'Proszę podać przynajmniej jeden numer telefonu pierwszego pasażera.');
				
				validate_required($('input.email0'), 'Proszę podać e-mail pierwszego pasażera.');
				var requiredFields = $('input.pasenger_date_youth');
				for (i=0; i<requiredFields.length; i++) {
					if (validate_date_dd_mm_yyyy(requiredFields[i], 'Proszę podać datę urodzenia pasażera.')) {
						validate_date_dd_mm_yyyy_youth(requiredFields[i], 'Nieprawidłowy wiek pasażera');
					}
				}
				var requiredFields = $('input.pasenger_date_child');
				for (i=0; i<requiredFields.length; i++) {
					if (validate_date_dd_mm_yyyy(requiredFields[i], 'Proszę podać datę urodzenia pasażera.')) {
						validate_date_dd_mm_yyyy_child(requiredFields[i], 'Nieprawidłowy wiek pasażera');
					}
				}
				var requiredFields = $('input.pasenger_date_infant');
				for (i=0; i<requiredFields.length; i++) {
					if (validate_date_dd_mm_yyyy(requiredFields[i], 'Proszę podać datę urodzenia pasażera.')) {
						validate_date_dd_mm_yyyy_infant(requiredFields[i], 'Nieprawidłowy wiek pasażera');
					}
				}
				var requiredFields = $('input.email');
				for (i=0; i<requiredFields.length; i++) {
						validate_email(requiredFields[i], 'Nieprawidłowy format adresu e-mail.');
				}
				var requiredFields = $('input.phone');
				for (i=0; i<requiredFields.length; i++) {
						validate_phone(requiredFields[i], 'Nieprawidłowy format numeru telefonu (np.: (22) 456 34 63).');
				}
				var requiredFields = $('input.cellPhone');
				for (i=0; i<requiredFields.length; i++) {
						validate_cellPhone(requiredFields[i], 'Nieprawidłowy format numeru telefonu komórkowego (np.: +48 123 456 789).');
				}
				var valAll = true;
				validate_street_number('input[name=addressNumber]', 'Numer domu może zawierać tylko cyfry, litery, znaki - / . i spacje');
				var requiredFields = $('input.alpha');
				if ( !$("#sendData").attr('checked') ) {
					validate_street_number('input[name=sendDataAddressNumber]', 'Numer domu może zawierać tylko cyfry, litery, znaki - / . i spacje');
				}
				for (i=0; i<requiredFields.length; i++) {
					val = validate_alpha(requiredFields[i], null);
					if (!val) {
						valAll = false;
					}
				}
				if (!valAll) {
					errorsValidate.splice(errorsValidate.length, 0, 'Pola "imię", "nazwisko", "miasto" mogą zawierać tylko litery');
				}
				var requiredFields = $('input.alphadigits');
				var valAll = true;
				for (i=0; i<requiredFields.length; i++) {
					val = validate_alphadigits(requiredFields[i], null);
					if (!val) {
						valAll = false;
					}
				}
				if (!valAll) {
					errorsValidate.splice(errorsValidate.length, 0, 'Pole "ulica" może zawierać tylko litery, cyfry, kropkę, myślnik i odstęp');
				}
				break;
            case 'main_search':
                submit = "#mainSerchForm input[type=submit]";
                var isMultisegmentDisabled = $("input[name=isMultisegment]").attr('disabled');
                if (isMultisegmentDisabled == false) {
                    var isFill1 = validate_required_full_fields_in_segment(1, "#segments_2_from", "#segments_2_to", "#segments_2_date", 'Proszę podać miasto wylotu ', 'Proszę podać miasto przylotu ', "Proszę wybrać datę wyjazdu ", " w etapie ");
                    var isFill2 = validate_required_full_fields_in_segment(2, "#segments_3_from", "#segments_3_to", "#segments_3_date", 'Proszę podać miasto wylotu ', 'Proszę podać miasto przylotu ', "Proszę wybrać datę wyjazdu ", " w etapie ");
                    var isFill3 = validate_required_full_fields_in_segment(3, "#segments_4_from", "#segments_4_to", "#segments_4_date", 'Proszę podać miasto wylotu ', 'Proszę podać miasto przylotu ', "Proszę wybrać datę wyjazdu ", " w etapie ");
                    if (!isFill2 && isFill3) {
                        errorsValidate.splice(errorsValidate.length, 0, "Wypełniłeś etap 3, a nie wypełniłeś etapu 2.");
                        setErrorClass("#segments_3_from", true);
                        setErrorClass("#segments_3_to", true);
                        setErrorClass("#segments_3_date", true);
                    }
                    validate_date_dd_mm_yyyy_biger("#segments_2_date", "#segments_3_date", "Data etapu 2 musi być późniejsza niż data etapu 1");
                    validate_date_dd_mm_yyyy_biger("#segments_3_date", "#segments_4_date", "Data etapu 3 musi być późniejsza niż data etapu 2");
                }
                else {
                    validate_required_city('#segments_0_from', 'Proszę podać miasto wylotu.');
                    validate_required_city('#segments_0_to', 'Proszę podać miasto przylotu.');
					validate_different('#segments_0_from', '#segments_0_to', 'Miasto wylotu i przylotu musza być różne');
                    validate_date_dd_mm_yyyy("#segments_0_date", "Proszę wybrać datę wyjazdu");
                    var valReturn = $("input[name=returnTrip]:checked").val();
                    if (valReturn == "on") {
                        validate_date_dd_mm_yyyy("#segments_1_date", "Proszę wybrać datę powrotu");
                        validate_date_dd_mm_yyyy("#segments_0_date", "Proszę wybrać datę wylotu");
                        validate_date_dd_mm_yyyy_biger("#segments_0_date", "#segments_1_date", "Data powrotu musi być późniejsza niż data wyjazdu");
                    }
                    else {
                        validate_date_dd_mm_yyyy("#segments_0_date", "Proszę wybrać datę wylotu");
                    }
                }
                validate_required_people(['#adultsCount', '#youthsCount', '#childrenCount', '#infantsCount'], "Proszę wybrać ilość osób", "Brak mozliwości łaczenia młodzieży z osobami dorosłymi, dziećmi lub niemowlętami", "Ilość niemowląt musi być mniejsza lub równa ilości dorosłych", "Możesz wybrać maksymalnie 9 osób (licząc dorosłych, młodzież i dzieci)");
                break;
            case 'promotion':
                submit = "#promotionSearch input[type=submit]";
				validate_required_with_default('#departureCity', 'wybierz miasto', 'Proszę wybrać miasto wylotu');
                validate_required_people(['#adultsCount', '#youthsCount', '#childrenCount', '#infantsCount'], "Proszę wybrać ilość osób", "Brak mozliwości łaczenia młodzieży z osobami dorosłymi, dziećmi lub niemowlętami", "Ilość niemowląt musi być mniejsza lub równa ilości dorosłych", "Możesz wybrać maksymalnie 9 osób (licząc dorosłych, młodzież i dzieci)");
                break;
            case 'checkTrip':
                validate_pnr("#pnr", "Pole 'Numer Rezerwacji' ma niepoprawną wartość lub jest puste");
                validate_required_with_default("#paxnm", "nazwisko pasażera", "Proszę wpisać nazwisko pasażera");
                break;
            case 'hotels':
                validate_required_hotels_city(thisForm.destinationRadio, thisForm.destination, "Proszę wybrać miasto");
                validate_date_dd_mm_yyyy(thisForm.checkin, "Proszę wybrać datę");
                validate_required(thisForm.nights, "Proszę wpisać ilość nocy");
                break;
            case 'insurance':
				submit = "#insuranceForm input[type=submit]";
                validate_date_dd_mm_yyyy("input[name=departureDate]", "Proszę wybrać datę wyjazdu");
                validate_date_dd_mm_yyyy("input[name=arrivalDate]", "Proszę wybrać datę powrotu");
                validate_date_dd_mm_yyyy_biger("input[name=departureDate]", "input[name=arrivalDate]", "Data powrotu musi być późniejsza niż data wyjazdu");
                validate_required_people(["#adultsCount", "#youthsCount", "#childrenCount", "#infantsCount"], "Proszę wybrać ilość osób", "Brak mozliwości łaczenia młodzieży z osobami dorosłymi, dziećmi lub niemowlętami", "Ilość niemowląt musi być mniejsza lub równa ilości dorosłych", "Możesz wybrać maksymalnie 9 osób (licząc dorosłych, młodzież i dzieci)");
                break;
            case 'findPromo':
                var fieldVal = $("input[name=find]:checked").val();
                if (fieldVal == "country") {
                    validate_required_select("#kraje", "00", 'Wybierz miasto lub kraj');
                }
                else 
                    if (fieldVal == "city") {
                        validate_required_select("#miasta", "00", 'Wybierz miasto lub kraj');
                    }
                break;
            case 'promotions':
                var fieldVal = $("input[name=find]:checked").val();
                if (fieldVal == "country") {
                    validate_required_select("#kraje", "00", 'Wybierz miasto lub kraj');
                }
                else 
                    if (fieldVal == "city") {
                        validate_required_select("#miasta", "00", 'Wybierz miasto lub kraj');
                    }
                else 
                    if (fieldVal == "airline") {
                        validate_required_select("#linie", "00", 'wybierz linię lotniczą');
                    }
					else {
						validate_required("input[name=find]");
					}
                break;
        }
        
        
        return checkErrors(errorsValidate, formType, submit);
    }
    
	/***
	 * build error message if errors are
	 * @param {Object} errorsArray
	 * @param {Object} formType
	 * @param {Object} submit
	 */
    
    function checkErrors(errorsArray, formType, submit){
        if (errorsArray.length > 0) {
			_gaq.push(['_trackEvent', 'formularz - '+formType, 'błedy w formularzu', '', 0]);
            for (var i in errorsArray) {
                var iVal = parseInt(i);
                if (!isNaN(iVal)) {
                    errorMessages += "<h3>" + errorsArray[i] + "</h3>\n";
                }
            }
            
            
            /*** set html elements display properties ***/
            
            $('#validateFormResultContentText').html(errorMessages);
            $('#validateFormResultContent').css('display', 'block');
            $('#validateFormResultContent .closeButton').css('display', 'block');
            $('#validateFormResultContent .okCancelButton').css('display', 'none');
            $.fancybox({
                'orig': $(submit),
                'href': '#validateFormResultContent',
                'autoDimensions': true,
                'autoScale': true,
                'transitionIn': 'elastic',
                'transitionOut': 'elastic',
                onCleanup: function(){
                    $('#validateFormResultContent').css('display', 'none');
                }
            });
            return false;
        }
        else {
			_gaq.push(['_trackEvent', 'formularz - '+formType, 'wysłanie formularza', '', 0]);
        	return true;
		}
    }
    
	/**
	 * set or unser error class to input or select in forms
	 * @param {Object} inputName
	 * @param {Object} set
	 */
    function setErrorClass(inputName, set){
        if (set) {
            $(inputName).addClass('errorInput');
        }
        else {
            $(inputName).removeClass('errorInput');
        }
    }
	
	function validate_email(field, errorMessage) {
		var value = trim($(field).val());
		var valid = true;
		if (value) {
			if (!value.match(/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/)) {
				valid = false;
			}
		}
		if (!valid) {
			errorsValidate.splice(errorsValidate.length, 0, errorMessage);
			setErrorClass(field, true);
			return false;
		}
	}
	
	function validate_street_number(field, errorMessage) {
		var value = trim($(field).val());
		var valid = true;
		if (value) {
			if (!value.match(/^[A-Za-z0-9 \-\/.]+$/)) {
				valid = false;
			}
		}
		
		if (!valid) {
			errorsValidate.splice(errorsValidate.length, 0, errorMessage);
			setErrorClass(field, true);
			return false;
		}
	}
	
	function validate_cellPhone(field, errorMessage) {
		var value = trim($(field).val());
		var valid = true;
		if (value) {
			if (!value.match(/^\+[0-9]+ [0-9 ]+$/)) {
				valid = false;
			}

			value = value.replace(' ', '', 'gi');
			if (value.length < 11 || value.length > 15) {
				valid = false;
			}
			
		}	
		if (!valid) {
			errorsValidate.splice(errorsValidate.length, 0, errorMessage);
			setErrorClass(field, true);
			return false;
		}
	}
	
	function validate_phone(field, errorMessage) {
		var value = trim($(field).val());
		var valid = true;
		if (value) {
			if (!value.match(/^\+?[0-9 ()]+$/)) {
				valid = false;
			}
			
			value = value.replace(' ', '', 'gi');
			var leftBracketCount = 0;
			var rightBracketCount = 0;
			for (i = 0; i < value.length; i++) {
				if (value.substr(i, 1) == '(') {
					leftBracketCount++;
				}
				if (value.substr(i, 1) == ')') {
					rightBracketCount++;
				}
			}
			if (leftBracketCount.length != rightBracketCount.length || leftBracketCount.length > 1) {
				valid = false;
			}
			if (value.length < 11 || value.length > 15) {
				valid = false;
			}
		}
		if (!valid) {
			errorsValidate.splice(errorsValidate.length, 0, errorMessage);
			setErrorClass(field, true);
			return false;
		}
	}
	
	function validate_cc_expire_date(fieldMonth, fieldYear, errorMessage) {
		var valueMon = $(fieldMonth).val();
		var valueYear = $(fieldYear).val();
		if (valueMon && valueYear) {
			var valid = true;
			var d = new Date();
			var year = d.getFullYear();
			var month = d.getMonth()+1;
			if (month<10) {
				month = '0'+month;
			}
			var now = year + ' ' + month;
			var dateCC = valueYear + ' ' + valueMon;
			if (now > dateCC) {
				valid = false;
			}
			if (!valid) {
				errorsValidate.splice(errorsValidate.length, 0, errorMessage);
				setErrorClass(fieldMonth, true);
				setErrorClass(fieldYear, true);
				return false;
			}
		}
	}	
	
	function validate_date_dd_mm_yyyy_youth(field, errorMessage) {
		var sDateStr = $(field).val();
				var sData = sDateStr.split("-");
				if (sData[0].substr(0, 1) == '0') {
					sData[0] = sData[0].substr(1);
				}
				if (sData[1] && sData[1].substr(0, 1) == '0') {
					sData[1] = sData[1].substr(1);
				}
				var sYearNum = parseInt(sData[2]);
				var sMonthNum = parseInt(sData[1]) - 1;
				var sDayNum = parseInt(sData[0]);
				var nDate = new Date();
				var nYearNum = nDate.getFullYear();
				var nMonthNum = nDate.getMonth();
				var nDayNum = nDate.getDate();
				var sDate = new Date(sYearNum, sMonthNum, sDayNum);
				var sDate1 = new Date(nYearNum - 24, nMonthNum, nDayNum);
				var sDate2 = new Date(nYearNum - 12, nMonthNum, nDayNum);
				if ($.datepicker.formatDate('yyyy-mm-dd', sDate) < $.datepicker.formatDate('yyyy-mm-dd', sDate1) ||
				$.datepicker.formatDate('yyyy-mm-dd', sDate) > $.datepicker.formatDate('yyyy-mm-dd', sDate2)) {
					errorsValidate.splice(errorsValidate.length, 0, errorMessage);
					setErrorClass(field, true);
					return false;
				}
	}
		
	function validate_date_dd_mm_yyyy_child(field, errorMessage) {
		var sDateStr = $(field).val();
				var sData = sDateStr.split("-");
				if (sData[0].substr(0, 1) == '0') {
					sData[0] = sData[0].substr(1);
				}
				if (sData[1] && sData[1].substr(0, 1) == '0') {
					sData[1] = sData[1].substr(1);
				}
				var sYearNum = parseInt(sData[2]);
				var sMonthNum = parseInt(sData[1]) - 1;
				var sDayNum = parseInt(sData[0]);
				var nDate = new Date();
				var nYearNum = nDate.getFullYear();
				var nMonthNum = nDate.getMonth();
				var nDayNum = nDate.getDate();
				var sDate = new Date(sYearNum, sMonthNum, sDayNum);
				var sDate1 = new Date(nYearNum - 12, nMonthNum, nDayNum);
				var sDate2 = new Date(nYearNum - 2, nMonthNum, nDayNum);
				if ($.datepicker.formatDate('yyyy-mm-dd', sDate) < $.datepicker.formatDate('yyyy-mm-dd', sDate1) ||
				$.datepicker.formatDate('yyyy-mm-dd', sDate) > $.datepicker.formatDate('yyyy-mm-dd', sDate2)) {
					errorsValidate.splice(errorsValidate.length, 0, errorMessage);
					setErrorClass(field, true);
					return false;
				}
	}
	
	function validate_date_dd_mm_yyyy_infant(field, errorMessage) {
		var sDateStr = $(field).val();
				var sData = sDateStr.split("-");
				if (sData[0].substr(0, 1) == '0') {
					sData[0] = sData[0].substr(1);
				}
				if (sData[1] && sData[1].substr(0, 1) == '0') {
					sData[1] = sData[1].substr(1);
				}
				var sYearNum = parseInt(sData[2]);
				var sMonthNum = parseInt(sData[1]) - 1;
				var sDayNum = parseInt(sData[0]);
				var nDate = new Date();
				var nYearNum = nDate.getFullYear();
				var nMonthNum = nDate.getMonth();
				var nDayNum = nDate.getDate();
				var sDate = new Date(sYearNum, sMonthNum, sDayNum);
				var sDate1 = new Date(nYearNum - 2, nMonthNum, nDayNum);
				var sDate2 = new Date(nYearNum, nMonthNum, nDayNum-1);
				if ($.datepicker.formatDate('yyyy-mm-dd', sDate) < $.datepicker.formatDate('yyyy-mm-dd', sDate1) ||
				$.datepicker.formatDate('yyyy-mm-dd', sDate) > $.datepicker.formatDate('yyyy-mm-dd', sDate2)) {
					errorsValidate.splice(errorsValidate.length, 0, errorMessage);
					setErrorClass(field, true);
					return false;
				}
			
	}
			
	/***
	 * check filds in segments on main search form
	 * @param {Object} number
	 * @param {Object} fromField
	 * @param {Object} toField
	 * @param {Object} dateField
	 * @param {Object} errorMessageFrom
	 * @param {Object} errorMessageTo
	 * @param {Object} errorMessageDate
	 * @param {Object} errorMessageInSegment
	 */

    
    function validate_required_full_fields_in_segment(number, fromField, toField, dateField, errorMessageFrom, errorMessageTo, errorMessageDate, errorMessageInSegment, errorMessageDifferent){
        var startErrorCount = errorsValidate.length;
        if (number == 1) {
            validate_required_city(fromField, errorMessageFrom + errorMessageInSegment + number);
            validate_required_city(toField, errorMessageTo + errorMessageInSegment + number);
			validate_different(fromField, toField, errorMessageDifferent);
            validate_date_dd_mm_yyyy(dateField, errorMessageDate + errorMessageInSegment + number);
            return true;
        }
        else {
            var fromFieldVal = $(fromField).val();
            var toFieldVal = $(toField).val();
            var dateFieldVal = $(dateField).val();
            if (fromFieldVal || toFieldVal || dateFieldVal) {
                validate_required_city(fromField, errorMessageFrom + errorMessageInSegment + number);
                validate_required_city(toField, errorMessageTo + errorMessageInSegment + number);
				validate_different(fromField, toField, errorMessageDifferent);
                validate_date_dd_mm_yyyy(dateField, errorMessageDate + errorMessageInSegment + number);
                return true;
            }
            else {
                return false;
            }
        }
    }
    
	/***
	 * check city fild in hotels form
	 * @param {Object} radioField
	 * @param {Object} selectField
	 * @param {Object} errorMessage
	 */
    function validate_required_hotels_city(radioField, selectField, errorMessage){
        var radioVal = $(radioField).is(':checked');
        var selectVal = $(selectField).val();
        if (!radioVal && selectVal == '0') {
            errorsValidate.splice(errorsValidate.length, 0, errorMessage);
            /***
             * @TODO podświetlenie błędu
             */
        }
    }
    
	/***
	 * is date1 < date2 ? (dd-mm-yyy)
	 * @param {Object} smaller_field
	 * @param {Object} bigger_field
	 * @param {Object} errorMessage
	 */
    function validate_date_dd_mm_yyyy_biger(smaller_field, bigger_field, errorMessage){
        sDateStr = $(smaller_field).val();
        var sData = sDateStr.split("-");
        if (sData[0].substr(0, 1) == '0') {
            sData[0] = sData[0].substr(1);
        }
        if (sData[1] && sData[1].substr(0, 1) == '0') {
            sData[1] = sData[1].substr(1);
        }
        var sYearNum = parseInt(sData[2]);
        var sMonthNum = parseInt(sData[1]) - 1;
        var sDayNum = parseInt(sData[0]);
        
        var sDate = new Date(sYearNum, sMonthNum, sDayNum);
        bDateStr = $(bigger_field).val();
        var bData = bDateStr.split("-");
        if (bData[0].substr(0, 1) == '0') {
            bData[0] = bData[0].substr(1);
        }
        if (bData[1] && bData[1].substr(0, 1) == '0') {
            bData[1] = bData[1].substr(1);
        }
        var bYearNum = parseInt(bData[2]);
        var bMonthNum = parseInt(bData[1]) - 1;
        var bDayNum = parseInt(bData[0]);
        var bDate = new Date(bYearNum, bMonthNum, bDayNum);
        if (sDate.getTime() > bDate.getTime()) {
            errorsValidate.splice(errorsValidate.length, 0, errorMessage);
            setErrorClass(smaller_field, true);
            setErrorClass(bigger_field, true);
            return false;
        }
    }
	
	function validate_different(field1, field2, errorMessage) {
		var val1 = $(field1).val();
		var val2 = $(field2).val();
		if (val1==val2) {
            errorsValidate.splice(errorsValidate.length, 0, errorMessage);
            setErrorClass(field1, true);
            setErrorClass(field2, true);
            return false;
        }
	}
	
	/***
	 * check date in format dd-mm-yyyy
	 * @param {Object} field
	 * @param {Object} errorMessage
	 */
    
    function validate_date_dd_mm_yyyy(field, errorMessage){
        dateStr = $(field).val();
        var ddata = dateStr.split("-");
        var yearNum = parseInt(ddata[2]);
        if (ddata[0].substr(0, 1) == '0') {
            ddata[0] = ddata[0].substr(1);
        }
        if (ddata[1] && ddata[1].substr(0, 1) == '0') {
            ddata[1] = ddata[1].substr(1);
        }
        var monthNum = parseInt(ddata[1]);
        var dayNum = parseInt(ddata[0]);
        var maxDay = 31;
        if (monthNum == 4 || monthNum == 6 || monthNum == 9 || monthNum == 11) {
            maxDay = 30;
        }
        else 
            if (monthNum == 2) {
                if (yearNum % 4 == 0) {
                    maxDay = 29;
                }
                else {
                    maxDay = 28;
                }
            }
        if (!(dayNum <= maxDay && dayNum > 0 && monthNum <= 12 && monthNum > 0)) {
            errorsValidate.splice(errorsValidate.length, 0, errorMessage);
            setErrorClass(field, true);
            return false;
        }
        return true;
    }
    
	/***
	 * if date1 < date2 (dd/mm/yyyy)
	 * @param {Object} smaller_field
	 * @param {Object} bigger_field
	 * @param {Object} errorMessage
	 */
    function validate_date_dd_mm_yyyy_biger2(smaller_field, bigger_field, errorMessage){
        sDateStr = $(smaller_field).val();
        var sData = sDateStr.split("/");
        if (sData[0].substr(0, 1) == '0') {
            sData[0] = sData[0].substr(1);
        }
        if (sData[1] && sData[1].substr(0, 1) == '0') {
            sData[1] = sData[1].substr(1);
        }
        var sYearNum = parseInt(sData[2]);
        var sMonthNum = parseInt(sData[1]) - 1;
        var sDayNum = parseInt(sData[0]);
        
        var sDate = new Date(sYearNum, sMonthNum, sDayNum);
        bDateStr = $(bigger_field).val();
        var bData = bDateStr.split("/");
        if (bData[0].substr(0, 1) == '0') {
            bData[0] = bData[0].substr(1);
        }
        if (bData[1] && bData[1].substr(0, 1) == '0') {
            bData[1] = bData[1].substr(1);
        }
        var bYearNum = parseInt(bData[2]);
        var bMonthNum = parseInt(bData[1]) - 1;
        var bDayNum = parseInt(bData[0]);
        var bDate = new Date(bYearNum, bMonthNum, bDayNum);
        if (sDate.getTime() > bDate.getTime()) {
            errorsValidate.splice(errorsValidate.length, 0, errorMessage);
            setErrorClass(smaller_field, true);
            setErrorClass(bigger_field, true);
            return false;
        }
    }
	
	/***
	 * check date in format (dd/mm/yyyy)
	 * @param {Object} field
	 * @param {Object} errorMessage
	 */
    
    function validate_date_dd_mm_yyyy2(field, errorMessage){
        var dateStr = $(field).val();
        var ddata = dateStr.split("/");
        var yearNum = parseInt(ddata[2]);
        if (ddata[0].substr(0, 1) == '0') {
            ddata[0] = ddata[0].substr(1);
        }
        if (ddata[1] && ddata[1].substr(0, 1) == '0') {
            ddata[1] = ddata[1].substr(1);
        }
        var monthNum = parseInt(ddata[1]);
        var dayNum = parseInt(ddata[0]);
        var maxDay = 31;
        if (monthNum == 4 || monthNum == 5 || monthNum == 6 || monthNum == 9 || monthNum == 11) {
            maxDay = 30;
        }
        else 
            if (monthNum == 2) {
                if (yearNum % 4 == 0) {
                    maxDay = 29;
                }
                else {
                    maxDay = 28;
                }
            }
        if (!(dayNum <= maxDay && dayNum > 0 && monthNum <= 12 && monthNum > 0)) {
            errorsValidate.splice(errorsValidate.length, 0, errorMessage);
            setErrorClass(field, true);
            return false;
        }
    }
    
    function validate_required_one(fields, errorMessage){
		var count = 0;
		for (i = 0; i < fields.length; i++) {
			if ($(fields[i]).val() != null && $(fields[i]).val() != "") {
				count ++;
			}
		}
		if (!count) {
			for (i = 0; i < fields.length; i++) {
				setErrorClass(fields[i], true);
			}			
			errorsValidate.splice(errorsValidate.length, 0, errorMessage);
			return false;
		}
    }
	
    function validate_required_one_phone(fields, errorMessage){
		var count = 0;
		for (i = 0; i < fields.length; i++) {
			if ($(fields[i]).val() != null && $(fields[i]).val() != "" && $(fields[i]).val() != "+48 ") {
				count ++;
			}
		}
		if (!count) {
			for (i = 0; i < fields.length; i++) {
				setErrorClass(fields[i], true);
			}			
			errorsValidate.splice(errorsValidate.length, 0, errorMessage);
			return false;
		}
    }	
		
	/***
	 * fild is filled
	 * @param {Object} field
	 * @param {Object} errorMessage
	 */
    
    function validate_required_checked(field, errorMessage){
		var val = $(field).attr('checked');
        if (val!=true) {
            setErrorClass(field, true);
            errorsValidate.splice(errorsValidate.length, 0, errorMessage);
        }
    }
	
	/***
	 * fild is filled
	 * @param {Object} field
	 * @param {Object} errorMessage
	 */
    
    function validate_required(field, errorMessage){
		var value = trim($(field).val());
        if (value == null || value == "") {
            setErrorClass(field, true);
			if (errorMessage != null) {
				errorsValidate.splice(errorsValidate.length, 0, errorMessage);
			}
			return false;
        }
		return true;
    }

	function trim(str) {
		return (str.replace(/^ +/, '')).replace(/$ +/, '');
	}
    
    function validate_alpha(field, errorMessage){
		var value = trim($(field).val());
		var valid = true;
		if (value) {
			if (!value.match(/^[^!@#$%^&*()+_=|\}\]{\["';:<>?\/1234567890`~]{2,}$/)) {
				setErrorClass(field, true);
				if (errorMessage != null) {
					errorsValidate.splice(errorsValidate.length, 0, errorMessage);
				}
				return false;
			}
		}
		return true;
    }

    function validate_alphadigits(field, errorMessage){
		var value = trim($(field).val());
		var valid = true;
		if (value) {
			if (!value.match(/^[^!@#$%^&*()+_=|\}\]{\["';:<>?\/`~]+$/)) {
				setErrorClass(field, true);
				if (errorMessage != null) {
					errorsValidate.splice(errorsValidate.length, 0, errorMessage);
				}
				return false;
			}
		}
		return true;
    }
	
    function validate_required_var(variable, errorMessage){
        if (variable == null || variable == "") {
			if (errorMessage != null) {
				errorsValidate.splice(errorsValidate.length, 0, errorMessage);
			}
			return false;
        }
		return true;
    }	
	/***
	 * fild is filled and value is not default 
	 * @param {Object} field
	 * @param {Object} defaultVal
	 * @param {Object} errorMessage
	 */
    
    function validate_required_with_default(field, defaultVal, errorMessage){
        if ($(field).val() == null || $(field).val() == "" || $(field).val() == defaultVal) {
            setErrorClass(field, true);
            errorsValidate.splice(errorsValidate.length, 0, errorMessage);
        }
	}
	
	/***
	 * required select field
	 * @param {Object} field
	 * @param {Object} defaultValue
	 * @param {Object} errorMessage
	 */
    
    function validate_required_select(field, defaultValue, errorMessage){
        var fieldVal = $(field).val();
        if (fieldVal == defaultValue) {
            setErrorClass(field, true);
			if (errorMessage != null) {
				errorsValidate.splice(errorsValidate.length, 0, errorMessage);
			}
			return false;
        }
		return true;
    }
	
	/***
	 * city field for main search form (check length>=3)
	 * @param {Object} field
	 * @param {Object} errorMessage
	 */
    
    function validate_required_city(field, errorMessage){
        var fieldVal = $(field).val();
        if (fieldVal == null || fieldVal == "" || fieldVal == "wpisz kod lub nazwę miasta" || fieldVal.length < 3) {
            setErrorClass(field, true);
            errorsValidate.splice(errorsValidate.length, 0, errorMessage);
        }
        
    }
	
	/***
	 * chceck corect all people filds
	 * @param {Object} fields
	 * @param {Object} errorMessage
	 * @param {Object} errorMessage2
	 * @param {Object} errorMessage3
	 * @param {Object} errorMessage4
	 */
    
    function validate_required_people(fields, errorMessage, errorMessage2, errorMessage3, errorMessage4){
        var sum = 0;
        for (var i = 0; i < fields.length; i++) {
			if ($(fields[i]).val()) {
				sum += parseInt($(fields[i]).val());
			}
        }
        if (sum == 0) {
            errorsValidate.splice(errorsValidate.length, 0, errorMessage);
            for (var i = 0; i < fields.length; i++) {
                setErrorClass(fields, true);
            }
        }
        
        if (parseInt($(fields[1]).val()) && parseInt($(fields[1]).val()) != sum) {
            errorsValidate.splice(errorsValidate.length, 0, errorMessage2);
            for (var i = 0; i < fields.length; i++) {
                setErrorClass(fields, true);
            }
        }
        
        if ((sum - parseInt($(fields[3]).val())) > 9) {
            errorsValidate.splice(errorsValidate.length, 0, errorMessage4);
            setErrorClass(fields[0], true);
            setErrorClass(fields[1], true);
            setErrorClass(fields[2], true);
        }
        
        if (parseInt($(fields[0]).val()) < parseInt($(fields[3]).val())) {
            errorsValidate.splice(errorsValidate.length, 0, errorMessage3);
            setErrorClass(fields[0], true);
            setErrorClass(fields[3], true);
        }
    }
	
	/***
	 * pnr check [a-zA-Z0-9]{6}
	 * @param {Object} field
	 * @param {Object} errorMessage
	 */
    
    function validate_pnr(field, errorMessage){
        var regExp = new RegExp("^[a-zA-Z0-9]{6}$");
        
        if (regExp.exec($(field).val()) == null) {
            setErrorClass(field, true);
            errorsValidate.splice(errorsValidate.length, 0, errorMessage);
        }
    }
    
    function validate_cc(fieldType, fieldNumber, errorMessageType, errorMessage){
        var ccompany = {
			VI: {
				length: 1,
				'4': 1
			},
			CA: {
				length: 2,
				'51': 1,
				'52': 1,
				'53': 1,
				'54': 1,
				'55': 1
			},
			AX: {
				length: 2,
				'34': 1,
				'37': 1
			},
			DC: {
				length: 3,
				'36': 1,
				'38': 1,
				'300': 1,
				'301': 1,
				'302': 1,
				'303': 1,
				'304': 1,
				'305': 1
			}
		};
		
		var type = $(fieldType).val();
        var number = $(fieldNumber).val();
		number = number.replace(/ /gi, '');
		var typenumber = number.substr(0, ccompany[type].length);
		
		if (ccompany[type][typenumber]) {
        	var number_length = number.length;
       		var parity = number_length % 2;
        
        var total = 0;
        for (i = 0; i < number_length; i++) {
            var digit = number.charAt(i);
            if (i % 2 == parity) {
                digit = digit * 2;
                if (digit > 9) {
                    digit = digit - 9;
                }
            }
            total = total + parseInt(digit);
        }
        
        if (total % 10 == 0) {
            return true;
        }
        else {
            setErrorClass(fieldNumber, true);
            errorsValidate.splice(errorsValidate.length, 0, errorMessage);
        }
		}
        else {
            setErrorClass(fieldType, true);
			setErrorClass(fieldNumber, true);
            errorsValidate.splice(errorsValidate.length, 0, errorMessageType);
        }
    }
    
}

/***
 * close error message fancybox
 */
function closeValidate(){

    $.fancybox.close();
    return false;
}

/***
 * credit card info
 */
function czyjutro(){
	_gaq.push(['_trackEvent', 'czy jutro', 'komunikat', '', 0]);
	
	var isMultisegmentDisabled = $("input[name=isMultisegment]").attr('disabled');
	if (isMultisegmentDisabled) {
		var dateStr = $('#segments_0_date').val();
	}
	else {
		var dateStr = $('#segments_2_date').val();
	}
	
	var dateArr = dateStr.split('-');
	var date = new Date(dateArr[2], dateArr[1] - 1, dateArr[0]);
	var nowDate = new Date();
	nowDate.setDate(nowDate.getDate() + 3);
	if (date < nowDate) {
		$('#validateFormResultContentText').html('UWAGA! Rezerwacja biletu na lot na najbliższe 3 dni, jest możliwa tylko w przypadku płatności kartą kredytową! Czy chcesz kontynuowac?');
		$('#validateFormResultContent').css('display', 'block');
		$('#validateFormResultContent .closeButton').css('display', 'none');
		$('#validateFormResultContent .okCancelButton').css('display', 'block');
		$('#validateFormResultContent #okBut').unbind();
		$('#validateFormResultContent #okBut').bind('click', function(){
			_gaq.push(['_trackEvent', 'czy jutro', 'potwierdzenie', '', 0]);
			$('#mainSerchForm').submit();
		});
		$.fancybox({
			'orig': $("#mainSerchForm input[type=submit]"),
			'href': '#validateFormResultContent',
			'autoDimensions': true,
			'autoScale': true,
			'transitionIn': 'elastic',
			'transitionOut': 'elastic',
			'modal': true,
			onCleanup: function(){
				$('#validateFormResultContent').css('display', 'none');
			}
		});
		return false;
	}
}

