// $Id: googleanalytics.js,v 1.9.2.8 2011/02/05 19:53:32 hass Exp $

//define for all browsers
function gotoUrl(url) {
  setTimeout('document.location = "' + url + '"', 100);
}

//re-define for IE
function gotoUrlIE(url) {
  var referLink = document.createElement('a');
  referLink.href = url;
  document.body.appendChild(referLink);
  // setTimeout(function() { referLink.click(); }, 100);
  referLink.click();
}

$(document).ready(function() {
	
  // Attach onclick event to document only and catch clicks on all elements.
  $(document.body).click(function(event) {
    // Catch only the first parent link of a clicked element.
    $(event.target).parents("a:first,area:first").andSelf().filter("a,area").each(function() {

      var ga = Drupal.settings.googleanalytics;
      // Expression to check for absolute internal links.
      var isInternal = new RegExp("^(https?):\/\/" + window.location.host, "i");
      // Expression to check for special links like gotwo.module /go/* links.
      var isInternalSpecial = new RegExp("(\/go\/.*)$", "i");
      // Expression to check for download links.
      var isDownload = new RegExp("\\.(" + ga.trackDownloadExtensions + ")$", "i");

      // Is the clicked URL internal?
      if (isInternal.test(this.href)) {
        // Is download tracking activated and the file extension configured for download tracking?
        if (ga.trackDownload && isDownload.test(this.href)) {
          // Download link clicked.
          var extension = isDownload.exec(this.href);
          _gaq.push(["_trackEvent", "Downloads", extension[1].toUpperCase(), this.href.replace(isInternal, '')]);
        }
        else if (isInternalSpecial.test(this.href)) {
          // Keep the internal URL for Google Analytics website overlay intact.
          _gaq.push(["_trackPageview", this.href.replace(isInternal, '')]);
          setTimeout('document.location = "' + this.href + '"', 100);
        }
      }
      else {
        if (ga.trackMailto && $(this).is("a[href^=mailto:],area[href^=mailto:]")) {
          // Mailto link clicked.
          _gaq.push(["_trackEvent", "Mails", "Click", this.href.substring(7)]);
        }
        else if (ga.trackOutgoing && this.href) {
          
          //use browser sniffing to determine if IE or Opera (ugly, but required)
          // var isOpera, isIE = false;
          var hasBoxModel = $.support.boxModel;
          // if (typeof(window.opera) != 'undefined') { 
          //   isOpera = true; 
          // }
          // if (!isOpera && navigator.userAgent.indexOf('Internet Explorer')) { 
          //  isIE = true; 
          //}
          
          if (ga.trackOutboundAsPageview) {
            // Track all external links as page views after URL cleanup.
            // Currently required, if click should be tracked as goal.
            _gaq.push(["_trackPageview", '/outbound/' + this.href.replace(/^(https?|ftp|news|nntp|telnet|irc|ssh|sftp|webcal):\/\//i, '').split('/').join('--')]);
            if(hasBoxModel) {
              gotoUrl(this.href);
            }
            else {
              gotoUrlIE(this.href);
            }
          }
          else {
            // External link clicked.
            _gaq.push(["_trackEvent", "Outbound links", "Click", this.href]);
  
            // First, delay the outbound click by a fraction of a second.
            // This delay will hardly be noticeable by the user, but it will provide the
            // browser more time load the tracking code. Without this method, it's possible
            // that a user can click on the outbound link before the tracking code loads,
            // in which case the event will not be recorded.
            // See http://www.google.com/support/analytics/bin/answer.py?hl=en&answer=55527
            if(hasBoxModel) {
              gotoUrl(this.href);
            }
            else {
              gotoUrlIE(this.href);
            }
          }
        }
      }
    });
  });
});

