<?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="298" layout="absolute" borderColor="#FFFFFF" themeColor="#FFFFFF" backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#FFFFFF, #FFFFFF]">
 <mx:Style>
      
    </mx:Style>
  <mx:Script><![CDATA[
  	import comp.MyDataTip;
  	import mx.charts.chartClasses.Series;
  	import mx.charts.series.items.BarSeriesItem;
  	import mx.charts.series.BarSeries;
	 import mx.collections.ArrayCollection;
	 import mx.styles.StyleManager;
	 import mx.controls.Alert;
	 import mx.graphics.SolidColor;
	 import mx.charts.chartClasses.ChartElement;
	 
	 [Bindable]
	 public var bars: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 barColor: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{
		//setData('<root><table><row><column>dfsf</column><column>gh</column><column>iojk</column></row><row><column>df</column><column>34</column><column>56</column></row></table><customizations><chart title="sfd" type="1" bgcolor="255" style="1"/></customizations></root>')
		//setTextProp("Comic Sans MS", 12)
		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(inBarColor:String):void
    {
    	barColor = inBarColor.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 BarSeriesObj:BarSeries = new BarSeries();
			BarSeriesObj.xField = xmlIn.row[0].column[j]
			BarSeriesObj.yField = "id";
			BarSeriesObj.displayName = xmlIn.row[0].column[j];
			var c:SolidColor = new SolidColor(barColor[j-1], 1);
			var a:BarSeriesItem = new BarSeriesItem(BarSeriesObj);
			var el:ChartElement = ChartElement(a.element);	
			el.setStyle("fill", c);	
			arrSeries.push(BarSeriesObj);
		}
		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]);
					}	
				}
			}
			bars.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:BarChart dataTipMode="single" id="myChart" dataProvider="{bars}" showDataTips="true" width="100%" height="75%" y="{chartYPos}" type="{selectedChartStyle}" backgroundElements="{bge}">
        <mx:verticalAxis>
           <mx:CategoryAxis
           		 
                dataProvider="{bars}" 
                categoryField="id"
                labelFunction="defineLabel"
                
           />
        </mx:verticalAxis>
     </mx:BarChart>
  </mx:Panel>

</mx:Application>
