/* fastclick: polyfill to remove click delays on browsers with touch uis. @codingstandard ftlabs-jsv2 @copyright the financial times limited [all rights reserved] @license mit license (see license.txt) */ (function(){function c(a,b){function d(a,b){return function(){return a.apply(b,arguments)}}var f;b=b||{};this.trackingclick=!1;this.trackingclickstart=0;this.targetelement=null;this.lasttouchidentifier=this.touchstarty=this.touchstartx=0;this.touchboundary=b.touchboundary||10;this.layer=a;this.tapdelay=b.tapdelay||200;this.taptimeout=b.taptimeout||700;if(!c.notneeded(a)){b="onmouse onclick ontouchstart ontouchmove ontouchend ontouchcancel".split(" ");for(var e=0,h=b.length;ed.offsetheight){b=d;a.fastclickscrollparent= d;break}d=d.parentelement}while(d)}b&&(b.fastclicklastscrolltop=b.scrolltop)};c.prototype.gettargetelementfromeventtarget=function(a){return a.nodetype===node.text_node?a.parentnode:a};c.prototype.ontouchstart=function(a){var b,d,c;if(1b||math.abs(a.pagey-this.touchstarty)>b?!0:!1};c.prototype.ontouchmove=function(a){if(!this.trackingclick)return!0; if(this.targetelement!==this.gettargetelementfromeventtarget(a.target)||this.touchhasmoved(a))this.trackingclick=!1,this.targetelement=null;return!0};c.prototype.findcontrol=function(a){return void 0!==a.control?a.control:a.htmlfor?document.getelementbyid(a.htmlfor):a.queryselector("button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea")};c.prototype.ontouchend=function(a){var b,d,c=this.targetelement;if(!this.trackingclick)return!0;if(a.timestamp-this.lastclicktime< this.tapdelay)return this.cancelnextclick=!0;if(a.timestamp-this.trackingclickstart>this.taptimeout)return!0;this.cancelnextclick=!1;this.lastclicktime=a.timestamp;b=this.trackingclickstart;this.trackingclick=!1;this.trackingclickstart=0;l&&(d=a.changedtouches[0],c=document.elementfrompoint(d.pagex-window.pagexoffset,d.pagey-window.pageyoffset)||c,c.fastclickscrollparent=this.targetelement.fastclickscrollparent);d=c.tagname.tolowercase();if("label"===d){if(b=this.findcontrol(c)){this.focus(c);if(g)return!1; c=b}}else if(this.needsfocus(c)){if(100