function theValidator(theForm,theControl,theMessage,theNumeric,theEMail,theURL,theConfirmPassword,thebadstuff,theinteger,thepercent,thesize,thedecimal,theimage,theempty,themin,themax,thecheckboxlength,thephoneno)
{
	// This function is used to validate that all text
	// fields in a given form contain some value
	//Split the controls + Messages + Numerics by comma ,
	

	var theMessages = new Array();
	var theNumerics = new Array();
	var theEMails = new Array();
	var theURLs = new Array();
	var theConfirmPasswords = new Array();
	var theControls = new Array();
	var thebadstuffs= new Array();
	var thedecimals= new Array();
	var theemptys= new Array();

	theControls=theControl.split(",");
	theMessages=theMessage.split(",");
	theNumerics=theNumeric.split(",");
	theEMails=theEMail.split(",");
	theURLs=theURL.split(",");
	thebadstuffs=thebadstuff.split(",");
	theintegers=theinteger.split(",");
	thepercents=thepercent.split(",");
	thesizes=thesize.split(",");
	thedecimals=thedecimal.split(",");
	theimages=theimage.split(",");
	theemptys=theempty.split(",");
	themins=themin.split(",");
	themaxs=themax.split(",");
	thecheckboxlengths=thecheckboxlength.split(",");
	theConfirmPasswords=theConfirmPassword.split(",");
	thephonenos=thephoneno.split(",");

//	alert(theControl);
	for (var i=0; i < theForm.elements.length; i++){
//		alert("Type: " + theForm.elements[i].type);

		for(var counter=0;counter < theControls.length; counter++)
		{
			if (theForm.elements[i].name == theControls[counter])
			{
				if (theForm.elements[i].type == 'file')
				{
					//Blank value check
					if (trim(theForm.elements[i].value) == '' && theemptys[counter] == "Y" )
					{
//						alert(theMessages[counter] + " cannot be blank.");
						alert("Please enter the "+theMessages[counter].toLowerCase()+".");
						theForm.elements[i].focus();
						return false;	
					}
					else
					{
						if (theimages[counter] == "Y")
						{
							var s=theForm.elements[i].value;
							if (s!="")
							{
								array=s.split("\\");
								len=array.length;
								filename=array[len-1];
								array1=filename.split(".");
								if (array1.length == 1)
								{
									alert("Files with extensions .gif, .jpg, .jpeg can only be uploaded.");
									theForm.elements[i].focus();
									return false;									
								}
								if(array1[1].toLowerCase()!="jpg" && array1[1].toLowerCase()!="jpeg" && array1[1].toLowerCase()!="gif")
								{
									alert("Files with extensions .gif, .jpg, .jpeg can only be uploaded.");
									theForm.elements[i].focus();
									return false;
								}
							}
						}
						if (theimages[counter] == "C")
						{
							var s=theForm.elements[i].value;
							if (s!="")
							{
								array=s.split("\\");
								len=array.length;
								filename=array[len-1];
								array1=filename.split(".");
								if (array1.length == 1)
								{
									alert("Files with extensions .txt, .csv can only be uploaded.");
									theForm.elements[i].focus();
									return false;									
								}
								if(array1[1].toLowerCase()!="txt" && array1[1].toLowerCase()!="csv")
								{
									alert("Files with extensions .txt, .csv can only be uploaded.");
									theForm.elements[i].focus();
									return false;
								}
							}
						}

					}

				}

				if (theForm.elements[i].type == 'text')
				{
					//Blank value check
					if (trim(theForm.elements[i].value) == '' && theemptys[counter] == "Y")
					{
//						alert(theMessages[counter] + " cannot be blank.");
						alert("Please enter the "+theMessages[counter].toLowerCase()+".");
						theForm.elements[i].focus();
						return false;	
					}
					
					// integer value >=0
				/*	if (theEMails[counter] != "Y" && theURLs[counter] != "Y" && theNumerics[counter] != "Y")
					{
						chkstring = trim(theForm.elements[i].value);
						badStuff = "~`!@#$%^&*()=+|<>?;:/\"\\";
						for (x=0; x<badStuff.length; x++)
						{
							badCheck = badStuff.charAt(x);
							if (chkstring.indexOf(badCheck,0) != -1)
							{							
															
								alert(theMessages[counter]+" can not have special characters.");
								theForm.elements[i].focus();
								return false;
							}
						}
					}*/


					// Numeric value check
					if (trim(theForm.elements[i].value) != '' && theNumerics[counter] == "Y")
					{
						if(isNaN(trim(theForm.elements[i].value)))
						{
//							alert(theMessages[counter] + " should be numeric.");
							alert("Please enter numeric values for "+theMessages[counter].toLowerCase()+".");
							theForm.elements[i].focus();
							return false;	
						}
						if(trim(theForm.elements[i].value)<= 0 )
						{
//							alert(theMessages[counter] + " should be greater than 0.");
							alert("Please enter "+theMessages[counter].toLowerCase()+" greater than  0 (zero).");
							theForm.elements[i].focus();
							return false;	
						}					
					}

					if  (trim(theForm.elements[i].value) != '' && theintegers[counter] == "Y")
					{
							if(isNaN(trim(theForm.elements[i].value)))
								{
		//							alert(theMessages[counter] + " should be numeric.");
									alert("Please enter numeric values for "+theMessages[counter].toLowerCase()+".");
									theForm.elements[i].focus();
									return false;	
								}
							if(parseInt(trim(theForm.elements[i].value))< 0 )
								{
								alert("Please enter "+theMessages[counter].toLowerCase()+" greater than or equal to 0 (zero).");
								theForm.elements[i].focus();
								return false;
								}
					}

					
					if ((trim(theForm.elements[i].value) != '' ) && (thebadstuffs[counter] != ""))
					{
							if (thebadstuffs[counter]==1)
								badStuff = "~`!@#$%^&*()=+|<>?;:/\"\\";
							else if(thebadstuffs[counter]==2)
								badStuff="~`!@$%^&*()=+|<>?;:/\"\\";
							else if(thebadstuffs[counter]==3)
								badStuff="~`!@$%^&* ()=+|<>?;\"";
							if (thebadstuffs[counter]==4)
								badStuff = "'~`!@#$%^&*()=+|<>?;:/\"\\ ";
							if (thebadstuffs[counter]==5)
								badStuff='" ';
							else
								badStuff='"';

							chkstring = trim(theForm.elements[i].value);
							for (x=0; x<badStuff.length; x++)
							{
								badCheck = badStuff.charAt(x);
								if (chkstring.indexOf(badCheck,0) != -1)
								{							
									if(badStuff=='"')
									alert("Please replace double quotes with single quotes for "+theMessages[counter].toLowerCase()+".");
									else
									{
										abc=theMessages[counter].replace(theMessages[counter],theMessages[counter].charAt(0).toUpperCase());
										//alert(abc+theMessages[counter].substring(1,theMessages[counter].length)+ " should be greater than 0.");
										alert(abc+theMessages[counter].substring(1,theMessages[counter].length)+" can not have special characters.");
									}
									theForm.elements[i].focus();
									return false;
								}
							}
					}

					if (trim(theForm.elements[i].value) != '' && thepercents[counter] == 'Y')
					{			
								if (parseInt(theForm.elements[i].value)<0 || parseInt(theForm.elements[i].value)>100)
								{							
																
									alert(theMessages[counter].toLocaleUpperCase()+" should have value between 0 to 100.");
									theForm.elements[i].focus();
									return false;
								}
					}

					
					if (trim(theForm.elements[i].value) != '' && thesizes[counter] != "")
					{
								if (trim(theForm.elements[i].value).length>thesizes[counter])
								{							
																
//									alert(theMessages[counter]+" cannot have more than "+thesizes[counter]+" characters.");	
									alert("Maximum characters allowed are "+ thesizes[counter] +". Entered are "+ theForm.elements[i].value.length +" characters.");	
									theForm.elements[i].focus();
									return false;
								}
					}
					
					if (trim(theForm.elements[i].value) != '' && thedecimals[counter] == "Y")
					{
								var str=theForm.elements[i].value;
									 if (str.indexOf('.')!=-1)
										{
										   alert("No decimals allowed for "+theMessages[counter].toLowerCase()+".");
										    theForm.elements[i].focus();
											return false;
										}
					}

					if (trim(theForm.elements[i].value) != '' && thephonenos[counter] == "Y")
					{
						var regexp=/^(\d{3} \d{3} \d{4}|\d{3}-\d{3}-\d{4}|\d{10}|\(\d{3}\)\d{3}-\d{4}|\d{6}|\d{7}|\d{8})$/;
						x = trim(theForm.elements[i].value);
						if(!(regexp.test(x)))
						{
							var msg = "";
							msg = "Please enter the correct "+theMessages[counter].toLowerCase();
							msg = msg +  "\n The correct forms are : ";
							msg = msg + "\n xxx xxx xxxx";
							msg = msg + "\n xxx-xxx-xxxx";
							msg = msg + "\n (xxx)xxx-xxxx";
							msg = msg + "\n xxxxxxxxxx (10 digited Mobile no)";
							msg = msg + "\n xxxxxx (6 digits no)";
							msg = msg + "\n xxxxxxx (7 digits no)";
							msg = msg + "\n xxxxxxxx (8 digits no)";

							alert(msg);
						    theForm.elements[i].focus();
							return false;
						}
					}

					// Email value check
					if (trim(theForm.elements[i].value) != '' && theEMails[counter] == "Y")
					{
						if(!emailcheck(theForm.elements[i],"Please enter valid email address."))  return false;
						//{
						//	alert("Invalid Email Address\n Should be user@domain.com");
						//	theForm.elements[i].focus();
							//return false;	
						//}
					}
					// URL value check
					if (trim(theForm.elements[i].value) != '' && theURLs[counter] == "Y")
					{
						if(!validateURL(trim(theForm.elements[i].value)))
						{
//							alert(" Invalid URL \n Should be http://www.domain.com");
							alert("Please enter valid url. \n http://www.domain.com");
							theForm.elements[i].focus();
							return false;	
						}
					}
					
					if (trim(theForm.elements[i].value) !='' && themins[counter]!='' && themaxs[counter]!='')
					{
						if(parseInt(theForm.elements[i].value)<themins[counter] || parseInt(theForm.elements[i].value)>themaxs[counter])
						{
							alert("Please enter value for "+theMessages[counter].toLowerCase()+" between "+themins[counter]+" and "+themaxs[counter]+".");
							theForm.elements[i].focus();
							return false;
						}
					}
					if (trim(theForm.elements[i].value) !='' && themins[counter]!='' && themaxs[counter]=='')
					{
						if((theForm.elements[i].value.length)<themins[counter])
						{
							alert("Please enter valid "+theMessages[counter].toLowerCase()+".");
							theForm.elements[i].focus();
							return false;
						}
					}
					if (trim(theForm.elements[i].value) !='' && themaxs[counter]!='')
					{
						if( parseInt(theForm.elements[i].value)>themaxs[counter])
						{
							alert("Please enter value for "+theMessages[counter].toLowerCase()+" less than "+themaxs[counter]+".");
							theForm.elements[i].focus();
							return false;
						}
					}
				
				}
				// Password Validation
				if (theForm.elements[i].type == 'password' && theConfirmPasswords[counter]!="Y")
				{
					//Blank value check
					if (trim(theForm.elements[i].value) == '')
					{
//						alert(theMessages[counter] + " cannot be blank.");
						alert("Please enter the "+theMessages[counter].toLowerCase()+".");
						theForm.elements[i].focus();
						return false;	
					}
					

						if(theForm.elements[i].value.length > 14)
					{
						alert("Password cannot have more than 14 characters.");	
						theForm.elements[i].focus();
						return false;
					}


						if(theForm.elements[i].value.length < 6)
					{
						alert("Password cannot be less than 6 characters.");	
						theForm.elements[i].focus();
						return false;
					}


				}	

				// Confirm Password Validation
				//alert(theForm.elements[i].type);
				//alert(theConfirmPassword[counter]);
				if (theForm.elements[i].type=='password' && theConfirmPasswords[counter]=="Y")
				{
					//alert("mandeep");
					//alert(theForm.elements[i].value);
					//alert(theForm.elements[i-1].value);

					//Blank value check
					if (trim(theForm.elements[i].value) == '')
					{
//						alert(theMessages[counter] + " cannot be blank.");
						alert("Please retype the "+theMessages[counter].toLowerCase()+".");
						theForm.elements[i].focus();
						return false;	
					}
					

						if(theForm.elements[i].value.length > 14)
					{
						alert("Password cannot have more than 14 characters.");	
						theForm.elements[i].focus();
						return false;
					}


						if(theForm.elements[i].value.length < 6)
					{
						alert("Password cannot be less than 6 characters.");	
						theForm.elements[i].focus();
						return false;
					}

					if (theForm.elements[i].value!=theForm.elements[i-1].value)
					{
//						alert(theMessages[counter] + " is not same.");
						alert("Passwords do not match.");
						theForm.elements[i].focus();
						return false;	
					}

				}	
				

			//Select box validation
				if (theForm.elements[i].type == "select-one")
				{
					var selIndex,selValue;
					selIndex=theForm.elements[i].selectedIndex;
					var theObject=theForm.elements[i];
					selValue = theObject[selIndex].value;
					if( trim(selValue) == "" || trim(selValue) == "0")
					{
						alert("Please select the " + theMessages[counter].toLowerCase() + ".");
						theForm.elements[i].focus();
						return false;	
					}
				}
			//Check box validation

				if (theForm.elements[i].type == "checkbox" && theemptys[counter] == "Y" )
				{ 
					var flagchecked="0";	
//					theControls[counter]=theControls[counter].substr(0,theControls[counter].length-2);
//					checkboxname=eval("theForm."+theControls[counter]);
					if (parseInt(thecheckboxlengths[counter]) > 1)
					{				
//						for (j=0;j<parseInt(thecheckboxlengths[counter]);j++)
						for (j=i;j<i+parseInt(thecheckboxlengths[counter]);j++)

						{	
//							checkbox1=eval(checkboxname[j]);				
//							if(checkbox1.checked==true)
							checkbox1=eval(theForm.elements[j]);				
							if(checkbox1.checked==true)
							{	
								flagchecked="1";
								break;
							}
						}
					}
					else
					{
						if(theForm.checkboxname.checked==true)
						{	
							flagchecked="1";
						}				
					}
					if (flagchecked=="0")
					{
						alert("Please select the " + theMessages[counter].toLowerCase() + ".");
						theForm.elements[i].focus();
						return false;	
					}
					i=i+parseInt(thecheckboxlengths[counter])-1;
				}
			
			// Text Area Validation
				if (theForm.elements[i].type == "textarea")
				{
					var txtAreaValue;
					txtAreaValue=theForm.elements[i].value;

					if( trim(txtAreaValue) == "" && theemptys[counter] == "Y")
					{
//						alert(theMessages[counter] + " cannot be blank.");
						alert("Please enter the "+theMessages[counter].toLowerCase()+".");
						theForm.elements[i].focus();
						return false;	
					}
					if (trim(theForm.elements[i].value) != '' && thesizes[counter] != "")
					{
								if (trim(theForm.elements[i].value).length>thesizes[counter])
								{							
										//Maximum characters allowed are n. Entered are m characters.						
									//alert(theMessages[counter]+" cannot have more than "+thesizes[counter]+" characters.");	
									
									alert("Maximum characters allowed are "+ thesizes[counter] +". Entered are "+ theForm.elements[i].value.length +" characters.");	
									theForm.elements[i].focus();
									return false;
								}
					}
				}


			
			// Radio Button Validation
			// This radio button validation is buggy so I am commneting it out
			/*	if(theForm.elements[i].type == "radio")
				{
//alert(theForm.elements[i].value);
					if(getRadioButtonValue(theForm.elements[i],theForm.elements[i].name) == "-1")
					{
						alert("You must select " + theMessages[counter] + ".");
						return false;		
					}
				}*/
			}

		}
	}
	
	return true;
}



//	************************************	End theValidator *****************************************************



function ltrim ( s )
{
	return s.replace( /^\s*/, "" )
}

function rtrim ( s )
{
	return s.replace( /\s*$/, "" );
}

function trim(str)
{
//	return rtrim(ltrim(str));
	return( (""+str).replace(/^\s*([\s\S]*\S+)\s*$|^\s*$/,'$1') );
}


function emailcheck(object,str)
{
var email=object.value;
var matcharray=email.match(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) 
	if(matcharray==null){
	alert(str)
	 	object.focus();
		object.select();
	return false;
	}
	else return true
}	

function validateEmail(email){
	
	// This function is used to validate a given e-mail 
	// address for the proper syntax
	
	if (email == ""){
		return false;
	}
	badStuff = ";:/,' \"\\";
	for (i=0; i<badStuff.length; i++){
		badCheck = badStuff.charAt(i)
		if (email.indexOf(badCheck,0) != -1){
			return false;
		}
	}
	posOfAtSign = email.indexOf("@",1)
	if (posOfAtSign == -1){
		return false;
	}
	if (email.indexOf("@",posOfAtSign+1) != -1){
		return false;
	}
	posOfPeriod = email.indexOf(".", posOfAtSign)
	if (posOfPeriod == -1){
		return false;
	}
	if (posOfPeriod+2 > email.length){
		return false;
	}
	return true
}

function checkselectedchkboxes(theform,theMsg,startelement,endelement) {
	/*for(var i=0;i<theform.elements.length;i++)
	{
		alert(theform.elements[i].name);
		alert(theform.elements[i].type);
		alert(i);
		
	}
	return false;*/

	for(i=startelement;i<=endelement;i++) {
		if(theform.elements[i].type == 'checkbox') {
			if(theform.elements[i].checked == true) {				
				return true;
			}
		}
	}
	alert("Please select at least "+theMsg);
	return false;
}
 function checkLetters( str,message )
	   {
		 var i, val;
		 var msg = str.split("") ;
		 for (  i = 0 ; i < str.length ; i ++ )
		 {
		   if ( ( (msg[i] <= "Z") && (msg[i] >= "A") ) || ( (msg[i] <= "z") && (msg[i] >= "a") )|| ( msg[i].indexOf("'")>-1 ));
		   else
		   {
			 val = 1;
			 break ;
		   }        
		 }
		 if ( val == 1 )
		 {
		   alert (message) ;
		  return false;
		 }
	 
		 return true;
	   }

	function Zipcheck(object,str)
	{
	 var zip=object.value;
	 var allvalid=0;
	 var valid="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
	 for (var i=0; i<object.value.length; i++)
	 {
	  if(valid.indexOf(object.value.charAt(i)) < 0) 
	  {
		allvalid=1;
	  }
	 }
	 if (allvalid==0)
	 {
	  alert(str);
	   object.focus();
	  object.select();
	 return false;
	 }
	 else
		 return true;
	}