if(window.jQuery){
	if(!window.OEPlayer){
		window.OEPlayer=function(opt){
			var self = this;

			self.opt = {
				'ctlOpen'	: false,
				'ctlPlay'	: false,
				'ctlNext'	: false,
				'ctlPrev'	: false,
				'ctlPos'	: false,
				'trackName'	: false,
				'playerUrl'	: '/bin/player/load/',
				'playlist'	: []
			};

			for(var key in self.opt){
				if(key in opt){
					self.opt[key] = opt[key];
				}
			}

			self.st = {
				'loaded': false,
				'show': false,
				'currentTrack': -1,
				'paused': false
			}

			self.obj = {

			};

			$(function(){
				self.init();
			})
		}

		OEPlayer.prototype.init = function(){
			var self = this;

			if(self.opt.ctlOpen){
				self.obj.ctlOpen = $(self.opt.ctlOpen)[0];
				$(self.obj.ctlOpen).click(function(){
					self.toggle();
					return false;
				});
			}

			if(self.opt.ctlPlay){
				self.obj.ctlPlay = $(self.opt.ctlPlay)[0];
				$(self.obj.ctlPlay).click(function(){
					self.play();
					return false;
				});
			}

			if(self.opt.ctlNext){
				self.obj.ctlNext = $(self.opt.ctlNext)[0];
				$(self.obj.ctlNext).click(function(){
					self.next();
					return false;
				});
			}

			if(self.opt.ctlPrev){
				self.obj.ctlPrev = $(self.opt.ctlPrev)[0];
				$(self.obj.ctlPrev).click(function(){
					self.prev();
					return false;
				});
			}

			if(self.opt.ctlPos){
				self.obj.ctlPos = $(self.opt.ctlPos)[0];
				$(self.obj.ctlPos).click(function(){
					return false;
				});
			}


			self.obj.ctl = $('#OEPFlashCtl')[0];
			self.obj.place = $('#playerPlace')[0];
			self.obj.trackName = $('#trackName')[0];

		}

		OEPlayer.prototype.loadPlayer = function(url){
			var self = this;

			$.post(url,function(data){
				$(self.obj.place).html(data);
				self.st.loaded=true;
				self.st.show=false;
				self.obj.player = $('#player')[0];
				self.obj.playlist = $('div.content',self.obj.player);
				$('a.album',self.obj.player).click(function(){
					self.loadAlbum(this.href);
					return false;
				});
				self.updatePlayList();
			});
		}

		OEPlayer.prototype.loadAlbum = function(url){
			var self = this;

			$.post(url,function(data){
				$(self.obj.playlist).html(data);
				self.updatePlayList();
			});
		}

		OEPlayer.prototype.updatePlayList = function(){
			var self = this;

			$('a.close',self.obj.playlist).click(function(){
				$(self.obj.place).hide();
				return false;
			});

			self.opt.playlist = [];
			$('a.track',self.obj.playlist).each(function(){
				var track = this;
				if(!$(track).hasClass('disabled')){
					var meta = $(track).next('div');
					var item = {};

					item['pos'] = $('span.pos',meta).text();
					item['title'] = $('span.title',meta).text();
					item['url']	= $(track).attr('href');
					var idTrack = self.opt.playlist.length;
					self.opt.playlist[idTrack] = item;
					self.dbg('found track: '+item.pos+'.'+item.title);
					self.clickUrl(track,idTrack)
				}
			});
			self.opt.album = $('div.top h3',self.obj.playlist).text();

		}
		OEPlayer.prototype.clickUrl = function(track,id){
			var self = this;
			$(track).click(function(){
				self.playTrack(id);
				return false;
			})
		}

		OEPlayer.prototype.toggle = function(){
			var self = this;
			if(!self.st.loaded){
				self.loadPlayer(self.opt.playerUrl);
			}
			else{
				$('#playerPlace').toggle();
			}
		}

		OEPlayer.prototype.dbg = function(msg){
			var self = this;
			if(window.console && console.log){
				console.log('[OEP]'+msg);
			}
		}



		OEPlayer.prototype.onInit = function(){
			var self = this;

			self.dbg('OnInit');

			self.position = 0;
		}

		OEPlayer.prototype.ctlset = function(name,value){
			var self = this;
			self.dbg('SetVariable('+name+', '+value+')');
			self.obj.ctl.SetVariable(name,value);
		}

		OEPlayer.prototype.ctlmethod = function(method,value){
			var self = this;

			self.ctlset('method:'+method,value);
		}

		OEPlayer.prototype.onUpdate = function(){
			var self = this;

			self.dbg('OnUpdate [vol:'+self.volume+'] [pos:'+self.position+'/'+self.duration+'] [bytes:'+self.bytesLoaded+'/'+self.bytesTotal+'/'+self.bytesPercent+'] ['+(self.isPlaying ? 'on':'off')+']');
			if(self.obj.ctlPos){
				$(self.obj.ctlPos).css('left',parseInt(100*self.position/self.duration));
				if( self.position/self.duration > 0.99 ){
					self.next();
				}
			}
		}

		OEPlayer.prototype.playTrack = function(id){
			var self = this;

			if(self.isPlay == 'true'){
				setTimeout(function(){ self.playTrack(id)},100);
			}
			var track = self.opt.playlist[id];
			if(track){
				self.st.currentTrack = id;
				self.ctlmethod('setUrl',track.url);
				self.ctlmethod('setPosition',1);
				self.ctlmethod('play','');
				self.ctlset('enabled','true');
				$(self.obj.trackName).html('<span class="album">'+ self.opt.album + '|</span>'+
						'<span>'+track.pos+'</span>'+track.title);
			}			
		}

		OEPlayer.prototype.play=function(){
			var self = this;

			if(self.isPlaying == "true"){
				self.ctlmethod('pause','');
				self.st.paused = true;
			}
			else if(self.st.paused){
				self.ctlmethod('play','');
				self.st.paused = false;
			}
			else if(self.st.currentTrack >= 0){
				self.playTrack(self.st.currentTrack);
			}
			else{
				self.playTrack(0);
			}
		}

		OEPlayer.prototype.next=function(){
			var self = this;

			if( self.st.currentTrack+1 >= self.opt.playlist.length ){
				self.playTrack(0);
			}
			else{
				self.playTrack(self.st.currentTrack+1);
			}
		}

		OEPlayer.prototype.prev=function(){
			var self = this;

			if( self.st.currentTrack <= 0 ){
				self.playTrack(self.opt.playlist.length-1);
			}
			else{
				self.playTrack(self.st.currentTrack-1);
			}
		}

	}
}
