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

//>>built
define("dojo/mouse",["./_base/kernel","./on","./has","./dom","./_base/window"],function(_1,on,_2,_3,_4){
_2.add("dom-quirks",_4.doc&&_4.doc.compatMode=="BackCompat");
_2.add("events-mouseenter",_4.doc&&"onmouseenter" in _4.doc.createElement("div"));
_2.add("events-mousewheel",_4.doc&&"onmousewheel" in _4.doc);
var _5;
if((_2("dom-quirks")&&_2("ie"))||!_2("dom-addeventlistener")){
_5={LEFT:1,MIDDLE:4,RIGHT:2,isButton:function(e,_6){
return e.button&_6;
},isLeft:function(e){
return e.button&1;
},isMiddle:function(e){
return e.button&4;
},isRight:function(e){
return e.button&2;
}};
}else{
_5={LEFT:0,MIDDLE:1,RIGHT:2,isButton:function(e,_7){
return e.button==_7;
},isLeft:function(e){
return e.button==0;
},isMiddle:function(e){
return e.button==1;
},isRight:function(e){
return e.button==2;
}};
}
_1.mouseButtons=_5;
function _8(_9,_a){
var _b=function(_c,_d){
return on(_c,_9,function(_e){
if(_a){
return _a(_e,_d);
}
if(!_3.isDescendant(_e.relatedTarget,_c)){
return _d.call(this,_e);
}
});
};
_b.bubble=function(_f){
return _8(_9,function(evt,_10){
var _11=_f(evt.target);
var _12=evt.relatedTarget;
if(_11&&(_11!=(_12&&_12.nodeType==1&&_f(_12)))){
return _10.call(_11,evt);
}
});
};
return _b;
};
var _13;
if(_2("events-mousewheel")){
_13="mousewheel";
}else{
_13=function(_14,_15){
return on(_14,"DOMMouseScroll",function(evt){
evt.wheelDelta=-evt.detail;
_15.call(this,evt);
});
};
}
return {_eventHandler:_8,enter:_8("mouseover"),leave:_8("mouseout"),wheel:_13,isLeft:_5.isLeft,isMiddle:_5.isMiddle,isRight:_5.isRight};
});
