// 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
// VKI has made changes as indicated below.                       

if (document.getElementById){
   var carouselItemsUL = document.getElementById('carouselItems');
   
   if (carouselItemsUL != null)
   {
      var carouselItems = carouselItemsUL.children;

      for (var c=0; c<carouselItems.length; c++)
      {
         if (carouselItems[c].nodeType == 1)
         {
            var hrefs = carouselItems[c].getElementsByTagName("a");
            for (var l=0; l<hrefs.length; l++) {
               startListening(hrefs[l],"click",trackCarousel(c+1, 'HomeCarousel'));
            }
         }
      }
   }
   
   var carouselFBItemsUL = document.getElementById('carouselFBItems');
   
   if (carouselFBItemsUL != null)
   {
      var carouselFBItems = carouselFBItemsUL.children;

      for (var fb=0; c<carouselFBItems.length; fb++)
      {
         if (carouselFBItems[fb].nodeType == 1)
         {
            var hrefs = carouselFBItems[fb].getElementsByTagName("a");
            for (var l=0; l<hrefs.length; l++) {
               startListening(hrefs[l],"click",trackCarousel(fb+1, 'FacebookCarousel'));
            }
         }
      }
   }
   
   var billboardLinksDIV = document.getElementById('billBoard-links');
   
   if (billboardLinksDIV != null)
   {
      var bbLinks = billboardLinksDIV.firstChild.children;

      for (var b=0; b<bbLinks.length; b++)
      {
         if (bbLinks[b].nodeType == 1)
         {
            var hrefs = bbLinks[b].getElementsByTagName("a");
            for (var l=0; l<hrefs.length; l++) {
               startListening(hrefs[l],"click",trackBillboard(b+1));
            }
         }
      }
   }
}

function trackCarousel(num, cat)
{
   return function(evnt)
   {
      var e = (evnt.srcElement) ? evnt.srcElement : this;
      while (e.tagName != "A") {
             e = e.parentNode;
      }
      var lnk = e.pathname;
      if (e.search && e.pathname.indexOf(e.search) == -1) lnk += e.search;

      if (typeof(_gaq) == "object") {
             _gaq.push(['_trackEvent', cat, 'Item'+num, lnk]);
             _gaq.push(['_trackPageview', lnk]);
      }
   }
}

function trackBillboard(num)
{
   return function(evnt)
   {
      var e = (evnt.srcElement) ? evnt.srcElement : this;
      while (e.tagName != "A") {
             e = e.parentNode;
      }
      var lnk = e.pathname;
      if (e.search && e.pathname.indexOf(e.search) == -1) lnk += e.search;

      if (typeof(_gaq) == "object") {
         var billboardCategory = '';

         if (location.pathname == "/") { billboardCategory = 'HomeBillboard'; }
         else if (location.pathname == "/MilitaryCenter/") { billboardCategory = 'MilitaryBillboard'; }
         else if (location.pathname == "/FraudCenter/") { billboardCategory = 'FraudBillboard'; }

         _gaq.push(['_trackEvent', billboardCategory, 'Item'+num, lnk]);
         _gaq.push(['_trackPageview', lnk]);
      }
   }
}

if (document.getElementsByTagName) {
        // Initialize external link handlers
        var hrefs = document.getElementsByTagName("a");
        for (var l = 0; l < hrefs.length; l++) {
            // try {} catch{} block added by erikvold VKI
         try{
               // prevent carouselItems and billboard links from getting tagged twice
               var parentClass = hrefs[l].parentNode.getAttribute('class');
               var bbLinksID = hrefs[l].parentNode.parentNode.parentNode.getAttribute('id');

               if ((parentClass == null || parentClass.indexOf('carousel-item') == -1) && (bbLinksID == null || bbLinksID.indexOf('billBoard-links') == -1))
               {
                   //protocol, host, hostname, port, pathname, search, hash
                   if (hrefs[l].protocol == "mailto:") {
                           startListening(hrefs[l],"click",trackMailto);
                   } else if (hrefs[l].hostname == location.host) {
                           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)($|\&|\?)/);
                           if (isDoc) {
                                   startListening(hrefs[l],"click",trackExternalLinks);
                           }
                   } else {
                           startListening(hrefs[l],"click",trackExternalLinks);
                   }
               }
         }
         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 trackMailto (evnt) {
        var href = (evnt.srcElement) ? evnt.srcElement.href : this.href;
        var mailto = "/mailto/" + href.substring(7);
        if (typeof(_gaq) == "object") {
                _gaq.push(['_trackPageview', mailto]);
        }
}

function trackExternalLinks (evnt) {
        var e = (evnt.srcElement) ? evnt.srcElement : this;
        while (e.tagName != "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 (typeof(_gaq) == "object") {
                _gaq.push(['_trackPageview', lnk]);
        }
}
