// ---------------------------------------------------------------
// -- 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://stats.bytework.it/ServizioStatistiche2/Services/StatElab.aspx";
var _UrlProgrammaStatisticheLocale = "http://localhost:51486/ServizioStatistiche2/Services/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";
   else
       stringa_parametri += "&PuntoDiIngresso=no";
        
   
   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"}

    var BrowserDetect = {
        init: function () {
            this.browser = this.searchString(this.dataBrowser) || "Browser non identificato";
            this.version = this.searchVersion(navigator.userAgent)
            || this.searchVersion(navigator.appVersion)
            || "n.d.";

            // this.OS = this.searchString(this.dataOS) || "Sistema Operativo non identificato";
            this.OS = this.detectOS();
            this.SLV = this.getSilverlightVersion();
        },
        searchString: function (data) {
            for (var i = 0; i < data.length; i++) {
                var dataString = data[i].string;
                var dataProp = data[i].prop;
                this.versionSearchString = data[i].versionSearch || data[i].identity;
                if (dataString) {
                    if (dataString.indexOf(data[i].subString) != -1)
                        return data[i].identity;
                }
                else if (dataProp)
                    return data[i].identity;
            }
        },
        searchVersion: function (dataString) {
            var index = dataString.indexOf(this.versionSearchString);
            if (index == -1) return;
            return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
        },

        detectOS: function () {
            var os, ua = navigator.userAgent;
            if (ua.match(/Win(dows )?NT 6\.1/)) {
                os = "Windows 7"; 			// Windows 7 
            }
            else if (ua.match(/Win(dows )?NT 6\.0/)) {
                os = "Windows Vista"; 			// Windows Vista 
            }
            else if (ua.match(/Win(dows )?NT 5\.2/)) {
                os = "Windows Server 2003"; 		// Windows Server 2003 
            }
            else if (ua.match(/Win(dows )?(NT 5\.1|XP)/)) {
                os = "Windows XP"; 			// Windows XP 
            }
            else if (ua.match(/Win(dows)? (9x 4\.90|ME)/)) {
                os = "Windows ME"; 			// Windows ME 
            }
            else if (ua.match(/Win(dows )?(NT 5\.0|2000)/)) {
                os = "Windows 2000"; 			// Windows 2000 
            }
            else if (ua.match(/Win(dows )?98/)) {
                os = "Windows 98"; 			// Windows 98 
            }
            else if (ua.match(/Win(dows )?NT( 4\.0)?/)) {
                os = "Windows NT"; 			// Windows NT 
            }
            else if (ua.match(/Win(dows )?95/)) {
                os = "Windows 95"; 			// Windows 95 
            }
            else if (ua.match(/Mac|PPC/)) {
                os = "Mac OS"; 				// Macintosh 
            }
            else if (ua.match(/Linux/)) {
                os = "Linux"; 				// Linux 
            }
            else if (ua.match(/(Free|Net|Open)BSD/)) {
                os = RegExp.$1 + "BSD"; 			// BSD 
            }
            else if (ua.match(/SunOS/)) {
                os = "Solaris"; 				// Solaris 
            }
            else {
                os = "Non identificato";
            }
            //DEBUG os = "JSERROR: Sistema operativo non identificato: ###" + navigator.userAgent + "###"; 				

            return os;
        },
        getSilverlightVersion: function () {
            var SLVersion = 0;

            try {

                try {
                    var control = new ActiveXObject('AgControl.AgControl');

                    if (control.IsVersionSupported("3.0"))

                        SLVersion = 3;
                    else

                        if (control.IsVersionSupported("2.0"))

                            SLVersion = 2;
                        else

                            SLVersion = 1;

                    control = null;
                }

                catch (e) {

                    var plugin = navigator.plugins["Silverlight Plug-In"];
                    if (plugin) {

                        if (plugin.description === "1.0.30226.2")

                            SLVersion = 2;
                        else

                            SLVersion = parseInt(plugin.description[0]);
                    }

                    else

                        SLVersion = 0;
                }

            }

            catch (e) {

                SLVersion = 0;
            }

            return SLVersion;
        },
        dataBrowser: [
          {
              string: navigator.userAgent,
              subString: "Chrome",
              identity: "Chrome"
          },
          { string: navigator.userAgent,
              subString: "OmniWeb",
              versionSearch: "OmniWeb/",
              identity: "OmniWeb"
          },
          {
              string: navigator.vendor,
              subString: "Apple",
              identity: "Safari",
              versionSearch: "Version"
          },
          {
              prop: window.opera,
              identity: "Opera"
          },
          {
              string: navigator.vendor,
              subString: "iCab",
              identity: "iCab"
          },
          {
              string: navigator.vendor,
              subString: "KDE",
              identity: "Konqueror"
          },
          {
              string: navigator.userAgent,
              subString: "Firefox",
              identity: "Firefox"
          },
          {
              string: navigator.vendor,
              subString: "Camino",
              identity: "Camino"
          },
          {		// for newer Netscapes (6+)
              string: navigator.userAgent,
              subString: "Netscape",
              identity: "Netscape"
          },
          {
              string: navigator.userAgent,
              subString: "MSIE",
              identity: "Explorer",
              versionSearch: "MSIE"
          },
          {
              string: navigator.userAgent,
              subString: "Gecko",
              identity: "Mozilla",
              versionSearch: "rv"
          },
          { 		// for older Netscapes (4-)
              string: navigator.userAgent,
              subString: "Mozilla",
              identity: "Netscape",
              versionSearch: "Mozilla"
          }
        ],
        dataOS: [
          {
              string: navigator.platform,
              subString: "Win",
              identity: "Windows"
          },
          {
              string: navigator.platform,
              subString: "Mac",
              identity: "Mac"
          },
          {
              string: navigator.userAgent,
              subString: "iPhone",
              identity: "iPhone/iPod"
          },
          {
              string: navigator.platform,
              subString: "Linux",
              identity: "Linux"
          }
        ]

    };
     
    //////////////////////////////////////////////////////////////////
    // 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;
        }
    }

    //////////////////////////////////////////////////////////////////
    // get major Silverlight version

    // Return values:

    // 0 -> Silverlight not installed (at least not properly).

    // 1 -> Silverlight 1 installed

    // 2-> Silverlight 2 installed

    // 2-> Silverlight 3 installed

    //////////////////////////////////////////////////////////////////


   BrowserDetect.init();
         
   return "&BrowserSetCaratteri=" + BrowserSetCaratteri + 
          "&BrowserRisoluzione=" + BrowserRisoluzione + 
          "&BrowserColore=" + BrowserColore + 
          "&BrowserLingua=" + lingua + 
          "&BrowserJavaAttivo=" + BrowserJavaAttivo +
          "&BrowserVersioneFlash=" + BrowserVersioneFlash +
          "&BrowserVersioneSilverLight=" + BrowserDetect.SLV +
          "&SistemaOperativo=" + BrowserDetect.OS +
          "&BrowserUserAgnet=" + nAgt + 
          "&BrowserAppVersion=" + nVer +
          "&BrowserNome=" + BrowserDetect.browser +
          "&BrowserVersione=" + BrowserDetect.version +
          "&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('--'));
    }
  }
 }
} 

