/* 2005-06-29 AMT: Correction _addText() */ /* 2007-05-31 CRD : ajout de 2 parametres optionels a l'objet selectBox permettant la construction de la query de recherche sur plusieurs champs à valeurs differentes */ /* 2007-06-01 CRD : passage des parametre de category en encodeURIComponent() [compatibilite IE7] */ var boxObj; // recherche de la version de navigateur var app=navigator.appName.substr(0,8); var version=0; var ind; if (app=="Netscape") { UA=navigator.userAgent; ind=UA.indexOf("/"); if (ind>0) version=UA.substr(ind+1,1); else version=0; } var ns6 = (version>4) ? true : false; var ns4 = (ns6==false && version>3) ? true : false; var ie4 = (document.all) ? true : false; /*===== CONSTRUCTEUR Ooptions --> options de la selectionBox =====*/ function Ooptions(strOpt) { var oi, iC, sC, vC; var vTab=strOpt.split(','); for (oi=0; oi0) { sC=vTab[oi].substring(0,iC); vC=vTab[oi].substring(iC+1, vTab[oi].length); this[sC]=vC; } } if (!this.width) this.width=500; // largeur par defaut de la boite if (!this.height) this.height=500; // hauteur par defaut de la boite this.toString=_optToString; // méthode qui retourne les options en chaine pour window.open return; } // ------ méthode de l'objet 'Ooptions' // retourne toutes les propriétés sous forme de texte, directement utilisable par window.open // propriété=valeur, propriété=valeur,... function _optToString() { var opts=''; for (opt in this) { if (opts=='') opts= opt + '=' + this[opt]; else opts += ',' + opt + '=' + this[opt]; } return opts; } /*===== CONSTRUCTEUR Ocat: la catégorie dans la vue =====*/ function Ocat(_fCat, _dCat) { if (_fCat) this.field = _fCat; // objet champ qui contient la valeur de la catégorie (optionnel) else this.field = ''; this.field.toString = _CatToTexte; // renvoie la valeur texte de obj (suivant le type de l'objet) this.defaultValue = _dCat; // categorie par defaut (optionnel) this.usedValue; // pour le pop-up : la valeur de la categorie à utiliser } // ----- méthode Ocat --> récupère le texte de l'object field function _CatToTexte() { if (!this) return ''; var i=0, lst=''; switch (this.type) { case 'hidden': case 'text': return this.value; break; case 'select-one': if (this.selectedIndex > -1) return this.options[this.selectedIndex].value; else return ''; case 'select-multiple': for (i=0; i clef de la donnée sélectionnée (Unique ID) - généralement caché au user // t1 --> titre pour affichage var title=unescape(t1); var code=unescape(c1) var ind = this.elements.length; if ((this.multiValue==false) && (ind>0)) ind=0 this.elements[ind] = new Array(2); if (t1!='') this.elements[ind][0]=title; // le titre s'il est différent de 'blanc' else this.elements[ind][0]=code; // sinon ecrire le code if (c1!='') this.elements[ind][1]=code; // le code s'il est différent de 'blanc' else this.elements[ind][1]=title; // sinon écrire le titre this.setFields() // écrire le nouvel élément dans les champs } // ------ ajouter un texte à un champ : méthode des objetc titleList et codeList function _addText(sText, multi, index,selected) { // sText --> le texte à ajouter // multi --> indique si le champ accepte une liste (séparateur virgule) // index --> donne l'index de l'élement dans le champ (cas multi=true) // selected --> l'élément à selectionner (cas champ list uniquement) switch (this.type) { // tester le type de l'objet (text ou list box case 'hidden': case 'text': if (multi) { // les textes sont séparés par virgule (toujours), il faut convertir le texte, pour transformer les virgules en %27 if (this.value!='' && (index>0)) this.value+=","+escape(sText); else this.value=escape(sText); } else this.value=sText; // mono valeur : remplacer le texte break; case 'select-multiple': case 'select-one': if (multi) { if (index>-1) { if (!this.options[index]) this.options[index] = new Option(); this.options[index].text=sText; // sélection de l'option if (selected==index) this.options[index].selected=true; else this.options[index].selected=false; } } else { if (index>-1) { if (this.options.length==0) { this.options[0] = new Option(); } this.options[0].text=sText; } else { /* 2005-06-29 AMT : tester la longueur avant d'initialiser le text */ if (this.options.length>0) this.options[0].text = sText; } } break; default: return ''; } } /* ----- supprimer un élément : méthode de l'objet selectBox --- le champ qui recueille les titres est obligatoirement une liste */ function _deleteElement() { var ind, i; switch (this.titleList.type) { case 'select-multiple': case 'select-one': ind=this.titleList.options.selectedIndex; // y'a t'il des elements à supprimer ? if (ind>-1) { i=ind; while(i0) idxSelect=0; else if (ind>0) { if (len>ind) idxSelect=ind; else idxSelect=len-1; } this.setFields(idxSelect); // ré-afficher les champs } break; default: return ''; } } /* ------ Supprimer tous les éléments du tableau ----- méthode pour elements */ function _clearAll() { var len=this.elements.length; var i=0; var isList = false; var Ltype = this.titleList.type; // tester le type du champ titre if (Ltype=='select-multiple' || Ltype=='select-one') isList=true; for(i=0; i this.elements[i+1][0].toUpperCase()) { tmpObj = this.elements[i]; this.elements[i]=this.elements[i+1]; this.elements[i+1]=tmpObj; if (idxSelect==i) idxSelect=i+1; else if (idxSelect==i+1) idxSelect=i; mark=1; } } } this.setFields(idxSelect); } //--------------------- fin de definition de l'objet selectBOX var w1; function addLine(myBox) { if (!myBox) { alert('L\'objet n\'existe pas'); return false; } // placer la boite au milieu de l'écran, si les positions n'existent pas déjà if (ie4 || ns6) { if (!myBox.settings.left) myBox.settings.left=(screen.width/2) - (myBox.settings.width/2); if (!myBox.settings.top) myBox.settings.top=(screen.height/2) - (myBox.settings.height/2); } if (ns4) { if (!myBox.settings.screenX) myBox.settings.screenX=(screen.width/2) - (myBox.settings.width/2); if (!myBox.settings.screenY) myBox.settings.screenY=(screen.height/2) - (myBox.settings.height/2); } var LV = myBox.view.forSearch; // la vue de recherche if (LV=='') LV=myBox.view.forOpen; // prendre la vue par defaut if (LV=='') return; var CV=myBox.view.singleCat.field.toString(); // lire le champ qui determine la categorie if (CV=='') CV=myBox.view.singleCat.defaultValue; // lire la categorie par defaut myBox.view.forUse=LV; // pour donner la vue de recherche à la pop-up myBox.view.singleCat.usedValue=CV; // idem pour categorie var LG= (myBox.lang) ? myBox.lang : ''; //2007-06-01 CRD : encodage des valeurs de categorie //var url=myBox.URL + '&V=' + myBox.view.forOpen + '&C=' +CV + ((LG) ? '&LG=' + LG : '') ; var url=myBox.URL + '&V=' + myBox.view.forOpen + '&C=' +encodeURIComponent(CV) + ((LG) ? '&LG=' + LG : '') ; boxObj = myBox; // le seul objet que connaisse la pop-up w1=window.open(url , 'listControl',myBox.settings.toString()); w1.focus(); } // ------------------------split le contenu d'un champ dans une variable table function splitObject(fObj) { // fObj est un champ dont le type est variable (soit texte, soit boite de selection) // le contenu texte de fObj est retourné dans une tableau var tabElement=new Array; switch (fObj.type) { case "text": case "hidden": if (fObj.value!='') tabElement=fObj.value.split(","); // virgule est TOUJOURS le séparateur for (i=0; i