projet-php/js/lib/adjust.js

112 lines
3.8 KiB
JavaScript
Executable File

// on définit le "indexOf" pour <HTMLCollection> et <NodeList>
NodeList.prototype.indexOf = HTMLCollection.prototype.indexOf = function(searchedElement){
for( var i = 0 ; i < this.length ; i++ ) // on parcours la collection
// si on trouve l'élement, on retourne son rang
if( this[i] == searchedElement ) return i;
// si on a rien trouvé, on retourne -1
return -1;
};
function addClass(el, pClass){
if( el.className.length > 0 && el.className != pClass ) el.className = el.className + ' ' + pClass;
else el.className = pClass;
}
function remClass(el, pClass){
if( el.className.indexOf(pClass) > -1 ) // si la class de l'élement contient la classe à enlever
el.className = el.className.substr(0, el.className.indexOf(pClass)) + '' + el.className.substr(el.className.indexOf(pClass)+pClass.length);
}
// var completeAccentList = "àAAÀAAÁÂÒÓÔÕÖØòÒÓÔÕ-ÖØòó_ôõöøÈÉÊËèéêëÇçÒÓÔÕÖØòÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ";
var accentList = 'àÀÈÉÊËèéêëçîïúû';
/* Met à jour l'état visuel d'un <input> si sa valeur correspond aux initères
*
* @pInputElement<HTMLInputElement> l'élément <input> en question
* @pMinLength<int> la taille minimum autorisée
* @pMaxLength<int> la taille maximum autorisée
* @optAlpha<String> [OPT] TRUE si uniquement alphanumérique
*/
function checkVARCHAR(pInputElement, pMinLength, pMaxLength, optAlpha){
var optAlpha = (arguments.length > 3) ? optAlpha : false;
optAlpha = (typeof optAlpha == 'boolean') ? optAlpha : false;
var varcharRegExp;
if( optAlpha ) varcharRegExp = new RegExp('^(['+accentList+'a-z]{'+pMinLength+','+pMaxLength+'})$', 'i'); // only alpha characters
else varcharRegExp = new RegExp('^(['+accentList+'\\w -]{'+ pMinLength+','+pMaxLength+'})$', 'i'); // any word character
if( pInputElement.value.match(varcharRegExp) != null || pInputElement.value == '' ){ // si champ correct
addClass(pInputElement, 'validated');
if( pInputElement.required ) remClass(pInputElement, 'invalid');
}else{
remClass(pInputElement, 'validated');
if( pInputElement.required ) addClass(pInputElement, 'invalid');
}
}
var notifState = false; // VRAI si affiché, sinon FAUX
function notif(pType, pTitle, pMessage){
/* [0] Variables globales
======================================================*/
var notifElement = document.getElementById('NOTIFBAR');
var lTitle = [
'Oups!', // error
'Cool!', // success
'Tout va bien!', // info
];
var lMessage = [
'Un erreur a eu lieu. Veuillez réessayer.', // error
'Tout s\'est bien passé.', // success
'On va tout vous expliquer.' // info
];
/* [1] On formatte et vérifie les variables
======================================================*/
if( arguments.length == 0 ) return false; // si pas de param, on quitte
var pTitle = (arguments.length>1) ? pTitle : null;
var pMessage = (arguments.length>2) ? pMessage : null;
var index = ['error', 'success', 'info'].indexOf(pType);
if( index == -1 ) return false; // si pType incorrect, on quitte
/* [2] On initialise la box et les variables
======================================================*/
notifElement.className = ''; // on supprime toute classe existante
addClass(notifElement, pType); // on met en page en fonction du type
if( pTitle == null ) pTitle = lTitle[index];
if( pMessage == null ) pMessage = lMessage[index];
/* [3] On met en page et on affiche
======================================================*/
notifElement.children[1].children[0].innerHTML = pTitle; // on attribue le titre
notifElement.children[1].children[1].innerHTML = pMessage; // on attribue le texte
addClass(notifElement, 'active'); // on affiche la boite
}
var API = new APIClass();