//***** inizio della classe cookie **********************************************************************
/*
La classe serve ad avere una gestione univoca di ogni singolo
cookie lasciato dal browser
Ogni oggetto cookie istanziato si riferirà dunque solo al cookie
passatogli come primo parametro nel costruttore
Una volta istanziato l'oggetto, non serve più pare riferimento al nome del
cookie stesso per recuperare il volare salvato

Nota sui cookie:
ogni coppia nome=valore deve essere accompagnata da una data di scadenza, se si
vuole che il cookie venga salvato su disco.
Se si inserisce una coppia nome=valore senza data di scadenza, il cookie sarà
temporaneo e non verrà salvato su file. Il valore sarà comunque presente 
nell'oggetto cookie istanziato (quindi in document.cookie) fino alla chiusura della pagina
*/


/*
costruttore dell'oggetto cookie
accetta in ingresso i parametri del cookie
name è il nome della variabile da memorizzare
i valori che non devono essere passati vanno impostati a null
costruttore:
name: nome del cookie
expires: si aspetta un oggetto date() contenente una data di scadenza
path - domain - secure: parametri del cookie
*/
function cookieNet(name,expires,path,domain,secure)
	{
	//proprietà dell'oggetto
	this.varValue=""; 	//valore del cookie intero
	this.varName=name; 	//nome del valore memorizzato
	this.expString= ((expires==null) ? "" : ("; expires="+ expires.toGMTString()));	//durata del cookie
	this.pathString = ((path==null) ? "" : ("; path=" + path));			//percorso per il cookie
	this.domainString =((domain==null) ? "" : ("; domain="+domain));		//dominio del cookie
	this.secureString= ((secure==true) ? "; secure" : "");				//cookie sicuro?
	this.deleted=((document.cookie.indexOf(name)!=-1) ? false : true)       //controlla se il coockie è presente	
	
	//metodi dell'oggetto
	this.getVal=getVal; 
	this.setVal=setVal;
	this.delcookie=delcookie;
	this.isset=isset;
	this.getName=getName;
	}

/*
funzione di recupero del valore memorizzato
*/
function getVal()
	{
	if (this.deleted) return null
	
	offset=this.varName.length+1;
	this.varValue=new String(document.cookie+";");
	
	inizio=this.varValue.indexOf(this.varName);

	if (inizio!=-1) 
		{
		fine=this.varValue.indexOf(";",inizio)
		result=this.varValue.substring((inizio+offset),fine);
		return unescape(result);
		}
	else return null
	}

/*
funzione di impostazione del valore del cookie
*/
function setVal(value)
	{
	this.deleted=false
	this.varValue=value;
	document.cookie=this.varName+"="+escape(value)+this.expString+this.pathString+this.domainString+this.secureString;
	}

/*
funzione di cancellazione: imposta la data di scadenza del cookie 3gg addietro, così il browser lo cancella
*/
function delcookie()
	{
	this.deleted=true;
	expDate= new Date();
	expDate.setTime(expDate.getTime()-3*24*60*60*1000);
	expDate.toGMTString();
	document.cookie=this.varName+"=null"+"; expires="+expDate.toGMTString()
	}

/*
ritorna true se il cookie è presente
*/
function isset()
	{
	return !this.deleted;
	}
/*
ritorna il nome del cookie (che è il primo argomento del costruttore)
*/
function getName()
	{
	return this.varName;
	}

//***** fine della classe cookie **********************************************************************


//***** inizio della classe expDate **********************************************************************
/*
Classe per il calcolo della scadenza dei cookie
il metodo get ritorna un oggetto Date() contenente la data di scadenza calcolata partendo
dalla data di sistema ed aggiungendo il tempo totale passato nel costruttore dell'oggetto
*/
function expDate(mesi,giorni,ore,minuti)
	{
	//proprietà dell'oggetto
	this.mesi=mesi;
	this.giorni=giorni;
	this.ore=ore;
	this.minuti=minuti;
	
	//metodi dell'oggetto
	this.get=get;
	}
	
function get()
	{
	var mesi=this.mesi*30*24*60*60*1000;
	var giorni=this.giorni*24*60*60*1000;
	var ore=this.ore*60*60*1000;
	var minuti=this.minuti*60*1000;
	var result=new Date();
	result.setTime(result.getTime()+mesi+giorni+ore+minuti);
	return result;
	}	

//***** fine della classe expDate **********************************************************************

