/**
 * AJAX Nette Framwork plugin for jQuery
 *
 * @copyright  Copyright (c) 2009 Jan Marek
 * @license    MIT
 * @link       http://nettephp.com/cs/extras/jquery-ajax
 * @version    0.1
 */

jQuery.extend({
	updateSnippet: function(id, html) {
		$("#" + id).fadeOut(100,function() {
			$("#" + id).html(html);
			$("#" + id).fadeIn(100);
			//screenshotPreview();
				$("form.ajax_attributes input:submit").hide();
				
				$("form.ajax").livequery("submit",function (e) {
                $(this).ajaxSubmit(null,e);
        });

        $("form.ajax_attributes").livequery("submit",function (e) {
                $(this).ajaxSubmit(null,e);
        });

        $("form.ajax_attributes input:submit").livequery('click', function (e) {
            	$(this).ajaxSubmit(null,e);
        });
        
        $("form.ajax input:submit").livequery('click', function (e) {
            	$(this).ajaxSubmit(null,e);
        });
        
				$("form.ajax_attributes select").change(function() {
					$(this.form).find(":submit.submitAttrs").click();
				});
				
				$("form.ajax_attributes textarea").change(function() {
					$(this.form).find(":submit.submitAttrs").click();
				});
				
				$("form.ajax_attributes input:radio").click(function() {
					$(this.form).find(":submit.submitAttrs").click();
				});
		});
	},

	netteCallback: function(data) {
		// redirect
		if (data.redirect) {
			window.location.href = data.redirect;
		}

		// snippets
		if (data.snippets) {
			for (var i in data.snippets) {
				jQuery.updateSnippet(i, data.snippets[i]);
			}
		}
	}
});


jQuery.ajaxSetup({
	success: function (data) {
		jQuery.netteCallback(data);
	},

	dataType: "json"
});



$(function() {
	// apply AJAX unobtrusive way
	$("a.iconlink_ajax, a.ajax").live("click", function(event) {
		$.get(this.href);
		return false;
	});
	
	// show spinner
	$('<div id="ajax-spinner"></div>').addClass("ui-corner-all").hide().ajaxStart(function () {
                $("body").css("cursor","progress");
		$(this).fadeIn(200);
	}).ajaxStop(function () {
                $("body").css("cursor","default");
		$(this).fadeOut(200,function(){
                    $(this).hide();
                })
	}).appendTo("body");

});
