/////////////////////////////////////////////////////////////////////// // Librairie Javascript utilisees pour les controles sur les champs. /////////////////////////////////////////////////////////////////////// // // Version : 2.5.3_1 2006.03.13 10:25 // /////////////////////////////////////////////////////////////////////// // Variables Globales /////////////////////////////////////////////////////////////////////// //Indique si la navigateur est ie. var ie = (document.all) ? true : false; //Indique si on peux utiliser le dhtml ou non (comme des calque[layer in english]) var dhtmlEnabled = (document.all || document.getElementById) ? true : false; //Indique si la validation JavaScript est activee (Defaut : true). var validationJS = true; /////////////////////////////////////////////////////////////////////// // Fonctions utilitaires /////////////////////////////////////////////////////////////////////// //Desactivation de la validation JavaScript. function desactivateValidation() { validationJS = false; } /////////////////////////////////////////////////////////////////////// // Fonctions de test sur les tag input /////////////////////////////////////////////////////////////////////// //Test chaine vide (true si chaine vide ou vide). function isEmpty(inputString) { var searchForNoBlank = /\S/; return (!searchForNoBlank.test(inputString)); } //Test caracteres speciaux (true si caractere special). //Liste des caracteres speciaux : // !|\\|"|#|\$|<|>|\[|\]|\^|`|{|\||}|~|§|¨|²|_|¡|¦|©|ª|«|¬|­|®|¯|±|³|´|µ|¶|·|¸|¹|º|»|¼|½|¾|¿ // ne doit pas commencer par ' ; ou ` function containsSpecialChars(inputString) { var specialChars=/!|\\|"|#|\$|<|>|\[|\]|\^|`|{|\||}|~|§|¨|²|¡|¦|©|ª|«|¬|­|®|¯|±|³|´|µ|¶|·|¸|¹|º|»|¼|½|¾|¿/; var beginLine = /^[';`].*$/; return ( specialChars.test(inputString) || beginLine.test(inputString) ); } //Test longueur maximale (true si la longueur de inputString est plus grande que inputLength). function maxLength(inputString, inputLength) { return (inputString.length > inputLength) ? true : false; } //Test longueur minimale (true si la longueur de inputString est plus petite que inputLength). function minLength(inputString, inputLength) { return (inputString.length < inputLength) ? true : false; } //Test format email (true si inputString est un email). //Format : /^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/ function isEmail(inputString) { var searchForEmail = /^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/ return searchForEmail.test(inputString); } //Test format code postal (true si inputString est un code postal). //Format : /^[0-9]{5}$/ (chaine numerique sur 5 caracteres). function isZipCode(inputString) { var searchForZipCode = /^[0-9]{5}$/ return searchForZipCode.test(inputString); } //Test format date a partir d une expression reguliere (true si inputString est une date). function isDate(exprReg,inputString) { var myMa=exprReg.split("#"); var myAt=inputString.match(myMa[0]); if(myAt){ var myD=(myAt[myMa[1]])?myAt[myMa[1]]:1; var myM=(myAt[myMa[2]])?myAt[myMa[2]]-1:0; var myY=myAt[myMa[3]]; var myDate=new Date(myY,myM,myD); if ((myDate.getFullYear() != myY) || (myDate.getDate() != myD) || (myDate.getMonth() != myM) ){ return false; } else { return true; } } else { return false; } } //Test format entier positif (true si inputString est un entier positif). function isNumberInt(inputString) { var searchInt=/^[0-9]*$/; return (searchInt.test(inputString)); } //Test format montant (true si inputString est un montant). function isAmount(inputString, intlength, decimallength) { if (isNumberInt(inputString) && (inputString.length <= intlength)) return true; if ((inputString == ".") || (inputString == ",")) return false; var searchAmount="^([0-9]{0," + intlength + "})((\.|,)[0-9]{0," + decimallength + "})?$"; var partOfAmount = inputString.match(searchAmount); if (partOfAmount != null) { if (partOfAmount[2]=="") return true; else if ( (partOfAmount[2].indexOf(".") == 0) || (partOfAmount[2].indexOf(",") == 0) ) { return true; } else { return false; } } else { return false; } } /////////////////////////////////////////////////////////////////////// // Fonctions utilitaires sur les listes /////////////////////////////////////////////////////////////////////// function addList(input, output, message) { var selectOne = false; var lengthList = input.length; for (i=0; i < lengthList; i++) { if (input.options[i].selected == true) { var myNewOption = new Option(input.options[i].text, input.options[i].value, false, false); output.options[output.options.length] = myNewOption; input.options[i] = null; lengthList = lengthList - 1; i = i - 1; selectOne = true; } } if (!selectOne) alert(message); } function addElement(input, output, message) { var valueEntered = input.value; if ((valueEntered == "") || (valueEntered == null) ) { alert(message); } else { var myNewOption = new Option(valueEntered, valueEntered, false, false); output.options[output.options.length] = myNewOption; input.value = ""; } } function deleteElement(input, message) { var idCatSelected = input.selectedIndex; if ( idCatSelected == -1 ) { alert(message); } else { input.options[idCatSelected] = null; } } function selectAllElements(selectField) { var i; for (i = 0; i < selectField.length; i++) selectField.options[i].selected = true; } function controlNotEmpty(field, fieldname, label, focuson, notemptyMessage) { var status=true; if (! isEmpty(field.value)) { status=false; printMessage(field, fieldname, notemptyMessage, label, focuson); } return status; } function isSelected(field) { var idSelect = field.selectedIndex; if (idSelect == -1) return false; else if (field.options[idSelect].value == "") return false; else return true; } function initLinkedList(listfrom, listto, table, defaultvalue) { reloadList(listfrom, listto, table, defaultvalue, true); } function reloadList(listfrom, listto, table, defaultvalue, init) { if (listfrom.options[listfrom.selectedIndex].value == "") { listto.options.length = 1; listto.options[0].value = ""; listto.options[0].text = ""; } else { for (i=0;i. //fieldname : nom du champ dans le formulaire //label : libelle du champ //focuson : //mandatory : indique si le champ est obligatoire (true) ou non (false) //mandatorymessage : message d erreur sur mandatory //maxlength : longueur maximale du champ //maxlengthMessage : message d erreur sur maxlength //minlength : longueur minimale du champ //minlengthMessage : message d erreur sur minlength //format : //formatDefinition : //formatMessage : function controlField(field, fieldname, label, focuson, mandatory, mandatoryMessage, maxlength, maxlengthMessage, minlength, minlengthMessage, format, formatDefinition, formatMessage) { var status = true; if ( alreadyError(fieldname) ) { return false; } else if (! isEmpty(field.value)) { if (status && (maxlength != 0) ) { if (maxLength(field.value, maxlength)) { status = false; printMessage(field, fieldname, maxlengthMessage, label, focuson); } } if (status && (minlength != 0) ) { if (minLength(field.value, minlength)) { status = false; printMessage(field, fieldname, minlengthMessage, label, focuson); } } if (status) { switch(format) { case "date" : if (! isDate(formatDefinition, field.value)) { status = false; printMessage(field, fieldname, formatMessage, label, focuson); } break; case "zipcode" : if (! isZipCode(field.value)) { status = false; printMessage(field, fieldname, formatMessage, label, focuson); } break; case "amount" : intPart = formatDefinition.substring(0, formatDefinition.indexOf(",")); decimalPart = formatDefinition.substring(formatDefinition.indexOf(",") + 1, formatDefinition.length); if (! isAmount(field.value, intPart, decimalPart)) { status = false; printMessage(field, fieldname, formatMessage, label, focuson); } break; case "integer" : if (! isNumberInt(field.value)) { status = false; printMessage(field, fieldname, formatMessage, label, focuson); } break; case "email" : /* On supprime les espaces du mail si le mail est valide */ if (! isEmail(field.value.replace(/\s/g, ''))) { status = false; printMessage(field, fieldname, formatMessage, label, focuson); } else { field.value = field.value.replace(/\s/g, ''); } break; } } } else if (mandatory) { status = false; printMessage(field, fieldname, mandatoryMessage, label, focuson); } return status; } //Controle du contenu des champs pour le reverseProxy //field : champ dans le formulaire document.. //fieldname : nom du champ dans le formulaire //label : libelle du champ //focuson : //specialChars : //specialCharsMessage : function controlReverseProxy(field, fieldname, label, focuson, specialChars, specialCharMessage) { var status = true; if (! isEmpty(field.value)) { if (! specialChars) { if (containsSpecialChars(field.value)) { status = false; printMessage(field, fieldname, specialCharMessage, label, focuson); } } } return status; } //Controle de la valeur minimum d'un champ entier //field : champ dans le formulaire document.. //fieldname : nom du champ dans le formulaire //label : libelle du champ //value : valeur minimum du champ //message : message d'erreur function controlFieldIntegerMinValue(field, fieldname, label, value, message) { var status = true; if (! isEmpty(field.value) && (parseInt(field.value) < parseInt(value))) { status = false; printMessage(field, fieldname, message, label, true); } return status; } //Controle de la valeur maximum d'un champ entier //field : champ dans le formulaire document.. //fieldname : nom du champ dans le formulaire //label : libelle du champ //value : valeur maximum du champ //message : message d'erreur function controlFieldIntegerMaxValue(field, fieldname, label, value, message) { var status = true; if (! isEmpty(field.value) && (parseInt(field.value) > parseInt(value))) { status = false; printMessage(field, fieldname, message, label, true); } return status; } //Controle d un tag select function controlSelect(field, fieldname, label, focuson, mandatoryMessage) { var status = true; if (! isSelected(field)) { status = false; printMessage(field, fieldname, mandatoryMessage, label, focuson); } return status; } //Controle d un tag select function controlTextArea(field, fieldname, label, focuson, mandatory, mandatoryMessage) { var status = true; if (mandatory && isEmpty(field.value)) { status = false; printMessage(field, fieldname, mandatoryMessage, label, focuson); } return status; } //Controle d'un radio function controlRadio(radio, name, label, mandatory, mandatoryMessage) { var status = true; if (mandatory) { //on Verifie si un element est selectionne var isChecked = false; for (var i=0; i < radio.length; i++) { if (radio[i].checked) isChecked = true; } if (! isChecked) { status = false; printMessage(radio, name, mandatoryMessage, label, false); } } return status; } //Controle d'un checkbox simple function controlCheckbox(field, fieldname, label, valueon, valueoff, focuson, mandatory, mandatoryMessage) { var status = true; if (mandatory && (field.value == valueoff)) { status = false; printMessage(field, fieldname, mandatoryMessage, label, focuson); } return status; } //Controle d'un checkbox multiple function controlCheckboxMultiple(field, fieldname, label, focuson, mandatory, mandatoryMessage) { var status = true; if (mandatory) { var lengthList = field.length; var selectOne = false; for (i=0; i < lengthList; i++) { if (field[i].checked == true) selectOne = true; } if (! selectOne) { status = false; printMessage(field, fieldname, mandatoryMessage, label, focuson); } } return status; } /////////////////////////////////////////////////////////////////////// // Gestion des messages d erreur /////////////////////////////////////////////////////////////////////// //Efface les messages d erreur sur la page. function deleteErrors(errorsTable) { for (i=0; i < errorsTable.length; i++) { var fieldnameError = errorsTable[i] + "error"; var elt = null; if (document.all) elt = document.all[fieldnameError]; else if (document.getElementById) elt = document.getElementById(fieldnameError); if (elt != null) elt.innerHTML = ''; } } //Affichage du message d erreur. //Si navigateur gere le dhtml du message d'erreur dans la balise HTML. //Sinon affichage dans une popup. function printMessage(field, fieldname, message, label, focuson) { if (focuson) { field.focus(); focuson = false; } if (document.all || document.getElementById) { var elt = null; if (document.all) elt = document.all[fieldname + "error"]; else if (document.getElementById) elt = document.getElementById(fieldname + "error"); if (elt != null) elt.innerHTML = message; } else alert(label + " " + message); return focuson; } //regarde si dans un navigateur qui gère le dhtml, un message d'erreur existe deja pour le champ function alreadyError(fieldname) { if (document.all || document.getElementById) { var elt = null; if (document.all) elt = document.all[fieldname + "error"]; else if (document.getElementById) elt = document.getElementById(fieldname + "error"); if (elt != null) return !isEmpty(elt.innerHTML); } return false; }