var stopFlag = true;
var iListen = {};

iListen.ListenSong = Class.create();

// function sendPos(pos) 
// {
//     iListen.ListenSong.cur_track.increment(pos);
// }

iListen.ListenSong.swf_obj = null;
iListen.ListenSong.cur_track = null;
iListen.ListenSong.tracks = {};

iListen.ListenSong.current_track = 0;
iListen.ListenSong.count_tracks = 0;

iListen.ListenSong.prototype = {
  initialize: function(track_id, track_url, name)
  {
      this.track_url  = track_url;
      this.track_id   = track_id;
			this.name = name
//      this.duration   = duration;
      this.position   = 0;
      this.play_state = 'nothing'; 
      iListen.ListenSong.tracks[track_id] = this;
		//	alert(iListen.ListenSong.tracks[track_id]);
			iListen.ListenSong.count_tracks++;
  },
  
  action: function()
  {
      this.make_sure_object_was_created();   
			$('current').innerHTML = iListen.ListenSong.tracks[iListen.ListenSong.current_track].name
  },

  _action: function()
  {
      switch(this.play_state) {
      case "nothing":
          this.stop_and_play();
          break;
      case "wait":
      case "play":
      case "paused":
          if(iListen.ListenSong.cur_track && iListen.ListenSong.cur_track.track_id == this.track_id) {
              this.resume_or_stop();
          } else {
              this.stop_and_play();
          }
          break;
      }
  },
  
  stop_and_play: function()
  {
      if(iListen.ListenSong.cur_track) {
          iListen.ListenSong.swf_obj.myStop();
          iListen.ListenSong.cur_track.play_state = 'nothing';
          iListen.ListenSong.cur_track.increment(0);
      }
      iListen.ListenSong.cur_track = this;
      this.play_state = 'wait';
      iListen.ListenSong.swf_obj.myGo(this.track_url);
  },
  
  resume_or_stop: function()
  {
      if(iListen.ListenSong.cur_track.play_state == 'paused') {
          iListen.ListenSong.cur_track.play_state = 'play';
          iListen.ListenSong.swf_obj.myResume();
      } else {
          iListen.ListenSong.cur_track.play_state = 'paused';
          iListen.ListenSong.swf_obj.myPause();
      }
  },

  increment: function(pos)
  {
      //$('val').update(pos);
      if(this.play_state == 'wait' && pos > 0)
          this.play_state = 'play';
      this.position = pos;
//      percent = (Math.ceil(pos*10000/this.duration)/100) + '%';
  //    $$('#track_'+this.track_id+' .progress_slider').each(function(a)
    //  {
      //    a.style.width = percent;
     // });
  },

  make_sure_object_was_created: function()
  {
			//alert('here')
      if(iListen.ListenSong.swf_obj) {
          this._action();
          return;
      }
      var a = document.createElement('div');
      a.setAttribute("id", "invisible_player");
      $$('body')[0].appendChild(a);
      swfobject.embedSWF("mp3play.swf", "invisible_player", "1", "1", "9.0.0");
			//alert($('invisible_player'))
      var _self = this;
      var b = function(){
          if (navigator.appName.indexOf("Microsoft") != -1) {
              iListen.ListenSong.swf_obj = window['invisible_player'];
          } else {
              iListen.ListenSong.swf_obj = document['invisible_player'];
          }
          if(!iListen.ListenSong.swf_obj.myGo)
              setTimeout(function(){b();}, 300);
          else
					{
              _self._action();
					}
      }
      setTimeout(function(){b();}, 300);
  }
};
/* Sample:
[{id,path,name},{id,path,name}]
id=0,1,2,...
*/
function process_tracks(tracks)
{
	for(var i=0;i<tracks.length;i++)
	{
		new iListen.ListenSong(tracks[i].id, tracks[i].path, tracks[i].name);
	}
}

function prev_song()
{
	stop();
	if (iListen.ListenSong.current_track == 0)
		iListen.ListenSong.current_track = iListen.ListenSong.count_tracks-1;
	else
		iListen.ListenSong.current_track--;
	play();
	return false;
}

function next_song()
{
	stop();
	iListen.ListenSong.current_track++;
	if (iListen.ListenSong.current_track == iListen.ListenSong.count_tracks)
		iListen.ListenSong.current_track = 0;
	play();
	return false;
}

function stop()
{
	stopFlag = true;
	iListen.ListenSong.swf_obj.myStop();
  iListen.ListenSong.cur_track.play_state = 'nothing';
  iListen.ListenSong.cur_track.increment(0);
	return false;
}

function play()
{
	stopFlag = false;
	iListen.ListenSong.tracks[iListen.ListenSong.current_track].action();
	return false;
}

function state()
{
	if (iListen.ListenSong.cur_track==null)
		return "unknown";		
	if (iListen.ListenSong.cur_track.play_state == 'nothing')
		return "nothing";
	if (iListen.ListenSong.cur_track.play_state == 'paused')
		return "pause";
	if (iListen.ListenSong.cur_track.play_state == 'play' || iListen.ListenSong.cur_track.play_state == 'wait')
		return "play";
	return "unknown";		
}
var check = function(){
	if (!stopFlag && state()=='nothing')
	{
		next_song();
	}
//    alert(state());
	setTimeout("check()", 1000);
}
//setTimeout("check()", 1000);
//process_tracks([{id:0,path:"/player/test.mp3",name:"The track"}]);
