var custom_dialog_id = "custom_dialog_dialog";

var custom_dailog_contents = [];

var custom_dialog_dialog_settings = {
	draggable: false,
	resizable: false,
	modal: true,
	close: function()
	{
		$(this).dialog('destroy');
		$('#'+custom_dialog_id).remove();
	}
};

var custom_dialog_other_settings = {
	next_image: typeof custom_dialog_prev_image == 'undefined' ?
		"/themes/startrek/img/diary/prev_index.png" : custom_dialog_next_image,
	prev_image: typeof custom_dialog_next_image == 'undefined' ?
		"/themes/startrek/img/diary/next_index.png" : custom_dialog_prev_image,
	fade_time: 2000,
	scrollable: true
};

$(document).ready(function()
{
	var custom_dialog = null;
	var selected_dialog = 0;
	var fade_content;
	var fade_nav_html;
	var custom_dialog_selector = ".custom_dialog_container:visible .custom_dialog";
	
	$('.custom_dialog_container').live('click', function()
	{
		set_dialog_internals();
		
		var dialog = $(this).find('.custom_dialog');
		custom_dialog = create_dialog_element(dialog);
	});
	
	$('.custom_dialog_prev').live('click', function()
	{
		var prev_dialog_index;
		var prev_dialog;
		var last_ele;
		
		$(custom_dialog_selector).each(function(i, ele)
		{
			if ($.data(ele, 'custom_dialog_settings').order == selected_dialog)
			{
				prev_dialog_index = i - 1;
				prev_dialog = last_ele;
			}
			
			last_ele = $(ele);
		});
		
		fade_content = get_dialog_content(prev_dialog_index);
		fade_nav_html = get_nav_html(prev_dialog);
		
		fade_dialog_content();
	});
	
	$('.custom_dialog_next').live('click', function()
	{
		var next_dialog_index;
		var next_dialog;
		$(custom_dialog_selector).each(function(i, ele)
		{
			if ($.data(ele, 'custom_dialog_settings').order == selected_dialog + 1)
			{
				next_dialog_index = i;
				next_dialog = $(ele);
			}
		});
		
		fade_content = get_dialog_content(next_dialog_index);
		fade_nav_html = get_nav_html(next_dialog);
		
		fade_dialog_content();
	});
	
	function fade_dialog_content()
	{
		$("#"+custom_dialog_id+" .custom_dialog_title").fadeOut(custom_dialog_other_settings.fade_time);
		$('#'+custom_dialog_id+' .custom_dialog_content').fadeOut(custom_dialog_other_settings.fade_time);
		$('#'+custom_dialog_id+' .custom_dialog_prev').fadeOut(custom_dialog_other_settings.fade_time);
		$('#'+custom_dialog_id+' .custom_dialog_next').fadeOut(custom_dialog_other_settings.fade_time);

		setTimeout(fade_in_dialog_content, custom_dialog_other_settings.fade_time);
	}
	
	function fade_in_dialog_content()
	{
		$('#'+custom_dialog_id).html(fade_content+fade_nav_html);
		$("#"+custom_dialog_id+" .custom_dialog_title").hide().fadeIn(custom_dialog_other_settings.fade_time);
		$('#'+custom_dialog_id+' .custom_dialog_content').hide().fadeIn(custom_dialog_other_settings.fade_time);
		$('#'+custom_dialog_id+' .custom_dialog_nav').hide().fadeIn(custom_dialog_other_settings.fade_time);
	}
	
	function set_dialog_internals()
	{
		var max_index = $(custom_dialog_selector).length - 1;
		
		$(custom_dialog_selector).each(function(i, ele)
		{
			var settings = {
				order: i,
				is_first: i == 0,
				is_last: i == max_index
			};
			
			$.data(ele, 'custom_dialog_settings', settings)
		});
	}
	
	function get_nav_html(element)
	{
		if (!custom_dialog_other_settings.scrollable)
		{
			return "";
		}
		
		var settings = $.data($(element).get(0), 'custom_dialog_settings');
		var nav_html = "";
		
		if (!settings.is_first)
		{
			nav_html += "<img class='custom_dialog_prev' src='"+custom_dialog_other_settings.prev_image+"' />";
		}
		if (!settings.is_last)
		{
			nav_html += "<img class='custom_dialog_next' src='"+custom_dialog_other_settings.next_image+"' />";
		}
		if (nav_html != "")
		{
			nav_html = "<div class='custom_dialog_nav'>"+nav_html+"</div><div class='clear'></div>";
		}
		
		return nav_html;
	}
	
	function get_dialog_content(index)
	{
		if(custom_dailog_contents[index]) return custom_dailog_contents[index];
		selected_dialog = index;
		
		$(custom_dialog_selector).each(function(i, ele)
		{
			if (index == $.data(ele, 'custom_dialog_settings').order)
			{
				custom_dailog_contents[index] = $(this).html();
				$(this).empty();
			}
		});
		
		return custom_dailog_contents[index];
	}
	
	function create_dialog_element(element)
	{
		var settings = $.data($(element).get(0), 'custom_dialog_settings');
		var content = get_dialog_content(settings.order);
		var nav_html = get_nav_html(element);
		var html = "<div id='"+custom_dialog_id+"'>"+content+nav_html+"</div>";
		
		$('body').prepend(html);
		
		return $('#'+custom_dialog_id).dialog(custom_dialog_dialog_settings);
	}
});

function custom_dialog_close_dialog()
{
	$("#custom_dialog_dialog")
		.siblings(".ui-dialog-titlebar")
			.find(".ui-dialog-titlebar-close")
				.click();
}