$(function () {
    $('a').each(function (index) {
        if (this.hostname == location.host) {
            var path = this.pathname + this.search;
            var isDoc = path.match(/\.(?:doc|eps|jpg|png|svg|xls|ppt|pdf|xls|zip|txt|vsd|vxd|js|css|rar|exe|wma|mov|avi|wmv|mp3)($|\&|\?)/);
            if (isDoc) {
                startListening(this, "click", trackExternalLinks);
            }
        }
        else if (!this.href.match(/^javascript:/)) {
            startListening(this, "click", trackExternalLinks);
        }
    });

    function startListening(obj, evnt, func) {
        if (obj.addEventListener) {
            obj.addEventListener(evnt, func, false);
        }
        else if (obj.attachEvent) {
            obj.attachEvent("on" + evnt, func);
        }
    }

    function trackExternalLinks(evnt) {
        var e = (evnt.srcElement) ? evnt.srcElement : this;
        while (e.tagName.toLowerCase() !== "a") {
            e = e.parentNode;
        }
        var lnk = (e.pathname.charAt(0) == "/") ? e.pathname : "/" + e.pathname;
        if (e.search && e.pathname.indexOf(e.search) == -1) lnk += e.search;
        if (e.hostname != location.host) lnk = "/external/" + e.hostname + lnk;
        if (_gaq) _gaq.push(['_trackPageview', lnk]);
    }
});
