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 vfForm = vfSubmit;

	var getRequiredFunc = function(inputField) {
		var vfRequired = new RegExp("(^|\\s)vf_required(\\s|$)");
		if(vfRequired.test(inputField.className)) {
			if(inputField.value == '') {
				errorMsg += '\nYou must enter a value in the \'' + inputField.title + '\' field;';
				return false;
			}
			return true;
		}
		return true;
	}

	var getEmailFunc = function(inputField) {
		var vfemail = new RegExp("(^|\\s)vf_email(\\s|$)");
		var vfemailvalidation = new RegExp(/^(\w+(?:\.\w+)*)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i);
		if(vfemail.test(inputField.className)) {
			if(!vfemailvalidation.test(inputField.value)) {
				errorMsg += '\nYou must enter a valid email address in the \'' + inputField.title + '\' field;';
				return false;
			}
			return true;
		}
		return true;
	}

	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(getRequiredFunc(vfInputs[i])) {
			getEmailFunc(vfInputs[i]);
		}
	}
	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 addEvent(obj, evType, fn, useCapture){
  if (obj.addEventListener) {
    obj.addEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
    // alert('Handler could not be attached');
    return false;
  }
}

addEvent(window, 'load', vfInit, false);

