<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="absolute" xmlns:degrafa="http://www.degrafa.com/2007"
    creationComplete="init()" horizontalScrollPolicy="off" verticalScrollPolicy="off" width="223" height="165" viewSourceURL="srcview/index.html">
    <mx:Script>
        <![CDATA[
            import com.yahoo.webapis.weather.events.WeatherResultEvent;
            import com.yahoo.webapis.weather.WeatherService;
            import mx.rpc.events.ResultEvent;
            import flash.net.URLRequest;
            import flash.display.Loader;
            import flash.events.*
            import com.yahoo.webapis.*;
            
            private var _weather:WeatherService;
            private var currentImage:String;
            private var windDirectionText:String;
            
            private function init():void{
                loadImg();
                _weather = new WeatherService();
                getWeather(new Event("init"));
                var timer:Timer = new Timer(60*1000,1000);
                timer.addEventListener(TimerEvent.TIMER, getWeather);
                timer.start();
                    
            }
            private function getWeather(event:Event):void{
                _weather.getWeather("34236","Units.ENGLISH_UNITS");
                _weather.addEventListener(WeatherResultEvent.WEATHER_LOADED, forcastComplete);
            }
            private function loadImg():void{
                
                cfService.getLiveView();
                    
            }
            private function configureListeners(dispatcher:IEventDispatcher):void {
                dispatcher.addEventListener(Event.COMPLETE, completeHandler);
            }

            private function completeHandler(event:Event):void {
            var loader:Loader = Loader(event.target.loader);
            var image:Bitmap = Bitmap(loader.content);
            if (loader.content){
            liveImg.source = image;
            }
            loadImg();
        }
            private function forcastComplete(event:WeatherResultEvent):void{
                temp.text = event.data.current.temperature + String.fromCharCode(0x00B0)+ event.data.units.temperature;
                description.text = event.data.current.description;
                windSpeed.text = "Wind: "+event.data.current.wind.speed + "MPH";
                humidity.text = "Humidity: "+ event.data.current.atmosphere.humidity + "%";
                switch(event.data.current.code){
                    case 0:
                    case 1:
                    case 2:
                        currentImage = "windyrain.swf";
                        break;
                    case 3:
                    case 4:
                        currentImage = "thunderstorms.swf";
                        break;
                    case 5:
                    case 6:
                    case 7:
                    case 35:
                        currentImage = "icyFrozenSnow.swf";
                        break;
                    case 8:
                        currentImage = "icydrizzle.swf";
                        break;
                    case 9:
                        currentImage = "drizzle.swf";
                        break;
                    case 10:
                    case 46:
                        currentImage = "icyrain.swf";
                        break;
                    case 11:
                    case 12:
                        currentImage = "showers.swf";
                        break;
                    case 13:
                    case 14:
                    case 42:
                        currentImage = "lightSnow.swf";
                        break;
                    case 15:
                        currentImage = "windySnow.swf";
                        break;
                    case 16:
                    case 41:
                    case 43:
                        currentImage = "snow.swf";
                        break;
                    case 17:
                    case 18:
                        currentImage = "sleet.swf";
                        break;
                    case 19:
                        currentImage = "dust.swf";
                        break;
                    case 20:
                        currentImage = "fog.swf";
                        break;
                    case 21:
                        currentImage = "haze.swf";
                        break;
                    case 22:
                        currentImage = "smoke.swf";
                        break;
                    case 23:
                    case 24:
                        currentImage = "windy.swf";
                        break;
                    case 26:
                        currentImage = "cloudy.swf";
                        break;
                    case 27:
                        currentImage = "mostlyCloudyNight,swf";
                        break;
                    case 28:
                        currentImage = "mostlyCloudyDay.swf";
                        break;
                    case 29:
                        currentImage = "partiallyCloudyNight.swf";
                        break;
                    case 30:
                    case 44:
                        currentImage = "partiallyCloudyDay.swf";
                        break;
                    case 31:
                        currentImage = "moon.swf";
                        break;
                    case 32:
                    case 36:
                        currentImage = "sun.swf";
                        break;
                    case 33:
                        currentImage = "lightCloudsNight.swf";
                        break;
                    case 34:
                        currentImage = "lightCloudsDay.swf";
                        break;
                    case 37:
                    case 38:
                    case 39:
                    case 45:
                    case 47:
                        currentImage = "sunnyThunderStorm.swf";
                        break;
                    case 40:
                        currentImage = "sunnyRain.swf";
                        break;
                    case 3200:
                        currentImage = "unknown.swf";
                        break;
                    default:
                        currentImage = "unknown.swf";
                        break;
                }
                if(event.data.current.wind.direction < 22){
                        windDirectionText = "N";
                }
                else if (event.data.current.wind.direction <= 67){
                        windDirectionText = "NE";
                }
                else if (event.data.current.wind.direction <= 112){
                        windDirectionText = "E";
                }
                else if (event.data.current.wind.direction <= 156){
                        windDirectionText = "SE";
                }
                else if (event.data.current.wind.direction <= 201){
                        windDirectionText = "S";
                }
                else if (event.data.current.wind.direction <= 246){
                        windDirectionText = "SW";
                }
                else if (event.data.current.wind.direction <= 291){
                        windDirectionText = "W";
                }
                else if (event.data.current.wind.direction <= 336){
                        windDirectionText = "NW";
                }
                else if (event.data.current.wind.direction <= 359){
                        windDirectionText = "N";
                }

                weatherIcon.source = "http://www.mydattoli.com/weather/images/"+currentImage
                windDirection.text = windDirectionText;
            }
            private function loadLiveView(event:ResultEvent):void{
                if (event.result){
                    var loader:Loader = new Loader();
                    configureListeners(loader.contentLoaderInfo);
                    var imgRequest:URLRequest = new URLRequest("http://www.mydattoli.com/cfc/liveview.jpg?date=" + new Date().getMilliseconds());
                    loader.load(imgRequest);
                }
            }
 
        ]]>
    </mx:Script>
    <mx:RemoteObject id="cfService"
    destination="ColdFusion"
    source="cfc.getLiveView"
    result="loadLiveView(event)"

    />
    
    <mx:Canvas id="canvas" horizontalScrollPolicy="off" verticalScrollPolicy="off">
        <mx:Image id="liveImg" source="{null}" width="223" scaleContent="true"/>
        <degrafa:Surface>
            <degrafa:GeometryGroup>
                <degrafa:fills>
                    <degrafa:SolidFill alpha=".5" color="#FFFFFF" id="overlayFill"/>
                    <degrafa:SolidFill alpha=".6" color="#000000" id="overlayDark"/>
                    <degrafa:SolidFill alpha=".6" color="#CC0000" id="overlayRed"/>
                </degrafa:fills>
                <degrafa:geometry>
                    <degrafa:RoundedRectangleComplex bottomLeftRadius="20" bottomRightRadius="20" x="0" y="0" width="223" height="63" fill="{overlayFill}"/>
                    <degrafa:RegularRectangle x="0" y="150" width="223" height="15" fill="{overlayDark}"/>
                    <degrafa:RegularRectangle x="155" y="135" width="70" height="15" fill="{overlayRed}"/>
                </degrafa:geometry> 
            </degrafa:GeometryGroup>
        </degrafa:Surface>
        <mx:Image id="weatherIcon" source="{null}" scaleX=".5" scaleY=".5" alpha=".8" y="3" x="3"/>
        <mx:Label id="temp" x="{weatherIcon.x + weatherIcon.width}" y="5" text="{null}" fontSize="18" fontWeight="bold"/>
        <mx:Label id="description" text="{null}" x="{weatherIcon.x + weatherIcon.width}" y="25" fontSize="14" fontWeight="bold"/>
        <mx:Label id="windSpeed" text="{null}" x="5" y="150" fontSize="10" color="#FFFFFF"/>
        <mx:Label id="windDirection" text="{null}" x="{windSpeed.x + windSpeed.width}" y="150" fontSize="10" color="#FFFFFF"/>
        <mx:Label id="humidity" text="{null}" x="130" y="150" fontSize="10" color="#FFFFFF"/>
        <mx:Label id="LIVE" text="LIVE VIEW" x="155" y="135" color="#FFFFFF" fontSize="10"/>
    </mx:Canvas>
</mx:Application>