Jax_Browser = {
  initialize: function()
  {
    console.log('initialize');
    this.ODiv          = $('jax_imager');
    this.OClose        = $('jax_imager_close');
    this.OMax          = $('jax_imager_maximize');
    this.OMin          = $('jax_imager_minimize');
    this.elIconForward  = $('jax_imager_page_next');
    this.elIconBackward = $('jax_imager_page_prev');
    
    if (!this.elIconForward || !this.elIconBackward)
    {
      console.log('Stopping init ... no icons ...');
      return;
    }
      
    
    this.elIconForward.addEvent('click', this.historyForward.bindWithEvent(this));
    this.elIconBackward.addEvent('click', this.historyBackward.bindWithEvent(this));
    
    this.elSelector     = $('jax_imager_selector');
    this.elContent      = $('jax_imager_content');
    this.ElemImage      = $('jax_imager_img');
    this.ElemPSelector  = $('jax_imager_pselector');
    
    this.Scaleroptions = 'w620.h350.fill';
    this.OClose.addEvent('click', this.hideDo.bindWithEvent(this));
    
    this.OMax.addEvent('click', this.windowMaximize.bindWithEvent(this));
    this.OMax.style.cursor = 'pointer';
    
    this.OMin.addEvent('click', this.windowMinimize.bindWithEvent(this));
    this.OMin.style.cursor = 'pointer';
    
    this.ElemImage.style.cursor = 'pointer';
    this.ElemImage.addEvent('click', this.makeFullScreenView.bind(this));
    
    window.onresize = this.windowResize.bind(this);
  }  /**
   * Erstellt ein 'Fenster' in dem ein Bild in hoher Auflösung gezeigt wird
   */
  ,
  makeFullScreenView: function()
  {
    var Inner = Util.innerDimension();
    var ScrollSave = 40;
    var DivX = Inner.x - ScrollSave;
    var DivY = Inner.y - ScrollSave;
    
    var Src = this.ElemImage.src;
    Src = Util.stripScalerOptions(Src);
    Src = Util.setScalerOptions(Src, 'w' + DivX + '.h' + DivY + '.fill');
    
    var Div = document.createElement('div');
    Div.style.width = DivX + 'px';
    Div.style.height = DivY + 'px';
    Div.style.visibility = 'hidden';
    document.getElementsByTagName('body')[0].appendChild(Div);
    Util.centerOnScreen(Div);
    //        Div.style.position = 'absolute';
    //        Div.style.left = (ScrollSave / 2) + 'px';
    //        Div.style.top = (ScrollSave / 2) + 'px';
    Div.style.zIndex = 1200;
    Div.style.border = '1px solid gray';
    Div.style.backgroundColor = 'white';
    Div.style.backgroundPosition = 'center center';
    Div.style.backgroundRepeat = 'no-repeat';
    //        Div.style.backgroundImage = 'url(' + Src + '?Substitute)';
    Div.style.backgroundImage = 'url(' + Src + ')';
    
    Div.onclick = function()
    {
      this.parentNode.removeChild(this);
    };
    Div.style.cursor = 'pointer';
    
    var Closer = new Image();
    Closer.src = '/media/Image/Icons/silk/cross.gif';
    Closer.style.position = 'absolute';
    Closer.style.right = '20px';
    Closer.style.top = '20px';
    Closer.onclick = function()
    {
      this.parentNode.click();
    }
    
    Div.appendChild(Closer);
    
    Div.style.visibility = 'visible';
  },
  BrowserHistory: [],
  BrowserHistoryForward: [],
  elIconForward: null,
  elIconBackward: null  /**
   * Zeigt die nächste Seite in der Hinstory
   */
  ,
  historyForward: function(e)
  {
    var Item = this.BrowserHistoryForward.shift();
    this.BrowserHistory.push(Item);
    
    this.browse_Start(this.BrowserHistory[this.BrowserHistory.length - 1], true);
  }  /**
   * Zeigt die vorangegangene Seite in der Hinstory
   */
  ,
  historyBackward: function(e)
  {
    var Item = this.BrowserHistory.pop();
    this.BrowserHistoryForward.unshift(Item);
    
    this.browse_Start(this.BrowserHistory[this.BrowserHistory.length - 1], true);
  },
  imageInfos: function(e)
  {
    var Picture = this.JaxImager.getActualPic();
    var Descript = '';
    Descript = Picture.Tags.join('<br />');
    overlib(e, Descript, {
      Snap: 'rud'
    }, this.MenuItemHelp);
  }  /**
   * Erstellt das linke Navigationsmenü
   */
  ,
  buildMenu: function()
  {
    var BindEvents = true;
    
    this.Menu = $('jax_imager_menu');
    while ((Child = this.Menu.childNodes[0])) 
      this.Menu.removeChild(Child);
    
    this.Menu.className = 'xp_menu_static';
    BindEvents = false;
    
    var File_Head = document.createElement('li');
    var File_Head_H3 = document.createElement('h3');
    File_Head.appendChild(File_Head_H3);
    File_Head.className = 'head';
    File_Head_H3.innerHTML = MTJax.Lang.get('.jaxbrowser.nav.file.head');
    
    var Examples_Head = document.createElement('li');
    var Examples_Head_H3 = document.createElement('h3');
    Examples_Head.appendChild(Examples_Head_H3);
    Examples_Head.className = 'head';
    Examples_Head_H3.innerHTML = MTJax.Lang.get('.jaxbrowser.nav.more.pics.head');
    
    var Infos_Head = document.createElement('li');
    var Infos_Head_H3 = document.createElement('h3');
    Infos_Head.appendChild(Infos_Head_H3);
    Infos_Head.className = 'head';
    Infos_Head_H3.innerHTML = MTJax.Lang.get('.jaxbrowser.nav.more.info.head');
    
    var Spacer = document.createElement('li');
    Spacer.className = 'head';
    Spacer.innerHTML = '&nbsp;';
    
    var Spacer2 = document.createElement('li');
    Spacer2.className = 'head';
    Spacer2.innerHTML = '&nbsp;';
    
    var SaveL = document.createElement('li');
    var SaveXXL = document.createElement('li');
    var Divide = document.createElement('li');
    var Print = document.createElement('li');
    this.MenuItemHelp = document.createElement('li');
    this.MenuItemHolz = document.createElement('li');
    this.MenuItemModell = document.createElement('li');
    this.MenuItemHolzInfo = document.createElement('li');
    this.MenuItemModellInfo = document.createElement('li');
    
    Divide.style.innerHTML = '&nbsp;';
    Divide.style.border = 'solid gray';
    Divide.style.borderWidth = '0 0 1px 0';
    Divide.style.lineHeight = '1px';
    Divide.style.fontSize = '1px';
    
    SaveL.appendChild(document.createElement('a'));
    if (true == BindEvents) 
    {
      SaveL.childNodes[0].onmouseover = this.hideReset.bind(this);
      SaveL.childNodes[0].onmouseout = this.hide.bind(this);
    }
    SaveL.childNodes[0].href = this.LatestIdent.src.replace(/\/Generate\//, '/Save/');
    SaveL.childNodes[0].className = 'save';
    SaveL.childNodes[0].innerHTML = MTJax.Lang.get('.jaxbrowser.nav.file.save');
    
    SaveXXL.appendChild(document.createElement('a'));
    if (true == BindEvents) 
    {
      SaveXXL.childNodes[0].onmouseover = this.hideReset.bind(this);
      SaveXXL.childNodes[0].onmouseout = this.hide.bind(this);
    }
    SaveXXL.childNodes[0].href = this.LatestIdent.src.replace(/\/Generate\//, '/SaveXXL/');
    SaveXXL.childNodes[0].className = 'save';
    SaveXXL.childNodes[0].innerHTML = MTJax.Lang.get('.jaxbrowser.nav.file.save.xxl');
    
    Print.appendChild(document.createElement('a'));
    if (true == BindEvents) 
    {
      Print.childNodes[0].onmouseover = this.hideReset.bind(this);
      Print.childNodes[0].onmouseout = this.hide.bind(this);
    }
    Print.childNodes[0].href = this.LatestIdent.src.replace(/\/Generate\//, '/Print/');
    Print.childNodes[0].className = 'print';
    Print.childNodes[0].target = '_blank';
    Print.childNodes[0].innerHTML = MTJax.Lang.get('.jaxbrowser.nav.file.print');
    
    this.MenuItemHelp.appendChild(document.createElement('a'));
    if (true == BindEvents) 
    {
      this.MenuItemHelp.childNodes[0].onmouseover = this.hideReset.bind(this);
      this.MenuItemHelp.childNodes[0].onmouseout = this.hide.bind(this);
    }
    this.MenuItemHelp.childNodes[0].href = this.LatestIdent.src.replace(/\/Generate\//, '/Print/');
    this.MenuItemHelp.childNodes[0].className = 'help';
    this.MenuItemHelp.childNodes[0].target = '_blank';
    this.MenuItemHelp.childNodes[0].innerHTML = MTJax.Lang.get('.jaxbrowser.nav.file.info');
    this.MenuItemHelp.childNodes[0].onmouseover = this.imageInfos.bind(this);
    this.MenuItemHelp.childNodes[0].onclick = function()
    {
      return false;
    };
    
    
    
    this.MenuItemHolz.appendChild(document.createElement('a'));
    this.MenuItemHolz.style.display = 'none';
    this.MenuItemHolz.childNodes[0].className = 'wood';
    this.MenuItemHolz.childNodes[0].TplURL = '/galerie.db/Search,' + encodeURI('holzoberfläche %2Babc');
    this.MenuItemHolz.childNodes[0].TplText = MTJax.Lang.get('.jaxbrowser.nav.more.pics.zu.holz') + ' abc';
    
    this.MenuItemModell.appendChild(document.createElement('a'));
    this.MenuItemModell.style.display = 'none';
    this.MenuItemModell.childNodes[0].className = 'modell';
    this.MenuItemModell.childNodes[0].TplURL = '/galerie.db/Search,abc';
    this.MenuItemModell.childNodes[0].TplText = MTJax.Lang.get('.jaxbrowser.nav.more.pics.zu.modell') + ' abc';
    
    
    this.MenuItemHolzInfo.appendChild(document.createElement('a'));
    this.MenuItemHolzInfo.style.display = 'none';
    this.MenuItemHolzInfo.childNodes[0].className = 'wood';
    this.MenuItemHolzInfo.childNodes[0].TplURL = '/holzinfo/Holz,abc';
    this.MenuItemHolzInfo.childNodes[0].TplText = MTJax.Lang.get('.jaxbrowser.nav.more.info.zu.holz') + ' abc';
    
    this.MenuItemModellInfo.appendChild(document.createElement('a'));
    this.MenuItemModellInfo.style.display = 'none';
    this.MenuItemModellInfo.childNodes[0].className = 'modell';
    this.MenuItemModellInfo.childNodes[0].TplURL = '/modellinfo/Modell,abc';
    this.MenuItemModellInfo.childNodes[0].TplText = MTJax.Lang.get('.jaxbrowser.nav.more.info.zu.modell') + ' abc';
    
    
    this.MenuItemSave = SaveL;
    this.MenuItemSaveXXL = SaveXXL;
    this.MenuItemPrint = Print;
    
    this.Menu.appendChild(File_Head);
    this.Menu.appendChild(SaveL);
    this.Menu.appendChild(SaveXXL);
    this.Menu.appendChild(Divide);
    this.Menu.appendChild(Print);
    this.Menu.appendChild(this.MenuItemHelp);
    
    this.Menu.appendChild(Spacer);
    
    this.Menu.appendChild(Examples_Head);
    this.Menu.appendChild(this.MenuItemHolz);
    this.Menu.appendChild(this.MenuItemModell);
    
    this.Menu.appendChild(Spacer2);
    
    this.Menu.appendChild(Infos_Head_H3);
    this.Menu.appendChild(this.MenuItemHolzInfo);
    this.Menu.appendChild(this.MenuItemModellInfo);
  },
  ThumbView_PerPage: 12,
  ThumbView_OnPage: 1,
  ThumbView_PageDown: function()
  {
    this.ThumbView_OnPage--;
    this.ThumbView_fill();
  },
  ThumbView_PageUp: function()
  {
    this.ThumbView_OnPage++;
    this.ThumbView_fill();
  },
  switchView_Thumbnails: function()
  {
    this.ThumbView_fill();
    
    this.elContent.style.display = 'block';
    this.ElemImage.style.display = 'none';
    this.elSelector.style.display = 'none';
    this.ElemPSelector.style.display = 'block';
  },
  ThumbView_fill: function()
  {
    var Pages = Math.ceil(this.JaxImager.Pics.length / this.ThumbView_PerPage);
    
    var PPrev = $('jax_imager_pprev');
    var PNext = $('jax_imager_pnext');
    
    
    PPrev.style.display = 'none';
    if (Pages > 1 && this.ThumbView_OnPage > 1) 
      PPrev.style.display = 'inline';
    
    
    PNext.style.display = 'none';
    if (Pages > 1 && this.ThumbView_OnPage < Pages) 
      PNext.style.display = 'inline';
    
    PPrev.Imager = this;
    PPrev.onclick = function()
    {
      this.Imager.ThumbView_PageDown();
    };
    
    PNext.Imager = this;
    PNext.onclick = function()
    {
      this.Imager.ThumbView_PageUp();
    };
    
    while ((Child = this.elContent.childNodes[0])) 
      this.elContent.removeChild(Child);
    
    var SliceStart = this.ThumbView_PerPage * this.ThumbView_OnPage - this.ThumbView_PerPage;
    var SliceEnd = SliceStart + this.ThumbView_PerPage;
    
    var Pics = this.JaxImager.Pics.slice(SliceStart, SliceEnd);
    
    for (var i = 0; (Pic = Pics[i]); i++) 
    {
      Container = document.createElement('div');
      Container.style.width = '140px';
      Container.style.height = '110px';
      Container.style.cssFloat = 'left';
      Container.style.styleFloat = 'left';
      Container.style.margin = '5px';
      
      Strings = document.createElement('span');
      Strings.innerHTML = '<br />' + Pic.InfoOne + '<br />' + Pic.InfoTwo;
      Strings.style.fontSize = '0.8em';
      
      Img = new Image();
      Img.style.width = '140px';
      Img.style.height = '80px';
      Img.style.backgroundImage = 'url(/media/Image/Icons/Ajax/indicator.gif)';
      Img.style.backgroundPosition = 'center center';
      Img.style.backgroundRepeat = 'no-repeat';
      Img.style.border = '1px solid gray';
      Img.src = Util.setScalerOptions(Pic.Url, 'w140.h80.fill');
      Img.Imager = this;
      Img.onclick = function()
      {
        this.Imager.switchView_Image(this.src);
      };
      
      Container.appendChild(Img);
      Container.appendChild(Strings);
      this.elContent.appendChild(Container);
    }
  },
  switchView_Image: function(Url)
  {
  
    if (!arguments[0]) 
    {
      this.JaxImager.setDirectly(Jax_BrowserUtil.LastImageTrigger.src);
    }
    else 
      this.JaxImager.setDirectly(Url);
    
    this.elContent.style.display = 'none';
    this.ElemImage.style.display = 'block';
    this.elSelector.style.display = 'block';
    this.ElemPSelector.style.display = 'none';
    
    this.show();
  },
  windowMaximize: function()
  {
    if (true == this.IsMaximized) 
      return false;
    
    this.IsMaximized = true;
    
    this.OMax.style.display = 'none';
    this.OMin.style.display = '';
    
    this.MinimizeHeight = this.ODiv.offsetHeight;
    
    var Screen = Util.innerDimension();
    this.ODiv.style.height = (Screen.y - 100) + 'px';
    Util.centerOnScreen(this.ODiv);
    this.alignContentHeight();
  },
  windowMinimize: function()
  {
    if (false == this.IsMaximized) 
      return false;
    
    this.IsMaximized = false;
    
    this.OMax.style.display = 'none';
    this.OMin.style.display = 'none';
    
    this.ODiv.style.height = this.MinimizeHeight + 'px';
    Util.centerOnScreen(this.ODiv);
    this.alignContentHeight();
  },
  IsMaximized: false,
  MinimizeHeight: 0,
  windowResize: function()
  {
    Util.centerOnScreen(this.ODiv);
    this.alignContentHeight();
  }  /**
   * Bereitet ein Element vor, eine Browserseite aufzurufen
   * @param Trigger Element
   */
  ,
  prepareTrigger: function(Trigger)
  {
    Trigger.JB = this;
    Trigger.BrowseStyle = 'browse';
    
    Trigger.onclick = function(event)
    {
      event = new Event(event);
      var Err;
      
      try 
      {
        if (this.href) 
        {
          this.JB.prepare(this.BrowseStyle, this.href);
        }
        else 
        {
          this.JB.prepare(this.BrowseStyle, Jax_BrowserUtil.Register[this.id]);
        }
        
        event.stopPropagation();
        
        return false;
      } 
      catch (e) 
      {
        Err = e;
      }
      
      if (Err) 
        console.log(Err);
      
      return false;
    }.bindWithEvent(Trigger)
  },
  prepareImageTrigger: function(Trigger)
  {
    Trigger.JB = this;
    Trigger.BrowseStyle = 'image-detail';
    
    Trigger.addEvent('click', function()
    {
      var Err;
      
      try 
      {
        this.JB.prepare(this.BrowseStyle, this);
        return false;
      } 
      catch (e) 
      {
        Err = e;
      }
      
      if (Err) 
        console.log(Err);
      
      return false;
    });
  },
  InstanceNum: 0,
  Trigger: null,
  Snap: null,
  SnapStyle: 'lb',
  Scaleroptions: null,
  ODiv: null,
  OClose: null,
  BigImage: null,
  Options: {},
  Offset: 10,
  TOMenu: null,
  TOHide: null,
  Menu: null,
  ShowClose: false,
  OLStyle: 'hover',
  recreateMenu: function(Nfo)
  {
    this.buildMenu();
    var JB = Jax_BrowserUtil.getInstance();
    
    
    this.MenuItemHolz.style.display = 'none';
    this.MenuItemModell.style.display = 'none';
    
    Probe = /hid_([^,]*)/i.exec(Nfo.HTagsImp);
    if (Probe) 
    {
      var HolzDisplay = Probe[1];
      var HolzIdent = Probe[1];
      
      Probe = /\bholz: ([^,]*)/i.exec(Nfo.TagsImp);
      if (Probe) 
      {
        HolzDisplay = Probe[1];
      }
      HolzDisplay = MTJax.Lang.get('.timber.' + HolzDisplay.toLowerCase() + '.display');
      
      var Temp = 'url(' + Util.setScalerOptions('/media/Image/Holzfarben/' + Util.ucFirst(HolzIdent) + '_01.jpg', 'w16.h16.croph') + ')';
      
      this.MenuItemHolz.childNodes[0].href = this.MenuItemHolz.childNodes[0].TplURL.replace(/abc*$/, '"hid_' + HolzIdent + '"');
      this.MenuItemHolz.childNodes[0].innerHTML = this.MenuItemHolz.childNodes[0].TplText.replace(/abc*$/, HolzDisplay);
      this.MenuItemHolz.childNodes[0].style.backgroundImage = Temp;
      
      this.MenuItemHolz.childNodes[0].HolzIdent = 'hid_' + HolzIdent;
      this.MenuItemHolz.childNodes[0].Imager = this;
      this.MenuItemHolz.childNodes[0].onclick = function()
      {
        try 
        {
          this.Imager.JaxImager = new MTJax.Imager(this.HolzIdent, this.Imager, true);
        } 
        catch (e) 
        {
        
        }
        
        return false;
      };
      this.MenuItemHolz.style.display = 'inline';
      
      
      this.MenuItemHolzInfo.childNodes[0].href = this.MenuItemHolzInfo.childNodes[0].TplURL.replace(/abc*$/, HolzIdent);
      this.MenuItemHolzInfo.childNodes[0].innerHTML = this.MenuItemHolzInfo.childNodes[0].TplText.replace(/abc*$/, HolzDisplay);
      this.MenuItemHolzInfo.childNodes[0].style.backgroundImage = Temp;
      this.MenuItemHolzInfo.style.display = 'inline';
      JB.prepareTrigger(this.MenuItemHolzInfo.childNodes[0]);
    }
    
    
    Probe = /modell: ([^,]*)/i.exec(Nfo.TagsImp);
    if (Probe) 
    {
      this.MenuItemModell.childNodes[0].href = this.MenuItemModell.childNodes[0].TplURL.replace(/abc*$/, Probe[1]);
      this.MenuItemModell.childNodes[0].innerHTML = this.MenuItemModell.childNodes[0].TplText.replace(/abc*$/, Probe[1]);
      //            this.MenuItemModell.childNodes[0].style.backgroundImage = '/media/Image/Icons/table.jpg';
      this.MenuItemModell.style.display = 'inline';
      
      this.MenuItemModell.childNodes[0].Modell = Probe[1];
      this.MenuItemModell.childNodes[0].Imager = this;
      this.MenuItemModell.childNodes[0].onclick = function()
      {
        try 
        {
          this.Imager.JaxImager = new MTJax.Imager(this.Modell, this.Imager, true);
        } 
        catch (e) 
        {
        
        }
        
        return false;
      };
      
      this.MenuItemModellInfo.childNodes[0].href = this.MenuItemModellInfo.childNodes[0].TplURL.replace(/abc*$/, Probe[1]);
      this.MenuItemModellInfo.childNodes[0].innerHTML = this.MenuItemModellInfo.childNodes[0].TplText.replace(/abc*$/, Probe[1]);
      //            this.MenuItemModellInfo.childNodes[0].style.backgroundImage = '/media/Image/Icons/table.jpg';
      this.MenuItemModellInfo.style.display = 'inline';
      JB.prepareTrigger(this.MenuItemModellInfo.childNodes[0]);
    }
  },
  browse_GetContent: function(Ident)
  {
    console.log('IN : browse_GetContent : ' + Ident)
    
    this.BrowserHistory.push(new Jax_BrowserHistory('/plugin/de.masstisch.ajax/Engine/get.php', 'Engine=' + encodeURIComponent(Ident)));
    
    this.browse_Start(this.BrowserHistory[this.BrowserHistory.length - 1]);
  },
  browse_Start: function(Item, FromHistory)
  {
    console.log('IN : browse_Start');
    console.log(Item);
    console.log(FromHistory);
    
    if (!arguments[1]) 
    {
      FromHistory = false;
    }
    
    
    if (false == FromHistory) 
    {
      this.BrowserHistoryForward = [];
    }
    
    
    new Request({
       url: Item.Ident
      ,data: Item.Params
      ,onComplete: this.browse_ReceiveContent.bind(this)
    }).send();
  },
  browse_GetContent_Free: function(Ident, Params)
  {
    this.BrowserHistory.push(new Jax_BrowserHistory(Ident, Params));
    
    this.browse_Start(this.BrowserHistory[this.BrowserHistory.length - 1]);
  },
  browse_BuildMenu: function(Items)
  {
    var BindEvents = true;
    var JB = Jax_BrowserUtil.getInstance();
    
    this.Menu = $('jax_imager_menu');
    while ((Child = this.Menu.childNodes[0])) 
      this.Menu.removeChild(Child);
    
    this.Menu.className = 'xp_menu_static';
    
    //        var SavePDF   = document.createElement('li');
    //        SavePDF.appendChild(document.createElement('a'))
    //        SavePDF.childNodes[0].href        = '/media/File/PDF/Engine/' + encodeURIComponent(this.LatestIdent)
    //        SavePDF.childNodes[0].className   = 'mine pdf';
    //        SavePDF.childNodes[0].innerHTML   = 'als PDF';
    //        this.Menu.appendChild(SavePDF);
    
    for (ItemName in Items) 
    {
      var Item = Items[ItemName];
      
      if (Item.JustHead) 
      {
        var Tmp = document.createElement('li');
        Tmp.appendChild(document.createElement('h3'));
        Tmp.childNodes[0].className = 'head';
        Tmp.childNodes[0].innerHTML = Item.Title;
        this.Menu.appendChild(Tmp);
      }
      else 
      {
        if (!Item.URL && !Item.onclick) 
          continue;
        
        var Tmp = document.createElement('li');
        Tmp.appendChild(document.createElement('a'));
        if (!Item.URL) 
          Item.URL = 'javascript:void(0);';
        
        Tmp.childNodes[0].href = Item.URL;
        Tmp.childNodes[0].className = Item.ClassName;
        Tmp.childNodes[0].innerHTML = Item.Title;
        
        if (Item.onclick) 
        {
          //                    alert(Item.onclick);
          eval('Tmp.childNodes[0].onclick   = ' + Item.onclick);
        }
        else 
          JB.prepareTrigger(Tmp.childNodes[0]);
        
        
        
        this.Menu.appendChild(Tmp);
      }
    }
  },
  paint_Icons: function()
  {
    this.elIconBackward.style.display = 'none';
    this.elIconForward.style.display = 'none';
    
    this.alignContentHeight();
    
    if (this.BrowserHistory.length > 1) 
      this.elIconBackward.style.display = 'block';
    
    if (this.BrowserHistoryForward.length > 0) 
      this.elIconForward.style.display = 'block';
  },
  browse_ReceiveContent: function(Response)
  {
    var Err;
    
    try 
    {
      eval('Response = ' + Response);
      
      this.elContent.style.height = 'auto';
      this.elContent.innerHTML = Response.Engine;
      this.browse_BuildMenu(Response.Menu);
      
      document.getElements('#' + this.elContent.id + ' a').each(function(Elem)
      {
        if (!Elem.onclick && 'javascript:void(0);' != Elem.href && Elem.getAttribute('target') != '_blank') 
        {
          var JB = Jax_BrowserUtil.getInstance();
          JB.prepareTrigger(Elem);
        }
      });
      
      this.elContent.style.display = 'block';
      Behaviour.apply();
      
      this.show();
    } 
    catch (e) 
    {
      Err = e;
      //            alert(Err);
    }
    
    //        if (Err)
    //            for (thingy in Err)
    //                console.log(thingy + ' :: ' + Err[thingy]);
  },
  prepare: function(Style, Ident, Params)
  {
    //        console.log(Style);
    //        console.log(Ident);
    //        console.log(Params);
    this.elSelector.style.display = 'none';
    this.elContent.style.display = 'none';
    this.ElemImage.style.display = 'none';
    
    this.LatestIdent = Ident;
    
    switch (Style)
    {
      case 'browse':
        this.browse_GetContent(Ident);
        break;
        
      case 'browse-free':
        this.browse_GetContent_Free(Ident, Params);
        break;
        
      case 'image-detail':
        Jax_BrowserUtil.LastImageTrigger = Ident;
        var PID = /pid_(\d+)\b/.exec(Ident.className);
        if (PID) 
        {
          this.JaxImager = new MTJax.Imager('pid_' + PID[1], this);
        }
        else 
        {
          var AID = /aid_(\d+)\b/.exec(Ident.className);
          if (AID) 
          {
            this.JaxImager = new MTJax.Imager('aid_' + AID[1], this);
          }
          else 
          {
            var refId = /reference_(\d+)\b/.exec(Ident.className);
            if (refId) 
            {
              this.JaxImager = new MTJax.Imager('reference_' + refId[1], this);
            }
          }
        }
        this.buildMenu();
        
        break;
    }
  }  /**
   *
   */
  ,
  alignContentHeight: function()
  {
    this.elContent.style.height = 'auto';
    
    if (this.elContent.offsetHeight > this.ODiv.offsetHeight - 80) 
    {
      this.elContent.style.height = Math.max((this.ODiv.offsetHeight - 100), 0) + 'px';
      if (false == this.IsMaximized) 
      {
        this.OMax.style.display = '';
      }
    }
    else 
    {
      this.elContent.style.height = 'auto';
    }
    
    this.ODiv.style.width = '800px';
    var Screen = Util.innerDimension();
    if (this.ODiv.offsetWidth > Screen.x - 20) 
    {
      this.ODiv.style.width = (Screen.x - 60) + 'px';
      this.ODiv.style.overflow = 'hidden';
    }
    
    this.elContent.style.overflow = 'auto';
  },
  show: function()
  {
    var Err;
    
    try 
    {
      this.ElemPSelector.style.display = 'none';
      this.OMax.style.display = 'none';
      this.OMin.style.display = 'none';
      if (true == this.IsMaximized) 
      {
        this.OMin.style.display = '';
      }
      
      MTJax.Overlay.showWrapper('white');
      this.ODiv.style.visibility = 'hidden';
      this.ODiv.style.display = 'block';
      
      Util.centerOnScreen(this.ODiv);
      this.paint_Icons();
      
      this.ODiv.style.visibility = 'visible';
      this.ODiv.className = 'image';
    } 
    catch (e) 
    {
      Err = e;
    }
    
    if (Err) 
    {
      console.log(Err);
    }
    
    return false;
  }  /**
   * Iniziiert das Schlißeen des Browsers
   * Im Standard, wird der Browser nach 500ms geschlossen
   */
  ,
  hide: function()
  {
    this.hideReset();
    
    if (false == this.ShowClose) 
    {
      if (this.TOMenu) 
      {
        window.clearTimeout(this.TOMenu);
      }
      
      this.TOHide = window.setTimeout(this.hideDo.bind(this), 500);
    }
  },
  hideReset: function()
  {
    //        $('ol_debug').innerHTML += 'resetting :: ' + this.InstanceNum + '<br />';
    if (this.TOHide) 
    {
      window.clearTimeout(this.TOHide);
    }
    this.TOMenu = window.setTimeout(this.showMenu.bind(this), 300);
  }  /**
   * Blendet Wrapper und Browser aus
   */
  ,
  hideDo: function()
  {
    MTJax.Overlay.hideWrapper();
    this.ODiv.style.display = 'none';
  }
};
Jax_Browser = new Class(Jax_Browser);


Jax_BrowserUtil = {
  /**
   * @type {JaxBrowser}
   */
  Instance: null,
  Register: [],
  LastImageTrigger: null  /**
   * @return Der Jax_Browser}
   * @type {JaxBrowser}
   */
  ,
  getInstance: function()
  {
    if (!Jax_BrowserUtil.Instance) 
    {
      Jax_BrowserUtil.Instance = new Jax_Browser();
    }
    
    return Jax_BrowserUtil.Instance;
  }  /**
   * Ruft eine Engine im JaxBrowser auf
   * @param {String} Page Name der Engine
   */
  ,
  browsePage: function(Page)
  {
    var JB = Jax_BrowserUtil.getInstance();
    JB.prepare('browse', Page);
  }
};

Jax_BrowserHistory = new Class();
Jax_BrowserHistory.prototype = {
  initialize: function(Ident, Params)
  {
    this.Ident = Ident;
    this.Params = Params;
  },
  Ident: '',
  Params: ''
};





window.addEvent('domready', function()
{
  document.getElements('.imager').each(function(el)
  {
    JB = Jax_BrowserUtil.getInstance();
    JB.prepareImageTrigger(el);
  });
  JB = Jax_BrowserUtil.getInstance();
  
  document.getElements('.helplink').each(function(el)
  {
    if (el.preppedHelplink) return; el.preppedHelplink = true;
    if (!el.href && !el.src) return;
    
    var JB = Jax_BrowserUtil.getInstance();
    JB.prepareTrigger(el);
  });
});
