function setElementValue(element, value) {
	var nodeName = element.nodeName.toLowerCase();
	if (nodeName == 'input') {
		var type = element.type.toLowerCase();
		if (type == 'text') {
			element.value = value;
		} else if (type == 'password') {
			element.value = value;
		} else if (type == 'checkbox') {
			element.checked = value;
		} else if (type == 'submit') {
			//
		}
	} else if (nodeName == 'textarea') {
		element.value = value;
	} else if (nodeName == 'select') {
		for (var i = 0; i < element.length; i++) {
			if (element[i].value == value) {
				element.selectedIndex = i;
				break;
			}
		}
	}
}

function nl2br(str) {
	return str.replace(/\n/g, '<br />');
}

function br2nl(str) {
	return str.replace(/<br \/>/g, '\n');
}

function emailIsLegit(email) {
	var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	if (filter.test(email)) return true;
	else return false;
}

function setupFocusedAndIdleFieldStyling() {
	$('input, select, textarea').addClass('idleField').focus(applyFocusedStyle).blur(applyIdleStyle);
}

function setupFocusedAndIdleFieldStylingForElement(element) {
	element.addClass('idleField');
	element.focus(applyFocusedStyle);
	element.blur(applyIdleStyle);
}

function applyFocusedStyle() {
	$(this).removeClass('idleField').addClass('focusedField');
}

function applyIdleStyle() {
	$(this).removeClass('focusedField').addClass('idleField');
}

function makeDivider() {
	var dividerHtml = "";
	dividerHtml += "<div class='divider'></div>";
	return dividerHtml;
}

function isDate(dateString, delimiter) {
	var dateArray = dateString.split(delimiter);
	if (dateArray.length != 3) return false;
	if (dateArray[0] < 0 || dateArray[0] > 9999) return false;
	if (dateArray[1] < 0 || dateArray[1] > 12) return false;
	if (dateArray[2] < 0 || dateArray[2] > 31) return false;
	return true;
}

function removeItemFromArrayWhereValueEquals(value, array) {
	return array.splice(array.indexOf(value), 1);
}

function formatCurrency(num) {
	num = isNaN(num) || num === '' || num === null ? 0.00 : num;
	return parseFloat(num).toFixed(2);
}

function customAlert(message, includeCancelButton, callbackFunction) {
	var buttonsObject;
	if (includeCancelButton) {
		buttonsObject = {
			OK: true,
			Cancel: false
		};
	} else {
		buttonsObject = {
			OK: true
		};
	}
	$.prompt(String(message), {
		buttons: buttonsObject,
		callback: callbackFunction,
		focus: 0,
		opacity: 95,
		prefix: 'customAlert',
		promptspeed: 300, /* in miliseconds */
		submit: focusElementOnPopupClose
	});
}

function focusElementOnPopupClose() {
	/*
	if (elementToBeFocusedOnPopupClose != null) {
		elementToBeFocusedOnPopupClose.focus();
	}
	*/
}

function blurAllElements() {
	$(':input').each(function() {
		this.blur();
	});
}

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function includeJsEnabledStyle(styleUrl) {
	var css = document.createElement('link');
	css.rel = 'stylesheet'
	css.type = 'text/css';
	css.href = styleUrl;
	document.getElementsByTagName('head')[0].appendChild(css);
}

function preloadImage(src) {
	if (document.images) {
		img = new Image(0, 0);
		img.src = src;
	}
}

window.alert = customAlert;
