// ********************************
// Script di validazione delle FORM
// ********************************

// Uso: boolean checkText (formelement, int lunghezzaminima, int lunghezzamassima)
//      boolean checkNumber (formelement, int valoreminimo, int valoremassimo, boolean Intero)
//      boolean checkDate (formelement)
//
// Author: Alex G. Menin (18/10/2001)
//
// Esempio:
//
//   if (!checkText (form[0].testo, 3, 20)) { window.alert ("Inserire il testo giusto!"); return false; }
//
// Per includere questo file in una pagina html scrivere:
//
//   <script src = "controllo_formati.js"></script>
//

function checkText(formEl,minL,maxL)
  {
  var textfield = formEl;
  this.formEl = formEl;
  formElV = formEl.value;
  minL = minL?minL:0;
  maxL = maxL?maxL:formElV.length;
  if(minL<=formElV.length && formElV.length<=maxL) { return true; }
  else { textfield.select (); textfield.focus (); return false; }
  }

function checkTextMaxLength(formEl,maxL)
  {
  var textfield = formEl;
  this.formEl = formEl;
  formElV = formEl.value;
  maxL = maxL?maxL:formElV.length;
  if(formElV.length<=maxL) { return true; }
  else { textfield.select (); textfield.focus (); return false; }
  }

function checkIsNumber(formEl,minS,maxS,integ)
  {
  var numberfield = formEl;
  this.formEl = formEl;
  formEl.value = formEl.value.replace (',', '.');
  formElV = formEl.value;

  tmpMin = parseFloat(minS);
  tmpMax = parseFloat(maxS);

  if((!minS&&minS!=0)||tmpMin!=minS) { minS = -(1/0); }
  if((!maxS&&maxS!=0)||tmpMax!=maxS) { maxS = (1/0); }

  if(integ)
    {
    tmpNo = parseInt(formElV);
    if(tmpNo != formElV) { numberfield.select (); numberfield.focus (); return false; }
    }
  else
    {
    tmpNo = parseFloat(formElV);
    if(tmpNo != formElV) { numberfield.select (); numberfield.focus (); return false; }
    }

  if(Math.max(minS,formElV) != formElV) { numberfield.select (); numberfield.focus (); return false; }
  else
    if(Math.min(maxS,formElV) != formElV) { numberfield.select (); numberfield.focus (); return false; }
      else { return true; }
  }

function checkDate(objName)
  {
  var datefield = objName;
  if (chkdate(objName) == false)
    {
    datefield.select(); datefield.focus();
    return false;
    }
  else { return true; }
  }

function chkdate(objName)
  {
  var strDatestyle = "EU";
  var strDate;
  var strDateArray;
  var strDay;
  var strMonth;
  var strYear;
  var intday;
  var intMonth;
  var intYear;
  var booFound = false;
  var datefield = objName;
  var strSeparatorArray = new Array("-"," ","/",".");
  var intElementNr;
  var err = 0;
  var strMonthArray = new Array(12);

  strMonthArray[0] = "Gen";
  strMonthArray[1] = "Feb";
  strMonthArray[2] = "Mar";
  strMonthArray[3] = "Apr";
  strMonthArray[4] = "Mag";
  strMonthArray[5] = "Giu";
  strMonthArray[6] = "Lug";
  strMonthArray[7] = "Ago";
  strMonthArray[8] = "Set";
  strMonthArray[9] = "Ott";
  strMonthArray[10] = "Nov";
  strMonthArray[11] = "Dic";
  strDate = datefield.value;

  if (strDate.length < 1) { return true; }
  for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++)
    {
    if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1)
      {
      strDateArray = strDate.split(strSeparatorArray[intElementNr]);
      if (strDateArray.length != 3) { err = 1; return false; }
      else
        {
        strDay = strDateArray[0];
        strMonth = strDateArray[1];
        strYear = strDateArray[2];
        }
      booFound = true;
      }
    }
  if (booFound == false)
    {
    if (strDate.length>5)
      {
      strDay = strDate.substr(0, 2);
      strMonth = strDate.substr(2, 2);
      strYear = strDate.substr(4);
      }
      else {
      err = 1;
      return false;
      }
    }
  if (strYear.length == 2)
    { strYear = '20' + strYear; }

  if (strDatestyle == "US")
    {
    strTemp = strDay;
    strDay = strMonth;
    strMonth = strTemp;
    }

  intday = parseInt(strDay, 10);
  if (!chkinteger(strDay))
    {
    err = 2;
    return false;
    }

  intMonth = parseInt(strMonth, 10);
  if (!chkinteger(strMonth))
    {
    for (i = 0;i<12;i++)
      {
      if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase())
        {
        intMonth = i+1;
        strMonth = strMonthArray[i];
        i = 12;
        }
      }
    if (isNaN(intMonth))
      {
      err = 3;
      return false;
      }
    }
  intYear = parseInt(strYear, 10);
  if (!chkinteger(strYear))
    {
    err = 4;
    return false;
    }
  if (intMonth>12 || intMonth<1)
    {
    err = 5;
    return false;
    }
  if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1))
    {
    err = 6;
    return false;
    }
  if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1))
    {
    err = 7;
    return false;
    }
  if (intMonth == 2)
    {
    if (intday < 1)
      {
      err = 8;
      return false;
      }
    if (LeapYear(intYear) == true)
      {
      if (intday > 29)
        {
        err = 9;
        return false;
        }
      }
    else
      {
      if (intday > 28)
        {
        err = 10;
        return false;
        }
      }
    }

  if (strDatestyle == "US")
    { datefield.value = strMonthArray[intMonth-1] + " " + intday+" " + strYear; }
  else { datefield.value = intday + "/" + intMonth + "/" + strYear; }

  return true;
  }

function LeapYear(intYear)
  {
  if (intYear % 100 == 0)
    { if (intYear % 400 == 0) { return true; } }
  else { if ((intYear % 4) == 0) { return true; } }
  return false;
  }


function checkinteger(objName)
  {
  var integerfield = objName;
    if (chkinteger(objName.value) == false)
      {
      integerfield.select();
      alert("Indicare un valore numerico intero.");
      integerfield.focus();
      return false;
      }
  else { return true; }
  }

function chkinteger(strInteger)
  {
  if (strInteger.length < 1) { return true; }

  for (var i = 0; i < strInteger.length; i++)
    {
    var ch = strInteger.substring(i, i + 1);
    if (ch < "0" || "9" < ch) { return false; }
    }
  return true;
  }

// **********************************
// Aggiunte per form cambio pwd
// **********************************

  function checkEqual (formEL1,formEL2)
    {
    if ((formEL1.value)!=(formEL2.value)) { return false; }
    return true;
    }

  function checkEmpty(formEl1,formEl2,formEl3)
  	{
  	if ( formEl1.value=='' || formEl2.value=='' || formEl3.value=='' ) { return false;}
  	return true;
	}
	
var resetSubmitting=true;
function resettaVar(){
	resetSubmitting=false;	
}

function msgAlertExit()
{
  if(resetSubmitting)
  {
	window.alert("La password non e' stata modificata, la richiesta verra' nuovamente fatta alla prossima login")
  }
	
}


// **********************************
// Fine script validazione delle FORM
// **********************************
