//>>built
define("dojox/gesture/tap",["dojo/_base/kernel","dojo/_base/declare","dojo/_base/lang","./Base","../main"],function(_1,_2,_3,_4,_5){
_1.experimental("dojox.gesture.tap");
var _6=_2(_4,{defaultEvent:"tap",subEvents:["hold","doubletap"],holdThreshold:500,doubleTapTimeout:250,tapRadius:10,press:function(_7,e){
if(e.touches&&e.touches.length>=2){
clearTimeout(_7.tapTimeOut);
delete _7.context;
return;
}
var _8=e.target;
this._initTap(_7,e);
_7.tapTimeOut=setTimeout(_3.hitch(this,function(){
if(this._isTap(_7,e)){
this.fire(_8,{type:"tap.hold"});
}
delete _7.context;
}),this.holdThreshold);
},release:function(_9,e){
if(!_9.context){
clearTimeout(_9.tapTimeOut);
return;
}
if(this._isTap(_9,e)){
switch(_9.context.c){
case 1:
this.fire(e.target,{type:"tap"});
break;
case 2:
this.fire(e.target,{type:"tap.doubletap"});
break;
}
}
clearTimeout(_9.tapTimeOut);
},_initTap:function(_a,e){
if(!_a.context){
_a.context={x:0,y:0,t:0,c:0};
}
var ct=new Date().getTime();
if(ct-_a.context.t<=this.doubleTapTimeout){
_a.context.c++;
}else{
_a.context.c=1;
_a.context.x=e.screenX;
_a.context.y=e.screenY;
}
_a.context.t=ct;
},_isTap:function(_b,e){
var dx=Math.abs(_b.context.x-e.screenX);
var dy=Math.abs(_b.context.y-e.screenY);
return dx<=this.tapRadius&&dy<=this.tapRadius;
}});
_5.gesture.tap=new _6();
_5.gesture.tap.Tap=_6;
return _5.gesture.tap;
});
