
function VerifyFields(thisform) {
        for (var j=0; j<(thisform.elements.length); j++)
        {
				/* begin Check for Required */
                indx = thisform.elements[j].name.indexOf('_required');
                if (indx != -1)
                {
                        fieldname=thisform.elements[j].name.substring(0,indx);

						var fieldtype = thisform.elements[fieldname].type;
						
						//alert(fieldname+'\n'+fieldtype);

						if (fieldtype == 'text'||fieldtype == 'textarea'||fieldtype == 'password'){

							if (thisform.elements[fieldname].value.length == 0)
	                                {
	                                alert(thisform.elements[j].value);
	                                j = (thisform.elements.length);
									thisform.elements[fieldname].focus();
	                                return false;
	                                }
						} else if (fieldtype == 'select-one'){
							if(thisform.elements[fieldname].options[thisform.elements[fieldname].selectedIndex].value==""){
	                                alert(thisform.elements[j].value);
	                                j = (thisform.elements.length);
	                                return false;
							}
						} else if (fieldtype == 'select-multiple'){
							if(thisform.elements[fieldname].selectedIndex==-1){
	                                alert(thisform.elements[j].value);
	                                j = (thisform.elements.length);
	                                return false;
							}
						} else {
							var rdochk = "no"
							for (var x=0; x<thisform.elements[fieldname].length; x++){
								if (thisform.elements[fieldname][x].checked){
									rdochk = "yes"
								}
							}
							if(rdochk == "no"){
	                                alert(thisform.elements[j].value);
	                                j = (thisform.elements.length);
	                                return false;
							}

						}
                }
				/* end Check for Required */

			  /* begin Check for Email */
			  indx4 = thisform.elements[j].name.indexOf('_isEmail');
			  if (indx4 != -1){
				  fieldname=thisform.elements[j].name.substring(0,indx4);
				  var imputStr = thisform.elements[fieldname].value;
				  var dotsafterat=0;
				  var ats=0;
				  var invalid=0;
				  var invalidChars="~`!#$%^*()+=[]{}|:<>?,/\"\;\'";
				  for (var k = 0; k < imputStr.length; k++) {
			        var onechar = imputStr.charAt(k);
			        if (onechar=="@"){
						ats++;
			        } else if (onechar=="." && ats>0){
						dotsafterat++;
			        } else if (invalidChars.indexOf(onechar)!=-1){
						invalid++;
			        }
				  }
					if (ats!=1 || dotsafterat==0 || invalid>0){
							alert(thisform.elements[j].value);
								thisform.elements[fieldname].select();
							//alert("ats: "+ats+"\ndots: "+dotsafterat+"\ninvalid: "+invalid);
							return false;			        
					}
			  }
			  /* end Check for Email */

			  /* begin Check for Float */
			  indx4 = thisform.elements[j].name.indexOf('_isFloat');
			  if (indx4 != -1){
				  fieldname=thisform.elements[j].name.substring(0,indx4);
				  var imputStr = thisform.elements[fieldname].value;
				  var dots=0;
				  for (var k = 0; k < imputStr.length; k++) {
			        var onechar = imputStr.charAt(k);
					if ((onechar >= "0" && onechar <= "9") || onechar==".") {
						if(onechar==".") dots++;
						if (dots > 1){
							alert(thisform.elements[j].value);
									thisform.elements[fieldname].select();
							return false;
						}
					} else {
						alert(thisform.elements[j].value);
									thisform.elements[fieldname].select();
					   	return false;
					}
				  }
			  }
			  /* end Check for Float */

				/* begin Check for Date */
				indx2 = thisform.elements[j].name.indexOf('_isDate');
                if (indx2 != -1)
                        {
                        fieldname2=thisform.elements[j].name.substring(0,indx2);
                        var dateStr= thisform.elements[fieldname2].value
						
						if (dateStr!=''){
	
							var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
	
							var matchArray = dateStr.match(datePat); // is the format ok?/
							if (matchArray == null) {
							alert(thisform.elements[j].value);
									thisform.elements[fieldname2].select();
							return false;
							}
							month = matchArray[1]; // parse date into variables
							day = matchArray[3];
							year = matchArray[4];
	
							if ((month==4 || month==6 || month==9 || month==11) && day==31) {
							//alert("The month "+month+" does not have 31 days!")
							alert(thisform.elements[j].value);
									thisform.elements[fieldname2].select();
							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(thisform.elements[j].value);
									thisform.elements[fieldname2].select();
								return false;
								   }
	
							}
	
							if (month>12 || day>31) {
							alert(thisform.elements[j].value);
									thisform.elements[fieldname2].select();
							return false;
							}
						}
				}
				/* end Check for Date */

				/* begin Check for Time */
				indx2 = thisform.elements[j].name.indexOf('_isTime');
                if (indx2 != -1)
                        {
                        fieldname2=thisform.elements[j].name.substring(0,indx2);
                        var dateStr= thisform.elements[fieldname2].value

						var datePat = /^(\d{1,2})(:)(\d{1,2})\2(\d{2})$/;

						var matchArray = dateStr.match(datePat); // is the format ok?/
						if (matchArray == null) {
						alert(thisform.elements[j].value);
						return false;
						}
						hour = matchArray[1]; // parse date into variables
						minute = matchArray[3];
						second = matchArray[4];

						if (hour<0 || hour>23 || minute<0 || minute>59 || second<0 || second>59) {
						//alert("The hour "+hour+" does not have 31 minutes!")
						alert(thisform.elements[j].value);
						return false
						}
				}
				/* end Check for Time */

				/* begin Check for Integer */
				indx3 = thisform.elements[j].name.indexOf('_isInteger');
               if (indx3 != -1){
					onedecimal=false
						  var fieldname3=thisform.elements[j].name.substring(0,indx3);
						  imputStr = thisform.elements[fieldname3].value
						  for (var i = 0; i < imputStr.length; i++) {
					        var onechar = imputStr.charAt(i)
							/*if (onechar =="." && !onedecimal) {
								onedecimal = true
								continue
							}*/
							if (onechar < "0" || onechar > "9") {
                                alert(thisform.elements[j].value);
                              j = (thisform.elements.length);
							  thisform.elements[fieldname3].select();
                             return false;
							}
						}
                }
				/* end Check for Integer */

				/* begin Check for Length */
				indx5 = thisform.elements[j].name.indexOf('_maxLength');
               if (indx5 != -1){
						  var fieldname5=thisform.elements[j].name.substring(0,indx5);
						  var maxlen=parseInt(thisform.elements[j].name.substring(indx5+10,thisform.elements[j].name.length));
						  var inputStr = thisform.elements[fieldname5].value
						  if (inputStr.length>maxlen) {
                              alert(thisform.elements[j].value);
                              j = (thisform.elements.length);
							  thisform.elements[fieldname5].focus();
                             return false;
							}
						}
				/* end Check for Length */

				/* begin Check for MinLength */
				indx5 = thisform.elements[j].name.indexOf('_minLength');
               if (indx5 != -1){
						  var fieldname5=thisform.elements[j].name.substring(0,indx5);
						  var maxlen=parseInt(thisform.elements[j].name.substring(indx5+10,thisform.elements[j].name.length));
						  var inputStr = thisform.elements[fieldname5].value
						  if (inputStr.length<maxlen) {
                              alert(thisform.elements[j].value);
                              j = (thisform.elements.length);
							  thisform.elements[fieldname5].select();
                             return false;
							}
						}
				/* end Check for MinLength */
				
				/* begin check password match */
				indx = thisform.elements[j].name.indexOf('_ckpwd');
				if (indx != -1){
					var fieldname1=thisform.elements[j].name.substring(0,indx);
					var fieldname2=thisform.elements[j].name.substring(0,indx)+'2';
					if (thisform.elements[fieldname1].value != thisform.elements[fieldname2].value){
						alert(thisform.elements[j].value);
                        j = (thisform.elements.length);
							  thisform.elements[fieldname2].select();
                        return false;
					}
				}
				/* end check password match */
				
				/* begin check time */
				indx = thisform.elements[j].name.indexOf('_isTime');
				if (indx != -1){
					var fieldname=thisform.elements[j].name.substring(0,indx);
					var vTime=thisform.elements[fieldname].value;
					var pass='Y';
					if (vTime.length>0){
						if (vTime.length<7||vTime.length>8){
							pass='N';
							//alert('err1');
						} else {
							var firstcolon=vTime.indexOf(':',0);
							//alert(firstcolon);
							if (firstcolon<=0||firstcolon>2){
								pass='N';
								//alert('err2');
							} else {
								var secondcolon=vTime.indexOf(':',firstcolon+1);
								//alert(firstcolon);
								if (secondcolon<4||secondcolon>5){
									pass='N';
									//alert('err3');
								} else {
									for (var k = 0; k < vTime.length; k++) {
										var onechar = vTime.charAt(k)	;
										if ((onechar >= "0" && onechar <= "9") || onechar==":") {
										} else {
											pass='N';
										//alert('err4');
										}
									}
									if(pass='Y'){
										var Hours=vTime.substring(0,firstcolon);
										var Minutes=vTime.substring(firstcolon+1,secondcolon);
										var Seconds=vTime.substring(secondcolon+1,vTime.length);
										//alert('(1)\nHours: '+Hours+'\nMinutes: '+Minutes+'\nSeconds: '+Seconds);
										
										if(Minutes.length<2||Seconds.length<2||Minutes.length>2||Seconds.length>2){
											pass='N';
										} else {
											var Min=parseInt(Minutes,10);
											var Sec=parseInt(Seconds,10);
											
											if(Min>59||Sec>59){
												pass='N';
											}
										}
									}
								}
							}
						}
											
						if (pass=='N'){
							alert(thisform.elements[j].value);
							j = (thisform.elements.length);
							return false;
						}
					}
				}
				/* end check time */

			  /* begin Check for AllowedChars */
			  indx4 = thisform.elements[j].name.indexOf('_isAllowed');
			  if (indx4 != -1){
				  fieldname=thisform.elements[j].name.substring(0,indx4);
				  var imputStr = thisform.elements[fieldname].value;
				  for (var k = 0; k < imputStr.length; k++) {
			        var onechar = imputStr.charAt(k);
			        var allowcharsfield = fieldname+'_allowedChars';
			        var allowed = thisform.elements[allowcharsfield].value;
					if (allowed.indexOf(onechar)==-1) {
						alert(thisform.elements[j].value);
					   	return false;
					}
				  }
			  }
			  /* end Check for AllowedChars */

		}
		return true;
}