/****************************************************************************/
/******************** HIGH LEVEL (onload type) calls *******************************/
/****************************************************************************/



// enable link rewriting for analytics
jQuery(document).ready(function() {
      setAnalyticsLinks(); 
    })


	
/****************************************************************************/
/******************** ANALYTICS functions *******************************/
/****************************************************************************/

// case insensitive substring match
function matchCiSub(haystack, needle)
{
    var value = "";
    if (haystack != undefined)
    {
    value = (haystack.toLowerCase().indexOf(needle.toLowerCase()) != -1);
    }
    return value;
}


// high level calls to linking routines
function setAnalyticsLinks()
{
    // rewrite links for linked analytics sites
    rewriteLinkedSites();
    
    // add events for page site tracking
    rewritePageSites();
    
    // add events for other external links not already handled
    rewriteAdditionalExternalLinks();

    // add events for other external links not already handled
    rewritePDFs();
}

// linked sites are things like HAC that listed in the meta
function rewriteLinkedSites()
{
    // get all linked analytics sites from meta data
    var $linkedSites = $("meta[name*='linksite_']");
	
    // loop over each and match to hrefs
    $linkedSites.each(function (i,ele)
    {
        var site = $(ele).attr('content');
        $("body a").filter(function(){return matchCiSub($(this).attr('href'), site);}).each( function (j, ele2)
        {
                // writes page tracker click event for linked sites    
               // $(ele2).attr('onclick', 'alert("linked site");'); // TEST
                //$(ele2).attr('onClick', 'pageTracker._link(this.href); return false;');
                $(ele2).bind("click", function(e){pageTracker._link(this.href); return false;});
                
        });
    });
       
}

// page sites are sites in the meta that should be shown as a page link
function rewritePageSites()
{
    // get all linked analytics sites from meta data
    var $linkedSites = $("meta[name*='pagesite_']");

    // loop over each and match to hrefs
    $linkedSites.each(function (i,ele)
    {
        var site = $(ele).attr('content');
        $("body a").filter(function(){return matchCiSub($(this).attr('href'), site);}).each( function (j, ele2)
        {
                // add page tracker
                //$(ele2).attr('onclick', 'alert("page view site");'); // TEST
                //$(ele2).attr('onClick', 'pageTracker._trackPageview("' + $(ele).attr('content') + '");');
                $(ele2).bind("click", function(e){pageTracker._trackPageview("'" + $(ele).attr('content') + "'");});
                
        });
    });
       
}


function rewritePDFs()
{
//$("body a[href='.pdf']").each( function (i, ele)
        $("body a").filter(function(){return matchCiSub($(this).attr('href'), '.pdf');}).each( function (i, ele)
        
        {
		
             
                // add page tracker to links without pageTracker already
                var onclickValue = $(ele).attr('onclick');
                if (onclickValue == undefined)
                {
                   onclickValue = '';
                }
                else 
                {   
                    // would be a  Function, not string
                    onclickValue = onclickValue.toString();
                }
                // only add if onclick doesn't already have a pageTracker
                if (!(matchCiSub(onclickValue, "pageTracker")))
                {
                  //alert($(ele).attr('href') + "|" + $(ele).attr('onclick'));
                 //$(ele).attr('onclick', 'alert("external link");'); 
                  //var event = "pageTracker._trackPageview('/fake/' + this.href);";
                  //$(ele).attr('onClick', event);
                  $(ele).bind("click", function(e){pageTracker._trackPageview('/pdfs/' + this.href);}) 
                }

                
        });

}




// rewrite other external links that aren't being tracked
function rewriteAdditionalExternalLinks()
{
        // doesn't work in local environment - would be blank so we fake it
        var localSite = window.location.host.toLowerCase();
        if (localSite == "")
        {
            localSite = "localSite.com";
        }
        
        $("body a[href^='http:']").not("[href*='" + localSite + "']").each( function (i, ele)
        {
              
                // add page tracker to links without pageTracker already
                var onclickValue = $(ele).attr('onclick');
                if (onclickValue == undefined)
                {
                   onclickValue = '';
                }
                else 
                {   
                    // would be a  Function, not string
                    onclickValue = onclickValue.toString();
                }
                // only add if onclick doesn't already have a pageTracker
                if (!(matchCiSub(onclickValue, "pageTracker")))
                {
                  //alert($(ele).attr('href') + "|" + $(ele).attr('onclick'));
                 //$(ele).attr('onclick', 'alert("external link");'); 
                  //var event = "pageTracker._trackPageview('/fake/' + this.href);";
                  //$(ele).attr('onClick', event);
                  $(ele).bind("click", function(e){pageTracker._trackPageview('/fake/' + this.href);}) 
                }

                
        });

}



