// Controlli sul campo

function controlloCampo(nomeform,nomecampo,descr,tipo,len,senullo)
{
campo = document.forms[nomeform].elements[nomecampo].value 
if (senullo == 'n'){
  if (nullo(campo)) {
	alert('Attenzione. Il campo '+ descr + ' deve essere valorizzato');
	return false;
  }
}
if (campo.length > len){
	alert('Attenzione. Il campo ' + descr + ' deve contenere al massimo ' + len + ' caratteri');
	return false;
};
if (tipo == 'num'){
	if (!isNumber(campo)){
		alert('Attenzione. Il campo ' + descr + ' deve essere numerico');
		return false;
	}
};
if (tipo == 'char'){
	if (CaratteriSpeciali(campo)) {
		alert('Attenzione. Il campo ' + descr + ' non deve contenere i caratteri "<" e ">"');
		return false;
	}
};
if (tipo == 'alfa'){
	if (!seAlfa(campo)) {
		alert('Attenzione. Il campo ' + descr + ' deve contenere solo caratteri alfanumerici ');
		return false;
	}
};
if (tipo == 'text'){
	if (CaratteriSpeciali(campo)) {
		alert('Attenzione. Il campo ' + descr + ' non deve contenere i caratteri "<" e ">"');
		return false;
	};
}
if (tipo == 'data'){
 if (campo != ''){
	data = new Array(3);
	data[1] = 0;
	data[2] = 0;
	data[3] = 0;
	data = campo.split('/');
	if ((data[0] == null) || (data[1] == null) || (data[2] == null)){
		alert('Attenzione. Il campo ' + descr + ' non contiene una data valida formato consentito gg/mm/aaaa');
		return false;
	}
	if(!SeValorizzate(data[0],data[1],data[2])){
		alert('Attenzione. Il campo ' + descr + ' non contiene una data valida formato consentito gg/mm/aaaa');
		return false;
	}
	if(!controllaDate(data[0],data[1],data[2])){
		alert('Attenzione. Il campo ' + descr + ' non contiene una data valida formato consentito gg/mm/aaaa');
		return false;
	}
 }
};
if (tipo == 'time'){
 if (campo != ''){
	tempo = new Array(3);
	tempo[1] = 0;
	tempo[2] = 0;
	tempo[3] = 0;
	tempo = campo.split(':');
	if (tempo.length < 2){
		alert('Attenzione. Il campo ' + descr + ' deve contenere almeno ore e minuti nel formato hh:mm:ss');
		return false;
	};
	if (!controllaTime(tempo[0],tempo[1],tempo[2])){
		alert('Attenzione. Il campo ' + descr + ' non contiene un orario valido');
		return false;
	};
 }
};
if (tipo == 'email'){
        if (!chkemail(campo)){
		alert('Attenzione. Il campo ' + descr + ' deve contenere un indirizzo di posta elettronica valido. Inserire solo lettere, numeri e i caratteri @ _ - . ');
		return false;
        }
}
if (tipo == 'euro'){
        if (campo.indexOf('.') > 0){
		var pezzi = campo.split(".");
	}
	else {
		var pezzi = campo.split(",");
	}
	if (pezzi.length != 2){
		alert('Attenzione. Il campo ' + descr + ' deve essere un numero con due cifre decimali separate da punto');
		return false;
	}
	if (!isNumber(pezzi[0])){
		alert('Attenzione. Il campo ' + descr + ' deve essere un numero con due cifre decimali separate da punto');
		return false;
	}
	if (!isNumber(pezzi[1]) || pezzi[1].length != 2){
		alert('Attenzione. Il campo ' + descr + ' deve essere un numero con due cifre decimali separate da punto');
		return false;
	}
};
return true;
}


function CaratteriSpeciali(dato){
	if ((campo.indexOf("<") >= 0) || (campo.indexOf(">") >= 0)){
		return true;
	}
	return false;
}


function SeValorizzate (GG,MM,AA) //controlla i campi data non siano valorizzati parzialmente
{
 if  ((AA == '')  ||
      (MM == '') ||
      (GG == ''))
 {
    return false;
 }
 else
 {
    if  ((AA.length == 0)  &&
         (MM.length == 0)  &&
         (GG.length == 0)){
         return false;
    }
    else {
         if ((AA.length == 2 || AA.length == 4)  &&
	     (MM.length <= 2)  &&
	     (GG.length <= 2)){
	         if ((isNumber(AA))  &&
	             (isNumber(MM))  &&
	             (isNumber(GG))){
	     		return true;
	    	 }
	         else{
	     		return false;
	    	 }
     	 }
    	 else{
       	         return false;
         }
    }
  }
}

function controllaTime (hh,mm,ss)
{
 if (mm == ''){
	return false;
 }
 if (hh == ''){
	return false;
 }
 if (ss > 59){
	return false;
 }
 if (mm > 59){
	return false;
 }
 if (hh > 23){
	return false;
 }
 return true;
}


function controllaDate (GG,MM,AA) //controlla che le date siano valide
{
 var giorniAlMeseDal = faiArray(12);
  giorniAlMeseDal[1] = 31;
  giorniAlMeseDal[2] = 28;
  giorniAlMeseDal[3] = 31;
  giorniAlMeseDal[4] = 30;
  giorniAlMeseDal[5] = 31;
  giorniAlMeseDal[6] = 30;
  giorniAlMeseDal[7] = 31;
  giorniAlMeseDal[8] = 31;
  giorniAlMeseDal[9] = 30;
  giorniAlMeseDal[10] = 31;
  giorniAlMeseDal[11] = 30;
  giorniAlMeseDal[12] = 31;

 var oggi = new Date()
 var dataDal = new Date(AA,MM,GG)

 giorniAlMeseDal[2] = giorniFebbraio(AA)

 if ((parseFloat(MM) > 12) ||
     (parseFloat(MM) < 1)  ||
     (GG > giorniAlMeseDal[parseFloat(MM)]))
 {
 	return false
 }
 else
 {
 	 return true
 }
}

function faiArray(n)
{  	
 for (var i = 1; i <= n; i++)
 {	
	this[i] = 0
 }
 return this
}




function giorniFebbraio(anno)
{
 return (  ((anno % 4 == 0) && ( (!(anno % 100 == 0)) || (anno % 400 == 0) ) ) ? 29 : 28 );
}



function nullo(campo){
  if (strim(campo) == ''){
	return true;
  }
  else{
	return false;
  }
}


// elimina spazi

function strim(campo){
  len = campo.length;
  if (len == 0)
  {
     return "";
  }

  if (len == 1)
  {  if  (campo == " ")
	 return "";
     else
	 return campo;
  }

  for (i1=0; i1 <len; i1++)
  {   if  (campo.substring(i1, i1 + 1) != " ")
      {   break; }
  }

  for (i2=len - 1; i2 >= 1; i2=i2-1)
  {   if  (campo.substring(i2, i2 + 1)  != " ")
      {   break; }
  }

  if  (i1 >= i2)
      return "";
  else
      return campo.substring(i1,i2 + 1);
}

// verifica se numerico

function isNumber(data)
{
        var numStr="0123456789";
        var thisChar;
	var fine;
	var scarto;

        fine = '';
		ind = 0;
		for (var i=0; i < data.length; i++)
        {
           thisChar = data.substr(i,1);
           if (numStr.indexOf(thisChar) == -1){
				return false
			}
        }
	return true;
}


// verifica se numerico formattato

function isFormatNumber(data)
{
        var numStr="0123456789.,";
        var thisChar;
		var fine;
		var scarto;

        fine = '';
		ind = 0;
		for (var i=0; i < data.length; i++)
        {
           thisChar = data.substr(i,1);
           if (numStr.indexOf(thisChar) == -1){
				return false
			}
        }
		return true;
}

// verifica se alfanumerico

function seAlfa(stringa)
{
        var numStr="aAbBcCdDeEfFgGhHiIlLmMnNoOpPqQrRsStTuUvVzZyYxXwWjJkK0123456789";
        var thisChar;
	var fine;
	var scarto;

        fine = '';
		ind = 0;
		for (var i=0; i < stringa.length; i++)
        {
           thisChar = stringa.substr(i,1);
           if (numStr.indexOf(thisChar) == -1){
				return false
			}
        }
		return true;
}

// verifica se la stringa contiene un indirizzo di posta elettronica

function chkemail(campo)
{ 
  var allValid = true;
  var checkOK = "@._-1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  var checkStr = campo;
  var apos=checkStr.indexOf("@");
  var dotpos=checkStr.lastIndexOf(".");
  var lastpos=checkStr.length-1;
  if  (apos<1 || dotpos-apos<2 || lastpos-dotpos>3 || lastpos-dotpos<2 ||checkStr.length<8 || checkStr.length>50)
      { 
        return (false);
      }
  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;
               }
      }
  if  (!allValid)
      {
       return (false);
      }
  return (true);
}


