var isIE = false; var req; var TempDiv; var TempIfr; var TempFieldname; var TempHiddenfieldname; var full = false; var search_letter = ""; function disableEnterKey(e) { var key; if(window.event) key = window.event.keyCode; //IE else key = e.which; //firefox if(key == 13) return false; else return true; } function init(startDiv, startIfr, zielDiv, zielIfr) { aus(startDiv, startIfr); document.getElementById(startDiv).setAttribute("autocomplete","off"); aus(zielDiv, zielIfr); document.getElementById(zielDiv).setAttribute("autocomplete","off"); } function aus(what, iFR) { document.getElementById(what).style.display = "none"; if(isIE == true) { document.getElementById(iFR).style.display = "none"; var DivRef = document.getElementById(what); var IfrRef = document.getElementById(iFR); IfrRef.style.width = DivRef.offsetWidth; IfrRef.style.height = DivRef.offsetHeight; IfrRef.style.top = DivRef.style.top; IfrRef.style.left = DivRef.style.left; IfrRef.style.zIndex = DivRef.style.zIndex - 1; IfrRef.style.display = DivRef.style.display; } } function an(what, iFR) { document.getElementById(what).style.display = ""; if(isIE == true) { var DivRef = document.getElementById(what); var IfrRef = document.getElementById(iFR); DivRef.style.display = "block"; IfrRef.style.width = DivRef.offsetWidth; TEMPheight = DivRef.offsetHeight - 3; IfrRef.style.height = TEMPheight; IfrRef.style.top = DivRef.style.top; IfrRef.style.left = DivRef.style.left; IfrRef.style.zIndex = DivRef.style.zIndex - 1; IfrRef.style.display = "block"; } } function div_display(where, what) { document.getElementById(where).innerHTML = what; if(isIE == true) { var DivRef = document.getElementById(TempDiv); var IfrRef = document.getElementById(TempIfr); DivRef.style.display = "block"; IfrRef.style.width = DivRef.offsetWidth; TEMPheight = DivRef.offsetHeight - 3; IfrRef.style.height = TEMPheight; IfrRef.style.top = DivRef.style.top; IfrRef.style.left = DivRef.style.left; IfrRef.style.zIndex = DivRef.style.zIndex - 1; } } function hotel_code(letter, aktDiv, aktIfr, fieldname, hiddenfieldname) { TempDiv = aktDiv; TempIfr = aktIfr; TempFieldname = fieldname; TempHiddenfieldname = hiddenfieldname; if(letter.length == 3) { search_letter = letter; aus(aktDiv, aktIfr); letter = escape(letter); initVar = true; load3lc_hotel('inc/3lc/3lc_hotels.php?param=' + letter); } if(letter.length > 3) { //console.debug("greater 3 und letter="+letter); if(initVar == false) { letter = escape(letter); initVar = true; load3lc_hotel('inc/3lc/3lc_hotels.php?param=' + letter); } var letter_comp = letter.toLowerCase(); aus(aktDiv, aktIfr); if (req.readyState == 4) { if (req.status == 200) { buildHotels(letter_comp, TempDiv, TempIfr, TempFieldname, TempHiddenfieldname); } } } if(letter.length < 3) { aus(aktDiv, aktIfr); initVar = false; } } function airline_code(letter, aktDiv, aktIfr, fieldname, hiddenfieldname, multiairport) { TempDiv = aktDiv; TempIfr = aktIfr; TempFieldname = fieldname; TempHiddenfieldname = hiddenfieldname; if(letter.length == 3) { aus(aktDiv, aktIfr); letter = escape(letter); initVar = true; load3lc('inc/3lc/3lc.php?param=' + letter + '&multi=' + multiairport); } if(letter.length > 3) { if(initVar == false) { letter = escape(letter); initVar = true; load3lc('inc/3lc/3lc.php?param=' + letter + '&multi=' + multiairport); } var letter_comp = letter.toLowerCase(); aus(aktDiv, aktIfr); if (req.readyState == 4) { if (req.status == 200) { buildAirports(letter_comp, TempDiv, TempIfr, TempFieldname, TempHiddenfieldname); } } } if(letter.length < 3) { aus(aktDiv, aktIfr); initVar = false; } } function airline_short(letter, aktDiv, aktIfr, fieldname, hiddenfieldname, multiairport) { TempDiv = aktDiv; TempIfr = aktIfr; TempFieldname = fieldname; TempHiddenfieldname = hiddenfieldname; if(letter.length == 3) { aus(aktDiv, aktIfr); letter = escape(letter); initVar = true; short_load3lc('inc/3lc/3lc.php?param=' + letter + '&multi=' + multiairport); } } function short_load3lc(evt) { try { short_loadXMLDoc(evt); } catch(e) { var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error"); alert("Unable to get XML data:\n" + msg); return; } } function short_loadXMLDoc(url) { if (window.XMLHttpRequest) { req = new XMLHttpRequest(); req.onreadystatechange = short_processReqChange; req.open("GET", url, true); req.send(null); } else if (window.ActiveXObject) { isIE = true; req = new ActiveXObject("Microsoft.XMLHTTP"); if (req) { req.onreadystatechange = short_processReqChange; req.open("GET", url, true); req.send(); } } } function short_processReqChange() { if (req.readyState == 4) { if (req.status == 200) { short_buildAirports("", TempDiv, TempIfr, TempFieldname, TempHiddenfieldname); } else { alert("There was a problem retrieving the XML data:\n" + req.statusText); } } } function load3lc_hotel(evt) { try { loadXMLDocHotel(evt); } catch(e) { var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error"); alert("Unable to get XML data:\n" + msg); return; } } function loadXMLDocHotel(url) { if (window.XMLHttpRequest) { req = new XMLHttpRequest(); req.onreadystatechange = processReqChangeHotel; req.open("GET", url, true); req.send(null); } else if (window.ActiveXObject) { isIE = true; req = new ActiveXObject("Microsoft.XMLHTTP"); if (req) { req.onreadystatechange = processReqChangeHotel; req.open("GET", url, true); req.send(); } } } function processReqChangeHotel() { if (req.readyState == 4) { if (req.status == 200) { buildHotels("", TempDiv, TempIfr, TempFieldname, TempHiddenfieldname); } else { alert("There was a problem retrieving the XML data:\n" + req.statusText); } } } function load3lc(evt) { try { loadXMLDoc(evt); } catch(e) { var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error"); alert("Unable to get XML data:\n" + msg); return; } } function loadXMLDoc(url) { if (window.XMLHttpRequest) { req = new XMLHttpRequest(); req.onreadystatechange = processReqChange; req.open("GET", url, true); req.send(null); } else if (window.ActiveXObject) { isIE = true; req = new ActiveXObject("Microsoft.XMLHTTP"); if (req) { req.onreadystatechange = processReqChange; req.open("GET", url, true); req.send(); } } } function processReqChange() { if (req.readyState == 4) { if (req.status == 200) { buildAirports("", TempDiv, TempIfr, TempFieldname, TempHiddenfieldname); } else { alert("There was a problem retrieving the XML data:\n" + req.statusText); } } } /*******************************************************************************/ // new parser... // added not_rec for non recursive parsing 10.Jun.2008 Jo /*******************************************************************************/ function getElementTextNS(prefix, local, parentElem, index, not_rec) { var result = ""; if (prefix && isIE) { result = parentElem.getElementsByTagName(prefix + ":" + local); if (! result) { return ''; } else { } result=result[index]; } else { if ( ! not_rec ) { result = parentElem.getElementsByTagName(local); } else { result = new Array(); for ( i=0; i< parentElem.childNodes.length; i++ ) { if ( parentElem.childNodes[i].nodeName == local ) { result[result.length] = parentElem.childNodes[i]; } } } if (! result) { return ''; } else { //debug ("Result für "+local+":"+typeof(result)); } result=result[index]; } if (result) { if (! result.childNodes) { return ''; } if (result.childNodes.length > 1) { return result.childNodes[1].nodeValue; } else { if ( result.childNodes.length==0) { return ''; } return result.firstChild.nodeValue; } } else { return '';// return "n/a"; } } function buildHotels(what, aktDiv, aktIfr, fieldname, hiddenfieldname) { var select = ""; tmp_land = ""; var full = false; var max_hits = 25; var tmp_land = ""; var items = req.responseXML.getElementsByTagName("item"); if ( what != "" ) { pattern = eval("/"+what+"/ig"); // durch exec ersetzen } // We need search_letter as a global which is set on letter length 3 if ( typeof(search_letter) == undefined ) exact_pattern = ''; exact_pattern = eval("/^"+search_letter+"$/ig"); counter = 0; for ( i=0; i< items.length; i++ ) { match = 1; id = getElementTextNS("", "id", items[i], 0); name = getElementTextNS("", "name", items[i], 0); district = getElementTextNS("", "district", items[i], 0); land = getElementTextNS("", "land", items[i], 0); altname = getElementTextNS("", "altnames", items[i], 0); if ( what != "") { match = 0; if ( typeof(name) == undefined) name = ""; tmp = name.match(pattern); if ( tmp != null ) if ( tmp.length > 0 ) { match++; } // Now the altnames only need to check if not empty if ( ! match ) if ( typeof(altname) != undefined) { altnames = altname.split(';'); for ( j=0; j 0 ) { //console.debug("match for "+what + " with " + altnames[j] ); match++; break; } } } } if ( ! match ) continue; counter ++ tmp_land.toLowerCase() == land.toLowerCase if ( counter >= (max_hits +10) ) { select += "
 
"; select += "
und "+(items.length-max_hits) +" weitere
"; break; } if ( counter >= max_hits ) { tmp = name.match(exact_pattern); if ( tmp == null ) continue; if ( tmp.length == 0 ) continue; district = search_letter; } if ( tmp_land.toLowerCase() != land.toLowerCase() ) { select += "
" + land + "
"; tmp_land = land; } select = select + "
" + name + "  (" + district + ")" + "
"; full = true; div_display(aktDiv, select); an(aktDiv, aktIfr); } if ( full == true ) { div_display(aktDiv, select); an(aktDiv, aktIfr); } } function buildAirports(what, aktDiv, aktIfr, fieldname, hiddenfieldname) { var select = ""; if(what == "") { var full = false; var tmp_land = ""; var items = req.responseXML.getElementsByTagName("item"); for (var i = 0; i < items.length; i++) { LC_city = getElementTextNS("", "airport", items[i], 0); LC_airportname = getElementTextNS("", "portname", items[i], 0); LC_id = getElementTextNS("", "id", items[i], 0); LC_land = getElementTextNS("", "land", items[i], 0); LC_code = getElementTextNS("", "code", items[i], 0); if(LC_airportname != "N/A") { LC_airportname_3lc = " - " + LC_airportname; LC_airportname = " - " + LC_airportname + " (" + LC_code + ")"; } else { LC_airportname = " (" + LC_code + ")"; LC_airportname_3lc = ""; } if(LC_id != "DOUBLE") { if(LC_id != "SHORT") { if(LC_land != tmp_land) { select = select + "
" + LC_land + "
"; tmp_land = LC_land; } full = true; select = select + "
" + LC_city + LC_airportname + "
"; } } if( LC_id == "SHORT") { full = true; select = select + "
" + LC_code + " - " + LC_city + LC_airportname_3lc + "
"; if(items.length > 1) { select = select + "
"; } } } if(full == true) { div_display(aktDiv, select); an(aktDiv, aktIfr); } else { aus(aktDiv, aktIfr); } } else { var full = false; var tmp_land = ""; var select = ""; var items = req.responseXML.getElementsByTagName("item"); for (var i = 0; i < items.length; i++) { LC_city = getElementTextNS("", "airport", items[i], 0); LC_id = getElementTextNS("", "id", items[i], 0); LC_land = getElementTextNS("", "land", items[i], 0); LC_airportname = getElementTextNS("", "portname", items[i], 0); LC_code = getElementTextNS("", "code", items[i], 0); if(LC_airportname != "N/A") { LC_airportname = " - " + LC_airportname + " (" + LC_code + ")"; } else { LC_airportname = " (" + LC_code + ")"; LC_airportname_3lc = ""; } CompA = LC_city + LC_airportname; CompA = CompA.substring(0, what.length); CompA = CompA.toLowerCase(); CompB = what; if(CompA == CompB && LC_id != "SHORT") { if(LC_id != "SHORT") { if(LC_land != tmp_land) { select = select + "
" + LC_land + "
"; tmp_land = LC_land; } full = true; select = select + "
" + LC_city + " " + LC_airportname + "
"; } } } if(full == true) { div_display(aktDiv, select); an(aktDiv, aktIfr); } else { aus(aktDiv, aktIfr); } } } function short_buildAirports(what, aktDiv, aktIfr, fieldname, hiddenfieldname) { var select = ""; if(what == "") { var items = req.responseXML.getElementsByTagName("item"); LC_city = getElementTextNS("", "airport", items[0], 0); LC_airportname = getElementTextNS("", "portname", items[0], 0); LC_id = getElementTextNS("", "id", items[0], 0); LC_land = getElementTextNS("", "land", items[0], 0); LC_code = getElementTextNS("", "code", items[0], 0); if(getElementTextNS("", "portname", items[0], 0) != "N/A") { portn = ' - ' + getElementTextNS("", "portname", items[0], 0); } else { portn = ''; } if(aktDiv == "start3lc") { document.flug.start_text.value = getElementTextNS("", "airport", items[0], 0) + portn; document.flug.VON.value = getElementTextNS("", "code", items[0], 0); } if(aktDiv == "ziel3lc") { document.flug.ziel_text.value = getElementTextNS("", "airport", items[0], 0) + portn; document.flug.NACH.value = getElementTextNS("", "code", items[0], 0); } } } function changeField(what, aktDiv, aktIfr, fieldname, hiddenfieldname) { aus(aktDiv, aktIfr); var items = req.responseXML.getElementsByTagName("item"); var port3lc = getElementTextNS("", "portname", items[what], 0); if(port3lc == "N/A") {port3lc = "";} else {port3lc = " - " + port3lc;} if(aktDiv == "start3lc") { document.flug.start_text.value = getElementTextNS("", "airport", items[what], 0) + port3lc; document.flug.VON.value = getElementTextNS("", "code", items[what], 0); } if(aktDiv == "ziel3lc") { document.flug.ziel_text.value = getElementTextNS("", "airport", items[what], 0) + port3lc; document.flug.NACH.value = getElementTextNS("", "code", items[what], 0); } } function changeFieldHotel(what, aktDiv, aktIfr, fieldname, hiddenfieldname) { aus(aktDiv, aktIfr); var items = req.responseXML.getElementsByTagName("item"); port3lc = ""; //console.debug("active="+aktDiv+ ' what='+ what); if(aktDiv == "start3lc") { name = getElementTextNS("", "name", items[what], 0); tmp = getElementTextNS("", "district", items[what], 0); if ( tmp == null ) tmp = name; else tmp = name + " ("+tmp+")"; document.flug.start_text.value = tmp; document.flug.VON.value = getElementTextNS("", "id", items[what], 0); } }