/*
	GeCPoT - Gestione Community e Portali Tematici (Sviluppo Asp+Xml)
	Versione 0.8 - Codificato da Lord Xml per 3pix Studio (http://www.3pix.it)
	ARCHIVIO FUNZIONI JAVASCRIPT: archivio completo delle funzioni per la gestione di finestre di sistema, creazione di effetti visivi, creazione calendari, caricamento di oggetti Ajax.
*/



// AJAX: variabili globali per il caricamento di oggetti Ajax
var gpt_xmlHttp;
var gpt_ajaxObj;



/*
	CARICA CONTENUTI: carica una sequenza di contenuti all'interno dei relativi elementi della pagina.
	Utilizza singole chiamate ajax appoggiandosi alla funzione gpt_caricaContenutoAjax.
*/

function gpt_caricaContenutiAjax(sequenza)
{
	//alert('2222'+ sequenza)
	var sequenzaControllo = sequenza;
	var sequenzaCorrente = "";
	var bersaglioCorrente = "";
	var metodoCorrente = "";
	var indirizzoCorrente = "";
	var caricaSuccessivo = true;
	// inserisci il carattere "," a fine sequenza nel caso in cui non sia presente
	if (sequenzaControllo.substr(sequenzaControllo.length - 1, 1) != ",")
	{	
		sequenzaControllo = sequenzaControllo + ",";
		
	}
	// ricava i parametri per il lancio della chiamata ajax
	sequenzaCorrente  = sequenzaControllo.substring(0, sequenzaControllo.indexOf(","));
	bersaglioCorrente = sequenzaCorrente.substring(0, sequenzaCorrente.indexOf("["));
	metodoCorrente = sequenzaCorrente.substring(sequenzaCorrente.indexOf("[") + 1, sequenzaCorrente.indexOf("|")).toUpperCase();
	indirizzoCorrente = sequenzaCorrente.substring(sequenzaCorrente.indexOf("|") + 1, sequenzaCorrente.indexOf("]"));
	//alert(sequenzaControllo + ' : ' + bersaglioCorrente + ' : ' + metodoCorrente +' : '+indirizzoCorrente )
	// verifica se non è stata effettuata in precedenza una chiamata ajax o in caso contrario verifica se la chiamata precedente è terminata
	if (gpt_xmlHttp == null)
	{
		gpt_caricaContenutoAjax(bersaglioCorrente, indirizzoCorrente, metodoCorrente);
	}
	else
	{	
		if (gpt_xmlHttp.readyState == 4)
		{
			gpt_caricaContenutoAjax(bersaglioCorrente, indirizzoCorrente, metodoCorrente);
		}
		else
		{
			caricaSuccessivo == false;
		}
	}
	// aggiorna la sequenza di controllo e richiama la funzione se la sequenza o le chiamate ajax non sono ancora terminate
	if (caricaSuccessivo == true)
	{
		sequenzaControllo = sequenzaControllo.replace(sequenzaCorrente + ",", "");
	}
	if (sequenzaControllo != "")
	{	
		setTimeout("gpt_caricaContenutiAjax('" + sequenzaControllo + "')", 1000);	
	}
}



/*
	CARICA CONTENUTO: carica il contenuto generato da un file esterno all'interno dell'elemento bersaglio.
	In caso di mancato supporto degli oggetti e metodi necessari viene visualizzato un messaggio di errore.
	Parametri della funzione:
	1)	bersaglio			Codice identificativo del tag html che dovrà contenere i dati estratti dal file esterno. 
	2)	fileCercato		Indirizzo del file da caricare e "riversare" all'interno del tag bersaglio.
	3)	metodo				Metodo di trasmissione dei dati (GET o POST).
*/

function gpt_caricaContenutoAjax(bersaglio, fileCercato, metodo)
{	
	//alert(bersaglio + ' : ' + fileCercato + ' : ' + metodo )
	if (document.getElementById(bersaglio))
	{
		
		gpt_xmlHttp = gpt_GetXmlHttpObject();
		if (gpt_xmlHttp == null)
		{
			alert (gpt_messaggioNoSupportoAjax);
			return;
		}
		var url = fileCercato;
		gpt_ajaxObj = bersaglio;
		if (metodo.toUpperCase() == "POST")
		{
			var indirizzo = url.substring(0, url.indexOf("?"));
			var parametri = url.substring(url.indexOf("?") + 1);
			gpt_xmlHttp.onreadystatechange = gpt_stateChanged;
			gpt_xmlHttp.open(metodo, indirizzo, true);
			gpt_xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			gpt_xmlHttp.setRequestHeader("Content-length", parametri.length);
			gpt_xmlHttp.setRequestHeader("Connection", "close");
			gpt_xmlHttp.send(parametri);
		}
		else
		{
			gpt_xmlHttp.onreadystatechange = gpt_stateChanged;
			gpt_xmlHttp.open(metodo, url, true);
			gpt_xmlHttp.send(null);
		}
	}
}



/*
	CONTROLLA CAMPO: verifica la presenza di caratteri non consentiti all'interno del valore di un campo in un modulo HTML.
	La lista dei caratteri consentiti è definita all'interno del file "gpt_datiFunzioni.js".
	Passando un valore diverso da vuoto per il parametro "spazioNotificaErrori" si otterrà la visualizzazione dei messaggi all'interno di un qualunque tag della pagina (occorre appunto indicare l'id del tag di riferimento).
	Impostando il valore "svuotaSpazioNotificaErrori" su "true" si otterrà uno svuotamento del box dei messaggi di errore
	"valoreSuggerimento" indica il valore scritto all'interno del campo come suggerimento(che corrisponde al campo lasciato vuoto)
*/
function gpt_controllaCampo(idCampo, nomeCampo, tipoCampo, lunghezzaMax, lunghezzaMin, spazioNotificaErrori, svuotaSpazioNotificaErrori, valoreSuggerimento)
{
	if (document.getElementById(idCampo))
	{
		// recupera messaggi già inseriti o elimina i messaggi precedenti in base alla richiesta
		var messaggi = "";
		var utilizzaSpazioNotifica = false;
		if (document.getElementById(spazioNotificaErrori))
		{
			if (svuotaSpazioNotificaErrori == true)
			{
				document.getElementById(spazioNotificaErrori).innerHTML = "";
			}
			else
			{
				messaggi = document.getElementById(spazioNotificaErrori).innerHTML;
			}
			utilizzaSpazioNotifica = true;			
		}
		// definisci lunghezza massima e minima e preleva il valore del campo
		var lunghezzaMassima = lunghezzaMax;
		var lunghezzaMinima = lunghezzaMin;
		var valoreImmesso = document.getElementById(idCampo).value;
		var corretto = true;
		// valore suggerimento (controlla se l'utente ha effettivamente inserito qualcosa all'interno del campo)
		if (valoreImmesso != "" && valoreImmesso == (gpt_carattereAperturaSuggerimento + valoreSuggerimento + gpt_carattereChiusuraSuggerimento))
		{	
			valoreImmesso = "";
		}
		// controllo sulla lunghezza
		if (valoreImmesso.length < lunghezzaMinima)
		{
			corretto = false;
			if (valoreImmesso.length == 0)
			{
				messaggi = messaggi + " " + gpt_messaggioCampoVuoto.replace(/nomeCampo/, nomeCampo);
			}
			else
			{
				messaggi = messaggi + " " + gpt_messaggioCampoTroppoCorto.replace(/nomeCampo/, nomeCampo).replace(/minimoCaratteri/, lunghezzaMinima);
			}
		}
		if (valoreImmesso.length > lunghezzaMassima)
		{
			corretto = false;
			messaggi = messaggi + " " + gpt_messaggioCampoTroppoLungo.replace(/nomeCampo/, nomeCampo).replace(/massimoCaratteri/, lunghezzaMassima);
		}
		// creazione degli array di controllo per i caratteri determinato in base al tipo di campo
		var caratteriConsentiti = new Array();
		var caratteriObbligatori = new Array();
		switch(tipoCampo)
		{
			// cellulare (solo numeri senza spazi)
			case "cellulare":
				for (i = 0; i < 10; i++)
	      		{
					caratteriConsentiti[i] = gpt_caratteriCampoConsentiti[i]; 
	      		}
			break;
			// email (tutti le lettere e i numeri più alcuni simboli caratteri con chiocciola e punto obbligatori)
			case "email":
				for (i = 0; i < 72; i++)
	      		{
					caratteriConsentiti[i] = gpt_caratteriCampoConsentiti[i]; 
	      		}
	      		caratteriConsentiti[72] = gpt_caratteriCampoConsentiti[73];
	      		caratteriConsentiti[73] = gpt_caratteriCampoConsentiti[79];
	      		caratteriConsentiti[74] = gpt_caratteriCampoConsentiti[85];
	      		caratteriConsentiti[75] = gpt_caratteriCampoConsentiti[86];
	      		caratteriConsentiti[76] = gpt_caratteriCampoConsentiti[75];
	      		caratteriObbligatori[0] = gpt_caratteriCampoConsentiti[73];
	      		caratteriObbligatori[1] = gpt_caratteriCampoConsentiti[79];
			break;
			// chat 
			case "chat":
				for (i = 0; i < 89; i++)
	      		{
					caratteriConsentiti[i] = gpt_caratteriCampoConsentiti[i]; 
	      		}
			break;
			// generico o non specificato (tutti i caratteri disponibili tranne i simboli e parte della punteggiatura)
			default:
				for (i = 0; i < 72; i++)
	      		{
					caratteriConsentiti[i] = gpt_caratteriCampoConsentiti[i]; 
	      		}
	      		caratteriConsentiti[72] = gpt_caratteriCampoConsentiti[72];
	      		caratteriConsentiti[73] = gpt_caratteriCampoConsentiti[85];
	      		caratteriConsentiti[74] = gpt_caratteriCampoConsentiti[86];
			break;
		}
		// controllo caratteri consentiti: analisi della stringa carattere per carattere
		if (corretto == true)
		{
		  	var valoreAnalisi = valoreImmesso;
		  	var singoloCarattere;
		  	var compreso;
		  	var caratteriProibiti = "";
		  	var stringaDiSoliSpazi = true;
	    		while (valoreAnalisi.length > 0)
	    		{
		  		singoloCarattere = valoreAnalisi.substring((valoreAnalisi.length - 1), valoreAnalisi.length);
		  		compreso = false;
	      		for (i = 0; i < caratteriConsentiti.length; i++)
	      		{
	        			if (singoloCarattere == caratteriConsentiti[i])
	  				{
	  					compreso = true;
	  				}
	      		}
	  			if (compreso == false)
	  			{
	  				if (caratteriProibiti.indexOf(singoloCarattere) == -1 || (singoloCarattere == " " &&  caratteriProibiti.indexOf(gpt_stringaSostitutivaSpazio) == -1) || (singoloCarattere == "\r" &&  caratteriProibiti.indexOf(gpt_stringaSostitutivaInvio) == -1))
	  				{
		  				if (singoloCarattere == " ")
		  				{
		  					caratteriProibiti = caratteriProibiti +  " " + gpt_stringaSostitutivaSpazio;
		  				}
		  				else if (singoloCarattere == "\r")
		  				{
		  					caratteriProibiti = caratteriProibiti +  " " + gpt_stringaSostitutivaInvio;
		  				}
		  				else
		  				{
		  					caratteriProibiti = caratteriProibiti +  " " + singoloCarattere;
		  				}
		  			}
	  				corretto = false;
	  			}
	  			if (singoloCarattere != " ")
	  			{
	  				stringaDiSoliSpazi = false;
	  			}
	  			valoreAnalisi = valoreAnalisi.substring(0, (valoreAnalisi.length - 1));
	    		}
			if (corretto == false)
			{
				messaggi = messaggi + gpt_messaggioCampoCaratteriProibiti.replace(/nomeCampo/, nomeCampo).replace(/caratteriProibiti/, caratteriProibiti);
			}
		}
		// controllo stringa di soli spazi
		if (stringaDiSoliSpazi == true && valoreImmesso.length > 0)
		{
			messaggi = messaggi + gpt_messaggioCampoSoloSpazi.replace(/nomeCampo/, nomeCampo);
			corretto = false;
		}
		// controllo caratteri obbligatori
		if (caratteriObbligatori.length > 0)
		{
			var caratteriNecessari = "";
			for (i = 0; i < caratteriObbligatori.length; i++)
      		{
        			if (valoreImmesso.indexOf(caratteriObbligatori[i]) == -1)
        			{
        				caratteriNecessari = caratteriNecessari + " " + caratteriObbligatori[i];
        			}
      		}
      		if (caratteriNecessari != "")
      		{
      			messaggi = messaggi + gpt_messaggioCampoCaratteriNecessari.replace(/nomeCampo/, nomeCampo).replace(/caratteriNecessari/, caratteriNecessari);
      			corretto = false;
      		}
		}
		// ritorna valore funzione e notifica eventuali messaggi di errore
		if (corretto == false)
		{
			if (utilizzaSpazioNotifica == true)
			{
				if (document.getElementById(idCampo).name == 'name')
				{
					document.getElementById(spazioNotificaErrori).innerHTML = 'Inserisci il tuo nome e cognome per giocare<br />';
				}	
				else if (document.getElementById(spazioNotificaErrori))
				{
					document.getElementById(spazioNotificaErrori).innerHTML = messaggi;
				}
			}
			else
			{
				alert(gpt_eliminaHtml(messaggi));
			}
			return false;
		}	
		else
		{
			return true;
		}
	}
	else
	{
		return false;
	}
}



/*
	ELIMINA HTML: elimina il codice HTML da una stringa generica e restituisce il testo privo di tag.
*/
function gpt_eliminaHtml(testo)
{
	var testoSemplice = testo;
	var tag = "";
	while (testoSemplice.indexOf("<") > -1 && testoSemplice.indexOf(">") > -1 && testoSemplice.indexOf("<") < testoSemplice.indexOf(">"))
	{
		if (testoSemplice.indexOf("<") > -1 && testoSemplice.indexOf(">") > -1 && testoSemplice.indexOf("<") < testoSemplice.indexOf(">"))
		{
			tag = testoSemplice.substr(testoSemplice.indexOf("<"), (testoSemplice.indexOf(">") - testoSemplice.indexOf("<")) + 1);
			testoSemplice = testoSemplice.replace(tag, "");  
		}
	}
	return testoSemplice;
}



/*
	FINESTRA POPUP: finestra di sistema in modalit� popup.
	La funzione calcola automaticamente la dimensione e il posizionameto (centrale) della finestra.
	Parametri della funzione:
	1)	indirizzo		Indirizzo da visualizzare. 
*/

function gpt_finestraPopup(indirizzo)
{
	//opzioni = "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width=" + ((screen.availWidth / 4) * 3) + ", height=" + ((screen.availHeight / 4) * 3);
	var larghezza = (screen.availWidth / 4) * 3.5; 
	var altezza = (screen.availHeight / 4) * 3.5;
	var sposX = screen.availWidth - larghezza;
	sposX = sposX / 2; 
	var sposY = screen.availHeight - altezza;
	sposY = sposY / 2;
	opzioni = "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=no, width=" + larghezza + ", height=" + altezza + ", screenY=" + sposY + ", screenX=" + sposX;
	window.open(indirizzo, "_blank", opzioni);
}



/*
	GET SCROLL: restituisce lo spostamento verticale della pagina.
	La funzione viene utilizzata all'interno di "gpt_caricaFinestraSistema" per verificare lo spostamento verticale della finestra di sistema tenendo conto dello scroll della pagina.
*/

function gpt_getScrollXY()
{
	var scrOfX = 0, scrOfY = 0;
	if (typeof(window.pageYOffset) == 'number' )
	{
  		//Netscape compliant
  		scrOfY = window.pageYOffset;
  		scrOfX = window.pageXOffset;
	} 
	else if (document.body && (document.body.scrollLeft || document.body.scrollTop))
	{
  		//DOM compliant
  		scrOfY = document.body.scrollTop;
  		scrOfX = document.body.scrollLeft;
	}
	else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop))
	{
  		//IE6 standards compliant mode
  		scrOfY = document.documentElement.scrollTop;
  		scrOfX = document.documentElement.scrollLeft;
	}
	// return [scrOfX, scrOfY]
	return scrOfY;
}



/*
	INIZIALIZZA AJAX: crea un oggetto Ajax utilizzando i relativi metodi.
	Il codice della funzione è compatibile con tutti i principali browser.
*/

function gpt_GetXmlHttpObject()
{
	xmlHttp = null;
	try
	{
		xmlHttp = new XMLHttpRequest();
	}
	catch (e)
	{
		try
		{
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xmlHttp;
}



/*
	OPACITA: imposta l'opacità di un oggetto.
	La funzione viene utilizzata per creare semplici effetti di "rollover".
	Parametri della funzione:
	1)	oggetto		Valore dell'attributo id dell'elemento html della pagina sul quale si intende operare.
	2)	valore		Valore da assegnare al parametro opacit� dell'elemento bersaglio (valore compreso tra 1 e 100). 
*/

function gpt_impostaOpacita(oggetto, valore)
{
	document.getElementById(oggetto).style.MozOpacity = (valore/100);
	document.getElementById(oggetto).style.filter = "alpha(opacity=" + valore +")";
}



/*
	INVIA MODULO: verifica la presenza ed eventualmente invia un modulo HTML.
	Richiede in ingresso l'id del tag "form" di riferimento.
*/

function gpt_inviaModulo(codice)
{
	if (document.getElementById(codice))
	{
		document.getElementById(codice).submit();
	}
}



/*
	MARCA RIGA: crea effetto "rollover" sulla riga di una tabella.
	Parametri della funzione:
	1)	codiceRiga		Valore dell'attributo id dell'elemento <tr> della pagina sul quale si intende operare.
	2)	coloreRiga		Valore da assegnare alla propriet� "backgroundColor" dell'elemento <tr> selezionato.
*/

function gpt_marcaRiga(codiceRiga, coloreRiga)
{
	document.getElementById(codiceRiga).style.backgroundColor = coloreRiga;
	//alert(coloreRiga);
}



/*
	MOSTRA RICERCA: mostra o nasconde il menu per la ricerca veloce.
	Parametri della funzione:
	1)	mostra	Flag per determinare se aprire oppure chiudere gli strumenti di ricerca
*/
function gpt_mostraRicerca(mostra, contenitore) {
	if (mostra == true) {
		gpt_visualizzaElementi(false, "gpt_apriRicercaVeloce_" + contenitore + ",");
		gpt_visualizzaElementi(true, "gpt_ricercaVeloce_" + contenitore + "," + "gpt_chiudiRicercaVeloce_" + contenitore + ",");
	}
	else {
		gpt_visualizzaElementi(true, "gpt_apriRicercaVeloce_" + contenitore + ",");
		gpt_visualizzaElementi(false, "gpt_ricercaVeloce_" + contenitore + "," + "gpt_chiudiRicercaVeloce_" + contenitore + ",");
		
	}	
}



/*
	RICHIESTA CONFERMA: richiesta di conferma sull'invio di un modulo.
	La funzione visualizza una finestra di scelta tramite javascript per la selezione dell'azione da compiere.
	Parametri della funzione:
	1)	oggettoConf			Codice identificativo del modulo da inviare. 
	2)	messaggioConf		Messaggio da visualizzare nella finestra di selezione.
*/

function gpt_richiestaConferma(oggettoConf, messaggioConf)
{
	var conferma = confirm(messaggioConf);
	if (conferma == true)
	{
		document.getElementById(oggettoConf).submit();
	}
}



/*
	SCHEDA SOVRAPPOSIZIONE: carica una finestra sovrapposta a tutti gli altri elementi della pagina.
	La scheda viene automaticamente agganciata all'elemento "body" del documento.
*/
function gpt_schedaSovrapposizione(visibilita, larghezza, altezza, contenuto, modo)
{
	alert('11111111')
	// variabili di configurazione per la visualizzazione delle diverse sezioni della scheda
	var sfondoSuperioreSinistra = gpt_schedaSvrSfondoSuperioreSinistra;
	var sfondoSuperioreDestra = gpt_schedaSvrSfondoSuperioreDestra;
	var sfondoInferioreSinistra = gpt_schedaSvrSfondoInferioreSinistra;
	var sfondoInferioreDestra = gpt_schedaSvrSfondoInferioreDestra;
	var altezzaMinimaSuperiore = gpt_schedaSvrAltezzaMinimaSuperiore;
	var altezzaMinimaInferiore = gpt_schedaSvrAltezzaMinimaInferiore;
	var larghezzaMinimaSinistra = gpt_schedaSvrLarghezzaMinimaSinistra;
	var larghezzaMinimaDestra = gpt_schedaSvrLarghezzaMinimaDestra;
	// crea la scheda
	if (visibilita == true)
	{
		// se la finestra è stata creata precedentemente eliminala prima di procedere
		if (document.getElementById("gpt_schedaSovrapposizione"))
		{
			var scheda = document.getElementById("gpt_schedaSovrapposizione");
			document.getElementsByTagName("body")[0].removeChild(scheda);
		}
		// crea codice html per il contenuto della scheda
		var codiceHtml = "";
		var codiceContenuto = "";
		if (modo == "iframe")
		{
			codiceContenuto = codiceContenuto + "<iframe src='" + contenuto + "' style='width: " + (larghezza - (larghezzaMinimaSinistra + larghezzaMinimaDestra)) + "px; height: " + (altezza - (altezzaMinimaSuperiore + altezzaMinimaInferiore)) + "px;' frameborder='0' scrolling='auto'></iframe>";
		}
		else if (modo == "ajax")
		{
			codiceContenuto = codiceContenuto + "<div id='gpt_contenutoSchedaSovrapposizione'></div>";
		}
		else
		{
			codiceContenuto = contenuto;
		}
		// crea codice html e css completo per visualizzare il contenuto della scheda in sovrapposizione
		codiceHtml = codiceHtml + "<div id='gpt_schedaSovrapposizione' style='width: " + larghezza + "px; height: " + altezza + "px; position: absolute; top: 50%; left: 50%; margin:  -" + Math.round(altezza / 2) + "px 0 0 -" + Math.round(larghezza / 2) + "px; z-index: 10;'>\r";
		codiceHtml = codiceHtml + "<div class='gpt_superiore' style='width: " + larghezza + "px; height: " + altezzaMinimaSuperiore + "px;'>\r";
		codiceHtml = codiceHtml + "<div class='gpt_sinistra' style='float: left; width: " + larghezzaMinimaSinistra + "px; height: " + altezzaMinimaSuperiore + "px; background: url(" + sfondoSuperioreSinistra + ") left top no-repeat;'></div>\r";
		codiceHtml = codiceHtml + "<div class='gpt_destra' style='float: right; width: " + (larghezza - larghezzaMinimaSinistra) + "px; height: " + altezzaMinimaSuperiore + "px; background: url(" + sfondoSuperioreDestra + ") right top no-repeat;'></div>\r";
		codiceHtml = codiceHtml + "</div>\r";
		codiceHtml = codiceHtml + "<div class='gpt_inferiore' style='width: " + larghezza + "px; height: " + (altezza - altezzaMinimaSuperiore) + "px;'>\r";
		codiceHtml = codiceHtml + "<div class='gpt_sinistra' style='float: left; width: " + larghezzaMinimaSinistra + "px; height: " + (altezza - altezzaMinimaSuperiore) + "px; background: url(" + sfondoInferioreSinistra + ") left bottom no-repeat;'></div>\r";
		codiceHtml = codiceHtml + "<div class='gpt_destra' style='float: right; width: " + (larghezza - larghezzaMinimaSinistra) + "px; height: " + (altezza - altezzaMinimaSuperiore) + "px; background: url(" + sfondoInferioreDestra + ") right bottom no-repeat;'>\r";
		codiceHtml = codiceHtml + "<div style='width: " + (larghezza - (larghezzaMinimaSinistra + larghezzaMinimaDestra)) + "px; height: " + (altezza - (altezzaMinimaSuperiore + altezzaMinimaInferiore)) + "px;'>\r";
		codiceHtml = codiceHtml + codiceContenuto + "\r";
		codiceHtml = codiceHtml + "</div>\r";
		codiceHtml = codiceHtml + "</div>\r";
		codiceHtml = codiceHtml + "</div>\r";	
		codiceHtml = codiceHtml + "</div>";	
		// aggiungi scheda alla pagina (aggancia a "body")
		var contenutoDocumento = document.getElementsByTagName("body")[0].innerHTML;
		contenutoDocumento = codiceHtml + contenutoDocumento;
		document.getElementsByTagName("body")[0].innerHTML = contenutoDocumento; 
		// carica contenuto ajax se richiesto
		if (modo == "ajax")
		{
			gpt_caricaContenutiAjax("gpt_contenutoSchedaSovrapposizione[post|" + contenuto + "],");
		}
	}
	// elimina la scheda
	else
	{
		if (document.getElementById("gpt_schedaSovrapposizione"))
		{
			var scheda = document.getElementById("gpt_schedaSovrapposizione");
			document.getElementsByTagName("body")[0].removeChild(scheda);
		}
	}
}



/*
	CONTROLLA STATO: controlla lo stato dell'operazione in corso ed esegue le modifiche solo a caricamento terminato.
	La funzione verifica lo stato della transazione ajax e inserisce all'interno dell'oggetto bersaglio il messaggio di "caricamento in corso". 
	Viene utilizzata all'interno di "gpt_caricaContenutoAjax".
*/

function gpt_stateChanged() 
{ 
	if (gpt_xmlHttp.readyState == 4)
	{
		var contenutiRestituiti = gpt_xmlHttp.responseText;
		var contenutiFiltrati = contenutiRestituiti;
		var istruzioniJs = "";
		var stringaJs = "";
		var rightnow = new Date();
		var preseconds = rightnow.getSeconds;
		while (contenutiFiltrati.indexOf('<script type="text/javascript">') > -1 && (postseconds - preseconds) < 10)
		{
			var rightnow = new date();
			var postseconds = rightnow.getSeconds;
			stringaJs = "";
			stringaJs = contenutiFiltrati.substring(contenutiFiltrati.indexOf('<script type="text/javascript">'), (contenutiFiltrati.indexOf("</script>") + 9));
			contenutiFiltrati = contenutiFiltrati.replace(stringaJs, "");
			istruzioniJs = istruzioniJs + stringaJs.substring(31, stringaJs.indexOf("</script>"));
		}
		document.getElementById(gpt_ajaxObj).innerHTML = contenutiFiltrati;
		eval(istruzioniJs);
	}
	else
	{
		document.getElementById(gpt_ajaxObj).innerHTML = gpt_messaggioCaricamento;
	}
}



/*
	VISUALIZZA ELEMENTI: imposta la visibilit di uno o pi� elementi della pagina.
	Gli elementi trattati dovrebbero essere esclusivamente tag <div /> per ragioni dicompatibilit�.
	Parametri della funzione:
	1)	valore 			Flag per stabilire se mostrare oppure nascondere gli elementi selezionati.
	2)	elementi		Lista degli elementi da trattare separati dal carattere ";". Il punto e virgola deve necessariamente chiudere la stringa. 
	Esempio di lancio della funzione:
	gpt_visualizzaElementi(false, "el_1,el_2,el_3,")		Spegne gli elementi con id "el_1", "el_2" e "el_3".
	gpt_visualizzaElementi(true, "el_1,")					Accende l'elemento con id "el_1".
*/
function gpt_visualizzaElementi(valore, elementi)
{
	//alert('test')
	var listaElementi = elementi
	var elementoSelezionato;
	if (listaElementi.lastIndexOf(",") == (listaElementi.length - 1))
	{
  		while (listaElementi != "")
    		{
  			elementoSelezionato = listaElementi.substring(0, listaElementi.indexOf(","))
  			listaElementi = listaElementi.replace((elementoSelezionato + ","), "");
				if (document.getElementById(elementoSelezionato))
				{
  					if (valore == true)
  					{
  						tipoDiNodo = document.getElementById(elementoSelezionato).nodeName;
  						if (tipoDiNodo == "SPAN" || tipoDiNodo == "A")
  						{
  							document.getElementById(elementoSelezionato).style.display = "inline";
  						}
  						else
  						{
  							document.getElementById(elementoSelezionato).style.display = "block";
  						}
  					}
  					else
  					{
  						document.getElementById(elementoSelezionato).style.display = "none";
  					}
				}
    		}
	}	
}
