// (c)2009 MrOrange

﻿if(typeof(bsn)=="undefined")
_b=bsn={};if(typeof(_b.DOM)=="undefined")
_b.DOM={};_b.DOM.cE=function(type,attr,cont,html){var ne=document.createElement(type);if(!ne)
return 0;for(var a in attr){if(true){ne[a]=attr[a];}}
var t=typeof(cont);if(t=="string"&&!html)
ne.appendChild(document.createTextNode(cont));else if(t=="string"&&html)
ne.innerHTML=cont;else if(t=="object")
ne.appendChild(cont);return ne;};_b.DOM.gE=function(e){var t=typeof(e);if(t=="undefined")
return 0;else if(t=="string"){var re=document.getElementById(e);if(!re){return 0;}
else if(typeof(re.appendChild)!="undefined")
return re;else
return 0;}
else if(typeof(e.appendChild)!="undefined")
return e;else
return 0;};_b.DOM.remE=function(ele)
{var e=null;if(typeof(ele)=="string"){e=this.gE(ele);}else{e=ele;}
if(!e)
return 0;else if(e.parentNode.removeChild(e))
return true;else
return 0;};_b.DOM.getPos=function(e)
{var e=this.gE(e);var obj=e;var curleft=0;var curtop=0;if(obj.offsetParent)
{do{curleft+=obj.offsetLeft;curtop+=obj.offsetTop;}while(obj=obj.offsetParent);}else{if(obj.x){curleft+=obj.x;}if(obj.y){curtop+=obj.y;}}
return{x:curleft,y:curtop};};_b.DOM.clickInside=function(e,obj){e?evt=e:evt=event;CSE=evt.target?evt.target:evt.srcElement;if(obj){if(!this.isChild(CSE,obj)){return false;}}
return true;};_b.DOM.EvtObj=function(e){if(!e)
e=window.event;return e;};_b.DOM.evtTgt=function(e){var el;if(e.target){el=e.target;}else if(e.srcElement){el=e.srcElement;}
if(el.nodeType==3){el=el.parentNode;}
return el;};_b.DOM.isChild=function(s,d){while(s){if(s==d){return true;}
s=s.parentNode;}
return false;};_b.DOM.cancelBubble=function(e){if(!e){var e=window.event;}
e.cancelBubble=true;if(e.stopPropagation){e.stopPropagation();}};_b.DOM.getSelectedRadio=function(buttonGroup){if(buttonGroup[0]){for(var i=0;i<buttonGroup.length;i++){if(buttonGroup[i].checked){return i;}}}else{if(buttonGroup.checked){return 0;}}
return-1;};_b.DOM.getSelectedRadioValue=function(buttonGroup){var i=_b.DOM.getSelectedRadio(buttonGroup);if(i==-1){return"";}else{if(buttonGroup[i]){return buttonGroup[i].value;}else{return buttonGroup.value;}}};_b.DOM.getSelectedCheckbox=function(buttonGroup){var retArr=new Array();var lastElement=0;if(buttonGroup[0]){for(var i=0;i<buttonGroup.length;i++){if(buttonGroup[i].checked){retArr.length=lastElement;retArr[lastElement]=i;lastElement++;}}}else{if(buttonGroup.checked){retArr.length=lastElement;retArr[lastElement]=0;}}
return retArr;};_b.DOM.getSelectedCheckboxValue=function(buttonGroup){var retArr=new Array();var selectedItems=_b.DOM.getSelectedCheckbox(buttonGroup);if(selectedItems.length!=0){retArr.length=selectedItems.length;for(var i=0;i<selectedItems.length;i++){if(buttonGroup[selectedItems[i]]){retArr[i]=buttonGroup[selectedItems[i]].value;}else{retArr[i]=buttonGroup.value;}}}
return retArr;};mrO.autoComplete=function(Id,arguments){var dom=_b.DOM;this.Id=Id;this.arguments=arguments;this.textField=null;this.input=null;this.divId=null;this.divObj=null;this.waitDivId=null;this.waitDivObj=null;this.iFrameId=null;this.iFrameObj=null;this.hiddenIATA=null;this.toplistDivId=null;this.toplistDivObj=null;this.listObj=null;this.objArr=null;this.timeoutId=null;this.pos=new Array(2);this.XSL=null;this.iHigh=null;this.parameters=new Array();this.slaves=new Array();this.lastX=null;this.lastY=null;var hiddenName=this.Id+"AutoComplete"
if(this.hiddenIATA==null){this.hiddenIATA=document.getElementById(hiddenName);if(this.hiddenIATA==null){this.hiddenIATA=dom.cE("input",{id:hiddenName,name:hiddenName,type:"hidden"});document.getElementsByTagName("form")[0].appendChild(this.hiddenIATA);}}
this.textField=document.getElementById(Id);this.textField.setAttribute("autocomplete","off");var pointer=this;this.textField.onkeypress=function(ev){return pointer.onKeyPress(ev);};this.textField.onkeyup=function(ev){return pointer.onKeyUp(ev);};this.textField.onclick=function(ev){pointer.getSuggestions(pointer.textField.value);_b.DOM.cancelBubble(ev);};this.textField.onblur=function(ev){return pointer.looseFocus(ev);};this.oP=this.arguments?this.arguments:{};var k,def={timeout:2500,delay:200,minchars:3,maxresults:25,offsety:0,height:250,width:240,idleText:"",cssLiMouseOver:"ACmouseOver",cssProcess:"ACProcessingTextbox",processStyle:"textbox"};for(k in def){if(typeof(this.oP[k])!=typeof(def[k])){this.oP[k]=def[k];}}
if(this.textField.value==""){this.textField.value=this.oP['idleText'];}};mrO.autoComplete.prototype.registerTopListDiv=function(toplistDivId){this.toplistDivId=toplistDivId;};mrO.autoComplete.prototype.looseFocus=function(ev){if(this.textField.value==""){this.textField.value=this.oP['idleText'];}};mrO.autoComplete.prototype.init=function(){var dom=_b.DOM;this.divId="AC_div_"+this.Id;this.divObj=dom.cE("div",{id:this.divId,display:"none"});this.waitDivId="AC_waitDiv_"+this.Id;this.waitDivObj=dom.cE("div",{id:this.waitDivId,display:"none"});this.iFrameId="AC_iFrame_"+this.Id;this.iFrameObj=null;var Obj=this.divObj;var pointer=this;var clickFunction=function(ev){if(!dom.clickInside(ev,Obj)){pointer.HidePopupDiv(pointer.divObj,pointer.iFrameObj);pointer.iFrameObj=null;}};document.all?document.attachEvent("onclick",clickFunction):document.addEventListener("click",clickFunction,false);document.getElementsByTagName("body")[0].appendChild(this.divObj);document.getElementsByTagName("body")[0].appendChild(this.waitDivObj);this.objArr=new Array();this.input="";};mrO.autoComplete.prototype.registerParameter=function(name,value,template){var param=new Array(3);param[0]=name;param[1]=value;param[2]=template,this.parameters[this.parameters.length]=param;};mrO.autoComplete.prototype.liObj=function(id,ele,title,cssClass){this.id=id;this.ele=ele;this.title=title;this.cssClass=cssClass;};mrO.autoComplete.prototype.onKeyPress=function(ev){var key=(window.event)?window.event.keyCode:ev.keyCode;var bubble=true;var RETURN=13;var TAB=9;var ESC=27;switch(key)
{case RETURN:this.setHighlightedValue();bubble=false;break;case TAB:this.setHighlightedValue();bubble=false;break;case ESC:this.clearSuggestions();break;}
return bubble;};mrO.autoComplete.prototype.onKeyUp=function(ev){var key=(window.event)?window.event.keyCode:ev.keyCode;var bubble=true;var ARRUP=38;var ARRDN=40;var RETURN=13;var TAB=9;var ESC=27;switch(key)
{case RETURN:break;case TAB:break;case ESC:break;case ARRUP:this.changeHighlight(key,ev);bubble=false;break;case ARRDN:this.changeHighlight(key,ev);bubble=false;break;default:this.getSuggestions(this.textField.value);}
return bubble;};mrO.autoComplete.prototype.getSuggestions=function(input){if(this.textField.value==this.oP['idleText']){this.textField.value="";}
if(this.divObj==null){this.init();}
if(input!=this.sInp){this.hiddenIATA.value="";this.updateSlaves();}
this.sInp=input;if(input.length<this.oP.minchars){this.objArr=new Array();this.nInpC=input.length;this.clearSuggestions();return 0;}
var ol=this.nInpC;this.nInpC=input.length?input.length:0;var pointer=this;clearTimeout(this.timeoutId);this.timeoutId=setTimeout(function(){pointer.doAjaxRequest(input)},this.oP.delay);return false;};mrO.autoComplete.prototype.doAjaxRequest=function(input){if(input!=this.textField.value)
return false;this.divObj.style.display="none";this.waitDivObj.style.display="none";if(this.oP.processStyle=='textbox'){this.textField.className=this.oP.cssProcess;}else{this.waitDivObj.innerHTML='&nbsp;';this.waitDivObj.className=this.oP.cssProcess;var pos=_b.DOM.getPos(this.textField);this.ShowPopupDiv(this.waitDivObj,pos.x,(pos.y+this.textField.offsetHeight+this.oP.offsety));}
var pointer=this;var onSuccessFunc=function(req){pointer.createList(req)};var ary=this.getParameterArray();if(typeof(this.oP.atlasWebService)!='undefined'&&this.oP.atlasWebService!=null){this.oP.atlasWebService(input,ary,onSuccessFunc,mrOwebservice.OnTimeOut,mrOwebservice.OnError);}else if(typeof(this.oP.jQueryWebService)!='undefined'&&this.oP.jQueryWebService!=null){$.ajax({type:"POST",url:this.oP.jQueryWebService,data:"{'prefixText': '"+input+"', 'arguments': "+JSON.stringify(ary)+"}",contentType:"application/json; charset=utf-8",dataType:"json",success:onSuccessFunc,error:pointer.AjaxFailed});}else{if(mrO.page.debugging({sender:"mrO.autoComplete.prototype.doAjaxRequest"})){mrO.utils.writeToConsole("mrO.autoComplete.prototype.doAjaxRequest: No webservice defined...");}}};mrO.autoComplete.prototype.AjaxFailed=function(msg){};mrO.autoComplete.prototype.AjaxSucceeded=function(msg){};mrO.autoComplete.prototype.getParameterArray=function(){var retAr=new Array();if(typeof(mrO)!=='undefined'&&mrO!=null&&mrO.getSetting){var partnerID=mrO.getSetting("partnerID");var partnerIDLanguage=mrO.getSetting("partnerIDLanguage");var partnerIDEmail=mrO.getSetting("partnerIDEmail");if(partnerID!=null){retAr.push("partnerID:"+partnerID);}
if(partnerIDLanguage!=null){retAr.push("partnerIDLanguage:"+partnerIDLanguage);}
if(partnerIDEmail!=null){retAr.push("partnerIDEmail:"+partnerIDEmail);}}
if(typeof(this.oP.xslTemplate)!=='undefined'&&this.oP.xslTemplate!==null){retAr.push("xslTemplate:"+this.oP.xslTemplate);}
if(typeof(airSearchInput)!='undefined'&&airSearchInput!=null){retAr.push("city1:"+airSearchInput.getCity1IATA());retAr.push("city2:"+airSearchInput.getCity2IATA());retAr.push("city3:"+airSearchInput.getCity3IATA());retAr.push("city4:"+airSearchInput.getCity4IATA());retAr.push("fromdate:"+airSearchInput.getFromDate());retAr.push("todate:"+airSearchInput.getToDate());}
return retAr;};mrO.autoComplete.prototype.populateDiv=function(result){var myHTML;if(this.XSL===null&&typeof(this.oP.XSLFileName)!=='undefined'&&this.oP.XSLFileName!==null){var myXML=mrOxml.getXMLObj(result,2);this.XSL=mrOxml.getXMLObj(this.oP.XSLFileName,1);var res=mrOxml.applyXSL(myXML,this.XSL);if(window.ActiveXObject){this.divObj.innerHTML=res;}else if(window.XSLTProcessor){this.divObj.appendChild(res);}}else if(typeof(this.oP.xslTemplate)!=='undefined'&&this.oP.xslTemplate!==null){this.divObj.innerHTML=result;}};mrO.autoComplete.prototype.createList=function(result){var pointer=this;if(this.oP.processStyle=='textbox'){this.textField.className='';}else{this.HidePopupDiv(this.waitDivObj,this.iFrameObj);this.iFrameObj=null;this.waitDivObj.innerHTML='&nbsp;';this.waitDivObj.className='';}
this.killTimeout();_b.DOM.remE(this.divObj);this.divObj=_b.DOM.cE("div",{id:this.divId,display:"none"});document.getElementsByTagName("body")[0].appendChild(this.divObj);var pos=_b.DOM.getPos(this.textField);this.divObj.className="ACcontainerDiv";this.divObj.onmouseover=function(){pointer.killTimeout()};this.divObj.style.overflow="auto";this.divObj.style.height=this.oP.height+'px';this.divObj.style.width=(this.oP.width!=0)?(this.oP.width+'px'):(this.textField.offsetWidth+'px');this.divObj.innerHTML="";this.divObj.style.display='none';if(mrO.utils.isDefined(result.d))
result=result.d;this.populateDiv(result);this.ShowPopupDiv(this.divObj,pos.x,(pos.y+this.textField.offsetHeight+this.oP.offsety));this.iHigh=0;this.listObj=_b.DOM.gE("as_ul");this.listObj.id="as_ul_"+this.Id;var listArr=this.listObj.getElementsByTagName("li");this.objArr=new Array(listArr.length);for(var i=0;i<listArr.length;i++){var ele=listArr[i];var val=listArr[i].title.trim();this.objArr[i]=new this.liObj(listArr[i].id,ele,val,listArr[i].className);listArr[i].title=val;listArr[i].name=i+1;listArr[i].onclick=function(){pointer.setHighlightedValue();return false;};listArr[i].onmouseover=function(ev){var x=(ev||event).clientX;var y=(ev||event).clientY;if((pointer.lastX&&pointer.lastY)&&(pointer.lastX!=x||pointer.lastY!=y)){pointer.setHighlight(this.name,ev);}else{if(x!=null){pointer.lastX=x;pointer.lastY=y;}}};}};mrO.autoComplete.prototype.IsIE=function(){return(navigator.appName=="Microsoft Internet Explorer");};mrO.autoComplete.prototype.HidePopupDiv=function(divObj,iFrameObj){divObj.style.display='none';if(iFrameObj!=null){document.body.removeChild(iFrameObj);}};mrO.autoComplete.prototype.ShowPopupDiv=function(divObj,left,top){divObj.style.left=left+"px";divObj.style.top=top+"px";if(this.iFrameObj){this.HidePopupDiv(divObj,this.iFrameObj);this.iFrameObj=null;}
this.iFrameObj=document.createElement("IFRAME");this.iFrameObj.setAttribute("src","");this.iFrameObj.style.position="absolute";this.iFrameObj.style.left=left+'px';this.iFrameObj.style.top=top+'px';this.iFrameObj.style.border='0px';this.iFrameObj.style.filter='alpha(opacity=0)';document.body.appendChild(this.iFrameObj);divObj.style.zIndex=this.iFrameObj.style.zIndex+1;divObj.style.display='';this.iFrameObj.style.width=divObj.offsetWidth+'px';this.iFrameObj.style.height=divObj.offsetHeight+'px';};mrO.autoComplete.prototype.killTimeout=function(){clearTimeout(this.timeoutId);};mrO.autoComplete.prototype.resetTimeout=function(){clearTimeout(this.timeoutId);var pointer=this;this.timeoutId=setTimeout(function(){pointer.clearSuggestions()},this.oP.timeout);};mrO.autoComplete.prototype.changeHighlight=function(key,ev)
{var pointer=mrO.autoComplete;var list=this.listObj;if(!list)
return false;var n;if(key==40){n=this.iHigh+1;}else if(key==38){n=this.iHigh-1;}
if(n>list.childNodes.length)
n=list.childNodes.length;if(n<1)
n=1;var top=list.childNodes[n-1].offsetTop;var bottom=(top+list.childNodes[n-1].offsetHeight);var divBottom=this.divObj.scrollTop+this.divObj.offsetHeight;if(this.divObj.scrollTop>top){this.divObj.scrollTop=top;}else if(bottom>divBottom){this.divObj.scrollTop=bottom-this.divObj.offsetHeight;}
this.setHighlight(n,ev);};mrO.autoComplete.prototype.setHighlight=function(n,ev)
{var list=this.listObj;if(!list)
return false;if(this.iHigh>0)
this.clearHighlight();this.iHigh=Number(n);list.childNodes[this.iHigh-1].className=this.oP.cssLiMouseOver;this.killTimeout();var x=(ev||event).clientX;var y=(ev||event).clientY;this.lastX=x;this.lastY=y;};mrO.autoComplete.prototype.clearHighlight=function()
{var list=this.listObj;if(!list)
return false;if(this.iHigh>0)
{list.childNodes[this.iHigh-1].className=this.objArr[this.iHigh-1].cssClass;this.iHigh=0;}};mrO.autoComplete.prototype.setHighlightedValue=function(){if(this.iHigh){this.input=this.textField.value=this.objArr[this.iHigh-1].title;this.hiddenIATA.value=document.getElementById(this.hiddenIATA.id).value=this.objArr[this.iHigh-1].id;this.updateSlaves();this.clearSuggestions();this.iHigh=0;this.textField.blur();var pointer=this;var onSuccessFunc=function(req){pointer.setTopList(req)};if(this.oP.TopListWebService){var ary=this.getParameterArray();this.oP.TopListWebService(ary,onSuccessFunc,mrOwebservice.OnTimeOut,mrOwebservice.OnError);}}};mrO.autoComplete.prototype.setTopList=function(result){if(this.toplistDivObj==null){this.toplistDivObj=document.getElementById(this.toplistDivId);}
if(this.toplistDivObj!=null){this.toplistDivObj.innerHTML=result;}};mrO.autoComplete.prototype.clearSuggestions=function(){this.killTimeout();this.HidePopupDiv(this.divObj,this.iFrameObj);this.iFrameObj=null;};mrO.autoComplete.prototype.registerSlave=function(pointer){this.slaves[this.slaves.length]=pointer;};mrO.autoComplete.prototype.updateSlaves=function(){if(this.slaves.length>0){for(var i in this.slaves){this.slaves[i].textField.value=this.textField.value;this.slaves[i].hiddenIATA.value=this.hiddenIATA.value;}}};
