// settings
var settings_player = "/support-files/player.swf";
var settings_popup = "/popup2.html";
var settings_playlist_autostart = false;
var settings_playlist_show_author = true;
var settings_playlist_show_thumbnail = true;
var settings_playlist_show_link = false;
var settings_playlist_link_image = 'info.gif';
var settings_playlist_link_target = '_blank';
var settings_player_width = 360;
var settings_player_height = 360;
var settings_popup_width = 360;
var settings_popup_height = 520;
var settings_playlist_group_selector = "#playlists";
var settings_playlist_selector = "#playlist";
var settings_playlist_shuffle = false;

var settings_player_video_width = 640;
var settings_player_video_height = 380;
var settings_popup_video_width = 640;
var settings_popup_video_height = 420;
var settings_popup_video_height_delta = 40;
var settings_popup_video_height_with_playlist_delta = 160;

// functional code (nothing else to modify below this line)

var currentItem = -1;
var previousItem = -1;
var currentLength = 0;
var currentState = 'NONE'; 
var previousState = 'NONE'; 
var linkFlag = false;
var player = null;
var popWin = null;
var isVideo = false;

function playerReady(thePlayer) 
{
	player = window.document[thePlayer.id];
	addListeners();
	printPlaylistData();
}

function addListeners() 
{
	if (player) 
	{ 
		player.addControllerListener("ITEM", "itemListener");
		player.addModelListener("STATE", "stateListener");
	} 
	else 
	{
		setTimeout("addListeners()",100);
	}
}

function itemListener(obj) 
{ 
	if (obj.index != currentItem) 
	{
		previousItem = currentItem;
		currentItem = obj.index; 		
		setItemStyle(currentItem);
	}
}

//IDLE, BUFFERING, PLAYING, PAUSED, COMPLETED 
function stateListener(obj) 
{
	currentState = obj.newstate; 
	//previousState = obj.oldstate; 
 
	var tmp = document.getElementById("item" + currentItem);

	if 
	(
		(currentState != previousState) ||
		(currentItem != previousItem)
	) 
	{  
		previousState = currentState; 
		setItemStyle(currentItem); // change
	} 
}

function setItemStyle(item_idx) 
{
	jQuery(settings_playlist_selector + ' .item').each(function()
	{
		var idx = jQuery(this).attr('id').split('-')[1];
		
		jQuery(this).removeClass('item-out item-over item-playing-out item-playing-over');

		if (idx == item_idx) 
		{
			 if (currentState == 'PLAYING') jQuery(this).addClass('item-playing-out');
			else jQuery(this).addClass('item-over');
		} 
		else jQuery(this).addClass('item-out');
	});

	var item = jQuery(settings_playlist_selector + ' .item:first');
	var top = item_idx * (item.height() + parseInt(item.css('margin-bottom')) + parseInt(item.css('margin-top')));
	jQuery(settings_playlist_selector).scrollTop(top);
}

function shuffle(arr) 
{
	for
	(
		var j, x, i = arr.length; i;
		j = parseInt(Math.random() * i),
		x = arr[--i], arr[i] = arr[j], arr[j] = x
	);
	return arr;
}

function printPlaylistData()
{
	var plst = null;
	plst = player.getPlaylist();

	if (plst) 
	{
		jQuery(settings_playlist_selector).css('width',jQuery('#player').width()-1);
		
		if (plst.length < 2)
		{
			jQuery(settings_playlist_selector).css('display','none');
			return;
		}

		if (settings_playlist_shuffle)
		{
			shuffle(plst);
			player.sendEvent('LOAD',plst);
		}

		jQuery(settings_playlist_selector).empty();
		jQuery(settings_playlist_selector).show();

		jQuery.each(plst,function(k,v)
		{
			var item_id = 'item-' + k ;
			jQuery(settings_playlist_selector).append('<div id="'+ item_id +'" class="item">'+ v.title +'</div>');

			if (settings_playlist_show_author && v.author) jQuery('#'+ item_id).append(' <span>- '+ v.author +'</span>');
			if (settings_playlist_show_thumbnail && v.image) jQuery('#'+ item_id).prepend(' <img class="thumb" src="' + v.image + '" alt="" />');
			if (settings_playlist_show_link && v.link) jQuery('#'+ item_id).prepend('<a href="'+ v.link +'" target="'+ settings_playlist_link_target +'" onclick="linkFlag=true;"><img class="link" src="' + settings_playlist_link_image + '" alt="" /></a>');

			jQuery('#'+ item_id).click(function(e)
			{
				if (!linkFlag)
				{
					e.preventDefault();
					var idx = jQuery(this).attr('id').split('-')[1];
					if(!linkFlag) player.sendEvent('ITEM',idx);
				}
			});

			jQuery('#'+ item_id).mouseover(function(e)
			{
				e.preventDefault();
				var idx = jQuery(this).attr('id').split('-')[1];
				
				jQuery(this).removeClass('item-out item-over item-playing-out item-playing-over');
				if (idx == currentItem) jQuery(this).addClass('item-playing-over');
				else jQuery(this).addClass('item-over');
			});

			jQuery('#'+ item_id).mouseout(function(e)
			{
				e.preventDefault();
				var idx = jQuery(this).attr('id').split('-')[1];
				
				jQuery(this).removeClass('item-out item-over item-playing-out item-playing-over');
				if (idx == currentItem) jQuery(this).addClass('item-playing-out');
				else jQuery(this).addClass('item-out');
			});


		});
	} 
	else 
	{
		setTimeout("printPlaylistData()",100);
	}
}

function parse(text) 
{
	var obj = {};
	var vars;
	
	if (text.indexOf('?')>=0)
	{
		text = text.split('?')[1];
	}

	vars = text.split("&");
	for (var i=0;i<vars.length;i++) 
	{ 
		var pair = vars[i].split("=");
		obj[pair[0]] = pair[1];
	} 
	return obj;
}

function deletePlayer() 
{ 
	if (player) player.sendEvent("STOP"); 
	jQuery('#player').after('<div id="container"></div>');
	swfobject.removeSWF('player');
	jQuery(settings_playlist_selector).hide();
}

function createPlayer(options) 
{
	deletePlayer();

	settings_playlist_shuffle = options.shuffle ? (options.shuffle=='yes'?true:false) : settings_playlist_shuffle ;

	var flashvars = 
	{
		file: options.file, 
		autostart: options.autostart ? (options.autostart=='yes'?true:false) : settings_playlist_autostart ,
		bufferlength: 3,
		repeat: 'list'
	}

	//alert(flashvars.autostart);

	var params = 
	{
		allowfullscreen: 'true', 
		allowscriptaccess: 'always'
	}

	var attributes = 
	{
		id: 'player',  
		name: 'player'
	}

	var w = settings_player_width;
	var h = settings_player_height;

	if (options.is_video)
	{
		w = options.width ? options.width : settings_popup_video_width ;
		h = options.height ? options.height : settings_popup_video_height ;
		isVideo = true;
	}

	swfobject.embedSWF(settings_player, "container", w, h, "9.0.115", false, flashvars, params, attributes);
}

function createWindow(theUrl) 
{  
	if (player) deletePlayer();

	//jQuery(settings_playlist_group_selector).hide();
	jQuery(settings_playlist_selector).hide();

	var w = settings_popup_width;
	var h = settings_popup_height;

	var info = parse(theUrl);

	if (info && info.is_video)
	{
		w = info.width ? info.width : settings_popup_video_width ;
		h = info.height ? (parseInt(info.height) + settings_popup_video_height_delta) : settings_popup_video_height ;
		if (info.has_playlist) h = info.height ? info.height + settings_popup_video_height_with_playlist_delta : settings_popup_video_height_with_playlist ;
	}

	popWin = window.open(theUrl, "smallWin", "width="+ w +",height="+ h +",left=100,top=200,resizable=yes");
	popWin.focus();
}

function popWinPlay(list,params) 
{
	var url = settings_popup + '?list=' + list;
	if (params)  url += '&' + params;

	if ((popWin)&&(!popWin.closed)) popWin.location.href = url;
	else createWindow(url);
}

jQuery(function($)
{
	// enable playlist links
	$(settings_playlist_group_selector + ' a').click(function(e)
	{
		e.preventDefault();
		popWinPlay($(this).attr('href'),$(this).attr('rel'));
	});

	$('a.video').click(function(e)
	{
		e.preventDefault();

		var params = 'is_video=1';
		if ($(this).attr('rel')) params += '&' + $(this).attr('rel');
		popWinPlay($(this).attr('href'),params);
	});
});

