// JavaScript Document
/*////////////////////////////////////////////////////////////////////////////////////////////
	Copyright (c) 2010-2011 AbZoe (http://www.abzoe.com)
////////////////////////////////////////////////////////////////////////////////////////////*/
var DOM=(document.getElementById&&!document.all)?1:0; // rappresenta i browser compatibili con il DOM 
var IE=(document.all&&document.getElementById)?1:0;
// le seguenti tre costanti vengono usate anche delle funzioni di sostituzione delle immagini
var Disabilitato=7; 
var Abilitato=5;
var Premuto=6;
// le seguenti due costanti vengono usate per contestualizzare i comandi letti da database alla situazione
// reale (viene usata la funzione replace dal JavaScript)
var costParametro1='*uno*'; 
var costParametro2='*due*';
var costParametro3='*tre*';
var costParametro4='*quattro*';
var costParametro5='*cinque*';
var costParametro6='*sei*';

var costParametri = new Array(11);
costParametri[1]='*uno*';
costParametri[2]='*due*';
costParametri[3]='*tre*';
costParametri[4]='*quattro*';
costParametri[5]='*cinque*';
costParametri[6]='*sei*';
costParametri[7]='*sette*';
costParametri[8]='*otto*';
costParametri[9]='*nove*';
costParametri[10]='*dieci*';
		
var costNoControllo=1;
var costControlloMin=2;
var costControlloMax=3;
var costControlloRange=4;
var costNull="NULL";
var costMenuVoceNuoValore="menuVoceNuoVal";
var costConSpazi=false; // usato nei controlli
var costSenzaSpazi=true; // usato nei controlli
var costIntero=true; // usato nei controlli
var costNonIntero=false; // usato nei controlli quando il numero può essere sia intero che non intero
var costSi='S'; // costanti utilizzate anche per raffronto con le costanti lette da database
var costNo='N';
var costElimina='E';
// costanti per la finestra conferma
var costConfermaSi=true;
var costConfermaNo=false;
var costConfermaAnnulla="annulla";
// costanti per lo stato delle pagine
var costModificato=0;
var costPronto=1;
// -------------------------
var costTBAbilitato=5;
var costTBAttivo=6;
var costTBDisattivato=7;
// ------------------------ inizio VARIABILI per lo scorrimento del testo
var numerotimer=0;
var tempo=25;
var passo=4;
var passoRotella=10;
// ---------------------------
var tempoPopUp=13000;
// ------------------------ fine VARIABILI per lo scorrimento del testo
// costanti per il semaforo
var costSemaforoRosso='R';
var costSemaforoGiallo='G';
var costSemaforoVerde='V';
// ---------------------------
var costRotazioneImmaginiFadeIn=1;
var costRotazioneImmaginiMostra=2;
var costRotazioneImmaginiFadeOut=3;
var paginaAllungabile=true;
var valoreAllunga=5;
var valoreSposta=6;
var costCifreNumeroCaselle=3;
// ------------------------------
var costProssimo="prossimo";
var costPrecedente="precedente";


function deselezionaCheckbox(nome, valore){
	// questa funzione legge tutti i checkbox del modulo corrente e li deseleziona se
	// - hanno il nome uguale alla variabile nome
	// e 
	// - hanno il valore diverso dalla variabile valore
	var i=0;	
		for (i=0;i<document.forms[0].length;i++){
			if (document.forms[0].elements[i].type=='checkbox'){
			  if (document.forms[0].elements[i].name==nome){
			  	if ((document.forms[0].elements[i].valore!=valore) && (document.forms[0].elements[i].checked)) { 
					// ha trovato un checkbox da deselezionare
					document.forms[0].elements[i].checked=false;
				}
			  }	
			}
		} // for	
}
function array2D(righe,colonne) // crea un array a due dimensioni
{ 
var i; 
var j; 
var a;
   a = new Array(righe); 
   for (i=0; i < righe; i++) 
   { 
       a[i] = new Array(colonne); 
       for (j=0; j < colonne; j++) 
       { 
           a[i][j] = ""; 
       } 
   } 
   return(a); 
} 
function array3D(righe,colonne, terzaDimensione) // crea un array a tre dimensioni
{ 
var i; 
var j; 
var k;
var a;
   a = new Array(righe); 
   for (i=0; i < righe; i++) 
   { 
       a[i] = new Array(colonne); 
       for (j=0; j < colonne; j++) 
       {
	   		a[i][j] = new Array(terzaDimensione);
			for (k=0; k < terzaDimensione; k++)
			{
				a[i][j][k] = "";
			} 
       } 
   } 
   return(a); 
} 

function disabilita(cosa, classe){ // questa funzione imposta lo stato disabled=true all'oggetto con
							// id uguale alla variabile cosa
				// se viene passata la variabile classe (nome di una classe del foglio di stile)
				// viene applicata questa, altrimenti una di default
var a="";
	a=oggetto(cosa);
	a.disabled=true;
	if (classe){
		a.className=classe;
	} else {
		a.className='casellaDis';
	}
}
function disabilitato(cosa){ // questa funzione legge lo stato disabled dell'oggetto con
							// id uguale alla variabile cosa
	return oggetto(cosa).disabled;
}
function abilita(cosa){ // questa funzione imposta lo stato disabled=false all'oggetto con
							// id uguale alla variabile cosa
var a="";
	a=oggetto(cosa);
	a.disabled=false;						
}
/*////////////////////////////////////////////////////////////////////////////////////////////
	Copyright (c) 2010-2011 AbZoe (http://www.abzoe.com)
////////////////////////////////////////////////////////////////////////////////////////////*/
function solaLettura(cosa, classe){ // questa funzione imposta lo stato di sola lettura all'oggetto con
							// id uguale alla variabile cosa
				// se viene passata la variabile classe (nome di una classe del foglio di stile)
				// viene applicata questa, altrimenti una di default							
var a="";
	a=oggetto(cosa);
	a.readOnly=true;
	if (classe){
		a.className=classe;
	} else {
		a.className='casellaDis';
	}	
}

function oggettoForm(id){

var i=0;

	for (i=0;i<=document.forms[0].length;i++){
		 if (document.forms[0].elements[i].id==id) {
				return i;
		}
	} 
}
function impostaStatoPagina(nuovoStato,gestioneStato){
var a;
	// if (arguments.length>1) { 
	//	parent.gestisciStato=gestioneStato;
	// }
	if (statoPagina!=nuovoStato){
		statoPagina=nuovoStato;
		switch (nuovoStato) {
			case costModificato:
				// cambiaStatoToolbar('',Abilitato,Abilitato);
				// a=oggetto('tot');
				// if (a){ a.value=""; }				
				impostaStatoPulsante('salva',Abilitato);
				impostaStatoPulsante('annulla',Abilitato);
				aggiornaStatoToolbar();
				break;
			case costPronto:
				// cambiaStatoToolbar('',Disabilitato,Disabilitato);
				break;
		} // switch
	} // if	
}
function paginaModificata(padre){
	/* if (padre) {
		if ((parent.statoPagina==costModificato)&&(parent.gestisciStato)){
			return true;
		} else {
			return false;
		}	
	} else {	*/
		if ((statoPagina==costModificato)&&(gestisciStato)){
			return true;
		} else {
			return false;
		}
	// }
}
function paginaPrincipale(){ // viene chiamata dalle funzioni per stabilire se sono state chiamata dalla pagina principale
	var indirizzo=document.URL;
	
	if (indirizzo.indexOf('/01.php')<0) { // funzione NON chiamata dalla pagina principale	
		return false;
	} else {
		return true;
	}
}
/* function indicePulsante(quale){ // "quale" è il nome del pulsante
								// restituisce l'indice dell'array che contiene lo stato del pulsante "quale"
	var i=0;
	
	if (!paginaPrincipale()) { // funzione NON chiamata dalla pagina principale
		for (i=0; (i<parent.AB_statoPulsanti.length) && (parent.AB_statoPulsanti[i]!=quale); i++);	
	} else {
		for (i=0; (i<AB_statoPulsanti.length) && (AB_statoPulsanti[i]!=quale); i++);
	}
	return i+1;
} */

function statoPulsante(quale){ // "quale" è il nome del pulsante
	var i=0;
			
	i=indicePulsante(quale);
	if (!paginaPrincipale()) { // funzione NON chiamata dalla pagina principale
		return parent.AB_statoPulsanti[i];
	} else {
		return AB_statoPulsanti[i];
	}
}

function impostaStatoPulsante(quale,nuovoStato){ // "quale" è il nome del pulsante
										// "nuovoStato" è una delle costanti che definiscono lo stato dei pulsanti
	var i=0;
			
	i=indicePulsante(quale);
	if (!paginaPrincipale()) { // funzione NON chiamata dalla pagina principale
		parent.AB_statoPulsanti[i]=nuovoStato;
	} else {
		AB_statoPulsanti[i]=nuovoStato;
	}
}

function impostaPulsante(quale,nuovoStato){ // "quale" è il nome del pulsante
											// "nuovoStato" è una delle costanti che definiscono lo stato dei pulsanti
						// questa funzione viene usata dalle pagine menù perchè oltre a cambiare lo stato del pulsante
						// modifica anche lo stato degli altri pulsanti di quel menù
	var i=0;
	var cont=0;
	var x=0;
	var xx;
	
	i=indicePulsante(quale);
	if (nuovoStato){
	} else {
		nuovoStato=ABToolbar[i][2];
	}
	x=oggetto('tb'+i);
	x.src=ABToolbar[i][nuovoStato];
	ABToolbar[i][2]=nuovoStato;
}

function oggetto(quale){
	var varfunctionoggetto=0;
	var varfunctionoggetto2=0;

/*	if (!DOM) { // IE 4 o 5 o 6
			varfunctionoggetto=document.all[quale];
			if (varfunctionoggetto == undefined) { // prova nella finestra parent
				varfunctionoggetto=parent.document.all[quale];
				if (varfunctionoggetto == undefined) { // prova nell'iframeRiquadro2
				varfunctionoggetto2=oggetto('iframeRiquadro2');
					varfunctionoggetto=varfunctionoggetto2.contentWindow.document.all[quale];
				}
			}			
	} else {  */
	    	varfunctionoggetto=document.getElementById(quale);
			if (varfunctionoggetto == undefined) { // prova nella finestra parent
				varfunctionoggetto=parent.document.getElementById(quale);
			}
//	}
	return varfunctionoggetto;
} // function oggetto

function togliToolbar(){ // se si sta utilizzando un browser diverso da Internet Explorer cerca di chiudere le toolbar
	// codice per Mozilla 
	if (window.menubar.visible) { window.menubar.visible=!window.menubar.visible; }
	if (window.toolbar.visible) { window.toolbar.visible=!window.toolbar.visible; }
	if (window.locationbar.visible) { window.locationbar.visible=!window.locationbar.visible; }
	if (window.personalbar.visible) { window.personalbar.visible=!window.personalbar.visible; }
	if (window.statusbar.visible) { window.statusbar.visible=!window.statusbar.visible; }
	if (window.scrollbars.visible) { window.scrollbars.visible=!window.scrollbars.visible; }
} // function togliToolbar

function avverti(cosa){ // utilizzata per mostrare una finestra di popup di avvertimento
	alert(cosa);
}

function chiediConferma(cosa){ // utilizzata per mostrare una finestra di popup con una domanda si/no/annulla
	return confirm(cosa);
	// mostraLivello('LayerConferma');
	// oggetto('iframeConferma').src="conferma.php";
}
function aggiornaPaginaAttuale(cosa){ // utilizzata per aggiornare la variabile globale paginaAttuale
	// in modo che consenta di aprire il record attuale
	if (cosa){
		parent.paginaAttuale=parent.paginaAttualeNuovoRecord + "&idRecord=" + cosa;
	} else {
		parent.paginaAttuale=parent.paginaAttualeNuovoRecord;
	}
}
function scriviCampo(valore){ // questa funzione serve a salvare in un campo un valore impostato da un'altra
	// finestra, tipicamente un popup
	var a="";
	
	a=oggetto(parent.nomeCampoDaScrivere);
	a.value=valore;
	parent.nomeCampoDaScrivere=""; // inizializza la variabile globale
}
function preparaData(giorno,mese,anno){ // questa funzione restituisce una stringa contenente la data
							// in accordo al formato impostato da database
	var nuovaData="";
	
	if (giorno<10){
		giorno = '0' + giorno;
	}	
	if (mese<10){
		mese = '0' + mese;
	}
	switch (parent.formatoData){
		case 'gg/mm/aaaa':
			nuovaData=giorno + '/' + mese + '/' + anno;
			break;
		case 'mm/gg/aaaa':
			nuovaData=mese + '/' + giorno + '/' + anno;
			break;
	} // switch	
	return nuovaData;		
}
function pulsanteTB(quale,cosa){
	var a="";
	var tuttoOk=true;
	var i;	
		
	if (tuttoOk){		
		// l'utente non vuole salvare oppure non serve salvare
		// impostaPulsante(quale,Premuto); 					
		// cambiaStatoToolbar(Disabilitato,Abilitato,Abilitato,Abilitato,Disabilitato,Disabilitato,Disabilitato,Disabilitato);
		switch (quale){
			case 'italiano':
			case 'inglese':
				if (paginaModificata(true)){
					if (chiediConferma(tbSal)) {			
						tuttoOk=false;
						// comanda di salvare							
						controlla(); 
					}
				}		
				if (tuttoOk){		
					caricaPagina(cosa); 	
					impostaStatoPagina(costPronto,false);
				}
				break;	
			case 'salva':
				if (statoPulsante(quale)!=costTBDisattivato){
					controlla();
				}
				break;
			case 'annulla':
				if (statoPulsante(quale)!=costTBDisattivato){
					if (chiediConferma(tbAnn)) {
						// l'utente vuole annullare quello che stava facendo
						caricaPagina(cosa); 
						impostaStatoPagina(costPronto);
					}				
				}
				break;
		} // switch		
	}
}
function controllaPaginaModificata(){
	var tuttoOk=true;
	
	if (paginaModificata(true)){
		if (chiediConferma(tbSal)) {			
			tuttoOk=false;
			// comanda di salvare							
			controlla(); 
		}
	}
	return tuttoOk;
}
function gestisciTestataAR(cosa){
	var tuttoOk=true;
	
	tuttoOk=controllaPaginaModificata();
	if (tuttoOk){
		caricaPagina(cosa);
	}
	return tuttoOk;
}
function caricaPagina(cosa){ // carica un file (cosa)
	var a="";
	
	// a=oggetto(dove);
	// a.src=cosa;
	window.location=cosa;
}
function cambiaSemaforo(quale,tipo,stato,titolo){
	var tuttoOk=true;
	var nuovoStato;
	
	if (paginaModificata(true)){
		if (chiediConferma(tbSal)) {			
			tuttoOk=false;
			// comanda di salvare							
			controlla(); 
		}
	}		
	if (tuttoOk){	
		switch (stato){
			case "R":
				nuovoStato="V";
				break;
			case 'V':
				nuovoStato="R";
				break;
		} // switch
		if (chiediConferma(testoRimpiazza(eval('testoSem'+tipo+nuovoStato),'"'+titolo+'"'))) {			
			oggetto('operazione').value="cambiaSemaforo";
			oggetto('operazioneDettaglio').value=quale;
			oggetto('modulo').submit();	
		}
	}
}
function testoRimpiazza(){ // questa funzione rimpiazza $costParametri[] con i parametri
					// accetta un NUMERO VARIABILE di argomenti (minimo due)
					// il primo argomento è il testo
				 
		numeroParametri=0;
		var a=false;
		var testoDaSostituire;
		var i;

		numeroParametri=arguments.length;
		switch (numeroParametri){
			case 0: // non fa nulla
				break;
			case 1: // non fa nulla
				break;
			default: // gestisce i parametri
				a=arguments[0];
				for (i=1; i<=(numeroParametri-1);i++){
					testoDaSostituire=arguments[i];				
					a=a.replace(costParametri[i],testoDaSostituire);
				}
				break;			
		}
		return a;
}
function controllaOraInizio(oraIni,oraFin){
	a=oggetto(oraIni);
	b=oggetto(oraFin);
	if (a.value.substr(0,1)=="0"){		
		aa=parseInt(a.value.substr(1,1));
	} else {
		aa=parseInt(a.value.substr(0,2));
	}
	if (b.value.substr(0,1)=="0"){
		bb=parseInt(b.value.substr(1,1));
	} else {
		bb=parseInt(b.value.substr(0,2));
	}	
	if (aa>=bb){
		if (a.value.substr(3,2)=="00"){
			b.value=a.value.substr(0,2)+":30:00";
		} else {
			c=aa+1;
			if (c<10){ c="0"+c; }
			b.value=c+":00:00";
		}
	}	
}
function controllaOraFine(oraIni,oraFin){
	a=oggetto(oraIni);
	b=oggetto(oraFin);
	if (a.value.substr(0,1)=="0"){		
		aa=parseInt(a.value.substr(1,1));
	} else {
		aa=parseInt(a.value.substr(0,2));
	}
	if (b.value.substr(0,1)=="0"){
		bb=parseInt(b.value.substr(1,1));
	} else {
		bb=parseInt(b.value.substr(0,2));
	}	
	if (bb<=aa){
		if (b.value.substr(3,2)!="00"){
			a.value=b.value.substr(0,2)+":00:00";
		} else {
			c=bb-1;
			if (c<10){ c="0"+c; }
			a.value=c+":00:00";
		}
	}	
}
function eliminaVoce(quale, nomeUtente){
	if (chiediConferma(tbEli+nomeUtente+"\"?")) {
		oggetto('operazione').value='elimina'; 
		oggetto('operazioneDettaglio').value=quale;
		oggetto('modulo').submit();
	}
}
/*////////////////////////////////////////////////////////////////////////////////////////////
	Copyright (c) 2010-2011 AbZoe (http://www.abzoe.com)
////////////////////////////////////////////////////////////////////////////////////////////*/

