
    // credit: skyrock.com
    function getElementsByClassName(className, parentElement, nodeName)
    {    
        // native
        if (document.getElementsByClassName)
        {
            // HACK pour corriger ce bug : https://bugs.webkit.org/show_bug.cgi?id=19974
            var root = (parentElement || document.body);
            root.setAttribute('data-refresh', '1');
            root.removeAttribute('data-refresh');

            var s = (parentElement || document).getElementsByClassName(className);

            if (nodeName && nodeName != '*')
            {
                nodeName = nodeName.toUpperCase();
                // return Array.filter(s, function(el) { return el.nodeName == nodeName; });
                return [].filter.call(s, function(el) { return el.nodeName == nodeName; });
            }
            else
            {
                return [].slice.call(s, 0);
            }
        }

        // xpath
        if (document.evaluate)
        {
            if (!nodeName) nodeName = '*';
            if (!parentElement) parentElement = document;

            var results = [], s, i = 0, element;

            s = document.evaluate(
                ".//" + nodeName + "[contains(concat(' ', @class, ' '), ' " + className + " ')]",
                parentElement,
                null,
                XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
                null
            );

            while ((element = s.snapshotItem(i++)))
            {
                results.push(element);
            }

            return results;
        }

        // generic
        if (!nodeName) nodeName = '*';
        if (!parentElement) parentElement = document;

        var results = [], s, i = 0, element;
        var re = new RegExp('(^|\\s)' + className + '(\\s|$)'), elementClassName;

        s = parentElement.getElementsByTagName(nodeName);

        while ((element = s[i++]))
        {
            if ((elementClassName = element.className) &&
                (elementClassName == className || re.test(elementClassName)))
            {
                results.push(element);
            }
        }

        return results;
    }

    // lights off!
    function toggle_galerie()
    {
        var body = document.body;
        var afficher_galerie = !body.className.match('galerie');
        if (afficher_galerie)
            body.className += body.className ? ' galerie' : 'galerie';
        else
            body.className = body.className.replace('galerie', '');

        var divphotos = getElementsByClassName('photo', document.getElementById('equador'), 'div');
        for (i=0; i<divphotos.length; i++)
        {
            var grandformat = divphotos[i].parentNode.innerHTML;
            if (afficher_galerie)
            {
                var f = grandformat.match(/flickrsecret:(.+)\-\-/);
                if (f != null)
                {
                    if (!grandformat.match('_o.'))
                        grandformat = grandformat.replace(/(_[a-z0-9]+)\./g, '_'+f[1]+'_o.');
                    grandformat = grandformat.replace(/(width|height)(="\d+")/g, 'old$1$2');
                    grandformat = grandformat.replace(/(width|height)(:\s?\d+)/g, 'old$1$2');
                }
            }
            else 
            {
                grandformat = grandformat.replace(/old(width|height)(="\d+")/g, '$1$2');
                grandformat = grandformat.replace(/old(width|height)(:\s?\d+)/g, '$1$2');
            }
            divphotos[i].parentNode.innerHTML = grandformat;
        }
        return true;
    }

