// *****************************************************************************************
function show_values() {

var w = window.open("",                    // URL (nessuno)
                       "RIASSUNTO",        // nome
                       "resizable,status,scrollbars,menubar"); // caratteristiche
 alert('HO APERTO LA FINESTRA');
var d = w.document;    // Per fare prima a scrivere

// alert('HO DEFINITO f ED el');
d.write('<HTML><HEAD><TITLE></TITLE></HEAD><BODY bgcolor=white>')
var f=w.opener.document.forms[0];
el=f.elements;
eln=el.length;
// alert('Numero campi '+eln)
// doc=op.window;
// d.write('<script language=javascript>');
// d.write('<center><b><font face=arial size=5> LISTA VARIABILI</font></b></center>');
d.write('<TABLE WIDTH="90%" border=1>');
for (i=0;i<eln;i++) {
nome=el[i].name;
tipo=el[i].type;
if (tipo=='select-one') {
j=el[i].selectedIndex;valore=el[i][j].value;
cella4='<TD height=3><FONT FACE=ARIAL SIZE=1>SELECTED INDEX= '+j+'</FONT><br></TD>'+"\n";} // fine if
else {valore=el[i].value} // fine else
if (tipo=='radio' || tipo=='checkbox') {
selez=el[i].checked;
cella4='<TD height=3><FONT FACE=ARIAL SIZE=1>CHECKED= '+selez+'</FONT><br></TD>'+"\n";} // fine if
if (tipo!='select-one' && tipo!='radio' && tipo!='checkbox') {
cella4='<TD height=3><font face=arial size=1 color=white>na<br></font></TD>'} // fine if
cella0='<TD height=3><FONT FACE=ARIAL SIZE=1>'+i+'</FONT><br></TD>'+"\n";
cella1='<TD height=3><FONT FACE=ARIAL SIZE=1>'+nome+'</FONT><br></TD>'+"\n";
cella2='<TD height=3><FONT FACE=ARIAL SIZE=1>VALORE= '+valore+'</FONT><br></TD>'+"\n";
cella3='<TD height=3><FONT FACE=ARIAL SIZE=1>TYPE= '+tipo+'</FONT><br></TD>'+"\n";
riga='<TR>'+cella0+cella1+cella2+cella3+cella4+'</TR>'+"\n";
d.write(''+riga);
} // fine for
d.write('</TABLE>'+"\n");
// d.write('<center><b><font face=arial size=5> FINE LISTA VARIABILI</font></b></center>');
d.write('<form><CENTER><INPUT TYPE=BUTTON VALUE="CHIUDI" onclick="self.close();"></CENTER></form>'+"\n");
d.write('</BODY></HTML>');
d.close();
} // fine show_values
// *****************************************************************************************

// *****************************************************************************************
// Javascript TOOLS per la visualizzazione delle variabili inviate al server
// VERSIONE 0.1b
// by ANDREA CASSA, 9 Novembre 1998
// *****************************************************************************************

// *****************************************************************************************
function show(Seccion){
//alert(Seccion);
document.getElementById(Seccion).style.display="";
}

function hide(Seccion){
//alert(Seccion);
document.getElementById(Seccion).style.display="none";
}

function carica_input(){
var nomiv=new Array();
valoriv=new Array();
var f=document.forms[0];
el=f.elements;
eln=el.length;
k=1;
nomiv[0]='';
valoriv[0]='';
len=0;
//alert('POP_NUM_UE='+document.forms[0].elements['POP_NUM_UE'].value);
//alert(eln);
var i=0;
		for (i=0;i<eln;i++) {
		//alert(i);
		nome=el[i].name;
		tipo=el[i].type;
		//if(nome.match('POP_NUM_')){alert(nome+tipo);}
		//alert(tipo+nome);
		
		if(tipo!='hidden' && tipo!='button' && tipo!='reset'){
		if(tipo=='radio'){
		len=el[nome].length;
//		alert(len);
			for (j=0;j<len;j++) {
				if(el[nome][j].checked){
				valoriv[k]=el[nome][j].value;
				//alert(i+') '+tipo+nome+' '+j+') '+valoriv[k]);
				k++;
				i++;
				break;
				}
			}
		//i=i+len;
		}else if(tipo=='select-one'){
			indice=el[i].selectedIndex;
			valoriv[k]=el[i][indice].value;
			//alert(tipo+nome+indice+valoriv[k]); 
		k++;
		}else if (tipo=='checkbox' && !(el[i].value =='NA' || el[i].value =='-9944')){
				if (el[i].checked==true){
					valoriv[k]=el[i].value; 
//					alert(tipo+nome+valoriv[k]); 
					k++;
					}else{
					valoriv[k]=0; 
//					alert(tipo+nome+valoriv[k]); 
					k++;
					}
		}else{
		valoriv[k]=el[i].value; 
		//alert(tipo+nome+valoriv[k]); 
		k++;
		}
		}
		}
return valoriv;
}
function controlla_output(){
//var nomiv=new Array();
var valorin=new Array();
var f=document.forms[0];
el=f.elements;
eln=el.length;
k=1;
//nomiv[0]='';
valorin[0]='';
conto=0;
l=0;
		for (i=0;i<eln;i++) {
		nome=el[i].name;
		tipo=el[i].type;
		
		
		if(tipo!='hidden' && tipo!='button' && tipo!='reset'){
		if(tipo=='radio'){
		l=el[nome].length;
//		alert(l);
			for (j=0;j<l;j++) {
				if(el[nome][j].checked){
				valorin[k]=el[nome][j].value;
				//alert(inp[k]+"--"+valorin[k]);
					if(valorin[k]!= inp[k]){
					conto++;
					//alert(nome+tipo);
					}
				k++;
				i++;
				break;
				}
			}
		//i=i+l;
			}else if(tipo=='select-one'){
			indice=el[i].selectedIndex;
			valorin[k]=el[i][indice].value;
//			alert(tipo+nome+indice+valoriv[k]); 
				if(valorin[k]!= inp[k]){
				conto++;
				//alert(nome+tipo);
				}
		k++;
		}else if (tipo=='checkbox' ){
				if (el[i].checked==true){
					valorin[k]=el[i].value; 
//					alert(tipo+nome+valorin[k]); 
						if(valorin[k]!= inp[k]){
						if(el[i].value =='NA' || el[i].value =='-9944' || el[i].value =='Non applicabile' || el[i].value =='NON APPLICABILE'){
							//alert('1a'+nome+tipo+el[i].value);
							}else{
							//alert('2a'+nome+tipo);
							conto++;
							}
						}
					k++;
					}else{
					valorin[k]=0; 
//					alert(tipo+nome+valorin[k]);
						if(valorin[k]!= inp[k]){
							if(el[i].value =='NA' || el[i].value =='-9944' || el[i].value =='Non applicabile' || el[i].value =='NON APPLICABILE'){
							//alert('1b'+nome+tipo+'value:'+el[i].value);
							}else{
							conto++;
							//alert('2b'+nome+tipo+conto);
							}
						
						}
					k++;
					}
		}else{
		valorin[k]=el[i].value; 
		
			if(valorin[k]!= inp[k] && el[i].name !='RICHIESTA_NOTE'){
			if(el[i].value =='NA' || el[i].value =='-9944' || el[i].value =='Non applicabile' || el[i].value =='NON APPLICABILE'){
							//alert('1c'+nome+tipo+'value:'+el[i].value);
							}else{
							conto++;
							//alert('2c'+nome+tipo+conto);
							}
			//alert(nome+tipo);
			}
		k++;
				}
		}
		//if (nome=='SPEC_TIPO_FARMACO'){
		//alert(tipo+nome);
		//}
		}
//alert(conto);
return conto;
}


function force_focus() {
if (!(window.focus())) {window.focus()}
setTimeout("force_focus2()",1000);
return 0;
} // fine funzione
// *****************************************************************************************

// *****************************************************************************************
function force_focus2() {
if (!(window.focus())) {window.focus()}
setTimeout("force_focus()",1000);
return 0;
} // fine funzione
// *****************************************************************************************

// *****************************************************************************************
      
// *****************************************************************************************

function congela() {
alert('Non puoi modificare manualmente questo campo!\n'+'Per favore, usare i pulsanti Sfoglia, Ricerca e Cancella');
return 0;
} // fine funzione

// *****************************************************************************************

function sbianca() {
var i_sb, nome_campo, arg_l;
if (sbianca.arguments.length) {
	for (i_sb=0;i_sb<sbianca.arguments.length;i_sb++) {
		nome_campo=sbianca.arguments[i_sb];
		if (document.forms[0].elements[nome_campo]){
			document.forms[0].elements[nome_campo].value='';
		}
	} // fine for
} // fine if 
else {return false}
return 0;
} // fine funzione

function radioclear (nome) {
el=document.forms[0].elements;
num_bot=el[nome].length; // **************************************************** numero di bottoni
// ***************************************************************************** Netscape (<=4.6) restituisce num_bot=null per array di radio con 1 solo elemento
if (num_bot==null) { // ******************************************************** C'e' un solo radio e si sta usando NS<=4.6
check=el[nome].checked; // ************************************************** La proprieta' checked del radio singolo
if (check) {el[nome].checked=false;//el[nome].value='';
	} // ************************************** c'e' un solo bottone ed e' selezionato, lo sbianco
return true // ***************************************************************** ritorno true
} // *************************************************************************** fine if in num_bot
// ***************************************************************************** Se arriva qui o l'array e' di piu' elementi o non si sta usando Netscape
for (ind=0;ind<num_bot;ind++) {// ********************************************** Percorro il ciclo dei radio omonimi
if (el[nome][ind].checked){el[nome][ind].checked=false;//el[nome][ind].value='';
	} // ********************* se ne trovo uno selezionato ritorno 0
} // *************************************************************************** fine ciclo
return true;
} // fine funzione


function prepara_parametri(nomeform) {
if (!nomeform){nomeform='0';}
var f=document.forms[nomeform];
//var f=document.forms[0];
var parametri='';
el=f.elements;
eln=el.length;
for (ii=0;ii<eln;ii++) {
nome=el[ii].name;
tipo=el[ii].type;
//if (tipo=='select-one') {
//	jj=el[ii].selectedIndex;
//	valore=el[ii][jj].value;
//} // fine if
//else {
//	valore=el[ii].value} // fine else
//if (tipo=='radio' || tipo=='checkbox') {
//	valore=radiovalue(nome,'0');
//} // fine if
if (tipo=='hidden'){
	valore=el[nome].value;
	valore=valore.replace(/\#/g,'');
	parametri+=nome+'='+valore+'&';
}
} // fine for
//alert(parametri);
return parametri;
}

function ossc_errore_js() {
	var parametri=prepara_parametri();
	var nomescript='/cgi-bin/ossc_errore_js?'+parametri;
	nomescript=nomescript.replace(/\'/g,'`');
	nomescript=nomescript.replace(/\"/g,'``');
	location.href=nomescript;
	//location.href='/cgi-bin/ossc_errore_js';
}
function prepara_decode() {
	for (k=0;k<document.forms.length;k++){
	var f=document.forms[k];
	el=f.elements;
	eln=el.length;
      
		for (i=0;i<eln;i++) {
		nome=el[i].name;
		tipo=el[i].type;
                // alert(nome+' '+tipo+' ');

			if (nome.substring(0,2)=='D_'){
				nomeselect=nome.substring(2,nome.length);
				if (el[nomeselect]){
					valore='';
					if (el[nomeselect].type=='select-one'){
						j=el[nomeselect].selectedIndex;
						valore=el[nomeselect][j].text;
						el[nome].value=valore;
						//alert (nome+'='+valore);
					}else if (el['DESC_'+nomeselect] && el['S_'+nomeselect] && el['S_'+nomeselect].type=='select-multiple'){
						valore=el['DESC_'+nomeselect][0].text;
						el[nome].value=valore;
						//alert (nome+'='+valore);
					}else if (el['S_'+nomeselect] && el['S_'+nomeselect].type=='select-multiple'){
						valore=el['S_'+nomeselect][0].text;
						el[nome].value=valore;
						//alert (nome+'='+valore);
					}else if (el['DESC_'+nomeselect] && el['DESC_'+nomeselect].type=='select-multiple'){
						valore=el['DESC_'+nomeselect][0].text;
						el[nome].value=valore;
						//alert (nome+'='+valore);
					}else if (el['DESC_'+'D_'+nomeselect] && el['DESC_'+'D_'+nomeselect].type=='select-multiple'){
						valore=el['DESC_'+'D_'+nomeselect][0].text;
						el[nome].value=valore;
					//alert (nome+'='+valore);
					}
					
				}
			}
			if (el['I'+nome] && el['I'+nome].type.substring(0,6)=='select' && (el[nome].type=='text' || el[nome].type=='hidden') ){
				//alert('Sono qui');
				el[nome].value=el['I'+nome][el['I'+nome].selectedIndex].text;
			}
			if ((tipo=='text' || tipo=='hidden' || tipo=='textbox') && (el[nome].value.substr(0,5)=='_____' || el[nome].value.substr(0,5)=='-----')){
				el[nome].value='';
			}
			if (tipo=='radio'){
				//alert (nome);
				
				if (!radiovalue(nome,k) && radiovalue(nome,k)!='0'){
					//alert (nome+' '+radiovalue(nome,k));
					el[nome][0].value='';
					el[nome][0].checked=true;
				}
			}
			if (tipo=='checkbox'){
				if (!el[nome].checked){
					el[nome].value='';
					el[nome].checked=true;
					//document.write('<input type=checkbox name='+nome+' value="" checked>');
				}
			}
		}
		
	}
}

//function prepara_checkbox_onload() {
//	for (k=0;k<document.forms.length;k++){
//	var f=document.forms[k];
//	el=f.elements;
//	eln=el.length;
//		for (i=0;i<eln;i++) {
//		nome=el[i].name;
//		tipo=el[i].type;
//			if (tipo=='checkbox'){
//				alert (nome+'-'+el[nome].checked+'-'+el[nome].value);
//				if (el[nome].checked && !el[nome].value){
//					el[nome].checked=false;
//				}
//			}
//		}
//	}
//}

function precompila_tendine(nome_campo_hidden,nomeform) {
  if (!nomeform){nomeform='0';}
  chiamante=document.forms[nomeform];
  elementi_chiamante=chiamante.elements;

if (elementi_chiamante[nome_campo_hidden]){
	if (elementi_chiamante[nome_campo_hidden].value !=''){
		elementi_chiamante['S_'+nome_campo_hidden][0].text=elementi_chiamante[nome_campo_hidden].value;
	}
}
return 0;
}

function precompila_tendine_auto() {
	for (k=0;k<document.forms.length;k++){
	var f=document.forms[k];
	var tipi;
	el=f.elements;
	eln=el.length;
		for (i=0;i<eln;i++) {
		nome=el[i].name;
		tipo=el[i].type;
		//tipi=tipi+tipo+'\\n';
			if (el['S_'+nome] && (el['S_'+nome].type=='select-one' || el['S_'+nome].type=='select-multiple')){
				
				if (el[nome].value !=''){
					el['S_'+nome][0].text=el[nome].value;
				}
			}
			if (el['DESC_'+nome] && (el['DESC_'+nome].type=='select-one' || el['DESC_'+nome].type=='select-multiple')){
				
				if (el[nome].value !=''){
					if (nome.substr(0,3)=='ID_'){
						alert ('D_'+nome.substr(3,nome.length));
						el['DESC_'+nome][0].text=el['D_'+nome.substr(3,nome.length)].value;
					}else if (el['D_'+nome]) {
						el['DESC_'+nome][0].text=el['D_'+nome].value;
					}else {
						el['DESC_'+nome][0].text=el[nome].value;
					}
				}
			}
		}
	}
	//alert (tipi);
return 0;
}


function detect_browser(){
// Browser Detection
browser_name = navigator.appName;
browser_version = parseFloat(navigator.appVersion); 
if (browser_name == "Netscape" && browser_version >= 3.0) { roll ='true'; }
else if (browser_name == "Microsoft Internet Explorer" && browser_version >= 4.0) { roll = 'true'; }
else { roll = 'false'; }
// Preload images, if browser supports mouseovers
if (roll == 'true') {
	var imglist = new Array ("/images/sfoglia_on.gif","/images/cerca_on.gif","/images/cancella_on.gif", "/images/naviga_on.gif");
	var imgs = new Array();
	var count;
	if (document.images){
       		for (count=0; count<imglist.length; count++){
       			imgs[count]=new Image(); imgs[count].src=imglist[count];
        	}
        }
}
// Use this code if you are only doing one mouseover
}
function msover1(img,ref) {if (roll=='true') {document.images[img].src = ref;}}
function msout1(img,ref)  {if (roll=='true') {document.images[img].src = ref;}}
function apri_window (source,nome) {
	//newwin = window.open(source,nome, 'width=450,height=425,scrollbars=yes')
	//apre sempre UNA SOLA finestra
	newwin = window.open(source,'window2', 'width=450,height=425,scrollbars=yes,resizable=yes')
	if (!window.opener) {newwin.opener = self}
}
function apri_windowc (source,nome) {
	newwin = window.open(source,'window2', 'left=0,screenX=0,top=0,screenY=0,width=800,height=600,scrollbars=yes,toolbar=yes');
	if (!window.opener) {newwin.opener = self}
}
function apri_window_big (source,nome) {
	//newwin = window.open(source,nome, 'width=450,height=425,scrollbars=yes')
	//apre sempre UNA SOLA finestra
	if (nome =='') {nome='bwindow';}
	newwin = window.open(source,nome, 'width=750,height=525,scrollbars=yes,resizable=yes')
	if (!window.opener) {newwin.opener = self}
}
function apri_window_pub (source,nome) {
	//newwin = window.open(source,nome, 'width=450,height=425,scrollbars=yes')
	//apre sempre UNA SOLA finestra
	if (nome =='') {nome='bwindow';}
	newwin = window.open(source,nome, 'width=550,height=525,scrollbars=yes,resizable=yes')
	if (!window.opener) {newwin.opener = self}
}
function apri_windowc (source,nome) {
	newwin = window.open(source,'window2', 'left=0,screenX=0,top=0,screenY=0,width=800,height=600,scrollbars=yes,toolbar=yes');
	if (!window.opener) {newwin.opener = self}
}
 
// apri_window_g  funzione inserita da GIULIO 11 Settembre 2007
function apri_window_g (source,nome) {
	newwin = window.open(source,'window2', 'left=0,screenX=0,top=0,screenY=0,width=800,height=600,scrollbars=yes,toolbar=yes,resizable=yes,location=yes,status=yes,menubar=yes');
	if (!window.opener) {newwin.opener = self}
}

function sbianca_s(descrizione,dimensione,nomeform,stringavuota) {
  if (!nomeform){nomeform='0'}
  chiamante=document.forms[nomeform];
  elementi_chiamante=chiamante.elements;

  if (dimensione=='1'){
	elementi_chiamante[descrizione][0].value='';
	elementi_chiamante[descrizione][0].text=stringavuota;
  }else {
  	var i,j,k;
  	var vettV=new Array();
  	var vettT=new Array();
  	var eliminati=0;
  	for (i=0;i<elementi_chiamante[descrizione].options.length;i++){
  		if (elementi_chiamante[descrizione][i].selected && elementi_chiamante[descrizione][i].value){
  			eliminati++;
			elementi_chiamante[descrizione][i].value='';
			elementi_chiamante[descrizione][i].text='';
  		}else if (elementi_chiamante[descrizione][i].value) {
  			vettV[i]=elementi_chiamante[descrizione][i].value;
  			vettT[i]=elementi_chiamante[descrizione][i].text;
  		}
  	}
	if (eliminati>0 && elementi_chiamante[descrizione].options.length>1){
  		//Inizio Parte aggiunta da testare
  		elementi_chiamante[descrizione].options.length=1;
  		j=0;
  		for (k=0;k<i;k++){
  			if (vettV[k] && vettT[k]){
  				elementi_chiamante[descrizione].options.length++;
  				elementi_chiamante[descrizione][j].value=vettV[k];
				elementi_chiamante[descrizione][j].text=vettT[k];
				j++; 			
  			}
		}
		//Fine Parte aggiunta da testare
    	}
  	if (!eliminati){alert('Selezionare gli elementi che si vuole eliminare,\nquindi cliccare su Cancella!');}
	if (elementi_chiamante[descrizione].options.length<=1 && elementi_chiamante[descrizione][0].value==''){
		elementi_chiamante[descrizione][0].text=stringavuota;
	}
  }
  return 0;
}

function apri_window_small (source) {
        var newwin;
        newwin = window.open(source,'window1',
'width=450,height=500,scrollbars=yes')
        if (!window.opener) {
                newwin.opener = self
        }
}
///////////////////////////////////////////////////////////////
//                                                      
//     Funzione per bloccare chi scrive  nelle "Textarea",
//       in base alla lunhezza specificata in lung_ta
//            
//           Creata da  Gregorio Greco                      
//                                                     
///////////////////////////////////////////////////////////////

//stringa= new String("");

function errore_old(nome_form,lungh_ta){
var lungh=nome_form.value.length;

 if(lungh ==(lungh_ta-1)) {stringa.value=nome_form.value;}
 if(lungh >(lungh_ta-1)) {

alert('Attenzione: e\' stato raggiunto il limite dei caratteri da inserire:');
nome_form.value=stringa.value;
}
return(true);
}



function errore(nome_form,lungh_ta){
var lungh=nome_form.value.length;
if(lungh >(lungh_ta-1)) {
	alert('Attenzione: e\' stato raggiunto il limite dei caratteri da inserire! Il contenuto del campo in oggetto verra\' ridotto per poter permettere il salavataggio. Si prega di controllare il contenuto');
	nome_form.value=nome_form.value.substr(0,lungh_ta-1);
	return false;
}

//controllo sui caratteri speciali
if(nome_form.value.match('®')||nome_form.value.match('¿')){
alert('Attenzione, non e\' possibile utilizzare caratteri speciali come: ®,¿');
	nome_form.focus;
	return false;
}
return true;
}

function errore_textarea(nome_form,lungh_ta,msg){
f=document.forms[0];
el=f.elements;
if(el[nome_form].value!=''){
	
var lungh=el[nome_form].value.length;
if(lungh >(lungh_ta-1)) {
	alert('Attenzione: e\' stato raggiunto il limite dei caratteri da inserire nel campo '+msg);
	el[nome_form].value=el[nome_form].value.substr(0,lungh_ta-1);
	el[nome_form].focus();
	return false;
}
}
if(el[nome_form].value.match('®')||el[nome_form].value.match('¿')){
alert('Attenzione, non e\' possibile utilizzare caratteri speciali come: ®,¿ nel campo '+msg);
	el[nome_form].focus();
	return false;
}
return true;
}



function controlla_form_doppi(){
	//function da richiamare nell'onload che permette di verificare se vi siano 
	//dei form doppi nel template, tranne i radiobutton
	
var nomiv=new Array();
valoriv=new Array();
var f=document.forms[0];
el=f.elements;
eln=el.length;
k=1;
nomiv[0]='';
valoriv[0]='';
for (i=0;i<eln;i++) {
		nome=el[i].name;
		tipo=el[i].type;
		
		for (j=0;j<eln;j++) {
			if(el[j].name==nome && i!=j && el[j].type!='radio'){
			alert(el[j].name+'-'+nome+'-'+el[j].value);
			return false;
			}
		
		}
		
	}
}

/*
//funzione per il controllo delle date aggiornata
//da Cristiano Campeggiani il 15/09/2005
function controlla_data_sys(nome,nomey,nomem,nomed,descrizione)
{
	f=document.forms[0];
	el=f.elements;
	d1=document.forms[0].elements['SYSDATE'].value;
	dsys=d1.substr(6,4)+d1.substr(3,2)+d1.substr(0,2);	
	
	//Controllo se mi tutti gli elementi della data hanno un valore numerico
	if((!(isNaN(parseInt(document.forms[0].elements[nomey].value)))) && 
		 (!(isNaN(parseInt(document.forms[0].elements[nomem].value)))) &&
		 (!(isNaN(parseInt(document.forms[0].elements[nomed].value)))))	
	{	//ho esattamente 3 elementi numerici
		if (parseInt(document.forms[0].elements[nomey].value) > 1990)
		{	//Costruisco la data nel formato yyyymmdd controllando
			//se il giorno e il mese sono maggiori di 9: formati quindi da 2 caratteri
			d2=document.forms[0].elements[nomey].value;			
			
			if (Number(document.forms[0].elements[nomem].value) > 9 )
				d2 += document.forms[0].elements[nomem].value;
			else
				d2 += "0" + Number(document.forms[0].elements[nomem].value);
						
			if (Number(document.forms[0].elements[nomed].value) > 9 )
				d2 += document.forms[0].elements[nomed].value;
			else
				d2 += "0" + Number(document.forms[0].elements[nomed].value);			
			
			//alert ('dsys: ' +  dsys + '\nd2:' + d2);
						
			if (dsys<d2)
			{
			 alert('Attenzione, '+descrizione+' non puo\' essere successiva alla data odierna');
			 el[nome+'D'].focus();			 
			 return 1;	
			}
			else //OK
				return 0;
		}
		else
		{			
			alert('Attenzione l\'anno di '+descrizione+' deve essere posteriore al 1990');
			el[nome+'D'].focus();						 
			return 1;
		}
	}
	else
	{	//Costruisco la stringa come append degli elementi
		var strTest = new String(document.forms[0].elements[nomey].value+document.forms[0].elements[nomem].value+document.forms[0].elements[nomed].value);
		if (strTest.length == 0)
		{	//La data non e\' stata inserita
			delete strTest;			
			return 0;
		}
		else
		{			
			if (strTest.toUpperCase() == "NDNDND")
			{	//La data non e\' nacessaria: tutti gli elementi sono ND
				delete strTest;
				return 0;
			}
			else
			{
				alert('La  '+descrizione+' inserita non e\' valida');
				el[nome+'D'].focus();
				delete strTest;
				return 1;
			}
		}		
	}
	return 1;
}
*/

/****************************************************/
/*funzione per il controllo delle date aggiornata		*/
/*da Cristiano Campeggiani il 22/09/2005						*/
/****************************************************/
function controlla_data_sys(nome,nomey,nomem,nomed,descrizione)
{
	f=document.forms[0];
	el=f.elements;
	d1=document.forms[0].elements['SYSDATE'].value;	
	//data corrente
	dsys=d1.substr(6,4)+d1.substr(3,2)+d1.substr(0,2);	
	
	//costruisco la data passata come aaaammdd di esattamente 8 caratteri
	//se qualcosa va storto ritorna la stringa vuota
	d2 = build_extended_date(nome);	
	//alert(d2);
	if (!(d2.length == 0))
	{	//ho esattamente 3 elementi numerici
		
		//controllo aggiunto da Vera per saltare questi test nel caso non siano
		//presenti le variabili Y M D ma solo la HIDDEN
		
		if(document.forms[0].elements[nomey] && document.forms[0].elements[nomey].value!=''){
			if (parseInt(document.forms[0].elements[nomey].value) > 1990)
			{	//controllo che la data passata non sia posteriore alla data corrente						
				if (dsys<d2)
				{
				 alert('Attenzione, '+descrizione+' non puo\' essere successiva alla data odierna');
				 el[nome+'D'].focus();			 
				 return 1;	
				}
				else //OK
					return 0;
			}
			else
			{			
				alert('Attenzione l\'anno di '+descrizione+' deve essere posteriore al 1990');
				el[nome+'D'].focus();						 
				return 1;
			}
		}else{
			return 0;
		}
	}
	else
	{	//Costruisco la stringa come append degli elementi
		var strTest = new String(document.forms[0].elements[nomey].value+document.forms[0].elements[nomem].value+document.forms[0].elements[nomed].value);
		if (strTest.length == 0)
		{	//La data non e\' stata inserita
			delete strTest;			
			return 0;
		}
		else
		{			
			if (strTest.toUpperCase() == "NDNDND")
			{	//La data non e\' nacessaria: tutti gli elementi sono ND
				delete strTest;
				return 0;
			}
			else
			{
				alert('La  '+descrizione+' inserita non e\' valida');
				el[nome+'D'].focus();
				delete strTest;
				return 1;
			}
		}		
	}
	return 1;
}



/****************************************************************/
/*						Cristiano Campeggiani															*/
/*la prossima funzione prende in ingresso il nome di 2 date			*/
/*nella forma <NOME_DATA_DT>, e che la data denominata lowdate	*/
/*non sia posteriore a quella denominata highDate								*/
/*MsgLowDate ,MsgHighDate sono idealmente il nome delle date		*/
/*cosÃ¬ come sono visualizzate dal browser e sono utilizzate sia	*/
/*per la chiamata a controlla_data_sys che per gli alert				*/
/*Come per le altre funzioni la funzione ritorna con 1 per 			*/
/*segnalare un errore, viceversa torna 0 (Zero) se ha successo	*/
/****************************************************************/
function compare_dates(lowDate,MsgLowDate,highDate,MsgHighDate)
{	//controllo la validitÃ  della prima data
	if (!controlla_data_sys(lowDate,lowDate + 'Y',lowDate + 'M',lowDate + 'D',MsgLowDate))
	{	//controllo la validitÃ  della seconda data
		if (!controlla_data_sys(highDate,highDate + 'Y',highDate + 'M',highDate + 'D',MsgHighDate))
		{	//Costruisco le date in modo che siano nello stesso formato e con la stessa lunghezza
			//aaaammgg facendo 2 chiamate alla funzione build_extended_date
			var lower = build_extended_date(lowDate);
			var higher = build_extended_date(highDate);
			
			//A questo punto controllo che le date non siano ne vuote ne uguali alla stringa 'NDNDND'
			if ((!(lower.length == 0)) && (!(higher.length == 0)) && (!(lower.toUpperCase() == 'NDNDND')) && (!(higher.toUpperCase() == 'NDNDND')))
			{	//higher non deve essere posteriore a lower				
				if	(higher < lower)
				{
					
					//aggiunta da Vera per visualizzare le date in un formato con le /
					if(!(document.forms[0].elements[lowDate].value.match('/'))){
					
					var lowview=document.forms[0].elements[lowDate].value.substr(0,2)+'/';
					lowview+=document.forms[0].elements[lowDate].value.substr(2,2)+'/';
					lowview+=document.forms[0].elements[lowDate].value.substr(4,4);
					//alert ('low'+lowview);
					}else{
					var lowview=document.forms[0].elements[lowDate].value;
					}
					if(!(document.forms[0].elements[highDate].value.match('/'))){
					var highview=document.forms[0].elements[highDate].value.substr(0,2)+'/';
					highview+=document.forms[0].elements[highDate].value.substr(2,2)+'/';
					highview+=document.forms[0].elements[highDate].value.substr(4,4);
					
					//alert ('high'+highview);
					}else{
					var highview=document.forms[0].elements[highDate].value;
					}
					
					alert ('Attenzione: ' + MsgLowDate +' ('+lowview+')\nnon puo\' essere posteriore a ' + MsgHighDate+' ('+highview+')');
					document.forms[0].elements[lowDate + 'D'].focus();
					return 1;
				}
				else //tutto ok
				{
					return 0;
				}					
			}
			else
			{				
				//alert ('Attenzione: ' + MsgLowDate + ' oppure\n ' + MsgHighDate + ' non e\' valutabile');
				return 0;
			}
		}
		else
		{
			//alert ('Attenzione: '  + MsgHighDate + ' non e\' valida');
			//document.forms[0].elements[highDate + 'D'].focus();
			return 1;
		}
	}
	else
	{
		//alert ('Attenzione: ' + MsgLowDate + ' non e\' valida');
		//document.forms[0].elements[lowDate + 'D'].focus();
		return 1;
	}
}

/******************************************************************/
/*Versione con controlli non bloccanti della funzione precedente	*/
/******************************************************************/
function soft_compare_dates(lowDate,MsgLowDate,highDate,MsgHighDate)
{	//controllo la validitÃ  della prima data
	var bStop = 0;	
	
	if (!controlla_data_sys(lowDate,lowDate + 'Y',lowDate + 'M',lowDate + 'D',MsgLowDate))
	{	//controllo la validitÃ  della seconda data
		if (!controlla_data_sys(highDate,highDate + 'Y',highDate + 'M',highDate + 'D',MsgHighDate))
		{	//Costruisco le date in modo che siano nello stesso formato e con la stessa lunghezza
			//aaaammgg facendo 2 chiamate alla funzione build_extended_date
			var lower = build_extended_date(lowDate);
			var higher = build_extended_date(highDate);
			
			//A questo punto controllo che le date non siano ne vuote ne uguali alla stringa 'NDNDND'
			if ((!(lower.length == 0)) && (!(higher.length == 0)) && (!(lower.toUpperCase() == 'NDNDND')) && (!(higher.toUpperCase() == 'NDNDND')))
			{
				//higher non deve essere posteriore a lower
				if	(higher < lower)
				{										
					var strMsg = 'Attenzione: ' + MsgLowDate  + ' ( '+ format_msg_date(document.forms[0].elements[lowDate].value) + ' )';
					strMsg = strMsg + ' dovrebbe essere precedente a ' + MsgHighDate;
					strMsg = strMsg + ' ( ' + format_msg_date(document.forms[0].elements[highDate].value) + ' )';
					strMsg = strMsg + ".\nPremere OK per continuare, Annulla per modificare " + MsgHighDate + ".";
											
					//if (window.confirm ('Attenzione: ' + MsgLowDate + '\nnon dovrebbe essere posteriore a ' + MsgHighDate + ".\nPremere OK per continuare, Annulla per modificare " + MsgLowDate))
					if (window.confirm (strMsg))
						return 0;
					else
					{
						document.forms[0].elements[highDate + 'D'].focus();
						return 1;
					}
				}
				return 0;
			}
			else
			{				
				//alert ('Attenzione: ' + MsgLowDate + ' oppure\n ' + MsgHighDate + ' non e\' valutabile');
				return 0;
			}
		}
		else
		{
			//alert ('Attenzione: '  + MsgHighDate + ' non e\' valida');
			//document.forms[0].elements[highDate + 'D'].focus();
			return 1;
		}
	}
	else
	{
		//alert ('Attenzione: ' + MsgLowDate + ' non e\' valida');
		//document.forms[0].elements[lowDate + 'D'].focus();
		return 1;
	}
}


/****************************************************************/
/*						Giulio Contino        														*/
/*la prossima funzione prende in ingresso il nome di 2 date			*/
/*nella forma <NOME_DATA_DT>, e che la data denominata lowdate	*/
/*non sia posteriore a quella denominata highDate								*/
/*MsgLowDate ,MsgHighDate sono idealmente il nome delle date		*/
/*cosÃ¬ come sono visualizzate dal browser e sono utilizzate   	*/
/*per gli alert	ma NON VENGONO CONFRONTATE CON SYSDATE          */
/*Come per le altre funzioni la funzione ritorna con 1 per 			*/
/*segnalare un errore, viceversa torna 0 (Zero) se ha successo	*/
/****************************************************************/
function compare_dates_nosysdate(lowDate,MsgLowDate,highDate,MsgHighDate) {	
	
			var lower = build_extended_date(lowDate);
			var higher = build_extended_date(highDate);
			
			//A questo punto controllo che le date non siano ne vuote ne uguali alla stringa 'NDNDND'
			if ((!(lower.length == 0)) && (!(higher.length == 0)) && (!(lower.toUpperCase() == 'NDNDND')) && (!(higher.toUpperCase() == 'NDNDND')))
			{	//higher non deve essere posteriore a lower				
				if	(higher < lower)
				{
					
					//aggiunta da Vera per visualizzare le date in un formato con le /
					if(!(document.forms[0].elements[lowDate].value.match('/'))){
					
					var lowview=document.forms[0].elements[lowDate].value.substr(0,2)+'/';
					lowview+=document.forms[0].elements[lowDate].value.substr(2,2)+'/';
					lowview+=document.forms[0].elements[lowDate].value.substr(4,4);
					//alert ('low'+lowview);
					}else{
					var lowview=document.forms[0].elements[lowDate].value;
					}
					if(!(document.forms[0].elements[highDate].value.match('/'))){
					var highview=document.forms[0].elements[highDate].value.substr(0,2)+'/';
					highview+=document.forms[0].elements[highDate].value.substr(2,2)+'/';
					highview+=document.forms[0].elements[highDate].value.substr(4,4);
					
					//alert ('high'+highview);
					}else{
					var highview=document.forms[0].elements[highDate].value;
					}
					
					alert ('Attenzione: ' + MsgLowDate +' ('+lowview+')\nnon puo\' essere posteriore a ' + MsgHighDate+' ('+highview+')');
					document.forms[0].elements[lowDate + 'D'].focus();
					return 1;
				}
				else //tutto ok
				{
					return 0;
				}					
			}
			else
			{				
				//alert ('Attenzione: ' + MsgLowDate + ' oppure\n ' + MsgHighDate + ' non e\' valutabile');
				return 0;
			}

}

/**********************************************************************/
/*Questa funzione prende in ingresso il nome di una data nel formato	*/
/*NOME_DATA_DT e costruisce la data nel formato aaaammgg, andando a 	*/
/*recuperare i valori dai corrispondenti elementi della form 					*/
/*Se per qualche ragione non posso costruire la data ritorno col			*/
/*valore ""																														*/
/**********************************************************************/
function build_extended_date(nomedt)
{	//costruissco i nomi delle variabili che "puntano"
	//rispettivamente al campo anno, mese e giorno
	var nomey = nomedt + 'Y';
	var nomem = nomedt + 'M';
	var nomed = nomedt + 'D';
	var new_date = "";	
	
	//ho commentato:
	//controllo aggiunto da Vera:
	//serve nel caso non siano presenti le variabili Y,M,D ma solo la HIDDEN con la data
	if(document.forms[0].elements[nomey] && document.forms[0].elements[nomey].value !=''){
	
	
	
	//Controllo se tutti gli elementi della data hanno un valore numerico
	if((!(isNaN(parseInt(document.forms[0].elements[nomey].value)))) && 
		 (!(isNaN(parseInt(document.forms[0].elements[nomem].value)))) &&
		 (!(isNaN(parseInt(document.forms[0].elements[nomed].value)))))	
	{	//ho esattamente 3 elementi numerici		
			new_date = document.forms[0].elements[nomey].value;			
			
			if (Number(document.forms[0].elements[nomem].value) > 9 )
				new_date += document.forms[0].elements[nomem].value;
			else
				new_date += "0" + Number(document.forms[0].elements[nomem].value);
						
			if (Number(document.forms[0].elements[nomed].value) > 9 )
				new_date += document.forms[0].elements[nomed].value;
			else
				new_date += "0" + Number(document.forms[0].elements[nomed].value);
	}
	
//controllo aggiunto da Vera vedi sopra
}else{
	if(Number(document.forms[0].elements[nomedt].value.substr(6))>1977){
	new_date =document.forms[0].elements[nomedt].value.substr(6);
	new_date +=document.forms[0].elements[nomedt].value.substr(3,2);
	new_date +=document.forms[0].elements[nomedt].value.substr(0,2);
	}
}
	
	//alert ('Data estesa:' + new_date);
	
	return new_date;
}
function autoPopup() {
   var stili = "top=30, left=70, width=400, height=250, status=no, menubar=no, toolbar=no scrollbar=no";
   var testo = window.open("", "", stili);
      testo.document.write("<html>\n");
      testo.document.write("<body topmargin=50>\n");
      testo.document.write("<div align=center>Compilare tante schede di terapia farmacologica quante sono le sostanze attive, descrivendo il nome della combinazione nel campo \"prodotto farmaceutico\".<br><i> Esempio:</i> il  prodotto farmaceutico <i>MOPP</i> corrisponde alle sostanze mecloretamina, vincristina, procarbazina e prednisone. In questo caso compilare quattro schede di terapia, una per ciascuna sostanza, digitando <i>MOPP</i> nel campo prodotto farmaceutico.</div>\n");
      testo.document.write("</body>\n");
      testo.document.write("</html>");
 }
 
function sbianca_radio_checkbox() {
	for (k=0;k<document.forms.length;k++){
	var f=document.forms[k];
	var el=f.elements;
	var eln=el.length;
	var vet_pass=new Array();
//      alert("somo qui");
		for (i=0;i<eln;i++) {
		nome=el[i].name;
		tipo=el[i].type;
                // alert(nome+' '+tipo+' ');
			if (tipo=='radio'){
				if (!radiovalue(nome,k) && radiovalue(nome,k)!='0'){
					for (ii=0;ii<eln;ii++) {
						nome1=el[ii].name;
						tipo1=el[ii].type;
						if (tipo1=='hidden' && nome1=='' && el[i].name!='' && vet_pass[nome] != '1'){
							el[ii].name=nome;
							el[i].name='dummy';
							vet_pass[nome]=1;
						}
					}
				}
			}
			if (tipo=='checkbox'){
				if (!el[nome].checked){
					for (ii=0;ii<eln;ii++) {
						nome1=el[ii].name;
						tipo1=el[ii].type;
						if (tipo1=='hidden' && nome1=='' && el[i].name!='' && vet_pass[nome] != '1'){
							el[ii].name=nome;
							el[i].name='dummy';
							vet_pass[nome]=1;
						}
					}
				}
			}
		}
	}
}

//Alla fine di prepara_decode_new richiamo la funzione sbianca_radio_checkbox() che passa i valori(nulli) dei radio e checkbox
//quando tali campi non sono checkati (e quindi i rispettivi valori non verrebbero passati). 
//Importante: e\' necessario che nel template ci siano tante HIDDEN per ogni checkbox e gruppo di radiobutton. 


function prepara_decode_new() {
	for (k=0;k<document.forms.length;k++){
	var f=document.forms[k];
	el=f.elements;
	eln=el.length;
//      alert("somo qui");
		for (i=0;i<eln;i++) {
		nome=el[i].name;
		tipo=el[i].type;
                // alert(nome+' '+tipo+' ');

			if (nome.substring(0,2)=='D_'){
				nomeselect=nome.substring(2,nome.length);
				if (el[nomeselect]){
					valore='';
					if (el[nomeselect].type=='select-one'){
						j=el[nomeselect].selectedIndex;
						valore=el[nomeselect][j].text;
						el[nome].value=valore;
						//alert (nome+'='+valore);
					}else if (el['DESC_'+nomeselect] && el['S_'+nomeselect] && el['S_'+nomeselect].type=='select-multiple'){
						valore=el['DESC_'+nomeselect][0].text;
						el[nome].value=valore;
						//alert (nome+'='+valore);
					}else if (el['S_'+nomeselect] && el['S_'+nomeselect].type=='select-multiple'){
						valore=el['S_'+nomeselect][0].text;
						el[nome].value=valore;
						//alert (nome+'='+valore);
					}else if (el['DESC_'+nomeselect] && el['DESC_'+nomeselect].type=='select-multiple'){
						valore=el['DESC_'+nomeselect][0].text;
						el[nome].value=valore;
						//alert (nome+'='+valore);
					}else if (el['DESC_'+'D_'+nomeselect] && el['DESC_'+'D_'+nomeselect].type=='select-multiple'){
						valore=el['DESC_'+'D_'+nomeselect][0].text;
						el[nome].value=valore;
						//alert (nome+'='+valore);
					}
					
				}
			}
			if (el['I'+nome] && el['I'+nome].type.substring(0,6)=='select' && (el[nome].type=='text' || el[nome].type=='hidden') ){
				//alert('Sono qui');
				el[nome].value=el['I'+nome][el['I'+nome].selectedIndex].text;
			}
			//if ((tipo=='text' || tipo=='hidden' || tipo=='textbox') && (el[nome].value.substr(0,5)=='_____' || el[nome].value.substr(0,5)=='-----')){
			//	el[nome].value='';
			//}
		}
	}
	sbianca_radio_checkbox();
}

/**********************************************************/
/*Cristiano Campeggiani																		*/
/*Questa funzione accetta in ingresso il nome di una data */
/*nel formato <nome_data_dt> e la restituisce nel formato	*/
/*gg/mm/aaaa, se non puo\' costruire una data in questo			*/
/*formato restituisce una stringa vuota										*/
/**********************************************************/
function format_msg_date(namedt)
{
	var strRet = "", bError = 0;
	
	//controllo la lunghezza della stringa ricevuta
	switch (namedt.length)
	{
		case 8:
			//controllo che sia un numero intero, che quindi sia stata passata in ingresso
			//la data nel formato ggmmaaaa
			if (Number(namedt) > 0)
				strRet = namedt.substr(0,2) + "/" + namedt.substr(2,2) + "/"  + namedt.substr(4,4);
			else
				bError = 1;
			break;			
		case 10:
			//controllo che la data sia esattamente nella forma "gg/mm/aaaa"
			if ((Number(namedt.substr(0,2)) > 0) &&
					(namedt.substr(2,1) ==  "/") &&
					(Number(namedt.substr(3,2)) > 0) &&
					(namedt.substr(5,1)  == "/") &&
					(Number(namedt.substr(6,4)) > 0))
				strRet = namedt;
			else
				bError = 1;
			break;			
		default:
			//esco con una stringa vuota
			strRet = "";
			break;			
	}
	
	if (bError)
		alert("Attenzione Data non valida: " + namedt);
				
	return strRet;
}


/************************************************************************/
/*Questa funzione accetta il nome di una data in formato <nome_data_dt>	*/
/*e controlla se esistono le variabili HIDDEN delle singole parti, ossia*/
/*<nome_data_dt(D|M|Y)> se non esistono le crea.												*/
/*Il secondo parametro di input specifica in quale form andare a cercare*/
/*ed eventualmente creare gli elementi hidden														*/
/************************************************************************/
function verify_DMY(namedt,form_index)
{	
	//alert("obj1 --> " + document.getElementsByName(namedt + "D").length + "\nobj2 --> " + document.getElementsByName(namedt + "D").length + "\nobj3 --> " + document.getElementsByName(namedt + "D").length );
	//alert("Nome Form:\t" + document.forms[0].name + "\nForm length:\t" + document.getElementsByName(document.forms[0].name).length);

	
	//Controllo se devo creare l'elemento del tipo nome_data_dtd
	if (document.getElementsByName(namedt + "D").length == 0)
	{		
		if (append_hidden_node(namedt + 'D',"",form_index))
		{
			//alert("Attenzione errore:");
			return 1;
		}		
	}
	
	//Controllo se devo creare l'elemento del tipo nome_data_dtm
	if (document.getElementsByName(namedt + "M").length == 0)
	{		
		if (append_hidden_node(namedt + 'M',"",form_index))
		{
			//alert("Attenzione errore:");
			return 1;
		}
	}
	
	//Controllo se devo creare l'elemento del tipo nome_data_dty
	if (document.getElementsByName(namedt + "Y").length == 0)
	{		
		if (append_hidden_node(namedt + 'Y',"",form_index))
		{
			//alert("Attenzione errore:");
			return 1;
		}
	}
		
	return 0;	
}


/****************************************************************/
/*Questa funzione crea una nuovo nodo input hidden assegandola	*/
/*alla form specificata da input, di conseguenza i parametri		*/
/*accettati da input sono																				*/
/*	node_name		= nome del nuovo nodo da creare,								*/
/*	node_value 	=	valore del nuovo nodo da creare,							*/		
/*	form_name		=	nome della form a cui assegnare								*/
/* 								la nuova variabile hidden.										*/
/****************************************************************/
function append_hidden_node(node_name,node_value,form_index)
{	//alert("node_name:\t"	 + node_name + "\nnode_value:\t" + node_value + "\nform_name:\t" + form_index);
	var oParent = null, new_element = null;	
	
	//alert("sto creando il nuovo elemento");
			
	//acquisisco il riferimento alla form da aggiornare
	if ((oParent = document.forms(form_index)) != null) //funziona con IE ma nn con Mozilla
	{	//alert("nome form:\t" + oParent.name);
		//creo il nuovo tag e ne setto gli attributi name e value come stringa
		//vedi le specifiche per creare i tag input con il metodo createElement
		strTag = "<input " + "name='" + node_name + "' value='" + node_value + "' />";
		
		//alert("strTag:\t" + strTag);
		
		if ((new_element = document.createElement(strTag)) != null)
		{	//voglio che il nuovo elemento sia hidden
			new_element.setAttribute("type","hidden");
			//inserisco come ultimo elemento della form l'oggetto appena creato		
			oParent.insertBefore(new_element);
			return 0;
		}		
	}
	
	//qualcosa e\' andato storto
	return 1;
}


