<?xml version="1.0"?>
<!-- charts/BasicBar.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init(event);" backgroundAlpha="0" width="410" height="330" layout="absolute">
  <mx:Style>
  	
  </mx:Style>
  <mx:Script><![CDATA[
  	import mx.charts.LegendItem;
  	import comp.MyDataTip;
  	import mx.charts.chartClasses.Series;
  	import mx.charts.ChartItem;
  	import mx.graphics.IFill;

  	import mx.charts.series.items.PieSeriesItem;
  	import mx.charts.series.PieSeries;
     import mx.collections.ArrayCollection;
	import mx.styles.StyleManager;
	 import mx.graphics.SolidColor;
	 import mx.charts.chartClasses.ChartElement;
	 import mx.controls.Alert;
	 
     [Bindable]
     public var columns:ArrayCollection = new ArrayCollection();
     [Bindable]
     private var xAxisName:String = "xAxis";
     
    [Bindable]
	private var chartTitle:String = "Default";

	[Bindable]
	 private var brColor:int = 0xFFCC00;
	 
	 [Bindable]
	 private var bgColor:int = 0xFFCC00;
	 
     [Bindable]
     private var selectedChartStyle:Number = 0;
     
     [Bindable]
     private var chartExplodeRadius:Number = 0;
     
     [Bindable]
     private var pieColor:Array = new Array();
     
     [Bindable]
     private var hAlign:String = "left";
     
     [Bindable]
     private var vAlign:String = "top";
     
     [Bindable]
     private var chartYPos:Number = 60;
     
     [Bindable]
     private var hBoxYPos:Number = 0;
     
     [Bindable]
     public var xTipDisplacement:Number = 0;
     
     [Bindable]
     public var yTipDisplacement:Number = 0;
     
     private function init(evt:Event):void{
		//setColumnColor("0xffffff,0xffffff,0xffffff,0xcac99d,0xcc0000,0x0033cc,0x99cc66,0x660000,0xffff00")
		//setData('<root><table><row><column>X/Y*</column><column>abc</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></row><row><column>cv</column><column>12</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></row><row><column>gh</column><column>56</column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></row><row><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column><column></column></row></table><customizations><chart title="Default" type="1" bgcolor="0xffffff" style="0" legendStyle="0"/><textProperties><font face="Arial" style="" size="14"/><textDecoration bold="false" underline="false" italic="false"/><color textColor="0x000000" highlightColor="0xffffff" columnColor="0xff9900,0x00cc00,0x0098ff,0xcac99d,0xcc0000,0x0033cc,0x99cc66,0x660000,0xffff00"/></textProperties></customizations></root>')
		myChart.setStyle("dataTipRenderer", MyDataTip);   
	}
	
	public function setDisplacement(x:Number, y:Number):void{
		xTipDisplacement = x;
		yTipDisplacement = y
	}
    public function setBgColor(inColor:int):void
    {
    	brColor = inColor;
		bgColor = inColor;
    }
    public function setChartTitle(inChartTitle:String):void
    {
    	chartTitle = inChartTitle;
    }
    public function setChartStyle(inSelectedChartStyle:String):void
    {
    	if(inSelectedChartStyle == "0")
    	{
    		//selectedChartStyle = 0;
    	}
    	else if(inSelectedChartStyle == "1")
    	{
    		selectedChartStyle = .3;
    	}
    	else if(inSelectedChartStyle == "2")
    	{
    		//selectedChartStyle = 0;
    		chartExplodeRadius=.12;
    	}
    	
    }
    
    public function setTextProp(inFontFace:String, inFontSize:Number):void
    {
    	StyleManager.getStyleDeclaration("Panel").setStyle("fontFamily",inFontFace);
    	StyleManager.getStyleDeclaration("Panel").setStyle("fontSize",inFontSize);
    }
    
    public function setTextDec(isBold:String, isUnderline:String, isItalic:String):void
    {
    	if(isItalic == "true")
    	{
    		StyleManager.getStyleDeclaration("Panel").setStyle("fontStyle","italic");
    	}
    	if(isBold == "true")
    	{
    		StyleManager.getStyleDeclaration("Panel").setStyle("fontWeight","bold");
    	}
    }
    
    public function setTextColor(inTextColor:int):void
    {
    	StyleManager.getStyleDeclaration("Panel").setStyle("color",inTextColor);
    }
    
     public function setColumnColor(inPieColor:String):void
    {
    	pieColor = inPieColor.split(",");
    }
    
   public function setLegendStyle(inLegendStyle:String):void
    {
    	if(inLegendStyle == "0")
    	{
    		vAlign = "top";
    		hAlign = "left";
    		chartYPos = 32;
		    hBoxYPos = 0;
    	}
    	else if(inLegendStyle == "1")
    	{
    		vAlign = "top";
    		hAlign = "center";
    		chartYPos = 32;
		    hBoxYPos = 0;
    	}
    	else if(inLegendStyle == "2")
    	{
    		vAlign = "top";
    		hAlign = "right";
    		chartYPos = 32;
		    hBoxYPos = 0;
    	}
    	else if(inLegendStyle == "3")
    	{
    		vAlign = "bottom";
    		hAlign = "left";
    		chartYPos = 10;
		    hBoxYPos = 258;
    	}
    	else if(inLegendStyle == "4")
    	{
    		vAlign = "bottom";
    		hAlign = "center";
    		chartYPos = 10;
		    hBoxYPos = 258;
    	}
    	else if(inLegendStyle == "5")
    	{
    		vAlign = "bottom";
    		hAlign = "right";
    		chartYPos = 10;
		    hBoxYPos = 258;
    	}
    }
    private function pieSeries_fillFunc(item:ChartItem, index:Number):IFill {
	    var curItem:PieSeriesItem = PieSeriesItem(item);
	    /* Convert to a number between 0 and 1. */
	    var pct:Number = curItem.percentValue / 100;
	    return new SolidColor(pieColor[index], 1.0);
	}

    public function setData(xmlParams:String):void{
		var xmlWhole:XML = new XML(xmlParams);
		var xmlIn:XMLList = xmlWhole.table;
		
		var arrChart:Array = new Array(); 
		var arrSeries:Array = new Array();
		xAxisName = (xmlIn.row[0].column[0] == "")?"xAxis":xmlIn.row[0].column[0]
		
		//for(k=0; k<xmlIn.row.length(); k++)
		//{
			for(var j:int=1; j<xmlIn.row[0].column.length(); j++){
				var PieSeriesObj:PieSeries = new PieSeries();
				PieSeriesObj.field = xmlIn.row[0].column[j];				
				PieSeriesObj.nameField = xAxisName;
				PieSeriesObj.displayName = xmlIn.row[0].column[j];
				PieSeriesObj.fillFunction = pieSeries_fillFunc;
					
				PieSeriesObj.explodeRadius = chartExplodeRadius;
				arrSeries.push(PieSeriesObj);
			}
		//}
		
		myChart.series = arrSeries;
		
		for(var i:int=1; i<xmlIn.row.length();i++){
			var objGroup:Object = new Object();
			for(j=0; j<xmlIn.row[i].column.length(); j++){
				if(j==0){
					objGroup[xAxisName] = xmlIn.row[i].column[j];
				}else{
					var stringVal:String = xmlIn.row[i].column[j];
					if(stringVal.substr(0,2) == "$$" && stringVal.substr(stringVal.length-2, 2) == "$$")
					{						
						var cpVarName:String = stringVal.substring(2, stringVal.length - 2);
						objGroup[xmlIn.row[0].column[j]] = Number(Application.application.parent.parent.parent.sendCaptivateVarValue(cpVarName));		
					}
					else
					{
						objGroup[xmlIn.row[0].column[j]] = Number(xmlIn.row[i].column[j]);
					}	
				}
			}			
			columns.addItem(objGroup);
			 var legendItem:LegendItem = new LegendItem() 
		    legendItem.label = xmlIn.row[i].column[0]; 
		    legendItem.setStyle("fill", pieColor[i-1]); 
			myLegend.addChild(legendItem); 
		}
		//myLegend.dataProvider = myChart;
	}
  ]]></mx:Script>
  <mx:Array id="bge">
  	
  </mx:Array>
  <mx:Panel title="{chartTitle}" width="410" height="330" layout="absolute" borderAlpha="0" backgroundColor="{bgColor}" borderStyle="none">
     <mx:HBox width="100%" height="11%" y="{hBoxYPos}" horizontalAlign="{hAlign}" backgroundAlpha="0">
		<mx:Legend id="myLegend" height="20%">
		
		</mx:Legend>     	
     </mx:HBox>
     <mx:PieChart dataTipMode="single" id="myChart" width="100%" height="89%" y="{chartYPos}" dataProvider="{columns}" showDataTips="true" innerRadius="{selectedChartStyle}" themeColor="#0496F3">
        
     </mx:PieChart>
  </mx:Panel>

</mx:Application>
