// Version officielle de l'ENSTA de codage des emails par javascript Autre solution 
// 
// <SCRIPT language=javascript type=text/javascript>
// <!--
// { coded = "wKXOJcjq9@96wqJ.Ec"
//   key = "V9sYH3uqSzKaC4ixROh0wn2og1UpLJdTjWmArf56bXN8MeF7ykZtvQcEPBDGIl"
//   shift=coded.length
//   link=""
//   for (i=0; i<coded.length; i++) {
//     if (key.indexOf(coded.charAt(i))==-1) {
//       ltr = coded.charAt(i)
//       link += (ltr)
//     }
//     else {     
//       ltr = (key.indexOf(coded.charAt(i))-shift+key.length) % key.length
//       link += (key.charAt(ltr))
//     }
//   }
// document.write("<a href='mailto:"+link+"'>Courriel</a>")
// }
// //-->
// </SCRIPT>
//
//////////////////////////////////////////////////////////////////////////// 
// Version d'Eric de codage des emails par javascript 
//
// Principe : 
//   On indique dans l'URL une version encodé du mail (par une fonction PHP)
//   Puis lorseque le client clique sur l'URL, une fonction javascript est appelée
//   pour le décodage.
//   INC de cette méthodes :
//   - l'encodage ne se fait pas de tête (il faut passer soit par une fonction PHP
//     soit par un utilitaire en ligne)
//   - le client ne voit pas l'URL sr laquelle il clique pour lancer son client
//     email. Par conséquent, ce système est totalement inéxploitable si le
//     client ne dispose pas dans client mail opérationnel (et avec javascript actif).
//     Dans pas possible d'exploiter l'adresse email dans un webcafe ou depusi une 
//     station en libre service.
//
// Exemple d'utilisation pour l'affiche d'un email :
//
//   <a href="javascript:decode_mel('nbjmup;mbvsfou/cpvshfpjtAfotub/gs')">
//      <img src="images/mail7.gif" border=0 height=25" />
//   </a>
//
// Version correspondante d'encodage en PHP (pour construire le mail encodé) : 
//
//   function encode_mail($mail) {
//       $m = "mailto:".$mail;
//       $n = "";
//       for($i = 0; $i < strlen($m); $i++) {
//           $n .= chr( ord($m{$i}) + 1 );
//       }
//       return $n;
//   }
//   
// Fonction javascript à envoyer au client :
//
//    // Décode l'adresse codée par la fonction php "encode_mail"
//    function decode_mel(m) {
//        // inverse de la fonction encode_mail() dans util.php
//        var n="";
//        var c;
//        var i;
//        for (i=0; i < m.length; i++) {
//            c = m.charCodeAt(i);
//            c -= 1;
//            n += String.fromCharCode(c);
//        }
//        location.href = n;
//    }




////////////////////////////////////////////////////////////////////////
// affecte ou invere la visibilité d'un éléement commu par son id
// 
function toggleVisibility(id) {
    var vis = document.getElementById(id).style.visibility;
    if (vis == "visible") {
        document.getElementById(id).style.visibility = 'hidden';
    } else {
        document.getElementById(id).style.visibility = 'visible';
    }
}
function toggleDisplay(id) {
    var disp = document.getElementById(id).style.display;
    if (disp == "none") {
        document.getElementById(id).style.display = '';
    } else {
        document.getElementById(id).style.display = 'none';
    }
}
function toggleBlockDisplay(id) {
    var disp = document.getElementById(id).style.display;
    if (disp == "none") {
        document.getElementById(id).style.display = 'block';
    } else {
        document.getElementById(id).style.display = 'none';
    }
}
function toggleInlineDisplay(id) {
    var disp = document.getElementById(id).style.display;
    if (disp == "none") {
        document.getElementById(id).style.display = 'inline';
    } else {
        document.getElementById(id).style.display = 'none';
    }
}
// Exemple :
//   setDisplay("themesDiv", "none");
//   setDisplay("themesDiv", "block");
//   setDisplay("themesDiv", "inline");
//  
function setDisplay(id, disp) {
    document.getElementById(id).style.display = disp;
}
// usage : 
//  lang=getURLParam(lang);
// => return "fr", "en" ou "" suivant la cas
// 
// Exemple :
// 
//  Si l'url vaut : 
//      http://.../try/index.php?pipi=3&showThemes=1&popo=2
//  alors 
//      showThemes = getURLParam("showThemes") 
//  retourne 1
//  
function getURLParam(strParamName) {
    var strReturn = "";
    var strHref = window.location.href;
    // alert("strHref="+ strHref);
    if ( strHref.indexOf("?") > -1 ) {
        var strQueryString = strHref.substr(strHref.indexOf("?"));
        var aQueryString = strQueryString.split("&");
        for ( var iParam = 0; iParam < aQueryString.length; iParam++ ) {
            // alert("aQueryString[iParam]="+ aQueryString[iParam]);
            if (aQueryString[iParam].indexOf(strParamName + "=") > -1 ) {
                var aParam = aQueryString[iParam].split("=");
                strReturn = aParam[1];
                break;
            }  
        }  
    } 
    return strReturn;
} 


/* Reference Article:
Dustin Diaz:
http://www.dustindiaz.com/top-ten-javascript/
*/

/* addEvent: simplified event attachment */
function addEvent( obj, type, fn ) {
    if (obj.addEventListener) {
        obj.addEventListener( type, fn, false );
        EventCache.add(obj, type, fn);
    }
    else if (obj.attachEvent) {
        obj["e"+type+fn] = fn;
        obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
        obj.attachEvent( "on"+type, obj[type+fn] );
        EventCache.add(obj, type, fn);
    }
    else {
        obj["on"+type] = obj["e"+type+fn];
    }
}
    
var EventCache = function(){
    var listEvents = [];
    return {
        listEvents : listEvents,
        add : function(node, sEventName, fHandler){
            listEvents.push(arguments);
        },
        flush : function(){
            var i, item;
            for(i = listEvents.length - 1; i >= 0; i = i - 1){
                item = listEvents[i];
                if(item[0].removeEventListener){
                    item[0].removeEventListener(item[1], item[2], item[3]);
                };
                if(item[1].substring(0, 2) != "on"){
                    item[1] = "on" + item[1];
                };
                if(item[0].detachEvent){
                    item[0].detachEvent(item[1], item[2]);
                };
                item[0][item[1]] = null;
            };
        }
    };
}();
addEvent(window,'unload',EventCache.flush);

/* window 'load' attachment */
function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    }
    else {
        window.onload = function() {
            oldonload();
            func();
        }
    }
}

/* grab Elements from the DOM by className */
function getElementsByClass(searchClass,node,tag) {
    var classElements = new Array();
    if ( node == null )
        node = document;
    if ( tag == null )
        tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
    for (i = 0, j = 0; i < elsLen; i++) {
        if ( pattern.test(els[i].className) ) {
            classElements[j] = els[i];
            j++;
        }
    }
    return classElements;
}

/* toggle an element's display */
function toggle(obj) {
    var el = document.getElementById(obj);
    if ( el.style.display != 'none' ) {
        el.style.display = 'none';
    }
    else {
        el.style.display = '';
    }
}

/* insert an element after a particular node */
function insertAfter(parent, node, referenceNode) {
    parent.insertBefore(node, referenceNode.nextSibling);
}

/* Array prototype, matches value in array: returns bool */
Array.prototype.inArray = function (value) {
    var i;
    for (i=0; i < this.length; i++) {
        if (this[i] === value) {
            return true;
        }
    }
    return false;
};

/* get, set, and delete cookies */
function getCookie( name ) {
    var start = document.cookie.indexOf( name + "=" );
    var len = start + name.length + 1;
    if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
        return null;
    }
    if ( start == -1 ) return null;
    var end = document.cookie.indexOf( ";", len );
    if ( end == -1 ) end = document.cookie.length;
    return unescape( document.cookie.substring( len, end ) );
}
    
function setCookie( name, value, expires, path, domain, secure ) {
    var today = new Date();
    today.setTime( today.getTime() );
    if ( expires ) {
        expires = expires * 1000 * 60 * 60 * 24;
    }
    var expires_date = new Date( today.getTime() + (expires) );
    document.cookie = name+"="+escape( value ) +
        ( ( expires ) ? ";expires="+expires_date.toGMTString() : "" ) + //expires.toGMTString()
        ( ( path ) ? ";path=" + path : "" ) +
        ( ( domain ) ? ";domain=" + domain : "" ) +
        ( ( secure ) ? ";secure" : "" );
}
    
function deleteCookie( name, path, domain ) {
    if ( getCookie( name ) ) document.cookie = name + "=" +
            ( ( path ) ? ";path=" + path : "") +
            ( ( domain ) ? ";domain=" + domain : "" ) +
            ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

/* quick getElement reference */
function $() {
    var elements = new Array();
    for (var i = 0; i < arguments.length; i++) {
        var element = arguments[i];
        if (typeof element == 'string')
            element = document.getElementById(element);
        if (arguments.length == 1)
            return element;
        elements.push(element);
    }
    return elements;
}
//./


