Changes the behavior of the targetingOnly boolean. If targetingOnly is true, bubbling is canceled, but the observer is only notified if the event's phase is AT_TARGET.

--- source/raix/src/raix/reactive/Observable.as
+++ source/raix/src/raix/reactive/Observable.as
@@ -567,12 +567,17 @@
 			{
 				var listener : Function = function(event : Event) : void
 				{
-					if(targetingOnly && event.eventPhase == EventPhase.AT_TARGET)
-					{
-						event.stopPropagation();
-					}
-
-					observer.onNext(event);
+					if(targetingOnly == true)
+					{
+						if(event.eventPhase == EventPhase.AT_TARGET)
+						{
+							observer.onNext(event);
+						}
+					}
+					else
+					{
+						observer.onNext(event);
+					}
 				};

 				eventDispatcher.addEventListener(eventType, listener, useCapture, priority);


Flash: Address the problem with arguments from query string.

--- src/flash/src/Moxie.as
+++ src/flash/src/Moxie.as
@@ -68,16 +68,12 @@
 			var params:Object, url:String, urlParts:Object, pos:int, query:Object;

 			params = root.loaderInfo.parameters;
+
 			pos = root.loaderInfo.url.indexOf('?');
 			if (pos !== -1) {
-				query = Utils.parseStr(root.loaderInfo.url.substr(pos + 1));
-
-				for (var key:String in params) {
-					if (query.hasOwnProperty(Utils.trim(key))) {
-						delete params[key];
-					}
-				}
+				return; // we do not allow anything from query sring, so if there's anything, we - quit
 			}
+

 			// Setup id
 			if (!params.hasOwnProperty("uid")) {


fix XflLayer parse signature

fix XflLayer parse signature

--- exporter/src/main/as/flump/xfl/XflLayer.as
+++ exporter/src/main/as/flump/xfl/XflLayer.as
@@ -19,7 +19,7 @@

     use namespace xflns;

-    public static function parse (lib :XflLibrary, baseLocation :String, xml :XML, flipbook :Boolean) :LayerMold {
+    public static function parse (lib :XflLibrary, baseLocation :String, xml :XML, flipbook :Boolean,mask:String=null) :LayerMold {
         const layer :LayerMold = new LayerMold();
         layer.name = XmlUtil.getStringAttr(xml, NAME);
         layer.flipbook = flipbook;


Save volume in local shared object.

Save volume in local shared object.

--- src/goplayer/Player.as
+++ src/goplayer/Player.as
@@ -1,6 +1,7 @@
 package goplayer
 {
   import flash.utils.getTimer
+  import flash.net.SharedObject

   import streamio.Stat

@@ -16,6 +17,8 @@

     private const finishingListeners : Array = []

+    private var sharedObject : SharedObject = null
+
     private var connection : FlashNetConnection
     private var _movie : Movie
     private var bitratePolicy : BitratePolicy
@@ -32,7 +35,7 @@
     private var stream : FlashNetStream = null
     private var metadata : Object = null

-    private var _volume : Number = DEFAULT_VOLUME
+    private var _volume : Number = NaN
     private var savedVolume : Number = 0
     private var _paused : Boolean = false
     private var _buffering : Boolean = false
@@ -48,10 +51,20 @@
       _movie = movie
       this.bitratePolicy = bitratePolicy
       this.enableRTMP = enableRTMP
-
+
+      connection.listener = this
+
       Stat.view(movie.id)

-      connection.listener = this
+      try
+        { sharedObject = SharedObject.getLocal("player") }
+      catch (error : Error)
+        {}
+
+      if (sharedObject && sharedObject.size > 0)
+        volume = sharedObject.data["volume"]
+      else
+        volume = DEFAULT_VOLUME
     }

     public function get movie() : Movie
@@ -349,8 +362,11 @@
     {
       _volume = Math.round(clamp(value, 0, 1) * 100) / 100

+      if (sharedObject)
+        sharedObject.data["volume"] = volume
+
       if (stream)
-        stream.volume = value
+        stream.volume = volume
     }

     public function changeVolumeBy(delta : Number) : void


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1251334 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/automation/src/mx/automation/delegates/containers/DividedBoxAutomationImpl.as
+++ frameworks/projects/automation/src/mx/automation/delegates/containers/DividedBoxAutomationImpl.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////

 package mx.automation.delegates.containers
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 23243
Author:   cframpto@adobe.com
Date:     2011-12-20T00:59:57.384047Z

Log Message:
-----------
In frameworks, remove Adobe headers from all files except xml/mxml file types.  There are also a few .txt files that are license files that I didn't touch yet.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1248666 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/advancedgrids/src/mx/olap/IOLAPAxisPosition.as
+++ frameworks/projects/advancedgrids/src/mx/olap/IOLAPAxisPosition.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
-//
-////////////////////////////////////////////////////////////////////////////////

 package mx.olap
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 152
Author:   proberts@adobe.com
Date:     2008-01-10T20:10:08.980954Z

Log Message:
-----------
Severity: ignore
Description: docs update -- added @mxml sections to class descriptions for Flex AIR UI controls that didn't already have one

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemHistoryButton.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemDataGrid.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/FileSystemTree.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/airframework/src/mx/controls/HTML.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1249698 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/airframework/src/mx/controls/FileSystemList.as
+++ frameworks/projects/airframework/src/mx/controls/FileSystemList.as
@@ -206,6 +206,36 @@
  *  Therefore the actual file system icons displayed in the operating system
  *  are not displayed in a FileSystemList, even though they are
  *  accessible in AIR via the icon property of a File.

+ *
+ *  @mxml
+ *
+ *
The <mx:FileSystemList> tag inherits all of the tag
+ *  attributes of its superclass and adds the following tag attributes:

+ *
+ *

+ *  <mx:FileSystemList
+ *    Properties
+ *    directory="null"
+ *    enumerationMode="directoriesFirst"
+ *    extensions="null"
+ *    filterFunction="null"
+ *    nameCompareFunction="null"
+ *    selectedPath="null"
+ *    selectedPaths="null"
+ *    showExtensions="true"
+ *    showHidden="false"
+ *    showIcons="true"
+ *
+ *    Styles
+ *    directoryIcon="TreeNodeIcon"
+ *    fileIcon="TreeNodeIcon"
+ *
+ *    Events
+ *    directoryChange="No default"
+ *    directoryChanging="No default"
+ *    fileChoose="No default"
+ *  />
+ *

  *
  * @see flash.filesystem.File
  */


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1251973 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/automation_flashflexkit/src/mx/core/Version.as
+++ frameworks/projects/automation_flashflexkit/src/mx/core/Version.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////

 import mx.core.mx_internal;


Transferred from the Adobe Open Source Subversion Repository

Revision: 23243
Author:   cframpto@adobe.com
Date:     2011-12-20T00:59:57.384047Z

Log Message:
-----------
In frameworks, remove Adobe headers from all files except xml/mxml file types.  There are also a few .txt files that are license files that I didn't touch yet.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1258745 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/collections/XMLListAdapter.as
+++ frameworks/projects/framework/src/mx/collections/XMLListAdapter.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2005-2007 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
-//
-////////////////////////////////////////////////////////////////////////////////

 package mx.collections
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 23247
Author:   cframpto@adobe.com
Date:     2011-12-20T19:21:13.134833Z

Log Message:
-----------
Remove ADOBE SYSTEMS license and replace with Apache license in headers - frameworks.  A 2nd pass will be needed to get the files not handled up by the scripts.

Modified Paths:
--------------
4959 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1260705 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/events/PropertyChangeEvent.as
+++ frameworks/projects/framework/src/mx/events/PropertyChangeEvent.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2005-2007 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////


Transferred from the Adobe Open Source Subversion Repository

Revision: 7400
Author:   gosmith@adobe.com
Date:     2009-05-29T02:53:47.451300Z

Log Message:
-----------
Integrated TLF build 442. This integration required some minor changes to framework code.

---

The advanced text format styles for Spark components now include four new inheriting styles corresponding to new TLF formats:

paragraphSpaceBefore and paragraphSpaceAfter are for adding space before and after a paragraph.

paragraphStartIndent and paragraphEndIndent are for indenting the entire paragraph (not just its first line), from either the "starting" or "ending" side, which depend on the direction of the paragraph.

All four styles are specified in pixels, and have a default value of 0 coming from the global selector.

You can set these styles on a component and they'll apply to all paragraphs. For example, simply setting <s:TextArea paragraphSpaceAfter="20"> will put 20 pixels of space after each paragraph.

TLF has removed its old non-inheriting marginXXX formats, so markup like
...
 is no longer allowed in text content. These formats were in the FXG 1.0 spec, so FXG 1.0 compilation will need to change to map

marginTop -> paragraphSpaceBefore
marginBottom -> paragraphSpaceAfter
marginLeft -> paragraphStartIndent
marginRight -> paragraphEndIndent

---

From TLF's ReleaseNotes.txt:

Build 441
	* rename StatusChangeEvent INLINE_GRAPHIC_STATUS_CHANGED to INLINE_GRAPHIC_STATUS_CHANGE
	* Fix 2300102 Spans with attached event listeners should not merge
Build 439
	* API and markup Changes (Fix 2339174)
	-- marginTop, marginBottom, marginLeft and marginRight formats have been renamed to paragraphSpaceBefore, paragraphSpaceAfter, paragraphStartIndent and paragraphEndIndent respectively
	-- paragraphStartIndent and paragraphEndIndent are direction-sensitive. For example, the former applies to the paragraph's left edge for left-to-right text, and to the right edge otherwise
	-- These formats now inherit values from parent flow element if undefined during cascade
	-- The previous names continue to be supported on import of FXG markup (but not TLF markup). FXG export uses the new names.
	* UndoManager and IUndoManager moved from flashx.textLayout.edit into flashx.undo namespace (actually done in build 436)

QE Notes: Need tests for these new styles.
Doc Notes: None
Bugs: None
Reviewer: Carol

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/in/tlf/textLayout.swz</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/core/CSSTextLayoutFormat.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/primitives/RichEditableText.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/defaults.css</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/libs/textLayout.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/in/tlf/textLayout.swf</path>
<path kind="file" action="M">/flex/sdk/trunk/in/tlf/tlf.properties</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/styles/metadata/AdvancedTextLayoutFormatStyles.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1280111 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/components/RichEditableText.as
+++ frameworks/projects/spark/src/spark/components/RichEditableText.as
@@ -406,8 +406,8 @@
             inputManager_flowOperationEndHandler);

         _inputManager.addEventListener(
-            StatusChangeEvent.INLINE_GRAPHIC_STATUS_CHANGED,
-            inputManager_inlineGraphicStatusChangedHandlder);
+            StatusChangeEvent.INLINE_GRAPHIC_STATUS_CHANGE,
+            inputManager_inlineGraphicStatusChangeHandler);
     }

     //--------------------------------------------------------------------------
@@ -3234,12 +3234,12 @@
      *  height as auto or percent and the graphic has finished loading.  The
      *  size of the graphic is now known.
      */
-    private function inputManager_inlineGraphicStatusChangedHandlder (
+    private function inputManager_inlineGraphicStatusChangeHandler (
                         event:StatusChangeEvent):void
     {
-        //trace("inlineGraphicStatusChangedHandlder", event.status);
-
-        // Now that the actual size of the graphic is availabe need to
+        //trace("inlineGraphicStatusChangedHandler", event.status);
+
+        // Now that the actual size of the graphic is available need to
         // optionally remeasure and updateContainer.
         if (event.status == InlineGraphicElementStatus.READY)
         {


Code formatting, reordering and a comment.

--- src/org/igniterealtime/xiff/vcard/VCard.as
+++ src/org/igniterealtime/xiff/vcard/VCard.as
@@ -8,9 +8,9 @@
 	import flash.utils.ByteArray;
 	import flash.utils.Timer;
 	import flash.xml.XMLNode;
-
+
 	import mx.utils.Base64Decoder;
-
+
 	import org.igniterealtime.xiff.core.UnescapedJID;
 	import org.igniterealtime.xiff.core.XMPPConnection;
 	import org.igniterealtime.xiff.data.IQ;
@@ -18,512 +18,438 @@
 	import org.igniterealtime.xiff.data.im.RosterItemVO;
 	import org.igniterealtime.xiff.data.vcard.VCardExtension;
 	import org.igniterealtime.xiff.events.VCardEvent;
-
+
 	[Bindable]
+	/**
+	 *
+	 */
 	public class VCard extends EventDispatcher
 	{
+		/**
+		 *
+		 * @default
+		 */
+		private static var cache:Object = {};
+
+		/**
+		 * Flush the vcard cache every 6 hours
+		 * @default
+		 */
+		private static var cacheFlushTimer:Timer = new Timer( 6 * 60 * 60 * 1000,
+															  0 );
+
+		/**
+		 *
+		 * @default
+		 */
+		private static var requestQueue:Array = [];
+
+		/**
+		 *
+		 * @default
+		 */
+		private static var requestTimer:Timer;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var company:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var department:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var email:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var firstName:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var fullName:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var homeAddress:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var homeCellNumber:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var homeCity:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var homeCountry:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var homeFaxNumber:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var homePagerNumber:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var homePostalCode:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var homeStateProvince:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var homeVoiceNumber:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var jid:UnescapedJID;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var lastName:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var loaded:Boolean = false;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var middleName:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var nickname:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var title:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var url:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var workAddress:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var workCellNumber:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var workCity:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var workCountry:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var workFaxNumber:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var workPagerNumber:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var workPostalCode:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var workStateProvince:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		public var workVoiceNumber:String;
+
+		/**
+		 *
+		 * @default
+		 */
+		private var _avatar:DisplayObject;
+
+		/**
+		 *
+		 * @default
+		 */
+		private var _imageBytes:ByteArray;
+
+		/**
+		 *
+		 * @default
+		 */
 		private var _loader:Loader;
-
+
+		/**
+		 *
+		 * @default
+		 */
 		private var contact:RosterItemVO;
-		public var jid:UnescapedJID;
-		public var firstName:String;
-		public var middleName:String;
-		public var lastName:String;
-		public var nickname:String;
-		public var email:String;
-		public var fullName:String;
-		public var company:String;
-		public var department:String;
-		public var title:String;
-		public var url:String;
-		public var workPostalCode:String;
-		public var workStateProvince:String;
-		public var workAddress:String;
-		public var workCountry:String;
-		public var workCity:String;
-		public var homePostalCode:String;
-		public var homeStateProvince:String;
-		public var homeAddress:String;
-		public var homeCountry:String;
-		public var homeCity:String;
-		public var workVoiceNumber:String;
-		public var workFaxNumber:String;
-		public var workPagerNumber:String;
-		public var workCellNumber:String;
-		public var homeVoiceNumber:String;
-		public var homeFaxNumber:String;
-		public var homePagerNumber:String;
-		public var homeCellNumber:String;
-		private static var cache:Object = {};
-		public var loaded:Boolean = false;
-		private var _avatar:DisplayObject;
-		private var _imageBytes:ByteArray;
-
-		private static var requestQueue:Array = [];
-		private static var requestTimer:Timer;
-		//flush the vcard cache every 6 hours
-		private static var cacheFlushTimer:Timer = new Timer(21600000, 0);
-		public static function getVCard(con:XMPPConnection, user:RosterItemVO):VCard
+
+		/**
+		 *
+		 * @param con
+		 * @param user
+		 * @return
+		 */
+		public static function getVCard( con:XMPPConnection, user:RosterItemVO ):VCard
 		{
-			if(!cacheFlushTimer.running)
+			if ( !cacheFlushTimer.running )
 			{
 				cacheFlushTimer.start();
-				cacheFlushTimer.addEventListener(TimerEvent.TIMER, function(event:TimerEvent):void
-		{
-					var tempCache:Object = cache;
-					cache = {};
-					for each(var cachedCard:VCard in tempCache)
+				cacheFlushTimer.addEventListener( TimerEvent.TIMER, function( event:TimerEvent ):void
 					{
-						pushRequest(con, vcard);
-					}
-				});
-			}
-
+						var tempCache:Object = cache;
+						cache = {};
+						for each ( var cachedCard:VCard in tempCache )
+						{
+							pushRequest( con, vcard );
+						}
+					});
+			}
+
 			var jidString:String = user.jid.toString();
-
-			var cachedCard:VCard = cache[jidString];
-			if(cachedCard)
+
+			var cachedCard:VCard = cache[ jidString ];
+			if ( cachedCard )
 				return cachedCard;
-
+
 			var vcard:VCard = new VCard();
 			vcard.contact = user;
-			cache[jidString] = vcard;
-
-			pushRequest(con, vcard);
-
-		    return vcard;
+			cache[ jidString ] = vcard;
+
+			pushRequest( con, vcard );
+
+			return vcard;
 		}
-
-		private static function pushRequest(con:XMPPConnection, vcard:VCard):void
+
+		/**
+		 *
+		 * @param con
+		 * @param vcard
+		 */
+		private static function pushRequest( con:XMPPConnection, vcard:VCard ):void
 		{
-			if(!requestTimer)
-			{
-				requestTimer = new Timer(1, 1);
-				requestTimer.addEventListener(TimerEvent.TIMER_COMPLETE, sendRequest);
-			}
-			requestQueue.push({connection:con, card:vcard});
+			if ( !requestTimer )
+			{
+				requestTimer = new Timer( 1, 1 );
+				requestTimer.addEventListener( TimerEvent.TIMER_COMPLETE, sendRequest );
+			}
+			requestQueue.push({ connection: con, card: vcard });
 			requestTimer.reset();
 			requestTimer.start();
 		}
-
-		private static function sendRequest(event:TimerEvent):void
+
+		/**
+		 *
+		 * @param event
+		 */
+		private static function sendRequest( event:TimerEvent ):void
 		{
-			if(requestQueue.length == 0)
+			if ( requestQueue.length == 0 )
 				return;
 			var req:Object = requestQueue.pop();
 			var con:XMPPConnection = req.connection;
 			var vcard:VCard = req.card;
-			var user:RosterItemVO = vcard.contact;
-
-			var iq:IQ = new IQ(user.jid.escaped, IQ.GET_TYPE);
+			var user:RosterItemVO = vcard.contact;
+
+			var iq:IQ = new IQ( user.jid.escaped, IQ.GET_TYPE );
 			vcard.jid = user.jid;
-
+
 			iq.callbackName = "handleVCard";
 			iq.callbackScope = vcard;
-			iq.addExtension(new VCardExtension());
-
-			con.send(iq);
+			iq.addExtension( new VCardExtension());
+
+			con.send( iq );
 			requestTimer.reset();
 			requestTimer.start();
 		}
-
-		public function saveVCard(con:XMPPConnection, user:RosterItemVO):void
+
+		/**
+		 *
+		 * @param resultIQ
+		 */
+		public function _vCardSent( resultIQ:IQ ):void
 		{
-			var iq:IQ = new IQ(null, IQ.SET_TYPE, XMPPStanza.generateID("save_vcard_"), null, this, _vCardSent);
-			var vcardExt:VCardExtension = new VCardExtension();
-			var vcardExtNode:XMLNode = vcardExt.getNode();
-
-			if (firstName || middleName || lastName)
-			{
-				var nameNode:XMLNode = new XMLNode(1, 'N');
-
-				if (firstName)
-				{
-					var firstNameNode:XMLNode = new XMLNode(1, 'GIVEN');
-					firstNameNode.appendChild(new XMLNode(3, firstName));
-
-					nameNode.appendChild(firstNameNode);
-				}
-
-				if (middleName)
-				{
-					var middleNameNode:XMLNode = new XMLNode(1, 'MIDDLE');
-					middleNameNode.appendChild(new XMLNode(3, middleName));
-
-					nameNode.appendChild(middleNameNode);
-				}
-
-				if (lastName)
-				{
-					var lastNameNode:XMLNode = new XMLNode(1, 'FAMILY');
-					lastNameNode.appendChild(new XMLNode(3, lastName));
-
-					nameNode.appendChild(lastNameNode);
-				}
-
-				vcardExtNode.appendChild(nameNode);
-			}
-
-			if (fullName)
-			{
-				var fullnameNode:XMLNode = new XMLNode(1, 'FN');
-				fullnameNode.appendChild(new XMLNode(3, fullName));
-
-				vcardExtNode.appendChild(fullnameNode);
-			}
-
-			if (nickname)
-			{
-				var nicknameNode:XMLNode = new XMLNode(1, 'NICKNAME');
-				nicknameNode.appendChild(new XMLNode(3, nickname));
-
-				vcardExtNode.appendChild(nicknameNode);
-			}
-
-			if (email)
-			{
-				var emailNode:XMLNode = new XMLNode(1, 'EMAIL');
-				emailNode.appendChild(new XMLNode(3, 'INTERNET'));
-				emailNode.appendChild(new XMLNode(3, 'PREF'));
-				var userIdNode:XMLNode = new XMLNode(1, 'USERID');
-				userIdNode.appendChild(new XMLNode(3, email));
-				emailNode.appendChild(userIdNode);
-
-				vcardExtNode.appendChild(emailNode);
-			}
-
-			if (company || department)
-			{
-				var organizationNode:XMLNode = new XMLNode(1, 'ORG');
-
-				if (company)
-				{
-					var companyNode:XMLNode = new XMLNode(1, 'ORGNAME');
-					companyNode.appendChild(new XMLNode(3, company));
-
-					organizationNode.appendChild(companyNode);
-				}
-
-				if (department)
-				{
-					var departmentNode:XMLNode = new XMLNode(1, 'ORGUNIT');
-					departmentNode.appendChild(new XMLNode(3, department));
-
-					organizationNode.appendChild(departmentNode);
-				}
-
-				vcardExtNode.appendChild(organizationNode);
-			}
-
-			if (title)
-			{
-				var titleNode:XMLNode = new XMLNode(1, 'TITLE');
-				titleNode.appendChild(new XMLNode(3, title));
-
-				vcardExtNode.appendChild(titleNode);
-			}
-
-			if (url)
-			{
-				var urlNode:XMLNode = new XMLNode(1, 'URL');
-				urlNode.appendChild(new XMLNode(3, url));
-
-				vcardExtNode.appendChild(urlNode);
-			}
-
-			if (workAddress || workCity || workCountry || workPostalCode || workStateProvince)
-			{
-				var workAddressNode:XMLNode = new XMLNode(1, 'ADR');
-				workAddressNode.appendChild(new XMLNode(1, 'WORK'));
-
-				if (workAddress)
-				{
-					var workStreetNode:XMLNode = new XMLNode(1, 'STREET');
-					workStreetNode.appendChild(new XMLNode(3, workAddress));
-
-					workAddressNode.appendChild(workStreetNode);
-				}
-
-				if (workCity)
-				{
-					var workCityNode:XMLNode = new XMLNode(1, 'LOCALITY');
-					workCityNode.appendChild(new XMLNode(3, workCity));
-
-					workAddressNode.appendChild(workCityNode);
-				}
-
-				if (workCountry)
-				{
-					var workCountryNode:XMLNode = new XMLNode(1, 'CTRY');
-					workCountryNode.appendChild(new XMLNode(3, workCountry));
-
-					workAddressNode.appendChild(workCountryNode);
-				}
-
-				if (workPostalCode)
-				{
-					var workPostalCodeNode:XMLNode = new XMLNode(1, 'PCODE');
-					workPostalCodeNode.appendChild(new XMLNode(3, workPostalCode));
-
-					workAddressNode.appendChild(workPostalCodeNode);
-				}
-
-				if (workStateProvince)
-				{
-					var workStateProvinceNode:XMLNode = new XMLNode(1, 'REGION');
-					workStateProvinceNode.appendChild(new XMLNode(3, workStateProvince));
-
-					workAddressNode.appendChild(workStateProvinceNode);
-				}
-
-				vcardExtNode.appendChild(workAddressNode);
-			}
-
-			if (homeAddress || homeCity || homeCountry || homePostalCode || homeStateProvince)
-			{
-				var homeAddressNode:XMLNode = new XMLNode(1, 'ADR');
-				homeAddressNode.appendChild(new XMLNode(1, 'HOME'));
-
-				if (homeAddress)
-				{
-					var homeStreetNode:XMLNode = new XMLNode(1, 'STREET');
-					homeStreetNode.appendChild(new XMLNode(3, homeAddress));
-
-					homeAddressNode.appendChild(homeStreetNode);
-				}
-
-				if (homeCity)
-				{
-					var homeCityNode:XMLNode = new XMLNode(1, 'LOCALITY');
-					homeCityNode.appendChild(new XMLNode(3, homeCity));
-
-					homeAddressNode.appendChild(homeCityNode);
-				}
-
-				if (homeCountry)
-				{
-					var homeCountryNode:XMLNode = new XMLNode(1, 'CTRY');
-					homeCountryNode.appendChild(new XMLNode(3, homeCountry));
-
-					homeAddressNode.appendChild(homeCountryNode);
-				}
-
-				if (homePostalCode)
-				{
-					var homePostalCodeNode:XMLNode = new XMLNode(1, 'PCODE');
-					homePostalCodeNode.appendChild(new XMLNode(3, homePostalCode));
-
-					homeAddressNode.appendChild(homePostalCodeNode);
-				}
-
-				if (homeStateProvince)
-				{
-					var homeStateProvinceNode:XMLNode = new XMLNode(1, 'REGION');
-					homeStateProvinceNode.appendChild(new XMLNode(3, homeStateProvince));
-
-					homeAddressNode.appendChild(homeStateProvinceNode);
-				}
-
-				vcardExtNode.appendChild(homeAddressNode);
-			}
-
-			if (workCellNumber)
-			{
-				var workCellNode:XMLNode = new XMLNode(1, 'TEL');
-				workCellNode.appendChild(new XMLNode(1, 'WORK'));
-				workCellNode.appendChild(new XMLNode(1, 'CELL'));
-				var workCellNumberNode:XMLNode = new XMLNode(1, 'NUMBER');
-				workCellNumberNode.appendChild(new XMLNode(3, workCellNumber));
-				workCellNode.appendChild(workCellNumberNode);
-
-				vcardExtNode.appendChild(workCellNode);
-			}
-
-			if (workFaxNumber)
-			{
-				var workFaxNode:XMLNode = new XMLNode(1, 'TEL');
-				workFaxNode.appendChild(new XMLNode(1, 'WORK'));
-				workFaxNode.appendChild(new XMLNode(1, 'FAX'));
-				var workFaxNumberNode:XMLNode = new XMLNode(1, 'NUMBER');
-				workFaxNumberNode.appendChild(new XMLNode(3, workFaxNumber));
-				workFaxNode.appendChild(workFaxNumberNode);
-
-				vcardExtNode.appendChild(workFaxNode);
-			}
-
-			if (workPagerNumber)
-			{
-				var workPagerNode:XMLNode = new XMLNode(1, 'TEL');
-				workPagerNode.appendChild(new XMLNode(1, 'WORK'));
-				workPagerNode.appendChild(new XMLNode(1, 'PAGER'));
-				var workPagerNumberNode:XMLNode = new XMLNode(1, 'NUMBER');
-				workPagerNumberNode.appendChild(new XMLNode(3, workPagerNumber));
-				workPagerNode.appendChild(workPagerNumberNode);
-
-				vcardExtNode.appendChild(workPagerNode);
-			}
-
-			if (workVoiceNumber)
-			{
-				var workVoiceNode:XMLNode = new XMLNode(1, 'TEL');
-				workVoiceNode.appendChild(new XMLNode(1, 'WORK'));
-				workVoiceNode.appendChild(new XMLNode(1, 'VOICE'));
-				var workVoiceNumberNode:XMLNode = new XMLNode(1, 'NUMBER');
-				workVoiceNumberNode.appendChild(new XMLNode(3, workVoiceNumber));
-				workVoiceNode.appendChild(workVoiceNumberNode);
-
-				vcardExtNode.appendChild(workVoiceNode);
-
-			}
-
-			if (homeCellNumber)
-			{
-				var homeCellNode:XMLNode = new XMLNode(1, 'TEL');
-				homeCellNode.appendChild(new XMLNode(1, 'HOME'));
-				homeCellNode.appendChild(new XMLNode(1, 'CELL'));
-				var homeCellNumberNode:XMLNode = new XMLNode(1, 'NUMBER');
-				homeCellNumberNode.appendChild(new XMLNode(3, homeCellNumber));
-				homeCellNode.appendChild(homeCellNumberNode);
-
-				vcardExtNode.appendChild(homeCellNode);
-			}
-
-			if (homeFaxNumber)
-			{
-				var homeFaxNode:XMLNode = new XMLNode(1, 'TEL');
-				homeFaxNode.appendChild(new XMLNode(1, 'HOME'));
-				homeFaxNode.appendChild(new XMLNode(1, 'FAX'));
-				var homeFaxNumberNode:XMLNode = new XMLNode(1, 'NUMBER');
-				homeFaxNumberNode.appendChild(new XMLNode(3, homeFaxNumber));
-				homeFaxNode.appendChild(homeFaxNumberNode);
-
-				vcardExtNode.appendChild(homeFaxNode);
-			}
-
-			if (homePagerNumber)
-			{
-				var homePagerNode:XMLNode = new XMLNode(1, 'TEL');
-				homePagerNode.appendChild(new XMLNode(1, 'HOME'));
-				homePagerNode.appendChild(new XMLNode(1, 'PAGER'));
-				var homePagerNumberNode:XMLNode = new XMLNode(1, 'NUMBER');
-				homePagerNumberNode.appendChild(new XMLNode(3, homePagerNumber));
-				homePagerNode.appendChild(homePagerNumberNode);
-
-				vcardExtNode.appendChild(homePagerNode);
-			}
-
-			if (homeVoiceNumber)
-			{
-				var homeVoiceNode:XMLNode = new XMLNode(1, 'TEL');
-				homeVoiceNode.appendChild(new XMLNode(1, 'HOME'));
-				homeVoiceNode.appendChild(new XMLNode(1, 'VOICE'));
-				var homeVoiceNumberNode:XMLNode = new XMLNode(1, 'NUMBER');
-				homeVoiceNumberNode.appendChild(new XMLNode(3, homeVoiceNumber));
-				homeVoiceNode.appendChild(homeVoiceNumberNode);
-
-				vcardExtNode.appendChild(homeVoiceNode);
-			}
-
-			iq.addExtension(vcardExt);
-			con.send(iq);
+			if ( resultIQ.type == IQ.ERROR_TYPE )
+			{
+				dispatchEvent( new VCardEvent( VCardEvent.ERROR, cache[ resultIQ.to.unescaped.toString()],
+											   true, true ));
+			}
+			else
+			{
+				delete cache[ resultIQ.to.unescaped.toString()]; // Force profile refresh on next view
+			}
 		}
-
-		public function _vCardSent(resultIQ:IQ):void
+
+		/**
+		 *
+		 * @return
+		 */
+		public function get avatar():ByteArray
 		{
-			if (resultIQ.type == IQ.ERROR_TYPE)
-			{
-				dispatchEvent(new VCardEvent(VCardEvent.ERROR, cache[resultIQ.to.unescaped.toString()], true, true));
-			}
-			else
-				delete cache[resultIQ.to.unescaped.toString()];		// Force profile refresh on next view
+			return _imageBytes;
 		}
-
-		public function handleVCard(iq:IQ):void
+
+		/**
+		 *
+		 * @param iq
+		 */
+		public function handleVCard( iq:IQ ):void
 		{
 			var node:XMLNode = iq.getNode();
-			var vCardNode:XMLNode = node.childNodes[0];
-			if (!vCardNode)
+			var vCardNode:XMLNode = node.childNodes[ 0 ];
+			if ( !vCardNode )
 				return;
-
-		    for each(var child:XMLNode in vCardNode.childNodes)
-		    {
-	            switch (child.nodeName)
-	            {
-	            	case "PHOTO":
-						for each(var sChild:XMLNode in child.childNodes)
+
+			for each ( var child:XMLNode in vCardNode.childNodes )
+			{
+				switch ( child.nodeName )
+				{
+					case "PHOTO":
+						for each ( var sChild:XMLNode in child.childNodes )
 						{
-							if(sChild.nodeName != 'BINVAL')
+							if ( sChild.nodeName != 'BINVAL' )
 								continue;
 							try
-		            		{
-		            			//sometimes we get a packet with just <BINVAL/> ... no idea why
-		            			if(sChild.childNodes.length == 0)
-		            				continue;
-		            			var value:String = sChild.childNodes[0].nodeValue;
-		            			if(value.length > 0)
-		            			{
-		                			_loader = new Loader();
+							{
+								//sometimes we get a packet with just <BINVAL/> ... no idea why
+								if ( sChild.childNodes.length == 0 )
+									continue;
+								var value:String = sChild.childNodes[ 0 ].nodeValue;
+								if ( value.length > 0 )
+								{
+									_loader = new Loader();
 									var decoder:Base64Decoder = new Base64Decoder();
-									decoder.decode(value);
+									decoder.decode( value );
 									_imageBytes = decoder.flush();
-									dispatchEvent(new VCardEvent(VCardEvent.AVATAR_LOADED, this, true, false));
+									dispatchEvent( new VCardEvent( VCardEvent.AVATAR_LOADED,
+																   this, true, false ));
 								}
 							}
-							catch(e:Error)
+							catch ( e:Error )
 							{
-								trace("Error loading vcard image: " + e.message);
+								trace( "Error loading vcard image: " + e.message );
 							}
 						}
 						break;
-
-	                case "N":
-		                // Get Family Name.
-		                var xml:XML = new XML(child.toString());
-		                firstName = xml.GIVEN;
-		                middleName = xml.MIDDLE;
-		                lastName = xml.FAMILY;
-		                break;
-
-	                case "FN":
-		                var fullnameNode:XMLNode = child.childNodes[0];
-		                if(fullnameNode)
-		                	fullName = fullnameNode.nodeValue;
-		                break;
-
-	                case "NICKNAME":
-		                var nicknameNode:XMLNode = child.childNodes[0];
-		                if(nicknameNode)
-		                	nickname = nicknameNode.nodeValue;
-		                break;
-
-	                case "EMAIL":
-		                for each(var emailChild:XMLNode in child.childNodes)
-		                {
-		                	if(emailChild.nodeName == 'USERID')
-		                	{
-		                		if(emailChild.firstChild != null)
-		                			email = emailChild.firstChild.nodeValue;
-		                	}
-		                }
-		                break;
+
+					case "N":
+						// Get Family Name.
+						var xml:XML = new XML( child.toString());
+						firstName = xml.GIVEN;
+						middleName = xml.MIDDLE;
+						lastName = xml.FAMILY;
+						break;
+
+					case "FN":
+						var fullnameNode:XMLNode = child.childNodes[ 0 ];
+						if ( fullnameNode )
+							fullName = fullnameNode.nodeValue;
+						break;
+
+					case "NICKNAME":
+						var nicknameNode:XMLNode = child.childNodes[ 0 ];
+						if ( nicknameNode )
+							nickname = nicknameNode.nodeValue;
+						break;
+
+					case "EMAIL":
+						for each ( var emailChild:XMLNode in child.childNodes )
+						{
+							if ( emailChild.nodeName == 'USERID' )
+							{
+								if ( emailChild.firstChild != null )
+									email = emailChild.firstChild.nodeValue;
+							}
+						}
+						break;
 					case "ORG":
-						var orgXML:XML = new XML(child.toString());
+						var orgXML:XML = new XML( child.toString());
 						company = orgXML.ORGNAME;
 						department = orgXML.ORGUNIT;
 						break;
 					case "TITLE":
-						var titleNode:XMLNode = child.childNodes[0];
-		                if(titleNode)
-		                	title = titleNode.nodeValue;
-		                break;
+						var titleNode:XMLNode = child.childNodes[ 0 ];
+						if ( titleNode )
+							title = titleNode.nodeValue;
+						break;
 					case "URL":
-						var urlNode:XMLNode = child.childNodes[0];
-						if(urlNode)
+						var urlNode:XMLNode = child.childNodes[ 0 ];
+						if ( urlNode )
 							url = urlNode.nodeValue;
 						break;
 					case "ADR":
-						var adrXML:XML = new XML(child.toString());
-						if(adrXML.WORK == '')
+						var adrXML:XML = new XML( child.toString());
+						if ( adrXML.WORK == '' )
 						{
 							workPostalCode = adrXML.PCODE;
 							workStateProvince = adrXML.REGION;
@@ -531,7 +457,7 @@
 							workCountry = adrXML.CTRY;
 							workCity = adrXML.LOCALITY;
 						}
-						else if(adrXML.HOME == '')
+						else if ( adrXML.HOME == '' )
 						{
 							homePostalCode = adrXML.PCODE;
 							homeStateProvince = adrXML.REGION;
@@ -541,40 +467,342 @@
 						}
 						break;
 					case "TEL":
-						var telXML:XML = new XML(child.toString());
-						if(telXML.WORK == '')
+						var telXML:XML = new XML( child.toString());
+						if ( telXML.WORK == '' )
 						{
-							if(telXML.VOICE == '')
+							if ( telXML.VOICE == '' )
 								workVoiceNumber = telXML.NUMBER;
-							else if(telXML.FAX == '')
+							else if ( telXML.FAX == '' )
 								workFaxNumber = telXML.NUMBER;
-							else if(telXML.PAGER == '')
+							else if ( telXML.PAGER == '' )
 								workPagerNumber = telXML.NUMBER;
-							else if(telXML.CELL == '')
+							else if ( telXML.CELL == '' )
 								workCellNumber = telXML.NUMBER;
 						}
-						else if(telXML.HOME == '')
+						else if ( telXML.HOME == '' )
 						{
-							if(telXML.VOICE == '')
+							if ( telXML.VOICE == '' )
 								homeVoiceNumber = telXML.NUMBER;
-							else if(telXML.FAX == '')
+							else if ( telXML.FAX == '' )
 								homeFaxNumber = telXML.NUMBER;
-							else if(telXML.PAGER == '')
+							else if ( telXML.PAGER == '' )
 								homePagerNumber = telXML.NUMBER;
-							else if(telXML.CELL == '')
+							else if ( telXML.CELL == '' )
 								homeCellNumber = telXML.NUMBER;
 						}
 						break;
-                }
-	     	}
-
-	     	loaded = true;
-	     	dispatchEvent(new VCardEvent(VCardEvent.LOADED, this, true, false));
+				}
+			}
+
+			loaded = true;
+			dispatchEvent( new VCardEvent( VCardEvent.LOADED, this, true, false ));
 		}
-
-		public function get avatar():ByteArray
+
+		/**
+		 *
+		 * @param con
+		 * @param user
+		 */
+		public function saveVCard( con:XMPPConnection, user:RosterItemVO ):void
 		{
-			return _imageBytes;
+			var iq:IQ = new IQ( null, IQ.SET_TYPE, XMPPStanza.generateID( "save_vcard_" ),
+								null, this, _vCardSent );
+			var vcardExt:VCardExtension = new VCardExtension();
+			var vcardExtNode:XMLNode = vcardExt.getNode();
+
+			if ( firstName || middleName || lastName )
+			{
+				var nameNode:XMLNode = new XMLNode( 1, 'N' );
+
+				if ( firstName )
+				{
+					var firstNameNode:XMLNode = new XMLNode( 1, 'GIVEN' );
+					firstNameNode.appendChild( new XMLNode( 3, firstName ));
+
+					nameNode.appendChild( firstNameNode );
+				}
+
+				if ( middleName )
+				{
+					var middleNameNode:XMLNode = new XMLNode( 1, 'MIDDLE' );
+					middleNameNode.appendChild( new XMLNode( 3, middleName ));
+
+					nameNode.appendChild( middleNameNode );
+				}
+
+				if ( lastName )
+				{
+					var lastNameNode:XMLNode = new XMLNode( 1, 'FAMILY' );
+					lastNameNode.appendChild( new XMLNode( 3, lastName ));
+
+					nameNode.appendChild( lastNameNode );
+				}
+
+				vcardExtNode.appendChild( nameNode );
+			}
+
+			if ( fullName )
+			{
+				var fullnameNode:XMLNode = new XMLNode( 1, 'FN' );
+				fullnameNode.appendChild( new XMLNode( 3, fullName ));
+
+				vcardExtNode.appendChild( fullnameNode );
+			}
+
+			if ( nickname )
+			{
+				var nicknameNode:XMLNode = new XMLNode( 1, 'NICKNAME' );
+				nicknameNode.appendChild( new XMLNode( 3, nickname ));
+
+				vcardExtNode.appendChild( nicknameNode );
+			}
+
+			if ( email )
+			{
+				var emailNode:XMLNode = new XMLNode( 1, 'EMAIL' );
+				emailNode.appendChild( new XMLNode( 3, 'INTERNET' ));
+				emailNode.appendChild( new XMLNode( 3, 'PREF' ));
+				var userIdNode:XMLNode = new XMLNode( 1, 'USERID' );
+				userIdNode.appendChild( new XMLNode( 3, email ));
+				emailNode.appendChild( userIdNode );
+
+				vcardExtNode.appendChild( emailNode );
+			}
+
+			if ( company || department )
+			{
+				var organizationNode:XMLNode = new XMLNode( 1, 'ORG' );
+
+				if ( company )
+				{
+					var companyNode:XMLNode = new XMLNode( 1, 'ORGNAME' );
+					companyNode.appendChild( new XMLNode( 3, company ));
+
+					organizationNode.appendChild( companyNode );
+				}
+
+				if ( department )
+				{
+					var departmentNode:XMLNode = new XMLNode( 1, 'ORGUNIT' );
+					departmentNode.appendChild( new XMLNode( 3, department ));
+
+					organizationNode.appendChild( departmentNode );
+				}
+
+				vcardExtNode.appendChild( organizationNode );
+			}
+
+			if ( title )
+			{
+				var titleNode:XMLNode = new XMLNode( 1, 'TITLE' );
+				titleNode.appendChild( new XMLNode( 3, title ));
+
+				vcardExtNode.appendChild( titleNode );
+			}
+
+			if ( url )
+			{
+				var urlNode:XMLNode = new XMLNode( 1, 'URL' );
+				urlNode.appendChild( new XMLNode( 3, url ));
+
+				vcardExtNode.appendChild( urlNode );
+			}
+
+			if ( workAddress || workCity || workCountry || workPostalCode || workStateProvince )
+			{
+				var workAddressNode:XMLNode = new XMLNode( 1, 'ADR' );
+				workAddressNode.appendChild( new XMLNode( 1, 'WORK' ));
+
+				if ( workAddress )
+				{
+					var workStreetNode:XMLNode = new XMLNode( 1, 'STREET' );
+					workStreetNode.appendChild( new XMLNode( 3, workAddress ));
+
+					workAddressNode.appendChild( workStreetNode );
+				}
+
+				if ( workCity )
+				{
+					var workCityNode:XMLNode = new XMLNode( 1, 'LOCALITY' );
+					workCityNode.appendChild( new XMLNode( 3, workCity ));
+
+					workAddressNode.appendChild( workCityNode );
+				}
+
+				if ( workCountry )
+				{
+					var workCountryNode:XMLNode = new XMLNode( 1, 'CTRY' );
+					workCountryNode.appendChild( new XMLNode( 3, workCountry ));
+
+					workAddressNode.appendChild( workCountryNode );
+				}
+
+				if ( workPostalCode )
+				{
+					var workPostalCodeNode:XMLNode = new XMLNode( 1, 'PCODE' );
+					workPostalCodeNode.appendChild( new XMLNode( 3, workPostalCode ));
+
+					workAddressNode.appendChild( workPostalCodeNode );
+				}
+
+				if ( workStateProvince )
+				{
+					var workStateProvinceNode:XMLNode = new XMLNode( 1, 'REGION' );
+					workStateProvinceNode.appendChild( new XMLNode( 3, workStateProvince ));
+
+					workAddressNode.appendChild( workStateProvinceNode );
+				}
+
+				vcardExtNode.appendChild( workAddressNode );
+			}
+
+			if ( homeAddress || homeCity || homeCountry || homePostalCode || homeStateProvince )
+			{
+				var homeAddressNode:XMLNode = new XMLNode( 1, 'ADR' );
+				homeAddressNode.appendChild( new XMLNode( 1, 'HOME' ));
+
+				if ( homeAddress )
+				{
+					var homeStreetNode:XMLNode = new XMLNode( 1, 'STREET' );
+					homeStreetNode.appendChild( new XMLNode( 3, homeAddress ));
+
+					homeAddressNode.appendChild( homeStreetNode );
+				}
+
+				if ( homeCity )
+				{
+					var homeCityNode:XMLNode = new XMLNode( 1, 'LOCALITY' );
+					homeCityNode.appendChild( new XMLNode( 3, homeCity ));
+
+					homeAddressNode.appendChild( homeCityNode );
+				}
+
+				if ( homeCountry )
+				{
+					var homeCountryNode:XMLNode = new XMLNode( 1, 'CTRY' );
+					homeCountryNode.appendChild( new XMLNode( 3, homeCountry ));
+
+					homeAddressNode.appendChild( homeCountryNode );
+				}
+
+				if ( homePostalCode )
+				{
+					var homePostalCodeNode:XMLNode = new XMLNode( 1, 'PCODE' );
+					homePostalCodeNode.appendChild( new XMLNode( 3, homePostalCode ));
+
+					homeAddressNode.appendChild( homePostalCodeNode );
+				}
+
+				if ( homeStateProvince )
+				{
+					var homeStateProvinceNode:XMLNode = new XMLNode( 1, 'REGION' );
+					homeStateProvinceNode.appendChild( new XMLNode( 3, homeStateProvince ));
+
+					homeAddressNode.appendChild( homeStateProvinceNode );
+				}
+
+				vcardExtNode.appendChild( homeAddressNode );
+			}
+
+			if ( workCellNumber )
+			{
+				var workCellNode:XMLNode = new XMLNode( 1, 'TEL' );
+				workCellNode.appendChild( new XMLNode( 1, 'WORK' ));
+				workCellNode.appendChild( new XMLNode( 1, 'CELL' ));
+				var workCellNumberNode:XMLNode = new XMLNode( 1, 'NUMBER' );
+				workCellNumberNode.appendChild( new XMLNode( 3, workCellNumber ));
+				workCellNode.appendChild( workCellNumberNode );
+
+				vcardExtNode.appendChild( workCellNode );
+			}
+
+			if ( workFaxNumber )
+			{
+				var workFaxNode:XMLNode = new XMLNode( 1, 'TEL' );
+				workFaxNode.appendChild( new XMLNode( 1, 'WORK' ));
+				workFaxNode.appendChild( new XMLNode( 1, 'FAX' ));
+				var workFaxNumberNode:XMLNode = new XMLNode( 1, 'NUMBER' );
+				workFaxNumberNode.appendChild( new XMLNode( 3, workFaxNumber ));
+				workFaxNode.appendChild( workFaxNumberNode );
+
+				vcardExtNode.appendChild( workFaxNode );
+			}
+
+			if ( workPagerNumber )
+			{
+				var workPagerNode:XMLNode = new XMLNode( 1, 'TEL' );
+				workPagerNode.appendChild( new XMLNode( 1, 'WORK' ));
+				workPagerNode.appendChild( new XMLNode( 1, 'PAGER' ));
+				var workPagerNumberNode:XMLNode = new XMLNode( 1, 'NUMBER' );
+				workPagerNumberNode.appendChild( new XMLNode( 3, workPagerNumber ));
+				workPagerNode.appendChild( workPagerNumberNode );
+
+				vcardExtNode.appendChild( workPagerNode );
+			}
+
+			if ( workVoiceNumber )
+			{
+				var workVoiceNode:XMLNode = new XMLNode( 1, 'TEL' );
+				workVoiceNode.appendChild( new XMLNode( 1, 'WORK' ));
+				workVoiceNode.appendChild( new XMLNode( 1, 'VOICE' ));
+				var workVoiceNumberNode:XMLNode = new XMLNode( 1, 'NUMBER' );
+				workVoiceNumberNode.appendChild( new XMLNode( 3, workVoiceNumber ));
+				workVoiceNode.appendChild( workVoiceNumberNode );
+
+				vcardExtNode.appendChild( workVoiceNode );
+
+			}
+
+			if ( homeCellNumber )
+			{
+				var homeCellNode:XMLNode = new XMLNode( 1, 'TEL' );
+				homeCellNode.appendChild( new XMLNode( 1, 'HOME' ));
+				homeCellNode.appendChild( new XMLNode( 1, 'CELL' ));
+				var homeCellNumberNode:XMLNode = new XMLNode( 1, 'NUMBER' );
+				homeCellNumberNode.appendChild( new XMLNode( 3, homeCellNumber ));
+				homeCellNode.appendChild( homeCellNumberNode );
+
+				vcardExtNode.appendChild( homeCellNode );
+			}
+
+			if ( homeFaxNumber )
+			{
+				var homeFaxNode:XMLNode = new XMLNode( 1, 'TEL' );
+				homeFaxNode.appendChild( new XMLNode( 1, 'HOME' ));
+				homeFaxNode.appendChild( new XMLNode( 1, 'FAX' ));
+				var homeFaxNumberNode:XMLNode = new XMLNode( 1, 'NUMBER' );
+				homeFaxNumberNode.appendChild( new XMLNode( 3, homeFaxNumber ));
+				homeFaxNode.appendChild( homeFaxNumberNode );
+
+				vcardExtNode.appendChild( homeFaxNode );
+			}
+
+			if ( homePagerNumber )
+			{
+				var homePagerNode:XMLNode = new XMLNode( 1, 'TEL' );
+				homePagerNode.appendChild( new XMLNode( 1, 'HOME' ));
+				homePagerNode.appendChild( new XMLNode( 1, 'PAGER' ));
+				var homePagerNumberNode:XMLNode = new XMLNode( 1, 'NUMBER' );
+				homePagerNumberNode.appendChild( new XMLNode( 3, homePagerNumber ));
+				homePagerNode.appendChild( homePagerNumberNode );
+
+				vcardExtNode.appendChild( homePagerNode );
+			}
+
+			if ( homeVoiceNumber )
+			{
+				var homeVoiceNode:XMLNode = new XMLNode( 1, 'TEL' );
+				homeVoiceNode.appendChild( new XMLNode( 1, 'HOME' ));
+				homeVoiceNode.appendChild( new XMLNode( 1, 'VOICE' ));
+				var homeVoiceNumberNode:XMLNode = new XMLNode( 1, 'NUMBER' );
+				homeVoiceNumberNode.appendChild( new XMLNode( 3, homeVoiceNumber ));
+				homeVoiceNode.appendChild( homeVoiceNumberNode );
+
+				vcardExtNode.appendChild( homeVoiceNode );
+			}
+
+			iq.addExtension( vcardExt );
+			con.send( iq );
 		}
 	}
-}+}


pin bugfix

pin bugfix

--- src/robotlegs/bender/framework/impl/Pin.as
+++ src/robotlegs/bender/framework/impl/Pin.as
@@ -34,9 +34,9 @@

 		public function flush():void
 		{
-			for each (var key:* in _instances)
+			for (var instance:Object in _instances)
 			{
-				delete _instances[key];
+				delete _instances[instance];
 			}
 		}
 	}


Transferred from the Adobe Open Source Subversion Repository

Revision: 23243
Author:   cframpto@adobe.com
Date:     2011-12-20T00:59:57.384047Z

Log Message:
-----------
In frameworks, remove Adobe headers from all files except xml/mxml file types.  There are also a few .txt files that are license files that I didn't touch yet.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1290585 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/advancedgrids/src/mx/olap/OLAPAttribute.as
+++ frameworks/projects/advancedgrids/src/mx/olap/OLAPAttribute.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
-//
-////////////////////////////////////////////////////////////////////////////////

 package mx.olap
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 937
Author:   clucier@adobe.com
Date:     2008-03-26T19:50:13.757467Z

Log Message:
-----------
Adding support for multiple class names in styleName property.

Bugs: SDK-14599, SDK-14385
Docs: Need to ensure the String flavor of styleName is documented as supporting space delimited list of class names.  Also need to document that order of precedence when multiple class names are specified is the order as listed in value of styleName property, not the order of original  declaration of classes within the stylesheet (differs from CSS 2.1 in that way).
QA: Yes
Reviewer: Glenn Ruehle

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/dataGridClasses/DataGridItemRenderer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1262638 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/styles/StyleProtoChain.as
+++ frameworks/projects/framework/src/mx/styles/StyleProtoChain.as
@@ -30,275 +30,288 @@
  */
 public class StyleProtoChain
 {
-	include "../core/Version.as";
-
-	//--------------------------------------------------------------------------
-	//
-	//  Class methods
-	//
-	//--------------------------------------------------------------------------
-
-	/**
-	 *  @private
-	 *  If the styleName property points to a UIComponent, then we search
-	 *  for stylable properties in the following order:
-	 *
-	 *  1) Look for inline styles on this object
-	 *  2) Look for inline styles on the styleName object
-	 *  3) Look for class selectors on the styleName object
-	 *  4) Look for type selectors on the styleName object
-	 *  5) Look for type selectors on this object
-	 *  6) Follow the usual search path for the styleName object
-	 *
-	 *  If this object doesn't have any type selectors, then the
-	 *  search path can be simplified to two steps:
-	 *
-	 *  1) Look for inline styles on this object
-	 *  2) Follow the usual search path for the styleName object
-	 */
-	public static function initProtoChainForUIComponentStyleName(
-									obj:IStyleClient):void
-	{
-		var styleName:IStyleClient = IStyleClient(obj.styleName);
-		var target:DisplayObject = obj as DisplayObject;
-
-		// Push items onto the proto chain in reverse order, beginning with
-		// 6) Follow the usual search path for the styleName object
-		var nonInheritChain:Object = styleName.nonInheritingStyles;
-		if (!nonInheritChain || nonInheritChain == UIComponent.STYLE_UNINITIALIZED)
-        {
-			nonInheritChain = StyleManager.stylesRoot;
+    include "../core/Version.as";
+
+    //--------------------------------------------------------------------------
+    //
+    //  Class methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  If the styleName property points to a UIComponent, then we search
+     *  for stylable properties in the following order:
+     *
+     *  1) Look for inline styles on this object
+     *  2) Look for inline styles on the styleName object
+     *  3) Look for class selectors on the styleName object
+     *  4) Look for type selectors on the styleName object
+     *  5) Look for type selectors on this object
+     *  6) Follow the usual search path for the styleName object
+     *
+     *  If this object doesn't have any type selectors, then the
+     *  search path can be simplified to two steps:
+     *
+     *  1) Look for inline styles on this object
+     *  2) Follow the usual search path for the styleName object
+     */
+    public static function initProtoChainForUIComponentStyleName(
+                                    obj:IStyleClient):void
+    {
+        var styleName:IStyleClient = IStyleClient(obj.styleName);
+        var target:DisplayObject = obj as DisplayObject;
+
+        // Push items onto the proto chain in reverse order, beginning with
+        // 6) Follow the usual search path for the styleName object
+        var nonInheritChain:Object = styleName.nonInheritingStyles;
+        if (!nonInheritChain || nonInheritChain == UIComponent.STYLE_UNINITIALIZED)
+        {
+            nonInheritChain = StyleManager.stylesRoot;

             if (nonInheritChain.effects)
                 obj.registerEffects(nonInheritChain.effects);
         }

-		var inheritChain:Object = styleName.inheritingStyles;
-		if (!inheritChain || inheritChain == UIComponent.STYLE_UNINITIALIZED)
-			inheritChain = StyleManager.stylesRoot;
-
-		// If there's no type selector on this object, then we can collapse
-		// 6 steps to 2 (see above)
-		var typeSelectors:Array = obj.getClassStyleDeclarations();
-		var n:int = typeSelectors.length;
-
-		// If we are a StyleProxy and we aren't building the protochain from
-		// our type selectors, then we need to build the protochain from
-		// the styleName since styleName.nonInheritingStyles is always null.
-		if (styleName is StyleProxy)
-		{
-			if (n == 0)
-			{
-				// 4) Look for type selectors on the styleName object
-				// 3) Look for class selectors on the styleName object
-				// 2) Look for inline styles on the styleName object
-				nonInheritChain = addProperties(nonInheritChain, styleName, false);
-			}
-			target = StyleProxy(styleName).source as DisplayObject;
-		}
-
-		for (var i:int = 0; i < n; i++)
-		{
-			var typeSelector:CSSStyleDeclaration = typeSelectors[i];
-
-			// If there's no *inheriting* type selector on this object, then we
-			// can still collapse 6 steps to 2 for the inheriting properties.
-
-			// 5) Look for type selectors on this object
-			inheritChain = typeSelector.addStyleToProtoChain(inheritChain, target);
-
-			// 4) Look for type selectors on the styleName object
-			// 3) Look for class selectors on the styleName object
-			// 2) Look for inline styles on the styleName object
-			inheritChain = addProperties(inheritChain, styleName, true);
-
-			// 5) Look for type selectors on this object
-			nonInheritChain = typeSelector.addStyleToProtoChain(nonInheritChain, target);
-
-			// 4) Look for type selectors on the styleName object
-			// 3) Look for class selectors on the styleName object
-			// 2) Look for inline styles on the styleName object
-			nonInheritChain = addProperties(nonInheritChain, styleName, false);
-
-			if (typeSelector.effects)
-				obj.registerEffects(typeSelector.effects);
-		}
-
-		// 1) Look for inline styles on this object
-
-		obj.inheritingStyles =
-			obj.styleDeclaration ?
-        	obj.styleDeclaration.addStyleToProtoChain(inheritChain, target) :
-			inheritChain;
-
-		obj.nonInheritingStyles =
-			obj.styleDeclaration ?
-			obj.styleDeclaration.addStyleToProtoChain(nonInheritChain, target) :
-			nonInheritChain;
-	}
-
-	/**
-	 *  See the comment for the initProtoChainForUIComponentStyleName
-	 *  function. The comment for that function includes a six-step
-	 *  sequence. This sub-function implements the following pieces
-	 *  of that sequence:
-	 *
-	 *  2) Look for inline styles on the styleName object
-	 *  3) Look for class selectors on the styleName object
-	 *  4) Look for type selectors on the styleName object
-	 *
-	 *   This piece is broken out as a separate function so that it
-	 *  can be called recursively when the styleName object has a
-	 *  styleName property is itself another UIComponent.
-	 */
-	private	static function addProperties(chain:Object, obj:IStyleClient,
-										  bInheriting:Boolean):Object
-	{
-		// Only use a filter map if styleName is a StyleProxy and we are building the nonInheritingStyles chain
-		var filterMap:Object = obj is StyleProxy && !bInheriting ? StyleProxy(obj).filterMap : null;
-
-		// StyleProxy's usually have sources that are DisplayObject's, but a StyleProxy can also have
-		// another StyleProxy as it's source (Example: CalendarLayout's source is a StyleProxy for DateChooser,
-		// whose style is a StyleProxy for DateField)
-
-		// The way we use target is a bit hacky, but we always assume that styles (if pointed to DisplayObjects)
-		// are the parent (or atleast an ancestor), and we rely on this down the line (such as in
-		// DataGridColumn.addStyleToProtoChain)
-		var curObj:IStyleClient = obj;
-		while (curObj is StyleProxy)
-		{
-			curObj = StyleProxy(curObj).source;
-		}
-		var target:DisplayObject = curObj as DisplayObject;
-
-		// 4) Add type selectors
-		var typeSelectors:Array = obj.getClassStyleDeclarations();
-		var n:int = typeSelectors.length;
-		for (var i:int = 0; i < n; i++)
-		{
-			var typeSelector:CSSStyleDeclaration = typeSelectors[i];
-            chain = typeSelector.addStyleToProtoChain(chain, target, filterMap);
+        var inheritChain:Object = styleName.inheritingStyles;
+        if (!inheritChain || inheritChain == UIComponent.STYLE_UNINITIALIZED)
+            inheritChain = StyleManager.stylesRoot;
+
+        // If there's no type selector on this object, then we can collapse
+        // 6 steps to 2 (see above)
+        var typeSelectors:Array = obj.getClassStyleDeclarations();
+        var n:int = typeSelectors.length;
+
+        // If we are a StyleProxy and we aren't building the protochain from
+        // our type selectors, then we need to build the protochain from
+        // the styleName since styleName.nonInheritingStyles is always null.
+        if (styleName is StyleProxy)
+        {
+            if (n == 0)
+            {
+                // 4) Look for type selectors on the styleName object
+                // 3) Look for class selectors on the styleName object
+                // 2) Look for inline styles on the styleName object
+                nonInheritChain = addProperties(nonInheritChain, styleName, false);
+            }
+            target = StyleProxy(styleName).source as DisplayObject;
+        }
+
+        for (var i:int = 0; i < n; i++)
+        {
+            var typeSelector:CSSStyleDeclaration = typeSelectors[i];
+
+            // If there's no *inheriting* type selector on this object, then we
+            // can still collapse 6 steps to 2 for the inheriting properties.
+
+            // 5) Look for type selectors on this object
+            inheritChain = typeSelector.addStyleToProtoChain(inheritChain, target);
+
+            // 4) Look for type selectors on the styleName object
+            // 3) Look for class selectors on the styleName object
+            // 2) Look for inline styles on the styleName object
+            inheritChain = addProperties(inheritChain, styleName, true);
+
+            // 5) Look for type selectors on this object
+            nonInheritChain = typeSelector.addStyleToProtoChain(nonInheritChain, target);
+
+            // 4) Look for type selectors on the styleName object
+            // 3) Look for class selectors on the styleName object
+            // 2) Look for inline styles on the styleName object
+            nonInheritChain = addProperties(nonInheritChain, styleName, false);

             if (typeSelector.effects)
                 obj.registerEffects(typeSelector.effects);
-		}
-
-		// 3) Add class selectors
-		var styleName:Object = obj.styleName;
-		if (styleName)
-		{
-			var classSelector:CSSStyleDeclaration;
-
-			if (typeof(styleName) == "object")
-			{
-				if (styleName is CSSStyleDeclaration)
-				{
-					// Get the style sheet referenced by the styleName property.
-					classSelector = CSSStyleDeclaration(styleName);
-				}
-				else
-				{
-					// If the styleName property is another UIComponent, then
-					// recursively add type selectors, class selectors, and
-					// inline styles for that UIComponent
-					chain = addProperties(chain, IStyleClient(styleName),
-										  bInheriting);
-				}
-			}
-			else
-			{
-				// Get the style sheet referenced by the styleName property.
-				classSelector =
-					StyleManager.getStyleDeclaration("." + styleName);
-			}
-
-			if (classSelector)
-			{
-                chain = classSelector.addStyleToProtoChain(chain, target, filterMap);
-
-				if (classSelector.effects)
-					obj.registerEffects(classSelector.effects);
-			}
-		}
-
-		// 2) Add inline styles
+        }
+
+        // 1) Look for inline styles on this object
+
+        obj.inheritingStyles =
+            obj.styleDeclaration ?
+            obj.styleDeclaration.addStyleToProtoChain(inheritChain, target) :
+            inheritChain;
+
+        obj.nonInheritingStyles =
+            obj.styleDeclaration ?
+            obj.styleDeclaration.addStyleToProtoChain(nonInheritChain, target) :
+            nonInheritChain;
+    }
+
+    /**
+     *  See the comment for the initProtoChainForUIComponentStyleName
+     *  function. The comment for that function includes a six-step
+     *  sequence. This sub-function implements the following pieces
+     *  of that sequence:
+     *
+     *  2) Look for inline styles on the styleName object
+     *  3) Look for class selectors on the styleName object
+     *  4) Look for type selectors on the styleName object
+     *
+     *   This piece is broken out as a separate function so that it
+     *  can be called recursively when the styleName object has a
+     *  styleName property is itself another UIComponent.
+     */
+    private static function addProperties(chain:Object, obj:IStyleClient,
+                                          bInheriting:Boolean):Object
+    {
+        // Only use a filter map if styleName is a StyleProxy and we are building the nonInheritingStyles chain
+        var filterMap:Object = obj is StyleProxy && !bInheriting ? StyleProxy(obj).filterMap : null;
+
+        // StyleProxy's usually have sources that are DisplayObject's, but a StyleProxy can also have
+        // another StyleProxy as it's source (Example: CalendarLayout's source is a StyleProxy for DateChooser,
+        // whose style is a StyleProxy for DateField)
+
+        // The way we use target is a bit hacky, but we always assume that styles (if pointed to DisplayObjects)
+        // are the parent (or atleast an ancestor), and we rely on this down the line (such as in
+        // DataGridColumn.addStyleToProtoChain)
+        var curObj:IStyleClient = obj;
+        while (curObj is StyleProxy)
+        {
+            curObj = StyleProxy(curObj).source;
+        }
+        var target:DisplayObject = curObj as DisplayObject;
+
+        // 4) Add type selectors
+        var typeSelectors:Array = obj.getClassStyleDeclarations();
+        var n:int = typeSelectors.length;
+        for (var i:int = 0; i < n; i++)
+        {
+            var typeSelector:CSSStyleDeclaration = typeSelectors[i];
+            chain = typeSelector.addStyleToProtoChain(chain, target, filterMap);
+
+            if (typeSelector.effects)
+                obj.registerEffects(typeSelector.effects);
+        }
+
+        // 3) Add class selectors
+        var styleName:Object = obj.styleName;
+        if (styleName)
+        {
+            var classSelectors:Array = [];
+
+            if (typeof(styleName) == "object")
+            {
+                if (styleName is CSSStyleDeclaration)
+                {
+                    // Get the style sheet referenced by the styleName property.
+                    classSelectors.push(CSSStyleDeclaration(styleName));
+                }
+                else
+                {
+                    // If the styleName property is another UIComponent, then
+                    // recursively add type selectors, class selectors, and
+                    // inline styles for that UIComponent
+                    chain = addProperties(chain, IStyleClient(styleName),
+                                          bInheriting);
+                }
+            }
+            else
+            {
+                // Get the style sheets referenced by the styleName property
+                var styleNames:Array = styleName.split(/\s+/);
+                for (var c:int=0; c < styleNames.length; c++)
+                {
+                    if (styleNames[c].length) {
+                        classSelectors.push(StyleManager.getStyleDeclaration("." +
+                            styleNames[c]));
+                    }
+                }
+            }
+
+            for (i = 0; i < classSelectors.length; i++)
+            {
+                var classSelector:CSSStyleDeclaration = classSelectors[i];
+                chain = classSelector.addStyleToProtoChain(chain, target, filterMap);
+                if (classSelector.effects)
+                    obj.registerEffects(classSelector.effects);
+            }
+
+        }
+
+        // 2) Add inline styles
         if (obj.styleDeclaration)
             chain = obj.styleDeclaration.addStyleToProtoChain(chain, target, filterMap);

-		return chain;
-	}
-
-	/**
-	 *  @private
-	 */
-	public static function initTextField(obj:IUITextField):void
-	{
-		// TextFields never have any inline styles or type selector, so
-		// this is an optimized version of the initObject function (above)
-		var styleName:Object = obj.styleName;
-		var classSelector:CSSStyleDeclaration;
-
-		if (styleName)
-		{
-			if (typeof(styleName) == "object")
-			{
-				if (styleName is CSSStyleDeclaration)
-				{
-					// Get the style sheet referenced by the styleName property.
-					classSelector = CSSStyleDeclaration(styleName);
-				}
-				else if (styleName is StyleProxy)
-				{
-					obj.inheritingStyles =
-						IStyleClient(styleName).inheritingStyles;
-
-					obj.nonInheritingStyles = addProperties(StyleManager.stylesRoot, IStyleClient(styleName), false);
-
-					return;
-				}
-				else
-				{
-					// styleName points to a UIComponent, so just set
-					// this TextField's proto chains to be the same
-					// as that UIComponent's proto chains.
-
-					obj.inheritingStyles =
-						IStyleClient(styleName).inheritingStyles;
-					obj.nonInheritingStyles =
-						IStyleClient(styleName).nonInheritingStyles;
-					return;
-				}
-			}
-			else
-			{
-				// Get the style sheet referenced by the styleName property
-				classSelector =
-					StyleManager.getStyleDeclaration("." + styleName);
-			}
-		}
-
-		// To build the proto chain, we start at the end and work forward.
-		// We'll start by getting the tail of the proto chain, which is:
-		//  - for non-inheriting styles, the global style sheet
-		//  - for inheriting styles, my parent's style object
-		var inheritChain:Object = IStyleClient(obj.parent).inheritingStyles;
-		var nonInheritChain:Object = StyleManager.stylesRoot;
-		if (!inheritChain)
-			inheritChain = StyleManager.stylesRoot;
-
-		// Next is the class selector
-		if (classSelector)
-		{
+        return chain;
+    }
+
+    /**
+     *  @private
+     */
+    public static function initTextField(obj:IUITextField):void
+    {
+        // TextFields never have any inline styles or type selector, so
+        // this is an optimized version of the initObject function (above)
+        var styleName:Object = obj.styleName;
+        var classSelectors:Array = [];
+
+        if (styleName)
+        {
+            if (typeof(styleName) == "object")
+            {
+                if (styleName is CSSStyleDeclaration)
+                {
+                    // Get the style sheet referenced by the styleName property.
+                    classSelectors.push(CSSStyleDeclaration(styleName));
+                }
+                else if (styleName is StyleProxy)
+                {
+                    obj.inheritingStyles =
+                        IStyleClient(styleName).inheritingStyles;
+
+                    obj.nonInheritingStyles = addProperties(StyleManager.stylesRoot, IStyleClient(styleName), false);
+
+                    return;
+                }
+                else
+                {
+                    // styleName points to a UIComponent, so just set
+                    // this TextField's proto chains to be the same
+                    // as that UIComponent's proto chains.
+                    obj.inheritingStyles =
+                        IStyleClient(styleName).inheritingStyles;
+                    obj.nonInheritingStyles =
+                        IStyleClient(styleName).nonInheritingStyles;
+                    return;
+                }
+            }
+            else
+            {
+                // Get the style sheets referenced by the styleName property
+                var styleNames:Array = styleName.split(/\s+/);
+                for (var c:int=0; c < styleNames.length; c++)
+                {
+                    if (styleNames[c].length) {
+                        classSelectors.push(StyleManager.getStyleDeclaration("." +
+                            styleNames[c]));
+                    }
+                }
+            }
+        }
+
+        // To build the proto chain, we start at the end and work forward.
+        // We'll start by getting the tail of the proto chain, which is:
+        //  - for non-inheriting styles, the global style sheet
+        //  - for inheriting styles, my parent's style object
+        var inheritChain:Object = IStyleClient(obj.parent).inheritingStyles;
+        var nonInheritChain:Object = StyleManager.stylesRoot;
+        if (!inheritChain)
+            inheritChain = StyleManager.stylesRoot;
+
+        // Next are the class selectors
+        for (var i:int = 0; i < classSelectors.length; i++)
+        {
+            var classSelector:CSSStyleDeclaration = classSelectors[i];
             inheritChain =
-				classSelector.addStyleToProtoChain(inheritChain, DisplayObject(obj));
+                classSelector.addStyleToProtoChain(inheritChain, DisplayObject(obj));

             nonInheritChain =
-				classSelector.addStyleToProtoChain(nonInheritChain, DisplayObject(obj));
-		}
-
+                classSelector.addStyleToProtoChain(nonInheritChain, DisplayObject(obj));
+        }
+
         obj.inheritingStyles = inheritChain;
         obj.nonInheritingStyles = nonInheritChain;
-	}
+    }
 }

 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 6046
Author:   smgilson@adobe.com
Date:     2009-04-08T20:26:58.579436Z

Log Message:
-----------
Fix error in ASDoc comment

QE Notes: None
Doc Notes: None
Checkintests: Passed

Modified Paths:
--------------
/flex/sdk/trunk/frameworks/projects/framework/src/mx/controls/listClasses/ListBase.as

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1268826 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/controls/listClasses/ListBase.as
+++ frameworks/projects/mx/src/mx/controls/listClasses/ListBase.as
@@ -1332,7 +1332,7 @@
      *  and selectedItems.
      */
     private var lastSelectionData:ListBaseSelectionData;
-
+
     /**
      *  The first proposed selectedItem.  Because the loop where it is used
      *  can be called several times becaouse of IPEs, we have to store stuff like
@@ -3534,7 +3534,7 @@
      *  A function used to compare selectedItems against items in the
      *  dataProvider.  If there is a match, the item in the dataProvider
      *  becomes part of the selection.
-   	 *  By default, or if selectedItemsCompareFunction is set to null
+     *  By default, or if selectedItemsCompareFunction is set to null
      *  the default comparision function is used which uses
      *  strict equality (===).  Note that earlier releases of
      *  Flex used simple equality (==) so there could be behavioral
@@ -3932,7 +3932,7 @@
     {
         // this code is nearly duplicating UIComponent.validateDisplayList();

-    	validateMatrix();
+        validateMatrix();

         if (invalidateDisplayListFlag)
         {
@@ -5630,7 +5630,7 @@
      *  reservedItemRenderers map. Otherwise (or if no reserved renderer
      *  is found) it retrieves from the freeItemRenderers stack.
      *
-     *  @param data Object The data to be presented by the item renderer.
+     *  @param data The data to be presented by the item renderer.
      *
      *  @langversion 3.0
      *  @playerversion Flash 9


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1273555 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/rpc/src/mx/messaging/MultiTopicConsumer.as
+++ frameworks/projects/rpc/src/mx/messaging/MultiTopicConsumer.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2007 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////

 package mx.messaging
 {


Fix typo in Editor scripts.

Fix typo in Editor scripts.

--- bin/Data/Scripts/Editor/AttributeEditor.as
+++ bin/Data/Scripts/Editor/AttributeEditor.as
@@ -1519,9 +1519,9 @@
             for (uint attributeIndex = 0; attributeIndex < attributes.length; attributeIndex++)
             {
                 AttributeInfo attribute = attributes[attributeIndex];
-                if (attribute.type == VAR_VARIANTVECTOR and attribute.variantStructureElementsNames.length > 0)
+                if (attribute.type == VAR_VARIANTVECTOR and attribute.variantStructureElementNames.length > 0)
                 {
-                    Array<String> elementsNames = attribute.variantStructureElementsNames;
+                    Array<String> elementsNames = attribute.variantStructureElementNames;
                     vectorStructs.Push(VectorStruct(objectName, attribute.name, elementsNames, 1));
                 }
             }


fix memory leak in the Shader ASG node

fix memory leak in the Shader ASG node

--- src/aerys/minko/render/shader/compiler/graph/nodes/leaf/Sampler.as
+++ src/aerys/minko/render/shader/compiler/graph/nodes/leaf/Sampler.as
@@ -4,6 +4,8 @@
 	import aerys.minko.render.resource.texture.TextureResource;
 	import aerys.minko.render.shader.compiler.CRC32;
 	import aerys.minko.render.shader.compiler.graph.nodes.AbstractNode;
+
+	import flash.utils.Dictionary;

 	/**
 	 * @private
@@ -15,7 +17,9 @@
 		/**
 		 * This vector is only used to compute the hash of the Sampler.
 		 */
-		private static const RESOURCES : Vector.<ITextureResource> = new Vector.<ITextureResource>();
+		private static const RESOURCE_ID  : Dictionary    = new Dictionary(true);
+
+        private static var _lastId          : uint          = 0;

 		private var _textureResource : ITextureResource;

@@ -38,12 +42,12 @@

 		override protected function computeHash() : uint
 		{
-			var textureResourceId : int = RESOURCES.indexOf(_textureResource);
+			var textureResourceId : uint = RESOURCE_ID[_textureResource];

-			if (textureResourceId === -1)
+			if (!textureResourceId)
 			{
-				RESOURCES.push(textureResource);
-				textureResourceId = RESOURCES.length - 1;
+				RESOURCE_ID[_textureResource] = ++_lastId;
+				textureResourceId = _lastId;
 			}

 			return CRC32.computeForString('Sampler' + textureResourceId)


Add joypad

Add joypad

--- index.as
+++ index.as
@@ -222,9 +222,9 @@

   // Video RAM: $8000 – $9FFF
   if (address & 0xF000) <= 0x9000 {
-    // VRAM can be accessed as long as we're not mode 3
-    // let mode = mmu_read8(0xFF41) & 3;
-    // if mode == 3 { return 0xFF; }
+    // VRAM cannot be accessed in mode 3
+    let mode = mmu_read8(0xFF41) & 3;
+    if mode == 3 { return 0xFF; }

     return *(vram + (address & 0x1FFF));
   }
@@ -243,6 +243,10 @@

   // Sprite Attribute Table (OAM): $FE00 – $FE9F
   if (address >= 0xFE00) and (address <= 0xFE9F) {
+    // OAM cannot be accessed in modes 2 or 3
+    let mode = mmu_read8(0xFF41) & 3;
+    if mode == 3 or mode == 2 { return 0xFF; }
+
     return *(oam + (address & 0xFF));
   }

@@ -314,7 +318,7 @@

   // Video RAM: $8000 – $9FFF
   if (address & 0xF000) <= 0x9000 {
-    // VRAM can be accessed as long as we're not mode 3
+    // FIXME: VRAM cannot be accessed in mode 3
     // let mode = mmu_read8(0xFF41) & 3;
     // if mode == 3 { return; }

@@ -340,8 +344,11 @@

   // Sprite Attribute Table (OAM): $FE00 – $FE9F
   if (address >= 0xFE00) and (address <= 0xFE9F) {
-    // TODO: OAM
-    // *(oam + (address & 0xFF)) = value;
+    // FIXME: OAM cannot be accessed in modes 2 or 3
+    // let mode = mmu_read8(0xFF41) & 3;
+    // if mode == 3 or mode == 2 { return; }
+
+    *(oam + (address & 0xFF)) = value;
     return;
   }

@@ -4320,7 +4327,6 @@
   }

   // STEP -> Interrupts
-
   let irq = IF & IE;
   if IME and irq > 0 {
     om_push16(&PC);
@@ -4651,7 +4657,7 @@
     return gpu_palette;
   }

-  // printf("warn: unhandled read from GPU register: $%04X\n", address);
+  printf("warn: unhandled read from GPU register: $%04X\n", address);
   return 0;
 }

@@ -4696,9 +4702,28 @@
 let joy_sel_button = false;
 let joy_sel_direction = false;

+// 1 - Pressed
+let joy_state_start = false;
+let joy_state_sel = false;
+let joy_state_a = false;
+let joy_state_b = false;
+let joy_state_up = false;
+let joy_state_down = false;
+let joy_state_left = false;
+let joy_state_right = false;
+
 def joy_reset() {
   joy_sel_button = false;
   joy_sel_direction = false;
+
+  joy_state_start = false;
+  joy_state_sel = false;
+  joy_state_a = false;
+  joy_state_b = false;
+  joy_state_up = false;
+  joy_state_down = false;
+  joy_state_left = false;
+  joy_state_right = false;
 }

 def joy_write(address: uint16, value: uint8) {
@@ -4729,10 +4754,10 @@
       bit(true, 6) |
       bit(not joy_sel_button, 5) |
       bit(not joy_sel_direction, 4) |
-      bit(true, 3) |
-      bit(true, 2) |
-      bit(true, 1) |
-      bit(true, 0)
+      bit(not ((joy_sel_button and joy_state_start) or (joy_sel_direction and joy_state_down)), 3) |
+      bit(not ((joy_sel_button and joy_state_sel) or (joy_sel_direction and joy_state_up)), 2) |
+      bit(not ((joy_sel_button and joy_state_b) or (joy_sel_direction and joy_state_left)), 1) |
+      bit(not ((joy_sel_button and joy_state_a) or (joy_sel_direction and joy_state_right)), 0)
     );
   } else {
     printf("warn: unhandled read from Joypad register: $%04X\n", address);
@@ -4871,7 +4896,36 @@
     if evt_type == 0x100 {
       // Quit – App was asked to quit (nicely)
       is_running = false;
-      return;
+    } else if evt_type == 0x300 or evt_type == 0x301 {
+      // Key Up/Down Event
+      let code = int64(*(((_evt as *uint8) + 16) as *c_int));
+      let pressed = (evt_type == 0x300);
+
+      if code == 40 {
+        // START => ENTER (US Keyboard)
+        joy_state_start = pressed;
+      } else if code == 29 {
+        // A => Z (US Keyboard)
+        joy_state_a = pressed;
+      } else if code == 27 {
+        // B => X (US Keyboard)
+        joy_state_b = pressed;
+      } else if code == 225 {
+        // SELECT => LEFT SHIFT (US Keyboard)
+        joy_state_sel = pressed;
+      } else if code == 82 {
+        // UP => UP ARROW (US Keyboard)
+        joy_state_up = pressed;
+      } else if code == 81 {
+        // DOWN => DOWN ARROW (US Keyboard)
+        joy_state_down = pressed;
+      } else if code == 80 {
+        // LEFT => LEFT ARROW (US Keyboard)
+        joy_state_left = pressed;
+      } else if code == 79 {
+        // RIGHT => RIGHT ARROW (US Keyboard)
+        joy_state_right = pressed;
+      }
     }
   }
 }


:memo:

:memo:

--- index.as
+++ index.as
@@ -33,3 +33,5 @@
 // [ ] TypeDeduce in regards to `Name`
 // [ ] Duplicate instantiate should not create more things
 // [ ] Test!
+
+// [ ] Error: Use before declare (applies mainly to `let r = r * 2` cases)


OFC-652 Min count error not shown in multiple code attribute input fields

--- collect-flex/collect-flex-client/src/main/flex/org/openforis/collect/presenter/AttributePresenter.as
+++ collect-flex/collect-flex-client/src/main/flex/org/openforis/collect/presenter/AttributePresenter.as
@@ -7,6 +7,7 @@

 	import org.openforis.collect.event.ApplicationEvent;
 	import org.openforis.collect.metamodel.proxy.AttributeDefinitionProxy;
+	import org.openforis.collect.metamodel.proxy.CodeAttributeDefinitionProxy;
 	import org.openforis.collect.model.proxy.AttributeProxy;
 	import org.openforis.collect.remoting.service.UpdateResponse;
 	import org.openforis.collect.ui.component.detail.AttributeItemRenderer;
@@ -49,7 +50,7 @@
 			var validationToolTipTrigger:UIComponent = validationStateDisplay;
 			_validationDisplayManager = new ValidationDisplayManager(validationToolTipTrigger, validationStateDisplay);
 			var attrDefn:AttributeDefinitionProxy = _view.attributeDefinition;
-			_validationDisplayManager.showMinMaxCountErrors = ! attrDefn.multiple;
+			_validationDisplayManager.showMinMaxCountErrors = ! attrDefn.multiple || attrDefn instanceof CodeAttributeDefinitionProxy;
 			if(_view.attribute != null) {
 				updateValidationDisplayManager();
 			}


Don't choke if our url is set to null, instead just clear any previous media.

git-svn-id: b675b909355d5cf946977f44a8ec5a6ceb3782e4@456 ed5b42cb-e716-0410-a449-f6a68f950b19

--- src/as/com/threerings/flash/MediaContainer.as
+++ src/as/com/threerings/flash/MediaContainer.as
@@ -140,9 +140,11 @@
         _url = url;

         // set up the new media
-        willShowNewMedia();
-        showNewMedia(url);
-        didShowNewMedia();
+        if (url != null) {
+            willShowNewMedia();
+            showNewMedia(url);
+            didShowNewMedia();
+        }
     }

     /**


Bugfix for viewport calculation logic

Bugfix for viewport calculation logic

--- src/org/openPyro/layout/VListLayout.as
+++ src/org/openPyro/layout/VListLayout.as
@@ -48,7 +48,7 @@
 		}

 		public function get visibleRenderersData():Array{
-			var scrollAbleHeight:Number = _listBase.contentHeight - _listBase.height;
+			var scrollAbleHeight:Number = Math.max(0,_listBase.contentHeight - _listBase.height);
 			var scrollPos:Number = _listBase.verticalScrollPosition*scrollAbleHeight;
 			var newTopRendererIndex:int = Math.floor(scrollPos/_listBase.rowHeight);
 			var newRenderersData:Array = []


Added jeff's modified XMLLister

Added jeff's modified XMLLister

git-svn-id: 9278a788294a4258aac04586390fc35fb4a5f335@6783 a9308255-753e-0410-a2e9-80b3fbc4fff6

--- FlexUnit4/src/org/flexunit/runner/notification/async/XMLListener.as
+++ FlexUnit4/src/org/flexunit/runner/notification/async/XMLListener.as
@@ -38,20 +38,20 @@

 package org.flexunit.runner.notification.async
 {
-	import flash.events.Event;
-	import flash.events.EventDispatcher;
-	import flash.events.IOErrorEvent;
-	import flash.events.SecurityErrorEvent;
-	import flash.net.XMLSocket;
-
-	import mx.logging.ILogger;
+	import flash.events.Event;
+	import flash.events.EventDispatcher;
+	import flash.events.IOErrorEvent;
+	import flash.events.SecurityErrorEvent;
+	import flash.net.XMLSocket;
+
+	import mx.logging.ILogger;
 	import mx.logging.Log;
-
-	import org.flexunit.runner.Descriptor;
-	import org.flexunit.runner.IDescription;
-	import org.flexunit.runner.Result;
-	import org.flexunit.runner.notification.Failure;
-	import org.flexunit.runner.notification.IAsyncStartupRunListener;
+
+	import org.flexunit.runner.Descriptor;
+	import org.flexunit.runner.IDescription;
+	import org.flexunit.runner.Result;
+	import org.flexunit.runner.notification.Failure;
+	import org.flexunit.runner.notification.IAsyncStartupRunListener;

 	public class XMLListener extends EventDispatcher implements IAsyncStartupRunListener
@@ -103,29 +103,20 @@
 		}

 		public function testRunStarted( description:IDescription ):void{
-			// XML Socket in flexbuilder is expecting a startTestRun node at the begining of the results.
-			// it seems to use this to reset hte current results, and prepopulate the total number of tests
-			// however, in flexunit4, we are unable to determine the total number of tests before hand, so
-			// we are sending through an empty startTestRun node, so the reset can still happen.
-			sendResults("<startTestRun totalTestCount='0'  projectName='' contextName='' />");
+
 		}

 		public function testRunFinished( result:Result ):void {

-			// if we want to wait until all tests are finished before sending any results,
-			// in this method we should first call printHeader, then printResults, then printFooter
-			// however, as we are now sending through results as they happen, we use this method only to call printFooter
-			//printHeader( result );
-			//printResults(result);
+			printHeader( result );
+			printResults(result);
 			printFooter( result );
 		}

 		public function testStarted( description:IDescription ):void {
-			// called before each test
 		}

 		public function testFinished( description:IDescription ):void {
-			// called after each test
 			if(!lastFailedTest || description.displayName != lastFailedTest.displayName){
 				var desc:Descriptor = getDescriptorFromDescription(description);
 				sendResults("<testCase name='"+desc.method+"' testSuite='"+desc.suite+"'  status='"+SUCCESS+"'/>");
@@ -134,11 +125,9 @@
 		}

 		public function testAssumptionFailure( failure:Failure ):void {
-			// called on assumptionFail
 		}

 		public function testIgnored( description:IDescription ):void {
-			// called on ignored test
 			var desc:Descriptor = getDescriptorFromDescription(description);
 			sendResults("<testCase name='"+desc.method+"' testSuite='"+desc.suite+"'  status='"+IGNORE+"'/>");
 			msgQueue.push("<testCase name='"+desc.method+"' testSuite='"+desc.suite+"'  status='"+IGNORE+"'/>");
@@ -146,7 +135,6 @@

 		public function testFailure( failure:Failure ):void {
-			// called on a test failure
 			lastFailedTest = failure.description;
 			var descriptor:Descriptor = getDescriptorFromDescription(failure.description);
 			var type : String = failure.description.displayName
@@ -169,7 +157,6 @@
 		 */

 		private function getDescriptorFromDescription(description:IDescription ):Descriptor{
-			// reads relavent data from descriptor
 			var descriptor:Descriptor = new Descriptor();
 			var descriptionArray:Array = description.displayName.split("::");
 			descriptor.path = descriptionArray[0];
@@ -196,8 +183,7 @@
 		}

 		protected function printFooter( result:Result ):void {
-		//	logger.warn(END_OF_TEST_RUN);
-			sendResults(END_OF_TEST_RUN);
+			logger.warn(END_OF_TEST_RUN);
 		}

 		protected function sendResults(msg:String):void{


Do not show seek bar edges when seek bar is hidden.

--- skin-src/goplayer/StandardSkin.as
+++ skin-src/goplayer/StandardSkin.as
@@ -33,9 +33,9 @@
         (showPlayPauseButton ? playPausePart : null,
          beforeLeftTimePart,
          showElapsedTime ? leftTimeBackgroundPart : null,
-         afterLeftTimePart,
+         showSeekBar ? afterLeftTimePart : null,
          [seekBarBackground, setSeekBarWidth],
-         beforeRightTimePart,
+         showSeekBar ? beforeRightTimePart : null,
          showTotalTime ? rightTimeBackgroundPart : null,
          afterRightTimePart,
          showVolumeControl ? volumePart : null,


- change: TransitionEvents now don't bubble by default. Letting them do so made dealing with transitions events far more burdensome than necessary.

git-svn-id: e38e7cdd6ace00d8230583a2d3b43e9a55f5c011@776 bc4816be-ef27-423a-9c4d-fc420be121a2

--- src/reprise/events/TransitionEvent.as
+++ src/reprise/events/TransitionEvent.as
@@ -66,9 +66,9 @@
 		/***************************************************************************
 		*							public methods								   *
 		***************************************************************************/
-		public function TransitionEvent(type : String)
+		public function TransitionEvent(type : String, bubbles : Boolean = false)
 		{
-			super(type, true, false);
+			super(type, bubbles);
 		}

 		public override function toString() : String


Fix the modified column check for combined JSONZip formats.

I'm surprised this wasn't a compiler warning, but even IDEA wasn't complaining about it.

--- exporter/src/main/as/flump/export/JSONZipFormat.as
+++ exporter/src/main/as/flump/export/JSONZipFormat.as
@@ -36,7 +36,7 @@
         zip.loadBytes(Files.read(outputFile));
         const md5File :FZipFile = zip.getFileByName("md5");
         const md5 :String = md5File.content.readUTFBytes(md5File.content.length);
-        return md5 != md5;
+        return md5 != this.md5;
     }

     override public function publish() :void {


Added configuration constants to DTNavMesh.

--- as3_lib/src/recastnavigation/detour/navmesh/DTNavMesh.as
+++ as3_lib/src/recastnavigation/detour/navmesh/DTNavMesh.as
@@ -12,6 +12,12 @@

 	/** A navigation mesh based on tiles of convex polygons. */
 	public class DTNavMesh extends RNBase {
+
+		/** The maximum number of vertices per navigation polygon. */
+		public static const DT_VERTS_PER_POLYGON:int = 6;
+
+		/** The maximum number of user defined area ids. */
+		public static const DT_MAX_AREAS:int = 64;

 		/** Initializes the navigation mesh for single tile use. */
 		public function init(data:Vector.<int>, flags:int):int {