// Google Analytics event listener code
var filetypes = "pdf,doc,docx,xls,xlsx,ppt,pptx";

function gaBindEvent(event,func){
    if ((typeof(func)=="function")&&document.body){
        if (document.body.addEventListener){
            document.body.addEventListener(event, func, true);
        }
        else if(document.body.attachEvent){
            document.body.attachEvent("on"+event, func);
        }
    }
}

function gaSplitList(list){
    var items=list.toLowerCase().split(",");
    var len=items.length;
    for (var i=0;i<len;i++){
        items[i]=items[i].replace(/^\s*/,"").replace(/\s*$/,"");
    }
    return items;
}

function gaIsDownload(pth){
    var type=pth.substring(pth.lastIndexOf(".")+1,pth.length),
        types=gaSplitList(filetypes),
        tlen=types.length;
    for (var i=0;i<tlen;i++){
        if (type===types[i]){
            return true;
        }
    }
    return false;
}

function gaIsOnsite(linkHref){
    if(linkHref.indexOf(document.domain) > -1){
        return true;
    }
    
    return false;
}

function gaInitializeEvents(){
    var e=(navigator.appVersion.indexOf("MSIE")!=-1)?"click":"mousedown";
    gaBindEvent(e,gaActivityTracking);
}

function gaClimbDOM(evt,tag){
    var e=evt.target||evt.srcElement;
    while (e.tagName&&(e.tagName.toLowerCase()!=tag.toLowerCase())){
        e=e.parentElement||e.parentNode;
    }
    return e;
}

function gaActivityTracking(evt){
    evt=evt||(window.event||"");
	if (evt&&((typeof(evt.which)!="number")||(evt.which==1))&&typeof(_gaq)!="undefined"){
        var e=gaClimbDOM(evt,"A");
        if( e.href ){
            var href = e.href,
                protIndex = href.indexOf('://'),
                afterProt = (protIndex > -1) ? href.substring(protIndex+3) : href;
            if ( typeof href !== "undefined" ){
                if( gaIsDownload(href) ){
                    var dlURI = afterProt.substring(afterProt.indexOf('/'));
                    _gaq.push(['rollup._trackEvent','Downloads',dlURI,document.URL]);
                }
                if( !gaIsOnsite(href) ){
                    _gaq.push(['rollup._trackEvent','Offsite Links',href,document.URL]);
                }
            }
        }
        var input = gaClimbDOM(evt,"INPUT");
        if( input.id && input.id === "ctl00_ContentPlaceHolder1_SearchButton" ){
            var race = document.location.pathname.match(/\/([^\/]*)\.aspx/i)[1],
                searchTypeElement = document.getElementById("ctl00_ContentPlaceHolder1_SearchTypeDropDownList"),
                searchType = (searchTypeElement !== null) ? searchTypeElement.value : "Not Parsed";
                
            _gaq.push(['rollup._trackEvent','Ticket Search',race,searchType]);
        }
    }
}

function gaParseQueryParameter(queryParam){
    var queryStringMatch = document.location.search.match(new RegExp(queryParam+"=([^&#]*)","i"));
    if( queryStringMatch !== null ){
        return queryStringMatch[1];
    }
    return null;
};

function gaTrackOSS(){
    var action = gaParseQueryParameter("action"),
        catalogMode = gaParseQueryParameter("catalogmode"),
        search = "",
        query = "",
        results = "Found";
    
    if( action === "main.searchresults" ){
        search = "IMS Onsite Search";
        query = gaParseQueryParameter("q");
        var iframe = document.getElementsByTagName("iframe")[0],
            heightPx = iframe.attributes[1].nodeValue,
            height = parseInt(heightPx.substring(0,heightPx.length-2));
        if( height < 400 ){
            results = "Not Found";
        }
    } else if( catalogMode === "search" ){
        search = "Gift Shop Search";
        query = gaParseQueryParameter("searchcriteria");
        if( document.getElementById("ctl00_ContentPlaceHolder1_NoResultsRow") !== null ){
            results = "Not Found";
        }
    }
    
    if( search !== "" ){
        _gaq.push(['rollup._trackEvent',search,results,query]);
    }
}

function gaCrossDomainTagging(){
   var links = document.links;
   if (links!==null){
      var numLinks = links.length, i, currentLink;
      for( i=0; i<numLinks; i++ ){
         currentLink = links[i];
         if ( (currentLink.href.indexOf("secure.brickyard.com") > -1 && 
               document.domain.match(/indianapolismotorspeedway\.com/) !== null) || 
              (currentLink.href.indexOf("indianapolismotorspeedway.com") > -1 && 
               document.domain.match(/secure\.brickyard\.com/) !== null) ){
            currentLink.href = _gat._getTrackerByName()._getLinkerUrl(currentLink.href);
         }
      }
   }
}

gaInitializeEvents();
setTimeout(gaTrackOSS,1000);
gaCrossDomainTagging();
