var youTubeVideoHtmlIds = [];
// youTubeVideoIdはYouTube上のビデオのid
// videoHtmlIdはobjectもしくはembedのタグのid
// errorHtmlIdはロードができたら隠す項目のid
function addYouTubeVideo(youTubeVideoId, videoHtmlId, errorHtmlId, width, height) {
  // allowScriptAccessが設定されないと別（YouTube）のドメインのSWFをJavaScriptからアクセス出来ない。
  var params = { allowScriptAccess: 'always', bgcolor: '#cccccc' };
  // このidを使ってSWFをアクセスできるし、PlayerのAPIを呼べる。
  var atts = { id: videoHtmlId };
  // 「playerapiid」はonYouTubePlayerReadyに渡される引数
  // 「8」は使えるFlashの最低バージョン
  swfobject.embedSWF('http://www.youtube.com/v/'+youTubeVideoId+'&border=0&enablejsapi=1&playerapiid='+videoHtmlId,
                     errorHtmlId, width.toString(), height.toString(), '8', null, null, params, atts);
}

var currentTimeoutId = null;
var YOUTUBE_VIDEO_UNSTARTED = -1;
var YOUTUBE_VIDEO_ENDED     = 0;
var YOUTUBE_VIDEO_PLAYING   = 1;
var YOUTUBE_VIDEO_PAUSED    = 2;
var YOUTUBE_VIDEO_BUFFERING = 3;
var YOUTUBE_VIDEO_CUED      = 5;
function checkPlayers(notFromTimeout) {
  if (notFromTimeout !== true)
    currentTimeoutId = null;
  var hasToCheckAgain = false;
  for (var i = 0; i < youTubeVideoHtmlIds.length; ++i) {
    var player = document.getElementById(youTubeVideoHtmlIds[i]);
    var state = player.getPlayerState();
    if (state != YOUTUBE_VIDEO_PLAYING)
      continue;

    hasToCheckAgain = true;
    if (player.getCurrentTime() >= player.getDuration() - 2)
      player.pauseVideo();
  }
  if (hasToCheckAgain && (currentTimeoutId === null)) {
    currentTimeoutId = setTimeout(checkPlayers, 100);
  }
}

// Playerが表示されたら自動的に呼ばれる関数
function onYouTubePlayerReady(videoId) {
  youTubeVideoHtmlIds.push(videoId);
  var player = document.getElementById(videoId);
  player.addEventListener('onStateChange', 'onYouTubePlayerStateChange');
}

function onYouTubePlayerStateChange(newState) {
  checkPlayers(true);
}
