         {
             var c:Class;
 			
-			if (isNaN(_width)) {
+			if (isNaN(_width) && isNaN(_percentWidth)) 
+            {
 				var value:* = ValuesManager.valuesImpl.getValue(this,"width");
-				if (value !== undefined) {
-					var s:String = String(value);
-					var lastChar:String = s.substr(s.length-1,s.length);
-					if (lastChar == "%") {
-						_percentWidth = Number(s);
-					}
-					else {
-						_width = Number(s);
-					}
+				if (value !== undefined) 
+                {
+					if (value is String)
+                    {
+                        var s:String = String(value);
+    					_percentWidth = Number(s.substring(0, s.length - 1));
+                    }
+					else 
+						_width = value as Number;
 				}
 			}
 			
-			if (isNaN(_height)) {
+			if (isNaN(_height) && isNaN(_percentHeight)) 
+            {
 				value = ValuesManager.valuesImpl.getValue(this,"height");
-				if (value !== undefined) {
-					s = String(value);
-					lastChar = s.substr(s.length-1,s.length);
-					if (lastChar == "%") {
-						_percentHeight = Number(s);
-					} else {
-						_height = Number(s);
-					}
+				if (value !== undefined) 
+                {
+                    if (value is String)
+                    {
+    					s = String(value);
+						_percentHeight = Number(s.substring(0, s.length - 1));
+					} 
+                    else
+						_height = value as Number;
 				}
 			}
             

                return false;
            if (!isNaN(_percentWidth))
                return false;
            var value:* = ValuesManager.valuesImpl.getValue(this, "width");
            if (value !== undefined)
                return false;
            var left:* = ValuesManager.valuesImpl.getValue(this, "left");
            var right:* = ValuesManager.valuesImpl.getValue(this, "right");
            return (left === undefined || right === undefined);

         */
		public function get explicitWidth():Number
		{
			return _explicitWidth;
		}

