/**
 *  swUtils : objet pour gérer les états binaires
 *  RNB, décembre 2006
 */
var sw = new swUtils();

function swUtils()
{
    // variables d'états (classes)
    var display_class = 'hide';
    var list_class = 'current';
    var state = ['plier','deplier'];
    var node_display = ['a','r'];
    var list_display = ['r','a'];
    
    var pict_state = [];
    pict_state['plier'] = [];
    pict_state['plier']['src'] = root+'css/plier.png';
    pict_state['plier']['title'] = 'Cliquer pour déplier';
    pict_state['deplier'] = [];
    pict_state['deplier']['src'] = root+'css/deplier.png';
    pict_state['deplier']['title'] = 'Cliquer pour plier';
    
    /**
     *  Créer image switch
     *  @param  String  mode : plier/déplier
     *  @return DomElement  image
     */
    this.createPict = function(mode)
    {
        var img = document.createElement('img');
        this.switchPict(img,mode);
        return img;
    };
    /**
     *  Assigner les attributs à une image
     *  @param   DOMElement  img : élément img
     *  @param  String  mode : plier/déplier
     */
    this.switchPict = function(img,mode)
    {
        img.setAttribute('src',pict_state[mode]['src']);
        img.setAttribute('alt','Plier/Déplier');
        img.setAttribute('title',pict_state[mode]['title']);
        img.className = 'switch';
    };
    /**
     *  ajouter / supprimer une classe (afficher/masquer)
     *  @param  DOMElement  node : élément à traiter
     *  @param  String  mode : plier/déplier
     */
    this.switchDisplay = function(node,mode)
    {
        for (var i=0; i<2; i++) {
            if (mode==state[i]) {
                var idx = i;
                break;
            }
        }
        setClass(node_display[idx],display_class,node);
    };
    /**
     *  Switcher entre 2 classes (plier/déplier)
     *  @param  DOMElement  node : élément à traiter
     *  @param  String  mode : plier/déplier
     */
    this.switchClass = function(node,mode)
    {
        var opp = this.switchState(mode);
        var re = new RegExp('(^| )'+opp+'( |$)');
        if (re.test(node.className)) {
            node.className = node.className.replace(opp,mode);
        }
        else {
            setClass('a',mode,node);
        }
        node.setAttribute('title',pict_state[mode]['title']);
    };
    /**
     *  Switcher l'état plier/déplier
     *  @param  String  mode : plier/déplier
     */
     this.switchState = function(mode)
     {
         for (var i=0; i<2; i++) {
             if (mode!=state[i]) {
                 return state[i];
             }
         }        
     };

}


