// SNIFFER - Rilevatore di browser
// Coded by MaRoK
// Potete studiare e copiare questo codice,
// ma, se lo usate, citate sempre la fonte!
// E mi dovete birra e pheega!

// NB: La maggioranza delle informazioni fornite sono 
// assolutamente inutili

// Prima serissima inizializzazione di variabili

var nome='boh';
var versione='boh';
var data_ita='boh';
var lingua='boh';
var sistema='boh';
var larghezza_totale='boh';
var altezza_totale='boh';
var larghezza_max='boh';
var altezza_max='boh';
var larghezza_finestra='boh';
var altezza_finestra='boh';
var colori='boh';

// La funzione

function sniffer() {

// Detect di nome, versione ed anno di rilascio (nome, versione, data_ita)

// Prima ci togliamo dai coglioni Netscape4:

if (document.layers) {nome = 'Netscape'; versione = parseFloat(navigator.appVersion)}						// Netscape4

// Poi ci togliamo dai coglioni i browser che si comportano a cazzo:

else if (navigator.userAgent.toLowerCase().indexOf('hrome') >0) {			// Chrome
	nome = "Chrome";
	versione_chrome_inizio=navigator.userAgent.toLowerCase().indexOf('hrome/') + 6;
	versione_chrome_fine=navigator.userAgent.toLowerCase().indexOf('afari') - 2;
	versione = navigator.userAgent.toLowerCase().substring(versione_chrome_inizio,versione_chrome_fine);
}						
else if (navigator.userAgent.toLowerCase().indexOf('afari') >0) {nome = "Safari"}						// Safari
else if (navigator.userAgent.toLowerCase().indexOf('amino') >0) {nome = "Camino"}						// Camino
else if (navigator.userAgent.toLowerCase().indexOf("icab") >0) {nome = "iCab"}							// iCab
else if (navigator.userAgent.toLowerCase().indexOf("onqueror") >0) {nome = "Konqueror"}						// Konqueror

// Poi ci togliamo dai coglioni opera ed il suo spoofing del cazzo:

else if (window.opera) {													// Opera	
nome = 'Opera';
if (navigator.userAgent.toLowerCase().indexOf('pera/')>0) 									// Ogni tanto Opera scrive lo slash, ogni tanto no. 
	{versione_posizione_inizio=navigator.userAgent.toLowerCase().indexOf('pera/') + 5}					// Se c'e' lo slash, la versione e' dopo la stringa 'Opera/'
else	{versione_posizione_inizio=navigator.userAgent.toLowerCase().indexOf('pera ') + 5};					// Altrimenti, e' dopo la stringa 'Opera '
versione_posizione_fine=versione_posizione_inizio + 4;										// Non ho elementi per capire dove finisca la stringa della versione, prendo 4 caratteri.
versione = navigator.userAgent.toLowerCase().substring(versione_posizione_inizio,versione_posizione_fine);			// Salvo in 'versione' la versione di Opera	
}

// Poi ci togliamo dai coglioni i browser gecko-based

else if (window.sidebar) {													// Famiglia Mozilla
nome_posizione_inizio= (navigator.userAgent.toLowerCase().indexOf('gecko')) + 15;						// Scanno l'userAgent cercando dove inizia il nome del browser, che a quanto pare sta sempre a 15 caratteri dopo la scritta "gecko"
lunghezza_nome = navigator.userAgent.toLowerCase().substring(nome_posizione_inizio,nome_posizione_inizio+300).indexOf('/'); 	// Conto i caratteri dalla prima lettera del nome fino al primo slash. Funziona se c'e' uno slash entro i primi 300 caratteri.
nome_posizione_fine= nome_posizione_inizio + lunghezza_nome;									// Prendo la posizione dell'ultimo carattere del nome del browser
nome = navigator.userAgent.substring(nome_posizione_inizio,nome_posizione_fine);						// Salvo il nome del browser nella variabile 'nome'
versione_posizione_inizio = (navigator.userAgent.toLowerCase().indexOf("gecko")) + 15 + lunghezza_nome + 1;			// Prendo la posizione del primo carattere della versione, che a quanto pare segue sempre lo slash dopo il nome
versione = navigator.userAgent.toLowerCase().substring(versione_posizione_inizio,nome_posizione_inizio+30);			// Salvo la versione del browser nella variabile 'versione'
if (navigator.userAgent.toLowerCase().indexOf('irefox') >0) {nome = "Firefox"}							// Firefox e' sempre Firefox
if (nome == 'netscape6') {nome='Netscape'}											// Per ragioni puramente estetiche, correggo 'netscape6' in 'netscape'
if (nome == '' || nome == 'boh') {nome='Mozilla'}												// Se non ho trovato altri nomi, gli ficco Mozilla. Non e' escluso che sia giusto.
versionemoz_inizio= (navigator.userAgent.toLowerCase().indexOf('rv')) + 3;							// Scanno l'userAgent cercando la versione di Mozilla
versionemoz_lunghezza = navigator.userAgent.toLowerCase().substring(versionemoz_inizio,versionemoz_inizio+300).indexOf(')'); 	// Conto i caratteri dalla prima lettera della versione fino alla prima parentesi chiusa, entro i primi 300 caratteri.
versionemoz_fine= versionemoz_inizio + versionemoz_lunghezza;									// Prendo la posizione dell'ultimo carattere della versione di Mozilla
versionemoz = navigator.userAgent.toLowerCase().substring(versionemoz_inizio,versionemoz_fine);					// Salvo in 'versionemoz' la versione di Mozilla
if (versione == '') {versione=versionemoz}											// Se non ho trovato altro, uso come versione quella dichiarata da Mozilla. Non e' escluso che sia giusto.
datarl_inizio=nome_posizione_inizio - 9;											// Inizio stringa della data
datarl_fine=nome_posizione_inizio - 1;												// Fine stringa della data
datarl = navigator.userAgent.toLowerCase().substring(datarl_inizio,datarl_fine);						// Salvo in 'datarl' la stringa della data della release di Mozilla, scritta all'americana (yyyymmdd)
annorl = navigator.userAgent.toLowerCase().substring(datarl_inizio,(datarl_inizio+4));						// Salvo in 'annorl' la stringa dell'anno
meserl = navigator.userAgent.toLowerCase().substring((datarl_inizio+4),(datarl_inizio+6));					// Salvo in 'meserl' la stringa del mese
giornorl = navigator.userAgent.toLowerCase().substring((datarl_inizio+6),datarl_fine);						// Salvo in 'giornorl' la stringa del giorno
data_ita = giornorl+'/'+meserl+'/'+annorl;											// Salvo in 'data_ita' la stringa della data in formato italiano (dd/mm/yyyy)
}

// Poi ci togliamo dai coglioni explorer

else if (document.all) {													// Explorer
nome = 'Explorer';
versione = parseFloat(navigator.userAgent.substring(navigator.userAgent.indexOf('(') + 1, navigator.userAgent.indexOf(')')).split('; ')[1].substring(5, navigator.userAgent.substring(navigator.userAgent.indexOf('(') + 1, navigator.userAgent.indexOf(')')).split('; ')[1].length));
}

// E poi prendiamo tutti i browser sconosciuti e gli ficchiamo un valore di default.

else {																// Browser skonosciuto
nome = navigator.appName;
versione = parseFloat(navigator.appVersion);
}

// La prudenza non e' mai troppa...

if (!nome || nome == 'boh') {nome=navigator.appName};											// In assenza di meglio, ci fidiamo del browser. Non e' escluso che funzioni.
if (!versione || versione == 'boh') {versione = parseFloat(navigator.appVersion)}								// In assenza di meglio, ci fidiamo del browser. Non e' escluso che funzioni.
if (!parseFloat(versione)) {versione='non trovata'}									// Se la versione non e' un numero, tantovale evitare figure di merda! ;)
if (document.all&&!window.opera&&(parseInt(versione)==parseFloat(versione))) {versione = versione+'.0'}			// Se la versione di explorer e' un numero intero, ficchiamoci un .0 alla fine che fa fico!
if (!window.sidebar) {data_ita= 'non trovata'}										// Sparare date a cazzo pare brutto :)


// Detect della risoluzione video - memorizzato nella variabile "larghezza/altezza_totale/max/finestra" :

if (!document.all&&!document.layers&&!document.getElementById) 
	{larghezza_max = 0 ; altezza_max = 0; larghezza_totale = 0; altezza_totale = 0; larghezza_finestra = 0; altezza_finestra = 0; barra = 0; colori = 0}

else   {larghezza_totale = screen.width; 
	altezza_totale = screen.height;
	larghezza_max = screen.availWidth;
	altezza_max = screen.availHeight;
	if (window.innerWidth) {larghezza_finestra = window.innerWidth; // Tutti tranne explorer
				altezza_finestra = window.innerHeight;}
	else 	{larghezza_finestra = window.document.body.clientWidth;	// Explorer
		 altezza_finestra = window.document.body.clientHeight}
	colori = (Math.pow(2,screen.colorDepth));			// Il numero dei colori viene calcolato facendo 2 elevato alla colorDepth
		 }
		 
		 


// Detect del sistema operativo (memorizzato nella variabile 'sistema')

     if (navigator.userAgent.toLowerCase().indexOf('nt 6') > -1)   {sistema = 'Windows Vista'}				// Windows Vista
else if (navigator.userAgent.toLowerCase().indexOf('nt 5.0') > -1) {sistema = 'Windows 2000'}				// Windows 2000
else if (navigator.userAgent.toLowerCase().indexOf('nt 5.1') > -1) {sistema = 'Windows XP'}				// Windows XP
else if (!window.opera&&document.all)											// Explorer - caso generale
        {sistema = navigator.userAgent.substring((navigator.userAgent.indexOf('(') + 1), navigator.userAgent.indexOf(')')).split('; ')[2];}
else 															// Altro browser - caso generale
	{if (navigator.userAgent.substring((navigator.userAgent.indexOf('(') + 1), navigator.userAgent.indexOf(')')).split('; ')[2]) 
		{if (navigator.userAgent.substring((navigator.userAgent.indexOf('(') + 1), navigator.userAgent.indexOf(')')).split('; ')[0].toLowerCase() == "windows") 
			{sistema = navigator.userAgent.substring((navigator.userAgent.indexOf('(') + 1), navigator.userAgent.indexOf(')')).split('; ')[2];} 
         	else {sistema = navigator.userAgent.substring((navigator.userAgent.indexOf('(') + 1), navigator.userAgent.indexOf(')')).split('; ')[0] + " " + navigator.userAgent.substring((navigator.userAgent.indexOf('(') + 1), navigator.userAgent.indexOf(')')).split('; ')[2];}} 
      		else {sistema = navigator.userAgent.substring((navigator.userAgent.indexOf('(') + 1), navigator.userAgent.indexOf(')')).split('; ')[0];}};
      		
if (!sistema || sistema=='boh') {sistema = 'Windows'} // Chissenefotte



// Detect della lingua - memorizzata nella variabile "lingua" :

slurp = new Object;
slurp["un"] = "Inglese";
slurp["cn"] = "CN (Cinese)";
slurp["cs"] = "CS (Cecoslovacco)";
slurp["da"] = "DA (Danese)";
slurp["de"] = "DE (Tedesco)";
slurp["el"] = "EL (Greco)";
slurp["en"] = "EN (Inglese)";
slurp["es"] = "ES (Spagnolo)";
slurp["fc"] = "FC (Francese)";
slurp["fi"] = "FI (Finlandese)";
slurp["fr"] = "FR (Francese)";
slurp["hu"] = "HU (Ungherese)";
slurp["it"] = "IT (Italiano)";
slurp["ja"] = "JA (Giapponese)";
slurp["ko"] = "KO (Coreano)";
slurp["nl"] = "NL (Olandese)";
slurp["no"] = "NO (Norvegese)";
slurp["pl"] = "PL (Polacco)";
slurp["pt"] = "PT (Brasiliano)";
slurp["ru"] = "RU (Russo)";
slurp["sv"] = "SV (Svedese)";
slurp["tr"] = "TR (Turco)";
slurp["tw"] = "TW (Cinese)";
slurp["uk"] = "UK (Inglese)";
slurp["de-de"] = "DE (Tedesco)"
slurp["en-gb"] = "GB (Inglese UK)";
slurp["en-us"] = "US (Inglese USA)";
slurp["es-es"] = "ES (Spagnolo)";
slurp["fr-fr"] = "FR (Francese)";
slurp["ja-jp"] = "JP (Giapponese)";

if (navigator.language) {language = navigator.language.toLowerCase()} 
else if (navigator.userLanguage) {language = navigator.userLanguage.toLowerCase()}
else language = ''; codice_lingua = "un";

if (slurp[language]) {codice_lingua = language} else {codice_lingua = "un"};

lingua=slurp[codice_lingua];

};




// Stampa dei risultati:

function sniffer_print() {
sniffer();
document.write('<center><table class="quadro8" cellpadding=5 cellspacing=0>');
document.write('<tr><td class="stile2">Nome del browser:</td><td>'+nome+'</td></tr>');
document.write('<tr><td class="stile2">Versione:</td><td>'+versione+'</td></tr>');
if (window.sidebar) {document.write('<tr><td class="stile2">Data rilascio:</td><td>'+data_ita+'</td></tr>')};
document.write('<tr><td class="stile2">Lingua:</td><td>'+lingua+'</td></tr>');
document.write('<tr><td class="stile2">Sistema operativo:</td><td>'+sistema+'</td></tr>');
document.write('<tr><td class="stile2">Risoluzione video:</td><td class="stile3">'+larghezza_totale+'x'+altezza_totale+' px</td></tr>');
document.write('<tr><td class="stile2">Pixel liberi:</td><td class="stile3">'+larghezza_max+'x'+altezza_max+' px</td></tr>');
document.write('<tr><td class="stile2">Finestra (interno):</td><td class="stile3">'+larghezza_finestra+'x'+altezza_finestra+' px</td></tr>');
document.write('<tr><td class="stile2">Numero di colori:</td><td class="stile3">'+colori+'</td></tr>');
document.write('</table></center>');
document.write('<center>I dati sono stati ricavati incrociando questi valori:</center>');
document.write('<center><table class="quadro8" cellpadding=5 cellspacing=0>');
document.write('<tr><td class="stile2">navigator.appName:</td><td>'+navigator.appName+'</td></tr>');
document.write('<tr><td class="stile2">navigator.appVersion:</td><td>'+navigator.appVersion+'</td></tr>');
document.write('<tr><td class="stile2">navigator.userAgent:</td><td>'+navigator.userAgent+'</td></tr>');
document.write('<tr><td class="stile2">document.all:</td><td>');document.all?document.write('YES'):document.write('NO');document.write('</td></tr>');
document.write('<tr><td class="stile2">document.layers:</td><td>');document.layers?document.write('YES'):document.write('NO');document.write('</td></tr>');
document.write('<tr><td class="stile2">document.getElementById:</td><td>');document.getElementById?document.write('YES'):document.write('NO');document.write('</td></tr>');
document.write('<tr><td class="stile2">window.opera:</td><td>');window.opera?document.write('YES'):document.write('NO');document.write('</td></tr>');
document.write('<tr><td class="stile2">window.sidebar:</td><td>');window.sidebar?document.write('YES'):document.write('NO');document.write('</td></tr>');
document.write('<tr><td class="stile2">window.innerWidth:</td><td>');window.innerWidth?document.write('YES'):document.write('NO');document.write('</td></tr>');
document.write('</table></center>');
}
