
        function updateHTML(elmId, value) {
          document.getElementById(elmId).innerHTML = value;
        }
 
        function setytplayerState(newState) {
          updateHTML("playerstate", newState);
        }
 
        function onYouTubePlayerReady(playerId) {
          ytplayer = document.getElementById("myytplayer");
          setInterval(updateytplayerInfo, 250);
          updateytplayerInfo();
          ytplayer.addEventListener("onStateChange", "onytplayerStateChange");

cueNewVideo(vid, start);
play();
setVolume(100);

        }
 
        function onytplayerStateChange(newState) {
          setytplayerState(newState);
        }
 

 
        // functions for the api calls
        function loadNewVideo(id, startSeconds) {
          if (ytplayer) {
            ytplayer.loadVideoById(id, parseInt(startSeconds));
          }
        }
 
        function cueNewVideo(id, startSeconds) {
          if (ytplayer) {
            ytplayer.cueVideoById(id, startSeconds);
          }
        }
 
        function play() {
          if (ytplayer) {
            ytplayer.playVideo();
          }
        }
 
        function pause() {
          if (ytplayer) {
            ytplayer.pauseVideo();
          }
        }
 
        function stop() {
          if (ytplayer) {
            ytplayer.stopVideo();
          }
        }
 
        function getPlayerState() {
          if (ytplayer) {
            return ytplayer.getPlayerState();
          }
        }
 
        function seekTo(seconds) {
          if (ytplayer) {
            ytplayer.seekTo(seconds, true);
          }
        }
 
        function getBytesLoaded() {
          if (ytplayer) {
            return ytplayer.getVideoBytesLoaded();
          }
        }
 
        function getBytesTotal() {
          if (ytplayer) {
            return ytplayer.getVideoBytesTotal();
          }
        }
 
        function getCurrentTime() {
          if (ytplayer) {
            return ytplayer.getCurrentTime();
          }
        }
 
        function getDuration() {
          if (ytplayer) {
            return ytplayer.getDuration();
          }
        }
 
        function getStartBytes() {
          if (ytplayer) {
            return ytplayer.getVideoStartBytes();
          }
        }
 
        function mute() {
          if (ytplayer) {
            ytplayer.mute();
          }
        }
 
        function unMute() {
          if (ytplayer) {
            ytplayer.unMute();
          }
        }
        
        function getEmbedCode() {
          alert(ytplayer.getVideoEmbedCode());
        }
 
        function getVideoUrl() {
          alert(ytplayer.getVideoUrl());
        }
        
        function setVolume(newVolume) {
          if (ytplayer) {
            ytplayer.setVolume(newVolume);
          }
        }
 
        function getVolume() {
          if (ytplayer) {
            return ytplayer.getVolume();
          }
        }
 
        function clearVideo() {
          if (ytplayer) {
            ytplayer.clearVideo();
          }
        }


var dragEnabled=true;



var width=230;




        function updateytplayerInfo() {
if (getBytesTotal()<1) return;



height=7
bytime=Math.ceil(((getStartBytes()+getBytesLoaded())/getBytesTotal())*width);



vidtime=Math.ceil((getCurrentTime()/getDuration())*width);

if (bytime<vidtime) bytime=vidtime;
if ((bytime-vidtime)+vidtime>width) vidtime=asdf;



$('subtitles').innerHTML='';

if ( typeof( window[ 'subs' ] ) != "undefined" ){
t=Math.floor((getCurrentTime()*100))/100;

subgroups=null;

for (i=0;i<subs.length;i+=3){
if (t>=subs[i+1] && t<subs[i+2]){
subgroups=window[subs[i]];
break;
}
}


if (subgroups!=null){
//$('debug').innerHTML=i+subs[i]+'-------'+t+'-------'+set;

$('subtitles').innerHTML='';
for (i=0;i<subgroups.length;i+=3){
if (t>=subgroups[i] && t<subgroups[i+1]){
$('subtitles').innerHTML=subgroups[i+2];
break;
}
}

} // set not null

} // end if (subs)




//if ((width-(vidtime+(bytime-vidtime)))+vidtime>width){

//$('subtitles').innerHTML='Current: '+getCurrentTime()+' Duration: '+getDuration()+' Start Bytes '+getStartBytes()+' Bytes Loaded: '+getBytesLoaded()+' Bytes Total: '+getBytesTotal()+'<br> bytime: '+bytime+' Vidtime: '+vidtime;







document.getElementById('red').style.width = vidtime+'px';
document.getElementById('red').style.height = height+'px';

document.getElementById('pink').style.width = (bytime-vidtime)+'px';
document.getElementById('pink').style.height = height+'px';

document.getElementById('rest').style.width = (width-(vidtime+(bytime-vidtime)))+'px';
document.getElementById('rest').style.height = height+'px';


//28 with anchor
if (dragEnabled) document.getElementById('anchor').style.left = (vidtime+31)+'px';



if (getDuration()<1) return;

sec=Math.floor(getCurrentTime()%60);
if (sec<10) sec='0'+sec;

updateHTML("now", Math.floor(getCurrentTime()/60)+':'+sec+' / '+Math.floor(getDuration()/60)+':'+Math.floor(getDuration()%60));


        }






var _startX = 0;
var _startY = 0;
var _offsetX = 0;
var _offsetY = 0;
var _dragElement;




function seekplz(e){
if (!e) e = window.event;

if (e.layerX)
x=e.layerX-22-document.getElementById('timebar').offsetLeft;
else if (e.pageX)
x=e.pageX-(document.getElementById('controls').offsetLeft+document.getElementById('timebar').offsetLeft)-20;
else {
x=e.clientX-(document.getElementById('main').offsetLeft+document.getElementById('timebar').offsetLeft+document.getElementById('controls').offsetLeft)+document.body.scrollLeft;
if (document.getElementById('controls').offsetLeft>300) x=e.clientX-(document.getElementById('controls').offsetLeft+document.getElementById('timebar').offsetLeft)+document.body.scrollLeft;
// I hate you internet explorer
}

//$('subtitles').innerHTML=document.body.scrollLeft+'------'+document.getElementById('main').offsetLeft+'-----'+document.getElementById('timebar').offsetLeft+'----'+document.getElementById('controls').offsetLeft+'----'+document.body.scrollLeft+'-----'+Math.round(((x-10)/width)*getDuration());

seekTo(Math.round(((x)/width)*getDuration()));
play();
if(!playplz) playPause();
}



function OnMouseDown(e)
{
if (!e) e = window.event;


    
var target = e.target != null ? e.target : e.srcElement;

pause();

_startX = e.clientX;
_startY = e.clientY;
        
_offsetX = ExtractNumber(target.style.left);
_offsetY = ExtractNumber(target.style.top);

 _dragElement = target;

document.onmousemove = OnMouseMove;
        

document.body.focus();


document.onselectstart = function () { return false; };
target.ondragstart = function() { return false; };

return false;

}

function ExtractNumber(value)
{
var n = parseInt(value);
return n == null || isNaN(n) ? 0 : n;
}


function $(id)
{
    return document.getElementById(id);
}

function OnMouseMove(e)
{
if (!e) e = window.event;

dragEnabled=false;

//$('subs').innerHTML=_dragElement;

if (e.pageX)
x=(_offsetX + e.pageX - _startX);
else
x=(_offsetX + e.clientX - _startX);

//y=(_offsetY + e.clientY - _startY);


if (x>document.getElementById('red').offsetLeft-30 && x<330){
if (x<0) x=0;
_dragElement.style.left = x + 'px';
}

//if (y>200)    _dragElement.style.top;
    

}


function OnMouseUp(e)
{
if (!e) e = window.event;

    if (_dragElement == null) return false;

dragEnabled=true;

document.onmousemove = null;

document.onselectstart = null;
_dragElement.ondragstart = null;

        // this is how we know we're not dragging      
        _dragElement = null;

if (e.pageX)
x=(_offsetX + e.pageX - _startX);
else
x=(_offsetX + e.clientX - _startX);


back=Math.round(((x-30)/width)*getDuration());

if (back<0) back=0;


seekTo(back);
play();
if(!playplz) playPause();
}








var vid=vid;
var start= start;

function runVideo(x,y){

vid=x;
start=y;

$('anchor').style.display='inline';


document.getElementById('anchor').onmousedown = OnMouseDown;
document.onmouseup = OnMouseUp;

document.getElementById('red').onmousedown = seekplz;
document.getElementById('pink').onmousedown = seekplz;
document.getElementById('rest').onmousedown = seekplz;

      var params = { allowScriptAccess: 'always', bgcolor: '#cccccc' };
      var atts = { id: 'myytplayer' };
      swfobject.embedSWF('http://www.youtube.com/apiplayer?enablejsapi=1&playerapiid=ytplayer', 
                         'ytapiplayer', '400', '300', '8', null, null, params, atts);

}




function loadSubs(subs){
  var fileref=document.createElement('script')
  fileref.setAttribute("type","text/javascript")
  fileref.setAttribute("src", '/subs/'+subs+'.js')
document.getElementsByTagName("head").item(0).appendChild(fileref)
}


var playplz=true;

function playPause(){

if (playplz){ pause(); $('playpause').src='/play.gif';}
else{ play(); $('playpause').src='/pause.gif'; }

playplz=!playplz;

return false;
}
