/*
 * EventLogger class. Uses ajax to log an event.  logEvent.jsp will automatically check for the accountID or use 0 if one is not available.
 * EXAMPLE:
                new EventLogger('msgCenterShowAllCurrent', 'click', 32, 1, 'bar');
                new EventLogger(', '', 32, 0, 'foo).logEvent(); // fire event now

 */
var EventLogger = new Class({

	triggerElemId : null,
	triggerEventType : null,
	eventTypeID : null,
	subEventTypeID : null,
	eventDetail1 : null,
	eventDetail2 : null,
	eventDetail3 : null,
	eventDetail4 : null,
	ajax : new AjaxCpx('/ajax/logEvent.jsp'),

	/*
	 * Constructor, automatically called on instantiation (like all mootools Classes). Everything is required except the eventDetails (accountID is logged automatically). 
	 */
	initialize : function (triggerElemId, triggerEventType, eventTypeID, subEventTypeID, eventDetail1, eventDetail2, eventDetail3, eventDetail4) {

		// set object properties, swapping out undefined for ""
		this.triggerElemId = (triggerElemId == undefined ? "" : triggerElemId);
		this.triggerEventType = (triggerEventType == undefined ? "" : triggerEventType);
		this.eventTypeID = (eventTypeID == undefined ? "" : eventTypeID);
		this.subEventTypeID = (subEventTypeID == undefined ? "" : subEventTypeID);
		this.eventDetail1 = (eventDetail1 == undefined ? "" : eventDetail1);
		this.eventDetail2 = (eventDetail2 == undefined ? "" : eventDetail2);
		this.eventDetail3 = (eventDetail3 == undefined ? "" : eventDetail3);
		this.eventDetail4 = (eventDetail4 == undefined ? "" : eventDetail4);

		// if a triggerElemID and triggerEventType has been specified, add an event.  Otherwise, do nothing (logEvent can still be called manually). 		
		window.addEvent('domready', function () {
			// check to be sure there is a trigger element first, in order to fail gracefully if this element does not exist.
			if ($(triggerElemId) && $defined(triggerEventType)) {
				$(triggerElemId).addEvent(triggerEventType, this.logEvent.bind(this));
			} else if (triggerElemId != false) {
				// TODOKH: add ability to write a message to the Tomcat log via ajax. Do that in production.
				global.log('System message: Attempt to set EventLogger.js listener on a non-existing element. This may be a manual event log. ID: ' + triggerElemId);
			}
		}.bind(this));
	},

	/*
	 * Fires off the ajax request.
	 */
	logEvent : function () {
		this.ajax.request("eventTypeID=" + this.eventTypeID +
						  "&subEventTypeID=" + this.subEventTypeID +
						  "&eventDetail1=" + this.eventDetail1 +
						  "&eventDetail2=" + this.eventDetail2 +
						  "&eventDetail3=" + this.eventDetail3 +
						  "&eventDetail4=" + this.eventDetail4);
	}
});