﻿/*

SOMMAIRE

- Detection IE6
- SqueezeBox : popups inline
- Focus boite de recherche
- Liens externes
- Articles tools box
- Contenu réservé aux membres
- Liste des événements
- Google Reader
- Google Analytics

*/



////////////////////////////////////////////////
/////////////////// DomReady ///////////////////
////////////////////////////////////////////////


window.addEvent('domready', function() {


    /*  SEVEN UP  */
    // Affichage d'un message d'information sur IE6 (http://code.google.com/p/sevenup/)
    sevenUp.test()



    /*  SQUEEZE BOX  */
    // Affichage d'un contenu dans un popup inline (ajax, from elements, iframe content, simgles images, youtube flash...)

    SqueezeBox.assign($$('a[class=boxed]'), {
        size: { x: 750, y: 450 },
        sizeLoading: { x: 700, y: 400 },
        parse: 'rel',
        overlayOpacity: 0.4,
        ajaxOptions: {
            method: 'get' // we use GET for requesting plain HTML
        }
    });



    /* 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, 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
            if (!element.value) {
                element.addClass(cssClassBlur);
            }

            // 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);
                    element.removeClass(cssClassBlur);
                },
                'blur': function() {
                    container.removeClass(cssClassFocus);
                    if (!element.value) {
                        element.addClass(cssClassBlur);
                    }
                }
            });
        }
    }

    cap_searchField.init($$('#search input')[0], 'inputBlur', $$('#search table')[0], 'inputFocus');




    /* 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.hastClass == 'remooz-element' && !item.hastClass == 'imgZoom') {
                        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($$('#container 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 != '') el.addEvent('click', function() { window.print() });
        },

        addThis: function(el) {
            if (el && el != '') {
                // initialisation des paramètres
                addthis_pub = 'sqprp';
                addthis_language = "fr";
                addthis_options = 'email, favorites, digg, delicious, myspace, facebook, linkedin, twitter, buzz, google, live, more';
                addthis_offset_top = 10;
                addthis_offset_left = -110;
                addthis_localize = {
                    email_caption: "Envoyer à un ami",
                    email: "Courriel",
                    favorites: "Favoris",
                    more: "plus..."
                };

                // on attache le lien + la CssClass 'noInproveCssClass' de la fonction 'cap_externalLinks'
                el.setProperty('href', 'http://www.addthis.com/bookmark.php?v=20');
                el.addClass('noExternalLink');

                // on charge le .js requis
                Asset.javascript('http://s7.addthis.com/js/200/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'))



    /* CONTENU RÉSERVÉ AUX MEMBRES */
    /* Ajoute une bulle d'information sur l'icone */

    var cap_reservedContent = {

        start: function() {
            var lockIcon;
            if (lockIcon = $$('.lock')) {
                lockIcon.each(function(el, i) {
                    el.setProperty('title', 'Ce contenu est réservé aux membres');
                    var tip = new Tips(el, {
                        className: 'defaultTip',
                        hideDelay: 0,
                        showDelay: 100,
                        offsets: { 'x': 25, 'y': 15 }
                    });
                });
            }
        }
    }

    cap_reservedContent.start();



    /* LÉGENDE DES ÉVÉNEMENTS */
    /* Ajoute une bulle d'information sur l'élément */

    var cap_eventContent = {

        start: function() {
            var lockIcon;
            if (lockIcon = $$('.events li')) {
                lockIcon.each(function(el, i) {
                    var cssclass = el.getProperty('class') + '_tip';
                    var tip = new Tips(el, {
                        className: cssclass,
                        hideDelay: 0,
                        showDelay: 1000,
                        offsets: { 'x': 10, 'y': 15 }
                    });
                });
            }
        }
    }

    //cap_eventContent.start();



    /* FLUX GOOGLE READER */
    // Traitement HTML des listes Google Reader

    var cap_googleReader = {

        //suppression des liens sur la source
        removeSourceLink: function(el) {
            if (el) {
                el.each(function(item, i) {
                    var itemAnchor = el[i].getElement('a').get('html');
                    el[i].getElement('a').dispose();
                    el[i].set('html', 'source : ' + itemAnchor);
                });
            }
        },

        //ajout de target="blank" sur les liens
        addBlankTarget: function(el) {
            if (el) {
                el.each(function(item, i) {
                    el[i].setProperty('target', 'blank');
                });
            }
        },

        //améliorer l'affichage des bulles
        increaseTip: function(el) {
            if (el) {
                el.each(function(item, i) {
                    var tipContent = item.getProperty('title');
                    if (tipContent && tipContent != "") {
                        item.store('tip:text', '');
                        var tip = new Tips(el[i], {
                            className: 'defaultTip',
                            hideDelay: 0,
                            showDelay: 100,
                            offsets: { 'x': 10, 'y': 15 }
                        });
                    }
                });
            }
        }

    };

    cap_googleReader.removeSourceLink($$('.googleReader .s'));
    cap_googleReader.addBlankTarget($$('.googleReader ul a'));
    cap_googleReader.increaseTip($$('.googleReader ul a'));




    /* SMOOTH SCROLL */
    // Smooth Scroll sur toutes les ancres

    var cap_smoothScroll = new Fx.SmoothScroll({ duration: 1000, transition: Fx.Transitions.Cubic.easeInOut });
    
    
    
    
    /*  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-6");
                    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 != "stage" && cap_CMS_Environment != "localhost") cap_googleAnalytics.add();


});


