<!--
// written by Ryan Schaeffer, gsk - 4/01/02

		var required = [], format = [], OrderError = [];
		var validateForm = null;
		var ErrorObj = new Object();
		ErrorObj.ConfigError = '';

		// initialer helper function to build required array and parameters
		function addRequired(display, field) {
			var pos = required.length;
			required[pos] = new Object();
			required[pos].display = display;
			required[pos].field = field; 
			if (arguments.length > 2) {
				required[pos].trigger = arguments[2];
				required[pos].extra = [];
				for (var i=3; i < arguments.length; i+=2) {
					var extrapos = required[pos].extra.length;
					required[pos].extra[extrapos] = new Object();
					required[pos].extra[extrapos].display = arguments[i];
					required[pos].extra[extrapos].field = arguments[i+1];
				}
			}
		}
		
		function isDate(thedate, theformat) {
			var aDaysInMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);

			// Fetch the date separator from the user's input
			var sSepDate = thedate.charAt(thedate.search(/\D/));
			// Fetch the date separator from the format
			var sSepFormat=theformat.charAt(theformat.search(/[^MDY]/i));
			// Compare separators
			if (sSepDate!=sSepFormat) return false;

			// Fetch the three pieces of the date from the user's input and the format
			var aValueMDY=thedate.split(sSepDate,3);
			var aFormatMDY=theformat.split(sSepFormat,3);

			// Assign day, month, year based on format
			var iMonth,iDay,iYear;
			iMonth = aValueMDY[0];
			iDay   = aValueMDY[1];
			iYear  = aValueMDY[2];

			// Validate that all pieces of the date are numbers
			if ( !/\d/.test( iMonth ) || !/\d/.test( iDay ) || !/\d/.test( iYear ) )
				return false;

			// Require format digit year
			if(iYear.length!=aFormatMDY[2].length)	return false;

			// Check for leap year
			var iDaysInMonth=(iMonth!=2)?aDaysInMonth[iMonth-1]:
			((iYear%4==0 && iYear%100!=0 || iYear % 400==0)?29:28);

			return (iDay!=null && iMonth!=null && iYear!=null && iMonth<13 && iMonth>0 && iDay>0 && iDay<=iDaysInMonth);		
		}
		
		function isTime(thetime, theformat) {
			// Fetch the date separator from the user's input
			var sSepDate = thetime.charAt(thetime.search(/\D/));
			// Fetch the date separator from the format
			var sSepFormat=theformat.charAt(theformat.search(/[^HM]/i));
			// Compare separators
			if (sSepDate!=sSepFormat) return false;

			// Fetch the three pieces of the date from the user's input and the format
			var aValueHM=thetime.split(sSepDate,2);
			var aFormatHM=theformat.split(sSepFormat,2);

			// Assign day, month, year based on format
			var iHour,iMinute;
			iHour 	= aValueHM[0];
			iMinute	= aValueHM[1];

			// Validate that all pieces of the date are numbers
			if ( !/\d/.test( iHour ) || !/\d/.test( iMinute ) )
				return false;

			return (iHour!=null && iMinute!=null && iHour<24 && iHour>=0 && iMinute>=0 && iMinute<60);		
		}		
		
		// initialer helper function to build format array and parameters
		function addFormat(display, field, fmt) {
			var pos = format.length;
			format[pos] = new Object();
			format[pos].display = display;
			format[pos].field = field;
			format[pos].format = fmt;
		}

		var formaterr = '';
		// checks specified format for each case - and builds error string
		function checkFormats() {
			for (var i=0; i < format.length; i++) {
				var elem = format[i];
				switch (elem.format) {
					case "number" :
						var done = false;
						for (var f=0; (f < elem.field.length && !done); f++) {
							var formvalue = eval("validateForm."+elem.field[f]+".value");
							if (formvalue!="" && /\D/.test(formvalue)) {
								addFormatError(elem.display);
								done = true;
							}
						}
						break;
					case "email" :
						var formvalue = eval("validateForm."+elem.field[0]+".value");
						if (formvalue!="" && !/^[\w_-]+(\.[\w_-]+)*@[\w_-]+(\.[\w_-]+)*\.\w{2,4}$/.test(formvalue)) {
							addFormatError(elem.display);
						}
						break
					case "zip" :
						var formvalue = eval("validateForm."+elem.field[0]+".value");
						if(formvalue!="" && !/^\d{5}(-?\d{4})?$/.test(formvalue)) {
							addFormatError(elem.display);
						}
						break;
					case "phone" :
						var formvalue = eval("validateForm."+elem.field[0]+".value");
						var iDigits = formvalue.length;
						if( formvalue!="" && (!(iDigits==7 ) || (/\D/.test(formvalue)))) {
							addFormatError(elem.display);
						}					
						break;
					case "date" :
						var formvalue = eval("formObj."+elem.field[0]+".value");
						var sFormat = "MM-DD-YYYY";
						if ( formvalue!="" && !isDate(formvalue, sFormat) ) {
							addFormatError(elem.display);
						}
						break;
					case "time" :
						var formvalue = eval("formObj."+elem.field[0]+".value");
						var sFormat = "HH:MM"
						if ( formvalue!="" && !isTime(formvalue, sFormat) ) {
							addFormatError(elem.display);
						}
						break;	
					case "phonecheck":
						var formvalue = eval("validateForm."+elem.field[0]+".value");
					     if(formvalue!="" && ( (/\D/.test(formvalue)) || (formvalue.length < 3)))
					
					     {
						    addFormatError(elem.display);
						 }
						 break;

				    case "age":
						if(formObj.QUES_Over_Eighteen[1].checked){
					      setOtherError("Sorry, you must be 18 or older to be eligible for this offer.");
						     
						 }
						 break;
					case "ActivationCardNumber" :
						// match a very specific activation card number 15000001 - 190000000
						var formvalue = eval("validateForm."+elem.field[0]+".value");
						//if ((formvalue!="") && (!/^01$/.test(formvalue.substr(formvalue.length-2,formvalue.length)) || !/^(((15([1-9]\d{5}|\d{1}[1-9]\d{4}|\d{2}[1-9]\d{3}|\d{3}[1-9]\d{2}|\d{4}[1-9]\d{1}|\d{5}[1-9]))|(1[6-9]\d{6}|[2-9]\d{7}))|(1[1-8]\d{7}|190{7}))$/.test(formvalue.substr(0,formvalue.length-2)))) {
						//var testint = parseInt(formvalue.substr(0,formvalue.length-2));
						//if (formvalue!="" && testint && (!/^01$/.test(formvalue.substr(formvalue.length-2,formvalue.length)) || !(testint>150000000 && testint<190000001))) {
						if (formvalue!="" && (/\D/.test(formvalue) || formvalue.length!=11)) {
							addFormatError(elem.display);
						}					
						break;
				}
			}
		}
			
		var TextSelectErr = '', RadioCheckErr = '', othererr = '';
		// resets the error message for before each required check
		function resetErrorMessage() {
			TextSelectErr = '', RadioCheckErr = '', formaterr = '', othererr = '';
			OrderError = [];
		}

		function addFormatError( str ) {	formaterr += "\t"+str+"\n"; }
		
		var validateForm = null;
		function setValidateForm(_form) { validateForm = _form; }

		// runs through specified required array and checks validity for based on field type
		function checkRequired(reqarray) {
			for (var i=0; i < reqarray.length; i++) {
				var elem = reqarray[i];
				var formelem = eval("validateForm."+elem.field[0]);
				if (!formelem) alert("validateForm."+elem.field[0]);
				switch (formelem.type || formelem[0].type) {
					case "text" : case "textarea" : case "password" :
						var done = false;
						for (var f=0; (f < elem.field.length && !done); f++) {
							formelem = eval("validateForm."+elem.field[f]);
							if (formelem.value == "") {
								if (TextSelectErr=="") OrderError[OrderError.length] = "TextSelectErr";
								TextSelectErr += "\t"+elem.display + "\n";
								done = true;
							}
						}
						break;
					case "select-one" :
						if (formelem.options[formelem.selectedIndex].value == "") {
							if (TextSelectErr=="") OrderError[OrderError.length] = "TextSelectErr";
							TextSelectErr += "\t"+elem.display + "\n";
						}
						break;
					case "radio" :
						var done = null;
						for (var r=0; (r < formelem.length && !done); r++) {
							if (formelem[r].checked) done = formelem[r].value
						}
						if (done == null) {
							if (RadioCheckErr=="") OrderError[OrderError.length] = "RadioCheckErr";
							RadioCheckErr += "\t" + elem.display + "\n";
						} else if (elem.trigger == done) checkRequired(elem.extra);
						break;
					case "checkbox" :
						var done = false;
						for (var c=0; (c < elem.field.length && !done); c++) {
							var chbxelem = eval("validateForm."+elem.field[c])
							if (chbxelem.checked) done = true;
						}
						if (!done) {
							if (RadioCheckErr=="") OrderError[OrderError.length] = "RadioCheckErr";
							RadioCheckErr += "\t" + elem.display + "\n";
						}
						break;
				}
			}
		}

		function setOtherError(errmsg) {
			othererr = errmsg;		
		}
		// builds error message from the required array and alert the user
		function validateRequired() {
			checkRequired(required);
			checkFormats();
			
			if ( ErrorObj.ConfigError!='' ) {
				alert( "Please check to see if page is fully loaded.");
				return false;
			}
			var builderr = '';
			for (var i=0; i < OrderError.length; i++) {
				if (OrderError[i] == "TextSelectErr") builderr += "The following fields are missing:\n"+TextSelectErr+"\n";
				else if (OrderError[i] == "RadioCheckErr") builderr += "The following questions require a selection:\n"+RadioCheckErr+"\n";
			}
			if (formaterr != "") builderr += "The following fields had format input error(s):\n"+formaterr+"\n";
			if (othererr != "") builderr += "\n"+othererr+"\n";
			if (builderr != "") {
				alert(builderr);
				return false;
			} else return true;
			
		}
		// builds error message from the required array and alert the user
		function couponvalidateRequired() {
			checkRequired(required);
			if (document.form1.QUES_ID626_ANSW.checked){
						var done = null;
						var formelemspecial = document.form1.QUES_ID630_ANSW;
						for (var r=0; (r < formelemspecial.length && !done); r++) {
							if (formelemspecial[r].checked) done = formelemspecial[r].value
						}
						if (done == null) {
							if (RadioCheckErr=="") OrderError[OrderError.length] = "RadioCheckErr";
							RadioCheckErr +=  "\tHow long have you been taking AVODART?\n";
						}
			
			}
			checkFormats();
			var builderr = '';
			for (var i=0; i < OrderError.length; i++) {
				if (OrderError[i] == "TextSelectErr") builderr += "The following fields are missing:\n"+TextSelectErr+"\n";
				else if (OrderError[i] == "RadioCheckErr") builderr += "The following questions require a selection:\n"+RadioCheckErr+"\n";
			}
			if (formaterr != "") builderr += "The following fields had format input error(s):\n"+formaterr+"\n";
			if (othererr != "") builderr += "\n"+othererr+"\n";
			if (builderr != "") {
				alert(builderr);
				return false;
			} else return true;
			
		}


              function quizValidateRequired() {
			checkRequired(required);
			
			checkFormats();
			
			if ( ErrorObj.ConfigError!='' ) {
				alert( "Please check to see if page is fully loaded.");
				return false;
			}
			var builderr = '';
			for (var i=0; i < OrderError.length; i++) {
				if (OrderError[i] == "TextSelectErr") builderr += "The following fields are missing:\n"+TextSelectErr+"\n";
				else if (OrderError[i] == "RadioCheckErr") builderr += "The following questions require a selection:\n"+RadioCheckErr+"\n";
			}
			if (formaterr != "") builderr += "The following fields had format input error(s):\n"+formaterr+"\n";
			if (othererr != "") builderr += "\n"+othererr+"\n";
			if (builderr != "") {
				alert(builderr);
				return false;
			} else return true;
			
		} // end quizValidateRequired

		function checkRequiredAge( minAge,yyyy,mm,dd ) {
			
			
			 // check if at least of age
				//var bdate = new Date( birthDate );
				var bdate = new Date(yyyy,mm-1,dd);

    	        var birth = new Object;
        	    birth.mm = bdate.getMonth()+1;
            	birth.dd = bdate.getDate();
	            birth.yyyy = bdate.getFullYear();
               
				var today = new Date();
        	    var now = new Object;
            	now.mm = today.getMonth() + 1;
	            now.dd = today.getDate();
    	        now.yyyy = today.getFullYear();
               
			    //alert("birth.mm"+birth.mm);
			   // alert("birth.dd"+birth.dd);
			   // alert("birth.yyyy"+birth.yyyy);
				var age = now.yyyy - birth.yyyy;
				// alert("age"+age);
				if ( (now.mm < birth.mm) || (now.mm==birth.mm && now.dd<birth.dd)) { age--; }
	            if ( (age<minAge) ){
    	        	alert("Date of Birth: Must be " + minAge + " years old or older");
        	        return false;
            	}
	           	return true;
	    			
		} // end checkRequiredAge


//-->