// Define global script variables
var bContextKey=false;
var currentID="";
var g_mpid="";
// The fnDetermine function performs most of the work

function fnGetContextID(el) {
  while (el!=null) {
    if (el.contextmenu) return el.contextmenu
    el = el.parentElement
  }
  return ""
}
function fnGetCurrentID(el) {
  while (el!=null) {
    if (el.cid) return el.cid
    el = el.parentElement
  }
  return ""
}


function fnDetermine(){
  oWorkItem=event.srcElement;

  // Proceed if the desired keyboard key is pressed.
  if(bContextKey==true){
    // If the menu STATUS is false, continue.
    if(oContextMenu.getAttribute("status")=="false"){
      // Give the menu mouse capture so it can interact better with the page.
      oContextMenu.setCapture();

      // Relocate the menu to an offset from the mouse position.
      oContextMenu.style.top=event.clientY + document.body.scrollTop + 1;
      oContextMenu.style.left=event.clientX + document.body.scrollLeft +  1;

      oContextMenu.innerHTML="";
      // Set its STATUS to true.
      var sContext = fnGetContextID(event.srcElement);
      var sID = fnGetCurrentID(event.srcElement);
      currentID = sID;
      
      if (sContext!="") {
        fnPopulate(sContext)
        oContextMenu.setAttribute("status","true");
        event.returnValue=false;
      }
      else
        event.returnValue=true
    }
  }
  else{
    // If the keyboard key was not pressed and the menu status is true, continue.
    if(oContextMenu.getAttribute("status")=="true"){
      if((oWorkItem.parentElement.id=="oContextMenu") &&
        (oWorkItem.getAttribute("component")=="menuitem")){
        fnFireContext(oWorkItem)
      }

      // Reset the context menu, release mouse capture, and hide it.  
      oContextMenu.style.display="none";
      oContextMenu.setAttribute("status","false");
      oContextMenu.releaseCapture();
      oContextMenu.innerHTML="";
      event.returnValue=false;
    }
  }
}
    

function fnPopulate(sID) {
  var str=""
  var elMenuRoot = document.all.contextDef.XMLDocument.childNodes(0).selectSingleNode('contextmenu[@id="' + sID + '"]')
  if (elMenuRoot) {
    for(var i=0;i<elMenuRoot.childNodes.length;i++)
      str+='<span component="menuitem" menuid="' + 
            elMenuRoot.childNodes[i].getAttribute("id") + 
            '" id=oMenuItem' + i + '>' +  
            elMenuRoot.childNodes[i].getAttribute("value") + 
            "</SPAN><BR>"
    oContextMenu.innerHTML=str;
    oContextMenu.style.display="block";
    oContextMenu.style.pixelHeight = oContextMenu.scrollHeight    
  }
}

function fnChirpOn(){
  if((event.clientX>0) &&
     (event.clientY>0) &&
     (event.clientX<document.body.offsetWidth) &&
     (event.clientY<document.body.offsetHeight)){
    oWorkItem=event.srcElement;
    if(oWorkItem.getAttribute("component")=="menuitem"){
      oWorkItem.className = "selected"
    }
  }
}
function fnChirpOff(){
  if((event.clientX>0) &&
     (event.clientY>0) &&
     (event.clientX<document.body.offsetWidth) &&
    (event.clientY<document.body.offsetHeight)){
    oWorkItem=event.srcElement;
    if(oWorkItem.getAttribute("component")=="menuitem"){
      oWorkItem.className = ""
    }
  }
}

function fnInit(){
  if (oContextMenu) {
    oContextMenu.style.width=110;
    oContextMenu.style.height=document.body.offsetHeight/2;
    oContextMenu.style.zIndex=2;
    // Setup the basic styles of the context menu.
    document.oncontextmenu=fnSuppress;
  }
}

function fnInContext(el) {
  while (el!=null) {
    if (el.id=="oContextMenu") return true
    el = el.offsetParent
  }
  return false
}

function fnSuppress(){
  if (!(fnInContext(event.srcElement))) { 
    oContextMenu.style.display="none";
    oContextMenu.setAttribute("status","false");
    oContextMenu.releaseCapture();
    bContextKey=true;
  }

  fnDetermine();
  bContextKey=false;
}

function fnFireContext(oItem) {
  // Customize this function based on your context menu
  switch (oItem.menuid) {
    case "bearbeiten":
        // Inhalt bearbeiten
        editContent(currentID, '-1');
      break;
    case "create":
      // Neuen Inhalt anlegen
      editContent('0',g_mpid);
      break;
    case "delete":
      deleteContent(currentID);
      break;
    case "rights":
      var rl="";
      rl=getRightLink(currentID);
      
      break;
    default:
      alert("Selected:\nID: " + oItem.menuid)
  }
}



