//>>built
define("dojox/geo/charting/KeyboardInteractionSupport",["dojo/_base/lang","dojo/_base/declare","dojo/_base/event","dojo/_base/connect","dojo/_base/html","dojo/dom","dojox/lang/functional","dojo/keys"],function(_1,_2,_3,_4,_5,_6,_7,_8){return _2("dojox.geo.charting.KeyboardInteractionSupport",null,{_map:null,_zoomEnabled:false,constructor:function(_9,_a){this._map=_9;if(_a){this._zoomEnabled=_a.enableZoom;}},connect:function(){var _b=_6.byId(this._map.container);_5.attr(_b,{tabindex:0,role:"presentation","aria-label":"map"});this._keydownListener=_4.connect(_b,"keydown",this,"keydownHandler");this._onFocusListener=_4.connect(_b,"focus",this,"onFocus");this._onBlurListener=_4.connect(_b,"blur",this,"onBlur");},disconnect:function(){_4.disconnect(this._keydownListener);this._keydownListener=null;_4.disconnect(this._onFocusListener);this._onFocusListener=null;_4.disconnect(this._onBlurListener);this._onBlurListener=null;},keydownHandler:function(e){switch(e.keyCode){case _8.LEFT_ARROW:this._directTo(-1,-1,1,-1);break;case _8.RIGHT_ARROW:this._directTo(-1,-1,-1,1);break;case _8.UP_ARROW:this._directTo(1,-1,-1,-1);break;case _8.DOWN_ARROW:this._directTo(-1,1,-1,-1);break;case _8.SPACE:if(this._map.selectedFeature&&!this._map.selectedFeature._isZoomIn&&this._zoomEnabled){this._map.selectedFeature._zoomIn();}break;case _8.ESCAPE:if(this._map.selectedFeature&&this._map.selectedFeature._isZoomIn&&this._zoomEnabled){this._map.selectedFeature._zoomOut();}break;default:return;}_3.stop(e);},onFocus:function(e){if(this._map.selectedFeature||this._map.focused){return;}this._map.focused=true;var _c,_d=false;if(this._map.lastSelectedFeature){_c=this._map.lastSelectedFeature;}else{var _e=this._map.getMapCenter(),_f=Infinity;_7.forIn(this._map.mapObj.features,function(_10){var _11=Math.sqrt(Math.pow(_10._center[0]-_e.x,2)+Math.pow(_10._center[1]-_e.y,2));if(_11<_f){_f=_11;_c=_10;}});_d=true;}if(_c){if(_d){_c._onclickHandler(null);}this._map.mapObj.marker.show(_c.id);}},onBlur:function(){this._map.lastSelectedFeature=this._map.selectedFeature;},_directTo:function(up,_12,_13,_14){var _15=this._map.selectedFeature,_16=_15._center[0],_17=_15._center[1],_18=Infinity,_19=null;_7.forIn(this._map.mapObj.features,function(_1a){var _1b=Math.abs(_16-_1a._center[0]),_1c=Math.abs(_17-_1a._center[1]),_1d=_1b+_1c;if((up-_12)*(_17-_1a._center[1])>0){if(_1b<_1c&&_18>_1d){_18=_1d;_19=_1a;}}if((_13-_14)*(_16-_1a._center[0])>0){if(_1b>_1c&&_18>_1d){_18=_1d;_19=_1a;}}});if(_19){this._map.mapObj.marker.hide();_19._onclickHandler(null);this._map.mapObj.marker.show(_19.id);}}});});