﻿/*
NETSCOPE2.JS versao 1.3.2
NETSCOPE version 2 from MARKTEST( WReport version 1.3) (c) Weborama
WWW.NETSCOPE.MARKTEST.PT
*/

/* ------------------ Variables ------------------------- */

var _NB_MAX_CONTENU_ = 1;
var _TAILLE_MAX_CONTENU_ = 100;
var _TAILLE_MAX_CHAINE_ = 50;
var _TAILLE_MAX_ALPHANUM_ = 30;

var w_compteur;
var COOKIE_SEGMENTATION = 'wbo_segment_';

// Definition de l'objet
function wreport_counter(section, subsection, site, frame, channel, section_grp, subsection_grp) {
    this.site = site;

    this.section;
    this.subsection;
    this.channel = '';
    this.content = '';
    this.nb_content = 0;
    this.url = '';

    this.frame = frame;

    this.segmentation = new Array('', '', '', '', '');
    this.profiles = '';
    this.profiling_cookie_mode = 1;
    this.cookie_segmentation = COOKIE_SEGMENTATION;
    this.domaine_segmentation = '';

    this.counter = new Image(1, 1);

    /* Methodes */
    this.profiling_cookie_mode = profiling_cookie_mode;
    this.generate_url = generate_url;
    this.add_content = add_content;
    this.add_channel = add_channel;
    this.add_group = add_group;
    this.add_profile = add_profile;
    this.add_profiles = add_profiles;
    this.delete_profiles = delete_profiles;
    this.get_profiles = get_profiles;
    this.count = count;

    /* Initialisation */
    this.section = traite_chaine(section, _TAILLE_MAX_ALPHANUM_);
    this.subsection = traite_chaine(subsection, _TAILLE_MAX_ALPHANUM_);
    if (channel != null) {
        this.add_channel(channel);
    }
    if (section_grp != null && subsection_grp != null) {
        this.add_group(section_grp, subsection_grp);
    }
    this.cookie_segmentation += site;
}

// Génére la url de comptage
function generate_url() {
    var _date_ = new Date();
    this.date = parseInt(_date_.getTime() / 1000 - 60 * _date_.getTimezoneOffset());
    this.ref = '' + escape(document.referrer);

    this.ta = '0x0';
    this.co = 0;
    this.nav = navigator.appName;

    this.get_profiles();

    if (parseInt(navigator.appVersion) >= 4) {
        this.ta = screen.width + "x" + screen.height;
        this.co = (this.nav != "Netscape") ? screen.colorDepth : screen.pixelDepth;
    }
    if ((this.frame != null) && (this.nav != "Netscape")) {
        var reftmp = 'parent.document.referrer';
        if ((this.frame < 5) && (this.frame > 0)) {
            for (_k = this.frame; _k > 1; _k--) reftmp = 'parent.' + reftmp;
        }
        var mon_ref = eval(reftmp);
        if (document.referrer == parent.location || document.referrer == '') this.ref = '' + escape(mon_ref)
    }

    if (location.protocol == 'https:') {
        this.url = "https://netscope.secure.marktest.pt";
    }
    else {
        this.url = "http://netscope.data.marktest.pt";
    }
    this.url += "/fcgi-bin/comptage_wreport.fcgi?WRP_ID=" + this.site;
    if (this.profiles != null) this.url += "&WRP_PFL=" + this.profiles;

    var is_mac = (wf_uaO('mac') != -1);
    var is_opera = (wf_uaO('opera') != -1);
    if ((!is_mac) && (!is_opera)) {
        var msieind = navigator.userAgent.indexOf('MSIE');
        if (msieind > 0) {
            if (parseInt(navigator.userAgent.charAt(msieind + 5)) >= 5) {
                document.body.addBehavior("#default#clientCaps");
                this.cnx = (document.body.connectionType == 'modem') ? 'A' : 'B';
                document.body.addBehavior("#default#homePage");
                this.home = (document.body.isHomePage(location.href)) ? 'A' : 'B';
                this.url += "&CONN=" + this.cnx + "&ISHOME=" + this.home;
            }
        }
    }
    this.url += "&WRP_SECTION=" + this.section + "&WRP_SUBSECTION=" + this.subsection;

    if (this.site_grp != null && this.section_grp != null && this.subsection_grp != null) {
        this.url += "&WRP_ID_GRP=" + this.site_grp + "&WRP_SECTION_GRP=" + this.section_grp + "&WRP_SUBSECTION_GRP=" + this.subsection_grp;
    }

    if (this.content != null) this.url += "&WRP_CONTENT=" + this.content;
    if (this.channel != null) this.url += "&WRP_CHANNEL=" + this.channel;

    this.url += "&ver=2&da2=" + this.date + "&ta=" + this.ta + "&co=" + this.co + "&ref=" + this.ref;
}

// Realise le comptage
function count() {
    this.generate_url();
    this.counter.src = this.url;
    return 1;
}

// Ajout de l'information de chaine thématique
function add_channel(chaine) {
    if (chaine == null) return 0;
    this.channel = traite_chaine(chaine, _TAILLE_MAX_CHAINE_);
    return 1;
}

// Ajout de double comptage option groupe
function add_group(section, subsection) {
    this.site_grp = WEBO_ID_GROUPE;
    this.section_grp = traite_chaine(section, _TAILLE_MAX_ALPHANUM_);
    this.subsection_grp = traite_chaine(subsection, _TAILLE_MAX_ALPHANUM_);
}

// Ajout de CONTENU
function add_content(chaine) {
    if (chaine == null) return 0;
    this.nb_content++;
    if (this.nb_content > _NB_MAX_CONTENU_) return 0;
    if (this.nb_content > 1) this.content = this.content.concat('|');
    chaine = chaine.replace('|', ' ');
    this.content = this.content.concat(traite_chaine(chaine, _TAILLE_MAX_CONTENU_));
    return 1;
}


/* ------------------ Profilling ------------------------ */

// Modification du mode pour le profiling ( avec cookie ou sans )
function profiling_cookie_mode(mode) {
    if (mode == 'on') {
        this.profiling_cookie_mode = 1;
    }
    else {
        this.profiling_cookie_mode = 0;
    }
}

// Ajout d'un profil pour le profiling 
function add_profile(numero, valeur) {
    numero = parseInt(numero, 10);
    if ((numero < 1) || (numero > 5)) return -2;
    if (this.profiling_cookie_mode == 0) {
        numero--;
        this.segmentation[numero] = valeur;
        return 1;
    }
    if (parseInt(navigator.appVersion, 10) <= 3) return -1;
    nb_mois = 12;
    var verif_val_I = /^\d+$/;
    if (verif_val_I.test(valeur)) valeur = encode_en_lettre(valeur);
    var verif_val_A = /^\w*$/;
    if (verif_val_A.test(valeur)) {
        var mon_profil_wbo = GetCookie(this.cookie_segmentation);
        tab_segment = new Array('', '', '', '', '');
        if (mon_profil_wbo != null) {
            tab_segment = mon_profil_wbo.split('|');
            if (tab_segment.length != 5) tab_segment = ('', '', '', '', '');
            //On vérifie qu'une mise à jour est nécessaire.
            if (tab_segment[numero - 1] == valeur) return 1;
        }
        if (this.domaine_segmentation == '') {
            this.domaine_segmentation = window.location.host;
            tab_points = new Array();
            tab_points = window.location.host.split('.');
            if (tab_points.length > 2) this.domaine_segmentation = this.domaine_segmentation.substring(this.domaine_segmentation.indexOf('.'), this.domaine_segmentation.length);
            if (tab_points.length == 2) this.domaine_segmentation = '.' + this.domaine_segmentation;
        }
        var ma_chaine_profil = '';
        for (var i = 1; i <= 5; i++) {
            if (i == numero) tab_segment[i - 1] = valeur;
            if ((tab_segment[i - 1] == '') || (tab_segment[i - 1] == null)) tab_segment[i - 1] = '';
            ma_chaine_profil += tab_segment[i - 1];
            if (i < 5) ma_chaine_profil += '|';
        }
        expd = new Date();
        expd.setTime(expd.getTime() + (nb_mois * 30 * 24 * 3600 * 1000));
        SetCookie(this.cookie_segmentation, ma_chaine_profil, expd, '/', this.domaine_segmentation);
        return 2;
    }
    else return -3;
}

// Ajout du profiling
function add_profiles(p1, p2, p3, p4, p5) {
    this.add_profile(1, p1);
    this.add_profile(2, p2);
    this.add_profile(3, p3);
    this.add_profile(4, p4);
    this.add_profile(5, p5);
}

// Destruction du cookie de profiling ou de la variable
function delete_profiles() {
    if (this.profiling_cookie_mode == 0) {
        this.segmentation = Array('', '', '', '', '');
    }
    else {
        expd = new Date();
        expd.setTime(expd.getTime() - (24 * 3600 * 1000));
        SetCookie(this.cookie_segmentation, '||||', expd, '/', this.domaine_segmentation);
    }
}

// Recuperation des informations de profiling ( on renvoie une chaine escapée )
function get_profiles() {
    this.profiles = GetCookie(this.cookie_segmentation);
    if (this.profiles == null) {
        this.profiles = '';
        var verif_val_I = /^\d+$/;
        for (var i = 1; i <= 5; i++) {
            if (verif_val_I.test(this.segmentation[i - 1])) this.segmentation[i - 1] = encode_en_lettre(this.segmentation[i - 1]);
            this.profiles += this.segmentation[i - 1];
            if (i < 5) this.profiles += '|';
        }
    }
    this.profiles = escape(this.profiles);
}

/* ------------------ Generales --------------------------- */
function encode_en_lettre(num) {
    num = parseInt(num, 10);
    if (num > 2500) return '';
    var num1 = parseInt(num / 52, 10);
    var num2 = num % 52;

    num1 += 65;
    if (num1 > 90) num1 += 6;

    num2 += 65;
    if (num2 > 90) num2 += 6;

    var mon_code52 = String.fromCharCode(num1) + String.fromCharCode(num2);
    return mon_code52;
}

// Nettoyage d'une chaine de caractères
function traite_chaine(s, taille_max) {
    var bag = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-.,;:_ %";
    var i;
    var returnString = "";
    if (s == null) return "";
    s = "" + s;
    s = s.substr(0, taille_max);
    for (i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if (bag.indexOf(c) != -1) returnString += c;
    }
    returnString = escape(returnString);
    return returnString;
}

// Identification du type de navigateur
function wf_uaO(c) {
    var wf_ual = navigator.userAgent.toLowerCase();
    return (wf_ual.indexOf(c))
}

/* ------------------ Cookies --------------------------- */
function getCookieVal(offset) {
    var endstr = document.cookie.indexOf(";", offset);
    if (endstr == -1)
        endstr = document.cookie.length;
    return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie(name) {
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    while (i < clen) {
        var j = i + alen;
        if (document.cookie.substring(i, j) == arg)
            return getCookieVal(j);
        i = document.cookie.indexOf(" ", i) + 1;
        if (i == 0) break;
    }
    return null;
}

function SetCookie(name, value, expires, path, domain, secure) {
    document.cookie = name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

/* ------- Retro comptabilite ------- */

function wreport(section, subsection, site, frame, content, channel) {
    w_compteur = new wreport_counter(section, subsection, site, frame, channel);
    w_compteur.add_content(content);
    w_compteur.count();
}

function wreport_groupe(section, subsection, site, section_grp, subsection_grp, frame, content, channel) {
    w_compteur = new wreport_counter(section, subsection, site, frame, channel, section_grp, subsection_grp);
    w_compteur.add_content(content);
    w_compteur.count();
}

function wreport_click(url, section, subsection, site, frame, content, channel) {
    w_compteur = new wreport_counter(section, subsection, site, frame, channel);
    w_compteur.add_content(content);
    w_compteur.count();
    w_compteur.counter.onload = function () {
        document.location = url;
    }
}

function wreport_click_groupe(url, section, subsection, site, section_grp, subsection_grp, frame, content, channel) {
    w_compteur = new wreport_counter(section, subsection, site, frame, channel, section_grp, subsection_grp);
    w_compteur.add_content(content);
    w_compteur.count();
    w_compteur.counter.onload = function () {
        document.location = url;
    }
}



wreport_ok = 1;


