var player    =  null;
var playlist  =  null;
var time = null;
var bufferFlag  =  true;


function errorMonitor(obj) {
        if (obj.message == 'Error #2032'){
		var c = getUrlVars()['c'];
		player.sendEvent("ITEM", c);		
		player.sendEvent('PLAY', 'true');
		
		}
};


function playerReady(obj)
      {
        player = gid(obj.id);
        displayItem();
      };


function displayItem()
      {
        try
        {
          playlist = player.getPlaylist();
        }
        catch(e)
        { 
          setTimeout("displayItem()", 100);
        }
		var d = getUrlVars()['c'];
      };


function itemMonitor(obj)
{
var jsPlaylist = player.getPlaylist();
if (jsPlaylist.length > 0) {
     
		var q = getUrlVars()['q'];
		var p = getUrlVars()['p'];
		var rl = getUrlVars()['rl'];
		var pl = getUrlVars()['pl'];
		var ps = getUrlVars()['ps'];
		var pbs = getUrlVars()['pbs'];
		var hp = getUrlVars()['hp'];
		var f = getUrlVars()['f'];
		var l = getUrlVars()['l'];
		if (q && rl) window.location='#q='+q+'&p='+p+'&rl='+rl;
		else if (!q && rl) window.location='#rl='+rl;
		else if (q && pl) window.location='#q='+q+'&p='+p+'&pl='+pl;
		else if (!q && pl) window.location='#pl='+pl;
		else if (q && l) window.location='#q='+q+'&p='+p+'&l='+l;
		else if (!q && l) window.location='#l='+l;
	    else if (q && ps) window.location='#q='+q+'&p='+p+'&ps='+ps;
		else if (!q && ps) window.location='#ps='+ps;
		else if (q && pbs) window.location='#q='+q+'&p='+p+'&pbs='+pbs;
		else if (!q && pbs) window.location='#pbs='+pbs;
		else if (hp) window.location = window.location+'&hp='+hp;
		else if (l) window.location='#l='+l;
		var title = jsPlaylist[obj.index].title;
		var id1 = title.split(".");
		id = id1[0];
		id2 = id1[1];
		window.location = window.location+'&c='+id; 
		$.growl('Słuchasz:', title);
		document.title = id2;
	    tekst_pl(title);
	}	
	
}

function gid(name)
      {
        return document.getElementById(name);
};



try {
	var playlistReady = playerReady;
} catch (err){
}

playerReady = function(obj) {
	setTimeout(function(){checkPlaylistLoaded(obj)}, 1);
	try {
		playlistReady(obj);
	} catch (err){
	}
}

function itemHandler(obj) {
	var item = obj['index'];
	var playlist = $("#"+obj['id']).next();
	var currentItem = 0;
	playlist.children().each(function(){
		if (currentItem == item) {
		$(this).addClass("playing");
		}
		else {
		$(this).removeClass("playing");
		}
		currentItem++;
	});
}

function timeMonitor(obj)
      {
		var song = document.title.split("(");
		ids = song[0];
		if (!ids) ids = document.title;
		time = obj.position.split(".");
		var time2 = time[0]/60;
		if (time[0] < 60) time2 = '00:'+time;
		else if (time[0] > 59) {
		var sec = time[0].split(".");
		var time2 = sec[0]+':'+sec[1];
		}
		document.title = ids+' ('+time+')';
	  };


function checkPlaylistLoaded(obj) {
	var player = document.getElementById(obj['id']);
	var jsPlaylist = player.getPlaylist();
	if (jsPlaylist.length > 0) {
	    var c = getUrlVars()['c'];
		var playlist = createPlaylist(obj);
		populatePlaylist(player, jsPlaylist, playlist);
		player.addControllerListener("PLAYLIST","playlistHandler");
		player.addControllerListener("ITEM","itemHandler");
		player.addControllerListener("ITEM", "itemMonitor");
		player.addModelListener("TIME", "timeMonitor");
		player.addModelListener("ERROR", "errorMonitor");
		if (c) {
		c--;
		player.sendEvent("ITEM", c); 
		player.sendEvent('PLAY', 'true');
		}
		
		else if (!c) window.location = window.location+'&c=0';	
	}
	
	else {
	
	setTimeout(function(){checkPlaylistLoaded(obj)}, 150);
	
	}
}

function createPlaylist(obj){
	var playerDiv = $("#"+obj['id']);
	playerDiv.after("<div class='jw_playlist_playlist'></div>");
	return playerDiv.next();
}

function playlistHandler(obj){
	var player = document.getElementById(obj['id']);
	var jsPlaylist = player.getPlaylist();
	var playerDiv = $("#"+obj['id']);
	var playlist = playerDiv.next();
	populatePlaylist(player, jsPlaylist, playlist);
}

function populatePlaylist(player, jsPlaylist, playlist){
	playlist.empty();
	for (var i=0;i<jsPlaylist.length;i++) {
		var jsItem = jsPlaylist[i];
		var alternate = "even";
		if (i % 2) {
			alternate = "odd";
		}
		playlist.append("<div class='jw_playlist_item "+alternate+"'>"+dump(jsItem)+"</div>");
	}
	var playlistItem = 0;
	playlist.children().each(function(){
		
		var currentItem = playlistItem;
		$(this).click(function (event) {
		
		var e = event || window.event;
		var el;
        if(e.target){
		   var node = e.target;
			 el = node.tagName
			 }
		   else{
			 el = e.srcElement;
			}
				if (el == 'IMG'){
					
					var plst = null;
					plst = player.getPlaylist();
					var url = (plst[currentItem].file);
					var name = (plst[currentItem].title);
					addmp3_from_playlist(name,url);
					}
					else if (el == 'DIV'){
					var plst = null;
					player.sendEvent("ITEM", currentItem);
			        }
		});
	
	playlistItem++;
	
	});
}


function dump(arr) {
	var output = "<div class='jw_playlist_image_div'><a href='javascript:;'><img title='Dodaj do playlisty' src='images/action_add.png' class='jw_playlist_image' /></a></div><div class='jw_playlist_title' onmouseover='this.style.cursor=\"pointer\"''>${title}</div><div class='jw_playlist_description'>${description}</div><div class='clear'></div>";
	var variables = getVars(output);
	for (var j=0; j<variables.length; j++) {
		var variable = variables[j];
		var varName = variable.replace('${','').replace('}','');
		var value = arr[varName];
		if (!value) {
			value = '';
		}
		output = output.replace(variable, value);
	}
	output = output.replace("<div class='jw_playlist_image_div'><img src='' class='jw_playlist_image' /></div>","");
	return output;
}

function dumpText(arr) {
	var dumped_text = "";
	if(typeof(arr) == 'object') {
		for(var item in arr) {
			var value = arr[item];		
			if(typeof(value) == 'object') {
				dumped_text += "<div class='"+item+"'>";
				dumped_text += dump(value);
				dumped_text += "</div>";
			} else {
				dumped_text += "<div class='"+item+"'>"+ value + "</div>";
			}
		}
	} else {
		dumped_text += arr+" ("+typeof(arr)+")";
	}
	return dumped_text;
}

function getVars(str){
	return str.match(/\$\{(.*?)\}/g);
}