﻿function getEvent(eventobj) {
  if (eventobj.stopPropagation) {
    eventobj.stopPropagation();
    eventobj.preventDefault();

    return eventobj;
  }
  else {
    window.event.returnValue = false;
    window.event.cancelBubble = true;

    return window.event;
  }
}

function RGMouseOver() {
  var evt = getEvent(window.event);
  if (evt.srcElement) {
    evt.srcElement.style.cursor = "hand";
  }
  else if (evt.target) {
    evt.target.style.cursor = "pointer";
  }
}

function RGGetLeft(obj) {
  var x = 0;

  while (obj) {
    x += obj.offsetLeft;
    obj = obj.offsetParent;
  }

  return x;
}

function RGGetTop(obj) {
  var y = obj.offsetHeight;

  while (obj) {
    y += obj.offsetTop;
    obj = obj.offsetParent;
  }

  return y;
}

function RGOpenMenu(menuName) {
  var evt = getEvent(window.event);
  var target, newMenu;

  if (!document.getElementById) {
    throw ('ERROR: missing getElementById');
    return false;
  }

  if (evt.srcElement)
    target = evt.srcElement;
  else if (evt.target)
    target = evt.target;
  else {
    throw ('ERROR: missing event target');
    return false;
  }

  newMenu = document.getElementById(menuName);

  if (window.RGMenu && window.RGMenu.id != newMenu.id) {
    RGCloseMenu();
  }

  window.RGMenu = newMenu;

  if (!window.RGMenu.style) {
    throw ('ERROR: missing style');
    return false;
  }

  if (RGMenu.style.display == "none") {
    var x = RGGetLeft(target);

    if (document.documentElement) {
      if (x + RGMenu.offsetWidth > document.documentElement.offsetWidth - 20)
        x += target.offsetWidth - RGMenu.offsetWidth;
    }

    //RGMenu.style.left = x + "px";
    RGMenu.style.right = "0px";
    RGMenu.style.top = RGGetTop(target) + "px";
    RGMenu.style.display = "block";
    RGMenu.style.zIndex = 100;
  }
  else {
    RGCloseMenu();
  }

  return false;
}

function RGCloseMenu() {
  if (window.RGMenu) {
    window.RGMenu.style.display = "none";
    window.RGMenu = null;
  }
}

function mouseRGHover(cell, hover) {
  if (hover) {
    cell.className = "menu-item-hover menu-text";
  }
  else {
    cell.className = "menu-item menu-text";
  }
}

function mouseContainerHover(cell, hover, newBackground) {
  if (hover) {
    cell.className = "menu-container-hover";
  }
  else {
    cell.className = "menu-container";
  }

  if (newBackground != "") {
    cell.style.backgroundImage = "url('" + newBackground + "')";
  }
}

function SwapStyle(itemID, newCSS, newBackground) {
  var item = document.getElementById(itemID);

  if (item != undefined) {
    item.className = newCSS;

    if (newBackground != "") {
      item.style.backgroundImage = "url('" + newBackground + "')";
    }
  }
}

//Add the event handler.
if (document.addEventListener) document.addEventListener("mouseover", function(e) { window.event = e; }, true);
