/*
Notes:

1. All elements that are included in the form loop must have an ID present, blank values are also not accepted, id must have some value in it.
*/

function validate(form_name){
	
	var msg = '';
	var password = 0;
	var tag_names = Array('input', 'textarea', 'select', 'checkbox');
	var exp_email = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var exp_zip = /^([0-9]{4,5})/;
	var numbers = /^([0-9\.])/;
	var reg_currency = /^\s*\d+\.\d{2}\s*$/;

	
	for(i = 0; i < tag_names.length; i++){
	
		var form_elements = form_name.getElementsByTagName(tag_names[i]);
			
		for(j = 0; j < form_elements.length; j++){
			//looping through all form elements
			var type = form_elements[j].type;
			
			if(type != 'submit' && type != 'hidden'){
				//exclude the submit and hidden form elements	
				var element = form_elements[j];				
				var id = form_elements[j].id;
				var id_value = document.getElementById(id).value;
				
				var index = id.indexOf(':');
				if(element.title == '' || element.title == undefined){
					// use alt text for error variable or if blank use element name
					title = element.name;
				} else {
					title = element.title;
				}				
				
				if(index != -1){
					//exclude where the ':' symbol is not present in form element id
					var subid = id.substr(index);
					
					for(var k = 1; k < subid.length; k++){
						//starting at 1 to exclude the ':' symbol, loop through all string characters
												
						//test for mandatory field -------------------------------------------------------------------------
						if(subid.charAt(k) == 'm'){
							
							//fixed here: IE does not support subid[k] when dealing with strings, needs to be parsed as character like subid.charAt(k)
							
							//test if field is blank
							if(id_value == ''){
								
								msg += '<li> ' + title + ' can not be blank</li>';
								
							}
							
							if(type == "checkbox" && element.checked == false){
								
								msg += '<li> ' + title + ' must be checked</li>';							
							}
						}
						
						// test for email address -------------------------------------------------------------------------
						if(subid.charAt(k) == 'e'){
							
							if(!exp_email.test(id_value)){
								
								msg += '<li> Please enter a valid email address</li>';
							}
						}
						
					}
					
				}
				
			}
		}
	}
	
	if(msg == ''){
		
		return true;
		
	} else {		
 		
		document.getElementById('errors').innerHTML = '<ul>' + msg + '</ul>';
		return false;
	}
}
