function getValue(formObj,getOption) {
	if(!getOption) { getOption = 'value'; }
	if(formObj.type == 'text' || formObj.type == 'textarea' || formObj.type == 'hidden') {
		return formObj[getOption];
	} else if(formObj.type == 'select-one') {
		for(var i=0;i<formObj.length;i++) {

			if(formObj.options[i].selected) {
				return formObj.options[i][getOption];
			}

		}
	} else if(formObj.type == 'select-multiple') {
		var selectArray = new Array();
		for(var i=0;i<formObj.length;i++) {
			if(formObj.options[i].selected) {
				selectArray[selectArray.length] = formObj.options[i][getOption];
			}
		}
		return selectArray.join(',');
	} else if(formObj.type == 'checkbox') {
		if(formObj.checked) {
			return formObj[getOption];
		} else {
			return '';
		}
	} else if(formObj[0] && formObj[0].type == 'radio') {
		for(var i=0;i<formObj.length;i++) {
			if(formObj[i].checked) {
				return formObj[i][getOption];
			}
		}
		return '';
	} else {
		return '';
	}
}

function vf(vfSubmit) {
	var errorMsg = '';
	var vfRequired = new RegExp("(^|\\s)vf_required(\\s|$)");
	var vfemail = new RegExp("(^|\\s)vf_email(\\s|$)");
	var vfForm = vfSubmit;
	while(vfForm.tagName.toLowerCase() != 'form') {
		vfForm = vfForm.parentNode;
		if(vfForm.tagName.toLowerCase() == 'body') {
			return true;
		}
	}
	var vfInputs = new Array();
	var inputTypes = new Array('input','select','textarea');
	for(var i=0;i<inputTypes.length;i++) {
		var tags = vfForm.getElementsByTagName(inputTypes[i]);
		for (var j=0;j<tags.length;j++) {
			vfInputs.push(tags[j]);
		}
	}
	for(var i=0; i<vfInputs.length; i++) {
		if(vfRequired.test(vfInputs[i].className)) {
			var vfInputsValue = getValue(vfInputs[i],'value');
			if(vfInputsValue == '') {
				errorMsg += '\nYou must enter a value in the \'' + vfInputs[i].title + '\' field;';
			} else if(vfemail.test(vfInputs[i].className)) {
				if(!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(vfInputsValue))) {
					errorMsg += '\nYou must enter a valid email address is the \'' + vfInputs[i].title + '\' field;';
				}
			}
		}
	}
	if(errorMsg != '') {
		alert(errorMsg);
		return false;
	}
	return true;
}

function vfInit() {
	var vfFormsRegExp = new RegExp("(^|\\s)vf(\\s|$)");
	var vfSubmitsRegExp = new RegExp("(^|\\s)vfsubmit(\\s|$)");
	if(document.getElementById) {
		vfForms = document.getElementsByTagName('form');
		for(var i=0; i<vfForms.length; i++) {
			if(vfFormsRegExp.test(vfForms[i].className)) {
				var vfInputs = vfForms[i].getElementsByTagName('input');
				for(var j=0; j<vfInputs.length; j++) {
					if(vfSubmitsRegExp.test(vfInputs[j].className)) {
						vfInputs[j].onclick = function() {
							return vf(this);
						}
					}
				}
			}
		}
	}
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

addLoadEvent(vfInit);
