/* checkmod.js - check for form changes
 * form must be named 'main_form'.
 */

var needToConfirm = true;

var has_chg = false;
var formstate = '';
var checkmod_exit_msg = '';

function checkmod_set_exit(s) {
  checkmod_exit_msg = s;
}

function getstate() {
  var formstate = '';
  for (i = 0; i < document.main_form.elements.length; ++i) {
    var e = document.main_form.elements[i];
    if (e.type == 'button' || e.type == 'submit') {
	continue;
    } else if (e.type == 'text' || e.type == 'select-one' || e.type == 'textarea' || e.type == 'hidden') {
	formstate += e.value + '/';
    } else if (e.type == 'radio' || e.type == 'checkbox' ) {
	formstate += e.checked + '/';
    } else {
	alert('Unknown type: ' + e.type + ' = ' + e.value);
    }
  }
  return formstate;
}

function savestate() {
  formstate = getstate();
}

window.onload = savestate;

window.onbeforeunload = confirmExit;
function confirmExit() {
  if (needToConfirm && has_changed()) {
    if (checkmod_exit_msg != '')
      return checkmod_exit_msg;
    return "This page has unsaved data. Pressing 'OK' will discard your changes.";
  }
  needToConfirm = true;		// Turn back on, in case it was disabled
}

function has_changed() {
  stale = 0;
  var s = document.getElementsByName('form_changed');
  if (s && s[0] && s[0].value)
    stale = 1;

  newstate = getstate();
  return (stale || has_chg || newstate != formstate) ? true : false;
}

function check_mod() {
  needToConfirm = false;
  if (has_changed()) {
    r =  confirm("You have unsaved data. Are you sure you want to discard your changes?")
    if (! r)
      needToConfirm = true;
    return r;
  }
  return true;
}

function verify_delete(typedesc) {
  if (typedesc === undefined)
    typedesc = 'information';

  needToConfirm = false;
  var r = confirm('Are you sure you want to delete this ' + typedesc + '?')
  if (! r)
    needToConfirm = true;
  return r;
}
