;(function(){'use strict';function fastclick(layer,options){var oldonclick;options=options||{};this.trackingclick=false;this.trackingclickstart=0;this.targetelement=null;this.touchstartx=0;this.touchstarty=0;this.lasttouchidentifier=0;this.touchboundary=options.touchboundary||10;this.layer=layer;this.tapdelay=options.tapdelay||200;this.taptimeout=options.taptimeout||700;if(fastclick.notneeded(layer)){return}function bind(method,context){return function(){return method.apply(context,arguments)}}var methods=['onmouse','onclick','ontouchstart','ontouchmove','ontouchend','ontouchcancel'];var context=this;for(var i=0,l=methods.length;i=0;var deviceisandroid=navigator.useragent.indexof('android')>0&&!deviceiswindowsphone;var deviceisios=/ip(ad|hone|od)/.test(navigator.useragent)&&!deviceiswindowsphone;var deviceisios4=deviceisios&&(/os 4_\d(_\d)?/).test(navigator.useragent);var deviceisioswithbadtarget=deviceisios&&(/os [6-7]_\d/).test(navigator.useragent);var deviceisblackberry10=navigator.useragent.indexof('bb10')>0;fastclick.prototype.needsclick=function(target){switch(target.nodename.tolowercase()){case'button':case'select':case'textarea':if(target.disabled){return true}break;case'input':if((deviceisios&&target.type==='file')||target.disabled){return true}break;case'label':case'iframe':case'video':return true}return(/\bneedsclick\b/).test(target.classname)};fastclick.prototype.needsfocus=function(target){switch(target.nodename.tolowercase()){case'textarea':return true;case'select':return!deviceisandroid;case'input':switch(target.type){case'button':case'checkbox':case'file':case'image':case'radio':case'submit':return false}return!target.disabled&&!target.readonly;default:return(/\bneedsfocus\b/).test(target.classname)}};fastclick.prototype.sendclick=function(targetelement,event){var clickevent,touch;if(document.activeelement&&document.activeelement!==targetelement){document.activeelement.blur()}touch=event.changedtouches[0];clickevent=document.createevent('mouseevents');clickevent.initmouseevent(this.determineeventtype(targetelement),true,true,window,1,touch.screenx,touch.screeny,touch.clientx,touch.clienty,false,false,false,false,0,null);clickevent.forwardedtouchevent=true;targetelement.dispatchevent(clickevent)};fastclick.prototype.determineeventtype=function(targetelement){if(deviceisandroid&&targetelement.tagname.tolowercase()==='select'){return'mousedown'}return'click'};fastclick.prototype.focus=function(targetelement){var length;if(deviceisios&&targetelement.setselectionrange&&targetelement.type.indexof('date')!==0&&targetelement.type!=='time'&&targetelement.type!=='month'){length=targetelement.value.length;targetelement.setselectionrange(length,length)}else{targetelement.focus()}};fastclick.prototype.updatescrollparent=function(targetelement){var scrollparent,parentelement;scrollparent=targetelement.fastclickscrollparent;if(!scrollparent||!scrollparent.contains(targetelement)){parentelement=targetelement;do{if(parentelement.scrollheight>parentelement.offsetheight){scrollparent=parentelement;targetelement.fastclickscrollparent=parentelement;break}parentelement=parentelement.parentelement}while(parentelement)}if(scrollparent){scrollparent.fastclicklastscrolltop=scrollparent.scrolltop}};fastclick.prototype.gettargetelementfromeventtarget=function(eventtarget){if(eventtarget.nodetype===node.text_node){return eventtarget.parentnode}return eventtarget};fastclick.prototype.ontouchstart=function(event){var targetelement,touch,selection;if(event.targettouches.length>1){return true}targetelement=this.gettargetelementfromeventtarget(event.target);touch=event.targettouches[0];if(deviceisios){selection=window.getselection();if(selection.rangecount&&!selection.iscollapsed){return true}if(!deviceisios4){if(touch.identifier&&touch.identifier===this.lasttouchidentifier){event.preventdefault();return false}this.lasttouchidentifier=touch.identifier;this.updatescrollparent(targetelement)}}this.trackingclick=true;this.trackingclickstart=event.timestamp;this.targetelement=targetelement;this.touchstartx=touch.pagex;this.touchstarty=touch.pagey;if((event.timestamp-this.lastclicktime)boundary||math.abs(touch.pagey-this.touchstarty)>boundary){return true}return false};fastclick.prototype.ontouchmove=function(event){if(!this.trackingclick){return true}if(this.targetelement!==this.gettargetelementfromeventtarget(event.target)||this.touchhasmoved(event)){this.trackingclick=false;this.targetelement=null}return true};fastclick.prototype.findcontrol=function(labelelement){if(labelelement.control!==undefined){return labelelement.control}if(labelelement.htmlfor){return document.getelementbyid(labelelement.htmlfor)}return labelelement.queryselector('button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea')};fastclick.prototype.ontouchend=function(event){var forelement,trackingclickstart,targettagname,scrollparent,touch,targetelement=this.targetelement;if(!this.trackingclick){return true}if((event.timestamp-this.lastclicktime)this.taptimeout){return true}this.cancelnextclick=false;this.lastclicktime=event.timestamp;trackingclickstart=this.trackingclickstart;this.trackingclick=false;this.trackingclickstart=0;if(deviceisioswithbadtarget){touch=event.changedtouches[0];targetelement=document.elementfrompoint(touch.pagex-window.pagexoffset,touch.pagey-window.pageyoffset)||targetelement;targetelement.fastclickscrollparent=this.targetelement.fastclickscrollparent}targettagname=targetelement.tagname.tolowercase();if(targettagname==='label'){forelement=this.findcontrol(targetelement);if(forelement){this.focus(targetelement);if(deviceisandroid){return false}targetelement=forelement}}else if(this.needsfocus(targetelement)){if((event.timestamp-trackingclickstart)>100||(deviceisios&&window.top!==window&&targettagname==='input')){this.targetelement=null;return false}this.focus(targetelement);this.sendclick(targetelement,event);if(!deviceisios||targettagname!=='select'){this.targetelement=null;event.preventdefault()}return false}if(deviceisios&&!deviceisios4){scrollparent=targetelement.fastclickscrollparent;if(scrollparent&&scrollparent.fastclicklastscrolltop!==scrollparent.scrolltop){return true}}if(!this.needsclick(targetelement)){event.preventdefault();this.sendclick(targetelement,event)}return false};fastclick.prototype.ontouchcancel=function(){this.trackingclick=false;this.targetelement=null};fastclick.prototype.onmouse=function(event){if(!this.targetelement){return true}if(event.forwardedtouchevent){return true}if(!event.cancelable){return true}if(!this.needsclick(this.targetelement)||this.cancelnextclick){if(event.stopimmediatepropagation){event.stopimmediatepropagation()}else{event.propagationstopped=true}event.stoppropagation();event.preventdefault();return false}return true};fastclick.prototype.onclick=function(event){var permitted;if(this.trackingclick){this.targetelement=null;this.trackingclick=false;return true}if(event.target.type==='submit'&&event.detail===0){return true}permitted=this.onmouse(event);if(!permitted){this.targetelement=null}return permitted};fastclick.prototype.destroy=function(){var layer=this.layer;if(deviceisandroid){layer.removeeventlistener('mouseover',this.onmouse,true);layer.removeeventlistener('mousedown',this.onmouse,true);layer.removeeventlistener('mouseup',this.onmouse,true)}layer.removeeventlistener('click',this.onclick,true);layer.removeeventlistener('touchstart',this.ontouchstart,false);layer.removeeventlistener('touchmove',this.ontouchmove,false);layer.removeeventlistener('touchend',this.ontouchend,false);layer.removeeventlistener('touchcancel',this.ontouchcancel,false)};fastclick.notneeded=function(layer){var metaviewport;var chromeversion;var blackberryversion;var firefoxversion;if(typeof window.ontouchstart==='undefined'){return true}chromeversion=+(/chrome\/([0-9]+)/.exec(navigator.useragent)||[,0])[1];if(chromeversion){if(deviceisandroid){metaviewport=document.queryselector('meta[name=viewport]');if(metaviewport){if(metaviewport.content.indexof('user-scalable=no')!==-1){return true}if(chromeversion>31&&document.documentelement.scrollwidth<=window.outerwidth){return true}}}else{return true}}if(deviceisblackberry10){blackberryversion=navigator.useragent.match(/version\/([0-9]*)\.([0-9]*)/);if(blackberryversion[1]>=10&&blackberryversion[2]>=3){metaviewport=document.queryselector('meta[name=viewport]');if(metaviewport){if(metaviewport.content.indexof('user-scalable=no')!==-1){return true}if(document.documentelement.scrollwidth<=window.outerwidth){return true}}}}if(layer.style.mstouchaction==='none'||layer.style.touchaction==='manipulation'){return true}firefoxversion=+(/firefox\/([0-9]+)/.exec(navigator.useragent)||[,0])[1];if(firefoxversion>=27){metaviewport=document.queryselector('meta[name=viewport]');if(metaviewport&&(metaviewport.content.indexof('user-scalable=no')!==-1||document.documentelement.scrollwidth<=window.outerwidth)){return true}}if(layer.style.touchaction==='none'||layer.style.touchaction==='manipulation'){return true}return false};fastclick.attach=function(layer,options){return new fastclick(layer,options)};if(typeof define==='function'&&typeof define.amd==='object'&&define.amd){define(function(){return fastclick})}else if(typeof module!=='undefined'&&module.exports){module.exports=fastclick.attach;module.exports.fastclick=fastclick}else{window.fastclick=fastclick}}());$(function() {fastclick.attach(document.body);});