﻿var vbrn = {

    _base16: "0A12B34C56D78E9F",
    _baseClassName: "vbrn",

    decode: function(str) {
        var retour = "";
        for (var i = 0; i < str.length; i += 2) {
            var ch = this._base16.indexOf(str.charAt(i));
            var cl = this._base16.indexOf(str.charAt(i + 1));
            retour += String.fromCharCode((ch * 16) + cl);
        }
        return retour;
    },

    init: function() {
        var tagsA = document.getElementsByTagName("span");
        for (var i = 0; i < tagsA.length; i++) {
            if (tagsA[i].className.length >= this._baseClassName.length) {
                if (tagsA[i].className.substring(0, this._baseClassName.length) == this._baseClassName) {
                    var reg = new RegExp("[ ]+", "gi");   // regexpression pour split la chaine de nom de classe
                    var tableau = tagsA[i].className.split(reg);  //split du nom de classe : "vbrn nomCss"
                    var realCssName = tableau[1];  //le vrai nom de classe du lien
                    if (tableau.length > 2) {
                        for (var p = 2; p < tableau.length; p++) {
                            realCssName += " " + tableau[p];
                        }
                    }
                    var url = this.decode(tableau[0].substring(this._baseClassName.length)); //récupération et décodage du lien
                    var nlink = document.createElement("a");  //création de la vraie balise <a>
                    nlink.href = url;   //association du lien à la balise <a>
                    nlink.className = realCssName;   //association de la vraie classe à la balise <a>
                    //recopier les autres attributes
                    var nbAttr = tagsA[i].attributes.length;
                    for (var k = 0; k < nbAttr; k++) {
                        //recopier les attributs autres que class
                        if (tagsA[i].attributes[k].name != "class") {
                            nlink.setAttribute(tagsA[i].attributes[k].name, tagsA[i].attributes[k].value);
                        }
                    }
                    nlink.disabled = false;

                    //on remet le contenu de l'ancien span à l'intérieur de la balise <a> (quand on a <a href=""><img /></a> par exemple)
                    var nbl = tagsA[i].childNodes.length;
                    for (var j = 0; j < nbl; j++) {
                        nlink.appendChild(tagsA[i].childNodes[0]);
                    }
                    tagsA[i].appendChild(nlink);
                    tagsA[i].className = "";
                    tagsA[i].id = "";
                }
            }
        }
    }
}
vbrn.init();