var playersState = new Array();

function SaveNewState(newState,idPlayer)    { playersState["'"+idPlayer+"'"]=newState;  }
function GetState(idPlayer)                 {return playersState["'"+idPlayer+"'"];    }
function onYouTubePlayerReady(playerapiid)  { var cP=new CustomPlayer(playerapiid);     }

if(typeof(isIE6)!='function')
function isIE6(){if($.browser.msie&&parseInt($.browser.version)<7)return true;return false;}

function CustomPlayer(idPlayer){  
  var _objFlash = $('#'+idPlayer);
  var _divCustomPlayer = _objFlash.parent();
  var _idVideo = _divCustomPlayer.attr('id'),
      _volume  = 50,
      _player,
      _width,
      _height,
      self = this;

  SaveNewState(-1,idPlayer);
  _width  = _objFlash.width();
  _height = _objFlash.height();

   $('.cPlayerControllers',_divCustomPlayer).remove();


  /*    Genero html Necesario   */
  var _divContainer  = $('<div class="cPlayerContainer" style="width:'+_width+'px;height:'+_height+'px;"></div>');
  var _divControllers= $('<div class="cPlayerControllers" style="padding-top:'+(parseInt((_height/2)-(72/2)))+'px;"></div>');
  var _btnPlayPause  = $('<button type="button" class="btnPlayPause">Play</button>');
  var _btnVolumeInc  = $('<button type="button" class="btnVolumeInc">+</button>');
  var _btnVolumeDec  = $('<button type="button" class="btnVolumeDec">-</button>');
  var _volumeInfo    = $('<div class="volumenInfo"></div');
  var _volumeDotted  = $('<div class="volumenInfoDotted"></div>');
  var _displayTime   = $('<div class="displayTime"><strong>00:00</strong>/<span>00:00</span></div>');


  /*    Agrego html necesario   */
  _volumeInfo.append(_volumeDotted);
  _divControllers.append(_btnVolumeDec);
  _divControllers.append(_volumeInfo);
  _divControllers.append(_btnPlayPause);
  _divControllers.append(_btnVolumeInc);
  _divContainer.append(_displayTime);
  _divContainer.append(_divControllers);
  _divCustomPlayer.append(_divContainer);

  var _currentTime  = $('.displayTime strong',_divCustomPlayer);
  var _durationTime = $('.displayTime span',_divCustomPlayer);

  /*    Funciones   */
  // Tiempos
  var _Duration    = function(){ return _player.getDuration(); }
  var _CurrentTime = function(){ return _player.getCurrentTime();}


  var _ShowVolumenInfo = function(visible){
                           if(visible){
                            _volumeInfo.show();
                            _btnPlayPause.hide();
                           }else{
                            _volumeInfo.hide();
                            _btnPlayPause.show();
                           }
                         }

  this.PlayPause = function(){
                      if(GetState(idPlayer)==-1){
                        _btnPlayPause.addClass('paused');
                        this.LoadVideo(_idVideo,0);
                      }else if(GetState(idPlayer)==2){
                        _btnPlayPause.addClass('paused');
                        _player.playVideo();
                      }else if(GetState(idPlayer)==0){
                        _btnPlayPause.removeClass('restart');
                        _btnPlayPause.addClass('paused');
                        _player.seekTo(0);
                      }else{
                        _btnPlayPause.removeClass('paused');
                        _player.pauseVideo();
                      }
                   }

  this.SetVolume = function(newVolume){
                      newVolume = parseInt(newVolume);
                      if(100<newVolume||newVolume<0) return false;
                      _player.setVolume(newVolume);
                      _volume = newVolume;
                      var aux = Math.floor(_volume/10);
                      _volumeDotted.html('');
                      for(var i=0;i<aux;i++){_volumeDotted.append('<span></span>');}
                      aux = (Math.floor(_volume/25)*25);
                      aux = (aux==0&&0<_volume)?25:aux;
                      var classV = 'v'+aux;
                      _volumeInfo.attr('class','volumenInfo '+classV);
                    }

  // Load video
  this.LoadVideo = function(id,frame){
                        _divContainer.css({'background': 'none'});
                        _player.loadVideoById(id,frame);
                    }

   var _FormatMinSec = function(numero){
                         var dS = parseInt(numero);
                         var mm = parseInt(dS/60);
                         var ss = dS%60;
                         if(mm<10) mm='0'+mm;
                         if(ss<10) ss='0'+ss;
                         return mm+':'+ss;
                       }

  var _intervalTimer  = null;
  var _Interval       = function(){_intervalTimer=setInterval(function(){self._UpdateTime();},1500);}
  this._UpdateTime    = function(){
                            try{
                              _currentTime.text(_FormatMinSec(_CurrentTime()));
                              _durationTime.text(_FormatMinSec(_Duration()));
                              if(GetState(idPlayer)==0&&!_btnPlayPause.hasClass('restart')){
                                _btnPlayPause.addClass('restart');
                                _btnPlayPause.removeClass('paused');
                              }else if(GetState(idPlayer)==2&&_btnPlayPause.hasClass('paused')){
                                _btnPlayPause.removeClass('paused');
                                _btnPlayPause.removeClass('restart');
                              }else if(GetState(idPlayer)==1&&!_btnPlayPause.hasClass('paused')){
                                _btnPlayPause.addClass('paused');
                              }
                            }catch(err){
                              clearInterval(_intervalTimer);
                            }
                        }

  var _FadeBtns = function(elem,opacity){
                    elem.fadeTo('fast',opacity);
                  }


  // Obtengo el player
  _player =  document.getElementById(idPlayer);

  _FadeBtns(_btnVolumeInc,0.7);
  _FadeBtns(_btnVolumeDec,0.7);
  _FadeBtns(_btnPlayPause,0.7);

  /*    Acciones    */
  _btnVolumeInc.click(function(){self.SetVolume(_volume+10);}).hover(function(){_FadeBtns(_btnVolumeInc,1);_ShowVolumenInfo(true);},function(){_FadeBtns(_btnVolumeInc,0.7);_ShowVolumenInfo(false);});
  _btnVolumeDec.click(function(){self.SetVolume(_volume-10);}).hover(function(){_FadeBtns(_btnVolumeDec,1);_ShowVolumenInfo(true);},function(){_FadeBtns(_btnVolumeDec,0.7);_ShowVolumenInfo(false);}); ;
  _btnPlayPause.click(function(){self.PlayPause()}).hover(function(){_FadeBtns(_btnPlayPause,1);},function(){_FadeBtns(_btnPlayPause,0.7);});

  if(isIE6())
    _divCustomPlayer.hover(function(){_divControllers.show();},function(){_divControllers.hide();});


  /*    Cargo video     */
  //this.LoadVideo(_idVideo,0); //<-- auto start
  _player.addEventListener('onStateChange', "function(newState){ SaveNewState(newState,'"+idPlayer+"'); }");
  _Interval();
  self.SetVolume(_volume);
  _divContainer.css({'background':'url(http://i1.ytimg.com/vi/'+_idVideo+'/0.jpg) center center no-repeat #000'});
}




