/****ONGLET *****/

/** affiche les onglet d'un container avec un fade
 *@todo Ajouter une div transparente pour eviter les problemes de hover
* @param affiche Id de l'onglet a afficher
* @param fadeOff Desactive le fade si present
* @code
 *<ul>
 *  <li onclick="afficheOnglet('onglet1');"><a href="#"></a></li>
 *  <li onclick="afficheOnglet('onglet2');"><a href="#"></a></li>
 *  <li onclick="afficheOnglet('onglet3');"><a href="#"></a></li>
 *  </ul>
 *  <div>
 *      <div id="onglet1">
 *          bla bla bla
 *      </div>
 *      <div id="onglet2">
 *          bla bla bla
 *      </div>
 *      <div id="onglet3">
 *          bla bla bla
 *      </div>
 *  </div>
* */
function afficheOnglet(affiche,fadeOff){
    var afficheElt = document.getElementById(affiche);
    var contenant = afficheElt.parentNode;

    if ( contenant ){
        for (var i=0;i < contenant.childNodes.length;i++){
            elt = contenant.childNodes[i];
            if ( elt.nodeName == afficheElt.nodeName  && elt != afficheElt){
                elt.style.display = 'none';
                if( !fadeOff )
                    SetOpacity(elt,0);
            }
        }
    }
    afficheElt.style.display = 'block';
    if( afficheElt.style.opacity != 100 && !fadeOff )
        FadeOpacity(afficheElt.id, 0,100,500,50);
}

/** Ajoute la classe 'active' a un element et la retire aux elements du bloc le contenant
 *@param elt L'element appelant
 *@code
 *<ul>
 *  <li id="onglet1" onclick="activeIt(this);"><a href="#"></a></li>
 *  <li id="onglet2" onclick="activeIt(this);"><a href="#"></a></li>
 *  <li id="onglet3" onclick="activeIt(this);"><a href="#"></a></li>
*  </ul>
 *  @endcode
 **/
function activeIt(elt){
    var base = elt.id.substr(0,elt.id.length-1);
    var contener = elt.parentNode;
    var  reg=new  RegExp("(active)", "gi");
    for (i=0;i<contener.childNodes.length;i++){
        var nelt = contener.childNodes[i];
        if ( nelt.nodeName == elt.nodeName && reg.test(nelt.getAttribute('class')) && nelt != elt){
            RemoveClass(nelt,'active');
        }
    }
    AddClass(elt,'active');
}


/***** / ONGLET ****/

/***************************/
/***** FADE IN / OUT ******/
/**Regle les problemes de declaration de l'opacite par navigateur
 * @param level Valeur de l'opacite a appliquer
 * */
Element.prototype.opacite = function(level){
    this.style.opacity = level;
    this.style.MozOpacity = level;
    this.style.KhtmlOpacity = level;
    this.style.filter = "alpha(opacity=" + (level * 100) + ");";
}
/** Regle l'opacite
 *@param elem Element sur lequel s'applique l'opacité
 *@param opacityAsInt Valeur de l'opacite
 **/
function SetOpacity(elem, opacityAsInt)
{
    var opacityAsDecimal = opacityAsInt;

    if (opacityAsInt > 100)
        opacityAsInt = opacityAsDecimal = 100;
    else if (opacityAsInt < 0)
        opacityAsInt = opacityAsDecimal = 0;

    opacityAsDecimal /= 100;
    if (opacityAsInt < 1)
        opacityAsInt = 1; // IE7 bug, text smoothing cuts out if 0

   // elem.opacite(opacityAsDecimal);
}
/**
 * @param elemId Id de l'element pour le fade
 * @param fromOpacity Opacite de depart
 * @param toOpacity Opacite de fin
 * @param time Temps du fade en milliseconde
 * @param fps Nombre de framre de l'animation entre 8 et 12
 * **/
function FadeOpacity(elemId, fromOpacity, toOpacity, time, fps)
{
    var steps = Math.ceil(fps * (time / 1000));
    var delta = (toOpacity - fromOpacity) / steps;

    FadeOpacityStep(elemId, 0, steps, fromOpacity, delta, (time / steps));
}

function FadeOpacityStep(elemId, stepNum, steps, fromOpacity, delta, timePerStep)
{
    SetOpacity(document.getElementById(elemId), Math.round(parseInt(fromOpacity) + (delta * stepNum)));

    if (stepNum < steps)
        setTimeout("FadeOpacityStep('" + elemId + "', " + (stepNum+1) + ", " + steps + ", " + fromOpacity + ", " + delta + ", " + timePerStep + ");", timePerStep);
}
/******** /FADE ********/

/** Supprime une classe CSS
 *@param elt Element sur lequel s'pplique le fonction
 *@param classname Nom de la classe a supprimer
 **/
function RemoveClass(elt,classname){
    var  reg=new  RegExp("("+classname+")", "gi");
    elt.setAttribute('class',elt.getAttribute('class').replace(reg,''));
    elt.setAttribute('class',elt.getAttribute('class').trim());
    if( elt.getAttribute('class') == '' )
        elt.removeAttribute('class');
}
/** Ajoute une classe CSS a un element
 *@param elt element sur lequel s'pplique la fonction
 *@param classname Nom de la classe a ajouter
 **/
function AddClass(elt,classname){
    var old = (elt.getAttribute('class'))?elt.getAttribute('class')+' ':'';
    var  reg=new  RegExp("("+classname+")", "gi");
    if ( !reg.test(old) )
        elt.setAttribute('class',old+classname);
}

