var whitespace = " \t\n\r";

function ValidateMe() {
 var badThings = ""; var goodInput = true; var firstBadPlace = "";
 if (isWhitespace(document.getElementById("YourName").value)) {
   firstBadPlace = document.getElementById("YourName");
   goodInput = false; 
   badThings = "Please enter your Name.";
 }
 if (! isEmail(document.getElementById("YourEmail").value)) {
   if (goodInput) {
      firstBadPlace = document.getElementById("YourEmail");
   } else {
      badThings += "\n";
   }
   goodInput = false; 
   badThings += "Please enter a valid Email Address.";
 }
 if (isWhitespace(document.getElementById("YourRequest").value)) {
   if (goodInput) {
      firstBadPlace = document.getElementById("YourRequest");
   } else {
       badThings += "\n";
   }
   goodInput = false; 
   badThings += "Please enter your Request.";
 }
 if (goodInput) {
   return true;
 } else {
   alert (badThings);
   firstBadPlace.focus();
   firstBadPlace.select();
   return false;
 }
}

function isWhitespace (s) {
     var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
	// Check that current character isn't whitespace.
	var c = s.charAt(i);

	if (whitespace.indexOf(c) == -1) return false;
    }

    // All characters are whitespace.
    return true;
}
function isEmpty(s) {
 return ((s == null) || (s.length == 0))
}
// isEmail (STRING s [, BOOLEAN emptyOK])
// 
// Email address must be of form a@b.c ... in other words:
// * there must be at least one character before the @
// * there must be at least one character before and after the .
// * the characters @ and . are both required
//
// For explanation of optional argument emptyOK,
// see comments of function isInteger.

function isEmail (s)
{      
    // is s whitespace?
    if (isWhitespace(s)) return false;
    
    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}

