//
// Routines jscript per il controllo delle caselle di input
//

function checkChars(checkStr, string)
{
  var checkOK = string;
  var allValid = true;
  var allNum = "";
  for (i = 0;  i < checkStr.length;  i++) {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length) {
      allValid = false;
      break;
    }
    allNum += ch;
  }
  return (allValid);
}

function checkVoidField(field)
{
  if (field.value == "")
  {
	field.focus();
    //alert ("Inserire un valore nel campo contenente il cursore.");
    return false;
  }
	return true;
}

function checkCFAndPIVA(cf, piva)
{
  if ((cf.value.length == 0) && (piva.value.length == 0))
  {
		cf.focus();
    alert ("Occorre inserire il Codice Fiscale e/o la Partita IVA.");
    return false;
  }
//	if ((cf.value.length > 0) && (cf.value.length < 16) && (cf.value.length != 11))
//  {
//		cf.focus();
//    alert ("Il codice fiscale deve essere lungo 11 o 16 caratteri.");
//    return false;
//	}
//	if ((piva.value.length > 0) && (piva.value.length < 11))
//  {
//		piva.focus();
//    alert ("La partita IVA deve essere lunga 11 caratteri.");
//    return false;
//  }
	return true;
}


function checkCodicePaziente(field)
{
  if (field.value.length != 11)
  {
		field.focus();
    alert ("Il codice paziente deve essere lungo 11 caratteri.");
    return false;
  } else {
    field.value = field.value.toUpperCase();
    //alert(field.value.substr(5,10));
    if (!checkChars(field.value.substr(5,10), "0123456789"))
	  {
			field.focus();
	    alert ("Il codice paziente non ha il formato corretto.");
	    return false;
	  }
    //alert(field.value.toUpperCase());
    if (!checkChars(field.value.substr(0,5), "QWERTYUIOPASDFGHJKLZXCVBNM"))
	  {
			field.focus();
	    alert ("Il codice paziente non ha il formato corretto. Verificare che i primi 5 caratteri siano alfabetici.");
	    return false;
	  }
  }
	return true;
}

function checkEMail(field)
{
   if (field.value.length > 0) 
   {
		if ((field.value.indexOf("@") == -1) || (field.value.indexOf(".") == -1))
		{
			field.focus();
	    	//alert ("L'indirizzo e-mail non è corretto.");
	        return false;
	    }
		 return true;	  
   }else{
	   field.focus();
         return false;
  }
}

function checkCurrency(field)
{
	var allOk = true;
	var cnt = 0;
	var j;
	
  if (field.value.length > 0)
	{
		if (!checkChars(field.value, "0123456789,"))
			allOk = false;

		if (allOk == true) {
	    for (j = 0;  j < field.value.length;  j++) {
	      if (',' == field.value.charAt(j))
	        cnt++;
			}
					
			if (cnt > 1)
				allOk = false;
		}

		if (allOk == false) {
			field.focus();
	    alert ("Il valore in valuta nel campo contenente il cursore non è corretto.\nUsare solo la virgola per i decimali e nessun punto per le migliaia.");
	    return false;
	  }
	}	
	return true;
}

function checkSignedCurrency(field)
{
	var allOk = true;
	var cnt = 0;
	var sign = false;
	var j;
	
  if (field.value.length > 0)
	{
		if (field.value.substr(0,1) == '-') {
			sign = true;
			if (!checkChars(field.value.slice(1), "0123456789,")) {
				allOk = false;
			}
		}
		else {
			if (!checkChars(field.value, "0123456789,")) {
				allOk = false;
			}
		}			
		if (allOk == true) {
	    for (j = 0;  j < field.value.length;  j++) {
	      if (',' == field.value.charAt(j))
	        cnt++;
			}
					
			if (cnt > 1)
				allOk = false;
		}

		if (allOk == false) {
			field.focus();
	    alert ("Il valore in valuta nel campo contenente il cursore non è corretto.\nUsare solo la virgola per i decimali, nessun punto per le migliaia e non inserire spazi.");
	    return false;
	  }
	}	
	return true;
}

function checkCAP(field)
{
	if (field.value.length > 0)
	{
		if ((field.value.length < 5) || (!checkChars(field.value, "0123456789")))
	  {
			field.focus();
	    alert ("Il CAP deve essere costituito da 5 cifre.");
	    return false;
	  }
	}
	return true;
}

function checkABI(field)
{
	if ((field.value.length != 5) || (!checkChars(field.value, "0123456789")))
  {
		field.focus();
    alert ("Il codice ABI deve essere costituito da 5 cifre.");
    return false;
  }
	return true;
}

function checkCAB(field)
{
	if ((field.value.length != 5) || (!checkChars(field.value, "0123456789")))
  {
		field.focus();
    alert ("Il codice CAB deve essere costituito da 5 cifre.");
    return false;
	}
	return true;
}

function checkOnlyNumeric(field)
{
	if (field.value.length > 0)
	{
		var valore = field.value;
		
		// Strippa gli zero iniziali perché darebbe una interpretazione ottale!
		while (valore.length > 1)
		{
			if (valore.substr(0,1) != "0")
				break;
			valore = valore.substr(1);
		}
		if (field.value != valore)
			field.value = valore;

		// Controlla che il testo sia solo numerico		
	  if (!checkChars(valore, "0123456789"))
	  {
			field.focus();
	    alert ("Nel campo contenente il cursore si possono inserire solo cifre numeriche.");
	    return false;
	  }
	}
	return true;
}

function checkDecimal(field)
{
	if (field.value.length > 0)
	{
		var valore = field.value;
		
		// Strippa gli zero iniziali perché darebbe una interpretazione ottale!
/*		while (valore.length > 1)
		{
			if (valore.substr(0,1) != "0")
				break;
			valore = valore.substr(1);
		}
		if (field.value != valore)
			field.value = valore;
*/
		// Controlla che il testo sia solo numerico		
	  if (!checkChars(valore, "0123456789."))
	  {
			field.focus();
	    alert ("Nel campo contenente il cursore si possono inserire solo cifre numeriche e il punto come separatore decimale");
	    return false;
	  }
	}
	return true;
}


function CompareDataTodayPrev(field)
{
  if (field.value.length > 0) {
  	var giorno = field.value.substr(0,2);
  	var mese   = field.value.substr(3,2);
  	var anno   = field.value.substr(6,4);
    var myDate = new Date();
    var today  = new Date();
	
    myDate.setYear(anno);
    myDate.setMonth(mese-1);
    myDate.setDate(giorno);
	
    if (myDate < today) {
      field.focus();
      alert("La data specificata non può essere antecedente ad oggi");
      return false;
    }
  }
  return true;
}
  


function CompareDataToday(field)
{
  if (field.value.length > 0) {
  	var giorno = field.value.substr(0,2);
  	var mese   = field.value.substr(3,2);
  	var anno   = field.value.substr(6,4);
    var myDate = new Date();
    var today  = new Date();
    myDate.setYear(anno);
    myDate.setMonth(mese-1);
    myDate.setDate(giorno);
    if (myDate > today) {
      field.focus();
      alert("La data specificata è errata. Inserire una data precedente ad oggi");
      return false;
    }
  }
  return true;
}
  
  
function checkData(field)
{
	var allOk = true;

	if (field.value.length > 0)
	{
		var mesi = "312831303130313130313031";
		var giorno = field.value.substr(0,2);
		var mese = field.value.substr(3,2);
		var anno = field.value.substr(6,4);
		//alert(anno);		alert(mese);		alert(giorno);
		if (field.value.length != 10)
			allOk = false;
			
		if (allOk == true)
		  if (checkChars(giorno+mese+anno, "0123456789") == false)
				allOk = false;			

		if (allOk == true){
				if ((field.value.substr(2,1) != '-') || (field.value.substr(5,1) != '-')){
				  		if ((field.value.substr(2,1) != '/') || (field.value.substr(5,1) != '/')){
							allOk = false;		
							//alert("cucu");
						}else{
							//alert("coco");
							allOk = true;		
						}
				}		
		}		   
		if (allOk == true)
			if ((mese < 1) || (mese > 12))
				allOk = false;

		if (allOk == true) 
		{ // Bisestile
			if (mese == 2)				
				if ((anno % 4) == 0)
					mesi = "312931303130313130313031";

			if ( (giorno < 1) || (giorno > mesi.substr((mese-1)*2,2)) )
				allOk = false;
		}
	  if (allOk == false)	{
			field.focus();
	   		alert ("La data specificata è errata. Inserire valori corretti nel formato \"GG-MM-AAAA\" o \"GG/MM/AAAA\".");
	  }
	}
	return allOk;
}

function checkDataNoAlert(field)
{
	var allOk = true;

	if (field.value.length > 0)
	{
		var mesi = "312831303130313130313031";
		var giorno = field.value.substr(0,2);
		var mese = field.value.substr(3,2);
		var anno = field.value.substr(6,4);

		if (field.value.length != 10)
			allOk = false;
			
		if (allOk == true)
		  if (checkChars(giorno+mese+anno, "0123456789") == false)
				allOk = false;			

		if (allOk == true)
		  if ((field.value.substr(2,1) != '/') || (field.value.substr(5,1) != '/'))
				allOk = false;		

		if (allOk == true)
			if ((mese < 1) || (mese > 12))
				allOk = false;

		if (allOk == true) 
		{ // Bisestile
			if (mese == 2)				
				if ((anno % 4) == 0)
					mesi = "312931303130313130313031";

			if ( (giorno < 1) || (giorno > mesi.substr((mese-1)*2,2)) )
				allOk = false;
		}
	}
	return allOk;
}

function checkZeroField(field)
{
	if (field.value.length > 0)
	{
	  if (field.value.replace(",","") == 0)
	  {
			field.focus();
	    alert ("Il valore 0 non è consentito.\n");
	    return false;
	  }
	}
	return true;
}

function checkMinValue(field, minval)
{
	if (field.value.length > 0)
	{
	  if (field.value < minval)
	  {
			field.focus();
	    alert ("Il valore inserito nella casella corrente non è valido.\nInserire un valore superiore o uguale a " + minval + ".");
	    return false;
	  }
	}
	return true;
}

function checkPassword(field1, field2)
{
	if (field1.value != field2.value)
	{
		field2.focus();
    alert ("La verifica della password è fallita. Reinserire o correggere i dati.");
		return false;
	}
	return true;
}

function checkPasswordSize(field, minsize)
{
	if (field.value.length < minsize)
	{
		field.focus();
    alert ("La password deve essere lunga almeno " + minsize + " caratteri.");
		return false;
	}
	return true;
}

function checkNumericSearch(field)
{
	if (field.value.length > 0)	
	{
		var allOk = true;
		var arrValori = field.value.split(";");
		for (var i=0; (i < arrValori.length) && allOk; ++i) {
			var arrGruppi = arrValori[i].split("-");
			if (arrGruppi.length > 2)
				allOk = false;
			for (var j=0; (j<arrGruppi.length) && allOk; ++j) {
				if (arrGruppi[j]!="")
					allOk = checkChars(arrGruppi[j], "0123456789");
				else
					allOk = false;
				if (allOk && (j == 1))
					if ( eval(arrGruppi[0]) >= eval(arrGruppi[1]) )
						allOk = false;
			}
		}
		if (!allOk) {
			field.focus();
	    alert ("Inserire solo cifre numeriche o i separatori ; e -.\nLe sequenze devono essere inserite con valori 'da' - 'a' (inclusi).\nVerificare inoltre che le sequenze siano crescenti ('da' inferiore ad 'a').");
	    return false;
	  }
	}
	return true;
}

function checkDataSearch(field)
{
	var allOk = true;

	if (field.value.length > 0)	
	{
		var allOk = true;
		var arrValori = field.value.split(";");
		for (var i=0; (i<arrValori.length) && allOk; ++i) {
			var arrGruppi = arrValori[i].split("-");
			if (arrGruppi.length > 2)
				allOk = false;
			for (var j=0; (j<arrGruppi.length) && allOk; ++j) {
				if (arrGruppi[j]!="") {
					allOk = checkChars(arrGruppi[j], "0123456789/");
					if (!allOk)
						break;

					var mesi = "312831303130313130313031";
					var giorno = arrGruppi[j].substr(0,2);
					var mese = arrGruppi[j].substr(3,2);
					var anno = arrGruppi[j].substr(6,4);
	
					if (arrGruppi[j].length != 10)
						allOk = false;
					else if (checkChars(giorno+mese+anno, "0123456789") == false)
						allOk = false;
					else if ((arrGruppi[j].substr(2,1) != '/') || (arrGruppi[j].substr(5,1) != '/'))
						allOk = false;
					else if ((mese < 1) || (mese > 12))
						allOk = false;
					else 
					{ // Bisestile
						if (mese == 2)
							if ((anno % 4) == 0)
								mesi = "312931303130313130313031";
						if ( (giorno < 1) || (giorno > mesi.substr((mese-1)*2,2)) )
							allOk = false;
					}
					if (allOk && (j == 1)) {
					 if (arrGruppi[0].substr(6,4) > arrGruppi[1].substr(6,4))
							allOk = false;
					 else if (arrGruppi[0].substr(3,2) > arrGruppi[1].substr(3,2))
							allOk = false;
					 else if (arrGruppi[0].substr(0,2) >= arrGruppi[1].substr(0,2))
							allOk = false;					 
					}
				}
				else
					allOk = false;
			}
		}
	  if (allOk == false)	{
			field.focus();
	    alert ("Inserire solo date nel formato gg/mm/aaaa ed eventualmente i separatori ; e -.\nVerificare che i periodi siano corretti ('da' inferiore ad 'a').");
	  }
	}
	return allOk;
}

function checkStringSearch(field)
{
	if (field.value.length > 0)	
	{
		var allOk = true;
		if (!checkChars(field.value.toLowerCase(), " ;0123456789abcdefghijklmnopqrstuvwxyzòàèéùì-&_$")) {
			field.focus();
	    alert ("Si possono inserire solo numeri, lettere e i simboli '-', '&', '$', e '_'.");
	    return false;
	  }		
		if (allOk) {
			var arrValori = field.value.split(";");
			for (var i=0; (i<arrValori.length) && allOk; ++i) {
				if (arrValori[i]=="")
					allOk = false;
			}
		}
		if (!allOk) {
			field.focus();
	    alert ("Ciascun separatore (punto o virgola) si deve trovare tra due testi da ricercare.");
	    return false;
	  }
	}
	return true;
}

/*function remove_entities(text) {
    text=text.replace('&agrave;', 'à');
	  text=text.replace('&aacute;', 'á');
	  text=text.replace('&atilde;', 'ã');
	  text=text.replace('&auml;', 'ä');		
	  text=text.replace('&aelig;', 'æ');		
	  text= text.replace('&egrave;', 'è');		
	  text= text.replace('&eacute;', 'é');		
	  text=text.replace('&euml;', 'ë');		
	  text=text.replace('&igrave;', 'ì');		
	  text=text.replace('&iacute;', 'í');		
	  text=text.replace('&iuml;', 'ï');		
	  text=text.replace('&ntilde;', 'ñ');		
	  text=text.replace('&ograve;', 'ò');		
	  text=text.replace('&oacute;', 'ó');		
	  text=text.replace('&otilde;', 'õ');		
	  text=text.replace('&ouml;', 'ö');		
	  text=text.replace('&ugrave;', 'ù');			  	  	  	  	  	  
	  text=text.replace('&uacute;', 'ú');			  	  	  	  	  	  
	  text=text.replace('&uuml;', 'ü');			  	  	  	  	  	  	  
	  text=text.replace('&szlig;', 'ß');			  	  	  	  	  	  	  

	  return text;
}
*/
function reset(form) {
	form.reset();
}

function checkRange(field, minval,maxval)
{
	if (field.value.length > 0)
	{
	  if (field.value < minval || field.value > maxval)
	  {
	   		if (confirm ("Il valore inserito nella casella corrente non è compreso nell'intervallo "+String(minval)+" - "+String(maxval)+".\nVuoi continuare comunque?")){
				return true;
			}else{
				field.focus();
	   	    	return false;
			}
	  }
	}
	return true;
}
