/**
 * @private
 */
Ext.define('Ext.device.media.Cordova', {
    alternateClassName: 'Ext.device.media.PhoneGap',
    extend: 'Ext.device.media.Abstract',

    config: {
        /**
         * A URI containing the audio content. 
         * @type {String}
         */
        src: null,

        /**
         * @private
         */
        media: null
    },

    updateSrc: function(newSrc, oldSrc) {
        this.setMedia(new Media(newSrc));
    },

    play: function() {
        var media = this.getMedia();
        if (media) {
            media.play();
        }
    },

    pause: function() {
        var media = this.getMedia();
        if (media) {
            media.pause();
        }
    },

    stop: function() {
        var media = this.getMedia();
        if (media) {
            media.stop();
        }
    },

    release: function() {
        var media = this.getMedia();
        if (media) {
            media.release();
        }
    },

    seekTo: function(miliseconds) {
        var media = this.getMedia();
        if (media) {
            media.seekTo(miliseconds);
        }
    },

    getDuration: function() {
        var media = this.getMedia();
        if (media) {
            media.getDuration();
        }
    },

    startRecord: function() {
        var media = this.getMedia();

        if (!media) {
            this.setSrc(null);
        }

        media.startRecord();
    },

    stopRecord: function() {
        var media = this.getMedia();
        if (media) {
            media.stopRecord();
        }
    }
});