var winID_help = null;
var winID_valute = null;

function my_sleep(millisecondi)
{
    var now = new Date();
    var exitTime = now.getTime() + (millisecondi);
    while (true) {
        now = new Date();
            if (now.getTime() > exitTime) 
				return;
    }
}

function MyCambioValute()
{
	// E' lentissimo a caricarsi, quindi uso lo stesso trucco usato per il form e-mail per non ricaricare la finestra (vedi MyContattaci)
	var winID_valute = window.open ("", 
			'valuteWin','WIDTH=500, HEIGHT=450, TITLEBAR=DETTAGLI, alwaysRaised');
	if (winID_valute.location.href.indexOf("reg_valute")==-1) 
				winID_valute.location.href="reg_valute.php";
	winID_valute.focus();
}

function MyContattaci(stringa,nomesito) 
{
	// nomesito (cioe' "linguathai") devo passarlo perche'qui sono in un include file JS e quindi non posso inserire codice PHP
/*
	ATTENZIONE: il trucco fondamentale per far si che quando una finestra (aperta precedentemente con la window.open) non venga
	riaperta nuovamente quando ripasso da qui e' quello scoperto nel giugno 2010 e cioe' quello di chiamare la open con url vuoto.
	In questo modo se la window era gia' aperta, essa prende semplicemente il focus, se invece prima non c'era viene aperta una
	finestra vuota ma subito dopo io controllo, e se non c'e' dentro il file che voglio io glielo carico con assegnamento ad href.
	N.B.
	Il problema (risolto con trucco suddetto) si pone solo quando l'utente aveva aperto la window ma poi torna a lavorare sul sito,
	CAMBIA PAGINA NEL SITO, e poi ritorna alla pagina che aveva aperto la window e clicca di nuovo sul link (s invece non avesse cambiato
	pagina allora basterebbe il vecchio sistema (di BARCA) cioe' guardare il puntatore winID per sapere sel la finestra e' aperta o no).
*/
	var winID_contattaci = window.open ("", // QUESTO e' il trucco fondamentale: chiamare la window.open() con URL vuoto!
		'formWin','width=750, height=530, screenX=0, left=0, screenY=0, top=0, scrollbars=yes, alwaysRaised=yes, resizable=yes');

/* Il seguente eventuale assegnamento dell'url ad href ha l'effetto di caricare il file PHP, come fosse stato chiamato direttamente. */
	if (winID_contattaci.location.href.indexOf(nomesito)==-1) 
		winID_contattaci.location.href=stringa;

	winID_contattaci.focus();
}

function MyHelp(stringa)
{
	if (winID_help!=null && !winID_help.closed) {
		winID_help.close();
	}
	if (winID_help==null || winID_help.closed)
//		winID_help = window.open ('reg_help.php?PAR='+stringa, 'HelpWin','WIDTH=780, HEIGHT=700, TITLEBAR=DETTAGLI, scrollbars, alwaysRaised');
		winID_help = window.open ('reg_help.php?PAR='+stringa, 'HelpWin','WIDTH=780, HEIGHT=580, TITLEBAR=DETTAGLI, scrollbars, alwaysRaised');
	winID_help.focus();
}

function show_help_pagamento(elemento1,elemento2)
{
	var objs;
	var goes;
	
	if (document.all) { 
		divs = document.all.tags("DIV");
	}
	else if (document.getElementsByTagName) { 
	 	divs = document.getElementsByTagName("DIV");
	}

	goes = divs.length;

	for (i=0; i<goes; i++) {
		if (divs[i].id.substr(0,5)=="paga_") {
			if (elemento1=="SHOW_ALL_PAGA")
				divs[i].style.display=(divs[i].id=="paga_missing" ? "none" : "block");
			else if (divs[i].id!=elemento1 && divs[i].id!=elemento2)
				divs[i].style.display="none";
			else
				divs[i].style.display="block";
		}
	}
}

function gettoni_to_euro(p,paypal,valgettone)
{
	var res = "", car, prima;
	prima = p.value;
	for(i=0; i<p.value.length; i++)
	{
      car =	p.value.charAt(i);	
	  if ((car>="0")&&(car<="9"))
	  	res += car;
	}
	if(res != "")
		res=parseInt(res,10);	// Serve solo a eliminare gli eventuali "0" all'inizio
	if (String(res)!=prima) // Respingo eventuale segno meno o punto decimale
		p.value = res;
		
	pget = valgettone;
	spesa = res * pget;
	stringa = String(spesa);
	intero = parseInt(stringa,10);
	diff = spesa-intero;
	stringa = String(diff);
   	cent =	(diff!=0 ? stringa.charAt(2)+stringa.charAt(3) : "00"); 	
	document.form_acquisto.spesa_euro.value = intero;
	document.form_acquisto.spesa_cent.value = cent;

	if (paypal) {
		document.form_acquisto.quantity.value = res;
		document.form_acquisto.spesa_euro2.value = intero;
		document.form_acquisto.spesa_cent2.value = cent;
		document.form_acquisto.spesa_euro3.value = intero;
		document.form_acquisto.spesa_cent3.value = cent;
	}
}


function diverso_da_blank(s)
{
	var i;
	for (i=0; i<s.length; i++)
		if (s.charAt(i)!=' ' && s.charAt(i)!='\n' && s.charAt(i)!='\r')
			return true;
	return false;
}

function indagaEnter(e)	//e is event object passed from function invocation
{
	var characterCode;	// literal character code will be stored in this variable

	if (e && e.which) {	//if which property of event object is supported (NN4)
		e = e;
		characterCode = e.which; //character code is contained in NN4's which property
	}
	else {
		e = event;
		characterCode = e.keyCode; //character code is contained in IE's keyCode property
	}

	if (characterCode == 13) { //if generated character code is equal to ascii 13 (if enter key)
		return false; 
	}
	else {
		return true; 
	}
}

function sega_car_bad(Campo,anche_doppio_apice)
{
	var res, car, newcar, refr;
	res = "";
	refr = 0;
	for(i=0; i<Campo.value.length; i++)
	{
      car =	Campo.value.charAt(i);	
	  if (car!="<" && car!=">" && (anche_doppio_apice!=0 ? (car!="\"") : true) &&
	                              (anche_doppio_apice==2 ? (car!="&") : true)) 
	  // Verrebbero scambiati per tag HTML, segando tutto il resto che segue!
	  	res += car;
	  else {
	  	refr=1;
		switch (car) {
			case "&":
				newcar = (anche_doppio_apice==2 ? " " : car); // ATTENZIONE: VA GESTITO anche il car "&"
				break;
			case "<":
				newcar="[";
				break;
			case ">":
				newcar="]";
				break;
			case "\"":
				newcar = (anche_doppio_apice==1 ? "'" : car);
				break;
		}
	  	res += newcar;
	  }
	}
	if (refr)
    	Campo.value = res;
}

function sega_spazi_iniziali_e_finali(stringa)
{
	// PRIMA FASE: sego gli spazi iniziali.
	for (i=0; i<stringa.length; i++)
	{
    	car = stringa.charAt(i);	
		if (car!=" ") break;
	}
	if (i==stringa.length)
		stringa="";
	else
		stringa=stringa.substr(i);

	// SECONDA FASE: sego gli spazi finali.
	for (i=stringa.length-1; i>=0; i--)
	{
    	car = stringa.charAt(i);	
		if (car!=" ") break;
	}
	if (i<0)
		stringa="";
	else
		stringa=stringa.substr(0,i+1);
	
	return stringa;
}

// Ottima procedura di Dony, collaudatissima da anni (segue regole internazionali, ad esempio non accetta "mik@a.it" o "mik@boh.a")
function validateEmailBase(stringa) 
{
    var re = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
    if (re.test(stringa))
        return true;
    return false;
    // alert("l'eMail \"" + theForm.news.value + "\" NON \u00c8 valida!");	// Interessante credo sia la e accentata (forse potrebbe
}



// ~~~~~~~~~~~~~~~~~~~~~~~~~~~ INIZIO FUNZIONI PER LA GESTIONE PSAVE_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
var PSAVE_timer_SLOW;
var PSAVE_timer_FAST;
var PSAVE_avviso;
var PSAVE_uscita;
var PSAVE_time_first;
var PSAVE_time_after;
var PSAVE_user_lady;
var PSAVE_local_first;
var PSAVE_local_after;
var PSAVE_local_dim;

function PSAVE_StartTickLento()
{
	PSAVE_timer_SLOW = setInterval("PSAVE_promemoria_salvataggio()",PSAVE_time_first*1000);
}

function PSAVE_salva_first()
{
	// Salvo la situazione iniziale in first[]
	PSAVE_local_first = new Array();
	PSAVE_local_first = PSAVE_foto_variabili();
	PSAVE_local_dim = PSAVE_local_first.length;
}

function PSAVE_foto_variabili()
{
	// Salvo la situazione finale in after[]
	vettore = new Array();
	k=0;
	for (var j = 0; j < document.forms.length; j++) {  
		for (var i = 0; i < document.forms[j].elements.length; i++) {  
			if ( document.forms[j].elements[i].type 			== "text" ||
				 document.forms[j].elements[i].type 			== "textarea" ||
				 document.forms[j].elements[i].type.substr(0,6) == "select") {
					vettore[k]=document.forms[j].elements[i].value;
					k++;
			}
		}
	}
	return vettore;
}

function PSAVE_verifica_cambiamenti()
{
	// Salvo la situazione finale in after[]
	PSAVE_local_after = new Array();
	PSAVE_local_after = PSAVE_foto_variabili();
	if (PSAVE_local_dim != PSAVE_local_after.length)
		return true;

	//confronta i due vettori per vedere se ci sono state modifiche
	for (var i = 0; i < PSAVE_local_dim; i++) {
		if (PSAVE_local_first[i] != PSAVE_local_after[i])
			return true;
	}
	
	// Se arrivo qui significa nessun cambiamento nelle variabili
	return false;
}

function PSAVE_promemoria_salvataggio()
{
	cambiamenti = PSAVE_verifica_cambiamenti();
	if (cambiamenti) {
		clearInterval(PSAVE_timer_SLOW);
		if (PSAVE_user_lady) { 
			// DRASTICO: PRIMA CHE SCADA LA SEESIONE, ESEGUO IL SALVATAGGIO AUTOMATICO!
			PSAVE_salvataggio_automatico();
			return;
		}
		else {
			alert(PSAVE_avviso);
			PSAVE_timer_SLOW = setInterval("PSAVE_promemoria_salvataggio()",PSAVE_time_after*1000);
		}
	}
	else {
/*	PRIMA PROVA: Non va bene perche' nel tempo genera infinite query al DB!
		location.reolad(); 

	SECONDA PROVA: Va abbastanza bene ma complica la gestione dei pulsanti di salvataggio
		for (var j = 0; j < document.forms.length; j++) {  
			for (var i = 0; i < document.forms[j].elements.length; i++) {  
				if ( document.forms[j].elements[i].type == "text" ||
				 document.forms[j].elements[i].type == "textarea" ||
				 document.forms[j].elements[i].type.substr(0,6) == "select")
					document.forms[j].elements[i].disabled=true;
			}
		}
	
	STRADA FINALE DECISA:
*/
		window.location.href=PSAVE_uscita;	
	}
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FINE FUNZIONI PER LA GESTIONE PSAVE_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function Toggle_Div(item) { 
   obj=document.getElementById(item);
   visible=(obj.style.display!="none")
   if (visible) {
     obj.style.display="none";
   } else {
      obj.style.display="block";
   }
}

function Mostra_Div(mostra) {
   obj1=document.getElementById("homepage");
   obj2=document.getElementById("bandiere");
   if (mostra) {
	   obj1.style.display="block";
	   obj2.style.display="block";
   }
   else {
	   obj1.style.display="none";
	   obj2.style.display="none";
   }
}

function Mostra_Mattoni(mostra,nome) {
   obj1=document.getElementById(nome);
   obj2=document.getElementById(nome+"_rev");
   obj3=document.getElementById(nome+"_descr");
   if (mostra) {
	   obj1.style.display="none";
	   obj2.style.display="block";
   }
   else {
	   obj1.style.display="block";
	   obj2.style.display="none";
   }
   obj3.style.display="block";
}

/* **************************************************************************************************************************
Le seguenti proc. sono quelle che erano servite inizialmente per gestire l'effetto "pulsantoni reverse" (verdi),
fatto con le 'roll bar images" create da Dreamweaver, nella prima versione della nuova grafica di Linguatahi. 
Sono procedure funzionanti e che potrebbero essere utili per il futuro, pero'...
ATTENZIONE: 
Queste procedure cambiano l'immagine a video tramite l'approccio di ri-assegnarla con un'istruzione tipo:
	document.immagine.src = "/mio_path/mia_immagine.jpg"
Cioe' assegnare una nuova immagine al campo "src" di un oggetto immagine di JS.
Questo approccio, che avevo gia' usato anche nella demo webcam del sito BARCA (vedi barca/barca/camera.php alla riga 110), 
e' interessante ma ha il "difetto" che rischia di ricaricare a volte (spesso/continuamente?) l'immagine remota dal sito,
rallentando quindi notevolmente il tutto.
La cosa aveva senso in un ottica  tipo la webcam, che appunto vuole un modo rapido per ricaricare continuamente un'immagine
che cambia nel tempo, ma non ha senso (secondo me) nelle roll bar, almeno come me le fa fare Dreamweaver col suo automatismo,
perche' rischio che le immagini vengano ricaricate spesso da disco (il che non ha senso per immagini che non cambiano 
"run time", ma che invece sono fisse, come nel caso dei pulsantoni reverse verdi di Linguathai)
Questo di sicuro accadeva nel file index di linguathai, quando avevo usato queste procedure, perche' il passaggio dal immagine
bianca a quella verde era lentissimo e non solo all'inizio, a volte anche dopo minuti che ci giocavi.
Altre volte invece era velocissimo, non ho capito bene, ma credo di aver capito che quando era lento era perche' ricaricava dal remoto
Che l'istruzione immagine.src = "immagine.jpg" possa ricaricare dal remoto e' dimostrato appunto dall'uso della demo webcam,
che funzionava cosi': uno script di Linux mi copiava ogni tot una nuova immagine su una cartella del sito e io la leggevo 
e la visualizzavo proprio con quella istruzione nella pagina del sito.
*/

function MM_swapImage()
{ //v3.0
	var i,j=0,x,a=MM_swapImage.arguments; 
	document.MM_sr=new Array; 
	for (i=0; i<(a.length-2); i+=3)
		if ((x=MM_findObj(a[i]))!=null)	{
			document.MM_sr[j++]=x;
			if (!x.oSrc)
				x.oSrc=x.src;
			x.src=a[i+2];
		}
}

function MM_swapImgRestore() 
{ //v3.0
  var i,x,a=document.MM_sr; 
  for (i=0; a && i<a.length && (x=a[i]) && x.oSrc; i++)
  	x.src=x.oSrc;
}

function MM_preloadImages() 
{ //v3.0
  var d=document; 
  if (d.images) {
  	if (!d.MM_p) 
		d.MM_p=new Array();
  	 var i,j=d.MM_p.length,a=MM_preloadImages.arguments; 
	 for (i=0; i<a.length; i++)
  	 	 if (a[i].indexOf("#")!=0) {
		 	d.MM_p[j]=new Image; 
			d.MM_p[j++].src=a[i];
		}
	}
}

/* Nella onload del body chiamavo questa: 
function pre_carica_tutte_immagini_rev()
{
	MM_preloadImages (
		'immagini/home/hp_trans_doc_rev.jpg',
		'immagini/home/hp_corsi_rev.jpg',
		'immagini/home/hp_missioni_rev.jpg',
		'immagini/home/hp_tatuaggi_rev.jpg',
		'immagini/home/hp_trans_email_rev.jpg',
		'immagini/home/hp_futuri_rev.jpg',
		'immagini/home/hp_doc_certif_rev.jpg',
		'immagini/home/hp_interpreti_rev.jpg'
	);
}
*/


