/**
 * example application of Coxcomb charting classes
 * 
 * interactive example
 * shows off tweening and interactivity
 * 
 * by Zachary Forest Johnson
 * indiemaps.com/blog
 * 
 */
package {
    import com.indiemaps.charting.coxcomb.CoxcombChart;
    import flash.display.Shape;
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.text.TextField;
    import flash.text.TextFormat;
    [SWF(backgroundColor='#ffffff', width='550', height='550')]
    public class CoxcombTest extends Sprite
    {
        //need to embed a font so that text can be rotated
        [Embed(systemFont="Helvetica", fontName="Helvetica", mimeType='application/x-font')]
         private static var _ignoreMe:String;
        [Embed(systemFont="Helvetica", fontName="Helvetica", fontWeight="bold", mimeType='application/x-font')]
         private static var _ignoreMe2:String;
        private var fakeData:Array = new Array();
        private var coxcombChart:CoxcombChart;
        public function CoxcombTest()
        {
            init();
        }
        private function init():void {
            createData();
            //not currently used
            var colorArray:Array = [0x0099cc, 0xff0000, 0xcc0000, 0xffff00, 0x00ffff, 0x333333, 0x0099cc, 0xff0000, 0xcc0000, 0xffff00, 0x00ffff, 0x333333];
            coxcombChart = new CoxcombChart(fakeData, 500, 0x000000, 0x0099cc, 3, -999, true, "label", "value", true, 15);
            coxcombChart.showLabels("horizontal", { font : "Helvetica" }, 999, 15);
            var mug:Sprite = new Sprite();
            addChild(mug);
            mug.graphics.beginFill(0x000000, .5);
            //mug.graphics.drawRect(-150,-150,300,300);
            //mug.graphics.drawCircle(0,0,150);
            mug.graphics.endFill();
            mug.y = 275; mug.x = 275;
            mug.addChild(coxcombChart);
            //make button
            makeButton();
        }
        private function makeButton():void {
            var button:Sprite = new Sprite();
            button.buttonMode = true;
            var buttonText:TextField = new TextField();
            buttonText.defaultTextFormat = new TextFormat("Helvetica", 15, 0xeeeeee, true);
            buttonText.autoSize = 'left';
            buttonText.text = 'clicky';
            buttonText.mouseEnabled = false;
            var bg:Shape = new Shape();
            bg.graphics.beginFill(0x000000);
            bg.graphics.drawRect(0,0,buttonText.textWidth+5, buttonText.textHeight+5);
            button.addChild(bg); button.addChild(buttonText);
            button.addEventListener(MouseEvent.CLICK, buttonClicky);
            button.addEventListener(MouseEvent.MOUSE_OVER, buttonOver);
            button.addEventListener(MouseEvent.MOUSE_OUT, buttonOut);
            function buttonOver(e:MouseEvent):void {
                buttonText.textColor = 0xEC087D;
            }
            function buttonOut(e:MouseEvent):void {
                buttonText.textColor = 0xeeeeee;
            }
            button.x = button.y = 5;
            addChild(button);
        }
        private function buttonClicky(e:MouseEvent):void {
            newDataset();
        }
        private function newDataset():void {
            //change data
            for each (var month:Object in fakeData) {
                month.value = Math.random() * 50;
            }
            //update chart
            coxcombChart.update();
        }
        private function createData():void {
            var months:Array = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
            //months = months.concat(months);
            for each (var month:String in months) {
                fakeData.push( 
                    {
                    label : month,
                    value : Math.random() * 50
                    } 
                );
            }
        }
    }
}