/**
 * Gère les attributs class des éléments
 * 
 * -- Pas de licenses --
 * 
 * @package SFF, SFF's Panel
 * @author Baptiste "Talus" Clavié <clavie.b@gmail.com>
 * @copyright Talus, SFF 2004+
 * @link http://www.sanctuaireff.com SanctuaireFF
 * @last 06/02/2009, Talus
 */

/**
 * Cherche dans le document les objets ayant la classe cl
 * 
 * @param string cl classe à chercher
 * @return node[]
 */
document.getElementsByClassName = function(cl) {
        var retnode = [];
        var myclass = new RegExp('\\b'+cl+'\\b');
        var elem = this.getElementsByTagName('*');
        
        for (var i = 0; i < elem.length; i++) {                    
            var classes = elem[i].className;
            if (myclass.test(classes)) retnode.push(elem[i]);
        }
        
        return retnode;
    };

/**
 * Vérifie si l'objet obj a une classe strClass
 * 
 * @param obj Objet concerné
 * @param strClass Classe à chercher
 * @return bool
 */
var hasClassName = function (obj, strClass){
        if (typeof obj == 'string') obj = document.getElementById(obj);
        return obj.className && obj.className.match(strClass);
    };

/**
 * Ajoute la class strClass à l'objet obj
 * 
 * @param obj Objet concerné
 * @param strClass Classe à ajouter
 * @return void
 */
var addClassName = function (obj, strClass){
        if (typeof obj == 'string') obj = document.getElementById(obj);
        if (hasClassName(obj, strClass)) return;
        
        if (obj.className){
            var classes = obj.className.split(' ');
            classes[classes.length] = strClass;
            obj.className = classes.join(' ');
            	
            return;
        }
        
        obj.className = strClass;
        return;		
    };

/**
 * Retire la class strClass à l'objet obj
 * 
 * @param obj Objet concerné
 * @param strClass Classe à retirer
 * @return void
 */
var removeClassName = function (obj, strClass){
        if (typeof obj == 'string') obj = document.getElementById(obj);
        if (!hasClassName(obj, strClass)) return;
        
        var classes = obj.className.split(' ');
        var newClasses = new Array();
        
        for (var i in classes){
            if (classes[i].toLowerCase() != strClass.toLowerCase()){
                newClasses.push(classes[i]);
            }
        }
        
        obj.className = newClasses.join(' ');
        return;
    };

/**
 * EOF
 */
