
var whitespace		= " \t\n\r";
var numericChars	= "0123456789.-";

//-------------------------------------
function trimString(str) {
  str = this != window ? this : str;
  return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

String.prototype.trim = trimString;

//-------------------------------------
function isEmpty(s) {

	return ((s == null) || (s.length == 0));
}

//-------------------------------------
function isNumeric(s) {
var i,c;

	s = s.trim();
	
	if (isEmpty(s)) { return false; }
	
	for (i=0; i<s.length; i++) {
		c = s.charAt(i);
		if (numericChars.indexOf(c) == -1) { return false; }
	}

	return true;
}

//-------------------------------------
function isWhitespace(s) {
var i,c;

	s = s.trim();
	
	if (isEmpty(s)) { return true; }
	
	for (i=0; i<s.length; i++) {
		c = s.charAt(i);
		if (whitespace.indexOf(c) == -1) { return false; }
	}

	return true;
}

//-------------------------------------
function hasWhitespace(s) {
var i,c;

	for (i=0; i<s.length; i++) {
		c = s.charAt(i);
		if (whitespace.indexOf(c) != -1) { return true; }
	}

	return false;
}

//-------------------------------------
function hasChar(s,ch) {
var i,c;

	for (i=0; i<s.length; i++) {
		c = s.charAt(i);
		if (c == ch) { return true; }
	}

	return false;
}

//-------------------------------------
function isEmail(s) {
var i,c;

	s = s.trim();
	
	// Empty string?
	if (isWhitespace(s)) { return false; }
	
	// Check if any whitespaces remain
	if (hasWhitespace(s)) { return false; }

	// Check minimum length, a@b.nl
	if (s.length < 6) { return false; }

	// Check for @
	if (!hasChar(s,"@")) { return false; }
	
	// Check for .
	if (!hasChar(s,".")) { return false; }

	return true;
}
