
var treeItemTextColor           = "#4d4d4d";
var treeItemTextColorOpen       = "#ff6b08";   
var treeItemBackground          = "#ffffff";
var treeItemBackgroundHover     = "#ff6b08";
var treeItemBackgroundOpen      = "#fefefe";              // This currently MUST not be the same color as treeItemBackgroundHover!
var treeItemBackgroundOpenRGB   = "rgb(254, 254, 254)";   // Different syntax but SAME color as treeItemBackgroundOpen


var lastOpenedTreeItem = "";
var lastEditedTreeItem = "";
var inhibitClosingTreeItem = false;

var isAnyIE = false;
if (navigator.userAgent)
{
    if (navigator.userAgent.search(/MSIE/) != -1)
    {
        if (!window.opera) isAnyIE = true;
    }
}

function openTreeNode( treeNode )
{
    if ( treeNode )
    {
        document.getElementById(treeNode + "_content").style.display = "block";
        document.getElementById(treeNode + "_open").style.display = "none";
        document.getElementById(treeNode + "_close").style.display = "block";
    }
}

function closeTreeNode( treeNode )
{
    if ( treeNode )
    {
        document.getElementById(treeNode + "_content").style.display = "none";
        document.getElementById(treeNode + "_open").style.display = "block";
        document.getElementById(treeNode + "_close").style.display = "none";
    }
}

function toggleTreeItemDetails( treeItem )
{
    // close last open entry
    if ( lastOpenedTreeItem != "" && lastOpenedTreeItem != treeItem )
    {
        var lastOpenedTreeItemDetails = lastOpenedTreeItem.getElementsByTagName("div")[1];
        lastOpenedTreeItemDetails.style.display = "none";
        lastOpenedTreeItem.style.backgroundColor = treeItemBackground;
        lastOpenedTreeItem.style.color = treeItemTextColor;
        lastOpenedTreeItem.style.fontWeight = "normal";
    }

    // toggle current entry
    var treeItemDetails = treeItem.getElementsByTagName("div")[1];
    if ( ( treeItemDetails.style.display != "none" && treeItemDetails.style.display != "block" ) || treeItemDetails.style.display == "none" || treeItemDetails.style.display == "" )
    {
        treeItemDetails.style.display = "block";
        treeItem.style.backgroundColor = treeItemBackgroundOpen;
        treeItem.style.color = treeItemTextColorOpen;
        treeItem.style.fontWeight = "bold";

        lastOpenedTreeItem = treeItem;

        var xmlPath = window.location.toString();
        xmlPath = xmlPath.replace(/html/, "xml");
        sendAjaxRequest( xmlPath, "GET", null, treeItemDetails.id, "document", treeItemDetails.id );
    }
    else if ( treeItemDetails.style.display == "block" )
    {
        if ( !inhibitClosingTreeItem )
        {
            treeItemDetails.style.display = "none";
            treeItem.style.backgroundColor = treeItemBackground;
            treeItem.style.color = treeItemTextColor;
            treeItem.style.fontWeight = "normal";
        }
    }
    clearSelection();
}

function overTreeItemDetails( treeItem ) {
    if ( (treeItem.style.backgroundColor != treeItemBackgroundOpen) && (treeItem.style.backgroundColor != treeItemBackgroundOpenRGB) )
    {
        treeItem.style.backgroundColor = treeItemBackgroundHover;
    }
}

function outTreeItemDetails( treeItem ) {
      if ( (treeItem.style.backgroundColor != treeItemBackgroundOpen) && (treeItem.style.backgroundColor != treeItemBackgroundOpenRGB) )
      {
          treeItem.style.backgroundColor = treeItemBackground;
      }
}

function overTreeItemFiles() {
    inhibitClosingTreeItem = true;
}

function outTreeItemFiles() {
    inhibitClosingTreeItem = false;
}

function clearSelection() {
    var sel;
    if(window.getSelection)
    {
        sel = window.getSelection();
        if (sel && sel.removeAllRanges)
        sel.removeAllRanges() ;
    }
}

/* ----- only for backend ----- */

function deleteEntry( nodeID, hasChildren ) {
  var nodeFullName = document.getElementById( "treeNodeName_" + nodeID ).firstChild.data;
  if ( document.getElementById( "treeNodeSynonyms_" + nodeID ) )
  {
    nodeFullName += " (";
    nodeFullName += document.getElementById( "treeNodeSynonyms_" + nodeID ).firstChild.data;
    nodeFullName += ")";
  }

  // highlighting of entry ON:
  lastEditedTreeItem = nodeID;
  document.getElementById("treeNodeTitle_" + nodeID).style.color = "#ffffff";
  document.getElementById("treeNodeTitle_" + nodeID).style.background = "#666666";

  var check;
  if ( hasChildren && hasChildren == "true" )
    check = confirm("Wollen Sie die Leistung\n\n\"" + nodeFullName + "\"\n\nMIT ALLEN EINTRÄGEN wirklich löschen?\n ");
  else
    check = confirm("Wollen Sie die Leistung\n\n\"" + nodeFullName + "\"\n\nwirklich löschen?\n ");

  var url = "?command=servicedelete&nocommandticket=true&class=kreishandwerkerschaften.view.admin.LeistungDeletePage&responseType=xml&id=" + nodeID;
  if (check == true)
  {
    sendAjaxRequest( url, 'GET', '', '', '', '' );
    document.getElementById("treeNodeTitle_" + lastEditedTreeItem).style.textDecoration = "line-through";
    document.getElementById("treeNodeTitle_" + lastEditedTreeItem).style.color = "#808080";
  }
  else
  {
    // highlighting of entry OFF:
    document.getElementById("treeNodeTitle_" + lastEditedTreeItem).style.color = "#000000";
  }
  // highlighting of entry OFF:
  document.getElementById("treeNodeTitle_" + lastEditedTreeItem).style.background = "transparent";
}

function openEditMask( nodeID, isNewEntry, titleNotEditable ) {
  document.getElementById("treeEditMaskCover").style.display = "block";
  document.getElementById("treeEditMask").style.display = "block";

  // highlighting of entry ON:
  lastEditedTreeItem = nodeID;
  document.getElementById("treeNodeTitle_" + nodeID).style.color = "#ffffff";
  document.getElementById("treeNodeTitle_" + nodeID).style.background = "#666666";

  if ( titleNotEditable == true ) {
      document.forms["treeEditMaskForm"].elements["name"].readOnly = true;
      document.getElementById("treeEditName").style.background = "#dddddd";
  } else {
      document.forms["treeEditMaskForm"].elements["name"].readOnly = false;
      document.getElementById("treeEditName").style.background = "#ffffff";
  }

  if ( !isNewEntry ) {
    var nodeName = document.getElementById("treeNodeName_" + nodeID).firstChild.data;
    var nodeSynonyms;
    if ( document.getElementById("treeNodeSynonyms_" + nodeID) ) {
      nodeSynonyms = document.getElementById("treeNodeSynonyms_" + nodeID).firstChild.data;
    } else {
      nodeSynonyms = "";
    }
    document.forms["treeEditMaskForm"].elements["id"].value = nodeID;
    document.forms["treeEditMaskForm"].elements["name"].value = nodeName;
    document.forms["treeEditMaskForm"].elements["aliases"].value = nodeSynonyms;
    document.forms["treeEditMaskForm"].elements["class"].value = "kreishandwerkerschaften.view.admin.ServiceEditPage";
    document.forms["treeEditMaskForm"].elements["command"].value = "serviceedit";
    document.forms["treeEditMaskForm"].elements["parentid"].value = "";
  } else {
    document.forms["treeEditMaskForm"].elements["name"].value = "";
    document.forms["treeEditMaskForm"].elements["aliases"].value = "";
    document.forms["treeEditMaskForm"].elements["class"].value = "kreishandwerkerschaften.view.admin.ServiceAddPage";
    document.forms["treeEditMaskForm"].elements["command"].value = "serviceadd";
    document.forms["treeEditMaskForm"].elements["parentid"].value = nodeID;
    if ( !isAnyIE ) document.getElementById("treeEditName").focus();
  }
  setEditMaskSubmitState();
}

function closeEditMask() {
  document.getElementById("treeEditMaskCover").style.display = "none";
  document.getElementById("treeEditMask").style.display = "none";

  // highlighting of entry OFF:
  document.getElementById("treeNodeTitle_" + lastEditedTreeItem).style.color = "#000000";
  document.getElementById("treeNodeTitle_" + lastEditedTreeItem).style.background = "transparent";
}

function submitEditMask() {
  submitFormAjaxPost( 'treeEditMaskForm' );
  closeEditMask();
}

function setEditMaskSubmitState() {
  if ( document.forms["treeEditMaskForm"].elements["name"].value == "" )
  {
    document.forms["treeEditMaskForm"].elements["submitInput"].disabled = true;
    if ( !isAnyIE ) document.getElementById("submitInput").focus();  
  }
  else
    document.forms["treeEditMaskForm"].elements["submitInput"].disabled = false;
}

