var playlistSwitcher;
var hasThumbs = false;

try {
	var playlistReady = playerReady;
} catch (err){
}

playerReady = function(obj) {
	setTimeout(function(){checkPlaylistLoaded(obj)}, 1);
	try {
		playlistReady(obj);
	} catch (err){
	}
}

function itemHandler(obj) {

}

function checkPlaylistLoaded(obj) {
	var player = document.getElementById(obj['id']);
	var jsPlaylist = player.getPlaylist();
	if (jsPlaylist.length > 0) {
		var playlist = createPlaylist(obj);
		populatePlaylist(player, jsPlaylist, playlist);
		player.addControllerListener("PLAYLIST","playlistHandler");
		player.addControllerListener("ITEM","itemHandler");
	} else {
		setTimeout(function(){checkPlaylistLoaded(obj)}, 150);
	}
}

function createPlaylist(obj){
	var playerDiv = $("#"+obj['id']);
	playerDiv.after("<div class='jw_playlist_playlist' id='" + obj['id'] + "-playlist'></div>");
	return playerDiv.next();
}

function createPlaylistSwitcher(player) {
	
	if ($('#switcher-code').length > 0) {
		playlistSwitcher = '<div id="playlist-switcher">' + $('#switcher-code').html() + '</div>';
		$('.jw_playlist_playlist').prepend(playlistSwitcher);
		$('#playlist-switcher').find('li.select span').click(function() {
			if ($('#playlist-switcher').find('.switch-list').css('visibility') == "hidden") {
				var switchListTop = $(this).outerHeight() + "px";
				var switchListHeight = ($('.jw_playlist_playlist').outerHeight() - parseInt(switchListTop)) + "px";
				$('#videoplayer1-playlist').children().not('#playlist-switcher').remove();
				$('#playlist-switcher').find('.switch-list').css({'visibility': 'visible', 'top': switchListTop, 'height': switchListHeight});
				$(this).html('Select a Playlist').css({'cursor': 'default'});
			}
		});
		$('#playlist-switcher').find('a').click(function(e) {
			e.preventDefault();
			player.sendEvent('STOP');
			var playlistURL = $(this).attr('href') + "&thumb=" + hasThumbs;
			$('#switcher-code').find('li.select span').html($(this).html() + ". More playlists &raquo;");
			player.sendEvent('LOAD', playlistURL);
		});
	}
}

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];
		if (jsItem.image.length > 0 && hasThumbs == false) {
			hasThumbs = true;
		}
		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;
		if ($(this).hasClass('jw_playlist_item')) {
			$(this).click(function () {
				player.sendEvent("ITEM", currentItem);
				$('.jw_playlist_item').removeClass('playing');
				$(this).addClass('playing');
			});
		}
		playlistItem++;
	});
	createPlaylistSwitcher(player);
}

function dump(arr) {
	var output = "<div class='jw_playlist_image_div'><img src='${image}' class='jw_playlist_image' /></div><div class='jw_playlist_title'>${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);
}
