﻿// ---------------------------------------------------------------
// -- ByteWork - Javascript per raccolta dati Servizio Statistiche
// ---------------------------------------------------------------

// Variabili di ambiente
var _NomeAccountServizio = ""; // Account del servizio
var _ModalitaServizio = 'remoto'; // Modo di servizio ('locale' | 'remoto' | 'SiaLocaleCheRemoto');

// -- UTM User Settings
var _RaccogliereInformazioniClient = 1; // Indica se raccogliere le informazioni del client (1 = si | 0 = no)
var _NomeDominioPerCookies = "auto"; // (auto | none | domain) set the domain name for cookies
var _HashUnivocoDominioPerCookies = "on"; // (on | off) unique domain hash for cookies
var _SecondiAlTimooutPerSessioneInattiva = "1800"; // set the inactive session timeout in seconds
var _UrlProgrammaStatisticheRemoto = "http://www.bytework.it/ServizioStatistiche/Service/StatElab.aspx";
var _UrlProgrammaStatisticheLocale = "http://localhost:51267/webstats/ServizioStatistiche/Service/StatElab.aspx"; // set the web path to the __utm.gif file
var _CarattereSeparatore = "|"; // transaction field separator
var _SeIntercettaVersioneFlash = 1; // set flash version detect option (1 = on | 0 = off)
var _SeIntercettaTitoloPagina = 1; // set the document title detect option (1 = on | 0 = off)
var _PathDelCookiePerTracciamento = "/"; // the cookie path for tracking

// -- Auto / Organic Sources and Keywords
var _NomeMotoreDiRicerca = new Array();
var _PrefissoQueryMotoreDiRicerca = new Array();
_NomeMotoreDiRicerca[0]="google";	        _PrefissoQueryMotoreDiRicerca[0]="q";
_NomeMotoreDiRicerca[1]="yahoo";	        _PrefissoQueryMotoreDiRicerca[1]="p";
_NomeMotoreDiRicerca[2]="msn";		        _PrefissoQueryMotoreDiRicerca[2]="q";
_NomeMotoreDiRicerca[3]="aol";		        _PrefissoQueryMotoreDiRicerca[3]="query";
_NomeMotoreDiRicerca[4]="aol";		        _PrefissoQueryMotoreDiRicerca[4]="encquery";
_NomeMotoreDiRicerca[5]="lycos";	        _PrefissoQueryMotoreDiRicerca[5]="query";
_NomeMotoreDiRicerca[6]="ask";		        _PrefissoQueryMotoreDiRicerca[6]="q";
_NomeMotoreDiRicerca[7]="altavista";	    _PrefissoQueryMotoreDiRicerca[7]="q";
_NomeMotoreDiRicerca[8]="netscape";	        _PrefissoQueryMotoreDiRicerca[8]="query";
_NomeMotoreDiRicerca[9]="cnn";	            _PrefissoQueryMotoreDiRicerca[9]="query";
_NomeMotoreDiRicerca[10]="looksmart";	    _PrefissoQueryMotoreDiRicerca[10]="qt";
_NomeMotoreDiRicerca[11]="about";	        _PrefissoQueryMotoreDiRicerca[11]="terms";
_NomeMotoreDiRicerca[12]="mamma";	        _PrefissoQueryMotoreDiRicerca[12]="query";
_NomeMotoreDiRicerca[13]="alltheweb";	    _PrefissoQueryMotoreDiRicerca[13]="q";
_NomeMotoreDiRicerca[14]="gigablast";       _PrefissoQueryMotoreDiRicerca[14]="q";
_NomeMotoreDiRicerca[15]="voila";	        _PrefissoQueryMotoreDiRicerca[15]="rdata";
_NomeMotoreDiRicerca[16]="virgilio";	    _PrefissoQueryMotoreDiRicerca[16]="qs";
_NomeMotoreDiRicerca[17]="live";	        _PrefissoQueryMotoreDiRicerca[17]="q";
_NomeMotoreDiRicerca[18]="baidu";	        _PrefissoQueryMotoreDiRicerca[18]="wd";
_NomeMotoreDiRicerca[19]="alice";	        _PrefissoQueryMotoreDiRicerca[19]="qs";
_NomeMotoreDiRicerca[20]="yandex";          _PrefissoQueryMotoreDiRicerca[20]="text";
_NomeMotoreDiRicerca[21]="najdi";  	        _PrefissoQueryMotoreDiRicerca[21]="q";
_NomeMotoreDiRicerca[22]="aol";	            _PrefissoQueryMotoreDiRicerca[22]="q";
_NomeMotoreDiRicerca[23]="club-internet";   _PrefissoQueryMotoreDiRicerca[23]="q";
_NomeMotoreDiRicerca[24]="mama";	        _PrefissoQueryMotoreDiRicerca[24]="query";
_NomeMotoreDiRicerca[25]="seznam";	        _PrefissoQueryMotoreDiRicerca[25]="q";
_NomeMotoreDiRicerca[26]="search";	        _PrefissoQueryMotoreDiRicerca[26]="q";
_NomeMotoreDiRicerca[27]="szukaj";	        _PrefissoQueryMotoreDiRicerca[27]="szukaj";
_NomeMotoreDiRicerca[28]="szukaj";	        _PrefissoQueryMotoreDiRicerca[28]="qt";
_NomeMotoreDiRicerca[29]="netsprint";       _PrefissoQueryMotoreDiRicerca[29]="q";
_NomeMotoreDiRicerca[30]="google.interia";	_PrefissoQueryMotoreDiRicerca[30]="q";
_NomeMotoreDiRicerca[31]="szukacz";	        _PrefissoQueryMotoreDiRicerca[31]="q";
_NomeMotoreDiRicerca[32]="yam";	            _PrefissoQueryMotoreDiRicerca[32]="k";
_NomeMotoreDiRicerca[33]="pchome";	        _PrefissoQueryMotoreDiRicerca[33]="q";




// -- * * * * non modificare oltre questo punto ***
var _HashUnivocoDominio, 
    _DataCorrente, 
    _dominio = "", 
    _NumeroRandom, 
    _UtenteCensitoPrimaVolta = 0,
    _UtentePrimoAccessoSessione = 0, 
    _NumeroVisiteUtente = 0, 
    _provenienza = "-", 
    _DataCorrenteInSecondi = 0, 
    _Document = document, 
    _location = _Document.location, 
    _locationAncora = "";

//se la location contiene un ancora di puntamento la mamorizzo
if (_location.hash) _locationAncora = _location.href.substring(_location.href.indexOf('#'));

//se il protocolo è https, setto il programma sullo stesso protocollo. (a me non serve)
//if (_location.protocol == "https:") _UrlProgrammaStatisticheRemoto = "https://www.bytework.it/ServizioStatistiche/Service/StatElab.aspx";

//se non è settato il path dei cookies lo rimetto come da default
if ( ! _PathDelCookiePerTracciamento || _PathDelCookiePerTracciamento == "") _PathDelCookiePerTracciamento = "/";

//Funzione proncipale di tracciamento del passaggio
function TracciaPassaggio(page)
{
   //Se provengo da una navigazione con browser diretto da file , esco
   if (_location.protocol == "file:") return;
      
   var a, b, c, xx, v, z, k, expire_per_inattivita = "", s = "", f = 0;
   
   var DataScadenzaCookies = " expires=" + GetDataScadenzaCookies() + ";";
   
   var document_cookies = _Document.cookie;
   
   _HashUnivocoDominio = GetHashUnivocoDominio();
    
   _NumeroRandom = Math.round(Math.random() * 2147483647);
   
   _DataCorrente = new Date();
   _DataCorrenteInSecondi = Math.round(_DataCorrente.getTime() / 1000);
   a = document_cookies.indexOf("__bwtracciaturautente=" + _HashUnivocoDominio);
   b = document_cookies.indexOf("__bwflagsessioneinattiva=" + _HashUnivocoDominio);
   c = document_cookies.indexOf("__bwflagsessione=" + _HashUnivocoDominio);
   if (_NomeDominioPerCookies && _NomeDominioPerCookies != "")
   {
      _dominio = " dominio=" + _NomeDominioPerCookies + ";";

   }
   if (_SecondiAlTimooutPerSessioneInattiva && _SecondiAlTimooutPerSessioneInattiva != "")
   {
      expire_per_inattivita = new Date(_DataCorrente.getTime() + (_SecondiAlTimooutPerSessioneInattiva * 1000));
      expire_per_inattivita = " expires=" + expire_per_inattivita.toGMTString() + ";";
   }
   
   //soltanto se esistono tutti e tre i cookies aggiorno quello di sessione scaduta
   if (a >= 0 && b >= 0 && c >= 0)
   {
      _Document.cookie = "__bwflagsessioneinattiva=" + _HashUnivocoDominio + "; path=" + _PathDelCookiePerTracciamento + ";" + expire_per_inattivita + _dominio;
   }
   //Altrimenti creo o aggiorno i cookies
   else
   {
      //se il cookies da due anni esiste aggiorno il numero di visite e rinnovo la scadenza
      if (a >= 0) 
         a = AggiornaCookieTracciaturaUtente(_Document.cookie, ";", _DataCorrenteInSecondi);
      else 
      {
         //altrimenti lo creo con numero visite = 1
         a = _HashUnivocoDominio + "." + _NumeroRandom + "." + _DataCorrenteInSecondi + "." + _DataCorrenteInSecondi + "." + _DataCorrenteInSecondi + ".1";
         _UtenteCensitoPrimaVolta = 1;
      }
      
      _Document.cookie = "__bwtracciaturautente=" + a + "; path=" + _PathDelCookiePerTracciamento + ";" + DataScadenzaCookies + _dominio;
      _Document.cookie = "__bwflagsessioneinattiva=" + _HashUnivocoDominio + "; path=" + _PathDelCookiePerTracciamento + ";" + expire_per_inattivita + _dominio;
      _Document.cookie = "__bwflagsessione=" + _HashUnivocoDominio + "; path=" + _PathDelCookiePerTracciamento + ";" + _dominio;
      _UtentePrimoAccessoSessione = 1;
   }

   RaccoltaInformazioni(page);
   _UtentePrimoAccessoSessione = 0;
   _UtenteCensitoPrimaVolta = 0;
}

//ByteWork
//Raccolta informazioni statistiche
function RaccoltaInformazioni(page)
{
   var p, 
      stringa_parametri= "", 
      dominio = "", 
      paginaInEsame = _location.pathname + _location.search;
       
   if (page && page != "") paginaInEsame = EncodingString(page, 1);
   
   _provenienza = _Document.referrer;
   
   if ( ! _provenienza || _provenienza == "")
   {
      _provenienza = "-";

   }
   else
   {
      dominio = _Document.domain;
      
      if(_PathDelCookiePerTracciamento && _PathDelCookiePerTracciamento != "/") 
         dominio += _PathDelCookiePerTracciamento;
      
      p = _provenienza.indexOf(dominio);
      
      if ((p >= 0) && (p <= 8))
      {
         _provenienza = "0";

      }
      
      if (_provenienza.indexOf("[") == 0 && _provenienza.lastIndexOf("]") == (_provenienza.length - 1))
      {
         _provenienza = "-";

      }
   }
   
   //Sito da tracciare
   if (_location.hostname && _location.hostname != "") stringa_parametri += "&NomeHost=" + EncodingString(_location.hostname);

   //setto a si il parametro di utente censito per la prima volta
   if(_UtenteCensitoPrimaVolta) stringa_parametri += "&UtenteCensitoPrimaVolta=si";
   
   //setto a si il paramentro di primo accesso al sito nella sessione
   if (_UtentePrimoAccessoSessione) stringa_parametri += "&PuntoDiIngresso=si";
   
   stringa_parametri += "&numrandom=" + _NumeroRandom;
   
   //Raccolta informazioni del client
   if (_RaccogliereInformazioniClient) stringa_parametri += RaccoltaInformazioniClient();
   
   //Raccolta informazioni di pagine   
   if (_SeIntercettaTitoloPagina && _Document.title && _Document.title != "")
      stringa_parametri+= "&TitoloPaginaInEsame=" + EncodingString(_Document.title);
      
   stringa_parametri += "&Provenienza=" + _provenienza;
   
   stringa_parametri += "&PaginaInEsame=" + paginaInEsame;
   
   
   //var ContestoSessione = "TipoDiAccesso=(diretto)|SorgenteDiAccesso=(diretto)|ValoreDiAccesso=(none)";
   var ContestoSessione = "TipoDiAccesso=(diretto)|SorgenteDiAccesso=(diretto)|ValoreDiAccesso=(none)";
   var altrisiti = VerificaSeProvieneDaAltriSiti();
   if(altrisiti != "") ContestoSessione = altrisiti;
   var motori = VerificaSeProvieneDaMotoreDiRicerca();
   if(motori != "") ContestoSessione = motori;
   
   if ((_ModalitaServizio == "locale" || _ModalitaServizio == "SiaLocaleCheRemoto"))
   {
      var i = new Image(1, 1);
      i.src = _UrlProgrammaStatisticheLocale + "?" + stringa_parametri + 
               "&NomeAccountServizio=" + 
               _NomeAccountServizio + 
               "&VariabiliCookiesSessione=" + VariabiliCookiesSessione() +
               "&VariabiliContestoSessione=" + ContestoSessione;
      i.onload = function()
      {
         _bwVoid();
      }
   }
   if ((_ModalitaServizio == "remoto" || _ModalitaServizio == "SiaLocaleCheRemoto"))
   {
      var i2 = new Image(1, 1);
      i2.src = _UrlProgrammaStatisticheRemoto + "?" + stringa_parametri + 
               "&NomeAccountServizio=" + 
               _NomeAccountServizio + 
               "&VariabiliCookiesSessione=" + VariabiliCookiesSessione()+
               "&VariabiliContestoSessione=" + ContestoSessione;
      i2.onload = function()
      {
         _bwVoid();

      }
   }
   return;
}
function _bwVoid()
{
   return;

}

//ByteWork
//Setta contesto se proveniente da altri siti (se proviene da se stesso (_provenienza == "0") esce)
function VerificaSeProvieneDaAltriSiti()
{
   if (_provenienza == "0" || _provenienza == "" || _provenienza == "-") return "";
   var i = 0, h, k, n;
   if ((i = _provenienza.indexOf("://")) < 0) return "";
   h = _provenienza.substring(i + 3, _provenienza.length);
   if (h.indexOf("/") > - 1)
   {
      k = h.substring(h.indexOf("/"), h.length);
      //if (k.indexOf("?") > - 1) k = k.substring(0, k.indexOf("?"));
      h = h.substring(0, h.indexOf("/"));
   }
   h = h.toLowerCase();
   n = h;
   if ((i = n.indexOf(":")) > - 1) n = n.substring(0, i);

   if (h.indexOf("www.") == 0) h = h.substring(4, h.length);
   return "TipoDiAccesso=(altrisiti)|SorgenteDiAccesso=" + SostituzioneSpaziConPlus(h) + "|" + "ValoreDiAccesso=" + SostituzioneSpaziConPlus(k);
}

//ByteWork
//tracciatura se proveniente da motore di ricerca
//se proviene da se stesso (_provenienza == "0") esce.
function VerificaSeProvieneDaMotoreDiRicerca(t)
{
   if (_provenienza == "0" || _provenienza == "" || _provenienza == "-") return "";
   var i = 0, h, k;
   if ((i = _provenienza.indexOf("://")) < 0) return "";
   h = _provenienza.substring(i + 3, _provenienza.length);
   if (h.indexOf("/") > - 1)
   {
      h = h.substring(0, h.indexOf("/"));
   }
   for (var ii = 0; ii < _NomeMotoreDiRicerca.length; ii ++ )
   {
      if (h.toLowerCase().indexOf(_NomeMotoreDiRicerca[ii].toLowerCase()) > - 1)
      {
         if ((i = _provenienza.indexOf("?" + _PrefissoQueryMotoreDiRicerca[ii] + "=")) > - 1 || (i = _provenienza.indexOf("&" + _PrefissoQueryMotoreDiRicerca[ii] + "=")) > - 1)
         {
            k = _provenienza.substring(i + _PrefissoQueryMotoreDiRicerca[ii].length + 2, _provenienza.length);
            if ((i = k.indexOf("&")) > - 1) k = k.substring(0, i);
            return "TipoDiAccesso=(motori)|SorgenteDiAccesso=" + SostituzioneSpaziConPlus(_NomeMotoreDiRicerca[ii]) + "|" + "ValoreDiAccesso=" + SostituzioneSpaziConPlus(k);
         }
      }
   }
   return "";
}

//ByteWork
//Raccolta informazioni client
function RaccoltaInformazioniClient()
{
   var BrowserRisoluzione = "-", 
       BrowserColore = "-", 
       lingua = "-", 
       BrowserVersioneFlash = "-", 
       BrowserSetCaratteri = "-", 
       BrowserJavaAttivo = 1;
       
   var browser_navigator= navigator;
   
   if (self.screen)
   {
      BrowserRisoluzione = screen.width + "x" + screen.height;
      BrowserColore = screen.colorDepth + "-bit";
   }
   else if (self.java)
   {
      var j = java.awt.Toolkit.getDefaultToolkit();
      var s = j.getScreenSize();
      BrowserRisoluzione = s.width + "x" + s.height;
   }
   if (browser_navigator.language)
   {
      lingua = browser_navigator.language.toLowerCase();

   }
   else if (browser_navigator.browserLanguage)
   {
      lingua = browser_navigator.browserLanguage.toLowerCase();

   }
   
   BrowserJavaAttivo = browser_navigator.javaEnabled() ? 1 : 0;
   
   if (_SeIntercettaVersioneFlash ) BrowserVersioneFlash = IntercettaVersioneFlash ();
   
   if (_Document.characterSet) 
      BrowserSetCaratteri = EncodingString(_Document.characterSet);
   else if (_Document.charset) 
      BrowserSetCaratteri = EncodingString(_Document.charset);
   
       ////////////////////////////////////////////////////////////////////
    //Nome e versione Browser
    ////////////////////////////////////////////////////////////////////
    var nVer = navigator.appVersion;
    var nAgt = navigator.userAgent;
    var browserName  = 'sconosciuto';
    var fullVersion  = 0; 
    var majorVersion = 0;

    // In Internet Explorer, the true version is after "MSIE" in userAgent
    if ((verOffset=nAgt.indexOf("MSIE"))!=-1) {
        browserName  = "Microsoft Internet Explorer";
        fullVersion  = parseFloat(nAgt.substring(verOffset+5));
        majorVersion = parseInt(''+fullVersion);
   }

    // In Opera, the true version is after "Opera" 
    else if ((verOffset=nAgt.indexOf("Opera"))!=-1) {
        browserName  = "Microsoft Internet Explorer";
        fullVersion  = parseFloat(nAgt.substring(verOffset+6));
        majorVersion = parseInt(''+fullVersion);
    }

    // In most other browsers, "name/version" is at the end of userAgent 
    else if ( (nameOffset=nAgt.lastIndexOf(' ')+1) < (verOffset=nAgt.lastIndexOf('/')) ) {
        browserName  = nAgt.substring(nameOffset,verOffset);
        fullVersion  = parseFloat(nAgt.substring(verOffset+1));
        majorVersion = parseInt(''+fullVersion);
    }

    // Finally, if no name and/or no version detected from userAgent...
    if (browserName.toLowerCase() == browserName.toUpperCase() || fullVersion==0 || majorVersion == 0 ) {
        browserName  = navigator.appName;
        fullVersion  = parseFloat(nVer);
    }

    ///////////////////////////////////////////////////////////////////
    // SISTEMA OPERATIVO 
    ///////////////////////////////////////////////////////////////////
    var OSName = 'n.d.'; 
    if (navigator.userAgent.indexOf('IRIX') != -1) { OSName = "Irix" }
    else if ((navigator.userAgent.toLowerCase().indexOf("os/2")!=-1) || (navigator.appVersion.indexOf("OS/2")!=-1) || (navigator.userAgent.toLowerCase().indexOf("ibm-webexplorer")!=-1)) { OSName = "OS / 2"}
    else if ((navigator.userAgent.indexOf('Win') != -1) && (navigator.userAgent.indexOf('98') != -1)) { OSName = "Windows 98"} 
    else if ((navigator.userAgent.indexOf('Win') != -1) && (navigator.userAgent.indexOf('95') != -1)) { OSName = "Windows 95"} 
    else if (navigator.appVersion.indexOf("16") !=-1) { OSName = "Windows 3.1"} 
    else if (navigator.userAgent.indexOf("NT 5.1") !=-1) {var OSName= "Windows XP"} 
    else if (navigator.userAgent.indexOf("NT 5.2") !=-1) {var OSName= "Windows Server 2003"} 
    else if (navigator.userAgent.indexOf("NT 5") !=-1) {var OSName= "Windows 2000"} 
    else if (navigator.userAgent.indexOf("NT 6") !=-1) {var OSName= "Windows Vista"} 
    else if (navigator.appVersion.indexOf("NT") !=-1) {var OSName= "Windows NT"} 
    else if (navigator.appVersion.indexOf("SunOS") !=-1) {var OSName= "SunOS"} 
    else if (navigator.appVersion.indexOf("Linux") !=-1) { OSName = "Linux"} 
    else if (navigator.appVersion.toLowerCase().indexOf("freebsd") !=-1) { OSName = "FreeBsd"} 
    else if (navigator.userAgent.indexOf('Mac') != -1) { OSName = "Macintosh"} 
    else if (navigator.appName=="WebTV Internet Terminal") { OSName = "WebTV"} 
    else if (navigator.appVersion.indexOf("HP") !=-1) { OSName = "HP-UX"} 
    else if (navigator.userAgent.toLowerCase().indexOf("aix") !=-1) { OSName = "Aix"}
    else {var OSName = "Non identificato"} 
     
    //////////////////////////////////////////////////////////////////
    // DIMENSIONE FINESTRA DI NAVIGAZIONE
    //////////////////////////////////////////////////////////////////
    var ActiveWinW = 'n.d.', ActiveWinH = 'n.d.';

    if (parseInt(navigator.appVersion)>3) {
        if (navigator.appName=="Netscape") {
            ActiveWinW = window.innerWidth;
            ActiveWinH = window.innerHeight;
        }
        if (navigator.appName.indexOf("Microsoft")!=-1) {
            ActiveWinW = document.body.offsetWidth;
            ActiveWinH = document.body.offsetHeight;
        }
    }

   return "&BrowserSetCaratteri=" + BrowserSetCaratteri + 
          "&BrowserRisoluzione=" + BrowserRisoluzione + 
          "&BrowserColore=" + BrowserColore + 
          "&BrowserLingua=" + lingua + 
          "&BrowserJavaAttivo=" + BrowserJavaAttivo + 
          "&BrowserVersioneFlash=" + BrowserVersioneFlash +
          "&SistemaOperativo=" + OSName +
          "&BrowserUserAgnet=" + nAgt + 
          "&BrowserAppVersion=" + nVer +
          "&BrowserNome=" + browserName +
          "&BrowserVersione=" + fullVersion +
          "&BrowserRisoluzioneFinestraAttiva=" + ActiveWinW + 'x' +  ActiveWinH;
          
}

//ByteWork
//Intercetta versione del flash sul client
function IntercettaVersioneFlash ()
{
   var f = "-", n = navigator;
   if (n.plugins && n.plugins.length)
   {
      for (var ii = 0; ii < n.plugins.length; ii ++ )
      {
         if (n.plugins[ii].name.indexOf('Shockwave Flash') != - 1)
         {
            f = n.plugins[ii].description.split('Shockwave Flash ')[1];
            break;
         }
      }
   }
   else if (window.ActiveXObject)
   {
      for (var ii = 10; ii >= 2; ii -- )
      {
         try
         {
            var fl = eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash."+ii+"');");
            if (fl)
            {
               f = ii + '.0';
               break;

            }
         }
         catch(e)
         {
         }
      }
   }
   return f;
}

function VariabiliCookiesSessione()
{
   var t, c = "", document_cookies = _Document.cookie;
   if ((t = GetValoreCookie(document_cookies, "__bwtracciaturautente=" + _HashUnivocoDominio, ";")) != "-") c += EncodingString("__bwtracciaturautente=" + t + ";+");
   if ((t = GetValoreCookie(document_cookies, "__bwflagsessioneinattiva=" + _HashUnivocoDominio, ";")) != "-") c += EncodingString("__bwflagsessioneinattiva=" + t + ";+");
   if ((t = GetValoreCookie(document_cookies, "__bwflagsessione=" + _HashUnivocoDominio, ";")) != "-") c += EncodingString("__bwflagsessione=" + t + ";+");
   return c;
}

//ByteWork
//Restituisce il valore del cookies passato in paramento come nome
function GetValoreCookie(cookies, nome, separatore)
{
   if ( ! cookies || cookies == "" || ! nome || nome == "" || ! separatore || separatore == "") return "-";
   var i, i2, i3, valore = "-";
   i = cookies.indexOf(nome);
   i3 = nome.indexOf("=") + 1;
   if (i > - 1)
   {
      i2 = cookies.indexOf(separatore, i);
      if (i2 < 0)
      {
         i2 = cookies.length;

      }
      valore = cookies.substring((i + i3), i2);
   }
   return valore;
}

//ByteWork
//Restituisce un numero che è l'hash del dominio in esame
function GetHashUnivocoDominio()
{
   if ( ! _NomeDominioPerCookies || _NomeDominioPerCookies == "" || _NomeDominioPerCookies == "none")
   {
      _NomeDominioPerCookies = "";
      return 1;

   }
   if (_NomeDominioPerCookies == "auto")
   {
      var d = _Document.domain;
      if (d.substring(0, 4) == "www.")
      {
         d = d.substring(4, d.length);
      }
      _NomeDominioPerCookies = d;
   }
   _NomeDominioPerCookies = _NomeDominioPerCookies.toLowerCase();
   if (_HashUnivocoDominioPerCookies == "off") return 1;
   return HashUnivocoDominioPerCookies(_NomeDominioPerCookies);
}

//ByteWork
//Costruisce un hash univoco per il dominio in esame da usare per la memorizzazione dei cookies
function HashUnivocoDominioPerCookies(d)
{
   if ( ! d || d == "") return 1;
   var h = 0, g = 0;
   for (var i = d.length - 1; i >= 0; i -- )
   {
      var c = parseInt(d.charCodeAt(i));
      h = ((h << 6) & 0xfffffff) + c + (c << 14);
      if ((g = h & 0xfe00000) != 0) h = (h ^ (g >> 21));
   }
   return h;
}

//ByteWork
//Aggiornamento cookis di tracciatura utente
function AggiornaCookieTracciaturaUtente(cookies, separatore, tempo)
{
   if ( ! cookies || cookies == "" || ! separatore || separatore == "" || ! tempo || tempo == "") return "-";
   var valore = GetValoreCookie(cookies, "__bwtracciaturautente=" + _HashUnivocoDominio, separatore);
   var lt = 0, i = 0;
   if ((i = valore.lastIndexOf(".")) > 9)
   {
      _NumeroVisiteUtente = valore.substring(i + 1, valore.length);
      _NumeroVisiteUtente = (_NumeroVisiteUtente * 1) + 1;
      valore = valore.substring(0, i);
      if ((i = valore.lastIndexOf(".")) > 7)
      {
         lt = valore.substring(i + 1, valore.length);
         valore = valore.substring(0, i);
      }
      if ((i = valore.lastIndexOf(".")) > 5)
      {
         valore = valore.substring(0, i);
      }
      valore += "." + lt + "." + tempo + "." + _NumeroVisiteUtente;
   }
   return valore;
}

//ByteWork
//esegue il trim di una stringa
function TrimmaStringa(s)
{
   if ( ! s || s == "") return "";
   while ((s.charAt(0) == ' ') || (s.charAt(0) == '\n') || (s.charAt(0, 1) == '\r')) s = s.substring(1, s.length);
   while ((s.charAt(s.length - 1) == ' ') || (s.charAt(s.length - 1) == '\n') || (s.charAt(s.length - 1) == '\r')) s = s.substring(0, s.length - 1);
   return s;
}


function SostituzioneSpaziConPlus(s)
{
   var n = "";
   if ( ! s || s == "") return "";
   for (var i = 0; i < s.length; i ++ )
   {
      if (s.charAt(i) == " ") n += "+";
      else n += s.charAt(i);
   }
   return n;
}


//ByteWork
//Encoding delle stringhe
function EncodingString(s, u)
{
   if (typeof(encodeURIComponent) == 'function')
   {
      if (u) return encodeURI(s);
      else return encodeURIComponent(s);
   }
   else
   {
      return escape(s);
   }
}

//ByteWork
//Periodo per scadenza cookie al tracciamento del client (due anni = 63072000000)
function GetDataScadenzaCookies()
{
   return (new Date((new Date()).getTime() + 63072000000)).toGMTString();
}


//ByteWork
//Tracciatura dei link verso l'esterno e i download
function byteWorkLinkStats(){

 // La variabile in cui settare le estensioni da considerare download separate da |
 this.tracciaDownload = '';

 this.tracciaLinks = function(){
  var a = document.getElementsByTagName('a');
  // Estrae dalla location attuale il dominio
  // In domain[0] è salvato http://dominio.it/ o https://dominio.it/
  // In domain[2] dominio.it
  var domain = /^(http|https):\/\/([a-z-.0-9]+)[\/]{0,1}/i.exec(window.location);
  // Le espressioni per individuare link interni e download
  var internalLink = new RegExp("^(http|https):\/\/"+domain[2], "i");
  var isDownload = new RegExp("("+this.tracciaDownload+")$", "i");

  // Per ogni link...
  for(var i = 0; i < a.length; i++){
   // Se è interno...
   if(internalLink.test(a[i].href)){
    // ... e se ha l'estensione definita in this.tracciaDownload ...
    if(this.tracciaDownload && isDownload.test(a[i].href))
     a[i].onclick = function(){
      // Pulisce e traccia l'URL
      TracciaPassaggio('/Download/'+this.href.replace(/^(http|https):\/\/([a-z-.0-9]+)\//i, '').split('/').join('--'));
     }
   }
   else
   // è esterno
    a[i].onclick = function(){
     // Pulisce e traccia l'URL
     TracciaPassaggio('/TracciaLink/'+this.href.replace(/^http:\/\/|https:\/\//i, '').split('/').join('--'));
    }
  }
 }
} 
