//**************************************
function player() {
	var eu = this;
	var ev,evP=false;
	var doc = document;
	var mp3,vMp3 = new Array(),idMp3 = -1,obMp3,posMp3,tamMp3,lodMp3;
	var kMp3,lMp3;
	var mudou = false;
	var up = false; //ultimo player
	var tmo;
	var vol,tem; //volume e tempo
	var sit = 0;
	eu.stream = true;
	setTimeout(init,100);
	//*************************************************
	//configs...
	eu.debug = false;
	eu.findClasse = 'player'; //classe dos atalhos a incluir player
	eu.designClasse = 'mp3Player';
	//html do player
	eu.pHtml = '<table cellspacing=0 cellspadding=0 class="'+eu.designClasse+'"><tr>'
		+'<td class="bot play">'
		+'<td class="bot pause">'
		+'<td class="bot stop">'
		+'<td class="volume"><div class="volume"></div>'
		+'<td class="bot down">'
		+'<tr><td colspan=5 class="tempo"><div class="tempo"></div>'
		+'</table>'
	;
	eu.swfSound = 'swfsound/swfsound.swf';
	eu.plM = '<object data="'+eu.swfSound+'" id="playerMp3" type="application/x-shockwave-flash" height="1" width="1"><param value="false" name="menu"><param value="transparent" name="wmode"><param value="true" name="swLiveConnect"><param value="always" name="allowScriptAccess"></object>';
	eu.plIEp = '<param name="pluginurl" value="http://www.macromedia.com/go/getflashplayer" /><param name="movie" value="'+eu.swfSound+'" /><PARAM NAME="AllowScriptAccess" VALUE="always" />';
	eu.plIE = '<object type="application/x-shockwave-flash" data="'+eu.swfSound+'" id="player" name="player"  height="1" width="1">'+eu.plIEp+'</object>';
	eu.plIE6 = '<OBJECT id="playerMp3" classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 width=1 height=1><PARAM NAME="_cx" VALUE="26" /><PARAM NAME="_cy" VALUE="26" /><PARAM NAME="FlashVars" VALUE="" /><PARAM NAME="Movie" VALUE="'+eu.swfSound+'" /><PARAM NAME="Src" VALUE="'+eu.swfSound+'" /><PARAM NAME="WMode" VALUE="Transparent" /><PARAM NAME="Play" VALUE="0" /><PARAM NAME="Loop" VALUE="-1" /><PARAM NAME="Quality" VALUE="High" /><PARAM NAME="SAlign" VALUE="" /><PARAM NAME="Menu" VALUE="0" /><PARAM NAME="Base" VALUE="" /><PARAM NAME="AllowScriptAccess" VALUE="always" /><PARAM NAME="Scale" VALUE="ShowAll" /><PARAM NAME="DeviceFont" VALUE="0" /><PARAM NAME="EmbedMovie" VALUE="0" /><PARAM NAME="BGColor" VALUE="" /><PARAM NAME="SWRemote" VALUE="" /><PARAM NAME="MovieData" VALUE="" /><PARAM NAME="SeamlessTabbing" VALUE="1" /><PARAM NAME="Profile" VALUE="0" /><PARAM NAME="ProfileAddress" VALUE="" /><PARAM NAME="ProfilePort" VALUE="0" /><PARAM NAME="AllowNetworking" VALUE="all" /><PARAM NAME="AllowFullScreen" VALUE="false" /></OBJECT>';
	//**************************************
	// cria o objeto SWF unico para todos os players
	function initP() {
		if (eu.swfOk) {
			//lert('sw ok');
			return;
		}
		if (typeof(swfsound)=='object') {
			deb('swfsound='+typeof(swfsound));
			swfsound.embedSWF(eu.swfSound);
			op = swfsound;
			return;
		}
		//cria player
		if (browse.ie) {
			deb('ie');
			var x = doc.createElement('div');
			x.innerHTML = browse.IE6?eu.plIE6:eu.plIE;
			doc.body.appendChild(x);
			op = x.firstChild;
			if (browse.IE6) {
				deb('ie6');
				x = doc.createElement('param');
				x.setAttribute('name','allowScriptAccess');
				x.setAttribute('value','always');
				op.appendChild(x);
				//lert(op.innerHTML);
				//op.innerHTML = eu.plIEp;
				//op.outerHTML = eu.plIE;
			}
		} else {
			deb('Moz');
			var x = doc.createElement('div');
			x.innerHTML = eu.plM;
			doc.body.appendChild(x);
			op = x.firstChild;
		}
		eu.swfOk = true;
	}
	//**************************************
	function init() {
		initP();
		//procura classe para colocar player
		var v = getElementsByClassName(document,eu.findClasse);
		for (var i=0;i<v.length;i++) {
			if (!v[i].onclick) {
				v[i].innerHTML = eu.pHtml;
				v[i].onclick = click;
			}
		}
		if (!eu.proc2) {
			//lert('2a vez!');
			setTimeout(init,2000);
			eu.proc2 = true;
		}
	}
	//**************************************
	function tempo() {
		if (sit==0) {
			evP = ev;
			play();
			return;
		}
		posMp3 = Math.floor(0.6+(ev.clientX-browse.getAbsX(tem))/tem.clientWidth*tamMp3);
		deb('indo para '+posMp3+' de '+tamMp3);
		op.stopSound(idMp3);
		op.startSound(idMp3,posMp3/1000,0);
	}
	//**************************************
	function volume(pr) {
		if (pr==-1) {
			var v = 1*cookieGet('volume');
			if (v<1||v>100) {
				v = op.getVolume(idMp3);
			}
		} else {
			//bjNav(vol);
			var ox = browse.getAbsX(vol);
			//lert((ev.clientX-ox)+' x '+vol.clientWidth); //vol.offsetLeft
			var v = (ev.clientX-ox)/vol.clientWidth*100;
			cookiePut('volume',v,90);
		}
		//lert('a1='+cookieGet('volume'));
		deb('vol='+v);
		vol.firstChild.style.width = (vol.clientWidth*v/100)+'px';
		op.setVolume(idMp3,v);
	}
	//**************************************
	function play1() {
		//eb('p1='+idMp3+' '+tamMp3);
		if (idMp3<0) {
			return;
		}
		if (tamMp3<1 || kMp3!=lMp3) {
			lodMp3++;
			kMp3 = op.getBytesTotal(idMp3);
			lMp3 = op.getBytesLoaded(idMp3);
			tamMp3 = op.getDuration(idMp3);
			deb('tam='+tamMp3+' k='+kMp3+' l='+lMp3);
			//objNav(tem);
			if (tamMp3>0)  {
				if (evP && evP.clientX) {
					posMp3 = Math.floor(0.6+(evP.clientX-browse.getAbsX(tem))/tem.clientWidth*tamMp3);
					evP = false;
				}
				if (!eu.stream) {
					op.startSound(idMp3,posMp3/1000,0);
				}
			} else if (false && lodMp3>40) {
				alert('erro no arquivo '+mp3);
				//return;
				op.startSound(idMp3,posMp3/1000,0);
				volume(-1);
				tamMp3 = 100000;
			}
		}
		if (tamMp3>0 && kMp3==lMp3)  {
			posMp3 = op.getPosition(idMp3);
			tem.firstChild.style.width = Math.floor(100*posMp3/tamMp3)+'%';
			if (posMp3>=tamMp3 && kMp3==lMp3) {
				deb('FIM...');
				posMp3 = 0;
				setTimeout(stop,1500);
				return;
			}
		}
		tmo = setTimeout(play1,500);
	}
	//**************************************
	function play() {
		if (sit==1) {
			pause();
			return;
		}
		sit = 1;
		if (vazio(vMp3[mp3])) {
			//bjNav(op);
			//lert('a='+op);
			idMp3 = op.loadSound( mp3 , eu.stream);
			//lert('a='+op);
			vMp3[mp3] = idMp3;
			deb('load id='+idMp3+' '+mp3);
			//setTimeout(P,1000);
			//return;
		} else {
			idMp3 = vMp3[mp3];
		}
		volume(-1);
		tamMp3 = -1;
		lodMp3 = 0;
		kMp3=-1;
		lMp3=-1;
		classe('play');
		tmo = setTimeout(play1,500);
	}
	//**************************************
	function pause() {
		if (sit==2) {
			play();
		} else {
			op.stopSound(idMp3);
			clearTimeout(tmo);
			sit = 2;
			classe('pause');
		}
	}
	//**************************************
	function stop() {
		if (sit==0) {
			play()
		} else {
			tem.firstChild.style.width = '0%'
			clearTimeout(tmo);
			op.stopSound(idMp3);
			posMp3 = 0;
			sit = 0;
			classe('stop');
		}
	}
	//**************************************
	function classe(s) {
		var u = up.firstChild;
		if (!u || !u.className) {
			return;
		}
		var c = leftAt(u.className+' ',' ');
		c += ' '+c+'_'+s;
		u.className = c;
	}
	//**************************************
	function deb(s) {
		if (eu.debug) {
			debJ(s);
		}
	}
	//**************************************
	function onload(ev) {
		deb('on load='+ev);
	}
	//**************************************
	function click(Ev) {
		ev = (Ev?Ev:event);
		
		try {
			op.getVolume(0);
		} catch (e) {
			alert('erro adobe flash player');
			initP();
			return;
		}
		
		
		//bjNav(ev);
		try {
			var oo = targetEvent(ev);// {ev.target;
			//bjNav(oo);
			if (oo.tagName && oo.tagName.toLowerCase()!='td') {
				oo = oo.parentNode;
			}
			if (oo.tagName.toLowerCase()!='td') {
				deb('não TD='+oo.tagName);
				return false;
			}
			var np = getParentByTagName(oo,'a');
			if (!np) {
				return false;
			}
			if (!up || up!=np) {
				if (up && sit!=0) {
					stop();
					sit = 0;
				}
				//outro player, para o atual
				deb('novo p='+np);
				//stop();
				up = np;
				vol = getElementsByClassName(up,'volume')[0];
				tem = getElementsByClassName(up,'tempo')[0];
				tamMp3 = -1;
				posMp3 = 0;
				//up.href = window.location+'#'+up.href;
			}
			mp3 = ''+up.href;
			var c = trimm(oo.className);
			if (c.indexOf(' ')!=-1) {
				c = trimm(substrAt(c,' '));
			}
			deb('CMD '+c+' '+mp3);
			if (c!='') {
				eval(c+'()');
				//setTimeout(c,100);
			}
		} catch (e) {
			//objNav(op);
			deb('erro: '+erro(e));
		}
		return false;
	}
}