
function isNumeric(n)
{
	var number = '0';
	var longi = n.length;
	for (var i = 0; i < longi; i++)
	{
		number = n.charAt(i);
		if (number >= '0' && number <= '9')
			continue;
		else 
			return false;
	}
	return true;
}

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 verifica la lunghezza della stringa, il formato,
la corretteza logica...
************************************************************/
function isDate (DATA)
{
	if (DATA.value.length != 10)
	{
		alert("El formato de fecha es: dd/mm/aaaa, dd-mm-aaaa.");
		DATA.focus();
		return false;
	}
	
	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 ((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;
}

function fechaActual(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='';

}

