// Validate from
function validateForm(formObject,requiredType,requiredValue,requiredClassTag,requiredAlertObjectId) 
{	
	// Veriables
	var valid = true;
	var requiredConfirmationObjects = new Object();	
	var requiredOrObjects = new Object();	
	
	// Set in-vali
	function setInvalid(invalidObject,lableId) 
	{
		if(lableId != null) 
		{
			if(requiredType == 'class') 
			{
				document.getElementById(lableId).className = invalidObject.className.replace(RegExp(" "+requiredValue),''); 
				invalidObject.onfocus = new Function("document.getElementById('"+lableId+"').className='"+invalidObject.className+"'");
				document.getElementById(lableId).className += ' '+requiredValue;
			} 
			else if(requiredType == 'color') 
			{
				document.getElementById(lableId).style.color = requiredValue;
				invalidObject.onfocus = new Function("document.getElementById('"+lableId+"').style.color=''");
			}
		} 
		else 
		{
			if(requiredType == 'class') 
			{
				invalidObject.className = invalidObject.className.replace(RegExp(" "+requiredValue),''); 
				invalidObject.onfocus = new Function("this.className='"+invalidObject.className+"'");
				invalidObject.className += ' '+requiredValue;
			} 
			else if(requiredType == 'color') 
			{
				invalidObject.style.color = requiredValue; 
				invalidObject.onfocus = new Function("this.style.color=''");
			}
		}
	}

	// Scan form
	for (var i = 0; i < formObject.length; i++) 
	{
		if (formObject[i].className.match(RegExp("^"+requiredClassTag))) 
		{
			
				// Get attributes
				var inputValid = true;
				var classExplode = formObject[i].className.split(' '); 
				var requiredAttributes = classExplode[0].split('_');
				var verifyEmail = false;
				var verifyConfirm = null;
				var verifyOr = null;
				var verifyCharcterCount = null;				
				var verifyLableID = null;
				var verifyVerification = null;				
					
				// Scan attributes	
				for (var a=0; a < requiredAttributes.length; a++) 
				{
					if(requiredAttributes[a].match('email'))
						verifyEmail = true;
					
					else if(requiredAttributes[a].match(/^or[0-9]+/)) 
						verifyOr = requiredAttributes[a].replace(/^or/,'');
					
					else if(requiredAttributes[a].match(/^c[0-9]+/)) 
						verifyConfirm = requiredAttributes[a].replace(/^c/,'');
					
					else if(requiredAttributes[a].match(/^vn[0-9]+/)) 
						verifyVerification = requiredAttributes[a].replace(/^vn/,'');
					
					else if(requiredAttributes[a].match(/^n[0-9]+/))
						verifyCharcterCount = parseInt(requiredAttributes[a].replace(/^n/,''));				
					
					else if(requiredAttributes[a].match(/^l-/)) 
						verifyLableID = requiredAttributes[a].replace(/^l-/,'');					
				}		
				
				
				// Verify
				if(verifyVerification != null) 
				{
					if(formObject[i].value != verifyVerification) 
					{	
						setInvalid(formObject[i],verifyLableID);
						inputValid = false;
					}
				} 	
								
				// Email
				else if (verifyEmail) 
				{
					if(formObject[i].type == 'textarea') 
					{
						var emails = formObject[i].value.replace(/^,|,$/,'').split(',');
						for (var e = 0; e < emails.length; e++) 
						{
							emails[e] = emails[e].replace(/^\s+|\s+$/g,"");
							if (!emails[e].match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi)) 
							{
								setInvalid(formObject[i],verifyLableID);
								inputValid = false;
							}	
						}					
					} 
					else 
					{				
						if (!formObject[i].value.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi)) 
						{
							setInvalid(formObject[i],verifyLableID);
							inputValid = false;
						}
					}				
				} 			

				// Radio
				else if (formObject[i].type == 'radio') 
				{	
					var validateButton = false;
					if(formObject[formObject[i].name].length) 
					{
						for(var r=0; r < formObject[formObject[i].name].length; r++) 
						{
							if(formObject[formObject[i].name][r].checked) 
							{
								validateButton = true;
								break;
							}
						}	
					} 
					else 
					{
						if(formObject[i].checked) 
							validateButton = true;						
					}
					if (!validateButton) 
					{
						setInvalid(formObject[i],verifyLableID);
						inputValid = false;
					}
				}				

				// Checkbox	
				else if (formObject[i].type == 'checkbox') 
				{
					var validateButton = false;
					if(formObject[formObject[i].name].length) 
					{
						for(var r=0; r < formObject[formObject[i].name].length; r++) 
						{
							if(formObject[formObject[i].name][r].checked) 
							{
								validateButton = true;
								break;
							}
						}	
					}
					else 
					{
						if(formObject[i].checked) 
							validateButton = true;
					}
					if (!validateButton) 
					{
						setInvalid(formObject[i],verifyLableID);
						inputValid = false;
					}	
				}					

				// Select
				else if (formObject[i].type == 'select-one' || formObject[i].type == 'select') 
				{
					if (formObject[i].value == '') 
					{
						setInvalid(formObject[i],verifyLableID);
						inputValid = false;
					}
				}				

				// File 
				else if (formObject[i].type == 'file') 
				{
					if (formObject[i].value == '') 
					{
						setInvalid(formObject[i],verifyLableID);
						inputValid = false;
					}	
				}			

				// Text & Text Area
				else if (formObject[i].type == 'password' || formObject[i].type == 'text' || formObject[i].type == 'textarea' || formObject[i].type == 'hidden') 
				{					

					// Number of charecters
					if (verifyCharcterCount != null) 
					{
						if (formObject[i].value.length != verifyCharcterCount) 
						{
							setInvalid(formObject[i],verifyLableID);
							inputValid = false;
						}
					} 					

					// Empty
					else if (formObject[i].value == '') 
					{
						setInvalid(formObject[i],verifyLableID);
						inputValid = false;
					}	
					
				}
				
				// Confirmation
				if(verifyConfirm != null) 
				{
					if(requiredConfirmationObjects[verifyConfirm]) 
					{					
						if (requiredConfirmationObjects[verifyConfirm] != formObject[i].value) 
						{
								setInvalid(formObject[i],verifyLableID);
								inputValid = false;
						}
					} 
					
					else 
						requiredConfirmationObjects[verifyConfirm] = formObject[i].value;					
				}
				
				// Or
				if(verifyOr != null && inputValid)
					requiredOrObjects[verifyOr] = inputValid;  
				
				else if(verifyOr != null && !requiredOrObjects[verifyOr])
					requiredOrObjects[verifyOr] = inputValid;  
					
				
				// Set valid
				if(!inputValid && verifyOr == null)
					valid = inputValid;
				
		}
	}	
	
	// Verify or's
	for(id in requiredOrObjects) 
	{
		if(!requiredOrObjects[id]) 
		{
			valid = false;
			break;	
		}
	}

	// Required Alert
	if (requiredAlertObjectId != '') 
	{
		if (!valid)
			document.getElementById(requiredAlertObjectId).style.display = "block";
		else
			document.getElementById(requiredAlertObjectId).style.display = "none";
		
	} 	
	
	return valid;
}
