<?xml version="1.0"?>
<!-- charts/BasicColumn.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init(event);" backgroundAlpha="0" width="410" height="298" layout="absolute" borderColor="#FFFFFF" themeColor="#FFFFFF" backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#FFFFFF, #FFFFFF]">

  <mx:Script><![CDATA[
  	import comp.MyDataTip;
  	import mx.charts.chartClasses.ChartElement;
  	import mx.charts.chartClasses.Series;
  	import mx.charts.series.items.ColumnSeriesItem;
  	import mx.charts.series.ColumnSeries;
	 import mx.collections.ArrayCollection;
	 import mx.styles.StyleManager;
     import mx.controls.Alert;
     import mx.graphics.SolidColor;
     
	 [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:String = "0";
	
	[Bindable]
     private var columnColor: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 var myVar:Number = 20;
	private function init(evt:Event):void{
		//setColumnColor("0xff9900,0x00cc00,0x0098ff,0xcac99d,0xcc0000,0x0033cc,0x99cc66,0x660000,0xffff00")
		//setData('<root><table><row><column>dfsf</column><column>gh</column><column>iojk</column></row><row><column>df</column><column>$$a$$</column><column>56</column></row></table><customizations><chart title="sfd" type="1" bgcolor="255" style="1"/></customizations></root>')
		//StyleManager.getStyleDeclaration("Panel").setStyle("fontWeight","bold");
		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 = "clustered"
    	}
    	else if(inSelectedChartStyle == "1")
    	{
    		selectedChartStyle = "stacked"
    	}
    	else if(inSelectedChartStyle == "2")
    	{
    		selectedChartStyle = "100%"
    	}
    	else if(inSelectedChartStyle == "3")
    	{
    		selectedChartStyle = "overlaid"
    	}
    }
    
    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(inColumnColor:String):void
	 {
	    columnColor = inColumnColor.split(",");    	
	 }
    
    public function setLegendStyle(inLegendStyle:String):void
    {
    	if(inLegendStyle == "0")
    	{
    		vAlign = "top";
    		hAlign = "left";
    		chartYPos = 60;
		    hBoxYPos = 0;
    	}
    	else if(inLegendStyle == "1")
    	{
    		vAlign = "top";
    		hAlign = "center";
    		chartYPos = 60;
		    hBoxYPos = 0;
    	}
    	else if(inLegendStyle == "2")
    	{
    		vAlign = "top";
    		hAlign = "right";
    		chartYPos = 60;
		    hBoxYPos = 0;
    	}
    	else if(inLegendStyle == "3")
    	{
    		vAlign = "bottom";
    		hAlign = "left";
    		chartYPos = 10;
		    hBoxYPos = 210;
    	}
    	else if(inLegendStyle == "4")
    	{
    		vAlign = "bottom";
    		hAlign = "center";
    		chartYPos = 10;
		    hBoxYPos = 210;
    	}
    	else if(inLegendStyle == "5")
    	{
    		vAlign = "bottom";
    		hAlign = "right";
    		chartYPos = 10;
		    hBoxYPos = 210;
    	}
    }
    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(var j:int=1; j<xmlIn.row[0].column.length(); j++){
			var columnSeriesObj:ColumnSeries = new ColumnSeries();
			columnSeriesObj.xField = "id";
			columnSeriesObj.yField = xmlIn.row[0].column[j]
			columnSeriesObj.displayName = xmlIn.row[0].column[j];
			var c:SolidColor = new SolidColor(columnColor[j-1], 1);
			var a:ColumnSeriesItem = new ColumnSeriesItem(columnSeriesObj);
			var el:ChartElement = ChartElement(a.element);	
			el.setStyle("fill", c);	
			arrSeries.push(columnSeriesObj);
		}
		myChart.series = arrSeries;
		for(var i:int=1; i<xmlIn.row.length();i++){
			var objGroup:Object = new Object();
			objGroup.id = i;
			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);
		}
	}
	
	public function defineLabel(
    cat:Object, 
    pcat:Object,
    ax:CategoryAxis,
    labelItem:Object):String 
	{
	        var str:String = "";
	        for (var s:String in labelItem) {
	        	if(s == xAxisName){
	            	str = labelItem[s];
	         	}
	        }
	        return str;
	}

  ]]></mx:Script>
  <mx:Array id="bge">
  </mx:Array>

  <mx:Panel id="pnl" title="{chartTitle}" width="410" height="298" layout="absolute" horizontalScrollPolicy="auto" verticalScrollPolicy="auto" borderAlpha="0" backgroundColor="{bgColor}" borderStyle="none">
     <mx:HBox width="100%" height="25%" y="{hBoxYPos}" horizontalAlign="{hAlign}" backgroundAlpha="0">
		<mx:Legend dataProvider="{myChart}" height="20%"/>     	
     </mx:HBox>
     <mx:ColumnChart id="myChart" dataProvider="{columns}" showDataTips="true" dataTipMode="single" width="100%" height="75%" y="{chartYPos}" type="{selectedChartStyle}" backgroundElements="{bge}">
		<mx:horizontalAxis>
           <mx:CategoryAxis
                dataProvider="{columns}" 
                categoryField="id"
                labelFunction="defineLabel"
           />
        </mx:horizontalAxis>
     </mx:ColumnChart>
  </mx:Panel>

</mx:Application>
