Hello, I'm using Youtube Javascript API. I've created playlist and some buttons like pause, play, mute, unmute, nextvideo and previous video. All of them work except nextVideo and previousVideo. Here is my code <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <a name="ytplayer"></a> <div id="ytplayer_div1">Flash Player http://get.adobe.com/flashplayer</div> <div id="ytplayer_div2"></div> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2/swfobject.js"></script> <script type="text/javascript"> var ytplayer_playlist = [ ]; var ytplayer_playitem = 0; swfobject.addLoadEvent( ytplayer_render_player ); swfobject.addLoadEvent( ytplayer_render_playlist ); function ytplayer_render_player( ) { swfobject.embedSWF ( 'http://www.youtube.com/v/' + ytplayer_playlist[ ytplayer_playitem ] + '&enablejsapi=1&rel=0&fs=1&version=3', 'ytplayer_div1', '400', '400', '8', null, null, { allowScriptAccess: 'always', allowFullScreen: 'true' }, { id: 'ytplayer_object' } ); } function ytplayer_render_playlist( ) { for ( var i = 0; i < ytplayer_playlist.length; i++ ) { var img = document.createElement( "img" ); img.src = "http://img.youtube.com/vi/" + ytplayer_playlist[ i ] + "/default.jpg"; var a = document.createElement( "a" ); a.href = "#ytplayer"; a.onclick = ( function( j ) { return function( ) { ytplayer_playitem = j; ytplayer_playlazy( 1000 ); }; } )( i ); a.appendChild( img ); document.getElementById( "ytplayer_div2" ).appendChild( a ); } } function ytplayer_playlazy( delay ) { if ( typeof ytplayer_playlazy.timeoutid != 'undefined' ) { window.clearTimeout( ytplayer_playlazy.timeoutid ); } ytplayer_playlazy.timeoutid = window.setTimeout( ytplayer_play, delay ); } function ytplayer_play( ) { var o = document.getElementById( 'ytplayer_object' ); if ( o ) { o.loadVideoById( ytplayer_playlist[ ytplayer_playitem ] ); } } function onYouTubePlayerReady( playerid ) { var o = document.getElementById( 'ytplayer_object' ); if ( o ) { o.addEventListener( "onStateChange", "ytplayerOnStateChange" ); o.addEventListener( "onError", "ytplayerOnError" ); } ytplayer_object.playVideo(); } function ytplayerOnStateChange( state ) { if ( state == 0 ) { ytplayer_playitem += 1; ytplayer_playitem %= ytplayer_playlist.length; ytplayer_playlazy( 5000 ); } } function ytplayerOnError( error ) { if ( error ) { ytplayer_playitem += 1; ytplayer_playitem %= ytplayer_playlist.length; ytplayer_playlazy( 5000 ); } } ytplayer_playlist.push( 'xx' ); ytplayer_playlist.push( 'xx' ); ytplayer_playlist.push( 'xx' ); ytplayer_playlist.push( 'xx' ); </script> <br /> <br /><a href="javascript:ytplayer_object.pauseVideo()">Pause</a> *** <a href="javascript:ytplayer_object.playVideo()">Play</a> *** <a href="javascript:ytplayer_object.mute()">Mute</a> *** <a href="javascript:ytplayer_object.unMute()">Unmute</a> <br /><a href="javascript:ytplayer_object.nextVideo()">Next</a> *** <a href="javascript:ytplayer_object.previousVideo()">Prev</a> Code (markup): Thanks.