/* 
 *  Korem Inc 2011
 */
var _gaq = _gaq || [];



bqc.GAnalytics = function (key,dev) {
    
    this.initialize(key,dev);
}


bqc.GAnalytics.prototype = {

    initialize: function (key,dev) {

            // *** I have to repeat the function because
            // *** General.js needs another files.
            // *** The minimap doest include those files
            if (!String.prototype.trim) {
              String.prototype.trim = function() {

             // skip leading and trailing whitespace
             // and return everything in between
              var x=this;
              x=x.replace(/^\s*(.*)/, "$1");
              x=x.replace(/(.*?)\s*$/, "$1");
              return x;
            }
        }

        this.dev = dev;
        _gaq = _gaq || [];
        _gaq.push(['_setAccount', key]);

        if(this.dev){
           _gaq.push(["_setDomainName", "none"]); // a enlever pour la prod
        }
        _gaq.push(['_trackPageview']);

       (function() {
             var ga = document.createElement('script');
             ga.type = 'text/javascript';
             ga.async = true;
             ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
             var s = document.getElementsByTagName('script')[0];
             s.parentNode.insertBefore(ga, s);
       })();
    },

    log: function(category, action, label) {
        if(this.dev){
            if (console && console.log) {
               console.log('GOOGLE ANALYTICS LOG: ' + category + ' - ' + action + ' - ' + label);
            }
        }
        var refinedCat;
        var strings = bqc.GAnalyticsStrings;
        if(category==undefined){
            category="web";
        }
        switch (category.toLowerCase().trim()) {
            case "partner":
                refinedCat = strings.level1.modePartner;
                break;
            case "normal":
                refinedCat = strings.level1.modeNormal;
                break;
            case "ires":
                refinedCat = strings.level1.modeIRES;
                break;
            case "web":
            default:
                refinedCat = strings.level1.modeWeb;
              break;
        }

        if(!label) {
            _gaq.push(['_trackEvent', refinedCat, action]);
             // console.debug('_trackEvent', "," + refinedCat, "," + action);
        }else{
            _gaq.push(['_trackEvent', refinedCat, action, label]);
            // console.debug('_trackEvent', "," + refinedCat, "," + action, "," + label);
        }
    },

     addMFicheReservationClickLog: function (p_mode ) {
        var str = bqc.GAnalyticsStrings;
        this.log(p_mode, str.level2.miniFichesItemClick, str.level3.miniFichesReservationClick);
    },

    addMFicheNameClickLog: function (p_mode ) {
        var str = bqc.GAnalyticsStrings;
        this.log(p_mode, str.level2.miniFichesItemClick, str.level3.miniFichesNameClick);
    },

    addMFichePlusClickLog: function (p_mode) {
        var str = bqc.GAnalyticsStrings;
        this.log(p_mode, str.level2.miniFichesItemClick, str.level3.miniFichesPlusClick);
    },


    addEntryPageLog : function (mode,  language, name, addId, addIds, circuitId, regionId, routingToAddId, fromSearch ) {

         var strings = bqc.GAnalyticsStrings;

         // *** Langue d’affichage ventilé par français ou anglais ;
         this.log(mode, strings.level2.language, language);


         // *** Nombre d'appels vers la page d'accueil non ventilé.
         // *** L’absence de tout paramètre suivant p_addid, p_addids,
         // *** p_name, p_regionid, p_circuitid, routingtoaddid
         // *** comptabilisera un nouvel évènement dans cette catégorie.
         if ( (!addId) && (!addIds) && (!name) && (!regionId) && (!circuitId) && (!routingToAddId)) {
            this.log(mode, strings.level2.homePage);
         } else {

             // *** Nombre d'appels d’une fiche à partir de résultats de recherche
             // *** ventilé par p_name ; on se basera sur la  présence de
             // **** p_name et de p_fromsearch
             if (name && ( fromSearch.toLowerCase().trim() == '1' )) {
                this.log(mode, strings.level2.fichesResRecherche, name );
             } else if (name) {

               // *** Nombre d'appels d'une fiche ventilé par p_name ;
               // *** on se basera sur le nouveau paramètre p_name

                this.log(mode, strings.level2.fiches, name );
             }

             // *** Nombre d'appels de résultat de recherche ventilé par p_addIds ;
             // *** on se basera sur la  présence de p_addIds et absence de p_name
             if (addIds && (!name)) {
                this.log(mode, strings.level2.searchResults, addIds );
             }

             // *** nombre d'appels de circuits ventilés par p_circuitid ;
             // *** on se basera sur la présence de p_circuitid
             if (circuitId) {
                this.log(mode, strings.level2.circuit, circuitId );
             }

             // *** nombre d'appels de régions ventilés par p_regionid ;
             // *** on se basera sur présence de p_regionid
             if (regionId) {
                this.log(mode, strings.level2.region, regionId );
             }

             // *** nombre d'appels d'itinéraires ventilés par routingToaddId ;
             // on se basera sur présence de routingToaddId
             if (routingToAddId) {
                this.log(mode, strings.level2.routing, routingToAddId );
             }

            
         }

    }

}



