  var requiredControlCount=0;
  var ctrlToValidate = new Array();
  function registerReqField(name, count, msg, dependon, dependvalues){
  	var ctrl = new Object();
  	ctrl.name=name;
  	ctrl.count=count;
  	ctrl.msg=msg;
  	ctrl.dependon=dependon;
  	ctrl.dependvalues=dependvalues;
  	ctrlToValidate[requiredControlCount++] = ctrl;
  }
  function doValidation(questions){
  	if (document.getElementById("TxtQ43")!=null && document.getElementById("TxtQ43").value !=null && document.getElementById("TxtQ43").value.length<5) {
  		alert("You must enter a 5-digit number for Zip Code.");
  		document.getElementById("TxtQ43").focus();
  		return false;
  	}
  	
  	
  	for (i=0; i< requiredControlCount; i++){
		var thisQuestionPass=false;
  		if (ctrlToValidate[i].dependon!="Ck" && ctrlToValidate[i].dependvalues!=null){
  			var dependonValue = ctrlToValidate[i].dependvalues.split(",");
  			thisQuestionPass=true;
  			for (j=0; j<dependonValue.length; j++){
  				if (document.getElementById(ctrlToValidate[i].dependon + dependonValue[j]).checked) thisQuestionPass=false;
  			}
  		} 
  		
  		if (!thisQuestionPass) {
			if (ctrlToValidate[i].count==0) {
				if (document.getElementById(ctrlToValidate[i].name).value=="") {
					alert (ctrlToValidate[i].msg + " is required!"); return false;
				}
			} else {
				for (j=0; j<ctrlToValidate[i].count; j++){
					if (document.getElementById(ctrlToValidate[i].name + "_" + (j+1)).checked) thisQuestionPass=true;
				}  		
				if (!thisQuestionPass) {
					alert (ctrlToValidate[i].msg + " is required."); 
					return false;
				}
			}  		
		}	
  	}
  	
  	return true;
  }
 

function onlyNumbers(obj, e, mask, max) {

	if (obj!=null && obj.value!=null && obj.value.length>=max){
		if (window.event) {
			e = window.event;
			e.returnValue = false;
			return false;
		} else {
			if (e.preventDefault) e.preventDefault();
			return false;
		}   		
	}

	var keyCode;
	var returnVal = false;

	if (window.event) {
		e = window.event;
		keyCode = e.keyCode;
	} else {
		// a key, such as delete, was pressed; let it pass through
		if (e.keyCode == e.which) keyCode = null;
		// else if not a char we don't know what this is; let it pass through
		else if (e.charCode != e.which) keyCode = 0;
		// else a char - set it
		else keyCode = e.which;
	}

	<!-- key not recognizable - let it pass (8 and 63272 are Safari 1.2 Backspace and Del keys-->
	if (keyCode==null || keyCode == 0 || keyCode==8 || keyCode==63272) {
		returnVal = true;
	}

	// if a control key was not detected above, returnVal will still be false and
	// further analysis is required
	if (returnVal != true) {
		// if minus sign pressed and at first position, return true
		if (keyCode == 45 && obj.value == 0) {
			returnVal = true;
		} else if ((keyCode > 47 && keyCode < 58) || // numbers 0-9
				   (keyCode == 45) || // minus sign
				   (top.decimalSymbol == "." && keyCode == 46) ||
				   (top.decimalSymbol == "," && keyCode == 44)) {
			if (acceptsChar(keyCode, obj, mask) != false) {
				returnVal = true;
			}
		}
	}
	if(returnVal==true)
		textSel=false;	// set to false because accepting the char will cancel the selection
	if (window.event) {
		e.returnValue = returnVal;
		return returnVal;
	} else {
		if (returnVal == false && e.preventDefault) e.preventDefault();
		return returnVal;
	}
}

function acceptsChar(key, obj, mask) {
	// check if trying to add more than one minus sign
	if (key == 45 && (obj.value.indexOf("-") != -1)){
		return false;
	}
	return true;
}

function getMask(integerDigits, fractionDigits){
	var numMask = "1";
	if (integerDigits == 0) numMask = "0";
	for(var i=0; i<integerDigits; i++){
		numMask = numMask + "0";
	}
	if (fractionDigits != 0){
	   numMask = numMask + ".";
	   for(var i=0; i<fractionDigits; i++){
		   numMask = numMask + "0";
	   }
	}
	return numMask;
}   
function validateChar(fldName, obj, e, isNumber){
	if (isNumber) {
   		if (!onlyNumbers(obj, e, getMask(9, 0), 9)){
   			if (document.getElementById(fldName)!=null && document.getElementById(fldName).value !=null && document.getElementById(fldName).value.length<9) alert("You must enter a number.");
   			return false;
   		}
	}
	
   	if (fldName=="TxtQ43") {
   		if (!onlyNumbers(obj, e, getMask(5, 0), 5)){
   			if (document.getElementById("TxtQ43")!=null && document.getElementById("TxtQ43").value !=null && document.getElementById("TxtQ43").value.length<5) alert("You must enter a number.");
   			return false;
   		}
   	}
   	if (fldName=="TxtQ48") {
   		if (!onlyNumbers(obj, e, getMask(6, 0), 6)){
   			if (document.getElementById("TxtQ48")!=null && document.getElementById("TxtQ48").value !=null && document.getElementById("TxtQ48").value.length<6) alert("You must enter a number.");
   			return false;
   		}
   	}
   	if (fldName=="TxtQ46") {
   		if (!onlyNumbers(obj, e, getMask(6, 0), 6)){
   			if (document.getElementById("TxtQ46")!=null && document.getElementById("TxtQ46").value !=null && document.getElementById("TxtQ46").value.length<6) alert("You must enter a number.");
   			return false;
   		}
   	}
   	if (fldName=="TxtQ49") {
   		if (!onlyNumbers(obj, e, getMask(6, 0), 6)){
   			if (document.getElementById("TxtQ49")!=null && document.getElementById("TxtQ49").value !=null && document.getElementById("TxtQ49").value.length<6) alert("You must enter a number.");
   			return false;
   		}
   	}
}
