var cancel = false;
function handleKeyDown(evt) {
  var evt = (evt) ? evt : event; 
  var target = (evt.target) ? evt.target : evt.srcElement; 

  var charCode = (evt.charCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode); 
  if (charCode == 13) {
    //check only form element
    if (typeof(target.form) != "undefined") {
      if (typeof(target.type) == "undefined" ||
         (target.type != 'textarea' &&
          target.type != 'submit'   &&
          target.type != 'button'   &&
          target.type != 'reset'    &&
          target.type != 'image')) {

        if (IS_NS6) cancel = true;
        return cancelEvent(evt);
      }
    }
  }
}

function handleSubmit(evt) {
  evt = (evt) ? evt : event;
  if (cancel) {
    cancel = false;
    return cancelEvent(evt);
  }
}

function handleClick(evt) {
  evt = (evt) ? evt : event;
  var target = (evt.target) ? evt.target : evt.srcElement; 
  if (typeof(target.form) != "undefined") {
    if (cancel) {
      cancel = false;
      return cancelEvent(evt);
    }
  }
}

function cancelEvent(evt) {
  evt.cancelBubble = true;
  if (evt.stopPropagation) evt.stopPropagation();
  return false;
}

// Assign event handlers used by both Navigator and IE
function initEventHandler() {
  if (document.layers) {
    // turn on event capture for these events in NN4 event model
    document.captureEvents(Event.ONKEYDOWN | Event.ONCLICK |  Event.ONSUBMIT);
    return;

  } else if (document.body & document.body.addEventListener) {
    // turn on event capture for these events in W3C DOM event model
    document.addEventListener("onkeydown", handleKeyDown, true);
    return;
  }

  document.onkeydown = handleKeyDown;
  return;
}

function stop(evt) {
  cancel = false;
  return cancel;
}
