<?xml version="1.0" encoding="utf-8"?>
<!--
///////////////////////////////////////////////////////////////////////////////
// Licensed Materials - Property of IBM
// 5724-Y31,5724-Z78
// © Copyright IBM Corporation 2007, 2010. All Rights Reserved.
//
// Note to U.S. Government Users Restricted Rights:
// Use, duplication or disclosure restricted by GSA ADP Schedule
// Contract with IBM Corp.
///////////////////////////////////////////////////////////////////////////////
-->

<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009"
            xmlns:s="library://ns.adobe.com/flex/spark"
            xmlns:ibm="http://www.ibm.com/xmlns/prod/ilog/elixir/2010"
            xmlns:fb="http://ns.adobe.com/flashbuilder/2009"
            alpha.disabled="0.5"
            xmlns:ilog="http://www.ilog.com/2007/ilog/flex">
  <fx:Metadata>
    [HostComponent("com.ibm.ilog.elixir.maps.components.WorldCountriesMercatorMap")]
  </fx:Metadata>
  <fx:Script>
    <![CDATA[
     import com.ibm.ilog.elixir.maps.layouts.MapComponentLayout;
     import com.ibm.ilog.elixir.maps.supportClasses.MapBase;

     import flash.utils.setTimeout;

     import mx.core.FlexGlobals;
     import mx.events.FlexEvent;
     import mx.events.ResizeEvent;
     import mx.managers.LayoutManager;
     import mx.utils.UIDUtil;

     import spark.components.Group;
     import spark.components.supportClasses.GroupBase;

     static private const exclusions:Array = ["background", "scroller"];

     override public function get colorizeExclusions():Array {
       return exclusions;
     }

     [Bindable]
     private var ulLat:Number;
     [Bindable]
     private var ulLon:Number;
     [Bindable]
     private var lrLat:Number;
     [Bindable]
     private var lrLon:Number;

     private function gotLayerExtent():void {
       var r:Rectangle = featureGroup.layerExtent;
       var ul:Point = new Point(r.x, r.y);
       var lr:Point = new Point(r.x + r.width, r.y + r.height);
       ul = featureGroup.mapToLongLat(ul);
       lr = featureGroup.mapToLongLat(lr);
       ulLat = ul.y;
       ulLon = ul.x;
       lrLat = lr.y;
       lrLon = lr.x;
     }

     private function drawRAWPoints(group:GroupBase):void {
/*        var g:Graphics = group.graphics;
       g.clear();
       var p:Point;
       var data:Object = heatmap(FlexGlobals.topLevelApplication).dataProxy.data;
       for each (var o:Object in data) {
         g.beginFill(0xFFFFFF, 0.5);
         p = new Point(o.lon, o.lat);
         p = hostComponent.longLatToMap(p);
         p = hostComponent.featureGroup.localToGlobal(p);
         p = group.globalToLocal(p);
         g.drawCircle(p.x, p.y, 0.5);
       }*/
     }

     private function featureGroupDataChangeHandler(event:FlexEvent):void {
       gotLayerExtent();
     }

     private function setHeatMapDataProvider():void {
       var ret:Array = [];
       for each (var o:Object in FlexGlobals.topLevelApplication.dataProxy.data) {
         var p:Point = featureGroup.longLatToMap(new Point(o.lon, o.lat));
         p = featureGroup.localToGlobal(p);
         p = hm.globalToLocal(p);
         ret.push(p);
       }
       hm.dataProvider = ret;
     }

   ]]>
  </fx:Script>

  <!-- states -->
  <s:states>
    <s:State name="normal"/>
    <s:State name="disabled"/>
  </s:states>

  <!-- border and background -->
  <!--- @private -->
  <!--- @private -->
  <s:Rect id="background"
         depth="-100"
         left="1"
         right="1"
         top="1"
         bottom="1">
    <s:fill>
      <s:LinearGradient rotation="90">
        <s:entries>
          <s:GradientEntry color="0x000000"/>
          <s:GradientEntry color="0x222222"/>
        </s:entries>
      </s:LinearGradient>
    </s:fill>
  </s:Rect>

  <!--- The Scroller component to navigate into the map and add scroll bars to the map. -->
  <ibm:Scroller verticalScrollPolicy="off"
               horizontalScrollPolicy="off"
               reticleColor="0x706050"
               wheelZoomModifierKey="none"
               panModifierKey="none"
               width="100%"
               height="100%"
               id="scroller"
               zoomDuration="250"
               translationDuration="250"
               skinClass="com.ibm.ilog.elixir.skins.spark.ScrollerSkin">
    <!--- The layer container -->
    <ibm:MapGroup id="mapGroup"
                 startActionFunction="{null}"
                 endActionFunction="{null}"
                 color="red">
      <!--- The layer holding map features -->
      <ibm:MapFeatureGroup id="featureGroup"
                          dataChange="featureGroupDataChangeHandler(event)"
                          featureRenderer="com.ibm.ilog.elixir.maps.skins.spark.DefaultFeatureRenderer"/>
      <ibm:MapComponentGroup upperLeftLatitude="{ulLat}"
                            upperLeftLongitude="{ulLon}"
                            lowerRightLatitude="{lrLat}"
                            lowerRightLongitude="{lrLon}"
                            resizePolicy="scale"
                            zoomable="true"
                            id="componentGroup">
        <ilog:DensityHeatMap id="hm"
                            width="300"
                            height="200"
                            doubleBuffer="false"
                            pointSize="8"
                            pointValue="9"
                            smooth="true"
                            creationComplete="setHeatMapDataProvider()">
          <ilog:colorModel>
            <ilog:ColorModel>
              <ilog:ColorEntry color="0x0000ff"
                              limit="0"
                              alpha="0"/>
              <ilog:ColorEntry color="0xffa500"
                              limit="50"
                              alpha="0.5"/>
              <ilog:ColorEntry color="0xff0000"
                              limit="255"
                              alpha="1"/>
            </ilog:ColorModel>
          </ilog:colorModel>
        </ilog:DensityHeatMap>
      </ibm:MapComponentGroup>
      <ibm:MapLayerGroup id="drawingGroup"
                        drawingFunction="drawRAWPoints"/>
    </ibm:MapGroup>
  </ibm:Scroller>
</s:SparkSkin>