var dTextbox; var aTextbox; var arTextbox; var idTextbox; var iaTextbox; var tbTextbox; var sArea; var sCountry; var TripBuilderTextboxes=new Object(); function addEvent(obj,evType,fn) { if (obj.addEventListener) { obj.addEventListener(evType,fn,false); return true; } else if (obj.attachEvent) { var r=obj.attachEvent('on'+evType,fn); return r; } else { return false; } } addEvent(window,'load',function () { if(document.getElementById('txtDepart')) { dTextbox=new AutoSuggestControl(document.getElementById('txtDepart'), new AirportSuggestions()); } if(document.getElementById('txtDestination')) { aTextbox=new AutoSuggestControl(document.getElementById('txtDestination'), new AirportSuggestions()); } if(document.getElementById('txtArea')) { arTextbox=new AutoSuggestControl(document.getElementById('txtArea'), new AirportSuggestions()); } if(document.getElementById('txtIBDepart')) { idTextbox=new AutoSuggestControl(document.getElementById('txtIBDepart'), new AirportSuggestions()); } if(document.getElementById('txtIBDestination')) { iaTextbox=new AutoSuggestControl(document.getElementById('txtIBDestination'), new AirportSuggestions()); } if (document.getElementById('txtDepartPointText0')) { TripBuilderTextboxes['txtDepartPointText0']=(new AutoSuggestControl(document.getElementById('txtDepartPointText0'), new AirportSuggestions())); TripBuilderTextboxes['txtDepartPointText1']=(new AutoSuggestControl(document.getElementById('txtDepartPointText1'), new AirportSuggestions())); TripBuilderTextboxes['txtDepartPointText2']=(new AutoSuggestControl(document.getElementById('txtDepartPointText2'), new AirportSuggestions())); TripBuilderTextboxes['txtDepartPointText3']=(new AutoSuggestControl(document.getElementById('txtDepartPointText3'), new AirportSuggestions())); TripBuilderTextboxes['txtDepartPointText4']=(new AutoSuggestControl(document.getElementById('txtDepartPointText4'), new AirportSuggestions())); TripBuilderTextboxes['txtDepartPointText5']=(new AutoSuggestControl(document.getElementById('txtDepartPointText5'), new AirportSuggestions())); TripBuilderTextboxes['txtDepartPointText6']=(new AutoSuggestControl(document.getElementById('txtDepartPointText6'), new AirportSuggestions())); TripBuilderTextboxes['txtDepartPointText7']=(new AutoSuggestControl(document.getElementById('txtDepartPointText7'), new AirportSuggestions())); TripBuilderTextboxes['txtDepartPointText8']=(new AutoSuggestControl(document.getElementById('txtDepartPointText8'), new AirportSuggestions())); TripBuilderTextboxes['txtArrivePointText0']=(new AutoSuggestControl(document.getElementById('txtArrivePointText0'), new AirportSuggestions())); TripBuilderTextboxes['txtArrivePointText1']=(new AutoSuggestControl(document.getElementById('txtArrivePointText1'), new AirportSuggestions())); TripBuilderTextboxes['txtArrivePointText2']=(new AutoSuggestControl(document.getElementById('txtArrivePointText2'), new AirportSuggestions())); TripBuilderTextboxes['txtArrivePointText3']=(new AutoSuggestControl(document.getElementById('txtArrivePointText3'), new AirportSuggestions())); TripBuilderTextboxes['txtArrivePointText4']=(new AutoSuggestControl(document.getElementById('txtArrivePointText4'), new AirportSuggestions())); TripBuilderTextboxes['txtArrivePointText5']=(new AutoSuggestControl(document.getElementById('txtArrivePointText5'), new AirportSuggestions())); TripBuilderTextboxes['txtArrivePointText6']=(new AutoSuggestControl(document.getElementById('txtArrivePointText6'), new AirportSuggestions())); TripBuilderTextboxes['txtArrivePointText7']=(new AutoSuggestControl(document.getElementById('txtArrivePointText7'), new AirportSuggestions())); TripBuilderTextboxes['txtArrivePointText8']=(new AutoSuggestControl(document.getElementById('txtArrivePointText8'), new AirportSuggestions())); } }); function DliveSearchProcessReqChange() { if(dTextbox.liveSearchReq.readyState == 4) { dTextbox.AirportStr=dTextbox.liveSearchReq.responseText; dTextbox.liveSearchProcessReqChange(false); } } function AliveSearchProcessReqChange() { if(aTextbox.liveSearchReq.readyState == 4) { aTextbox.AirportStr=aTextbox.liveSearchReq.responseText; aTextbox.liveSearchProcessReqChange(false); } } function ARliveSearchProcessReqChange() { if(arTextbox.liveSearchReq.readyState == 4) { arTextbox.AirportStr=arTextbox.liveSearchReq.responseText; arTextbox.liveSearchProcessReqChange(false); } } function IDliveSearchProcessReqChange() { if(idTextbox.liveSearchReq.readyState == 4) { idTextbox.AirportStr=idTextbox.liveSearchReq.responseText; idTextbox.liveSearchProcessReqChange(false); } } function IAliveSearchProcessReqChange() { if(iaTextbox.liveSearchReq.readyState == 4) { iaTextbox.AirportStr=iaTextbox.liveSearchReq.responseText; iaTextbox.liveSearchProcessReqChange(false); } } function TBliveSearchProcessReqChange(lCtrlId) { if(TripBuilderTextboxes[lCtrlId].liveSearchReq.readyState==4) { TripBuilderTextboxes[lCtrlId].AirportStr=TripBuilderTextboxes[lCtrlId].liveSearchReq.responseText; TripBuilderTextboxes[lCtrlId].liveSearchProcessReqChange(false); } } function chooseAirport(code,description,id) { var i; var Elem; if(document.getElementById(id+'Airport')) { document.getElementById(id+'Airport').value=code; } if(document.getElementById(id+'AirportCode')) { document.getElementById(id+'AirportCode').value=code; } if(document.getElementById('AreaCode')) { document.getElementById('AreaCode').value=code; if(document.getElementById('DestinationAirport')) { document.getElementById('DestinationAirport').value=code; } } if (id.indexOf('txtDepartPointText')==0) { i=id.right(1); if (code!='') { document.getElementById('txtDepartPointCode'+i).value=code; } if (description!='') { document.getElementById('txtDepartPointText'+i).value=description; } } if (id.indexOf('txtArrivePointText')==0) { i=parseInt(id.right(1),10); if (code!='') { document.getElementById('txtArrivePointCode'+i).value=code; } if (description!='') { document.getElementById('txtArrivePointText'+i).value=description; if (i<8) { Elem=document.getElementById('txtDepartPointCode'+(i+1)); if (Elem) { if (Elem.value=='') { Elem.value=code; Elem=document.getElementById('txtDepartPointText'+(i+1)); if (Elem) { Elem.value=description; } } } } } } if(description!='' && document.getElementById('txt'+id)) { document.getElementById('txt'+id).value=HtmlDecode(description.split('~')[0]); document.getElementById('txt'+id).title=HtmlDecode(description.split('~')[0]); document.getElementById('txt'+id).blur(); } liveSearchHide('txt'+id); } function LookupAirportTextbox(code,target) { currentTextbox=target; if (window.XMLHttpRequest) { liveSearchReq=new XMLHttpRequest(); } else if (window.ActiveXObject) { liveSearchReq=new ActiveXObject('Microsoft.XMLHTTP'); } switch(target) { case 'txtDepart': if (document.getElementById('ArrowsOut')) { document.getElementById('ArrowsOut').style.display='block'; statusMessage('Searching for departure points'); } variable='DeparturePoints'; break; case 'txtDestination': if (document.getElementById('ArrowsIn')) { document.getElementById('ArrowsIn').style.display='block'; statusMessage('Searching for destination points'); } variable='DestinationPoints'; break; case 'txtArea': if (document.getElementById('ArrowsIn')) { document.getElementById('ArrowsIn').style.display='block'; statusMessage('Searching for areas'); } variable='DestinationAreas'; break; case 'txtIBDepart': if (document.getElementById('ArrowsIOut')) { document.getElementById('ArrowsIOut').style.display='block'; statusMessage('Searching for inbound departure points'); } variable='IBDeparturePoints'; break; case 'txtIBDestination': if (document.getElementById('ArrowsIIn')) { document.getElementById('ArrowsIIn').style.display='block'; statusMessage('Searching for inbound destination points'); } variable='IBDestinationPoints'; break; variable='DestinationPoints'; } liveSearchReq.onreadystatechange=liveSearchLookupAirport; if(window.adminpage) { liveSearchReq.open('GET', '../livesearch.asp?Lookup=True&target='+target+'&q='+code.value,true); } else { liveSearchReq.open('GET', 'livesearch.asp?Lookup=True&target='+target+'&q='+code.value,true); } liveSearchReq.send(null); } function liveSearchLookupAirport() { var i; var Elem; if (liveSearchReq.readyState==4) { response=liveSearchReq.responseText; if(response!='' && response.indexOf('<')==0) { alert('Airport lookup has failed, please refresh the page and try again.'); return; } if (response.indexOf('|')>-1) { Airport=response.split('|')[0]; target=response.split('|')[1]; } else { Airport=response; target=currentTextbox; } Airport=URLDecode(Airport); switch (target) { case 'txtDepart': if (document.getElementById('ArrowsOut')) { document.getElementById('ArrowsOut').style.display='none'; } chooseAirport(document.getElementById('DepartAirportCode').value,Airport,'Depart'); chooseAirport(document.getElementById('DepartAirportCode').value,Airport,'IBDestination'); break; case 'txtDestination': if (document.getElementById('ArrowsIn')) { document.getElementById('ArrowsIn').style.display='none'; } chooseAirport(document.getElementById('DestinationAirportCode').value,Airport,'Destination'); chooseAirport(document.getElementById('DestinationAirportCode').value,Airport,'IBDepart'); break; case 'txtArea': if (document.getElementById('ArrowsIn')) { document.getElementById('ArrowsIn').style.display='none'; } chooseAirport(document.getElementById('AreaCode').value,Airport,'Destination'); break; case 'txtIBDepart': if (document.getElementById('ArrowsIOut')) { document.getElementById('ArrowsIOut').style.display='none'; } chooseAirport(document.getElementById('IBDepartAirportCode').value,Airport,'IBDepart'); break; case 'txtIBDestination': if (document.getElementById('ArrowsIIn')) { document.getElementById('ArrowsIIn').style.display='none'; } chooseAirport(document.getElementById('IBDestinationAirportCode').value,Airport,'IBDestination'); break; } if (target.indexOf('txtDepartPointText')==0||target.indexOf('txtArrivePointText')==0) { document.getElementById(target).value=HtmlDecode(Airport.split('~')[0]); document.getElementById(target).title=HtmlDecode(Airport.split('~')[0]); document.getElementById(target).blur(); if (target.indexOf('txtArrivePointText')==0) { i=parseInt(target.right(1),10); if (i<8) { Elem=document.getElementById('txtDepartPointCode'+(i+1)); if (Elem) { if (Airport.indexOf('~')>0) { Elem.value=HtmlDecode(Airport.split('~')[1]); } } Elem=document.getElementById('txtDepartPointText'+(i+1)); if (Elem) { Elem.value=HtmlDecode(Airport.split('~')[0]); } } } } if(Airport=='') { document.getElementById(target).value=''; } } } function liveSearchHideDelayed(tb) { window.setTimeout("liveSearchHide('"+tb+"')",400); } function liveSearchHide(textBox) { if (document.getElementById('lsDiv')) { document.getElementById('lsDiv').style.display='none'; } if (document.getElementById('lsDiv')) { document.getElementById('lsDiv1').style.display='none'; } FixSelectLists(false,textBox); } function HtmlDecode(s) { var out=''; var i; var ch; var semicolonIndex; var entity; var out; if (s==null) { return; } for (i=0;i0) { entity=s.substring(i+1,semicolonIndex); if (entity.length>1 && entity.charAt(0)=='#') { if (entity.charAt(1)=='x' || entity.charAt(1)=='X') { ch=String.fromCharCode(eval('0'+entity.substring(1))); } else { ch=String.fromCharCode(eval(entity.substring(1))); } } else { switch (entity) { case 'quot': ch=String.fromCharCode(0x0022); break; case 'amp': ch=String.fromCharCode(0x0026); break; case 'lt': ch=String.fromCharCode(0x003c); break; case 'gt': ch=String.fromCharCode(0x003e); break; case 'nbsp': ch=String.fromCharCode(0x00a0); break; case 'iexcl': ch=String.fromCharCode(0x00a1); break; case 'cent': ch=String.fromCharCode(0x00a2); break; case 'pound': ch=String.fromCharCode(0x00a3); break; case 'curren': ch=String.fromCharCode(0x00a4); break; case 'yen': ch=String.fromCharCode(0x00a5); break; case 'brvbar': ch=String.fromCharCode(0x00a6); break; case 'sect': ch=String.fromCharCode(0x00a7); break; case 'uml': ch=String.fromCharCode(0x00a8); break; case 'copy': ch=String.fromCharCode(0x00a9); break; case 'ordf': ch=String.fromCharCode(0x00aa); break; case 'laquo': ch=String.fromCharCode(0x00ab); break; case 'not': ch=String.fromCharCode(0x00ac); break; case 'shy': ch=String.fromCharCode(0x00ad); break; case 'reg': ch=String.fromCharCode(0x00ae); break; case 'macr': ch=String.fromCharCode(0x00af); break; case 'deg': ch=String.fromCharCode(0x00b0); break; case 'plusmn': ch=String.fromCharCode(0x00b1); break; case 'sup2': ch=String.fromCharCode(0x00b2); break; case 'sup3': ch=String.fromCharCode(0x00b3); break; case 'acute': ch=String.fromCharCode(0x00b4); break; case 'micro': ch=String.fromCharCode(0x00b5); break; case 'para': ch=String.fromCharCode(0x00b6); break; case 'middot': ch=String.fromCharCode(0x00b7); break; case 'cedil': ch=String.fromCharCode(0x00b8); break; case 'sup1': ch=String.fromCharCode(0x00b9); break; case 'ordm': ch=String.fromCharCode(0x00ba); break; case 'raquo': ch=String.fromCharCode(0x00bb); break; case 'frac14': ch=String.fromCharCode(0x00bc); break; case 'frac12': ch=String.fromCharCode(0x00bd); break; case 'frac34': ch=String.fromCharCode(0x00be); break; case 'iquest': ch=String.fromCharCode(0x00bf); break; case 'Agrave': ch=String.fromCharCode(0x00c0); break; case 'Aacute': ch=String.fromCharCode(0x00c1); break; case 'Acirc': ch=String.fromCharCode(0x00c2); break; case 'Atilde': ch=String.fromCharCode(0x00c3); break; case 'Auml': ch=String.fromCharCode(0x00c4); break; case 'Aring': ch=String.fromCharCode(0x00c5); break; case 'AElig': ch=String.fromCharCode(0x00c6); break; case 'Ccedil': ch=String.fromCharCode(0x00c7); break; case 'Egrave': ch=String.fromCharCode(0x00c8); break; case 'Eacute': ch=String.fromCharCode(0x00c9); break; case 'Ecirc': ch=String.fromCharCode(0x00ca); break; case 'Euml': ch=String.fromCharCode(0x00cb); break; case 'Igrave': ch=String.fromCharCode(0x00cc); break; case 'Iacute': ch=String.fromCharCode(0x00cd); break; case 'Icirc': ch=String.fromCharCode(0x00ce ); break; case 'Iuml': ch=String.fromCharCode(0x00cf); break; case 'ETH': ch=String.fromCharCode(0x00d0); break; case 'Ntilde': ch=String.fromCharCode(0x00d1); break; case 'Ograve': ch=String.fromCharCode(0x00d2); break; case 'Oacute': ch=String.fromCharCode(0x00d3); break; case 'Ocirc': ch=String.fromCharCode(0x00d4); break; case 'Otilde': ch=String.fromCharCode(0x00d5); break; case 'Ouml': ch=String.fromCharCode(0x00d6); break; case 'times': ch=String.fromCharCode(0x00d7); break; case 'Oslash': ch=String.fromCharCode(0x00d8); break; case 'Ugrave': ch=String.fromCharCode(0x00d9); break; case 'Uacute': ch=String.fromCharCode(0x00da); break; case 'Ucirc': ch=String.fromCharCode(0x00db); break; case 'Uuml': ch=String.fromCharCode(0x00dc); break; case 'Yacute': ch=String.fromCharCode(0x00dd); break; case 'THORN': ch=String.fromCharCode(0x00de); break; case 'szlig': ch=String.fromCharCode(0x00df); break; case 'agrave': ch=String.fromCharCode(0x00e0); break; case 'aacute': ch=String.fromCharCode(0x00e1); break; case 'acirc': ch=String.fromCharCode(0x00e2); break; case 'atilde': ch=String.fromCharCode(0x00e3); break; case 'auml': ch=String.fromCharCode(0x00e4); break; case 'aring': ch=String.fromCharCode(0x00e5); break; case 'aelig': ch=String.fromCharCode(0x00e6); break; case 'ccedil': ch=String.fromCharCode(0x00e7); break; case 'egrave': ch=String.fromCharCode(0x00e8); break; case 'eacute': ch=String.fromCharCode(0x00e9); break; case 'ecirc': ch=String.fromCharCode(0x00ea); break; case 'euml': ch=String.fromCharCode(0x00eb); break; case 'igrave': ch=String.fromCharCode(0x00ec); break; case 'iacute': ch=String.fromCharCode(0x00ed); break; case 'icirc': ch=String.fromCharCode(0x00ee); break; case 'iuml': ch=String.fromCharCode(0x00ef); break; case 'eth': ch=String.fromCharCode(0x00f0); break; case 'ntilde': ch=String.fromCharCode(0x00f1); break; case 'ograve': ch=String.fromCharCode(0x00f2); break; case 'oacute': ch=String.fromCharCode(0x00f3); break; case 'ocirc': ch=String.fromCharCode(0x00f4); break; case 'otilde': ch=String.fromCharCode(0x00f5); break; case 'ouml': ch=String.fromCharCode(0x00f6); break; case 'divide': ch=String.fromCharCode(0x00f7); break; case 'oslash': ch=String.fromCharCode(0x00f8); break; case 'ugrave': ch=String.fromCharCode(0x00f9); break; case 'uacute': ch=String.fromCharCode(0x00fa); break; case 'ucirc': ch=String.fromCharCode(0x00fb); break; case 'uuml': ch=String.fromCharCode(0x00fc); break; case 'yacute': ch=String.fromCharCode(0x00fd); break; case 'thorn': ch=String.fromCharCode(0x00fe); break; case 'yuml': ch=String.fromCharCode(0x00ff); break; case 'OElig': ch=String.fromCharCode(0x0152); break; case 'oelig': ch=String.fromCharCode(0x0153); break; case 'Scaron': ch=String.fromCharCode(0x0160); break; case 'scaron': ch=String.fromCharCode(0x0161); break; case 'Yuml': ch=String.fromCharCode(0x0178); break; case 'fnof': ch=String.fromCharCode(0x0192); break; case 'circ': ch=String.fromCharCode(0x02c6); break; case 'tilde': ch=String.fromCharCode(0x02dc); break; case 'Alpha': ch=String.fromCharCode(0x0391); break; case 'Beta': ch=String.fromCharCode(0x0392); break; case 'Gamma': ch=String.fromCharCode(0x0393); break; case 'Delta': ch=String.fromCharCode(0x0394); break; case 'Epsilon': ch=String.fromCharCode(0x0395); break; case 'Zeta': ch=String.fromCharCode(0x0396); break; case 'Eta': ch=String.fromCharCode(0x0397); break; case 'Theta': ch=String.fromCharCode(0x0398); break; case 'Iota': ch=String.fromCharCode(0x0399); break; case 'Kappa': ch=String.fromCharCode(0x039a); break; case 'Lambda': ch=String.fromCharCode(0x039b); break; case 'Mu': ch=String.fromCharCode(0x039c); break; case 'Nu': ch=String.fromCharCode(0x039d); break; case 'Xi': ch=String.fromCharCode(0x039e); break; case 'Omicron': ch=String.fromCharCode(0x039f); break; case 'Pi': ch=String.fromCharCode(0x03a0); break; case ' Rho ': ch=String.fromCharCode(0x03a1); break; case 'Sigma': ch=String.fromCharCode(0x03a3); break; case 'Tau': ch=String.fromCharCode(0x03a4); break; case 'Upsilon': ch=String.fromCharCode(0x03a5); break; case 'Phi': ch=String.fromCharCode(0x03a6); break; case 'Chi': ch=String.fromCharCode(0x03a7); break; case 'Psi': ch=String.fromCharCode(0x03a8); break; case 'Omega': ch=String.fromCharCode(0x03a9); break; case 'alpha': ch=String.fromCharCode(0x03b1); break; case 'beta': ch=String.fromCharCode(0x03b2); break; case 'gamma': ch=String.fromCharCode(0x03b3); break; case 'delta': ch=String.fromCharCode(0x03b4); break; case 'epsilon': ch=String.fromCharCode(0x03b5); break; case 'zeta': ch=String.fromCharCode(0x03b6); break; case 'eta': ch=String.fromCharCode(0x03b7); break; case 'theta': ch=String.fromCharCode(0x03b8); break; case 'iota': ch=String.fromCharCode(0x03b9); break; case 'kappa': ch=String.fromCharCode(0x03ba); break; case 'lambda': ch=String.fromCharCode(0x03bb); break; case 'mu': ch=String.fromCharCode(0x03bc); break; case 'nu': ch=String.fromCharCode(0x03bd); break; case 'xi': ch=String.fromCharCode(0x03be); break; case 'omicron': ch=String.fromCharCode(0x03bf); break; case 'pi': ch=String.fromCharCode(0x03c0); break; case 'rho': ch=String.fromCharCode(0x03c1); break; case 'sigmaf': ch=String.fromCharCode(0x03c2); break; case 'sigma': ch=String.fromCharCode(0x03c3); break; case 'tau': ch=String.fromCharCode(0x03c4); break; case 'upsilon': ch=String.fromCharCode(0x03c5); break; case 'phi': ch=String.fromCharCode(0x03c6); break; case 'chi': ch=String.fromCharCode(0x03c7); break; case 'psi': ch=String.fromCharCode(0x03c8); break; case 'omega': ch=String.fromCharCode(0x03c9); break; case 'thetasym': ch=String.fromCharCode(0x03d1); break; case 'upsih': ch=String.fromCharCode(0x03d2); break; case 'piv': ch=String.fromCharCode(0x03d6); break; case 'ensp': ch=String.fromCharCode(0x2002); break; case 'emsp': ch=String.fromCharCode(0x2003); break; case 'thinsp': ch=String.fromCharCode(0x2009); break; case 'zwnj': ch=String.fromCharCode(0x200c); break; case 'zwj': ch=String.fromCharCode(0x200d); break; case 'lrm': ch=String.fromCharCode(0x200e); break; case 'rlm': ch=String.fromCharCode(0x200f); break; case 'ndash': ch=String.fromCharCode(0x2013); break; case 'mdash': ch=String.fromCharCode(0x2014); break; case 'lsquo': ch=String.fromCharCode(0x2018); break; case 'rsquo': ch=String.fromCharCode(0x2019); break; case 'sbquo': ch=String.fromCharCode(0x201a); break; case 'ldquo': ch=String.fromCharCode(0x201c); break; case 'rdquo': ch=String.fromCharCode(0x201d); break; case 'bdquo': ch=String.fromCharCode(0x201e); break; case 'dagger': ch=String.fromCharCode(0x2020); break; case 'Dagger': ch=String.fromCharCode(0x2021); break; case 'bull': ch=String.fromCharCode(0x2022); break; case 'hellip': ch=String.fromCharCode(0x2026); break; case 'permil': ch=String.fromCharCode(0x2030); break; case 'prime': ch=String.fromCharCode(0x2032); break; case 'Prime': ch=String.fromCharCode(0x2033); break; case 'lsaquo': ch=String.fromCharCode(0x2039); break; case 'rsaquo': ch=String.fromCharCode(0x203a); break; case 'oline': ch=String.fromCharCode(0x203e); break; case 'frasl': ch=String.fromCharCode(0x2044); break; case 'euro': ch=String.fromCharCode(0x20ac); break; case 'image': ch=String.fromCharCode(0x2111); break; case 'weierp': ch=String.fromCharCode(0x2118); break; case 'real': ch=String.fromCharCode(0x211c); break; case 'trade': ch=String.fromCharCode(0x2122); break; case 'alefsym': ch=String.fromCharCode(0x2135); break; case 'larr': ch=String.fromCharCode(0x2190); break; case 'uarr': ch=String.fromCharCode(0x2191); break; case 'rarr': ch=String.fromCharCode(0x2192); break; case 'darr': ch=String.fromCharCode(0x2193); break; case 'harr': ch=String.fromCharCode(0x2194); break; case 'crarr': ch=String.fromCharCode(0x21b5); break; case 'lArr': ch=String.fromCharCode(0x21d0); break; case 'uArr': ch=String.fromCharCode(0x21d1); break; case 'rArr': ch=String.fromCharCode(0x21d2); break; case 'dArr': ch=String.fromCharCode(0x21d3); break; case 'hArr': ch=String.fromCharCode(0x21d4); break; case 'forall': ch=String.fromCharCode(0x2200); break; case 'part': ch=String.fromCharCode(0x2202); break; case 'exist': ch=String.fromCharCode(0x2203); break; case 'empty': ch=String.fromCharCode(0x2205); break; case 'nabla': ch=String.fromCharCode(0x2207); break; case 'isin': ch=String.fromCharCode(0x2208); break; case 'notin': ch=String.fromCharCode(0x2209); break; case 'ni': ch=String.fromCharCode(0x220b); break; case 'prod': ch=String.fromCharCode(0x220f); break; case 'sum': ch=String.fromCharCode(0x2211); break; case 'minus': ch=String.fromCharCode(0x2212); break; case 'lowast': ch=String.fromCharCode(0x2217); break; case 'radic': ch=String.fromCharCode(0x221a); break; case 'prop': ch=String.fromCharCode(0x221d); break; case 'infin': ch=String.fromCharCode(0x221e); break; case 'ang': ch=String.fromCharCode(0x2220); break; case 'and': ch=String.fromCharCode(0x2227); break; case 'or': ch=String.fromCharCode(0x2228); break; case 'cap': ch=String.fromCharCode(0x2229); break; case 'cup': ch=String.fromCharCode(0x222a); break; case 'int': ch=String.fromCharCode(0x222b); break; case 'there4': ch=String.fromCharCode(0x2234); break; case 'sim': ch=String.fromCharCode(0x223c); break; case 'cong': ch=String.fromCharCode(0x2245); break; case 'asymp': ch=String.fromCharCode(0x2248); break; case 'ne': ch=String.fromCharCode(0x2260); break; case 'equiv': ch=String.fromCharCode(0x2261); break; case 'le': ch=String.fromCharCode(0x2264); break; case 'ge': ch=String.fromCharCode(0x2265); break; case 'sub': ch=String.fromCharCode(0x2282); break; case 'sup': ch=String.fromCharCode(0x2283); break; case 'nsub': ch=String.fromCharCode(0x2284); break; case 'sube': ch=String.fromCharCode(0x2286); break; case 'supe': ch=String.fromCharCode(0x2287); break; case 'oplus': ch=String.fromCharCode(0x2295); break; case 'otimes': ch=String.fromCharCode(0x2297); break; case 'perp': ch=String.fromCharCode(0x22a5); break; case 'sdot': ch=String.fromCharCode(0x22c5); break; case 'lceil': ch=String.fromCharCode(0x2308); break; case 'rceil': ch=String.fromCharCode(0x2309); break; case 'lfloor': ch=String.fromCharCode(0x230a); break; case 'rfloor': ch=String.fromCharCode(0x230b); break; case 'lang': ch=String.fromCharCode(0x2329); break; case 'rang': ch=String.fromCharCode(0x232a); break; case 'loz': ch=String.fromCharCode(0x25ca); break; case 'spades': ch=String.fromCharCode(0x2660); break; case 'clubs': ch=String.fromCharCode(0x2663); break; case 'hearts': ch=String.fromCharCode(0x2665); break; case 'diams': ch=String.fromCharCode(0x2666); break; default: ch=''; break; } } i=semicolonIndex; } } out+=ch; } return out; } function URLDecode(encoded) { // Replace+with ' ' // Replace %xx with equivalent character // Put [ERROR] in output if %xx is invalid. var hexChars='0123456789ABCDEFabcdef'; var plaintext=''; var i=0; while (i0) { this.typeAhead(aSuggestions[0]); } }; AutoSuggestControl.prototype.handleKeyUp=function(oEvent) { var iKeyCode=oEvent.keyCode; //make sure not to interfere with non-character keys if (iKeyCode < 32 || (iKeyCode >= 33 && iKeyCode <= 46) || (iKeyCode >= 112 && iKeyCode <= 123)) { this.liveSearchProcessReqChange(true); } else { //request suggestions from the suggestion provider if (this.getNonSelectedText().length >=3 && (this.provider.Airports.length==0 || this.firstThreeChars.toLowerCase()!=this.getNonSelectedText().toLowerCase().substr(0,3))) { var searchFor=trim(this.getNonSelectedText(),' '); if (searchFor!='') { if (window.XMLHttpRequest) { this.liveSearchReq=new XMLHttpRequest() } else if (window.ActiveXObject) { this.liveSearchReq=new ActiveXObject('Microsoft.XMLHTTP'); } sArea=''; sCountry='' switch(this.textbox.id) { case 'txtDepart': if (document.getElementById('ArrowsOut')) { document.getElementById('ArrowsOut').style.display='block'; statusMessage('Searching for departure points'); } this.liveSearchReq.onreadystatechange=DliveSearchProcessReqChange; break; case 'txtDestination': //show searching symbol if (document.getElementById('ArrowsIn')) { document.getElementById('ArrowsIn').style.display='block'; statusMessage('Searching for destination points'); } this.liveSearchReq.onreadystatechange=AliveSearchProcessReqChange; break; case 'txtArea': //show searching symbol if (document.getElementById('ArrowsIn')) { document.getElementById('ArrowsIn').style.display='block'; statusMessage('Searching for areas'); sArea='area'; } this.liveSearchReq.onreadystatechange=ARliveSearchProcessReqChange; break; case 'txtIBDepart': this.liveSearchReq.onreadystatechange=IDliveSearchProcessReqChange; break; case 'txtIBDestination': this.liveSearchReq.onreadystatechange=IAliveSearchProcessReqChange; break; } if (this.textbox.id.indexOf('txtDepartPointText')==0) { sFunction='TBliveSearchProcessReqChange(\''+this.textbox.id+'\')'; this.liveSearchReq.onreadystatechange=new Function(sFunction); } if (this.textbox.id.indexOf('txtArrivePointText')==0) { sFunction='TBliveSearchProcessReqChange(\''+this.textbox.id+'\')'; this.liveSearchReq.onreadystatechange=new Function(sFunction); } if(window.adminpage) { this.liveSearchReq.open('GET', '../livesearch.asp?t='+sArea+'&q='+escape(this.textbox.value)); } else if (window.name=='enquiry_quick') { this.liveSearchReq.open('GET', '../package-it/livesearch.asp?t='+sArea+'&q='+escape(this.textbox.value)); } else { this.liveSearchReq.open('GET', 'livesearch.asp?t='+sArea+'&q='+escape(this.textbox.value)); } this.liveSearchReq.send(null); } } else { if (this.textbox.value.length>=2) { this.liveSearchProcessReqChange(false); } } if(this.textbox.value.length>=3) { this.firstThreeChars=this.textbox.value.toLowerCase().substr(0,3); } } }; AutoSuggestControl.prototype.liveSearchProcessReqChange=function(ignore) { if(this.AirportStr!='') { this.provider.Airports=this.AirportStr.split('|'); } if(this.AirportStr!='' && this.AirportStr.indexOf('~')<0) { alert('Airport lookup has failed, please refresh the page and try again.'); return; } var sugg=this.provider.requestSuggestions(this, ignore); var c=findPos(this.textbox); if (!document.getElementById('lsDiv')) { lsDiv=document.createElement('DIV'); lsDiv.id='lsDiv'; lsDiv.style.position='absolute'; lsDiv.style.zIndex='201'; lsDiv.style.left='0px'; lsDiv.style.top='0px'; lsDiv.style.width=''; lsDiv.className='LSTable'; } lsDiv.innerHTML=''; if(sugg.length>0) { code=sugg[0].split('~')[1]; desc=sugg[0].split('~')[0]; id=this.textbox.id; if (id.indexOf('txtDepartPoint')==-1 && id.indexOf('txtArrivePoint')==-1) { id=id.replace('txt',''); if(id.indexOf('Depart')>-1) { IBid=id.replace('Depart','Destination'); } else if (id.indexOf('Destination') > -1) { IBid=id.replace('Destination','Depart'); } } chooseAirport(code,'',id); IBid=id; //chooseAirport(code,desc.replace(/'/g,"\\'"),'IB'+IBid); } for(i=0;i-1) { IBid=id.replace('Depart','Destination'); } else if (id.indexOf('Destination')>-1) { IBid=id.replace('Destination','Depart'); } js+="chooseAirport('"+code+"','"+desc.replace(/'/g,"\\'")+"','IB"+IBid+"');"; rowDiv=document.createElement('DIV'); rowDiv.className='LSoff LSrowoff'; rowDiv.innerHTML=""+desc+""; lsDiv.appendChild(rowDiv); } if(sugg.length > 0) { document.body.appendChild(lsDiv); if (!document.getElementById('lsDiv1')) { lsDiv1=document.createElement('DIV'); lsDiv1.id='lsDiv1'; /*commented out inline style to control from external stylesheet*/ /*note this keeps the LSDiv1 in place but makes it invisible if nothing is specified in the stylesheet*/ /*LSDiv1 is only for a pseudo drop shadow div*/ /* lsDiv1.style.opacity='0.2'; lsDiv1.style.filter='alpha(opacity=20)'; lsDiv1.style.position='absolute'; lsDiv1.style.zIndex='200'; lsDiv1.style.left='0px'; lsDiv1.style.top='0px'; lsDiv1.style.width=''; lsDiv1.style.backgroundColor='black'; */ if(sugg.length > 0) { document.body.appendChild(lsDiv1); } } document.getElementById('lsDiv').style.display='block'; document.getElementById('lsDiv').style.left=(c[0]+1)+'px'; document.getElementById('lsDiv').style.top=(c[1]+20)+'px'; document.getElementById('lsDiv1').style.display='block'; document.getElementById('lsDiv1').style.left=(c[0]+4)+'px'; document.getElementById('lsDiv1').style.top=(c[1]+23)+'px'; //Stops the searching images if (document.getElementById('ArrowsOut')) { document.getElementById('ArrowsOut').style.display='none'; statusMessage(''); } if (document.getElementById('ArrowsIn')) { document.getElementById('ArrowsIn').style.display='none'; statusMessage(''); } lsDiv1.style.height=(lsDiv.offsetHeight)+'px'; lsDiv1.style.width=(lsDiv.offsetWidth)+'px'; FixSelectLists(false); FixSelectLists(true); } else { if (document.getElementById('lsDiv')) { document.getElementById('lsDiv').style.display='none'; } if (document.getElementById('lsDiv1')) { document.getElementById('lsDiv1').style.display='none'; } FixSelectLists(false); } } AutoSuggestControl.prototype.init=function() { //save a reference to this object var oThis=this; //assign the onkeyup event handler this.textbox.onkeyup=function(oEvent) { //check for the proper location of the event object if (!oEvent) { oEvent=window.event; } oThis.handleKeyUp(oEvent); }; }; AutoSuggestControl.prototype.getNonSelectedText=function() { var s; if (this.textbox.createTextRange) { var r=this.textbox.document.selection.createRange().duplicate(); r.moveEnd('textedit',1); s=this.textbox.value.substring(0,this.textbox.value.length-r.text.length); } else if(this.textbox.setSelectionRange) { s=this.textbox.value.substring(0,this.textbox.selectionStart); } else { s=this.textbox.value; } return s; } AutoSuggestControl.prototype.selectRange=function (iStart /*:int*/, iLength /*:int*/) { //use text ranges for Internet Explorer if (this.textbox.createTextRange) { var oRange=this.textbox.createTextRange(); oRange.moveStart('character', iStart); oRange.moveEnd('character', iLength - this.textbox.value.length); oRange.select(); } else { if (this.textbox.setSelectionRange) { this.textbox.setSelectionRange(iStart, iLength); } } //set focus back to the textbox this.textbox.focus(); }; AutoSuggestControl.prototype.typeAhead=function (sSuggestion /*:String*/) { //check for support of typeahead functionality if (this.textbox.createTextRange || this.textbox.setSelectionRange) { var iLen=this.textbox.value.length; this.textbox.value=HtmlDecode(sSuggestion.split('~')[0]); this.selectRange(iLen, sSuggestion.split('~')[0].length); } }; function AirportSuggestions() { this.Airports=new Array(); } AirportSuggestions.prototype.requestSuggestions=function (oAutoSuggestControl, ignore /*:AutoSuggestControl*/) { var aSuggestions=[]; var sTextboxValue=oAutoSuggestControl.getNonSelectedText(); if (sTextboxValue.length > 0) { //search for matching Airports for (var i=0;i 0) { aSuggestions.push(this.Airports[i]); } } */ } } if(!ignore) { oAutoSuggestControl.autosuggest(aSuggestions); } return aSuggestions; }; function statusMessage(message) { window.status=message; }