

/**
 * imageZoomer BioM
 *
 * @copyright aimcom.de
 * @autor FX, FH, DH
 */
imageMagnifier = {

  boxElementID:  undefined,
  imgElementID:  undefined,
  linkElement:   undefined,
  boxElement:    undefined,
  imgElement:    undefined,
  imgName:	   undefined,
  status:        false,
  
  init: function(boxElementID, imgElementID, imgNameID) {
    this.boxElementID  = boxElementID;
    this.imgElementID  = imgElementID;
    this.imgNameID = imgNameID;
  },
  
  show: function(linkElement, imagePath, width, height, imageLink, name) {     
    this._initElements(linkElement);
    this.imgElement.src    = imagePath;
    this.imgElement.width  = width;
    this.imgElement.height = height;
    this.imgName = name;

    document.getElementById("zoom_image_titel").innerHTML = this.imgName;

	
    this._updatePosition();
    this.boxElement.style.visibility = "visible";
    document.getElementById("zoom_image_titel").style.visibility = "visible";
    this.imgElement.url = imageLink;

  },
  
  show_detail: function() {
    window.location.href = this.imgElement.url;
  }, 
  
  hide: function() {
    this.boxElement.src = "transparent.gif";
    this.boxElement.style.visibility = "hidden";
    document.getElementById("zoom_image_titel").style.visibility = "hidden";
  },

  _initElements: function(linkElement) {
    this.linkElement = linkElement;

    if (this.boxElement !== undefined || this.imgElement !== undefined) {
      return false;
    }

    this.boxElement  = this._getElement(this.boxElementID);
    this.imgElement  = this._getElement(this.imgElementID);
  },

  _updatePosition: function() {
    imageInLink = this.linkElement.getElementsByTagName("img")[0];

    // Workaround für fehlerhafte Internet-Explorer-Erkennung der Offset-Werte
    var element = imageInLink;
    var imageOffsetLeft = 0;
    var imageOffsetTop  = 0;
    do {
      imageOffsetTop  += element.offsetTop || 0;
      imageOffsetLeft += element.offsetLeft || 0;
      element = element.offsetParent;
      if (!element) {
        break;
      }
    } while (element);
    
		document.getElementById("zoom_image_container").style.left = imageOffsetLeft - Math.round((this.imgElement.width  - imageInLink.width)  / 2) + "px";
		document.getElementById("zoom_image_container").style.top  = imageOffsetTop - Math.round((this.imgElement.height - imageInLink.height) / 2) + "px";
  },

  _getElement: function(ID) {
    var element = document.getElementById(ID);
    if (!element) {
      alert("imageZoomer: #" + ID + " is undefined!");
    }

    return element;
  }
}

