Index: lang/actionscript/ascss/src/SelectTest-config.xml
===================================================================
--- lang/actionscript/ascss/src/SelectTest-config.xml (revision 10809)
+++ lang/actionscript/ascss/src/SelectTest-config.xml (revision 10809)
@@ -0,0 +1,8 @@
+<flex-config>
+ <default-frame-rate>10</default-frame-rate>
+ <default-size>
+  <width>480</width>
+  <height>640</height>
+ </default-size>
+ <default-background-color>0x222222</default-background-color>
+</flex-config>
Index: lang/actionscript/ascss/src/SelectTest.as
===================================================================
--- lang/actionscript/ascss/src/SelectTest.as (revision 10809)
+++ lang/actionscript/ascss/src/SelectTest.as (revision 10809)
@@ -0,0 +1,81 @@
+package
+{
+	import flash.display.*;
+	import flash.text.*;
+	import css.*;
+	public class SelectTest extends Sprite
+	{
+		private var mTextOut:TextField;
+		private static var theInstance:SelectTest;
+	
+
+		public static const TestCSS:String = 
+'.foot em {\n'+
+' color: #940;\n'+
+'}';
+
+		function SelectTest()
+		{
+			mTextOut = new TextField();
+			mTextOut.textColor = 0xffffff;
+			addChild(mTextOut);
+			mTextOut.width = 480;
+			mTextOut.height = 640;
+			theInstance = this;
+
+			start();
+		}
+
+		private function start():void
+		{
+			puts("--------------");
+			puts(TestCSS);
+			puts("--------------");
+			var ascss:ASCSS = new ASCSS(TestCSS);
+			var doc:Document = new Document();
+			ascss.setDocument(doc);
+			ascss.parse();
+
+			var sheet:StyleList = ascss.sheet;
+			dumpSheet(sheet, 0);
+			puts("--------------");
+			var sel:CSSStyleSelector = doc.createStyleSelector();
+		}
+
+		private static const INDENT_S:String = "                        ";
+		public function dumpSheet(s:Object, indent:int):void
+		{
+			var idt:String = INDENT_S.substring(0, indent*2);
+			puts(idt+"obj "+s);
+
+			if (s is CSSSelector)
+			{
+				if (s.next)
+					dumpSheet(s.next, indent+1);
+				if (s.m_tagHistory)
+					dumpSheet(s.m_tagHistory, indent+1);
+				return;
+			}
+			else if (!(s is StyleBase))
+				return;
+
+			if ((s is StyleList) || (s is CSSStyleDeclaration))
+			{
+				var len:int = s.length;
+				for (var i:int = 0;i < len;i++)
+					dumpSheet(s.item(i), indent+1);
+			}
+			else if (s is CSSStyleRule)
+			{
+				var r:CSSStyleRule = CSSStyleRule(s);
+				dumpSheet(r.selector, indent+1);
+				dumpSheet(r.declaration, indent+1);
+			}
+		}
+
+		public static function puts(s:*):void
+		{
+			theInstance.mTextOut.appendText(s+"\n");
+		}
+	}
+}
Index: lang/actionscript/ascss/src/css/Document.as
===================================================================
--- lang/actionscript/ascss/src/css/Document.as (revision 10653)
+++ lang/actionscript/ascss/src/css/Document.as (revision 10809)
@@ -3,7 +3,22 @@
 	public class Document
 	{
+		public static const Compat:uint       = 0;
+		public static const AlmostStrict:uint = 1;
+		public static const Strict:uint       = 2;
+
 		private var m_usesSiblingRules:Boolean;
 		private var m_usesDescendantRules:Boolean;
 		private var m_usesFirstLineRules:Boolean;
+
+		private var mStyleSheets:StyleSheetList;
+		private var mMappedElementSheet:CSSStyleSheet;
+		private var mStyleSelector:CSSStyleSelector;
+
+		private var mParseMode:uint = Compat;
+
+		function Document()
+		{
+			mStyleSheets = new StyleSheetList(this);
+		}
 
 		public function isHTMLDocument():Boolean
@@ -27,4 +42,19 @@
 		}
 
+		public function createStyleSelector():CSSStyleSelector
+		{
+			mStyleSelector = new CSSStyleSelector(this, userStyleSheet, mStyleSheets, mMappedElementSheet, !inCompatMode, true);
+			return mStyleSelector;
+		}
+
+		public function get userStyleSheet():String
+		{
+			return null;
+		}
+
+		public function get inCompatMode():Boolean
+		{
+			return mParseMode == Compat;
+		}
 	}
 }
Index: lang/actionscript/ascss/src/css/MediaQueryEvaluator.as
===================================================================
--- lang/actionscript/ascss/src/css/MediaQueryEvaluator.as (revision 10809)
+++ lang/actionscript/ascss/src/css/MediaQueryEvaluator.as (revision 10809)
@@ -0,0 +1,6 @@
+package css
+{
+	public class MediaQueryEvaluator
+	{
+	}
+}
Index: lang/actionscript/ascss/src/css/StyleList.as
===================================================================
--- lang/actionscript/ascss/src/css/StyleList.as (revision 10653)
+++ lang/actionscript/ascss/src/css/StyleList.as (revision 10809)
@@ -13,5 +13,5 @@
 		public function isCSSStyleSheet():Boolean
 		{
-			return true;
+			return false;
 		}
 
Index: lang/actionscript/ascss/src/css/CSSRuleSet.as
===================================================================
--- lang/actionscript/ascss/src/css/CSSRuleSet.as (revision 10809)
+++ lang/actionscript/ascss/src/css/CSSRuleSet.as (revision 10809)
@@ -0,0 +1,23 @@
+package css
+{
+	public class CSSRuleSet
+	{
+		public function addRulesFromSheet(sheet:CSSStyleSheet, medium:MediaQueryEvaluator, styleSelector:CSSStyleSelector):void
+		{
+			if (!sheet || !sheet.isCSSStyleSheet())
+				return;
+
+/*
+			// No media implies "all", but if a media list exists it must
+			// contain our current medium
+			if (sheet->media() && !medium.eval(sheet->media(), styleSelector))
+				return; // the style sheet doesn't apply
+*/
+
+			var len:int = sheet.length;
+			for (var i:int = 0; i < len; i++) {
+			}
+
+		}
+	}
+}
Index: lang/actionscript/ascss/src/css/CSSStyleSheet.as
===================================================================
--- lang/actionscript/ascss/src/css/CSSStyleSheet.as (revision 10653)
+++ lang/actionscript/ascss/src/css/CSSStyleSheet.as (revision 10809)
@@ -30,4 +30,10 @@
 			return null; // Assume we wont match any namespaces.
 		}
+
+		public override function isCSSStyleSheet():Boolean
+		{
+			return true;
+		}
+
 	}
 }
Index: lang/actionscript/ascss/src/css/ASCSS.asy
===================================================================
--- lang/actionscript/ascss/src/css/ASCSS.asy (revision 10752)
+++ lang/actionscript/ascss/src/css/ASCSS.asy (revision 10809)
@@ -34,5 +34,5 @@
 			mListener = aListener;
 			mProgressiveMode = aProgressive;
-			mSheet = new StyleList(null);
+			mSheet = new CSSStyleSheet(null);
 			var parser:ASCSSParser = new ASCSSParser(mSheet, aDebugOut, aProgressive, aListener);
 			var lx:CSSLexer = new CSSLexer(aSrc, parser, aProgressive);
@@ -40,4 +40,9 @@
 
 			mParser = parser;
+		}
+
+		public function setDocument(d:Document):void
+		{
+			mParser.setDocument(d);
 		}
 
@@ -1337,4 +1342,5 @@
 private var mParsedStyleObjects:Array /* of StyleBase */ = [];
 
+private var mDoc:Document;
 public var styleElement:StyleList;
 public var mediaQuery:MediaQuery;
@@ -1648,5 +1654,10 @@
 public function document():Document
 {
-	return null;
+	return mDoc;
+}
+
+public function setDocument(d:Document):void
+{
+	mDoc = d;
 }
 
Index: lang/actionscript/ascss/src/css/CSSStyleSelector.as
===================================================================
--- lang/actionscript/ascss/src/css/CSSStyleSelector.as (revision 10771)
+++ lang/actionscript/ascss/src/css/CSSStyleSelector.as (revision 10809)
@@ -8,4 +8,24 @@
 		public static const SelectorFailsLocally:uint    = 1;
 		public static const SelectorFailsCompletely:uint = 2;
+
+		private var mAuthorStyle:CSSRuleSet;
+
+		function CSSStyleSelector(doc:Document, userStyleSheet:String, styleSheets:StyleSheetList, mappedElementSheet:CSSStyleSheet, strictParsing:Boolean, matchAuthorAndUserStyles:Boolean)
+		{
+			mAuthorStyle = new CSSRuleSet();
+/*
+			if (mappedElementSheet)
+				m_authorStyle->addRulesFromSheet(mappedElementSheet, *m_medium, this);
+*/
+			mAuthorStyle = new CSSRuleSet();
+			var slen:uint = styleSheets.length;
+			for (var i:uint = 0;i < slen;i++)
+			{
+				var st:StyleSheet = styleSheets.item(i);
+				if (st.isCSSStyleSheet() && !st.disabled)
+					mAuthorStyle.addRulesFromSheet(st as CSSStyleSheet, /* temp */ null, this);
+			}
+
+		}
 
 		private function checkSelector(sel:CSSSelector, e:IASCSSElement, isAncestor:Boolean, isSubSelector:Boolean):uint
Index: lang/actionscript/ascss/src/css/StyleSheetList.as
===================================================================
--- lang/actionscript/ascss/src/css/StyleSheetList.as (revision 10809)
+++ lang/actionscript/ascss/src/css/StyleSheetList.as (revision 10809)
@@ -0,0 +1,24 @@
+package css
+{
+	public class StyleSheetList
+	{
+		private var mDoc:Document;
+		private var mStyleSheets:Array;
+
+		function StyleSheetList(doc:Document)
+		{
+			mDoc = doc;
+			mStyleSheets = [];
+		}
+
+		public function get length():uint
+		{
+			return mStyleSheets.length;
+		}
+
+		public function item(index:uint):StyleSheet
+		{
+			return mStyleSheets[index];
+		}
+	}
+}
Index: lang/actionscript/ascss/src/css/StyleSheet.as
===================================================================
--- lang/actionscript/ascss/src/css/StyleSheet.as (revision 10653)
+++ lang/actionscript/ascss/src/css/StyleSheet.as (revision 10809)
@@ -4,4 +4,5 @@
 	{
 		private var m_strHref:String;
+		private var m_disabled:Boolean;
 
 		function StyleSheet(owner:StyleBase, href:String = "")
@@ -9,4 +10,10 @@
 			super(owner);
 			m_strHref = href;
+			m_disabled = false;
+		}
+
+		public function get disabled():Boolean
+		{
+			return m_disabled;
 		}
 	}
Index: lang/actionscript/ascss/src/CSSTest.as
===================================================================
--- lang/actionscript/ascss/src/CSSTest.as (revision 10771)
+++ lang/actionscript/ascss/src/CSSTest.as (revision 10809)
@@ -593,5 +593,4 @@
 			mCSS = null;
 			mRollbackAnimation = true;
-			var sel:CSSStyleSelector = new CSSStyleSelector();
 		}
 
