﻿var urlEn = /\/en\//;
var urlDe = /\/de\//;
var urlRu = /\/ru\//;

// number of milliseconds in day
var MILLIS_IN_DAY = 86400000;
// number of milliseconds in year
var MILLIS_IN_YEAR = MILLIS_IN_DAY * 365;

/**
 * Show upper login block.
 */
function showFfpLoginBlock() {
	if (typeof (userFirstLastName) == "undefined") {
		return;
	}
	
	if (userFirstLastName != null) {
		if (userCardNumber != null) {
			document.getElementById('ffpLoginLogged').style.display = 'block';
			document.getElementById('logged_username').innerHTML = userFirstLastName;
		} else {
			document.getElementById('ffpLoginLoggedNonFFP').style.display = 'block';
			document.getElementById('logged_username_nonffp').innerHTML = userFirstLastName;
		}	
	} else {
		document.getElementById('ffpLoginNonLogged').style.display = 'block';
	}
}

/**
 * Show card in left block for new pages. 
 */
function showFfpLeftContentBlock() {
	if (typeof (userFirstLastName) == "undefined") {
		return;
	}

	var lang = '';
	var path = document.location.pathname;
	
	if (urlDe.test(path)) {
		lang = 'de';
	} else if (urlRu.test(path)) {
		lang = 'ru';
	} else {
		lang = 'en';
	}

	/*
	 * We need to use parameters 'card' and 'update' just for disable caching. 
	 */
	if (userFirstLastName != null) {
		document.getElementById('ffp_card_div').style.display = 'block';
		if (userCardNumber != null) {
			document.getElementById('ffp_card_img').src = '/servlet/card.png?background=gradient&lang='+lang+'&card='+userCardNumber+'&update='+userUpdateTime;
			document.getElementById('ffp_card_img').useMap = '#Map_ffp';
		} else {
			document.getElementById('ffp_card_img').src = '/servlet/card.png?background=gradient&lang='+lang+'&card='+userCardNumber+'&update='+userUpdateTime;
			document.getElementById('ffp_card_img').useMap = '#Map_not_ffp';

			if (document.getElementById('ffp_banner')) {
				document.getElementById('ffp_banner').style.display = 'block';
			}

		}
		if (document.getElementById('sep')) {
			document.getElementById('sep').style.display = 'block';
		}
	} else {
		document.getElementById('ffp_logo_div').style.display = 'block';

		if (document.getElementById('ffp_banner')) {
			document.getElementById('ffp_banner').style.display = 'block';
		}
	}
}


/**
 * Show card in left block for old pages.
 */
function showFfpLeftContentBlock2() {
	if (typeof (userFirstLastName) == "undefined") {
		return;
	}

	var lang = '';
	var path = document.location.pathname;
	
	if (urlDe.test(path)) {
		lang = 'de';
	} else if (urlRu.test(path)) {
		lang = 'ru';
	} else {
		lang = 'en';
	}

	if (userFirstLastName != null) {
		document.getElementById('ffp_card_div').style.display = 'block';

		if (userCardNumber != null) {
			document.getElementById('ffp_card_img').src = '/servlet/card.png?background=8dc240&lang='+lang+'&card='+userCardNumber+'&update='+userUpdateTime;
			document.getElementById('ffp_card_img').useMap = '#Map_ffp';
		} else {
			document.getElementById('ffp_card_img').src = '/servlet/card.png?background=8dc240&lang='+lang+'&card='+userCardNumber+'&update='+userUpdateTime;
			document.getElementById('ffp_card_img').useMap = '#Map_not_ffp';

			if (document.getElementById('ffp_banner')) {
				document.getElementById('ffp_banner').style.display = 'block';
			}
		}
		if (document.getElementById('sep')) {
			document.getElementById('sep').style.display = 'block';
		}
	} else {
		if (document.getElementById('ffp_banner')) {
			document.getElementById('ffp_banner').style.display = 'block';
		}
	}
	$(".left_column .subscribe").hide().show();
}


/**
 * Show/hide Ffp central content block.
 */
function showFfpContentBlock(stateCount) {
	if (typeof (userFirstLastName) == "undefined") {
		return;
	}

	switch (stateCount) {
		case 2:
			if (userFirstLastName != null) {
				document.getElementById('ffpContentLogged').style.display = 'block';	
			} else {
				document.getElementById('ffpContentNonLogged').style.display = 'block';
			}
			break;
		case 3:
			if (userFirstLastName != null) {
				if (userCardNumber != null) {
					document.getElementById('ffpContentLogged').style.display = 'block';
				} else {
					document.getElementById('ffpContentLoggedNonFFP').style.display = 'block';
				}	
			} else {
				document.getElementById('ffpContentNonLogged').style.display = 'block';
			}
			break;
		default:
			break;
	}
}

/**
 * Show/hide Ffp top submenu items.
 */
function showHeaderMenu() {
	if (typeof (userFirstLastName) == "undefined" || typeof (userCardNumber) == "undefined") {
	    return;
    }

	var menuId = '';

	if (userFirstLastName != null) {
		if (userCardNumber != null) {
			for (var i = 0; i < submenuHeader.length; i++) {
				menuId = 'submenu_top_li_' + submenuHeader[i]["id"];
				if (submenuHeader[i]["showType"] == 'ffp') {
					document.getElementById(menuId).style.display = 'block';
				}
			}
		} else {
			for (var i = 0; i < submenuHeader.length; i++) {
				menuId = 'submenu_top_li_' + submenuHeader[i]["id"];
				if (submenuHeader[i]["showType"] == 'not_ffp') {
					document.getElementById(menuId).style.display = 'block';
				}
			}
		}	
	} else {
		for (var i = 0; i < submenuHeader.length; i++) {
			menuId = 'submenu_top_li_' + submenuHeader[i]["id"];
			if (submenuHeader[i]["showType"] == 'not_ffp') {
				document.getElementById(menuId).style.display = 'block';
			}
		}
	}
}

/**
 * Show/hide Ffp left menu items.
 */
function showLeftMenu() {
	if (typeof (userFirstLastName) == "undefined") {
		return;
	}

	var menuId = '';

	if (userFirstLastName != null) {
		if (userCardNumber != null) {
			for (var i = 0; i < menuLeft.length; i++) {
				menuId = 'menu_left_li_' + menuLeft[i]["id"];
				if (menuLeft[i]["showType"] == 'ffp') {
					document.getElementById(menuId).style.display = 'block';
				}
			}
		} else {
			for (var i = 0; i < menuLeft.length; i++) {
				menuId = 'menu_left_li_' + menuLeft[i]["id"];
				if (menuLeft[i]["showType"] == 'not_ffp') {
					document.getElementById(menuId).style.display = 'block';
				}
			}
		}
		document.getElementById('leftMenu').style.display = 'block';
	}
}

/**
 * Show/hide Ffp central menu items.
 */
function showCentralMenu() {
	if (typeof (userFirstLastName) == "undefined") {
		return;
	}

	var menuId = '';

	if (userFirstLastName != null && userCardNumber != null) {
		for (var i = 0; i < submenuLeft.length; i++) {
			menuId = 'submenu_left_li_' + submenuLeft[i]["id"];
			if (submenuLeft[i]["showType"] == 'ffp') {
				document.getElementById(menuId).style.display = 'block';
				menuId = 'submenu_left_li_sep_' + submenuLeft[i]["id"];
				if (document.getElementById(menuId)) {
					document.getElementById(menuId).style.display = 'block';
				}
			}
		}
	}
}


/**
 * Show/hide Visa balance.
 */
function showVisaBalance() {
	if (typeof (visaPromotionBalance) == "undefined" || typeof (visaLastUpdateMillis) == "undefined") {
	    return;
	}

	if (visaPromotionBalance != null && visaLastUpdateMillis != null) {
		var date = new Date(visaLastUpdateMillis);
		var time = "";
		if (date.getHours() < 10) {
                	time += '0';
		}
		time += date.getHours() + ":";
		if (date.getMinutes() < 10) {
                	time += '0';
		}
		time += date.getMinutes();// + " GMT";
		//var gmt = -date.getTimezoneOffset()/60;
		//if (gmt >= 0) {time += "+"};
		//time += gmt;

		document.getElementById('visaBalance').innerHTML = visaPromotionBalance;
		document.getElementById('visaLastTime').innerHTML = time;
		document.getElementById('visaBalanceBlock').style.display = 'block'; 
	}
}


/**
 * submit form by id
 */
function submitForm(formId){
    document.getElementById(formId).submit();
}

function validateSubmitForm(formId, validationRules) {
	if (validateFormNew(validationRules, true)) {
		document.getElementById(formId).submit();
	}
}

function setActionMethodName(methodName) {
	document.getElementById('actionMethodName').value = methodName;
}

// stringDate must be in format dd.mm.yyyy
function parseDate(stringDate){
    var pattern = /^[0-9]{2}\.[0-9]{2}\.[0-9]{4}$/;
    if (!pattern.test(stringDate)) {
        return null;
    }
    var day = parseInt((stringDate).substring(0, 2), 10);
    var month = parseInt((stringDate).substring(3, 5), 10);
    var year = parseInt((stringDate).substring(6), 10);
    var dateValue = new Date(year, month-1, day);
    return dateValue;
}
    
/**
 * Submit search form
 */
function doSearch() {
	var form = document.forms['form_search'];
	var queryElem = form.elements['query'];

	if (queryElem.value == "") {
		alert(error_empty_field);
		form.elements['query'].focus();
		return false;
	} else {
		setCookie("query", queryElem.value, true, MILLIS_IN_YEAR);
		form.submit();
	}	

	return false;
}

function getMillis(increment) {
	var curr = new Date();
	curr = Date.parse(curr.toGMTString());
	return curr + increment;
}


/*
	Set cookie without converting to Hex
*/
function setCookie(name, value, isSession, expireMillis) {
	if (!name) return;
	var result = name;
	if (!value) return;
	result += "=" + escape(value) + ";";
	if (!isSession)
		result += "expires=" + new Date(getMillis(expireMillis)).toUTCString() + ";"
	result += "path=/;";
	document.cookie = result;
}
    
function getCookie(sName) {
	var aCookie = document.cookie.split("; ");
	for (var i = 0; i < aCookie.length; i++) {
		var aCrumb = aCookie[i].split("=");
		if (sName == aCrumb[0])
			return unescape(aCrumb[1]);
	}
	return null;
}
    
/*
	Functions for counters drawing
*/
function createCounter(counter) {
	if (location.href.indexOf('http://') == 0) {
		document.write(counter);
	}
}

function createCountersLogo() {
	var counter = '';

	counter += '<a href="http://top100.rambler.ru/top100/" target="_blank">';
	counter += '<img id="counter_rambler" src="';

	if (location.href.indexOf('https://') == 0) {
		counter += rootPath +'images/rambler.gif';
	} else {
		counter += 'http://top100-images.rambler.ru/top100/banner-88x31-rambler-green2.gif';
	}						

	counter += '" alt="Rambler\'s Top100" title="Rambler\'s Top100" width="88" height="31" border="0"/></a> ';
	counter += '<a href="http://www.liveinternet.ru/click" target="_blank">';

	counter += '<img id="counter_live_internet" src="';

	if (location.href.indexOf('https://') == 0) {
		counter += rootPath +'images/liveinternet.gif';
	} else {
		counter += 'http://counter.yadro.ru/logo?21.16';
	}
	
	counter += '" border="0" alt="liveinternet.ru" title="liveinternet.ru" width="88" height="31"/></a>';

	document.write(counter);
}

// Set Home
function setHome(obj, url) {
	if (document.all) {
		obj.style.behavior = 'url(#default#homepage)';
		obj.setHomePage(url);
		return false;
	}

	return true;
}

/*
	Added by Nataliya_Niakhai
*/
// create flash banner HTML
function createFlashHTML_ffp(link, title, width, height, bgcolor, name, imgLink, version, paramList) {
	var resHtml = "";

	if (typeof (version) == 'undefined') version = 7;

	var fo = new FlashObject(link, name, width, height, version, bgcolor);

	if (fo.installedVer.versionIsValid(fo.getAttribute("version"))) {
		fo.addParam("wmode","transparent");
		if (paramList != null) {
        		for (var i = 0; i < paramList.length; i++)
        			fo.addVariable(paramList[i]["name"], paramList[i]["value"]);
    		}
		document.write('<div id="flashholder_' + name + '"></div>');

		fo.write("flashholder_" + name);
		isFlashBannerCreated = true;

		return '';
	} else if (imgLink != '') {
		if (name.indexOf("flash_banner_") != -1) {
			resHtml += createImageHTML_ffp(imgLink, title, width, height, 0);
			return resHtml;
		} else {
			resHtml += '<a href="http://www.macromedia.com/go/getflashplayer/" target="_blank">';
			resHtml += createImageHTML_ffp(imgLink, title, width, height, 0);
			resHtml += '</a>';
			document.write(resHtml);
		}
	}
}

// create image HTML
function createImageHTML_ffp(link, title, width, height, vspace) {
	var resHtml = "";
	// default is width="219" height="99"
	resHtml += '<img border="0" ';
	resHtml += 'vspace="' + vspace + '" ';
	resHtml += 'src="' + link + '" ';
	resHtml += 'title="' + title + '" ';
	resHtml += 'alt="' + title + '" ';
	resHtml += 'width="' + width + '" ';
	resHtml += 'height="' + height + '"/>';

	return resHtml;
}

// Fix jQuery toggle bug under Safari
// Author: Andrei Hryshanovich
function toggleFix(divName) {
	if($.browser.safari){
		$(divName).toggle();
	} else {
		$(divName).toggle('slow');
	}
}

// Open Popup
var op = null;
function openPopup(page) {

	if (op != null && !op.closed) op.close();

	op = window.open(page, 'popup', 'resizable=no,menubar=no,status=no,scrollbars=yes,width=556,height=595,top=10,left=10');
	if (op != null) {
		op.focus();
	}
	return false;
}

function trim(str) {
	return str.replace(/^\s+/, '').replace(/\s+$/, '');
}

function setDropdownValue(id, code, loc) {
/*
	var tmp = originName[code].name.split("+");
	var name = tmp[0] + ' ('+ code + ') ' + tmp[1] + ' ';
	$('#'+id).removeClass('control-notinit').attr('value', name).attr('firstfoc', 'firstfoc');
*/
	var j = -1;
	for (var i=0;i<loc.length;i++) {
		try {
			if (code == loc[i][0]) {
				j = i;
				break;
			}
		} catch (err) {
		}
	}
	if (j != -1) {
		var name = loc[j][1] + ' (' + loc[j][0] + ') ' + loc[j][2];
		$('#'+id).removeClass('control-notinit').attr('value', name).attr('firstfoc', 'firstfoc');
	}
}
/*
function pop(hidden_input, loc) {
	var c = $('#'+hidden_input).val();
	var j = -1;
	for (var i=0;i<loc.length;i++) {
		try {
			if (c == loc[i][0]) {
				j = i;
				break;
			}
		} catch (err) {
		}
	}
	if (j == -1) {
		return '';
	} else {
		return loc[j][1] + ' (' + loc[j][0] + ') ' + loc[j][2];
	}
}
*/

function restoreUserValues() {
	var origin1 = getCookie('bot_from');
	var dest = getCookie('bot_to');
	var direct = getCookie('bot_direction');
	var departure = getCookie('bot_departure');
	var ret = getCookie('bot_return');
	var flex = getCookie('bot_flexible');
	var cabin_class = getCookie('bot_cabin_class');
	var adults = getCookie('bot_adults');
	var children = getCookie('bot_children');
	var infants = getCookie('bot_infants');

	//city
	if ((typeof (origin1) != "undefined") && (origin1 != null)) {
		setDropdownValue('from_buy', origin1, airportsList);
		$('#origin').val(origin1);
		$("#to_buy")[0].suggestObject
			.setSource(getToAirportItems(airportMap,airportsList,$("#from_buy")[0].suggestObject.getExtIndex())); 

	} else if ((typeof (userAirDeparture) != "undefined") && (userAirDeparture != null)) {
		setDropdownValue('from_buy', userAirDeparture, airportsList);
		$('#origin').val(userAirDeparture);
		$("#to_buy")[0].suggestObject
			.setSource(getToAirportItems(airportMap,airportsList,$("#from_buy")[0].suggestObject.getExtIndex())); 


	} else if ((typeof (userAirCity) != "undefined") && (userAirCity != null)) {
		setDropdownValue('from_buy', userAirCity, airportsList);
		$('#origin').val(userAirCity);
		$("#to_buy")[0].suggestObject
			.setSource(getToAirportItems(airportMap,airportsList,$("#from_buy")[0].suggestObject.getExtIndex())); 

	}

	if ((typeof (dest) != "undefined") && (dest != null)) {
		setDropdownValue('to_buy', dest, airportsList);
		$('#destination').val(dest);
	} else if ((typeof (userAirArrival) != "undefined") && (userAirArrival != null)) {
		setDropdownValue('to_buy', userAirArrival, airportsList);
		$('#destination').val(userAirArrival);
	}

	if ((typeof (direct) != "undefined") && (direct != null)) {
		$('#'+direct).attr('checked', 'checked');
	}

	//dates
	if ((typeof (departure) != "undefined") && (departure != null)) {
		var tmp = departure.split("-");
		var today = new Date();
		var user_day = new Date(tmp[0], tmp[1]-1, tmp[2]);
		var ll = tmp[2]+'.'+tmp[1]+'.'+tmp[0];
		if (user_day >= today) {
			$('#flight_departure').removeClass('control-notinit')
			.attr('value', ll)
			.setDatepickerDate(user_day.setDate(user_day.getDate()));
			$('#departureDate').val(ll);
		}

	}

	if ((typeof (ret) != "undefined") && (ret != null)) {
		var tmp = ret.split("-");
		var today = new Date();
		var user_day = new Date(tmp[0], tmp[1]-1, tmp[2]);
		var ll = tmp[2]+'.'+tmp[1]+'.'+tmp[0];
		if (user_day >= today) {
			$('#flight_return').removeClass('control-notinit')
			.attr('value', ll)
			.setDatepickerDate(user_day.setDate(user_day.getDate()));
			$('#returnDate').val(ll);
		}

	}
	checkWay();

	//other
	if ((typeof (flex) != "undefined") && (flex != null)) {
		if (flex == 'true') {
			$('#searchTypeCheckBox').attr('checked', 'checked');
			changeFlex($('#searchTypeCheckBox').get(0));
		}
	}

	if ((typeof (cabin_class) != "undefined") && (cabin_class != null)) {
		$('#cabinClass').val(cabin_class);
	}

	if ((typeof (adults) != "undefined") && (adults != null)) {
		$('#numAdults').val(adults);
		setTravellers();
	}
	if ((typeof (children) != "undefined") && (children != null)) {
		$('#numChildren').val(children);
	}
	if ((typeof (infants) != "undefined") && (infants != null)) {
		$('#numInfants').val(infants);
	}
}

// number of milliseconds in 10 day
var MILLIS_IN_10_DAYS = 86400000 * 10;

function saveFlightSearchCookie() {
	setCookie('bot_from', $('#origin').val(), false, MILLIS_IN_10_DAYS);
	setCookie('bot_to', $('#destination').val(), false, MILLIS_IN_10_DAYS);
	setCookie('bot_direction', $("input[name='journeySpan']:checked").attr('id'), false, MILLIS_IN_10_DAYS);

	setCookie("bot_departure", $('#departureDate').val(), false, MILLIS_IN_10_DAYS);
	if ($('#returnDate').val() != '') {
		setCookie("bot_return", $('#returnDate').val(), false, MILLIS_IN_10_DAYS);
	}

	setCookie("bot_flexible", (document.getElementById('searchTypeCheckBox').checked) ? 'true' : 'false', false, MILLIS_IN_10_DAYS);

	if ($('#cabinClass').val() != '') {
		setCookie("bot_cabin_class", $('#cabinClass').val(), false, MILLIS_IN_10_DAYS);
	} else {
		setCookie("bot_cabin_class", '-', false, MILLIS_IN_10_DAYS);
	}

	setCookie("bot_adults", $('#numAdults').val(), false, MILLIS_IN_10_DAYS);
	setCookie("bot_children", $('#numChildren').val(), false, MILLIS_IN_10_DAYS);
	setCookie("bot_infants", $('#numInfants').val(), false, MILLIS_IN_10_DAYS);
}

function doFlightSearch() {
	var message = '';
	var form = document.forms['form_flight'];

	// enable flexibility
	if (document.getElementById('searchTypeCheckBox').checked) {
		document.getElementsByName('searchType')[0].value='FLEXIBLE';
	}

	var from = form.elements['from_buy'].value;
	var from_alt = form.elements['from_buy'].alt;
	var to = form.elements['to_buy'].value;
	var to_alt = form.elements['to_buy'].alt;
	var departure = form.elements['flight_departure'].value;
	var departure_alt = form.elements['flight_departure'].alt;
	var ret = form.elements['flight_return'].value;
	var ret_alt = form.elements['flight_return'].alt;


	if (from == '' || from == from_alt) {
		message += error_select_from_destination.toString() + "<br/>";
	}
	if (to == '' || to == to_alt) {
		message += error_select_to_destination.toString() + "<br/>";
	}
	if (form != '' && to != '' & from == to) {
	    message += error_timetable_equal_cities.toString() + "<br/>";
	}

	var mess1 = '';
	if (departure == '' || departure == departure_alt) {
		message += error_date_departure.toString() + "<br/>";
	} else {
		mess1 = validateDate(departure, true, false);
		if (mess1 != '') {
			message += mess1;
		}
	}
	if (form.elements['journeySpan'][1].checked) {
		if (ret == '' || ret == ret_alt) {
			message += error_date_arrival.toString() + "<br/>";
		} else {
			var mess2 = validateDate(ret, false, false);
			if (mess2 != '') {
				message += mess2;
			} else if (mess1 == '' && !checkDatesBefore(departure, ret, false)) {
				message += error_wrong_return_date;
			}
		}	
	}

	if (message != '') {
		$('#botBuyError').html(message).show();
		return false;
	} else {
		$('#botBuyError').hide();
	}

	//origin
	form.elements['origin'].value = from.substring(from.lastIndexOf('(')+1, from.lastIndexOf(')'));

	//destination
	form.elements['destination'].value = to.substring(to.lastIndexOf('(')+1, to.lastIndexOf(')'));

	//Hot fix for POST
	form.elements['from_buy'].value = '';
	form.elements['to_buy'].value = '';  

	//departure date
	var tmp = departure.split(".");
	var day = tmp[0];
	var month = tmp[1];
	var year = tmp[2];
	form.elements['departureDate'].value = year + '-' + month + '-' + day;

	//arrival date
	if (form.elements['journeySpan'][1].checked) {
		var tmp = ret.split(".");
		var day = tmp[0];
		var month = tmp[1];
		var year = tmp[2];
		if (ret != '') {
			form.elements['returnDate'].value = year + '-' + month + '-' + day;
		}
	}
	saveFlightSearchCookie();

	form.submit();
	return false;
}


function doHotelSearch(isValidate) {
	var message = '';
	var form = document.forms['form_hotel'];

	var from = form.elements['location'].value;
	var from_alt = form.elements['location'].alt;

	var departure = form.elements['hotel_departure'].value;
	var departure_alt = form.elements['hotel_departure'].alt;

	var ret = form.elements['hotel_return'].value;
	var ret_alt = form.elements['hotel_return'].alt; 

	var room = form.elements['roomType'].selectedIndex;
	var room_items = form.elements['roomType'].options.length;

	if (isValidate) {
		if (from == '' || from == from_alt) {
		    message += error_hotel_select_city.toString() + "<br/>";
		}

		var mess1 = '';
		if (departure == '' || departure == departure_alt) {
			message += error_hotel_date_arrival.toString() + "<br/>";
		} else {
			mess1 = validateDate(departure, true, true);
			if (mess1 != '') {
				message += mess1;
			}
		}
		if (ret == '' || ret == ret_alt) {
			message += error_hotel_date_departure.toString() + "<br/>";
		} else {
			var mess2 = validateDate(ret, false, true);
			if (mess2 != '') {
				message += mess2;
			}
			if (mess1 == '' && !checkDatesBefore(departure, ret, true)) {
				message += error_wrong_hotel_return_date + "<br/>";
			}
		}
			
		if (room_items == 3) {
			message += error_select_room_type.toString() + "<br/>";
		} else if (room_items == 2 && room == 0) {
			document.getElementById('singleRooms').value='1';
			document.getElementById('doubleRooms').value='';
		} else if (room_items == 2 && room == 1) {
			document.getElementById('singleRooms').value='';
			document.getElementById('doubleRooms').value='1';
		}
	}

	if (message != '') {
		$('#botBuyHotelError').html(message).show();
		return false;
	} else {
		$('#botBuyHotelError').hide();
	}

	var tmp = departure.split(".");
	document.getElementById('startDateDay').value = tmp[0];
	document.getElementById('startDateMonth').value = tmp[1];
	document.getElementById('startDateYear').value = tmp[2];

	tmp = ret.split(".");
	document.getElementById('endDateDay').value = tmp[0];
	document.getElementById('endDateMonth').value = tmp[1];
	document.getElementById('endDateYear').value = tmp[2];

	if(isValidate) {
		document.getElementById('activity').value = 'startSearch';
	} else {
		document.getElementById('activity').value = 'initSearch';
	}

	form.submit();
	return false;
}

function doBookingSearch() {
	var message = '';
	var reLastName = /(^[a-zA-Z]+$)/;
	var rePnr = /(^[a-zA-Z0-9]+$)/;
	var form = document.forms['form_booking'];

	var name = trim(form.elements['passengerLastName'].value);

	var pnr = trim(form.elements['pnr'].value);

	if (name == '') {
		message += error_booking_lastName.toString() + "<br/>";
	} else if (!name.match(reLastName)) {
		message += error_booking_lastName_latin.toString() + "<br/>";
	}

	if (pnr == '') {
		message += error_booking_pnr.toString() + "<br/>";
	} else {
		if (!pnr.match(rePnr)) {
			message += error_booking_pnr_latin.toString() + "<br/>";
		}
		if (pnr.length > 5) {
			message += error_booking_ref_maxlength.toString() + "<br/>";
		}
	}

	if (message != '') {
		$('#botBookingError').html(message).show();
		return false;
	} else {
		$('#botBuyError').hide();
	}

	form.submit();
	return false;
}

function doBoardSearch() {
	var message = '';
	var re = /(^\d{1,4})([A-Za-z]{0,1}$)/ig;
	var form = document.forms['form_board'];

	var from_city = form.elements['from_city_board'].value;
	var from_city_alt = form.elements['from_city_board'].alt;

	var from = form.elements['from_board'].value;
	var from_alt = form.elements['from_board'].alt;
	var to = form.elements['to_board'].value;
	var to_alt = form.elements['to_board'].alt;

	var flight = trim(form.elements['flight'].value);
	var flight_alt = form.elements['flight'].alt;

	var dep = form.elements['board_departure'].value; 
	var dep_alt = form.elements['board_departure'].alt; 

	if (form.elements['board_type'][0].checked) {
		if (from_city == '' || from_city == from_city_alt) {
		    message += error_select_from_destination.toString() + "<br/>";
		}
	}
	if (form.elements['board_type'][1].checked) {
		if (from == '' || from == from_alt) {
			message += error_select_from_destination.toString() + "<br/>";
		}
		if (to == '' || to == to_alt) {
			message += error_select_to_destination.toString() + "<br/>";
		}
		if (from != '' && to != '' && from == to) {
			message += error_timetable_equal_cities.toString() + "<br/>";
			form.elements['to_board'].focus();
		}
	}
	if (form.elements['board_type'][2].checked) {
		if (flight == '' || flight == flight_alt || !flight.match(re)) {
			message += error_board_flightNumber.toString() + "<br/>";
		}
	}

	if (dep == '' || dep == dep_alt) {
		message += error_date_departure.toString() + "<br/>";
	} else {
		message += validateDate(dep, true, false);
	}

	if (message != '') {
		$('#botBoardError').html(message).show();
		return false;
	} else {
		$('#botBuyError').hide();
	}

	if (form.elements['board_type'][0].checked) {
		//city
		form.elements['origin_city_board'].value = from_city.substring(from_city.lastIndexOf('(')+1, from_city.lastIndexOf(')'));
	}
	if (form.elements['board_type'][1].checked) {
		//origin
		form.elements['origin_board'].value = from.substring(from.lastIndexOf('(')+1, from.lastIndexOf(')'));
		//destination
		form.elements['destination_board'].value = to.substring(to.lastIndexOf('(')+1, to.lastIndexOf(')'));
	}

	form.submit();
	return false;
}

function doWebCheckinSearch() {
	var message = '';
	var reEticket = /(^[0-9]+$)/;
/*
/(^(([0-9]{3,3})[ ])?([0-9])+$)/;
*/
	var rePnr = /(^[a-zA-Z0-9]+$)/;
	var form = document.forms['form_reg'];

	var from = trim(form.elements['from_airport'].value);
	var from_alt = form.elements['from_airport'].alt;

	var type = form.elements['logonType'].selectedIndex;
	var type_items = form.elements['logonType'].options.length;

	var pnr = trim(form.elements['logonValue'].value);
	var pnr_alt = form.elements['logonValue'].alt;
	var isAirportFromList = false;

	if (from == '' || from == from_alt) {
		message += error_select_from_destination.toString() + "<br/>";
	} else {
		for (var i = 0; i < airportsCheckinList.length; i++) {
			var rex;
			if (airportsCheckinList[i][1].length > 23) rex = new RegExp(airportsCheckinList[i][1].substr(0,23), "i");
			else rex = new RegExp(airportsCheckinList[i][1] + " \\(" + airportsCheckinList[i][0] + "\\)", "i");
			
			if (from.search(rex) == 0) isAirportFromList = true;
		}
		if (!isAirportFromList) message += error_not_in_list.toString() + "<br/>";
	}

	if (type_items == 3) {
		message += error_identification_type.toString() + "<br/>";
		if (pnr == '' || pnr == pnr_alt) {
			message += error_eticket_or_pnr.toString() + "<br/>";
		}
	} else if (type_items == 2 && type == 0) {
			if (pnr == '' || pnr == pnr_alt) {
				message += error_eticket_number.toString() + "<br/>";
			} else {
				if (!pnr.match(reEticket)) {
					message += error_eticket_format.toString() + "<br/>";
				}
				if (pnr.length > 13) { //was 14
					message += error_eticket_maxlength.toString() + "<br/>";
				}
			}
		} else if (type_items == 2 && type == 1) {
			if (pnr == '' || pnr == pnr_alt) {
				message += error_booking_ref.toString() + "<br/>";
			} else {
				if (!pnr.match(rePnr)) {
					message += error_booking_pnr_latin.toString() + "<br/>";
				}
				if (pnr.length > 5) {
					message += error_booking_ref_maxlength.toString() + "<br/>";
				}
			}	
		}

       	if (message != '') {
		$('#botWebCheckinError').html(message).show();
		return false;
	} else {
		$('#botBuyError').hide();
	}

	//airport
	//form.elements['airportOrigin'].value = from.substring(from.lastIndexOf('(')+1, from.lastIndexOf(')'));

	form.submit();
	return false;
}

function validateDate(date, isDeparture, isHotel) {
	// validate date in format dd.mm.yyyy
	// author: Andrei Hryshanovich

	var message = '';

	if (!checkValidDate(date)) {
		if (isHotel) {
			isDeparture ? message += error_hotel_date_arrival_format : message += error_hotel_date_departure_format;
		} else {
			isDeparture ? message += error_date_departure_format : message += error_date_arrival_format;
		}
		message += '<br/>';
	} else if (!checkDateInPast(date)) {
		if (isHotel) {
			isDeparture ? message += error_select_hotel_depart_day_early : message += error_select_hotel_return_day_early;
		} else {
			isDeparture ? message += error_select_depart_day_early : message += error_select_return_day_early;
		}
		message += '<br/>';
	}
	return message;
}

// author: Nataliya Niakhai  
function checkValidDate(date) {
	var isValid = true;

	var tmp = date.split(".");
	var day = tmp[0];
	var month = tmp[1];
	var year = tmp[2];

	if (isNaN(day) || isNaN(month) || isNaN(year) || day < 1 || day > 31 || month < 1 || month > 12 || year.length > 4) {
		isValid = false;
	}  
	if (day == 31 && (month == 2 || month == 4 || month == 6 || month == 9 || month == 11)) {
		isValid = false;
	}
	if (day == 30 && month == 2) {
		isValid = false;
	}
	if (day == 29 && (year % 4) == 0) {
		isValid = false;
	}

	return isValid;
}

function checkDateInPast(date) {
	var isValid = true;

	var tmp = date.split(".");
	var day = tmp[0];
	var month = tmp[1];
	var year = tmp[2];
	var currDate = new Date();   

	if (year < currDate.getFullYear()) {
		isValid = false;
	}
	if (month < (currDate.getMonth()+1) && year == currDate.getFullYear()) {
		isValid = false;
	}
	if (day < currDate.getDate() && month == (currDate.getMonth()+1) && year == currDate.getFullYear()) {
		isValid = false;
	}  	

	return isValid;
}

function checkDatesBefore(dep, ret, isHotel) {
	// check depDate <= retDate
	// author: Andrei Hryshanovich
	var tmp = dep.split(".");
	var depD = tmp[0];
	var depM = tmp[1];
	var depY = tmp[2];
    
	tmp = ret.split(".");
	var retD = tmp[0];
	var retM = tmp[1];
	var retY = tmp[2];
    
	if (depY < retY) {
		return true;
	} else if (depY > retY) {
		return false;
	} else if (depM < retM) {
		return true;
	} else if (depM > retM) {
		return false;
	} else if (depD <= retD && !isHotel) {
		return true;
	} else if (depD < retD && isHotel) {
		return true;
	} else return false;
}

function changeFlex(obj) {
	var dropdown = document.getElementsByName('cabinClass')[0];
	var opt;

	if (obj.checked) {
		dropdown.options.length = 0;
		for (var i = 0; i < cabins.length; i++) {
			opt = new Option(cabins[i].name, cabins[i].code);
			dropdown.options[i] = opt;
		}
	} else {
		dropdown.options.length = 0;
		for (var i = 1; i < cabins.length; i++) {
			opt = new Option(cabins[i].name, cabins[i].code);
			dropdown.options[i - 1] = opt;
		}
	}
}

function setBoardDate() {
	var dateString = '';
	var date = new Date();
	
	if (date.getDate() < 10) {
		dateString += '0';
	}
	dateString += date.getDate() + '.';
	
	if (date.getMonth()+1 < 10) {
		dateString += '0';
	}
	dateString += date.getMonth()+1 + '.';
	dateString += date.getFullYear();
       	document.getElementById('board_departure').value = dateString;
}

function changePrice() {
	var message = '';
	$('#calcError').html(message).hide();
	var from = trim(document.getElementById('from_calc').value);
	var to = trim(document.getElementById('to_calc').value);
	var fromCode = document.getElementById('origin_calc').value;
	var toCode = document.getElementById('destination_calc').value;
	var weight = document.getElementById('envWeight').options[document.getElementById('envWeight').selectedIndex].value;
	var isOrigAirportFromList = false;
	var isDestAirportFromList = false;
	var price = '0';

	if (from != '' && to != '' && weight != 'none'){
		var origArea = '';
		for (var i = 0; i < airportsList.length; i++) {
			var rex;
			if (airportsList[i][1].length > 23) rex = new RegExp(airportsList[i][1].substr(0,23), "i");
			else rex = new RegExp(airportsList[i][1] + " \\(" + airportsList[i][0] + "\\)", "i");

			if (from.search(rex) == 0) isOrigAirportFromList = true;
			if (to.search(rex) == 0) isDestAirportFromList = true;
		}
		if (!isOrigAirportFromList || !isDestAirportFromList) {
					
			message += error_calc_not_in_list.toString() + "<br/>";
		} else if (from == to){
			message += error_calc_equal_cities.toString() + "<br/>";
		} else {
			var orig = document.getElementById('origin_calc').value;
			var dest = document.getElementById('destination_calc').value;
			var origArea = '';
			var destArea = '';
			for (var i = 0; i < areaList.length; i++) {
				if (areaList[i][0] == orig) origArea = areaList[i][1];
				if (areaList[i][0] == dest) destArea = areaList[i][1];
			}
			if (origArea.length != 0 && destArea.length != 0) {
				var area = origArea + destArea;
				var tariff = '';
				for (var i = 0; i < tariffList.length; i++){
					if (tariffList[i][0] == area) tariff = tariffList[i][1];
				}
				if (tariff.length != 0) {
					for (var i = 0; i < priceList.length; i++){
						if (priceList[i][0] == weight){
							if (tariff == 'A') price = priceList[i][1];
							else if (tariff == 'B') price = priceList[i][2];
							else if (tariff == 'C') price = priceList[i][3];
						}
					}
				}
			}
		}
	}
	if (message.length != 0) {
		$('#calcError').html(message).show();
		$('#price').html('0');
	} else {
		$('#price').html(price);
	}
	return false;
}