/*##############################################################################################
######################### JS DES FONCTIONS LIEES A GOOGLE ANALYTICS  ############################ 
/*############################################################################################## */

// Indique la presence du tracker aux autres fonctions
var pageTracker = true;
var pageTrackerLng = "_";
if (typeof _language != 'undefined') pageTrackerLng = _language;

/* Envoi des donnees a Google Analytics
 *@params:
 *    
 */
function gaTrackThis(_sId, _sPageType,_sVirtualPath) {
    // L init des deux objets de tracking est necessaire sinon, sortie
    if (typeof _gaq == "undefined") return;

    // Le hit n est pas envoye sur toutes les pages
    if (_sPageType != "bottom-links" && _sPageType != "modele" && _sPageType != "eBooking" && _sPageType != "modele-vc") {

        // Traitement page rayon et famille
        if ( (_sPageType == "rayon" || _sPageType == "famille") && _sVirtualPath != "")   {
            gaMtree(_sVirtualPath);
            return;
        }

        // Traitement page magasin
        if (_sPageType == "magasin" && _sVirtualPath != "")   {
            gaStores(_sVirtualPath);
            return;
        }

        // Traitement par défaut
        if (_sVirtualPath != "") {
            var str = gaStringCleaningForUrl(_sVirtualPath);
            _gaq.push(['_trackPageview',str]);
        }
        else {
            _gaq.push(['_trackPageview']);
        }
    }

}

/*############################################################################################## */
/* Audit de l arbo produit
 *@params:
 *    - _arbo : arbo produit
*/
function gaMtree(_arbo) {
    if (_arbo == "") return;

    try {
        var str = "/" +pageTrackerLng + "/mtree" + gaStringCleaningForUrl(_arbo);
        _gaq.push(['_trackPageview',str]);
    }
    catch (err) {}
}

/*############################################################################################## */
/* Place une sonde pour la Hot Map
 *@params:
 *    - _pName : nom de la sonde
*/
function gaHmap(_pCateg, _pName) {
    if (_pName == "" || _pCateg == "") return;

    try {
        _gaq.push(['_trackEvent',_pCateg, _pName]);
    }
    catch (err) {}
}

/*############################################################################################## */
/* Audite d un lien
 *@params:
 *    - _sLink : lien
*/
function gaLink(_sLink) {
    if (_sLink == "") return;

    try {
        // On ne track que les liens externes
        if (_sLink.indexOf("http") != '-1') _gaq.push(['_trackEvent',"link_out", gaStringCleaningForUrl(_sLink)]);
    }
    catch (err) {}

}

/*############################################################################################## */
/* Envoi les infos de la popup de connexion
 *@params:
 *    none
 */
function gaStoresCnx() {
    var sDep = "";
    var sStore = "";
    var sPageType = "";

    // Recup du type de page
    if (typeof window.parent.typePage != "undefined") sPageType = window.parent.typePage; 

    // Test si on est sur une page magasin
    if (valueMagEm) {
        if (valueMagEm != '') {
            sDep = valueRegionEm;
            sStore = valueMagEm;
        }
    }

    // test si on est sur la popup de cnx
    if (document.formConnexion) {
        if (document.formConnexion.listeMagasins[document.formConnexion.listeMagasins.selectedIndex].value!='') {
            sDep =  document.formConnexion.listeDeptRegion[document.formConnexion.listeDeptRegion.selectedIndex].text;
            sStore = document.formConnexion.listeMagasins[document.formConnexion.listeMagasins.selectedIndex].text;
        }
    }
    
    // Envoi hit GA si toutes les donnees sont presentes
    if (sDep != '' && sStore != '') {
        try {
            // Hit nom du magasin auquel on se connecte
            _gaq.push(['_trackEvent',"store_connected", gaStringCleaningForUrl(sStore)]);
            
            // Hit type de page pour la connexion
            if (sPageType != "") {    
                _gaq.push(['_trackEvent',"page_of_connexion", sPageType]);
            }
        }
        catch (err) {}
    }

}

/*############################################################################################## */
/* Audit l espace mag
 *@params:
 *    - _arbo : arbo magasin
*/
function gaStores(_arbo) {
    if (_arbo == "") return;

    try {
        var str = "/" +pageTrackerLng + "/stores" + gaStringCleaningForUrl(_arbo);
        _gaq.push(['_trackPageview',str]);
    }
    catch (err) {}
}

/*############################################################################################## */
/* Audit des OPECOs
 *@params:
 *    - _name : nom de l opeco
*/
function gaOpeco(_name) {
    if (_name == "") return;

    try {
        var str = "/opecos" + gaStringCleaningForUrl(_name);
        _gaq.push(['_trackPageview',str]);
    }
    catch (err) {}
}

/*############################################################################################## */
/* Audit des mini-boutiques
 *@params:
 *    - _sName : nom de la mini-boutique (sales, eoc, promo, blue)
 *    - _sDep : nom du rayon
*/
function gaTshop(_sName, _sDep) {
    if (_sName == "" || _sDep == "") return;

    try {
        var categ = "tshop-" + _sName;
        _gaq.push(['_trackEvent',categ, _sDep]);
    }
    catch (err) {}
}

/*############################################################################################## */
/* Audit de la repartition  visiteurs connectes
 *@params:
 *    - _sCookie : cookie magasin
 */
function gaUserIsConnected(_sCookie) {
    try {
        var cn = 'no';
    
        // Cas mag, donc navi en mode connecte
        if (_sCookie !=null) cn = 'yes';
        _gaq.push(['_setCustomVar',4,"connected", cn,1]);
    }
    catch (err) {}
}

/*############################################################################################## */
/* Audit des transactions eResa et du formumlaire
 *@params:
*/

/* Constructeur */
function gaTransac() {
}

/* Transaction : init */
gaTransac.prototype.addTrans = function (_orderId, _affiliation, _total, _tax, _shipping, _city, _state, _country) {
    if (_orderId == '' || _total == '') return;

    this._orderId = _orderId;

    try {
        _gaq.push(['_addTrans',_orderId, _affiliation, _total, _tax, _shipping, _city, _state, _country]);
    }
    catch (err) {}
}

/* Transaction : ajout une ligne d item*/
gaTransac.prototype.addItem = function(_sku, _name, _category, _price, _quantity){
    if (this._orderId == '' || _sku == '' || _price == '' || _quantity == '') return;
    
    try {
        _gaq.push(['_addItem',this._orderId, _sku, _name, _category, _price, _quantity]);
    }
    catch (err) {}
}

/* Transaction : envoi */
gaTransac.prototype.trackTrans = function(){
    try {
        _gaq.push(['_trackTrans']);
    }
    catch (err) {}
}

/* Form : modif du genre */
gaTransac.prototype.setFormGender = function(_gender){

}

/* Form : modif du mode de contact */
gaTransac.prototype.setFormContactMode = function(_mode){

}

/* Form : modif du mode recherche */
gaTransac.prototype.setFormOther = function(_other){

}

/* Form : modif type de eresa : lad ou eresa */
gaTransac.prototype.setFormType = function(_type){
    if (_type == '') return;
    
    try {
        _gaq.push(['_setCustomVar',1,"eresa-type", _type,1]);	
    }
    catch (err) {}
}

gaTransac.prototype.trackForm = function(){
    try {
        _gaq.push(['_trackPageview']);
    }
    catch (err) {}
}

/* Etapes du processus : envoi de l etape */
gaTransac.prototype.trackProcessStep = function(_step){
    if (_step == '') return;
    
    try {
        _gaq.push(['_trackPageview',"/process/" + _step]);

        if (_siteNumber == "52333" && _step == "summary_ok") {
            var sGa = '<!-- Google Code for Sales Conversion Page --><script type="text/javascript"><!--var google_conversion_id = 1043123474;var google_conversion_language = "en";var google_conversion_format = "2";var google_conversion_color = "ffffff";var google_conversion_label = "dcj4CPrWswEQkpqz8QM";var google_conversion_value = 0;//--></script><script type="text/javascript" src="http://www.googleadservices.com/pagead/conversion.js"></script><noscript><div style="display:inline;"><img height="1" width="1" style="border-style:none;" alt="" src="http://www.googleadservices.com/pagead/conversion/1043123474/?label=dcj4CPrWswEQkpqz8QM&amp;guid=ON&amp;script=0"/></div></noscript>';
            setBlocByHtml("googleAnalytics", sGa);
        }

    }
    catch (err) {}
}

/*############################################################################################## */
/* Formate chaine pour url virtuelles de GA 
 *@params:
 *    - _s : chaine a traiter 
*/
function gaStringCleaningForUrl(_s) {
    var sReplaceFrom = "éêèëîïíàâáùüûçñôöó&/\'=";
    var sReplaceTo      = "eeeeiiiaaauuucnooo____";
    var sDelete = "\"?,!:;()\\";

    var sOut = "";
    var currentCar;
    var pos;
    var reg;

    // Mise en minuscules
    _s = _s.toLowerCase();

    // Suppression espaces
    reg=new RegExp(" ","g");
    _s = _s.replace(reg,"_");

    // Suppression de certaines chaines interdites
    reg=new RegExp("&amp;","g");
    _s = _s.replace(reg,"_");

    // Cas d un lien externe http, on le remplace
    //var reg=new RegExp("https?://","g");
    //_s = _s.replace(reg,"http#");
        
    // Recherche des caracteres a supprimer / remplacer
    for (var i = 0; i < _s.length; i++ ) {
        currentCar = _s.charAt(i);
        // Recherche des caracteres a remplacer
        pos = sReplaceFrom.indexOf(currentCar,0);
        if (pos != -1) sOut += sReplaceTo.charAt(pos);
        else {
            // Recherche des caracteres a supprimer
            pos = sDelete.indexOf(currentCar,0);
            if (pos != -1) sOut += "";
            else {
                // Dans tous les autres cas on ajoute simplement
                sOut += currentCar;
            }
        }
    }

    // Remplacement de X underscores successifs pas un seul
    reg=new RegExp("_{1,}","g");
    sOut = sOut.replace(reg,"_");

    // Substitution du caractere de separation et ajout des /
    reg=new RegExp("#","g");
    sOut = sOut.replace(reg,"/");

    // Suppression des underscores de debut et fin de chaine
    reg=new RegExp("^_","g");
    sOut = sOut.replace(reg,"");
    reg=new RegExp("_$","g");
    sOut = sOut.replace(reg,"");

    // Finalisation
    sOut = "/" + sOut;

    return sOut; 
}
