 	 */
 	private function activateForm(f:Object):void
 	{
+        var e:DynamicEvent;
 
 		// trace("SM: activate " + f + " " + forms.length);
 		if (form)
 		{
 			if (form != f && forms.length > 1)
 			{
-				var e:DynamicEvent = new DynamicEvent("activateForm", false, true);
-				e.form = f;
+                if (hasEventListener("activateForm"))
+                {
+				    e = new DynamicEvent("activateForm", false, true);
+				    e.form = f;
+                }
 				// Switch the active form.
-				if (dispatchEvent(e))
+				if (!e || dispatchEvent(e))
 				{
 					var z:IFocusManagerContainer = IFocusManagerContainer(form);
 					// trace("OLW " + f + " deactivating old form " + z);

					p = p.parent;
				}
			}
			else 
				dispatchEvent(new Event("activateApplication"));
		}
	}

	 */
	private function deactivateForm(f:Object):void
	{
        var e:DynamicEvent;

		// trace(">>SM: deactivate " + f);

		if (form)
