//  This javascript tags mailto's, file downloads and external links in Google Analytics.
//  You need to be using the Google Analytics New Tracking Code (ga.js)
//  for this script to work.
//  To use, place this file on all pages just above the Google Analytics tracking code.
//  All outbound links and links to non-html files should now be automatically tracked.
//
//  This script has been provided by Goodwebpractices.com
//  Thanks to ShoreTel, MerryMan and Colm McBarron
//
//  www.goodwebpractices.com
//  VKI has made changes as indicated below.


if (document.getElementsByTagName) {
    // Initialize external link handlers
    var hrefs = document.getElementsByTagName("a");
    for (var elem = 0; elem < hrefs.length; elem++) {
        // try-catch block added by erikvold VKI
        try {
            // Check the protocol and pathname to ensure the <a> element is actually a link
            if (hrefs[elem].protocol && hrefs[elem].protocol == "mailto:") {
                startListening(hrefs[elem],"click",trackMailtoLink);
            } else if (hrefs[elem].pathname && hrefs[elem].pathname != "") {
                if (hrefs[elem].hostname == location.host) {
                    var isDoc = hrefs[elem].pathname.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(hrefs[elem],"click",trackDocumentLink);
                    }
                } else {
                    startListening(hrefs[elem],"click",trackExternalLink);
                }
            }
        }
        catch (e) {
            continue;
        }
    }
}


function startListening (obj,evnt,func) {
    if (obj.addEventListener) {
        obj.addEventListener(evnt,func,false);
    } else if (obj.attachEvent) {
        obj.attachEvent("on" + evnt,func);
    }
}


function trackMailtoLink (evnt) {
    var elem = (evnt.srcElement) ? evnt.srcElement : this;
    var href = elem.href;
    var trackLink = "/EMAIL..." + href.substring(7);  // 7 = length of "mailto:"
    if (typeof(pageTracker) == "object") {
        pageTracker._setDetectTitle(false);  // don't track the page title for this link
        pageTracker._trackPageview(unescape(trackLink));
    }
}


function trackExternalLink (evnt) {
    var elem = (evnt.srcElement) ? evnt.srcElement : this;
    var href = elem.href;
    var trackLink = "/LINK..." + href;
    if (typeof(pageTracker) == "object") {
        pageTracker._setDetectTitle(false);  // don't track the page title for this link
        pageTracker._trackPageview(unescape(trackLink));
    }
}


function trackDocumentLink (evnt) {
    var elem = (evnt.srcElement) ? evnt.srcElement : this;
    var fullPath = elem.pathname + elem.hash + elem.search;
    var trackLink = (fullPath.charAt(0) == "/") ? fullPath : "/" + fullPath;
    if (typeof(pageTracker) == "object") {
        pageTracker._setDetectTitle(false);  // don't track the page title for this link
        pageTracker._trackPageview(unescape(trackLink));
    }
}
