window.window_nr = 0;
window.__div_backup = new Array();
window.window_index = 0;
window.window_list = new Array();

$(document).ready(function()
{
	tipsReload();
	$("a").attr('onfocus', 'blur()');
	openMessages(ajaxMessages);
} );

function aLoad(data, div, change_hash)
{
        //alert("aLoad");
	url = '?'; 
	if (change_hash == true) window.location.hash = data;
	data += '&ajax=1';
	
	// spowoduje dodanie loadera w divy
	// ich zawartość zostanie zachowana. Funkcja restoreDivs() przywróci ich zawartość jeśli operacja jest przerwana
	if (typeof(div)!='object' || !(div instanceof Array) && div != '') div = new Array(div);
	if (div != '')
	for(i = 0; i < div.length; i++)
	{
		marg_l = ($(div[i]).width() - 32) / 2;
		marg_t = ($(div[i]).height() - 32) / 2;
		window.__div_backup[i] = new Array(div[i], $(div[i]).html());
		$(div[i]).html("<img style='margin: "+marg_t+"px "+marg_l+"px "+marg_t+"px "+marg_l+"px' src='images/loading.gif' />");
	}

	window.__url = url;
	window.__data = data;
	window.__div = div;

	document.body.style.cursor = 'wait';
	$.ajax(
	{
		type: "POST",
		url: url,
		data: data,
		async: true,
		dataType: "json",
		global: false,
		success: function(values)
		{
			//restoreDivs();
			openMessages(values);
			document.body.style.cursor = 'default';	
		},
		error: function()
		{
			restoreDivs();
			document.body.style.cursor = 'default';
		}
	});

	return false;
}

function openMessages(values)
{
	if(values)
	{
		$.each(values, function(key, value)
		{
//			alert(value['message']);
			/* max 600 okien lub to samo okno */
			if (value['message'] == 'window_open' && ( value['same_window'] || window.window_nr < 600 ) )
			{
				if (!value['same_window'])
				{
					window.window_nr++;
					if (value['window_id']) okno = 'message_html_id_'+value['window_id'];
						else okno = 'message_html'+window.window_nr;

					$("<div></div>").attr('id', okno).appendTo("#message_hidden");

					okno = '#'+okno;
					$(okno).attr('title', value['title']);
					if (window.window_list.length == window.window_index)
					{
						window.window_list.push(okno);
						window.window_index++;
					} else
					{
						window.window_list[window.window_index] = okno;
						window.window_index++;
					}
					//
				} else
				{
					//okno = '#message_html'+window.window_nr;
					
					if (value['window_id']) okno = '#message_html_id_'+value['window_id'];
						else okno = window.window_list[window.window_index - 1];

					//$(okno).css('display', 'none');
					$(okno).dialog('option', 'title', value['title']);
				}
				if (value['div_hide']) $(okno).css('display', 'none');
				$(okno).html(value['html']);
				
				//alert(value['title']+' = window_id: '+okno);

				if (!value['width']) value['width'] = 500;
				if (!value['height']) value['height'] = 'auto';
				if (!value['modal']) value['modal'] = true;
				$(okno).dialog({ autoOpen: false, beforeclose: function(event, ui) { closeWindow(); return false; } });
				$(okno).dialog('option', 'width', value['width']);
				$(okno).dialog('option', 'minwidth', value['width']);
				$(okno).dialog('option', 'maxwidth', value['width']);
				$(okno).dialog('option', 'height', value['height']);
				$(okno).dialog('option', 'modal', value['modal']);
				
				$(okno).dialog('open');
				tipsReload();
			} else
			if (value['message'] == 'go_to_location')
			{
				window.location = value['location'];
			} else
			if (value['message'] == 'close_window')
			{
				closeWindow();
			} else
			if (value['message'] == 'restore_window')
			{
				restoreWindow();
			} else
			if (value['message'] == 'restore_divs')
			{
				restoreDivs();
			} else
			{
//				alert(value['div']+"\n\n"+value['html']);
				$(value['div']).html(value['html']);
				$(value['div']).css("opacity", 1.0);
				tipsReload();
			}
		});
	}
}

function closeWindow()
{
	if (window.window_nr > 0)
	{
		window.window_index--;
		window.window_nr--;
		//alert(window.window_list[window.window_index]);
		$(window.window_list[window.window_index]).dialog('destroy');
		$(window.window_list[window.window_index]).remove();
	}
}

function restoreWindow()
{
}

function restoreDivs()
{
	$.each(window.__div_backup, function(key, value) { $(value[0]).html(value[1]) });
	window.__div_backup = new Array();
}

function aloadRepeat(key, value, close)
{
	if (close) $.fn.colorbox.close();
	if (key == '__cancel') { cancelOperation(); } else
	if (key == '__close_message') { }
	else
		aLoad(window.__data+'&'+key+'='+value, window.__div, -1);
}

function tipsReload()
{
	$(function(){
		$("*[tip]").jHelperTip({
			trigger: "hover",
			source: "attribute",
			attrName: "tip",
			opacity: 0.9,
			autoClose:true
		});
	});
}

// zapisuje zmiany zrobione w FCK do textarea
// wywołać trzeba przed wystłaniem AJAXem formularza
function saveFckData()
{
	for (i = 0; i < fck_editors.length; i++) fck_editors[i].UpdateLinkedField();
}

// called when FCKeditor is done starting..
function FCKeditor_OnComplete( editorInstance ){ 
	//editorInstance.LinkedField.style.display = 'inline';
	fck_editors[fck_editors.length] = editorInstance;
}

function handleEnter(e, action)
{
    var characterCode;
    if(e && e.which)
    {
		e = e; characterCode = e.which;
    }
    else
    {
		e = event; characterCode = e.keyCode;
    }

    if(characterCode == 13)
    {
		eval(action); return false;
    }
    else
    {
		return true;
    }
}

function myalert(title, message, width)
{
	v = new Array();
	v['title'] = title;
	if (width) v['width'] = width; else v['width'] = 390;
	v['height'] = 150;
	v['message'] = 'window_open';
	v['html'] = message+"<ul class='buttons'><li class='button' onclick='closeWindow()'>Ok</li></ul>";
	b = new Array();
	b[0] = v;
	openMessages(b);
	return false;
}

function myconfirm(title, message, on_yes)
{
	v = new Array();
	v['title'] = title;
	v['width'] = 390;
	v['message'] = 'window_open';
	v['html'] = message+"<ul class='buttons'><li class='button' onclick='closeWindow(); aLoad(\""+on_yes+"\");'>Tak</li><li class='button' onclick='closeWindow()'>Nie</li></ul>";
	b = new Array();
	b[0] = v;
	openMessages(b);
	return false;
}

function checkbox(id, input, value)
{
	//$(input).checked = !$(input).checked;
	//$(input).check();
	//alert($(input).check);
	document.getElementById(input).checked = !document.getElementById(input).checked;
	$(id).toggleClass("selected");
}

jQuery.fn.extend({
	selectable: function(checked_class_css)
	{
		nr = 0;
		return this.each(function() {
			// nadanie automatycznie id
			$(this).attr('id', $(this).attr('name')+nr);

			// ustawienie zaznaczenia
			if ($(this).attr('checked')) { $(this).addClass(checked_class_css); ch = "checked='1'"; } else ch = '';

			// dodanie odpowiadającego checkbox-a
			chid = $(this).attr('name')+nr+"checkbox";
 			$(this).append("<input id='"+chid+"' "+ch+" class='hide' type='checkbox' name='"+$(this).attr('name')+"' value='"+$(this).attr('value')+"' />");

			// obsługa kliknięcia
			$(this).click(function() {
				chid = $(this).attr('id')+'checkbox';
				document.getElementById(chid).checked = !document.getElementById(chid).checked;
				$(this).toggleClass(checked_class_css);
			});
			nr++;
		});
	}
 });


jQuery.fn.extend({
	selectlist: function(div, select_class_css)
	{
		nr = 0;
		return this.each(function() {
			$(this).attr('options', div);
			//$(div).css( { 'display' : 'none'} );

			$(this).click(function(e){
				div = '#'+$(this).attr('options');
				$(div).toggleClass('hide');
				$(div).toggleClass(select_class_css);
				$(div).css( { 'left' : e.pageX + 30, 'top' : e.pageY + 30 } );
			});


			nr++;
		});
	}
 });
 

