var FormUtils = {
	value: function(field) {
		switch (this.fieldType(field)) {
			case 'radio' :
				for (var ndx = 0; ndx < field.length; ndx++)
					if (field[ndx].checked) return field[ndx].value;
				return false;
			case 'checkbox': return field.checked;
			case 'select-one':
				if (field.selectedIndex == -1) return false;
				return field[field.selectedIndex].value;
			default: return field.value;			
		}
	},

	fieldType: function(element) {
		if (element[0] && element[0].type == 'radio') return 'radio';
		else if (element.type == 'checkbox') return 'checkbox';
		else if (element.type) return element.type;
		else return false;
	},

	labelFor: function(element) {
		if (!$(element) || !element.id) return false;
		var result = false;
		$A(document.getElementsByTagName('label')).each(function(label) {
			if (label.readAttribute('for') == element.id) result = label;
		});
		return result;
	},
	
	setSelect: function(element, value) {
		for (var i = 0; i < element.options.length; i++) {
			if (element.options[i].value == value) {
				element.selectedIndex = i;
				break;
			}
		}
	},

	fixFormLabels: function() {
		// enable label clicks for IE and Safari
		if( document.all || navigator.userAgent.indexOf("Safari") > 0){ 
			var labels = document.getElementsByTagName("label");
			$A(labels).each ( function(label){
				Event.observe(label, "click", function(){
					var target = $(this.getAttribute('for'));
					if(target.type == 'checkbox' || target.type == 'radio')
						target.checked = target.checked == false ? true : false;
					else target.focus();
				});
			});
		}
	},
	
	formatPhone: function(field) {		
		var phone = field.value.replace(/\D+/g,'');
		var p1 = phone.slice(0,3);
		var p2 = phone.slice(3,6);
		var p3 = phone.slice(6,10);

		field.value = "(" + p1 + ") " + p2 + "-" + p3;
		
		return true;
	}
}