/*##############################################################################################
######################### JS DES FONCTIONS LIEES A GOOGLE ANALYTICS  ############################ 
/*############################################################################################## */

/* Envoi du hit Google Analytics
 *@params:
 *    
 */
function gaTrackThis(_sId, _sPageType,_sVirtualPath) {
    // L init des deux objets de tracking est necessaire sinon, sortie
    if (typeof pageTracker == "undefined" || typeof pageTrackerMain == "undefined") return;

    // Le hit n est pas envoye sur toutes les pages
    if (_sPageType != "bottom-links" && _sPageType != "modele" && _sPageType != "eBooking") {

        // 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);
            pageTracker._trackPageview(str);
            pageTrackerMain._trackPageview(str);
        }
        else {
            pageTracker._trackPageview();
            pageTrackerMain._trackPageview();
        }

    }

}

/*############################################################################################## */
/* Audit de l arbo produit
 *@params:
 *    - _arbo : arbo produit
*/
function gaMtree(_arbo) {
    if (_arbo == "") return;

    try {
        var str = "/mtree" + gaStringCleaningForUrl(_arbo);
        pageTracker._trackPageview(str);
        pageTrackerMain._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 {
        pageTracker._trackEvent(_pCateg, _pName);
        pageTrackerMain._trackEvent(_pCateg, _pName);
    }
    catch (err) {}
}

/*############################################################################################## */
/* Audite d un lien
 *@params:
 *    - _link : lien
*/
function gaLink(_link) {
    if (_link == "") return;

    try {
        // On ne track que les liens externes
        if (_link.indexOf("http") != '-1') {
            var reg=new RegExp("://","g");
            _link = "/link/out/" + _link.replace(reg,"_");
            pageTracker._trackPageview(_link);
            pageTrackerMain._trackPageview(_link);
        }

    }
    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 de connexion
            var str = "/stores_cnx" + gaStringCleaningForUrl(sDep + "#" + sStore);
            pageTracker._trackPageview(str);
            pageTrackerMain._trackPageview(str);
            
            // Hit type de page pour la connexion
            if (sPageType != "") {             
                pageTracker._trackEvent("stores_cnx", sPageType);
                pageTrackerMain._trackEvent("stores_cnx", sPageType);
            }
        }
        catch (err) {}
    }
}

/*############################################################################################## */
/* Audit l espace mag
 *@params:
 *    - _arbo : arbo magasin
*/
function gaStores(_arbo) {
    if (_arbo == "") return;

    try {
        var str = "/stores" + gaStringCleaningForUrl(_arbo);
        pageTracker._trackPageview(str);
        pageTrackerMain._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);
        pageTracker._trackPageview(str);
        pageTrackerMain._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;
        pageTracker._trackEvent(categ, _sDep);
        pageTrackerMain._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';

        pageTracker._setCustomVar(4,"connected", cn,1);
        pageTrackerMain._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 {
        pageTracker._addTrans(_orderId, _affiliation, _total, _tax, _shipping, _city, _state, _country);
        //pageTrackerMain._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 {
        pageTracker._addItem(this._orderId, _sku, _name, _category, _price, _quantity);
        //pageTrackerMain._addItem(this._orderId, _sku, _name, _category, _price, _quantity); 
    }
    catch (err) {}
}

/* Transaction : envoi */
gaTransac.prototype.trackTrans = function(){
    try {
        pageTracker._trackTrans();
        //pageTrackerMain._trackTrans();
    }
    catch (err) {}
}

/* Form : modif du genre */
gaTransac.prototype.setFormGender = function(_gender){
    if (_gender == '') return;
    
    try {
        pageTracker._setCustomVar(1,"eresa-gender", _gender,1);
        //pageTrackerMain._setCustomVar(1,"eresa-gender", _gender,1);
    }
    catch (err) {}
}

/* Form : modif du mode de contact */
gaTransac.prototype.setFormContactMode = function(_mode){
    if (_mode == '') return;
    
    try {
        pageTracker._setCustomVar(2,"eresa-cmode", _mode,1);
        //pageTrackerMain._setCustomVar(2,"eresa-cmode", _mode,1);
    }
    catch (err) {}
}

/* Form : modif du mode recherche */
gaTransac.prototype.setFormOther = function(_other){
    if (_other == '') return;
    
    try {
        pageTracker._setCustomVar(3,"eresa-other", _other,1);
        //pageTrackerMain._setCustomVar(3,"eresa-other", _other,1);
    }
    catch (err) {}
}

gaTransac.prototype.trackForm = function(){
    try {
        pageTracker._trackPageview();
        //pageTrackerMain._trackPageview();
    }
    catch (err) {}
}

/* Etapes du processus : envoi de l etape */
gaTransac.prototype.trackProcessStep = function(_step){
    if (_step == '') return;
    
    try {
        pageTracker._trackPageview("/process/" + _step);
        pageTrackerMain._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; 
}