function validateInput(myfield, e, allowedCharacters) {
	var key;
	if (window.event) {
		key = window.event.keyCode;
	} else if (e) {
		key = e.which;
	} else {
		return true;
	}
	var keychar = String.fromCharCode(key);
	
	if ((key === null) || (key === 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27)) {
		// control keys
		return true;
	} else if (((allowedCharacters).indexOf(keychar) > -1)) {
		// numbers
	   return true;
	} else {
		return false;
	}
}

function integerInput(inputField, e) {
	return validateInput(inputField, e, '0123456789');
}

function integerRangeInput(inputField, e, minimum, maximum) {
	var fieldValue = inputField.value;
	if (window.event) {
		fieldValue += '' + String.fromCharCode(window.event.keyCode);
	} else if (e) {
		fieldValue += '' + String.fromCharCode(e.which);
	}
	var result = integerInput(inputField, e) && (parseInt(fieldValue) >= minimum) && (parseInt(fieldValue) <= maximum);
	return result;
}

function negativeIntegerInput(inputField, e) {
	return validateInput(inputField, e, '-0123456789');
}

function decimalInput(inputField, e) {
	return validateInput(inputField, e, '.0123456789');
}

function negativeDecimalInput(inputField, e) {
	return validateInput(inputField, e, '-.0123456789');
}

function restrictTextArea(field, limit) {
	if (field.value.length > limit) {
		field.value = field.value.substring(0, limit);
	}
}

function uppercase(field) {
	field.value = field.value.toUpperCase();
}

/**
 * Capitalises a words first letter
 */
function capitalise(field) {
	field.value = field.value.charAt(0).toUpperCase() + field.value.substring(1);
}

/**
 * Disables fields for a dialog
 */
function disableField(field) {
	if(field !== null && field !== undefined) {
		field.disabled = true;
		field.readOnly = true;
		field.style.backgroundColor = '#EAEAEA';
	}
}

/**
 * Enables fields for a dialog
 */
function enableField(field) {
	if(field !== null && field !== undefined) {
		field.disabled = false;
		field.readOnly = false;
		field.style.backgroundColor = '';
	}
}
