// POSSE Extension Functions

// cross-browser function to get an object's style object given its id
function getStyleObject(objectId) {
  if(document.getElementById && document.getElementById(objectId)) {
    // W3C DOM
    return document.getElementById(objectId).style;
  } else if (document.all && document.all(objectId)) {
    // MSIE 4 DOM
    return document.all(objectId).style;
  } else if (document.layers && document.layers[objectId]) {
    // NN 4 DOM.. note: this won't find nested layers
    return document.layers[objectId];
  } else {
    return false;
  }
} 

// get a reference to the cross-browser style object and make sure the object exists
function changeObjectVisibility(objectId, newVisibility) {
  var styleObject = getStyleObject(objectId);
  if(styleObject) {
    styleObject.visibility = newVisibility;
    return true;
  } else {
    // we couldn't find the object, so we can't change its visibility
    return false;
  }
}

// get a reference to the cross-browser style object and make sure the object exists
function moveObject(objectId, newXCoordinate, newYCoordinate) {
  var styleObject = getStyleObject(objectId);
  if(styleObject) {
    styleObject.left = newXCoordinate;
    styleObject.top = newYCoordinate;
    return true;
  } else {
    // we couldn't find the object, so we can't very well move it
    return false;
  }
}

function getPosX(obj)
{
  var curleft = 0;
  if (obj.offsetParent)
  {
    while (obj.offsetParent)
    {
      curleft += obj.offsetLeft
      obj = obj.offsetParent;
    }
  }
  else if (obj.x)
    curleft += obj.x;
  return curleft;
}

function getPosY(obj)
{
  var curtop = 0;
  if (obj.offsetParent)
  {
    while (obj.offsetParent)
    {
      curtop += obj.offsetTop
      obj = obj.offsetParent;
    }
  }
  else if (obj.y)
    curtop += obj.y;
  return curtop;
}

function getWidth(obj)
{
  return obj.offsetWidth;
}

function getHeight(obj)
{
  return obj.offsetHeight;
}


// This section handles the timeout
var timerID;
function startTimer() {
  timerID = window.setTimeout("hideAll()",500);
  return timerID;
}

function stopTimer(timerID) {
  window.clearTimeout(timerID);
}


// This section handles the dynamic display of rollover menu items.
function showMenu(objectId, srcObject) {
  var top, left;

  stopTimer(timerID);
  left = getPosX(srcObject)+getWidth(srcObject);
  top = getPosY(srcObject);
  moveObject(objectId, left, top);
  changeObjectVisibility(objectId, "visible");
}

function hideMenu(objectId) {
  try {
    changeObjectVisibility(objectId, "hidden");
  } catch (err) {
    // ignore possible error when page isn’t completely rendered yet
  }
}

function hideAll() {
  hideMenu("InsertProcess");
}

var __nonMSDOMBrowser = (window.navigator.appName.toLowerCase().indexOf('explorer') == -1);

function FireDefaultButton(event, target) {
    if (event.keyCode == 13 && !(event.srcElement && (event.srcElement.tagName.toLowerCase() == "textarea"))) {
        var defaultButton;
        if (__nonMSDOMBrowser) {
            defaultButton = document.getElementById(target);
        }
        else {
            defaultButton = document.all[target];
        }
        if (defaultButton && ((typeof(defaultButton.click) != "undefined") || (typeof(defaultButton.href) != "undefined"))) {
            if (event.target && event.target.tagName.toLowerCase() == "input" && event.target.onchange) {
                if (!event.target.onchange()) {
                    // Return and cancel additional key processing
                    return false;
                }
            }
            // In IE, we are passed a srcElement instead of a target
            else if (event.srcElement && event.srcElement.tagName.toLowerCase() == "input" && event.srcElement.onchange) {
                if (!event.srcElement.onchange())
                {
                    // Return and cancel additional key processing
                    return false;
                }
            }
            if (typeof(defaultButton.click) != "undefined")
                defaultButton.click();
            else if (typeof(defaultButton.href) != "undefined")
                location.replace(defaultButton.href);
                
            event.cancelBubble = true;
            if (event.stopPropagation) event.stopPropagation();
            return false;
        }
    }
    return true;
}
