/**
* (c) InfoProjects bv. - www.infoprojects.nl
*
* $Revision: 1.174 $
* $Date: 2011/07/14 10:03:05 $
*/


/** DialogWindow loading */
var dialogBusy;

var escKeyMode = false;
var escKeyMenu = 0;
var escKeyItem = -1;
var orgColor = "";

var msgTimer;
var blinkTimer;
var mnuTimer;
var togTimer;
var preview;
var help;
var keyButtons = new Array();

var redcoll = new Object();

var titleBarSize = 24;
var edgeSize = 5;

var inSearchResults = false;
var doFixSelects = false;

var reqBusy = new Object();
var reqQueue = new Object();
var reqQueueTimer;
var reqObj;
var curReq;

/**
*
* Go To Page
*
* @param arguments for URL to open
*
*/

function goPage() {
  setTrafficStatus(true);
  var goUrl = goPage.arguments.length == 1 ? makeUrlFromArray(goPage.arguments[0], iprox_get) : makeUrlFromArray(goPage.arguments, iprox_get);
  document.location = goUrl;
}

function goFrame(url, target) {
  var currentIFrame = document.getElementById(target);
  if (currentIFrame)
    currentIFrame.src = url;
  return false;
}

var curSelSitElseArray = new Array();
var setSelectable = false;
function changeSelSit(obj, setArr, elseArr) {
  curSelSitElseArray = elseArr ? elseArr : curSelSitElseArray;

  var selVal = obj.options[obj.selectedIndex].value;
  if (selVal.indexOf("SitSetIdt_") == 0 && setSelectable) {
    var SitSetIdt = selVal.substring(10, selVal.length);
    var goArgs = addArrayToArray(new Array("SitSetIdt", SitSetIdt), curSelSitElseArray);
    goPage(goArgs);
  }
  if (selVal == "Root" && setSelectable) {
    var goArgs = curSelSitElseArray;
    goPage(goArgs);
  }
  else if (selVal.indexOf("SitSetIdt_") == 0) {
    var SitSetIdt = selVal.substring(10, selVal.length);
    queueReq("SilentFrame", makeUrlFromArray(addArrayToArray(new Array("SitSetIdt", SitSetIdt), setArr), iprox_get));
  }
  else if (selVal == "Root") {
    queueReq("SilentFrame", makeUrlFromArray(setArr, iprox_get));
  }
  else if (curSelSitElseArray.length && curSelSitElseArray.length > 0) {
    var goArgs = addArrayToArray(new Array("SitIdt", selVal), curSelSitElseArray);
    goPage(goArgs);
  }
}

function newPage() {
  window.open(makeUrlFromArray(newPage.arguments, iprox_get), "preview", "width=" + document.body.clientWidth + ",height=" + document.body.clientHeight + ",scrollbars=yes,toolbar=yes,location=yes,resizable=yes,status=yes");
}

var viewWindowProps = "menubar=yes,scrollbars=yes,toolbar=yes,location=yes,resizable=yes,status=yes";

function viewPageXY(prvArr, prvWid, prvHei) {
  if (viewWindowProps.indexOf("width=") == -1 && viewWindowProps.indexOf("height=") == -1) {
    viewWindowProps += ",width=" + prvWid + ",height=" + prvHei;
  }
  viewPage(prvArr);
}

function viewPage() {
  var previewUrl = viewPage.arguments.length == 1 ? makeUrlFromArray(viewPage.arguments[0], iprox_get) : makeUrlFromArray(viewPage.arguments, iprox_get);
  try {
    preview = refererWindow ? refererWindow.open(previewUrl, "preview", viewWindowProps) : window.open(previewUrl, "preview", viewWindowProps);
    preview.focus();
  }
  catch (e) {
    refererWindow ? refererWindow.open(previewUrl, "preview", viewWindowProps) : window.open(previewUrl, "preview", viewWindowProps);
  }
}

function viewHelp(url) {
  window.open(url, "help");
  return false;
}

/**
*
* Open New Window
*
* @param arguments for URL to open
*
* @return false or window
*
*/

var editWindow;
function openWindow() {
  var defaultSizes = false;
  try {
    if (editWindow && !editWindow.closed) {
      dX = parseInt(editWindow.screenLeft, 10);
      dY = parseInt(editWindow.screenTop, 10);
      editWindow.close();
    }
    else defaultSizes = true;
  }
  catch (e) {
    defaultSizes = true;
  }

  if (defaultSizes) {
    dX = 0;
    dY = 0;
    dW = parseInt(screen.availWidth, 10) - 12;
    dH = parseInt(screen.availHeight, 10) - 56;
  }

  url = (openWindow.arguments[0].indexOf("?") != -1) ? openWindow.arguments[0] : makeUrlFromArray(openWindow.arguments, iprox_get);
  editWindow = window.open(url, "editWindow", "width=" + dW + ",height=" + dH + ",left=" + dX + ",top=" + dY + ",scrollbars=yes,toolbar=no,location=no,resizable=yes,status=yes,maximized=yes");
}

/**
* Wrapper functie om een dialoog te openen en het
* object dat meegegeven wordt als eerste argument
* wordt dan vet
*/
var curOpenDialogAndHighlightObj = null;

function openDialogAndHighlight() {
  var obj = openDialogAndHighlight.arguments[0];
  openDialog.apply(this, openDialogAndHighlight.arguments[1]);
  if (curOpenDialogAndHighlightObj && curOpenDialogAndHighlightObj.style) {
    curOpenDialogAndHighlightObj.style.fontWeight = 'normal';
  }
  if (obj.style) {
    obj.style.fontWeight = 'bold';
    curOpenDialogAndHighlightObj = obj;
  }
}

/**
*
* Open Modeless Dialog Window
*
* @param arguments for URL to open
*
* @return false or window
*
*/

var openBase = self;
var actionBase = self;
var modelessDialogTimer;

var currentDialogID = null;
var parentDialogID = null;

function openDialog() {
  returnFlag = false;
  if (modelessDialogTimer) clearTimeout(modelessDialogTimer);

  dX = parseInt(top.document.body.clientWidth, 10) - 500 + parseInt(top.window.screenLeft, 10);
  dY = parseInt(top.window.screenTop, 10) - 12;

  url = (openDialog.arguments[0].indexOf("?") != -1) ? openDialog.arguments[0] : makeUrlFromArray(openDialog.arguments, iprox_get);
  var id = createDialogWindowInFrame(true);
  modelessDialogTimer = window.setTimeout('doOpenDialog("' + id + '","' + url + '");', 360);
}

/**
*
* Create the HTML for a dialog
*
* @param closePrev : close previous dialog
*
*/
var dialogStack = new Array();
var dialogStackMoved = new Object();
var requiredDialogStack = new Object();
var curZIndex = 100;

function createDialogWindowInFrame(closePrev) {
  if (closePrev && top.dialogStack.length > 0) {
    var prevId = (top.dialogStack.length - 1);
    closeDialog(prevId);
  }

  var nmbr = top.dialogStack.length;

  top.parentDialogID = currentDialogID;
  top.currentDialogID = nmbr;

  top.dialogStack[nmbr] = 'Dialog_' + nmbr;

  var box = document.getElementById('NextDialog');

  var htmlString = '' +
  '<div>' +
    '<div id="Dialog_' + nmbr + '" class="Dialog hidden">' +
      '<div id="DialogTitleBar_' + nmbr + '" class="DialogTitleBar">' +
        '<div id="DialogTitleText_' + nmbr + '" class="DialogTitleText">Dialoog</div>' +
        '<div id="DialogMinMax" class="DialogMinMax">' +
          '<a href="javascript:void(0);" onclick="return window.frames[&quot;DialogFrame_' + nmbr + '&quot;].openScreenHelp();">' +
            '<img alt="Help" src="' + iprox_client_home + 'images/icons/win_Help.gif" />' +
          '</a>&#160;&#160;&#160;' +
          '<a href="javascript:void(0);" onclick="closeDialog(' + nmbr + ');">' +
            '<img src="' + iprox_client_home + 'images/icons/win_Close.gif" />' +
          '</a>' +
        '</div>' +
      '</div>' +
      '<iframe id="DialogFrame_' + nmbr + '" name="DialogFrame_' + nmbr + '" style="border:0px;" frameborder="0" src="" scrolling="no"></iframe>' +
    '</div>' +
    '<div id="NextDialog"></div>' +
  '</div>';

  setOuterHTML(box, createDOM(htmlString));

  if (getElt('Dialog_' + nmbr))
    getElt('Dialog_' + nmbr).style.zIndex = (curZIndex++);

  return nmbr;
}

function doOpenDialog(id, url) {
  if (modelessDialogTimer) {
    clearTimeout(modelessDialogTimer);
  }
  setTrafficStatus(true, openBase);
  goFrame(url, "DialogFrame_" + id);
}

var dialogHidden = false;

/**
*
* Collapse the dialog and only show the titlebar
*
* @param obj
* @param id
* @param bool
*
*/
function hideDialog(obj, id, bool) {
  dialogHidden = bool;

  if (bool) {
    var dialogHeight = getEltHeight(getElt("DialogTitleBar_" + id));
    setEltHeight(getElt("Dialog_" + id), dialogHeight);
    setEltDisplay(getElt("DialogFrame_" + id), "none");
    obj.innerHTML = '<img src="' + iprox_client_home + 'images/icons/win_Maximize.gif" />';
  } else {
    setEltDisplay(getElt("DialogFrame_" + id), "block");
    showDialog();
    obj.innerHTML = '<img src="' + iprox_client_home + 'images/icons/win_Minimize.gif" />';
  }

  obj.onclick = function() {
    hideDialog(obj, id, !bool);
  };
}

/**
*
* Close the dialog
*
* @param id
*
*/
function closeDialog(id) {
  var curId = id;
  if (!id) {
    curId = top.currentDialogID;
  }
  if (curOpenDialogAndHighlightObj && curOpenDialogAndHighlightObj.style) {
    curOpenDialogAndHighlightObj.style.fontWeight = 'normal';
  }
  showModalBackground(false);
  setEltDisplay(getElt("Dialog_" + curId), "none");
  setEltVisibility(getElt("Dialog_" + curId), "hidden");
  deleteDialogWindowInFrame(curId);
  onResize(null);
  onScroll(null);
}

function deleteDialogWindowInFrame(id) {
  top.requiredDialogStack['Dialog_' + id] = null;
  top.dialogStack.splice(id, 1);
  top.dialogStackMoved[id] = false;
  var curDialogElt = getElt(('Dialog_' + id));
  if (!is.opera) {
    // TODO: wil niet echt werken in Opera
    // gaat om het verwijderen van de dialoog-DIV
    setOuterHTML(curDialogElt, null);
  }
  top.currentDialogID = top.parentDialogID;
  top.parentDialogID = ((top.parentDialogID - 1) >= 0) ? (top.parentDialogID - 1) : null;
  if (top.parentDialogID == null) {
    inDialog = false;
  }
}

/**
*
* Show the newest created dialog
*
* @param id
*
*/
var rightDialogMargin = 25;
var topDialogMargin = 35;
var fixHeight = 51;
var dialogFitInside = false;

function showDialog(id, again) {
  try {
    var curId = id;
    if (!id) {
      curId = top.currentDialogID;
    }
    setEltDisplay(getElt("Dialog_" + curId), "block");
    setEltVisibility(getElt("Dialog_" + curId), "visible");

    var dialogHeight = 0;
    if (!dialogHidden) {
      var curIFrame = top.getFrame("DialogFrame_" + curId);
      if (curIFrame) {
        docInIframe = top.getFrameDocument("DialogFrame_" + curId);
        dialogHeight = docInIframe.body.scrollHeight;

        setEltHeight(getElt("DialogFrame_" + curId), dialogHeight + rightDialogMargin);
        if (!top.dialogFitInside && (getWindowInnerHeight() > (dialogHeight + rightDialogMargin + 25)))
          top.dialogFitInside = true;

        var theHandle = document.getElementById('DialogTitleBar_' + curId);
        var theRoot = document.getElementById('Dialog_' + curId);
        var windowWidth = getWinWidth() - getEltWidth(getElt("Dialog_" + curId)) - rightDialogMargin;
        var windowHeight = (getWindowInnerHeight() - (rightDialogMargin + 25) > (dialogHeight + fixHeight)) ?
          ((getWindowInnerHeight() - (dialogHeight + fixHeight)) - (rightDialogMargin + 25)) : null;
        Drag.init(theHandle, theRoot, 0, windowWidth, topDialogMargin, windowHeight);
      }
    } else {
      dialogHeight = getEltHeight(getElt("DialogTitleBar_" + curId));
    }

    var thisDialogWindow = getElt("Dialog_" + curId);
    setEltHeight(thisDialogWindow, dialogHeight + fixHeight);

    if (!top.dialogFitInside && (getWindowInnerHeight() > (dialogHeight + rightDialogMargin + 25)))
      top.dialogFitInside = true;

    if (top.dialogFitInside && !is.ie6) {
      setEltPosition(thisDialogWindow, 'fixed');
    } else {
      setEltPosition(thisDialogWindow, 'absolute');
    }

    for (var i = 0; i < top.dialogStack.length; i++) {
      // reposition the dialog-window stack
      var diffTop = (i > 0) ? ((i + 1) * topDialogMargin) : topDialogMargin;
      var diffRight = (i > 0) ? ((i + 1) * rightDialogMargin) : rightDialogMargin;
      if (!top.dialogStackMoved["Dialog_" + i] || top.dialogStack.length == 1) {
        var rePositionDialogWindow = getElt("Dialog_" + i);
        setEltTop(rePositionDialogWindow, dialogFitInside ? diffTop : getWinScrollTop() + diffTop);
        setEltLeft(rePositionDialogWindow, getWinWidth() - getEltWidth(rePositionDialogWindow) - diffRight);
      }
    }

    if (getFrame("DialogFrame_" + curId) && getFrameDocument("DialogFrame_" + curId)) {
      setEltVisibility(getFrameDocument("DialogFrame_" + curId).body, "visible");
    }
  }
  catch (e) {
    if (!again) {
      window.setTimeout("showDialog('" + id + "',true)", 10);
    }
  }
}


/**
*
* Open Modal Dialog Window for HTML editbar
*
* @propArgs arguments for URL to open
*
* @return false or window
*
*/

function showPropDialog(propArgs) {
  returnFlag = false;
  if (openBase.dialogBusy) return false;

  var currentParent = top;

  var defaultSizes = false;
  var dX;
  var dY;
  try {
    if (openBase.propWindow && !openBase.propWindow.closed) {
      dX = parseInt(openBase.propWindow.screenLeft, 10) - edgeSize;
      dY = parseInt(openBase.propWindow.screenTop, 10) - titleBarSize;
      openBase.propWindow.close();
    }
    else defaultSizes = true;
  }
  catch (e) {
    defaultSizes = true;
  }

  if (defaultSizes) {
    dX = parseInt(document.body.clientWidth, 10) - 500 + parseInt(openBase.screenLeft, 10);
    dY = 50 + parseInt(openBase.screenTop, 10);
  }

  setTrafficStatus(true);
  var url = propArgs[0] ? (propArgs[0].indexOf("?") != -1 ? propArgs[0] : makeUrlFromArray(propArgs, iprox_get)) : propArgs;

  return currentParent.openModalDialog(url);
}

function openModalDialog(url) {
  var id = createDialogWindowInFrame(false);
  showModalBackground(true);
  return window.setTimeout('doOpenDialog("' + id + '","' + url + '");', 0);
}

function setTrafficStatus(status, obj) {
  busyObj = obj ? obj : top;
  busyObj.dialogBusy = status;
  if (status) {
    document.body.style.cursor = 'progress';
  } else {
    document.body.style.cursor = 'default';
  }
  if (status && getElt("Traffic_busy") != null) {
    setEltDisplay(getElt("Traffic_busy"), "block");
    setEltDisplay(getElt("Traffic_ready"), "none");
  }
  else if (getElt("Traffic_busy") != null) {
    setEltDisplay(getElt("Traffic_busy"), "none");
    setEltDisplay(getElt("Traffic_ready"), "block");
  }
  if (getElt("Header") != null) {
    setEltClass(getElt("Header"), (status ? "headerBusy" : "header"));
  }
}

var lastMin = null;
function toggleItem(obj, ref, fr) {
  lastDocBodyScrollHeight = parseInt(document.body.scrollHeight, 10);
  var imgId = 'ToggleImg_' + ref;
  if (hasEltClass(obj, "toggleMin")) {
    replaceEltClass(obj, "toggleMin", "togglePlus");
    toggleImg(imgId, '+');
    setEltDisplay(getElt(ref), "none");
    if (ref) {
      $('.inherit_'+ref).hide();
    }
    if (inSubwindow) {
      window.setTimeout("resizeWindow()", 128);
    }
    else if (inDialog) {
      window.setTimeout("resizeDialog()", 128);
    }
  }
  else if (hasEltClass(obj, "togglePlus")) {
    replaceEltClass(obj, "togglePlus", "toggleMin");
    toggleImg(imgId, '-');
    lastMin = obj;
    setEltDisplay(getElt(ref), "block");
    if (ref) {
      $('.inherit_'+ref).show();
    }
    if (!hasInnerNodes(getElt(ref)) || fr) {
      if (!fr) setInnerHTML(getElt(ref), '<marquee style="width:32px;padding:2px;"><b>...</b></marquee>');
      else setInnerHTML(getElt(ref), '<marquee><b> ... </b></marquee>');
      reqRef = fr ? fr : "HiddenFrame";
      queueReq(reqRef, obj.getAttribute("expandsrc"));
    }
    else {
      if (inSubwindow) {
        window.setTimeout("resizeWindow()", 128);
      }
      else if (inDialog) {
        window.setTimeout("resizeDialog()", 128);
      }
    }
  }
  try {
    createOverlays();
  }
  catch (e) { }

  if (getElt("Cookie." + ref) != null) {
    getElt("Cookie." + ref).value = obj.className;
  }
}

function toggleImg(id, type) {
  if (getElt(id) == null || getElt(id).src == null) {
    return;
  }
  if (type == '-') {
    getElt(id).src = getElt(id).src.replace('_plus', '_min');
    getElt(id).className = getElt(id).className.replace('ToggleImgPlus', 'ToggleImgMin');
  }
  else if (type == '+') {
    getElt(id).src = getElt(id).src.replace('_min', '_plus');
    getElt(id).className = getElt(id).className.replace('ToggleImgMin', 'ToggleImgPlus');
  }
  else {
    getElt(id).src = getElt(id).src.replace('toggle_(min|plus)$', 'transp.gif');
    getElt(id).className = getElt(id).className.replace('ToggleImg(Min|Plus)', 'ToggleImgNormal');
  }
}

function checkKey() {
  if (window.event && window.event.keyCode == 13) {
    var BoxId = window.event.srcElement.id;
    if (getElt("Btn_" + BoxId) != null) clickElt(getElt("Btn_" + BoxId));
    else if (getElt("ZoekBtn") != null) clickElt(getElt("ZoekBtn"));
    return false;
  }
  else return true;
}

function applySort() {
  submitForm();
}

function clearZoek() {
  var form = document.forms[0];
  for (var i = 0; i < form.elements.length; i++) {
    var obj = form.elements[i];
    if (obj.id && obj.id.indexOf("Zoe") == 0) var searchFormElement = obj;
    else continue;

    if (searchFormElement.type == "text") {
      searchFormElement.value = "";
    }
    else if (searchFormElement.type == "select-one") {
      searchFormElement.options[0].selected = true;
    }
    else if (searchFormElement.type == "checkbox") {
      searchFormElement.checked = false;
    }
  }
}

function startZoek(appIdt, mode) {
  var form = document.forms[0];
  var props = new Array("AppIdt", appIdt);
  var modeInput = false;
  for (var i = 0; i < form.elements.length; i++) {
    var obj = form.elements[i];
    var n = obj.name;
    if (obj.id && obj.id.indexOf("Zoe") == 0 && n != '') var searchFormElement = obj;
    else continue;

    if (searchFormElement.name == "mode") modeInput = true;
    if (searchFormElement.type == "text" || searchFormElement.type == "hidden") {
      n = searchFormElement.name;
      v = searchFormElement.value.toLowerCase();
    }
    else if (searchFormElement.type == "select-one") {
      n = searchFormElement.name;
      v = searchFormElement.options[searchFormElement.selectedIndex].value;
    }
    else if (searchFormElement.type == "checkbox") {
      n = searchFormElement.name;
      v = searchFormElement.checked ? searchFormElement.value : "";
    }
    if (v != "" && v != "VlgNum" && v != "null") {
      props[props.length] = n;
      props[props.length] = v;
    }
  }
  if (!modeInput) {
    props[props.length] = "mode";
    props[props.length] = mode ? mode : "normal";
  }
  setEltDisplay(getElt("Results"), "none");
  setEltVisibility(getElt("Results"), "hidden");
  getElt("ResultFrame").src = makeUrlFromArray(props, iprox_get);
}

function collectItems(id, colName, vanitmidt, godidt, sitidt, paridt, itmidt, posidt, thread) {
  var collected = new Array("AppIdt", "00001000", "mode", "node", "frame", "SilentFrame", "GodIdt", godidt, "SitIdt", sitidt, "ParIdt", paridt, "ItmIdt", itmidt, "PosIdt", posidt, "VanItmIdt", vanitmidt, "thread", thread, colName + ".$action", "replace", colName + ".$key", "VanItmIdt", colName + ".$id", vanitmidt);
  var formEltNum = document.forms[0].elements.length;
  for (var i = 0; i < formEltNum; i++) {
    obj = document.forms[0].elements[i];
    if (obj.id == colName && obj.checked) {
      collected[collected.length] = obj.name;
      collected[collected.length] = obj.value;
    }
  }
  for (var i = 0; i < redcoll[vanitmidt].length; i++) {
    naritmidt = redcoll[vanitmidt][i];
    if (!document.forms[0].elements["LnkItmTab." + vanitmidt + "." + naritmidt + ".NarItmIdt"]) { // collected, but invisible
      collected[collected.length] = "LnkItmTab." + vanitmidt + "." + naritmidt + ".NarItmIdt";
      collected[collected.length] = naritmidt;
    }
  }
  getElt(id).style.borderLeft = "2px dotted #cccccc";
  setTrafficStatus(true);
  returnDialogResults(collected);
}

function bubbleContents(frameName, divName, overwrite, restore, noscroll, noresize) {
  if (top.tinyMCE_fullscreen) {
    top.scroll(0, 0);
  }
  var bubblePossible = true;
  lastDocBodyScrollHeight = parseInt(document.body.scrollHeight, 10);
  if (getElt(divName) != null && getFrame(frameName)) {
    setEltDisplay(getElt(divName), "block");
    if (overwrite) {
      eval("overWriteDivFromFrame('" + frameName + "','" + divName + "')");
    } else {
      setEltVisibility(getElt(divName), "visible");
      window.setTimeout("resizeFrame('" + frameName + "','" + divName + "')", 128);
    }
    if (!noscroll && getElt(divName) != null && getElt(divName).parentNode && !top.tinyMCE_fullscreen) {
      getElt(divName).parentNode.scrollIntoView();
    }
  } else {
    bubblePossible = false;
  }

  if (restore) {
    storeOrgValues();
  }

  var refDoc = getFrameDocument(frameName);
  if (refDoc.forms["HiddenForm"]) {
    storeOrgValues(refDoc.forms["HiddenForm"]);
  }
  checkForm();
  try {
    if (inSubwindow && !noresize) {
      window.setTimeout("resizeWindow()", 256);
    } else if (inDialog && !noresize) {
      window.setTimeout("resizeDialog()", 256);
    } else {
      setTrafficStatus(false);
    }

    if (lastMin != null) {
      replaceEltClass(lastMin, "togglePlus", "toggleMin");
      var imgId = lastMin.id.replace('ToggleBtn_', 'ToggleImg_');
      toggleImg(imgId, '-');
      //setInnerText(lastMin,"-");
    }
  }
  catch (e) {
  }
  reqBusy[frameName] = false;
  startForm();
  return bubblePossible;
}

function overWriteDivFromFrame(frameName, divName) {
  setOuterHTML(getElt(divName), getElt(divName, frameName));
  setEltVisibility(getElt(divName), "visible");
}

function addDivFromFrame(frameName, divNameSource, divNameTarget) {
  setInnerHTML(getElt(divNameTarget), getOuterHTML(getElt(divNameSource, frameName)) + getElt(divNameTarget).innerHTML);
  setEltVisibility(getElt(divNameTarget), "visible");
}

function resizeFrame(frameName, divName) {
  if (getEltDisplay(getElt(divName)) != "block") return false;
  h = parseInt(getFrameDocument(frameName).body.scrollHeight, 10);
  setEltHeight(getElt(divName), h + 64);
}

var lastDocBodyScrollHeight = 0;
function resizeWindow() {
  dW = parseInt(document.body.scrollWidth, 10);
  dH = parseInt(document.body.scrollHeight, 10);

  xFix = is.ie7 ? 0 : (2 * edgeSize);
  yFix = is.ie7 ? 0 : (edgeSize + titleBarSize);

  if (dH < parseInt(screen.availHeight, 10) - (parseInt(window.screenTop, 10) + yFix)) {
    document.body.scroll = "no";
    try {
      if (lastDocBodyScrollHeight == 0) { window.resizeTo((dW + xFix), (dH + yFix)); }
      else { window.resizeBy(0, dH - lastDocBodyScrollHeight); }
    } catch (e) { }
  }
  else {
    document.body.scroll = "auto";
    try {
      if (lastDocBodyScrollHeight == 0) window.resizeTo((dW + xFix), parseInt(screen.availHeight, 10) - (parseInt(window.screenTop, 10) + yFix));
    } catch (e) { }
  }
}

function closeFrame(frameName, divName) {
  setEltDisplay(getElt(divName), "none");
  setEltVisibility(getElt(divName), "hidden");
  document.body.scroll = "auto";
}

function hiliteNodeTxt(obj) {
  if (obj.className == "nodeTxtLo") obj.className = "nodeTxtHi";
}

function restoreNodeTxt(obj) {
  if (obj.className == "nodeTxtHi") obj.className = "nodeTxtLo";
}

var curSelectObj = null;
function chooseNodeTxtSelect(obj, stay, changeClass) {
  if (curSelectObj)
    curSelectObj.style.fontWeight = 'normal';
  if (obj) {
    curSelectObj = obj;
    curSelectObj.style.fontWeight = 'bold';
  }
  return chooseNodeTxt(obj, stay, changeClass);
}

var lastObj = new Array();
function chooseNodeTxt(obj, stay, changeClass) {
  if (changeClass == null) changeClass = true;
  if (lastObj.length && !stay) {
    for (var i = 0; i < lastObj.length; i++) {
      lastObj[i].className = lastObj[i].oldClassName ? lastObj[i].oldClassName : "nodeTxtNormal";
      if (lastObj[i].parentNode && lastObj[i].parentNode.className) {
        lastObj[i].parentNode.className = lastObj[i].parentNode.className.replace(new RegExp(' structuurSelected'), '');
      }
    }
    lastObj.length = 0;
  }
  curObj = obj;
  while (curObj && curObj.parentNode && curObj.id && curObj.id.indexOf("NodeTxt") != 0) {
    curObj = curObj.parentNode;
  }
  if (changeClass && curObj && curObj.id && curObj.id.indexOf("NodeTxt") == 0) {
    curObj.oldClassName = curObj.className ? curObj.className : "nodeTxtNormal";
    curObj.className += " nodeTxtSelect";
    if (curObj.parentNode && curObj.parentNode.className.indexOf("itemHoverBar") > -1) {
      curObj.parentNode.className += " structuurSelected";
    }
    lastObj[lastObj.length] = curObj;
  }
}

var multiOpen = new Array();
var multiSiteOpen = new Array();
var multiTimer;
function chooseNode(e, id, win, appIdt, props, changeClass, selectTxt) {
  if (changeClass == null) changeClass = true;
  openBase = win ? win : window.self;
  if (multiTimer) clearTimeout(multiTimer);

  var obj = getElt("NodeTxt_" + id);
  if (!props && obj != null && !obj.length) {
    // enforced nodeClick
    var theNodeHref = null;
    for (var c = 0; c < obj.childNodes.length && theNodeHref == null; c++) {
      if (obj.childNodes[c].tagName == "A") theNodeHref = obj.childNodes[c];
    }
    if (selectTxt)
      chooseNodeTxtSelect(obj, null, changeClass);
    else
      chooseNodeTxt(obj, null, changeClass);

    if (theNodeHref != null) {
      if (theNodeHref.onclick) theNodeHref.onclick();
    }
  }
  else if (props && (isCtrlPressed(e) || isShiftPressed(e))) {
    // multi nodeClick
    multiOpen[multiOpen.length] = id.split("_")[0];
    for (var i = 0; i < props.length; i++) {
      if (props[i] == "SitIdt") {
        var curSitIdt = props[i + 1];
        multiSiteOpen[multiSiteOpen.length] = curSitIdt;
      }
    }
    dialogArray = new Array("AppIdt", "00001295", "dialogAction", "edit", "ItmRange", multiOpen.join(","), "SitRange", multiSiteOpen.join(","));
    if (selectTxt)
      chooseNodeTxtSelect(obj, true, changeClass);
    else
      chooseNodeTxt(obj, true, changeClass);
    multiTimer = window.setTimeout('openBase.openDialog("' + dialogArray.join('","') + '","' + props.join('","') + '");', 1200);
  }
  else if (props) {
    // single nodeClick
    multiOpen.length = 0;
    multiOpen[0] = id.split("_")[0];
    dialogArray = new Array("AppIdt", appIdt);
    if (selectTxt)
      chooseNodeTxtSelect(obj, false, changeClass);
    else
      chooseNodeTxt(obj, false, changeClass);
    openBase.eval('openDialog("' + dialogArray.join('","') + '","' + props.join('","') + '");');
  }
}

function hideChild(parentId, childId) {
  $("#" + parentId + " .toggleMin").removeClass("toggleMin").addClass("togglePlus");
  $("#" + childId).html("").hide();
}

function changeItemNode(id, itemNode) {
  var tog = null;
  var imgId = 'ToggleImg_' + id;
  if (getElt("ToggleBtn_" + id) != null) {
    var obj = getElt("ToggleBtn_" + id);
    tog = (obj.className == "togglePlus") ? "+" : "-";
  }
  if (itemNode && itemNode.innerHTML && getElt("HoverItem_" + id) != null) {
    var itemBlock = getElt("HoverItem_" + id);
    itemBlock.innerHTML = itemNode.innerHTML;
  }
  if (tog && getElt("ToggleBtn_" + id) != null) {
    var obj = getElt("ToggleBtn_" + id);
    if (tog == "+") {
      replaceEltClass(obj, "toggleMin", "togglePlus");
      //obj.className = "togglePlus";
      toggleImg(imgId, '+');
    }
    else if (tog == "-") {
      replaceEltClass(obj, "togglePlus", "toggleMin");
      //obj.className = "toggleMin";
      toggleImg(imgId, '-');
    }
    else {
      obj.className = "toggleNormal";
      toggleImg(imgId, '*');
    }
  }
}

function changeNode(id, tog, sts, txt, ico, popupObj) {
  if (tog && getElt("ToggleBtn_" + id) != null) {
    var obj = getElt("ToggleBtn_" + id);
    var imgId = 'ToggleImg_' + id;
    if (tog == "+") {
      replaceEltClass(obj, "togglePlus", "toggleMin");
      //obj.className = "togglePlus";
      toggleImg(imgId, '+');
    }
    else if (tog == "-") {
      //obj.className = "toggleMin";
      replaceEltClass(obj, "togglePlus", "toggleMin");
      toggleImg(imgId, '-');
    }
    else {
      obj.className = "toggleNormal";
      toggleImg(imgId, '*');
    }
  }
  if (sts && getElt("Status_" + id) != null) {
    var obj = getElt("Status_" + id);
    obj.className = "sts_" + sts;
  }
  if (popupObj && popupObj.innerHTML && getElt("PopupBlock_" + id) != null) {
    var popupBlock = getElt("PopupBlock_" + id);
    popupBlock.innerHTML = popupObj.innerHTML;
  }
  if (txt && getElt("NodeTxt_" + id) != null) {
    var obj = getElt("NodeTxt_" + id);
    var theNodeHref = null;
    for (var c = 0; c < obj.childNodes.length && theNodeHref == null; c++) {
      if (obj.childNodes[c].tagName == "A") theNodeHref = obj.childNodes[c];
    }
    if (theNodeHref != null) {
      if (theNodeHref.innerText) {
        theNodeHref.innerText = txt;
      } else if (theNodeHref.innerHTML) {
        theNodeHref.innerHTML = txt;
      }
    }
  }
  if (ico && getElt("Status_" + id) != null) {
    var obj = getElt("Status_" + id);
    var theNodeIcon = null;
    for (var c = 0; c < obj.childNodes.length && theNodeIcon == null; c++) {
      if (obj.childNodes[c].tagName == "IMG") theNodeIcon = obj.childNodes[c];
    }
    if (theNodeIcon != null) {
      theNodeIcon.src = ico;
    }
  }
}

function showAll(n) {
  if (getAllElts(n).length) {
    for (var i = 0; i < getAllElts(n).length; i++) {
      getAllElts(n)[i].style.display = "inline";
      getAllElts(n)[i].style.visibility = "inherit";
    }
  }
  else if (getAllElts(n)) {
    getAllElts(n).style.display = "inline";
    getAllElts(n).style.visibility = "inherit";
  }
}

function hideAll(n) {
  var elts = getAllElts(n);
  if (!elts) return;
  if (elts.length) {
    for (var i = 0; i < elts.length; i++) {
      elts[i].style.display = "none";
      elts[i].style.visibility = "hidden";
    }
  }
  else if (elts) {
    elts.style.display = "none";
    elts.style.visibility = "hidden";
  }
}

function showMenu(m, mouse) {
  if (!getElt("MnCnt_" + m)) return false;
  else if (mnuTimer) clearTimeout(mnuTimer);
  fixSelects(false);
  if (parseInt(m, 10) == m) {
    getElt("MnTit_" + m).className = 'menuTitleHi';
    setEltLeft(getElt("MnCnt_" + m), getElt("MnTit_" + m).offsetLeft);

    getElt("MnCnt_" + m).style.visibility = "visible";
    getElt("MnCnt_" + m).style.display = "inline";
    if (is.ie4comp) getElt("MnCnt_" + m).style.filter = "progid:DXImageTransform.Microsoft.Alpha( Opacity=100 );";
  }
  else {
    getElt("MnCnt_" + m).style.visibility = "visible";
    getElt("MnCnt_" + m).style.display = "inline";
    if (is.ie4comp) getElt("MnCnt_" + m).style.filter = "progid:DXImageTransform.Microsoft.Alpha( Opacity=100 );";
  }

  if (!hasInnerNodes(getElt("MnCnt_" + m)) && getElt("MnCnt_" + m).getAttribute("expandsrc")) {
    setInnerHTML(getElt("MnCnt_" + m), '<marquee style="display:block; width:32px; padding:2px;"><b>...</b></marquee>');
    queueReq("SilentFrame", getElt("MnCnt_" + m).getAttribute("expandsrc"));
  }

  if (mouse && escKeyMode) {
    escKeyMode = false;
    if (escKeyMenu > 0) realHideMenu(escKeyMenu);
  }
  else if (mouse) {
    if (escKeyMenu == m) { if (mnuTimer) clearTimeout(mnuTimer); }
    else {
      if (escKeyMenu > 0) realHideMenu(escKeyMenu);
      escKeyMenu = m;
    }
  }
  else {
    if (mnuTimer) clearTimeout(mnuTimer);
    escKeyMenu = m;
  }
}

function timeToggleMenu(objname, m) {
  if (getInnerText(getElt(objname)) == "+") togTimer = window.setTimeout("toggleMenu('" + objname + "','" + m + "');", 480);
}

function toggleMenu(obj, m, mouse) {
  if (typeof (obj) == "string") {
    obj = getElt(obj);
    if (togTimer) clearTimeout(togTimer);
  }
  if (getInnerText(obj) == "+") {
    setInnerText(obj, "-");
    if (mouse) showMenu(m, mouse);
    else showMenu(m);
  }
  else if (getInnerText(obj) == "-" && window.event && obj == window.event.srcElement && window.event.type == "click") {
    setInnerText(obj, "+");
    if (mouse) realHideMenu(m, mouse);
    else realHideMenu(m);
  }
}

function hideMenu(m, mouse) {
  if (!getElt("MnTit_" + m)) return false;
  else {
    if (parseInt(m, 10) == m && mouse) mnuTimer = window.setTimeout("fadeMenu('" + m + "'," + mouse + ", 100);", 200);
    else realHideMenu(m);
  }
}

function fadeMenu(m, mouse, count) {
  if (count > 0 && is.ie4comp) {
    getElt("MnCnt_" + m).style.filter = "progid:DXImageTransform.Microsoft.Alpha( Opacity=" + count + " );";
    mnuTimer = window.setTimeout("fadeMenu('" + m + "'," + mouse + "," + (count - 10) + ");", 100);
    if (count > 5) fixSelects(true);
  }
  else realHideMenu(m, mouse);
}

function realHideMenu(m, mouse) {
  if (mnuTimer) clearTimeout(mnuTimer);
  if (mouse) fixSelects(true);
  if (parseInt(m, 10) == m) {
    //getElt("MnTit_"+m).className = 'menuTitle';
    //getElt("MnCnt_"+m).style.visibility = 'hidden';
    //getElt("MnCnt_"+m).style.display = 'none';
  }
  else {
    //getElt("MnCnt_"+m).style.visibility = 'hidden';
    //getElt("MnCnt_"+m).style.display = 'none';
  }
  escKeyMenu = m;
  if (mouse && escKeyMode) {
    escKeyMode = false;
    if (escKeyMenu > 0) hideMenu(escKeyMenu);
  }
}

function fixSelects(mode) {
  if (!doFixSelects) return;
  var formEltNum = document.forms[0].elements.length;
  for (var i = 0; i < formEltNum; i++) {
    if (document.forms[0].elements[i].type == "select-one" || document.forms[0].elements[i].type == "select-multiple") {
      document.forms[0].elements[i].style.visibility = mode ? "inherit" : "hidden";
    }
  }
}

function showAlert(err, msg, donothide) {
  messageHtml = '<div id="Msg" onclick="hideAlert()" class="' + ((err != "") ? "iError" : "iMessage") + '">' + err + msg + '</div>';
  if (err != "" || msg != "") {
    if (getElt("Msg")) {
      setOuterHTML(getElt("Msg"), createDOM(messageHtml));
      setEltDisplay(getElt("Msg"), "block");
      setEltVisibility(getElt("Msg"), "visible");
      if (document.body.scrollTop > 0 && window.event && window.event.srcElement) {
        getAllElts("Msg").style.pixelTop = window.event.clientY + document.body.scrollTop + window.event.srcElement.clientHeight;
        getAllElts("Msg").scrollIntoView();
      }
      else {
        //getAllElts("Msg").style.pixelTop = 36;
      }
      blinkTimer = window.setTimeout('blinkAlert(true,0)', 250);
    }
    else alert(err + msg);
  }
  if (!donothide) msgTimer = window.setTimeout('hideAlert()', 30000);
}

function blinkAlert(white, blinkCount) {
  if (blinkTimer) clearTimeout(blinkTimer);
  getAllElts("Msg").style.color = white ? "#ffffff" : "#000000";
  if (blinkCount < 9) {
    blinkTimer = window.setTimeout('blinkAlert(' + !white + ',' + (blinkCount + 1) + ')', 250);
  }
  else {
    getAllElts("Msg").style.color = "#000000";
  }
}

function hideAlert() {
  if (blinkTimer) clearTimeout(blinkTimer);
  if (msgTimer) clearTimeout(msgTimer);
  getAllElts("Msg").style.display = "none";
  getAllElts("Msg").style.visibility = "hidden";
}

function clickChildA(obj) {
  var elt = obj;
  while (elt && elt.hasChildNodes) {
    var curChildNode = elt.childNodes[0];
    if (curChildNode && curChildNode.tagName == "A" && curChildNode.onclick) {
      curChildNode.onclick();
      break;
    }
    else elt = curChildNode;
  }
}

function queueReq(frameName, url) {
  reqQueue[frameName + "___" + url] = url;
  if (reqBusy[frameName] + "" == "undefined") reqBusy[frameName] = false;
  processReqQueue();
}

function processReqQueue() {
  if (reqQueueTimer) clearTimeout(reqQueueTimer);
  var urlsQueued = 0;
  for (qId in reqQueue) {

    var qReqName = qId.substring(0, qId.indexOf("___"));
    var qUrl = qId.substring(qId.indexOf("___") + 3, qId.length);

    if (!reqBusy[qReqName] && getElt(qReqName) != null) {
      delete reqQueue[qReqName + "___" + qUrl];
      reqBusy[qReqName] = true;
      getElt(qReqName).src = qUrl;
    }
    else urlsQueued++;
  }
  if (urlsQueued > 0) {
    reqQueueTimer = window.setTimeout('processReqQueue()', 100);
  }
}

function loadXMLDoc(url) {
  if (window.XMLHttpRequest) {
    reqObj = new XMLHttpRequest();
    reqObj.onreadystatechange = processReqChange;
    reqObj.open("GET", url, true);
    reqObj.send(null);
  } else if (window.ActiveXObject) {
    reqObj = new ActiveXObject("Microsoft.XMLHTTP");
    if (reqObj) {
      reqObj.onreadystatechange = processReqChange;
      reqObj.open("GET", url, true);
      reqObj.send();
    }
  }
}

function processReqChange() {
  if (reqObj.readyState == 4) {
    if (reqObj.status == 200) {
      handleHttpResponse();
    } else {
      alert("There was a problem retrieving the XML data:\n" + reqObj.statusText);
    }
  }
}

function handleHttpResponse() {
  var newHTML = "";
  try {
    if (is.ie) {
      newHTML = reqObj.responseXML.documentElement.xml;
    }
    else {
      var s = new XMLSerializer();
      var str = s.serializeToString(reqObj.responseXML.documentElement);
      if (str + "" != "undefined") newHTML = str;
    }

    // replaceOuterHTML(getAllElts(klapuitId),newHTML);
  }
  catch (err) {
    alert(err.description);
  }
}

function focusFirstInput(form) {
  form = form ? form : document.forms[0];
  for (var i = 0; form && form.elements && i < form.elements.length; i++) {
    obj = form.elements[i];
    if (obj.name != "" && (obj.type == "text" || obj.type == "password" || obj.type == "textarea") && obj.style.display != "none" && obj.style.visibility != "hidden") {
      try {
        obj.focus();
        break;
      }
      catch (e) {
        continue;
      }
    }
  }
}

//
// fix voor het menu voor bepaalde versies van Internet
// Explorer, namelijk versie 6 en lager.
//
sfHover = function() {
  if (document.getElementById("MenuBarNav") && is.ie) {
    var sfEls = document.getElementById("MenuBarNav").getElementsByTagName("LI");
    for (var i = 0; i < sfEls.length; i++) {
      sfEls[i].onmouseover = function() {
        if (currentOpenMenu) {
          menuAction(currentOpenMenu, false);
        }
        this.className += " sfhover";
      };
      sfEls[i].onmouseout = function() {
        this.className = this.className.replace(new RegExp(" sfhover"), "");
      };
    }
  }
};

//
// functie voor het openen en sluiten van het menu
// m.b.v. het toetsenbord
//
var currentOpenMenu = null;

function menuAction(id, bool) {
  var self = document.getElementById('MnTitA_' + id);
  var parent = document.getElementById('MnTit_' + id);

  if (bool) {
    if (currentOpenMenu != null) {
      var selfCur = document.getElementById('MnTitA_' + currentOpenMenu);
      var parentCur = document.getElementById('MnTit_' + currentOpenMenu);
      parentCur.className = parentCur.className.replace(new RegExp(" sfhover"), "");
      selfCur.onclick = function() {
        return menuAction(id, !bool);
      };
    }

    parent.className += " sfhover";
    currentOpenMenu = id;
  } else {
    parent.className = parent.className.replace(new RegExp(" sfhover"), "");
    currentOpenMenu = null;
  }

  self.onclick = function() {
    return menuAction(id, !bool);
  };

  return false;
}

//
// hang de navigatiefix voor Internet Explorer 6 en
// lager aan het onload-event van de browser
//
if (window.attachEvent) { window.attachEvent("onload", sfHover); }

//
// function voor hoveren over een item in het structuurscherm
//
function hoverItem(id, bool) {
  var elt = document.getElementById('HoverItem_' + id);

  if (bool) {
    // verander class
    elt.className += ' structuurHover';
  } else {
    // verwijder class
    elt.className = elt.className.replace(new RegExp(' structuurHover'), '');
  }
  showPopupblock(id, bool);
}

function showPopupblock(id, bool) {
  var pop = document.getElementById('PopupBlock_' + id);

  if (bool) {
    // verander class
    setEltDisplay(pop, 'block');
  } else {
    // verwijder class
    setEltDisplay(pop, 'none');
  }
}

