Provides a custom touch event on mobile devices
(function(){
var preventDefault = function(event){
event.preventDefault();
};
var disabled;
Element.defineCustomEvent('touch', {
base: 'touchend',
condition: function(event){
if (disabled || event.targetTouches.length != 0) return false;
var touch = event.changedTouches[0],
target = document.elementFromPoint(touch.clientX, touch.clientY);
do {
if (target == this) return true;
} while ((target = target.parentNode) && target);
return false;
},
onSetup: function(){
this.addEvent('touchstart', preventDefault);
},
onTeardown: function(){
this.removeEvent('touchstart', preventDefault);
},
onEnable: function(){
disabled = false;
},
onDisable: function(){
disabled = true;
}
});
})();