Object.extend(Form.Element, {
	isEmpty:		function(element) {
		return $(element).value.match(/^\s*$/);
	},
	
	isNumber:		function(element) {
		return $(element).value.match(/^\s*\d+\s*$/);
	},
	
	isEMail:		function(element) {
		return $(element).value.match(/^\s*[^\s.]+@[^\s.]+\.[^\s.]+\s*$/);
	},
	
	clearOptions:	function(element) {
	    var element = $(element);
		
		if (element.tagName.toLowerCase() == 'select')
			while (element.hasChildNodes())
				element.removeChild(element.lastChild);
				
		return element;
	},
	
	setOptions:		function(element, options, selected) {
	    var element = $(element);
		
		if (!element.tagName.toLowerCase() == 'select')
			return element;

		Form.Element.clearOptions(element);
		
		options.each(function(item, index) {
			var option = document.createElement("option");
			option.appendChild(document.createTextNode(item));
			option.value = item;
		
			element.appendChild(option);
		});
		
		return element;
	},
	
	setSelected:	function(element, selected) {
	    var element = $(element);
		var _element = element;

		if (Object.isUndefined(selected) || selected == null)
			selected = [];
		if (Object.isString(selected) || Object.isNumber(selected))
			selected = [selected];
		
		// element ist Selectbox; selected & elements anpassen
		if ('type' in element && ['select-one', 'select-multiple'].include(element.type)) {
			if (element.type == 'select-one' && selected.length > 0)
				selected = [selected[0]];

			_element = element.options;
		}

		for (var i = 0; i < _element.length; i++) {
			for (
				var j = 0, state = false; 
				j < selected.length && state == false;
				state = (Object.isNumber(selected[j]) && selected[j] == i) || (Object.isString(selected[j]) && selected[j] == _element[i].value), j++
			);

			if ('selected' in _element[i]) {
				_element[i].selected = state;
			} else if ('checked' in _element[i]) {
				_element[i].checked = state;
			}
		}

		// Workaround for IE to unselect all items in select-one-boxes
		if (selected.length == 0 && element.type == 'select-one')
			element.selectedIndex = -1;
		
		return element;
	}
});

