vdwVal = {
	error_header: 'The following errors occurred',
	warningClass: 'error',
	validation:function(which) {
		required = vdwDOM.getElementsByClassName(which, '*', 'required');
		var errors = new Array();
		for (var i = 0; i < required.length; i++) {
			var input;
			var label;
			if (required[i].getElementsByTagName("input")[0]) {
				input = required[i].getElementsByTagName("input")[0];
				switch (input.getAttribute("type")) {
					case "text":
					if (required[i].getElementsByTagName("label")[0].firstChild.nodeType == 3) {
						label = vdwUtil.trimString(required[i].getElementsByTagName("label")[0].firstChild.nodeValue);
					} else if (required[i].getElementsByTagName("label")[0].firstChild.firstChild.nodeType == 3) {
						label = vdwUtil.trimString(required[i].getElementsByTagName("label")[0].firstChild.firstChild.nodeValue);
					}
					if (vdwVal.missingContent(input, label) != "") {
						errors.push(vdwVal.missingContent(input, label) + " is required");
					}				
					if (required[i].className.indexOf('number') != '-1' && input.value != '') {
						if (isNaN(input.value) || input.value <= 0) {
							errors.push(label + ' must be a positive number');
						}
					}				
					if (required[i].className.indexOf("email") != "-1") {
						if (input.value != ""){
							var email = vdwVal.checkEmail(input.value);
							if (email == false){
								errors.push("Invalid Email Address\n");
								if (input.className.indexOf(vdwVal.warningClass) == -1) {
									vdwDOM.addClass(input, vdwVal.warningClass);
								}
							} else {
								vdwDOM.removeClass(input, vdwVal.warningClass);
							}
						}
					}				
					if (input.id == "x_Card_Num" && input.value != "") {
						var cc_number = document.getElementById('x_Card_Num');
						var cc_type = document.getElementById('CC_TYPE');
						var cc_month = document.getElementById('CC_MONTH');
						var cc_year = document.getElementById('CC_YEAR');
						cc_valid = validateCard(cc_number.value,cc_type.value,cc_month.value,cc_year.value);
						if (cc_valid != "") {
							if (cc_number.className.indexOf(vdwVal.warningClass) == -1) {
								vdwDOM.addClass(cc_number, vdwVal.warningClass);
							}
							errors.push(cc_valid);
						} else {
							vdwDOM.removeClass(cc_number, vdwVal.warningClass);
						}			
					}
					break;
					case "radio":
					label = vdwUtil.trimString(required[i].getElementsByTagName("p")[0].firstChild.nodeValue);
					if (vdwVal.valRadio(required[i].getElementsByTagName("input"), label) != "") {
						errors.push(vdwVal.valRadio(required[i].getElementsByTagName("input"), label) + " is required");
					}
					break;
					case "checkbox":
					label = vdwUtil.trimString(required[i].getElementsByTagName("p")[0].firstChild.nodeValue);
					if (vdwVal.valCheckbox(required[i].getElementsByTagName("input"), label) != "") {
						errors.push(vdwVal.valCheckbox(required[i].getElementsByTagName("input"), label) + " is required");
					}
					break;
				}
			} else if (required[i].getElementsByTagName("textarea")[0]) {
				input = required[i].getElementsByTagName("textarea")[0];
				label = vdwUtil.trimString(required[i].getElementsByTagName("label")[0].firstChild.nodeValue);
				if (vdwVal.missingContent(input, label) != "") {
					errors.push(vdwVal.missingContent(input, label) + " is required");
					if (input.className.indexOf(vdwVal.warningClass) == -1) {
						vdwDOM.addClass(input, vdwVal.warningClass);
					}
				}
			} else if (required[i].getElementsByTagName("select")[0]) {
				input = required[i].getElementsByTagName("select")[0];
				label = vdwUtil.trimString(required[i].getElementsByTagName("label")[0].firstChild.nodeValue);
				if (vdwVal.missingContent(input, label) != "") {
					errors.push(vdwVal.missingContent(input, label) + " is required");
					if (input.className.indexOf(vdwVal.warningClass) == -1) {
						vdwDOM.addClass(input, vdwVal.warningClass);
					}
				}
			}
		}
		return vdwVal.displayErrors(errors, which);
	},
	missingContent:function(field, label) {
		var missing_empty = '';
		if (field.value == '') {
			missing_empty += label;
			if (field.className.indexOf(vdwVal.warningClass) == -1) {
				vdwDOM.addClass(field, vdwVal.warningClass);
			}
		} else {
			vdwDOM.removeClass(field, vdwVal.warningClass);
		}
		return missing_empty;
	},
	valRadio:function(fields, label) {
		var missing_empty = '';
		var checked = 0;
		for (var j = 0; j < fields.length; j++) {
			if (fields[j].checked) {
				checked = 1;
			}
		}
		if (!checked) {
			missing_empty += label;
		}
		return missing_empty;
	},
	valCheckbox:function(fields, label) {
		var missing_empty = '';
		var checked = 0;
		for (var j = 0; j < fields.length; j++) {
			if (fields[j].checked) {
				checked = 1;
			}
		}
		if (!checked) {
			missing_empty+= label;
		}
		return missing_empty;
	},
	checkEmail:function(myForm) {
		if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(myForm)){
			return (true)
		}
		return (false)
	},
	displayErrors:function(errors, which) {
		if (errors.length != 0) {
			if (vdwDOM.getElementsByClassName(which, 'div', 'errors').length != 0) {
				which.removeChild(vdwDOM.getElementsByClassName(which, 'div', 'errors')[0]);
			}
			var error_container = document.createElement('div');
			error_container.className = 'errors';
			var error_head = document.createElement('h3');
			var error_head_txt = document.createTextNode(vdwVal.error_header);
			error_head.appendChild(error_head_txt);
			error_container.appendChild(error_head);
			var error_list = document.createElement('ul');
			var error_list_items = new Array();
			for (var k = 0; k < errors.length; k++) {
				error_list_items[k] = document.createElement('li');
				error_list_items[k].appendChild(document.createTextNode(errors[k]));
				error_list.appendChild(error_list_items[k]);
			}
			error_container.appendChild(error_list);
			which.insertBefore(error_container, which.firstChild);
			vdwUtil.fadeUp(error_container, 255, 0, 0);
			var formAnchor = '#' + which.id;
			if (window.location.href.indexOf('#') == -1) {
				window.location = window.location + formAnchor;
			} else {
				var url = window.location.href;
				url = url.slice(0,url.indexOf('#'));
				window.location = url + formAnchor;
			}
			/*
			if (window.location.href.indexOf(formAnchor) == -1) {
				window.location = window.location + formAnchor;
			} else {
				var url = window.location.href;
				url = url.slice(0,url.indexOf(formAnchor));
				window.location = url + formAnchor;
			}
			*/
			return false;
		} else {
			return true;
		}
	
		}
	}
	

function val(e) {
	var target = vdwDOM.getTarget(e);
	if (!vdwVal.validation(target)) {
		vdwDOM.cancelClick(e);
	} else {
		return true;
	}
}

vdwDOM.addEvent(window, 'load', function() {
	var forms = document.getElementsByTagName('form');
	for (var i = 0; i < forms.length; i++) {
		if (forms[i].className.indexOf('validate') != '-1') {
			vdwDOM.addEvent(forms[i], 'submit', val, false);
		}
	}
}, false);
