/*********************************************************************
SCRIPT TESTATO 24-08-2000 CON:
- EXPLORER Versione 5.00
- NETSCAPE Versione 4.7 - Inglese
**********************************************************************
BISESTILE:
Un Anno e' bisestile se questo/4 da come resto 0.
Partendo da questo l'anno bisestile si ripete ogni 4 anni, quindi
Febbraio, un mese con 28 giorni, in questa occasione ne ha 29
Esempio anno bisestile: 2000, 1996, 1992, 1988, ...
*********************************************************************/
function bisestile (anno)
{
	return ( (anno % 4 == 0 && anno % 100 != 0) || (anno % 400 == 0) );
}

function isLogical (gg, mm, aaaa)
{
	var MM	 = new Array(0,1,2,3,4,5,6,7,8,9,10,11,12);
	var GG	 = new Array(00,31,28,31,30,31,30,31,31,30,31,30,31);


	// Il giorno non deve essere < 1 || > 31
	if ( (gg < 1) || (gg > 31) ) return 1;
	// Il mese non deve essere < 1 && > 12
	else if ( (mm < 1)  || (mm > 12) ) return 2;
	// Se vero l'anno Utente e' Bisestile e il mese e' Febbraio
	else if ( bisestile(aaaa)  && (mm == 2) )
	{
		if ( gg > 29 ) return 5;
		return 0;
	}
	else if (gg > GG[mm])
	{
		if (mm == 2) return 4;
		else return 5;
	}
	else return 0;
}
/*************************************************************
Funzione che scandisce la stringa carattere per carattere
e verifica che ognuno di questi sia un numero.
Ritorna TRUE se e' numerico
stringa.charAt(P) - estrae un solo carattere nella posizione P
ACCORGIMENTO: !parseFloat(0-zero) == NaN [Not a Number]
************************************************************/
function isNumeric (form)
{
	var number = 0;
	for (var i = 0; i < form.length; i++)
	{
		number = form.charAt(i);
		if ( (number != "0") && (!parseFloat(number)) ) return false;
	}
	return true;
}

/*************************************************************
Funzione che verifica la lunghezza della stringa, il formato,
la corretteza logica...
************************************************************/
function isDate (DATA)
{
	var gg 		= DATA.value.substring(0,2); //	'02'
	var token1  = DATA.value.substring(2,3); //	'/ -'
	var mm 		= DATA.value.substring(3,5); //	'08'
	var token2  = DATA.value.substring(5,6); //	'/ -'
	var aaaa	= DATA.value.substring(6,10);//	'1971'

	if (DATA.value.length != 10)
	{
		alert("El formato de fecha es: dd/mm/aaaa, dd-mm-aaaa.");
		DATA.focus();
		return false;
	}
	else if ((token1 != "/") && (token1 != "-"))
	{
		alert("El formato de fecha es: dd/mm/aaaa, dd-mm-aaaa.");
		DATA.focus();
		return false;
	}
	else if ((token2 != "/") && (token2 != "-"))
	{
		alert("El formato de fecha es: dd/mm/aaaa, dd-mm-aaaa.");
		DATA.focus();
		return false;
	}
	else if (token1 != token2)
	{
		alert("El formato de fecha es: dd/mm/aaaa, dd-mm-aaaa.");
		DATA.focus();
		return false;
	}
	else if	(!isNumeric(gg))
	{
		alert("El dia no es un valor numerico.");
		DATA.focus();
		return false;
	}
	else if	(!isNumeric(mm))
	{
		alert("El mes no es un valor numerico.");
		DATA.focus();
		return false;
	}
	else if	(!isNumeric(aaaa))
	{
		alert("El aņo no es un valor numerico.");
		DATA.focus();
		return false;
	}
	else
	{
		var g = parseInt(gg,10);
		var m = parseInt(mm,10);
		var a = parseInt(aaaa,10);

		var error=isLogical(g,m,a);
		if (error == 1)
		{
			alert("El dia no es valido: " + gg);
			DATA.focus();
			return false;
		}
		else if (error == 2)
		{
			alert("El mes no es valido: " + mm);
			DATA.focus();
			return false;
		}
		else if (error == 4)
		{
			alert("La Fecha no es correcta porque el aņo no es bisiesto: " + aaaa);
			DATA.focus();
			return false;
		}
		else if (error == 5)
		{
			alert("La fecha no es correcta porque el dia: " + gg + " no es coherente con el mes: " + mm);
			DATA.focus();
			return false;
		}
		else return true;
	}
	return true;
}
//********************************************************************
//*******************************************************************
//* FORMATO HH:MM

function checkOra(ora)
  {

  if (ora.value=="") return true;

  pos2p=ora.value.indexOf(":");

  if (pos2p==-1) return false;

  or = ora.value.substring(0,pos2p);
  mi = ora.value.substring(pos2p+1);

  if (!isNumeric(or) || !isNumeric(mi)) return false;

  if (ora.value.length> 5 ||  parseInt(ora.value.substring(0,pos2p))>23 ||
      parseInt(ora.value.substring(pos2p+1))>59 || parseInt(ora.value.substring(0,pos2p))< 0 ||
      parseInt(ora.value.substring(pos2p+1))<0 )
      return false;
  else return true;

  }

//********************************************************************
//*******************************************************************
//* FORMATO HH:MM

function OreMagiore(ora1,ora2)
  {


  if (!checkOra(ora1) || !checkOra(ora2)) return false;

  var pos2p1=ora1.value.indexOf(":");

  var or1 = ora1.value.substring(0,pos2p1);
  var mi1 = ora1.value.substring(pos2p1+1);

  var pos2p2=ora2.value.indexOf(":");

  var or2 = ora2.value.substring(0,pos2p2);
  var mi2 = ora2.value.substring(pos2p2+1);

  if (or1=='08') ora1=8;
  else if (or1=='09') ora1=9;
       else ora1=parseInt(or1);

  if (or2=='08') ora2=8;
  else if (or2=='09') ora2=9;
       else ora2=parseInt(or2);

  if (mi1=='08') minu1=8;
  else if (mi1=='09') minu1=9;
       else minu1=parseInt(mi1);

  if (mi2=='08') minu2=8;
  else if (mi2=='09') minu2=9;
       else minu2=parseInt(mi2);

  /* alert(ora1);
  alert(ora2);
  alert(minu1);
  alert(minu2);      */

  if (ora1>ora2)
       return true;
  else if (ora1==ora2)
          {
          if (minu1>minu2)
              return true;
		  else return false;
		  }
		else return false;

  }

/****************************************************
 *
 */

function dataProssima()
{
   var fecha = new Date ();

   var dia = fecha.getDate();
   var mes = fecha.getMonth ()+1;
   var anio = fecha.getYear();

   var diapiu=fecha.getDate()+1;
   var mespiu=fecha.getMonth()+2;
   var annopiu=fecha.getYear()+1;

   alert(diapiu);
   alert(mes);
   alert(anio);

   if (isLogical(diapiu,mes,anio)==0)
        dia=diapiu;
   else  if (isLogical(1,mespiu,anio)==0)
              {
              dia=1;
              mes=mespiu;
              }
         else  {
               dia=1;
               mes=1;
               anio=annopiu;
               }

	if (dia < 10)
	   dia = '0'+dia;

	if (mes < 10)
		mes = '0'+mes;

	if (anio >= 80 && anio <= 99)
	   anio = '19' + anio;

   return dia+"/"+mes+"/"+anio;

}

////////////////////////////////////////////////

function checkDecimalOracle(numero,entero,decimal)

{

var salida="";
var punto=0;

if (numero=="") return "";

salida=numero.replace(",",".");

punto=salida.indexOf(".");

if (punto==-1) // Se non abbiamo punto decimale
      punto=numero.length;

// alert("punto:"+punto);

// Numero correcto

// alert(salida.substring(0,punto));

if (!isNumeric(salida.substring(0,punto))) {
      // alert("Numero invalito, parte intera invalita:"+ numero);
      return null;
      }

// alert(salida.substring(punto+1));

if (!isNumeric(salida.substring(punto+1))) {
      // alert("Numero invalito, parte decimale invalita:"+ numero);
      return null;
      }

// Vediamo se abbiamo correcto numero di intero o decimale

if (punto>entero) {
      // alert("Numero invalito, parte intera troppo lunga:"+ numero);
      return null;
      }

/*
if (salida.substring(punto+1).length>decimal) {
      // alert("Numero invalito, parte decimale troppo lunga:"+ salida.substring(punto+1).length);
      return null;
      }
*/

// alert("Salida==>"+salida);

return salida;

}

///////////////////////////////////////

function helperData(campo)
{

if (campo.value.length==2 || campo.value.length==5 )
		campo.value+='/';
}

///////////////////////////////////////

function helperOra(campo)
{

if (campo.value.length==2)
		campo.value+=':';
}

///////////////////////////////////

function data_attuale(data)
{
	var fecha = new Date ();
    var dia = fecha.getDate();
	if (dia < 10)
	   dia = '0'+dia;
    var mes = fecha.getMonth ()+1;
	if (mes < 10)
		mes = '0'+mes;
    var anio = fecha.getYear();
	if(!document.all) // Para Netscape
  		anio=anio+1900;
	else if (anio >= 80 && anio <= 99)
	   		 anio = '19' + anio;
   
	if (data.value.length=='')
         data.value=dia+'/'+mes+'/'+anio;
	else data.value='';

}

///////////////////////////////////

function ora_attuale()
{
	var fecha = new Date ();
    var ora = fecha.getHours();
    var minute = fecha.getMinutes();
	return ora+":"+minute;
}

/////////////////////////////////////////
// true si date1 sotto 24 Hore date2
// dia1=data arrivo, dia2=data rilascio
function warning24ore(data1,ora1,data2,ora2)

{

var gg1 		= parseInt(data1.value.substring(0,2)); //	'02'
var mm1 		= parseInt(data1.value.substring(3,5)); //	'08'
var aaaa1		= parseInt(data1.value.substring(6,10));//	'1971'

var dias1 = Date.UTC(aaaa1,mm1-1,gg1);
//paso a Dias desde 1970
dias1=dias1/(1000*60*60*24);

var gg2 		= parseInt(data2.value.substring(0,2)); //	'02'
var mm2 		= parseInt(data2.value.substring(3,5)); //	'08'
var aaaa2		= parseInt(data2.value.substring(6,10));//	'1971'

var dias2 = Date.UTC(aaaa2,mm2-1,gg2);
//paso a Dias desde 1970
dias2=dias2/(1000*60*60*24);

/* alert(data1.value);
alert(ora1.value);
alert(data2.value);
alert(ora2.value); */

if (dias2>dias1+1)
	return false;
	
if (dias2<=dias1)
	return true;
	
if (dias2==dias1+1)
	{ // Check di ore
	  var pos2p1=ora1.value.indexOf(":");

	  var or1 = ora1.value.substring(0,pos2p1);
	  var mi1 = ora1.value.substring(pos2p1+1);

	  var pos2p2=ora2.value.indexOf(":");

	  var or2 = ora2.value.substring(0,pos2p2);
	  var mi2 = ora2.value.substring(pos2p2+1);	
	  
	  if (or2>or1) return false;
	  if (or2<or1) return true;	  
	  if (or2==or1)
	  	{ // Check minute
		  if (mi2>=mi1) 
		        return false;
		  else  return true;
		}
	}			
}


function campoVacio(campo,nombreCampo)
{
	if (campo.value=="") {
		alert("El campo "+nombreCampo+" es obligatorio");
		campo.focus();
		return true;
	}
	return false;
}

function selectVacio(campo,nombreCampo)
{
	if (campo.options[campo.selectedIndex].value=="") {
		alert("El campo "+nombreCampo+" es obligatorio");
		campo.focus();
		return true;
	}
	return false;
}

function isFloat (n)
{
	var number = '0';
	var nPoint = 0;
	for (var i = 0; i < n.length; i++)
	{
		number = n.charAt(i);
		if (number >= '0' && number <= '9')
			continue;
		else if (number == '-' && i==0)
			continue;
		else if (number == '.' && nPoint==0) {
			nPoint=1;
			continue;
		}
		else 
			return false;
	}
	return true;
}

function isEmail(email)
{
	var posArroba = email.indexOf('@',0);
	
	if (posArroba <= 0)
		return false;

	var posPunto = email.indexOf('.',posArroba);
		
	if (posPunto == -1)
		return false;
		
	if (posPunto+1 == email.length)
		return false;

	return true;
}

function extension(nombre)
{
	var longNombre = nombre.length;
	var i;
	for (i=longNombre-2; i>0; i--) {
		if (nombre.charAt(i)=='.') {
			return nombre.substr(i+1);
		}
	}
	return "";
}