| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 | 
							- (function ($) {
 
- Drupal.googleanalytics = {};
 
- $(document).ready(function() {
 
-   // Attach mousedown, keyup, touchstart events to document only and catch
 
-   // clicks on all elements.
 
-   $(document.body).bind("mousedown keyup touchstart", function(event) {
 
-     // Catch the closest surrounding link of a clicked element.
 
-     $(event.target).closest("a,area").each(function() {
 
-       // Is the clicked URL internal?
 
-       if (Drupal.googleanalytics.isInternal(this.href)) {
 
-         // Skip 'click' tracking, if custom tracking events are bound.
 
-         if ($(this).is('.colorbox')) {
 
-           // Do nothing here. The custom event will handle all tracking.
 
-           //console.info("Click on .colorbox item has been detected.");
 
-         }
 
-         // Is download tracking activated and the file extension configured for download tracking?
 
-         else if (Drupal.settings.googleanalytics.trackDownload && Drupal.googleanalytics.isDownload(this.href)) {
 
-           // Download link clicked.
 
-           ga("send", "event", "Downloads", Drupal.googleanalytics.getDownloadExtension(this.href).toUpperCase(), Drupal.googleanalytics.getPageUrl(this.href));
 
-         }
 
-         else if (Drupal.googleanalytics.isInternalSpecial(this.href)) {
 
-           // Keep the internal URL for Google Analytics website overlay intact.
 
-           ga("send", "pageview", { "page": Drupal.googleanalytics.getPageUrl(this.href) });
 
-         }
 
-       }
 
-       else {
 
-         if (Drupal.settings.googleanalytics.trackMailto && $(this).is("a[href^='mailto:'],area[href^='mailto:']")) {
 
-           // Mailto link clicked.
 
-           ga("send", "event", "Mails", "Click", this.href.substring(7));
 
-         }
 
-         else if (Drupal.settings.googleanalytics.trackOutbound && this.href.match(/^\w+:\/\//i)) {
 
-           if (Drupal.settings.googleanalytics.trackDomainMode != 2 || (Drupal.settings.googleanalytics.trackDomainMode == 2 && !Drupal.googleanalytics.isCrossDomain(this.hostname, Drupal.settings.googleanalytics.trackCrossDomains))) {
 
-             // External link clicked / No top-level cross domain clicked.
 
-             ga("send", "event", "Outbound links", "Click", this.href);
 
-           }
 
-         }
 
-       }
 
-     });
 
-   });
 
-   // Track hash changes as unique pageviews, if this option has been enabled.
 
-   if (Drupal.settings.googleanalytics.trackUrlFragments) {
 
-     window.onhashchange = function() {
 
-       ga('send', 'pageview', location.pathname + location.search + location.hash);
 
-     }
 
-   }
 
-   // Colorbox: This event triggers when the transition has completed and the
 
-   // newly loaded content has been revealed.
 
-   $(document).bind("cbox_complete", function () {
 
-     var href = $.colorbox.element().attr("href");
 
-     if (href) {
 
-       ga("send", "pageview", { "page": Drupal.googleanalytics.getPageUrl(href) });
 
-     }
 
-   });
 
- });
 
- /**
 
-  * Check whether the hostname is part of the cross domains or not.
 
-  *
 
-  * @param string hostname
 
-  *   The hostname of the clicked URL.
 
-  * @param array crossDomains
 
-  *   All cross domain hostnames as JS array.
 
-  *
 
-  * @return boolean
 
-  */
 
- Drupal.googleanalytics.isCrossDomain = function (hostname, crossDomains) {
 
-   /**
 
-    * jQuery < 1.6.3 bug: $.inArray crushes IE6 and Chrome if second argument is
 
-    * `null` or `undefined`, http://bugs.jquery.com/ticket/10076,
 
-    * https://github.com/jquery/jquery/commit/a839af034db2bd934e4d4fa6758a3fed8de74174
 
-    *
 
-    * @todo: Remove/Refactor in D8
 
-    */
 
-   if (!crossDomains) {
 
-     return false;
 
-   }
 
-   else {
 
-     return $.inArray(hostname, crossDomains) > -1 ? true : false;
 
-   }
 
- };
 
- /**
 
-  * Check whether this is a download URL or not.
 
-  *
 
-  * @param string url
 
-  *   The web url to check.
 
-  *
 
-  * @return boolean
 
-  */
 
- Drupal.googleanalytics.isDownload = function (url) {
 
-   var isDownload = new RegExp("\\.(" + Drupal.settings.googleanalytics.trackDownloadExtensions + ")([\?#].*)?$", "i");
 
-   return isDownload.test(url);
 
- };
 
- /**
 
-  * Check whether this is an absolute internal URL or not.
 
-  *
 
-  * @param string url
 
-  *   The web url to check.
 
-  *
 
-  * @return boolean
 
-  */
 
- Drupal.googleanalytics.isInternal = function (url) {
 
-   var isInternal = new RegExp("^(https?):\/\/" + window.location.host, "i");
 
-   return isInternal.test(url);
 
- };
 
- /**
 
-  * Check whether this is a special URL or not.
 
-  *
 
-  * URL types:
 
-  *  - gotwo.module /go/* links.
 
-  *
 
-  * @param string url
 
-  *   The web url to check.
 
-  *
 
-  * @return boolean
 
-  */
 
- Drupal.googleanalytics.isInternalSpecial = function (url) {
 
-   var isInternalSpecial = new RegExp("(\/go\/.*)$", "i");
 
-   return isInternalSpecial.test(url);
 
- };
 
- /**
 
-  * Extract the relative internal URL from an absolute internal URL.
 
-  *
 
-  * Examples:
 
-  * - http://mydomain.com/node/1 -> /node/1
 
-  * - http://example.com/foo/bar -> http://example.com/foo/bar
 
-  *
 
-  * @param string url
 
-  *   The web url to check.
 
-  *
 
-  * @return string
 
-  *   Internal website URL
 
-  */
 
- Drupal.googleanalytics.getPageUrl = function (url) {
 
-   var extractInternalUrl = new RegExp("^(https?):\/\/" + window.location.host, "i");
 
-   return url.replace(extractInternalUrl, '');
 
- };
 
- /**
 
-  * Extract the download file extension from the URL.
 
-  *
 
-  * @param string url
 
-  *   The web url to check.
 
-  *
 
-  * @return string
 
-  *   The file extension of the passed url. e.g. "zip", "txt"
 
-  */
 
- Drupal.googleanalytics.getDownloadExtension = function (url) {
 
-   var extractDownloadextension = new RegExp("\\.(" + Drupal.settings.googleanalytics.trackDownloadExtensions + ")([\?#].*)?$", "i");
 
-   var extension = extractDownloadextension.exec(url);
 
-   return (extension === null) ? '' : extension[1];
 
- };
 
- })(jQuery);
 
 
  |