var CDRSuggest=function(B,C){var A=this;this.elem=B;this.datos={execFunct:C.execFunct,undoFunct:C.undoFunct,focusShow:C.focusShow,blurHide:C.blurHide,autoWidth:(C.autoWidth!==false?true:false),multiTag:C.multiTag,autoSelect:(C.autoSelect===false?false:true),sugs:C.sugerencias,tipoSugs:C.tipoSugs,limit:(isNaN(C.limit)?false:parseInt(C.limit,10)),cache:C.cache,metodoRequest:C.metodoRequest,ajax_devuelve:(C.json?"JSON":C.txt?"TXT":"XML"),minChars:C.minChars,tiempoPuls:C.tiempoPuls,ajaxMatched:(C.ajaxMatched===true?true:false),params:(C.params?C.params:{}),reqVar:C.reqVar,ajax:C.ajax,agrupar:C.agrupar,excluirSel:(C.excluirHotel?[/^((h[oô]tel|hoteles|hot[eé]is|h[oô]tels|apartamento|apartamentos|aparthotel|apartahotel)( (en|in|em|[aá]))?)? (?=[^ ])/gi,"($1\\s*)?"]:false),selecc:-1,txt:"",antTxt:"",mostrado:0,rangeCreated:false,reg_exps:{gen:{inicio:{regexp_match:[["^(","",")"],["",1,""]],replace_sec:false},mail:{regexp_match:[['(:^|"|\\.|;| )(',"",")"],["$1",2,""]],replace_sec:["\\<([^<]+@[^>]+)?\\>","&lt;$1&gt;"]},palabras:{regexp_match:[["(^|\\s)(","",")"],["$1",2,""]],replace_sec:false},total:{regexp_match:[["(","",")"],["",1,""]],replace_sec:false}},reems:[[/(ss|ß)/gi,"(ss|ß)"],[/(ae|æ)/gi,"(ae|æ)"],[/[aáàâäåã]/gi,"[aáàâäåã]"],[/[cç]/gi,"[cç]"],[/[eéèêë]/gi,"[eéèêë]"],[/[iíìïî]/gi,"[iíìïî]"],[/[nñ]/gi,"[nñ]"],[/[oóòôöõø]/gi,"[oóòôöõø]"],[/[uúùûü]/gi,"[uúùûü]"],[/[\s\^`'_-`]/gi,"[\\s\\^`'_-`]"]]},mapeo_request:{sugerencia:"sugerencia",matched:"match_sugerencia",descripcion:"descripcion",valor:"valor",tipo:"tipo",s:"sugerencia",m:"match_sugerencia",d:"descripcion",v:"valor",t:"tipo"},request_count:0,request_received:0};C=null;if(this.datos.multiTag){this.datos.multiTag={sep:(typeof (this.datos.multiTag)=="string"?this.datos.multiTag:","),tags:[],tag:[]}}else{this.datos.multiTag=false}if(!this.datos.tipoSugs){this.datos.tipoSugs="inicio"}if(!this.datos.execFunct||!(typeof (this.datos.execFunct)=="function")){this.datos.execFunct=function(){}}if(!this.datos.undoFunct||!(typeof (this.datos.undoFunct)=="function")){this.datos.undoFunct=function(){}}if(this.datos.ajax){this.datos.metodoRequest=(this.datos.metodoRequest?this.datos.metodoRequest:"GET");this.datos.reqVar=(this.datos.reqVar?this.datos.reqVar:"q");this.datos.json=(this.datos.json===true?true:false);this.datos.minChars=(parseInt(this.datos.minChars,10)===0)?1:this.datos.minChars;this.datos.tiempoPuls=parseInt(this.datos.tiempoPuls,10)*1000;this.datos.cache=parseInt(this.datos.cache,10);if(this.datos.cache<1){this.datos.cache=false}else{this.datos.cache={values:{},length:0,max_size:this.datos.cache}}}else{this.datos.sugs=this.arrayToObjects(this.datos.sugs)}this.elem.setAttribute("autocomplete","off");if(this.datos.focusShow){this.elem.onfocus=function(D){A.mostrar()}}this.elem.onkeydown=function(D){A.keydown(D)};this.elem.onkeyup=function(D){A.keyup(D)};this.elem.onblur=function(D){A.ocultar()};this.suggest=cdr_dom.crearNodo("div",this.elem.parentNode,false,{"class":"suggest_lista"},{display:"none"});this.iframe=false;if(browser.nav.ie6_less){this.iframe=cdr_dom.crearNodo("iframe",this.suggest,false,{"class":"suggest_ie_iframe"},{width:"100%","z-index":"333",position:"absolute",top:0,left:0})}this.suggest_ul=cdr_dom.crearNodo("ul",this.suggest,false,false,{position:"relative","z-index":"444"});this.suggest_ul.onmousedown=function(D){A.usar();A.ocultar();cdr_event_utils.cancelar(D);setTimeout(function(){A.focusNoSelect()},100)};this.suggest_ul.onmouseover=function(D){A.hover(D)};this.datos.mostrado=false;push_unload(function(){A.elem.onfocus=function(){};A.elem.onkeypress=function(){};A.elem.onkeydown=function(){};A.elem.onkeyup=function(){};A.elem.onblur=function(){};A.elem=null;B=null;A.suggest_ul.onmouseover=function(){};A.suggest_ul.onmouseout=function(){};A.suggest_ul.onmousedown=function(){};A.suggest_ul.onmouseup=function(){};A.suggest_ul.innerHTML="";A.suggest_ul=null;A.suggest.innerHTML="";A.suggest=null;A.datos={};A.prototype={}})};CDRSuggest.prototype.arrayToObjects=function(A){for(var B=0;B<A.length;B++){if(typeof (A[B])=="string"){A[B]={sugerencia:A[B]}}else{if(A[B].length){A[B]={sugerencia:A[B][0],descripcion:(A[B][1]&&A[B][1].length?A[B][1]:false),valor:(A[B][2]&&A[B][2].length?A[B][2]:false),tipo:(A[B][3]&&A[B][3].length?A[B][3]:false)}}}}return A};CDRSuggest.prototype.mostrar=function(A){sug_txt=(this.datos.multiTag&&this.tags()?this.datos.multiTag.tag[0]:this.elem.value);if(A&&sug_txt===""){this.cargarDatos(this.datos.sugs,A)}cdr_dom.hide(this.suggest);if((this.suggest_ul.childNodes&&this.suggest_ul.childNodes.length&&sug_txt!=="")||A===true){var B=cdr_util.findRelPos(this.elem);cdr_class.setStyle(this.suggest,{top:(B[0]+this.elem.offsetHeight)+"px",left:(B[1])+"px"});if(this.datos.autoWidth){cdr_class.setStyle(this.suggest,{width:(this.elem.offsetWidth)+"px"})}cdr_dom.show(this.suggest);if(this.iframe){cdr_class.setStyle(this.iframe,{height:(this.suggest.offsetHeight+"px")})}this.datos.mostrado=true;if(this.suggest_ul.childNodes.length==1&&this.datos.txt.toLowerCase()==this.suggest_ul.childNodes[0].title.toLowerCase()&&this.datos.selecc===-1){this.seleccionar(this.suggest_ul.childNodes[0]);this.usar()}}};CDRSuggest.prototype.ocultar=function(){var A=this;setTimeout(function(){cdr_dom.hide(A.suggest);A.datos.mostrado=false},50)};CDRSuggest.prototype.keydown=function(A){var B=cdr_event_utils.isSpecial(cdr_event_utils.keyCode(A));if(B){switch(B){case"UP":this.precede();cdr_event_utils.cancelar(A);break;case"DOWN":this.sucede();cdr_event_utils.cancelar(A);break;case"TAB":case"ENTER":if(this.datos.mostrado){this.usar();this.ocultar();cdr_event_utils.cancelar(A);if(browser.nav.konqueror_khtml){this.focusNoSelect()}}break;case"ESC":this.ocultar();break}}return true};CDRSuggest.prototype.keyup=function(C){var B=cdr_event_utils.keyCode(C);var D=cdr_event_utils.isSpecial(B);var A;if(D=="UP"||D=="DOWN"||D=="TAB"||D=="ENTER"||D=="ESC"){return }if(!this.elem.value||this.elem.value===""){this.datos.txt="";if(this.datos.multiTag){this.tags()}this.ocultar()}else{if(this.datos.txt!=this.elem.value){if(this.datos.execFunct){this.datos.execFunct("","")}this.datos.txt=this.elem.value;A=this.datos.txt;if(this.datos.multiTag){if(this.tags()){A=this.datos.multiTag.tag[0]}else{this.datos.txt="";this.ocultar();return }}if(this.datos.selecc!==-1){}if(this.datos.ajax){this.peticion(A)}else{this.cargarDatos(this.seleccionarDatos(this.datos.sugs,A,false));this.mostrar()}}}};CDRSuggest.prototype.cargarDatos=function(F,A){this.datos.selecc=-1;var E=[];var B,D=document.createElement("li");cdr_dom.borrarHijos(this.suggest_ul);for(var C=0;C<F.length;C++){B=D.cloneNode(false);B.className=["sugerencia_li"," pos=",C,(C%2===0?"":" sug_zebra"),(F[C].valor?" valor="+F[C].valor+"":""),(F[C].match_pos?" match_pos="+F[C].match_pos:""),(F[C].lang?" "+F[C].lang:""),(F[C].tipo?" tipo="+F[C].tipo+(!this.datos.agrupar?" tipo_"+F[C].tipo:""):"")].join("");B.title=F[C].sugerencia;B.innerHTML=["<a href='javascript:void(0);'>",(!F[C].match_sugerencia||A?F[C].sugerencia:F[C].match_sugerencia),"</a>",(F[C].descripcion?"<div class='sug_descr'>"+F[C].descripcion+"</div>":"")].join("");this.suggest_ul.appendChild(B)}};CDRSuggest.prototype.precede=function(){if(!this.datos.mostrado){this.mostrar()}var A=this.suggest_ul.childNodes;if(A&&A.length){if(this.datos.autoSelect&&this.datos.selecc===0&&!this.datos.multiTag){this.deSeleccionarTexto();this.seleccionar(-1)}else{if(this.datos.selecc>0){this.seleccionar(A[this.datos.selecc-1])}else{this.seleccionar(A[A.length-1])}this.seleccionarTexto()}}};CDRSuggest.prototype.sucede=function(){if(!this.datos.mostrado){this.mostrar()}var A=this.suggest_ul.childNodes;if(A&&A.length){if((this.datos.autoSelect&&A.length==(this.datos.selecc+1))&&!this.datos.multiTag){this.deSeleccionarTexto();this.seleccionar(-1)}else{if(A.length>(this.datos.selecc+1)){this.seleccionar(A[this.datos.selecc+1])}else{this.seleccionar(A[0])}this.seleccionarTexto()}}};CDRSuggest.prototype.seleccionarTexto=function(){var D=parseInt(cdr_class.getExtAttribute(this.suggest_ul.childNodes[this.datos.selecc],"match_pos"),10);if(this.datos.autoSelect&&D===0){this.usar(true);var B=this.datos.txt.length,A=this.elem.value.length+1;if(this.datos.multiTag){var C=[];if(this.datos.multiTag.tag[1]>0){C=this.datos.multiTag.tags.slice(0,this.datos.multiTag.tag[1])}C[this.datos.multiTag.tag[1]]=this.datos.multiTag.tag[0];B=C.join(this.datos.multiTag.sep).length;C[this.datos.multiTag.tag[1]]=this.suggest_ul.childNodes[this.datos.selecc].getAttribute("title");A=C.join(this.datos.multiTag.sep).length}cdr_util.seleccionTexto(this.elem,B,A);this.datos.rangeCreated=true}else{if(this.datos.rangeCreated){this.deSeleccionarTexto()}}};CDRSuggest.prototype.deSeleccionarTexto=function(){this.elem.value=this.datos.txt;this.datos.rangeCreated=false};CDRSuggest.prototype.focusNoSelect=function(){this.elem.focus();cdr_util.seleccionTexto(this.elem,this.elem.value.length,this.elem.value.length);this.datos.rangeCreated=false;this.elem.focus()};CDRSuggest.prototype.usar=function(C){var D,A;var B=this;if(this.datos.selecc>-1){if(C!==true&&this.datos.rangeCreated){this.focusNoSelect()}if(this.datos.multiTag){this.datos.multiTag.tags[this.datos.multiTag.tag[1]]=this.suggest_ul.childNodes[this.datos.selecc].getAttribute("title");D=this.datos.multiTag.tags.join(this.datos.multiTag.sep)+(this.datos.multiTag.tags[this.datos.multiTag.tags.length-1]===""?"":this.datos.multiTag.sep)}else{D=this.suggest_ul.childNodes[this.datos.selecc].getAttribute("title")}this.elem.value=D;A=cdr_class.getExtAttribute(this.suggest_ul.childNodes[this.datos.selecc],"valor");if(A){tipo=cdr_class.getExtAttribute(this.suggest_ul.childNodes[this.datos.selecc],"tipo");this.datos.execFunct(A,(tipo||undefined))}}};CDRSuggest.prototype.hover=function(A){var B=cdr_event_utils.origenEvento(A);B=cdr_dom.getParentBy(B,{tag:"li","class":"sugerencia_li"});if(B){this.seleccionar(B)}};CDRSuggest.prototype.seleccionar=function(A){if(this.datos.selecc>-1){cdr_class.removeClass(this.suggest_ul.childNodes[this.datos.selecc],"marcar")}if(A==-1){this.datos.selecc=-1}else{this.datos.selecc=parseInt(cdr_class.getExtAttribute(A,"pos"),10);cdr_class.addClass(this.suggest_ul.childNodes[this.datos.selecc],"marcar")}};CDRSuggest.prototype.tags=function(){var B=this.datos.multiTag.tags;this.datos.multiTag.tags=this.elem.value.split(this.datos.multiTag.sep);this.datos.multiTag.tag=false;for(var A=0;A<this.datos.multiTag.tags.length;A++){if(B.indexOf(this.datos.multiTag.tags[A])===-1){if(this.datos.multiTag.tag!==false){this.datos.multiTag.tag=false;return false}this.datos.multiTag.tag=[(this.datos.multiTag.tags[A]||""),A]}}if(!this.datos.multiTag.tag||this.datos.multiTag.tag[0].length<1){return false}return true};CDRSuggest.prototype.seleccionarDatos=function(D,G,H){var F=[];var B,C,A=this.crearRegexp(G);for(var E=0;E<D.length;E++){B=D[E];C=A[0].exec(B.sugerencia);if((C&&C.index!==-1)||H){B.match_sugerencia=this.matchSug(B.sugerencia,A);B.match_pos=false;if(this.datos.reg_exps.gen[this.datos.tipoSugs].regexp_match[1][1]==1&&C&&C[0]&&C[0].length==G.length){B.match_pos=C.index}F.push(B)}if(!this.datos.ajax&&(this.datos.limit&&F.length>=this.datos.limit)){break}}return F};CDRSuggest.prototype.matchSug=function(B,A){var C=this.datos.reg_exps.gen[this.datos.tipoSugs].replace_sec;C[0]=new RegExp(C[0]);if(C){B=B.replace(C[0],C[1])}B=B.replace(A[0],A[1]);return B};CDRSuggest.prototype.crearRegexp=function(G){var A=this.datos.reg_exps.gen[this.datos.tipoSugs].regexp_match;var E,C,F=G.toLowerCase(),B=this.datos.reg_exps.reems;if(this.datos.excluirSel){F=F.replace(this.datos.excluirSel[0],this.datos.excluirSel[1])}for(E=B.length,C=0;E>C;C++){F=F.replace(B[C][0],B[C][1])}A[0][1]=F;var D=[A[1][0],"<strong>","$",A[1][1],"</strong>",A[1][2]].join("");return[new RegExp(A[0].join(""),"gi"),D]};CDRSuggest.prototype.peticion=function(A){this.datos.params[this.datos.reqVar]=escape(A);this.datos.request_count++;if(this.datos.limit){this.datos.params.limit=this.datos.limit}CDRajax.conectar(this.datos.ajax,{metodo:this.datos.metodoRequest,varis:this.datos.params,headers:{"X-Requested-For":"CDRSuggest"},timeout:10000,sierrorcarga:this.ajaxError,sifinalizado:this.ajaxSuccess,datos_this:{me:this,str:A,count:this.datos.request_count}})};CDRSuggest.prototype.ajaxError=function(A){};CDRSuggest.prototype.ajaxSuccess=function(conn){var sugerencia,i,j,array_sugerencias=[];var me=this.datos_this.me;var str=this.datos_this.str;if(this.datos_this.count<me.datos.request_received){return }else{me.datos.request_received=this.datos_this.count}if(me.datos.ajax_devuelve=="JSON"){var json=eval("("+conn.responseText+")");for(i in json){sugerencia={};for(j in json[i]){if(me.datos.mapeo_request[j]){sugerencia[me.datos.mapeo_request[j]]=json[i][j]}}if(sugerencia.sugerencia){array_sugerencias.push(sugerencia)}}}else{if(me.datos.ajax_devuelve=="XML"){var aux_data,xml_lang,datos_xml=conn.responseXML.documentElement.childNodes;for(i=0;i<datos_xml.length;i++){if(datos_xml[i].nodeType==1){sugerencia={};aux_data=datos_xml[i].childNodes;for(j=0;j<aux_data.length;j++){if(aux_data[j].nodeType==1&&me.datos.mapeo_request[aux_data[j].nodeName]){if(me.datos.mapeo_request[aux_data[j].nodeName]=="sugerencia"){xml_lang=aux_data[j].getAttribute("xml:lang");if(xml_lang&&xml_lang!==""){sugerencia.lang=xml_lang}}sugerencia[me.datos.mapeo_request[aux_data[j].nodeName]]=aux_data[j].firstChild.nodeValue}}if(sugerencia.sugerencia){array_sugerencias.push(sugerencia)}}}}else{var txt_values=conn.responseText.split(/\n/g);for(i=0;i<txt_values.length;i++){if(txt_values[i]&&txt_values[i].length){array_sugerencias[i]=txt_values[i].split(/\|/)}}array_sugerencias=me.arrayToObjects(array_sugerencias)}}if(!me.datos.ajaxMatched){array_sugerencias=me.seleccionarDatos(array_sugerencias,str,true)}me.cargarDatos(array_sugerencias);me.mostrar()};CDRSuggest.prototype.continuar=function(){};CDRSuggest.prototype.pausar=function(){};