// This javascript tags 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
//
// Support for immediacy idoc tags added by Connect Internet Solutions

if (document.getElementsByTagName) 
{
    // Initialize external link handlers
    var hrefs = document.getElementsByTagName("a") ;
    for (var l = 0; l < hrefs.length; l++) 
    {
        //protocol, host, hostname, port, pathname, search, hash, name
        if (hrefs[l].name.length==0)
        {    
            if (hrefs[l].protocol == "mailto:") 
            {
               startListening(hrefs[l],"click",trackMailto);
            }
            else if (hrefs[l].hostname == location.host) // This line failing on Firefox 2 specificly hrefs[l].hostname
            {
                var path = hrefs[l].pathname + hrefs[l].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)($|\&)/);
                var isIdoc = path.match(/(?:idoc\.ashx)/);
                if (isDoc || isIdoc) 
                {
                    if (BrowserDetect.browser == 'Safari')
                    {
                      startListening(hrefs[l] ,"mousedown",trackExternalLinks);
                    }
                    else
                    {
                      startListening(hrefs[l] ,"click",trackExternalLinks);
                    }
                }
            }
            else 
            {
                if (BrowserDetect.browser == 'Safari')
                {
                  startListening(hrefs[l] ,"mousedown",trackExternalLinks);
                }
                else
                {
                  startListening(hrefs[l] ,"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 trackMailto(evnt) 
{
    var href = (evnt.srcElement) ? evnt.srcElement.href : this.href;
    var mailto = href.substring(7);

    if (typeof (pageTracker) == "object")
    {
        var page_title = document.getElementsByTagName("h1")[0].firstChild.nodeValue;
        mailto = mailto.replace(new RegExp("\\n", "g"), " ");
        mailto = mailto.replace(new RegExp("%20", "g"), "_");
        pageTracker._trackEvent("Email", page_title, mailto);
    }
}

function trackExternalLinks(evnt) 
{
    var e = (evnt.srcElement) ? evnt.srcElement : this;
    while (e.tagName != "A") 
    {
        e = e.parentNode;
    }

    var category="Download";
    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 = e.hostname + lnk;
     category="External";
    }

    var isIdoc = e.pathname.match(/(?:idoc\.ashx)/);
    if (isIdoc)
    {   
        var hasInnerText =(e.innerText!= undefined) ? true : false;

        if(!hasInnerText)
        {
            lnk=e.textContent;
        } 
        else
        {
            lnk=e.innerText;
        }
        
        lnk = lnk.replace( new RegExp( "\\n", "g" )," ");
        lnk = lnk.replace(new RegExp(" ", "g"), "_");
    }
    
    if (typeof (pageTracker) == "object")
    { 
        var page_title = document.getElementsByTagName("h1")[0].firstChild.nodeValue;
        pageTracker._trackEvent(category, page_title, lnk);
    }  
} 

