(function ($) { var clickEventType = ((document.ontouchstart !== null) ? 'click' : 'touchend'); $(document).on(clickEventType, "a[href]", function (event) { var gaExtensions = [ "avi", "css", "csv", "doc", "docx", "eps", "epub", "jpg", "js", "mov", "mp3", "mpeg", "pdf", "png", "ppt", "pptx", "rar", "rtf", "kml", "json", "kmz", "mdb", "shp", "xml", "svg", "txt", "vsd", "vxd", "wma", "wmv", "xls", "xlsx", "zip" ], _re = new RegExp("\\.(?:" + gaExtensions.join("|") + ")(?:$|\\?)", "i"), $this = $(this), _href = $this.attr('href'), _lowerHref = _href.toLowerCase(), gaPrefixMailto = 'mailto', gaPrefixDownload = 'download', gaPrefixExternal = 'external', _event = false, _action = false, _label = false; if (!$this.attr('href').match(/^(?:javascript:|#?\s*)$/i) && !$(this).attr('onclick') && false === Boolean($(this).data("events"))){ /* Check for existing events on this node */ // first check is mailto: if((/^mailto:/).test(_lowerHref) ){ /* email check*/ _event = gaPrefixMailto; _action = _lowerHref.substring(7); } else if (_re.test(_href) && typeof ga !== 'undefined') { /* Downloadable file */ _event = gaPrefixDownload; _action = _re.exec(_lowerHref)[0].substring(1); _label = _lowerHref; } else if ((/^http(?:s)?:\/\//).test(_lowerHref) && _lowerHref.split("?")[0].indexOf(location.hostname.toLowerCase().replace(/www\./, "")) === -1) { /* external url*/ _event = gaPrefixExternal; _action = _href; } if (_event !== false ){ ga(function() { var trackers = ga.getAll(); for (var i = 0; i < trackers.length; i++) { tracker=trackers[i]; var sent = {'hitType': 'event','eventCategory':_event,'eventAction':_action}; if( _label !== false ) sent['eventLabel'] = _label tracker.send(sent); } }); } } }); })(jQuery);