function ValidarFormulario(elmFORM) { 

if (document.getElementById('texto') != null){
 	document.sampleform.texto.value=convert2Xhtml(document.sampleform.texto.value);
}
if (document.getElementById('textosocio') != null){
 	document.sampleform.textosocio.value=convert2Xhtml(document.sampleform.textosocio.value);
}
if (document.getElementById('textoproductos') != null){
 	document.sampleform.textoproductos.value=convert2Xhtml(document.sampleform.textoproductos.value);
}
if (document.getElementById('textoservicios') != null){
 	document.sampleform.textoservicios.value=convert2Xhtml(document.sampleform.textoservicios.value);
}
if (document.getElementById('observaciones') != null){
 	document.sampleform.observaciones.value=convert2Xhtml(document.sampleform.observaciones.value);
}



 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'; 
       } 
     } 
   if (cnjFORM[i].className.indexOf('Hora')!=-1) { 
     if (! esHora(cnjFORM[i].value)) { 
       Mensaje+='El campo ' + cnjFORM[i].name + ' no es una hora valida (hh:mm).\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'; 
       } 
     } 
   if (cnjFORM[i].className.indexOf('Precio')!=-1) { 
     if (! esPrecio(cnjFORM[i].value)) { 
       Mensaje+='El campo ' + cnjFORM[i].name + ' no es valido. El separador de centimos(2 maximo) es el punto. \n'; 
       } 
     } 
   if (cnjFORM[i].className.indexOf('fileimagen')!=-1) { 
     if (! esjpg(cnjFORM[i].value)) { 
       Mensaje+='El campo ' + cnjFORM[i].name + ' no es valido. No es una imagen .jpg \n'; 
       } 
     } 

   } 
 
 if (Mensaje != '') alert(Mensaje); 

 return (Mensaje == ''); 
}


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 esHora(Valor){
  if (!tieneDatos(Valor)) return true; 
  var a = Valor.match(/^[0-9][0-9]:[0-9][0-9]$/gi);
  if (!a){
 	return false;
  }
  return true;
 
}


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 esPrecio(Valor) {
 if (!tieneDatos(Valor)) return true; 
 var a = Valor.match(/^[0-9]+(\.[0-9][0-9]?)?$/gi);
 if (!a){
 	return false;
 }
 return true;
}


function esKilos(Valor) {
 if (!tieneDatos(Valor)) return true; 
 var a = Valor.match(/^[0-9]+(\.?[0-9]?[0-9]?[0-9]?)$/gi);
 if (!a){
 	return false;
 }
 return true;
}

/************** Para poner en minusculas los tags del editor ****************/

function convert2Xhtml(theHtml) {
 var html;
 html = theHtml;
 
 // Make xhtml compatible
 html = html.replace(/<.*>?>/g,function(m,p,s){return m.replace(/\s(\w+=)([#\w,;]+)/g,function(m,p,s){return ' ' + p.toLowerCase() + '"' + s + '"';});});
 html = html.replace(/<(\/?\w+)([^>]*>)/g,function(m,p,s){return '<' + p.toLowerCase() + s;});
 html = html.replace(/<(meta|base|basefont|param|link|img|br|hr|area|input)([^>]*)>/g,function(m,p,s){return m.indexOf(' />') == -1 ? '<' + p + s + ' />' : m;}); 
 
 // Add empty ALT if not present in the IMG tag 
 html = html.replace(/<(img)([^>]*)\/>/g,function(m,p,s){return m.indexOf('alt=') == -1 ? '<' + p + s + ' alt="" />' : m;}); 
 
 // Escape quotes
 html = html.replace(/\'/g,"\\'");
 return html; 
}

