// Prompt functions involving prompt window and overlay
var promptOverlayDuration = .2;
var promptOverlayOpacity = .3;
var prompt_window_created = false;
var prompt_window_open = false;

Event.observe(document, 'keydown', function(e) {
	if(IE) { // ie
		keycode = event.keyCode;
		escapeKey = 27;
		deleteKey = 46;
	} else { // mozilla
		keycode = e.keyCode;
		escapeKey = e.DOM_VK_ESCAPE;
		deleteKey = e.DOM_VK_DELETE;
	}

	key = String.fromCharCode(keycode).toLowerCase();

	if(prompt_window_open == true)
	{
		if(keycode == escapeKey) { // close prompt
			close_prompt();
		}
	}
});

function create_prompt_window(options)
{
	if(prompt_window_created == true) return;

	var style = 'default';
	var width = 300;

	if(options != null)
	{
		if(options.style != null) style = options.style;
		if(options.width != null) width = options.width;
	}

	if(IE)
	{
		new Insertion.Bottom(document.body, '<div id="prompt_overlay" style="display: none;"></div><div id="prompt_container" style="display: none;"><div id="prompt_window" style="width: '+width+'px;"><div id="prompt_window_content"></div><!-- end prompt window content --></div><!-- end prompt window --></div><!-- end prompt container -->');

		new Insertion.Top($('prompt_window'), '<div id="prompt_window_header_container"><div style="width: 6px; height: 25px; float: left; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'../../images/'+style+'/prompt/prompt_header_left.png\', sizingMethod=\'image\');"></div><div id="prompt_window_header_title_container" style="background: #000000 url(\'../../images/'+style+'/prompt/prompt_header_bg.png\') repeat-x center; height: 25px; float: left;"><div class="clickable" onclick="close_prompt();" style="width: 29px; height: 25px; float: right; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'../../images/'+style+'/prompt/prompt_header_close.png\', sizingMethod=\'image\');"></div><span id="prompt_window_title" style="margin-left: 29px;"></span></div><!-- end prompt window header title --><div style="width: 6px; height: 25px; float: left; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'../../images/'+style+'/prompt/prompt_header_right.png\', sizingMethod=\'image\');"></div></div><!-- end prompt window header container -->');

		new Insertion.Bottom($('prompt_window'), '<div id="prompt_window_footer_container"><div style="width: 6px; height: 25px; float: left; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'../../images/'+style+'/prompt/prompt_footer_left.png\', sizingMethod=\'image\');"></div><div id="prompt_window_footer_title_container" style="background: #000000 url(\'../../images/'+style+'/prompt/prompt_footer_bg.png\') repeat-x center; height: 25px; float: left;"><div style="width: 63px; height: 25px; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'../../images/'+style+'/prompt/prompt_footer_title.png\', sizingMethod=\'image\');"></div></div><!-- end prompt window footer title --><div style="width: 6px; height: 25px; float: left; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'../../images/'+style+'/prompt/prompt_footer_right.png\', sizingMethod=\'image\');"></div></div><!-- end prompt window footer container -->');
	}
	else
	{
		new Insertion.Bottom(document.body, '<div id="prompt_overlay" style="display: none;"></div><div id="prompt_container" style="display: none;"><div id="prompt_window" style="width: '+width+'px;"><div id="prompt_window_content"></div><!-- end prompt window content --></div><!-- end prompt window --></div><!-- end prompt container -->');

		new Insertion.Top($('prompt_window'), '<div id="prompt_window_header_container"><div style="width: 6px; height: 25px; float: left;"><img src="../../images/'+style+'/prompt/prompt_header_left.png" /></div><div id="prompt_window_header_title_container" style="background: #000000 url(\'../../images/'+style+'/prompt/prompt_header_bg.png\') repeat-x center; height: 25px; float: left;"><div style="float: right;" class="clickable" onclick="close_prompt();"><img src="../../images/'+style+'/prompt/prompt_header_close.png" /></div><span id="prompt_window_title" style="margin-left: 29px;"></span></div><!-- end prompt window header title --><div style="width: 6px; height: 25px; float: left;"><img src="../../images/'+style+'/prompt/prompt_header_right.png" /></div></div><!-- end prompt window header container -->');

		new Insertion.Bottom($('prompt_window'), '<div id="prompt_window_footer_container"><div style="width: 6px; height: 25px; float: left;"><img src="../../images/'+style+'/prompt/prompt_footer_left.png" /></div><div id="prompt_window_footer_title_container" style="background: #000000 url(\'../../images/'+style+'/prompt/prompt_footer_bg.png\') repeat-x center; height: 25px; float: left;"><img src="../../images/'+style+'/prompt/prompt_footer_title.png" /></div><!-- end prompt window footer title --><div style="width: 6px; height: 25px; float: left;"><img src="../../images/'+style+'/prompt/prompt_footer_right.png" /></div></div><!-- end prompt window footer container -->');
	}

	new Draggable('prompt_window', {handle: 'prompt_window_header_container', starteffect: '', endeffect: ''});

	prompt_window_created = true;
}

function close_prompt()
{
	// Hide overlay
	Element.hide('prompt_container');
	new Effect.Fade('prompt_overlay', { duration: promptOverlayDuration});

	// Show flash and select boxes
	show_selects();
	show_flash();

	prompt_window_open = false;
}

function open_prompt(pars, options)
{
	if(prompt_window_created == false)
	{
		create_prompt_window(options);
	}

	var width = 300;
	if(options != null)
	{
		if(options.width != null) width = options.width;
	}
	// Subtract the size of the left and right sides of the header
	var header_width = width-12;
	var content_width = width - 22;
	var footer_width = width-12;

	$('prompt_window').style.width = width + 'px';

	$('prompt_window_header_container').style.width = width + 'px';
	$('prompt_window_header_title_container').style.width = header_width + 'px';
	$('prompt_window_content').style.width = content_width + 'px';
	$('prompt_window_footer_container').style.width = width + 'px';
	$('prompt_window_footer_title_container').style.width = footer_width + 'px';

	new Ajax.Request(
		url,
		{
			method: 'post',
			parameters: pars,
			onSuccess: finalize_prompt
		});
}

var focus_id = null;
function finalize_prompt(transport)
{
	var response = transport.responseText.replace("while(1);", "").evalJSON();
	var auto_submit = response.auto_submit;
	var width = response.width;
	var title = response.title;
	var error = response.error;
	var content = response.content;
	if(content != null) { content.evalScripts(); }

	if(error != null)
	{
		post_new_event('error', error);
		return;
	}

	$('prompt_window_title').innerHTML = title;
	$('prompt_window_content').innerHTML = content;
	
	if(auto_submit != null)
	{
		auto_submit.evalScripts();
		return;
	}

	// Hide loading window
	//hide_loading_window();

	// Darken background (overlay)
	var arrayPageSize = getPageSize();
	$('prompt_overlay').style.width  = arrayPageSize[0]+'px';
	$('prompt_overlay').style.height = arrayPageSize[1]+'px';

	new Effect.Appear('prompt_overlay', { duration: promptOverlayDuration, from: 0.0, to: promptOverlayOpacity });

	// Set the prompt window width
	if(width != null)
	{
		$('prompt_window').style.width=width+'px';
	}

	// Calculate top and left offset for the prompt
	var arrayPageScroll = getPageScroll();
	var promptTop = arrayPageScroll[1] + (arrayPageSize[3] / 10);
	var promptLeft = arrayPageScroll[0];
	$('prompt_container').style.top  = promptTop+'px';
	$('prompt_container').style.left = promptLeft+'px';

	// Hide flash and select boxes
	hide_selects();
	hide_flash();

	// Show propmt window
	$('prompt_container').show();

	// Focus on the default focus input
	if($(focus_id) != null)
	{
		$(focus_id).focus();
	}

	prompt_window_open = true;
}

function show_selects()
{
	var selects = document.getElementsByTagName("select");
	for(i = 0; i != selects.length; i++)
	{
		selects[i].style.visibility = "visible";
	}
}

function hide_selects()
{
	var selects = document.getElementsByTagName("select");
	for(i = 0; i != selects.length; i++)
	{
		var node = selects[i];
		var keep = false;
		
		while(node.id != null)
		{
			if(node.id == 'prompt_window_content') keep = true;
			node = node.parentNode;
		}
		// Don't remove the selects that are IN the prompt window!
		if(!keep)
			selects[i].style.visibility = "hidden";
	}
}

function show_flash()
{
	var flashObjects = document.getElementsByTagName("object");
	for(i = 0; i < flashObjects.length; i++)
	{
		flashObjects[i].style.visibility = "visible";
	}

	var flashEmbeds = document.getElementsByTagName("embed");
	for(i = 0; i < flashEmbeds.length; i++)
	{
		flashEmbeds[i].style.visibility = "visible";
	}
}

function hide_flash(){
	var flashObjects = document.getElementsByTagName("object");
	for(i = 0; i < flashObjects.length; i++)
	{
		var node = flashObjects[i];
		var keep = false;
		
		while(node.id != null)
		{
			if(node.id == 'prompt_window_content') keep = true;
			node = node.parentNode;
		}
		// Don't remove the flash objects that are IN the prompt window!
		if(!keep)
			flashObjects[i].style.visibility = "hidden";
	}

	var flashEmbeds = document.getElementsByTagName("embed");
	for(i = 0; i < flashEmbeds.length; i++)
	{
		var node = flashEmbeds[i];
		var keep = false;
		
		while(node.id != null)
		{
			if(node.id == 'prompt_window_content') keep = true;
			node = node.parentNode;
		}
		// Don't remove the flash objects that are IN the prompt window!
		if(!keep)
		flashEmbeds[i].style.visibility = "hidden";
	}

}