  // Funcion que comprueba si la cadena es texto vacio o no
  function vacio(cadena)
  {
    var blanco = " \n\t" + String.fromCharCode(13);
    var i;
    var es_vacio;
    for(i = 0, es_vacio = true; (i < cadena.length) && es_vacio; i++)
      es_vacio = blanco.indexOf(cadena.charAt(i)) != - 1;
    return(es_vacio);
  }


  // Funcion que comprueba si la cadena es email o no.
  function email(cadena, otros)
  {
    var i, j, p1, p2;
    var es_email = 0 < cadena.length;
    i = salta_alfanumerico(cadena, 0, otros);
    if(es_email = 0 < i)               // Lee la cadena
      if(es_email = (i < cadena.length))
        if(es_email = cadena.charAt(i) == '@') // Encontramos @
          {
            i++;
            j = salta_alfanumerico(cadena, i, otros);
            if(es_email = i < j)       // Lee la cadena siguiente a @
              if(es_email = j < cadena.length)
                if(es_email = cadena.charAt(j) == '\.')
                  {                    // Leemos hasta encontrat "."
                    j++;
                    i = salta_alfanumerico(cadena, j, otros);
                    if(es_email = j < i) // Lee la cadena siguiente a "."
                      while(es_email && (i < cadena.length))
                        if(es_email = cadena.charAt(i) == '\.')
                          {
                            i++;
                            j = salta_alfanumerico(cadena, i, otros);
                            if(es_email = i < j) // Lee la cadena "alfanum@alfanum.alfanum[.alfanum]*"
                              i = j;
                          }
                  }
          }
        else if(es_email = cadena.charAt(i) == '\.') // Si encontramos un primer punto en la cadena del nombre del email.
		{
          i++;
	      p1 = salta_alfanumerico(cadena, i, otros);
          if(es_email = cadena.charAt(p1) == '@') // Encontramos @
            {
		      p1++;
              i = p1;
              j = salta_alfanumerico(cadena, i, otros);
              if(es_email = i < j)       // Lee la cadena siguiente a @
                if(es_email = j < cadena.length)
                  if(es_email = cadena.charAt(j) == '\.')
                    {                    // Leemos hasta encontrat "."
                      j++;
                      i = salta_alfanumerico(cadena, j, otros);
                      if(es_email = j < i) // Lee la cadena siguiente a "."
                        while(es_email && (i < cadena.length))
                          if(es_email = cadena.charAt(i) == '\.')
                            {
                              i++;
                              j = salta_alfanumerico(cadena, i, otros);
                              if(es_email = i < j) // Lee la cadena "alfanum@alfanum.alfanum[.alfanum]*"
                                i = j;
                            }
                    }
            }
            else if(es_email = cadena.charAt(p1) == '\.') // Si encontramos un segundo punto en la cadena del nombre del email.
    		{
              p1++;
	          p2 = salta_alfanumerico(cadena, p1, otros);
              if(es_email = cadena.charAt(p2) == '@') // Encontramos @
                {
		          p2++;
                  i = p2;
                  j = salta_alfanumerico(cadena, i, otros);
                  if(es_email = i < j)       // Lee la cadena siguiente a @
                    if(es_email = j < cadena.length)
                      if(es_email = cadena.charAt(j) == '\.')
                        {                    // Leemos hasta encontrat "."
                          j++;
                          i = salta_alfanumerico(cadena, j, otros);
                          if(es_email = j < i) // Lee la cadena siguiente a "."
                            while(es_email && (i < cadena.length))
                              if(es_email = cadena.charAt(i) == '\.')
                                {
                                  i++;
                                  j = salta_alfanumerico(cadena, i, otros);
                                  if(es_email = i < j) // Lee la cadena "alfanum@alfanum.alfanum[.alfanum]*"
                                    i = j;
                                }
                        }
                }
    		}
		}
    return(es_email);
  }
    

  // Funcion que salta caracteres alfanumericosde una cadena y devuelve siguiente posicion
  function salta_alfanumerico(cadena, i, otros)
  {
    var j;
    var car;
    var alfanum;
    for(j = i, alfanum = true; (j < cadena.length) && alfanum; j++)
      {
        car = cadena.charAt(j);
        alfanum = alfanumerico(car) || (otros.indexOf(car) != -1);
      }
    if(!alfanum)
      j--;
    return(j);
  }
  
  // Funcion que dice si "car" es alfanumerico
  function alfanumerico(car)
  {
    return(alfabetico(car) || numerico(car));
  }


  // Funcion que dice si "car" es del alfabeto
  function alfabetico(car)
  {
    var alfa = "ABCDEFGHIJKLMNOPQRSTUWXYZabcdefghijklmnopqrstuvxyz";
    return(alfa.indexOf(car) != - 1);
  }


  // Funcion que dice si "car" es numerico
  function numerico(car)
  {
    var num = "0123456789";
    return(num.indexOf(car) != - 1);
  }