//------------------------------------------------------
//variabile globale per i prefissi delle tabelle di decodifica.
//ATTENZIONE: forse andrebbe in un file con variabili globali
var sql_codici='codici_lavoro';
//------------------------------------------------------

//gestisce il submit in maniera da non permetterne piu' di 1.
var inviato = false;
//------------------------------------------------------

//======================================================
//		CONTROLLO CAMPI TESTO
//======================================================

function manipolaStringaPerLike(str)
{
	if(str == "") {str = "%";}
	str=str.replace (/\*/g, '%');
	str=str.replace (/\'/g, "''");
	return str;
}

//--------------------------------------------------
//gestione caratteri Jolly in un campo di ricerca.---

function posCaratteriJolly(str)
	//Ritorna la posizione del primo carattere Jolly 
	{
	var pos, re;                
	re = /%|\*/;						//Crea espressione con criteri regolare.
	pos = str.search(re);				//Ricerca la stringa.
	return pos;
	}
function existCaratteriJolly(str,posizione)
	//Ritorna true se la stringa 'str' contiene caratteri Jolly 
	//prima della posizione indicata
	{
	var pos = posCaratteriJolly(str);
	if( pos > -1 && pos < posizione )
		return true;
	else
		return false;
	}
//--------------------------------------------------

function codiceCapoNonValido( str, car )
	//gestione lunghezza e caratteri Jolly di un campo 
	//contente il codice di un capo bovino. 
	{
	if(	( str.length < car ) ||
		( existCaratteriJolly( str, car) ))
		{
		return true;
		}
	else
		{
		return false;
		}
	}
//--------------------------------------------------

function codiceCapoNonValidoIT( str, car )
	//gestione lunghezza e caratteri Jolly di un campo 
	//contente un capo bovino. Controllando anche che i primi 
	//caratteri siano IT o meno.
	{
	var stato = str.substr(0,2);
	var car = (stato!='IT')?car:car+2;
	return codiceCapoNonValido( str, car );
	}
//--------------------------------------------------

function maiuscolo(campo) 
{
//	alert(campo.value.length);
	if (campo.value.length > 0) {campo.value=campo.value.toUpperCase()}
}

function keypress_int()
{
	// evita l'input di campi alfa in un campo numerico
	if  (((event.keyCode < 48) || (event.keyCode > 57)) && (event.keyCode != 8))
		event.returnValue = false;
}

function checkNum(str, min, max) {    
	if (str == "") {
//	alert("<TRADUZIONE>TR_JS_INSER7</TRADUZIONE>"); 
     return false;}
   	if (isNaN(str)) {
	// alert("<TRADUZIONE>TR_JS_ILVAL1</TRADUZIONE>"); 
	return false;}
	var val = parseFloat(str, 10);   
	if (val < min || val > max) 
		{ 
	// alert("<TRADUZIONE>TR_MAN_INSER6</TRADUZIONE> "+ min +"<TRADUZIONE>TR_MAN_E</TRADUZIONE>"+ max +"."); 
		return false;
		}    
	return true;
}

//======================================================
//		DATE
//======================================================
function messaggio_evento_comunicazione(evento,notifica,gg,msg)
	{

	if (msg == undefined)
		{
		msg="";
		}

	var evento_plus = evento+((1000*60*60*24)*gg);


	if (notifica>evento_plus)
		{
		alert(msg+"<TRADUZIONE>TR_MAN_ATTEN23</TRADUZIONE> "+ gg +" <TRADUZIONE>TR_MAN_GIORN2</TRADUZIONE>");
		return true;
		}
	else
		{
		return false; 
		}
	}

function controllo_data_futura(gg,mm,yyyy,nome_data_di)
	{
	if (gg=="" && mm=="" && yyyy=="")
	{return true;
	}
	
	//in IE 6.0 undefined non deve essere tra apici altrimenti non verifica l'uguaglianza
	if (nome_data_di=='' || nome_data_di==undefined)
		{nome_data_di="";}
	 

	if (!(checkNum(gg,1,31))) {alert("<TRADUZIONE>TR_JS_GIORN</TRADUZIONE>");return false;}
	if (!(checkNum(mm,1,12))) {alert("<TRADUZIONE>TR_JS_MESEN</TRADUZIONE>");return false;}
	if (!(checkNum(yyyy,1960,4712))) {alert("<TRADUZIONE>TR_JS_ANNON</TRADUZIONE>");return false;}
		
	var c_data=mm+"/"+gg+"/"+yyyy;
	var p_data=new Date(c_data);

    var s_data = Date.parse(p_data);

	var now = new Date();
    var s_now  = Date.parse(now);

    var min_data = new Date(1960,0,1);
	var s_min_data = Date.parse(min_data);
	
	//if (s_data > s_now) {alert("<TRADUZIONE>TR_MAN_LADAT143</TRADUZIONE> "+ nome_data_di + " <TRADUZIONE>TR_MAN_DEVEE</TRADUZIONE>"); return false;}
	
	if (s_data < s_min_data) {alert("<TRADUZIONE>TR_MAN_LADAT143</TRADUZIONE> "+ nome_data_di + " <TRADUZIONE>TR_MAN_DEVEE2</TRADUZIONE>"); return false;}


	switch (gg)
	{
	  case "31":
		if (mm=='02' || mm=='04' || mm=='06' || mm=='09' || mm=='11') 
		  {
		  if (nome_data_di=="") alert("<TRADUZIONE>TR_JS_ILGIO</TRADUZIONE>");
		  else alert("<TRADUZIONE>TR_MAN_VERIF1</TRADUZIONE> " + nome_data_di + ", <TRADUZIONE>TR_MAN_ILGIO10</TRADUZIONE>"); 
		  return false;
		  }
		break;
	  case "30":
		if (mm=='02') 
			{
			if (nome_data_di=="") alert("<TRADUZIONE>TR_JS_ILGIO1</TRADUZIONE>");
			else alert("<TRADUZIONE>TR_MAN_VERIF1</TRADUZIONE> " + nome_data_di + ", <TRADUZIONE>TR_MAN_ILGIO11</TRADUZIONE>"); 
			return false;
			}
  		break;
	  case "29":
		if ((mm=='02') && (yyyy%4 || (yyyy%100 ? false : yyyy%400))) 
		{
			if (nome_data_di=="") alert("<TRADUZIONE>TR_JS_NELLA2</TRADUZIONE>");
			else alert("<TRADUZIONE>TR_MAN_VERIF1</TRADUZIONE> " + nome_data_di + ", <TRADUZIONE>TR_MAN_NELLA2</TRADUZIONE>"); 
			return false;
		}
		break;
	  default: return true;
	  }
	  
	  return true;
}

function controllo_data(gg,mm,yyyy,nome_data_di)
	{
	if( controllo_data_futura(gg,mm,yyyy,nome_data_di) == false)
		{
		return false;
		}
		
	var c_data=mm+"/"+gg+"/"+yyyy;
	var p_data=new Date(c_data);
    var s_data = Date.parse(p_data);

	var now = new Date();
    var s_now  = Date.parse(now);

	if (s_data > s_now) 
		{
		alert("<TRADUZIONE>TR_MAN_LADAT143</TRADUZIONE> "+ nome_data_di + " <TRADUZIONE>TR_MAN_DEVEE</TRADUZIONE>"); 
		return false;
		}
	else
		{
	  	return true;
		}
}

function var_data(gg,mm,yyyy) 
	//prende in input il giorno il mese e l'anno e restituisce una variabile data
	//In caso di problemi ritorna un numero corrispondente ai millisecondi
	//dal 1970. Questo valore può essere usato per confronti fra date
	{
	if (gg=="" || mm=="" || yyyy=="")
		{
		return "";	
		}

	if (!(checkNum(gg,1,31))) {return "";}
	if (!(checkNum(mm,1,12))) {return "";	}
	
	var c_data=mm+"/"+gg+"/"+yyyy;
	var p_data=new Date(c_data);
    var s_data = Date.parse(p_data);
	return s_data;
	}

//======================================================
//		LATITUDINE LONGITUDINE
//======================================================

function controlloLongitudine(campo,campo2)
	{
	// Ci si aspetta che il form contenga questi campi:
	//		P_LONGITUDINE_MIN				    
	//		P_LONGITUDINE_MAX				    
	//		P_COM_DESCRIZIONE			


	//Valori di Min e Max di Latitudine del comune selezionato
	var Longitudine_Min=document.formPrincipale.P_LONGITUDINE_MIN.value;
	var Longitudine_Max=document.formPrincipale.P_LONGITUDINE_MAX.value;
	//Valore di Latitudine inserito dall'utente
	var Longitudine = campo.value + '.' + campo2.value;

	//Conversione in number dei valori di Latitudine_Min,Latitudine_Max,Latitudine
	Longitudine_Min=Longitudine_Min.replace(",",".");
	Longitudine_Min = parseFloat(Longitudine_Min);

	Longitudine_Max=Longitudine_Max.replace(",",".");
	Longitudine_Max = parseFloat(Longitudine_Max);

	Longitudine = parseFloat(Longitudine);



	if (campo2.value.length > 0)
		if (isNaN(campo2.value))
			{
			alert("<TRADUZIONE>TR_JS_LALON1</TRADUZIONE>")
			campo2.focus()
			return false
			}
	if(campo.value!='')
		{
		if (isNaN(campo.value))
			{
			alert("<TRADUZIONE>TR_JS_LALON1</TRADUZIONE>")
			campo.focus()
			return false
			}
		//Controllo Longitudine serba
		if(global_ambiente=="AIRSERBIA")
		{
			if(campo.value<18||campo.value>24)
				{
				alert("<TRADUZIONE>TR_MAN_LALON</TRADUZIONE>");
				campo.focus();
				return false;
				}
		}
		else
			{
			if( (Longitudine < Longitudine_Min) || (Longitudine > Longitudine_Max))
			{
			alert('<TRADUZIONE>TR_MAN_ILVAL1</TRADUZIONE> '+ document.formPrincipale.P_COM_DESCRIZIONE.value + ' <TRADUZIONE>TR_MAN_DEVEE3</TRADUZIONE> ' + document.formPrincipale.P_LONGITUDINE_MIN.value + ' <TRADUZIONE>TR_JS_E</TRADUZIONE> ' + document.formPrincipale.P_LONGITUDINE_MAX.value);
			campo.focus();
			return false;
			}
			//----------------------------
			//Controllo Longitudine Italia
//			if(campo.value<7||campo.value>18)
//			{
//			alert("<TRADUZIONE>TR_JS_LALON</TRADUZIONE>");
//			campo.focus();
//			return false;
//			}
		}
		//----------------------------
			}
		
	return true;
	}

function controlloLatitudine(campo,campo2)
	{
	// Ci si aspetta che il form contenga questi campi:
	//		P_LONGITUDINE_MIN				    
	//		P_LONGITUDINE_MAX				    
	//		P_COM_DESCRIZIONE		


	//Valori di Min e Max di Latitudine del comune selezionato
	var Latitudine_Min=document.formPrincipale.P_LATITUDINE_MIN.value;
	var Latitudine_Max=document.formPrincipale.P_LATITUDINE_MAX.value;
	//Valore di Latitudine inserito dall'utente
	var Latitudine = campo.value + '.' + campo2.value;
	//Conversione in number dei valori di Latitudine_Min,Latitudine_Max,Latitudine
	Latitudine_Min=Latitudine_Min.replace(",",".");
	Latitudine_Min = parseFloat(Latitudine_Min);

	Latitudine_Max=Latitudine_Max.replace(",",".");
	Latitudine_Max = parseFloat(Latitudine_Max);

	Latitudine = parseFloat(Latitudine);

	if (campo2.value.length > 0)
		if (isNaN(campo2.value))
			{
			alert("<TRADUZIONE>TR_JS_LALAT1</TRADUZIONE>")
			campo2.focus()
			return false
			}
	if(campo.value!='')
		{
		if (isNaN(campo.value))
			{
			alert("<TRADUZIONE>TR_JS_LALAT1</TRADUZIONE>")
			campo.focus()
			return false
			}
		//Controllo Latitudine serba
		if(global_ambiente=="AIRSERBIA")
		{
			if(campo.value<41||campo.value>47)
				{
				alert("<TRADUZIONE>TR_MAN_LALAT</TRADUZIONE>");
				campo.focus();
				return false;
				}
		}
		else
			{
			//Controllo Latitudine Italia
//			if(campo.value<37||campo.value>47)
//				{
//				alert("<TRADUZIONE>TR_JS_LALAT</TRADUZIONE>");
//				campo.focus();
//				return false;
//				}

			//Controllo Latitudine sui limiti del comune selezionato
			if( (Latitudine < Latitudine_Min) || (Latitudine>Latitudine_Max))
				{
				alert('<TRADUZIONE>TR_MAN_ILVAL</TRADUZIONE> '+ document.formPrincipale.P_COM_DESCRIZIONE.value + ' <TRADUZIONE>TR_MAN_DEVEE3</TRADUZIONE> ' + document.formPrincipale.P_LATITUDINE_MIN.value + ' <TRADUZIONE>TR_JS_E</TRADUZIONE> ' + document.formPrincipale.P_LATITUDINE_MAX.value);
				campo.focus();
				return false;
				}
			}
		}
	return true;
	}

//======================================================
//		CODICE FISCALE
//======================================================

function controlla_check_11(codice) {
  totale = 0;
	for  (var i = 0; i < 10; i++) {
				aggiungi = ((i%2) == 0) ? Number(codice.charAt(i)) : (2 * Number(codice.charAt(i)));
				if (aggiungi > 9) {
				 cifra = 1 + (aggiungi%10);
				}
				else {
				 cifra = aggiungi;
				}
				totale += cifra;
	}
			check = 10 - (totale%10);
			return (check%10);
}

function converti_pari_16(carattere) {
 if (carattere == "A" || carattere == "0") return "0";
 if (carattere == "B" || carattere == "1") return "1";
 if (carattere == "C" || carattere == "2") return "2";
 if (carattere == "D" || carattere == "3") return "3";
 if (carattere == "E" || carattere == "4") return "4";
 if (carattere == "F" || carattere == "5") return "5";
 if (carattere == "G" || carattere == "6") return "6";
 if (carattere == "H" || carattere == "7") return "7";
 if (carattere == "I" || carattere == "8") return "8";
 if (carattere == "J" || carattere == "9") return "9";
 if (carattere == "K") return "10";
 if (carattere == "L") return "11";
 if (carattere == "M") return "12";
 if (carattere == "N") return "13";
 if (carattere == "O") return "14";
 if (carattere == "P") return "15";
 if (carattere == "Q") return "16";
 if (carattere == "R") return "17";
 if (carattere == "S") return "18";
 if (carattere == "T") return "19";
 if (carattere == "U") return "20";
 if (carattere == "V") return "21";
 if (carattere == "W") return "22";
 if (carattere == "X") return "23";
 if (carattere == "Y") return "24";
 if (carattere == "Z") return "25";
}

function converti_dispari_16(carattere) {
 if (carattere == "A" || carattere == "0") return "1";
 if (carattere == "B" || carattere == "1") return "0";
 if (carattere == "C" || carattere == "2") return "5";
 if (carattere == "D" || carattere == "3") return "7";
 if (carattere == "E" || carattere == "4") return "9";
 if (carattere == "F" || carattere == "5") return "13";
 if (carattere == "G" || carattere == "6") return "15";
 if (carattere == "H" || carattere == "7") return "17";
 if (carattere == "I" || carattere == "8") return "19";
 if (carattere == "J" || carattere == "9") return "21";
 if (carattere == "K") return "2";
 if (carattere == "L") return "4";
 if (carattere == "M") return "18";
 if (carattere == "N") return "20";
 if (carattere == "O") return "11";
 if (carattere == "P") return "3";
 if (carattere == "Q") return "6";
 if (carattere == "R") return "8";
 if (carattere == "S") return "12";
 if (carattere == "T") return "14";
 if (carattere == "U") return "16";
 if (carattere == "V") return "10";
 if (carattere == "W") return "22";
 if (carattere == "X") return "25";
 if (carattere == "Y") return "24";
 if (carattere == "Z") return "23";
}

function converti_check_16(numero) {
	if (numero == 0) return "A";
	if (numero == 1) return "B";
	if (numero == 2) return "C";
	if (numero == 3) return "D";
	if (numero == 4) return "E";
	if (numero == 5) return "F";
	if (numero == 6) return "G";
	if (numero == 7) return "H";
	if (numero == 8) return "I";
	if (numero == 9) return "J";
	if (numero == 10) return "K";
	if (numero == 11) return "L";
	if (numero == 12) return "M";
	if (numero == 13) return "N";
	if (numero == 14) return "O";
	if (numero == 15) return "P";
	if (numero == 16) return "Q";
	if (numero == 17) return "R";
	if (numero == 18) return "S";
	if (numero == 19) return "T";
	if (numero == 20) return "U";
	if (numero == 21) return "V";
	if (numero == 22) return "W";
	if (numero == 23) return "X";
	if (numero == 24) return "Y";
	if (numero == 25) return "Z";
}

function controlla_check_16(codice) {
  totale = 0;
	for  (var i = 0; i < 15; i++) {
				aggiungi = ((i%2) == 0) ? Number(converti_dispari_16(codice.charAt(i))) : Number(converti_pari_16(codice.charAt(i)));
				totale += aggiungi;
	}
			check = converti_check_16(totale%26);
			return check;
}

function controllo_cod_fisc(codice)
	{
	if (global_ambiente == 'AIRSERBIA')
		{
		return true;
		}
	codice=codice.toUpperCase();
	if (codice.length == 11) {
	if (isNaN(codice)) {
			return false;
	 }
	 else {if (controlla_check_11(codice) == codice.charAt(10)) {
				   return true;
			}
			else {
				 return false;
		   }
	 }
  }
  else {
       if (codice.length == 16) {
        //numerici = codice.substr(6,2) + codice.substr(9,2) + codice.substr(12,3);
    	 if (isNaN(codice.substr(0,1)) && isNaN(codice.substr(1,1)) && isNaN(codice.substr(2,1)) && isNaN(codice.substr(3,1)) && isNaN(codice.substr(4,1)) && isNaN(codice.substr(5,1)) && isNaN(codice.substr(8,1)) && isNaN(codice.substr(11,1)) && isNaN(codice.substr(15,1))) {
    	  if (controlla_check_16(codice) == codice.charAt(15)) {
				    return true;
		  }
		  else {
 		    return false;
		  }
        }
        else {
			return false;
		 } 
       }
       else {return false;
       }
  }
}

//======================================================
//		E-MAIL
//======================================================
function controllo_email( str ) {
	var match = /(\w|[\-\.àèìòù])+@(\w|[\-\.àèìòù])+/; //ExpReg di match. Forse da estendere
	var posizione = str.search(match);
	return (posizione == 0);
	
}

//======================================================
//		VARIE
//======================================================
function visualizza_testo(casella_di_testo,rw)
	{
	if (rw==undefined || rw.toUpperCase()!="R")
		{
		rw="RW";
		}
	else rw=rw.toUpperCase();
	var parametro=new Array(casella_di_testo.value,rw);
	var z= showModalDialog("/include_js/Edit_Text.html",parametro,"dialogHeight:400px;dialogWidth:600px;scroll:no;status:no");
	if (z[0])
		{
		casella_di_testo.value=z[1];
		}
	}

//funzione che effettua il reload della pagina lista_check 
//ogni volta che vi si torna indietro col browser 
function carica_da_SERVER()
	{
			var i=0;
			var check=false;
			while (document.all("P_SELEZIONE_" +i))
					{
					if(document.all("P_SELEZIONE_" +i).checked)
							{
							check=true
							}
					i++;
					}
			if  (check == true)
				{
				location.reload(true);
				}
	}

//--------------------------------------------------------------------------
//funzione che permette l'inserimento dei campi di input solo di caratteri
//numerici, alfanumerici e i caratteri @ - . - '
function IEKeyCap() 
{
var tasto=window.event.keyCode;
	if ((tasto == 224) || (tasto == 232) || (tasto == 233) || (tasto == 236) || (tasto == 242) || (tasto == 249) || (tasto == 180)) // 
		{ // Cattura e rimappa i caratteri che NON devono passare con il carattere non stampabile BELL - à è é ì ò ù ´ 
			window.event.keyCode = 07;
		}
}

if (document.captureEvents) document.captureEvents(Event.KEYPRESS);
document.onkeypress=function(){IEKeyCap();}

//----------------------------------------------------------------------------------------------------------



//----------------------------------------------------------------------------------------------------------
// Usata dalle pagine di inserimento avanzato, in cui sono presenti le textarea per l'inserimento dei codici
// Controlla se i dati inseriti sono adeguati e poi crea un campo con tutti i codici separati da virgola
// da mandare al fin perl che lo splitterà
// campo_text:	è il valore della textarea
// campo_fin:	campo con tutti i valori dei codici separati da virgola
function controlla_lista(campo_text,campo_fin)
		{
		//Separa allevamenti e li controlla
		ta=encodeURI(campo_text); 
		tt=ta.split('%0D%0A');
		var linea="";
		var avviso="";
		var flagvalido=true;
		var limiteInf = 4;
		var limiteSup = 14;

		for (var j=0;j<tt.length; j++)
			{
			if (tt[j].length==0)
				{linea=linea+" "+(j+1)}
			if (( tt[j].length > 0 )&&
				( tt[j].length < limiteInf )&&
				( tt[j].length > limiteSup ))
				{
				avviso="<TRADUZIONE>TR_MAN_ILCOD13</TRADUZIONE>"+(j+1)+"<TRADUZIONE>TR_MAN_DEVEE3</TRADUZIONE>" + limiteInf + "<TRADUZIONE>TR_MAN_E</TRADUZIONE>" + limiteSup + ".\n";
				}
			}

		if (linea.length==2)
			{avviso=avviso+"<TRADUZIONE>TR_MAN_ALLAL</TRADUZIONE>"+linea+"<TRADUZIONE>TR_MAN_CUNCO</TRADUZIONE>";
			flagvalido=false;}
		if (linea.length>2)
			{avviso=avviso+"<TRADUZIONE>TR_MAN_ALLEL</TRADUZIONE>"+linea+"<TRADUZIONE>TR_MAN_CISON</TRADUZIONE>";
			flagvalido=false;}
		if (avviso.length>0) 
			{alert(avviso);
			flagvalido=false;}

		//Genera campi
		if (flagvalido)
			{
			var strHTML="";
			for (var j=0;j<tt.length; j++)
				{
				strHTML=strHTML+tt[j]+",";
				}
				document.all(campo_fin).value=strHTML.substr(0,strHTML.length-1);
				return true;
			}
			else
			{return false};
		}

//-------------------------------------------------------------------------

// Apre la lov però prima controlla se il campo è pieno
function apri_lov(cod,esegui_lov,obb)
		{
		if(cod == '') 
			{if ((document.activeElement.nodeName!='A')&&(obb==1))
				{alert('<TRADUZIONE>TR_JS_ILCOD35</TRADUZIONE>');}
			return;}

		var flag_di_controllo = "valore_vuoto";
		if (flag_di_controllo == "valore_selezionato")
			{
			var richiesta = window.confirm("<TRADUZIONE>TR_JS_SELEZ35</TRADUZIONE>");
			if (richiesta)
				{
				eval(esegui_lov.toString());
				flag_di_controllo = "valore_vuoto";
				} 
			}
		else
			{
			eval(esegui_lov.toString());
			flag_di_controllo = "valore_vuoto";
			}
		}
//-------------------------------------------------------------------------

//-------------------------------------------------------------------------
// Apre la lov però prima controlla se il campo è pieno

// cod_val = il valore del campo input inserito
// cod_min = il valore minino per cui non deve partire la LOV
// esegui_lov = è il nome della funzione LOV che deve essere eseguita

function verifica_lov(cod_val,cod_min,esegui_lov)
		{
		if(cod_val>cod_min)
			{
			eval(esegui_lov.toString());
			return;
			}
			else
			{return;}
		}

//-------------------------------------------------------------------------

//======================================================
//		BUTTON E ALTRI CONTROLLI JS
//======================================================
function invioEffettuato( btn )
	//disabilita il bottone btn
	{
	btn.disabled=true;
	}

//============================================================================
//				CONTROLLI SULLA RICERCA CAPI MACELLATI 
//============================================================================
var alertChkCapiMacellati = "		<TRADUZIONE>TR_MAN_CONTR2</TRADUZIONE> \n" +

"<TRADUZIONE>TR_MAN_1SEIC</TRADUZIONE>\n"+
"<TRADUZIONE>TR_MAN_2SEIL</TRADUZIONE>\n"+
"    <TRADUZIONE>TR_MAN_SUUNI</TRADUZIONE>\n"+
"<TRADUZIONE>TR_MAN_3SEIL</TRADUZIONE>\n"+
"    <TRADUZIONE>TR_MAN_SUUNI1</TRADUZIONE>\n"+
"<TRADUZIONE>TR_MAN_4SEIL</TRADUZIONE>\n"+
"    <TRADUZIONE>TR_MAN_QUALS</TRADUZIONE>\n";
		

function check_ricerca_capi_macellati_dt( frm, maxIntervallo )
	// Effettua il controllo sui campi DATA del form di ricerca 'frm'
	// Per le macellazioni. Si aspetta nel form i campi:
	//		P_DT_MACELLAZIONE_GG_DA (AA,MM)
	//		P_DT_MACELLAZIONE_GG_A (AA,MM)
	//		P_RIC_CAPO_ESATTA
	{	
	if(!controllo_data(	frm.P_DT_MACELLAZIONE_GG_DA.value,
						frm.P_DT_MACELLAZIONE_MM_DA.value,
						frm.P_DT_MACELLAZIONE_AA_DA.value,"<TRADUZIONE>TR_DIMAC</TRADUZIONE>"))
		{
		frm.P_DT_MACELLAZIONE_GG_DA.focus();
		return false;
		}
	if(!controllo_data(	frm.P_DT_MACELLAZIONE_GG_A.value,
						frm.P_DT_MACELLAZIONE_MM_A.value,
						frm.P_DT_MACELLAZIONE_AA_A.value,"<TRADUZIONE>TR_DIMAC</TRADUZIONE>"))
		{
		frm.P_DT_MACELLAZIONE_GG_A.focus();
		return false;
		}

	//date in millisec
	var dtDa = var_data(frm.P_DT_MACELLAZIONE_GG_DA.value,frm.P_DT_MACELLAZIONE_MM_DA.value,frm.P_DT_MACELLAZIONE_AA_DA.value);
	var dtA = var_data(frm.P_DT_MACELLAZIONE_GG_A.value,frm.P_DT_MACELLAZIONE_MM_A.value,frm.P_DT_MACELLAZIONE_AA_A.value); 

	//intervallo congruente
	if( dtDa > dtA )
		{
		alert("<TRADUZIONE>TR_JS_LADAT26</TRADUZIONE>" );
		return false;
		}

	//intervallo massimo possibile
	if(( ! frm.P_RIC_CAPO_ESATTA.checked )&&( dtA - dtDa > maxIntervallo ))
		{
		return false;
		}

	return true;
}
//----------------------------------------------------------------------------

function check_ricerca_capi_macellati_capo( frm )
	// Effettua il controllo sul CAPO
	// Ci si aspetta che il form contenga questi campi:
	//		P_CAPO_CODICE
	//		P_RIC_CAPO_ESATTA_VALORE
	{	
	var str = frm.P_CAPO_CODICE.value;
	var len = str.length + 1;

	if( frm.P_RIC_CAPO_ESATTA_VALORE.value != '' && existCaratteriJolly( str, len ) )
		{
		alert('<TRADUZIONE>TR_JS_ILCOD36</TRADUZIONE>');
		return false;
		}

	//max car. ammissibili per un capo
	var maxCarCapo = 3;								
	if( codiceCapoNonValidoIT( frm.P_CAPO_CODICE.value, maxCarCapo ))
		{
		maxCarCapoIT  = maxCarCapo + 2;
		alert(	"<TRADUZIONE>TR_MAN_ILCOD14</TRADUZIONE>" + maxCarCapo  + "<TRADUZIONE>TR_MAN_CARAT</TRADUZIONE>" + maxCarCapoIT +
				"<TRADUZIONE>TR_MAN_NELCA</TRADUZIONE>" + 
				maxCarCapo + "<TRADUZIONE>TR_MAN_CARAT1</TRADUZIONE>");
		return false;
		}
	else
		{
		return true;
		}
	}
//----------------------------------------------------------------------------

function check_capi_macellati( frm, p_abilita_italia, controlloIntervalloDate )
	// Effettua il controllo sui campi del form di ricerca 'frm'
	// Ci si aspetta che il form contenga questi campi:
	//		P_DT_MACELLAZIONE_GG_DA (AA,MM)				    
	//		P_DT_MACELLAZIONE_GG_A (AA,MM)				    
	//		P_MACELLO_ID								    
	//		P_ALLEV_ID									    
	//		P_NUM_MACELLAZIONE							    
	//		P_CAPO_CODICE								    
	//		P_RIC_CAPO_ESATTA_VALORE					    
	{													    
	var maxIntervallo = 0;
	var checkCodiceCapo = false;
	var vuotiMacAllev = true;
	
	if( p_abilita_italia )
		{
		vuotiMacAllev = (frm.P_MACELLO_ID.value == "" )&&(frm.P_ALLEV_ID.value == "");
		}
	else
		{
		vuotiMacAllev = (frm.P_MACELLO_ID.value == "");
		}

	//------------------------------------
	//	PUNTO (1)
	//------------------------------------
	if( ( vuotiMacAllev )&&( frm.P_NUM_MACELLAZIONE.value == "" )
		 &&( frm.P_CAPO_CODICE.value == "" ) )
		{
		alert( alertChkCapiMacellati );
		return false;
		}

	//------------------------------------
	//	PUNTO (4)
	//------------------------------------
	if(( frm.P_CAPO_CODICE.value != "" )&&( frm.P_RIC_CAPO_ESATTA.checked ))
		{
		return true;
		}
	else if(  frm.P_CAPO_CODICE.value != "" )
		{
		// se il capo non e' vuoto lo dovro' controllare
		checkCodiceCapo = true;
		}	
	//------------------------------------
	//	PUNTO (2)
	//------------------------------------
	if( ( frm.P_CAPO_CODICE.value == "" )&&( frm.P_NUM_MACELLAZIONE.value == "" )
		&&
		( ! vuotiMacAllev ))
	
		{
		// 3 mesi
		maxIntervallo = var_data('01','06','2000') - var_data('01','03','2000'); 
		}
	//------------------------------------
	//	PUNTO (3)
	//------------------------------------
	else if(( frm.P_CAPO_CODICE.value != "" )||( frm.P_NUM_MACELLAZIONE.value != "" ))
		{
		// 1 anno
		maxIntervallo = var_data('01','01','2001') - var_data('01','01','2000'); 
		}
	
	//------------------------------------
	//	CONTROLLO DATE
	//------------------------------------
	if( ! controlloIntervalloDate )		{		maxIntervallo = 0;		}

	if(( maxIntervallo > 0 )&&(! check_ricerca_capi_macellati_dt( frm, maxIntervallo ) ))
		{
		alert( alertChkCapiMacellati );
		return false;
		}

	///////	checkCodiceCapo = false;
	//------------------------------------
	//	CONTROLLO CODICE CAPO
	//------------------------------------
	if(( checkCodiceCapo )&&( ! check_ricerca_capi_macellati_capo( frm ) ))
		{
		alert( alertChkCapiMacellati );
		return false;
		}

	//------------------------------------
	//	CONTROLLO NUM. MACELLAZIONE
	//------------------------------------
	var str = frm.P_NUM_MACELLAZIONE.value;
	if(( str != "" )&&( existCaratteriJolly( str, 1 )))
		{
		alert( '<TRADUZIONE>TR_JS_ILCAM15</TRADUZIONE>' );
		return false;		
		}

	//------------------------------------
	//	CONTROLLI OK
	//------------------------------------
	return true;
	}
//----------------------------------------------------------------------------

function check_ricerca_capi_macellati( frm )
	// Effettua il controllo sui campi del form di ricerca 'frm'
	// Ci si aspetta che il form contenga questi campi:
	//		P_DT_MACELLAZIONE_GG_DA (AA,MM)				    
	//		P_DT_MACELLAZIONE_GG_A (AA,MM)				    
	//		P_ABILITA_ITALIA 							    
	//		P_MACELLO_ID								    
	//		P_ALLEV_ID									    
	//		P_NUM_MACELLAZIONE							    
	//		P_CAPO_CODICE								    
	//		P_RIC_CAPO_ESATTA_VALORE					    
	{													    
	return check_capi_macellati( frm, frm.P_ABILITA_ITALIA.checked, true );
	}
//----------------------------------------------------------------------------

function check_agg_capi_macellati( frm, p_abilita_italia )
	// Effettua il controllo sui campi del form di ricerca 'frm'
	// Ci si aspetta che il form contenga questi campi:
	//		P_DT_MACELLAZIONE_GG_DA (AA,MM)
	//		P_DT_MACELLAZIONE_GG_A (AA,MM)
	//		P_MACELLO_ID
	//		P_NUM_MACELLAZIONE
	//		P_CAPO_CODICE
	//		P_RIC_CAPO_ESATTA
	//		P_RIC_CAPO_ESATTA_VALORE
	//		P_FLAG_DATA
	{	
	if( frm.P_FLAG_DATA.value != '' )
		{
		return check_capi_macellati( frm, false, true );
		}
	else
		{
		return check_capi_macellati( frm, false, false );
		}
}
//----------------------------------------------------------------------------
//======================================================
//		 CODICE AZIENDA
//======================================================
function valid_codazi(name,istat,sigla)
{
	if (name.value.length < 8)
				{
				//name.focus();
				alert("<TRADUZIONE>TR_JS_ILCOD24</TRADUZIONE>");
				return false;
				}
				

	if ((name.value.substr(0,5)!= istat.value + 'FO') || (name.value.substr(0,5)!= istat.value + 'PU'))
		{
			//Inserire il controllo per le province FO e PS
			return true;
		}
	else (name.value.substr(0,5)!= istat.value + sigla.value)
		{
		alert("<TRADUZIONE>TR_JS_ILCOD6</TRADUZIONE>")
		//name.focus();
		return false;
		}
	return true;
}

//======================================================
//		 CODICE USL
//======================================================
function valid_codasl(name)
 {
	var codice_regione = name.substr(0,1);
	 if (name.value.length < 4)
			{
			alert("<TRADUZIONE>TR_JS_ILCOD8</TRADUZIONE>");
			name.focus();
			return false;
			}
	if (name.value.charAt(0) != (codice_ausl.substr(0,1)))
			{
			
			alert("<TRADUZIONE>TR_MAN_LALET</TRADUZIONE> \' " + codice_regione + " \' ).");
			name.focus();
			return false;
			}
	  return true;
 }

//----------------------------------------------------------------------
//CONTROLLI SERBIA
//----------------------------------------------------------------------
// MAURO, 08/06/2005: CONTROLLO CODICI PER ANAGRAFE SERBA

function isNum(argvalue){
	
	argvalue = argvalue.toString();

	if (argvalue.length == 0)
		return false;

	for (var n = 0; n < argvalue.length; n++)
	if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9")
		return false;

	return true;
}


function check_codice_holdingserbia(tipo,codice,codice_comune){
// LA FUNZIONE CONTROLLA IL CODICE DELLE HOLDING SERBE. 
// LA DISCRIMINAZIONE E' FATTA IN BASE AL PARAMETRO tipo 

	
	// VARIABILE UTILIZZATA PER IL SETTAGGIO DEL MESSAGGIO DI ERRRORE
	var tipo_controllo;

	if (tipo == 'P'){
		// CONTROLLI PER PASCOLI
		tipo_controllo = "<TRADUZIONE>TR_MAN_CODIC41</TRADUZIONE>";	
	
	}
	else if (tipo == 'K'){
		// CONTROLLI PER MACELLI
		tipo_controllo = "<TRADUZIONE>TR_MAN_CODIC48</TRADUZIONE>";
	}
	else if (tipo == 'G'){
		// CONTROLLI PER PUNTI DI FRONTIERA (DA DEFINIRE!!!!!!)
		tipo_controllo = "<TRADUZIONE>TR_MAN_CODIC43</TRADUZIONE>";
	}
	else if (tipo == 'D'){
		// CONTROLLI PER CENTRI DI RACCOLTA (DA DEFINIRE!!!!!!)
		tipo_controllo = "<TRADUZIONE>TR_MAN_CODIC42</TRADUZIONE>";
	}
	else if (tipo == 'S'){
		// CONTROLLI PER FIERE
		tipo_controllo = "<TRADUZIONE>TR_MAN_CODIC44</TRADUZIONE>";
	}
	else if (tipo == 'C'){
		// CONTROLLI PER CENTRI GENETICI (DA DEFINIRE!!!!!!)
		tipo_controllo = "<TRADUZIONE>TR_MAN_CODIC45</TRADUZIONE>";
	}
	else if (tipo == 'I'){
		// CONTROLLI PER CENTRI DI ISOLAMENTO (DA DEFINIRE!!!!!!)
		tipo_controllo = "<TRADUZIONE>TR_MAN_CODIC44</TRADUZIONE>";
	}
	else if (tipo == 'O'){
		// CONTROLLI PER STALLA SOSTA (DA DEFINIRE!!!!!!)
		tipo_controllo = "<TRADUZIONE>TR_MAN_CODIC46</TRADUZIONE>";
	}
	else if (tipo == 'X'){
		// CONTROLLI PER ALTRI (DA DEFINIRE!!!!!!)
		tipo_controllo = "<TRADUZIONE>TR_MAN_CODIC47</TRADUZIONE>";
	}

//--------------------------------

	// CONTROLLO LUNGHEZZA CODICE
	if (codice.length != 12){
		alert("<TRADUZIONE>TR_MAN_LALUN5</TRADUZIONE> "+tipo_controllo +" <TRADUZIONE>TR_MAN_NONVA1</TRADUZIONE>");
		return false;
	}
	
	// CONTROLLO CORRETTEZZA PRIMO DIGIT DEL CODICE; DEVE ESSERE UGUALE AL TIPO
	if (codice.substr(0,1) != tipo){
		alert("<TRADUZIONE>TR_MAN_ILPRI</TRADUZIONE> "+tipo_controllo +" <TRADUZIONE>TR_MAN_NONVA2</TRADUZIONE>");
		return false;
	}
	
	// CONTROLLO PRESENZA DI CARATTERI NON NUMERICI DOPO IL PRIMO
	if (!isNum(codice.substr(1,11))){ 
		alert("<TRADUZIONE>TR_MAN_IL</TRADUZIONE> "+ tipo_controllo +" <TRADUZIONE>TR_MAN_NONVA3</TRADUZIONE>");
		return false;
	}

	// CONTROLLO CORRISPONDENZA DEL CODICE COMUNE
	if (codice.substr(1,5) != codice_comune.value){
		alert("<TRADUZIONE>TR_MAN_IL</TRADUZIONE> "+tipo_controllo +" <TRADUZIONE>TR_MAN_NONVA2</TRADUZIONE>");
		return false;
	}

	// CONTROLLO SU 11-ESIMO DIGIT (DEVE ESSERE != 0)	
	/*if (codice.substr(10,1) == '0'){
		alert("<TRADUZIONE>TR_MAN_IL</TRADUZIONE> "+ tipo_controllo +" <TRADUZIONE>TR_MAN_NONVA4</TRADUZIONE>");
		return false;
	}*/

	return true;
}
// FINE MODIFICHE

//--------------------------------------------------

function codiceCapoNonValidoCS( str, car )
	//gestione lunghezza e caratteri Jolly di un campo 
	//contente un capo bovino. Controllando anche che i primi 
	//caratteri siano CS o meno.
	{
	var stato = str.substr(0,2);
	var car = (stato!='CS')?car:car+2;
	return codiceCapoNonValido( str, car );
	}
//--------------------------------------------------