/*
	Slimbox v1.53 - The ultimate lightweight Lightbox clone
	(c) 2007-2008 Christophe Beyls <http://www.digitalia.be>
	MIT-style license.
*/
	var Slimbox;(function(){var G=0,F,L,B,S,T,O,b,E,M,J=new Image(),K=new Image(),X,a,P,H,W,Z,I,Y,C;window.addEvent("domready",function(){b=V.bindWithEvent();$(document.body).adopt($$([X=new Element("div",{id:"lbOverlay"}),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:"#"}),W=new Element("a",{id:"lbNextLink",href:"#"}));H.onclick=D;W.onclick=R;var d;I=new Element("div",{id:"lbBottom"}).injectInside(Z).adopt(d=new Element("a",{id:"lbCloseLink",href:"#"}),Y=new Element("div",{id:"lbCaption"}),C=new Element("div",{id:"lbNumber"}),new Element("div",{styles:{clear:"both"}}));d.onclick=X.onclick=N;E={overlay:X.effect("opacity",{duration:500}).set(0),image:P.effect("opacity",{duration:500,onComplete:A}),bottom:I.effect("margin-top",{duration:400})}});Slimbox={open:function(f,e,d){F=$extend({loop:false,overlayOpacity:0.8,resizeDuration:400,resizeTransition:false,initialWidth:250,initialHeight:250,animateCaption:true,showCounter:true,counterText:"Image {x} of {y}"},d||{});if(typeof f=="string"){f=[[f,e]];e=0}L=f;F.loop=F.loop&&(L.length>1);c();Q(true);O=window.getScrollTop()+(window.getHeight()/15);E.resize=a.effects($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(e)}};Element.extend({slimbox:function(d,e){$$(this).slimbox(d,e);return this}});Elements.extend({slimbox:function(d,g,f){g=g||function(h){return[h.href,h.title]};f=f||function(){return true};var e=this;e.forEach(function(h){h.onclick=function(){var i=e.filter(f,this);return Slimbox.open(i.map(g),i.indexOf(this),d)}});return e}});function c(){X.setStyles({top:window.getScrollTop(),height:window.getHeight()})}function Q(d){["object",window.ie?"select":"embed"].forEach(function(f){$each(document.getElementsByTagName(f),function(g){if(d){g._slimbox=g.style.visibility}g.style.visibility=d?"hidden":g._slimbox})});X.style.display=d?"":"none";var e=d?"addEvent":"removeEvent";window[e]("scroll",c)[e]("resize",c);document[e]("keydown",b)}function V(d){switch(d.code){case 27:case 88:case 67:N();break;case 37:case 80:D();break;case 39:case 78:R()}d.preventDefault()}function D(){return U(S)}function R(){return U(T)}function U(d){if((G==1)&&(d>=0)){G=2;B=d;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.stop().set(0);E.image.set(0);a.className="lbLoading";M=new Image();M.onload=A;M.src=L[d][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.setHTML(L[B][1]||"");C.setHTML((F.showCounter&&(L.length>1))?F.counterText.replace(/{x}/,B+1).replace(/{y}/,L.length):"");if(S>=0){J.src=L[S][0]}if(T>=0){K.src=L[T][0]}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(){if(G){G=0;M.onload=Class.empty;for(var d in E){E[d].stop()}$$(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));
		});
	};

var Site = {
	
	start: function(){
		if ($('tabmenu')) Site.tabMenuOver();
		if ($('tabmenu2')) Site.tabMenuOver2();
	},
	
	tabMenuOver: function(){
		var tabmenu = $$('#tabmenu .tab');
		var dropdown = $$('#tabmenu .tab #dropdown_wrapper');
		var slider = new Fx.Slide('dropdown', {duration: 600, wait:false, onActive:function(){Site.toggleVisibility(this.element)}});
		slider.hide();
		tabmenu.addEvent('mouseover', function(){
			Site.toggleVisibility(dropdown)
			slider.slideIn();
		});
		tabmenu.addEvent('mouseout', function(){
			slider.slideOut();		
		});
	},
	
	tabMenuOver2: function(){
		var tabmenu2 = $$('#tabmenu2 .tab2');
		var dropdown2 = $$('#tabmenu2 .tab2 #dropdown_wrapper2');
		var slider = new Fx.Slide('dropdown2', {duration: 600, wait:false, onActive:function(){Site.toggleVisibility(this.element)}});
		slider.hide();
		tabmenu2.addEvent('mouseover', function(){
			Site.toggleVisibility(dropdown2)
			slider.slideIn();
		});
		tabmenu2.addEvent('mouseout', function(){
			slider.slideOut();		
		});
	},
	
	toggleVisibility: function(el){
		var currentStyle = el.getStyle('visibility');
		if(currentStyle == 'hidden'){
			el.setStyles({'visibility': 'visible'});
		};
	}
		
};

window.addEvent("domready",Slimbox.scanPage);
window.addEvent("domready", Site.start);


Fx.Slide = Fx.Base.extend({

	options: {
		mode: 'vertical'
	},

	initialize: function(el, options){
		this.element = $(el);
		this.wrapper = new Element('div', {'styles': $extend(this.element.getStyles('margin'), {'overflow': 'hidden'})}).injectAfter(this.element).adopt(this.element);
		this.element.setStyle('margin', 0);
		this.setOptions(options);
		this.now = [];
		this.parent(this.options);
		this.open = true;
		this.addEvent('onComplete', function(){
			this.open = (this.now[0] === 0);
		});
		if (window.webkit419) this.addEvent('onComplete', function(){
			if (this.open) this.element.remove().inject(this.wrapper);
		});
	},

	setNow: function(){
		for (var i = 0; i < 2; i++) this.now[i] = this.compute(this.from[i], this.to[i]);
	},

	vertical: function(){
		this.margin = 'margin-top';
		this.layout = 'height';
		this.offset = this.element.offsetHeight;
	},

	horizontal: function(){
		this.margin = 'margin-left';
		this.layout = 'width';
		this.offset = this.element.offsetWidth;
	},

	/*
	Property: slideIn
		Slides the elements in view horizontally or vertically.

	Arguments:
		mode - (optional, string) 'horizontal' or 'vertical'; defaults to options.mode.
	*/

	slideIn: function(mode){
		this[mode || this.options.mode]();
		return this.start([this.element.getStyle(this.margin).toInt(), this.wrapper.getStyle(this.layout).toInt()], [0, this.offset]);
	},

	/*
	Property: slideOut
		Sides the elements out of view horizontally or vertically.

	Arguments:
		mode - (optional, string) 'horizontal' or 'vertical'; defaults to options.mode.
	*/

	slideOut: function(mode){
		this[mode || this.options.mode]();
		return this.start([this.element.getStyle(this.margin).toInt(), this.wrapper.getStyle(this.layout).toInt()], [-this.offset, 0]);
	},

	/*
	Property: hide
		Hides the element without a transition.

	Arguments:
		mode - (optional, string) 'horizontal' or 'vertical'; defaults to options.mode.
	*/

	hide: function(mode){
		this[mode || this.options.mode]();
		this.open = false;
		return this.set([-this.offset, 0]);
	},

	/*
	Property: show
		Shows the element without a transition.

	Arguments:
		mode - (optional, string) 'horizontal' or 'vertical'; defaults to options.mode.
	*/

	show: function(mode){
		this[mode || this.options.mode]();
		this.open = true;
		return this.set([0, this.offset]);
	},

	/*
	Property: toggle
		Slides in or Out the element, depending on its state

	Arguments:
		mode - (optional, string) 'horizontal' or 'vertical'; defaults to options.mode.

	*/

	toggle: function(mode){
		if (this.wrapper.offsetHeight == 0 || this.wrapper.offsetWidth == 0) return this.slideIn(mode);
		return this.slideOut(mode);
	},

	increase: function(){
		this.element.setStyle(this.margin, this.now[0] + this.options.unit);
		this.wrapper.setStyle(this.layout, this.now[1] + this.options.unit);
	}

});



