// player event listeners 
var player   =  null;
var playlist  =  null;

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

function playerReady(obj) {	
	//alert('playerReady');
	//console.log('playerReady');
		
	var $player = $('#'+obj.id);

	if(!$player.length) setTimeout(function(){
		playerReady(obj);
		
	}, 100);
		
	else checkPlaylistLoaded(obj);
	
}


//						** CHECK PLAYLIST LOADED **

function checkPlaylistLoaded(obj) {
	var player = document.getElementById(obj['id']);
	var jsPlaylist = player.getPlaylist();
	
	if (jsPlaylist.length > 0) {	
		var playlist = createPlaylist(obj);	
		player.addControllerListener("PLAYLIST","playlistHandler");
		player.addControllerListener("ITEM","itemHandler");
		player.addModelListener('STATE', 'stateMonitor');
	} else {
													  // 150
		setTimeout(function(){checkPlaylistLoaded(obj)}, 550);
	}
}



//						** PLAYLIST HANDLER **

function playlistHandler(obj){

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

//						** ITEM HANDLER **
/*function itemHandler(obj)
{

  var item         = obj['index'];
//var playlist     = $('#' + obj['id']).next();
  var playlist     = $('#playercontainer').next();
  var currentItem  = 0;
*/


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




function stateMonitor(obj)
{

    if(obj.newstate == 'PLAYING')
	{

		//	$("#sliderWrap").hide();
  			//$('#player').width( $(window).innerWidth() );
		
    $("#slider").animate({marginTop:"-500px"},500);
			$("#topMenuImage").html('<img src="http://artscreen.dk/wp-content/themes/artscreen_v3/images/eject_down.png" />');
			$("#openCloseIdentifier").show();

	}

	if(obj.newstate == 'PAUSED')
	{

			//$("#sliderWrap").show();



	}
	
	if(obj.newstate == 'LOAD')
	{




	}

};





//						** CREATE PLAYLIST  **

/*function createPlaylist()
{
//var playerDiv = $('#' + player.id);
  var playerDiv = $('#playercontainer');
//playerDiv.after('</div><div class="jw_playlist_playlist"></div>');
  playerDiv.after('<div class="jw_playlist_playlist"></div>');
  return playerDiv.next();
};
*/
	
		
// append playlist to div..
function createPlaylist(obj){
	  var playerDiv = $('#mpl');
	//var playerDiv = $("#"+obj['id']);
	//if ($('.jcarousel').length > 0) {
 		//$('.punk').remove();
 		/* on or off ?*/
 		//$('.jcarousel-clip').remove();
 		
		
 		// not .empty
		$('#wrappa').empty();
	//}
			
	return $("<ul class='punk jcarousel-skin-ie7'></ul>").appendTo( '#wrappa' );


}

//						** POPULATE PLAYLIST **

function populatePlaylist(player, jsPlaylist, playlist){
	
	//console.log('populatePlaylist',jsPlaylist);
	//alert('populatePlaylist');
	
	playlist.empty();
	for (var i=0; i<jsPlaylist.length; i++) {
		var jsItem = jsPlaylist[i];
		var alternate = "even";
		if (i % 2) {
			alternate = "odd";
		}
		// classnames
		playlist.append('<li class="playlist-'+i+'">'+dump(jsItem)+"</li>");
	}
	var playlistItem = 0;
	playlist.children().each(function(){
		var currentItem = playlistItem;
		
	
				//$(this).attr('class')).live('click',function () {
		$('.'+$(this).attr('class')).die('click').live('click',function () {
		//$(this).click(function () {

			player.sendEvent("ITEM", currentItem);
		});
		playlistItem++;
	});
	
	
	//console.log('populate.playlist');
	playlist.trigger('populate.playlist');


	
}


//						** DUMP **

function dump(arr) {
	var output = "<span class='thumbs_info'><h2>${title}</h2><p>${description}</p></span><img src='${image}'>";
	var variables = getVars(output);
	// variables: title, description, image
	for (var j=0; j<variables.length; j++) {
	//console.log(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("${title}${description}${image}","");
	return output;
}

//						** DUMP TEXT **

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 += "<li class='"+item+"'>";
				dumped_text += dump(value);
				dumped_text += "</li>";
			} else {
				dumped_text += "<li class='"+item+"'>"+ value + "</li>";
			}
		}
	} else {
		dumped_text += arr+" ("+typeof(arr)+")";
	}
	return dumped_text;
}


//						** GET VARS STRING **

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