var usePlayList = new Array();
var playItem = new Array();
var playList = new Array();

$(document).ready(
	function()
	{
		var bpl = $('.bplayer').length; 
		
		$('.bplayer').each(function(i){
			var pid = $(this).attr('id');
			createPlayer(pid);
			$.get('/bplayer-playlist/index/ffid/' + pid, null, 
					function(d) 
					{
						playList[pid] = eval(d); 
						registerPlayer(pid);
					} 
			);
		});
		
		var cpl = $('.cplayer').length; 
        
        $('.cplayer').each(function(i){
            var pid = $(this).attr('id');
            createPlayerSpecial(pid);
            //alert('/bplayer-playlist/index/ffid/' + pid);
            $.get('/bplayer-playlist/index/ffid/' + pid, null, 
                    function(d) 
                    {
                        playList[pid] = eval(d); 
                        registerPlayer(pid, true);
                    } 
            );
        });
		
		// controls hover
		$('.player_controls li').hover(
				function()
				{
					$(this).addClass('ui-state-hover');
				},
				function()
				{
					$(this).removeClass('ui-state-hover');
				}
		);
		
	}
);


var playerMarkup= '<div id="SELECTOR_jquery_jplayer"></div>\n\
	<div class="player_wrap ui-widget">\n\
	<div id="SELECTOR_player_container" class="player_container ui-widget-header ui-corner-top">\n\
		<ul id="SELECTOR_player_controls" class="player_controls">\n\
			<li id="SELECTOR_player_play" class="player_play ui-state-default ui-corner-all"><a class="ui-icon ui-icon-play" href="#" onclick="$(\'#SELECTOR_jquery_jplayer\').play(); return false;" title="play"><span>play</span></a></li>\n\
			<li id="SELECTOR_player_pause" class="player_pause ui-state-default ui-corner-all"><a class="ui-icon ui-icon-pause" href="#" onclick="$(\'#SELECTOR_jquery_jplayer\').pause(); return false;" title="pause"><span>pause</span></a></li>\n\
			<li id="SELECTOR_player_stop" class="player_stop ui-state-default ui-corner-all"><a class="ui-icon ui-icon-stop" href="#" onclick="$(\'#SELECTOR_jquery_jplayer\').stop(); return false;" title="stop"><span>stop</span></a></li>\n\
			<li id="SELECTOR_player_volume_min" class="player_volume_min ui-state-default ui-corner-all"><a class="ui-icon ui-icon-volume-off"  href="#" onclick="$(\'#SELECTOR_jquery_jplayer\').volume(0); return false;" title="min volume"><span>min volume</span></a></li>\n\
			<li id="SELECTOR_player_volume_max" class="player_volume_max ui-state-default ui-corner-all"><a class="ui-icon ui-icon-volume-on"  href="#" onclick="$(\'#SELECTOR_jquery_jplayer\').volume(100); return false;" title="max volume"><span>max volume</span></a></li>\n\
			<li id="SELECTOR_ctrl_prev" class="ctrl_prev ui-state-default ui-corner-all"><a href="#" class="ui-icon ui-icon-seek-prev" return false;" title="previous track"><span>previous</span></a></li>\n\
			<li id="SELECTOR_ctrl_next" class="ctrl_next ui-state-default ui-corner-all"><a href="#" class="ui-icon ui-icon-seek-next" return false;" title="next track"><span>next</span></a></li>\n\
		</ul>\n\
		<div id="SELECTOR_play_time" class="play_time"></div>\n\
		<div id="SELECTOR_total_time" class="total_time"></div>\n\
		<div id="SELECTOR_player_progress" class="player_progress">\n\
			<div id="SELECTOR_player_progress_load_bar" class="player_progress_load_bar ui-progressbar ui-widget ui-widget-content ui-corner-all">\n\
				<div style="" id="SELECTOR_player_progress_play_bar" class="player_progress_play_bar ui-progressbar-value ui-state-highlight ui-corner-all"></div>\n\
			</div>\n\
		</div>\n\
		<div id="SELECTOR_player_volume_bar" class="player_volume_bar ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all">\n\
			<div id="SELECTOR_player_volume_bar_value" class="player_volume_bar_value ui-slider-range ui-state-highlight ui-corner-all"></div>\n\
		</div>\n\
	</div>\n\
	<div id="SELECTOR_playlist_list" class="playlist_list ui-widget-content ui-corner-bottom">\n\
		<ul>\n\
		</ul>\n\
	</div>\n\
	</div>';

var playerMarkupSpecial = '<div id="SELECTOR_jquery_jplayer"></div>\n\
	    <div class="player_wrap ui-widget">\n\
	    <div id="SELECTOR_player_container" class="player_container ui-widget-header ui-corner-top">\n\
	        <ul id="SELECTOR_player_controls" class="player_controls">\n\
	            <li id="SELECTOR_player_play" class="player_play ui-state-default ui-corner-all"><a class="ui-icon ui-icon-play" href="#" onclick="$(\'#SELECTOR_jquery_jplayer\').play(); return false;" title="play"><span>play</span></a></li>\n\
	            <li id="SELECTOR_player_pause" class="player_pause ui-state-default ui-corner-all"><a class="ui-icon ui-icon-pause" href="#" onclick="$(\'#SELECTOR_jquery_jplayer\').pause(); return false;" title="pause"><span>pause</span></a></li>\n\
	            <li id="SELECTOR_player_stop" class="player_stop ui-state-default ui-corner-all"><a class="ui-icon ui-icon-stop" href="#" onclick="$(\'#SELECTOR_jquery_jplayer\').stop(); return false;" title="stop"><span>stop</span></a></li>\n\
	            <li id="SELECTOR_player_volume_min" class="player_volume_min ui-state-default ui-corner-all"><a class="ui-icon ui-icon-volume-off"  href="#" onclick="$(\'#SELECTOR_jquery_jplayer\').volume(0); return false;" title="min volume"><span>min volume</span></a></li>\n\
	            <li id="SELECTOR_player_volume_max" class="player_volume_max ui-state-default ui-corner-all"><a class="ui-icon ui-icon-volume-on"  href="#" onclick="$(\'#SELECTOR_jquery_jplayer\').volume(100); return false;" title="max volume"><span>max volume</span></a></li>\n\
	            <li id="SELECTOR_ctrl_prev" class="ctrl_prev ui-state-default ui-corner-all"><a href="#" class="ui-icon ui-icon-seek-prev" return false;" title="previous track"><span>previous</span></a></li>\n\
	            <li id="SELECTOR_ctrl_next" class="ctrl_next ui-state-default ui-corner-all"><a href="#" class="ui-icon ui-icon-seek-next" return false;" title="next track"><span>next</span></a></li>\n\
	        </ul>\n\
	        <div id="SELECTOR_play_time" class="play_time"></div>\n\
	        <div id="SELECTOR_total_time" class="total_time"></div>\n\
	        <div id="SELECTOR_player_progress" class="player_progress">\n\
	            <div id="SELECTOR_player_progress_load_bar" class="player_progress_load_bar ui-progressbar ui-widget ui-widget-content ui-corner-all">\n\
	                <div style="" id="SELECTOR_player_progress_play_bar" class="player_progress_play_bar ui-progressbar-value ui-state-highlight ui-corner-all"></div>\n\
	            </div>\n\
	        </div>\n\
	        <div id="SELECTOR_player_volume_bar" class="player_volume_bar ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all">\n\
	            <div id="SELECTOR_player_volume_bar_value" class="player_volume_bar_value ui-slider-range ui-state-highlight ui-corner-all"></div>\n\
	        </div>\n\
	    </div>\n\
	    <div id="SELECTOR_playlist_list" class="playlist_list ui-widget-content ui-corner-bottom">\n\
	        <ul>\n\
	        </ul>\n\
	    </div>\n\
	    </div>';

function createPlayer(selector)
{
  
	$('#' + selector).append('<div class="player-loader"></div>');
	preparedMarkup = playerMarkup.replace(/SELECTOR/g, selector);
	
	$('#' + selector).append(preparedMarkup);
	
}

function createPlayerSpecial(selector)
{
  
    $('#' + selector).append('<div class="player-loader"></div>');
    preparedMarkup = playerMarkupSpecial.replace(/SELECTOR/g, selector);
    
    $('#' + selector).append(preparedMarkup);
    
}

function licenseOrder(trackTitle)
{
    
	$.modal('<iframe id="order-iframe" src="/catalogue/order/?track=' + urlencode(trackTitle) + '"></iframe>',
	{
		onOpen: function(dialog) {
			dialog.overlay.fadeIn('slow', function () {
                dialog.data.fadeIn('fast', function () {
                    dialog.container.fadeIn('fast');
                });
            });
		},
	onClose: function(dialog) {
		
            dialog.container.slideUp('slow', function () {
				dialog.data.hide();
                dialog.overlay.fadeOut('fast', function () {
                    $.modal.close(); // must call this!
                });
            });
	   }
	});
	
}

function registerPlayer(selector, special)
{
    if (undefined == special) {
        var special = false;
    } else {
        var special = special;
    }
    
	playerWrapSelector = '#' + selector + '_jquery_jplayer';
	
	usePlayList[selector] = false;
	playItem[selector] = 0;

	$(playerWrapSelector).jPlayer({
		ready: function() {
			displayPlayList(selector, special);
			playListEnable(selector, true);
			$('#' + selector + ' .player-loader').hide();
			$('#' + selector + ' .player_wrap').fadeIn('slow');
		}
	});

	$(playerWrapSelector).jPlayerId("play", selector + "_player_play");
	$(playerWrapSelector).jPlayerId("pause", selector + "_player_pause");
	$(playerWrapSelector).jPlayerId("stop", selector + "_player_stop");
	$(playerWrapSelector).jPlayerId("loadBar", selector + "_player_progress_load_bar");
	$(playerWrapSelector).jPlayerId("playBar", selector + "_player_progress_play_bar");
	$(playerWrapSelector).jPlayerId("volumeMin", selector + "_player_volume_min");
	$(playerWrapSelector).jPlayerId("volumeMax", selector + "_player_volume_max");
	$(playerWrapSelector).jPlayerId("volumeBar", selector + "_player_volume_bar");
	$(playerWrapSelector).jPlayerId("volumeBarValue", selector + "_player_volume_bar_value");

	// stop playing on other players if this one is clicked
	$('#' + selector + "_player_play").click(function(){stopPlayersExcept(selector)});
	$('#' + selector + "_player_progress_play_bar").click(function(){stopPlayersExcept(selector)});
	$('#' + selector + "_player_progress_load_bar").click(function(){stopPlayersExcept(selector)});
	
	$(playerWrapSelector).onProgressChange( function(loadPercent, playedPercentRelative, playedPercentAbsolute, playedTime, totalTime) {
		var myPlayedTime = new Date(playedTime);
		var ptMin = (myPlayedTime.getMinutes() < 10) ? "0" + myPlayedTime.getMinutes() : myPlayedTime.getMinutes();
		var ptSec = (myPlayedTime.getSeconds() < 10) ? "0" + myPlayedTime.getSeconds() : myPlayedTime.getSeconds();
		$('#' + selector + "_play_time").text(ptMin+":"+ptSec);

		var myTotalTime = new Date(totalTime);
		var ttMin = (myTotalTime.getMinutes() < 10) ? "0" + myTotalTime.getMinutes() : myTotalTime.getMinutes();
		var ttSec = (myTotalTime.getSeconds() < 10) ? "0" + myTotalTime.getSeconds() : myTotalTime.getSeconds();
		$('#' + selector + "_total_time").text(ttMin+":"+ttSec);
	});
	
	var onEndOfSong = endOfSong(selector);
	$(playerWrapSelector).onSoundComplete(onEndOfSong);

	$('#' + selector + "_ctrl_prev").click( function() {
		playListPrev(selector);
		return false;
	});

	$('#' + selector + "_ctrl_next").click( function() {
		playListNext(selector);
		return false;
	});
	
	//$('#' + selector + ' .player-loader').remove();
}

function endOfSong(selector) {
	if(usePlayList[selector]) {
		playListNext(selector);
	}
}

function displayPlayList(selector, special) {
    
    if (undefined == special) {
        var special = false;
    } else {
        var special = special;
    }
    
	playListLength = playList[selector].length;
	for (i=0; i < playListLength; i++) {
	    if (special) {
	        var linkArray = playList[selector][i].filename.split('/');
	        linkArray = linkArray.splice(2);
	        var linkString = linkArray.join('/');
	        $('#' + selector + "_playlist_list ul").append("<li id='" + selector + "_playlist_item_"+i+"'><span id="+'"track"'+">"+ playList[selector][i].name + '</span><a class="license download" href="/download/?f='+ linkString + '" title="' + playList[selector][i].name + '"><span class="download-icon ui-icon ui-icon-arrowreturnthick-1-s"></span>Download</a></li>');
	    } else {
           $('#' + selector + "_playlist_list ul").append("<li id='" + selector + "_playlist_item_"+i+"'><span id="+'"track"'+">"+ playList[selector][i].name + '</span><a class="license" onclick="licenseOrder($(this).attr(\'title\')); return false;" href="/catalogue/order" title="' + playList[selector][i].name + '"><span id="license-icon" class="ui-icon ui-icon-mail-closed"></span>License</a></li>');
	    }
		$('#' + selector + "_playlist_item_"+i).data( "index", i ).hover(
			function() {
				if (playItem[selector] != $(this).data("index")) {
					$(this).addClass("playlist_hover");
				}
			},
			function() {
				$(this).removeClass("playlist_hover");
			}
		);
		
		$('#' + selector + "_playlist_item_"+i + " span").data( "index", i ).click( function() {
			var index = $(this).data("index");
			if (playItem[selector] != index) {
				// stop other players from playing
				//stopPlayersExcept(selector);
				playListChange( selector, index );
			}
		});
		
	}
}

function playListEnable(selector, e) {
	usePlayList[selector] = e;
	if(usePlayList[selector]) {
		playListChange( selector, playItem[selector]);
	} else {
		$('#' + selector + "_jquery_jplayer").stop();
	}
}

function playListChange(selector, index) {
	$('#' + selector + "_playlist_item_" + playItem[selector]).removeClass("playlist_current").find('#current').remove();
	$('#' + selector + "_playlist_item_" + index).addClass("playlist_current").prepend('<span id="current" class="ui-icon ui-icon-play"></span>');
	playItem[selector] = index;
	$('#' + selector + "_jquery_jplayer").setFile(playList[selector][playItem[selector]].filename).play();
}

function playListNext(selector) {
	if(usePlayList[selector]) {
		var index = (playItem[selector]+1 < playList[selector].length) ? playItem[selector] + 1: 0;
		playListChange(selector,index);
	}
}

function playListPrev(selector) {
	if(usePlayList[selector]) {
		var index = (playItem[selector]-1 >= 0) ? playItem[selector] - 1 : playList[selector].length - 1;
		playListChange(selector,index);
	}
}	

function startPlayer(selector)
{
	$('#' + selector + '_jquery_jplayer').play();
}

function stopPlayer(selector)
{
	$('#' + selector + '_jquery_jplayer').stop();
}

function stopPlayersExcept(selector)
{
	// stop other players from playing
	$(".bplayer").each(function(){
		var pid = $(this).attr('id');
		if (selector != pid) {
			$('#' + pid + '_jquery_jplayer').stop();
		}
	});
}

