
          
function trim(s) {
   while (s.substring(0,1) == ' ') {
       s = s.substring(1,s.length);
   }
   while (s.substring(s.length-1,s.length) == ' ') {
        s = s.substring(0,s.length-1);
   }
   return s;
}

function isCreditCard(checkStr) {
  var checkOK = "1234567890 ";
  var isValid = false;
  if (hasOnlyValidCharacters(checkStr,checkOK) &&
     checkStr.length > 6) {
     isValid = true;
  }
  return isValid;
}

function isNumeric(checkStr) {
  var checkOK = "1234567890-.";
  var allValid = true;
  var decPoints = 0;
  var allNum = "";
  
  if (checkStr.length == 0) {
     return false;
  }  
  
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkOK.length;  j++)
      if (ch == checkOK.charAt(j))
        break;
    if (j == checkOK.length)
    {
      allValid = false;
      break;
    }
    if (ch == ".")
    {
      allNum += ".";
      decPoints++;
    }
    else
      allNum += ch;
  }

  if (decPoints > 1)
  {
     allValid  = false;
  }
  
  return allValid;
}


function isEmail(string) {                
    if (string.match(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/))
       return true;
    else
       return false;
}

function isPhone(checkStr) {
  var checkOK = "1234567890-() ";
  return hasOnlyValidCharacters(checkStr,checkOK);
}  

function isPositiveWholeNumber(checkStr) {  
  checkStr = trim(checkStr);
  var checkOK = "1234567890";
  
  if (checkStr.length == 0) {
     return false;
  }  
  return hasOnlyValidCharacters(checkStr,checkOK);
}

function isDate(checkStr) {
  checkStr = trim(checkStr);
  
  var isValidDate = true;  //  dd/mm/yyyy
  if (hasOnlyValidCharacters(checkStr.charAt(1), "- /")) {
    checkStr = "0" + checkStr;
  }
  if (hasOnlyValidCharacters(checkStr.charAt(4), "- /") && checkStr.length == 9 ) {
    checkStr = checkStr.charAt(0) 
       + checkStr.charAt(1)
       + checkStr.charAt(2) + "0"
       + checkStr.charAt(3)
       + checkStr.charAt(4)
       + checkStr.charAt(5)
       + checkStr.charAt(6)
       + checkStr.charAt(7)
       + checkStr.charAt(8)
       + checkStr.charAt(9)
       ;
  }
  
  if (checkStr.length == 10) {
    if (!hasOnlyValidCharacters(checkStr.charAt(0), "1234567890") ||
        !hasOnlyValidCharacters(checkStr.charAt(1), "1234567890") ||
        !hasOnlyValidCharacters(checkStr.charAt(2), "- /") ||
        !hasOnlyValidCharacters(checkStr.charAt(3), "1234567890") ||
        !hasOnlyValidCharacters(checkStr.charAt(4), "1234567890") ||
        !hasOnlyValidCharacters(checkStr.charAt(5), "- /") ||
        !hasOnlyValidCharacters(checkStr.charAt(6), "1234567890") ||
        !hasOnlyValidCharacters(checkStr.charAt(7), "1234567890") ||
        !hasOnlyValidCharacters(checkStr.charAt(8), "1234567890") ||
        !hasOnlyValidCharacters(checkStr.charAt(9), "1234567890") ) {
        isValidDate = false;
    }
    
    if (isValidDate) {
      
      var thisMonth = parseInt(checkStr.charAt(0) + checkStr.charAt(1));
      if (thisMonth < 0 || thisMonth > 12) {
        isValidDate = false;
      }
      
      var thisDay = parseInt(checkStr.charAt(3) + checkStr.charAt(4));
      if (thisDay < 0 || thisDay > 31) {
        isValidDate = false;
      }
      
      var thisYear = parseInt(checkStr.charAt(6) 
                             + checkStr.charAt(7)
                             + checkStr.charAt(8)
                             + checkStr.charAt(9));
      if (thisYear < 1950 || thisYear > 2050) {
        isValidDate = false;
      }
    }
  } else {
    //assert: too big
    return isDate("0" + checkStr);
    isValidDate = false;
  }  
  return isValidDate;
}

function hasOnlyValidCharacters(checkStr, validChars) {
  var allValid = true;
  var allValidChars = "";
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);  //assign character to validate
    for (j = 0;  j < validChars.length;  j++) {
      if (ch == validChars.charAt(j)) {
        //assert: this is in list of valid chars
        break;
      }
      if (j == validChars.length-1)
      {
         //assert: went thru the list - not there
         allValid = false;
         break;
      }
    }
    allValidChars += ch;
  }
  
  return allValid;
}

