
function togglePopupVisibility(id,evt) {

  eltBox = document.getElementById(id+'-box');
  eltBut = document.getElementById(id+'-button');

  if (eltBox.style.display == 'block') {
    eltBox.style.display = 'none';
    eltBut.className = 'popup-button-off';
  } 
  else {

    eltBut.className = 'popup-button-on';
    eltBox.style.visibility = 'hidden';
    eltBox.style.display = 'block';

    var boxH = eltBox.clientHeight;
    var boxW = eltBox.clientWidth;
    var deltaX = 10;
    var deltaY = 10;

    eltBox.style.height = boxH + 'px';

    // Getting position of the mouse
    var posX = 100;
    var posY = 100;
    if( !evt ) {
      if (window.event) {
        //specific case for Internet Explorer
        evt = window.event;
      }
    }

    if (evt) {
      if (typeof(evt.pageX) == 'number') {
        //the cool browsers
        posX = evt.pageX;
        posY = evt.pageY;
      }
      else if (typeof(evt.clientX) == 'number') {
        //Internet Explorer
        posX = evt.clientX;
        posY = evt.clientY;

        var badOldBrowser = (window.navigator.userAgent.indexOf('Opera') + 1 ) || (window.ScriptEngine && ScriptEngine().indexOf('InScript') + 1 ) || (navigator.vendor == 'KDE')
        if (!badOldBrowser) {
          if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
            //IE 4, 5 & 6 (in non-standards compliant mode)
            posX += document.body.scrollLeft;
            posY += document.body.scrollTop;
          }
          else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
            //IE 6 (in standards compliant mode)
            posX += document.documentElement.scrollLeft;
            posY += document.documentElement.scrollTop;
          }
        }
      }
    }

    // Getting window size
    var winW = -1;
    var WinH = -1;
    if (typeof(window.innerWidth) == 'number') {
      // the cool browsers
      winW = window.innerWidth;
      winH = window.innerHeight;
    }
    else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
      // Internet Explorer 6
      winW = document.documentElement.clientWidth;
      winH = document.documentElement.clientHeight;
    }
    else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
      // other Internet Explorer
      winW = document.body.clientWidth;
      winH = document.body.clientHeight;
    }

    if ((winW >= 0 && winH >= 0) && typeof(evt.clientX) == 'number') {
      if (evt.clientX + boxW + deltaX > winW) {
        posX = posX - (boxW + deltaX);
      }
      else {
        posX = posX + deltaX;
      }
      if (evt.clientY + boxH + deltaY > winH) {
        posY = posY - (boxH + deltaY);
      }
      else {
        posY = posY + deltaY;
      }
    }
    else {
      posY = posY + deltaX;
      posY = posY + deltaY;
    }

    eltBox.style.left= posX + 'px';
    eltBox.style.top= posY + 'px';

    eltBox.style.visibility = 'visible';
  }
}


function toggleSideboxDetails(elt) {

  var eltBox = elt;
  while (eltBox.className != 'details-toggler') {
    eltBox = eltBox.parentNode;
  }

  var eltBut = elt;
  while (eltBut.className != 'details-button-on' && eltBut.className != 'details-button-off') {
    eltBut = eltBut.parentNode;
  }

  var displayDetails = (eltBut.className == 'details-button-off');

  var eltChild = eltBox.firstChild;
  while (eltChild) {
    if (eltChild.className == 'details-block') {
      if (displayDetails) {
        eltChild.style.display = 'block';
      }
      else {
        eltChild.style.display = 'none';
      }
    }
    if (eltChild.className == 'summary-block') {
      if (!displayDetails) {
        eltChild.style.display = 'block';
      }
      else {
        eltChild.style.display = 'none';
      }
    }

    eltChild = eltChild.nextSibling;
  }

  if (displayDetails) {
    eltBut.className = 'details-button-on';
  }
  else {
    eltBut.className = 'details-button-off';
  }

}
