Tracking links or events in SiteCatalyst that don't correspond to a page view is not exactly spelled out in their documentation, so I compiled a function that can be used to easily do this.

The format for SiteCatalyst event calls is:

var eventName = "Report Click";
//add the name of your report suite
s=s_gi('reportSuiteName');
//add the name of the eVar or prop variables you want to trigger, 
//include "events" if an event will also be fired
s.linkTrackVars= 'propX,eVarX,events'; 
// add the specific event here
s.linkTrackEvents= 'eventX'; 
s.prop7 = eventName;
s.eVar7 = eventName;
//add the specific event here too
s.events = 'event7'; 
//call the .tl() method
s.tl(this,'o', eventName);

Having created several specific functions for these, it made much more sense to encapsulate this into one function that would work for all types of events I would be calling.

var SiteCatalyst = {};
SiteCatalyst.reportSuite = 'reportSuite';
SiteCatalyst.registerEvent = function(eventDetails){
        //if the s_code library was not included, don't throw an error
	if (s === undefined)
		return;
	s=s_gi(this.reportSuite);
	var linkTrackVars = [];
	if (eventDetails.events !== undefined && eventDetails.events.length > 0)
	{
		s.linkTrackEvents = eventDetails.events;
		s.events = eventDetails.events;
		linkTrackVars.push("events");
	}
	if (eventDetails.eVars !== undefined && eventDetails.eVars.length > 0)
	{
		var evars = eventDetails.eVars.split(",");
		for (var e in evars)
		{
			s[evars[e]] = eventDetails.title ;
			linkTrackVars.push(evars[e]);
		}
	}
	s.linkTrackVars = linkTrackVars.join();
	s.tl(this,'o',eventDetails.title);
	return;
};

Then, you can bind SiteCatalyst events to your DOM events using jQuery or your library of choice:

$("#loginButton").click(
	SiteCatalyst.registerEvent(
		{
			events:'eventX,eventY',
			eVars:'eVarX,propY',
			title:'Login Button'
		})
);

Debugging these types of event calls will not work through the SiteCatalyst debugger so you will need to use your favorite web debugging proxy in order to check that it is actually working.