(function($) {
	$.fn.RaCMSRamka = function(opcje) {
		var opcje = $.extend({}, $.fn.RaCMSRamka.defaults, opcje);		
		var Flashe, Tlo, Ladowacz, Ramka, Komunikat;
		function WygladTloPokaz() {
			if ($('#' + opcje.IdRamkaTlo).length > 0) { Tlo = $('#' + opcje.IdRamkaTlo); }
			else { Tlo = $('<div id="' + opcje.IdRamkaTlo + '">').appendTo("body"); }
			Flashe = $("object:visible, embed:visible").css('visibility','hidden');
			if (typeof document.body.style.maxHeight === "undefined") { //if IE 6 
			    $("body","html").css({height: "100%", width: "100%"}); $("html").css("overflow","hidden"); 
			}
		}
		function WygladTloUsun() {
			if (typeof document.body.style.maxHeight === "undefined") { //if IE 6 
			    $("body","html").css({height: "auto", width: "auto"}); $("html").css("overflow",""); 
			}
			Flashe.css('visibility','visible'); 
			Tlo.remove();
			$(document).unbind("keydown");
		}
		function WygladLadowaczPokaz() {
			if ($('#' + opcje.IdRamkaLaduje).length > 0) { Ladowacz = $('#' + opcje.IdRamkaLaduje); }
			else { Ladowacz = $('<div id="' + opcje.IdRamkaLaduje + '">').show().appendTo("body"); }
		}
		function WygladLadowaczUsun() { Ladowacz.remove(); }
		function WygladRamkaUtworz() {
			var Naglowek = $('<div class="Zamknij">Zamknij</div>').click(function() { WygladRamkaUsun(); WygladTloUsun(); });
			Ramka = $('<div id="' + opcje.IdRamkaDiv + '">').append(Naglowek).appendTo("body");
		}
		function WygladRamkaPokaz() { Ramka.fadeIn(); $(document).unbind("keydown"); $(document).keydown(function(event) { if (event.keyCode == 27) { WygladRamkaUsun(); WygladTloUsun(); } }); }
		function WygladRamkaUkryj() { Ramka.fadeOut(); }
		function WygladRamkaUsun() { Ramka.remove(); }
		function WygladKomunikatTworz(dane,ramka) {
			if (ramka) {
				Komunikat = $('<div id="' + opcje.IdRamkaKomunikat + '">').append(dane).append($('<button type="button">Zamknij</button>').click(function() { WygladKomunikatUsun(); WygladRamkaPokaz(); })).appendTo("body").fadeIn();
				var KomWys = (typeof document.body.style.maxHeight === "undefined") ? ($(window).scrollTop() + (($(window).height() - Komunikat.height()) / 2)) : (($(window).height() - Komunikat.height()) / 2);
				Komunikat.css({ top: KomWys });
				$(document).unbind("keydown"); $(document).keydown(function(event) { if (event.keyCode == 27) { WygladKomunikatUsun(); WygladRamkaPokaz(); } });
				$('button',Komunikat).focus();
			}
			else {
				Komunikat = $('<div id="' + opcje.IdRamkaKomunikat + '">').append(dane).append($('<button type="button">Zamknij</button>').click(function() { WygladKomunikatUsun(); WygladRamkaUsun(); WygladTloUsun(); })).appendTo("body").fadeIn();
				var KomWys = (typeof document.body.style.maxHeight === "undefined") ? ($(window).scrollTop() + (($(window).height() - Komunikat.height()) / 2)) : (($(window).height() - Komunikat.height()) / 2);
				Komunikat.css({ top: KomWys });
				$(document).unbind("keydown"); $(document).keydown(function(event) { if (event.keyCode == 27) { WygladKomunikatUsun(); WygladRamkaUsun(); WygladTloUsun(); } });
				$('button',Komunikat).focus();
			}
		}
		function WygladKomunikatUsun() { Komunikat.remove(); $(document).unbind("keydown"); }
		function WygladRamkaWypelnij(dane) {
			Ramka.append($("dane",dane).text());
			var StrSzer = $(window).width(); var StrWys = $(window).height(); var DivSzer = Ramka.width(); var DivWys = Ramka.height();
			var DivMaksSzer = StrSzer - 50; var DivMaksWys = StrWys - 50;
			if (DivSzer > DivMaksSzer) {
				DivSzer = DivMaksSzer;
				Ramka.css("overflow","scroll");
			} 
			if (DivWys > DivMaksWys) {
				DivWys = DivMaksWys;
				Ramka.css("overflow","scroll");
			}
			var DivLewa = ((StrSzer - DivSzer) / 2); var DivGora = ((StrWys - DivWys) / 2);
			if (typeof document.body.style.maxHeight === "undefined") { //if IE 6
				DivGora = $(window).scrollTop() + ((StrWys - DivWys) / 2); 
			}
			Ramka.css({ left: DivLewa, top: DivGora, width: DivSzer, height: DivWys });
			if (opcje.Reakcja.length > 0) {
				for (var z = 0; z < opcje.Reakcja.length; z++) {
					var tmp = opcje.Reakcja[z]; 
					$('#' + tmp.Nazwa).click(function() {
						if (confirm('Czy wykonać?')) {
							WygladRamkaUkryj();
							WygladLadowaczPokaz();
							$.ajax({
								type: "POST",
								url: tmp.Adres,
								dataType: 'xml',
								data: $("form",Ramka).serialize() + '&' + $(this).attr('id') + '=1',
								success: function(dane) {
									WygladLadowaczUsun();
									if ($("bledy",dane).text().length > 0) {
										WygladKomunikatTworz($("bledy",dane).text(),1);
									}
									else if ($("info",dane).text().length > 0) {
										WygladKomunikatTworz($("info",dane).text(),0);
										if ($('#' + opcje.Docelowy) && $('zmiany',dane).text().length > 0) {
											$('#' + opcje.Docelowy).empty().append($('zmiany',dane).text());
										}
									}
									else { 
										WygladRamkaPokaz(); 
									}
								},
								error: function() {
									WygladLadowaczUsun();
									WygladRamkaPokaz();
								}
							});
						}
					});
				}
			}
		}

		return this.each(function() {
			var Adres = this.href;
			if (Adres.lenght == 0) { return false; }
			$(this).click(function() {
				this.blur();
				WygladTloPokaz();
				WygladLadowaczPokaz();
				$.ajax({
					type: "GET",
					url: Adres,
					dataType: 'xml',
					success: function(dane) {
						WygladRamkaUtworz();
						WygladRamkaWypelnij(dane);
						WygladLadowaczUsun();
						WygladRamkaPokaz();
					},
					error: function() {
						WygladLadowaczUsun();
						WygladTloUsun();
					}
				});
				return false;
			});
		});
	}
	$.fn.RaCMSRamka.defaults = {
		IdRamkaDiv: 'RaCMSRamkaDiv'
		,IdRamkaTlo: 'RaCMSRamkaTlo'
		,IdRamkaLaduje: 'RaCMSRamkaLaduje'
		,IdRamkaKomunikat: 'RaCMSRamkaKomunikat'
		,Reakcja: []
		,Docelowy: ''
	};
})(jQuery);