/*
Slimbox v2.02 - The ultimate lightweight Lightbox clone for jQuery
(c) 2007 - 2009 Christophe Beyls < http : // www.digitalia.be >
MIT - style license.
 */
(function(w)
{
   var E = w(window), u, g, F = - 1, o, x, D, v, y, L, s, n = ! window.XMLHttpRequest, e = window.opera && (document.compatMode == "CSS1Compat") && (w.browser.version >= 9.3), m = document.documentElement, l =
   {
   }
   , t = new Image(), J = new Image(), H, a, h, q, I, d, G, c, A, K;
   w(function()
   {
      w("body").append(w([H = w('<div id="lbOverlay" />')[0], a = w('<div id="lbCenter" />')[0], G = w('<div id="lbBottomContainer" />')[0]]).css("display", "none"));
      h = w('<div id="lbImage" />').appendTo(a).append(q = w('<div style="position: relative;" />').append([I = w('<a id="lbPrevLink" href="#" />').click(B)[0], d = w('<a id="lbNextLink" href="#" />').click(f)[0]])[0])[0];
      c = w('<div id="lbBottom" />').appendTo(G).append([w('<a id="lbCloseLink" href="#" />').add(H).click(C)[0], A = w('<div id="lbCaption" />')[0], K = w('<div id="lbNumber" />')[0], w('<div style="clear: both;" />')[0]])[0]
   }
   );
   w.slimbox = function(O, N, M)
   {
      u = w.extend(
      {
         loop : false, overlayOpacity : 0.8, overlayFadeDuration : 400, resizeDuration : 400, resizeEasing : "swing", initialWidth : 250, initialHeight : 250, imageFadeDuration : 400, captionAnimationDuration : 400, counterText : "Image {x} of {y}", closeKeys : [27, 88, 67], previousKeys : [37, 80], nextKeys : [39, 78]
      }
      , M);
      if(typeof O == "string")
      {
         O = [[O, N]];
         N = 0
      }
      y = E.scrollTop() + ((e ? m.clientHeight : E.height()) / 2);
      L = u.initialWidth;
      s = u.initialHeight;
      w(a).css(
      {
         top : Math.max(0, y - (s / 2)), width : L, height : s, marginLeft : - L / 2
      }
      ).show();
      v = n || (H.currentStyle && (H.currentStyle.position != "fixed"));
      if(v)
      {
         H.style.position = "absolute"
      }
      w(H).css("opacity", u.overlayOpacity).fadeIn(u.overlayFadeDuration);
      z();
      k(1);
      g = O;
      u.loop = u.loop && (g.length > 1);
      return b(N)
   }
   ;
   w.fn.slimbox = function(M, P, O)
   {
      P = P || function(Q)
      {
         return[Q.href, Q.title]
      }
      ;
      O = O || function()
      {
         return true
      }
      ;
      var N = this;
      return N.unbind("click").click(function()
      {
         var S = this, U = 0, T, Q = 0, R;
         T = w.grep(N, function(W, V)
         {
            return O.call(S, W, V)
         }
         );
         for(R = T.length; Q < R; ++ Q)
         {
            if(T[Q] == S)
            {
               U = Q
            }
            T[Q] = P(T[Q], Q)
         }
         return w.slimbox(T, U, M)
      }
      )
   }
   ;
   function z()
   {
      var N = E.scrollLeft(), M = e ? m.clientWidth : E.width();
      w([a, G]).css("left", N + (M / 2));
      if(v)
      {
         w(H).css(
         {
            left : N, top : E.scrollTop(), width : M, height : E.height()
         }
         )
      }
   }
      function k(M)
   {
      w("object").add(n ? "select" : "embed").each(function(O, P)
      {
         if(M)
         {
            w.data(P, "slimbox", P.style.visibility)
         }
         P.style.visibility = M ? "hidden" : w.data(P, "slimbox")
      }
      );
      var N = M ? "bind" : "unbind";
      E[N]("scroll resize", z);
      w(document)[N]("keydown", p)
   }
   function p(O)
   {
      var N = O.keyCode, M = w.inArray;
      return(M(N, u.closeKeys) >= 0) ? C() : (M(N, u.nextKeys) >= 0) ? f() : (M(N, u.previousKeys) >= 0) ? B() : false
   }
   function B()
   {
      return b(x)
   }
   function f()
   {
      return b(D)
   }
   function b(M)
   {
      if(M >= 0)
      {
         F = M;
         o = g[F][0];
         x = (F || (u.loop ? g.length : 0)) - 1;
         D = ((F + 1) % g.length) || (u.loop ? 0 : - 1);
         r();
         a.className = "lbLoading";
         l = new Image();
         l.onload = j;
         l.src = o
      }
      return false
   }
   function j()
   {
      a.className = "";
      w(h).css(
      {
         backgroundImage : "url(" + o + ")", visibility : "hidden", display : ""
      }
      );
      w(q).width(l.width);
      w([q, I, d]).height(l.height);
      w(A).html(g[F][1] || "");
      w(K).html((((g.length > 1) && u.counterText) || "").replace(/{x}/, F + 1).replace(/{y}/, g.length));
      if(x >= 0)
      {
         t.src = g[x][0]
      }
      if(D >= 0)
      {
         J.src = g[D][0]
      }
      L = h.offsetWidth;
      s = h.offsetHeight;
      var M = Math.max(0, y - (s / 2));
      if(a.offsetHeight != s)
      {
         w(a).animate(
         {
            height : s, top : M
         }
         , u.resizeDuration, u.resizeEasing)
      }
      if(a.offsetWidth != L)
      {
         w(a).animate(
         {
            width : L, marginLeft : - L / 2
         }
         , u.resizeDuration, u.resizeEasing)
      }
      w(a).queue(function()
      {
         w(G).css(
         {
            width : L, top : M + s, marginLeft : - L / 2, visibility : "hidden", display : ""
         }
         );
         w(h).css(
         {
            display : "none", visibility : "", opacity : ""
         }
         ).fadeIn(u.imageFadeDuration, i)
      }
      )
   }
   function i()
   {
      if(x >= 0)
      {
         w(I).show()
      }
      if(D >= 0)
      {
         w(d).show()
      }
      w(c).css("marginTop", - c.offsetHeight).animate(
      {
         marginTop : 0
      }
      , u.captionAnimationDuration);
      G.style.visibility = ""
   }
   function r()
   {
      l.onload = null;
      l.src = t.src = J.src = o;
      w([a, h, c]).stop(true);
      w([I, d, h, G]).hide()
   }
   function C()
   {
      if(F >= 0)
      {
         r();
         F = x = D = - 1;
         w(a).hide();
         w(H).stop().fadeOut(u.overlayFadeDuration, k)
      }
      return false
   }
}
)(jQuery);

// AUTOLOAD CODE BLOCK (MAY BE CHANGED OR REMOVED)
// jQuery(function($) {
// 	$("a[rel^='lightbox']").slimbox({/* Put custom options here */ }, null, function(el) {
// 		return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
// 	});
// });
