var tracks = new Array();
var currTrack = null;
var currHash = null;
var currSt = 'st';
var paused = false;
var freeze = false;
var so;
var pos = 9;
var elapsed = 0;
var origTitle;
var shuffle = false;
var shufList = null;
var shufPos = 0;


$.fn.extend({
	superNext: function(expr) {
		var a = $(expr);

		var pos = $.inArray(this.get(0),a);

		if ((pos != -1) && (a.length >= pos + 2))
			return a.eq(pos + 1);
		else
			return false;
	},
	superPrev: function(expr) {
		var a = $(expr);

		var pos = $.inArray(this.get(0),a);

		if (pos > 0)
			return a.eq(pos - 1);
		else
			return false;
	}});


function play(id) {
	if (typeof(id) == 'undefined' && currTrack == null) {
		var track = $('.track').eq(0);
		id = track.attr('id');
	} else {
		if (currTrack != null && (typeof(id) == 'undefined' || id == currTrack)) 
		{
			return playPause();
		}

		var track = $('#' + id);

	}

	if (typeof(tracks[id]) == 'undefined' || tracks[id].h.length == 0) {
		currTrack = id;
		next();
		return false;
	}

	if (currTrack != null) {
		$('#' + currTrack).removeClass('active');
		$('#' + currTrack).removeClass('paused');
	}
	
	currTrack = id;
	
	track.addClass('active');
	
	setState('pl');

	freeze = true;
	
	plf(tracks[id].h,0);

	freeze = false;

	if (track.superNext('.track'))
		$('#next').show();
	else
		$('#next').hide();

	if (track.superPrev('.track'))
		$('#prev').show();
	else
		$('#prev').hide();


	return false;
}
function next() {
	if (shuffle) {
		var id = shufList[++shufPos];
		if ($('#' + id)) play(id);
	} else {
		var n = $('#' + currTrack).superNext('.track');
		if (n) play(n.attr('id'));
	}
	return false;
}

function prev() {
	if (shuffle) {
		if (shufPos > 0) {
			var id = shufList[--shufPos];
			if ($('#' + id)) play(id);
		} 
	} else {
		var n = $('#' + currTrack).superPrev('.track');
		if (n) play(n.attr('id'));
	}
	return false;
}
function playPause() {
	if (currSt == 'pl')
		setState('ps');
	else
		setState('pl');

	sendEvent('playpause','');

	return false;
}


function loadPlayer() {
	so = new SWFObject('/mediaplayer.swf','jspl','1','1','7');
	so.addVariable('javascriptid', 'jfpl');
	/*so.addVariable('file', '/empty.xml');*/
	so.addVariable('enablejs', 'true');
	so.addVariable('autostart', 'false');

	so.write('player');
}

$(function() { loadPlayer(); });

function sendEvent(typ,prm) { 
	thisMovie('jspl').sendEvent(typ,prm); 
};

function getUpdate(type,pr1,pr2,swf) {
	if (freeze) return;
	if (type == 'time') {
		if (pr2 == 0) {
			if ($('#' + currTrack).superNext('.track'))
				next();
			else {
				setState('st');
				$('#next').hide();
				currTrack = null;
			}
			elapsed = 0;
		} else {
			elapsed = pr1;
		}
	}
}

$(function() { origTitle = document.title; });

function setState(s) {
	if (currSt == s) return;

	currSt = s;

	if (s == 'pl') {
		document.title = 'listening... ' + origTitle;
		$('#plico').remove();
		$('head').append('<link id="plico" rel="shortcut icon" href="" />');
		$('#' + currTrack).removeClass('paused');
		$('#' + currTrack).addClass('active');
		$('#play').removeClass('pause');
		$('#play').addClass('active');
	} else { 
		document.title = origTitle;
		$('#plico').remove();
		$('head').append('<link id="plico" rel="shortcut icon" href="" />');
		$('#play').addClass('pause');
		if (s == 'ps') {
			$('#' + currTrack).addClass('paused');
		} else {
			$('#play').removeClass('active');
			$('#play').removeClass('pause');
		}
	}
}

function plf(h,o) {
	if (typeof(thisMovie('jspl')) == 'undefined' || typeof(thisMovie('jspl').loadFile) != 'function') {
		setTimeout("plf('" + h + "'," + o + ")", 100);
		return false;
	}
	currHash = h;
	thisMovie('jspl').loadFile({file:'/songs/track_' + h + '.mp3'});
	sendEvent('playpause','');
	if (o > 0)
		sendEvent('scrub', o);
}

function thisMovie(swf) {
  if(navigator.appName.indexOf("Microsoft") != -1) {
    return window[swf];
  } else {
    return document[swf];
  }
};

