/*
	Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
	Available via Academic Free License >= 2.1 OR the modified BSD license.
	see: http://dojotoolkit.org/license for details
*/


if(!dojo._hasResource["dojox.charting.widget.SelectableLegend"]){dojo._hasResource["dojox.charting.widget.SelectableLegend"]=true;dojo.provide("dojox.charting.widget.SelectableLegend");dojo.require("dojox.charting.widget.Legend");dojo.require("dijit.form.CheckBox");dojo.require("dojox.charting.action2d.Highlight");(function(){var df=dojox.lang.functional;dojo.declare("dojox.charting.widget.SelectableLegend",[dojox.charting.widget.Legend],{outline:false,transitionFill:null,transitionStroke:null,postCreate:function(){this.legends=[];this.legendAnim={};this.inherited(arguments);},refresh:function(){this.legends=[];this.inherited(arguments);this._applyEvents();new dojox.charting.widget._FocusManager(this);},_addLabel:function(_1,_2){this.inherited(arguments);var _3=dojo.query("td",this.legendBody);var _4=_3[_3.length-1];this.legends.push(_4);var _5=new dijit.form.CheckBox({checked:true});dojo.place(_5.domNode,_4,"first");var _2=dojo.query("label",_4)[0];dojo.attr(_2,"for",_5.id);},_applyEvents:function(){dojo.forEach(this.legends,function(_6,i){var _7,_8=[],_9,_a;if(this._isPie()){_7=this.chart.stack[0];_8.push(_7.group.children[i]);_9=_7.name;_a=this.chart.series[0].name;}else{_7=this.chart.series[i];_8=_7.group.children;_9=_7.plot;_a=_7.name;}var _b={fills:df.map(_8,"x.getFill()"),strokes:df.map(_8,"x.getStroke()")};var _c=dojo.query(".dijitCheckBox",_6)[0];dojo.connect(_c,"onclick",this,function(e){this._toggle(_8,i,_6.vanished,_b,_a,_9);_6.vanished=!_6.vanished;e.stopPropagation();});var _d=dojo.query(".dojoxLegendIcon",_6)[0],_e=this._getFilledShape(this._surfaces[i].children);dojo.forEach(["onmouseenter","onmouseleave"],function(_f){dojo.connect(_d,_f,this,function(e){this._highlight(e,_e,_8,i,_6.vanished,_b,_a,_9);});},this);},this);},_toggle:function(_10,_11,_12,dyn,_13,_14){dojo.forEach(_10,function(_15,i){var _16=dyn.fills[i],_17=this._getTransitionFill(_14),_18=dyn.strokes[i],_19=this.transitionStroke;if(_16){if(_17&&(typeof _16=="string"||_16 instanceof dojo.Color)){dojox.gfx.fx.animateFill({shape:_15,color:{start:_12?_17:_16,end:_12?_16:_17}}).play();}else{_15.setFill(_12?_16:_17);}}if(_18&&!this.outline){_15.setStroke(_12?_18:_19);}},this);},_highlight:function(e,_1a,_1b,_1c,_1d,dyn,_1e,_1f){if(!_1d){var _20=this._getAnim(_1f),_21=this._isPie(),_22=_23(e.type);var _24={shape:_1a,index:_21?"legend"+_1c:"legend",run:{name:_1e},type:_22};_20.process(_24);dojo.forEach(_1b,function(_25,i){_25.setFill(dyn.fills[i]);var o={shape:_25,index:_21?_1c:i,run:{name:_1e},type:_22};_20.duration=100;_20.process(o);});}},_getAnim:function(_26){if(!this.legendAnim[_26]){this.legendAnim[_26]=new dojox.charting.action2d.Highlight(this.chart,_26);}return this.legendAnim[_26];},_getTransitionFill:function(_27){if(this.chart.stack[this.chart.plots[_27]].declaredClass.indexOf("dojox.charting.plot2d.Stacked")!=-1){return this.chart.theme.plotarea.fill;}return null;},_getFilledShape:function(_28){var i=0;while(_28[i]){if(_28[i].getFill()){return _28[i];}i++;}},_isPie:function(){return this.chart.stack[0].declaredClass=="dojox.charting.plot2d.Pie";}});function _23(_29){if(_29=="mouseenter"){return "onmouseover";}if(_29=="mouseleave"){return "onmouseout";}return "on"+_29;};dojo.declare("dojox.charting.widget._FocusManager",null,{constructor:function(_2a){this.legend=_2a;this.index=0;this.horizontalLength=this._getHrizontalLength();dojo.forEach(_2a.legends,function(_2b,i){if(i>0){dojo.query("input",_2b).attr("tabindex",-1);}});this.firstLabel=dojo.query("input",_2a.legends[0])[0];dojo.connect(this.firstLabel,"focus",this,function(){this.legend.active=true;});dojo.connect(this.legend.legendNode,"keydown",this,"_onKeyEvent");},_getHrizontalLength:function(){var _2c=this.legend.horizontal;if(typeof _2c=="number"){return Math.min(_2c,this.legend.legends.length);}else{if(!_2c){return 1;}else{return this.legend.legends.length;}}},_onKeyEvent:function(e){if(!this.legend.active){return;}if(e.keyCode==dojo.keys.TAB){this.legend.active=false;return;}var max=this.legend.legends.length;switch(e.keyCode){case dojo.keys.LEFT_ARROW:this.index--;if(this.index<0){this.index+=max;}break;case dojo.keys.RIGHT_ARROW:this.index++;if(this.index>=max){this.index-=max;}break;case dojo.keys.UP_ARROW:if(this.index-this.horizontalLength>=0){this.index-=this.horizontalLength;}break;case dojo.keys.DOWN_ARROW:if(this.index+this.horizontalLength<max){this.index+=this.horizontalLength;}break;default:return;}this._moveToFocus();dojo.stopEvent(e);},_moveToFocus:function(){dojo.query("input",this.legend.legends[this.index])[0].focus();}});})();}