var _atr = 'atr';
var _filetypes = /\.(zip|exe|pdf|doc|xls|ppt|mp(3|4)|eps|docx|rar|csv|gz|dmg|xml|ashx)$/i;

function extend_tracking() {
    var a = document.getElementsByTagName("a");

    for (var i = 0; i < a.length; i++) {
        var href = a[i].getAttribute("href");
        var onclick = a[i].getAttribute("onclick");
        var target = a[i].getAttribute("target");
        var prev_js = ((onclick != null) ? onclick + "; " : "");
        var page = location.pathname;

        if (href) {
            if ((href.match(/^#?https?\:/i)) && (!href.match(document.domain))) {
                var ext_link = href.replace(/^https?\:\/\//i, '').replace(/^#/, '');
                a[i].setAttribute("onclick", prev_js + "_gaq.push(['" + _atr + "._trackEvent', 'External links', 'Click', '" + ext_link + "'])");
            } else if (href.match(/^mailto\:/i)) {
                var mail_link = href.replace(/^mailto\:/i, '');
                a[i].setAttribute("onclick", prev_js + "_gaq.push(['" + _atr + "._trackEvent','Email', 'Click', '" + mail_link + "'])");
            } else if (href.match(_filetypes)) {
                var extension = (/[.]/.exec(href)) ? /[^.]+$/.exec(href) : undefined;
                a[i].setAttribute("onclick", prev_js + "_gaq.push(['" + _atr + "._trackEvent', 'Download', '" + extension + "', '" + href + "'])");
            }
        }

        if (onclick) {
            if ((/window\.print/i).exec(onclick) != null) {
                a[i].setAttribute("onclick", prev_js + "_gaq.push(['" + _atr + "._trackEvent', 'Print', 'Click', '" + page + "'])");
            } else if ((/TipAFriend/i).exec(onclick) != null) {
                a[i].setAttribute("onclick", prev_js + "_gaq.push(['" + _atr + "._trackEvent', 'Tip a friend', 'Click', '" + page + "'])");
            } else if ((/addthis_sendto/i).exec(onclick) != null) {
                a[i].setAttribute("onclick", prev_js + "_gaq.push(['" + _atr + "._trackEvent', 'Share', 'Click', '" + page + "'])");
            } else if ((/validate\(\)/i).exec(onclick) != null) {
                if (page && page.match(/Newsletter/i)) {
                    a[i].setAttribute("onclick", prev_js + "_gaq.push(['" + _atr + "._trackEvent', 'Newsletter', 'Subscribe', '" + page + "'])");
                }
            }
        }
    }
}

function add_load_event(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function () {
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
}

add_load_event(function () {
    extend_tracking();
});


