/*
|----------------------------------------------------------------------------|
|                            DynamicUrlPlayer                                |
|----------------------------------------------------------------------------|
*/
var DynamicUrlPlayer = Class.create(Player, {
    initialize: function($super, mediaURL, deliveryType) {
        $super(mediaURL, deliveryType);
    },

    onPlay: function() {
        this.invokeMediaService();
    },

    invokeMediaService: function() {
        var oThis = this;
        log('<strong>DYNAMIC REQUEST:</strong> ' + this.mediaURL);
        var params = this.selectedIds.serialize('selection');
        log('DYNAMIC Parameters: ' + params);
        var ajax = new Ajax.Request(this.mediaURL, {
            method: 'post',
            parameters: params,
            onSuccess: function(transport) {
                log('<strong>DYNAMIC RESPONSE DYNAMIC:</strong> ' + transport.responseText);
                try {
                    var json = transport.responseText.evalJSON();
                    if (json.state == 'ok') {
                        oThis.updateUserStateElements(json);
                        oThis.doPlay();
                    } else if (json.state == 'notCredit') {
                        log('DYNAMIC User has not enough credit');
                        oThis.setErrorOverlay('not_credit');
                    } else {
                        log('DYNAMIC Unknown response from AJAX service');
                        oThis.setErrorOverlay();
                    }
                } catch (exception) {
                    log('DYNAMIC Error parsing response from AJAX service: ' + exception.message);
                    oThis.setErrorOverlay();
                }
            },
            onFailure: function(transport) {
                log('<strong>DYNAMIC FAILURE:</strong> statusCode: ' + transport.getStatus() + ', ' + transport.getStatusText());
                oThis.setErrorOverlay(transport.getStatus());
            },
            onException: function(transport, exception) {
                log('<strong>DYNAMIC EXCEPTION:</strong> ' + exception.message);
                oThis.setErrorOverlay();
            }
        });
    }
});