/*
 * SYSTEM_NAME: Guentersberg
 *
 * COMPONENT_NAME: Shop
 *
 * FUNCTIONS: All-purpose Javascript functions
 *
 * AUTHOR: Franz Fackelmann
 *
 * CREATED: 10.01.2010
 *
 */

var bodyVerticalMargin = 10; // FIXME: margins von body; wie ermittelt man das???


// drop search from current location
function cleanLocation()
{
  if (window.location.search != "") {
    window.location.replace(window.location.pathname);
  }
}


// init item page
function initItemPage()
{
  cleanLocation();

  // cover image popup
  preparePopup("coverImg", "coverImgPopup");
}


// prepapre cover image popup
function preparePopup(triggerId, popupId)
{
  var trigger = document.getElementById(triggerId);
  if (trigger) {
    var popup = document.getElementById(popupId);
    if (popup) {
      trigger.popupId = popupId;
      trigger.onclick = function(event) { showPopup(this.popupId, true); };
      popup.onclick = function(event) { showPopup(this.id, false); };
    }
  }
}


// show image popup
function showPopup(id, show)
{
  var popup = document.getElementById(id);
  if (popup) {
    if (show) {
      var shield = popup.getElementsByTagName("div")[0];
      var img = popup.getElementsByTagName("div")[1];

      if (!shield || !img) return;

      // Abdunkelung sollen scrollbaren Bereich des Inhalts abdecken
      var header = popup.parentNode.getElementsByTagName("table")[0];
      var width = header.offsetWidth + 2 * header.offsetLeft;
      if (window.innerWidth < width)
        shield.style.width = width + "px";
      else
        shield.style.width = "100%";

      var height = popup.parentNode.offsetHeight + 2 * bodyVerticalMargin;
      if (height < window.innerHeight)
        shield.style.height = "100%";
      else 
        shield.style.height = (popup.parentNode.offsetHeight + 2 * bodyVerticalMargin) + "px";

      shield.style.left = "-" + popup.parentNode.offsetLeft + "px";
      shield.style.top = "-" + (popup.parentNode.offsetTop + bodyVerticalMargin) + "px";

      // Popup anzeigen (erst dann ist Bildgroesse ablesbar)
      popup.style.display = "block";

      // Bild in den Fensterausschnitt platzieren
      var left = window.pageXOffset + (window.innerWidth - img.offsetWidth) / 2;
      if (left < window.pageXOffset + bodyVerticalMargin) {
        left = window.pageXOffset + bodyVerticalMargin;
      }

      var top = window.pageYOffset + (window.innerHeight - img.offsetHeight) / 2;
      if (top < window.pageYOffset + bodyVerticalMargin) {
        top = window.pageYOffset + bodyVerticalMargin;
      }

      img.style.left = left + "px";
      img.style.top = top + "px";

      // Popup soll verschwinden, wenn die Fenstergröße geändert wird
      window.popupId = id;
      window.oldOnResize = window.onresize;
      window.onresize = function(event) { showPopup(this.popupId, false); };
    }
    else {
      popup.style.display = "none";
      window.onresize = window.oldOnResize;
    }
  }
}

