/**********************************************************************************
  This file is designed to extend and customize GA implementation
      
  Created by: ROILabs, all rights reserved. Do not use without permission.
  Contact information: www.roilabs.com
  Lasted updated: 2011.06.23 by JD

  Separate implementation for sapstreamwork.com and ondemand.com 
	to use generic jQuery namespace
***********************************************************************************/

/**********************************************************************************/
/*********** CONFIG STUFF HERE ****************************************************/

/** Auto Link Tracker config variables **/
var downloadLinkTypes = "doc,eps,jpg,png,svg,xls,ppt,pdf,xls,zip,txt,vsd,vxd,js,css,rar,exe,wma,mov,avi,wmv,mp3";
var exitLinkCat = "Exit Links";
var downloadLinkCat = "Downloads";
var emailLinkCat = "Mailto Links";
var estaraLinkCat = "Estara Links";
var internalDomainList = 'cobra.dhcp.pdgev.sap.corp,staging.pontoon.ondemand.com,staging.streamwork.com,sapstreamwork.com,www.sapstreamwork.com,streamwork.com,www.streamwork.com,bi.ondemand.com,ondemand.com,www.ondemand.com';
var GAcurrentURL = null;
/*********** END CONFIG STUFF *****************************************************/
/**********************************************************************************/

/**********************************************************************************/
/***** PLACE "EVERY PAGE" CODE HERE ***********************************************/
function ROILabs_autoTracker (){ $(document).ready(function (){

  $('a').each(function() { 
	  ROILabs_internalDomainTracker($(this));
	}).click(function(){ 
	  ROILabs_autoLinkTracker($(this));
	});
	 
  // set campaign parameters
	ROIL_setCampaignParams()

});} // end ROILabs_autoTracker
/***** END "EVERY PAGE" CODE ******************************************************/
/**********************************************************************************/

/**********************************************************************************/
/***** CUSTOM WRAPPER FUNCTIONS ***************************************************/





/***** END CUSTOM WRAPPER FUNCTIONS ***********************************************/
/**********************************************************************************/

/**********************************************************************************/
/***** DO NOT TOUCH ANYTHING BELOW THIS LINE! *************************************/

// function for auto tracking exit, download and email links
function ROILabs_autoLinkTracker(that) {
  if(typeof $(that).attr('href') == 'undefined') return false;
  // filter out javascript calls, except for estara...
  if ($(that).attr('href').toLowerCase().match(/^javascript:/i)) {
	if($(that).attr('href').toLowerCase().match(/web(Voice|Chat)Pop/i))
		ROILabs_estaraTracker($(that));
	return true;
  }

  
  /* exit link tracking */
  var ROILabs_hostname = unescape(($(that).attr('hostname')).toLowerCase());
  if ((ROILabs_hostname != '') && (ROILabs_hostname != location.hostname.toLowerCase())) {
    ROILabs_exitLinkTracker($(that));
    return true;
  } // end if

  /* download link tracking */
  if (typeof(downloadLinkTypes) != 'undefined') {
    var ROILabs_downloadLinkTypes = downloadLinkTypes.toLowerCase().split(',');
    var ROILabs_pathname = ($(that).attr('pathname')) ? unescape($(that).attr('pathname').toLowerCase()) : '';
    var ROILabs_ext = (/[.]/.exec(ROILabs_pathname)) ? /[^.]+$/.exec(ROILabs_pathname) : '';
    for (var ROILabs_key in ROILabs_downloadLinkTypes) {
      if (ROILabs_downloadLinkTypes[ROILabs_key] == ROILabs_ext) {
        ROILabs_downloadLinkTracker($(that));
        return true;
      } // end if
    } // end for
  } // end if 

  /* email link tracking */
  var ROILabs_href = unescape($(that).attr('href').toLowerCase());
  if (ROILabs_href.match(/^mailto:/)) {
    ROILabs_emailLinkTracker($(that));
    return true;
  }	// end if
} // end ROILabs_autoLinkTracker

// wrapper function for manual estara link tracking
function ROILabs_estaraTracker(that,uValue) {
  var ROILabs_href = ($(that).attr('href'))? $(that).attr('href').match(/web(Voice|Chat)Pop/i) : '';
  ROILabs_href = ((typeof(uValue) != 'undefined') ? unescape(uValue) : (ROILabs_href[1])?ROILabs_href[1]:ROILabs_href).toLowerCase();
  var ROILabs_estaraLinkCat = (typeof(estaraLinkCat != 'undefined')) ? estaraLinkCat : 'Estara Links';
  if (typeof(pageTracker) == 'object') pageTracker._trackEvent(ROILabs_estaraLinkCat, 'click', ROILabs_href);
  else if (typeof(_gaq) == 'object') _gaq.push(['_trackEvent', ROILabs_estaraLinkCat, 'click', ROILabs_href]);
  return true;
} // end ROILabs_exitLinkTracker 

function ROILabs_internalDomainTracker(that) {
  if (typeof(internalDomainList) != 'undefined') {
    var ROILabs_internalDomainList = internalDomainList.toLowerCase().split(',');
  } else {
    return true;
  }
  var ROILabs_linkHostname = unescape(($(that).attr('hostname')).toLowerCase());

  if ( (ROILabs_linkHostname != location.hostname.toLowerCase()) && ($.inArray(ROILabs_linkHostname,ROILabs_internalDomainList) > -1) ) { 
    $(that).click(function() {
      _gaq.push(["_link",$(that).attr('href')]); return false;
    });
  }
  return true;
} // end ROILabs_internalDomainTracker

// wrapper function for manual exit link tracking
function ROILabs_exitLinkTracker(that,uValue) {
  var ROILabs_href = ($(that).attr('href'))? unescape($(that).attr('href').replace(/^https?:\/\//i,'')) : '';
  ROILabs_href = ((typeof(uValue) != 'undefined') ? unescape(uValue) : ROILabs_href).toLowerCase();
  var ROILabs_exitLinkCat = (typeof(exitLinkCat != 'undefined')) ? exitLinkCat : 'Exit Links';
  if (typeof(pageTracker) == 'object') pageTracker._trackEvent(ROILabs_exitLinkCat, 'click', ROILabs_href);
  else if (typeof(_gaq) == 'object') _gaq.push(['_trackEvent', ROILabs_exitLinkCat, 'click', ROILabs_href]);
  return true;
} // end ROILabs_exitLinkTracker 

// wrapper function for manual download link tracking
function ROILabs_downloadLinkTracker(that,uValue) {
  var ROILabs_pathname = ($(that).attr('pathname'))? unescape($(that).attr('pathname')) : '';
  ROILabs_pathname = ((typeof(uValue) != 'undefined') ? unescape(uValue) : ROILabs_pathname).toLowerCase();
  var ROILabs_downloadLinkCat = (typeof(downloadLinkCat != 'undefined')) ? downloadLinkCat : 'Downloads';
  if (typeof(pageTracker) == 'object') pageTracker._trackEvent(ROILabs_downloadLinkCat, ROILabs_pathname.split('.').pop(), ROILabs_pathname);
  else if (typeof(_gaq) == 'object') _gaq.push(['_trackEvent', ROILabs_downloadLinkCat, ROILabs_pathname.split('.').pop(), ROILabs_pathname]);
  return true;
} // end ROILabs_downloadLinkTracker 

// wrapper function for manual email link tracking
function ROILabs_emailLinkTracker(that,uValue) {
  var ROILabs_href = ($(that).attr('href')) ? unescape($(that).attr('href').toLowerCase()) : '';
  var ROILabs_email = ROILabs_href.replace(/^mailto:\s*/,'');
  ROILabs_email = ((typeof(uValue) != 'undefined') ? unescape(uValue) : ROILabs_email).toLowerCase();
  var ROILabs_emailLinkCat = (typeof(emailLinkCat != 'undefined')) ? emailLinkCat : 'Mailto Links';
  if (typeof(pageTracker) == 'object') pageTracker._trackEvent(ROILabs_emailLinkCat, 'click', ROILabs_email);
  else if (typeof(_gaq) == 'object') _gaq.push(['_trackEvent', ROILabs_emailLinkCat, 'click', ROILabs_email]);
  return true;
} // end ROILabs_emailLinkTracker


// Set the campaign name if it exists
function ROIL_setCampaignParams() {
  if (typeof(pageTracker) == 'object') {
    pageTracker._setCampNameKey('campaigncode');
    pageTracker._setCampSourceKey('source');
	} else if (typeof(_gaq) == 'object') {
    _gaq.push(['_setCampNameKey', 'campaigncode']);
    _gaq.push(['_setCampSourceKey', 'source']);
  }
  return true;
}


// Get URL Parameter
function ROILabs_getParam(n){var x=new RegExp("[\\?&]"+n.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]")+"=([^&#]*)");var r=x.exec(window.location.href);return(r==null)?'':r[1]}

// Add URL Parameter
// default is to append to end of query string, set 3rd param true to put at beginning of query string
function ROILabs_addParam (url,param,order) {
  if ((typeof(url)=='undefined')||(url.length<1)) return '';
  if ((typeof(param)=='undefined')||(param.length<1)) return url;
  if (typeof(order) != 'undefined') {
    if (url.indexOf('?')>-1) {
		  urlParts = url.split('?');
		  url = urlParts[0] + '?' + param + '&' + urlParts[1];
		} else {
		  url = url + '?' + param;
		}
	} else {
    url = url + ((url.indexOf('?')>-1) ? '&' : '?') + param;
  }
	return url;
}

ROILabs_autoTracker();
ROIL_setCampaignParams();
/*** EOF ***/
