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("playerstop").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
 */

function play() {
	if (myListener.url == "undefined") {
		_getFlashObject().SetVariable("method:setUrl", "test.mp3");
	}
	//_getFlashObject().SetVariable("method:setUrl", "http://scfire-nyk-aa01.stream.aol.com:80/stream/1074");
	_getFlashObject().SetVariable("method:play", "");
	document.getElementById("playerplay").style.display="none";
	document.getElementById("playerstop").style.display="block";
}
function pause() {
	_getFlashObject().SetVariable("method:pause", "");
}
function stop() {
	_getFlashObject().SetVariable("method:stop", "");
	document.getElementById("playerplay").style.display="block";
	document.getElementById("playerstop").style.display="none";
}            


