(function(Hammer) {
  /**
   * ShowTouches gesture
   * show all touch on the screen by placing elements at there pageX and pageY
   * @param   {Boolean}   [force]
   */
  Hammer.plugins.showTouches = function(force) {
    // only possible with the pointerEvents css property supported
    if(!("pointerEvents" in document.body.style)) {
      return;
    }
    
    // the circles under your fingers
    var template_style = 'position:absolute;z-index:9999;left:0;top:0;height:14px;width:14px;border:solid 2px #777;' +
      'background:rgba(255,255,255,.7);border-radius:20px;pointer-events:none;' +
      'margin-top:-9px;margin-left:-9px;';

    // elements by identifier
    var touch_elements = {};
    var touches_index = {};

    /**
     * remove unused touch elements
     */
    function removeUnusedElements() {
      // remove unused touch elements
      for(var key in touch_elements) {
        if(touch_elements.hasOwnProperty(key) && !touches_index[key]) {
          document.body.removeChild(touch_elements[key]);
          delete touch_elements[key];
        }
      }
    }

    Hammer.detection.register({
      name    : 'show_touches',
      priority: 0,
      handler : function(ev) {
        touches_index = {};

        // clear old elements when not using a mouse
        if(ev.pointerType != Hammer.POINTER_MOUSE && !force) {
          removeUnusedElements();
          return;
        }

        // place touches by index
        for(var t = 0, len = ev.touches.length; t < len; t++) {
          var touch = ev.touches[t];

          var id = touch.identifier;
          touches_index[id] = touch;

          // new touch element
          if(!touch_elements[id]) {
            // create new element and attach base styles
            var template = document.createElement('div');
            template.setAttribute('style', template_style);

            // append element to body
            document.body.appendChild(template);

            touch_elements[id] = template;
          }

          // Paul Irish says that translate is faster then left/top
          touch_elements[id].style.left = touch.pageX + 'px';
          touch_elements[id].style.top = touch.pageY + 'px';
        }

        removeUnusedElements();
      }
    });
  };
})(window.Hammer);

@@ -418,16 +418,28 @@
 _style =
+ %5B%0A         
  'positi
@@ -441,16 +441,17 @@
 osition:
+ 
 absolute
@@ -455,16 +455,30 @@
 ute;
+',%0A          '
 z-index:
 9999
@@ -477,56 +477,205 @@
 dex:
+ 
 9999;
-left:0;top:0;
+',%0A          '
 height:
+ 
 14px;
+',%0A          '
 width:
+ 
 14px;
+',%0A          'top: 0;',%0A          'left: 0;',      %0A          'pointer-events: none;', // makes the element click-thru%0A          '
 border:
+ 
 soli
@@ -686,19 +686,22 @@
 x #777;'
- +%0A
+,%0A    
       'b
@@ -710,16 +710,17 @@
 kground:
+ 
 rgba(255
@@ -732,16 +732,30 @@
 255,.7);
+',%0A          '
 border-r
@@ -764,37 +764,21 @@
 ius:
+ 
 20px;
-pointer-events:none;' +%0A
+',%0A    
     
@@ -791,21 +791,36 @@
 gin-top:
+ 
 -9px;
+',%0A          '
 margin-l
@@ -827,15 +827,287 @@
 eft:
+ 
 -9px;'
-;
+%0A      %5D.join(%22%22);%0A    %0A    // define position property%0A    var position_style_prop = 'lefttop';%0A    if(%22transform%22 in document.body.style) %7B position_style_prop = 'transform'; %7D%0A    if(%22webkitTransform%22 in document.body.style) %7B position_style_prop = 'webkitTransform'; %7D
 %0A%0A  
@@ -1548,24 +1548,415 @@
    %7D%0A    %7D%0A%0A
+    /**%0A     * set position of the element with top/left or css transform%0A     * @param el%0A     * @param x%0A     * @param y%0A     */%0A    function setPosition(el, x, y) %7B%0A      if(position_style_prop == 'lefttop') %7B%0A        el.style.left = x + 'px';%0A        el.style.top = y + 'px';%0A      %7D%0A      else %7B%0A        el.style%5Bposition_style_prop%5D = %22translate(%22+ x +%22px, %22+ y +%22px)%22;%0A      %7D%0A    %7D%0A%0A
     Hammer.d
@@ -2877,168 +2877,52 @@
     
-// Paul Irish says that translate is faster then left/top%0A          touch_elements%5Bid%5D.style.left = touch.pageX + 'px';%0A          touch_elements%5Bid%5D.style.top =
+setPosition(touch_elements%5Bid%5D, touch.pageX,
  tou
@@ -2929,23 +2929,17 @@
 ch.pageY
- + 'px'
+)
 ;%0A      

use css transform if possible