var promptSet = false;
var unsavedDataPromptMessage = "";
var unsavedDataCheckFlag = true;

clearUnsavedPrompt = function() {
	window.onbeforeunload = function() {}
	promptSet = false;
}

setUnsavedPrompt = function(e) {
	if (!promptSet) {
		window.onbeforeunload = function() {
			if (unsavedDataCheckFlag)
				return unsavedDataPromptMessage;
			
			unsavedDataCheckFlag = true;
		};
		promptSet = true;
	}
	
	return e;
};

function checkUnsavedPrompt(){
	if (promptSet) {
		if ( confirm(unsavedDataPromptMessage) ){
			clearUnsavedPrompt();
			return true;
		} else 
			return false;
	} 
	return true;
};

addUnsavedDataCheck = function(formId, message) {
	var formElements = document.getElementById(formId).elements;

	unsavedDataPromptMessage = message;
	
	var userAgent = navigator.userAgent.toLowerCase();
	var msie = /msie/.test( userAgent ) && !/opera/.test( userAgent );
	
	for (var i = 0; i < formElements.length; i++) {

		switch (formElements[i].type) {
			case "checkbox":
				if (msie)
					formElements[i].attachEvent("onclick", setUnsavedPrompt);
				else
					formElements[i].addEventListener("click", setUnsavedPrompt, false);
				break;
				
			case "text":
				if (msie)
					formElements[i].attachEvent("onkeyup", setUnsavedPrompt);
				else
					formElements[i].addEventListener("keyup", setUnsavedPrompt, false);
				break;
				
			default:
				if (msie)
					formElements[i].attachEvent("onchange", setUnsavedPrompt);
				else
					formElements[i].addEventListener("change", setUnsavedPrompt, false);
				break;
		}
		
	}
}
