//-----
function check(aTestResult, anErrorMessage) {
  if (aTestResult)
    return false;
  else {
    alert(anErrorMessage);
    if (lastObjectTested != null) {
      lastObjectTested.focus();
      lastObjectTested.select();
    }
    return true;
  }
}
//-----
function dateDiff(yyyy1,mm1,dd1,yyyy2,mm2,dd2) {
  yyyy1 = parseInt(yyyy1);
  var date1 = new Date((yyyy1<100 ? 2000+yyyy1 : yyyy1),mm1-1,dd1);
  if (yyyy2==null || mm2==null || dd2==null)
    var date2 = new Date();
  else {
    yyyy2 = parseInt(yyyy2);
    var date2 = new Date((yyyy2<100 ? 2000+yyyy2 : yyyy2),mm2-1,dd2);
  }
  return Math.round((date2 - date1)/(24*60*60*1000));
}
//-----
var lastObjectTested = null;
function getStringAndRememberObject(anObject) {
  if ( (new RegExp("text|textarea|password","i")).test(anObject.type) ) {
    lastObjectTested = anObject;
    return anObject.value;
  } else
    return anObject.toString();
}
//-----
function isAcctNumber(aStringOrTextObj) {
  var aString = getStringAndRememberObject(aStringOrTextObj);
  var acctNumber = aString.replace(/ |\-/g,"");
  if (acctNumber == "")
    return false;
  else if ((acctNumber.length > 12) || (acctNumber.length < 8))
    return false;
  else if (!(new RegExp("^[0-9]+$")).test(acctNumber))
    return false;
  else
    return true;
}
//-----
function isAlpha(aStringOrTextObj) {
  var aString = getStringAndRememberObject(aStringOrTextObj);
  return (new RegExp("^[a-zA-Z]+$")).test(aString);
}
//-----
function isAlphanumeric(aStringOrTextObj) {
  var aString = getStringAndRememberObject(aStringOrTextObj);
  return (new RegExp("^[0-9a-zA-Z]+$")).test(aString);
}
//-----
function isBetween(aStringOrTextObj, min, max) {
  var aNum = getStringAndRememberObject(aStringOrTextObj);
  if (isNaN(aNum))
    return false;
  if (min != null)
    if (aNum < min || isNaN(min))
      return false;
  if (max != null)
    if (aNum > max || isNaN(max))
      return false;
  return true;
}
//-----
function isBlank(aStringOrTextObj) {
  var aString = getStringAndRememberObject(aStringOrTextObj);
  return (new RegExp("^[\ ]*$")).test(aString);
}
//-----
function isCardNumber(aStringOrTextObj) {
  var aString = getStringAndRememberObject(aStringOrTextObj);
  var cardNumber = aString.replace(/ |\-/g,"");
  if (cardNumber == "")
    return false;
  else if ( !(new RegExp("^[0-9]+$")).test(cardNumber) )
    return false;
  else
    return true;
}
//-----
function isDate(yyyy, mm, dd) {
  if (isNaN(yyyy) || isNaN(mm) || isNaN(dd))
    return false;
  var iYear  = parseInt(yyyy);
  var iMonth = parseInt(mm) - 1;
  var iDay   = parseInt(dd);
  iYear = iYear<100 ? 2000+iYear : iYear;
  var aDate = new Date(iYear,iMonth,iDay);
  if (iYear != aDate.getYear())
    return false;
  if (iMonth != aDate.getMonth())
    return false;
  if (iDay != aDate.getDate())
    return false;
  return true;
}
//-----
function isInteger(aStringOrTextObj) {
  var aString = getStringAndRememberObject(aStringOrTextObj);
  return (new RegExp("^[ ]*[\-\+]?[ ]*[0-9]+[ ]*$")).test(aString)
}
//-----
function isMoney(aStringOrTextObj) {
  var aString = getStringAndRememberObject(aStringOrTextObj);
  var tmp = aString.replace(/ /g,"").replace(/^\$/,"");          // Remove any spaces or leading $
  DollarsOnly     = /^[0-9]+(\,[0-9][0-9][0-9])*\.?$/;           // "n,nnn,nnn" or "n,nnn,nnn."
  DollarsAndCents = /^[0-9]+(\,[0-9][0-9][0-9])*\.[0-9][0-9]$/;  // "n,nnn,nnn.nn"
  CentsOnly       =                           /^\.[0-9][0-9]$/;  // ".nn"
  if (DollarsAndCents.test(tmp))
    return true;
  else if (DollarsOnly.test(tmp))
    return true;
  else if (CentsOnly.test(tmp))
    return true;
  else
    return false;
}
//-----
function isNumeric(aStringOrTextObj) {
  var aString = getStringAndRememberObject(aStringOrTextObj);
  return (new RegExp("^[0-9]+$")).test(aString);
}
//-----
function isNumber(aStringOrTextObj) {
  var aString = getStringAndRememberObject(aStringOrTextObj);
  return !isNaN(aString);
}
//-----
function isPhone(aStrOrTextObj1, aStrOrTextObj2, aStrOrTextObj3) {
  var aString;
  Numeric = /^[0-9]+$/;
  if (aStrOrTextObj2==null || aStrOrTextObj3==null) {
    aString = getStringAndRememberObject(aStrOrTextObj1).replace(/[ \-()]+/g,"");
    if (aString.length != 10)
      return false;
    else
      return Numeric.test(aString);
  } else {
    aString = getStringAndRememberObject(aStrOrTextObj1).replace(/[ \-()]+/g,"");
    if ( aString.length != 3 || !Numeric.test(aString) )
      return false;
    aString = getStringAndRememberObject(aStrOrTextObj2).replace(/[ \-()]+/g,"");
    if ( aString.length != 3 || !Numeric.test(aString) )
      return false;
    aString = getStringAndRememberObject(aStrOrTextObj3).replace(/[ \-()]+/g,"");
    if ( aString.length != 4 || !Numeric.test(aString) )
      return false;
    return true;
  }
}
//-----
function isPostalCode(aStringOrTextObj1 ,aStringOrTextObj2) {
  if (aStringOrTextObj2 == null) {
    var aString = getStringAndRememberObject(aStringOrTextObj1);
    return (new RegExp("^ *[A-Z][0-9][A-Z][ \-]*[0-9][A-Z][0-9] *$","i")).test(aString);
  } else {
    var aString = getStringAndRememberObject(aStringOrTextObj1);
    if ( !(new RegExp("^ *[A-Z][0-9][A-Z][ \-]*$","i")).test(aString) )
      return false;
    var aString = getStringAndRememberObject(aStringOrTextObj2);
    if ( !(new RegExp("^[ \-]*[0-9][A-Z][0-9] *$","i")).test(aString) )
      return false;
    return true;
  }
}
//-----
function strip(aStringOrTextObj, stripChars, fromWhere) {
  var aString = getStringAndRememberObject(aStringOrTextObj);
  if (stripChars == null)
    stripChars = " ";
  if (fromWhere == null)
    fromWhere = "LT";
  var escapedChars = "";
  for (var i = 0; i < stripChars.length; i++)
    escapedChars = escapedChars + "\\" + stripChars.substr(i,1);
  if (fromWhere.search("A","gi") >= 0)
    aString = aString.replace(new RegExp("["+escapedChars+"]","g"),"");
  else {
    if (fromWhere.search("L","gi") >= 0)
      aString = aString.replace(new RegExp("^["+escapedChars+"]+"),"");
    if (fromWhere.search("T","gi") >= 0)
      aString = aString.replace(new RegExp("["+escapedChars+"]+$"),"");
  }
  return aString;
}

