function ValidateForm() {

    
	var x;
	var form = document.forms[0];
	
	x = 0;
			
	if (document.images) {
	
		for (i=0; i<form.length; i++) {
		
			var field = form.elements[i];
			
			if (field.getAttribute("validate") == 'true' || field.getAttribute("validate")  == 'True') {
			
				ClearError(field);
				
				switch(field.getAttribute("vtype")) { 
					case "required": { 
					
						if (IsFieldEmpty(field)) {
							x++;
						}
						break;
					}
					case "maxlen": {
						if (MaximumCharactersExceeded(field)) {
							x++;
						}
						break;             
					}
					case "minlen": { 
						if (MinimumCharactersNotEntered(field)) {
							x++;
						}
						break;             
					}
					case "alphanumeric": { 
						if (NotAlphanumeric(field)) {
							x++;
						}
						break;             
					}
					case "numeric": { 
						if (NotNumeric(field)) {
							x++;
						}
						break;             
					}
					case "alphabetic": { 
						if (NotAlphabetic(field)) {
							x++;
						}
						break;             
					}
					case "email": {
						if (EmailNotValid(field)) {
							x++;
						}
						break;             
					}
					case "regexp": { 
						if (DoesNotMatch(field)) {
							x++;
						}
						break;             
					}
				}
			}
		}
	}
				
	if (x > 0) {

    	return false;
	}
	else {
	 
    
		form.submit();
		return true;
	}

}

function ValidateField(field) {
	if (document.images) {
		if (field.getAttribute("validate") == 'true' || field.getAttribute("validate") == 'True') {
			ClearError(field);
			switch(field.getAttribute("vtype")) { 
				case "required": { 
					if (IsFieldEmpty(field)) break;
				}
				case "maxlen": {
					if (!MaximumCharactersExceeded(field)) break;
				}
				case "minlen": { 
					if (MinimumCharactersNotEntered(field)) break;
				}
				case "alphanumeric": { 
					if (!NotAlphanumeric(field)) break;
				}
				case "numeric": { 
					if (!NotNumeric(field)) break;
				}
				case "alphabetic": { 
					if (!NotAlphabetic(field)) break;
				}
				case "email": {
					if (EmailNotValid(field)) break;
				}
				case "regexp": { 
					if (DoesNotMatch(field)) break;
				}
			}
		}
	}
}

function IsFieldEmpty(field) {
	if (eval(field.value.length) == 0) {
		DisplayErrorMessage(field);
        return true;
	}
	else {
		ClearError(field);
		return false;
	}
}

function MaximumCharactersExceeded(field) {
	if (eval(field.value.length) > eval(field.getAttribute("vvalue"))) { 
        DisplayErrorMessage(field);
        return true;
	}
	else {
		ClearError(field);
		return false;
	}
}

function MinimumCharactersNotEntered(field) {
	if (eval(field.value.length) <  eval(field.getAttribute("vvalue"))) { 
        DisplayErrorMessage(field);
        return true;
	}
	else {
		ClearError(field);
		return false;
	}
}

function NotAlphanumeric(field) {
	var regexp = /^[\w\W]+$/;
	if (field.value.match(regexp) == null) {
        DisplayErrorMessage(field);
        return true;
	}
	else  {
		ClearError(field);
		return false;
	}
}

function NotAlphabetic(field) {
	var regexp = /^[a-zA-Z ]+$/;
	if (field.value.match(regexp) == null) {
        DisplayErrorMessage(field);
        return true;
	}
	else {
		ClearError(field);
		return false;
	}
}

function NotNumeric(field) {
	var regexp = /^[0-9 ]+$/;
	if (field.value.match(regexp) == null) {
        DisplayErrorMessage(field);
        return true;
	}
	else  {
		ClearError(field);
		return false;
	}
}

function EmailNotValid(field) {
	var regexp = /^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/;
	var returnval=regexp.test(field.value);
	if (returnval==false){
		DisplayErrorMessage(field);
        return true;
	}
	else{
		ClearError(field);
		return false;
	}
}

function DoesNotMatch(field) {
	var regexp = field.value;
	if (field.value.match(regexp) == null) {
        DisplayErrorMessage(field);
        return true;
	}
	else  {
		ClearError(field);
		return false;
	}
}

function DisplayErrorMessage(field) {
	document.getElementById(field.id + 'error').style.display='block';
	document.getElementById(field.id + 'error').innerHTML = field.getAttribute("errormessage");
}

function ClearError(field) {
	if (document.getElementById(field.id + 'error')!=null)
	{
		document.getElementById(field.id + 'error').innerHTML = '';
		document.getElementById(field.id + 'error').style.display='none';
	}
}

