//>>built
define("dojox/geo/charting/Feature",["dojo/_base/lang","dojo/_base/declare","dojo/_base/array","dojo/_base/html","dojo/dom","dojo/_base/event","dojox/gfx/fx","dojox/color"],function(_1,_2,_3,_4,_5,_6,fx,_7){
return _2("dojox.geo.charting.Feature",null,{_isZoomIn:false,isSelected:false,markerText:null,constructor:function(_8,_9,_a){
this.id=_9;
this.shape=_8.mapObj.createGroup();
this.parent=_8;
this.mapObj=_8.mapObj;
this._bbox=_a.bbox;
this._center=_a.center;
this._defaultFill=_8.defaultColor;
this._highlightFill=_8.highlightColor;
this._defaultStroke={width:this._normalizeStrokeWeight(0.5),color:"white"};
var _b=(_1.isArray(_a.shape[0]))?_a.shape:[_a.shape];
_3.forEach(_b,function(_c){
this.shape.createPolyline(_c).setStroke(this._defaultStroke);
},this);
this.unsetValue();
},unsetValue:function(){
this.value=null;
this.unsetColor();
},unsetColor:function(){
this._defaultFill=this.parent.defaultColor;
var _d=new _7.Color(this.parent.defaultColor).toHsl();
_d.l=1.2*_d.l;
this._highlightFill=_7.fromHsl(_d);
this._setFillWith(this._defaultFill);
},setValue:function(_e){
this.value=_e;
if(_e==null){
this.unsetValue();
}else{
if(this.parent.series.length!=0){
for(var i=0;i<this.parent.series.length;i++){
var _f=this.parent.series[i];
if((_e>=_f.min)&&(_e<_f.max)){
this._setFillWith(_f.color);
this._defaultFill=_f.color;
var col=new _7.Color(_f.color).toHsv();
col.v=(col.v+20);
this._highlightFill=_7.fromHsv(col);
return;
}
}
this.unsetColor();
}
}
},_setFillWith:function(_10){
var _11=(_1.isArray(this.shape.children))?this.shape.children:[this.shape.children];
_3.forEach(_11,_1.hitch(this,function(_12){
if(this.parent.colorAnimationDuration>0){
var _13=fx.animateFill({shape:_12,color:{start:_12.getFill(),end:_10},duration:this.parent.colorAnimationDuration});
_13.play();
}else{
_12.setFill(_10);
}
}));
},_setStrokeWith:function(_14){
var _15=(_1.isArray(this.shape.children))?this.shape.children:[this.shape.children];
_3.forEach(_15,function(_16){
_16.setStroke({color:_14.color,width:_14.width,join:"round"});
});
},_normalizeStrokeWeight:function(_17){
var _18=this.shape._getRealMatrix();
return (dojox.gfx.renderer!="vml")?_17/(this.shape._getRealMatrix()||{xx:1}).xx:_17;
},_onmouseoverHandler:function(evt){
this.parent.onFeatureOver(this);
this._setFillWith(this._highlightFill);
this.mapObj.marker.show(this.id,evt);
},_onmouseoutHandler:function(){
this._setFillWith(this._defaultFill);
this.mapObj.marker.hide();
_4.style("mapZoomCursor","display","none");
},_onmousemoveHandler:function(evt){
if(this.mapObj.marker._needTooltipRefresh){
this.mapObj.marker.show(this.id,evt);
}
if(this.isSelected){
if(this.parent.enableFeatureZoom){
evt=_6.fix(evt||window.event);
_4.style("mapZoomCursor","left",evt.pageX+12+"px");
_4.style("mapZoomCursor","top",evt.pageY+"px");
_4.byId("mapZoomCursor").className=this._isZoomIn?"mapZoomOut":"mapZoomIn";
_4.style("mapZoomCursor","display","block");
}else{
_4.style("mapZoomCursor","display","none");
}
}
},_onclickHandler:function(evt){
this.parent.onFeatureClick(this);
if(!this.isSelected){
this.parent.deselectAll();
this.select(true);
this._onmousemoveHandler(evt);
}else{
if(this.parent.enableFeatureZoom){
if(this._isZoomIn){
this._zoomOut();
}else{
this._zoomIn();
}
}
}
},select:function(_19){
if(_19){
this.shape.moveToFront();
this._setStrokeWith({color:"black",width:this._normalizeStrokeWeight(2)});
this._setFillWith(this._highlightFill);
this.isSelected=true;
this.parent.selectedFeature=this;
}else{
this._setStrokeWith(this._defaultStroke);
this._setFillWith(this._defaultFill);
this.isSelected=false;
this._isZoomIn=false;
}
},_zoomIn:function(){
var _1a=this.mapObj.marker;
_1a.hide();
this.parent.fitToMapArea(this._bbox,15,true,_1.hitch(this,function(){
this._setStrokeWith({color:"black",width:this._normalizeStrokeWeight(2)});
_1a._needTooltipRefresh=true;
this.parent.onZoomEnd(this);
}));
this._isZoomIn=true;
_5.byId("mapZoomCursor").className="";
},_zoomOut:function(){
var _1b=this.mapObj.marker;
_1b.hide();
this.parent.fitToMapContents(3,true,_1.hitch(this,function(){
this._setStrokeWith({color:"black",width:this._normalizeStrokeWeight(2)});
_1b._needTooltipRefresh=true;
this.parent.onZoomEnd(this);
}));
this._isZoomIn=false;
_5.byId("mapZoomCursor").className="";
},init:function(){
this.shape.id=this.id;
this.tooltip=null;
}});
});
