<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        initialize="loadXML()"
        width="100%" height="100%"
        paddingLeft="5" paddingRight="5" paddingBottom="5" paddingTop="5"
        horizontalAlign="left"
        layout="vertical" viewSourceURL="srcview/index.html">
        
    <mx:Script>
        <![CDATA[
            import mx.formatters.DateFormatter;
            import flash.net.navigateToURL;
            import mx.collections.XMLListCollection;
            
            [Bindable]
            private var externalXML:XMLListCollection;
            
            private function loadXML():void {        
                var loader:URLLoader = new URLLoader();
                var request:URLRequest = new URLRequest("http://weblogs.macromedia.com/mxna/xml/rss.cfm?query=byCategory&languages=1&categoryId=5");
                loader.load(request);
                loader.addEventListener(Event.COMPLETE, onComplete);
            }
            
            private function onComplete(event:Event):void {
                
                var loader:URLLoader = URLLoader(event.target);
            
                var qnItems:QName = new QName(mxna, "item");    
                var dataXML:XML = XML( loader.data );
                dataXML.addNamespace( mxna );
                var base:XMLList = dataXML.descendants( qnItems );
            
                externalXML = new XMLListCollection( base );
                
            }
            
            private var mxna:Namespace = new Namespace("http://purl.org/rss/1.0/");
            private var dc:Namespace = new Namespace("http://purl.org/dc/elements/1.1/");
            [Bindable]
            private var qnTitle:QName = new QName(mxna, "title");
            [Bindable]    
            private var qnLink:QName = new QName(mxna, "link");
            [Bindable]
            private var qnDescription:QName = new QName(mxna, "description");
            [Bindable]
            private var qnCreator:QName = new QName(dc, "creator");
            [Bindable]
            private var qnDate:QName = new QName(dc, "date");
            [Bindable]
            private var qnSubject:QName = new QName(dc, "subject");            
            private function getField( itemXML:XML, field:QName ):String {
                if( field == qnDate ) {
                    var df:DateFormatter = new DateFormatter();
                    df.formatString = "(YYYY.MM.DD)";
                    return df.format( itemXML.descendants( field ).toString() );
                }
                return itemXML.descendants( field ).toString();
            }
            private function processURL( url:String ):void {
                var request:URLRequest = new URLRequest(url);
                navigateToURL( request );
            }
            
        ]]>
    </mx:Script>
    <mx:Panel layout="vertical"
        title="Adobe MXNA Flex Feed"
        width="100%" height="100%" 
        paddingLeft="5" paddingRight="5" paddingBottom="5" paddingTop="5">
        <mx:Repeater width="100%"
            id="newsItems"
            dataProvider="{ externalXML }">
            <mx:VBox width="100%" horizontalAlign="left" creationCompleteEffect="Fade">
                <mx:LinkButton id="lbtn"
                    textAlign="left"
                    label="{ getField( XML( newsItems.currentItem ), qnTitle ) }" 
                    click="processURL( getField( XML( event.currentTarget.getRepeaterItem() ), qnLink ) )" />
                <mx:TextArea paddingLeft="10" paddingRight="10" editable="false"
                    width="98%" cornerRadius="6" height="50"
                    backgroundColor="0xFAFAFA"
                    htmlText="{ getField( XML( newsItems.currentItem ), qnDescription ) }" ></mx:TextArea>
                <mx:Text paddingRight="10" 
                    width="98%" 
                    textAlign="right"
                    text="{ getField( XML( newsItems.currentItem ), qnCreator ) + ' ' + getField( XML( newsItems.currentItem ), qnDate )  + ' ' + getField( XML( newsItems.currentItem ), qnSubject ) }" />                    
            </mx:VBox>
        </mx:Repeater>
    </mx:Panel>
</mx:Application>