//libreria per il calcolo e la scomposizione dei premi
document.write("<script language='JavaScript' src='/js/Calculator.js'></script>");
//libreria per il confronto di valori
document.write("<script language='JavaScript' src='/js/Validator.js'></script>");

/* Apre una finestra del browser e aggiorna la pagina chiamante dopo un intervallo di 10 secondi
	 PARAMETRI:
	 ind		url della pagina da caricare nella nuova finestra
	 nome		nome della nuova finestra
	 conf		insieme degli attributi della finestra (dimensioni, scrollbar, bottoni, ecc..)
*/
function apriFinestra(ind,nome,conf) 
{ //v2.0
  finestra = window.open(ind,nome,conf);
  finestra.focus();
  setTimeout("window.location.reload(true);",10000);
}

/* Apre una finestra del browser
	 PARAMETRI:
	 ind		url della pagina da caricare nella nuova finestra
	 nome		nome della nuova finestra
	 conf		insieme degli attributi della finestra (dimensioni, scrollbar, bottoni, ecc..)
*/
function apriF(ind,nome,conf)
{ //v2.0
  finestra = window.open(ind,nome,conf);
  finestra.focus();
}

/*
  Questa funzione rappresenta un'evoluzione delle prime due.
	Apre una finestra pop-up del browser e la posiziona al centro dello schermo. Da notare
	che se le finestre caricano url di domini diversi, il comando moveTo non è consentito (fornirebbe un
	errore del tipo 'Accesso negato'). Il parametro booleano samedomain specifica pertanto se eseguire 
	questa istruzione
	PARAMETRI: 	ind, url da caricare nella finestra pop-up
							nome, nome della finestra. Non vuole spazi, nè caratteri particolari (ad es. '-')
							conf, stringa che specifica la visibilità delle toolbar
							x e y, larghezza (width) e altezza della finestra pop-up (height)
							samedomain, valore boolean che specifica se l'url da caricare appartiene allo stesso dominio della finestra chiamante
*/
function openAndMoveWin(ind,nome,conf,x,y,samedomain)
{		
	var posx = (screen.width - parseInt(x)) / 2;
	var posy = (screen.height - parseInt(y)) / 2;
	finestra = window.open(ind,nome,conf+",width="+x+",height="+y);		
	finestra.focus();
	//non è consentito spostare finestre che abbiano domini diversi
	if (samedomain == true)
		finestra.moveTo(posx, posy);
}

/* Imposta un messaggio nella barra di stato della finestra del browser.
   Utilizza la libreria overlib*/
function MouseOver(msg)
{
  window.status = msg;
  overlib(msg);
  return true;
}

/* Elimina i messaggi visualizzati dalla barra di stato della finestra del browser.
	 Utilizza la libreria overlib */
function MouseOut()
{
  window.status = '';
  nd(); 
  return true;
}

//obsoleta per cliente
function ConfAnnulaRich(numRic)
{
  return confirm("Confermi l'annullamento della richiesta n. "+numRic+" ?");
}

//obsoleta per cliente
function ConfTrasAge(numRic)
{
  return confirm("Confermi la trasmissione della richiesta in agenzia n. "+numRic+" ?");
}

function ConfTrasDir(numRic)
{
  return confirm("Confermi la trasmissione della richiesta in direzione n. "+numRic+" ?");
}

function ConfTrasPol(numRic)
{
  return confirm("Confermi la trasformazione della richiesta n. "+numRic+" in polizza ?");
}

function ConfEmetPol(numRic)
{
  return confirm("Confermi l'emissione della Polizza n. "+numRic+" ?");
}

function ConfAnnulaPol(numRic)
{
  return confirm("Confermi l'annullamento della Polizza n. "+numRic+" ?");
}

function ConfPerfPol(numRic)
{
  return confirm("Confermi il perfezionamento della Polizza n. "+numRic+" ?");
}

function ConfRistampaPol(numRic)
{
  return confirm("Confermi la ristampa della Polizza n. "+numRic+" ?");
}

/*funzione di conferma generica
  PARAMETRI: messagge, messaggio visualizzato*/
function confMessage(message)
{
	return confirm(message);
}

//Cancella il contenuto dei campi del form di ricerca richieste/polizze
function ResettaRicerca(form, tipoutente)
{
  //campi comuni a tutti gli utenti
	form.Stato.value = "";
  form.Codice.value = "";
  form.ggda.value = "";
  form.mmda.value = "";
  form.aada.value = "";
  form.gga.value = "";
  form.mma.value = "";
  form.aaa.value = "";
	
	//controlli diversificati per tipologia utente
	switch(tipoutente)
	{
		//agenzia
		case 1:
			form.Codice_cli.value = "";
			form.Subagenzia.value = "";
			break;
		//direzione
		case 2:
			form.ID_Agenzia.value = "";
			form.ID_Modello.value = "";
			break;
	}
}

/* 
	Avvia in una finestra indipendente la stampa in PDF della polizza passando alla servlet java i parametri necessari
	per la composizione del modello XML
	Parametri			idModello, il codice del modello di polizza che determina il layout di stampa
								idPolizza, il numero della polizza da stampare
								stato, il tipo di fascicolo da generare (completo, copia CED ecc...)
								suFile, indica se il flusso di dati viene gestito come streaming o salvato su file
								allegato, indica se la polizza include un allegato 'Schema tipo' generico o specifico
*/
function stampaPol(idModello, idPolizza, stato, suFile, allegato)
{
  logo = "N";

	  /*PRODUZIONE*/
	  apriFinestra('/LiguriaCauzioni/index.jsp?ID_Polizza='+idPolizza+'&Stato='+stato+'&SuFile='+suFile+'&Logo='+logo+'&Allegato='+allegato,'Stampa','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=800,height=600');
	  /*LOCALE*/
	  //apriFinestra('http://localhost:8080/LiguriaCauzioni/index.jsp?ID_Polizza='+idPolizza+'&Stato='+stato+'&SuFile='+suFile+'&Logo='+logo+'&Allegato='+allegato,'Stampa','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=800,height=600');
	  /*DEMO
	  apriFinestra('http://192.168.0.50:8080/LiguriaCauzioni/index.jsp?ID_Polizza='+idPolizza+'&Stato='+stato+'&SuFile='+suFile+'&Logo='+logo+'&Allegato='+allegato,'Stampa','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=800,height=600');*/
}

//stampa antiriciclaggio aggiunto il 4/12/2006
function stampaAnti(idazienda, suFile)
{
  logo = "N";

	  apriFinestra('/LiguriaCauzioni/indexanti.jsp?ID_Azienda='+idazienda+'&SuFile='+suFile,'Stampa','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=800,height=600');
}
//fine aggiunta

/*Genera il file pdf del modello relativo alla Dichiarazione di Fidejussione, ossia quello contenente i dati delle eventuali ditte coobbligate.*/
function stampaCoobbligati(idModello,idPolizza, stato, suFile)
{
	/*PRODUZIONE*/
	apriFinestra('/LiguriaCauzioni/index2.jsp?ID_Polizza='+idPolizza+'&Stato='+stato+'&SuFile='+suFile+'&ID_Modello='+idModello,'Stampa','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=800,height=600');
	/*LOCALE
	apriFinestra('http://localhost:8080/LiguriaCauzioni/index2.jsp?ID_Polizza='+idPolizza+'&Stato='+stato+'&SuFile='+suFile+'&ID_Modello='+idModello,'Stampa','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=800,height=600');*/
}

/*Genera il file pdf del modello relativo all'allegato generico*/
function stampaAllegatoGN(idModello,idPolizza, stato, suFile)
{
	/*PRODUZIONE*/
	//apriFinestra('/LiguriaCauzioni/index3.jsp?ID_Polizza='+idPolizza+'&Stato='+stato+'&SuFile='+suFile+'&ID_Modello='+idModello,'Stampa','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=800,height=600');
	/*LOCALE*/
	apriFinestra('http://localhost:8080/LiguriaCauzioni/index3.jsp?ID_Polizza='+idPolizza+'&Stato='+stato+'&SuFile='+suFile+'&ID_Modello='+idModello,'Stampa','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=800,height=600');
}

//genera il file xls con il report delle polizze scaricate/non scaricate in omnia
//PARAMETRI: val, filtra le polizze da esportare in base allo stato del download: S = scaricate, N = da scaricare, T = tutte
//					 nomeFile, file che genera il report in xls
//					 agenzia, codice agenzia di cui si filtrano le polizze
function exportToXLS(val,nomeFile,agenzia,modello)
{
	var msg = "";
	if (val == "")
		return;
	else
	{
		switch(val)
		{
			case "S":
				msg = " scaricate";
				break;
			case "N":
				msg = " da scaricare";
				break;
			case "T":
				msg = "";
				break;							
		}
		if(confMessage("Sei sicuro di esportare in excel l'elenco delle polizze"+msg+" ?"))
		{
		finestra = window.open(nomeFile+"?download="+val+"&id_agenzia="+agenzia+"&modelli="+modello,'Export','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=800,height=600');
		finestra.focus();
      
		setTimeout("finestra.close();",2000);
		}
	}
}


//esporta le richieste in un file excel,aggiunto il 21/11/2006
function exportRichToXLS(val,nomeFile,agenzia,modello)
{
	var msg = "";
	if (val == "")
		return;
	else
	{
		switch(val)
		{
			case "S":
				msg = " Richieste non trasformate in polizze";
				break;
			case "N":
				msg = "";
				break;
									
		}
		if(confMessage("Sei sicuro di esportare in excel l'elenco delle"+msg+" ?"))
		{
		finestra = window.open(nomeFile+"?download="+val+"&id_agenzia="+agenzia+"&modelli="+modello,'Export','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=800,height=600');
		finestra.focus();
      
		setTimeout("finestra.close();",2000);
		}
	}
}

//fine inserimento

//Calcola l'importo garantito in base alla percentuale e al costo complessivo indicati.
//Traduce il risultato in lettere utilizzando una libreria esterna e riempie i campi del form html con i valori ottenuti
//In caso di importi che superano i limiti di emissione, pilota il refresh della sezione relativa ai premi
function calcPerc(t, percentuale, r, form, p)
{
	if(p == "") 
	{
		p = "0";
	}
	
  totale = t.replace(",",".");
  risultato = r.replace(",",".");
	preval = p.replace(",",".");
  percentualeQ = form.PercentualeGaranziaQuadratura.value;

  if ((isNaN(parseFloat(totale))) || (parseInt(totale) == 0))
  {
    alert("Deve essere indicato il Costo complessivo previsto dell'opera");
    return false;
  }

  if ((percentuale == ""))
  {
    alert("Deve essere indicata la percentuale");
    return false;
  }

  if ((percentuale != ""))
  {
    percentuale = percentuale.replace(",",".");
    if(parseFloat(percentuale) == 0)
    {
      alert("Indicare una percentuale diversa da 0");
      return false;
    }
    else
    {
      
			res = Math.ceil((parseFloat(totale)*parseFloat(percentuale))/100);
			form.ImportoGaranzia.value = res;
			if(((preval >= 30000) && (res < 30000)) || ((preval < 30000) && (res >= 30000)))
			{
				form.Refresh.value = "Y";
			}
			//else if( ((res >= 30000 && res != preval)) && (form.tipo.value != 0) )
			else if((res >= 30000 && res != preval))
			{
				form.Refresh.value = "Y";
			}
			else
			{
				form.Refresh.value = "N";
			}
			form.PercentualeGaranziaQuadratura.value = percentuale;
			form.ImportoGaranziachiaro.value=digitation(form.ImportoGaranzia.value,true);				
			form.CostoComplessivoChiaro.value=digitation(form.CostoComplessivo.value,true);				
      return true;
    }
	}
}//fine funzione calcperc

//Controlla se l'importo garantito è stato variato oltre i limiti che attivano il calcolo automatico
//o manuale del premio
//PARAMETRI: form, oggetto form HTML
//					 p, somma garantita letta da db
//valido per il modello CZ32
function isIntoLimits(form, p)
{
	if(p == "") 
	{
		p = "0";
	}
	preval = p.replace(",",".");
	thisval = form.ImportoGaranzia.value;
	thisval = thisval.replace(",",".");
	//se la somma garantita è andata oltre i limiti refresha la fascia dei premi
	if(((preval >= 30000) && (thisval < 30000)) || ((preval < 30000) && (thisval >= 30000)))
	{
		form.Refresh.value = "Y";
	}
	//l'importo rimane sopra i limiti ma è diverso da quello precedente
	//occorre refreshare fascia dei premi poichè il totale deve essere ricalcolato
	else if((thisval >= 30000 && thisval != preval))
	{
		form.Refresh.value = "Y";
	}
	//se la somma garantita è rimasta sotto i limiti o se non è stato modificata rispetto alla precedente
	//non occorre refreshare la fascia dei premi
	else
	{
		form.Refresh.value = "N";
	}
}//fine funzione isintolimits

//calcola l'importo del ribasso d'asta
function calcRibasso(t, percentuale, r, nomefascia)
{

  totale = t.replace(",",".");
  risultato = r.replace(",",".");

  if ((isNaN(parseFloat(totale))) || (parseInt(totale) == 0))
  {
    alert("Deve essere indicato il Costo complessivo previsto dell'opera");
    return false;
  }

  if ((percentuale == ""))
  {
    alert("Devono essere indicati la percentuale");
    return false;
  }

  if ((percentuale != ""))
  {
    if(parseInt(percentuale) == 0)
    {
      alert("Indicare una percentuale diversa da 0");
      return false;
    }
    else
    {
      percentuale = percentuale.replace(",",".");
			//res = Math.ceil((parseFloat(totale)*percentuale)/100);
			ribasso = Math.ceil((parseFloat(totale)*parseFloat(percentuale))/100);
			res = parseFloat(totale) - ribasso;
      if (nomefascia == "FasciaB")
      {
        document.FasciaB.ImportoRibassoAsta.value = res;
				document.FasciaB.ImportoRibassoAstaChiaro.value=digitation(document.FasciaB.ImportoRibassoAsta.value,true);
      }
      else if (nomefascia == "FasciaA")
      {
        document.FasciaA.ImportoRibassoAsta.value = res;
				document.FasciaA.ImportoRibassoAstaChiaro.value=digitation(document.FasciaA.ImportoRibassoAsta.value,true);
      }
      return true;
    }
   }
}//fine calcribasso

function verificaPerc(t, percentuale, r, nomefascia)
{
totale = t.replace(",",".");
risultato = r.replace(",",".");

	if ((percentuale != "") && (risultato != ""))
	{
		res = Math.round((parseFloat(totale)*percentuale)/100);
		if (res == Math.round(risultato))
		{
			return true;
		}
		else
		{
			alert("La somma garantita e la percentuale non corrispondono");
			if (nomefascia == "FasciaB")
			{
				document.FasciaB.ImportoGaranzia.value = "";
				document.FasciaB.PercentualeGaranzia.value = "";
			}
			else if (nomefascia == "FasciaA")
			{
				document.FasciaA.ImportoGaranzia.value = "";
				document.FasciaA.PercentualeGaranzia.value = "";
			}
			return false;
		}
 	}
}

/*Consente di confrontare una data con quella di sistema o con un'altra data. 
	Restituisce falso qualora la prima sia antecedente alla seconda.*/
function CompareToSystemDate(firstDate, secondDate)
{
	var dCurrentDate = new Date();
	var dDate = new Date()
	
	dDateTmp = new Date(firstDate + " 00:00:00");
  dDate.setTime(dDateTmp.getTime());	

	if (secondDate != "")
	{
		dCurrentDateTmp = new Date(secondDate + " 00:00:00");
		dCurrentDate.setTime(dCurrentDateTmp.getTime());
	}	
	
	if(Date.parse(dDate) <= Date.parse(dCurrentDate))
	{
		return true;
	}
	else
	{
		return false;
	}
}

/*Consente la scomposizione del premio totale lordo in imponibile, imposte e premio netto. L'utente può indicare, oltre al premio totale,
	anche gli importi relativi all'Accredito (in caso di polizza sostituita) e alle Spese Notarili. Da una tabella di sistema
	viene ricavata l'aliquota di imposta che è di norma collegata al modello di polizza.
	Prima di effettuare i calcoli, la funzione provvede a sostituire, negli importi, le virgole coi punti.
	PARAMETRI: 	NomeFascia, il nome del form HTML in cui vengono effettuati i calcoli relativi alla scomposizione.
	MODELLO: CR01
*/
function ScomponiPremio(NomeFascia)
{
	if(NomeFascia = "FasciaA")
	{
		form = document.FasciaA;
	}
	
	//Non esiste polizza sostituita
	if(form.nrSostituita.value == "")
	{
		//Agenzia e Direzione non possono confermare polizze a premio 0
		if(form.TipoUtente.value != 0)
		{
			//Verifica che il premio lordo sia correttamente valorizzato
			if((form.TotEuro.value.length == 0) || (form.TotEuro.value == "0") || (form.TotEuro.value == "0,00") || (form.TotEuro.value == "0,0"))
			{
				alert("Indicare il premio lordo");
				return false;
			}
			else
			{		
				//Memorizza il premio totale lordo
				pPremio = form.TotEuro.value.replace(",",".");
				pPremio = parseFloat(pPremio);
				//Memorizza l'importo delle spese notarili
				pSpeseNotarili = form.SpeseNotarili.value.replace(",",".");
				//Memorizza l'importo dell'accredito
				pAccredito = form.Accessori.value.replace(",",".");
				//Memorizza l'aliquota di imposta
				pAliquota = form.aliquota.value.replace(",",".");
				//Calcola il coefficiente di scorporo delle imposte
				//pAliquota = (100+parseFloat(pAliquota))/100;
				//Calcola l'imponibile e ne arrotonda il valore al secondo decimale
				pImponibile = roundit(pPremio/pAliquota, 2);
				//Calcola le imposte e ne arrotonda il valore al secondo decimale
				pImposte = roundit((pPremio-pImponibile), 2);
		
				//Calcola il premio netto e ne arrotonda il valore al secondo decimale
				pPremioNetto = roundit(parseFloat(pImponibile)-parseFloat(pSpeseNotarili),2);
				pPremioNetto = roundit(parseFloat(pPremioNetto)+parseFloat(pAccredito), 2);
				
				//Scrive i valori ottenuti nei corrispondenti campi del form HTML e sostituisce ai punti le virgole
				form.PremioNetto.value = pPremioNetto;
				form.PremioNetto.value = form.PremioNetto.value.replace(".",",");
				
				form.Imponibile.value = pImponibile;
				form.Imponibile.value = form.Imponibile.value.replace(".",",");
				
				form.Imposte.value = pImposte;
				form.Imposte.value = form.Imposte.value.replace(".",",");
			}
		}
		//Il cliente può lasciare il premio a zero
		else
		{		
			//Memorizza il premio totale lordo
			pPremio = form.TotEuro.value.replace(",",".");
			pPremio = parseFloat(pPremio);
			//Memorizza l'importo delle spese notarili
			pSpeseNotarili = form.SpeseNotarili.value.replace(",",".");
			//Memorizza l'importo dell'accredito
			pAccredito = form.Accessori.value.replace(",",".");
			//Memorizza l'aliquota di imposta
			pAliquota = form.aliquota.value.replace(",",".");
			//Calcola il coefficiente di scorporo delle imposte
			//pAliquota = (100+parseFloat(pAliquota))/100;
			//Calcola l'imponibile e ne arrotonda il valore al secondo decimale
			pImponibile = roundit(pPremio/pAliquota, 2);
			//Calcola le imposte e ne arrotonda il valore al secondo decimale
			pImposte = roundit((pPremio-pImponibile), 2);
	
			//Calcola il premio netto e ne arrotonda il valore al secondo decimale
			pPremioNetto = roundit(parseFloat(pImponibile)-parseFloat(pSpeseNotarili),2);
			pPremioNetto = roundit(parseFloat(pPremioNetto)+parseFloat(pAccredito), 2);
			
			//Scrive i valori ottenuti nei corrispondenti campi del form HTML e sostituisce ai punti le virgole
			form.PremioNetto.value = pPremioNetto;
			form.PremioNetto.value = form.PremioNetto.value.replace(".",",");
			
			form.Imponibile.value = pImponibile;
			form.Imponibile.value = form.Imponibile.value.replace(".",",");
			
			form.Imposte.value = pImposte;
			form.Imposte.value = form.Imposte.value.replace(".",",");
		}
	}
	//Esiste una polizza sostituita. Il premio può essere uguale 0, ma l'accredito deve essere valorizzato
	else
	{
		//Il premio alla rata è 0
		if((form.TotEuro.value.length == 0) || (form.TotEuro.value == "0") || (form.TotEuro.value == "0,00") || (form.TotEuro.value == "0,0"))
		{
			form.Imponibile.value = "0,00";
			form.Imposte.value = "0,00";
			if((form.Accessori.value == "0,00") || (form.Accessori.value == "0") || (form.Accessori.value.length == 0))
			{
				alert("Indicare l'importo dell'Accredito");
				return false;			
			}
			else
			{
				form.PremioNetto.value = form.Accessori.value;
			}
		}
		else
		{
			//Memorizza il premio totale lordo
			pPremio = form.TotEuro.value.replace(",",".");
			pPremio = parseFloat(pPremio);
			//Memorizza l'importo delle spese notarili
			pSpeseNotarili = form.SpeseNotarili.value.replace(",",".");
			//Memorizza l'importo dell'accredito
			pAccredito = form.Accessori.value.replace(",",".");
			//Memorizza l'aliquota di imposta
			pAliquota = form.aliquota.value.replace(",",".");
			//Calcola il coefficiente di scorporo delle imposte
			//pAliquota = (100+parseFloat(pAliquota))/100;
			//Calcola l'imponibile e ne arrotonda il valore al secondo decimale
			pImponibile = roundit(pPremio/pAliquota, 2);
			//Calcola le imposte e ne arrotonda il valore al secondo decimale
			pImposte = roundit((pPremio-pImponibile), 2);
	
			//Calcola il premio netto e ne arrotonda il valore al secondo decimale
			pPremioNetto = roundit(parseFloat(pImponibile)-parseFloat(pSpeseNotarili),2);
			pPremioNetto = roundit(parseFloat(pPremioNetto)+parseFloat(pAccredito), 2);
			
			//Scrive i valori ottenuti nei corrispondenti campi del form HTML e sostituisce ai punti le virgole
			form.PremioNetto.value = pPremioNetto;
			form.PremioNetto.value = form.PremioNetto.value.replace(".",",");
			
			form.Imponibile.value = pImponibile;
			form.Imponibile.value = form.Imponibile.value.replace(".",",");
			
			form.Imposte.value = pImposte;
			form.Imposte.value = form.Imposte.value.replace(".",",");		
		}
	}
}//FINE FUNZIONE scomponipremio

/*Arrotonda un valore alla cifra decimale desiderata con il metodo dell'arrotondamento matematico.
	PARAMETRI:	Num, il valore da arrotondare
							Places, numero che indica a quale cifra decimale effettuare l'arrotondamento
*/
function roundit(Num, Places) {
   if (Places > 0) {
      if ((Num.toString().length - Num.toString().lastIndexOf('.')) > (Places + 1)) {
         var Rounder = Math.pow(10, Places);
         return Math.round(Num * Rounder) / Rounder;
      }
      else return Num;
   }
   else return Math.round(Num);
}//FINE FUNZIONE roundit


function ClearDate(NomeFascia, Modello)
{

	if(NomeFascia == "FasciaA")
	{
		form = document.FasciaA;
	}
	
	if(Modello == "CR01")
	{
		form.ggFineLavori.value = "";
		form.mmFineLavori.value = "";
		form.aaFineLavori.value = "";

		form.ggdataSca.value = "";
		form.mmdataSca.value = "";
		form.aadataSca.value = "";		
	}
}//FINE FUNZIONE cleardate

//cambia il valore del campo che forza l'utente ad eseguire il ricalcolo del premio
//modelli: CR01, CZ34, CZ32
function ChangePremio(form, val)
{
	form.RicalcolaPremio.value = val;
}

//cambia il valore del campo che controlla se attivare o meno il calcolo
//della somma garantita e del ribasso d'asta in funzione del costo complessivo
//modelli: CZ35
function ChangeStatoCheck(NomeFascia, status)
{
	if(NomeFascia == "FasciaA")
	{
		form = document.FasciaA;
	}
	else
	{
		form = document.FasciaB;
	}

	if(status == "attivo")
	{
		form.statoCheck.value = "disattivo";
		form.Check.value = "off";
	}
	else
	{
		form.statoCheck.value = "attivo";
		form.Check.value = "on";
	}
}//FINE FUNZIONE changestatocheck

//verifica correttezza intervallo date di ricerca
function CheckAnno(startDate, endDate)
{
  MsgErr = "";
	//le date non sono state indicate
	if((startDate == "//") && (endDate == "//"))
	{
		return true;
	}

  //controlla prima data
	if (startDate != "//")
  {
    if (startDate != controllaData(startDate))
    {
      MsgErr = "Data di inizio ricerca non corretta: deve essere nel formato gg/mm/aaaa\n";
    }
  }
  
  //controlla seconda data
	if (endDate != "//")
  {
    if (endDate != controllaData(endDate))
    {
      MsgErr += "Data di fine ricerca non corretta: deve essere nel formato gg/mm/aaaa";
    }
  }
  
	if(MsgErr == "")
	{
		if(!CompareToSystemDate(startDate, endDate))
		{
			MsgErr = "Intervallo di date non corretto.";
		}
	}
	
  if (MsgErr != "")
  {
    alert(MsgErr);
    return false;
  }
  else
  {
		return true;
  }
}//fine checkanno

//restituisce una data nel formato gg/mm/aaaa
//PARAMETRI: data, una stringa che rappresenta una data in vari formati
function controllaData(data)
{
	var arrData = new Array();
	var sep = "/";
 	// Caso di data senza separatori
	if (data.indexOf("/") == -1 && data.indexOf("-") == -1)
	{
 		if (data.length == 6 || data.length == 8)
		{
			arrData[0] = data.substring(0,2);
			arrData[1] = data.substring(2,4);
			arrData[2] = data.substring(4, data.length);
		}
		else
		{
	 		return false;
		}
 	}
 	else														// Caso di data con separatori	
 	{
		sep = "/";
		arrData = data.split(sep);
		if (arrData.length != 3)
	 	{
			sep = "-";
			arrData = data.split(sep);
			if (arrData.length != 3)
			{
				return false;
			}
		}
	}

	for (var i=0; i<arrData[0].length; i++)
	{
		if (arrData[0].charAt(i) < "0" || arrData[0].charAt(i) > "9")
		{
			return false;
		}
	}
	if (isNaN(arrData[0]))
	{
		return false;
	}
	var gg = parseInt(arrData[0], 10)

	for (var i=0; i<arrData[1].length; i++)
	{
		if (arrData[1].charAt(i) < "0" || arrData[1].charAt(i) > "9")
		{
			return false;
		}
	}
	
	if (isNaN(arrData[1]))
	{
		return false;
	}
	var mm = parseInt(arrData[1], 10);

 	for (var i=0; i<arrData[2].length; i++)
	{
 		if (arrData[2].charAt(i) < "0" || arrData[2].charAt(i) > "9")
		{
			return false;
		}
	}
  
	if (isNaN(arrData[2]))
	{
		return false;
	}
 	var aa = parseInt(arrData[2], 10);

	if (aa < 50)
	{
		aa += 2000;
	}
	else
	{
		if (aa < 100)
		{
			aa += 1900;
		}
		else
		{
			if (aa < 1000)
			{
				aa += 1000;
			}
			else
			{
				if (aa.toString().length > 4)
				{
					return false;
				}
			}
		}
	}

 	if (gg < 1 || gg > 31)
 	{
 		return false;
	}
 	if (mm < 1 || mm > 12)
	{
		return false;
	}

 	if (gg > 29 && mm == 2)
	{
		return false;
	}
 
 	if (gg > 28 && mm == 2 && ((aa % 4) != 0 && (aa % 100) != 0))
	{
		return false;
	}
 	if (gg > 30 && (mm == 4 || mm == 6 || mm == 9 || mm == 11) )
	{
		return false;
	}

 	if (gg < 10)
	{
 		gg = "0" + gg.toString();
	}
 	if (mm < 10)
 	{
 		mm = "0" + mm.toString();
	}

	// Se tutto OK la funzione ritorna la stessa data con l'anno sicuramente di 4 bytes
	data = gg.toString() + sep + mm.toString() + sep + aa.toString();
	return data;
}//fine controllodata

function ChangeProroghe (form, val)
{
	var cga = "A parziale deroga delle Condizioni Generali di Assicurazione - Rapporti con l'Ente Garantito - la Società si avvale del termine previsto dal primo comma dell'art. 1957 CC, pertanto le garanzie cessano alla scadenza di polizza.";
	
	
	if ((form.Proroghe.value != "6") && (form.Proroghe.value != "12"))
	{
		if ((form.Proroghe.value == "99")||(form.Proroghe.value == "98"))
		{
			alert ("Attenzione! Il frazionamento scelto prevede le condizioni particolari sotto riportate.");
			form.LuogoEsecuzione.value = cga;
		}
		else
		{
			form.LuogoEsecuzione.value = "";
		}		
		
		if (form.Proroghe.value != "0")
		{
		  form.ggCauzione.value = form.ggdataSca.value;
		  form.mmCauzione.value = form.mmdataSca.value;
		  form.aaCauzione.value = form.aadataSca.value;
		}
		else // frazionamento 0
		{
		form.ggCauzione.value = "";
		form.mmCauzione.value = "";
		form.aaCauzione.value = "";
		}
	}

	else  // =6 o 12
	{
		alert ("Frazionamento proroghe non consentito");
		form.ggCauzione.value = "";
		form.mmCauzione.value = "";
		form.aaCauzione.value = "";
	}
}//fine changepremio

function CalcScadenza (form, durata)
{  
 	var newDate;
	if ((durata == "") || (durata== 0))
	{
		alert ("Durata contratto non compatibile");
		return false;
	}
	mese = form.mmdataDec.value;
	if (mese.substr(0,1) =="0")
	{
   	 mese = mese.substr(1,1);
 	}

  giorno = form.ggdataDec.value;
  if (giorno.substr(0,1) =="0")
  {
    giorno = giorno.substr(1,1);
  }

  anno = form.aadataDec.value;
  gCurrentDate = new Date(parseInt(anno), parseInt(mese)-1, parseInt(giorno),0,0,0,0);
  
  newDate = DateAdd(gCurrentDate, parseInt(durata,10)+1, parseInt("0",10), parseInt("0",10));
  if (newDate.getYear() < 1900)
  {
    form.aadataSca.value = newDate.getYear()+1900;
  }
  else
  {
  	form.aadataSca.value = newDate.getYear();
  } 
  mese= newDate.getMonth()+1;
  mese=mese.toString();
  if (mese.length ==1)
  	mese = "0"+mese;
  form.mmdataSca.value=mese;
  form.ggdataSca.value=newDate.getDate();

}
// modello cz36 controlla se cambia la somma garantita
function isChange (form, vecchioVal)
{

	val = form.ImportoGaranzia.value;
	val = val.replace(",",".");
	vecchioVal = vecchioVal.replace(",",".");	
	if (parseFloat(val) == parseFloat(vecchioVal))
	{ 
		return true;
	}
	else
	{	
		if(form.TipoUtente.value == "0")
			form.Refresh.value = "Y";
		else
			form.RicalcolaPremio.value = "Y";
		
		form.ImportoOld.value = val;
	}
} 

function WriteAllegato(form,id,val,preval,readonly)
{
	if(val == "")
	{
		if((id != "") && (preval == "GN"))
		{
			if(confirm("Cancellare Allegato?"))
			{
				form.TestoAllegato.value = "";
				form.azione.value = 2;
			}
			else
			{
				val = "GN";
				form.azione.value = -1;			
			}
		}
		else if(id != "")
		{
			form.TestoAllegato.value = "";
			form.azione.value = -1;
		}		
		else
		{
			form.TestoAllegato.value = "";
			form.azione.value = -1;			
		}// fine confirm
  }
	else if(val == "GN")
	{
		openAndMoveWin('/Cauzioni/Modelli/CZ30A/Allegato.asp?id='+id+'&readonly='+readonly, 'allegato' ,'toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no',600,300,true);
		if((id != "") && (preval == "GN"))
			form.azione.value = 1;
		else
			form.azione.value = 0;
	}
	form.TipoAllegati.value = val;
	form.Allegato1.value = val;	
}

function SalvaAllegato(form)
{
	if(form.TextAllegato.value.length == 0)
	{
		alert("Inserire un testo per l'allegato");
		return;
	}

	opener.document.forms[0].TestoAllegato.value = form.TextAllegato.value;
	window.close();
}

function AnnullaAllegato(form, testo) //dovrebbe fare il reset
{
	
	opener.document.forms[0].TestoAllegato.value = testo;
	if(testo != "")
	{
		opener.document.forms[0].TipoAllegati.value = "GN";
		opener.document.forms[0].Allegato1.value = "GN";
	}
	else
	{
		opener.document.forms[0].TipoAllegati.value = "";
		opener.document.forms[0].Allegato1.value = "";
	}
		
	opener.document.forms[0].azione.value = -1;
	window.close();
}

//modello IVA  visualizza fascia b variabile in base alla scelta selezionata
function showRimborso(num1,num2,num3,num4)
{

	if(num1 == "")
		num1 = "1";
	else if(num1 == "2")
	{
		num2 = "1";
		num3 = "3";
		num4 = "4";
	}
	else if(num1 == "3")
	{
		num2 = "1";
		num3 = "2";
		num4 = "4";
	}
	else if(num1 == "4")
	{
		num2 = "1";
		num3 = "2";
		num4 = "3";
	}
	
obj= document.getElementById("Rimborso"+num1);

obj.style.display="Block";

objR= document.getElementById(num1+"z");
objR.disabled=false;
objR= document.getElementById(num1+"a");
objR.disabled=false;
objR= document.getElementById(num1+"b");
objR.disabled=false;
objR= document.getElementById(num1+"c");
objR.disabled=false;
objR= document.getElementById(num1+"d");
objR.disabled=false;
objR= document.getElementById(num1+"e");
objR.disabled=false;
objR= document.getElementById(num1+"f");
objR.disabled=false;
objR = document.getElementById(num1+"h");
objR.disabled=false;

obj= document.getElementById("Rimborso"+ num2);
obj.style.display="None";
objR= document.getElementById(num2+"z");
objR.disabled=true;
objR= document.getElementById(num2+"a");
objR.disabled=true;
objR= document.getElementById(num2+"b");
objR.disabled=true;
objR= document.getElementById(num2+"c");
objR.disabled=true;
objR= document.getElementById(num2+"d");
objR.disabled=true;
objR= document.getElementById(num2+"e");
objR.disabled=true;
objR= document.getElementById(num2+"f");
objR.disabled=true;
objR = document.getElementById(num2+"h");
objR.disabled=true;

obj= document.getElementById("Rimborso"+num3);
obj.style.display="None";
objR= document.getElementById(num3+"z");
objR.disabled=true;
objR= document.getElementById(num3+"a");
objR.disabled=true;
objR= document.getElementById(num3+"b");
objR.disabled=true;
objR= document.getElementById(num3+"c");
objR.disabled=true;
objR= document.getElementById(num3+"d");
objR.disabled=true;
objR= document.getElementById(num3+"e");
objR.disabled=true;
objR= document.getElementById(num3+"f");
objR.disabled=true;
objR = document.getElementById(num3+"h");
objR.disabled=true;

obj= document.getElementById("Rimborso"+num4);
obj.style.display="None";
objR= document.getElementById(num4+"z");
objR.disabled=true;
objR= document.getElementById(num4+"a");
objR.disabled=true;
objR= document.getElementById(num4+"b");
objR.disabled=true;
objR= document.getElementById(num4+"c");
objR.disabled=true;
objR= document.getElementById(num4+"d");
objR.disabled=true;
objR = document.getElementById(num4+"e");
objR.disabled=true;
objR = document.getElementById(num4+"f");
objR.disabled=true;
objR = document.getElementById(num4+"h");
objR.disabled=true;
}

function CalcRimborsoIVA(form, id)
{
	
	if (form.CostoComplessivo.value.length == 0)
	{
			alert("Il campo Importo a rimborso è obbligatorio");
		
	}
	else if (parseFloat(form.CostoComplessivo.value) > parseFloat(form.ImportoRibassoAsta.value))
	{
			 alert("Il campo Importo a rimborso deve essere minore uguale all'Eccedenza iva detraibile");
	}
	else
	{		 
		ImportoR = form.CostoComplessivo.value;
		
		obj = document.getElementById(id+"z");//franchigia
		Franchi=obj.value;
		form.franchigia.value=digitation(Franchi,true);// traduzione in lettere 
		Franch=obj.value.replace(",",".");	
		ImportoR= ImportoR.replace(",",".");
		if (Franchi.length == 0)
		{ 
    	alert("Il campo Franchigia è obbligatorio");
	   
		}
		else if (parseFloat(ImportoR)>parseFloat(Franch))		
		{			
			document.getElementById(id+"a").value = parseFloat(ImportoR) - parseFloat(Franch);//Rimborso
			document.getElementById(id+"a").value=document.getElementById(id+"a").value.replace(".",",");
			obj = document.getElementById(id+"a");
			Rimb=obj.value;
			Rimb=Rimb.replace(",",".");
			document.getElementById(id+"b").value=((parseFloat(Rimb)*2)/100);//interessi			
			document.getElementById(id+"b").value=document.getElementById(id+"b").value.replace(".",",");
			obj = document.getElementById(id+"b");
			Int1=obj.value;
			form.interessi1.value=digitation(Int1,true);// traduzione in lettere 
			Int1=Int1.replace(",",".");
			document.getElementById(id+"c").value=parseFloat(Rimb)+parseFloat(Int1);//subTot1 a+b
			document.getElementById(id+"c").value=document.getElementById(id+"c").value.replace(".",",");
			obj = document.getElementById(id+"c");
			SubTot1=obj.value;
			SubTot1=SubTot1.replace(",",".");
			if ( ( id=="3" ) || ( id=="4" ) )
			{
					document.getElementById(id+"d").value=(parseFloat(SubTot1)*1)/100;//Int2
					document.getElementById(id+"d").value=document.getElementById(id+"d").value.replace(".",",");
					obj=document.getElementById(id+"d");
					Int2=obj.value;
					form.interessi2.value=digitation(Int2,true);// traduzione in lettere 
					Int2=Int2.replace(",",".");
					document.getElementById(id+"e").value=parseFloat(SubTot1)+parseFloat(Int2);//subTot2
					document.getElementById(id+"e").value=document.getElementById(id+"e").value.replace(".",",");
					obj=document.getElementById(id+"e");
					SubTot2=obj.value;
					SubTot2=SubTot2.replace(",",".");
			}
			else
			{
				document.getElementById(id+"d").value= 0;
				document.getElementById(id+"d").value=document.getElementById(id+"d").value.replace(".",",");
				obj=document.getElementById(id+"d");
				Int2=obj.value;
				Int2=Int2.replace(",",".");
				document.getElementById(id+"e").value= 0;
				document.getElementById(id+"e").value=document.getElementById(id+"e").value.replace(".",",");
				obj=document.getElementById(id+"e");
				SubTot2=obj.value;
				SubTot2=SubTot2.replace(",",".");
			}
	
			document.getElementById(id+"f").value=parseFloat(SubTot1)+parseFloat(Int2);
			document.getElementById(id+"f").value = document.getElementById(id+"f").value.replace(".",",");
			obj=document.getElementById(id+"f");
			Tot=obj.value;
			form.totale.value=digitation(Tot,true);// traduzione in lettere 
		  Tot=Tot.replace(".",",");
			form.ImportoGaranzia.value=Tot;
		}//controllo franchigia
		else
		{
			alert("Il campo Franchigia non può essere superiore all' Importo a Rimborso");
		}
	}// else
}

