Provides a custom touchhold event for touch devices
(function(){
var name = 'touchhold',
delayKey = name + ':delay',
disabled, timer;
var clear = function(e){
clearTimeout(timer);
};
var events = {
touchstart: function(event){
if (event.touches.length > 1){
clear();
return;
}
timer = (function(){
this.fireEvent(name, event);
}).delay(this.retrieve(delayKey) || 750, this);
},
touchmove: clear,
touchcancel: clear,
touchend: clear
};
Element.defineCustomEvent(name, {
onSetup: function(){
this.addEvents(events);
},
onTeardown: function(){
this.removeEvents(events);
},
onEnable: function(){
disabled = false;
},
onDisable: function(){
disabled = true;
clear();
}
});
})();