<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" initialize="URLLoaderExample()" viewSourceURL="srcview/index.html"> <mx:Script> <![CDATA[ import flash.net.URLLoader; import flash.net.URLRequest; import dv.gEvent; [Bindable] public var calenderURL:String; private var atom:String = "http://www.w3.org/2005/Atom"; private var goog:String = "http://schemas.google.com/g/2005"; private var dates:Array = new Array(); private var events:Array = new Array(); private var currentEvent:Number = 0; public function URLLoaderExample() :void { calenderURL = Application.application.parameters.calender; var loader:URLLoader = new URLLoader(); configureListeners(loader); var request:URLRequest = new URLRequest(calenderURL); try { loader.load(request); } catch (error:Error) { trace("Unable to load requested document."); } } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); } private function displayEvent(event:Event ):void { calender.selectedRanges = dates; var e:gEvent = getEvent ( event.target.selectedDate ) if ( e != null ) { displayCurrentEvent ( e ); } } private function getEvent ( d : Date ) : gEvent { for ( var i:Number = 0 ; i < events.length ; i ++ ) { var cd:Date = events[i].date if ( ( cd.getUTCDate() == d.getUTCDate() ) && ( cd.getUTCMonth() == d.getUTCMonth() ) && ( cd.getUTCFullYear() == d.getUTCFullYear() ) ) { currentEvent = i; controllNavigation() return events[i]; } } return null; } private function completeHandler(event:Event):void { var loader:URLLoader = URLLoader(event.target); XML.ignoreWhitespace = true; XML.ignoreComments = true; XML.ignoreProcessingInstructions = true; XML.prettyPrinting = true; var gData:XML = XML(loader.data); var entry:QName = new QName(atom, "entry"); var id:QName = new QName(atom, "id"); var published:QName = new QName(atom, "published"); var updated:QName = new QName(atom, "updated"); var when:QName = new QName(goog, "when"); var title:QName = new QName(atom, "title"); var summary:QName = new QName(atom, "summary"); var content:QName = new QName(atom, "content"); var decendantList:XMLList = gData.descendants(entry); var firstDate:Date = new Date(); var lastDate:Date = new Date(); for each (var element:XML in decendantList) { var id_d:XMLList = element.descendants(id); var published_d:XMLList = element.descendants(published); var updated_d:XMLList = element.descendants(updated); var title_d:XMLList = element.descendants(title); var summary_d:XMLList = element.descendants(summary); var content_d:XMLList = element.descendants(content); var when_d:XMLList = element.descendants(when); var when_start:String = when_d.attribute("startTime") var sta:Array = when_start.split("T")[0].split("-") var when_end:String = when_d.attribute("endTime") var eta:Array = when_end.split("T")[0].split("-") var sd:Date = new Date(sta[0],sta[1],sta[2],0,0,0,0); var ed:Date = new Date(eta[0],eta[1],eta[2],0,0,0,0); var e:gEvent = new gEvent(); e.date = sd; e.title = title_d; e.content = content_d; events.push ( e ); dates.push ({rangeStart:sd,rangeEnd:ed}) if( firstDate > sd ) firstDate = sd if( lastDate < ed ) lastDate = ed } events.sortOn("date",Array.NUMERIC); calender.minYear = firstDate.getFullYear(); calender.maxYear = lastDate.getFullYear(); calender.selectedRanges = dates; displayCurrentEvent(events[0]); } private function previousEvent():void { currentEvent--; displayCurrentEvent ( events[currentEvent] ); } private function nextEvent():void { currentEvent++; displayCurrentEvent ( events[currentEvent] ); } private function controllNavigation() : void { if ( currentEvent > 0 ) { previous_event.enabled = true; }else{ previous_event.enabled = false; } if ( currentEvent > events.length -2 ) { next_event.enabled = false; }else{ next_event.enabled = true; } } private function displayCurrentEvent (g:gEvent) : void { eventName.text = g.title; eventName.toolTip = g.title; show.htmlText = g.date.getDate() +"/" + g.date.getMonth()+"/" + g.date.getFullYear() +"<br /><br />"+g.content; calender.displayedMonth = g.date.getUTCMonth() calender.displayedYear = g.date.getFullYear() controllNavigation() } ]]> </mx:Script> <mx:VBox bottom="10" top="10" left="10" right="10"> <mx:HBox horizontalAlign="center" verticalAlign="middle"> <mx:LinkButton label="<" id="previous_event" textAlign="center" click="previousEvent()" enabled="false" /> <mx:DateChooser id="calender" showToday="true" enabled="true" firstDayOfWeek="1" change="displayEvent(event)" cornerRadius="5"/> <mx:LinkButton label=">" id="next_event" textAlign="center" click="nextEvent()" enabled="false" /> </mx:HBox> <mx:Label width="245" fontWeight="bold" id="eventName" text="No event selected" toolTip="No event selected" textAlign="center" /> <mx:TextArea width="245" height="100%" id="show" cornerRadius="5"/> </mx:VBox> </mx:Application>