////////Form field validations
function ValidateForm(frmName)
{
	var FormValidated=false;
	var frm = document.getElementById(frmName);	
	if (ValidateFormFields(frm)) //validating all compulsary form fields data
	{
		
		for (var i=0; i < frm.elements.length; i++)
		{
			if (frm.elements[i].getAttribute("type") === "checkbox" && frm.elements[i].name.substring(0,11)==="companytype")
			{
			///the check box related to Check the items that best describe your company: , better option is to use Array, but this is just to avoid unseen errors due to code changes
				if (frm.elements[i].checked)
				{
					FormValidated=true;
					break;
				}
			}
		}
		if (!FormValidated) 
		{
			///means that no check box was checked for parameter where you hear about HipLink
			alert ('Please Select atleast one option');
			document.getElementById('companytype1').focus();
			return false; 
		} 
		if (document.getElementById('smallbuspercentage').value == "" && document.getElementById('mediumbuspercentage').value == "" && document.getElementById('largebuspercentage').value == "" && document.getElementById('statefedpercentage').value == "")
		{
				alert ('Please Fill atleast one');
				document.getElementById('smallbuspercentage').focus();
				return false;
		} 
		return true;
	}
	else
	{
		 return false;
	}
	//return FormValidated;		
	return true;
}


function getCtlValidationRule(CtlType)
{
//this function return regular expression depending upon the type of text
	var regExp="";
	switch (CtlType)
	{
		case "Name"://only Alpha
			regExp="^([a-zA-Z\n\r ]+)$";
			break;
		case "Address":
			regExp="^([0-9A-Za-z\-\,\/\& ]+)$";
			break;			
		case "Phone":
			regExp="^([0-9]{1,3})-([0-9]{1,3})-([0-9]{1,7})$";
			break;			
		case "AlphaNum":
			regExp="^([0-9A-Za-z\n\r ]+)$";
			break;			
		case "Num":
			regExp="^([0-9]+)$";
			break;			
		case "ZipCode"://US zip code
			regExp="(^[0-9]{5}$)|(^[0-9]{5}-[0-9]{4}$)";
			break;
		case "Email":
			regExp="^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$";
			break;	
		case "URL": // URL
			regExp="^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.){1}([a-zA-Z0-9_]+)(.[a-zA-Z0-9_]+){1,2}$";
			break;	
		case "Date"://dd/mm/yyyy
			regExp="^([0-9]){2}(\/|-){1}([0-9]){2}(\/|-){1}([0-9]){4}$";
			break;
		case "AnyThing": // Must be atleast one charactor.
			regExp=".+";
			break;

	}
	return regExp;
}

function ValidateFormFields(frm)
{
        var msg="";
		var alLestOne=false;
		var leadingspaces=new RegExp ('^ *');
		var trailingspaces=new RegExp (' *$');
		var strm="";
        for (var i=0; i < frm.elements.length; i++) 
		{ //surf all form controls
        	if (frm.elements[i].name !=null && frm.elements[i].getAttribute("ctltype"))
			{ // check if the form control has a name and Control type
				strm=frm.elements[i].value;
				frm.elements[i].value=strm.replace(leadingspaces, '');
				strm=frm.elements[i].value;
				frm.elements[i].value=strm.replace(trailingspaces, '');								
				if (frm.elements[i].value==="" ) //if required field is blank then return false
				{
					switch( frm.elements[i].name)
					{
						case "smallbuspercentage" :
						case "mediumbuspercentage" :
						case "largebuspercentage" :
						case "statefedpercentage" :
							continue;
						break;
						
					}

					msg = "Required Fields Are Blank";
					frm.elements[i].focus();
					break;
				}

            	var validationRule = new RegExp (getCtlValidationRule(frm.elements[i].getAttribute("ctltype"))); //evaluate the control validation rule				 	
				if (!validationRule.test(frm.elements[i].value))
				{ //returns true if ctl value validates the rule
					msg = "Value is Missing/Invalid";
					frm.elements[i].focus();
					break;
				}//--> end test regular expression
			}

		}

	if (msg.length > 0)
	{
		alert (msg);
		return false;
	}
	else
	{
		return true;
	}
}//--> end function 

