﻿/*

SOMMAIRE

- Déclaration / vérification des variables globales
- Gestion du focus dans la boite de recherche
- Améloration de l'affichage des liens externes
- Rajout de l'effet annimé sur le lien 'haut de page'
- ReMooz : ajout de la fonction de zoom sur les images
- Boutons 'Imprimer' et 'Partager'
- Google Analytics

*/


////////////////////////////////////////////////
/////////////////// DomReady ///////////////////
////////////////////////////////////////////////


window.addEvent('domready', function() {


    /* 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(
                '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();



    /* 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 = { // Mise à jour : 12/01/2009

        init: function(element, cssClass) {
            if (element && cssClass) cap_searchField.inprove(element, cssClass);
        },

        inprove: function(element, cssClass) {
            // si le champ est vide au chargement de la page, on ajoute l'indication
            if (!element.value) {
                element.addClass(cssClass);
            }

            // on affiche ou pas l'indication en fonction de l'action de l'utilisateur, et du contenu du champ
            element.addEvents({
                'focus': function() {
                    element.removeClass(cssClass);
                },
                'blur': function() {
                    if (!element.value) {
                        element.addClass(cssClass);
                    }
                }
            });
        }
    }

    cap_searchField.init($$('#search input')[0], 'inputBlur');



    /* 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.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');
                    }
                }
            })
        }
    };

    cap_externalLinks.init($$('#container a'), 'noExternalLink');



    /*  ANNIMATION DU LIEN 'HAUT DE PAGE'  */
    // Cette fonction fait défiler la page vers le haut

    var cap_goToTop = { // Mise à jour : 12/02/2009

        init: function(layer, link, top) {
            if (layer && link && top) {
                /* le lien 'haut de page' reste fixe et statique
                cap_goToTop.toogleLinkBox(layer, link);*/
                cap_goToTop.setLink(link);
                cap_goToTop.clickLink(link, top);
            }
        },

        toogleLinkBox: function(layer, link) {
            // initialisation des effets
            var viewgoToTopFx = new Fx.Tween(layer, { duration: 100, transition: Fx.Transitions.Quart.easeOut });
            var hidegoToTopFx = new Fx.Tween(layer, { duration: 100, transition: Fx.Transitions.Quart.easeOut });

            // on cherche la position verticale actuelle de la page
            if (Browser.Engine.trident) {
                var pageY = document.documentElement.scrollTop;
            } else {
                var pageY = window.pageYOffset;
            }

            // on affiche ou on cache le bloc en fonction de la position verticale dans la page
            if (pageY > 300) {
                new Fx.Tween(layer).set('bottom', 0);
            }
            window.onscroll = function() {
                // on cherche la position verticale actuelle de la page
                if (Browser.Engine.trident) {
                    pageY = document.documentElement.scrollTop;
                } else {
                    pageY = window.pageYOffset;
                }
                if (pageY > 300) {
                    hidegoToTopFx.cancel();
                    viewgoToTopFx.start('bottom', 0);
                } else {
                    viewgoToTopFx.cancel();
                    hidegoToTopFx.start('bottom', '-30px');
                }
            }
        },

        setLink: function(link) {
            // ajout d'un lien #nogo pour éviter un effet de 'saute' visuelle de l'animation
            link.setProperty('href', '#nogo');
        },

        clickLink: function(link, top) {
            // ajout de l'effet animé de scroll
            link.addEvents({
                'click': function() {
                    var scrollFx = new Fx.Scroll(window, { duration: 1000, transition: Fx.Transitions.Cubic.easeInOut }).toElement(top);
                    setBlankHash2()
                }
            });
        }
    };

    cap_goToTop.init($('goPageTop'), $$('#goPageTop a'), $('anchorTop'));



    /***  ReMooz  ***/
    // Assigns ReMooz behavior to all anchors with the .remooz-element class

    var cap_imgZoom = { // Mise à jour : 26/02/2009

        // first: fck-editeur ne permet d'ajouter facilement un Cssclass que sur l'image et non le lien, ce script règle ce problème.
        init: function(el) {
            if (el) {
                var parentsTag = el.getParent();

                //alert(parentsTag.length);

                parentsTag.each(function(item) {
                    item.addClass('remooz-element');
                    //item.setProperty('title', item.getChildren[0].getProperty('alt'));
                    //alert(item.getChildren.length);
                    //alert(item.getChildren[0].getProperty('alt'));
                });
            }
        },

        attach: function(el) {
            if ($$(el)) {
                ReMooz.assign(el, {
                    shadow: 'onOpenEnd', // fx is faster because shadow appears after resize animation
                    resizeFactor: 0.8, // resize to maximum 80% of screen size
                    cutOut: false, // don't hide the original
                    opacityResize: 0.4, // opaque resize
                    dragging: false, // disable dragging
                    centered: true, // resize to center of the screen, not relative to the source element
                    origin: 'img'
                });
            }
        }
    }

    cap_imgZoom.init($$('#center a .imgZoom'));
    cap_imgZoom.attach('#center a.remooz-element');



    /* 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 != '') el.addEvent('click', function() { window.print() });
        },

        addThis: function(el) {
            if (el && el != '') {

                // initialisation des paramètres
                addthis_pub = 'emjm';
                addthis_logo = cap_SiteRootUrl + '/CMSTemplates/mjm_site/images/logo.gif';
                addthis_logo_background = 'FFFFFF';
                addthis_logo_color = '013572';
                addthis_brand = '';
                addthis_options = 'favorites, email, digg, delicious, myspace, facebook, linkedin, buzz, google, live, more';
                addthis_offset_top = 12;
                addthis_offset_left = -175;

                // on attache le lien + la CssClass 'noInproveCssClass' de la fonction 'cap_externalLinks'
                el.setProperty('href', 'http://www.addthis.com/bookmark.php');
                el.addClass('noExternalLink');

                // on charge le .js requis
                Asset.javascript('http://s7.addthis.com/js/152/addthis_widget.js');

                // on attache les événements
                el.addEvents({
                    'click': function() {
                        return addthis_sendto();
                    },
                    'mouseover': function() {
                        return addthis_open(this, '', '[URL]', '[TITLE]');
                    },
                    'mouseout': function() {
                        addthis_close();
                    }
                });

            }
        }
    }

    cap_attachArticlesTools.print($$('.toolBox .print'))
    cap_attachArticlesTools.addThis($$('.toolBox .share'))



    /*  GOOGLE ANALYTICS  */
    // Injection du script Google Analytics

    var cap_googleAnalytics = {

        add: function(firstTracker, secondTracker) {

            var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
            new Asset.javascript(gaJsHost + "google-analytics.com/ga.js", {
                onload: function() {
                    pageTracker = _gat._getTracker("UA-442299-37");
                    pageTracker._initData();
                    pageTracker._trackPageview();

                    // pour tracker tous les liens pointant vers l'extérieur
                    if (pageTracker) {
                        $$('a[href^=http]').each(function(el) {
                            el.addEvent('click', function() {
                                var dd = '/outgoing/' + el.get('href').replace('http://', '');
                                pageTracker._trackPageview(dd);
                            } .bind(this));
                        });
                    }
                }
            });
        }
    };

    //ne pas ajouter google analytics sur les sites s'executant en local ou en stage
    if (cap_CMS_Environment == "production") cap_googleAnalytics.add();


});





