var changed="0";
var formToSubmit;
var saveButton;
var deleteKey = "46";
var backspaceKey = "8";

function registerForm(button) {
    saveButton = button;
    formToSubmit = button.form;
    saveButton.attachEvent("onclick", resetChanged);
    var inputElements = formToSubmit.getElementsByTagName("input");
    var selectElements = formToSubmit.getElementsByTagName("select");
    var textElements = formToSubmit.getElementsByTagName("textarea");
    for (i = 0; i < inputElements.length; i++) {
    	var element = inputElements[i];
      	element.attachEvent("onkeypress", handleOnKeyPressEvent);
        element.attachEvent("onkeydown", handleOnKeyDownEvent);
        element.attachEvent("onchange", handleOnChangeEvent);
        element.attachEvent("onclick", handleOnChangeEvent);
    }
    for (i = 0; i < selectElements.length; i++) {
    	var element = selectElements[i];
      	element.attachEvent("onchange", handleOnChangeEvent);
    }
    for (i = 0; i < textElements.length; i++) {
    	var element = textElements[i];
      	element.attachEvent("onkeypress", handleOnKeyPressEvent);
    }
    var links = document.getElementsByTagName("a");
    for (i = 0; i < links.length; i++) {
    	var element = links[i];
    	var href = element.getAttribute("href");
    	element.href = "javascript: checkSaveChanges('"+href+"')";
    }
    var forms = document.forms;
    for (i = 0; i < forms.length; i++) {
        if (forms[i] != formToSubmit) {
            forms[i].onsubmit=new Function("return checkSaveChanges(null)");
        }
    }
}

function checkSaveChanges(nextScreen) {
    if (getChanged() == "1") {
    	if (confirm("Changes have not been saved!  \nClick 'OK' to discard changes and continue.  Click 'Cancel' to return to the current screen."))
        {
        	resetChanged();
            if (nextScreen != null) document.location=nextScreen;
    	}
        else
        {
            if (nextScreen == null) return false;
        }
    }
    else
    {
        if (nextScreen != null) document.location=nextScreen;
    }
}

function handleOnChangeEvent() {
    setChanged("1");
    var messageContainer = document.getElementById("userMessages");
    if (messageContainer != null) messageContainer.innerHTML = "&nbsp;";
}

function handleOnKeyDownEvent() {
    var keyPressed = event.keyCode;
    if (keyPressed == deleteKey || keyPressed == backspaceKey) {
        handleOnChangeEvent();
    }
}

function handleOnKeyPressEvent() {
    handleOnChangeEvent();
}

function setChanged(val)
{
    setCookie("changed", val);
}

function getChanged()
{
    return getCookie("changed");
}

function resetChanged()
{
    setChanged("0");
}

function getExpDate(days, hours, minutes)
{
    var expDate = new Date();
    if (typeof days == "number" && typeof hours == "number" &&
    	typeof minutes == "number")
    {
        expDate.setDate(expDate.getDate() + parseInt(days));
        expDate.setHours(expDate.getHours() + parseInt(hours));
        expDate.setMinutes(expDate.getMinutes() + parseInt(minutes));
        return expDate.toGMTString();
    }
}

function getCookieVal(offset)
{
    var endstr = document.cookie.indexOf(";", offset);
    if (endstr == -1) endstr = document.cookie.length;
    return unescape(document.cookie.substring(offset, endstr));
}

function getCookie(name)
{
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    while (i < clen)
    {
        var j = i + alen;
        if (document.cookie.substring(i, j) == arg)
        {
            return getCookieVal(j);
        }
        i = document.cookie.indexOf(" ", i) + 1;
        if (i == 0) break;
    }
    return "";
}

function setCookie(name, value, expires, path, domain, secure)
{
    document.cookie = name + "=" + escape(value) +
    ((expires) ? "; expires=" + expires : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
}

function deleteCookie(name, path, domain)
{
    if (getCookie(name))
    {
        document.cookie = name + "=" +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}