(function($)
{
    var Player = function( skin, container )
    {
        var _skin = $(skin),
            _cont = container,
            _time = $('.time', _skin),
            _bar = $('.bar', _skin),
            _player = jwplayer(_cont),
            _duration,
            _pos = 0,
            _barW = 0;
        
        this.events = function()
        {
            return {
                onReady: _init,
                onTime: _onTime
            }
        }
        
        function _init()
        {
            // Hide player
            $('#'+_cont+'_wrapper').height(0).css('visibility', 'hidden');
            
            // Setup Play/Pause buton
            $('.playpause', _skin).click(function(e)
            {
                e.preventDefault();
                
                _player.play();
                
                if( ! $(this).hasClass('pause') )
                    $(this).addClass('pause')
                else
                    $(this).removeClass('pause')
            });
            
            // Setup Play/Pause buton
            $('.rewind, .forward', _skin).click(function(e)
            {
                e.preventDefault();
                
                var jw = _player,
                    pos = jw.getPosition(),
                    duration = jw.getDuration(),
                    sec = 5,
                    time;
                
                if( jw.getState() != 'PLAYING' )
                {
                    $('.playpause', _skin).addClass('pause');
                    jw.play();
                }
                
                if( $(this).hasClass('forward') )
                {
                    if( pos + sec > duration )
                        time = duration;
                    else
                        time = pos + sec;
                }
                
                if( $(this).hasClass('rewind') )
                {
                    if( pos - sec < 0 )
                        time = 0;
                    else
                        time = pos - sec;
                }
                
                jw.seek( time );
            });
        }
        
        function _onTime()
        {
            // Set duration
            //if( ! _duration )
                _duration = _player.getDuration();
            
            _pos = _player.getPosition();
            
            // Update time
            _time.html( sec2time( _pos ) );
            
            _barW = _pos * 100 / _duration;
            _bar.width(_barW+'%');
        }
        
        function sec2time( sec )
        {
            var h = Math.floor( sec / 3600 );
            var m = Math.floor( sec % 3600 / 60 );
            var s = Math.floor( sec % 3600 % 60 );
            
            return h + ':' + ( m < 10 ? '0'+m : m ) + ':' + ( s < 10 ? '0'+s : s );
        }
        
        function trimDec( num, dec )
        {
            if( ! dec ) dec = 2;
            var x = Math.pow( 10, dec );
            return Math.floor( num * x ) / x;
        }
    }
    
    $.fn.skinJWPlayer = function( container, return_events )
    {
        var p = new Player( this, container );
        
        if( return_events )
            return p.events();
        
        return p;
    };
})(jQuery);
