/**
 * @ignore
 * gesture tap
 * @author yiminghe@gmail.com
 */
KISSY.add('event/dom/touch/tap', function (S, eventHandleMap, DomEvent, SingleTouch) {
    function preventDefault(e) {
        e.preventDefault();
    }

    var event = 'tap';

    var DomEventObject = DomEvent.Object;

    function Tap() {
        Tap.superclass.constructor.apply(this, arguments);
    }

    S.extend(Tap, SingleTouch, {
        onTouchMove: function () {
            return false;
        },

        onTouchEnd: function (e) {
            var touch = e.changedTouches[0];
            var target = e.target;
            var eventObject = new DomEventObject({
                type: event,
                target: target,
                currentTarget: target
            });
            S.mix(eventObject, {
                pageX: touch.pageX,
                pageY: touch.pageY,
                which: 1,
                touch: touch
            });
            DomEvent.fire(target, event, eventObject);
            if (eventObject.isDefaultPrevented()) {
                DomEvent.on(target, 'click', {
                    fn: preventDefault,
                    once: 1
                });
            }
        }
    });

    eventHandleMap[event] = {
        handle: new Tap()
    };

    return Tap;

}, {
    requires: ['./handle-map', 'event/dom/base', './single-touch']
});
/**
 * @ignore
 *
 * yiminghe@gmail.com 2012-10-31
 *
 * 页面改动必须先用桌面 chrome 刷新下,再用 ios 刷新,否则很可能不生效??
 *
 * why to implement tap:
 * 1.   click 造成 clickable element 有 -webkit-tap-highlight-color 其内不能选择文字
 * 2.   touchstart touchdown 时间间隔非常短不会触发 click (touchstart)
 * 3.   click 在touchmove 到其他地方后仍然会触发(如果没有组织touchmove默认行为导致的屏幕移动)
 *
 * tap:
 * 1.   长按可以选择文字,
 *      可以选择阻止 document 的 touchstart 来阻止整个程序的文字选择功能:
 *      同时阻止了touch 的 mouse/click 相关事件触发
 * 2.   反应更灵敏
 *
 * https://developers.google.com/mobile/articles/fast_buttons
 */