/***************************************************************************************************
'*                                                                                                 *
'* Nom: gaFnc.js                                                                                   *
'*                                                                                                 *
'* But: Regroupe les fonctions Javascript utiles à Google Analitycs.                               *
'*                                                                                                 *
'* Date de création: 24.11.2010                                                                    *
'*                                                                                                 *
'* Fonctionnalités principales :                                                                   *
'*                                                                                                 *
'*     - addSelList()                                                                              *
'*                                                                                                 *
'***************************************************************************************************/


/*----------------------------------------------------------------------------------------------
' Ajout de la liste de moteurs de recherche pour GA.
'----------------------------------------------------------------------------------------------*/
function addSeList()
{
    _gaq.push(['_addOrganic', 'search.ch', 'q'],
              ['_addOrganic', 'images.google', 'q'],
              ['_addOrganic', 'search.bluewin.ch', 'query'],
              ['_addOrganic', 'club-internet', 'q'],
              ['_addOrganic', 'aolrecherche.aol.fr', 'query'],
              ['_addOrganic', 'hotbot.com', 'query'],
              ['_addOrganic', 'lo.st', 'x_query'],
              ['_addOrganic', 'toile', 'q'],
              ['_addOrganic', 'search.mywebsearch', 'searchfor'],
              ['_addOrganic', 'exalead', 'q'],
              ['_addOrganic', 'search.tele2internet', 'query'],
              ['_addOrganic', 'service.gmx.net', 'q'],
              ['_addOrganic', 'realsearch.real.com', 'query'],

              ['_addOrganic', 'ecosia.org', 'q'],
              ['_addOrganic', 'ecosia.fr', 'q'],
              ['_addOrganic', 'ecosia.com', 'q'],
              ['_addOrganic', 'seek.fr', 'q'],
              ['_addOrganic', 'seek.com', 'q'],
              ['_addOrganic', 'facebook.com', 'q'],
              ['_addOrganic', 'mail.google.com', 'q'],
              ['_addOrganic', 'mail.yahoo.com', 'p'],
              ['_addOrganic', 'webmail.romandie.com', 'q'],
              ['_addOrganic', 'yougoo.fr', 'q'],
              ['_addOrganic', 'mail.live.com', 'q'],
              ['_addOrganic', 'wibeez.com', 'q'],
              ['_addOrganic', 'webmail.net', 'qq'],
              ['_addOrganic', 'iminent.com', 'query'],
              ['_addOrganic', 'search.free.fr', 'q'],
              ['_addOrganic', 'imp.free.fr', 'q'],
              ['_addOrganic', 'forestle.org', 'q'],
              ['_addOrganic', 'search.bluewin.ch', 'q'],
              ['_addOrganic', 'suche.web.de', 'su'],

              ['_addOrganic', 'google.fr', 'q'],
              ['_addOrganic', 'google.nl', 'q'],
              ['_addOrganic', 'google.be', 'q'],
              ['_addOrganic', 'google.ch', 'q'],
              ['_addOrganic', 'google.ca', 'q'],
              ['_addOrganic', 'google.com', 'q'],
              ['_addOrganic', 'google.de', 'q'],
              ['_addOrganic', 'google.de.au', 'q'],
              ['_addOrganic', 'google.at', 'q'],

              ['_addOrganic', 'images.google.fr', 'q'],
              ['_addOrganic', 'images.google.nl', 'q'],
              ['_addOrganic', 'images.google.be', 'q'],
              ['_addOrganic', 'images.google.ch', 'q'],
              ['_addOrganic', 'images.google.ca', 'q'],
              ['_addOrganic', 'images.google.com', 'q'],
              ['_addOrganic', 'images.google.de', 'q'],
              ['_addOrganic', 'images.google.de.au', 'q'],

              ['_addOrganic', 'video.google.fr', 'q'],
              ['_addOrganic', 'video.google.nl', 'q'],
              ['_addOrganic', 'video.google.be', 'q'],
              ['_addOrganic', 'video.google.ch', 'q'],
              ['_addOrganic', 'video.google.ca', 'q'],
              ['_addOrganic', 'video.google.com', 'q'],
              ['_addOrganic', 'video.google.de', 'q'],
              ['_addOrganic', 'video.google.de.au', 'q']);
}


/*----------------------------------------------------------------------------------------------
' Ajout de la liste des termes à considérer comme du traffic direct.
'----------------------------------------------------------------------------------------------*/
function addIgnoredOrganicList()
{
    _gaq.push(['_addIgnoredOrganic', 'ddfly'],
              ['_addIgnoredOrganic', 'dvdfly'],
              ['_addIgnoredOrganic', 'dvdfly bern'],
              ['_addIgnoredOrganic', 'dvd fly'],
              ['_addIgnoredOrganic', 'dvd fly .be'],
              ['_addIgnoredOrganic', 'dvd fly .ch'],
              ['_addIgnoredOrganic', 'dvd fly .fr'],
              ['_addIgnoredOrganic', 'dvd fly be'],
              ['_addIgnoredOrganic', 'dvd fly ch'],
              ['_addIgnoredOrganic', 'dvd fly fr'],
              ['_addIgnoredOrganic', 'dvd fly France'],
              ['_addIgnoredOrganic', 'dvd fly suisse'],
              ['_addIgnoredOrganic', 'dvd fly.c'],
              ['_addIgnoredOrganic', 'dvd lfy'],
              ['_addIgnoredOrganic', 'dvd.fly.be'],
              ['_addIgnoredOrganic', 'dvd.fly.ch'],
              ['_addIgnoredOrganic', 'dvd.fly.fr'],
              ['_addIgnoredOrganic', 'dvdféy'],
              ['_addIgnoredOrganic', 'dvdflay'],
              ['_addIgnoredOrganic', 'dvd-fly'],
              ['_addIgnoredOrganic', 'dvdfly belgique'],
              ['_addIgnoredOrganic', 'dvdfly fr'],
              ['_addIgnoredOrganic', 'dvdfly neuchatel'],
              ['_addIgnoredOrganic', 'dvdfly suisse'],
              ['_addIgnoredOrganic', 'dvdfly.ch'],
              ['_addIgnoredOrganic', 'dvdfly.ch.'],
              ['_addIgnoredOrganic', 'dvdfly.com'],
              ['_addIgnoredOrganic', 'dvdflych'],
              ['_addIgnoredOrganic', 'dvdfly-ch'],
              ['_addIgnoredOrganic', 'dvdflyd.ch'],
              ['_addIgnoredOrganic', 'dvdflye'],
              ['_addIgnoredOrganic', 'dvdflyh'],
              ['_addIgnoredOrganic', 'dvdflz.ch'],
              ['_addIgnoredOrganic', 'dvfly'],
              ['_addIgnoredOrganic', 'fly dvd'],
              ['_addIgnoredOrganic', 'fly dvd ch'],
              ['_addIgnoredOrganic', 'flydvd'],
              ['_addIgnoredOrganic', 'ge.dvdfly ch'],
              ['_addIgnoredOrganic', 'ge.dvdfly.ch'],
              ['_addIgnoredOrganic', 'ww.dvdfly.be'],
              ['_addIgnoredOrganic', 'ww.dvdfly.ch'],
              ['_addIgnoredOrganic', 'ww.dvdfly.fr'],
              ['_addIgnoredOrganic', 'ww.dvfly.be'],
              ['_addIgnoredOrganic', 'ww.dvfly.ch'],
              ['_addIgnoredOrganic', 'ww.dvfly.fr'],
              ['_addIgnoredOrganic', 'www.dvd.ch'],
              ['_addIgnoredOrganic', 'www.dvd.fly'],
              ['_addIgnoredOrganic', 'www.dvdfly'],
              ['_addIgnoredOrganic', 'www.dvdfly.ch'],
              ['_addIgnoredOrganic', 'www.dvdfly.be'],
              ['_addIgnoredOrganic', 'www.dvdfly.com'],
              ['_addIgnoredOrganic', 'www.dvdfly.fr'],
              ['_addIgnoredOrganic', 'wwwdvdfly.ch'],
              ['_addIgnoredOrganic', 'hollystar'],
              ['_addIgnoredOrganic', 'hollystar bern'],
              ['_addIgnoredOrganic', 'holly star'],
              ['_addIgnoredOrganic', 'holly star .be'],
              ['_addIgnoredOrganic', 'holly star .ch'],
              ['_addIgnoredOrganic', 'holly star .fr'],
              ['_addIgnoredOrganic', 'holly star be'],
              ['_addIgnoredOrganic', 'holly star ch'],
              ['_addIgnoredOrganic', 'holly star fr'],
              ['_addIgnoredOrganic', 'holly star France'],
              ['_addIgnoredOrganic', 'holly star suisse'],
              ['_addIgnoredOrganic', 'holly star.c'],
              ['_addIgnoredOrganic', 'olistar'],
              ['_addIgnoredOrganic', 'holly.star.be'],
              ['_addIgnoredOrganic', 'holly.star.ch'],
              ['_addIgnoredOrganic', 'holly.star.fr'],
              ['_addIgnoredOrganic', 'ollystar'],
              ['_addIgnoredOrganic', 'olystar'],
              ['_addIgnoredOrganic', 'ollistar'],
              ['_addIgnoredOrganic', 'holly-star'],
              ['_addIgnoredOrganic', 'hollystar belgique'],
              ['_addIgnoredOrganic', 'hollystar fr'],
              ['_addIgnoredOrganic', 'hollystar neuchatel'],
              ['_addIgnoredOrganic', 'hollystar suisse'],
              ['_addIgnoredOrganic', 'hollystar.ch'],
              ['_addIgnoredOrganic', 'hollystar.ch.'],
              ['_addIgnoredOrganic', 'hollystar.com'],
              ['_addIgnoredOrganic', 'hollystarch'],
              ['_addIgnoredOrganic', 'hollystar-ch'],
              ['_addIgnoredOrganic', 'holistar'],
              ['_addIgnoredOrganic', 'hollistar'],
              ['_addIgnoredOrganic', 'holystar'],
              ['_addIgnoredOrganic', 'star holly'],
              ['_addIgnoredOrganic', 'star holly ch'],
              ['_addIgnoredOrganic', 'starholly'],
              ['_addIgnoredOrganic', 'ge.hollystar ch'],
              ['_addIgnoredOrganic', 'ge.hollystar.ch'],
              ['_addIgnoredOrganic', 'ww.hollystar.be'],
              ['_addIgnoredOrganic', 'ww.hollystar.ch'],
              ['_addIgnoredOrganic', 'ww.hollystar.fr'],
              ['_addIgnoredOrganic', 'www.holly.star'],
              ['_addIgnoredOrganic', 'www.hollystar'],
              ['_addIgnoredOrganic', 'www.hollystar.ch'],
              ['_addIgnoredOrganic', 'www.hollystar.be'],
              ['_addIgnoredOrganic', 'www.hollystar.com'],
              ['_addIgnoredOrganic', 'www.hollystar.fr'],
              ['_addIgnoredOrganic', 'wwwhollystar.ch']);
}


/*----------------------------------------------------------------------------------------------
' Ajout des paramètres d'interprétation des campagnes analytics.
'----------------------------------------------------------------------------------------------*/
function addCampaignParam()
{
    _gaq.push(['_setAllowAnchor', true]); // Utilise # comme délimiteur des paramètres de campagne
    
    // Définition de la durée des cookies de campagnes.
    if (URL.getParameter('utm_dfduration') != null)
    {
        _gaq.push(['_setCampaignCookieTimeout', parseInt(URL.getParameter('utm_dfduration'))]);
    }
    // Si aucune durée n'est spécifiée, on applique les règles suivantes.
    else
    {
        // Durée de campagne 7 jours.
        if (URL.getParameter('utm_medium') == 'newsletter' || URL.getParameter('utm_medium') == 'email' || URL.getParameter('utm_medium') == 'RSS')
            _gaq.push(['_setCampaignCookieTimeout', 604800000]);

        // Durée de campagne par défaut 30 jours.
        else
            _gaq.push(['_setCampaignCookieTimeout', 2592000000]);
    }
}


URL = {
    /**
     * function {public string} ? Returns a parameter from the given URL according its name.
     * If no path is provided, the current page URL is used and the arguments are all shifted one the left.
     */
    getParameter: function(path, name) {
        if(arguments.length < 2) {
            name = path;
            path = window.location.href;
        }
        var value = null;
        var capture = path.match(new RegExp("[\\?&]" + name + "=([^&#]*)"));
        if(capture) {
            value  = unescape(capture[1]);
        }
        return value;
    },
 
    /**
     * function {public string} ? Sets a parameter in the given URL and returns a new string.
     * If no path is provided, the current page URL is used and the arguments are all shifted one the left.
     */
    setParameter: function(path, name, value) {
        if(arguments.length < 3) {
            value = name;
            name = path;
            path = window.location.href;
        }
        var result = path;
 
        // Remove the parameter if it already exists.
        if(URL.getParameter(path, name)) {
            result = URL.removeParameter(path, name);
        }
 
        // If the URL contains parameters, add the parameter after '&'
        if(result.indexOf("?") > -1) {
            result += "&";
        }
        else {
            // If the URL does not contain any parameter, add the parameter after '?'
            result += "?";
        }
 
        result += name + "=" + value;
 
        return result;
    },
 
    /**
     * function {public string} ? Sets some parameters in the given URL and returns a new string.
     * If no path is provided, the current page URL is used and the arguments are all shifted one the left.
     */
    setParameters: function(path, parameters) {
        if(arguments.length < 2) {
            parameters = path;
            path = window.location.href;
        }
        var result = path;
        $H(parameters).each(function(iterator) {
            result = URL.setParameter(result, iterator.key, iterator.value);
        });
 
        return result;
    },
 
    /**
     * function {public string} ? Returns a parameter from the given URL according its name.
     * If no path is provided, the current page URL is used and the arguments are all shifted one the left.
     */
    removeParameter: function(path, name) {
        if(arguments.length < 2) {
            name = path;
            path = window.location.href;
        }
        var result = path;
 
        if(URL.getParameter(path, name)) {
            var index = path.indexOf("?");
            var result = path.substring(0, index);
            if(index > -1) {
                parameters = path.substring(index + 1).split("&");
                var parameter;
                var first = true;
                for(index = 0; index < parameters.length; index++) {
                    parameter = parameters[index];
                    if(parameter.split("=")[0] != name) {
                        if(first) {
                            result += "?";
                            first = false;
                        }
                        else {
                            result += "&";
                        }
                        result += parameter;
                    }
                }
            }
        }
 
        return result;
    },
 
    go: function(path, parameters) {
        path = path || window.location.href;
        if(parameters) {
            path = URL.setParameters(path, parameters);
        }
        window.location.href = path;
    },
 
    /** function {public string} ? Returns the current page URL. */
    get: function() {
        return window.location.href;
    },
 
    pattern: /^(?:(ftp|https?)\:\/\/|~\/|\/)?(?:(\w+):(\w+)@)?((?:[-\w]+\.)+(?:[a-z]+))(?::([\d]{1,5}))?((?:(?:\/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|\/)+|\?|#)?((?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?:#((?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*))?$/,
 
    getHost: function(path) {
        var host = null;
 
        var capture = path.match(URL.pattern);
        if(capture) {
            host = capture[4];
        }
 
        return host;
    }
};

