/*
 * jQuery Sputnik Logger Plugin
 * Bjarne Lundgren, bjlu@tv2.dk
 *
 * Dependencies:
 *  google analytics included on the page
 *
 * Usage:
 *  // attach to player node
 *  $("#player").sputnikLogger().sputnikPla...;
 *
 *  // attach to multiple players
 *  $(".player").sputnikLogger().sputnikPla...;
 *
 */
(function($) {
    $.fn.sputnikLogger = function() {
        this.each(function(el) {
            $(this).bind("error.sputnikPlayer", function(event, data) {
                var event = data.name;
                var param = null;
                if (typeof(data.player) != 'undefined')
                    param = data.player;
                if (event == 'media_failed' && typeof(data.message) != 'undefined')
                    param = (param === null ? data.message : param + '/' +data.message);
                logEvent(event,
                    param,
                    typeof(data.manifest) == 'undefined' ? null : data.manifest);
            });
        });
            
        return this;
    };
    
    function logEvent(error, param, manifest) {
        if (param)
            error += ': '+param;
        var name = null;
        if (manifest && typeof(manifest.type) != 'undefined' && typeof(manifest.id) != 'undefined'
                     && typeof(manifest.meta.title) != 'undefined') {
            name = '';
            if (manifest.type == 'broadcast')
                name += 'broadcast>';
            else {
                if (typeof(manifest.meta.series) != 'undefined')
                    name += String.prototype.toLowerCase.apply( manifest.meta.series.code )+'>';
                if (typeof(manifest.meta.season) != 'undefined')
                    name += String.prototype.toLowerCase.apply( manifest.meta.season )+'>';
                if (typeof(manifest.meta.episode) != 'undefined')
                    name += String.prototype.toLowerCase.apply( manifest.meta.episode )+'>';
            }  
            name += String.prototype.toLowerCase.apply( manifest.meta.title )
                +' :'+manifest.id;
        }
        if (typeof(_gaq) != 'undefined')
            _gaq.push(['_trackEvent', 'Player', error, name]);
    }
    
})(jQuery);
