<!--

/* **********************************************************************************************
'Copyright returngoods.com 1999-2000.  All rights reserved
'------------------------------------------------------------------------------------------------
'File Name	: lib/FieldValidate.js
'Created By	: ETT
'Date Created 	: 11/26/99
'Description  	: JavaScript Supporting functions for validating field data types
'Modifications	: 
'
'********************************************************************************************* */

  /*================================================================================================
  'FUNCTION   : jsIsEmpty
  'AUTHOR     : ETT 
  'DATE       : 12/08/99
  'DESCRIPTION: Checks to see if the string contains anything
  '===============================================================================================*/
  function jsIsEmpty(psString)
  {   
    return ((psString == null) || (psString.length == 0))
  }
    // whitespace characters
    
    // Returns true if string s is empty or 
    // whitespace characters only.

  /*================================================================================================
  'FUNCTION   : jsIsBlank
  'AUTHOR     : ETT 
  'DATE       : 12/08/99
  'DESCRIPTION: Checks to see if the is blank
  '===============================================================================================*/
  function jsIsBlank (psString)
  {   
    var i;
    var sEmptyChar = " \r\n\t";
    var iLen = psString.length

    // Is the string empty?
    if (jsIsEmpty(psString)) return true;

    /* Loop thru every character in the string, returns 
       true if all of them are blanks, otherwise, returns false. */

    for (i = 0; i < iLen; i++)
    {   
      if (sEmptyChar.indexOf(psString.charAt(i)) == -1) return false;
    }
        
    return true;
  }


  /*================================================================================================
  'FUNCTION   : jsIsInteger
  'AUTHOR     : ETT 
  'DATE       : 12/08/99
  'DESCRIPTION: Checks to see if the string is a valid integer format. Doesn't accept blanks
  '===============================================================================================*/
  function jsIsDigit (cChar)
  {   
    return ((cChar >= "0") && (cChar <= "9") || (cChar == ","))
  }
 
  function jsIsInteger (psString)
  {   var i;
      var bDigitFound = false;

      var iLen = psString.length;

      if (jsIsEmpty(psString)) return false;
      for (i = 0; i < iLen; i++)
      {   
        if (i == 0) {
          if (psString.charAt(i) != '-') {
            if (!jsIsDigit(psString.charAt(i))) return false;
            else bDigitFound = true;
          }
        }
	else {
          if (!jsIsDigit(psString.charAt(i))) return false;
          else bDigitFound = true;
        }
      }

      if (!bDigitFound) return false;
      return true;
  }

  /*================================================================================================
  'FUNCTION   : jsIsFloat
  'AUTHOR     : ETT 
  'DATE       : 12/08/99
  'DESCRIPTION: Checks to see if the string is a floating point number.  Doesn't accept blanks
  '===============================================================================================*/
  function jsIsFloat (psString)
  {   
    var i;
    var iLen = psString.length 
    var bDecimalPointFound = false;
    var bDigitFound = false;

    if (jsIsEmpty(psString)) return false;

    if (psString == ".") return false;
      for (i = 0; i < iLen; i++)
      {   
        if (i == 0) {
          if (psString.charAt(i) != '-') {
            if ((psString.charAt(i) == ".") && !bDecimalPointFound) bDecimalPointFound = true;
            else if (!jsIsDigit(psString.charAt(i))) 
              return false;
            else
              bDigitFound = true;
          }
        }
        else {
          if ((psString.charAt(i) == ".") && !bDecimalPointFound) bDecimalPointFound = true;
          else if (!jsIsDigit(psString.charAt(i))) 
            return false;
          else
            bDigitFound = true;
        }
      }

      if (!bDigitFound) return false;
      return true;
   }


  /*================================================================================================
  'FUNCTION   : jsIsBoolean
  'AUTHOR     : ETT 
  'DATE       : 12/13/99
  'DESCRIPTION: Checks to see if the string a boolean value: true or false
  '===============================================================================================*/
  function jsIsBoolean (psString)
  {   
    var sUpperCaseString;
    sUpperCaseString = psString.toUpperCase();
    return ((sUpperCaseString == "TRUE") || (sUpperCaseString == "FALSE"));
  }

  /*================================================================================================
  'FUNCTION   : jsTrim
  'AUTHOR     : ETT 
  'DATE       : 054/26/05
  'DESCRIPTION: Trim the leading and trailing blanks
  '===============================================================================================*/
  function jsTrim (psString)
  {   
    var sEmptyChar = " \r\n\t";
    // Is the string empty?
    if (jsIsEmpty(psString)) return "";
    while (sEmptyChar.indexOf(psString.charAt(0)) != -1)
      psString = psString.substring(1,psString.length);
    
    while (sEmptyChar.indexOf(psString.charAt(psString.length - 1)) != -1)
      psString = psString.substring(0,psString.length - 1)

        
    return psString;
  }
  

  /*================================================================================================
  'FUNCTION   : jsIsEmail
  'AUTHOR     : ETT 
  'DATE       : 06/04/00
  'DESCRIPTION: Checks to see if the string valid email address
  '===============================================================================================*/
  
  function jsIsEmail(psString) {
    
    if (jsIsBlank(psString)) return true;
    psString = jsTrim(psString);
  // are regular expressions supported?
    var supported = 0;
    if (window.RegExp) {
      var tempStr = "a";
      var tempReg = new RegExp(tempStr);
      if (tempReg.test(tempStr)) supported = 1;
    }
    if (!supported) 
      return (psString.indexOf(".") > 2) && (psString.indexOf("@") > 0);
    var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
    var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
    return (!r1.test(psString) && r2.test(psString));
}

  /*================================================================================================
  'FUNCTION   : jsIsDate
  'AUTHOR     : ETT 
  'DATE       : 06/04/00
  'DESCRIPTION: Checks to see if the string valid date of format "mm/dd/yy"
  '===============================================================================================*/
  
  function jsIsDate(dateStr) {
  // Checks for the following valid date formats:
  // MM/DD/YY   MM/DD/YYYY   MM-DD-YY   MM-DD-YYYY
  // Also separates date into month, day, and year variables

  var iDateFormat = jsGetDateFormat();
  var datePat;
  
  datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;

  var matchArray = dateStr.match(datePat); // is the format ok?
            
  if (matchArray == null) {
    if (iDateFormat == 0)
      alert("Date is not in a valid format.  Please use the format yy/mm/dd.")
    else if (iDateFormat == 1)
      alert("Date is not in a valid format.  Please use the format dd/mm/yy.")
    else
      alert("Date is not in a valid format.  Please use the format mm/dd/yy.")
    return false;
  }

  if (iDateFormat == 0) {
    day = matchArray[4]; 
    month = matchArray[3];
    year = matchArray[1];
    return false;
  }
  else if (iDateFormat == 1) {
    day = matchArray[1]; 
    month = matchArray[3];
    year = matchArray[4];
  }
  else {
    month = matchArray[1]; 
    day = matchArray[3];
    year = matchArray[4];
  }

  //alert ("iDateFormat = " + iDateFormat);
  //alert ("day = " + day + "\n" + "month = " + month + "\n" + "year = " + year);
  
  
  if (month < 1 || month > 12) { // check month range
    if (iDateFormat == 0)
      alert("Month must be between 1 and 12.  Please use the format yy/mm/dd.");
    else if (iDateFormat == 1)
      alert("Month must be between 1 and 12.  Please use the format dd/mm/yy.");
    else
      alert("Month must be between 1 and 12.  Please use the format mm/dd/yy.");
    return false;
  }


  if (day < 1 || day > 31) {
    if (iDateFormat == 0)
      alert("Day must be between 1 and 31.  Please use the format yy/mm/dd.");
    else if (iDateFormat == 1)
      alert("Day must be between 1 and 31.  Please use the format dd/mm/yy.");
    else
      alert("Day must be between 1 and 31.  Please use the format mm/dd/yy.");
    return false;
  }
  
  if ((month==4 || month==6 || month==9 || month==11) && day==31) {
    alert("Month "+month+" doesn't have 31 days!")
    return false
  }
  if (month == 2) { // check for february 29th
    var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
    if (day>29 || (day==29 && !isleap)) {
      alert("February " + year + " doesn't have " + day + " days!");
      return false;
     }
  }
  return true;  // date is valid
}


function jsFormatNumber(psNumber) {
  psNumber = psNumber.toString().replace(/\$|\,/g,'');
  if(isNaN(psNumber)) psNumber = "0";
  cents = Math.floor((psNumber*100+0.5)%100);
  psNumber = Math.floor((psNumber*100+0.5)/100).toString();
  if(cents < 10) cents = "0" + cents;
  for (var i = 0; i < Math.floor((psNumber.length-(1+i))/3); i++)
  psNumber = psNumber.substring(0,psNumber.length-(4*i+3))+','+psNumber.substring(psNumber.length-(4*i+3));
  return (psNumber + '.' + cents);
}

  /*================================================================================================
  'FUNCTION   : jsDateRangeOK
  'AUTHOR     : TTL
  'DATE       : 05/11/06
  'DESCRIPTION: Checks to see if the date range is valid. If valid return true.
  '===============================================================================================*/
  function jsDateRangeOK(psStartDate,psEndDate) {
    if (psStartDate > psEndDate) {
      alert('Invalid date range');
      return false;
    }
  }


  /*================================================================================================
  'FUNCTION   : jsDateRangeError
  'AUTHOR     : TTL
  'DATE       : 05/11/06
  'DESCRIPTION: Checks to see if the date range is valid. If error return true.
  '===============================================================================================*/
  function jsDateRangeError(psStartDate,psEndDate) {
    if (psStartDate > psEndDate) {
      alert('Invalid date range');
      return true;
    }
  }

//-->


