  var campos_forma = new Array ("NOMBRE","CORREO","TELEFONO","COMENTARIOS");

  function ValidateForm2(forma) {
    if ( 
	     (ValidaControlesNoNulos(forma,campos_forma))&&
		 (ValidaCorreo (forma.CORREO.value))&&(EsValida())
	    )

	{
	  return true
	}
    else {
	  return false
	}
  } 


// variables globales
var Explorador = navigator.appName;



function CreaPermalink(strAccents){
    strAccents = strAccents.split('');
    strAccentsOut = new Array();
    strAccentsLen = strAccents.length;
    var accents = ' *=<>&¿?!¡.,;:()%$#"\'\\/@ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
    var accentsOut = ['-','','','','','','','','','','','','','','','','','','','','','','', '','A','A','A','A','A','A','a','a','a','a','a','a','O','O','O','O','O','O','O','o','o','o','o','o','o','E','E','E','E','e','e','e','e','e','C','c','D','I','I','I','I','i','i','i','i','U','U','U','U','u','u','u','u','N','n','S','s','Y','y','y','Z','z'];
    for (var y = 0; y < strAccentsLen; y++) {
        if (accents.indexOf(strAccents[y]) != -1) {
            strAccentsOut[y] = accentsOut[accents.indexOf(strAccents[y])];
        }
        else
            strAccentsOut[y] = strAccents[y];
    }
    strAccentsOut = strAccentsOut.join('');
    return strAccentsOut;
}







/******************************************************************************
  funcion ValidaEntero
  Esta función valida que el texto capturado dentro de un control de texto sea
  un número entero.
  Uso: ... onkeydown="return ValidaEntero(event)" ...
******************************************************************************/

function ValidaEntero(evento) {
	var Tecla;
	var valido=false;

	if (Explorador.indexOf("Explorer",0) != -1) {
		Tecla = evento.keyCode;
	} else {
		Tecla=evento.which;
	}
	if (((Tecla > 47) && (Tecla < 58)) || (Tecla==8) || (Tecla==13) ||
	    (Tecla==45) ) {
		valido=true;
	}
	if (Explorador.indexOf("Explorer",0) != -1) {
		if (!valido) {
			evento.keyCode = "";
		}
	}
	return valido;
}




/******************************************************************************
  funcion ValidaNatural
  Esta función valida que el texto capturado dentro de un control de texto sea
  un número Natural o cero.
******************************************************************************/

function ValidaNatural(evento) {
	var Tecla;
	var valido=false;

	if (Explorador.indexOf("Explorer",0) != -1) {
		Tecla = evento.keyCode;
	} else {
		Tecla=evento.which;
	}
	if (((Tecla > 47) && (Tecla < 58)) || (Tecla==8) || (Tecla==13)) {
		valido=true;
	}
	if (Explorador.indexOf("Explorer",0) != -1) {
		if (!valido) {
			evento.keyCode = "";
		}
	}
	return valido;
}







/******************************************************************************
  funcion ValidaFlotante
  Esta función valida que el texto capturado dentro de un control de texto sea
  un número real.
******************************************************************************/

function ValidaFlotante(evento, control) {
	var Tecla;
	var valido=false;

	if (Explorador.indexOf("Explorer",0) != -1) {
		Tecla = evento.keyCode;
	} else {
		Tecla=evento.which;
	}
	if (((Tecla > 47) && (Tecla < 58)) || (Tecla==8) || (Tecla==13) || 
	    (Tecla==45) || (Tecla==46)) {
    	if ( (Tecla==46) && (control.value.indexOf(".")!= -1 ) ) {
    	  valido = false 
    	 }
    	 else {
    	   valido = true;
    	 }		 
	}
	if (Explorador.indexOf("Explorer",0) != -1) {
		if (!valido) {
			evento.keyCode = "";
		}
	}
	return valido;
}


/******************************************************************************
  funcion ValidaURL
  Esta función valida que el texto capturado dentro de un control de texto sea
  un URL valido
******************************************************************************/

function ValidaURL(evento) {
	var Tecla;
	var valido=false;


	if (Explorador.indexOf("Explorer",0) != -1) {
		Tecla = evento.keyCode;
	} else {
		Tecla=evento.which;
	}
	//alert(Tecla);
	if (
	    ((Tecla > 47) && (Tecla < 58)) || 
	    ((Tecla > 64) && (Tecla < 91)) || 
	    ((Tecla > 96) && (Tecla < 123)) || 
	    (Tecla==8) || (Tecla==13) || (Tecla==46) || (Tecla==0)|| (Tecla==45)
	   ) {
		valido=true;
	}
	if (Explorador.indexOf("Explorer",0) != -1) {
		if (!valido) {
			evento.keyCode = "";
		}
	}
	return valido;
}


/******************************************************************************
  funcion ValidaDirectorio
  Esta función valida que el texto capturado dentro de un control de texto sea
  un URL valido
******************************************************************************/

function ValidaDirectorio(evento) {
	var Tecla;
	var valido=false;


	if (Explorador.indexOf("Explorer",0) != -1) {
		Tecla = evento.keyCode;
	} else {
		Tecla=evento.which;
	}
	//alert(Tecla);
	if (
	    ((Tecla > 47) && (Tecla < 58)) || 
	    ((Tecla > 64) && (Tecla < 91)) || 
	    ((Tecla > 96) && (Tecla < 123)) || 
	    (Tecla==8) || (Tecla==13) || (Tecla==47) 
	   ) {
		valido=true;
	}
	if (Explorador.indexOf("Explorer",0) != -1) {
		if (!valido) {
			evento.keyCode = "";
		}
	}
	return valido;
}

/******************************************************************************
  funcion ValidaControlesNoNulos
  Esta función valida que un arreglo de controles no tenga valores nulos.
  
******************************************************************************/
  
  
  function ValidaControlesNoNulos(Forma,Arreglo) {
     for (var i = 0; i < Forma.elements.length; i++) {  	
       if (EstaEnArreglo(Forma.elements[i].name,Arreglo)) {
            	if (EsVacio(Forma.elements[i].value)) {
                    alert ("Este campo es requerido.");
                    Forma.elements[i].focus()
                    Forma.elements[i].select()	
                    return false           
                }         
       }         
     }
    return true;
  }

  
/******************************************************************************
  Funciones de soporte para las funciones principales.
******************************************************************************/



  function EstaEnArreglo(Elemento, Arreglo) {
    for (var i = 0; i < Arreglo.length; i++) {  	
      if (Arreglo[i]==Elemento) {        
          return true
      }         
    }
    return false  
  }

  
  function EsVacio(Cadena) {
    if (Cadena == "" || Cadena == null) {
      return true
    }
  
   for (var i = 0; i < Cadena.length; i++) {
      var Caracter = Cadena.substring(i, i + 1)
      if (Caracter!=" " && Caracter!="\t" && Caracter!="\n") {
        return false
      }
   }
  
    return true
  }

 


/******************************************************************************
  Funciones de soporte para validacion de correo.
******************************************************************************/

 
function ValidaCorreo(correo){
  var i=1
  var final = correo.length
  var valido = false
  if(final>0){
    if((EsLetra(correo.charAt(0)))){ 
       var token = correo.charAt(i)
       while((i<final)&&(token!='@')&&((EsLetra(token))||(EsNumero(token))||(token=='.')||(token=='_')||(token=='-'))){
          i++;
          token = correo.charAt(i);
       }
       if ((token == '@')&&(correo.charAt(i+1)!= '.')&&((i+1)<final)){
          i++;   
          token = correo.charAt(i)
          while((i<final)&&(token!='.')&&((EsLetra(token))||(EsNumero(token))||(token=='_')||(token=='-'))){
              i++;   
              token = correo.charAt(i)
          }
          if((token == '.')&&(correo.charAt(i+1)!='.')&&((i+1)<final)){
            i++;   
            token = correo.charAt(i)
            while((i<final)&&(token!='.')&&((EsLetra(token))||(EsNumero(token)||(token=='_')||(token=='-')))){
               i++;   
               token = correo.charAt(i)
            }
            if (i>=final){
               return true
            }else{
               if ((token == '.')&&((i+1)<final)){
                 i++;   
                 token = correo.charAt(i)
                 while((i<final)&&((EsLetra(token))||(EsNumero(token))||(token=='_')||(token=='-'))){
                   i++;   
                   token = correo.charAt(i)
                 }
                 if(i>=final){
                    return true
                 }else{
                    alert('Hay algo mal después del segundo punto')
                    return false
                 }
               }else{
                  alert('Hay un simbolo desconocido después del primer punto')
                  return false
               }
            }
          }else{
             alert('No tiene punto, o hay algun símbolo no valido')
             return false
          }
       }else{
          alert('No hay \'@\', no hay dominio, o hay un símbolo no válido')
          return false
       }
    }else{
       alert('El comienzo del correo es invalido')
       return false;
    }
  }else{
     return true;
  }
}


/******************************************************************************
  funcion EsLetra
  Devuelve true si el caracter recibido es una letra.
******************************************************************************/

function EsLetra(letra){
   if(((letra>='A') && (letra<='Z')) ||((letra>='a')&&(letra<='z'))){
      return true;
   }else{
      return false;
   }
}
/******************************************************************************
  funcion EsNumero
  Devuelve true si el caracter recibido es un número.
******************************************************************************/

function EsNumero(numero){
   if((numero>='0') && (numero<='9')){
      return true;
   }else{
      return false;
   }
}


