//Ensure global objects have been initialized.
var _gaq = _gaq || [];

//Facebook Listeners
function facebookLikeListener() {
	_gaq.push(['_trackSocial', 'Facebook', 'Like']);
}
function facebookUnlikeListener() {
	_gaq.push(['_trackSocial', 'Facebook', 'Unlike']);
}
function facebookSendListener() {
	_gaq.push(['_trackSocial', 'Facebook', 'Send']);
}
//Try to register Facebook listeners.
try {
    if (FB && FB.Event && FB.Event.subscribe) {
      FB.Event.subscribe('edge.create', facebookLikeListener);
      FB.Event.subscribe('edge.remove', facebookUnlikeListener);
      FB.Event.subscribe('message.send', facebookSendListener);
    }
} 
catch (e) {
}

//Twitter Listener
function twitterListener() {
          _gaq.push(['_trackSocial', 'Twitter', 'Tweet']);
}
//Try to register Twitter listener.
try {
	if (twttr && twttr.events && twttr.events.bind) {
	  twttr.events.bind('click', twitterListener);
	}
} 
catch (e) {
}

//Services to exclude from Add This events.
var excludeFromAddThis = new Array();
excludeFromAddThis[0] = "facebook_like";
excludeFromAddThis[1] = "facebook_unlik";
excludeFromAddThis[2] = "facebook_send";  
excludeFromAddThis[3] = "facebook";
excludeFromAddThis[4] = "twitter";  
excludeFromAddThis[5] = "tweet";

//Add This Listener
function addthisListener(event) {
	var sendEvent = true;	
	var service = event.data.service;
	
	for(var i = 0; i<excludeFromAddThis.length; i++)
	{  
	    if (service.search(excludeFromAddThis[i]) > -1)
	    {              
			return false;             
		}
	}
	
	if(sendEvent == true){
		_gaq.push(['_trackSocial', 'addthis', service]);
	}
}
//Try to register Add This listener.
try {	
	if (addthis && addthis.addEventListener){
		addthis.addEventListener('addthis.menu.share', addthisListener);
	}	
	else if(_ate && _ate.ed && _ate.ed.addEventListener){
		_ate.ed.addEventListener('addthis.menu.share', addthisListener);
	}
}
catch (e) {
}
