//parametrages var timeToLanceRequete=300; var timerAjaxAC=-1; var HelpSaisie=Class.create(); /*nominput:l'id de l'objet input , ,lienDonnees: l'url a attaquer ,options:les options => timeToLanceRequete ,tailleMax */ HelpSaisie.prototype= { initialize:function(nomInput,lienDonnees,options){ this.nomInput=nomInput; this.curentSel=0; this.timerAjaxAC=-1 this.objInput=$(nomInput); this.disp="0"; this.idDiv="AideSel"+nomInput; this.urlTo=lienDonnees; /* this.opt = { tailleMax: 50, timeToLanceRequete: 300, timeToDel: '500', callback:-1 }.extend(options || {}); */ this.opt = Object.extend({ tailleMax: 50, timeToLanceRequete: 300, timeToDel: '500', callback:-1 },options || {}) this.objInput.onkeyup = this.lanceToComplete.bindAsEventListener(this); this.objInput.onblur = this.enleveDiv.bindAsEventListener(this); this.objInput.onkeypress = this.handleEnterParse.bindAsEventListener(this.objInput); }, majData:function(data){ var newval= this.objInput.value; var url=this.urlTo; var pars='args='+this.objInput.value; var myAjax = new Ajax.Request(url, { method : "get", parameters : pars, asynchronous : true, evalScripts:false, onComplete:this.a_getListe.bind(this), objetLie: this}); }, a_getListe:function(res){ eval('res='+res.responseText); this.setListe(res.liste); }, ajaxUpdate: function(ajaxResponse) { var Myrech=this.objInput.value; if(Myrech.length>0){ this.setListe(ajaxResponse); } }, gereEnter:function(){ if(this.disp=="1"){ var MyChild=this.objDiv.childNodes[this.curentSel]; this.setNewVal(MyChild.idref,MyChild.libelle); } }, setListe :function(Response){ this.curentSel=0; var taille=Response.length; if(taille>0){ if(this.disp=="0"){ this.displayDiv(); } this.objDiv.innerHTML=""; for(var i=0;i-1){ try{ this.objDiv.childNodes[this.curentSel].className="actb_Noactive_def actb_Noactive"; }catch(e){ } this.curentSel--; try{ this.objDiv.childNodes[this.curentSel].className="actb_active_def actb_active" ; }catch(e){ } } }, setNewVal:function(idr,libel){ this.objInput.value=libel; if(this.opt.callback!=-1){ this.opt.callback(idr,libel); } this.enleveDiv(); }, valeurRecherche:function (n,valob,libel){ var t = escape(this.objInput.value); var tobuild = ''; var re = new RegExp(t, "i"); n=escape(n); var p = n.search(re); for (i=0;i'; for (i=p;i0){ if(this.timerAjaxAC!=-1){ clearTimeout(this.timerAjaxAC); } this.timerAjaxAC=setTimeout (this.majData.bind(this,Myrech),this.opt.timeToLanceRequete); }else{ this.enleveDiv(); } }else{ this.gereEnter(); } }, displayDiv:function(){ try{ fSwapSelect(this.idDiv); document.body.removeChild(document.getElementById(this.idDiv)); }catch(E){ } this.disp="1"; var TabPos=Position.cumulativeOffset(this.objInput); var a=document.createElement('div'); a.id=this.idDiv; a.innerHTML=""; a.className="divaide_def divaide"; a.style.position = "absolute"; a.style.top = TabPos[1]+(this.objInput.offsetHeight) + "px"; a.style.left = TabPos[0] + "px"; a.style.width = this.objInput.offsetWidth + "px"; document.body.appendChild(a); this.objDiv=$(this.idDiv); }, removeDivAide:function(){ try{ document.getElementById(this.idDiv).innerHTML=""; fSwapSelect(this.idDiv); document.body.removeChild(document.getElementById(this.idDiv)); }catch(e){} }, enleveDiv:function(){ autoId=setTimeout (this.removeDivAide.bind(this),250); //document.body.removeChild(this.objDiv); this.disp="0"; }, handleEnterParse :function(event) { var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; if (keyCode == 13) { this.focus(); return false; } else return true; } } fDomOffset = function( oObj, sProp ) { var iVal = 0; while (oObj && oObj.tagName != 'BODY') { eval('iVal += oObj.' + sProp + ';'); oObj = oObj.offsetParent; } return iVal; } fSwapSelect = function( oDiv ) { try{ var i = 0, oSlt = null, iST = 0, iSL = 0, iSW = 0, iSH = 0, isLeft = false, isTop = false, sVis = ''; var oObj = document.getElementById(oDiv); var iOT = fDomOffset(oObj, 'offsetTop'); var iOL = fDomOffset(oObj, 'offsetLeft'); var iOW = oObj.offsetWidth; var iOH = oObj.offsetHeight; var oSelects = document.getElementsByTagName('SELECT'); if (oSelects.length > 0) { for (i = 0; i < oSelects.length; i++) { isLeft = false; isTop = false; oSlt = oSelects[i]; iST = fDomOffset(oSlt, 'offsetTop'); iSL = fDomOffset(oSlt, 'offsetLeft'); iSW = oSlt.offsetWidth; iSH = oSlt.offsetHeight; // On verifie le Magical Square if ((iOL > (iSL - iOW)) && (iOL < (iSL + iSW))) {isLeft = true;} if ((iOT > (iST - iOH)) && (iOT < (iST + iSH))) {isTop = true;} if (isLeft && isTop) { sVis = (oObj.style.visibility == 'hidden') ? 'visible' : 'hidden'; if (oSlt.style.visibility != sVis) {oSlt.style.visibility = sVis;} } else { if (oSlt.style.visibility != 'visible') {oSlt.style.visibility = 'visible';} } } }}catch(e){} }