

/**********************************************************************************
  This file is designed to extend and customize GA implementation
      
  This currently only supports the traditional and new ga.js tracking
  which uses the pageTracker object or the asynchronous code--not urchin.js
      
  Created by: ROILabs, all rights reserved. Do not use without permission.
  For Use by: Dream Careers
  Contact information: www.roilabs.com
  Lasted updated: 2011.12.15 - ROIL:PCL
***********************************************************************************/

/**********************************************************************************/
/*********** CONFIG STUFF HERE ****************************************************/

/** Auto Link Tracker config variables **/
var downloadLinkTypes = 'doc,docx,xls,xlsx,ppt,pptx,pdf,zip,txt,rar,exe,wma,mov,avi,wmv,mp3';
var exitLinkCat = 'Exit Links';
var downloadLinkCat = 'Downloads';
var emailLinkCat = 'Mailto Links';
var internalDomainList = '.summerinternships.com,.barcelonainternships.com,.chicagointernships.com,.costarica-internships.com,.hongkonginternships.com,.londoninternships.com,.losangelesinternships.com,.nycinternships.com,.sanfranciscointernships.com,.sydneyinternships.com,.washingtondcinternships.com,.netsuite.com';
var GAcurrentURL = window.location.host;
/*********** END CONFIG STUFF *****************************************************/
/**********************************************************************************/

/**********************************************************************************/
/***** PLACE "EVERY PAGE" CODE HERE ***********************************************/
function ROILabs_autoTracker (){ $(document).ready(function (){

  $('a').click(function(event){
      ROILabs_autoLinkTracker($(this), event);
    });

});} // end ROILabs_autoTracker
/***** END "EVERY PAGE" CODE ******************************************************/
/**********************************************************************************/
/**********************************************************************************/
/***** DO NOT TOUCH ANYTHING BELOW THIS LINE! *************************************/

// function for auto tracking exit, download and email links
function ROILabs_autoLinkTracker(that, event) {

  // filter out javascript calls
  if (typeof $(that).attr('href') == 'undefined' || $(that).attr('href').toLowerCase().match(/(^javascript:|livechat\.boldchat)/i)) {
    return true;
  }
  
  var ROILabs_that = $(that);
  var ROILabs_hostname = unescape((($(that).attr('href')||'').split('/')[2]||'').toLowerCase());
  var ROILabs_internalDomainList = internalDomainList.toLowerCase().split(',');
  
  /* Internal link tracking */
  if(ROILabs_isInternal(ROILabs_hostname, ROILabs_internalDomainList)) 
  {
	ROILabs_internalDomainTracker(ROILabs_that, ROILabs_hostname, event);
	return true;
  }
  else
  {
	  /* exit link tracking */
	  if ((ROILabs_hostname != '') && (ROILabs_hostname != location.hostname.toLowerCase())) {
		ROILabs_exitLinkTracker(ROILabs_that);
	  } // end if
	  /* download link tracking */
	  if (typeof(downloadLinkTypes) != 'undefined') {
		var ROILabs_downloadLinkTypes = downloadLinkTypes.toLowerCase().split(',');
		var ROILabs_pathname = (ROILabs_that.attr('pathname')) ? unescape(ROILabs_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(ROILabs_that);
			return true;
		  } // end if
		} // end for
	  } // end if

	  /* email link tracking */
	  var ROILabs_href = unescape(ROILabs_that.attr('href').toLowerCase());
	  if (ROILabs_href.match(/^mailto:/)) {
		ROILabs_emailLinkTracker(ROILabs_that);
		return true;
	  }    // end if
	}
} // end ROILabs_autoLinkTracker

function ROILabs_isInternal(url, ROILabs_internalDomainList)
{
	if(url == '' || url == GAcurrentURL) return false;
	var isInternal = false;
	$.each(ROILabs_internalDomainList, function(index, domain) {
		var domainTLD = (domain.charAt(0) == '.') ? domain.substr(1, domain.length) : domain;
		var domainLength = domainTLD.length;
		var tldLength = url.length
		var tldIndex = url.lastIndexOf(domainTLD);
		
		if((tldLength == domainLength && tldIndex !== false) || (tldLength > domainLength && tldIndex == (tldLength - domainLength) && url.charAt(tldIndex - 1) == '.'))
		{
			console.log('Marking ' + url + ' as internal');
			isInternal = true;
		}
	});
	return isInternal;
} // end ROILabs_isInternal

function ROILabs_internalDomainTracker(that, url, event) {
	var ROILabs_hostname = unescape((($(that).attr('href')||'').split('/')[2]||'').toLowerCase());
	if(ROILabs_hostname != '' && ROILabs_hostname != GAcurrentURL)
	{
		event.preventDefault();
		_gaq.push(["_link",$(that).attr('href')]);
	}
	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

// 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();
/*** EOF ***/
