var mp3player = {
	pageglobal : 0,
	init : function() {
		$.music.create(user);
		$("<div/>").attr("id","sk_player").appendTo("#up_panel");
		$("<div/>").attr("id","sk_plbuttons").appendTo("#up_panel");
		$("<div/>").attr("id","sk_toprow").appendTo("#down_panel");
		$("<div/>").attr("id","sk_bottomrow").appendTo("#down_panel");
		$("<div/>").attr("id","sk_results").appendTo("#down_panel");
		$("<iframe/>").attr({id:"zomplayer",src:"/mp3player/player.php?trck=&",width:"375",height:"190",marginheight:"0",marginwidth:"0",frameborder:"no",scrolling:"no"}).appendTo("#sk_player");
		$("<div/>").attr("id","sk_loadpl").html(key.allPlaylists).appendTo("#sk_plbuttons");
		$("<div/>").attr("id","sk_label").text(key.play7+': ').appendTo("#sk_toprow");
		$(document.createElement("input")).attr({id:"sk_input",type:"text",value:""}).appendTo("#sk_toprow").focus();
		$("<div/>").attr("id","sk_reset").html(key.play10).appendTo("#sk_bottomrow");
		$("<div/>").attr("id","sk_search").addClass('sk-search').html(key.searchBtn).appendTo("#sk_bottomrow");
		$("<div/>").attr("id","sk_credits").html('Powered by Skreemr.com').appendTo("#sk_bottomrow");
		//main event responses
		$("#sk_search").bind("click",function(){mp3player.goForResults();});
		$("#sk_input").keypress(function(e){if(e.which==13){mp3player.goForResults();}});
		$("#sk_loadpl").click(function(){if(user>0){ mp3player.showPlaylistsToManage(); }else{ mp3player.askForLogin(); }});
		$("#sk_reset").click(function(){mp3player.clearSearch();});
		$("#titlebar .closeit").click(function(){window.close();});
		mp3player.retrievePreviousSearch();
	},
	goForResults : function() {
		if ($("#sk_input").val().length) {
			$("#sk_results").empty();
			$("#sk_search").addClass('searching').html(key.searchActn +' &nbsp;&nbsp;<img src="'+ general.baseUrl +'/images/loader-square.gif" alt="" />').unbind("click");
			mp3player.pageglobal=0;
			mp3player.showResults();
		}
	},
	retrievePreviousSearch : function() {
		if (_cookie.get('zombol_query').length) {
			$("#sk_input").val(_cookie.get('zombol_query'));
			_cookie.set('zombol_query','',-9);
			mp3player.goForResults();
		}
	},
	askForLogin : function() {
		if ($("#sk_input").val().length) {
			_cookie.set('zombol_query', $("#sk_input").val(), 1);
		}
		register.create();
	},
	clearSearch : function() {
		$("#sk_reset").hide();
		$("#sk_results").empty();
		$("#sk_input").val("").focus();
	},
	showResults : function(start) {
		var q = "q="+ encodeURIComponent($("#sk_input").val()) +'&';
		if (start===undefined) {start=0;} else {q += 'offset='+start+'&';}
		$.ajax({
			type:"POST",
			url:"/ajax/get-music.php",
			data: q,
			dataType: "json",
			success:function(oRes){
				$("#sk_search").html(key.searchBtn).removeClass('searching').bind("click",function(){mp3player.goForResults();});
				var xhtml = '';
				if (typeof(oRes)!='object' || oRes.res=='empty') {
					xhtml += '<div class="sk_row" align="center"><strong>'+ key.noResults +'</strong><div>';
				} else {
					for (var i in oRes) {
						xhtml += '<div class="sk_row"><div class="hidden">';
						xhtml += escape(oRes[i].artist +'|'+ oRes[i].title +'|'+ oRes[i].uri +'|'+ oRes[i].duration +'|'+ oRes[i].bitrate +'|'+ oRes[i].frequency);
						xhtml += '</div><div class="trackdata">';
						xhtml += '<h1>'+ (start+i*1+1) +'. <a href="javascript:void(0)">'+ oRes[i].title +'</a></h1><br clear="all" />';
						xhtml += '<span class="autor">'+ oRes[i].artist +'</span>';
						xhtml += '<span class="xtras">'+ oRes[i].duration +'</span>';
						xhtml += '<span class="xtras">'+ key.ano +': '+ oRes[i].year +'</span></div>';
						xhtml += '<div class="control"><img src="'+ general.baseUrl +'/images/play.gif" alt="'+ key.play +'" title="'+ key.play +'" /></div>';
						xhtml += '<div class="control2"><img src="'+ general.baseUrl +'/images/playlist.gif" alt="'+ key.play2 +'" title="'+ key.play2 +'" /></div>';
						xhtml += '</div>';
					}
				}
				$("#sk_results").html(xhtml);
				$("#sk_reset").show();
				var bPags = mp3player.pageglobal>0 || oRes.length==10,
				pag = '';
				if (bPags) { pag += '<div id="sk_nav">'; }
				if (mp3player.pageglobal>0) { pag += '<button class="navlink" id="sk_prev">'+ key.prev +'</button> '; }
				if (mp3player.pageglobal>0 && oRes.length==10) { pag += '&nbsp;&nbsp;&nbsp;&nbsp;'; }
				if (oRes.length==10) { pag += ' <button class="navlink" id="sk_next">'+ key.next +'</button>'; }
				if (bPags) { pag += '</div>'; }
				$("#sk_results").append(pag);
				$("#sk_prev").click(function(){mp3player.pageglobal--;mp3player.showResults(mp3player.pageglobal*10);});
				$("#sk_next").click(function(){mp3player.pageglobal++;mp3player.showResults(mp3player.pageglobal*10);});
				$(".control img").click(function(){mp3player.loadTrack($(this).parent().parent().children("div:first").text());});
				$(".trackdata h1 a").click(function(){
					mp3player.loadTrack($(this).parent().parent().prev().text());
				});
				$(".control2 img").click(function(){if(user>0){ mp3player.addToPlaylist($(this).parent().parent().children("div:first").text()); }else{ mp3player.askForLogin(); }});
			}
		});
	},
	loadTrack : function(o) {
		$("#zomplayer").attr('src','/mp3player/player.php?trck='+o+'&');
	},
	deleteTrack : function(id, pl) {
		if (confirm(key.play5 +"\n"+ key.deleteB)) {
			if ($.music.jremove(id) && $.music.save()) {
				mp3player.showPlaylistDetails(pl);
			} else {
				alert('404: Error when deleting track from playlist');
			}
		}
	},
	showPlaylistsToManage : function() {
		var oPLs = mp3player.getPlaylists(), xhtml='';
		$("#sk_results").html($("<div/>").addClass("sk_row sk_rowOrange").html(key.currPlaylists +': '+ oPLs.length));
		for (var i in oPLs) {
			xhtml = '<div class="trackdata"><h1>'+ (i*1+1) +'. </h1><h1 id="h1pl_'+ oPLs[i].id +'">'+ oPLs[i].title +'</h1></div>';
			xhtml += '<div class="control3"><img src="'+ general.baseUrl +'/images/iedit.gif" alt="'+ key.renameD +'" title="'+ key.renameD +'" id="plren_'+ oPLs[i].id +'" /></div>';
			xhtml += '<div class="control3"><img src="'+ general.baseUrl +'/images/iadd.gif" alt="'+ key.play3 +'" title="'+ key.play3 +'" id="pldet_'+ oPLs[i].id +'" /></div>';
			xhtml += '<div class="control3"><img src="'+ general.baseUrl +'/images/idel.gif" alt="'+ key.optionD +'" title="'+ key.optionD +'" id="pldel_'+ oPLs[i].id +'" /></div>';
			$("<div/>").addClass("sk_row").appendTo("#sk_results").html(xhtml);
		}
		$("h1[id^=h1pl]").css("cursor","pointer").click(function(){
			mp3player.loadPlaylist($(this).attr("id").substr(5));
		});
		$(".control3 img").click(function(){
			var plid = $(this).attr('id').substr(6),
			action = $(this).attr('id').substr(0,5);
			switch(action) {
				case "plren":
					mp3player.showFormToRenamePlaylist(plid, $(this));break;
				case "pldet":
					mp3player.showPlaylistDetails(plid);break;
				case "pldel":
					mp3player.deletePlaylist(plid);break;
			}
		});
	},
	getPlaylists : function() {
		var oPLsAll = $.music.jget.t(),
		oPLs = oPLsAll[0].childs;
		return oPLs;
	},
	loadPlaylist : function(id) {
		var oTrck, str = '', oPL = $.music.jget.o(id).childs;
		for (var i in oPL) {
			oTrck = oPL[i];
			str += oTrck.artist +'|'+ oTrck.title +'|'+ oTrck.uri +'|'+ oTrck.duration +'|'+ oTrck.bitrate +'|'+ oTrck.frequency +'::';
		}
		str = escape(str.substr(0,str.length-2));
		mp3player.loadTrack(str);
		mp3player.showPlaylistDetails(id);
	},
	createNewPlaylist : function(data) {
		if ($("#newPlaylistName").val().length>0) {
			var oPL = {"id":null,"title":$("#newPlaylistName").val(),"order":null,"folder_id":null,"childs":[]};
			if ($.music.jset(0, oPL) && $.music.save()) {
				var oTrck = {"id":null,"artist":data[0],"title":data[1],"uri":data[2],"duration":data[3],"bitrate":data[4],"frequency":data[5],"order":null,"folder_id":null};
				$.music.jset(oPL.id, oTrck);
				$.music.save();
				$.modal.close();
				$("#addPlWrap").remove();
			} else {
				$("#makeNewPL").prev().before('<div id="error-container">'+ key.errorPlaylist +'</div>');
			}
		}
		mp3player.showResults();
	},
	showFormToCreatePlaylist : function(data) {
		var txtf = $(document.createElement("input")).attr({id:"newPlaylistName",type:"text",value:"",maxlength:"20"});
		$("#addPlWrap").html('<span id="modal-close" class="cursor"><img src="'+ general.baseUrl +'/images/modal-close.gif" /></span><br /><h3 class="orange">'+ key.renPlaylist2 +':</h3>').append(txtf).append('<br /><br /><input type="button" value="'+ key.newPlaylist +'" id="makeNewPL" />&nbsp;<input type="button" id="cancelPL" value="'+ key.cancel +'" /><br />');
		$("#newPlaylistName").focus().keyup(function(e){
			if(e.which==13 && $("#newPlaylistName").val().length>0){mp3player.createNewPlaylist(data);}
		});
		$("#makeNewPL").click(function(){
			if ($("#newPlaylistName").val().length>0) {mp3player.createNewPlaylist(data);}
		});
		$("#noteOverlay, #cancelPL, #modal-close").click(function(){ $.modal.close();$("#addPlWrap").remove(); });
		$(document).keyup(function(e){if(e.which==27){$.modal.close();$("#addPlWrap").remove();}});
	},
	addToPlaylist : function(p) {
		var oPLs = mp3player.getPlaylists(),
		hasPLs = oPLs.length>0,
		data = unescape(p).split('|'),
		list = $("<select/>").attr("id","parentPlayList"),
		optg = hasPLs ? $("<optgroup/>").attr("label","Playlists").appendTo(list) : list,
		oTrck = {"id":null,"artist":data[0],"title":data[1],"uri":data[2],"duration":data[3],"bitrate":data[4],"frequency":data[5],"order":null,"folder_id":null};
		for (var i in oPLs) {
			$("<option/>").attr("value",oPLs[i].id).html(oPLs[i].title).appendTo(optg);
		}
		$("<option/>").attr("value","0").css({fontWeight:"bold",fontStyle:"italic"}).html(key.newPlaylist).appendTo(list);
		$("<div/>").attr({id:"addPlWrap"}).html('<span id="modal-close" class="cursor"><img src="'+ general.baseUrl +'/images/modal-close.gif" /></span><br /><h3 class="orange">'+ key.currPlaylists +':</h3>').append(list).append('<br /><br /><input type="button" value="'+ key.play2 +'" id="addTo" />&nbsp;<input type="button" id="cancelAdd" value="'+ key.cancel +'" /><br />').insertAfter("#music_wrap").modal({
			overlayId:"noteOverlay",
			containerId:"setQuicklinks",
			onShow:function() {
				$("#setQuicklinks").css({top:"300px"});
				$("#noteOverlay, #cancelAdd, #modal-close").click(function(){ $.modal.close();$("#addPlWrap").remove(); });
				$(document).keyup(function(e){if(e.which==27){$.modal.close();$("#addPlWrap").remove();}});
			}
		});
		$("#parentPlayList").change(function(){
			if ($(this).val()==0) {
				mp3player.showFormToCreatePlaylist(data);
			}
		});
		$("#addTo").click(function(){
			if (hasPLs) {
				if ($.music.jset($("#parentPlayList").val(), oTrck) && $.music.save()) {
					$.modal.close();
					$("#addPlWrap").remove();
				} else {
					$(this).prev().before('<div id="error-container">'+ key.errorPlaylist +'</div>');
				}
			} else {
				mp3player.showFormToCreatePlaylist(data);
			}
		});
	},
	renamePlaylist : function(id) {
		var oPL = $.music.jget.o(id);
		oPL.title = $("#playListNewName").val();
		if ($.music.jupdate(oPL) && $.music.save()) {
			$.modal.close();
			$("#renPlWrap").remove();
			mp3player.showPlaylistsToManage();
		} else {
			$(this).prev().before('<div id="error-container">'+ key.errorPlaylist +'</div>');
		}
	},
	showFormToRenamePlaylist : function(id, el) {
		var curName = el.parent().prev().children("h1:nth-child(2)").html(),
		txtf = $(document.createElement("input")).attr({id:"playListNewName",type:"text",value:curName,maxlength:"20"});
		$("<div/>").attr({id:"renPlWrap"}).html('<span id="modal-close" class="cursor"><img src="'+ general.baseUrl +'/images/modal-close.gif" /></span><br /><h3 class="orange">'+ key.renPlaylist +':</h3>').append(txtf).append('<br /><br /><input type="button" value="'+ key.renameD +'" id="renamePL" />&nbsp;<input type="button" id="cancelRename" value="'+ key.cancel +'" /><br />').insertAfter("#music_wrap").modal({
			overlayId:"noteOverlay",
			containerId:"setQuicklinks",
			onShow:function() {
				var h = parseInt( $("#setQuicklinks").css("height"),10 ),
						t = parseInt( $("#setQuicklinks").css("top"),10 ),
						pos = h  / 2 - 36;
				$("#setQuicklinks").css({top:(t - pos)+"px"});
				$("#noteOverlay, #cancelRename, #modal-close").click(function(){ $.modal.close();$("#renPlWrap").remove(); });
				$(document).keyup(function(e){if(e.which==27){$.modal.close();$("#renPlWrap").remove();}});
			}
		});
		$("#playListNewName").focus().keyup(function(e){
			if(e.which==13 && $("#playListNewName").val().length>0){mp3player.renamePlaylist(id);}
		});
		$("#renamePL").click(function(){
			if ($("#playListNewName").val().length>0) {mp3player.renamePlaylist(id);}
		});
	},
	showPlaylistDetails : function(id) {
		var oPL = $.music.jget.o(id),
		xhtml = $("<div/>").addClass("sk_row sk_rowOrange").html('Playlist &quot;<u>'+ oPL.title +'</u>&quot; '+ key.containing +' '+ oPL.childs.length +' '+ key.elements)
		startPlaying = function(trid){
			var oRes = $.music.jget.o(trid),
			str = escape(oRes.artist +'|'+ oRes.title +'|'+ oRes.uri +'|'+ oRes.duration +'|'+ oRes.bitrate +'|'+ oRes.frequency);
			mp3player.loadTrack(str);
		};
		$("#sk_results").html(xhtml);
		for (var i in oPL.childs) {
			xhtml = '<div class="trackdata"><h1>'+ (i*1+1) +'.</h1> <h1 id="h1ply_'+ oPL.childs[i].id +'">'+ oPL.childs[i].artist +' - '+ oPL.childs[i].title+'</h1></div>';
			xhtml += '<div class="control3"><img src="'+ general.baseUrl +'/images/play.gif" alt="'+ key.play +'" title="'+ key.play +'" id="trply_'+ oPL.childs[i].id +'" /></div>';
			xhtml += '<div class="control3"><img src="'+ general.baseUrl +'/images/idel.gif" alt="'+ key.optionD +'" title="'+ key.optionD +'" id="trdel_'+ oPL.childs[i].id +'" /></div>';
			$("<div/>").addClass("sk_row").appendTo("#sk_results").html(xhtml);
		}
		/*$("#trbak").click(function(){$("#trbak").parent().remove();mp3player.showPlaylistsToManage();});*/
		$(".control3 img").click(function(){
			var trid = $(this).attr('id').substr(6),
			action = $(this).attr('id').substr(0,5);
			switch(action) {
				case "trply":
					startPlaying(trid);
					break;
				case "trdel":
					mp3player.deleteTrack(trid, id);
					break;
			}
		});
		$(".trackdata h1[id^='h1ply']").click(function(){
			var trid = $(this).attr('id').substr(6);
			startPlaying(trid);
		});
	},
	deletePlaylist : function(id) {
		if (confirm(key.play6 +"\n"+ key.deleteB)) {
			if ($.music.jremove(id) && $.music.save()) {
				mp3player.showPlaylistsToManage();
			} else {
				alert('404: Error when deleting playlist');
			}
		}
	}
};
$(function(){
	mp3player.init();
});

