(function($){var TYPE="0";var NAME="1";var _f90="2";var _f91="3";var _f92="3";var _f93="4";var ID="5";var _f95="6";var _f96="7";$.fn.extend({autocomplete:function(_f97,_f98){var _f99=typeof _f97=="string";_f98=$.extend({},$.Autocompleter.defaults,{url:_f99?_f97:null,data:_f99?null:_f97,delay:_f99?$.Autocompleter.defaults.delay:10,max:_f98&&!_f98.scroll?10:150},_f98);_f98.highlight=_f98.highlight||function(_f9a){return _f9a;};return this.each(function(){new $.Autocompleter(this,_f98);});},result:function(_f9b){return this.bind("result",_f9b);},search:function(_f9c){return this.trigger("search",[_f9c]);},flushCache:function(){return this.trigger("flushCache");},setOptions:function(_f9d){return this.trigger("setOptions",[_f9d]);},unautocomplete:function(){return this.trigger("unautocomplete");}});$.Autocompleter=function(_f9e,_f9f){var KEY={UP:38,DOWN:40,DEL:46,TAB:9,RETURN:13,ESC:27,COMMA:188,PAGEUP:33,PAGEDOWN:34};var _fa1=$(_f9e).attr("autocomplete","off").addClass(_f9f.inputClass);var _fa2;var _fa3="";var _fa4=$.Autocompleter.Cache(_f9f);var _fa5=0;var _fa6;var _fa7={mouseDownOnSelect:false};var _fa8=$.Autocompleter.Select(_f9f,_f9e,selectCurrent,_fa7);_fa1.keydown(function(_fa9){_fa6=_fa9.keyCode;switch(_fa9.keyCode){case KEY.UP:_fa9.preventDefault();if(_fa8.visible()){_fa8.prev();}else{onChange(0,true);}break;case KEY.DOWN:_fa9.preventDefault();if(_fa8.visible()){_fa8.next();}else{onChange(0,true);}break;case KEY.PAGEUP:_fa9.preventDefault();if(_fa8.visible()){_fa8.pageUp();}else{onChange(0,true);}break;case KEY.PAGEDOWN:_fa9.preventDefault();if(_fa8.visible()){_fa8.pageDown();}else{onChange(0,true);}break;case _f9f.multiple&&$.trim(_f9f.multipleSeparator)==","&&KEY.COMMA:case KEY.TAB:case KEY.RETURN:if(selectCurrent()){if(!_f9f.multiple){_fa1.blur();}_fa9.preventDefault();}break;case KEY.ESC:_fa8.hide();break;default:clearTimeout(_fa2);_fa2=setTimeout(onChange,_f9f.delay);break;}}).keypress(function(){}).focus(function(){_fa5++;}).blur(function(){_fa5=0;if(!_fa7.mouseDownOnSelect){hideResults();}}).click(function(){if(_fa5++>1&&!_fa8.visible()){onChange(0,true);}}).bind("search",function(){var fn=(arguments.length>1)?arguments[1]:null;function findValueCallback(q,data){var _fad;if(data&&data.length){for(var i=0;i<data.length;i++){if(data[i].result.toLowerCase()==q.toLowerCase()){_fad=data[i];break;}}}if(typeof fn=="function"){fn(_fad);}else{_fa1.trigger("result",_fad&&[_fad.data,_fad.value]);}}$.each(trimWords(_fa1.val()),function(i,_fb0){request(_fb0,findValueCallback,findValueCallback);});}).bind("flushCache",function(){_fa4.flush();}).bind("setOptions",function(){$.extend(_f9f,arguments[1]);if("data" in arguments[1]){_fa4.populate();}}).bind("unautocomplete",function(){_fa8.unbind();_fa1.unbind();});function selectCurrent(){var _fb1=_fa8.selected();if(!_fb1){return false;}var v=_fb1.result;_fa3=v;if(_f9f.multiple){var _fb3=trimWords(_fa1.val());if(_fb3.length>1){v=_fb3.slice(0,_fb3.length-1).join(_f9f.multipleSeparator)+_f9f.multipleSeparator+v;}v+=_f9f.multipleSeparator;}hideResultsNow();_fa1.val(v);_fa1.trigger("result",[_fb1.data,_fb1.value]);if(_fb1.data[TYPE]=="city"){$("#isPoiSearch").val(false);$("#uriSearch").val(_fb1.data[_f90]);$("#lastSelected").val(_fb1.data[NAME]);}else{if(_fb1.data[TYPE]=="poi"){$("#isPoiSearch").val(true);$("#uriSearch").val(_fb1.data[_f90]);$("#lastSelected").val(_fb1.data[NAME]);$("#idpoi").val(_fb1.data[ID]);$("#longitude").val(_fb1.data[_f95]);$("#latitude").val(_fb1.data[_f96]);}}return true;}function onChange(crap,_fb5){if(_fa6==KEY.DEL){_fa8.hide();return;}var _fb6=_fa1.val();if(!_fb5&&_fb6==_fa3){return;}_fa3=_fb6;_fb6=lastWord(_fb6);if(_fb6.length>=_f9f.minChars){_fa1.addClass(_f9f.loadingClass);if(!_f9f.matchCase){_fb6=_fb6.toLowerCase();}request(_fb6,receiveData,hideResultsNow);}else{stopLoading();_fa8.hide();}}function trimWords(_fb7){if(!_fb7){return [""];}var _fb8=_fb7.split($.trim(_f9f.multipleSeparator));var _fb9=[];$.each(_fb8,function(i,_fbb){if($.trim(_fbb)){_fb9[i]=$.trim(_fbb);}});return _fb9;}function lastWord(_fbc){if(!_f9f.multiple){return _fbc;}var _fbd=trimWords(_fbc);return _fbd[_fbd.length-1];}function autoFill(q,_fbf){if(_f9f.autoFill&&(lastWord(_fa1.val()).toLowerCase()==q.toLowerCase())&&_fa6!=8){_fa1.val(_fa1.val()+_fbf.substring(lastWord(_fa3).length));$.Autocompleter.Selection(_f9e,_fa3.length,_fa3.length+_fbf.length);}}function hideResults(){clearTimeout(_fa2);_fa2=setTimeout(hideResultsNow,200);}function hideResultsNow(){_fa8.hide();clearTimeout(_fa2);stopLoading();if(_f9f.mustMatch){_fa1.search(function(_fc0){if(!_fc0){_fa1.val("");}});}}function receiveData(q,data){if(data&&data.length&&_fa5){stopLoading();_fa8.display(data,q);autoFill(q,data[0].value);_fa8.show();}else{hideResultsNow();}}function request(term,_fc4,_fc5){if(!_f9f.matchCase){term=term.toLowerCase();}var data=_fa4.load(term);if(data&&data.length){_fc4(term,data);}else{if((typeof _f9f.url=="string")&&(_f9f.url.length>0)){var _fc7={};$.each(_f9f.extraParams,function(key,_fc9){_fc7[key]=typeof _fc9=="function"?_fc9():_fc9;});$.ajax({mode:"abort",port:"autocomplete"+_f9e.name,dataType:_f9f.dataType,url:_f9f.url+"/"+lastWord(term),data:$.extend({limit:_f9f.max},_fc7),success:function(data){var _fcb=_f9f.parse&&_f9f.parse(data)||parse(data);_fa4.add(term,_fcb);_fc4(term,_fcb);}});}else{_fc5(term);}}}function parse(data){var _fcd=[];var rows=data.split("\n");for(var i=0;i<rows.length;i++){var row=$.trim(rows[i]);if(row){row=row.split("|");if(row[0]=="city"){_fcd[_fcd.length]={data:row,type:row[TYPE],value:row[NAME],uri:row[_f90],nbHotel:row[_f91],result:_f9f.formatResult&&_f9f.formatResult(row,row[NAME])||row[NAME]};}else{if(row[0]=="poi"){_fcd[_fcd.length]={data:row,type:row[TYPE],value:row[NAME],uri:row[_f90],country:row[_f92],categorie:row[_f93],poi_id:row[ID],longitude:row[_f95],latitude:row[_f96],result:_f9f.formatResult&&_f9f.formatResult(row,row[1])||row[1]};}}}}return _fcd;}function stopLoading(){_fa1.removeClass(_f9f.loadingClass);}};$.Autocompleter.defaults={inputClass:"ac_input",resultsClass:"ac_results",loadingClass:"ac_loading",minChars:1,delay:400,matchCase:false,matchSubset:true,matchContains:false,cacheLength:10,max:100,mustMatch:false,extraParams:{},selectFirst:true,formatItem:function(row){if(row[TYPE]=="city"){return "<span class='right'>"+row[_f91]+"</span> <span class='left'>"+row[NAME]+"</span>";}else{if(row[TYPE]=="poi"){var _fd2=row[NAME].split(",");return "<span class='poi'>"+_fd2[0]+"</span> <span class='poi_cat'>("+row[_f93]+","+_fd2[1]+")</span>";}}},autoFill:false,width:400,multiple:false,multipleSeparator:", ",highlight:function(_fd3,term){return _fd3.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)("+term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")+")(?![^<>]*>)(?![^&;]+;)","gi"),"<strong>$1</strong>");},scroll:true,scrollHeight:120,attachTo:"body"};$.Autocompleter.Cache=function(_fd5){var data={};var _fd7=0;function matchSubset(s,sub){if(!_fd5.matchCase){s=s.toLowerCase();}var i=s.indexOf(sub);if(i==-1){return false;}return i==0||_fd5.matchContains;}function add(q,_fdc){if(_fd7>_fd5.cacheLength){flush();}if(!data[q]){_fd7++;}data[q]=_fdc;}function populate(){if(!_fd5.data){return false;}var _fdd={},nullData=0;if(!_fd5.url){_fd5.cacheLength=1;}_fdd[""]=[];for(var i=0,ol=_fd5.data.length;i<ol;i++){var _fdf=_fd5.data[i];_fdf=(typeof _fdf=="string")?[_fdf]:_fdf;var _fe0=_fd5.formatItem(_fdf,i+1,_fd5.data.length);if(_fe0===false){continue;}var _fe1=_fe0.charAt(0).toLowerCase();if(!_fdd[_fe1]){_fdd[_fe1]=[];}var row={value:_fe0,data:_fdf,result:_fd5.formatResult&&_fd5.formatResult(_fdf)||_fe0};_fdd[_fe1].push(row);if(nullData++<_fd5.max){_fdd[""].push(row);}}$.each(_fdd,function(i,_fe4){_fd5.cacheLength++;add(i,_fe4);});}setTimeout(populate,25);function flush(){data={};_fd7=0;}return {flush:flush,add:add,populate:populate,load:function(q){if(!_fd5.cacheLength||!_fd7){return null;}if(!_fd5.url&&_fd5.matchContains){var csub=[];for(var k in data){if(k.length>0){var c=data[k];$.each(c,function(i,x){if(matchSubset(x.value,q)){csub.push(x);}});}}return csub;}else{if(data[q]){return data[q];}else{if(_fd5.matchSubset){for(var i=q.length-1;i>=_fd5.minChars;i--){var c=data[q.substr(0,i)];if(c){var csub=[];$.each(c,function(i,x){if(matchSubset(x.value,q)){csub[csub.length]=x;}});return csub;}}}}}return null;}};};$.Autocompleter.Select=function(_fee,_fef,_ff0,_ff1){var _ff2={ACTIVE:"ac_over"};var _ff3,active=-1,data,term="",needsInit=true,element,list;function init(){if(!needsInit){return;}element=$("<div/>").hide().addClass(_fee.resultsClass).css("position","absolute").appendTo(_fee.attachTo);list=$("<ul>").appendTo(element).mouseover(function(_ff4){if(target(_ff4).nodeName&&target(_ff4).nodeName.toUpperCase()=="LI"){active=$("li",list).removeClass(_ff2.ACTIVE).index(target(_ff4));$(target(_ff4)).addClass(_ff2.ACTIVE);}}).click(function(_ff5){$(target(_ff5)).addClass(_ff2.ACTIVE);_ff0();return false;}).mousedown(function(){_ff1.mouseDownOnSelect=true;}).mouseup(function(){_ff1.mouseDownOnSelect=false;});if(_fee.width>0){element.css("width",_fee.width);}needsInit=false;}function target(_ff6){var _ff7=_ff6.target;while(_ff7&&_ff7.tagName!="LI"){_ff7=_ff7.parentNode;}if(!_ff7){return [];}return _ff7;}function moveSelect(step){_ff3.slice(active,active+1).removeClass();movePosition(step);var _ff9=_ff3.slice(active,active+1).addClass(_ff2.ACTIVE);if(_fee.scroll){var _ffa=0;_ff3.slice(0,active).each(function(){_ffa+=this.offsetHeight;});if((_ffa+_ff9[0].offsetHeight-list.scrollTop())>list[0].clientHeight){list.scrollTop(_ffa+_ff9[0].offsetHeight-list.innerHeight());}else{if(_ffa<list.scrollTop()){list.scrollTop(_ffa);}}}}function movePosition(step){active+=step;if(active<0){active=_ff3.size()-1;}else{if(active>=_ff3.size()){active=0;}}}function limitNumberOfItems(_ffc){return _fee.max&&_fee.max<_ffc?_fee.max:_ffc;}function fillList(){list.empty();var max=limitNumberOfItems(data.length);for(var i=0;i<max;i++){if(!data[i]){continue;}var _fff=_fee.formatItem(data[i].data,i+1,max,data[i].value,term);if(_fff===false){continue;}var li=$("<li>").html(_fee.highlight(_fff,term)).addClass(i%2==0?"ac_event":"ac_odd").appendTo(list)[0];if(data[i].type=="city"){li.isPoiSearch=false;li.uri=data[i].uri;}else{if(data[i].type=="poi"){li.isPoiSearch=true;li.uri=data[i].uri;li.id=data[i].poi_id;li.longitude=data[i].longitude;li.latitude=data[i].latitude;}}$.data(li,"ac_data",data[i]);}_ff3=list.find("li");if(_fee.selectFirst){_ff3.slice(0,1).addClass(_ff2.ACTIVE);active=0;}if($.fn.bgiframe){list.bgiframe();}}return {display:function(d,q){init();data=d;term=q;fillList();},next:function(){moveSelect(1);},prev:function(){moveSelect(-1);},pageUp:function(){if(active!=0&&active-8<0){moveSelect(-active);}else{moveSelect(-8);}},pageDown:function(){if(active!=_ff3.size()-1&&active+8>_ff3.size()){moveSelect(_ff3.size()-1-active);}else{moveSelect(8);}},hide:function(){element&&element.hide();active=-1;},visible:function(){return element&&element.is(":visible");},current:function(){return this.visible()&&(_ff3.filter("."+_ff2.ACTIVE)[0]||_fee.selectFirst&&_ff3[0]);},show:function(){var _1003=$(_fef).offset();element.css({width:typeof _fee.width=="string"||_fee.width>0?_fee.width:$(_fef).width(),top:_1003.top+_fef.offsetHeight,left:_1003.left}).show();if(_fee.scroll){list.scrollTop(0);list.css({maxHeight:_fee.scrollHeight,overflow:"auto"});if($.browser.msie&&typeof document.body.style.maxHeight==="undefined"){var _1004=0;_ff3.each(function(){_1004+=this.offsetHeight;});var _1005=_1004>_fee.scrollHeight;list.css("height",_1005?_fee.scrollHeight:_1004);if(!_1005){_ff3.width(list.width()-parseInt(_ff3.css("padding-left"))-parseInt(_ff3.css("padding-right")));}}}},selected:function(){var _1006=_ff3&&_ff3.filter("."+_ff2.ACTIVE).removeClass(_ff2.ACTIVE);return _1006&&_1006.length&&$.data(_1006[0],"ac_data");},unbind:function(){element&&element.remove();}};};$.Autocompleter.Selection=function(field,start,end){if(field.createTextRange){var _100a=field.createTextRange();_100a.collapse(true);_100a.moveStart("character",start);_100a.moveEnd("character",end);_100a.select();}else{if(field.setSelectionRange){field.setSelectionRange(start,end);}else{if(field.selectionStart){field.selectionStart=start;field.selectionEnd=end;}}}field.focus();};})(jQuery);
