///////////////////////////////////////////////////////////////////////
// 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;
}