function CheckInput(objHTMLTextBox, numMessage, blnPrompt) {
   if (isWhitespace(objHTMLTextBox.value) == true) {
      if (blnPrompt != false) {
         PromptMessage(objHTMLTextBox, numMessage);
      }
      return false;
   }
   else {
      return true;
   }
}

function CheckSelect(objSelect, numMessage, blnPrompt, blnBlankOk) {
   if (objSelect.options[objSelect.selectedIndex].value == "") {
      if (blnBlankOk == false) {
	     if (blnPrompt != false) {
            PromptMessage(objSelect, numMessage);
         }
      }
      return false;
   }
   else {
      return true;
   }
}

function CheckRadio(objSelect, numMessage, blnPrompt, numNumButtons) {
   var blnNoneChecked = true, i;
   for (i = 0; i <= (numNumButtons-1); i++) {
      if ((blnNoneChecked == true) && (objSelect[i].checked == true)) {
         blnNoneChecked = false;
      }
   }
   if (blnNoneChecked == true) {
      if (blnPrompt != false) {
         PromptMessage(objSelect, numMessage);
      }
      return false;
   }
   else {
      return true;
   }
}

function CheckInputDate(dtmDate, numMessage, blnPrompt, blnBlankOk) {
   var txtError, dtm = new String(dtmDate.value);
   if (dtm == null || dtm.length == 0) {
      if (blnBlankOk == false) {
         if (blnPrompt != false) {
            PromptMessage(dtmDate, numMessage);
         }
         return false;
      }
      else {
         return true;
      }
   }
   if (!isValidDate(dtm)) {
      if (blnPrompt != false) {
         PromptMessage(dtmDate, numMessage);
      }
      return false;
   }
   return true;
}

function CheckInputDateTime(dt2DateTime, numMessage, blnPrompt, blnBlankOk, blnCheckTime) {
   var txtErro2r, dt2 = new String(dt2DateTime.value);
   if (dt2 == null || dt2.length == 0) {
      if (blnBlankOk == false) {
         if (blnPrompt != false) {
            PromptMessage(dt2DateTime, numMessage);
         }
         return false;
      }
      else { return true; }
   }
   if (!isValidDateTime(dt2, blnCheckTime)) {
      if (blnPrompt != false) {
         PromptMessage(dt2DateTime, numMessage);
      }
      return false;
   }
   return true;
}

function CheckInputRegularExpression(objInput, numMessage, blnPrompt, txtRegularExpression) {
   if (objInput.value.match(txtRegularExpression) == null) {
      if (blnPrompt != false) {
         PromptMessage(objInput, numMessage);
      }
      return false;
   }
   else {
      return true;
   }
}

function CheckEmailAddress(objInput, numMessage, blnPrompt) {
// from http://javascript.internet.com/forms/check-email.html
   var emailPat=/^(.+)@(.+)$/;
   var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
   var validChars="\[^\\s" + specialChars + "\]";
   var quotedUser="(\"[^\"]*\")";
   var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
   var atom=validChars + '+';
   var word="(" + atom + "|" + quotedUser + ")";
   var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
   var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

   var matchArray=objInput.value.match(emailPat);
   if (matchArray==null) {
      if (blnPrompt != false) {
         PromptMessage(objInput, numMessage);
      }
      return false;
   }
   var user=matchArray[1];
   var domain=matchArray[2];

   if (user.match(userPat)==null) {
      if (blnPrompt != false) {
         PromptMessage(objInput, numMessage);
      }
      return false;
   }

   var IPArray=domain.match(ipDomainPat);
   if (IPArray!=null) {
      for (var i=1;i<=4;i++) {
         if (IPArray[i]>255) {
            if (blnPrompt != false) {
               PromptMessage(objInput, numMessage);
            }
            return false;
         }
      }
      return true;
   }

   var domainArray=domain.match(domainPat);
   if (domainArray==null) {
      if (blnPrompt != false) {
         PromptMessage(objInput, numMessage);
      }
      return false;
   }

   var atomPat=new RegExp(atom,"g");
   var domArr=domain.match(atomPat);
   var len=domArr.length;
   if (domArr[domArr.length-1].length<2 || 
      domArr[domArr.length-1].length>3) {
      if (blnPrompt != false) {
         PromptMessage(objInput, numMessage);
      }
      return false;
   }

   if (len<2) {
      if (blnPrompt != false) {
         PromptMessage(objInput, numMessage);
      }
      return false;
   }
   return true;
}

function isValidDate(txtDate) {
   var dateReqExp = /^(\d{4})(\-)(\d{2})\2(\d{2})$/;

   var matchArray = txtDate.match(dateReqExp);
   if (matchArray == null) { return false; }

   // parse date into variables
   month = matchArray[3];
   day = matchArray[4];  // 4 instead of 5 because of match at 2
   year = matchArray[1];

   if (month < 1 || month > 12) { return false; }
   if (day < 1 || day > 31) { return false; }
   if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) { return false; }
   if ((month == 2) && ((day>29) || ((day==29) && !(year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))))) { return false; }

   return true;
}

function isValidDateTime(txtDateTime, blnCheckTime) {
   var year;
   var month;
   var day;
   var hour = 0;
   var minute = 0;
   var second = 0;

   if (blnCheckTime == null) {
      var datetimeReqExp = /^(\d{4})(\-)(\d{2})\2(\d{2})( (\d{2})(\:)(\d{2})(\7(\d{2}))?)?$/;
   }
   else if (!blnCheckTime) {
      var datetimeReqExp = /^(\d{4})(\-)(\d{2})\2(\d{2})$/;
   }
   else if (blnCheckTime) {
      var datetimeReqExp = /^(\d{4})(\-)(\d{2})\2(\d{2}) (\d{2})(\:)(\d{2})(\6(\d{2}))?$/;
   }
   
   var matchArray = strDateTime.match(datetimeReqExp);
   if (matchArray == null) { return false; }

   // parse date/time into variables
   year = matchArray[1];
   month = matchArray[3];  // 3 instead of 2 because 2 = "-"
   day = matchArray[4];

   if (blnCheckTime == null) {
      if (matchArray.length == 9) { 
         hour = matchArray[6];
         minute = matchArray[8]; 
      }
      if (matchArray.length == 11) { second = matchArray[10]; }
   }
   else if (blnCheckTime) {
      hour = matchArray[5];
      minute = matchArray[7]; 
      if (matchArray.length == 10) { second = matchArray[9]; }
   }

   if (month < 1 || month > 12) { return false; }
   if (day < 1 || day > 31) { return false; }
   if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) { return false; }
   if ((month == 2) && ((day>29) || ((day==29) && !(year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))))) { return false; }
   if (hour > 23 || hour < 0) { return false; }
   if (minute > 59 || minute < 0) { return false; }
   if (second > 59 || second < 0) { return false; }

   return true;
}

function isValidPhoneNum(txtValue, numMessage, blnBlankOk) {
   var txtInput = new String(strValue.value);
   var txtPhonePat = /^(\d{3})(\-)(\d{3})\2(\d{4})$/;
   var matchArray = txtInput.match(txtPhonePat);

   if (matchArray == null && blnBlankOk == false) {
      PromptMessage(txtValue, numMessage);
      return false;
   }
   else
      return true;
}

function PromptMessage(objHTMLTextBox, numMessage) {
   if (numMessage != null) {
      alert(arrMessages[numMessage]);
   } else {
      alert("Please be sure a proper value is entered.");
   }
   objHTMLTextBox.focus();
}

function isWhitespace(s) {
   var i;
   if ((s == null) || (s.length == 0)) { return true; }
   for (i = 0; i < s.length; i++) {
      var c = s.charAt(i);
      if (" \t\n\r".indexOf(c) == -1) { return false; }
   }
   return true;
}
