var GOL_debugMode = false;
function _gel(ident) {
	var el;
	try {
		el = document.getElementById(ident)
	} catch(e) {alert("Element does not exist.\n" + e.name + ":" + e.message)
	}
	return el
}

function GOL_Core(debug) {
	this.debug = debug;
	this.showError = function(message) {
		if(this.debug === true) {alert('UserError: ' + message)
		} else {
			throw new Error('UserError: ' + message);
		}
	};
	this.listProperties = function(obj) {
		var str = "";
		for(var att in obj)
		str += att + "\n";
		alert(str)
	};
	this.getSelectValue = function(id) {
		return _gel(id).options[_gel(id).selectedIndex].value
	};
	this.setSelectValue = function(id, val) {
		for(var k = 0; k < _gel(id).options.length; k++) {
			if(_gel(id).options[k].value == val) {
				_gel(id).options[k].selected = true
			}
		}
	};
	this.L_gIV = L_gIV;
	this.L_aC = L_aC;
	this.L_rC = L_rC;
	this.L_hC = L_hC;
	this.L_gPNBTN = L_gPNBTN;
	this.L_gNSBTN = L_gNSBTN;
	this.L_gPSBTN = L_gPSBTN;
	this.L_gFCBTN = L_gFCBTN;
	this.L_gOT = L_gOT;
	this.L_gOL = L_gOL;
	this.Library_length = Library_length;
	this.Library_inArray = Library_inArray;
	this.Library_join = Library_join;
	this.L_aR = L_aR;
	this.L_aRD = L_aRD;
	this.L_aRSend = L_aRSend;
	this.L_aUE = L_aUE
}

function GOL_Item(id, handler) {
	this.id = id;
	if( handler instanceof GOL_Handler) {
		this.handler = handler
	} else {
		this.showError('Predany objekt neni typu GOL_Handler (Item object)')
	}
	var el = _gel(id);
	if(!el) {
		this.id = null;
		return null
	}
	this.attachHandlers = function() {
		var el = _gel(this.id);
		try {
			for(var handler in this.handler.events) {
				el[handler] = this.handler.events[handler]
			}
		} catch(e) {
			this.showError(e.name + ": " + e.message + "(" + this.id + ")")
		}
	}
}
GOL_Item.prototype = new GOL_Core(GOL_debugMode);
GOL_Item.prototype.contructor = GOL_Item;
function GOL_Handler(ev, handler) {
	this.events = new Array();
	this.addEvent = function(ev, handler) {
		if( typeof this.events[ev] == "undefined") {
			this.events[ev] = handler
		} else {
			this.showError('K dane udalosti jiz byl handler prirazen (Handler object)')
		}
	};
	if(GOL_Handler.arguments.length == 2) {
		if( typeof ev == "string" && handler instanceof Function) {
			this.events[ev] = handler
		} else {
			this.showError('Predany objekt neni typu String nebo Function (Handler object)')
		}
	} else if(GOL_Handler.arguments.length == 1 && ev instanceof Array) {
		for(var i in ev) {
			this.addEvent(ev[i][0], ev[i][1])
		}
	}
}
GOL_Handler.prototype = new GOL_Core(GOL_debugMode);
GOL_Handler.prototype.contructor = GOL_Handler;
function GOL_DefaultData() {
	this.fill = function() {
		this.fillOrigin();
		this.fillVendor();
		this.fillDates();
		this.fillDefaultPassenger();
		this.fillDefaultSearchType()
	};
	this.fillDefaultSearchType = function() {
		var searchType_select, searchTypeFake_select;
		if(!( searchType_select = _gel('AO3_StepOne2_searchType')) || !( searchTypeFake_select = _gel('AO3_StepOne2_fakeSearchType'))) {
			this.showError(GOL_Global.config.fillDefaultSearchType_err1);
			return false
		}
		if(GOL_Global.config.defaultSearchType == '' || ( typeof GOL_Global.config.defaultSearchType == "undefined")) {
			this.showError(GOL_Global.config.fillDefaultSearchType_err2);
			return false
		}
		try {
			this.setSelectValue('AO3_StepOne2_searchType', GOL_Global.config.defaultSearchType);
			this.setSelectValue('AO3_StepOne2_fakeSearchType', GOL_Global.config.defaultSearchType)
		} catch(e) {
			this.showError(GOL_Global.config.fillDefaultSearchType_err3 + "\n" + e.name + ":" + e.message)
		}
	};
	this.fillDefaultPassenger = function() {
		if(GOL_Global.config.defaultTravelerType == '' || ( typeof GOL_Global.config.defaultTravelerType == "undefined")) {
			this.showError(GOL_Global.config.fillDefaultPassenger_err2);
			return false
		}
		var defPass_select = _gel('AO3_StepOne2_travelers0');
		try {
			if(defPass_select) {
				this.setSelectValue('AO3_StepOne2_travelers0', GOL_Global.config.defaultTravelerType)
			} else {
				defPass_select = _gel('AO3_StepOne2_travelersCount' + GOL_Global.config.defaultTravelerType);
				if(defPass_select) {
					this.setSelectValue('AO3_StepOne2_travelersCount' + GOL_Global.config.defaultTravelerType, "1")
				}
			}
		} catch(e) {
			this.showError(GOL_Global.config.fillDefaultPassenger_err3 + "\n" + e.name + ":" + e.message)
		}
	};
	this.fillOrigin = function() {
		var originSelect;
		if(!( originSelect = _gel('AO3_StepOne2_origin_0'))) {
			return false
		}
		var origin, originDesc;
		origin = GOL_Global.config.defaultOrigin.split(',');
		originDesc = GOL_Global.config.defaultOriginDescription.split('|');
		document.forms['inline_form']['data[flights][0][origin]'].options.length = 0;
		for(var i = 0; i <= origin.length; i++) {
			document.forms['inline_form']['data[flights][0][origin]'].options[i] = new Option(originDesc[i], origin[i])
		}
		document.forms['inline_form']['data[flights][0][origin]'].options[origin.length] = new Option(GOL_Global.config.otherSearchOption, "")
	};
	this.fillVendor = function() {
		var vendorSelect;
		if(!( vendorSelect = _gel('AO3_StepOne2_vendor'))) {
			return false
		}
		var vendor, vendorDesc;
		vendor = GOL_Global.config.transportCompanies.split('|');
		vendorDesc = GOL_Global.config.transportCompaniesDesc.split('|');
		document.forms['inline_form']['data[vendor]'].options.length = 0;
		document.forms['inline_form']['data[vendor]'].options[0] = new Option(GOL_Global.config.vendorWithoutPreference, '');
		for(var i = 0, j = 1; i < vendor.length; i++, j++) {
			document.forms['inline_form']['data[vendor]'].options[j] = new Option(vendorDesc[i], vendor[i])
		}
	};
	this.fillDates = function() {
		var date1, date2;
		date1 = new Date();
		date1_1 = new Date();
		date2 = new Date();
		date2_1 = new Date();
		date1.setDate(date1.getDate() + parseInt(GOL_Global.config.defaultStartDateDelta));
		date1_1.setDate(date1_1.getDate());
		date2.setDate(date2.getDate() + parseInt(GOL_Global.config.defaultStartDateDelta) + parseInt(GOL_Global.config.defaultEndDateDelta));
		date2_1.setDate(date2_1.getDate());
		if(!document.forms['inline_form'])
			return false;
		if((document.forms['inline_form']['data[flights][0][departureDay]']) && (document.forms['inline_form']['data[flights][0][departureMonth]']) && (document.forms['inline_form']['data[flights][1][departureDay]']) && (document.forms['inline_form']['data[flights][1][departureMonth]'])) {
			document.forms['inline_form']['data[flights][0][departureDay]'].options.length = 0;
			document.forms['inline_form']['data[flights][0][departureMonth]'].options.length = 0;
			document.forms['inline_form']['data[flights][1][departureDay]'].options.length = 0;
			document.forms['inline_form']['data[flights][1][departureMonth]'].options.length = 0;
			for(var i = 1, j = 0; i <= 31; i++, j++) {
				document.forms['inline_form']['data[flights][0][departureDay]'].options[j] = new Option(i, i);
				if(date1.getDate() == i) {
					document.forms['inline_form']['data[flights][0][departureDay]'].options[j].selected = true
				}
			}
			for(var i = 1, j = 0; i <= 31; i++, j++) {
				document.forms['inline_form']['data[flights][1][departureDay]'].options[j] = new Option(i, i);
				if(date2.getDate() == i) {
					document.forms['inline_form']['data[flights][1][departureDay]'].options[j].selected = true
				}
			}
			for(var i = 0; i < 12; i++) {
				date1_1.setDate(1);
				if(i == 0) {
					date1_1.setMonth(date1_1.getMonth())
				} else {
					date1_1.setMonth(date1_1.getMonth() + 1)
				}
				if(date1_1.getMonth() > 8) {
					var d = (date1_1.getMonth() + 1)
				} else {
					var d = '0' + (date1_1.getMonth() + 1)
				}
				document.forms['inline_form']['data[flights][0][departureMonth]'].options[i] = new Option(GOL_Global.config.dictionary.month[date1_1.getMonth()] + " " + ((date1_1.getFullYear()).toString()).substr(2, 2), date1_1.getFullYear() + "-" + d);
				if(date1.getMonth() == date1_1.getMonth()) {
					document.forms['inline_form']['data[flights][0][departureMonth]'].options[i].selected = true
				}
			}
			for(var i = 0; i < 12; i++) {
				date2_1.setDate(1);
				if(i == 0) {
					date2_1.setMonth(date2_1.getMonth())
				} else {
					date2_1.setMonth(date2_1.getMonth() + 1)
				}
				if(date2_1.getMonth() > 8) {
					var d = (date2_1.getMonth() + 1)
				} else {
					var d = '0' + (date2_1.getMonth() + 1)
				}
				document.forms['inline_form']['data[flights][1][departureMonth]'].options[i] = new Option(GOL_Global.config.dictionary.month[date2_1.getMonth()] + " " + ((date2_1.getFullYear()).toString()).substr(2, 2), date2_1.getFullYear() + "-" + d);
				if(date2.getMonth() == date2_1.getMonth()) {
					document.forms['inline_form']['data[flights][1][departureMonth]'].options[i].selected = true
				}
			}
		}
		if((document.forms['inline_form']['data[flights][0][departureDateInput]']) && (document.forms['inline_form']['data[flights][1][departureDateInput]'])) {
			document.forms['inline_form']['data[flights][0][departureDateInput]'].value = Library_getDateToHuman(date1, 'd.m.Y');
			document.forms['inline_form']['data[flights][1][departureDateInput]'].value = Library_getDateToHuman(date2, 'd.m.Y')
		}
	}
}
GOL_DefaultData.prototype = new GOL_Core(GOL_debugMode);
GOL_DefaultData.prototype.contructor = GOL_DefaultData;
function GOL_Global() {
	this.config = new Object();
	this.handlers = new Object();
	this.handlers.AO3s12dSoCh = AO3s12dSoCh;
	this.handlers.AO3Empty = AO3Empty;
	this.handlers.AO3s12tLH = AO3s12tLH;
	this.handlers.AO3s12RTH = AO3s12RTH;
	this.handlers.AO3s12STH = AO3s12STH;
	this.handlers.AO3s12dOnKeyUp = AO3s12dOnKeyUp;
	this.handlers.AO3s12dOnKeyDown = AO3s12dOnKeyDown;
	this.handlers.AO3s12dOnKeyPress = AO3s12dOnKeyPress;
	this.handlers.AO3s12dOnChange = AO3s12dOnChange;
	this.handlers.AO3s12dOnBlur = AO3s12dOnBlur;
	this.handlers.AO3s12dOnFocus = AO3s12dOnFocus;
	this.handlers.AO3s12bDH = AO3s12bDH;
	this.handlers.AO3True = AO3True;
	this.handlers.AO3s12cTH = AO3s12cTH;
	this.handlers.AO3s12gCH = AO3s12gCH;
	this.handlers.AO3s12FOH = AO3s12FOH;
	this.handlers.AO3s12RTM = function() {
		_gel('GOL_searchForm').submit()
	};
	this.config.global = new Object();
	this.appendItems = function() {
		this.config.items = new Object();
		this.config.items.returnTicketYes = new GOL_Item('AO3_StepOne2_returnTicketYes', new GOL_Handler('onclick', this.handlers.AO3s12RTH));
		this.config.items.returnTicketNo = new GOL_Item('AO3_StepOne2_returnTicketNo', new GOL_Handler('onclick', this.handlers.AO3s12RTH));
		this.config.items.returnTicketMulti = new GOL_Item('AO3_StepOne2_returnTicketMulti', new GOL_Handler('onclick', this.handlers.AO3s12RTM));
		for(var seg = 0; seg < 3; seg++) {
			this.config.items['origin' + seg] = new GOL_Item('AO3_StepOne2_origin_' + seg, new GOL_Handler([['onchange', this.handlers.AO3s12dSoCh], ['onkeyup', this.handlers.AO3Empty]]));
			this.config.items['originButton' + seg] = new GOL_Item('AO3_StepOne2_originButton_' + seg, new GOL_Handler('onclick', this.handlers.AO3s12bDH));
			this.config.items['originFound' + seg] = new GOL_Item('AO3_StepOne2_originFound_' + seg, new GOL_Handler('onchange', this.handlers.AO3True));
			this.config.items['destination' + seg] = new GOL_Item('AO3_StepOne2_destination_' + seg, new GOL_Handler([['onchange', this.handlers.AO3s12dOnKeyUp], ['onkeyup', this.handlers.AO3s12dOnKeyUp], ['onblur', this.handlers.AO3s12dOnBlur], ['onfocus', this.handlers.AO3s12dOnFocus], ['onkeypress', this.handlers.AO3s12dOnKeyPress], ['onkeydown', this.handlers.AO3s12dOnKeyDown]]));
			this.config.items['destinationButton' + seg] = new GOL_Item('AO3_StepOne2_destinationButton_' + seg, new GOL_Handler('onclick', this.handlers.AO3s12bDH));
			this.config.items['destinationFound' + seg] = new GOL_Item('AO3_StepOne2_destinationFound_' + seg, new GOL_Handler('onchange', this.handlers.AO3True));
			this.config.items['departureDay' + seg] = new GOL_Item('AO3_StepOne2_departureDay_' + seg, new GOL_Handler('onchange', this.handlers.AO3s12cTH));
			this.config.items['departureMonth' + seg] = new GOL_Item('AO3_StepOne2_departureMonth_' + seg, new GOL_Handler('onchange', this.handlers.AO3s12cTH));
			this.config.items['departureTime' + seg] = new GOL_Item('AO3_StepOne2_departureTime_' + seg, new GOL_Handler('onchange', this.handlers.AO3s12cTH));
			this.config.items['departureCalendar' + seg] = new GOL_Item('AO3_StepOne2_departureCalendar_' + seg, new GOL_Handler('onclick', this.handlers.AO3s12gCH))
		}
		this.config.items.travelerNo = new GOL_Item('AO3_StepOne2_travelersCount', new GOL_Handler('onchange', this.handlers.AO3s12tLH));
		this.config.items.searchType = new GOL_Item('AO3_StepOne2_searchType', new GOL_Handler('onchange', this.handlers.AO3s12STH));
		this.config.items.fakeSearchType = new GOL_Item('AO3_StepOne2_fakeSearchType', new GOL_Handler('onchange', this.handlers.AO3s12STH));
		this.config.items.searchForm = new GOL_Item('GOL_searchForm', new GOL_Handler('onsubmit', this.handlers.AO3s12FOH))
	};
	this.customer = new Object();
	this.customer.check = function() {
		return true
	};
	this.init = function(www) {
		this.appendItems();
		if(this.init.arguments.length != 1) {
			this.showError('Musite zadat adresu proxy serveru')
		}
		if(!this.config.ajax) {
			this.config.ajax = new Object()
		}
		this.config.ajax.kde = www;
		this.config.url = www;
		var i = 1;
		for(var item in this.config.items) {
			if(this.config.items[item] instanceof GOL_Item && this.config.items[item].id) {
				this.config.items[item].attachHandlers()
			}
		}
		this.defaultData = new GOL_DefaultData();
		this.defaultData.fill();
		AO3s12SHA();
		var el = _gel('AO3_StepOne2_travelersCount');
		if(el) {
			el.oldValue = parseInt(el.value)
		}AO3searchFormChooseCountryHandlerAdd();
		Library_CalendarHandlerAdd()
	}
}
GOL_Global.prototype = new GOL_Core(GOL_debugMode);
GOL_Global.prototype.contructor = GOL_Global;
function L_gIV(formItem, name) {
	var i;
	var ret = false;
	formItem = L_gPNBTN(formItem, 'FORM');
	if(formItem) {
		var inputs = formItem.getElementsByTagName('INPUT');
		for( i = 0; i < inputs.length; i++) {
			if((inputs[i].type != 'radio') && (inputs[i].type != 'checkbox') && (inputs[i].name == name)) {
				ret = inputs[i].value;
				break
			}
		}
	}
	return ret
}

function L_aC(el, cl) {
	el.className += (el.className ? ' ' : '') + cl
}

function L_rC(el, cl) {
	var classesOld = el.className.split(' ');
	var classesNew = new Array();
	var i;
	for(i in classesOld) {
		if(classesOld[i] != cl) {
			classesNew.push(classesOld[i])
		}
	}
	el.className = classesNew.join(' ')
}

function L_hC(element, classes, separator) {
	var sep = separator ? separator : ' ';
	var parts = new Array();
	if(!isNaN(sep)) {
		parts[0] = element.className.substring(0, sep);
		parts[1] = element.className.substring(sep)
	}
	var parts = element.className.split(sep);
	if(!classes) {
		return parts
	}
	for(var index in parts) {
		if(parts[index] == classes) {
			return true
		}
	}
	return false
};

function L_gPNBTN(element, name) {
	element = element.parentNode;
	while(element && element.nodeName != name) {
		element = element.parentNode
	}
	return element
}

function L_gNSBTN(element, name, count) {
	if(!count) {
		count = 1
	}
	do {
		element = element.nextSibling;
		if(element && element.nodeName == name) {
			count--
		}
	} while(element&&((element.nodeName!=name)||(count!=0)));
	return element
}

function L_gPSBTN(element, name) {
	element = element.previousSibling;
	while(element && element.nodeName != name) {
		element = element.previousSibling
	}
	return element
}

function L_gFCBTN(element, name) {
	element = element.firstChild;
	while(element && element.nodeName != name) {
		element = element.nextSibling
	}
	return element
}

function L_gOT(el) {
	var offsetTop = 0;
	if(el.offsetParent) {
		offsetTop = el.offsetTop;
		el = el.offsetParent;
		while(el) {
			offsetTop += el.offsetTop;
			el = el.offsetParent
		}
	}
	return offsetTop
}

function L_gOL(el) {
	var offsetLeft = 0;
	if(el.offsetParent) {
		offsetLeft = el.offsetLeft;
		el = el.offsetParent;
		while(el) {
			offsetLeft += el.offsetLeft;
			el = el.offsetParent
		}
	}
	return offsetLeft
}

function Library_length(ar) {
	var i = 0;
	for(var k in ar) {
		i++
	}
	return i
}

function Library_inArray(ar, val) {
	for(var k in ar) {
		if(ar[k] == val) {
			return k
		}
	}
	return false
}

function Library_join(ar, delimiter) {
	if(!delimiter) {
		delimiter = ''
	}
	var text = '';
	for(var i in ar) {
		if(!ar[i]) {
			continue
		}
		text += (text == '' ? '' : delimiter) + ar[i]
	}
	return text
}

var LV_aR = new Array();
var LV_aRO = new Array();
var LV_aRPostData = new Array();
function L_aR(type, url, handler, element, delay, post) {
	var httpRequest = false;
	post = post ? 1 : 0;
	var postData = null;
	if(post) {
		var urlDataStart = url.indexOf('?');
		if(urlDataStart > -1) {
			postData = url.substring(urlDataStart + 1, url.length);
			url = url.substring(0, urlDataStart)
		}
	}
	if(window.XMLHttpRequest) {
		httpRequest = new XMLHttpRequest();
		if(httpRequest.overrideMimeType) {
			httpRequest.overrideMimeType('text/xml')
		}
	} else if(window.ActiveXObject) {
		try {
			httpRequest = new ActiveXObject("Msxml2.XMLHTTP")
		} catch(e) {
			try {
				httpRequest = new ActiveXObject("Microsoft.XMLHTTP")
			} catch(e) {
			}
		}
	}
	if(httpRequest) {
		var ident = Math.random();
		LV_aR[type] = ident;
		LV_aRO[type] = httpRequest;
		LV_aRPostData[ident] = postData;
		httpRequest.onreadystatechange = function() {handler(httpRequest, type, ident, element)
		};
		httpRequest.open( post ? 'POST' : 'GET', url, true);
		if(!delay) {L_aRSend(httpRequest, post, postData)
		} else {
			window.setTimeout("L_aRD('" + type + "','" + ident + "'," + post + ");", delay)
		}
	}
}

function L_aRD(type, ident, post) {
	if(LV_aR[type] == ident) {L_aRSend(LV_aRO[type], post, LV_aRPostData[ident])
	}
}

function L_aRSend(httpRequest, post, postData) {
	if(post) {
		httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		httpRequest.setRequestHeader("Content-length", postData.length);
		httpRequest.setRequestHeader("Connection", "close")
	}
	httpRequest.send(postData)
}

function L_aUE(val) {
	var ret = val.toString();
	return encodeURIComponent(ret)
}

function AO3sFDS(event, element) {
	element.didSelection = false;
	element.last = element.value;
	var ret = true;
	var terminal = _gel('ao3AjaxTerminalGetDestinations');
	if(terminal) {
		var cursor = _gel('ao3AjaxTerminalGetDestinationsCursor');
		if(cursor && (event.keyCode == 40) || (event.keyCode == 38)) {
			if(event.keyCode == 40) {
				var novyCursor = L_gNSBTN(cursor, 'DIV')
			} else if(event.keyCode == 38) {
				var novyCursor = L_gPSBTN(cursor, 'DIV')
			}
			if(novyCursor) {
				cursor.id = null;
				L_rC(cursor, 'cursor');
				novyCursor.id = 'ao3AjaxTerminalGetDestinationsCursor';
				L_aC(novyCursor, 'cursor')
			}
			ret = false
		} else if(cursor && (event.keyCode == 13)) {
			var code = cursor.innerHTML.substr(cursor.innerHTML.length - 4, 3);
			var label = cursor.innerHTML;
			var codeInput = L_gNSBTN(element, 'INPUT', 2);
			codeInput.value = code;
			codeInput.name = element.name.substr(0, element.name.length - 7) + ']';
			if(codeInput.onchange) {
				codeInput.onchange()
			}
			element.didSelection = true;
			element.value = label;
			element.onchange();
			setTimeout(AO3sFGDTR, 100);
			ret = false
		} else if(!cursor && (event.keyCode == 40)) {
			var div1level = L_gFCBTN(terminal, 'DIV');
			var div2level = L_gFCBTN(div1level, 'DIV');
			if(div2level) {L_aC(div2level, 'cursor');
				div2level.id = 'ao3AjaxTerminalGetDestinationsCursor';
				ret = false
			}
		}
	}
	return ret
}

function AO3sFDSsCancelEnter(element) {
	return !element.didSelection
}

function AO3sFGDSR(element) {
	var codeInput = L_gNSBTN(element, 'INPUT', 2)
}

function Library_getComputedStyle(el) {
	if(window.getComputedStyle) {
		return window.getComputedStyle(el, null)
	} else {
		return el.currentStyle
	}
}

function Library_isPositioned(el) {
	var position = Library_getComputedStyle(el).position;
	return (position != '') && (position != 'static')
}

function AO3s12dTerminalOnFocus(e) {
	if(!e) {
		e = window.event
	}
	if(window.terminalResetTimer) {clearTimeout(window.terminalResetTimer);
		window.terminalResetTimer = 0
	}
}

function AO3sPFGD(caller, insertedEl) {
	caller.parentNode.appendChild(insertedEl);
	if(Library_isPositioned(caller.parentNode)) {
		var top = (caller.offsetHeight) + 'px';
		var left = (caller.offsetLeft) + 'px'
	} else {
		var top = (L_gOT(caller) + caller.offsetHeight) + 'px';
		var left = L_gOL(caller) + 'px'
	}
	insertedEl.style.top = top;
	insertedEl.style.left = left;
	insertedEl.style.visibility = 'visible'
}

function AO3sFGD(input, url) {
	if(input.value == input.last) {
		return
	}
	input.last = input.value;
	var codeInput = L_gNSBTN(input, 'INPUT', 2);
	if(input.value.length <= 2) {AO3sFGDTR()
	} else {
		var formId = L_gIV(input, 'data[formId]');
		var separator = (url.indexOf('?') == -1) ? '?' : '&';
		var actionSuffix = '';
		url = url + separator + 'action=' + (GOL_Global.config.ajax.action ? GOL_Global.config.ajax.action : 'eSearchFormData') + '&data[ajax]=getDestinations' + ( formId ? '&data[formId]=' + formId : '') + '&data[string]=' + input.value + actionSuffix;
		L_aR('getDestinations', url, AO3sFGDHandler, input, 200, 1)
	}
}

function AO3sFGDHandler(httpRequest, type, ident, element) {
	if(httpRequest.readyState == 4 && LV_aR[type] == ident) {
		if(httpRequest.status == 200) {
			if((httpRequest.responseXML.getElementsByTagName('error').length > 0) || (httpRequest.responseXML.getElementsByTagName('div').length < 2)) {AO3sFGDTR();
				return
			}
			var out = httpRequest.responseText;
			var outElement = _gel('ao3AjaxTerminalGetDestinations');
			if(!outElement) {
				outElement = document.createElement('div');
				outElement.id = 'ao3AjaxTerminalGetDestinations';
				if(window.AO3sPFGD) {AO3sPFGD(element, outElement)
				} else {
					element.parentNode.appendChild(outElement)
				}
			}
			outElement.innerHTML = out + '<iframe id="ao3AjaxTerminalGetDestinationsIframe"></iframe>';
			var innerElement = L_gFCBTN(_gel('ao3AjaxTerminalGetDestinations'), 'DIV');
			innerElement.onblur = AO3s12dOnBlur;
			innerElement.onfocus = AO3s12dTerminalOnFocus;
			var variants = innerElement.getElementsByTagName('DIV');
			for(var i = 0; i < variants.length; i++) {
				variants[i].onmouseover = AO3sFGDMouseCursorOver;
				variants[i].onmouseout = AO3sFGDMouseCursorOut;
				variants[i].onclick = AO3sFGDMouseCursorSelect
			}
		} else {alert('error with searching ' + element.value)
		}
		LV_aR[type] = null;
		LV_aRO[type] = null
	}
}

function AO3sFGDMouseCursorOver(e) {
	if(!e) {
		e = window.event
	}
	var cursor = _gel('ao3AjaxTerminalGetDestinationsCursor');
	if(cursor) {
		cursor.id = null;
		L_rC(cursor, 'cursor')
	}
	this.id = 'ao3AjaxTerminalGetDestinationsCursor';
	L_aC(this, 'cursor')
}

function AO3sFGDMouseCursorOut(e) {
	if(!e) {
		e = window.event
	}
	if(this.id == 'ao3AjaxTerminalGetDestinationsCursor') {
		this.id = null;
		L_rC(this, 'cursor')
	}
}

function AO3sFGDMouseCursorSelect(e) {
	if(!e) {
		e = window.event
	}
	var code = this.innerHTML.substr(this.innerHTML.length - 4, 3);
	var label = this.innerHTML;
	var searchInput = L_gFCBTN(this.parentNode.parentNode.parentNode, 'INPUT');
	var codeInput = L_gNSBTN(searchInput, 'INPUT', 2);
	if(codeInput) {
		codeInput.value = code;
		codeInput.name = searchInput.name.substr(0, searchInput.name.length - 7) + ']';
		if(codeInput.onchange) {
			codeInput.onchange()
		}
	}
	if(searchInput) {
		searchInput.value = label;
		searchInput.didSelection = true;
		searchInput.onchange()
	}AO3sFGDTR()
}

function AO3sFGDTR() {
	var outElement = _gel('ao3AjaxTerminalGetDestinations');
	if(outElement) {
		outElement.parentNode.removeChild(outElement)
	}
	LV_aR['getDestinations'] = null;
	LV_aRO['getDestinations'] = null
}

function Library_ifsetor(path, alernative) {
	if(!alternative) {
		alternative = false
	}
	if(!path) {
		return alternative
	}
	var pars = path.split('.');
	var path = window;
	for(var i in pars) {
		if(path[pars[i]]) {
			path = path[pars[i]]
		} else
			return alternative
	}
	return path
}

function ergonomicTimeAdjustment(hash) {
	function setDateOptionsStyle(hash) {
		var strMonthYear = hash['elMonth'].value;
		var year = parseInt(strMonthYear.substring(0, 4), 10);
		var month = parseInt(strMonthYear.substring(5, 7), 10) - 1;
		var day = parseInt(hash['elDay'].value, 10);
		var today = getCurrentDate();
		for(var i = 0; i < hash['elDay'].options.length; i++) {
			var dayCheck = parseInt(hash['elDay'].options[i].value, 10);
			var checkDate = new Date(year, month, dayCheck);
			var cn = 'rightDate';
			if(checkDate.getDate() != dayCheck) {
				cn = 'inputError wrongDate'
			}
			if(checkDate < today) {
				cn = 'inputError lowDate'
			}
			hash['elDay'].options[i].className = cn
		}
		for(var i = 0; i < hash['elMonth'].options.length; i++) {
			var cn = 'rightDate';
			if(i == hash['elMonth'].selectedIndex || false) {
				var strMonthYearCheck = hash['elMonth'].options[i].value;
				var yearCheck = parseInt(strMonthYearCheck.substring(0, 4), 10);
				var monthCheck = parseInt(strMonthYearCheck.substring(5, 7), 10) - 1;
				var checkDate = new Date(yearCheck, monthCheck, day);
				if(checkDate.getDate() != day) {
					cn = 'inputError wrongDate'
				}
				if(checkDate < today) {
					cn = 'inputError lowDate'
				}
			}
			hash['elMonth'].options[i].className = cn
		}
	}

	function parseDate(hash) {
		var hour = 0;
		var minute = 0;
		if(hash['elTime']) {
			var strTime = hash['elTime'].value;
			hour = parseInt(strTime.substring(0, 2), 10);
			if(!hour) {
				hour = 0
			}
			minute = parseInt(strTime.substring(3), 10);
			if(!minute) {
				minute = 0
			}
		}
		var day = parseInt(hash['elDay'].value, 10);
		var strMonthYear = hash['elMonth'].value;
		var year = parseInt(strMonthYear.substring(0, 4), 10);
		var month = parseInt(strMonthYear.substring(5, 7), 10) - 1;
		var result = new Date(year, month, day, hour, minute);
		if(result.getDate() != day) {
			return false
		} else {
			return result
		}
	}

	function getRightDate(hash, delta) {
		if(!delta) {
			delta = 0
		}
		var hour = 0;
		var minute = 0;
		if(hash['elTime']) {
			var strTime = hash['elTime'].value;
			hour = parseInt(strTime.substring(0, 2), 10);
			if(!hour) {
				hour = 0
			}
			minute = parseInt(strTime.substring(3), 10);
			if(!minute) {
				minute = 0
			}
		}
		var day = parseInt(hash['elDay'].value, 10);
		var strMonthYear = hash['elMonth'].value;
		var year = parseInt(strMonthYear.substring(0, 4), 10);
		var month = parseInt(strMonthYear.substring(5, 7), 10) - 1;
		var result = new Date(year, month, day, hour, minute);
		var currentDate = new Date();
		if(result < currentDate) {
			result.setYear(currentDate.getYear() < 1900 ? currentDate.getYear() + 1900 : currentDate.getYear());
			result.setMonth(currentDate.getMonth());
			result.setDate(currentDate.getDate());
			result.setMonth(currentDate.getDate());
			result.setHours((result.getMinutes() ? 1 : 0) + result.getHours());
			result.setMinutes(0);
			result.setSeconds(delta)
		}
		return result
	}

	function chooseSelectOption(elSelect, optionValue) {
		for(var i = 0; i < elSelect.options.length; i++) {
			if(elSelect.options[i].value == optionValue) {
				elSelect.selectedIndex = i;
				break
			}
		}
	}

	function __onDateValid(hash) {L_rC(hash['elMonth'], 'inputError');
		L_rC(hash['elDay'], 'inputError');
		setDateOptionsStyle(hash)
	}

	function __onDateInvalid(hash) {L_aC(hash['elMonth'], 'inputError');
		L_aC(hash['elDay'], 'inputError');
		setDateOptionsStyle(hash)
	}

	function getCurrentDate() {
		var d = new Date();
		d.setHours(0);
		d.setMinutes(0);
		d.setSeconds(0);
		d.setMilliseconds(0);
		return d
	}

	function saveDate(hash) {
		if(hash['elMonth']) {
			var strYear = hash['date'].getYear();
			if(strYear < 1900) {
				strYear += 1900
			}
			var month = hash['date'].getMonth() + 1;
			var strMonth = (month < 10) ? ('0' + month) : (month);
			var s = strYear + '-' + strMonth;
			chooseSelectOption(hash['elMonth'], s)
		}
		if(hash['elDay']) {
			var strDay = hash['date'].getDate();
			chooseSelectOption(hash['elDay'], strDay)
		}
		if(hash['elTime']) {
			strHour = (hash['date'].getHours() < 10) ? ('0' + hash['date'].getHours()) : (hash['date'].getHours());
			strMinute = (hash['date'].getMinutes() < 10) ? ('0' + hash['date'].getMinutes()) : (hash['date'].getMinutes());
			var s = strHour + ':' + strMinute;
			chooseSelectOption(hash['elTime'], s)
		}setDateOptionsStyle(hash)
	}

	if(!hash['allowWrongDate'] && hash['allowWrongDate'] !== false) {
		hash['allowWrongDate'] = true
	}
	if(!hash['autoModify']) {
		hash['autoModify'] = 'from'
	}
	var _caller = hash['caller'];
	var toAdjust = 'to';
	if((((hash['elToTime']) && (hash['elToTime'] == _caller)) || hash['elToDay'] == _caller || hash['elToMonth'] == _caller) || (((hash['elToTime']) && (hash['elToTime'] == hash['elToTime'].id == _caller.id)) || hash['elToDay'].id == _caller.id || hash['elToMonth'].id == _caller.id)) {
		toAdjust = 'from'
	}
	var flagDateInvalid = false;
	var paramsFrom = new Array();
	paramsFrom['elTime'] = hash['elFromTime'];
	paramsFrom['elDay'] = hash['elFromDay'];
	paramsFrom['elMonth'] = hash['elFromMonth'];
	__onDateValid(paramsFrom);
	__onDateInvalid(paramsFrom);
	var fromDate = parseDate(paramsFrom);
	if(fromDate) {__onDateValid(paramsFrom)
	} else {
		if(!hash['allowWrongDate']) {
			paramsFrom['date'] = getRightDate(paramsFrom);
			saveDate(paramsFrom)
		} else {__onDateInvalid(paramsFrom);
			flagDateInvalid = true
		}
	}
	var paramsTo = new Array();
	paramsTo['elTime'] = hash['elToTime'];
	paramsTo['elDay'] = hash['elToDay'];
	paramsTo['elMonth'] = hash['elToMonth'];
	__onDateValid(paramsTo);
	__onDateInvalid(paramsTo);
	var toDate = parseDate(paramsTo);
	if(toDate) {__onDateValid(paramsTo)
	} else {
		if(!hash['allowWrongDate']) {
			paramsTo['date'] = getRightDate(paramsTo, hash['keepInterval']);
			saveDate(paramsTo)
		} else {__onDateInvalid(paramsTo);
			flagDateInvalid = true
		}
	}
	var currentDate = getCurrentDate();
	if(fromDate && fromDate < currentDate) {
		if(!hash['allowWrongDate'] || hash['allowWrongDate'] != 'future') {__onDateInvalid(paramsFrom);
			flagDateInvalid = true
		} else {
			var newDate = new Date;
			newDate.setHours( fromDate ? (fromDate.getMinutes() ? 1 : 0) + fromDate.getHours() : 0);
			newDate.setMinutes(0);
			newDate.setSeconds(0);
			fromDate = newDate;
			var params = new Array();
			if(hash['elFromMonth']) {
				params['elMonth'] = hash['elFromMonth']
			}
			if(hash['elFromDay']) {
				params['elDay'] = hash['elFromDay']
			}
			if(hash['elFromTime']) {
				if(hash['elFromTime'].value) {
					params['elTime'] = hash['elFromTime']
				}
			}
			params['date'] = fromDate;
			saveDate(params)
		}
	}
	if(toDate && toDate < currentDate) {
		if(!hash['allowWrongDate'] || hash['allowWrongDate'] != 'future') {__onDateInvalid(paramsTo);
			flagDateInvalid = true
		} else {
			var newDate = new Date;
			newDate.setHours( toDate ? (toDate.getMinutes() ? 1 : 0) + toDate.getHours() : 0);
			newDate.setMinutes(0);
			newDate.setSeconds(hash['keepInterval']);
			toDate = newDate;
			var params = new Array();
			if(hash['elToMonth']) {
				params['elMonth'] = hash['elToMonth']
			}
			if(hash['elToDay']) {
				params['elDay'] = hash['elToDay']
			}
			if(hash['elToTime']) {
				if(hash['elToTime'].value) {
					params['elTime'] = hash['elToTime']
				}
			}
			params['date'] = toDate;
			saveDate(params)
		}
	}
	if(flagDateInvalid) {
		return false
	}
	if(fromDate > toDate) {
		if(toAdjust == 'to') {
			if(Library_inArray(['from', 'both'], hash['autoModify'])) {
				toDate = new Date(fromDate);
				toDate.setSeconds(fromDate.getSeconds() + hash['keepInterval']);
				var params = new Array();
				if(hash['elToMonth']) {
					params['elMonth'] = hash['elToMonth']
				}
				if(hash['elToDay']) {
					params['elDay'] = hash['elToDay']
				}
				if(hash['elToTime']) {
					if(hash['elFromTime'].value) {
						params['elTime'] = hash['elToTime']
					}
				}
				params['date'] = toDate;
				saveDate(params)
			}
		} else {
			if(Library_inArray(['to', 'both'], hash['autoModify'])) {
				if((_caller == hash['elToDay']) || (_caller.id == hash['elToDay'].id)) {
					toDate.setMonth(toDate.getMonth() + 1);
					var params = new Array();
					if(hash['elToMonth']) {
						params['elMonth'] = hash['elToMonth']
					}
					if(hash['elToDay']) {
						params['elDay'] = hash['elToDay']
					}
					if(hash['elToTime']) {
						if(hash['elFromTime'].value) {
							params['elTime'] = hash['elToTime']
						}
					}
					params['date'] = toDate;
					saveDate(params);
					hash['elToMonth'].onchange()
				} else {
					var currentDate = new Date();
					fromDate = new Date(toDate);
					fromDate.setSeconds(toDate.getSeconds() - hash['keepInterval']);
					if(fromDate < currentDate) {
						fromDate = currentDate
					}
					var params = new Array();
					if(hash['elFromMonth']) {
						params['elMonth'] = hash['elFromMonth']
					}
					if(hash['elFromDay']) {
						params['elDay'] = hash['elFromDay']
					}
					if(hash['elFromTime']) {
						if(hash['elFromTime'].value) {
							params['elTime'] = hash['elFromTime']
						}
					}
					params['date'] = fromDate;
					saveDate(params)
				}
			}
		}
	}
	return true
}

function onSubmitCalendarData(hash) {
	function parseDate(hash) {
		var hour = 0;
		var minute = 0;
		if(hash['elTime']) {
			var strTime = hash['elTime'].value;
			hour = parseInt(strTime.substring(0, 2), 10);
			if(!hour) {
				hour = 0
			}
			minute = parseInt(strTime.substring(3), 10);
			if(!minute) {
				minute = 0
			}
		}
		var day = parseInt(hash['elDay'].value, 10);
		var strMonthYear = hash['elMonth'].value;
		var year = parseInt(strMonthYear.substring(0, 4), 10);
		var month = parseInt(strMonthYear.substring(5, 7), 10) - 1;
		var result = new Date(year, month, day, hour, minute);
		if(result.getDate() != day) {
			return false
		} else {
			return result
		}
	}

	function getRightDate(hash, delta) {
		if(!delta) {
			delta = 0
		}
		var hour = 0;
		var minute = 0;
		if(hash['elTime']) {
			var strTime = hash['elTime'].value;
			hour = parseInt(strTime.substring(0, 2), 10);
			if(!hour) {
				hour = 0
			}
			minute = parseInt(strTime.substring(3), 10);
			if(!minute) {
				minute = 0
			}
		}
		var day = parseInt(hash['elDay'].value, 10);
		var strMonthYear = hash['elMonth'].value;
		var year = parseInt(strMonthYear.substring(0, 4), 10);
		var month = parseInt(strMonthYear.substring(5, 7), 10) - 1;
		var result = new Date(year, month, day, hour, minute);
		var currentDate = new Date();
		if(result < currentDate) {
			result.setYear(currentDate.getYear() < 1900 ? currentDate.getYear() + 1900 : currentDate.getYear());
			result.setMonth(currentDate.getMonth());
			result.setDate(currentDate.getDate());
			result.setMonth(currentDate.getDate());
			result.setHours((result.getMinutes() ? 1 : 0) + result.getHours());
			result.setMinutes(0);
			result.setSeconds(delta)
		}
		return result
	}

	function getCurrentDate() {
		var d = new Date();
		d.setHours(0);
		d.setMinutes(0);
		d.setSeconds(0);
		d.setMilliseconds(0);
		return d
	}

	var paramsFrom = new Array();
	paramsFrom['elTime'] = hash['elFromTime'];
	paramsFrom['elDay'] = hash['elFromDay'];
	paramsFrom['elMonth'] = hash['elFromMonth'];
	var fromDate = parseDate(paramsFrom);
	if(!fromDate) {
		return 'INVALID_FROM'
	}
	if(hash['elToMonth']) {
		var paramsTo = new Array();
		paramsTo['elTime'] = hash['elToTime'];
		paramsTo['elDay'] = hash['elToDay'];
		paramsTo['elMonth'] = hash['elToMonth'];
		var toDate = parseDate(paramsTo);
		if(!toDate) {
			return 'INVALID_TO'
		}
	}
	var currentDate = getCurrentDate();
	if(fromDate < currentDate) {
		return 'LESS_FROM'
	}
	if(hash['elToMonth']) {
		if(toDate < currentDate) {
			return 'LESS_TO'
		}
		if(fromDate > toDate) {
			return 'CROSS_DATES'
		}
		if(fromDate.getTime() == toDate.getTime()) {
			return 'EQUAL_DATES'
		}
	}
	return false
}

function onReceiveCalendarData(hash) {
	function chooseSelectOption(elSelect, optionValue) {
		for(var i = 0; i < elSelect.options.length; i++) {
			if(elSelect.options[i].value == optionValue) {
				elSelect.options[i].selected = true
			}
		}
	}

	function saveDate(hash) {
		if(hash['elMonth']) {
			var strYear = hash['date'].getYear();
			if(strYear < 1900) {
				strYear += 1900
			}
			var month = hash['date'].getMonth() + 1;
			var strMonth = (month < 10) ? ('0' + month) : (month);
			var s = strYear + '-' + strMonth;
			chooseSelectOption(hash['elMonth'], s)
		}
		if(hash['elDay']) {
			var strDay = hash['date'].getDate();
			chooseSelectOption(hash['elDay'], strDay)
		}
		if(hash['elTime']) {
			strHour = (hash['date'].getHours() < 10) ? ('0' + hash['date'].getHours()) : (hash['date'].getHours());
			strMinute = (hash['date'].getMinutes() < 10) ? ('0' + hash['date'].getMinutes()) : (hash['date'].getMinutes());
			var s = strHour + ':' + strMinute;
			chooseSelectOption(hash['elTime'], s)
		}
	}

	var params = new Array();
	params['elMonth'] = hash['elMonthYear'];
	params['elDay'] = hash['elDay'];
	params['date'] = new Date(hash['selectedYear'], hash['selectedMonth'] - 1, hash['selectedDay'], 0, 0, 0);
	saveDate(params);
	hash['elMonthYear'].onchange()
}

function ShowCalendar(hash) {
	var popHeight = 220;
	if(!hash['months']) {
		hash['months'] = 2
	}
	if(!hash['windowWidth']) {
		hash['windowWidth'] = 220
	}
	if(!hash['windowHeight']) {
		hash['windowHeight'] = 220 + 152 * (hash['months'] - 1)
	}
	if(!hash['windowXCoord']) {
		hash['windowXCoord'] = 0
	}
	if(!hash['windowYCoord']) {
		hash['windowYCoord'] = 0
	}
	hash['maxMonth'] = hash['maxMonth'] ? ('&maxMonth=' + hash['maxMonth']) : '';
	if(true) {
		hash['url'] = GOL_Global.config.url + '?action=eCalendarData&frame=calendar&months=' + hash['months'] + '&defDay=' + hash['elDay'].value + '&defMonth=' + hash['elMonthYear'].value + hash['maxMonth']
	}
	window.open(hash['url'], "", "toolbar=no,scrollbars=no,location=no,status=no,width=" + hash['windowWidth'] + ",height=" + hash['windowHeight'] + ",resizable=0,screenX=" + hash['windowXCoord'] + ",screenY=" + hash['windowYCoord']);
	window.showCalendarParams = hash;
	window.onReceiveCalendarData = onReceiveCalendarData
}

function getDivFormButton(trida) {
	var divs = document.getElementsByTagName('div');
	if(!trida) {
		trida = 'GOL_formButtons'
	}
	var pred = null;
	for(var i = 0; i < divs.length; i++) {
		if(divs[i].className == trida) {
			pred = divs[i]
		}
	}
	return pred
}

function AO3sF2sOMHA() {
	window.pokus = _gel('header')
}

function AO3s12tLH(e) {
	if(!e) {
		e = window.event
	}
	var count = parseInt(this.value);
	if(isNaN(count)) {
		count = 0
	}
	var minI = Math.min(count, this.oldValue);
	var maxI = Math.max(count, this.oldValue);
	for(var i = minI; i < maxI; i++) {
		var itemTraveler = _gel('AO3_StepOne2_travelers' + i);
		if(itemTraveler) {
			itemTraveler.parentNode.style.display = (i < count) ? 'block' : 'none';
			if(i < count) {
				for(var o = 0; o < itemTraveler.options.length; o++) {
					if(itemTraveler.options[o].value == GOL_Global.config.defaultTravelerType) {
						itemTraveler.selectedIndex = o;
						break
					}
				}
			}
			itemTraveler.disabled = (i >= count)
		}
	}
	if(count < 1) {L_aC(this, 'userError');
		return
	} else {L_rC(this, 'userError')
	}
	this.oldValue = count
}

function AO3s12SHA() {
	var inputs = new Array('returnTicketYes', 'returnTicketNo', 'returnTicketMulti');
	var destins = new Array('origin', 'destination');
	var destinsClasses = new Array('GOL_origin', 'GOL_destination');
	var ways = new Array('arrival', 'departure');
	var seasons = new Array('Time', 'Day', 'Month', '');
	var dateVariants = new Array('Exact', 'Close', 'Weekend');
	GOL_Global.config.sColl.segmentsBox = _gel('segmentsBox');
	while(GOL_Global.config.sColl.segmentsBox && GOL_Global.config.sColl.segmentsBox.tagName != "FORM")
	GOL_Global.config.sColl.segmentsBox = GOL_Global.config.sColl.segmentsBox.parentNode;
	GOL_Global.config.sColl.returnTicketHidden = _gel('AO3_StepOne2_returnTicketHidden');
	GOL_Global.config.sColl.returnType = GOL_Global.config.sColl.returnTicketHidden ? GOL_Global.config.sColl.returnTicketHidden.value : 'on';
	for(var i in inputs) {
		var inp = _gel('AO3_StepOne2_' + inputs[i]);
		if(inp) {
			GOL_Global.config.sColl[inputs[i]] = inp;
			if((inputs[i] == 'returnTicketMulti') && _gel('main-iframe')) {
				inp.onclick = AO3stepOne2MultipleIframeRedirect
			} else {
			}
		}
	}
	var inp = _gel('AO3_StepOne2_searchType');
	if(inp) {
		GOL_Global.config.sColl.searchType = inp
	}
	for(var i = 0; i < GOL_Global.config.sColl.count; i++) {
		GOL_Global.config.sColl['segment' + i] = _gel('AO3_StepOne2_flightSegment_' + i + 'Div');
		var seg = GOL_Global.config.sColl['segment' + i];
		if(!seg) {
			continue
		}
		for(wayIndex in destins) {
			var way = destins[wayIndex];
			var wayClass = destinsClasses[wayIndex];
			var dest = _gel('AO3_StepOne2_' + way + '_' + i);
			if(dest) {
				dest.counter = i;
				dest.way = way;
				dest.setValue = AO3s12SDSVH;
				dest.getValue = AO3s12SDGVH;
				seg[way] = dest;
				if(dest.tagName == 'SELECT') {
					var inp = document.createElement('input');
					inp.style.display = 'none';
					inp.className = wayClass + " GOL_inputText";
					inp.name = dest.name.substring(0, dest.name.indexOf("[flights]")) + "[flights][" + i + "][" + way + "Search]";
					inp.id = 'AO3_StepOne2_' + way + 'Hidden_' + i;
					inp.counter = i;
					inp.setValue = AO3s12SDSVH;
					inp.getValue = AO3s12SDGVH;
					inp.lastSearchValue = '';
					inp.lastExactValue = '';
					if(window.AO3s12dElHandlerAddInput) {AO3s12dElHandlerAddInput(inp, way)
					}
					dest.parentNode.insertBefore(inp, dest);
					dest.hiddenInput = inp
				}
				if(window.AO3s12dElHandlerAdd) {AO3s12dElHandlerAdd(dest)
				}
				dest.lastSearchValue = dest.getValue(false);
				dest.lastExactValue = dest.getValue(true)
			}
			if(i >= 1) {
				GOL_Global.config.sColl['segment'+(i-1)][way == 'destination' ? 'origin' : 'destination'].changesTarget = dest
			}
			var el = _gel('AO3_StepOne2_' + way + 'Button_' + i);
			if(el) {
				seg[way + 'Button'] = el
			}
			var el = _gel('AO3_StepOne2_' + way + 'Range_' + i);
			if(el) {
				el.onclick = AO3s12DRH;
				seg[way + 'Range'] = el
			}
		}
		for(var wayId in ways) {
			var way = ways[wayId];
			for(var seasonId in seasons) {
				var season = seasons[seasonId];
				var ePart = _gel('AO3_StepOne2_' + way + season + '_' + i);
				if(ePart) {
					ePart.way = way;
					ePart.season = season;
					ePart.counter = i;
					ePart.onchange = AO3s12cTH;
					seg[way + season] = ePart
				}
			}
			var eCalendar = _gel('AO3_StepOne2_' + way + 'Calendar_' + i);
			if(eCalendar) {
				seg[way + 'Calendar'] = eCalendar;
				eCalendar.way = way;
				eCalendar.counter = i
			}
			var el = _gel('AO3_StepOne2_' + way + 'PlusMinusDay_' + i);
			if(el) {
				el.onchange = AO3s12PMDH;
				seg[way + 'PlusMinusDay'] = el
			}
		}
	}
	for(var i in dateVariants) {
		var inp = _gel('AO3_StepOne2_Date' + dateVariants[i]);
		if(inp) {
			inp.onclick = AO3s12dVH;
			if(!GOL_Global.config.sColl.dateVariants)
				GOL_Global.config.sColl.dateVariants = new Array();
			GOL_Global.config.sColl.dateVariants.push(inp)
		}
	}
	if(GOL_Global.config.sColl.segmentsBox) {
		if(L_hC(GOL_Global.config.sColl.segmentsBox, 'oneWaySegments'))
			L_rC(GOL_Global.config.sColl.segmentsBox, 'oneWaySegments');
		if(L_hC(GOL_Global.config.sColl.segmentsBox, 'GOL_returnSegments'))
			L_rC(GOL_Global.config.sColl.segmentsBox, 'GOL_returnSegments');
		if(L_hC(GOL_Global.config.sColl.segmentsBox, 'multipleSegments'))
			L_rC(GOL_Global.config.sColl.segmentsBox, 'multipleSegments');
		GOL_Global.config.sColl.segmentsBox.defaultClass = GOL_Global.config.sColl.segmentsBox.className
	}AO3s12RTH()
}

function AO3stepOne2MultipleIframeRedirect() {
	var b = _gel('AO3_StepOne2_buttonContinue');
	if(b) {
		b.name = 'stepOne';
		window.notCheck = true;
		b.click()
	}
}

function AO3s12SetA(el, active) {
	var elDiv = el.id ? document.getElementById(el.id + 'Div') : el.parentNode;
	if(elDiv) {
		if(active)
			L_rC(elDiv, 'unusedItem');
		else
			L_aC(elDiv, 'unusedItem')
	}
}

function AO3s12SetD(el, active) {
	var elDiv = el.id ? _gel(el.id + 'Div') : el.parentNode;
	if(elDiv) {
		elDiv.style.display = active ? 'block' : 'none'
	}
}

function AO3s12PMDH() {
}

function AO3s12DRH() {AO3s12SetA(this, this.checked && !this.disabled)
}

function AO3s12dVH() {
	if(!GOL_Global.config.sColl.dateVariants)
		return false;
	var val = false;
	var dv = GOL_Global.config.sColl.dateVariants;
	for(var i = 0; i < dv.length; i++) {AO3s12SetA(dv[i], dv[i].checked && !dv[i].disabled);
		if(dv[i].checked)
			val = dv[i].value
	}
	if((!GOL_Global.config.sColl.searchType) || (GOL_Global.config.sColl.searchType.options[GOL_Global.config.sColl.searchType.selectedIndex].value != 'FromFour') || (GOL_Global.config.sColl.returnType != 'on')) {
		return true
	}
	var pmDayDisable = true;
	var rangeDisable = true;
	var timeDisable = true;
	var arrivalDateDisable = false;
	switch(val) {
		case'close':
			rangeDisable = false;
			pmDayDisable = false;
			timeDisable = false;
			break;
		case'weekend':
			arrivalDateDisable = true;
			break;
		case'exact':
		default:
			rangeDisable = false;
			timeDisable = false;
			break
	}
	var ways = new Array('arrival', 'departure');
	var destins = new Array('origin', 'destination');
	var formats = new Array('', 'Day', 'Month');
	for(var i = 0; i < GOL_Global.config.sColl.count; i++) {
		var seg = GOL_Global.config.sColl['segment' + i];
		if(i > 0) {
			for(var iFormat = 0; iFormat < formats.length; iFormat++) {
				if(seg['departure' + formats[iFormat]]) {
					seg['departure' + formats[iFormat]].disabled = arrivalDateDisable
				}
			}
		}
		for(var iWay = 0; iWay < ways.length; iWay++) {
			var way = ways[iWay];
			if(seg[way + 'PlusMinusDay']) {
				seg[way + 'PlusMinusDay'].disabled = pmDayDisable;
				AO3s12SetA(seg[way + 'PlusMinusDay'], !pmDayDisable)
			}
			if(seg[way + 'Time']) {
				seg[way + 'Time'].disabled = timeDisable
			}
		}
		for(var iDest = 0; iDest < destins.length; iDest++) {
			var dest = destins[iDest];
			if(seg[dest + 'Range'])
				seg[dest + 'Range'].disabled = rangeDisable
		}
	}
}

function AO3s12fOE(val) {
	var ways = new Array('arrival', 'departure');
	var destins = new Array('origin', 'destination');
	for(var i = 0; i < GOL_Global.config.sColl.count; i++) {
		var seg = GOL_Global.config.sColl['segment' + i];
		for(var iWay = 0; iWay < ways.length; iWay++) {
			var way = ways[iWay];
			if(seg[way + 'PlusMinusDay'])
				seg[way + 'PlusMinusDay'].disabled = !val
		}
		for(var iDest = 0; iDest < destins.length; iDest++) {
			var dest = destins[iDest];
			if(seg[dest + 'Range'])
				seg[dest + 'Range'].disabled = !val
		}
	}
	if(GOL_Global.config.sColl.dateVariants) {
		for(var i = 0; i < GOL_Global.config.sColl.dateVariants.length; i++) {
			GOL_Global.config.sColl.dateVariants[i].disabled = !val
		}
	}AO3s12dVH()
}

function AO3s12fOS(val) {
	var ways = new Array('arrival', 'departure');
	var destins = new Array('origin', 'destination');
	for(var i = 0; i < GOL_Global.config.sColl.count; i++) {
		var seg = GOL_Global.config.sColl['segment' + i];
		for(var iWay = 0; iWay < ways.length; iWay++) {
			var way = ways[iWay];
			if(seg[way + 'PlusMinusDay'])
				AO3s12SetD(seg[way + 'PlusMinusDay'], val)
		}
		for(var iDest = 0; iDest < destins.length; iDest++) {
			var dest = destins[iDest];
			if(seg[dest + 'Range'])
				AO3s12SetD(seg[dest + 'Range'], val)
		}
	}
	var elDiv = _gel('AO3_StepOne2_DateVariantsDiv');
	if(elDiv) {
		elDiv.style.display = val ? 'block' : 'none'
	}
}

function AO3s12SDSVH(searchValue, exactValue, udelej) {
	var suc = false;
	if(this.tagName == 'SELECT') {
		for(var index = 0; index < this.options.length; index++) {
			if(((exactValue || exactValue == '') && this.options[index].value == exactValue)) {
				if(udelej) {
					this.selectedIndex = index
				}
				suc = true;
				break
			}
			var val = this.options[index].innerHTML;
			val = (val.indexOf(' (') > 0) ? val.substring(0, val.indexOf(' (')) : val;
			if(val.toUpperCase() == searchValue.toUpperCase()) {
				if(udelej) {
					this.selectedIndex = index
				}
				suc = true;
				break
			}
		}
		if(!suc && udelej) {
			this.selectedIndex = 0
		}
	} else {
		suc = (this.value != searchValue);
		if(udelej) {
			this.value = searchValue
		}
		if(this.valueTarget) {
			suc = (this.valueTarget.value == exactValue);
			if(udelej) {
				this.valueTarget.value = exactValue
			}
		}
	}
	if(udelej) {
		if(udelej == 'event') {
			this.onchange();
			if(this.valueTarget && this.valueTarget.onchange) {
				this.valueTarget.onchange()
			}
		}
	}
	return suc
}

function AO3s12SDGVH(exactValue) {
	var suc = false;
	if(this.tagName == 'SELECT') {
		if(exactValue) {
			suc = this.options[this.selectedIndex].value
		} else {
			suc = this.options[this.selectedIndex].innerHTML
		}
	} else {
		if(exactValue) {
			suc = this.valueTarget ? this.valueTarget.value : false
		} else {
			suc = this.value
		}
	}
	return suc
}

function AO3s12SDCH() {
	var searc = this.getValue(false);
	var exact = this.getValue(true);
	if((searc == this.lastSearchValue) && (exact == this.lastExactValue) && (this.propagation != 'force')) {
		return false
	}
	if(this.changesTarget && this.propagation) {
		if(this.propagation == 'force') {
			this.changesTarget.didSelection = this.didSelection;
			this.changesTarget.setValue(searc, exact, 'event')
		}
		if((this.propagation == 'soft') && (this.lastSearchValue == this.changesTarget.getValue(false)) && (this.lastExactValue == this.changesTarget.getValue(true))) {
			this.changesTarget.didSelection = this.didSelection;
			this.changesTarget.setValue(searc, exact, 'event')
		}
		this.waitForAjax = !this.didSelection
	}
	this.lastSearchValue = searc;
	this.lastExactValue = exact;
	return true
}

function AO3s12SDKUH() {
	this.cal = 'key';
	this.onchange();
	if(this.way == 'destination') {
		var col = GOL_Global.config.sColl['segment' + (parseInt(this.counter) + 1)];
		if(col && (GOL_Global.config.sColl.returnTicket == 'multi')) {
			var val = new String(this.value);
			if((col.style.display == 'none') && (val.length > 0)) {
				col.style.display = 'block'
			} else {
				if((col.style.display != 'none') && (val.length == 0) && (this.counter >= 2)) {
					var emp = true;
					for(var i = this.counter + 1; i < GOL_Global.config.sColl.count; i++) {
						if((GOL_Global.config.sColl['segment' + i].origin) && (GOL_Global.config.sColl['segment' + i].origin.value != '')) {
							emp = false;
							break
						}
						if((GOL_Global.config.sColl['segment' + i].destination) && (GOL_Global.config.sColl['segment' + i].destination.value != '')) {
							emp = false;
							break
						}
					}
					if(emp) {
						col.style.display = 'none'
					}
				}
			}
		}
	}
}

function AO3stepOne2SegmentDestinationBlurHandler() {
	if(this.counter > 2) {
		GOL_Global.config.sColl['segment' + (parseInt(this.counter) - 1)].destination.onkeyup()
	}
}

function AO3s12gCH(e) {
	if(!e) {
		e = window.event
	}
	var params = new Array();
	params['elDay'] = _gel('AO3_StepOne2_' + this.way + 'Day_' + this.counter);
	params['elMonthYear'] = _gel('AO3_StepOne2_' + this.way + 'Month_' + this.counter);
	params['maxMonth'] = 'plus12';
	ShowCalendar(params);
	return false
}

function AO3s12cTH() {AO3stepOne2checkTime(true, this);
	AO3stepOne2checkTime(false, this)
}

function AO3stepOne2checkTime(incr, el) {
	var params = new Array();
	var lastCheck = 'toTime';
	if(!incr) {
		var colTo = GOL_Global.config.sColl['segment' + el.counter];
		var colFrom = colTo;
		var wayTo = el.way;
		var wayFrom = ((!GOL_Global.config.sColl['segment'+el.counter]['arrivalMonth']) || ((wayTo == 'arrival') && (GOL_Global.config.sColl['segment'+el.counter]['departureMonth']))) ? 'departure' : 'arrival';
		if(wayFrom == wayTo) {
			if(el.counter - 1 < 0) {
				return false
			} else
				colFrom = GOL_Global.config.sColl['segment' + (el.counter - 1)]
		}
		var nextCheck = colFrom[wayFrom + el.season]
	} else {
		var colFrom = GOL_Global.config.sColl['segment' + el.counter];
		var colTo = colFrom;
		var wayFrom = el.way;
		var wayTo = ((!GOL_Global.config.sColl['segment'+el.counter]['departureMonth']) || ((wayFrom == 'departure') && (GOL_Global.config.sColl['segment'+el.counter]['arrivalMonth']))) ? 'arrival' : 'departure';
		if(wayFrom == wayTo) {
			if(el.counter + 1 >= GOL_Global.config.sColl.count) {
				return false
			} else
				colTo = GOL_Global.config.sColl['segment' + (el.counter + 1)]
		}
		var nextCheck = colTo[wayTo + el.season]
	}
	switch(lastCheck) {
		case'toTime':
			params['elToTime'] = colTo[wayTo + 'Time'];
		case'toDay':
			params['elToDay'] = colTo[wayTo + 'Day'];
			if(!params['elToDay'])
				return true;
		case'toMonth':
			params['elToMonth'] = colTo[wayTo + 'Month'];
			if(!params['elToMonth'])
				return true;
		case'fromTime':
			params['elFromTime'] = colFrom[wayFrom + 'Time'];
		case'fromDay':
			params['elFromDay'] = colFrom[wayFrom + 'Day'];
			if(!params['elFromDay'])
				return true;
		case'fromMonth':
			params['elFromMonth'] = colFrom[wayFrom + 'Month'];
			if(!params['elFromMonth'])
				return true;
		default:
			break
	}
	params['keepInterval'] = 3600 * 24 * 1;
	params['allowWrongDate'] = true;
	params['autoModify'] = GOL_Global.config.sColl.returnTicket == 'multi' ? 'none' : 'from';
	params['caller'] = el;
	ergonomicTimeAdjustment(params);
	AO3stepOne2checkTime(incr, nextCheck);
	return true
}

function AO3s12bDH(e) {
	if(!e) {
		e = window.event
	}
	var b = _gel('AO3_StepOne2_bContinue');
	if(b) {
		b.name = this.name;
		window.notCheck = true;
		b.click()
	}
}

function AO3s12FOH() {
	if(window.notCheck) {
		window.notCheck = false;
		return true
	}
	var ven = _gel('AO3_StepOne2_vendor');
	var st = _gel('AO3_StepOne2_searchType');
	if(st && (st.options[st.selectedIndex].value == 'FareDisplay') && (ven.options[ven.selectedIndex].value.substr(0, 2) == '/*')) {alert(GOL_Global.config.fareDisplayWithFlightUnion);
		return false
	}
	var eCount = 0;
	if(GOL_Global.config.sColl.returnTicket == '') {
		eCount = 1
	}
	if(GOL_Global.config.sColl.returnTicket == 'on') {
		eCount = 2;
		GOL_Global.config.sColl.segment1.origin.disabled = false;
		GOL_Global.config.sColl.segment1.destination.disabled = false
	}
	if(GOL_Global.config.sColl.returnTicket == 'multi') {
		eCount = GOL_Global.config.sColl.count;
		var col = GOL_Global.config.sColl['segment' + (eCount - 1)];
		while((!col || (col.destination.value == '')) && (eCount >= 1)) {
			eCount--;
			col = GOL_Global.config.sColl['segment' + (eCount - 1)]
		}
		if(eCount <= 0) {alert(GOL_Global.config.minimalFlightSegmentForMulti);
			return false
		}
	}
	var lastCheck = 'toTime';
	for(var iCount = 0; iCount < eCount; iCount++) {
		var origin = _gel('AO3_StepOne2_origin_' + iCount);
		if(origin) {
			var val = '';
			if(origin.tagName == 'INPUT') {
				val = origin.value
			}
			if(origin.tagName == 'SELECT') {
				val = origin.options[origin.selectedIndex].value
			}
			if(val == '') {strForNthFlight(GOL_Global.config.noOriginFilled, iCount);
				return false
			}
		} else {
		}
		var destin = _gel('AO3_StepOne2_destination_' + iCount);
		if(destin) {
			var val = '';
			if(destin.tagName == 'INPUT') {
				val = destin.value
			}
			if(destin.tagName == 'SELECT') {
				val = destin.options[destin.selectedIndex].value
			}
			if(val == '') {strForNthFlight(GOL_Global.config.noDestinationFilled, iCount);
				return false
			}
		} else {
		}
		var colFrom = GOL_Global.config.sColl['segment' + iCount];
		var colTo = GOL_Global.config.sColl['segment' + (1 + iCount)];
		var wayFrom = 'departure';
		var wayTo = 'departure';
		var params = new Array;
		if(colFrom[wayFrom + 'Month']) {
			switch(lastCheck) {
				case'toTime':
					params['elToTime'] = (iCount + 1 == eCount) ? null : colTo[wayTo + 'Time'];
				case'toDay':
					params['elToDay'] = (iCount + 1 == eCount) ? null : colTo[wayTo + 'Day'];
				case'toMonth':
					params['elToMonth'] = (iCount + 1 == eCount) ? null : colTo[wayTo + 'Month'];
				case'fromTime':
					params['elFromTime'] = colFrom[wayFrom + 'Time'];
				case'fromDay':
					params['elFromDay'] = colFrom[wayFrom + 'Day'];
				case'fromMonth':
					params['elFromMonth'] = colFrom[wayFrom + 'Month'];
				default:
					break
			}
			switch(onSubmitCalendarData(params)) {
				case'INVALID_FROM':
				case'INVALID_TO':
					alert(GOL_Global.config.invalidDate);
					return false;
				case'LESS_FROM':
				case'LESS_TO':
					alert(GOL_Global.config.lessDate);
					return false;
				case'CROSS_DATES':
					alert(GOL_Global.config.crossDates);
					return false;
				default:
					break
			}
		} else {
			var ways = ['departure', 'arrival'];
			for(var iway in ways) {
				var elDate = document.getElementById('AO3_StepOne2_' + ways[iway] + '_' + iCount);
				if(elDate) {
					var valid = elDate.validate();
					if(valid) {
						if(GOL_Global.config.showDateCorrection) {
							var res = confirm(GOL_Global.config.replaceInvalidDate + ': ' + elDate.value + " -> " + valid);
							if(res)
								elDate.value = valid;
							else
								return false
						} else {alert(GOL_Global.config.invalidDate);
							return false
						}
					}
					elDate.valueDate = Library_getHumanToDate(elDate.value, elDate);
					if(Library_getMinimalDate() && elDate.valueDate < Library_getMinimalDate()) {alert(GOL_Global.config.lessDate);
						return false
					}
					if(Library_getMaximumDate() && elDate.valueDate > Library_getMaximumDate()) {alert(GOL_Global.config.invalidDate);
						return false
					}
					var val = '';
					var destin = _gel('AO3_StepOne2_destination_' + (iCount * 1 + 1));
					if(destin) {
						var val = '';
						if(destin.tagName == 'INPUT')
							val = destin.value;
						if(destin.tagName == 'SELECT')
							val = destin.options[destin.selectedIndex].value
					}
					if(elDate.nextCalendar && val && GOL_Global.config.sColl.returnType != '') {
						elDate.nextCalendar.valueDate = Library_getHumanToDate(elDate.nextCalendar.value, elDate.nextCalendar);
						if(elDate.valueDate > elDate.nextCalendar.valueDate) {
							if(GOL_Global.config.showDateCorrection) {
								var delta = 1;
								var newDate = new Date(elDate.valueDate.getFullYear(), elDate.valueDate.getMonth(), elDate.valueDate.getDate() * 1 + delta);
								var res = confirm(GOL_Global.config.crossDates + ': ' + elDate.value + " -> " + valid);
								if(res)
									elDate.nextCalendar.value = Library_getDateToHuman(newDate, elDate.format);
								else
									return false
							} else {alert(GOL_Global.config.crossDates);
								return false
							}
						}
					}
				}
			}
		}
	}
	var travelers = _gel('AO3_StepOne2_travelersCount');
	if(travelers) {
		for(var i = 0; i < travelers.options[travelers.selectedIndex].value; i++) {
			var trav = _gel('AO3_StepOne2_travelers' + i);
			if(trav.options[trav.selectedIndex].value == '') {alert(GOL_Global.config.notFilledTravelerType);
				return false
			}
		}
		GOL_Global.customer.check()
	} else {
		var travCount = new Array();
		var travType = new Array('ADT', 'CHD', 'INF', 'YTH', 'YCD');
		var travTypeForINF = new Array('ADT', 'YTH', 'YCD');
		var countTrav = 0;
		var countType = 0;
		var hasOptions = false;
		for(var iTT in travType) {
			var eTT = _gel('AO3_StepOne2_travelersCount' + travType[iTT]);
			travCount[travType[iTT]] = eTT ? eTT.options[eTT.selectedIndex].value * 1 : 0;
			if(eTT)
				hasOptions = true;
			if(travCount[travType[iTT]]) {
				countTrav += travCount[travType[iTT]];
				countType++
			}
		}
		if(hasOptions) {
			if(travCount['INF']) {
				for(var iTT in travTypeForINF) {
					travCount['INF'] -= travCount[travTypeForINF[iTT]]
				}
			}
			if(countTrav == 0) {alert(GOL_Global.config.noTravelerSelected);
				return false
			}
			if(countTrav > 9) {alert(GOL_Global.config.TooManyTravelers);
				return false
			}
			if(countType > 4) {alert(GOL_Global.config.TooManyTravelerTypes);
				return false
			}
			if(travCount['INF'] > 0) {alert(GOL_Global.config.InfantsWithoutCompany);
				return false
			}
		}
	}
	return true
}

function strForNthFlight(val, index) {
	var str = new String(val);
	if(str.substr(str.length - 1) == '.') {
		str = str.substr(0, str.length - 1)
	}alert(str + ' ' + GOL_Global.config.inAry + ' ' + (1 + index) + '' + GOL_Global.config.nthFlightSegment)
}

function AO3s12STSToReadOnly(val, exclude) {
	var orig = _gel('AO3_StepOne2_searchType');
	var el = _gel('AO3_StepOne2_fakeSearchType');
	if(!orig) {
		return false
	}
	var lastVal = GOL_Global.config.sColl.searchType.options[GOL_Global.config.sColl.searchType.selectedIndex].value;
	if(!el) {
		el = document.createElement('select');
		el.setAttribute('id', 'AO3_StepOne2_fakeSearchType');
		el.className = 'GOL_searchType GOL_inputText';
		el.onchange = AO3s12RTH;
		orig.parentNode.appendChild(el)
	}
	el.innerHTML = '';
	for(var i = 0; i < orig.length; i++) {
		if((exclude && (orig.options[i].value != val)) || (!exclude && (orig.options[i].value == val))) {
			var klon = orig.options[i].cloneNode(true);
			el.appendChild(klon)
		}
	}
	for(var i = 0; i < el.length; i++) {
		if(el.options[i].value == lastVal) {
			el.selectedIndex = i;
			break
		}
	}
	if(val) {
		el.style.display = 'inline';
		el.disabled = false;
		el.name = 'data[searchType]';
		orig.style.display = 'none';
		orig.disabled = true;
		orig.name = 'fake';
		GOL_Global.config.sColl.searchType = el
	} else {
		el.parentNode.removeChild(el);
		orig.style.display = 'inline';
		orig.disabled = false;
		orig.name = 'data[searchType]';
		GOL_Global.config.sColl.searchType = orig
	}
}

function AO3s12RTH() {
	var segClass = '';
	if((GOL_Global.config.sColl.returnTicketNo && GOL_Global.config.sColl.returnTicketNo.checked) || (!GOL_Global.config.sColl.returnTicketNo && GOL_Global.config.sColl.returnTicket == '')) {
		GOL_Global.config.sColl['segment0']['origin'].propagation = 'force';
		GOL_Global.config.sColl['segment0']['destination'].propagation = 'force';
		for(var k = 1; k < GOL_Global.config.sColl.count; k++) {
			GOL_Global.config.sColl['segment' + k].style.display = 'none';
			GOL_Global.config.sColl['segment'+k]['origin'].propagation = false;
			GOL_Global.config.sColl['segment'+k]['destination'].propagation = false;
			GOL_Global.config.sColl['segment'+k]['origin'].setValue('', '', 'event');
			GOL_Global.config.sColl['segment'+k]['destination'].setValue('', '', 'event')
		}
		var col = GOL_Global.config.sColl['segment' + (parseInt(this.counter) + 1)];
		if(GOL_Global.config.sColl.returnType == 'multi') {AO3s12STSToReadOnly(false, true)
		}
		GOL_Global.config.sColl.returnType = false;
		segClass = 'oneWay'
	}
	if((GOL_Global.config.sColl.returnTicketYes && GOL_Global.config.sColl.returnTicketYes.checked) || (!GOL_Global.config.sColl.returnTicketYes && GOL_Global.config.sColl.returnTicket == 'on')) {
		GOL_Global.config.sColl['segment0']['origin'].propagation = 'force';
		GOL_Global.config.sColl['segment0']['destination'].propagation = 'force';
		for(var k = 1; k < GOL_Global.config.sColl.count; k++) {
			GOL_Global.config.sColl['segment' + k].style.display = (k == 1) ? 'block' : 'none';
			GOL_Global.config.sColl['segment'+k]['origin'].propagation = false;
			GOL_Global.config.sColl['segment'+k]['destination'].propagation = false;
			GOL_Global.config.sColl['segment'+k]['origin'].setValue('', '', 'event');
			GOL_Global.config.sColl['segment'+k]['destination'].setValue('', '', 'event')
		}
		GOL_Global.config.sColl.segment1.origin[GOL_Global.config.sColl.segment1.origin.tagName == 'SELECT' ? 'disabled' : 'readOnly'] = true;
		GOL_Global.config.sColl.segment1.destination[GOL_Global.config.sColl.segment1.destination.tagName == 'SELECT' ? 'disabled' : 'readOnly'] = true;
		GOL_Global.config.sColl.segment1.originButton.style.display = 'none';
		GOL_Global.config.sColl.segment1.destinationButton.style.display = 'none';
		if(GOL_Global.config.sColl.returnType == 'multi') {AO3s12STSToReadOnly('LowFare', true)
		}
		GOL_Global.config.sColl.returnType = 'on';
		GOL_Global.config.sColl.segment0.origin.onchange();
		GOL_Global.config.sColl.segment0.destination.onchange();
		segClass = 'GOL_return'
	}
	if((GOL_Global.config.sColl.returnTicketMulti && GOL_Global.config.sColl.returnTicketMulti.checked) || (!GOL_Global.config.sColl.returnTicketMulti && GOL_Global.config.sColl.returnTicket == 'multi')) {
		var elSeg = GOL_Global.config.sColl.segmentsBox;
		if(elSeg) {
			elSeg.className = elSeg.defaultClass + ' multipleSegments'
		}
		var hide = true;
		if(GOL_Global.config.sColl.returnType === false || GOL_Global.config.sColl.returnType == 'on') {
			for(var resetCounter = 8; resetCounter >= 2; resetCounter--) {
				if(GOL_Global.config.sColl['segment' + resetCounter]) {
					GOL_Global.config.sColl['segment'+resetCounter]['origin'].setValue('', '', true)
				}
				GOL_Global.config.sColl['segment'+(resetCounter-1)]['destination'].setValue('', '', 'event')
			}
		}
		for(var k = GOL_Global.config.sColl.count - 1; k >= 1; k--) {
			if(hide) {
				if(((GOL_Global.config.sColl['segment' + k].origin) && (GOL_Global.config.sColl['segment' + k].origin.value)) || ((GOL_Global.config.sColl['segment' + k].originSearch) && (GOL_Global.config.sColl['segment' + k].originSearch.value))) {
					hide = false
				}
				if(((GOL_Global.config.sColl['segment' + k].destination) && (GOL_Global.config.sColl['segment' + k].destination.value)) || ((GOL_Global.config.sColl['segment' + k].destinationSearch) && (GOL_Global.config.sColl['segment' + k].destinationSearch.value))) {
					hide = false;
					GOL_Global.config.sColl['segment' + k].origin.disabled = false
				}
				if(k <= 1) {
					hide = false
				}
			}
			GOL_Global.config.sColl['segment' + k].style.display = hide ? 'none' : 'block';
			if(!hide) {
				var way = 'destination';
				if(GOL_Global.config.sColl['segment'+k][way].tagName == "INPUT") {
					GOL_Global.config.sColl['segment'+k][way].didSelection = true;
					GOL_Global.config.sColl['segment'+k][way].onchange();
					GOL_Global.config.sColl['segment'+k][way].AO3s12SDKUH()
				} else {
					GOL_Global.config.sColl['segment'+k][way].onchange();
					GOL_Global.config.sColl['segment'+k][way].AO3s12SDKUH()
				}
			}
		}
		for(var k = 0; k < GOL_Global.config.sColl.count; k++) {
			GOL_Global.config.sColl['segment'+k]['origin'].propagation = false;
			GOL_Global.config.sColl['segment'+k]['destination'].propagation = (k - 1 >= GOL_Global.config.sColl.count) ? false : 'soft'
		}
		if(GOL_Global.config.sColl.returnType === false || GOL_Global.config.sColl.returnType == 'on') {
		} else {
			GOL_Global.config.sColl['segment2']['origin'].setValue(GOL_Global.config.sColl['segment1']['destination'].getValue(false), GOL_Global.config.sColl['segment1']['destination'].getValue(true), 'set');
			GOL_Global.config.sColl['segment2']['origin'].lastSearchValue = GOL_Global.config.sColl['segment1']['destination'].getValue(false);
			GOL_Global.config.sColl['segment2']['origin'].lastExactValue = GOL_Global.config.sColl['segment1']['destination'].getValue(true)
		}
		GOL_Global.config.sColl.segment1.origin[GOL_Global.config.sColl.segment1.origin.tagName == 'SELECT' ? 'disabled' : 'readOnly'] = false;
		GOL_Global.config.sColl.segment1.destination[GOL_Global.config.sColl.segment1.destination.tagName == 'SELECT' ? 'disabled' : 'readOnly'] = false;
		GOL_Global.config.sColl.segment1.originButton.style.display = 'inline';
		GOL_Global.config.sColl.segment1.destinationButton.style.display = 'inline';
		if(GOL_Global.config.sColl.returnType != 'multi') {AO3s12STSToReadOnly('FromFour', false)
		}
		GOL_Global.config.sColl.returnType = 'multi';
		segClass = 'multiple'
	}
	var elSeg = GOL_Global.config.sColl.segmentsBox;
	if(elSeg) {
		elSeg.className = elSeg.defaultClass + ' ' + segClass + 'Segments'
	}AO3s12STH()
}

function AO3s12STH() {
	var el = GOL_Global.config.sColl.searchType;
	var type = (el) ? el.options[el.selectedIndex].value : 'FromFour';
	var directFlightDisabled = false;
	var clockDisabled = false;
	var cabinDisabled = false;
	switch(type) {
		case'FareDisplay':
			clockDisabled = true;
			cabinDisabled = true;
			break;
		case'LowFare':
			clockDisabled = true;
			break;
		case'FromFour':
			clockDisabled = false;
			break;
		default:
			break
	}
	var elDirectFlight = _gel('AO3_StepOne2_directFlight');
	if(elDirectFlight) {
		elDirectFlight.disabled = directFlightDisabled
	}
	for(var k = 0; k < GOL_Global.config.sColl.count; k++) {
		if(GOL_Global.config.sColl['segment' + k].departureTime) {
			GOL_Global.config.sColl['segment' + k].departureTime.disabled = clockDisabled
		}
		if(GOL_Global.config.sColl['segment' + k].arrivalTime) {
			GOL_Global.config.sColl['segment' + k].arrivalTime.disabled = clockDisabled
		}
	}
	var cabins = _gel('AO3_StepOne2_cabinDiv').getElementsByTagName('INPUT');
	for(var i = 0; i < cabins.length; i++) {
		cabins[i].disabled = cabinDisabled
	}
	var ways = ['origin', 'destination'];
	for(var iway in ways) {
		var way = ways[iway];
		if(GOL_Global.config.sColl.segment0[way].tagName == "INPUT") {
			GOL_Global.config.sColl.segment0[way].didSelection = true;
			GOL_Global.config.sColl.segment0[way].onchange()
		}
	}AO3s12fOE(type == 'FromFour' && (GOL_Global.config.sColl.returnType == 'on'));
	AO3s12fOS(GOL_Global.config.sColl.returnType == 'on');
	return true
}

function Library_CalendarHandlerExternalAdd(inp) {
	var elImg = inp.parentNode.getElementsByTagName('IMG');
	for(var k = 0; k < elImg.length; k++) {
		if(L_hC(elImg[k], 'showCalendarIcon')) {
			elImg[k].targetEl = inp;
			elImg[k].targetAction = "blur";
			elImg[k].onclick = CalendarIconOnclickHandler
		}
		if(L_hC(elImg[k], 'hiddenCalendarIcon')) {
			elImg[k].targetEl = inp;
			elImg[k].targetAction = "focus";
			elImg[k].onclick = CalendarIconOnclickHandler
		}
	}
	inp.format = GOL_Global.config.dateFormat;
	inp.onchange = AO3CalendarInputOnchangeHandler;
	if(inp.id.indexOf('departure') > 0)
		inp.way = 'departure';
	if(inp.id.indexOf('arrival') > 0)
		inp.way = 'arrival';
	var seg = inp.id.substring(inp.id.lastIndexOf('_') + 1);
	if(inp.way == 'departure') {
		inp.nextCalendar = _gel('AO3_StepOne2_arrival_' + (seg * 1 + 0));
		if(!inp.nextCalendar) {
			inp.nextCalendar = _gel('AO3_StepOne2_departure_' + (seg * 1 + 1))
		}
		inp.previousCalendar = _gel('AO3_StepOne2_arrival_' + (seg * 1 - 1));
		if(!inp.previousCalendar) {
			inp.previousCalendar = _gel('AO3_StepOne2_departure_' + (seg * 1 - 1))
		}
	} else {
		inp.nextCalendar = _gel('AO3_StepOne2_departure_' + (seg * 1 + 1));
		if(!inp.nextCalendar) {
			inp.nextCalendar = _gel('AO3_StepOne2_arrival_' + (seg * 1 + 1))
		}
		inp.previousCalendar = _gel('AO3_StepOne2_departure_' + (seg * 1 - 0));
		if(!inp.previousCalendar) {
			inp.previousCalendar = _gel('AO3_StepOne2_arrival_' + (seg * 1 - 1))
		}
	}
}

function CalendarIconOnclickHandler() {
	if(this.targetAction == 'focus') {
		this.targetEl.blur()
	}
	if(this.targetAction == 'blur') {
		this.targetEl.focus()
	}
}

function AO3CalendarInputOnchangeHandler() {
	this.valueDate = Library_getHumanToDate(this.value, this);
	if(this.nextCalendar && GOL_Global.config.sColl.returnType == 'on') {
		this.nextCalendar.valueDate = Library_getHumanToDate(this.nextCalendar.value, this.nextCalendar);
		if(this.valueDate > this.nextCalendar.valueDate) {
			var delta = 1;
			var newDate = new Date(this.valueDate.getFullYear(), this.valueDate.getMonth(), this.valueDate.getDate() * 1 + delta);
			this.nextCalendar.value = Library_getDateToHuman(newDate, this.format)
		}
	}
}

function AO3Empty() {
}

function AO3True() {
	return true
}

function AO3s12dElHandlerAdd(el) {
	if(!el) {
		return false
	}
	var hid = document.createElement('input');
	hid.setAttribute('type', 'hidden');
	hid.setAttribute('id', 'AO3_StepOne2_' + el.way + 'Found_' + el.counter);
	hid.setAttribute('value', '');
	hid.counter = el.counter;
	hid.onchange = AO3True;
	hid.way = el.way;
	var way = el.way;
	if(el.tagName != "SELECT") {AO3s12dElHandlerAddInput(el, way);
		hid.name = el.name.substring(0, el.name.indexOf("[flights]")) + "[flights][" + el.counter + "][" + way + "]";
		el.valueTarget = hid
	} else {AO3s12dElHandlerAddSelect(el, way);
		el.hiddenInput.valueTarget = hid
	}
	el.parentNode.appendChild(hid);
	el.AO3s12SDKUH = AO3s12SDKUH;
	el.AO3s12SDCH = AO3s12SDCH
}

function AO3s12dElHandlerAddSelect(select, way) {
	if(!select) {
		return false
	}
	select.way = way;
	select.kde = GOL_Global.config.ajax.kde;
	select.onchange = AO3s12dSoCh;
	select.onkeyup = AO3Empty
}

function AO3s12dElHandlerAddInput(input, way) {
	if(!input) {
		return false
	}
	input.way = way;
	input.kde = GOL_Global.config.ajax.kde;
	input.setAttribute('autocomplete', 'off');
	input.onkeyup = AO3s12dOnKeyUp;
	input.onkeypress = AO3s12dOnKeyPress;
	input.onkeydown = AO3s12dOnKeyDown;
	input.onblur = AO3s12dOnBlur;
	input.onfocus = AO3s12dOnFocus;
	input.onchange = AO3s12dOnChange
}

function AO3s12dOnKeyUp(e) {
	if(!this.readOnly) {AO3sFGD(this, GOL_Global.config.ajax.kde);
		this.AO3s12SDKUH()
	}
}

function AO3s12dOnKeyPress(e) {
	if(!this.readOnly) {
		return AO3sFDSsCancelEnter(this)
	}
	return false
}

function AO3s12dOnKeyDown(e) {
	if(!e) {
		e = window.event
	}
	if(!this.readOnly) {
		return AO3sFDS(e, this)
	}
	return false
}

function AO3s12dOnBlur(e) {
	if(!this.readOnly) {
		window.terminalResetTimer = setTimeout('AO3sFGDTR()', 300)
	}
}

function AO3s12dOnFocus(e) {
	if(!this.readOnly) {
		this.last = '';
		AO3sFGD(this, GOL_Global.config.ajax.kde)
	}
}

function AO3s12dOnChange(e) {
	if(!e) {
		e = window.event
	}
	if(!this.readOnly) {
		var codeInput = L_gNSBTN(this, 'INPUT', 2);
		if(!this.didSelection) {
			codeInput.name = '';
			codeInput.value = ''
		}AO3sFGDSR(this);
		this.AO3s12SDCH()
	}
}

function AO3s12dSoCh(e) {
	var select = this;
	var type = this.way;
	if(select.value == '') {
		select.id = '';
		var input = select.hiddenInput;
		input.style.display = 'inline';
		input.id = 'AO3_StepOne2_' + select.way + '_' + select.counter;
		input.counter = select.counter;
		input.readOnly = select.disabled;
		input.AO3s12SDKUH = AO3s12SDKUH;
		input.AO3s12SDCH = AO3s12SDCH;
		input.lastSearchValue = select.lastSearchValue;
		input.lastExactValue = select.lastExactValue;
		input.valueTarget.name = "data[flights][" + select.counter + "][" + select.way + "]";
		input.propagation = select.propagation;
		if(input.counter > 0) {
			GOL_Global.config.sColl['segment'+(select.counter-1)][select.way == 'origin' ? 'destination' : 'origin'].changesTarget = input
		}
		if(input.counter - 1 < GOL_Global.config.sColl.count) {
			input.changesTarget = GOL_Global.config.sColl['segment'+(input.counter+1)][input.way == 'origin' ? 'destination' : 'origin']
		}
		GOL_Global.config.sColl['segment'+select.counter][select.way] = input;
		select.parentNode.removeChild(select);
		input.onchange();
		input.focus()
	} else {
		select.AO3s12SDCH()
	}
}

function AO3searchFormChooseCountryHandlerAdd() {
	var buts = document.getElementsByTagName('INPUT');
	for(var i = 0; i < buts.length; i++) {
		if(L_hC(buts[i], 'GOL_setLocationButton')) {
			buts[i].idPref = buts[i].id.substring(0, buts[i].id.indexOf('Button'));
			buts[i].idSufx = buts[i].id.substring(buts[i].id.indexOf('Button') + 6);
			var elLocation = document.getElementById(buts[i].idPref + buts[i].idSufx);
			if(elLocation) {
				if(elLocation.tagName.toLowerCase() == 'select')
					buts[i].iataSelect = elLocation;
				else
					buts[i].searchInput = elLocation
			} else
				alert('not Found:' + buts[i].idPref + buts[i].idSufx);
			var elHidden = document.getElementById(buts[i].idPref + 'Found' + buts[i].idSufx);
			if(elHidden) {
				buts[i].iataInput = elHidden
			}
			buts[i].onclick = AO3searchFormChooseCountryAjaxCreateFormHandler;
			buts[i].parentDeph = 1
		}
		if(buts[i].name == 'data[stepChooseOrigin]' || buts[i].name == 'data[stepChooseDestination]') {
			buts[i].idPref = 'AO3_StepOne2_';
			buts[i].idSufx = Library_firstLetterUp(buts[i].id.substring(15), true);
			var elLocation = document.getElementById(buts[i].idPref + buts[i].idSufx);
			if(elLocation) {
				if(elLocation.tagName.toLowerCase() == 'select') {
					buts[i].iataSelect = elLocation
				} else
					buts[i].searchInput = elLocation
			} else
				alert('not Found:' + idPref + idSufx);
			var elHidden = document.getElementById(buts[i].idPref + 'Found' + buts[i].idSufx);
			if(elHidden) {
				buts[i].iataInput = elHidden
			}
			buts[i].onclick = AO3searchFormChooseCountryAjaxCreateFormHandler;
			buts[i].parentDeph = 1
		}
	}
}

function AO3searchFormChooseCountryAjaxCreateFormHandler(e) {
	var url = '';
	if(this.iataInput && this.iataInput.value) {
		url += '&data[location]=' + this.iataInput.value
	}
	if(this.searchInput && this.searchInput.value) {
		url += '&data[locationSearch]=' + this.searchInput.value
	}
	if(this.iataSelect) {
		url += '&data[location]=' + Library_getValue(this.iataSelect)
	}AO3searchFormChooseCountryAjaxHandlerAdd(this, url)
}

function AO3searchFormChooseCountryAjaxSelectCountryHandler(e) {
	var url = '';
	url += '&data[country]=' + (this.elSelect ? Library_getValue(this.elSelect) : Library_getValue(this));
	AO3searchFormChooseCountryAjaxHandlerAdd(this.elButton, url)
}

function AO3searchFormChooseCountryAjaxSelectSubCountryHandler(e) {
	var url = '';
	url += '&data[subCountry]=' + (this.elSelect ? Library_getValue(this.elSelect) : Library_getValue(this));
	AO3searchFormChooseCountryAjaxHandlerAdd(this.elButton, url)
}

function AO3searchFormChooseCountryAjaxHandlerAdd(element, urlPar) {
	var url = GOL_Global.config.ajax.kde;
	var separator = (url.indexOf('?') == -1) ? '?' : '&';
	if(GOL_Global.config.hasSes) {
		url += separator + GOL_Global.config.sesName + "=" + GOL_Global.config.sesId;
		separator = "&"
	}
	url += separator + 'action=' + GOL_Global.config.ajax.action;
	url += '&iframe=chooseCountry';
	url += '&data[ajax]=chooseCountry';
	url += urlPar;
	if(true) {
		var outElement = _gel('ao3AjaxTerminalChooseCountry');
		if(outElement) {
			outElement.parentNode.removeChild(outElement)
		}
		outElement = document.createElement('div');
		outElement.id = 'ao3AjaxTerminalChooseCountry';
		outElement.className = 'ao3AjaxTerminal ao3AjaxWait';
		AO3searchFormChooseCountryPlaceTerminal(element, outElement, '<span style="float:left;">' + GOL_Global.config.ajax.waitfor + '</span><a class="closer" onclick="this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);">X</a>')
	}L_aR('chooseCountry', url, AO3searchFormChooseCountryAjaxHandler, element, 0, 1)
}

function AO3searchFormChooseCountryAjaxHandler(httpRequest, type, ident, element) {
	if(httpRequest.readyState == 4 && LV_aR[type] == ident) {
		if(httpRequest.status == 200) {
			var out = '';
			var errors = httpRequest.responseXML.getElementsByTagName('error');
			if(errors.length) {
				out += errors[0].firstChild.nodeValue
			} else {
				out += '<a class="closer" onclick="this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);">X</a>' + httpRequest.responseText
			}
			var outElement = document.getElementById('ao3AjaxTerminalChooseCountry');
			if(outElement) {
				outElement.parentNode.removeChild(outElement)
			}
			outElement = document.createElement('div');
			outElement.segment = element.segment;
			outElement.reference = element.reference;
			outElement.setAttribute('id', 'ao3AjaxTerminalChooseCountry');
			outElement.className = 'ao3AjaxTerminal';
			AO3searchFormChooseCountryPlaceTerminal(element, outElement, out);
			AO3searchFormChooseCountryJoinEvents(outElement, element);
			LV_aR[type] = null;
			LV_aRO[type] = null
		} else {alert('There was a problem with the request.')
		}
	}
}

function AO3searchFormChooseCountryPlaceTerminal(element, outElement, out) {
	if(window.setPositionForChooseCountry) {setPositionForChooseCountry(element, outElement)
	} else {
		var par = element;
		for(var i = 0; i < element.parentDeph; i++) {
			par = par.parentNode
		}
		par.appendChild(outElement);
		var outContent = document.createElement('div');
		outContent.id = "ao3AjaxTerminalChooseCountryContent";
		outElement.appendChild(outContent);
		outContent.innerHTML = out;
		var back = document.createElement('iframe');
		back.id = "ao3AjaxTerminalChooseCountryBackground";
		back.style.position = "absolute";
		back.style.width = outContent.offsetWidth + 'px';
		back.style.border = 0;
		back.style.padding = 0;
		back.style.height = outContent.offsetHeight + 'px';
		back.style.zIndex = 150;
		outElement.appendChild(back)
	}
}

function AO3searchFormChooseCountryJoinEvents(outElement, formButton) {
	var sel = document.getElementById('AO3_ChooseCountry_Country');
	var butt = document.getElementById('AO3_ChooseCountry_CountryButton');
	if(sel) {
		sel.onchange = AO3searchFormChooseCountryAjaxSelectCountryHandler;
		sel.elButton = formButton;
		if(butt) {
			butt.elButton = formButton;
			butt.onclick = AO3searchFormChooseCountryAjaxSelectCountryHandler
		}
	}
	var sel = document.getElementById('AO3_ChooseCountry_SubCountry');
	var butt = document.getElementById('AO3_ChooseCountry_SubCountryButton');
	if(sel) {
		sel.elButton = formButton;
		sel.onchange = AO3searchFormChooseCountryAjaxSelectSubCountryHandler;
		if(butt) {
			butt.elButton = formButton;
			butt.onclick = AO3searchFormChooseCountryAjaxSelectSubCountryHandler
		}
	}
	var sel = document.getElementById('AO3_ChooseCountry_Place');
	var butt = document.getElementById('AO3_ChooseCountry_PlaceButton');
	if(sel && butt) {
		sel.elButton = formButton;
		butt.elButton = formButton;
		butt.elSelect = sel;
		butt.onclick = AO3searchFormChooseCountrySetLocationHandler
	}
}

function AO3searchFormChooseCountrySetLocationHandler() {
	var iata = this.elSelect.options[this.elSelect.selectedIndex].value;
	var search = this.elSelect.options[this.elSelect.selectedIndex].innerHTML;
	if(!iata)
		search = '';
	var elButton = this.elButton;
	var elSel = document.getElementById(elButton.idPref + elButton.idSufx);
	if(elSel && elSel.tagName.toUpperCase() == 'SELECT' && iata) {
		elButton.iataSelect = elSel;
		var match = false;
		var indexEmpty = 0;
		for(var i = 0; i < elButton.iataSelect.options.length; i++) {
			if(!elButton.iataSelect.options[i].value) {
				indexEmpty = i
			}
			if(elButton.iataSelect.options[i].value == iata) {
				match = true;
				elButton.iataSelect.selectedIndex = i;
				if(elButton.iataSelect.onchange) {
					elButton.iataSelect.onchange()
				}
				break
			}
		}
		if(!match) {
			elButton.iataSelect.selectedIndex = indexEmpty;
			if(elButton.iataSelect.onchange) {
				elButton.iataSelect.onchange()
			}
			elButton.iataSelect = false
		}
	} else
		elButton.iataSelect = false;
	if(!elButton.iataSelect) {
		if(!elButton.searchInput) {
			elButton.searchInput = document.getElementById(elButton.idPref + elButton.idSufx)
		}
		if(!elButton.iataInput) {
			elButton.iataInput = document.getElementById(elButton.idPref + "Found" + elButton.idSufx)
		}
	}
	if(elButton.iataInput) {
		elButton.iataInput.value = iata;
		if(elButton.iataInput.onchange)
			elButton.iataInput.onchange()
	}
	if(elButton.searchInput) {
		elButton.searchInput.value = search;
		if(elButton.searchInput.onchange) {
			elButton.searchInput.onchange()
		}
	}
	this.parentNode.parentNode.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode.parentNode.parentNode);
	return false
}

function Library_getValue(el) {
	switch(el.tagName.toLowerCase()) {
		case'input':
			return el.value;
		case'select':
			return el.options[el.selectedIndex].value;
		default:
			return false
	}
	return false
}

function Library_firstLetterUp(str, down) {
	if(!str.length) {
		return false
	}
	return ( down ? str.substring(0, 1).toLowerCase() : str.substring(0, 1).toUpperCase()) + str.substring(1)
}

function Library_parseHumanDate(value, inFormat, forceValue) {
	var res = {
		'year' : false,
		'month' : false,
		'day' : false,
		'format' : false
	};
	if(!inFormat) {
		if(value.indexOf(".") != -1) {
			var d_arr = value.split(".");
			res.day = d_arr[0] && !isNaN(d_arr[0] * 1) ? d_arr[0] : false;
			res.month = d_arr[1] && !isNaN(d_arr[1] * 1) ? d_arr[1] : false;
			res.year = d_arr[2] && !isNaN(d_arr[2] * 1) ? d_arr[2] : false;
			res.format = 'd.m.Y';
			res.separator = '.'
		} else if(value.indexOf("-") != -1) {
			var d_arr = value.split("-");
			res.year = d_arr[0] && !isNaN(d_arr[0] * 1) ? d_arr[0] : false;
			res.month = d_arr[1] && !isNaN(d_arr[1] * 1) ? d_arr[1] : false;
			res.day = d_arr[2] && !isNaN(d_arr[2] * 1) ? d_arr[2] : false;
			res.format = 'Y-m-d';
			res.separator = '-'
		} else if(value.indexOf("/") != -1) {
			var d_arr = value.split("/");
			res.month = d_arr[0] && !isNaN(d_arr[0] * 1) ? d_arr[0] : false;
			res.day = d_arr[1] && !isNaN(d_arr[1] * 1) ? d_arr[1] : false;
			res.year = d_arr[2] && !isNaN(d_arr[2] * 1) ? d_arr[2] : false;
			res.format = 'm/d/Y';
			res.separator = '/'
		} else if(value.indexOf("_") != -1) {
			var d_arr = value.split("_");
			res.year = d_arr[0] && !isNaN(d_arr[0] * 1) ? d_arr[0] : false;
			res.month = d_arr[1] && !isNaN(d_arr[1] * 1) ? d_arr[1] : false;
			res.day = d_arr[2] && !isNaN(d_arr[2] * 1) ? d_arr[2] : false;
			res.format = 'Y_m_d';
			res.separator = '_'
		}
	} else {
		res.format = inFormat;
		var con = new Array();
		res.separator = false;
		for(var i = 0; i < inFormat.length; i++) {
			switch(inFormat.charAt(i)) {
				case'y':
				case'Y':
					con.push('year');
					break;
				case'm':
				case'M':
					con.push('month');
					break;
				case'd':
				case'D':
					con.push('day');
					break;
				case'-':
				case'/':
				case'.':
				case'_':
					res.separator = inFormat.charAt(i);
					break;
				default:
					break
			}
		}
		if(con && res.separator) {
			var d_arr = value.split(res.separator);
			for(var i = 0; i < d_arr.length; i++) {
				if(!con[i] || isNaN(d_arr[i] * 1))
					continue;
				res[con[i]] = d_arr[i] * 1
			}
		}
	}
	if(forceValue) {
		if(forceValue.year)
			res.year = forceValue.year;
		if(forceValue.month || forceValue.month === 0)
			res.month = forceValue.month + 1;
		if(forceValue.day)
			res.day = forceValue.day
	}
	if(inFormat)
		format = inFormat;
	if(res.year < 100) {
		if(res.year >= 70)
			res.year += 1900;
		else
			res.year += 2000
	}
	return res
}

function Library_getHumanToDate(value, params) {
	if(!params)
		params = new Array();
	var dateVal = params.defaultDate ? params.defaultDate : new Date();
	var dateAry = Library_parseHumanDate(value, params.format, params.forceValue);
	var day = dateAry.day;
	var month = dateAry.month - 1;
	var year = dateAry.year;
	if((year !== false && !isNaN(year * 1) && (year > 0)) && (month !== false && !isNaN(month * 1) && (month >= 0)) && (day !== false && !isNaN(day * 1) && (day >= 0))) {
		var checkDate = new Date(year, month - 1, day);
		if(year == checkDate.getFullYear() && month - 1 == checkDate.getMonth() && day == checkDate.getDate()) {
			dateVal = Library_setDateLimits(year, month, day, dateVal, params.minimalDate, params.maximumlDate);
			return dateVal
		}
	} else if((month !== false && !isNaN(month * 1) && (month >= 0)) && (day !== false && !isNaN(day * 1) && (day >= 0))) {
		var checkDate = new Date(dateVal.getFullYear(), month - 1, day);
		if(month - 1 == checkDate.getMonth() && day == checkDate.getDate()) {
			dateVal = Library_setDateLimits(dateVal.getFullYear(), month, day, dateVal, params.minimalDate, params.maximumlDate);
			return dateVal
		}
	}
	var checkDate = new Date(dateVal);
	var useYear = false;
	var useMonth = false;
	var useDay = false;
	if(year !== false && !isNaN(year * 1) && (year > 0)) {
		checkDate.setFullYear(year);
		useYear = true
	}
	if(month !== false && !isNaN(month * 1) && (month >= 0)) {
		var checksDate = new Date(checkDate);
		checksDate.setMonth(month);
		if(month * 1 == checksDate.getMonth()) {
			checkDate = checksDate;
			useMonth = true
		}
	}
	if(day !== false && !isNaN(day * 1) && (day >= 0)) {
		var checksDate = new Date(checkDate);
		checksDate.setDate(day);
		if(day * 1 == checksDate.getDate()) {
			checkDate = checksDate;
			useDay = true
		}
	}
	dateVal = Library_setDateLimits( useYear ? year : false, useMonth ? month : false, useDay ? day : false, dateVal, params.minimalDate, params.maximumlDate);
	return dateVal
}

function Library_setDateLimits(y, m, d, defaultDate, minDate, maxDate) {
	var checkDate = new Date(defaultDate);
	var validSet = ['d', 'm', 'y'];
	if(minDate && checkDate < minDate)
		return minDate;
	if(maxDate && checkDate > maxDate)
		return maxDate;
	for(var iSet = validSet.length; iSet > 0; iSet--) {
		var resDate = null;
		if(iSet == validSet.length && y !== false && m !== false && d !== false) {
			resDate = new Date(y, m, d)
		} else {
			resDate = new Date(defaultDate);
			for(var i = 0; i < iSet; i++) {
				if(validSet[i] == 'y') {
					if(y !== false)
						resDate.setFullYear(y)
				}
				if(validSet[i] == 'm') {
					if(m !== false)
						resDate.setMonth(m)
				}
				if(validSet[i] == 'd') {
					if(d !== false)
						resDate.setDate(d)
				}
			}
		}
		for(var i = iSet; i < validSet.length; i++) {
			if(validSet[i] == 'd') {
				if(minDate && resDate < minDate)
					resDate.setDate(minDate.getDate());
				else if(maxDate && resDate > maxDate)
					resDate.setDate(maxDate.getDate())
			}
			if(validSet[i] == 'm') {
				if(minDate && resDate < minDate) {
					resDate.setMonth(minDate.getMonth());
					if(resDate < minDate)
						resDate.setMonth(minDate.getMonth() + 1)
				} else if(maxDate && resDate > maxDate) {
					resDate.setMonth(maxDate.getMonth());
					if(resDate > maxDate)
						resDate.setMonth(maxDate.getMonth() - 1)
				}
			}
			if(validSet[i] == 'y') {
				if(minDate && resDate < minDate) {
					resDate.setMonth(minDate.getFullYear());
					if(resDate < minDate)
						resDate.setFullYear(minDate.getFullYear() + 1)
				} else if(maxDate && resDate > maxDate) {
					resDate.setMonth(maxDate.getFullYear());
					if(resDate > maxDate)
						resDate.setFullYear(maxDate.getFullYear() - 1)
				}
			}
		}
		if((!minDate || resDate >= minDate) && (!maxDate || resDate <= maxDate))
			return resDate
	}
	return false
}

function Library_checkHumanDate(value, params) {
	if(!params)
		params = new Array();
	var dateVal = Library_getHumanToDate(value, params);
	var dateAry = Library_parseHumanDate(value, params.format, params.forceValue);
	var day = dateAry.day;
	var month = dateAry.month - 1;
	var year = dateAry.year;
	if(year === false || isNaN(year * 1) || (year < 0) || year != dateVal.getFullYear()) {
		return Library_getDateToHuman(dateVal, dateAry.format)
	}
	if(month === false || isNaN(month * 1) || (month < 0) || month != dateVal.getMonth()) {
		return Library_getDateToHuman(dateVal, dateAry.format)
	}
	if(day === false || isNaN(day * 1) || (day < 0) || day != dateVal.getDate()) {
		return Library_getDateToHuman(dateVal, dateAry.format)
	}
	return false
}

function Library_getDateToHuman(dat, format) {
	if(!format)
		format = 'd.m.Y';
	if(!( dat instanceof Date))
		return '';
	var res = '';
	var oper = '';
	var last = false;
	for(var i = 0; i < format.length; i++) {
		oper = format.substring(i, i + 1);
		if(oper == last)
			continue;
		switch(oper) {
			case'h':
				res += dat.getHours() % 12;
				break;
			case'H':
				res += dat.getHours();
				break;
			case'i':
				res += dat.getMinutes();
				break;
			case's':
				res += dat.getSeconds();
				break;
			case'a':
				res += dat.getHours() < 12 ? 'am' : 'pm';
				break;
			case'A':
				res += dat.getHours() < 12 ? 'AM' : 'PM';
				break;
			case'Y':
				res += dat.getFullYear();
				break;
			case'y':
				res += dat.getYear();
				break;
			case'm':
				res += dat.getMonth() + 1;
				break;
			case'j':
				res += dat.getMonth() + 1;
				break;
			case'd':
				res += dat.getDate();
				break;
			case'n':
				res += dat.getDay();
				break;
			case'w':
				res += dat.getDay();
				break;
			default:
				res += oper
		}
		last = oper
	}
	return res
}

function Library_purge(d) {
	var a = d.attributes, i, l, n;
	if(a) {
		l = a.length;
		for( i = 0; i < l; i += 1) {
			n = a[i].name;
			if( typeof d[n] === 'function') {
				d[n] = null
			}
		}
	}
	a = d.childNodes;
	if(a) {
		l = a.length;
		for( i = 0; i < l; i += 1) {Library_purge(d.childNodes[i])
		}
	}
}

function Library_replaceNode(new_node, old_node) {
	var daddy = old_node.parentNode;
	var next_sibling = old_node.nextSibling;
	daddy.removeChild(old_node);
	if(daddy.lastChild == old_node) {
		daddy.appendChild(new_node)
	} else {
		daddy.insertBefore(new_node, next_sibling)
	}
}
window.keepAlive = 0;
window.onChangeUnset = 0;
window.flag = [];
window.navChange = 0;
function Library_CalendarHandlerAdd() {
	var inputs = document.getElementsByTagName('INPUT');
	window.counter = 0;
	for(var i = 0; i < inputs.length; i++) {
		if((inputs[i].type == 'text') && (L_hC(inputs[i], Library_getClassName(), ' ') && !Library_isReadOnly(inputs[i]))) {
			inputs[i].onfocus = Library_setCalendarHandler;
			inputs[i].onblur = Library_unsetCalendarTimeoutHandler;
			inputs[i].onchange = Library_unsetCalendarHandler;
			inputs[i].onkeyup = Library_updateCalendarHandler;
			inputs[i].validate = Library_validateCalendarValue;
			inputs[i].setAttribute('autocomplete', 'off');
			if(!inputs[i].defaultDate && inputs[i].value) {
				inputs[i].defaultDate = Library_setInputCalendarDate(inputs[i].value)
			}
			if(window.Library_CalendarHandlerExternalAdd)
				Library_CalendarHandlerExternalAdd(inputs[i])
		}
	}
}

function Library_updateCalendarHandler(e) {
	if(!e) {
		var e = window.event
	}
	if(!(e.keyCode >= 37 && e.keyCode <= 40)) {
		var old = new Date(window.today);
		window.flag = [];
		window.today = Library_setInputCalendarDate(this.value);
		if(old) {
			window.keyInput = this
		}Library_setIFrame(this)
	}
}

function Library_unsetCalendarTimeoutHandler(e) {window.navChange == 1 ? '' : window.flag = [];
	if(window.keepAlive == 0) {
		this.unseting = window.setTimeout("Library_unsetCalendar('" + this.id + "');", 500)
	}
}

function Library_unsetCalendarTimeoutHandlerClick(el) {Library_unsetCalendar(el.id)
}

function Library_setCalendarHandler(e) {
	if(this.unseting) {clearTimeout(this.unseting)
	}
	if(window.flag.month == 0 && window.flag.prevMonth == 11) {
		window.flag.year++
	} else if(window.flag.month == 0 && window.flag.prevMonth == -1) {
		window.flag.year
	}
	if(this.value == '') {
		var date_today = Library_getDefaultDate();
		var month = (window.flag.month >= 0) ? window.flag.month : date_today.getMonth();
		var year = window.flag.year ? window.flag.year : date_today.getFullYear();
		var day = window.flag.day ? window.flag.day : date_today.getDate();
		var date = new Date(year, month, day);
		window.today = date;
		window.keyInput = this
	} else {
		window.today = Library_setInputCalendarDate(this.value);
		window.keyInput = this
	}
	if(window.flag.year >= 0 || window.flag.month >= 0) {Library_setIFrame(this)
	} else {
		if(window.counter == 0) {Library_setCalendar(this)
		} else {
			if(window.counter == 1) {Library_unsetCalendar(this.id);
				Library_setCalendar(this)
			}
		}
	}
}

function Library_validateCalendarValue() {
	var params = {
		'defaultDate' : Library_getDefaultDate(),
		'minimalDate' : Library_getMinimalDate(),
		'maximumDate' : Library_getMaximumDate(),
		'format' : this.format
	};
	return Library_checkHumanDate(this.value, params)
}

function Library_setInputCalendarDate(value, force) {
	var dateVal = new Date(Library_getDefaultDate());
	var dateAry = Library_parseHumanDate(value, false, ( force ? false : window.flag));
	var day = dateAry.day;
	var month = dateAry.month - 1;
	var year = dateAry.year;
	if((year !== false && !isNaN(year * 1) && (year > 0)) && (month !== false && !isNaN(month * 1) && (month >= 0)) && (day !== false && !isNaN(day * 1) && (day >= 0))) {
		var checkDate = new Date(year, month - 1, day);
		if(year == checkDate.getFullYear() && month - 1 == checkDate.getMonth() && day == checkDate.getDate()) {
			dateVal = Library_setDateLimits(year, month, day, dateVal, Library_getMinimalDate(), Library_getMaximumDate());
			return dateVal
		}
	}
	var checkDate = new Date(dateVal);
	var useYear = false;
	var useMonth = false;
	var useDay = false;
	if(year !== false && !isNaN(year * 1) && (year > 0)) {
		checkDate.setFullYear(year);
		useYear = true
	}
	if(month !== false && !isNaN(month * 1) && (month >= 0)) {
		var checksDate = new Date(checkDate);
		checksDate.setMonth(month);
		if(month * 1 == checksDate.getMonth()) {
			checkDate = checksDate;
			useMonth = true
		}
	}
	if(day !== false && !isNaN(day * 1) && (day >= 0)) {
		var checksDate = new Date(checkDate);
		checksDate.setDate(day);
		if(day * 1 == checksDate.getDate()) {
			checkDate = checksDate;
			useDay = true
		}
	}
	dateVal = Library_setDateLimits( useYear ? year : false, useMonth ? month : false, useDay ? day : false, dateVal, Library_getMinimalDate(), Library_getMaximumDate());
	return dateVal
}

function Library_unsetCalendarHandler(e) {
	if(window.onChangeUnset == 1) {Library_unsetCalendar(this.id)
	}
}

function Library_setIFrameHandler(e) {Library_setIFrame(this)
}

function Library_isReadOnly(input) {
	return input.readOnly
}

function Library_setCalendar(tag) {
	window.counter++;
	var rodic = tag.parentNode;
	if(!L_hC(rodic, "showCalendarDiv"))
		L_aC(rodic, "showCalendarDiv");
	var div_iframe = document.createElement("div");
	div_iframe.id = "iframe_div_" + tag.id;
	div_iframe.className = "iframe_div_calendar";
	var iframe = document.createElement("IFRAME");
	iframe.name = "inline_frame_" + tag.id;
	iframe.id = "inline_frame_" + tag.id;
	iframe.scrolling = "no";
	iframe.className = "iframe_calendar";
	iframe.tabIndex = "9999";
	Library_setIFrameSource(iframe);
	if(window.MyIframeCalendarModification)
		MyIframeCalendarModification(iframe);
	Library_setIFrameHeight(iframe);
	Library_setIFrameWidth(iframe);
	iframe.onload = Library_setIFrameHandler;
	iframe.onreadystatechange = Library_setIFrameHandler;
	iframe.defaultDate = tag.defaultDate;
	rodic.appendChild(div_iframe);
	div_iframe.appendChild(iframe)
}

function Library_setIFrame(tag) {
	var pw = this;
	var today = window.today;
	var string = '';
	console.log({}.toString.call(frames))
	if(frames.length == 0) {
		var frame = frames[0].document;
		var f = frames[0];
	} else if(frames.length == 1) {
		var frame = frames[0].document;
		var f = frames[0]
	} else if(frames.length == 2) {
		var frame = frames[tag.name].document ? frames[tag.name].document : frames[1].document;
		var f = frames[tag.name].document ? frames[tag.name] : frames[1]
	} else if (frames.length > 2){
		var frame = frames[tag.name].document ? frames[tag.name].document : frames[frames.length - 1].document;
		var f = frames[tag.name].document ? frames[tag.name] : frames[frames.length - 1]
	}
	var head = frame.getElementsByTagName("head")[0];
	var ifr_body = frame.body;
	ifr_body.id = "iframe_body";
	ifr_body.tagId = tag.id;
	var link = frame.createElement("link");
	link.href = Library_getCSS();
	link.rel = "stylesheet";
	link.type = "text/css";
	head.appendChild(link);
	window.fdoc = frame;
	f.Library_setIFrameCloseHandler = function() {
		var pw = this.parent.window;
		pw.Library_unsetCalendar(pw.keyInput.id)
	};
	f.Library_setIFramePrevYearHandler = function() {
		var pw = this.parent.window;
		var day = Library_NumOfDays(pw.today.getMonth(), pw.today.getFullYear() - 1);
		pw.today = new Date(pw.today.getFullYear() - 1, pw.today.getMonth(), day);
		parent.window.keepAlive = 1;
		pw.flag.day = day;
		pw.flag.month = pw.today.getMonth();
		pw.flag.year = pw.today.getFullYear();
		pw.navChange = 1;
		pw.Library_replaceCalendarData();
		if(pw.Library_isMinimalDate('Y', pw.today.getFullYear())) {
			f.Library_setIFramePrevYearHandler_noshow()
		}
	};
	f.Library_setIFrameFollowYearHandler = function() {
		var pw = this.parent.window;
		pw.today = new Date(pw.today.getFullYear() + 1, pw.today.getMonth(), 1);
		pw.flag.day = 1;
		pw.flag.month = pw.today.getMonth();
		pw.flag.year = pw.today.getFullYear();
		pw.navChange = 1;
		pw.Library_replaceCalendarData();
		if(pw.Library_isMaximumDate('Y', pw.today.getFullYear())) {
			f.Library_setIFrameFollowYearHandler_noshow()
		}
	};
	f.Library_setIFramePrevMonthHandler = function() {
		var pw = this.parent.window;
		var day = Library_NumOfDays(pw.today.getMonth() - 1, pw.today.getFullYear());
		pw.today = new Date(pw.today.getFullYear(), pw.today.getMonth() - 1, day);
		pw.keepAlive = 1;
		pw.flag.day = day;
		pw.flag.month = pw.today.getMonth();
		pw.flag.prevMonth = pw.today.getMonth() - 1;
		pw.flag.year = pw.today.getFullYear();
		pw.navChange = 1;
		pw.Library_replaceCalendarData();
		if(pw.Library_isMinimalDate('M', pw.today.getMonth())) {
			f.Library_setIFramePrevMonthHandler_noshow()
		}
	};
	f.Library_setIFrameFollowMonthHandler = function() {
		var pw = this.parent.window;
		pw.today = new Date(pw.today.getFullYear(), pw.today.getMonth() + 1, 1);
		pw.flag.day = 1;
		pw.flag.month = pw.today.getMonth();
		pw.flag.year = pw.today.getFullYear();
		pw.navChange = 1;
		pw.Library_replaceCalendarData();
		if(pw.Library_isMaximumDate('M', pw.today.getMonth() * 1 + pw.Library_getCalendarMonths() - 1)) {
			f.Library_setIFrameFollowMonthHandler_noshow()
		}
	};
	f.Library_setIFramePrevYearHandler_show = function() {
		f.clearInterval(window.inter);
		f.Library_setIFramePrevYearHandler();
		window.inter = f.setInterval("Library_setIFramePrevYearHandler();", Library_navigationTimeout())
	};
	f.Library_setIFramePrevYearHandler_noshow = function() {
		var pw = this.parent.window;
		f.clearInterval(window.inter);
		pw.navChange = 1;
		if(pw.keepAlive == 1) {
			pw.Library_unsetCalendarTimeoutHandlerClick(pw.keyInput)
		}
		window.inter = null
	};
	f.Library_setIFramePrevMonthHandler_show = function() {
		f.clearInterval(window.inter);
		f.Library_setIFramePrevMonthHandler();
		window.inter = f.setInterval("Library_setIFramePrevMonthHandler();", Library_navigationTimeout())
	};
	f.Library_setIFramePrevMonthHandler_noshow = function() {
		var pw = this.parent.window;
		f.clearInterval(window.inter);
		pw.navChange = 1;
		if(pw.keepAlive == 1) {
			pw.Library_unsetCalendarTimeoutHandlerClick(pw.keyInput)
		}
		window.inter = null
	};
	f.Library_setIFrameFollowMonthHandler_show = function() {
		var pw = this.parent.window;
		f.clearInterval(window.inter);
		pw.keepAlive = 1;
		f.Library_setIFrameFollowMonthHandler();
		window.inter = f.setInterval("Library_setIFrameFollowMonthHandler()", Library_navigationTimeout())
	};
	f.Library_setIFrameFollowMonthHandler_noshow = function() {
		var pw = this.parent.window;
		f.clearInterval(window.inter);
		pw.navChange = 1;
		if(pw.keepAlive == 1)
			pw.Library_unsetCalendarTimeoutHandlerClick(pw.keyInput);
		window.inter = null
	};
	f.Library_setIFrameFollowYearHandler_show = function() {
		var pw = this.parent.window;
		pw.keepAlive = 1;
		f.Library_setIFrameFollowYearHandler();
		if(!window.inter)
			window.inter = f.setInterval("Library_setIFrameFollowYearHandler();", Library_navigationTimeout())
	};
	f.Library_setIFrameFollowYearHandler_noshow = function() {
		var pw = this.parent.window;
		f.clearInterval(window.inter);
		pw.navChange = 1;
		if(pw.keepAlive == 1) {
			pw.Library_unsetCalendarTimeoutHandlerClick(pw.keyInput)
		}
		window.inter = null
	};
	f.Library_setDateHandler = function(div) {
		f.Library_setDate(div)
	};
	f.Library_setDate = function(date) {
		var pw = this.parent.window;
		var val = date.firstChild;
		if(date && date.id.substring(0, 13) == 'calendar_date') {
			val = date.id.substring(18);
			pw.onChangeUnset = 1;
			pw.flag = [];
			pw.keepAlive = 0;
			pw.keyInput.value = Library_getDateToHuman(Library_getHumanToDate(val), pw.keyInput.format);
			if(pw.keyInput.onchange) {
				pw.keyInput.onchange()
			}
			pw.Library_unsetCalendar(pw.keyInput.id)
		} else {
			pw.onChangeUnset = 1;
			pw.flag = [];
			pw.keepAlive = 0;
			if(val.nodeValue != '') {
				var newDate = new Date();
				newDate.setDate(val.nodeValue);
				pw.keyInput.value = Library_getDateToHuman(newDate, pw.keyInput.format);
				if(pw.keyInput.onchange) {
					pw.keyInput.onchange()
				}
				pw.Library_unsetCalendar(pw.keyInput.id)
			}
		}
	};
	b = frame.body;
	var divMainS = "<div id='zaoCalendar'>{content}<div class=\"zaoCalendar_breaker\">&nbsp;</div></div>";
	var q = parent;
	var q2 = window;
	var ins = "<div id=\"zaoCalendar_calendarNavigation_close\" onclick=\"Library_setIFrameCloseHandler()\">" + "<a id=\"zaoCalendar_calendarNavigation_closeLink\">" + pw.navigClose + "</a>" + "</div>" + "<div id=\"zaoCalendar_calendarNavigation\">" + "<table><tr>" + "<td id=\"zaoCalendar_prevYear\" onmousedown=\"Library_setIFramePrevYearHandler_show()\"onmouseup=\"Library_setIFramePrevYearHandler_noshow()\" onmouseout=\"Library_setIFramePrevYearHandler_noshow()\"><a>" + pw.navigPrevYear + "</a></td>" + "<td id=\"zaoCalendar_prevMonth\" onmousedown=\"Library_setIFramePrevMonthHandler_show()\" onmouseup=\"Library_setIFramePrevMonthHandler_noshow()\" onmouseout=\"Library_setIFramePrevMonthHandler_noshow()\"><a>" + pw.navigPrevMonth + "</a></td>" + "<td id=\"zaoCalendar_followMonth\" onmousedown=\"Library_setIFrameFollowMonthHandler_show()\" onmouseup=\"Library_setIFrameFollowMonthHandler_noshow()\" onmouseout=\"Library_setIFrameFollowMonthHandler_noshow()\"><a>" + pw.navigFollowMonth + "</a></td>" + "<td id=\"zaoCalendar_followYear\" onmousedown=\"Library_setIFrameFollowYearHandler_show()\" onmouseup=\"Library_setIFrameFollowYearHandler_noshow()\" onmouseout=\"Library_setIFrameFollowYearHandler_noshow()\"> <a>" + pw.navigFollowYear + "</a></td>" + "</tr></table>" + "</div>";
	var content = '';
	content += ins;
	divCalendarS = Library_createCalendarData();
	var iframe_body = frame.getElementById("iframe_body");
	content += divCalendarS;
	b.innerHTML = "<div id='zaoCalendar'>" + content + "<div class=\"zaoCalendar_breaker\">&nbsp;</div></div><div class=\"zaoCalendar_breaker\">&nbsp;</div>";
	Library_modifyCalendarNavigation();
	Library_setIFrameWidth(iframe_body);
	Library_setIFrameHeight(iframe_body);
	Library_recountOffset()
}

function Library_modifyCalendarNavigation() {
	var elNav = window.fdoc.getElementById('zaoCalendar_prevYear');
	if(elNav) {
		if(Library_isMinimalDate('Y', window.today.getFullYear() - 1)) {
			elNav.disabled = true;
			elNav.style.visibility = 'hidden';
			L_aC(elNav, 'hiddenNavig')
		} else {
			elNav.disabled = false;
			L_rC(elNav, 'hiddenNavig')
		}
	}
	var elNav = window.fdoc.getElementById('zaoCalendar_prevMonth');
	if(elNav) {
		if(Library_isMinimalDate('M', window.today.getMonth() - 1)) {
			elNav.disabled = true;
			elNav.style.visibility = 'hidden';
			L_aC(elNav, 'hiddenNavig')
		} else {
			elNav.disabled = false;
			elNav.style.visibility = 'visible';
			L_rC(elNav, 'hiddenNavig')
		}
	}
	var elNav = window.fdoc.getElementById('zaoCalendar_followYear');
	if(elNav) {
		if(Library_isMaximumDate('Y', window.today.getFullYear() + 1)) {
			elNav.disabled = true;
			elNav.style.visibility = 'hidden';
			L_aC(elNav, 'hiddenNavig')
		} else {
			elNav.disabled = false;
			elNav.style.visibility = 'visible';
			L_rC(elNav, 'hiddenNavig')
		}
	}
	var elNav = window.fdoc.getElementById('zaoCalendar_followMonth');
	if(elNav) {
		if(Library_isMaximumDate('M', window.today.getMonth() * 1 + Library_getCalendarMonths())) {
			elNav.disabled = true;
			elNav.style.visibility = 'hidden';
			L_aC(elNav, 'hiddenNavig')
		} else {
			elNav.disabled = false;
			elNav.style.visibility = 'visible';
			L_rC(elNav, 'hiddenNavig')
		}
	}
}

function Library_replaceCalendarData() {
	for(var i = 0; i < Library_getCalendarMonths(); i++) {
		var deltaMonth = !i ? '' : i;
		var today = new Date(window.today);
		today.setDate(1);
		today.setMonth(today.getMonth() + ( deltaMonth ? deltaMonth : 0));
		var monthYear = window.months[today.getMonth()] + " " + today.getFullYear();
		var fd = Library_FirstDayOfMonth(today.getMonth(), today.getFullYear());
		var nd = Library_NumOfDays(today.getMonth(), today.getFullYear());
		var calendarArray = Library_fillCalendarArray(fd, nd);
		var divDelMonth_p, divDelMonth_n, divDelCalendar_p, divDelCalendar_n, divCalendarS;
		divDelMonth_p = window.fdoc.getElementById("zaoCalendar_displayedMonth" + deltaMonth);
		divDelCalendar_p = window.fdoc.getElementById("zaoCalendar_calendar" + deltaMonth);
		divDelMonth_n = window.fdoc.createElement("div");
		divDelMonth_n.id = "zaoCalendar_displayedMonth" + deltaMonth;
		divDelMonth_n.className = "zaoCalendar_displayedMonth";
		divDelMonth_n.innerHTML = "<div>" + monthYear + "</div>";
		divDelCalendar_n = window.fdoc.createElement("div");
		divDelCalendar_n.id = "zaoCalendar_calendar" + deltaMonth;
		divDelCalendar_n.className = "zaoCalendar_calendar";
		divDelCalendar_n.innerHTML = "<table class=\"zaoCalendar_displayedMonthTable\"><tbody>" + Library_generateRows(calendarArray, deltaMonth) + "</tbody></table>";
		Library_replaceNode(divDelMonth_n, divDelMonth_p);
		Library_replaceNode(divDelCalendar_n, divDelCalendar_p)
	}Library_modifyCalendarNavigation();
	Library_recountOffset()
}

function Library_createCalendarData() {
	divCalendarS = '';
	for(var i = 0; i < Library_getCalendarMonths(); i++) {
		var deltaMonth = !i ? '' : i;
		var today = new Date(window.today);
		today.setDate(1);
		today.setMonth(today.getMonth() + ( deltaMonth ? deltaMonth : 0));
		var monthYear = window.months[today.getMonth()] + " " + today.getFullYear();
		var fd = Library_FirstDayOfMonth(today.getMonth(), today.getFullYear());
		var nd = Library_NumOfDays(today.getMonth(), today.getFullYear());
		var calendarArray = Library_fillCalendarArray(fd, nd);
		divCalendarS += "<div class=\"zaoCalendar_blockMonth\">" + "<div id=\"zaoCalendar_displayedMonth" + deltaMonth + "\" class=\"zaoCalendar_displayedMonth\">" + "<div>" + monthYear + "</div>" + "</div>" + "<div id=\"zaoCalendar_calendar" + deltaMonth + "\" class=\"zaoCalendar_calendar\">" + "<table class=\"zaoCalendar_displayedMonthTable\"><tbody>" + Library_generateRows(calendarArray, deltaMonth) + "</tbody></table>" + "</div>" + "</div>"
	}
	return divCalendarS
}

function Library_generateRows(calendarArray, deltaMonth) {
	var enableSetOutOfMonthsDays = true;
	var thS = '';
	for(var i = 0; i < window.weekdays.length; i++) {
		thS += "<th class=\"day" + i + "\"><div>" + window.weekdays[i] + "</div></th>"
	}
	var table_rows = "<tr>" + thS + "<tr>";
	var tdS = '';
	var today = new Date(window.today);
	var disabled = false;
	var weekendDay = false;
	var t = new Date(!window.keyInput.value ? Library_getDefaultDate() : Library_setInputCalendarDate(window.keyInput.value, true));
	today.setMonth(today.getMonth() + ( deltaMonth ? deltaMonth : 0));
	var firstDayOfWeek = (Library_FirstDayOfMonth(today.getMonth(), today.getFullYear()) + 6) % 7;
	var monthDaysActual = Library_NumOfDays(today.getMonth(), today.getFullYear());
	var idPrefActual = 'actu_' + today.getFullYear() + '_' + (today.getMonth() + 1) + '_';
	if(enableSetOutOfMonthsDays) {
		var prevMonth = new Date(today.getFullYear(), today.getMonth() - 1, 1);
		var monthDaysPrevMonth = Library_NumOfDays(prevMonth.getMonth(), prevMonth.getFullYear());
		var idPrefPrevMonth = 'prev_' + prevMonth.getFullYear() + '_' + (prevMonth.getMonth() + 1) + '_';
		var nextMonth = new Date(today.getFullYear(), today.getMonth() + 1, 1);
		var idPrefNextMonth = 'next_' + nextMonth.getFullYear() + '_' + (nextMonth.getMonth() + 1) + '_'
	}
	var inMonth = false;
	var dayVal = false;
	var afterMonth = false;
	var actualDay = '';
	var idPred = false;
	for(var i = 0, j = 1; i < 42; i++, j++) {
		weekendDay = (j == 0 || j == 6) ? ' zaoCalendar_dayWeekendDay' : '';
		dayVal = calendarArray[i];
		if(!dayVal) {
			if(afterMonth) {
				if(j == 1) {
					break
				}
				if(enableSetOutOfMonthsDays) {
					dayVal = i - monthDaysActual - firstDayOfWeek + 1
				}
				disabled = (!calendarArray[i] && !enableSetOutOfMonthsDays) || (Library_isMinimalDate('D', dayVal, nextMonth) || Library_isMaximumDate('D', dayVal, nextMonth)) ? ' zaoCalendar_disabledDay' : '';
				idPref = idPrefNextMonth
			} else {
				if(enableSetOutOfMonthsDays) {
					dayVal = i + monthDaysPrevMonth - firstDayOfWeek + 1
				}
				disabled = (!calendarArray[i] && !enableSetOutOfMonthsDays) || (Library_isMinimalDate('D', dayVal, prevMonth) || Library_isMaximumDate('D', dayVal, prevMonth)) ? ' zaoCalendar_disabledDay' : '';
				idPref = idPrefPrevMonth
			}
		} else {
			afterMonth = true;
			idPref = idPrefActual;
			disabled = (Library_isMinimalDate('D', calendarArray[i], today) || Library_isMaximumDate('D', calendarArray[i], today)) ? ' zaoCalendar_disabledDay' : ''
		}
		inMonth = calendarArray[i] != "" ? "In" : "Out";
		actualDay = (calendarArray[i] == t.getDate() && (today.getMonth() == t.getMonth()) && (today.getFullYear() == t.getFullYear())) ? ' actual_day' : '';
		tdS += "<td class='zaoCalendar_day" + inMonth + "ChosenMonth" + disabled + weekendDay + " zaoCalendar_day" + j + actualDay + "'><div class='zaoCalendar_day" + inMonth + "ChosenMonth " + weekendDay + " zaoCalendar_day" + j + actualDay + "' id=\"calendar_date" + idPref + dayVal + "\" " + (!disabled ? "onclick='Library_setDateHandler(this)'" : "") + ">" + dayVal + "</div></td>";
		if(j == 6) {
			j = -1
		}
		if((i + 1) % 7 == 0) {
			table_rows += "<tr>" + tdS + "</tr>";
			tdS = ''
		}
	}
	return table_rows
}

function Library_getClassName() {
	return window.className ? window.className : 'date'
}

function Library_getCSS() {
	return window.css ? window.css : 'styles.css'
}

function Library_setIFrameHeight(el) {
	if(window.iframe_height != 'auto' && window.iframe_height != 'css') {
		el.style.height = window.iframe_height ? window.iframe_height : "342px"
	}
}

function Library_setIFrameWidth(el) {
	if(window.iframe_width != 'auto' && window.iframe_width != 'css') {
		el.style.width = window.iframe_width ? window.iframe_width : "291px"
	}
}

function Library_getCalendarMonths() {
	return window.calendarMonths ? window.calendarMonths * 1 : 1
}

function Library_navigationTimeout() {
	return window.navTimeout ? window.navTimeout : 500
}

function Library_fillCalendarArray(firstDay, NumberOfDays) {
	var a = new Array;
	if(firstDay == 0) {
		firstDay_czIndexed = 6
	} else {
		firstDay_czIndexed = firstDay - 1
	}
	for(var i = 0, j = 1; i < 42; i++) {
		if(i >= firstDay_czIndexed && i < (NumberOfDays + firstDay_czIndexed)) {
			a.push(j);
			j++
		} else {
			a.push("")
		}
	}
	return a
}

function Library_getDefaultDate() {
	if(window.elementDefaultDate) {
		return window.elementDefaultDate
	}
	if(window.keyInput && window.keyInput.defaultDate) {
		return window.keyInput.defaultDate
	}
	return window.defaultDate ? window.defaultDate : Library_resetTime(new Date())
}

function Library_getMinimalDate() {
	return window.minimalDate ? window.minimalDate : false
}

function Library_getMaximumDate() {
	return window.maximumDate ? window.maximumDate : false
}

function Library_isMaximumDate(part, supposedVal, today) {
	if(!Library_getMaximumDate()) {
		return false
	}
	var maxDate = new Date(Library_getMaximumDate());
	var today = Library_resetTime(new Date( today ? today : window.today));
	if(!part)
		part = '';
	switch(part.toUpperCase()) {
		case'Y':
			if(!supposedVal && supposedVal !== 0) {
				return maxDate.getFullYear()
			} else {Library_resetTime(maxDate, 'Y');
				Library_resetTime(today, 'Y');
				today.setFullYear(supposedVal);
				return today > maxDate
			}
			break;
		case'M':
			if(!supposedVal && supposedVal !== 0) {
				return maxDate.getMonth()
			} else {Library_resetTime(maxDate, 'M');
				Library_resetTime(today, 'M');
				today.setMonth(supposedVal);
				return today > maxDate
			}
			break;
		case'D':
			if(!supposedVal && supposedVal !== 0) {
				return maxDate.getDate()
			} else {
				today.setDate(supposedVal);
				return today > maxDate
			}
			break;
		case'Y-M-D':
			if(!supposedVal) {
				return maxDate.getFullYear() + "-" + maxDate.getMonth() + "-" + maxDate.getDate()
			} else {
				supposedVal = supposedVal.split('-');
				if((supposedVal.length != 3) || isNaN(1 * supposedVal[0]) || isNaN(1 * supposedVal[1]) || isNaN(1 * supposedVal[2]))
					return false;
				today.setFullYear(supposedVal[0]);
				today.setMonth(supposedVal[1]);
				today.setDate(supposedVal[2]);
				return today > maxDate
			}
			break;
		case'D.M.Y':
			if(!supposedVal) {
				return maxDate.getDate() + "." + maxDate.getMonth() + "." + maxDate.getFullYear()
			} else {
				supposedVal = supposedVal.split('.');
				if((supposedVal.length != 3) || isNaN(1 * supposedVal[0]) || isNaN(1 * supposedVal[1]) || isNaN(1 * supposedVal[2]))
					return false;
				today.setFullYear(supposedVal[2]);
				today.setMonth(supposedVal[1]);
				today.setDate(supposedVal[0]);
				return today > maxDate
			}
			break;
		case'':
			if(!supposedVal) {
				return maxDate
			} else {
				return supposedVal > maxDate
			}
			break;
		default:
			return false;
			break
	}
}

function Library_isMinimalDate(part, supposedVal, today) {
	if(!Library_getMinimalDate())
		return false;
	var minDate = new Date(Library_getMinimalDate());
	var today = Library_resetTime(new Date( today ? today : window.today));
	if(!part) {
		part = ''
	}
	switch(part.toUpperCase()) {
		case'Y':
			if(!supposedVal && supposedVal !== 0) {
				return minDate.getFullYear()
			} else {
				today.setFullYear(supposedVal);
				Library_resetTime(minDate, 'Y');
				Library_resetTime(today, 'Y');
				return today < minDate
			}
			break;
		case'M':
			if(!supposedVal && supposedVal !== 0) {
				return minDate.getMonth()
			} else {Library_resetTime(minDate, 'M');
				Library_resetTime(today, 'M');
				today.setMonth(supposedVal);
				return today < minDate
			}
			break;
		case'D':
			if(!supposedVal && supposedVal !== 0) {
				return minDate.getDate()
			} else {
				today.setDate(supposedVal);
				return today < minDate
			}
			break;
		case'Y-M-D':
			if(!supposedVal) {
				return minDate.getFullYear() + "-" + minDate.getMonth() + "-" + minDate.getDate()
			} else {
				supposedVal = supposedVal.split('-');
				if((supposedVal.length != 3) || isNaN(1 * supposedVal[0]) || isNaN(1 * supposedVal[1]) || isNaN(1 * supposedVal[2]))
					return false;
				today.setFullYear(supposedVal[0]);
				today.setMonth(supposedVal[1]);
				today.setDate(supposedVal[2]);
				return today < minDate
			}
			break;
		case'D.M.Y':
			if(!supposedVal) {
				return minDate.getDate() + "." + minDate.getMonth() + "." + minDate.getFullYear()
			} else {
				supposedVal = supposedVal.split('.');
				if((supposedVal.length != 3) || isNaN(1 * supposedVal[0]) || isNaN(1 * supposedVal[1]) || isNaN(1 * supposedVal[2]))
					return false;
				today.setFullYear(supposedVal[2]);
				today.setMonth(supposedVal[1]);
				today.setDate(supposedVal[0]);
				return today < minDate
			}
			break;
		case'':
			if(!supposedVal) {
				return minDate
			} else {
				return supposedVal < minDate
			}
			break;
		default:
			return false;
			break
	}
}

function Library_resetTime(date, part) {
	date.setHours(0, 0, 0, 0);
	if(!part || part == "D") {
		return date
	}
	date.setDate(1);
	if(part == "M") {
		return date
	}
	date.setMonth(1);
	return date
}

function Library_FirstDayOfMonth(month, year) {
	var dd = new Date(year, month, 1);
	return dd.getDay()
}

function Library_NumOfDays(pMonth, pYear) {
	var today = new Date(pYear, pMonth, 1);
	if(today.getMonth() == 11) {
		var month = 1;
		var year = today.getFullYear() + 1
	} else {
		var month = today.getMonth() + 1;
		var year = today.getFullYear()
	}
	var dd = new Date(year, month, 0);
	return dd.getDate()
}

function Library_unsetCalendar(el) {
	if(window.keepAlive == 1) {
		window.keepAlive = 0;
		document.getElementById(el).focus()
	} else {
		var id = 'iframe_div_' + el;
		if(document.getElementById(id)) {L_rC(document.getElementById(el).parentNode, "showCalendarDiv");
			Library_purge(document.getElementById(id));
			document.getElementById(id).parentNode.removeChild(document.getElementById(id));
			window.counter--;
			window.flag = [];
			window.keepAlive = 0;
			window.onChangeUnset = 0;
			window.navChange = 0
		}
	}
}

function Library_recountOffset() {
	if(window.iframe_height != 'auto' && window.iframe_height != 'auto') {
		return false
	}
	var elId = (parent.window.keyInput.id);
	var eInside = window.fdoc.getElementById("zaoCalendar");
	var eIframeDiv = document.getElementById('iframe_div_' + elId);
	var eIframe = document.getElementById('inline_frame_' + elId);
	var deltaHeight = eInside.offsetHeight + (parent.window.deltaHeightCalendar ? parent.window.deltaHeightCalendar : 35);
	var deltaWidth = eInside.offsetWidth + (parent.window.deltaWidthCalendar ? parent.window.deltaWidthCalendar : 10);
	if(window.iframe_height == 'auto') {
		if(eIframeDiv) {
			eIframeDiv.height = (deltaHeight) + 'px'
		}
		if(eIframe) {
			eIframe.height = (deltaHeight) + 'px'
		}
	}
	if(window.iframe_width == 'auto') {
		if(eIframeDiv) {
			eIframeDiv.width = (deltaWidth) + 'px'
		}
		if(eIframe) {
			eIframe.width = (deltaWidth) + 'px'
		}
	}
	if(!parent.window.deltaHeightCalendar) {
		eInside = window.fdoc.getElementById("zaoCalendar");
		parent.window.deltaHeightCalendar = deltaHeight - eInside.offsetHeight;
		parent.window.deltaWidthCalendar = deltaWidth - eInside.offsetWidth
	}
}

function Library_setIFrameSource(el) {
	if(window.iframe_source) {
		el.src = window.iframe_source
	} else {
		el.src = "javascript:''"
	}
}

var GOL_Global = new GOL_Global();

