/**
 * @author 
 */


	myBrowser=navigator.appName
	myVersion=navigator.appVersion
	var version45=(myVersion.indexOf("4.")!=-1||myVersion.indexOf("5.")!=-1)
	var version6=(myVersion.indexOf("6.")!=-1)
	var NS6 = (myBrowser.indexOf("Netscape")!=-1 && version6)
	var NS=(myBrowser.indexOf("Netscape")!=-1 && version45)
	var IE=(myBrowser.indexOf("Explorer")!=-1 && version45)

	var isAlreadyProcessed = false;

	//parametri form
//	formname = "formStep3";
//	formObj = "document.forms.formStep3.";

	selezionato = "checked";
	disabilitato = "disabled";

	garanzie = new Array();
	garanzieselezionate = new Array();
	garanziadisabilitata = new Array();
	abbinamenti = new Array();
	esclusioni = new Array();

	function stampa(message)
	{
	  var test = false;
	  if (eval(test) == true)
	  {
	    //alert(message);
	  }
	}



	//************************************************************************************************************
	//                Funzione: TrovaIndice                                                                      *
	//                Scopo:    Dato il figlio (garanzie[indicegaranzia,vettore dei figli,indice del figlio])    *
	//                         recupera l'indice della garanzia relativa                                         *
	//************************************************************************************************************


	function TrovaIndice(nomegaranzia)
	{
	  var k = 0
	  var passaindice = -1
	  for (k = 0; k < garanzie.length; k++)
	  {
	    if (typeof(garanzie[k]) == 'object')
		{
	      if (garanzie[k][0] == nomegaranzia)
	      {
	        passaindice = k;
	      }
	    }
	  }
	  return passaindice;
	}

	//--------------//
	//              //
	// isSelected() //
	//              //
	//--------------//
	function isSelected(element)
	{
	  if (eval(formObj +"['"+ element + "']") == null)
	  {
	    return  false;
	  }
	  return eval(formObj +"['"+ element + "'][selezionato]");	  
	}

	function doSelection(element)
	{
		if (eval(formObj +"['"+ element + "']") == null)
		{
		  return;
		}
		eval(formObj +"['"+ element + "'][selezionato]=true")
//		eval(formObj + element +"."+ selezionato + "= true");
	}

	function deselect(element)
	{
		if (eval(formObj +"['"+ element + "']") == null)
		{
		  return;
		}
		eval(formObj +"['"+ element + "'][selezionato]=false");
	}

	function isDisabled(element)
	{
if (eval(formObj +"['"+ element + "']") == null)
	  {
	    return  false;
	  }
	  return eval(formObj +"['"+ element + "'][disabilitato]");
	}

	function enable(element)
	{
	  if (eval(formObj +"['"+ element + "']") == null)
	  {
	    return;
	  }
	  eval(formObj +"['"+ element + "'][disabilitato]= false");
	}

	function disable(element)
	{
	  if (eval(formObj +"['"+ element + "']") == null)
	  {
	    return;
	  }
	  eval(formObj +"['"+ element + "'][disabilitato]= true");
	}

	function exists(element)
	{
	  if (eval(formObj +"['"+ element + "']") == null)
	    return false;
	  return true;
	}

	//************************************************************************************************************
	//                       Funzione: SettaGaranzie                                                             *
	//                       Scopo:    Imposta il check-decheck-disable sui checkbox all'apertura della pagina   *
	//************************************************************************************************************


	function SettaGaranzie()
	{
	//stampa('Dentro SettaGaranzie');
	  ResettaGaranzie();
	//stampa('Dopo reset');


	  var indicecomepadre = 0;
	  var passagaranzia = 0;

	  for (indicegaranzia = 0;(typeof(garanzie[indicegaranzia]) == 'object');indicegaranzia++)
	  {
	//stampa('indice garanzia = ' + indicegaranzia);
	    nomepadre = garanzie[indicegaranzia];
	    nomepadreObj = garanzie[indicegaranzia]+".";

	     if (typeof(garanzie[indicegaranzia][1]) == 'object')// esiste il figlio?
	     {
	       for (indicefiglio=0; indicefiglio < garanzie[indicegaranzia][1].length; indicefiglio++)
	       {
	         if (typeof(garanzie[indicegaranzia][1][indicefiglio][1]) == 'object')//esiste il padre? se si...
	         {
	           operando = new Array();
	           operazione = "";
	           for (indiceoperazione=0; indiceoperazione < garanzie[indicegaranzia][1][indicefiglio][1].length; indiceoperazione++) // cicla sul vettore padre, operatori
	           {
	             operando[indiceoperazione] = garanzie[indicegaranzia][1][indicefiglio][1][indiceoperazione];
	           }

	           // Per tutti gli operandi, sostituisce 'OR' con '||' e AND con '&&';
	           // altrimenti, per gli operandi che sono dei padri, se esistono nell'array garanzie,
	           // vengono inseriti nella formula booleana come "("+ formObj + operando[j]+".checked)", altrimenti come 'false' (neutro per l'OR)

	           for (j=0;j<operando.length;j++)
	           {
				 //alert("operando[j]: " + operando[j]);
	             if (operando[j] == "OR")
	             {
	               operando[j] = " || ";
	               operazione += operando[j];
	             }
	             else
	               if (operando[j] == "AND")
	               {
	                 operando[j] = " && ";
	                 operazione += operando[j];
	               }
	               else
	               {
	                 if (TrovaIndice(operando[j]) == -1)
	                 {
	                   operando[j] = 'false';//se il padre non esiste lo setta a false (neutro per l'OR)
	                   //alert("padre non esiste 1");
	                 }
	                 else if (!exists(operando[j]))
	                      {
					       operando[j] = 'false';//se il padre non esiste in pagina lo setta a false (neutro per l'OR)
	                      //alert("padre non esiste 1");
	                      }
	             		 else operando[j] = "("+ formObj +"['"+ operando[j] + "'].checked)";																			
	             		 {
							//alert("operazione += operando[j]");
							operazione += operando[j];
							//alert("operazione: " + operazione);
						 }
	               }
	           } // End for j

	           passagaranzia = garanzie[indicegaranzia][1][indicefiglio][0];
	           indicecomepadre = TrovaIndice(passagaranzia);
	           if (indicecomepadre != -1) // quindi se quel figlio esiste come padre
	           {
				 //alert(eval(operazione));
	             if (eval(operazione) != true)
	             {
	               //******************************************
	               //   disabilito e deseleziono i checkbox   *
	               //eval(formObj + garanzie[indicegaranzia][1][indicefiglio][0] +"."+ selezionato + "= false");
				   deselect(garanzie[indicegaranzia][1][indicefiglio][0]);
	               //eval(formObj + garanzie[indicegaranzia][1][indicefiglio][0] +"."+ disabilitato+ "= true");
				   //disable(garanzie[indicegaranzia][1][indicefiglio][0]);
	               garanziadisabilitata[indicecomepadre] = "TRUE";

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

	               if (IE)
	               {
				     if (eval("document.all.garFont"+indicecomepadre) == null)
					 {
					 }
					 else
					 {
	                   // cambio colore alle label
				       eval("garFont"+indicecomepadre+".color='#CCCCCC'");
					 }
	               }
	               else
	               {
	               }
	             }
	             else // eval(operazione) == true
	             {
	               //*********************************************
	               //            abilito i checkbox              *
	               //eval(formObj + garanzie[indicegaranzia][1][indicefiglio][0] +"."+ disabilitato + "= false");
				   enable(garanzie[indicegaranzia][1][indicefiglio][0]);
	               garanziadisabilitata[indicecomepadre] = "FALSE";

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

	               if (IE)
	               {
				     if (eval("document.all.garFont"+indicecomepadre) == null)
					 {
					 }
					 else
					 {
	                   eval("garFont"+indicecomepadre+".color='#0000A0'");
					 }
	               }
	               else
	               {
	               }
	             }
	           } // End if (indicecomepadre != -1)
	         }// End "Esiste il padre?" // else disabilita i figli
	       }
	     }
	   }

	   for (i=0 ; i<garanzie.length ; i++)
	   {
	     abbinamenti[i] = "FALSE";
	     esclusioni[i] = "FALSE";
	   }

	   for (i=0 ; i<garanzie.length ; i++)
	   {
	     checkEsclusioni(i);
	   }

	   for (i=0 ; i<garanzie.length ; i++)
	   {
	     esclusioni[i] = "FALSE";
	   }

	//stampa('garanziadisabilitata = ' + garanziadisabilitata);
	}


	// ******************** //
	//                      //
	//   CheckAbbinamenti   //
	//                      //
	// ******************** //
	function checkAbbinamenti(i)
	{
	//stampa('Dentro checkAbbinamenti - ' + garanzie[i][0]);
	  var index = 0;
	  var indiceabbinato = 0;
	  var indicegaranzia = i;
	  abbinamenti[indicegaranzia] = "TRUE";

	  if (typeof(garanzie[indicegaranzia][3]) == 'object')
	  {
		if (isDisabled(garanzie[indicegaranzia][0]))
	    {
		  if (isSelected(garanzie[indicegaranzia][0]))
	      {
			deselect(garanzie[indicegaranzia][0]);
	      }

	      for(index=0 ; index<garanzie[indicegaranzia][5].length ; index++)
	      {
	        indiceabbinato = TrovaIndice(garanzie[indicegaranzia][5][index]);
	        if (indiceabbinato != -1)
	        {
			  deselect(garanzie[indicegaranzia][5][index]);
	          disable(garanzie[indicegaranzia][5][index]);
			  if (abbinamenti[indiceabbinato] == 'FALSE')
	            checkAbbinamenti(indiceabbinato);
	        }
	      }
	    }
	    else // l'elemento non è disabilitato
	    {
		  if (isSelected(garanzie[indicegaranzia][0]))
	      {
	        for(index=0 ; index<garanzie[indicegaranzia][3].length ; index++)
	        {
	          if (TrovaIndice(garanzie[indicegaranzia][3][index]) != -1)
	          {
				doSelection(garanzie[indicegaranzia][3][index]);
				enable(garanzie[indicegaranzia][3][index]);

	            // Questa parte serve per controllare se, abilitando l'elemento,
	            // devo disabilitarne qualche altro
	            checkEsclusioni(TrovaIndice(garanzie[indicegaranzia][3][index]));
	          }
	        }
	      }
	      else // sto deselezionando l'elemento --> deseleziono anche gli elementi collegati
	      {
	        for(index=0 ; index<garanzie[indicegaranzia][5].length ; index++)
	        {
	          if (TrovaIndice(garanzie[indicegaranzia][5][index]) != -1)
	          {
				deselect(garanzie[indicegaranzia][5][index]);
				enable(garanzie[indicegaranzia][5][index]);
	          }
	        }
	      }
	    }
	  }
	}

	// **************** //
	//                  //
	// check Esclusioni //
	//                  //
	// **************** //
	function checkEsclusioni(i)
	{
	  var index = 0;
	//stampa('Dentro checkEsclusioni - ' + garanzie[i][2]);
	  var indicegaranzia = i;
	  var indicePerEventoClick = 0;
	  var indiceescluso = 0;
	  //esclusioni[indicegaranzia] = "TRUE";

	  if (typeof(garanzie[indicegaranzia][4]) == 'object')
	  {
	    if (!(isDisabled(garanzie[indicegaranzia][0])))
	    {
	//stampa('non disabilitato');
		  if (isSelected(garanzie[indicegaranzia][0]))
	      {
	//stampa('selezionato');
	        for(index=0 ; index<garanzie[indicegaranzia][4].length ; index++)
	        {
	//stampa('# esclusioni = ' + garanzie[indicegaranzia][4].length);
	          indicePerEventoClick = TrovaIndice(garanzie[indicegaranzia][4][index]);
	          if (indicePerEventoClick != -1)
	          {
				if (isSelected(garanzie[indicegaranzia][4][index]))
	            {
	//stampa('deseleziono ' + garanzie[indicegaranzia][4][index]);
				  deselect(garanzie[indicegaranzia][4][index]);
	              indiceescluso = TrovaIndice(garanzie[indicegaranzia][4][index]);
	              if (indiceescluso != -1)
	              {
	                if (esclusioni[indiceescluso] == 'FALSE')
	                {
	                  esclusioni[indiceescluso] = "TRUE";
	                  EventoClick(indicePerEventoClick);
	//stampa('Sono uscito da EventoClick per ' + garanzie[indicePerEventoClick][2] + ' index = ' + index);
	//stampa('garanzia corrente = ' + garanzie[indicegaranzia][0]);
	//stampa('# esclusioni = ' + garanzie[indicegaranzia][4].length);
	                }
	              }
	            }
	          }
	        }
	      }
	    }
	  }
	}

	//************************************************************************************************************
	//    Funzione: EventoClick                                                                                  *
	//    Scopo:    Gestisce il check-decheck-disable dei checkbox e del campo massimali su tutte le garanzie    *
	//************************************************************************************************************


	function EventoClick(i)
	{

	  //stampa('Dentro Evento Click - ' + garanzie[i][2]);
	  //if (IE) NascondiPremi();
	  var indicefiglio = 0;
	  var passagaranzia = "";
	  var indicegaranzia = 0;
	  var nomepadre = "";
	  var indicecomepadre = 0;
	  indicegaranzia = i;
	  nomepadre = garanzie[indicegaranzia][0];

	  fnRicalcola();

	  if (garanziadisabilitata[indicegaranzia] == "TRUE")
	  {
	    garanzieselezionate[indicegaranzia] ="FALSE";
		deselect(garanzie[indicegaranzia][0]);
	  }

	  checkAbbinamenti(indicegaranzia);

	//stampa('dopo checkAbbinamenti');

	  checkEsclusioni(indicegaranzia);

	//stampa('dopo checkEsclusioni');

	  if (typeof(garanzie[indicegaranzia][1]) == 'object')// esiste il figlio?
	  {

	//stampa('esiste figlio - ' + garanzie[indicegaranzia][1]);

	    for (indicefiglio = 0; indicefiglio < garanzie[indicegaranzia][1].length; indicefiglio++)
	    {

	//stampa('ciclo sui figli');

	      if (typeof(garanzie[indicegaranzia][1][indicefiglio][1]) == 'object')//esiste il padre? se si...
	      {
	        operando = new Array();
	        operazione = "";

	        // cicla sul vettore padre, operatori
	        for (indiceoperazione=0 ; indiceoperazione<garanzie[indicegaranzia][1][indicefiglio][1].length; indiceoperazione++)
	        {
	          operando[indiceoperazione] = garanzie[indicegaranzia][1][indicefiglio][1][indiceoperazione];
	        }

	        for (j=0;j<operando.length;j++)
	        {
	          if (operando[j] == "OR")
	          {
	            operando[j] = " || ";
	            operazione += operando[j];
	          }
	          else
	            if (operando[j] == "AND")
	            {
	              operando[j] = " && ";
	              operazione += operando[j];
	            }
	            else
	            {
	              if (TrovaIndice(operando[j]) == -1)
	                operando[j] = 'false';//se il padre non esiste lo setta a false (neutro per l'OR)
	              else if (!exists(operando[j]))
					   operando[j] = 'false';//se il padre non esiste in pagina lo setta a false (neutro per l'OR)
	              else
	                operando[j] = "("+ formObj +"['"+ operando[j] + "'].checked)";

	              operazione += operando[j];
	            }
	        } // End For j


	        passagaranzia = garanzie[indicegaranzia][1][indicefiglio][0];
	        indicecomepadre = TrovaIndice(passagaranzia);
	        if (indicecomepadre != -1)
	        {

	//stampa('operazione = ' + operazione);

	          if (eval(operazione))
	          {

	//stampa('true');

				enable(passagaranzia);
	            garanziadisabilitata[indicecomepadre] = "FALSE";

	            abbinamenti[indicecomepadre] = "TRUE";
	            checkAbbinamenti(indicecomepadre);

	            if (IE)
	            {
				  if (eval("document.all.garFont"+indicecomepadre) == null)
	              {
	              }
	              else
	              {
	                eval("garFont"+indicecomepadre+".color='#0000A0'");
	              }
	            }
	            else
	            {
	              //document.layers['layer3'].visibility = 'visible';
	            }
	          }
	          else
	          {

	//stampa('false');

				deselect(passagaranzia);
				disable(passagaranzia);

	            garanziadisabilitata[indicecomepadre] = "TRUE";

	            if (IE)
	            {
				  if (eval("document.all.garFont"+indicecomepadre) == null)
	              {
	              }
	              else
	              {
	                eval("garFont"+indicecomepadre+".color='#CCCCCC'");
	              }
	            }
	            else
	            {
	              //document.layers['layer3'].visibility = 'hidden';
	            }

	            EventoClick(indicecomepadre); // Ciclo su tutti i figli

	          }
	        } // End if (indicecomepadre != -1)
	      } // End "Esiste il padre?"
	    } // End for (indicefiglio...)
	  } // End "Esiste il figlio?"

	  // Resetto il campo degli abbinamenti e delle esclusioni per ogni garanzia
	  for (j=0 ; j<garanzie.length ; j++)
	  {
	    abbinamenti[j] = "FALSE";
	    esclusioni[i] = "FALSE";
	  }
	//stampa('Esco da Evento Click per ' + garanzie[indicegaranzia][2]);
	}



	function ResettaGaranzie()
	{
	  for (i = 0; i < garanzie.length; i++)
	  {
	    if (typeof(garanzie[i]) == 'object')
	    {
	      if (garanzieselezionate[i] == "TRUE")
	      {
			doSelection(garanzie[i][0]);
	      }
	      else
	      {
			deselect(garanzie[i][0]);
	      }
	    }
	  }
	}

/*
	function  fnPremio(num, sel) 
	{
		var thisForm = sel.form;
		var thisRadio = thisForm[sel.name];

		for (i=0; i<thisRadio.length; i++) {
			thisRadio[i].checked = false;
			Obj = (document.all) ? document.all['premioTd'+i] : document.getElementById('premioTd'+i);
			Obj.style.background = 'url(/images/bt/unsel.gif)';
		}

		thisRadio[num].checked = true;
		Obj = (document.all) ? document.all['premioTd'+num] : document.getElementById('premioTd'+num);
		Obj.style.background = 'url(/images/bt/sel.gif)';

		if (num == 2)
			document.form1.numpack.value=4;
		if (num == 1)
			document.form1.numpack.value=3;
		if (num == 0)
			document.form1.numpack.value=2;
	}
	
	fnPremio(0, document.getElementById('premioRadio'));
*/	
	function fnRicalcola() {
		var premioObj = (document.all) ? document.all['premioDiv'] : document.getElementById('premioDiv');
		premioObj.style.display = 'none';
		var ricalcolaObj = (document.all) ? document.all['ricalcolaDiv'] : document.getElementById('ricalcolaDiv');
		ricalcolaObj.style.display = '';
		
		var impostaObj = (document.all) ? document.all['impostaDiv'] : document.getElementById('impostaDiv');
		impostaObj.style.display = 'none';
		var ricalcolaImpostaObj = (document.all) ? document.all['ricalcolaImpostaDiv'] : document.getElementById('ricalcolaImpostaDiv');
		ricalcolaImpostaObj.style.display = '';
		try {
			var ssnObj = (document.all) ? document.all['ssnDiv'] : document.getElementById('ssnDiv');
			ssnObj.style.display = 'none';
		} catch (err) {
		}
		try {
			var ricalcolaSsnObj = (document.all) ? document.all['ricalcolaSsnDiv'] : document.getElementById('ricalcolaSsnDiv');
			ricalcolaSsnObj.style.display = '';
		} catch (err) {
		}
	}