project.player.Tracking = new Class({
    Implements: project.player.Logging,

    log_prefix: 'Tracking',

    proxy: null,

    gemius: {
        playerId: 'html5',
        identifier: 'ByLq9u7AN9U8LeHQZ6W4EvUHLTCpYyco_0Ym7La7utX.Z7',
        hitCollector: 'http://sat.hit.gemius.pl',
        encoding: 'utf-8'
    },

    initialize: function(options)
    {
        this.proxy = options.proxy;
        this.logger('initialize');
    },


    googleAnalyticsPageTrack: function(info)
    {
        var url = info.url || window.location.toString();
        var name = info.name || '';

        var log = 'callGoogleAnalytics (name: ' + name + ' | staffel: ' + info.staffel + ' | folge: ' + info.folge + ' | art: ' + info.art + ' | länge: ' + info.laenge + ' | action: ' + info.action + ')';
        this.testing_logger(log, 'tracking');
        this.logger(log);

        try
        {
            googleAnalyticsPageTrack(url, name, info.staffel, info.folge, info.art, info.laenge, info.action);
        }
        catch(err)
        {
            this.logger(err);
        }
    },


    oewaAnalyticsPageTrack: function(info)
    {
        var log = 'callOewaAnalytics (programid: ' + info.programid + ' | action: ' + info.action + ')';
        this.testing_logger(log, 'tracking');
        this.logger(log);

        oewaAnalyticsPageTrack(info.programid, info.action);
    },


    gemiusNewStream: function(clip, part)
    {
        this.logger('gemiusNewStream');

        var materialId = clip.gemiusMaterialId + '_' + part;
        var totalTime = 0;
        var customPackage = []
        var additionalPackage = [];
        var gemius_name = clip.title + "_" + clip.subtitle.substr(0,50) + "_" + part;
        var treeId = clip.gemiusTreeId;

        customPackage.push({ name: "KATEGORIE", value: clip.category.toUpperCase() });
        customPackage.push({ name: "ZONE", value: clip.zoneCategoryName });
        customPackage.push({ name: "NAME", value: gemius_name });
        customPackage.push({ name: "PLAYER", value: this.gemius.playerId });
        customPackage.push({ name: "SITE", value: 'atv.at' });

        gemiusStream.newStream(this.gemius.playerId, materialId, totalTime, customPackage, additionalPackage, this.gemius.identifier, this.gemius.hitCollector, treeId);

        var log = 'gemiusStream.newStream(playerId: ' + this.gemius.playerId +
                  ', materialId: ' + materialId +
                  ', treeId: ' + treeId +
                  ', customPackage: "KATEGORIE" => ' + clip.category.toUpperCase() +
                  ' "ZONE" => ' + clip.zoneCategoryName +
                  ' "NAME" => ' + gemius_name +
                  ' "PLAYER" => ' + this.gemius.playerId +
                  ')';

        this.testing_logger(log, 'gemius');
    },


    gemiusEvent: function(event, current_time, clip)
    {
        var log = 'gemiusEvent: ' + event + ' | time: ' + current_time;
        this.logger(log);
        this.testing_logger(log, 'gemius');

        var materialId = String((clip) ? clip.id : this.proxy.player.active_clip.id);
        gemiusStream.event(this.gemius.playerId, materialId, current_time, event);
    },


    gemiusCloseStream: function(current_time, clip)
    {
        var materialId = String((clip) ? clip.id : this.proxy.player.active_clip.id);

        var log = 'gemiusCloseStream: ' + materialId + ' | time: ' + current_time;
        this.logger(log);
        this.testing_logger(log, 'gemius');

        gemiusStream.closeStream(this.gemius.playerId, materialId, current_time);
    },


    gemiusSetEncoding: function()
    {
        this.logger('gemiusSetEncoding');
        gSmConfig.setEncoding(this.gemius.encoding);
    },


    trackAll: function(info)
    {
        var that = this;

        setTimeout(function() {
            that.googleAnalyticsPageTrack(info);
            that.oewaAnalyticsPageTrack(info);
        }, 0);
    }
});
