function CheckAllFields(myForm)
{
	var numOfElements = myForm.elements.length;
	//check the required fields for all fields in form
	for(var i=0; i<numOfElements; i++)
	{
		if(myForm.elements[i].getAttribute("required")=="required")
		{
			
			if(!(myForm.elements[i].style.display!=null && myForm.elements[i].style.display=="none") )
			{	
				//for radio type, only first one should have required="required" attribute
				//otherwise, the following checking will not work
			if(myForm.elements[i].getAttribute("type")=="radio")
			{
				groupName = myForm.elements[i].name;
				curElement = myForm.elements[i];
				x = 0;
				while(!curElement.getAttribute("checked"))
				{
					x++;
					curElement = myForm.elements[i+x];
					if(curElement.name != groupName)
					{
						if(myForm.elements[i].errorMsg!=null)
							alert(myForm.elements[i].errorMsg);
						else alert(myForm.elements[i].name+" is required!");	
						return event.returnValue = false;
					}
				}
				i=i+x;  
			}
			else if(myForm.elements[i].value=="")
			{
				if(myForm.elements[i].errorMsg!=null)
				{
					alert(myForm.elements[i].errorMsg);
					myForm.elements[i].focus();
				}
				else
				{
					 alert(myForm.elements[i].name+" is required!");
					 myForm.elements[i].focus();
				}
				if(myForm.elements[i].getAttribute("type")=="text")
					myForm.elements[i].focus();
				return event.returnValue= false;
			}
		}//end if element style is not display:none
		}//end if required
	}//end for
	
	//check the format of the input value if it exists
	for(j=0; j<numOfElements; j++)
		if(myForm.elements[j].getAttribute("match") !="" && myForm.elements[j].getAttribute("match")!=null)
			if(myForm.elements[j].value !="")
				if(CheckValueFormat(myForm.elements[j])==false)
					return event.returnValue = false; 
	return event.returnValue = true;
}

function CheckValueFormat(src)
{

	switch((src.getAttribute("match")).toUpperCase())
	{
		case "SSN":
			//alert("Checking SSN");
			var reg = new RegExp("^[0-9]{3}-[0-9]{2}-[0-9]{4}$");
			if(!reg.test(src.value))
			{
				alert("Please input SSN in format like 666-88-8888");
				src.focus();
				return false;
			}
			else return true; 	break;
			
		case "ZIP":
			var reg = new RegExp("^[0-9]{5}(-[0-9]{1,5})?$");
			if(!reg.test(src.value))
			{
				alert("Please input Zip Code in format like 35111 or 35111-55");
				src.focus();
				return false;
			}
			else return true; break;
			
		case "DOB":
			var reg = new RegExp("^(([1-9])|([0][1-9])|([1][0-2]))/(([1-9])|([0][1-9])|([1-2][0-9])|(3[0-1]))/((19|20)[0-9]{2})$");
			if(!reg.test(src.value))
			{
				alert("Please input DOB in format: mm/dd/yyyy like 10/05/1990");
				src.focus();
				return false;
			}
			else return true; 	break;
		
		case "DATE":
			var reg = new RegExp("^(([1-9])|([0][1-9])|([1][0-2]))/(([1-9])|([0][1-9])|([1-2][0-9])|(3[0-1]))/((19|20)[0-9]{2})$");
			if(!reg.test(src.value))
			{
				alert("Please input Valid Date in format: mm/dd/yyyy like 10/05/1990");
				src.focus();
				return false;
			}
			else return true; 	break;
			
		case "PHONE":
			var reg = new RegExp("^[0-9]{3}-[0-9]{3}-[0-9]{4}$");
			if(!reg.test(src.value))
			{
				alert("Please input Phone number in format:###-###-#### like 334-225-8889");
				src.focus();
				return false;
			}
			else return true; 	break;
			
		case "MONEY":
			var reg = new RegExp("^[0-9]+(\\x2E[0-9]{0,2})?$");
			if(!reg.test(src.value))
			{
				alert("Please input money as: ***.** or ** like 22.33 or 10");
				src.focus();
				return false;
			}
			else return true; 	break;
			
		case "INTVALUE":
			var reg = new RegExp("^[0-9]+$");
			if(!reg.test(src.value))
			{
				alert("Please input only DIGITAL number.");
				src.focus();
				return false;
			}
			else return true; break;
		
		default:
		return true;
	}
	return true;
}