/* 
  Validation Library 
  Various validations of user input
  (c) Copyright 2005-2006, e-numera, Inc.
  http://e-numera.com/ http://ajax-web2.com/
*/

// Note: null text will have varying results, depending on function (some will cause an error). Test for nulls 
// with isNotEmpty() before using the others!  Never pass a non-string object as text parameter.  

function isNotEmpty (text, isWhiteSpaceOk) {
  return !!text || !!isWhiteSpaceOk || text.trim().length > 0;
}

function isAllNumericCharacters (text) {
  var result = true, 
      ch = 0;
  for (var i = 0; i < text.length && result; i++)
    ch = text.charCodeAt(i), result = ((ch >= 48) && (ch <= 57));
  return result;
}

function isValidUSZipCode (text) {
  var result = false;
  if (text.length == 10) {
    var codes = text.split('-');
    result = (codes.length == 2) && isAllNumericCharacters(codes[0]) && isAllNumericCharacters(codes[1]);
  }
  else
    result = (text.length == 5 || text.length == 9) && isAllNumericCharacters(text);
  return result;
}

function isValidCityState (text) {
  var addresses = text.split(',');
  return (addresses.length == 2) && (addresses[0].trim().length > 0) && (addresses[1].trim().length == 2);
}

function isUSDollars (text) {
  var result = false;
  if (text && text.length > 0) {
    text = text.trim().replace(/[\$\,]/ig,''); 
    var frags = text.split('.');
    result = frags.length == 1 || frags.length == 2;
    for (var i = 0; i < frags.length && result; i++)
      result = result && isAllNumericCharacters(frags[i]);
  }
  return result;
}

if (!String.prototype.trim) String.prototype.trim = function () {
  var ch = 0, 
      start = 0, 
      end = this.length - 1;
  for (start = 0; start < this.length; start++) {
    ch = this.charCodeAt(start);
    if (ch > 32) break;
  }
  for (end = this.length - 1; end > start; end--) {
    ch = this.charCodeAt(end);
    if (ch > 32) break;
  }
  return this.substr(start, end - start + 1);
}
