//************************************
//* VACIO
//*************************************

function EstaVacio(cadena)
{
	var i;
	var c;
	var longitud;

	longitud = cadena.length;

		// Se buscan caracteres que no sean espacios
	for (i=0 ; i<longitud ; i++)
		{
		c = cadena.charAt(i);
		if ( c != " " )
			return false;
		}

	return true;
}


//************************************
//* NUMEROS
//************************************

// Es un número entero
function EsNumeroEnteroSinSigno(cadena)
{
	var	numero = /^\d+$/

	return numero.test(cadena)
}

// Es un número entero con signo (opcional)
function EsNumeroEnteroConSigno(cadena)
{
	var	numero = /^(\+|-)?\d+$/

	return numero.test(cadena)
}

// Es un número real sin signo
function EsNumeroRealSinSigno(cadena)
{
	var	numero = /^((\d+(\.\d*)?)|((\d*\.)?\d+))$/

	return numero.test(cadena)
}

// Es un número real con signo (opcional)
function EsNumeroRealConSigno(cadena)
{
	var	numero = /^(((\+|-)?\d+(\.\d*)?)|((\+|-)?(\d*\.)?\d+))$/

	return numero.test(cadena)
}

// Es una direccion de correo valida
function EsDireccionCorreo(cadena)
{
	var	numero =  /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/

	return numero.test(cadena)
}



function EsNumeroEnteroSinSigno(cadena)
{
	var	numero = /^\d+$/

	return numero.test(cadena)
}

//Función para importes con 8 dígitos de pare entera y 2 parte fraccionaria. Puntos
//para los decimales
function esFloat(cadena){
    var euro=/(^[0-9]{0,8}|^[0-9]{1,8}[.][0-9]{0,2})$/;
	if(euro.test(cadena)){
		return true;
	}
	return false;
}




//************************************
//* FECHAS
//************************************

function FechaCorrecta(fecha)
{
      // 0123456789
      // Se espera que fecha sea una cadena en formato "DD-MM-AAAA"
      var   dd, mm, aaaa;
      var dias;

      if ( EstaVacio(fecha) )
            return true;

      if ( fecha.length != 10 )
            return false;
      
      dias = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
      
      dd = fecha.substring(0, 2);
      mm = fecha.substring(3, 5);
      aaaa = fecha.substring(6, 10);


      if ( !EsNumeroEnteroSinSigno(dd) )
            return false;
      if ( !EsNumeroEnteroSinSigno(mm) )
            return false;
      if ( !EsNumeroEnteroSinSigno(aaaa) )
            return false;
            
      if ( mm < 1 || mm > 12 )
            return false;
            
      mm--;
      
      if ( (aaaa % 4) == 0 )
            dias[1] = 29;
            
      if ( dd < 1 || dd > dias[mm] )
            return false;
            
      return true;
}


	// Cambia una fecha CORRECTA al formato AAAAMMDD
function FechaISO(fecha)
{
	//                                                0123456789
	// Se espera que fecha sea una cadena en formato "DD-MM-AAAA"

	return fecha.substring(6, 10) + fecha.substring(3, 5) + fecha.substring(0, 2);
}

//************************************
//* FECHA HORA
//************************************

function FechaHoraCorrecta(fecha) {
	//                                                01234567890123
	// Se espera que fecha sea una cadena en formato "DD-MM-AA HH:MM"
	var	dd, mm, aaaa, horas, minutos;
	var dias;

	if ( fecha.length != 14 )
		return false;

	dias = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

	dd = fecha.substring(0, 2);
	mm = fecha.substring(3, 5);
	aaaa = fecha.substring(6, 8);
	aaaa = 2000 + aaaa*1;
	horas = fecha.substring(9, 11);
	minutos = fecha.substring(12, 14);

	if ( !EsNumeroEnteroSinSigno(dd) )
		return false;
	if ( !EsNumeroEnteroSinSigno(mm) )
		return false;
	if ( !EsNumeroEnteroSinSigno(aaaa) )
		return false;
	if ( !EsNumeroEnteroSinSigno(horas) )
		return false;
	if ( !EsNumeroEnteroSinSigno(minutos) )
		return false;

	if ( mm < 1 || mm > 12 )
		return false;

	mm--;

	if ( (aaaa % 4) == 0 )
		dias[1] = 29;

	if ( dd < 1 || dd > dias[mm] )
		return false;

	if ( horas > 23 )
		return false;

	if ( minutos > 59 )
		return false;

	return true;
}

//************************************
//* FECHA HORA
//************************************

function HoraCorrecta(tiempo) {
	//                                                01234
	// Se espera que hora  sea una cadena en formato "HH:MM"
	var	horas, minutos, divisor;

	if ( tiempo.length != 5 )
		return false;

	horas = tiempo.substring(0, 2);
	divisor = tiempo.substring(2, 3);
	minutos = tiempo.substring(3, 5);

	if ( !EsNumeroEnteroSinSigno(horas) )
		return false;
	if ( !EsNumeroEnteroSinSigno(minutos) )
		return false;
		
	if ( divisor != ":" )
		return false;

	if ( horas > 23 )
		return false;

	if ( minutos > 59 )
		return false;

	return true;
}
