diff --git a/bigbluebutton-client/.actionScriptProperties b/bigbluebutton-client/.actionScriptProperties
index 6eb98fd82aa93371bc995095c5a74cfe4736e867..7b32595eccac789a0f12706be9fc54fcc60ecb40 100644
--- a/bigbluebutton-client/.actionScriptProperties
+++ b/bigbluebutton-client/.actionScriptProperties
@@ -19,6 +19,7 @@
 </excludedEntries>
 </libraryPathEntry>
 <libraryPathEntry kind="1" linkType="1" path="libs"/>
+<libraryPathEntry kind="3" linkType="1" path="/flexlib/bin/flexlib.swc" useDefaultLinkType="false"/>
 </libraryPath>
 <sourceAttachmentPath>
 <sourceAttachmentPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/datavisualization.swc" sourcepath="${PROJECT_FRAMEWORKS}/source" useDefaultLinkType="false"/>
diff --git a/bigbluebutton-client/libs/flexlib.swc b/bigbluebutton-client/libs/flexlib.swc
index 597c87b142af05de4e2919da0fdcf25b03e2f51f..7f8258dfc80a58abff4d42e26f1e94c9e90ec3bb 100644
Binary files a/bigbluebutton-client/libs/flexlib.swc and b/bigbluebutton-client/libs/flexlib.swc differ
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/chat/views/components/ChatView.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/chat/views/components/ChatView.mxml
index eb7a6f265951ce7d74362e685543d9a5bae24b32..39c72f1fe02b4b9b8bb27384a52cd0d7342a6c5a 100644
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/chat/views/components/ChatView.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/chat/views/components/ChatView.mxml
@@ -3,7 +3,7 @@
 	xmlns:mate="http://mate.asfusion.com/"
 	creationComplete="onCreationComplete()"
 	xmlns:flexlib="http://code.google.com/p/flexlib/"
-	width="100%" height="100%">
+	width="100%" height="100%" xmlns:containers="flexlib.containers.*">
 
 	<mate:Listener type="{PrivateChatMessageEvent.PRIVATE_CHAT_MESSAGE_EVENT}" method="handlePrivateChatMessageEvent"/>
 	<mate:Listener type="{PublicChatMessageEvent.PUBLIC_CHAT_MESSAGE_EVENT}" method="handlePublicChatMessageEvent"/>
@@ -340,7 +340,7 @@
 
 		]]>
 	</mx:Script>
-	<flexlib:SuperTabNavigator id="chatTabs" width="100%" height="100%" change="onTabNavChange()" tabClose="onTabClose(event)"/>
+	<containers:SuperTabNavigator id="chatTabs" width="100%" height="100%" change="onTabNavChange()" tabClose="onTabClose(event)"/>
 	
 	<mx:ApplicationControlBar id="chatCtrlBar" width="100%" height="10%">		
 		<mx:TextInput id="txtMsg" width="100%" enter="sendMessages()"/>
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/chat/views/components/ChatWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/chat/views/components/ChatWindow.mxml
index 905d84fd1a2998e9a7a882079a1f4b9bdf646954..42f82e8f8c93aa341a254f52578f0c83640547a8 100644
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/chat/views/components/ChatWindow.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/chat/views/components/ChatWindow.mxml
@@ -38,30 +38,6 @@
 			private var _yPosition:int;
 			private var localDispatcher:IEventDispatcher;
 			
-			//The following code block is to deal with a bug in FLexLib with MDI windows not responding well to being maximized
-			private var savedWindowWidth:Number;
-			private var savedWindowHeight:Number;
-			private var savedX:Number;
-			private var savedY:Number;
-			private var isMaximized:Boolean = false;
-			override public function maximize():void{
-				if (!isMaximized){
-					savedWindowHeight = this.height;
-					savedWindowWidth = this.width;
-					savedX = this.x;
-					savedY = this.y;
-                	dispatchEvent(new MDIWindowEvent(MDIWindowEvent.MAXIMIZE, this));
-                	isMaximized = true;
-				} else{
-					this.width = savedWindowWidth;
-					this.height = savedWindowHeight;
-					this.x = savedX;
-					this.y = savedY;
-					isMaximized = false;
-					//dispatchEvent(new MDIWindowEvent(MDIWindowEvent.RESTORE, this));
-				}	
-			}
-			
 			private var dispState:String;
 			
 			[Bindable] private var _defaultWidth:int = 490;
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/deskShare/view/components/DesktopViewWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/deskShare/view/components/DesktopViewWindow.mxml
index b55257a84f63b341b522b5109249efa1cbb08515..e97b66ab4ec3190feef06076167ac9213c430f5c 100644
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/deskShare/view/components/DesktopViewWindow.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/deskShare/view/components/DesktopViewWindow.mxml
@@ -30,7 +30,8 @@
 	implements="org.bigbluebutton.common.IBbbModuleWindow"
 	xmlns:mate="http://mate.asfusion.com/"
 	title="Desktop Sharing" 
-	showCloseButton="false">
+	showCloseButton="false"
+	resize="fitToWindow()">
 	
 	<mate:Listener type="{ViewStreamEvent.STOP}" method="onStopViewStreamEvent" />
 		
@@ -56,43 +57,9 @@
 			private var _xPosition:int = 675;
 			private var _yPosition:int = 310;
 			
-			// The following code block is to deal with a bug in FLexLib 
-			// with MDI windows not responding well to being maximized
-			private var savedWindowWidth:Number;
-			private var savedWindowHeight:Number;
-			private var savedX:Number;
-			private var savedY:Number;
-			private var isMaximized:Boolean = false;
-			
 			private static const VIDEO_WIDTH_PADDING:int = 7;
 			private static const VIDEO_HEIGHT_PADDING:int = 65;
 			
-			// Timer to make sure the video fits to window whenever the window is resized.
-			private var fitToWindowTimer:Timer;
-			
-			override public function maximize():void{
-				if (!isMaximized){
-					savedWindowHeight = this.height;
-					savedWindowWidth = this.width;
-					savedX = this.x;
-					savedY = this.y;    
-					dispatchEvent(new MDIWindowEvent(MDIWindowEvent.MAXIMIZE, this));            	
-                	isMaximized = true;
-                	windowControls.maximizeRestoreBtn.toolTip = "Restore to previous size";
-				} else{
-					this.width = savedWindowWidth;
-					this.height = savedWindowHeight;
-					this.x = savedX;
-					this.y = savedY;
-					isMaximized = false;
-					windowControls.maximizeRestoreBtn.toolTip = "Maximize this window";
-				}				
-			}
-			
-			private function timerHandler(event:TimerEvent):void {				
-				fitToWindow();
-			}
-			
 			private function onCreationComplete():void{
 				windowControls.maximizeRestoreBtn.toolTip = "Maximize this window";
 				windowControls.minimizeBtn.toolTip = "Minimize this window";
@@ -105,16 +72,6 @@
 				this.width = 600;
 				addEventListener(MDIWindowEvent.RESIZE_END, onResizeEndEvent);				
 				fitToWindow();
-				
-				/*
-				 * Need to have a timer to trigger resizing video to window after the 
-				 * window has been maximized/restored. The MAXIMIZE/RESTORE events are
-				 * generated when the button is clicked so the width and height are not
-				 * the ones we want.
-				 */
-				fitToWindowTimer = new Timer(100);
-				fitToWindowTimer.addEventListener(TimerEvent.TIMER, timerHandler);
-				fitToWindowTimer.start();
 			}
 			
 			private function onResizeEndEvent(event:MDIWindowEvent):void {
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/join/views/JoinWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/join/views/JoinWindow.mxml
index fea364f5aa83346435ae7309110779f0d96c5fbc..28ac2b62efb9a7ff9a478f611246b7fad691fe2a 100644
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/join/views/JoinWindow.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/join/views/JoinWindow.mxml
@@ -6,31 +6,7 @@
 	
 	<mx:Script>
 		<![CDATA[
-			
-			//The following code block is to deal with a bug in FLexLib with MDI windows not responding well to being maximized
-			private var savedWindowWidth:Number;
-			private var savedWindowHeight:Number;
-			private var savedX:Number;
-			private var savedY:Number;
-			private var isMaximized:Boolean = false;
-			override public function maximize():void{
-				if (!isMaximized){
-					savedWindowHeight = this.height;
-					savedWindowWidth = this.width;
-					savedX = this.x;
-					savedY = this.y;
-                	dispatchEvent(new MDIWindowEvent(MDIWindowEvent.MAXIMIZE, this));
-                	isMaximized = true;
-				} else{
-					this.width = savedWindowWidth;
-					this.height = savedWindowHeight;
-					this.x = savedX;
-					this.y = savedY;
-					isMaximized = false;
-					//dispatchEvent(new MDIWindowEvent(MDIWindowEvent.RESTORE, this));
-				}	
-			}
-			
+		
 			private var _xPosition:int;
 			private var _yPosition:int;
 
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/notes/views/Notes.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/notes/views/Notes.mxml
index 947a1fd09a49bfc24a38963e1e77727edcb713f9..ed1960efd7494b560ba90b0a30c5a4aeec2a6d56 100644
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/notes/views/Notes.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/notes/views/Notes.mxml
@@ -21,30 +21,6 @@ Notes.mxml is the main view of the SharedNotes application
 			private var timer:Timer;
 			private var dirty:Boolean = true;
 			
-			//The following code block is to deal with a bug in FLexLib with MDI windows not responding well to being maximized
-			private var savedWindowWidth:Number;
-			private var savedWindowHeight:Number;
-			private var savedX:Number;
-			private var savedY:Number;
-			private var isMaximized:Boolean = false;
-			override public function maximize():void{
-				if (!isMaximized){
-					savedWindowHeight = this.height;
-					savedWindowWidth = this.width;
-					savedX = this.x;
-					savedY = this.y;
-                	dispatchEvent(new MDIWindowEvent(MDIWindowEvent.MAXIMIZE, this));
-                	isMaximized = true;
-				} else{
-					this.width = savedWindowWidth;
-					this.height = savedWindowHeight;
-					this.x = savedX;
-					this.y = savedY;
-					isMaximized = false;
-					//dispatchEvent(new MDIWindowEvent(MDIWindowEvent.RESTORE, this));
-				}	
-			}
-			
 			private function startTimer():void{
 				timer = new Timer(1000);
 				timer.addEventListener(TimerEvent.TIMER, timerHandler);
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/present/views/PresentationWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/present/views/PresentationWindow.mxml
index bf4c5732882860fac7e4e61c2b619313514cfe56..4ea401b7501fcadc17b9eee421cd3d1d50adffc0 100644
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/present/views/PresentationWindow.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/present/views/PresentationWindow.mxml
@@ -31,10 +31,11 @@
 	implements="org.bigbluebutton.common.IBbbModuleWindow"
 	mouseMove="hideThumbnails()"
 	creationComplete="onCreationComplete()"
+	resize="maximizeHandler()"
 	rollOut="hideThumbs()" xmlns:mate="http://mate.asfusion.com/"
 	width="{DEFAULT_WINDOW_WIDTH}" height="{DEFAULT_WINDOW_HEIGHT}" 
 	x="{DEFAULT_X_POSITION}" y="{DEFAULT_Y_POSITION}"
-	title="{currentPresentation}" keyUp="onKeyUp(event)" xmlns:code="http://code.google.com/p/flexlib/">
+	title="{currentPresentation}" keyUp="onKeyUp(event)" xmlns:code="http://code.google.com/p/flexlib/" xmlns:containers="flexlib.containers.*">
 	
 	<mate:Dispatcher id="globalDispatcher" />
 	<mate:Listener type="{MadePresenterEvent.SWITCH_TO_PRESENTER_MODE}" method="becomePresenter" />
@@ -49,6 +50,7 @@
 	
 	<mx:Script>
 		<![CDATA[
+			import mx.events.ResizeEvent;
 			import flexlib.containers.DockableToolBar;
 			import org.bigbluebutton.modules.present.events.AddPresentationToolbarEvent;
 			import mx.controls.Alert;
@@ -116,48 +118,9 @@
 			[Bindable] private var currentPresentation:String = ResourceUtil.getInstance().getString('bbb.presentation.title');
 			
 			private var presenterName:String = "";
+		
 			
-			// The following code block is to deal with a bug in FLexLib 
-			// with MDI windows not responding well to being maximized
-			private var savedWindowWidth:Number;
-			private var savedWindowHeight:Number;
-			private var savedX:Number;
-			private var savedY:Number;
-			private var isMaximized:Boolean = false;
-			
-			private var fitToWindowTimer:Timer;
-			
-			override public function maximize():void{
-				if (!isMaximized){
-					savedWindowHeight = this.height;
-					savedWindowWidth = this.width;
-					savedX = this.x;
-					savedY = this.y;    
-					dispatchEvent(new MDIWindowEvent(MDIWindowEvent.MAXIMIZE, this));            	
-                	isMaximized = true;
-                	windowControls.maximizeRestoreBtn.toolTip = ResourceUtil.getInstance().getString('bbb.presentation.maximizeRestoreBtn.toolTip2');	                
-				
-				} else{
-					this.width = savedWindowWidth;
-					this.height = savedWindowHeight;
-					this.x = savedX;
-					this.y = savedY;
-					isMaximized = false;
-					windowControls.maximizeRestoreBtn.toolTip = ResourceUtil.getInstance().getString('bbb.presentation.maximizeRestoreBtn.toolTip');
-				}					
-				
-				/*
-				 * Need to have a timer to trigger resizing slide to window after the 
-				 * window has been maximized/restored. The MAXIMIZE/RESTORE events are
-				 * generated when the button is clicked so the width and height are not
-				 * the ones we want.
-				 */
-				fitToWindowTimer = new Timer(1000);
-				fitToWindowTimer.addEventListener(TimerEvent.TIMER, maximizeTimerHandler);
-				fitToWindowTimer.start();
-			}
-			
-			private function maximizeTimerHandler(event:TimerEvent):void {
+			private function maximizeHandler():void {
 				// When the window is maximized, we want to resize the slide maintaining the aspect ratio.			
 				fitSlideToWindowMaintainingAspectRatio();
 				
@@ -170,8 +133,6 @@
 				}
 				
 				this.y = 0;
-				
-				fitToWindowTimer.stop();
 			}
 			
 			private function onCreationComplete():void{
@@ -555,7 +516,7 @@
     		useHandCursor="true" snapInterval="5" allowTrackClick="true" liveDragging="true" 
     		dataTipFormatFunction="removeDecimalFromDataTip" change="onSliderZoom()" width="100"/>
     	<mx:Spacer width="50%" id="spacer3"/>
-    	<code:Docker id="toolbarDocker" height="100%" width="250" />
+    	<containers:Docker id="toolbarDocker" height="100%" width="250" />
     	<mx:Button id="btnResetZoom" icon="{magnifierIcon}" visible="false" width="20" height="20" 
     		toolTip="Reset Zoom" click="onResetZoom()"/>
     	<mx:Spacer width="5" id="spacer4"/>
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/PublishWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/PublishWindow.mxml
index 8fe49cc013cc1dc0b088de4a2d69da2cc146038f..b0f283ed8fc2ae99b5343f8adf75f6207635b540 100644
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/PublishWindow.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/PublishWindow.mxml
@@ -44,30 +44,6 @@
 			private var _xPosition:int = 200;
 			private var _yPosition:int = 200;
 			
-			//The following code block is to deal with a bug in FLexLib with MDI windows not responding well to being maximized
-			private var savedWindowWidth:Number;
-			private var savedWindowHeight:Number;
-			private var savedX:Number;
-			private var savedY:Number;
-			private var isMaximized:Boolean = false;
-			override public function maximize():void{
-				if (!isMaximized){
-					savedWindowHeight = this.height;
-					savedWindowWidth = this.width;
-					savedX = this.x;
-					savedY = this.y;
-                	dispatchEvent(new MDIWindowEvent(MDIWindowEvent.MAXIMIZE, this));
-                	isMaximized = true;
-				} else{
-					this.width = savedWindowWidth;
-					this.height = savedWindowHeight;
-					this.x = savedX;
-					this.y = savedY;
-					isMaximized = false;
-					//dispatchEvent(new MDIWindowEvent(MDIWindowEvent.RESTORE, this));
-				}	
-			}
-			
 			private var images:Images = new Images();
 			[Bindable] public var camIcon:Class = images.control_play;
 			[Bindable] public var bbbLogo:Class = images.bbb_logo;
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/TiledVideoWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/TiledVideoWindow.mxml
index e0d2326349ad1ab9cf77b820387065c76523c58e..b0e141f9c184a9747115fa2713b71295dfc672ae 100644
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/TiledVideoWindow.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/TiledVideoWindow.mxml
@@ -43,30 +43,6 @@
 			private var numStreamsPlaying:Number = 0;
 			//private var ns:NetStream;
 			
-			//The following code block is to deal with a bug in FLexLib with MDI windows not responding well to being maximized
-			private var savedWindowWidth:Number;
-			private var savedWindowHeight:Number;
-			private var savedX:Number;
-			private var savedY:Number;
-			private var isMaximized:Boolean = false;
-			override public function maximize():void{
-				if (!isMaximized){
-					savedWindowHeight = this.height;
-					savedWindowWidth = this.width;
-					savedX = this.x;
-					savedY = this.y;
-                	dispatchEvent(new MDIWindowEvent(MDIWindowEvent.MAXIMIZE, this));
-                	isMaximized = true;
-				} else{
-					this.width = savedWindowWidth;
-					this.height = savedWindowHeight;
-					this.x = savedX;
-					this.y = savedY;
-					isMaximized = false;
-					//dispatchEvent(new MDIWindowEvent(MDIWindowEvent.RESTORE, this));
-				}	
-			}
-			
 			private function onCreationComplete():void{
 				setupTiles();
 			}
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/VideoWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/VideoWindow.mxml
index 4a3fcc87594a5237e2e45141937914b2ec9d992f..4185958217030d1297531e8334532d51917b0f8e 100644
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/VideoWindow.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/videoconf/views/VideoWindow.mxml
@@ -42,30 +42,6 @@
 			private var _xPosition:int;
 			private var _yPosition:int;
 			
-			//The following code block is to deal with a bug in FLexLib with MDI windows not responding well to being maximized
-			private var savedWindowWidth:Number;
-			private var savedWindowHeight:Number;
-			private var savedX:Number;
-			private var savedY:Number;
-			private var isMaximized:Boolean = false;
-			override public function maximize():void{
-				if (!isMaximized){
-					savedWindowHeight = this.height;
-					savedWindowWidth = this.width;
-					savedX = this.x;
-					savedY = this.y;
-                	dispatchEvent(new MDIWindowEvent(MDIWindowEvent.MAXIMIZE, this));
-                	isMaximized = true;
-				} else{
-					this.width = savedWindowWidth;
-					this.height = savedWindowHeight;
-					this.x = savedX;
-					this.y = savedY;
-					isMaximized = false;
-					//dispatchEvent(new MDIWindowEvent(MDIWindowEvent.RESTORE, this));
-				}	
-			}
-			
 			private function init():void{
 				_xPosition = 250;
 				_yPosition = 250;
diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/viewers/view/components/ViewersWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/viewers/view/components/ViewersWindow.mxml
index e03bcd05673f27b0037794a053e49fbf5c42ba09..a095003b1d6d02676bbf0af46f6312514462a1d9 100644
--- a/bigbluebutton-client/src/org/bigbluebutton/modules/viewers/view/components/ViewersWindow.mxml
+++ b/bigbluebutton-client/src/org/bigbluebutton/modules/viewers/view/components/ViewersWindow.mxml
@@ -65,30 +65,6 @@
 			private var _xPosition:int;
 			private var _yPosition:int;
 			
-			//The following code block is to deal with a bug in FLexLib with MDI windows not responding well to being maximized
-			private var savedWindowWidth:Number;
-			private var savedWindowHeight:Number;
-			private var savedX:Number;
-			private var savedY:Number;
-			private var isMaximized:Boolean = false;
-			override public function maximize():void{
-				if (!isMaximized){
-					savedWindowHeight = this.height;
-					savedWindowWidth = this.width;
-					savedX = this.x;
-					savedY = this.y;
-                	dispatchEvent(new MDIWindowEvent(MDIWindowEvent.MAXIMIZE, this));
-                	isMaximized = true;
-				} else{
-					this.width = savedWindowWidth;
-					this.height = savedWindowHeight;
-					this.x = savedX;
-					this.y = savedY;
-					isMaximized = false;
-					//dispatchEvent(new MDIWindowEvent(MDIWindowEvent.RESTORE, this));
-				}	
-			}
-			
 			private function onCreationComplete():void {
 				BindingUtils.bindSetter(updateNumberOfListeners, participants, "length");				
 			}