﻿/* VARIABLES GLOBALES */
// URL du site, URL de la page courante

var cap_siteURL = document.location.protocol + '//' + document.location.hostname;
var cap_pageURL = document.location;
if (typeof cap_CMS_SiteName == "undefined") cap_CMS_SiteName = "";
if (typeof cap_CMS_DocumentName == "undefined") cap_CMS_DocumentName = "";
if (typeof cap_CMS_Environment == "undefined") cap_CMS_Environment = "";
if (typeof cap_SiteRootUrl == "undefined") cap_SiteRootUrl = "";
if (typeof cap_CMS_AliasPath == "undefined") {
    cap_CMS_AliasPath = "";
} else {
    if (cap_CMS_AliasPath.slice(0, 1) == "/") {
        cap_CMS_AliasPath = cap_CMS_AliasPath.slice(1);
    }
    cap_CMS_AliasPath = cap_CMS_AliasPath.toLowerCase()
}

var cap_globalVarAlert = {
    view: function() {
        alert(
                'hostname = ' + document.location.hostname + '\n' +
                'cap_siteURL = ' + cap_siteURL + '\n' +
                'cap_pageURL = ' + cap_pageURL + '\n' +
                'cap_CMS_SiteName = ' + cap_CMS_SiteName + '\n' +
                'cap_CMS_DocumentName = ' + cap_CMS_DocumentName + '\n' +
                'cap_CMS_Environment = ' + cap_CMS_Environment + '\n' +
                'cap_SiteRootUrl = ' + cap_SiteRootUrl + '\n' +
                'cap_CMS_AliasPath = ' + cap_CMS_AliasPath
            );
    }
}
//cap_globalVarAlert.view();

window.addEvent('domready', function() {

    /* CUFON */
    if (typeof Cufon == 'function') {
        Cufon.replace('.newsList h2');
        Cufon.replace('#aqem_left .title');
        Cufon.replace('.formatting h3');
        Cufon.replace('.formatting h4');
    }


    /* MENU */
    if ($('menuElem')) {
        $$('#menuElem ul').each(function(item) {
            item.setStyle('z-index', 999);
        });
        var myMenu = new MenuMatic({
            id: 'menuElem',
            opacity: 98
        });
    }



    /* SMOOTH SCROLL */
    // Smooth Scroll sur toutes les ancres

    var cap_smoothScroll = new Fx.SmoothScroll({ duration: 1000, transition: Fx.Transitions.Cubic.easeInOut });



    /* GESTION DU FOCUS DANS LA BOITE DE RECHERCHE */
    // ajoute une indication 'Rechercher' dans la boite de recherche quand celle-çi est vide

    var cap_searchField = {

        init: function(element, cssClassBlur, container, cssClassFocus) {
            if (element && cssClassBlur && container && cssClassFocus) cap_searchField.inprove(element, cssClassBlur, container, cssClassFocus);
        },

        inprove: function(element, cssClassBlur, container, cssClassFocus) {
            // si le champ est vide au chargement de la page, on ajoute l'indication
            element.value = element.value.clean();
            if (!element.value) {
                container.addClass(cssClassBlur);
            }

            // focus dans le champs de recherche si clic sur la zone container
            container.setStyle('cursor', 'text');
            container.addEvents({
                'focus': function() {
                    element.focus();
                },
                'click': function() {
                    element.focus();
                }
            });

            // on affiche ou pas l'indication en fonction de l'action de l'utilisateur, et du contenu du champ
            element.addEvents({
                'focus': function() {
                    container.addClass(cssClassFocus);
                    container.removeClass(cssClassBlur);
                },
                'blur': function() {
                    element.value = element.value.clean();
                    container.removeClass(cssClassFocus);
                    if (!element.value) {
                        container.addClass(cssClassBlur);
                    }
                }
            });
        }
    }

    cap_searchField.init($$('#aqem_header .searchTextbox')[0], 'blur', $$('#aqem_header .searchBox')[0], 'focus');


    /* GRID TABLE SORT */
    // Liste des membres

    if ($('gridMembers')) {

        HtmlTable.Parsers.string = {
            match: /^\d+[^\d.,]*$/,
            convert: function() {

                // Remplace toutes les occurences d'une chaine
                function replaceAll(str, search, repl) {
                    while (str.indexOf(search) != -1)
                        str = str.replace(search, repl);
                    return str;
                };

                // Remplace les caractères accentués
                function AccentToNoAccent(str) {
                    var norm = new Array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ð', 'Ñ', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'Þ', 'ß', 'à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'ý', 'þ', 'ÿ');
                    var spec = new Array('A', 'A', 'A', 'A', 'A', 'A', 'A', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'D', 'N', 'O', 'O', 'O', '0', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 'b', 's', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'd', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'y', 'y', 'b', 'y');
                    for (var i = 0; i < spec.length; i++)
                        str = replaceAll(str, norm[i], spec[i]);
                    return str;
                }

                return AccentToNoAccent(this.get('text'));
            }
        };

        var GridListMembers = new HtmlTable($('gridMembers'), {
            sortable: true,
            sortIndex: 0
        });

        $$('#gridMembers thead td').each(function(item, index) {
            item.addEvent('click', function() {
                GridListMembers.sort(index);
                addOddEvenClass($$('#gridMembers tbody tr'));
            });
        });
    }


    /* GRID odd/even */

    function addOddEvenClass(elements) {
        function isEven(num) {
            return !(num % 2);
        }

        if (elements) {
            elements.each(function(item, index) {
                if (isEven(index + 1)) {
                    item.removeClass('odd');
                    item.addClass('even');
                } else {
                    item.removeClass('even');
                    item.addClass('odd');
                }
            });

        }
    }
    addOddEvenClass($$('#gridMembers tbody tr'));
    addOddEvenClass($$('#gridMembers tbody .publication li'));



    /* LIENS EXTERNES */
    // améliore l'ergonomie et la visibilité des liens pointant vers l'extérieur du site

    var cap_externalLinks = { // Mise à jour : 15/01/2009

        init: function(container, noInproveCssClass) {
            if (container && noInproveCssClass) cap_externalLinks.improve(container, noInproveCssClass);
        },

        improve: function(container, noInproveCssClass) {

            // on récupere les liens de la page (dans le div #container)
            container.each(function(item, index) {

                // on teste si le domaine du site se trouve pas dans le href, et que l'adresse commence bien par http:// ou https://
                if (!item.href.contains(cap_siteURL) && (item.href.match("^http://") || item.href.match("^https://"))) {

                    // si le lien n'a pas de propriété 'target', on en ajoute un (les liens s'ouvriront dans une nouvelle fenêtre)
                    if (!item.target) {
                        item.setProperty('target', '_blank');
                    }

                    // si le lien n'a pas de propriété 'title', on en ajoute un
                    if (!item.title && !item.hasClass('boxed')) {
                        item.setProperty('title', 'lien vers : ' + item.href);
                    }

                    // si le liens n'est pas sur une image et qu'il na pas de CssClass interdisant le traitement, on ajoute la classe CSS
                    if (!item.getElement("img") && !item.hasClass(noInproveCssClass)) {
                        // on ajoute la classe CSS
                        item.addClass('externalLink');
                        //item.adopt(item, 'top');
                    }
                }
            })
        }
    };

    cap_externalLinks.init($$('#aqem_main a'), 'noExternalLink');


    /* ARTICLES TOOLS BOX */
    // Attache les fonctionalités correspondantes à la barre d'outils dans un article (imprimer, partager...)

    var cap_attachArticlesTools = {

        print: function(el) {
            if (el) el.addEvent('click', function() { window.print() });
        },

        addThis: function(el) {
            if (el) {
                // initialisation des paramètres
                addthis_pub = 'aqem';
                addthis_language = "fr";
                ui_click: true;

                // on attache le lien + la CssClass 'noInproveCssClass' de la fonction 'cap_externalLinks'
                el.setProperty('href', 'http://www.addthis.com/bookmark.php?v=250&amp;pub=thesquarefoot');
                el.addClass('noExternalLink');

                // on charge le .js requis
                Asset.javascript('http://s7.addthis.com/js/250/addthis_widget.js?pub=thesquarefoot');

                // on attache les événements
                el.addEvents({
                    'click': function() {
                        return addthis_sendto();
                    },
                    'mouseover': function() {
                        //return addthis_open(this, '', '[URL]', '[TITLE]');
                    },
                    'mouseout': function() {
                        //addthis_close();
                    }
                });

                // on affiche l'élément
                el.setStyle('display', 'inline');

                // on affiche les séparateurs
                $$('.addthis_separator').each(function(item) {
                    item.setStyle('display', 'inline');
                });

            }
        }
    }

    cap_attachArticlesTools.print($$('.toolBox .print'))
    cap_attachArticlesTools.addThis($$('.toolBox .addthis_button_expanded'))


});



/*  GOOGLE ANALYTICS  */
// Injection du script Google Analytics
// Asynchronous Tracking 

function cap_googleAnalytics() {
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-442299-28']);
    _gaq.push(['_trackPageview']);

    (function() {
        var ga = document.createElement('script');
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        ga.setAttribute('async', 'true');
        document.documentElement.firstChild.appendChild(ga);
    })();

};
if (cap_CMS_Environment == "production") cap_googleAnalytics();