if(typeof (AC)=="undefined"){
	AC={}
}
AC.Bureau=Class.create();
Object.extend(AC.Bureau.prototype,Event.Listener);
Object.extend(AC.Bureau.prototype,{
		drawers:null,container:null,triggerTimeout:null,initialize:function(A){
			this.drawers=[];
			this.container=$(A)
		},addDrawer:function(A){},getDrawerCount:function(){
			return this.drawers.length
		},hasDrawers:function(){
			return(this.drawers.length>0)
		},getFirstDrawer:function(){
			return this.drawers[0]||null
		},getLastDrawer:function(){
			return this.drawers[this.drawers.length-1]||null
		},scheduleTrigger:function(B,A){
			this.triggerTimeout=setTimeout(B,A)
		},clearTrigger:function(){
			clearTimeout(this.triggerTimeout)
		}
	}
);
AC.Drawer=Class.create();
Object.extend(AC.Drawer.prototype,Event.Publisher);
Object.extend(AC.Drawer.prototype,{
	bureau:null,
	contentElement:null,
	handle:null,
	indicator:null,
	isOpen:true,
	beforeOpen:null,
	afterOpen:null,
	beforeClose:null,
	afterClose:null,
	transitionDuration:0.3,
	triggerDelay:0,
	initialize:function(F,D,B,C){
		this.contentElement=$(F);
		this.handle=$(D);
		this.bureau=B;
		var E="click";
		if(C!==null&&typeof (C)!="undefined"){
			this.beforeOpen=C.beforeOpen;
			this.afterOpen=C.afterOpen;
			this.beforeClose=C.beforeClose;
			this.afterClose=C.afterClose;
			if(typeof (C.triggerEvent)!="undefined"){
				E=C.triggerEvent
			}
			if(typeof (C.triggerDelay)!="undefined"){
				this.triggerDelay=C.triggerDelay
			}
			if(typeof (C.transitionDuration)!="undefined"){
				this.transitionDuration=C.transitionDuration
			}
		}
		Element.addClassName(this.contentElement,"last");
		var A=function(G){
			Event.stop(G);
			if(this.triggerDelay>0){
				var H=this.trigger.bind(this);
				B.scheduleTrigger(H,this.triggerDelay)
			}else{
				this.trigger()
			}
		};
		Event.observe(this.handle,E,A.bind(this),false);
		Event.observe(this.handle,"mouseout",B.clearTrigger.bind(B),false)
	},toggle:function(){
	},open:function(){
	},close:function(){
	}
}
);

AC.SlidingBureau=Class.create();

Object.extend(AC.SlidingBureau.prototype,AC.Bureau.prototype);

Object.extend(AC.SlidingBureau.prototype,{
	isLocked:false,addDrawer:function(B){
		Element.addClassName(B.contentElement,"last");
		Element.addClassName(B.handle,"last");
		if(this.hasDrawers()){
			var A=this.getLastDrawer();
			A.setNextDrawer(B);
			B.setPreviousDrawer(A)
		} else {
			Element.addClassName(B.contentElement,"first");
			Element.addClassName(B.handle,"first")
		}
		this.listenForEvent(B,"beforeOpen",false,function(C){
			var D=C.event_data.data;
			this.open(D)
		}
	);
	this.listenForEvent(B,"afterOpen",false,function(C){
		var D=C.event_data.data;
		this.acknowledgeOpened(D)
	}
);
	this.listenForEvent(B,"beforeClose",false,function(C){
		var D=C.event_data.data;
		this.close(D)
	}
);
this.listenForEvent(B,"afterClose",false,function(C){
	var D=C.event_data.data;
	this.acknowledgeClosed(D)
	}
);
if(!Element.hasClassName(B.contentElement,"open")){
	B.initiateClose()
}else{
	this.currentDrawer=B
}
this.drawers.push(B)
},open:function(A){
	if(this.isLocked){
		return 
	}
this.isLocked=true;
var C=0;
if(Element.getStyle(this.container,"position")=="relative"){
	var B=Element.getDimensions(this.container);
	Element.setStyle(this.container,{height:B.height+"px"});
	this.wedgeDrawersAfter(A);
	C=Element.getStyle(A.contentElement,"min-height");
	if(C){
		Element.setStyle(A.contentElement,{
			"min-height":"0px",height:C
		})
	}
}
if(this.currentDrawer){
	this.currentDrawer.initiateClose()
}
A.open(C)
},acknowledgeOpened:function(A){
this.currentDrawer=A;
if(Element.getStyle(this.container,"position")=="relative"){
	if(!AC.Detector.isIEStrict()){
		Element.setStyle(this.container,{
		height:"auto"
	})
}
this.unwedgeDrawers()
}
this.isLocked=false
},close:function(A){
var B=0;
	if(Element.getStyle(this.container,"position")=="relative"){
		B=Element.getStyle(A.contentElement,"min-height");
			if(B){
				Element.setStyle(A.contentElement,{
				height:B,"min-height":"0px"
			})
		}
	}
	A.close(B)
	},acknowledgeClosed:function(A){
		if(A==this.currentDrawer){
			this.currentDrawer=null
		}
	},wedgeDrawersAfter:function(D){
		var A=function(E,F){
			Element.setStyle(E.handle,{position:"absolute",bottom:F+"px"})
		};
		var B=this.getLastDrawer();
		var C=0;
		while(B!=this.currentDrawer&&B!=D){
			A(B,C);
			C+=B.handle.getHeight();
			B=B.previousDrawer
		}
	},unwedgeDrawers:function(){
		for(var A=this.drawers.length-1;A>=0;A--){
			Element.setStyle(this.drawers[A].handle,{position:"static"})
		}
	}
});
//
AC.SlidingDrawer=Class.create();
Object.extend(AC.SlidingDrawer.prototype,AC.Drawer.prototype);
Object.extend(AC.SlidingDrawer.prototype,{
	isOpen:true,isTransitioning:false,setNextDrawer:function(A){
		this.nextDrawer=A;
		Element.removeClassName(this.contentElement,"last");
		Element.removeClassName(this.handle,"last")
		},setPreviousDrawer:function(A){
			this.previousDrawer=A
			},trigger:function(){
				this.toggle()
			},toggle:function(){
				if(!this.isOpen){
					this.initiateOpen()
				}
			},initiateOpen:function(){
				if(this.isTransitioning||this.isOpen){
					return 
				}
				this.dispatchEvent("beforeOpen",this)
				},open:function(C){
					this.isTransitioning=true;
					if(typeof (this.beforeOpen)=="function"){
						this.beforeOpen(this)
					}
					Element.addClassName(this.contentElement,"open");
					Element.addClassName(this.handle,"open");
					var B=function(){
						this.isOpen=true;
						if(C){
							Element.setStyle(this.contentElement,{"min-height":C});
							if(!AC.Detector.isIEStrict()){
								Element.setStyle(this.contentElement,{"height":"auto"})
							}
						}
						this.dispatchEvent("afterOpen",this);
						this.isTransitioning=false;
						if(typeof (this.afterOpen)=="function"){
							this.afterOpen(this)
						}
					}.bind(this);
					var A=new Effect.BlindDown(this.contentElement,{
						duration:this.transitionDuration,afterFinish:B
					})
				},initiateClose:function(A){
					if(this.isTransitioning||!this.isOpen){
						return 
					}this.dispatchEvent("beforeClose",this)
				},close:function(C){
					this.isTransitioning=true;
					if(typeof (this.beforeClose)=="function"){
						this.beforeClose(this)
					}
					var B=function(){
						this.isOpen=false;
						Element.removeClassName(this.contentElement,"open");
						Element.removeClassName(this.handle,"open");
						if(C){
							Element.setStyle(this.contentElement,{
							"min-height":C
						});
						if(!AC.Detector.isIEStrict()){
							Element.setStyle(this.contentElement,{
							"height":"auto"
						})
					}
				}
				this.dispatchEvent("afterClose",this);
				this.isTransitioning=false;
				if(typeof (this.afterClose)=="function"){
					this.afterClose(this)
				}
			}.bind(this);
			var A=new Effect.BlindUp(this.contentElement,{
			duration:this.transitionDuration,afterFinish:B})
	
	}
});
//
AC.SectionBureau=Class.create();
Object.extend(AC.SectionBureau.prototype,AC.Bureau.prototype);
Object.extend(AC.SectionBureau.prototype,{
	currentDrawer:null,locked:false,addDrawer:function(A){
		this.drawers.push(A);
		Element.addClassName(A.handle,"obscured");
		Element.hide(A.contentElement)
	},openingDrawer:function(A){
	if(this.currentDrawer!==null){
		this.currentDrawer.close()
	}
		this.currentDrawer=A
	}
});
//
AC.SectionDrawer=Class.create();
Object.extend(AC.SectionDrawer.prototype,AC.Drawer.prototype);
Object.extend(AC.SectionDrawer.prototype,{
	isOpen:false,trigger:function(){
		this.toggle()
	},toggle:function(){
		if(!this.isOpen){
			this.open()
		}
	},open:function(){
	if(this.bureau.locked){
		return
	}
	var B=function(){
		Element.show(this.contentElement)
	}.bind(this);
	if(typeof (this.afterOpen)=="function"){
		this.bureau.locked=true;
		B=this.afterOpen.bind(this)
	}
	this.bureau.openingDrawer(this);
	if(typeof (this.beforeOpen)=="function"){
		this.beforeOpen()
	}
	this.isOpen=true;
	Element.removeClassName(this.handle,"obscured");
	var A=new Effect.Appear(this.contentElement,{
		afterFinish:B,duration:this.transitionDuration,queue:{
			scope:"sectionalscope"
		}
	})
},close:function(){
	if(typeof (this.beforeClose)=="function"){
		this.beforeClose()
	}
	this.isOpen=false;
	Element.addClassName(this.handle,"obscured");
	var A=function(){
		if(typeof (this.afterClose)=="function"){
			this.afterClose()
		}
	}.bind(this);
	var B=new Effect.Fade(this.contentElement,{
		afterFinish:A,duration:this.transitionDuration,queue:{
		scope:"sectionalscope"
	}
})
},reportFinishedOpening:function(){
		this.bureau.locked=false
	}
})