function cmCarsSuggest(){var urlSugg=location.protocol+"//"+location.host+"/suggestoutput.php";var gMode=1;var gStLen=3;var searchS="";var searchPage="";var searchI=0;var lastSearchInput=0;this.lastSearchInput=lastSearchInput;var indexMax=0;var indexMin=0;var indexCurr=0;var sugObj=new Object;sugObj.dep=0;sugObj.dest=0;var tabDepFull=new Array();var tabDepCode=new Array();var sugC=new Object;sugC.dep=0;sugC.dest=0;var sugS=new Object;sugS.dep=0;sugS.dest=0;var sugIB=new Object;sugIB.dep=0;sugIB.dest=0;var sugIO=new Object;sugIO.dep=0;sugIO.dest=0;var currC;var safKD=0;var safB=-1;var gExit=0;var gCallerObj;var gMore=0;var gTimeout=300;var gLang;var safB=navigator.appVersion.search(/Safari/);var ajaxRun=0;var gCompensateDest=0;function setMode(mode){gMode=mode}this.setMode=setMode;function compensateDest(){gCompensateDest=1}this.compensateDest=compensateDest;function listenSearch(field){try{getObj(field).addEventListener("keyup",processKey,false)}catch(e){try{getObj(field).attachEvent("onkeyup",processKey)}catch(f){}}}this.listenSearch=listenSearch;function showError(){try{searchI.parentNode.className="error"}catch(e){}}function hideError(){try{searchI.parentNode.className=""}catch(e){}}function processKey(event){if(gExit==1){return}if(typeof(event.keyCode)!="undefined"&&typeof(event.keyCode)!=0&&event.keyCode!=37&&event.keyCode!=39){hideError()}searchI=(event.target)?event.target:event.srcElement;if(event.keyCode==13){if(gMode==1){fill()}else{fillGeo()}}else{if(indexMax>=0&&(event.keyCode==38||event.keyCode==40)){if(safB!=-1){if(safKD==0){safKD=1}else{safKD=0;return}}if(!sugC[searchI.id]){return}if(event.keyCode==40){setNextCode()}if(event.keyCode==38){setPreviousCode()}scrollSuggest()}else{if(event.keyCode==27||event.keyCode==9){gCallerObj.hideDivs()}else{if((event.keyCode>=65&&event.keyCode<=90)||event.keyCode==8||event.keyCode==32||event.keyCode==46){if(gMode==1){docGet(searchI.id+"Airport").value=""}showResults(event)}}}}}this.processKey=processKey;function showResults(field){searchI=(field.target)?field.target:field.srcElement;param=(field.target)?field.target.value:field.srcElement.value;if(param.length<3){searchS=param;if(gMode==1){docGet("sug"+searchI.id+"_iframe").style.visibility="hidden"}else{docGet("sug"+searchI.id.substr(0,3)+"_iframe").style.visibility="hidden"}if(gMode==1){docGet("submitEnabled").value=1}return}else{if(gMode==1){docGet(searchI.id+"Airport").value=""}}if(param==searchS){if(docGet("sug"+searchI.id+"_iframe").style.visibility!="visible"){showError()}return}else{searchS=param}doSearch()}this.showResults=showResults;function doSearch(pForce){noResults=null;if(searchS.length<3){return}force=pForce;if(typeof(pForce)=="undefined"){force=0}if(gMode!=2&&force==0&&gMore==0){if(searchS.length>3&&typeof(sugObj[searchI.id])!="undefined"&&sugObj[searchI.id].length>0&&(searchS.substring(0,gStLen)==sugS[searchI.id])){var sugg=new Array();sugg[0]=new Array();var tmpIndex=0;var tmpCountry=0;var tmpRegion=0;var tmpSearchS=searchS.toLowerCase().replace(" ","-").replace("-","[ -]");for(var i=0;i<sugObj[searchI.id].length;++i){if(sugObj[searchI.id][i][0].length=="4"&&i=="0"){continue}else{if(sugObj[searchI.id][i][0]=="0"){tmpCountry=sugObj[searchI.id][i];tmpRegion=0;continue}else{if(sugObj[searchI.id][i][0]==1){var pass=eval("sugObj[searchI.id]["+i+"][1].toLowerCase().match(/^"+tmpSearchS+"/g)");if(pass){tmpRegion=1;sugg[++tmpIndex]=sugObj[searchI.id][i]}else{tmpRegion=0}tmpCountry=0;continue}}}if(tmpRegion==1){sugg[++tmpIndex]=sugObj[searchI.id][i]}else{if(eval("sugObj[searchI.id]["+i+"][1].toLowerCase().match(/^"+tmpSearchS+"/g)")){if(tmpCountry!=0){sugg[++tmpIndex]=tmpCountry;tmpCountry=0}sugg[++tmpIndex]=sugObj[searchI.id][i]}}}if(sugS[searchI.id]==searchS.substring(0,gStLen)){sugC[searchI.id]=sugg;showSuggest(sugg)}return}if(sugS[searchI.id]==searchS.substring(0,gStLen)){sugC[searchI.id]=sugObj[searchI.id];showSuggest(sugC[searchI.id]);return}}if(gMore==1){gMore=0}var params="query="+escape(searchS.substr(0,3))+"&field="+escape(searchI.id);if(gMode!=1){params+="&mode=2&country="+docGet("country").value}if(force){params+="&force=1"}if(gLang!=-1){params+="&lang="+gLang}if(ajaxRun==0){ajaxRun=1;createAjax(params,execResult,urlSugg)}function execResult(txt,xmL){ajaxRun=0;try{if(txt!=-1&&txt.length>10){eval(txt)}else{if(searchI&&searchI.id){try{docGet("sug"+searchI.id+"_iframe").style.visibility="hidden";docGet("submitEnabled").value=1;showError()}catch(g){log(g)}}}}catch(f){log(f)}}function geo(field,mode,sugg){currC="";gMode=mode;sugg=translateSuggest(sugg);try{if(gMode==3){gStLen=searchS.length}else{gStLen=3}sugS[searchI.id]=searchS.substring(0,gStLen);sugIO[searchI.id]=docGet("sug"+searchI.id.substr(0,3)+"_iframe");try{sugIB[searchI.id]=getIFrameDocument("sug"+searchI.id.substr(0,3)+"_iframe")}catch(ff){}try{sugIB[searchI.id].getElementById("sugContent").innerHTML=""}catch(ff){gExit=1;return}sugObj[field]=sugg;sugC[field]=sugg}catch(ff){}try{if(field==searchI.id){coords.setXY(field,"sugHolder");showSuggest(sugg)}}catch(ff){}}function sug(field,sugg){sugg=translateSuggest(sugg);try{sugS[searchI.id]=searchS.substring(0,gStLen);sugIO[searchI.id]=docGet("sug"+searchI.id+"_iframe");try{sugIB[searchI.id]=getIFrameDocument("sug"+searchI.id+"_iframe")}catch(ff){}try{sugIB[searchI.id].getElementById("sugContent").innerHTML=""}catch(ff){gExit=1;return}sugObj[field]=sugg;sugC[field]=sugg}catch(ff){}try{if(field==searchI.id){showSuggest(sugg)}}catch(ff){}}function actionFailure(){}}function translateSuggest(sugg){var sugArray=new Array();if(gMode>1){var fields=4;var loops=parseInt(sugg.length/fields);for(var i=0;i<loops;++i){sugArray[i]=new Array(sugg[0+(i*fields)],sugg[1+(i*fields)],sugg[2+(i*fields)],sugg[3+(i*fields)])}}else{var fields=2;var loops=parseInt(sugg.length/fields);for(var i=0;i<loops;++i){sugArray[i]=new Array(sugg[0+(i*fields)],sugg[1+(i*fields)])}}return sugArray}function showSuggest(sugg){try{currC=0;var html="";var rows=0;var countryCount=0;tmpRegion=0;if(gMode==2){html+='<div class="sugCountry">'+js_tr.suggest["popular_cities"]+"</div>"}else{if(gMode==3){html+='<div class="sugCountry">'+js_tr.suggest["please_select"]+"</div>"}}for(var i=0;i<sugg.length;++i){if(sugg[i].length>0){if(sugg[i][0]=="0"){if(countryCount==0&&((sugg[0][0]&&sugg[0][0].length>3)||(sugg[1][0]&&sugg[1][0].length>4))){html+='<div class="sugCountry" style="border-top: 1px dashed #005E34;">'+sugg[i][1]+"</div>"}else{html+='<div class="sugCountry">'+sugg[i][1]+"</div>"}countryCount++;tmpRegion=0}else{if(sugg[i][0]==1){html+='<div class="sugRegion">'+sugg[i][1]+" ("+js_tr.suggest["region"]+")</div>";tmpRegion=1}else{if(sugg[i][0]=="more"){html+='<div class="sugCity" id="more" onmouseover="sug.setRow(\'more\')" onclick="sug.fillGeo(\'more\')"><div class="sugMore">'+js_tr.suggest["more_cities"]+"</div></div>"}else{if(gMode==1){var city="";var name=sugg[i][1].replace(/(.{3})(.*)/g,'<span class="first3">$1</span>$2');if(i==0&&sugg[0][0].length==0){continue}else{if(i==0&&sugg[0][0].length==4){city+='<div id="'+sugg[0][0]+'" class="sugAirport" onMouseOver="sug.setRow(\''+sugg[0][0]+"')\" onclick=\"sug.fill('"+sugg[0][0]+"')\">";city+='<span class="first3">'+sugg[0][0].substring(0,3)+"</span> - "+sugg[0][1];city+="</div>"}else{if(sugg[i][0].length>4){countryIcon="";type=sugg[i][0].substring(2,4);if(type=="XX"){countryCode=sugg[i][0].substring(0,2);countryIcon='style="background-image:url(/framework/de-de/icons/icon_'+countryCode+'.gif);background-repeat:no-repeat;background-position:8px 4px;"';countryClass="Country"}else{countryClass="Region"}city+='<div id="'+sugg[i][0]+'" class="sugAirport'+countryClass+'" '+countryIcon+" onMouseOver=\"sug.setRow('"+sugg[i][0]+"')\" onclick=\"sug.fill('"+sugg[i][0]+"')\">";city+=name;if(countryClass=="Region"){city+=" ("+js_tr.suggest["region"]+")"}city+="</div>"}else{city+='<div class="sugCity" id="'+sugg[i][0]+'" onmouseover="sug.setRow(\''+sugg[i][0];city+="')\" onclick=\"sug.fill('"+sugg[i][0]+"')\">"+name+"</div>"}}}}else{if(i==0&&sugg[0][0].length==0){continue}else{if(typeof(sugg[i][2])=="object"){var city='<div class="sugCity" id="'+sugg[i][0]+'" onmouseover="sug.setRow(\''+sugg[i][0];city+='\')" onclick="sug.fillGeo()">';city+="<em>"+parseInt(sugg[i][2].length/3)+" "+sugg[i][1]+" "+js_tr.suggest["show_card"]+"</em></div>"}else{var city='<div class="sugCity" id="'+sugg[i][0]+'" onmouseover=\'sug.setRow("'+sugg[i][0]+"\")'";city+=" onclick='sug.fillGeo(\""+sugg[i][0]+'","'+sugg[i][1].replace(/'/g,"&#39;")+'",'+sugg[i][2]+","+sugg[i][3]+")'>"+sugg[i][1]+"</div>"}}}html+=city}}}++rows}}if(rows>0&&gMode>1){++rows}if(rows==0){sugIB[searchI.id].getElementById("sugContent").innerHTML="";sugIO[searchI.id].style.visibility="hidden";if(gMode!=1){gCallerObj.notFound()}return}else{hideError()}sugIB[searchI.id].getElementById("sugContent").innerHTML=html;var iFrameHeight=0;if(sugg[0].length>0){iFrameHeight=3}if(rows>6){iFrameHeight+=rows*18}else{iFrameHeight+=rows*19}if(iFrameHeight>200){iFrameHeight=200}sugIO[searchI.id].style.height=iFrameHeight+"px";sugIO[searchI.id].style.visibility="visible";docGet("submitEnabled").value=0;if(rows>0&&gMode>1){sugIB[searchI.id].getElementById(sugg[1][0]).className=sugIB[searchI.id].getElementById(sugg[1][0]).className+"A";currC=sugg[1][0]}}catch(ff){log(ff)}}function setNextCode(field){var sugg=sugC[searchI.id];var tryNext=0;if(!currC){jumpToFirst()}else{for(var i=0;i<sugg.length;++i){if(sugg[i][0]!=0&&sugg[i][0]!=1){if(tryNext==1){currC=sugg[i][0];sugIB[searchI.id].getElementById(currC).className=sugIB[searchI.id].getElementById(currC).className+"A";return}if(sugg[i][0]==currC){tryNext=1;sugIB[searchI.id].getElementById(currC).className=sugIB[searchI.id].getElementById(currC).className.substr(0,sugIB[searchI.id].getElementById(currC).className.length-1)}}}if(tryNext==1){jumpToFirst()}}}function setPreviousCode(){var sugg=sugC[searchI.id];var tryPrevious=0;if(!currC){jumpToLast()}else{var minIndex=1;if(sugg[0].length>0){minIndex=0}for(var i=sugg.length-1;i>=minIndex;--i){if(sugg[i][0]!="undefined"&&sugg[i][0]!=0&&sugg[i][0]!=1){if(tryPrevious==1){currC=sugg[i][0];sugIB[searchI.id].getElementById(currC).className=sugIB[searchI.id].getElementById(currC).className+"A";return}if(sugg[i][0]==currC){tryPrevious=1;sugIB[searchI.id].getElementById(currC).className=sugIB[searchI.id].getElementById(currC).className.substr(0,sugIB[searchI.id].getElementById(currC).className.length-1)}}}if(tryPrevious==1){jumpToLast()}}}function jumpToFirst(){var sugg=sugC[searchI.id];if(currC){sugIB[searchI.id].getElementById(currC).className=sugIB[searchI.id].getElementById(currC).className}if(sugg[0][0]&&sugg[0][0].length>0){currC=sugg[0][0];sugIB[searchI.id].getElementById(currC).className=sugIB[searchI.id].getElementById(currC).className+"A";return}else{for(var i=1;i<sugg.length;++i){if(sugg[i][0]!=0){currC=sugg[i][0];sugIB[searchI.id].getElementById(currC).className=sugIB[searchI.id].getElementById(currC).className+"A";return}}}}function jumpToLast(){var sugg=sugC[searchI.id];if(currC){sugIB[searchI.id].getElementById(currC).className=sugIB[searchI.id].getElementById(currC).className}for(var i=sugg.length-1;i>=0;--i){if(sugg[i][0]!=0){currC=sugg[i][0];sugIB[searchI.id].getElementById(currC).className=sugIB[searchI.id].getElementById(currC).className+"A";return}}}function scrollSuggest(){var sugg=sugC[searchI.id];var iframeWin=getIFrameWindow("sug"+searchI.id.substr(0,3)+"_iframe");maxHeight=180;singleHeight=18;for(var i=0;i<sugg.length;++i){if(sugg[i][0]==currC){var y=singleHeight*i;if(y>maxHeight){var newPos=(parseInt((y/maxHeight))*1)*maxHeight;iframeWin.scrollTo(0,newPos)}else{iframeWin.scrollTo(0,0)}}}}function getIFrameDocument(aID){var rv=null;if(docGet(aID).contentDocument){rv=docGet(aID).contentDocument}else{rv=document.frames[aID].document}return rv}function getIFrameWindow(aID){var rv=null;if(docGet(aID).contentWindow){rv=docGet(aID).contentWindow}else{rv=document.frames[aID].window}return rv}function setRow(code){if(currC){sugIB[searchI.id].getElementById(currC).className=sugIB[searchI.id].getElementById(currC).className.substr(0,sugIB[searchI.id].getElementById(currC).className.length-1)}sugIB[searchI.id].getElementById(code).className=sugIB[searchI.id].getElementById(code).className+"A";currC=code}this.setRow=setRow;function fill(code,field){var country="";if(!code||code<0){code=currC}if(!field){field=searchI.id}try{sugCity=sugIB[searchI.id].getElementById(code).innerHTML;sugState="XX";if(code.length>4){sugStates="";sugAirport=code.substring(0,2);sugState=code.substring(2,4);if(sugState!="XX"){sugStates=sugState+sugAirport;sugAirport=""}else{country=sugAirport}}else{sugAirport=code.substring(0,3)}if(gCompensateDest==1&&field=="dep"){docGet("dest").value=sugCity.replace(/<[^>]*>/g,"");if(code.length<7){if(sugState!="XX"){docGet("destStates").value=sugStates;docGet("destAirport").value=""}else{docGet("destAirport").value=sugAirport;docGet("destCountry").value=country}}}docGet(field).value=sugCity.replace(/<[^>]*>/g,"");if(code.length<7){if(sugState!="XX"){docGet(field+"States").value=sugStates;docGet(field+"Airport").value=""}else{if(country==""){docGet(field+"Airport").value=sugAirport}}}docGet(field+"Country").value=country;sugIB[searchI.id].getElementById("sugContent").innerHTML="";try{docGet("sug"+searchI.id+"_iframe").style.visibility="hidden"}catch(f){}searchS="";gCallerObj.gotoNext(field)}catch(f){}docGet("submitEnabled").value=1}this.fill=fill;function fillGeo(code,name,xcoord,ycoord,lastField){if(!code||code<0){code=currC}if(typeof(lastField)!="undefined"){field=lastField}else{field=searchI.id}if(code==""){return}if(code=="more"){if(gMore==0){doSearch(1);gMore=1}else{}return}var anotherArray=0;if(!name&&typeof(field)!="undefined"&&typeof(sugC[field])!="undefined"){for(var i=0;i<sugC[field].length;++i){if(typeof(sugC[field][i][0])!="undefined"&&sugC[field][i][0]==code){name=sugC[field][i][1];xcoord=sugC[field][i][2];ycoord=sugC[field][i][3];break}}}if(typeof(xcoord)=="object"){anotherArray=xcoord}if(name==0||typeof(name)=="undefined"){try{}catch(ff){}return false}searchI.value=name;try{sugIB[searchI.id].getElementById("sugContent").innerHTML="";try{docGet("sug"+searchI.id.substr(0,3)+"_iframe").style.visibility="hidden"}catch(f){}searchS="";if(anotherArray!=0){gCallerObj.fillMultiGeo(name,anotherArray)}else{gCallerObj.fillGeo(code,name,xcoord,ycoord);docGet("submitEnabled").value=1}currC=""}catch(f){}try{if(searchI.id.length>3){var last=parseInt(searchI.id.substr(3,1))+1;var param="if(document.getElementById('"+searchI.id.substr(0,3)+last+"')){document.getElementById('"+searchI.id.substr(0,3)+last+"').focus();}";setTimeout(param,gTimeout);currC=""}}catch(ff){}}this.fillGeo=fillGeo;function setCaller(obj){gCallerObj=obj}this.setCaller=setCaller;function setLang(lang){gLang=lang}this.setLang=setLang;function createAjax(params,successHandler,curl){if(!curl){curl=url}var myAjax=new Ajax();myAjax.url=curl;myAjax.params=params;myAjax.method="POST";myAjax.onSuccess=successHandler;myAjax.onError=ajaxError;myAjax.doRequest()}function ajaxError(msg){ajaxRun=0}function log(msg){try{console.log(msg)}catch(f){try{var tmp=docGet("logs").innerHTML;docGet("logs").innerHTML=msg+"<br/>"+tmp}catch(g){}}}function docGet(nic){return document.getElementById(nic)}}var sug=new cmCarsSuggest();