
var visualizza ='block';

if (!document.all)
	visualizza = 'table-row';


function openLi()
{
	document.write('<li>');
}

function closeLi()
{
	document.write('</li>');
}

/**
* @ Piero Bargellini
* This function clear all white spaces and special character from the string
*/
function trim(str)
{
	while ((str.substring(0,1) == ' ') || (str.substring(0,1) == '\n') || (str.substring(0,1) == '\r'))
	{
		str = str.substring(1,str.length);
	}
	
	while ((str.substring(str.length-1,str.length) == ' ') || (str.substring(str.length-1,str.length) == '\n') || (str.substring(str.length-1,str.length) == '\r'))
	{
		str = str.substring(0,str.length-1);
	}
	return str;
}

function openTR(id){
	
	var _openTR = false;
	if(document.getElementById(id).style.display =='none')
	{
		_openTR = true;
	}
	for (i = 1; document.getElementById(i) != null ; i++){
		document.getElementById(i).style.display = 'none';
	}
	if(_openTR)
	{
		document.getElementById(id).style.display = visualizza;
	}
}


function espandi(n){
	eval("imgCollapseS" + n + " = new Image");
	eval("imgCollapseS" + n + ".src = 'public/images/collapse.gif'"); 
	eval("imgExpandS" + n + " = new Image");
	eval("imgExpandS" + n + ".src = 'public/images/expand.gif'");
	var espande = "imgExpand"+n
	if(document.all(espande).name == 'imgExpand'+n){
		document.all("Tcontenuto"+n).style.display = visualizza;
		document.all(espande).src =eval(" imgCollapseS"+n+".src")
		document.all(espande).name = "imgCollapse"+n;
		document.all(espande).alt = "Nascondi Dettagli";
	}else{
		document.all("Tcontenuto"+n).style.display = 'none';
		document.all(espande).src = eval('imgExpandS'+n+'.src');
		document.all(espande).name = "imgExpand"+n;
		document.all(espande).alt = "Visualizza Dettagli";
	}
}


function controllaNumerico(e){
    e = e || window.event;
    ch = e.which || e.keyCode;
    if (ch != null) 
    {
        if (!((ch >= 48) && (ch <= 57) || (ch == 13) || (ch == 8) )) {
		return false;
		}
	}
}

function controllaNumericoDecimale(e) {
    e = e || window.event;
    ch = e.which || e.keyCode;
    if (ch != null) 
    {
        if ((ch < 44 || ch > 57 || ch == 45 || ch == 47) && (ch!=8)) {
            return false;
        }
    }
}
function popUp(link, nome, lar, alt){
		

	var h = (screen.availHeight - alt)/2;
	var l = (screen.availWidth - lar)/2;
	if (navigator.appName.indexOf ("Microsoft") != -1)
		browserType = 1;
	else 
		browserType = 2;
	if (browserType == 1) {
		new_win = window.open(link,nome,"status=no,menubar=no,scrollbars=no,resizable=yes,location=no,toolbar=0,menubar=no,width=" + lar + ",height=" + alt + ",left=" + l + ",top=" + h + "");
	}else {
		new_win = window.open(link,nome,"status=no,menubar=no,scrollbars=no,resizable=yes,location=no,toolbar=0,menubar=no,width=" + lar +",height=" + alt + ",left=" + l + 	",top=" + h + "");
	}
}


/*
* Select a combo option by value.
*  combo    A select reference.
*  val      The string from which to select the option.
*
*/
function selectComboByOptionValue(combo,val){
    selIndex = combo.selectedIndex;
    i = 0;
    l = combo.options.length;
    found = false;
    while ((!found)&&(i<l))
    {
        if(combo.options[i].value==val)
        {
            selIndex = i;
            found = true;
        }
        else
        {
            i = i+1;
        }
    }
    if (selIndex != -1)
    {
        combo.options[selIndex].selected = true;
    }

}

/*
* Select a combo option by text.
*  combo    A select reference.
*  text     The string from which to select the option.
*/
function selectComboByOptionText(combo,text){
    selIndex = combo.selectedIndex;
    i = 0;
    l = combo.options.length;
    found = false;
    while ((!found)&&(i<l))
    {
        if(combo.options[i].text==text)
        {
            selIndex = i;
            found = true;
        }
        else
        {
            i = i+1;
        }
    }
    if (selIndex != -1)
    {
        combo.options[selIndex].selected = true;
    }

}

// Piero Bargellini
// accetta come parametro l'oggetto combo
// ripulisce tutti i valori
function clearComboOptions(combo){
	var itemsNum = combo.length;
	for (i = itemsNum; i >= 0 ; i--){
		combo.options[i] = null;
	}
	combo.selectedIndex=0;
}


// Lorenzo Gianotti
// Seleziona/Deseleziona tutti i check
// Utilizzata da ristorante.admin.xsl
// parametri:
//          checkSelezione: il check che comanda la selezione/deselezione passare:document.nomeform.nomecheck
//          checkDaSelezionare: il check da selezionare/deselezionare passare:document.nomeform.nomecheck
function cambiaCheck(checkSelezione,checkDaSelezionare){
    if (checkSelezione.checked)
    {
        for(i=0;i < checkDaSelezionare.length;i++)
        {
            checkDaSelezionare[i].checked = true;
        }
    }
    else
    {
        for(i=0;i < checkDaSelezionare.length;i++)
        {
            checkDaSelezionare[i].checked = false;
        }
    }
}


// Controllo validita Numero

function numerico(stringain)

// la funzione si basa sull'utilizzo del metodo parseInt
// di cui si riporta di seguito un esempio: 

// esempio : ParseInt(11) = 11
// esempio : ParseInt(11ss) = 11
// esempio : ParseInt(aaa) = NaN

// Se il dato in input è un numero avremo lo stesso output da parseInt
// mentre in caso di contenuto alfanumerico avremo NaN oppure la parte
// numerica della stringa. L'esito della funzione sarà true se
// input = output
// per una maggiore precisione nel controllo ho preferito effettuare un
// ciclo in modo da controllare ogni songolo carattere piuttosto che la stringa
// intera

 {
 
   var stringaout;
   var carattere;
   
   for (i=0;i<stringain.length;i++)
   
    {
      carattere=stringain.charAt(i);
   
      if (parseInt(carattere)!=carattere)
        return false;
    }
    
   return true; 
  
 }
 
 
// Controllo Validità Data
// parametri:
//          dataIn:         Valore testuale della data deve essere GG/MM/AAAA
//          nomeCampo:      Nome campo Date visualizzare nel popUp
//          obbligatoria:   valori ammmessi true o false, se false e la data passata è "" allora ritorna true



// esempio di chiamata:
//
//   verificadata(document.myform.Dal.value,'Dal',true)
//

function verificadata(dataIn,nomeCampo,obbligatoria)

 {

   var dataverifica;
   var dataoutput;

   var gginput;   
   var mminput; 
   var aaaainput;

   var ggoutput;   
   var mmoutput; 
   var aaaaoutput;


var datainput=dataIn;


// Eseguo controllo solo se la data è obbligatoria.

   if (datainput=="")
    {
        if (obbligatoria)
        {
            alert ('Data ' + nomeCampo + ': Immettere una valore');
            return false;
        }
        else
        {
            return true;
        }
     
    } 
     

// la prima cosa che si controlla è che la data sia stata effettivamente
// immessa e che sia di 10 caratteri

   if (datainput.length!=10)
    {
     alert ('Data ' + nomeCampo + ': La data deve essere in formato GG/MM/AAAA');
     return false;
    } 
    
 
// vengono ricavati il l'anno, il mese ed il giorno dalla data in input

   
   gginput=datainput.substr(0,2);  
   mminput=datainput.substr(3,2);
   aaaainput=datainput.substr(6,4);
   
   
// tramite la funzione numerico viene verificato che il giorno, il mese
// e l'anno immessi siano effettivamente in formato numerico


   if(!(numerico(gginput)))
    {
     alert ('Data ' + nomeCampo + ': Il giorno inserito non in formato numerico');
     return false;
    }
    
   if(!(numerico(mminput)))
    {
     alert ('Data ' + nomeCampo + ': Il mese inserito non in formato numerico');
     return false;
    } 
    
   if(!(numerico(aaaainput)))
    {
     alert ('Data ' + nomeCampo + ': L\'anno inserito non in formato numerico');
     return false;
    }          
      

// viene utilizzato un oggetto data per la verifica costruendola in base
// ai parametri ricavati in input (l'anno è sottratto di 1 perchè la funzione data
// considera i mesi partendo da zero)


   dataverifica =new Date(aaaainput,mminput-1,gginput)

   
// dalla data creata viene ricavato l'anno, il mese ed il giorno (il mese è incrementato
// di 1 per restituire il mese nel formato standard)


   aaaaoutput=dataverifica.getFullYear().toString(); 
   mmoutput=(dataverifica.getMonth()+1).toString(); 
   ggoutput=dataverifica.getDate().toString();


// poichè le funzioni getMonth e getDate restituiscono valori numerici
// occorre aggiungere lo zero per i mesi e gli anni unitari (es "1/1/2005")
// il controllo è effettuato sulla lunghezza della stringa (se < 2 aggiungi lo zero)


   if (mmoutput.length<2)
     mmoutput="0"+mmoutput;
    
   if (ggoutput.length<2)
     ggoutput="0"+ggoutput;


// La data in output è costituita dai dati ricavati precedentemente separati
// dal carattere "/" dopo aver aggiunto 


   dataoutput=ggoutput+"/"+mmoutput+"/"+aaaaoutput;


// viene confrontata la data in input con quella in output
// se non coincidono vuol dire che la data non è corretta


   if (datainput!=dataoutput)
   {
     alert('Data ' + nomeCampo + ' non corretta.');
     return false;
   }
   else
   {
   return true;
   }

}
