function ValidarFormulario(elmFORM) { 
 var Mensaje = ''; 
 var cnjFORM = elmFORM.elements; 
 var elmLABEL; 
 for (var i=0; i<cnjFORM.length; i++) { 
   if (cnjFORM[i].className.indexOf('Obligatorio')!=-1) { 
     if (! tieneDatos(cnjFORM[i].value)) { 
       Mensaje+='El campo '+cnjFORM[i].name+' no puede estar vacio.\n'; 
       } 
     } 
   if (cnjFORM[i].className.indexOf('Fecha')!=-1) { 
     
     if (! esFecha(cnjFORM[i].value)) { 
       Mensaje+='El campo ' + cnjFORM[i].name + ' no es una fecha valida (dd-mm-aaaa).\n'; 
     }else{
   	if (cnjFORM[i].className.indexOf('PosteriorHoy')!=-1) { 
     		if (! esPosteriorHoy(cnjFORM[i].value)) { 
       			Mensaje+='Las fechas no pueden ser anteriores al dia de hoy.\n'; 
       		} 
	}
     }
   }
   if (cnjFORM[i].className.indexOf('Numerico')!=-1) { 
     if (! esNumerico(cnjFORM[i].value)) { 
       Mensaje+='El campo ' + cnjFORM[i].name + ' solo puede contener numeros.\n'; 
       } 
     } 
   if (cnjFORM[i].className.indexOf('Email')!=-1) { 
     if (! esEmail(cnjFORM[i].value)) { 
       Mensaje+='El campo ' + cnjFORM[i].name + ' no es una direccion de correo valida.\n'; 
       } 
     } 
   if (cnjFORM[i].className.indexOf('Url')!=-1) { 
     if (! esURL(cnjFORM[i].value)) { 
       Mensaje+='El campo ' + cnjFORM[i].name + ' no es una direccion web valida.\n'; 
       } 
     } 
   
   } 
 Mensaje+=compararfechas();
 if (Mensaje != '') alert(Mensaje); 
 return (Mensaje == ''); 
}

function ValidarElementoFormulario(formfield){
var label=getLabelForId(formfield.name);
formfield.style.border='2px solid #999999';
   if (formfield.className.indexOf('Obligatorio')!=-1) {
     if (! tieneDatos(formfield.value)) { 
       label.className="Problema";return "";
       } 
     } 
   if (formfield.className.indexOf('Fecha')!=-1) { 
     if (! esFecha(formfield.value)) { 
       label.className="Problema";return "";
       } 
     } 
   if (formfield.className.indexOf('Numerico')!=-1) { 
     if (! esNumerico(formfield.value)) { 
       label.className="Problema";return "";
       } 
     } 
   if (formfield.className.indexOf('Email')!=-1) { 
     if (! esEmail(formfield.value)) { 
       label.className="Problema";return "";
       } 
     } 
   if (formfield.className.indexOf('Url')!=-1) { 
     if (! esURL(formfield.value)) { 
       label.className="Problema";return "";
       } 
     }
 /* PARA PONER LA IMAGEN DE VALIDO TAMBIEN EN LOS CAMPOS QUE NO TIENEN DATOS */
 /* if (tieneDatos(formfield.value)) { */
     
   label.className="Valido";return "";
  /* } */
}

function tieneDatos(Valor) { 
 for (var i=0; i<Valor.length; i++) { 
   if ((" \t\n\r").indexOf(Valor.charAt(i))==-1) return true; 
   } 
 return false; 
}
 
function esNumerico(Valor) {
 if (!tieneDatos(Valor)) return true; 
 var a = Valor.match(/^[0-9]+$/gi);
 if (!a){
 	return false;
 }
 return true;
}
 
function esFecha(oTxt) { 
	if (!tieneDatos(oTxt)) return true; 
    	var bOk = true; 
	bOk = bOk && (valAno(oTxt)); 
	bOk = bOk && (valMes(oTxt)); 
	bOk = bOk && (valDia(oTxt)); 
	bOk = bOk && (valSep(oTxt)); 
	if (!bOk){ return false; } 
	return true;
}

/* Funcion auxiliar para validar el separador de la fecha */

   function valSep(oTxt){ 
    var bOk = false; 
    var sep1 = oTxt.charAt(2); 
    var sep2 = oTxt.charAt(5); 
    bOk = bOk || ((sep1 == "-") && (sep2 == "-")); 
    return bOk; 
   } 

/* Funcion auxiliar para validar el fin de mes de la fecha */

   function finMes(oTxt){ 
    var nMes = parseInt(oTxt.substr(3, 2), 10); 
    var nAno = parseInt(oTxt.substr(6), 10); 
    var nRes = 0; 
    switch (nMes){ 
     case 1: nRes = 31; break; 
     case 2: nRes = 28; break; 
     case 3: nRes = 31; break; 
     case 4: nRes = 30; break; 
     case 5: nRes = 31; break; 
     case 6: nRes = 30; break; 
     case 7: nRes = 31; break; 
     case 8: nRes = 31; break; 
     case 9: nRes = 30; break; 
     case 10: nRes = 31; break; 
     case 11: nRes = 30; break; 
     case 12: nRes = 31; break; 
    } 
    return nRes + (((nMes == 2) && (nAno % 4) == 0)? 1: 0); 
   } 


/* Funcion auxiliar para validar el dia de la fecha */
   
   function valDia(oTxt){ 
    var bOk = false; 
    var nDia = parseInt(oTxt.substr(0, 2), 10); 
    bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt))); 
    return bOk; 
   } 

/* Funcion auxiliar para validar el mes de la fecha */   

   function valMes(oTxt){ 
    var bOk = false; 
    var nMes = parseInt(oTxt.substr(3, 2), 10); 
    bOk = bOk || ((nMes >= 1) && (nMes <= 12)); 
    return bOk; 
   } 

/* Funcion auxiliar para validar el aņo de la fecha */

   function valAno(oTxt){ 
    var bOk = true; 
    var nAno = oTxt.substr(6); 
    bOk = bOk && (nAno.length == 4); 
    if (bOk){ 
     for (var i = 0; i < nAno.length; i++){ 
      bOk = bOk && esNumerico(nAno.charAt(i)); 
     } 
    } 
    return bOk; 
   } 

function esEmail(email){
 if (!tieneDatos(email)) return true; 
if( email.indexOf('@',0) <= 0  || email.indexOf(';',0) != -1
     || email.indexOf(' ',0) != -1 || email.indexOf('/',0) != -1
     || email.indexOf(';',0) != -1 || email.indexOf('<',0) != -1
     || email.indexOf('>',0) != -1 || email.indexOf('*',0) != -1
     || email.indexOf('|',0) != -1 || email.indexOf('`',0) != -1
     || email.indexOf('&',0) != -1 || email.indexOf('$',0) != -1
     || email.indexOf('!',0) != -1 || email.indexOf('"',0) != -1
     || email.indexOf(':',0) != -1 ) { 
	 return false; 
}
else return true;
}

function esURL(Web) {
if (!tieneDatos(Web)) return true; 
else
    if( (Web.substring(0, 7) == 'http://') || (Web.substring(0, 7) == 'HTTP://')) {
		return true;
    }
    else {
		return false;
	}
}


function esPosteriorHoy(Valor){
	if (!tieneDatos(Valor)) return true; 
   	var datehoy = new Date();
   	var fechahoy = formatDate(datehoy, 'yyyyMMdd');
	var lista_valor = Valor.split("-");
	var valorformat = lista_valor[2]+lista_valor[1]+lista_valor[0];
	if (fechahoy>valorformat){
	   return false;
	}
	return true;
   	
}


function compararfechas(){

   
   if ( (tieneDatos(document.formreserva1.fechaentrada.value)) && (tieneDatos(document.formreserva1.fechasalida.value)) )
   {
	var f_entrada = document.formreserva1.fechaentrada.value.split("-");
	var fechaParaCompararEntrada = f_entrada[2]+f_entrada[1]+f_entrada[0];
	var f_salida = document.formreserva1.fechasalida.value.split("-");
	var fechaParaCompararSalida = f_salida[2]+f_salida[1]+f_salida[0];
	if (fechaParaCompararSalida < fechaParaCompararEntrada) {
		return "La fecha de salida no puede ser anterior a la fecha de entrada.";
	}
   }
   return "";
	
}


  function addZero(vNumber){ 
    return ((vNumber < 10) ? "0" : "") + vNumber 
  } 
        
  function formatDate(vDate, vFormat){ 
    var vDay                      = addZero(vDate.getDate()); 
    var vMonth            = addZero(vDate.getMonth()+1); 
    var vYearLong         = addZero(vDate.getFullYear()); 
    var vYearShort        = addZero(vDate.getFullYear().toString().substring(3,4)); 
    var vYear             = (vFormat.indexOf("yyyy")>-1?vYearLong:vYearShort) 
    var vHour             = addZero(vDate.getHours()); 
    var vMinute           = addZero(vDate.getMinutes()); 
    var vSecond           = addZero(vDate.getSeconds()); 
    var vDateString       = vFormat.replace(/dd/g, vDay).replace(/MM/g, vMonth).replace(/y{1,4}/g, vYear) 
    vDateString           = vDateString.replace(/hh/g, vHour).replace(/mm/g, vMinute).replace(/ss/g, vSecond) 
    return vDateString 
  } 
