var changed = 0;
function recordChange() {
    changed = 1;
}
function recordChangeIfChangeKey(myevent) {
    if (myevent.which && !myevent.ctrlKey && !myevent.ctrlKey)
	recordChange(myevent);
}
function ignoreChange() {
    changed = 0;
}
function lookForChanges() {
    var origfunc;
    for (i = 0; i < document.forms.length; i++) {
	for (j = 0; j < document.forms[i].elements.length; j++) {
	    var formField=document.forms[i].elements[j];
	    var formFieldType=formField.type.toLowerCase();
	    if (formFieldType == 'checkbox' || formFieldType == 'radio') {
		//addHandler(formField, 'click', recordChange);
	    } else if (formFieldType == 'text' || formFieldType == 'textarea' || formFieldType == 'password') {
		if (formField.attachEvent) {
		    addHandler(formField, 'keypress', recordChange);
		} else {
		    addHandler(formField, 'keypress', recordChangeIfChangeKey);
		}
	    } else if (formFieldType == 'select-multiple' || formFieldType == 'select-one') {
		addHandler(formField, 'change', recordChange);
	    }
	}
	addHandler(document.forms[i], 'submit', ignoreChange);
    }
}
function warnOfUnsavedChanges() {
    if (changed) {
	if ("event" in window) //ie
	    event.returnValue = 'You have unsaved changes on this page, which will be discarded if you leave now. Click "Cancel" to stay on this page, or "OK" to leave.';
	else //netscape
	    return false;
    }
}
function addHandler(target, eventName, handler) {
    if (target.attachEvent) {
	target.attachEvent('on'+eventName, handler);
    } else {
	target.addEventListener(eventName, handler, false);
    }
}

