//--------------------------------------------------------------------------- // Fonction javascript du Framework // // (c)2005 - March Chappuis - Ludomedia - Switzerland - scripts@ludomedia.ch //--------------------------------------------------------------------------- var DATE_SEP = '.'; var TIME_SEP = ':'; //--------------------------------------------------------------------------- // Fonctions privées //--------------------------------------------------------------------------- // affiche un message en substituant les parametre à un message type function _message(message) { for(var i=1;i<_message.arguments.length;i++) { message = message.replace('{'+(i-1)+'}', _message.arguments[i]); } window.alert(message); } // parse une date de la forme jj?mm?aaaa hh?mm?ss function _parseAnyDate(v) { v += '0000000000000000000'; var dd = v.substring(0, 2)-0; var mm = v.substring(3, 5)-1; var yyyy = v.substring(6, 10)-0; var HH = v.substring(11, 13)-0; var MM = v.substring(14, 16)-0; var SS = v.substring(17, 19)-0; return new Date(yyyy, mm, dd, HH, MM, SS , 0); } // ajoute autant de 0 à gauche que nécessaire pour que le résultat aie n caractères function _padInt(v, n) { var r = v + ''; while( r.length < n ) r = '0' + r; return r; } // formate une date jj.mm.aaaa function _formatDate(d) { return _padInt(d.getDate(), 2) + DATE_SEP + _padInt(d.getMonth()+1, 2) + DATE_SEP + d.getFullYear(); } // formatte une date jj.mm.aaaa hh:mm function _formatDateHM(d) { return _formatDate(d) + ' ' + _padInt(d.getHours(), 2) + TIME_SEP + _padInt(d.getMinutes(), 2); } // formatte une date jj.mm.aaaa hh:mm:ss function _formatDateHMS(d) { return _formatDateHM(d) + TIME_SEP + _padInt(d.getSeconds(), 2); } // nettoye les espace avant et apres un texte function _trimText(text) { var i, j, c, spaces = "\t\n\r "; for(i=0;ii;j--) { c = text.charAt(j-1); if(spaces.indexOf(c)==-1) break; } return text.substring(i, j); } // retourn la valeur d'un champ et le trim function _trimField(field) { var v = field.value; v = _trimText(v); field.value = v; return v; } //--------------------------------------------------------------------------- // Fonctions de validation //--------------------------------------------------------------------------- // verifie si un champ contient un certain nombre de caractères // si un seul paramettre est donné c'est la taille max // si deux paramettre sont donnés c'est min et max function JS_Size(formName, fieldName, caption) { var field = document.forms[formName].elements[fieldName]; var v = _trimField(field); if(v.length==0) return false; var minlength = 0, maxlength = Number.MAX_VALUE; if(JS_Size.arguments.length>4) { minlength = JS_Size.arguments[3]-0; maxlength = JS_Size.arguments[4]-0; } else if(JS_Size.arguments.length>3) { maxlength = JS_Size.arguments[3]-0; } if(v.length>=minlength && v.length<=maxlength) return false; if(minlength!=0) _message("Field '{0}' must contain between {1} and {2} characters", caption, minlength, maxlength); else _message("Field '{0}' must contain max. {1} character(s)", caption, maxlength); field.focus(); return true; } // verifie si un champ contient un date valide de la forme jj.mm.aaaa function JS_Date(formName, fieldName, caption) { var field = document.forms[formName].elements[fieldName]; var v = _trimField(field); if(v.length==0) return false; var pd = _parseAnyDate(v); if(v!=_formatDate(pd)) { window.alert("Field '{0}' must contained a date in the form of {1}.", caption, _formatDate(new Date()) ); field.focus(); return true; } } // verifie si un champ contient un date valide de la forme jj.mm.aaaa hh:mm function JS_DateHM(formName, fieldName, caption) { var field = document.forms[formName].elements[fieldName]; var v = _trimField(field); if(v.length==0) return false; var pd = _parseAnyDate(v); if(v!=_formatDateHM(pd)) { _message("Field '{0}' must contained a date in the form of {1}.", caption, _formatDateHM(new Date()) ); field.focus(); return true; } } // verifie si un champ contient un date valide de la forme jj.mm.aaaa hh:mm:ss function JS_DateHMS(formName, fieldName, caption) { var field = document.forms[formName].elements[fieldName]; var v = _trimField(field); if(v.length==0) return false; var pd = _parseAnyDate(v); if(v!=_formatDateHMS(pd)) { _message("Field '{0}' must contained a date in the form of {1}.", caption, _formatDateHMS(new Date()) ); field.focus(); return true; } } // vérifie si un champ contient un email valide function JS_Email(formName, fieldName, caption) { var field = document.forms[formName].elements[fieldName]; var v = _trimField(field); if(v.length==0) return false; var fa = v.indexOf('@'); var fb = v.indexOf('@', fa + 1); var fc = v.indexOf('.', fa + 2); if(fa<0 || fb>0 || fc<0) { _message("Field '{0}' must be a valid e-mail.", caption); field.focus(); return true; } return false; } // check si le champ contient un nombre function JS_PasswordCopy(formName, fieldName, caption) { var field = document.forms[formName].elements[fieldName]; var copy = document.forms[formName].elements[fieldName.replace('FIELD_', 'COPY_')]; if(field.value!=copy.value) { _message("Field '{0}' must match.", caption); copy.focus(); return true; } return false; } // check si le champ contient un nombre function JS_Number(formName, fieldName, caption) { var field = document.forms[formName].elements[fieldName]; var minv = JS_Number.arguments.length>3 ? JS_Number.arguments[3]-0 : Number.MININT; var maxv = JS_Number.arguments.length>4 ? JS_Number.arguments[4]-0 : Number.MAXINT; var v = parseInt(_trimField(field)); if(isNaN(v)) { _message("Field '{0}' must be a number.", caption); field.focus(); return true; } if(vmaxv) { _message("Field '{0}' must be a number between {1} and {2}.", caption, minv, maxv); field.focus(); return true; } return false; } // check si le champ contient un url function JS_Url(formName, fieldName, caption) { var field = document.forms[formName].elements[fieldName]; var v = _trimField(field); if(v.length==0) return false; var fa = v.indexOf('://'); var fb = fa<0 ? -1 : v.indexOf('.', fa + 3); if(fa<0 || fb<0) { _message("Field '{0}' must be a valid URL starting with http:// ftp:// and so on.", caption); field.focus(); return true; } return false; } // check si un champ est remplis function JS_Required(formName, fieldName, caption) { var field = document.forms[formName].elements[fieldName]; var type = field.type ? field.type.toLowerCase() : (field.length ? field[0].type.toLowerCase() : '' ); if(type=='select') { var v = field.options[field.selectedIndex].value; if(v.length!=0) return false; } else if(type=='radio') { if(field.length) { for(var i=0;i