window.CC = window.CC || {};

window.CC.analytics = {
    settings: {
        baseUrl: 'http://analytics.clubcreate.com/pixel.gif',
        eventIds: {
            song: {
                'view': 'song.view',
                'play': 'song.play',
                'skip': 'song.skip',
                'favorite': 'song.favorite'
            },
            studio: {
                'launch': 'studio.launch'
            },
            user: {
                'view': 'user.view',
                'fan': 'user.fan',
                'login': 'user.login'
            }
        }
    },
    trackEvent: function(params) {
        // Build the url
        var url = CC.analytics.settings.baseUrl + '?';

        for(k in params) {
            url += encodeURIComponent(k) + '=' + encodeURI(params[k]) + '&';
        }

        // Add a cache buster
        url += "c="+Number(new Date());

        var elem = document.createElement('img');
        elem.src = url;
    },
    // Utility function to record specific events
    song: {
        view: function(uuid) {
            CC.analytics.trackEvent({
                e: CC.analytics.settings.eventIds.song.view,
                sid: uuid
            });
        },
        favorite: function(uuid) {
            CC.analytics.trackEvent({
                e: CC.analytics.settings.eventIds.song.favorite,
                sid: uuid
            });
        },
        play: function(uuid) {
            CC.analytics.trackEvent({
                e: CC.analytics.settings.eventIds.song.play,
                sid: uuid
            });
        },
        skip: function(uuid, duration) {
            CC.analytics.trackEvent({
                e: CC.analytics.settings.eventIds.song.skip,
                uuid: uuid,
                d: duration
            });
        }
    },
    studio: {
        launch: function(uuid) {
            CC.analytics.trackEvent({
                e: CC.analytics.settings.eventIds.studio.launch,
                stid: uuid
            });
        }
    },
    user: {
        view: function(username) {
            CC.analytics.trackEvent({
                e: CC.analytics.settings.eventIds.user.view,
                u: username
            });
        },
        fan: function(username) {
            CC.analytics.trackEvent({
                e: CC.analytics.settings.eventIds.user.fan,
                u: username
            });
        },
        login: function(username, service) {
            CC.analytics.trackEvent({
                e: CC.analytics.settings.eventIds.user.login,
                u: username,
                m: service || ''
            });
        }
    }
};
