
    var ytplayer;
    
    function init() {
    
      var params = { allowScriptAccess: "always", wmode: "transparent" };
      var atts = { id: "ytplayer" };
      swfobject.embedSWF("http://www.youtube.com/apiplayer?enablejsapi=1&playerapiid=ytplayer", 
                       "ytapiplayer", "636", "477", "8", null, null, params, atts);
    
    }
    
    function onYouTubePlayerReady() {
    
      ytplayer = document.getElementById("ytplayer");
      ytplayer.addEventListener('onStateChange','detectEnd');
      ytplayer.addEventListener('onError','videoFailed');
      
      ytplayer.unMute();
      ytplayer.setVolume(100);
      getVideo(1);
    
    }
    
    function detectEnd(state) {
    
      if (state === 0) {
        getVideo(0);
      }
      
    }
    
    function videoFailed() {
    
      getVideo(1);
      
    }
    
    function getVideo(cue) {
    
      ytplayer.stopVideo();
    
      $.getJSON(generateQueryURL(),
      
        function(data) {
          
          var vid;
          if(typeof(data.feed.entry) !== 'undefined') {
            loadVideo(pickOne(data.feed.entry),cue);
          } else {
            setTimeout('getVideo(' + cue + ')',100);
            return false;
          }
        
        }
      
      );
    
    }
    
    function canvasClick() {
      var state = ytplayer.getPlayerState();
      if (state == 5) {
        ytplayer.playVideo();
      } else {
        getVideo();
      }
    }
    
    function loadVideo(entry,cue) {
      
      var id;
      id = entry.id.$t;
      id = id.substring(id.lastIndexOf(':')+1);
      if (cue == 1) {
        ytplayer.cueVideoById(id);
      } else {
        ytplayer.loadVideoById(id);
      }
      $('#clipinfo').html('<p>This is &#8220;<a href="http://www.youtube.com/watch?v=' + id + '">' + entry.title.$t + '</a>&#8221; by ' + entry.author[0].name.$t + '.</p>');
    
    }
    
    function pickOne(arr) {
      return arr[Math.floor ( Math.random() * arr.length )]; 
    }
    
    function pad(num,l) {
      var padded = num + '';
      while(padded.length < l) {
        padded = "0" + padded;
      }
    return padded;
    }
    
    function generateQueryURL() {
      var url = '';
      var prefixes = ['dscf','dscn'];
      url += "http://gdata.youtube.com/feeds/base/videos?q=";
      url += pickOne(prefixes);
      url += pad(Math.floor ( Math.random() * 9999 ),4);
      url +=  "&client=ytapi-youtube-search&alt=json-in-script&v=2&max-results=50&callback=?";
      return url;
    }
    