// JavaScript Documentfunction submitform() {

function submitform(form){

	var errorMessages = new Array();
	
	var elements = form.elements;
	
	for(var i = 0; i < elements.length; i++){
		if(elements[i] && elements[i].getAttribute && elements[i].getAttribute('_validate')){
			var validators = elements[i].getAttribute('_validate').split(',');
			for(var j = 0; j < validators.length; j++){
				switch (validators[j].split('=')[0]){
					case 'required':
						if(elements[i].value.length == 0){
							errorMessages.push(elements[i].getAttribute('_fieldName') +" is required");
						}
						break;
						
					case 'email':
						if(!validateEmail(elements[i].value)){
							errorMessages.push("An invalid Email Address was entered");
						}
						break;
						
					case 'atleast':
						if(elements[i].value.length < parseInt(validators[j].split('=')[1])){
							errorMessages.push(elements[i].getAttribute('_fieldName') + " must have at least " + validators[j].split('=')[1] + " characters");
						}
						break;
						
					case 'date':
						var format = validators[j].split('=')[1];
						if(!validateDate(elements[i].value, format)){
							errorMessages.push("Date must be in the format " + format);
						}
						break;
						
					case 'maxlength':
						var maxlength = parseInt(validators[j].split('=')[1]);
						if(elements[i].value.length > maxlength){
							errorMessages.push(elements[i].getAttribute('_fieldName') + " must be less than " + maxlength );
						}
						break;
				}
			}
		}
	}
	
	if(errorMessages.length > 0){
		var message = "The form could not be submitted for the following reasons. Please correct and submit again.\n";	
		for(var i = 0; i < errorMessages.length; i++){
			message += " - "+errorMessages[i] + "\n";
		}
		alert(message);
		return false;
	}
	return true;			

}

function validateEmail(email){
	if(email.length > 0){
		var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
		var regex = new RegExp(emailReg);
		return regex.test(email);
	}
	return true;
}

/**
 * Valid formats are "dd/mm/yyyy", "mm/dd/yyyy"
 */
function validateDate(date, format){
	if(date.length > 0){
		var dateRegExp = "^\\d{1,2}\\/\\d{1,2}\\/\\d{4}$";
		
		switch(format){
			case 'dd/mm/yyyy':
				var regex = new RegExp(dateRegExp);
				if(regex.test(date)){
					var dateParts = date.split('/');
					if(dateParts.length == 3){
						if(parseInt(dateParts[0]) < 32 && parseInt(dateParts[1]) < 13){
							return true;	
						}
					}
				}
				break;
				
			case 'mm/dd/yyyy':
				var regex = new RegExp(dateRegExp);
				if(regex.test(date)){
					var dateParts = date.split('/');
					if(dateParts.length == 3){
						if(parseInt(dateParts[0]) < 13 && parseInt(dateParts[1]) < 32){
							return true;	
						}
					}
				}
				break;
		}
	}else{
		return true;
	}
	
	return false;
}
