/*	pmp3.js is released under MIT license 
 <http://www.opensource.org/licenses/mit-license.php> 
 Source: http://code.google.com/p/mp3player/
*/
var myListener = new Object();
        	
/**
 * Initialize
 */
myListener.onInit = function()
        	{
        		_addEventListener(document.getElementById("playerslider"), "mousedown", _sliderDown, false);
        		_addEventListener(document, "mousemove", _sliderMove, false);
        		_addEventListener(document, "mouseup", _sliderUp, false);
        	};

/**
 * Update
 */
myListener.onUpdate = function()
        	{
        		var isPlaying = this.isPlaying;
           		var url = this.url;
           		var volume = this.volume;
           		var position = this.position;
            	var duration = this.duration;
            	
            	var id3_artist = this.id3_artist;
            	var id3_album = this.id3_album;
            	var id3_songname = this.id3_songname;
            	var id3_genre = this.id3_genre;
            	var id3_year = this.id3_year;
            	var id3_track = this.id3_track;
            	var id3_comment = this.id3_comment;
/*            	
            	document.getElementById("info_playing").innerHTML = isPlaying;
            	document.getElementById("info_url").innerHTML = url;
            	document.getElementById("info_volume").innerHTML = volume;
            	document.getElementById("info_position").innerHTML = position;
            	document.getElementById("info_duration").innerHTML = duration;
            	document.getElementById("info_bytes").innerHTML = this.bytesLoaded + "/" + this.bytesTotal + " (" + this.bytesPercent + "%)";
            	
            	document.getElementById("info_id3_artist").innerHTML = id3_artist;
            	document.getElementById("info_id3_album").innerHTML = id3_album;
            	document.getElementById("info_id3_songname").innerHTML = id3_songname;
            	document.getElementById("info_id3_genre").innerHTML = id3_genre;
            	document.getElementById("info_id3_year").innerHTML = id3_year;
            	document.getElementById("info_id3_track").innerHTML = id3_track;
            	document.getElementById("info_id3_comment").innerHTML = id3_comment;
*/           	
            	isPlaying = (isPlaying == "true");
           		document.getElementById("playerplay").style.display = (isPlaying)?"none":"block";
           		document.getElementById("playerpause").style.display = (isPlaying)?"block":"none";
           		
            	var timelineWidth = 160;
            	var sliderWidth = 40;
            	var sliderPositionMin = 40;
            	var sliderPositionMax = sliderPositionMin + timelineWidth - sliderWidth;
            	var sliderPosition = sliderPositionMin + Math.round((timelineWidth - sliderWidth)* position / duration);
            	
            	if (sliderPosition < sliderPositionMin) {
            		sliderPosition = sliderPositionMin;
            	}
            	if (sliderPosition > sliderPositionMax) {
            		sliderPosition = sliderPositionMax;
            	}
            	
            	document.getElementById("playerslider").style.left = sliderPosition+"px";
};
        	
/**
 * private functions
 */
var sliderPressed = false;

function _getFlashObject()
        	{
        		return document.getElementById("myFlash");
        	}

function _cumulativeOffset (pElement)
        	{
				var valueT = 0, valueL = 0;
				do {
					valueT += pElement.offsetTop  || 0;
					valueL += pElement.offsetLeft || 0;
					pElement = pElement.offsetParent;
				} while (pElement);
				return [valueL, valueT];
		}

function _xmouse(pEvent)
        	{
				return pEvent.pageX || (pEvent.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft));
        	}

function _ymouse(pEvent)
        	{
				return pEvent.pageY || (pEvent.clientY + (document.documentElement.scrollTop || document.body.scrollTop));
        	}

function _findPosX(pElement)
        	{
				if (!pElement) return 0;
				var pos = _cumulativeOffset(pElement);
				return pos[0];
			}
function _findPosY(pElement)
        	{
				if (!pElement) return 0;
				var pos = _cumulativeOffset(pElement);
				return pos[1];
			}

function _addEventListener(pElement, pName, pListener, pUseCapture)
        	{
				if (pElement.addEventListener) {
					pElement.addEventListener(pName, pListener, pUseCapture);
				} else if (pElement.attachEvent) {
					pElement.attachEvent("on"+pName, pListener);
				}
		}

function _sliderDown(pEvent)
			{
				sliderPressed = true;
			}

function _sliderMove(pEvent)
			{
				if (sliderPressed) {
					var timelineWidth = 160;
					var sliderWidth = 40;
	            	var sliderPositionMin = 40;
	            	var sliderPositionMax = sliderPositionMin + timelineWidth - sliderWidth;
					var startX = _findPosX(document.getElementById("timeline"));
					var x = _xmouse(pEvent) - sliderWidth / 2;
					
					if (x < startX) {
						var position = 0;
					} else if (x > startX + timelineWidth) {
						var position = myListener.duration;
					} else {
						var position = Math.round(myListener.duration * (x - startX - sliderWidth) / (startX + timelineWidth - sliderWidth - startX));
					}
					_getFlashObject().SetVariable("method:setPosition", position);
				}
			}

function _sliderUp(pEvent)
			{
				sliderPressed = false;
			}
        	
/**
 * public functions
 */

// load and play a defined MP3 source
function load_play() {
//         _getFlashObject().SetVariable("method:setUrl", "wangfei.mp3");
       _getFlashObject().SetVariable("method:setUrl", "http://localhost/scripts/navitalk_google/tts_flash.pl?text=hello+world");

                _getFlashObject().SetVariable("method:play", "");
            }

// play the existing MP3 source
function replay() {
                _getFlashObject().SetVariable("method:play", "");
            }

// Pause an MP3 play
            function pause() {
                _getFlashObject().SetVariable("method:pause", "");
            }

// Stop an MP3 play
            function stop() {
                _getFlashObject().SetVariable("method:stop", "");
            }

