function checkRequired(which) {
  for (i=0;i<which.length;i++) {
    var tempobj=which.elements[i];
    if (tempobj.name.substring(0,8)=="required") {
			//shortFieldName=tempobj.name.substring(8,30).toUpperCase();
			shortFieldName=tempobj.name.substring(8,tempobj.name.length);
			//alert("obj:" + tempobj.name);
			//alert("objtype:" + tempobj.type);
			if (tempobj.type=="text"||tempobj.type=="textarea"||tempobj.type=="password") {
				if (isAllSpaces(tempobj.value)) {
				      tempobj.focus();
					alert("Please enter a value in the "+shortFieldName+" field.");
					return false;
				}
			}
			if (tempobj.type=="select-one") {
				//alert('selectedindex:' + tempobj.selectedIndex);
				if (tempobj.selectedIndex ==0) {
				  tempobj.focus();
					alert("Please select a value in the "+shortFieldName+" field.");
					return false;
				}
			}
			if (tempobj.type=="radio") {
				var j, chk, cnt;
				chk = 0;
				cnt = eval(which.name + '.' + tempobj.name+'.length');
				for (j = 0; j < cnt; j++ ) {
					if (eval(which.name + '.' + tempobj.name)[j].checked) {
						chk = 1;
					}
				}
				if (chk==0) {
				  tempobj.focus();
					alert("Please select a value in the "+shortFieldName+" field.");
					return false;
				}
			}
		}	         
		if (tempobj.name.toLowerCase().indexOf("email") > -1 && tempobj.value.length>0) {
			var retval = isEmail(tempobj.value);
			if (retval==false) {
				tempobj.focus();
				alert("Please enter a valid Email Address.");
				return false;
			}
		}				
		if (tempobj.type=="textarea") {
			if (tempobj.value.length>4000) {
			   tempobj.focus();
				alert("Please restrict input to 4000 characters in the "+shortFieldName+" field. You have enetered " + tempobj.value.length + " characters.");
				return false;
			}
		}
  }
  return true;
}

function isAllSpaces(s) {
   var j;
   for (j = 0; j < s.length; j++ ) {
      if (s.charAt(j) != ' ' && s.charAt(j) != '\n' && s.charAt(j) != '\r' ) {
         return false;
      }
   }                     
   return true;
}
 
function isEmail(str) {
  // 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 (str.indexOf(".") > 2) && (str.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(str) && r2.test(str));
}
 
function isDigit(sNum) {
	var nonDigit = /\D/g;
	if (nonDigit.test(sNum))
	    // contains something else that a digit
	    return false;
	  else
	    // contains only digits
	    return true;
}
 
function IsNumeric(sText)
{
   var ValidChars = "0123456789,.";
   var IsNumber=true;
   var Char;
   for (i = 0; i < sText.length && IsNumber == true; i++) { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) {
         IsNumber = false;
      }
   }
   return IsNumber;
}

function isNumber(n) {
  return /^\d+$|^\d+\.\d+$/.test(n);
}


  
 
function isDate(dateStr) {
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var matchArray = dateStr.match(datePat); // is the format ok?

    if (matchArray == null) {
        alert("Please enter date as either mm/dd/yyyy or mm-dd-yyyy.");
        return false;
    }

    month = matchArray[1]; // parse date into variables
    day = matchArray[3];
    year = matchArray[5];

    if (month < 1 || month > 12) { // check month range
        alert("Month must be between 1 and 12.");
        return false;
    }

    if (day < 1 || day > 31) {
        alert("Day must be between 1 and 31.");
        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
}

<!-- autoTab //-->
var isNN = (navigator.appName.indexOf("Netscape")!=-1);
function autoTab(input,len,e,nextElement){
  var keyCode = (isNN)?e.which:e.keyCode; 
  var filter = (isNN)?[0,8,9]:[0,8,9,16,17,18,37,38,39,40,46];
  if(input.value.length >= len && !containsElement(filter,keyCode)){
    input.value = input.value.slice(0,len);
    input.form[nextElement].focus();
  }
  function containsElement(arr, ele){
    var found = false, index = 0;
    while(!found && index < arr.length)
      if(arr[index]==ele)
        found = true;
      else
        index++;
    return found;
  }
  return true;
}

function checkNumber(sNum, iLen, sFld) {
	//check that all characters are numbers
	if (isDigit(sNum)==false) {
		alert('Please enter a ' + iLen + ' digit number in the ' + sFld + '.');
		return false;
	}
	//check that number of digits matches
	if (sNum.length != iLen) {
		alert('Please enter a ' + iLen + ' digit number in the ' + sFld + '.');
		return false;
	}
	//check that numbers not in sequence
	var seq = '1234567890';
	if (sNum == seq.substr(0,iLen)) {
		alert(sNum + ' is not a valid value. Please enter a valid ' + iLen + ' digit number in the ' + sFld + '.');
		return false;
	}
	//check that all digits not the same
	var char1 = sNum.substr(0,1);
	var newnum = '';
	for (i = 0; i < iLen; i++) {
		newnum = newnum + char1;
	}
	if (sNum == newnum) {
		alert(sNum + ' is not a valid value. Please enter a valid ' + iLen + ' digit number in the ' + sFld + '.');
		return false;
	}
	
	return true;	
}
  