//ga_events.js
/*global DISQUS:false, $:false document:false window:false _gaq:false console:false*/

DISQUS.define('gaEvents', function() {
    "use strict";

    var events = {};
    var isDebug = false;

    var setDebug = function(toggle) {
        isDebug = toggle;
    };

    // create events that can be called
    var add = function(event) {
        events[event] = true;
    };

    /*
     * Record the occurrence of an event in Google Analytics.
     *
     * Parameters:
     *
     * event    The name of the event (string)
     * version  A string like 'v5'
     * amount   The number of times to record the event (integer, defaults to 1)
     */
    var fire = function(event, version, amount) {
        if (!events[event])
            throw "The event " + event + " is not defined.";
        if (!version)
            throw "must specify version in second argument.";
        if (!amount)
            amount = 1;
        if (window._gaq) {
            // _trackEvent method parameters: Category (str), Action (str), Label (str), Value (int)
            _gaq.push(['_trackEvent', version, event, event, amount]);
        }
        if (isDebug && window.console) {
            console.log('Pushed event ' + event + ', version ' + version + ', amount ' + amount + ' to _gaq');
        }
    };

    return {
        'add': add,
        'fire': fire,
        'setDebug': setDebug
    };
});

