function form_check(form_object, field_required, field_description) {
	// dialog message
	var alertMsg = "Please complete the following required fields:\n";

	var l_Msg = alertMsg.length;

	for (var i = 0; i < field_required.length; i++){
		var obj = form_object.elements[field_required[i]];

		if (obj) {
			if (typeof(check_focus_text) == 'function') {
				switch(obj.type){
					case "text":
					case "textarea":
						check_focus_text(obj, obj.className);
					break;
				}
			}

			if (obj.className) {
				var classes = obj.className.replace(/ form_validation_error/g,'');
				obj.className = classes;
			}
			
			switch(obj.type){
				case "select-one":
					if (obj.selectedIndex == 0 || obj.options[obj.selectedIndex].text == ""){
						alertMsg += " - " + field_description[i] + "\n";
						obj.className = classes + ' form_validation_error';
					} 
				break;
				case "select-multiple":
				case "select":
					if (obj.value == '') {
						alertMsg += " - " + field_description[i] + "\n";
						obj.className = classes + ' form_validation_error';
					}
				break;
				case "hidden":
				case "file":
				case "text":
				case "password":
				case "textarea":
					if (field_required[i] == 'email' && !obj.value.match(/^[a-zA-Z0-9\._\-]*@[a-zA-Z0-9\.\-]*\.[a-zA-Z]{2,6}(\.[a-zA-Z]{2,4})?$/)) {
						alertMsg += " - " + field_description[i] + "\n";
						obj.className = classes + ' form_validation_error';
					} else if (obj.value == "" || obj.value == null){
						alertMsg += " - " + field_description[i] + "\n";
						obj.className = classes + ' form_validation_error';
					}
				break;
				case "checkbox":
					if (obj.checked != true){
						alertMsg += " - " + field_description[i] + "\n";
						obj.className = classes + ' form_validation_error';
					}
				break;
				default:
			}

			if (obj.type == undefined) {
				var blnchecked = false;

				for (var j = 0; j < obj.length; j++){
					if (obj[j].checked) {
						blnchecked = true;
					} else {
						switch (obj[j].type) {
							case "hidden":
							case "file":
							case "text":
							case "password":
							case "textarea":
								if (obj[j].value != '') {
									blnchecked = true;
								}
								break;
						}
					}
					
					if (blnchecked) {
						break;
					}
				}

				if (!blnchecked){
					alertMsg += " - " + field_description[i] + "\n";
					
					if (obj.className) {
						obj.className = classes + ' form_validation_error';
					}
				} 
			}

			if (typeof(check_blur_text) == 'function') {
				switch(obj.type){
					case "text":
					case "textarea":
						check_blur_text(obj, obj.className);
					break;
				}
			}
		} else {
			alertMsg += " - " + field_description[i] + "\n";
		}
	}

	if (alertMsg.length == l_Msg){
		if (typeof(check_focus_text) == 'function') {
			for (var i in form_object.elements) {
				var obj = form_object.elements[i];
				if (obj) {
					switch(obj.type){
						case "text":
						case "textarea":
							check_focus_text(obj, obj.className);
						break;
					}
				}
			}
		}
	
		return true;
	} else {
		alert(alertMsg);
		return false;
	}
}
