/*
	Copyright James Matteson 2011. All rights reserved.
*/
function position(barID, barLoadedID, currentTimeID, timeRemainingID){
   var INTERVAL = 300;
   var oThis = this;
   var mySlider;
   var isIntervalSlide = true;
   var isHumanSlide = false;
   var positionInterval;
      
   /* Private */
   function getSliderValue(){
      if (!ytplayer.getCurrentTime) return 0;
      
      var curr = ytplayer.getCurrentTime();
      var len = ytplayer.getDuration();
      
      if (curr == null || len == null)
         return 0;
      else if (len == 0)
         return 0;
      else
         return parseInt(Math.round(100 * curr / len));
   }
   function updateTime(){      
      if (!ytplayer.getVideoBytesLoaded) return; // Happens when video quality changes
      
      var bytesLoaded = ytplayer.getVideoBytesLoaded();
      var bytesTotal = ytplayer.getVideoBytesTotal();
      
      if ($(currentTimeID) != null){
         $(currentTimeID).innerHTML = myUtils.formatTime(ytplayer.getCurrentTime());
      }
      
      if ($(timeRemainingID) != null){
         $(timeRemainingID).innerHTML = '-' + myUtils.formatTime(ytplayer.getDuration() - ytplayer.getCurrentTime());
      }     
      
      if (ytquality = 1){
         if (bytesLoaded == null || bytesTotal == null || bytesTotal <= 0){
            $(barLoadedID).style.width = '0';
         }else{
            $(barLoadedID).style.width = (100 * bytesLoaded / bytesTotal) + '%';
         }
      }
   }
   
   /* Public */
   this.start = function(){
	   if (mySlider == null){ // Prevent duplicate event listeners
         mySlider = jQuery('#' + barID).slider({
             handles: [
                {start:0,min:0,max:0},
                {start:0,min:0,max:100}
            ],
            range: true,
            slide: function(e, ui){ 
               if (!isIntervalSlide){
                  isHumanSlide = true;
                  ytplayer.seekTo(ytplayer.getDuration() * ui.value / 100, true);
                  isHumanSlide = false;
                  updateTime();
               }
            }
         });
		}
   }
   this.clear = function(){
      // Stop previous interval
		if (positionInterval >= 0)
		   clearInterval(positionInterval);
      
      isIntervalSlide = true;
      jQuery(mySlider).slider("moveTo", 0, 1);
      isIntervalSlide = false;
      
      if ($(currentTimeID) != null){
         $(currentTimeID).innerHTML = myUtils.formatTime(0);
      }
      
      if ($(timeRemainingID) != null){
         $(timeRemainingID).innerHTML = myUtils.formatTime(0);
      }
      
      $(barLoadedID).style.width = '0';
		
		// Set the interval	   
	   positionInterval = setInterval(function(){
	      if (!isHumanSlide){
            updateTime();
            
            if (!ytplayer.getPlayerState) return; // Happens when video quality changes
            if (ytplayer.getPlayerState() != 1) return;
            
            isIntervalSlide = true;
            jQuery(mySlider).slider("moveTo", getSliderValue(), 1);
            isIntervalSlide = false;
         }
	   }, INTERVAL);
   }
}
