/*
	Slimbox v1.64 - The ultimate lightweight Lightbox clone
	(c) 2007-2008 Christophe Beyls <http://www.digitalia.be>
	MIT-style license.
*/

// IE6 Hack, damit alle PullDowns ausgeblendet werden
function onWindowOpen() {
  var elements = document.getElementsByTagName("select");
  for (i = 0; i < elements.length; i++) {
    elements[i].style.display = "none";
  }
}

function onWindowClose() {
  var elements = document.getElementsByTagName("select");
  for (i = 0; i < elements.length; i++) {
    elements[i].style.display = "inline";
  }
}

var Slimbox;
(function(){
  var G=0,F,L,B,S,T,O,E,M,J=new Image(),K=new Image(),X,a,P,H,W,Z,I,Y,C;
  window.addEvent("domready",function(){
    $(document.body).adopt($$([X=new Element("div",{id:"lbOverlay"}).addEvent("click",N),a=new Element("div",{id:"lbCenter"}),Z=new Element("div",{id:"lbBottomContainer"})]).setStyle("display","none"));
    P=new Element("div",{id:"lbImage"}).injectInside(a).adopt(H=new Element("a",{id:"lbPrevLink",href:"#"}).addEvent("click",D),W=new Element("a",{id:"lbNextLink",href:"#"}).addEvent("click",R));
    I=new Element("div",{id:"lbBottom"}).injectInside(Z).adopt(Y=new Element("div",{id:"lbCaption"}),C=new Element("div",{id:"lbNumber"}),new Element("a",{id:"lbCloseLink",href:"#"}).addEvent("click",N),new Element("div",{styles:{clear:"both"}}));
    E={overlay:new Fx.Tween(X,{property:"opacity",duration:500}).set(0),image:new Fx.Tween(P,{property:"opacity",duration:500,onComplete:A}),bottom:new Fx.Tween(I,{property:"margin-top",duration:400})}});
    Slimbox={open:function(e,d,c){
      onWindowOpen();
      F=$extend({loop:false,overlayOpacity:0.8,resizeDuration:400,resizeTransition:false,initialWidth:250,initialHeight:250,animateCaption:true,showCounter:true,counterText:"<div id='kanumber'>Image {x} of {y}</div><div id='kanavi'><span id='kaprev'><a href='#'><img src='/images/gal_prev.gif' alt='Prev' /></a></span><span id='kanext'><a href='#'><img src='/images/gal_next.gif' alt='Next' /></a></span></div>"},c||{});
      if(typeof e=="string"){
        e=[[e,d]];
        d=0
      }
      L=e;
      F.loop=F.loop&&(L.length>1);
      b();
      Q(true);
      O=window.getScrollTop()+(window.getHeight()/15);
      E.resize=new Fx.Morph(a,$extend({duration:F.resizeDuration,onComplete:A},F.resizeTransition?{transition:F.resizeTransition}:{}));
      a.setStyles({top:O,width:F.initialWidth,height:F.initialHeight,marginLeft:-(F.initialWidth/2),display:""});
      E.overlay.start(F.overlayOpacity);
      G=1;
      return U(d)
    }
  };
  Element.implement({slimbox:function(c,d){$$(this).slimbox(c,d);return this}});
  Elements.implement({slimbox:function(c,f,e){
    f=f||function(g){return[g.href,g.title]};
    e=e||function(){return true};
    var d=this;
    d.removeEvents("click").addEvent("click",function(){
      var g=d.filter(e,this);
      return Slimbox.open(g.map(f),g.indexOf(this),c)
    });
    return d
  }});
  function b(){
    X.setStyles({top:window.getScrollTop(),height:window.getHeight()})
  }
  function Q(c){
    ["object",window.ie?"select":"embed"].forEach(function(e){
      Array.forEach(document.getElementsByTagName(e),function(f){
        if(c){f._slimbox=f.style.visibility}f.style.visibility=c?"hidden":f._slimbox
      })
    });
    X.style.display=c?"":"none";
    var d=c?"addEvent":"removeEvent";
    window[d]("scroll",b)[d]("resize",b);
    document[d]("keydown",V)}function V(c){
      switch(c.code){
        case 27:
        case 88:
        case 67:
          N();
          break;
        case 37:
        case 80:
          D();
          break;
        case 39:
        case 78:
          R()
      }
      return false
    }
    function D(){return U(S)}
    function R(){return U(T)}
    function U(c){
      if((G==1)&&(c>=0)){
        G=2;
        B=c;
        S=((B||!F.loop)?B:L.length)-1;
        T=B+1;
        if(T==L.length){T=F.loop?0:-1}
        $$(H,W,P,Z).setStyle("display","none");
        E.bottom.cancel().set(0);
        E.image.set(0);
        a.className="lbLoading";
        M=new Image();
        M.onload=A;
        M.src=L[c][0]
      }
      return false
    }
    function A(){
      switch(G++){
        case 2:
          a.className="";
          P.setStyles({backgroundImage:"url("+L[B][0]+")",display:""});
          $$(P,I).setStyle("width",M.width);
          $$(P,H,W).setStyle("height",M.height);
          Y.set("html",L[B][1]||"");
          C.set("html",(F.showCounter&&(L.length>1))?F.counterText.replace(/{x}/,B+1).replace(/{y}/,L.length):"");
          $("kaprev").addEvent("click",D);
          $("kanext").addEvent("click",R);
          if(S>=0){
            J.src=L[S][0];
            $("kaprev").setStyle("display","inline");
          }
          else {
            $("kaprev").setStyle("display","none");
          }
          if(T>=0){
            K.src=L[T][0]
            $("kanext").setStyle("display","inline");
          }
          else {
            $("kanext").setStyle("display","none");
          }
          $("kanavi").setStyle("width",M.width - 200);
          if(a.clientHeight!=P.offsetHeight){E.resize.start({height:P.offsetHeight});break}
          G++;
        case 3:
          if(a.clientWidth!=P.offsetWidth){E.resize.start({width:P.offsetWidth,marginLeft:-P.offsetWidth/2});break}
          G++;
        case 4:
          Z.setStyles({top:O+a.clientHeight,marginLeft:a.style.marginLeft,visibility:"hidden",display:""});
          E.image.start(1);
          break;
        case 5:
          if(S>=0){H.style.display=""}
          if(T>=0){W.style.display=""}
          if(F.animateCaption){E.bottom.set(-I.offsetHeight).start(0)}
          Z.style.visibility="";
          G=1
      }
    }
    function N(){
      onWindowClose();
      if(G){G=0;
      M.onload=$empty;
      for(var c in E){E[c].cancel()}
      $$(a,Z).setStyle("display","none");
      E.overlay.chain(Q).start(0)
    }
    return false
  }
})();

// AUTOLOAD CODE BLOCK (MAY BE CHANGED OR REMOVED)
Slimbox.scanPage = function() {
	var links = $$("a").filter(function(el) {
		return el.rel && el.rel.test(/^lightbox/i);
	});
	$$(links).slimbox({/* Put custom options here */}, null, function(el) {
		return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
	});
};
window.addEvent("domready", Slimbox.scanPage);
