function validate(frm)
{
//	alert(frm.username.title);
	var n = frm.elements.length;
	for(var i=0;i<n;i++)
	{
		var alt = frm.elements[i].alt;
		var val = frm.elements[i].value;
		var title = frm.elements[i].title;
		var name = frm.elements[i].name;
		var checkPhoneFormat = false;
		var phoneformatmatch = 0;
		if(alt && alt != "")
		{
			var comp = alt.charAt(0);
			rtn1=alt.indexOf('{');
			rtn2=alt.lastIndexOf('}');
			if(comp=="*" || comp=="_")
			{
				if(comp=="*" && alt!='*{R}' && val==""  )
				{
					alert("Please Enter "+title);
					frm.elements[i].focus();
					return false;
				}
				var valid_char = '';
				var valid_email = 'No';
				var valid_date_range = 'No';
				for(var j=rtn1+1; j<rtn2; j++)
				{
					//alert(alt.charAt(j));
					if(alt.charAt(j)=="R")
					{
						//valid_char += '0123456789.';
						valid_date_range="Yes";
					}
					else if(alt.charAt(j)=="N")
						valid_char += '0123456789.';
					else if(alt.charAt(j)=="A")
						valid_char += 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
					else if(alt.charAt(j)=="C")
						valid_char += '0123456789.+-';
					else if(alt.charAt(j)=="T")
					{
						valid_char += '0123456789.-() ';
						checkPhoneFormat = true;
					}
					else if(alt.charAt(j)=="D")
						valid_char += '0123456789-/: ';
					else if(alt.charAt(j)=="E")
					{
						valid_email = "Yes";
						valid_char += 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789._-@';
					}
					else if(alt.charAt(j)=="X")
						valid_char = '';
					else if(alt.charAt(j)=="[")
					{
						irtn1=alt.indexOf('[');
						irtn2=alt.lastIndexOf(']');
						//alert(alt.substring(irtn1+1,irtn2));
						valid_char += alt.substring(irtn1+1,irtn2);
						j = rtn2;
					}
				}
				if(valid_email == 'Yes')
				{
					valid_msg = isValidEmailGen(frm.elements[i].value);
					if(valid_msg != 0)
					{
						alert(valid_msg);
						frm.elements[i].focus();
						return false;
					}
				}
				if(valid_date_range=='Yes')
				{
					var temp=frm.elements[i].name;
					temp=temp.split("]");
					temp1=temp[0]+"_1]";
					var obj1,obj2,mode,flag;
					obj1=frm.elements[i];
					obj2=document.getElementById(temp1);
					currDate=document.getElementById('currDate').value;
					if(document.getElementById("admin"))
					{
						mode=document.getElementById("admin").value;
					}
					if(document.getElementById("flag"))
					{
						flag=document.getElementById("flag").value;
					}


					//First check the start date is greater then currentDate
//					alert("mode-->"+mode);
//					alert("flag-->"+flag);
					if(obj1.value !='')
					{
						if(mode!='Yes')
						{
						
							if(currDate > obj1.value)
							{
								alert("Invalid Job Start Date");
								return false;
							}
						}
						/*if(obj2.value=='')
						{
							alert("Invalid Job End Date");
							return false;
						}*/
						if(obj2.value!='' && obj1.value > obj2.value)
						{
							alert("Invalid Job End Date");
							return false;
						}
						
	//
						if(flag=="YES")
						{
							nextDate=document.getElementById('nextDate').value;
							DUE_DATE_OF_JOB=document.getElementById('DUE_DATE_OF_JOB').value;
							if(!(obj1.value>= nextDate))
							{
								alert("Our system requires a "+DUE_DATE_OF_JOB+" day lead time.  \nPlease call us if you need this done sooner - 866 446 1799. \nWe will do our best to make this happen for you.");
								return false;
							}
						}	
					}
//					
					
					
				}
				for(k=0;k<val.length && valid_char!='';k++)
				{
					ch=val.charAt(k);
					rtn=valid_char.indexOf(ch);
					if(rtn==-1)
					{
						alert("Please Enter Valid "+ title);
						frm.elements[i].focus();
						return false;
					}
				}
				if(checkPhoneFormat == true)
				{
					if (val.match(/^\d\d\d\ \d\d\d \d\d\d\d$/))
						phoneformatmatch = 1;
					else if	(val.match(/^\d\d\d\.\d\d\d\.\d\d\d\d$/))				
						phoneformatmatch = 1;
					else if	(val.match(/^\(\d\d\d\)\d\d\d-\d\d\d\d$/))				
						phoneformatmatch = 1;
					if(phoneformatmatch == 0)		
					{
						alert("Please Enter Phone Number in the proper format \n (xxx)xxx-xxx or xxx xxx xxxx or xxx.xxx.xxxx");
						frm.elements[i].focus();
						return false;
					}

				}
				// Format Validation Here

				f_str = alt.substring(rtn2+1,alt.length);
				if(f_str != "" && comp=="*")
				{
					arr = f_str.split(':');
					if(parseInt(arr[0]) > 0)
					{
						if(val.length < parseInt(arr[0]))
						{
							alert(title + " must be atleast of "+parseInt(arr[0])+" characters");
							return false;
						} 
					}
					if(parseInt(arr[1]) > 0)
					{
						if(val.length > parseInt(arr[1]))
						{
							alert(title + " must be less than or equal of "+parseInt(arr[1])+" characters");
							return false;
						} 
					}
				}
			}
		}
	}
	return true;
	alert(2);
}