/*
	Slimbox v2.04 - The ultimate lightweight Lightbox clone for jQuery
	(c) 2007-2010 Christophe Beyls <http://www.digitalia.be>
	MIT-style license.
*/
(function(w){

var E=w(window),u,f,F=-1,n,x,D,v,y,L,r,m=!window.XMLHttpRequest,s=[],l=document.documentElement,
k={},t=new Image(),J=new  Image(),

H,a,g,p,I,d,G,c,A,K;

//start
var infobox, infocaption, infoshow;
//end

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")
	);

	g=w('<div id="lbImage" />').appendTo(a).append(
		p=w('<div style="position: relative;" />').append([
			I=w('<a id="lbPrevLink" href="#" />').click(B)[0],
			d=w('<a id="lbNextLink" href="#" />').click(e)[0]
		])[0]
	)[0];

	//
	w('<span />').appendTo(H);
	//

	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:true,
		overlayOpacity:1,
		overlayFadeDuration:200,
		resizeDuration:200,
		resizeEasing:"swing",
		initialWidth:250,
		initialHeight:250,
		imageFadeDuration:200,
		captionAnimationDuration:200,
		counterText:"<sup>{x}</sup> &frasl; <sub>{y}</sub>",
		closeKeys:[27,88,67],
		previousKeys:[37,80],
		nextKeys:[39,78]
	},M);


if(typeof O=="string"){
O=[[O,N]];
N=0
}
y=E.scrollTop()+(E.height()/2);
L=u.initialWidth;
r=u.initialHeight;

/*
w(a).css(
{top:Math.max(0,y-(r/2)),
width:L,height:r,marginLeft:-L/2}).show();
*/

w(a).css(
{top:E.scrollTop()+75,
width:L,height:r,marginLeft:-L/2}).show();



v=m||(H.currentStyle&&(H.currentStyle.position!="fixed"));
if(v){H.style.position="absolute"}
w(H).css("opacity",u.overlayOpacity).fadeIn(u.overlayFadeDuration);
z();
j(1);

f=O;
u.loop=u.loop&&(f.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.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 j(M){
	
	if(M){w("object").add(m?"select":"embed").each(function(O,P){
	s[O]=[P,P.style.visibility];
	P.style.visibility="hidden"})}
	else{w.each(s,function(O,P){P[0].style.visibility=P[1]});s=[]}
	
	
	var N=M?"bind":"unbind";
	E[N]("scroll resize",z);
	w(document)[N]("keydown",o)}
	
	
	function o(O){
		var N=O.keyCode,M=w.inArray;
		return(M(N,u.closeKeys)>=0)?C()
			:(M(N,u.nextKeys)>=0)?e()
			:(M(N,u.previousKeys)>=0)?B()
			:false}
	
	function B(){
		return b(x)}
	function e(){
		return b(D)}
	function b(M){
		if(M>=0){
			F=M;
			n=f[F][0];
			x=(F||(u.loop?f.length:0))-1;
			D=((F+1)%f.length)||(u.loop?0:-1);
			
			q();
			a.className="lbLoading";
			
			k=new Image();
			k.onload=i;
			k.src=n
		}
		
		return false}


function i(){
a.className="";
w(g).css({backgroundImage:"url("+n+")",visibility:"hidden",display:""});
w(p).width(k.width);
w([p,I,d]).height(k.height);


//w(A).html(f[F][1]||"");
InfoCaption(f[F][1]||"");


w(K).html((((f.length>1)&&u.counterText)||"").replace(/{x}/,F+1).replace(/{y}/,f.length));

if(x>=0){t.src=f[x][0]}
if(D>=0){J.src=f[D][0]}

L=g.offsetWidth;
r=g.offsetHeight;

/*
var M=Math.max(0,y-(r/2));
*/
var M=E.scrollTop()+75;

if(a.offsetHeight!=r){
w(a).animate({height:r,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(){
	
	var xtop = w(a).position().top + r;
	
	w(G).css({width:L,top:xtop,marginLeft:-L/2,visibility:"hidden",display:""});
	w(g).css({display:"none",visibility:"",opacity:""}).fadeIn(u.imageFadeDuration,h)})}



function h(){
	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 q(){
	k.onload=null;
	k.src=t.src=J.src=n;
	w([a,g,c]).stop(true);
	w([I,d,g,G]).hide()
}

function C() {
	if(F>=0) {
		q();
		F=x=D=-1;
		w(a).hide();
		w(H).stop().fadeOut(u.overlayFadeDuration,j)
		//
		HideInfo();
		//
}
return false
}


//here starts some messy addition




	w(function() {
		w("#lbCenter").append(
			w([
				infobox= w('<div id="infobox" />').append(
					infocaption = w('<div id="infocaption" />').click(ToggleInfo)[0]
				).css({ left: 0, opacity: 0.9, top: -700})[0],
			])
		);

		w("#lbBottom").append(
			w([
				infoshow = w('<a id="infoshow" href="#">Show Info</a>').click(ToggleInfo)[0],
				bar = w('<span id="bar"></span>')[0],
			])
		);
		
		w(bar).html('&nbsp; <b>|</b> &nbsp;');
		
	});



	function InfoCaption(sCaption) {
		var sss = sCaption.split('|');
//		alert(sss);
		w(A).html(sss[0]);

		if (sss.length == 1 || jQuery.trim(sss[1]) == '') {
			w(infoshow).hide();
		}
		else {
			w(infocaption).html(sss[1]);
			w(infoshow).show();
		}

		if (sss.length < 3) {
			w(bar).hide();
		}	
      else {
         var ttt = sss[2].split(',');

         if (parseInt(ttt[0]) == 0) {
            w(bar).hide();
         }
         else {
            w(bar).show();
         }
      }
	}


	function ToggleInfo() {

		var ppp = w(infobox).position();
		if (ppp.top < -10) {
			var ppp = w(a).position();
			w(infobox).animate({ top: 0 });
			w(infoshow).text("Hide Info");
		}
		else {
			w(infobox).animate({ top: -700 });
			w(infoshow).text("Show Info");
		}

		return false;
	}

	function HideInfo() {
		w(infobox).css("top", -700);
		w(infoshow).text("Show Info");
	}

 



//



})(jQuery);



// AUTOLOAD CODE BLOCK (MAY BE CHANGED OR REMOVED)
if (!/android|iphone|ipod|series60|symbian|windows ce|blackberry/i.test(navigator.userAgent)) {
	jQuery(function($) {
		$("a[rel^='lightbox']").slimbox({/* Put custom options here */}, null, function(el) {
			return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
		});
	});
}
