/**
 * [c]Copyright: newmagic datensysteme gmbH[/c]
 * [a]Autor: Matthias Eipeldauer[/a]
 * [cre]Datum: 25.09.2008[/cre]
 * [desc]
 * Diese Kernel-Datei beinhaltet die Funktionen für Benutzerereignisüberwachung (UI EventHandling)
 * und der Register/Unregister Funktion zur dynamischen Weiterleitung der Ereignisse.
 * [/desc]
 **/


var mm8Events = new Object();

var mm8MouseRightDown  = false;
var mm8MouseLeftDown   = false;
var mm8MouseMiddleDown = false;

// --
// Registers a custom EventHandler function for the given event.
function RegisterEventHandler(event, handler)
{
  if (!mm8Events[event]) mm8Events[event] = [];
  mm8Events[event].push(handler);
}

function HandleMouseMove(EventArgs)
{
  if (mm8IsMSIE && !EventArgs) EventArgs = window.event;
  GlobalHandler("mousemove", EventArgs);
}

function HandleMouseDown(EventArgs)
{
  if (mm8IsMSIE && !EventArgs) EventArgs = window.event;
  mm8MouseRightDown = false;
  mm8MouseMiddleDown = false;
  mm8MouseLeftDown = false;
  switch(EventArgs.button)
  {
    case 0:
      mm8MouseLeftDown = true;
      break;
    case 1:
      mm8MouseMiddleDown = true;
      break;
    case 2:
      mm8MouseRightDown = true;
      break;
  }
  GlobalHandler("mousedown", EventArgs);
}

function HandleMouseUp(EventArgs)
{
  if (mm8IsMSIE && !EventArgs) EventArgs = window.event;
  mm8MouseRightDown = false;
  mm8MouseMiddleDown = false;
  mm8MouseLeftDown = false;
  GlobalHandler("mouseup", EventArgs);
}

function HandleKeyDown(EventArgs)
{
  if (mm8IsMSIE && !EventArgs) EventArgs = window.event;
  GlobalHandler("keydown", EventArgs);
}

function HandleResize(EventArgs)
{
  if (mm8IsMSIE && !EventArgs) EventArgs = window.event;
  GlobalHandler("resize", EventArgs);
}

function GlobalHandler(eventName, EventArgs)
{
  for(handler in mm8Events[eventName])
  {
    try
    {
      mm8Events[eventName][handler](EventArgs);
    }
    catch(ex)
    {
//      alert("unable to handle " + eventName + "->" + mm8Events[eventName][handler]);
//      mm8Events[eventName][handler](EventArgs);
    }
  }
}


function MouseMove(EventArgs)
{
  iPX = document.all ? window.event.clientX : EventArgs.pageX;
  iPY = document.all ? window.event.clientY : EventArgs.pageY;
}

RegisterEventHandler("mousemove", MouseMove);

document.onmousemove = HandleMouseMove;
document.onmousedown = HandleMouseDown;
document.onmouseup   = HandleMouseUp;
document.onkeydown   = HandleKeyDown;
window.onresize    = HandleResize;

mm8Callback("coreEvents.js");
