if (typeof(AC) == "undefined") { AC = {}; }
AC.SlidingBureau = Class.create();
Object.extend(AC.SlidingBureau.prototype, AC.Bureau.prototype);
Object.extend(AC.SlidingBureau.prototype,{
	isLocked:false,
	addDrawer:	function(newDrawer) 
				{
					Element.addClassName(newDrawer.contentElement, 'last');
					Element.addClassName(newDrawer.handle, 'last');
					if(this.hasDrawers()){var lastDrawer = this.getLastDrawer();lastDrawer.setNextDrawer(newDrawer); newDrawer.setPreviousDrawer(lastDrawer);} 
					else{Element.addClassName(newDrawer.contentElement, 'first'); Element.addClassName(newDrawer.handle, 'first');}
					this.listenForEvent(newDrawer, 'beforeOpen', false, function(evt){var drawer = evt.event_data.data;this.open(drawer);});
					this.listenForEvent(newDrawer, 'afterOpen', false, function(evt){var drawer = evt.event_data.data;this.acknowledgeOpened(drawer);});
					this.listenForEvent(newDrawer, 'beforeClose', false, function(evt){var drawer = evt.event_data.data;this.close(drawer);});
					this.listenForEvent(newDrawer, 'afterClose', false, function(evt){var drawer = evt.event_data.data;this.acknowledgeClosed(drawer);});
					if (!Element.hasClassName(newDrawer.contentElement, 'open')){newDrawer.initiateClose();} 
					else{this.currentDrawer = newDrawer;}
					this.drawers.push(newDrawer);
				},
	
	open: 		function(drawer) 
				{
					if(this.isLocked){return;}
					this.isLocked = true;
					if(Element.getStyle(this.container, 'position') == 'relative')
					{
						var dimensions = Element.getDimensions(this.container);
						Element.setStyle(this.container, {height: dimensions.height + "px"});
						this.wedgeDrawersAfter(drawer);
						var minHeight = Element.getStyle(drawer.contentElement, 'min-height');
						if(minHeight){Element.setStyle(drawer.contentElement,{'min-height': '0px',	height: minHeight}) }
					}
					if(this.currentDrawer){this.currentDrawer.initiateClose();}
					drawer.open(minHeight);
				},
	
acknowledgeOpened: 
				function(drawer) 
				{
					this.currentDrawer = drawer;
					if (Element.getStyle(this.container, 'position') == 'relative') 
					{
						if (!AC.Detector.isIEStrict()){Element.setStyle(this.container, {height: "auto"});}
						this.unwedgeDrawers();
					}
					this.isLocked = false;
				},
	
	close: 		function(drawer)
				{
					if (Element.getStyle(this.container, 'position') == 'relative') 
					{
						var minHeight = Element.getStyle(drawer.contentElement, 'min-height');
						if(minHeight) {Element.setStyle(drawer.contentElement,{height: minHeight,'min-height': '0px'});}
					}
					drawer.close(minHeight);
				},
	
acknowledgeClosed:function(drawer){if(drawer == this.currentDrawer){this.currentDrawer = null;}},
wedgeDrawersAfter:function(drawerBeingOpened) 
				{
						var wedgeDrawer = function(drawer, offset){Element.setStyle(drawer.handle,{position: 'absolute',bottom: offset + 'px'})}
						var drawer = this.getLastDrawer();
						var offset = 0;
						while (drawer!= this.currentDrawer && drawer != drawerBeingOpened) {wedgeDrawer(drawer, offset);offset += drawer.handle.getHeight();drawer = drawer.previousDrawer;}
		
				},
unwedgeDrawers: function(){for (var i = this.drawers.length - 1; i >= 0; i--){Element.setStyle(this.drawers[i].handle,{position: 'static'})};}
});
