//////////////////////////////////////////////////
//VARIABLES:
var whitespace = " \t\n\r";
//////////////////////////////////////////////////
//FUNCIONES:
function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}
//////////////////////////////////////////////////
function isWhitespace (s)
{
 var i;
    if (isEmpty(s)) return true;
    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (whitespace.indexOf(c) == -1) return false;
    }
    return true;
}
//////////////////////////////////////////////////
function isLetter (c)
{
   return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")))    
}
//////////////////////////////////////////////////
function isDigit (c)
{
   return ((c >= "0") && (c <= "9"))
}
//////////////////////////////////////////////////
function isvalidEmailChar (s)
{
   var i;
    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (! (isLetter(c) || isDigit(c) || (c=='@') || (c=='.') || (c=='_') || (c=='-') || (c=='+')) ) {
               return false;
        }
    }
    return true;
}

//////////////////////////////////////////////////
function isEmail (s)
{
   if (isEmpty(s))
       if (isEmail.arguments.length == 1) return false;
       else return (isEmail.arguments[1] == true);
    if (isWhitespace(s)) return false;
        if (!isvalidEmailChar(s)) return false;
    atOffset = s.lastIndexOf('@');
    if ( atOffset < 1 )
        return false;
    else {
         dotOffset = s.indexOf('.', atOffset);
      if ( dotOffset < atOffset + 2 ||
         dotOffset > s.length - 2 ) {
         return false;
      }
   }
   return true;
}
//////////////////////////////////////////////////