var viaFlightRowsRET = Array();
var viaFlightRowsDPT = Array();
var directFlightRowsRET = Array();
var directFlightRowsDPT = Array();
var calendarToButtonFocus = false;
var calendarFromButtonFocus = false;
var retryDPT = false;
var retryRET = false;
var Dom = YAHOO.util.Dom;
var Event = YAHOO.util.Event;
YAHOO.widget.DataTable.MSG_ERROR = TEXTS.ERROR;
YAHOO.widget.DataTable.MSG_EMPTY = TEXTS.LOADING;
YAHOO.widget.DataTable.MSG_LOADING = TEXTS.LOADING;
var myDataSourceDPT = new YAHOO.util.DataSource("http://" + window.location.host + "/dynamic/innovata.php?");
myDataSourceDPT.responseType = YAHOO.util.DataSource.TYPE_JSON;
myDataSourceDPT.maxCacheEntries = 0;
var myDataSourceRET = new YAHOO.util.DataSource("http://" + window.location.host + "/dynamic/innovata.php?");
myDataSourceRET.responseType = YAHOO.util.DataSource.TYPE_JSON;
myDataSourceRET.maxCacheEntries = 0;
var requestcountershould = 0;
var requestcounter = 0;
var myTooltip = null;
myDataSourceRET.responseSchema = {
    resultsList: "results",
    fields: [
    {key: "deptime"},
    {key: "arvtime"},
    {key: "flightdates"},
    {key: "flight"},
    {key: "viacodes"},
    {key: "duration"},
    {key: "arvTerm"},
    {key: "equipment"},
    {key: "opdate"},
    {key: "dptAirport"},
    {key: "error"},
    {key: "arvAirport"}
    ]
};
myDataSourceDPT.responseSchema = {
    resultsList: "results",
    fields: [
    {key: "deptime"},
    {key: "arvtime"},
    {key: "flightdates"},
    {key: "flight"},
    {key: "viacodes"},
    {key: "duration"},
    {key: "dptTerm"},
    {key: "equipment"},
    {key: "opdate"},
    {key: "dptAirport"},
    {key: "error"},
    {key: "arvAirport"}
    ]
};
var formatFlight = function(B, A, C, D) {
    B.innerHTML = A.getData("flight").replace(/ /, "<br/>")
};

var formatBookingLinkDPT = function(cell, record, C, D) {
	Dom.setStyle(cell, 'width', '2.7em');
	Dom.setStyle(cell, 'padding', '0.2em 0.2em 0.2em 0.2em');
	
	pattern = /\((.+?)\)/;
	// to
	to = record.getData('arvAirport');
	to = pattern.exec(to);
	to = to[0];
	to = to.substring(1, to.length-1);

	// airline
	flight = record.getData('flight');
	airline = pattern.exec(flight);

	airline = airline[0];
	airline = airline.substring(1, airline.length-1);

	day_DPT='';
	month_DPT='';
	year_DPT='';

	day_RET='';
	month_RET='';
	year_RET='';

	// date
	if(!retryDPT){
		year_DPT = Dom.get("DPT_year").value;
		month_DPT = Dom.get("DPT_month").value;
		day_DPT = Dom.get("DPT_day").value;

		if(month_DPT=='--' || year_DPT =='----'){
			month_DPT = '';
		}
		else{
			month_DPT = LPad(month_DPT,2,'0') + '-' + year_DPT;
		}

		day_DPT = (day_DPT == '--') ? '' : day_DPT;
	}
	else{
		month_DTP = '';
		day_DPT = '';
	}

	if(!retryRET){
		year_RET = Dom.get("RET_year").value;
		month_RET = Dom.get("RET_month").value;
		day_RET = Dom.get("RET_day").value;

		if(month_RET=='--' || year_RET =='----'){
			month_RET = '';
		}
		else{
			month_RET = LPad(month_RET,2,'0') + '-' + year_RET;
		}

		day_RET = (day_RET == '--') ? '' : day_RET;
	}
	else{
		month_RET = '';
		day_RET = '';
	}


	oneway = 0;
	//
	// oneway return flight if no departure date is selected
	//
	if((day_DPT == '' && month_DPT == '' && day_RET != '' && month_RET != '') || (day_DPT != '' && month_DPT != '' && day_RET == '' && month_RET == '')){
		oneway = 1;
	}

	url = TEXTS.BOOKING_URL + '?depApt=HAM' +
	// oneway flight if no return date is selected
		'&onewayswitch=' + oneway +
		'&dstApt=' + to +
		'&cr_restriction=' + airline;

	if (month_DPT != '' && day_DPT != '') {
		url +=
			'&month_1=' + month_DPT+
			'&day=' + day_DPT;
	}
	
	if	(month_RET != '' && day_RET != '') {
		url +=
			'&month_2=' + month_RET+
			'&retDay=' + day_RET;
	}

	var link_title = TEXTS.BOOK_ONLINE_LINK_TITLE.replace(/##FROM##/, 'HAM');
	link_title = TEXTS.BOOK_ONLINE_LINK_TITLE.replace(/##TO##/, to);
	link_title = TEXTS.BOOK_ONLINE_LINK_TITLE.replace(/##AIRLINE##/, airline);
	cell.innerHTML = '<a href="' + url + '" title="'+link_title+'" >' + TEXTS.BOOK_ONLINE_LINK_TEXT + '</a>';
}

var opdateFormatter = function(cell, record, C, D){
	
	cell.innerHTML = "";
}

var formatBookingLinkRET = function(cell, record, C, D) {
	Dom.setStyle(cell, 'width', '2.7em');
	Dom.setStyle(cell, 'padding', '0.2em 0.2em 0.2em 0.2em');
	
	pattern = /\((.+?)\)/;
	// to
	from = record.getData('dptAirport');
	from = pattern.exec(from);
	from = from[0];
	from = from.substring(1, from.length-1);

	// airline
	flight = record.getData('flight');
	airline = pattern.exec(flight);
	airline = airline[0];
	airline = airline.substring(1, airline.length-1);

	day_DPT='';
	month_DPT='';
	year_DPT='';

	day_RET='';
	month_RET='';
	year_RET='';

	// date
	if(!retryDPT){
		year_DPT = Dom.get("DPT_year").value;
		month_DPT = Dom.get("DPT_month").value;
		day_DPT = Dom.get("DPT_day").value;

		if(month_DPT=='--' || year_DPT =='----'){
			month_DPT = '';
		}
		else{
			month_DPT = LPad(month_DPT,2,'0') + '-' + year_DPT;
		}

		day_DPT = (day_DPT == '--') ? '' : day_DPT;
	}
	else{
		month_DTP = '';
		day_DPT = '';
	}

	if(!retryRET){
		year_RET = Dom.get("RET_year").value;
		month_RET = Dom.get("RET_month").value;
		day_RET = Dom.get("RET_day").value;

		if(month_RET=='--' || year_RET =='----'){
			month_RET = '';
		}
		else{
			month_RET = LPad(month_RET,2,'0') + '-' + year_RET;
		}

		day_RET = (day_RET == '--') ? '' : day_RET;
	}
	else{
		month_RET = '';
		day_RET = '';
	}

	oneway = 0;
	//
	// oneway return flight if no departure date is selected
	//
	if((day_DPT == '' && month_DPT == '' && day_RET != '' && month_RET != '') || (day_DPT != '' && month_DPT != '' && day_RET == '' && month_RET == '')){
		oneway = 1;
	}

	url = TEXTS.BOOKING_URL + '?dstApt=HAM' +
	// oneway flight if no return date is selected
		'&onewayswitch=' + oneway +
		'&depApt=' + from +
		'&cr_restriction=' + airline;
	
	if (month_RET != '' && day_RET != '') {	
	
		url +=
			'&month_2=' + month_RET  +
			'&RetDay=' + day_RET;
	}
	
	if (month_DPT != '' && day_DPT != '') {
		url +=
			'&month_1=' + month_DPT +
			'&Day=' + day_DPT ;
	}

	var link_title = TEXTS.BOOK_ONLINE_LINK_TITLE.replace(/##FROM##/, from);
	link_title = TEXTS.BOOK_ONLINE_LINK_TITLE.replace(/##TO##/, 'HAM');
	link_title = TEXTS.BOOK_ONLINE_LINK_TITLE.replace(/##AIRLINE##/, airline);
	cell.innerHTML = '<a href="' + url + '" title="'+link_title+'" >' + TEXTS.BOOK_ONLINE_LINK_TEXT + '</a>';
}

var equipmentFormatter = function(B, A, C, D) {
    B.innerHTML = A.getData("equipment").replace(/ /, "<br/>")
};

function isInArray(theElement, theArray){
	for(i=0; i<theArray.length; i++){
		if(theArray[i] == theElement){
			return true;
		}
	}
	return false;
}

var viaFormatterRET = function(C, B, D, E) {
    var A = B.getData("viacodes");

    if (typeof A == "undefined" || A === null || A === "") {
		A = "";
		// collect direct flights
        if(isInArray(B, directFlightRowsRET) == false){
			directFlightRowsRET[directFlightRowsRET.length] = B;
        }
    }
    else{
        // collect via-flights
        if(isInArray(B, viaFlightRowsRET) == false){
        	viaFlightRowsRET[viaFlightRowsRET.length] = B;
        }
    }

    C.innerHTML = A
};

var viaFormatterDPT = function(C, B, D, E) {
    var A = B.getData("viacodes");

    if (typeof A == "undefined" || A === null || A === "") {
    	A = "";
        if(isInArray(B, directFlightRowsDPT) == false){
        	directFlightRowsDPT[directFlightRowsDPT.length] = B;
        }
    }
    else{
        // collect via-flights
        if(isInArray(B, viaFlightRowsDPT) == false){	
        	viaFlightRowsDPT[viaFlightRowsDPT.length] = B;
        }
    }

    C.innerHTML = A
};

var sortViaRET = function(A, F, E) {
    if (!YAHOO.lang.isValue(A)) {
        return (!YAHOO.lang.isValue(F)) ? 0 : 1
    } else {
        if (!YAHOO.lang.isValue(F)) {
            return - 1
        }
    }
    var D = A.getData("viacodes");
    var C = F.getData("viacodes");
    if (typeof D == "undefined" || D === null) {
        D = ""
    }
    if (typeof C == "undefined" || C === null) {
        C = ""
    }
    if ((D == "" && C == "") || (D != "" && C != "")) {
        var B = YAHOO.util.Sort.compare;
        return B(A.getData("deptime"), F.getData("deptime"), E)
    } else {
        if (D != "" && C == "") {
            return 1
        } else {
            if (D == "" && C != "") {
                return - 1
            }
        }
    }
};
var sortViaDPT = function(A, F, E) {
    if (!YAHOO.lang.isValue(A)) {
        return (!YAHOO.lang.isValue(F)) ? 0 : 1
    } else {
        if (!YAHOO.lang.isValue(F)) {
            return - 1
        }
    }
    var D = A.getData("viacodes");
    var C = F.getData("viacodes");
    if (typeof D == "undefined" || D === null) {
        D = ""
    }
    if (typeof C == "undefined" || C === null) {
        C = ""
    }
    if ((D == "" && C == "") || (D != "" && C != "")) {
        var B = YAHOO.util.Sort.compare;
        return B(A.getData("arvtime"), F.getData("arvtime"), E)
    } else {
        if (D != "" && C == "") {
            return 1
        } else {
            if (D == "" && C != "") {
                return - 1
            }
        }
    }
};

var getBookingLabelDPT = function(){
	return '<a href="#" style="cursor:help;" class="ico_info" title="'+ TEXTS.BOOK_ONLINE_LABEL_TITLE +'"></a>';
}

var getBookingLabelRET = function(){
	return '<a href="#" style="cursor:help;" class="ico_info" title="'+ TEXTS.BOOK_ONLINE_LABEL_TITLE +'"></a>';
}

var myColumnDefsDPT = [{
    key: "deptime",
//    sortable: true,
    label: TEXTS.ABFLUG
},
{
    key: "arvtime",
//    sortable: true,
    label: TEXTS.ANKUNFT
},
{
    key: "flightdates",
    label: TEXTS.FLUGZEITEN
},
{
    key: "flight",
    label: TEXTS.FLUG,
    formatter: formatFlight
},
{
    key: "viacodes",
//    sortable: true,
    label: TEXTS.VIA,
    formatter: viaFormatterDPT,
    sortOptions: {
        sortFunction: sortViaDPT
    }
},
{
    key: "duration",
//    sortable: true,
    label: TEXTS.DAUER
},
{
    key: "dptTerm",
//    sortable: true,
    label: TEXTS.TERMINAL_KURZ
},
{
    key: "equipment",
    label: TEXTS["A/C"],
    formatter: equipmentFormatter
},
{
    key: "opdate",
//    sortable: true,
    label: TEXTS.GUELTIG
},
{
    label: getBookingLabelDPT(),
    formatter: formatBookingLinkDPT
}
];

var myColumnDefsRET = [{
    key: "deptime",
//    sortable: true,
    label: TEXTS.ABFLUG
},
{
    key: "arvtime",
//    sortable: true,
    label: TEXTS.ANKUNFT
},
{
    key: "flightdates",
    label: TEXTS.FLUGZEITEN
},
{
    key: "flight",
    label: TEXTS.FLUG,
    formatter: formatFlight
},
{
    key: "viacodes",
//    sortable: true,
    label: TEXTS.VIA,
    formatter: viaFormatterRET,
    sortOptions: {
        sortFunction: sortViaRET
    }
},
{
    key: "duration",
//    sortable: true,
    label: TEXTS.DAUER
},
{
    key: "arvTerm",
//    sortable: true,
    label: TEXTS.TERMINAL_KURZ
},
{
    key: "equipment",
    label: TEXTS["A/C"],
    formatter: equipmentFormatter
},
{
    key: "opdate",
//    sortable: true,
    label: TEXTS.GUELTIG
},
{
	label: getBookingLabelRET(),
	formatter: formatBookingLinkRET
}
];
var dataTableDPT = null;
var dataTableRET = null;
var calendarTo = null;
var calendarFrom = null;


var showViaOptionRET = function(){
	// only via flights
	if( viaFlightRowsRET.length != 0 && directFlightRowsRET.length == 0 ){ 
		// show message	
		p = document.createElement("p");
		p.innerHTML = TEXTS.NO_DIRECT_FLIGHTS;
		p.setAttribute("id", "noticeViaRET");			
		Dom.insertAfter(p, "hdl_ret"); 
	}
	
	// via flights AND direct flights available
	if( viaFlightRowsRET.length != 0 && directFlightRowsRET.length != 0 ){ 
		// show Via Link
		text = TEXTS.SHOW_VIA_TEXT + ' <a href="#" onclick="showViaRowsRET(); return false;" title="" >' + TEXTS.SHOW_VIA_LINK + '</a>';		
		
		p = document.createElement("p");		
		//p.appendChild(document.createTextNode(text));
		p.innerHTML = text;
		p.setAttribute("id", "noticeViaRET");			
		Dom.insertAfter(p, "hdl_ret");  
					
		hideViaRowsRET();
	}
}

var showViaOptionDPT = function(){
	// only via flights
	if( viaFlightRowsDPT.length != 0 && directFlightRowsDPT.length == 0 ){ 
		// show message	
		p = document.createElement("p");
		p.innerHTML = TEXTS.NO_DIRECT_FLIGHTS;
		p.setAttribute("id", "noticeViaDPT");			
		Dom.insertAfter(p, "hdl_dpt"); 
	}
	
	// via flights AND direct flights available	
	if( viaFlightRowsDPT.length != 0 && directFlightRowsDPT.length != 0 ){		
		// show Via Link
		text = TEXTS.SHOW_VIA_TEXT + ' <a href="#" onclick="showViaRowsDPT(); return false;" title="" >' + TEXTS.SHOW_VIA_LINK + '</a>';		
		
		p = document.createElement("p");
		//p.appendChild(document.createTextNode(text));
		p.innerHTML = text;
		p.setAttribute("id", "noticeViaDPT");
		Dom.insertAfter(p, "hdl_dpt");  
		
		hideViaRowsDPT();
	}
}

var sortRETHandler = function(col, dir){
	if(viaFlightRowsRET.length != 0 && directFlightRowsRET.length != 0){
		hideViaRowsRET();
	}
}

var sortDPTHandler = function(col, dir){
	if(viaFlightRowsDPT.length !=0 && directFlightRowsDPT.length != 0){
		hideViaRowsDPT();
	}
}

var doSearch = function() {
	a = Dom.get('noticeDateRET');
	b = Dom.get('noticeDateDPT');
	c = Dom.get('noticeViaRET');
	d = Dom.get('noticeViaDPT');
	if(a !=null){
		a.parentNode.removeChild(a);
	}
	if(b !=null){
		b.parentNode.removeChild(b);
	}
	if(c !=null){
		c.parentNode.removeChild(c);
	}
	if(d != null){
		d.parentNode.removeChild(d);
	}
	
    requestcountershould = 0;
    viaFlightRowsRET = Array();
    viaFlightRowsDPT = Array();
    directFlightRowsRET = Array();
	directFlightRowsDPT = Array();

	if(!Dom.get('fromtoairport-1').checked && !Dom.get('fromtoairport-0').checked){
		window.alert(TEXTS.SELECT_DIRECTION);
		return;
	}
	
	if(DepartureBeforeArrival()){
		if (checkInputRET() && checkInputDPT()) {
			showAjaxloader(true);
			requestcountershould++;
			var C = Dom.get("airports");

			// headline DPT
			deleteChildren("hdl_dpt");
			h2 = Dom.get("hdl_dpt");
			if(Dom.get('fromtoairport-1').checked){
				A = document.createTextNode(TEXTS.ABFLUG_VON.replace(/##FLUGHAFEN##/, C[C.selectedIndex].firstChild.data));
			}else{
				A = document.createTextNode(TEXTS.ANKUNFT_IN.replace(/##FLUGHAFEN##/, C[C.selectedIndex].firstChild.data));
			}
			h2.appendChild(A)

			var D1 = Dom.get("RET_year").value;
			var A1 = Dom.get("RET_month").value;
			var C1 = Dom.get("RET_day").value;

			//if (dataTableRET === null)
			{
				// headline RET
				deleteChildren("hdl_ret");
				var h2 = Dom.get("hdl_ret");
				var A=null;
				if(Dom.get('fromtoairport-1').checked){
					A = document.createTextNode(TEXTS.ANKUNFT_IN.replace(/##FLUGHAFEN##/, C[C.selectedIndex].firstChild.data));
				}else{
					A = document.createTextNode(TEXTS.ABFLUG_VON.replace(/##FLUGHAFEN##/, C[C.selectedIndex].firstChild.data));
				}
				h2.appendChild(A);
				dataTableRET = new YAHOO.widget.DataTable("RET_RESULTS", myColumnDefsRET, myDataSourceRET, {
					initialLoad: false,
					sortedBy: {
						key: "deptime",
						dir: YAHOO.widget.DataTable.CLASS_ASC
					}
				});
				
				dataTableRET.subscribe('columnSortEvent', sortRETHandler);
			//} else {
			//	dataTableRET.deleteRows(0, dataTableRET.getRecordSet().getLength())
			}
			myDataSourceRET.connXhrMode = "cancelStaleRequests";
			dataTableRET.showTableMessage(TEXTS.LOADING);
			myDataSourceRET.sendRequest(getQueryRET(false), flightplanRETCallback);
			requestcountershould++;
			
			if (dataTableDPT === null) {
				dataTableDPT = new YAHOO.widget.DataTable("DPT_RESULTS", myColumnDefsDPT, myDataSourceDPT, {
					initialLoad: false,
					sortedBy: {
						key: "arvtime",
						dir: YAHOO.widget.DataTable.CLASS_ASC
					}
				});
				dataTableDPT.subscribe('columnSortEvent', sortDPTHandler);
			} else {
				dataTableDPT.deleteRows(0, dataTableDPT.getRecordSet().getLength())
			}
			dataTableDPT.showTableMessage(TEXTS.LOADING);
			myDataSourceDPT.sendRequest(getQueryDPT(false), flightplanDPTCallback)
			myDataSourceDPT.connXhrMode = "cancelStaleRequests";
			myDataSourceDPT.subscribe("dataErrorEvent", dataErrorEventHandler)
		} else {
			alert(TEXTS.FORMULAR_UEBERPRUEFEN);
		}
	}else{
		alert(TEXTS.CHECK_FROM_TO_DATE);
	}
};
function deleteChildren(A) {
    var B = Dom.get(A);
    while (B.hasChildNodes()) {
        B.removeChild(B.lastChild)
    }
}
function DepartureBeforeArrival(){

    var C = Dom.get("DPT_year").value;
    var B = Dom.get("DPT_month").value;
    var A = Dom.get("DPT_day").value;
	
    var F = Dom.get("RET_year").value;
    var E = Dom.get("RET_month").value;
    var D = Dom.get("RET_day").value;
	if(checkDate('',A,B,C,false) && checkDate('',D,E,F,false)){
		var DPT_date=new Date(C,B,A);
		var RET_date=new Date(F,E,D);
		if(DPT_date.getTime()>RET_date.getTime()){
			return false;
		}
	}else if((!checkDate('',A,B,C,false) && checkDate('',D,E,F,false))){
		return false;
	}
	return true;
}

function checkDate(A, B, E, D, F) {
    var G = "(0[1-9]|[12][0-9]|3[01]).(0[1-9]|1[0-2]).2[0-9]{3}";
    var C = fillUpwithLeadingChar(B, 2, 0) + "." + fillUpwithLeadingChar(E, 2, 0) + "." + D;
    if (C.match(G)) {
        source_date = new Date(D, E - 1, B);
        if (((B * 1) != source_date.getDate() && (!F || alert(A + ": " + invalidDayMessage))) || (((E * 1) - 1) != source_date.getMonth() && (!F || alert(A + ": " + invalidMonthMessage))) || ((D * 1) != source_date.getFullYear() && (!F || alert(A + ": " + invalidYearMessage)))) {
            return false;
        }
    } else {
		if(F){
			alert(A + ": " + invalidDateMessage);
		}
        return false;
    }
    return true
}
function fillUpwithLeadingChar(C, A, B) {
    C = C + "";
    while (C.length < A) {
        C = B + C
    }
    return C
}
var setInputFieldsRet = function(B, A) {
    Dom.get("RET_year").value = A[0][0][0];
    Dom.get("RET_month").value = A[0][0][1];
    Dom.get("RET_day").value = A[0][0][2];
    calendarTo.hide()
};
var setInputFieldsDpt = function(B, A) {
    Dom.get("DPT_year").value = A[0][0][0];
    Dom.get("DPT_month").value = A[0][0][1];
    Dom.get("DPT_day").value = A[0][0][2];
    calendarFrom.hide()
};
var showAjaxloader = function(A) {
    if (A === true) {
        if (!Dom.hasClass(Dom.get("submit"), "loader")) {
            Dom.addClass(Dom.get("submit"), "loader")
        }
    } else {
        if (Dom.hasClass(Dom.get("submit"), "loader")) {
            Dom.removeClass(Dom.get("submit"), "loader")
        }
    }
};
var dataErrorEventHandler = function(C, D, B, A) {
    showAjaxloader(false)
};
function init() {
    var B = {
        MDY_DAY_POSITION: MDY_DAY_POSITION,
        MDY_MONTH_POSITION: MDY_MONTH_POSITION,
        MDY_YEAR_POSITION: MDY_YEAR_POSITION,
        MD_DAY_POSITION: MD_DAY_POSITION,
        MD_MONTH_POSITION: MD_MONTH_POSITION,
        MONTHS_SHORT: MONTHS_SHORT,
        MONTHS_LONG: MONTHS_LONG,
        WEEKDAYS_1CHAR: WEEKDAYS_1CHAR,
        WEEKDAYS_SHORT: WEEKDAYS_SHORT,
        WEEKDAYS_MEDIUM: WEEKDAYS_MEDIUM,
        WEEKDAYS_LONG: WEEKDAYS_LONG,
        PAGES: 2,
        navigator: {
            strings: {
                month: MonthLabel,
                year: YearLabel,
                submit: OKButton,
                cancel: CancelButton,
                invalidYear: invalidYearMessage
            },
            monthFormat: YAHOO.widget.Calendar.SHORT,
            initialFocus: "year"
        },
        close: true,
        title: CALENDAR_TITLE_ARRIVAL
    };
    calendarTo = new YAHOO.widget.CalendarGroup("calendarTo", "calendarToDiv", B);
    calendarTo.cfg.setProperty('start_weekday', '1');
    B.title = CALENDAR_TITLE_DEPARTURE;
    calendarFrom = new YAHOO.widget.CalendarGroup("calendarFrom", "calendarFromDiv", B);
    calendarFrom.cfg.setProperty('start_weekday', '1');
    calendarTo.render();
    calendarFrom.render();
    calendarTo.selectEvent.subscribe(setInputFieldsRet, calendarTo);
    calendarFrom.selectEvent.subscribe(setInputFieldsDpt, calendarFrom);
    Event.addListener("calendarToButton", "click", calendarTo.show, calendarTo, true);
    Event.addListener("calendarFromButton", "click", calendarFrom.show, calendarFrom, true);
    Event.addListener("submit", "click", doSearch);
    var A = Dom.get("airports");
	Dom.get('fromtoairport-1').checked='checked';
}
var flightplanRETCallback = {
    success: function(A, E, C) {
        if (E.results.length === 0 && !A.match(/\&recall=/) && A.match(/\&dd_schedule=/)) {
            myDataSourceRET.sendRequest(getQueryRET(true), flightplanRETCallback)
        } else {
            if (E.results.length !== 0 && typeof E.results[0]["error"] !== "undefined" && E.results[0]["error"] !== null) {
                flightplanRETCallback.failure(A, E, C);
                return
            } else {
                var B = Dom.get("noticeDateRET");
                if (B !== null) {
                    B.parentNode.removeChild(B);
                    retryRET = false;
                }
				B = Dom.get("noticeDateRET");
                if (B !== null) {
                    B.parentNode.removeChild(B);
                    retryRET = false;
                }
				var day_RET=Dom.get('RET_day');
                if (A.match(/\&recall=/) && E.results.length !== 0 && day_RET.value!='--') {
                    B = document.createElement("p");
                    B.appendChild(document.createTextNode(TEXTS.NEUE_SUCHE_OHNE_DATUM));
                    B.setAttribute("id", "noticeDateRET");                    
					Dom.insertAfter(B, 'hdl_ret');                    
                    retryRET = true;
                }
                requestcounter++;
                if (requestcounter == requestcountershould) {
                    showAjaxloader(false);
                    requestcounter = 0;
                    requestcountershould = 0
                }
                YAHOO.widget.DataTable.MSG_EMPTY = TEXTS.EMPTY;
                dataTableRET.onDataReturnInitializeTable(A, E, C);
                dataTableRET.sortColumn(dataTableRET.getColumn(4), YAHOO.widget.DataTable.CLASS_ASC);

                showViaOptionRET();
            }
        }
    },
    failure: function(A, C, B) {
        dataTableRET.showTableMessage(TEXTS.EMPTY);
        showAjaxloader(false)
    },
    scope: this
};
var flightplanDPTCallback = {
    success: function(A, E, C) {
        if (E.results.length === 0 && !A.match(/\&recall=/) && A.match(/\&dd_schedule=/)) {
            myDataSourceDPT.sendRequest(getQueryDPT(true), flightplanDPTCallback)
        } else {
            if (E.results.length !== 0 && typeof E.results[0]["error"] !== "undefined" && E.results[0]["error"] !== null) {
                flightplanDPTCallback.failure(A, E, C);
                return
            } else {
                var B = Dom.get("noticeDateDPT");
                if (B !== null) {
                    B.parentNode.removeChild(B);
                    retryDPT = false;
                }
				B = Dom.get("noticeDateDPT");
                if (B !== null) {
                    B.parentNode.removeChild(B);
                    retryDPT = false;
                }
				var day_DPT=Dom.get('DPT_day');
                if (A.match(/\&recall=/) && E.results.length !== 0 && day_DPT.value!='--') {
                    B = document.createElement("p");
                    B.appendChild(document.createTextNode(TEXTS.NEUE_SUCHE_OHNE_DATUM));
                    B.setAttribute("id", "noticeDateDPT");
                    Dom.insertAfter(B, "hdl_dpt");                    
                    retryDPT = true;
                }
                requestcounter++;
                if (requestcounter == requestcountershould) {
                    showAjaxloader(false);
                    requestcounter = 0;
                    requestcountershould = 0
                }
                YAHOO.widget.DataTable.MSG_EMPTY = TEXTS.EMPTY;
                dataTableDPT.onDataReturnInitializeTable(A, E, C);
                dataTableDPT.sortColumn(dataTableDPT.getColumn(4), YAHOO.widget.DataTable.CLASS_ASC);

        		showViaOptionDPT();
            }
        }
    },
    failure: function(A, C, B) {
        dataTableDPT.showTableMessage(TEXTS.EMPTY);
        showAjaxloader(false)
    },
    scope: this
};
function getQueryRET(B) {
    var F = Dom.get("RET_year").value;
    var A = Dom.get("RET_month").value;
    var E = Dom.get("RET_day").value;
    var C = Dom.get("airports");
	var D='';
	if(Dom.get('fromtoairport-1').checked){
		var D = "service=schedule&lang=" + LANG + "&searchtype=B&arvcodetype=STA&arvcode=HAM&locale=" + LANG + "&dptcodetype=STA&dptcode=" + C[C.selectedIndex].value;
	}else{
		var D = "service=schedule&lang=" + LANG + "&searchtype=B&arvcodetype=STA&dptcode=HAM&locale=" + LANG + "&dptcodetype=STA&arvcode=" + C[C.selectedIndex].value;
	}
    if (!B && E !== "--" && A !== "--" && F !== "----" && checkDate(null, E, A, F, false)) {
        D += "&dd_schedule=" + E + "&mm_schedule=" + A + "&yyyy_schedule=" + F
    } else {
        if (B) {
            D += "&recall=true"
        }else{
//			var date=new Date();
//			D += "&dd_schedule=" + date.getDate() + "&mm_schedule=" + (date.getMonth() + 1) + "&yyyy_schedule=" + date.getFullYear();
			D += "&filterbyperiod=true";
		}
    }
    return D
}

function checkInputDPT() {
    var D = Dom.get("DPT_year").value;
    var A = Dom.get("DPT_month").value;
    var C = Dom.get("DPT_day").value;
    var B = Dom.get("airports");
    if (B[B.selectedIndex].value == "" || (C !== "--" && A !== "--" && D !== "----" && !checkDate(checkDateDPTMessage, C, A, D, true))) {
        return false
    }
    return true
}

function checkInputRET() {
    var D = Dom.get("RET_year").value;
    var A = Dom.get("RET_month").value;
    var C = Dom.get("RET_day").value;
    var B = Dom.get("airports");
    if (B[B.selectedIndex].value == "" || (C !== "--" && A !== "--" && D !== "----" && !checkDate(checkDateRETMessage, C, A, D, true))) {
        return false
    }
    return true
}

function LPad(ContentToSize,PadLength,PadChar)
  {
     var PaddedString=ContentToSize.toString();
     for(var i=ContentToSize.length+1;i<=PadLength;i++)
     {
         PaddedString=PadChar+PaddedString;
     }
     return PaddedString;
  }

function getQueryDPT(A) {
    var C = Dom.get("DPT_year").value;
    var E = Dom.get("DPT_month").value;
    var F = Dom.get("DPT_day").value;
    var B = Dom.get("airports");
	var D='';
	if(Dom.get('fromtoairport-1').checked){
		D = "service=schedule&lang=" + LANG + "&searchtype=B&dptcodetype=STA&locale=" + LANG + "&dptcode=HAM&arvcodetype=STA&arvcode=" + B[B.selectedIndex].value;
	}else{
		D = "service=schedule&lang=" + LANG + "&searchtype=B&dptcodetype=STA&locale=" + LANG + "&arvcode=HAM&arvcodetype=STA&dptcode=" + B[B.selectedIndex].value;
	}
    if (!A && F !== "--" && E !== "--" && C !== "----") {
        D += "&dd_schedule=" + F + "&mm_schedule=" + E + "&yyyy_schedule=" + C
    } else {
        if (A) {
            D += "&recall=true"
        }else{
//			var date=new Date();
//			D += "&dd_schedule=" + date.getDate() + "&mm_schedule=" + (date.getMonth() + 1) + "&yyyy_schedule=" + date.getFullYear();
			D += "&filterbyperiod=true";
		}
    }
    return D
}
Event.onDOMReady(init);


var hideCalendars = function() {
    if (calendarTo) {
        calendarTo.hide()
    }
    if (calendarFrom) {
        calendarFrom.hide()
    }
};

var submitFormOnEnter = function(){
	B = Dom.get('airports');
	if(B[B.selectedIndex].value != ""){
		doSearch();
	}
}


var addKeyEventListeners = function() {
    var B = new YAHOO.util.KeyListener(document, {keys: 27}, // ESC
    {
        fn: hideCalendars,
        scope: document,
        correctScope: true
    },
    "keyup");
    B.enable();

    var B = new YAHOO.util.KeyListener('airports', {keys: 13}, // ENTER
    {
        fn: submitFormOnEnter,
        scope: document,
        correctScope: true
    },
    "keyup");
    B.enable();
};


var hideViaRowsRET = function(){
	for(i=0; i < viaFlightRowsRET.length; i++){
		 Dom.setStyle(dataTableRET.getTrEl(viaFlightRowsRET[i]), 'display', 'none');
	}
};
	
var showViaRowsRET = function(){		
	for(i=0; i < viaFlightRowsRET.length; i++){
		 Dom.setStyle(dataTableRET.getTrEl(viaFlightRowsRET[i]), 'display', '');			 
	}
	notice = Dom.get('noticeViaRET');
	notice.parentNode.removeChild(notice);
};

var hideViaRowsDPT = function(){
	for(var i=0; i < viaFlightRowsDPT.length; i++){
		 Dom.setStyle(dataTableDPT.getTrEl(viaFlightRowsDPT[i]), 'display', 'none');				 
	}
};

var showViaRowsDPT = function(){		
	for(var i=0; i < viaFlightRowsDPT.length; i++){
		 Dom.setStyle(dataTableDPT.getTrEl(viaFlightRowsDPT[i]), 'display', '');
	}
	notice = Dom.get('noticeViaDPT');	
	notice.parentNode.removeChild(notice);	
};

Event.onDOMReady(function() {			
	Dom.get('airports').focus();
    addKeyEventListeners();
    calendarTo.showEvent.subscribe(function() {
        var D = Dom.getElementsByClassName("selector", "a", "calendarToDiv");
        for (i = 0; i < D.length; i++) {
            var C = Dom.get("calendarToButton").getAttribute("tabindex");
            D[i].setAttribute("tabindex", C)
        }
        Dom.getElementsByClassName("today", "td", "calendarToDiv")[0].firstChild.focus()
    });
    calendarTo.hideEvent.subscribe(function() {
        if (calendarToButtonFocus == true) {
            Dom.get("calendarToButton").focus()
        }
    });
    calendarFrom.showEvent.subscribe(function() {
        var D = Dom.getElementsByClassName("selector", "a", "calendarFromDiv");
        for (i = 0; i < D.length; i++) {
            var C = Dom.get("calendarFromButton").getAttribute("tabindex");
            D[i].setAttribute("tabindex", C)
        }
        Dom.getElementsByClassName("today", "td", "calendarFromDiv")[0].firstChild.focus()
    });
    calendarFrom.hideEvent.subscribe(function() {
        if (calendarFromButtonFocus == true) {
            Dom.get("calendarFromButton").focus()
        }
    });
	var directflight_tooltip=Dom.get('directflight_tooltip');
	if(directflight_tooltip!==null){
		directflight_tooltip.title=TEXTS.DIREKT_FLUEGE;
		directflight_tooltip.alt=TEXTS.DIREKT_FLUEGE;
	}
});
