function validateForm(f)
{
	for (var ii=0; ii<f.elements.length; ii++)
	{
		if (f.elements[ii].type=="text" || f.elements[ii].type=="textarea" || f.elements[ii].type=="hidden")
		{
			f.elements[ii].value = trimSpaces(f.elements[ii])
		}
	}

	/*for(var ii=0;ii<f.elements.length;ii++)
	{		
		if(f.elements[ii].value.indexOf("'",0)>=0)
		{
			alert("' Not Allowed in "+f.elements[ii].name);
			f.elements[ii].focus();
			return false;
		}
	}*/

	for (var i=0; i<f.elements.length; i++)
	{

		if(f.elements[i].alt)
		{
			testOk = false;
			checkValue	= f.elements[i].alt;
			fieldValue	= f.elements[i].value;
			fieldName	= f.elements[i].name
			objFrm		= f;
			objField	= f.elements[i];
			params		= checkValue.split("|");

			if (params[0]!="")
			{
				switch (params[0]) 
				{
					// Calls appropriate validation function based on type				
					case 'blank'			: if (validateBlank(objField)) testOk = true; break;
					case 'validSubmit'		: if (validateSubmit(objField)) testOk = true; break;
					case 'checkauth'		: if (validateCheckAuth(objField, params[1],objFrm)) testOk = true; break;
					case 'equalto'			: if (validateEqualTo(objField, params[1],objFrm)) testOk = true; break;
					case 'notequalto'		: if (validateNotEqualTo(objField, params[1],objFrm)) testOk = true; break;
					case 'length'			: if (validateLength(objField, params)) testOk = true; break;
					case 'number'			: if (validateNumber(objField, params[1], params[2])) testOk = true; break;
					case 'numeric'			: if (validateNumeric(objField,params)) testOk = true; break;
					case 'zip'				: if (validateZip(objField,params)) testOk = true; break;
					case 'phone'			: if (validatePhone(objField)) testOk = true; break;
					case 'email'			: if (validateEmail(objField)) testOk = true; break;
					case 'charactor'		: if (validateChar(objField,params)) testOk = true; break;
					case 'character1'		: if (validateCher1(objField,params)) testOk = true; break;					
					case 'allowCharactor'	: if (validateAllowChar(objField,params)) testOk = true; break;
					case 'checkbox'			: if (validateCheck(objField)) testOk = true; break;
					default					: alert('Validation Type Not Found:\n'+params[0]);
				}
				if (!testOk) 
				{
					if (objField.type!="hidden")
					{
						objField.focus();
					}
					return false;
				}
			}
		}
	}
}

//*****************************************************************************************************

function validateBlank(objField)
{
	if (objField.value == "")
	{
		alert("Please provide "+objField.title);
		return false;
	}
	else 
		return true;
}

//*****************************************************************************************************
function validateCheck(objField)
{
	if (!objField.checked)
	{
		alert("Please "+objField.title);
		return false;
	}
	else 
		return true;
}

//*****************************************************************************************************

function validateSubmit(objField)
{
	if (!confirm("Do You Want To Submit This Profile"))
	{
		return false;
	}
	else 
		return true;
}

//*****************************************************************************************************
function validateCheckAuth(objField,checkValue,objFrm)
{
	var match;
	match = 0;
	for (var i=0; i<objFrm.elements.length; i++)
	{
		if(objFrm.elements[i].name==checkValue)
		{
			match=1;
			objSecField = objFrm.elements[i];
			break;
		}
	}

	if(match==1)
	{
		if(!validateBlank(objField))
			return false;
		if(!validateBlank(objSecField))
			return false;

		if (objField.value!=objSecField.value)
		{
			alert("Invalid security code");
			return false;
		}
		else
			return true;
	}
	else
	{
		alert("Error For Programmer:Please Enter The Correct Field Name");
		return false;
	}
}

//*****************************************************************************************************

function validateEqualTo(objField,checkValue,objFrm)
{
	var match;
	match = 0;
	for (var i=0; i<objFrm.elements.length; i++)
	{
		if(objFrm.elements[i].name==checkValue)
		{
			match=1;
			objSecField = objFrm.elements[i];
			break;
		}
	}

	if(match==1)
	{
		if(!validateBlank(objField))
			return false;
		if(!validateBlank(objSecField))
			return false;

		if (objField.value!=objSecField.value)
		{
			alert("values of "+objField.title+" and "+objSecField.title+" are not same");
			return false;
		}
		else
			return true;
	}
	else
	{
		alert("Error For Programmer:Please Enter The Correct Field Name");
		return false;
	}
}

//*****************************************************************************************************

function validateNotEqualTo(objField,checkValue,objFrm)
{
	var match;
	match = 0;
	for (var i=0; i<objFrm.elements.length; i++)
	{
		if(objFrm.elements[i].name==checkValue)
		{
			match=1;
			objSecField = objFrm.elements[i];
			break;
		}
	}

	if(match==1)
	{
		//if(!validateBlank(objField))
		//	return false;
		//if(!validateBlank(objSecField))
		//	return false;

		if(objField.value=="" && objSecField.value=="")
			return true;

		if(objField.value!="")
		{
			if(objSecField.value=="")
			{
				alert("Please provide "+objSecField.name);
				return false;
			}
		}

		if(objField.value!="" && objSecField.value!="")
		{
			if (objField.value.toUpperCase()==objSecField.value.toUpperCase())
			{
				alert("values of "+objField.name+" and "+objSecField.name+" should not same");
				return false;
			}
			else
				return true;
		}
		else
			return true;
	}
	else
	{
		alert("Error For Programmer:Please Enter The Correct Field Name");
		return false;
	}
}

//*****************************************************************************************************

function validateLength(objField, paramList)
{
	if(paramList[1]=='blank')
	{
		checkValue = paramList[2];
		if(!validateBlank(objField))
			return false;
	}
	else
		checkValue = paramList[1];


	if(objField.value.length>checkValue)
	{
		alert("Please Enter "+checkValue+" Charactor in "+objField.name);
		return false;
	}
return true;
}

//*****************************************************************************************************

function validateNumber(objField, firstNumber, secondNumber)		
{
	if(!validateBlank(objField))
		return false;

	if(isNaN(objField.value))
	{
		alert("Please enter numeric value in "+objField.name);
		return false;
	}
	else
	{
		if(parseInt(objField.value)>=firstNumber && parseInt(objField.value)<=secondNumber)
			return true;
		else
		{
			alert("Please enter numeric value between "+firstNumber+" and "+secondNumber+" in "+objField.name);
			return false;
		}
	}
}

//*****************************************************************************************************

function validateNumeric(objField,paramList)
{
	if(paramList[1]=='blank')
	{
		if(!validateBlank(objField))
			return false;
	}

	if(isNaN(objField.value))
	{
		alert("Please enter only numeric value in "+objField.title);
		return false;
	}
	else
		return true;
}

//*****************************************************************************************************

function validateZip(objField,paramList)
{
	if(paramList[1]=='blank')
	{
		maxLength=parseInt(paramList[2]);
		if(!validateBlank(objField))
			return false;
	}
	else
		maxLength = parseInt(paramList[1]);


	if(!validateNumeric(objField))
		return false;

	if(objField.value.length!=maxLength)
	{
		alert("Please enter "+maxLength+" charactor in "+objField.name);
		return false;
	}
	else
		return true;
}

//*****************************************************************************************************

function validatePhone(objField,maxLength)
{
	if(!validateNumeric(objField))
		return false;

	if(objField.value!=maxLength)
	{
		alert("Please enter "+maxLength+" charactor in "+objField.name);
		return false;
	}
	else
		return true;
}

//*****************************************************************************************************

function validateEmail(objField)
{
	var checkError,firstAt,firstDot;

	if(!validateBlank(objField))
		return false;

	checkError = 0;
	firstAt = 0;
	firstDot = 0;

	firstAt = parseInt(objField.value.indexOf('@',0));
	firstDot = parseInt(objField.value.indexOf('.',0));

	if(parseInt(objField.value.charAt(0))>=0 && parseInt(objField.value.charAt(0))<=9)
	{
		checkError = 1;
	}

	if(firstAt>=0)
	{
		if(objField.value.indexOf('@',firstAt+1)>=0)
		{
			checkError = 1;
		}
		if(!findChar(objField.value,'@',2,firstAt,'.'))
		{
			checkError = 1;
		}
	}

	if(firstDot >= 0)
	{
		for(i=0;i<objField.value.length;i++)
		{
			if(objField.value.charAt(i)=='.')
			{
				if(!findChar(objField.value,'.',2,i,'@'))
				{
					checkError = 1;
				}
			}
		}
	}
	else
		checkError = 1;

	if(checkError == 1)
	{
		alert("Please entre valid Email Address in "+objField.title);
		return false;
	}
	else
		return true;
}

//*****************************************************************************************************

function findChar(string,chr,noOfChar,startPos,charNotInclude)
{
	pos = parseInt(string.indexOf(chr,startPos));
	if(pos>1)
	{
		remChar = string.length - pos;
		if(remChar>2)
		{
			subStringLeft = string.substring(pos-2,pos);
			subStringRight = string.substring(pos+1,pos+3);
			if(subStringLeft.indexOf(charNotInclude,0)>=0 || subStringRight.indexOf(charNotInclude,0)>=0)
				return false;
			else
				return true;
		}
		else
		{
			return false;
		}
	}
	else
	{
		return false;
	}
}

//*****************************************************************************************************

function validateChar(objField,paramList)
{
	for(i=1;i<paramList.length;i++)
	{
		if(paramList[i]=='blank')
		{
			if(!validateBlank(objField))
				return false;
		}
		else
		{
			if(paramList[i]=='0-9')
			{
				for(j=0;j<objField.value.length;j++)
				{
					if(parseInt(objField.value.charAt(j))>=0 && parseInt(objField.value.charAt(j))<=9)
					{
						alert("Numeric Value Not Allowed In "+objField.title);
						return false;
						break;
					}
				}
			}
			else
			{
				if(paramList[i]=='A-Z' || paramList[i]=='a-z')
				{
					for(j=0;j<objField.value.length;j++)
					{
						if((objField.value.charAt(j)>='a' && objField.value.charAt(j)<='z') || (objField.value.charAt(j)>='A' && objField.value.charAt(j)<='Z'))
						{
							alert("Charactors are Not Allowed In "+objField.title);
							return false;
							break;
						}
					}
				}
				else
				{
					if(objField.value.indexOf(paramList[i],0)>=0)
					{
						alert(paramList[i]+" Charactors are Not Allowed In "+objField.title);
						return false;
						break;
					}
				}
			}
		}
	}
	return true;
}
//*****************************************************************************************************

function validateCher1(objField,paramList)
{
	for(i=1;i<paramList.length;i++)
	{
//		if(paramList[i]=='blank')
//		{
//			if(!validateBlank(objField))
//				return false;
//		}
//		else
//		{
			var bilname="(^[a-zA-Z ]{1,255}$)";
			var regex = new RegExp(bilname);
			if (!regex.test(objField.value)) 
			{
				alert("Please enter a valid "+objField.title+" \n Only alphabets allowed");
				objField.focus();
				return(false);
			}		

	//	}
	}
	return true;
}

//*****************************************************************************************************

function trimSpaces(objField)
{
	temp = objField.value
	while(''+temp.charAt(0)==' ')
	{
		temp = temp.substring(1,temp.length);
	}
	return(temp)
}

//*****************************************************************************************************

function validateConfirm()
{
	if(confirm("Do you want to procced"))
		return true;
	else
		return false;
}

//*****************************************************************************************************

function mouse_out(obj,class1)
{
	obj.className = class1;
}

//*****************************************************************************************************

function mouse_over(obj,class1)
{
	obj.className = class1;
}

//*****************************************************************************************************
function ValidateStatus()
{
	if(confirm("Do You Want To Proceed"))
		return true;
	else
		return false;
}
