function set_cookie(nome, valore, scadenza, percorso, dominio, sicurezza)
{
	document.cookie = nome + "=" + escape (valore) +
	((scadenza == null) ? "" : ("; expires=" + scadenza)) +
	((percorso == null) ? "" : ("; path=" + percorso)) +
	((dominio == null) ? "" : ("; domain=" + dominio)) +
	((sicurezza == true) ? "; secure" : "");
}

function getCookie(nome_cookie)
{
	var arr_cookie = document.cookie.split("; ");
	// ciclo su tutti i cookies
	for (var i=0; i<arr_cookie.length; i++)
	{
		var tmp = arr_cookie[i].split("=");
		if (nome_cookie == tmp[0])
			return (unescape(tmp[1]));
	}
}

function traceup(pagename)
{
	//CONTROLLO DOMINIO -> non serve
	if (pagename[0]=='/')
	{
		pagename = pagename.substring(1, pagename.lenght);
	}

	var sito   = get_domain(document.URL);
	var pagina = pagename;

	var termine = new Date();
	termine.setTime(termine.getTime() + (60 * 1000));
	
	var nome_cookie = "traceup_js";

	//CONTROLLO COOKIE
	var cookie = document.cookie;

	var arr_cookie = document.cookie.split("; ");
	// ciclo su tutti i cookies
	for (var i=0; i<arr_cookie.length; i++)
	{
		var tmp = arr_cookie[i].split("=");
		if (nome_cookie == tmp[0])
			var cookie_esiste = true;
	}

	if(!cookie_esiste)
	{
		// CREAZIONE COOKIE
		var data = new Date();
		var giorno_corrente = data.getDate().toString().length==1 ? '0'+data.getDate().toString() : data.getDate().toString();
		var mese_corrente   = data.getMonth().toString().length==1 ? '0'+data.getMonth().toString() : data.getMonth().toString();
		var ora_corrente    = data.getHours().toString().length==1 ? '0'+data.getHours().toString() : data.getHours().toString();
		var minuto_corrente = data.getMinutes().toString().length==1 ? '0'+data.getMinutes().toString() : data.getMinutes().toString();
		var secondo_corrente= data.getSeconds().toString().length==1 ? '0'+data.getSeconds().toString() : data.getSeconds().toString();

		//controllo per link diretto
		if (document.referrer)
			var referer_origine	 = document.referrer;
		else
			var referer_origine	 = pagename;
		var data_cookie	   = data.getFullYear().toString() + '-' + mese_corrente + '-' + giorno_corrente;
		var ora_cookie	   = ora_corrente + ':' + minuto_corrente + ':' + secondo_corrente;
		var id_cookie	   = data.getFullYear().toString() + mese_corrente + giorno_corrente + ora_corrente + minuto_corrente + secondo_corrente + (Math.floor(Math.random()*900)+100).toString();
		var dominio		   = get_domain(document.referrer);
		var referer_finale = document.referrer;
		var visite_precedenti = 1;
		
		var value = referer_origine+'#|#'+data_cookie+'#|#'+ora_cookie+'#|#'+id_cookie+'#|#'+dominio+'#|#'+referer_finale+'#|#'+visite_precedenti;

		var termine = new Date(data.getTime()+(1000*60*60*24*30*6));

		set_cookie(nome_cookie, value, termine, "/", null, false);

		// aggiornamento tabella visite
		if (window.XMLHttpRequest)
		{
			req = new XMLHttpRequest();
			req.open('get' , 'http://'+sito+'/'+'proxy_traceup.php?azione=visita&sito='+sito+'&referer_origine='+referer_origine+'&id_cookie='+id_cookie+'&' , true);
			req.send(null);
		}
		//CHIAMATA PER IE6
		else if (window.ActiveXObject)
		{
			req = new ActiveXObject("Microsoft.XMLHTTP");
			if (req) {
				req.open('get' , 'http://'+sito+'/'+'proxy_traceup.php?azione=visita&sito='+sito+'&referer_origine='+referer_origine+'&id_cookie='+id_cookie+'&' , true);
				req.send();
			}
		}
	}
	else
	{
		//non devo modificare il cookie durante la navigazione interna al sito
		if(get_domain(document.referrer) != get_domain(document.URL))
		{
			// AGGIORNAMENTO COOKIE
			var dati_cookie = getCookie(nome_cookie).split("#|#");

			var sito			 = get_domain(document.URL);
			var pagina			 = pagename;
			var referer_origine	 = dati_cookie[0];
			var data_cookie		 = dati_cookie[1];
			var ora_cookie		 = dati_cookie[2];
			var id_cookie		 = dati_cookie[3];
			var dominio			 = dati_cookie[4];
			var referer_finale;
			
			//aggiorno il referer finale e le visite
			if (!document.referrer)
				referer_finale = referer_origine+'#|#';
			else
				referer_finale = document.referrer+'#|#';

			var visite_precedenti= dati_cookie[6]+1;

			var new_value = referer_origine+'#|#'+data_cookie+'#|#'+ora_cookie+'#|#'+id_cookie+'#|#'+dominio+'#|#'+referer_finale+'#|#'+visite_precedenti;
			set_cookie(nome_cookie, new_value, termine, "/", null, false);

			// aggiornamento tabella visite
			if (window.XMLHttpRequest)
			{
				req = new XMLHttpRequest();
				req.open('get' , 'http://'+sito+'/'+'proxy_traceup.php?azione=visita&sito='+sito+'&referer_origine='+referer_origine+'&id_cookie='+id_cookie+'&' , true);
				req.send(null);
			}
			//CHIAMATA PER IE6
			else if (window.ActiveXObject)
			{
				req = new ActiveXObject("Microsoft.XMLHTTP");
				if (req) {
					req.open('get' , 'http://'+sito+'/'+'proxy_traceup.php?azione=visita&sito='+sito+'&referer_origine='+referer_origine+'&id_cookie='+id_cookie+'&' , true);
					req.send();
				}				
			}
		}
		else
		{
			//LETTURA COOKIE
			var dati_cookie = getCookie(nome_cookie).split("#|#");
			var referer_origine	 = dati_cookie[0];
			var data_cookie		 = dati_cookie[1];
			var ora_cookie		 = dati_cookie[2];
			var id_cookie		 = dati_cookie[3];
			var dominio			 = dati_cookie[4];
			var referer_finale	 = dati_cookie[5];
			var visite_precedenti= dati_cookie[6];
		}
	}

	//CONTROLLO CONVERSIONE
	if (window.XMLHttpRequest)
	{
		req = new XMLHttpRequest();
		req.onreadystatechange = function() {
			if (req.readyState == 4) { 
				if (req.status == 200) { 
					var conversione_avvenuta = req.responseText; // ----> 0 / 1

					//AZZERAMENTO CONTATORE VISITE (aggiornamento cookie)
					if (conversione_avvenuta)
					{
						set_cookie(nome_cookie, referer_origine+"#|#"+data_cookie+"#|#"+ora_cookie+"#|#"+id_cookie+"#|#"+dominio+"#|#"+referer_finale+"#|#"+"0", termine,'/', null, false);
					}
				}
			}
		};

		req.open('get' , 'http://'+sito+'/'+'proxy_traceup.php?azione=controllo_conversione&sito='+sito+'&pagina='+pagina+'&referer_origine='+referer_origine+'&data='+data_cookie+'&ora='+ora_cookie+'&id_cookie='+id_cookie+'&dominio='+dominio+'&referer_finale='+referer_finale+'&visite_precedenti='+visite_precedenti+'&' , true);
		req.send(null);
	}
	//CHIAMATA PER IE6
	else if (window.ActiveXObject)
	{
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req) {
			req.onreadystatechange = function() {
				if (req.readyState == 4) { 
					if (req.status == 200) { 
						var conversione_avvenuta = req.responseText; // ----> 0 / 1

						//AZZERAMENTO CONTATORE VISITE (aggiornamento cookie)
						if (conversione_avvenuta)
						{
							set_cookie(nome_cookie, referer_origine+"#|#"+data_cookie+"#|#"+ora_cookie+"#|#"+id_cookie+"#|#"+dominio+"#|#"+referer_finale+"#|#"+"0", termine,'/', null, false);
						}
					}
				}
			};
			req.open('get' , 'http://'+sito+'/'+'proxy_traceup.php?azione=controllo_conversione&sito='+sito+'&pagina='+pagina+'&referer_origine='+referer_origine+'&data='+data_cookie+'&ora='+ora_cookie+'&id_cookie='+id_cookie+'&dominio='+dominio+'&referer_finale='+referer_finale+'&visite_precedenti='+visite_precedenti+'&' , true);
			req.send();
		}			
	}
}
function get_domain(url)
{
	url = url.replace("http://","");
	var array = url.split("/");

	return array[0];
}

//CHIAMATA FUNZIONE PRINCIPALE
traceup(location.pathname);