/* SELECTEUR SIMPLIFIE * * @ifOrClass L'id ou la classe de l'element cible * * @return element Retourne l'element de cet ID ou cette classe si trouve * @return null Retourne null si rien n'est trouve * */ function $(idOrClass){ var byId = document.querySelectorAll('#'+idOrClass); var byClass = document.querySelectorAll('.'+idOrClass); if( byId.length > 0 ) return byId[0]; else return byClass[0]; } /* Retourne un data-* attribute d'un element (surcharge de l'ELEMENT natif) * * @attribute L'attribut qui nous interesse * * @return value Retourne la valeur si l'attribut existe * @return false Retourne FALSE si rien n'a ete trouve * * */ Element.prototype.getData = function(attribute){ // On verifie qu'un data-* attribute existe if( typeof this.dataset == 'undefined' ) return false; return ( this.dataset.hasOwnProperty(attribute) ) ? this.dataset[attribute] : false; } /* Ajout de classe pour un element (surcharge de l'ELEMENT natif) * * @className Classe a ajouter a l'element * */ Element.prototype.addClass = function(className){ /* [1] On transforme la classe actuelle en tableau ====================================================*/ var classArray = this.className.split(' '); /* [2] On ajoute la classe si elle n'y est pas deja ====================================================*/ if( classArray.indexOf(className) > -1 ) return; // La classe y est deja classArray.push(className); /* [3] On reformatte tout ====================================================*/ this.className = classArray.join(' ').trim(); }; /* Suppression de classe pour un element (surcharge de l'ELEMENT natif) * * @className Classe a supprimer a l'element * */ Element.prototype.remClass = function(className){ /* [1] On transforme la classe actuelle en tableau ====================================================*/ var classArray = this.className.split(' '); /* [2] On retire la classe si elle y est ====================================================*/ var index = classArray.indexOf(className); if( index == -1 ) return; // La classe n'y est pas classArray = classArray.slice(0,index).concat( classArray.slice(index+1) ); /* [3] On reformatte tout ====================================================*/ this.className = classArray.join(' ').trim(); }; // on définit le "indexOf" pour et 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; }; // GESTION DES ANIMATIONS (CLASSE PENDANT TEMPS IMPARTI) Element.prototype.anim = function(className, timeout){ var pointer = this; // on cree un pointeur pointer.addClass(className); // on met la classe // on la retire apres le @timeout imparti setTimeout(function(){ pointer.remClass(className); }, timeout); } /* DEFINITION DES FORMATS UTILES POUR INPUT-CHECKER * */ var format_code; try{ format_code = new formatChecker(null, 'HH-HH-HH-HH', { 'H' : '[0-9A-F]'} ); }catch(e){ console.warn(e); }