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;
}

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);
}

function isValidCityState (text) {
  var addresses = text.split(',');
  return (addresses.length == 2) && (addresses[0].trim().length > 0) && (addresses[1].trim().length == 2);
}

