﻿Pplayer = {
	players : [],
	flash : null,
	
	preinit : function(){
		$$('body')[0].insert(new Element('div', {id:'PplayerFlash'}));
		swfobject.embedSWF(Pplayer.url.substr(0, Pplayer.url.lastIndexOf('/')+1)+'Pplayer.swf', "PplayerFlash", "1", "1", "9.0.0");
	},
	
	init : function(){
		flash = $('PplayerFlash');
		
		var links = [];
		for(var i=0; i<document.links.length; i++){
			var rel = $(document.links[i]).readAttribute('rel');
			if(rel == 'pplayer'){
				links.push($(document.links[i]));
			}
		}
		for(i = 0; i<links.length; i++){
			tmp = new Element('div').insert(Pplayer.player).down();
			tmp._url = links[i].href;
			tmp._uid = i+1;
			tmp.getAsset = function(name){
				return this.select('[name="'+name+'"]')[0];
			}
			
			tmp.getAsset('Ptitle').update(links[i].innerHTML);
			Pplayer.functions.onInit(tmp);
			
			links[i].replace(tmp);
			
			var d = tmp.descendants();
			for(var j = 0; j<d.length; j++){
				switch(d[j].readAttribute('name')){
					case 'Pplay':
						d[j].observe('click', Pplayer.play.bind(this, tmp) );
					break;
					case 'Ppause':
						d[j].observe('click', Pplayer.pause.bind(this, tmp) );
					break;
					case 'Presume':
						d[j].observe('click', Pplayer.resume.bind(this, tmp));
					break;
					case 'Ptoggle':
						d[j].observe('click', Pplayer.toggle.bind(this, tmp));
					break;
					case 'Pstop':
						d[j].observe('click', Pplayer.stop.bind(this, tmp));
					break;
				}
			}
			
			Pplayer.players.push(tmp);
		}
	},
	
	getPlayer : function(uid){
		for(var i=0; i<Pplayer.players.length; i++){
			if(Pplayer.players[i]._uid == uid)
				return Pplayer.players[i];
		}
		return null;
	},
	
	event : function(type, data){
		switch(type){
			case 'init':
				Pplayer.init();
			break;
			
			case 'play':
				if(Pplayer.functions.onPlay)
				Pplayer.functions.onPlay(Pplayer.getPlayer(data.uid), data);
			break;
			case 'stop':
				if(Pplayer.functions.onStop)
				Pplayer.functions.onStop(Pplayer.getPlayer(data.uid), data);
			break;
			case 'pause':
				if(Pplayer.functions.onPause)
				Pplayer.functions.onPause(Pplayer.getPlayer(data.uid), data);
			break;
			case 'resume':
				if(Pplayer.functions.onResume)
				Pplayer.functions.onResume(Pplayer.getPlayer(data.uid), data);
			break;
			
			case 'loadComplete':
				if(Pplayer.functions.onLoadComplete)
				Pplayer.functions.onLoadComplete(Pplayer.getPlayer(data.uid), data);
			break;
			case 'loading':
				if(Pplayer.functions.onLoading)
				Pplayer.functions.onLoading(Pplayer.getPlayer(data.uid), data);
			break;
			case 'position':
				if(Pplayer.functions.onPosition)
				Pplayer.functions.onPosition(Pplayer.getPlayer(data.uid), data);
			break;
			case 'volume':
				if(Pplayer.functions.onVolume)
				Pplayer.functions.onVolume(Pplayer.getPlayer(data.uid), data);
			break;
		}
		console.log(type, data);
	},
	
	
	/***********************************/
	play : function(player){
		flash.pplay(player._uid, player._url);
	},
	
	pause : function(player){
		flash.ppause(player._uid);
	},
	
	resume : function(player){
		flash.presume(player._uid);
	},
	
	toggle : function(player){
		flash.ptoggle(player._uid);
	},
	
	stop : function(player){
		flash.pstop(player._uid);
	},
	
	setVolume: function(player, vol){
		flash.psetVolume(player._uid, vol);
	},
	setPosition: function(player, pos){
		flash.psetPosition(player._uid, pos);
	}
	/***********************************/
}

var t = document.getElementsByTagName("script");
Pplayer.url =  t[t.length - 1].src;

if(Prototype){
	document.observe("dom:loaded", Pplayer.preinit);
}




Pplayer.player = '	<div class="pplayer">'
+'		<p name="Ptitle"></p>'
+'		<small name="Pinfo"></small><br />'
+'		<button name="Pplay">Play</button>'
+'		<button name="Ppause">Pause</button>'
+'		<button name="Presume">Resume</button>'
+'		<button name="Ptoggle">Toggle</button>'
+'		<button name="Pstop">Stop</button>'
+'		<button name="MyVolBt">Volume</button>'
+'	</div>';

Pplayer.functions = {
	onInit: function(p){
		p.getAsset('Ppause').disabled = true;
		p.getAsset('Presume').disabled = true;
		p.getAsset('Ptoggle').disabled = true;
		p.getAsset('Pstop').disabled = true;
		
		p.getAsset('MyVolBt').observe('click', function(){
			Pplayer.setVolume(p, 50);
		});
	},
	
	onPlay: function(p, data){
		p.getAsset('Pplay').disabled = true;
		p.getAsset('Ppause').disabled = false;
		p.getAsset('Presume').disabled = true;
		p.getAsset('Ptoggle').disabled = false;
		p.getAsset('Pstop').disabled = false;
	},
	onStop: function(p, data){
		p.getAsset('Pplay').disabled = false;
		p.getAsset('Ppause').disabled = true;
		p.getAsset('Presume').disabled = true;
		p.getAsset('Ptoggle').disabled = true;
		p.getAsset('Pstop').disabled = true;
	},
	onPause: function(p, data){
		p.getAsset('Ppause').disabled = true;
		p.getAsset('Presume').disabled = false;
	},
	onResume: function(p, data){
		p.getAsset('Ppause').disabled = false;
		p.getAsset('Presume').disabled = true;
	},
	onPosition: function(p, data){
		p.getAsset('Pinfo').update("position " + data.current+" / "+data.total);
	}
}