var ajax_waiting = false;

jQuery(document).ready(initialize_ajax_form);

function initialize_ajax_form () {

	//adres linka powinien zawierac na koniec "#<id>
	//gdzie <id> wskazuje ktory z obiektow (news, zdjecie) zostal zmieniony
	jQuery(".ajax_form").click(function () {
			
		if (ajax_waiting)
			return false;
			
		ajax_waiting = true;

		var form_url = jQuery(this).attr("href");

		jQuery.ajax({
			url: form_url + "&ajax=1",
			success: function(response) {
				jQuery("body").append(response);
				if (jQuery.browser.msie)
					window.scroll(0, 0);

				jQuery("#ajax_form form").bind("submit", function (event) {
					af_submit();
					event.preventDefault();
				});

				jQuery("#ajax_form_close").bind("click", function (event) {
					af_close();
					event.preventDefault();
				});
			},
			error: function() {
				alert("Wystąpił błąd podczas ładowania formularza. Spróbuj ponownie za kilka minut.");
				ajax_waiting = false;
			}
		});
		

		return false;
	});

	//submit popupowego formularza
	function af_submit() {
		var url = jQuery("#ajax_form form").attr("action");
		var data = jQuery("#ajax_form form").serialize();
		var req = jQuery('#ajax_form form .ajax_form_required');
		var req_empty = req.filter('[value=\'\']');
		if ( req_empty.length > 0 )
		{
			req.removeClass('empty');
			req_empty.addClass('empty');
			alert('Proszę uzupełnić wymagane pola formularza.');
		} 
		else
		{
			jQuery.ajax({
				type: "POST",
				url: url,
				data: data,
				success: function(response) {
					af_update_object(response);
					af_close();
				},
				error: function () {
					alert("Wystąpił błąd podczas zapisywania formularza. Spróbuj ponownie za kilka minut.");
					ajax_waiting = false;
				}
			});
		}

		return false;
	}

	//zamkniecie formularza
	function af_close() {
		jQuery("#ajax_form").remove();
		ajax_waiting = false;
	}

	//podmienienie zmienionych danych
	function af_update_object(response) {		
		if ( response )
		{
			jQuery("#" + af_object_id).html(response);
			jQuery("#" + af_object_id).animate({"opacity":"0.5"}, 300).animate({"opacity":"1"}, 300).animate({"opacity":"0.5"}, 300).animate({"opacity":"1"}, 300);
		}
	}
}
