/**
 * AJAX Nette Framwork plugin for jQuery
 *
 * @copyright   Copyright (c) 2009 Jan Marek
 * @license     MIT
 * @link        http://nettephp.com/cs/extras/jquery-ajax
 * @version     0.2
 */

var doAfterSnippets = new Array();

function afterSnippets()
{
    for(var i in doAfterSnippets)
    {
	var fcname = doAfterSnippets[i];
	window[fcname]();
    }
}

function showSpinner(event)
{
    $("#ajax-spinner").show().css({
	position: "absolute",
	left: event.pageX + 20,
	top: event.pageY + 40
    });
}

jQuery.extend({
    nette: {
	updateSnippet: function (id, html) {
	    $("#" + id).html(html);
	},

	success: function (payload) {
	    // redirect
	    if (payload.redirect) {
		window.location.href = payload.redirect;
		return;
	    }

	    // snippets
	    if (payload.snippets) {
		for (var i in payload.snippets) {
		    jQuery.nette.updateSnippet(i, payload.snippets[i]);
		}
		afterSnippets();
	    }
	}
    }
});

jQuery.ajaxSetup({
    success: jQuery.nette.success,
    dataType: "json"
});

$(function () {
    // vhodně nastylovaný div vložím po načtení stránky
    $('<div id="ajax-spinner"></div>').appendTo("body").ajaxStop(function () {
	// a při události ajaxStop spinner schovám a nastavím mu původní pozici
	$(this).hide().css({
	    position: "fixed",
	    left: "50%",
	    top: "50%"
	});
    }).hide();
});

// zajaxovatění odkazů provedu takto
$("a.ajax").live("click", function (event) {
    event.preventDefault();
    $this = $(this);
    var href = this.href;
    if($this.data('ajax-confirm'))
    {
	var BUTTON_CANCEL = translator.translate('tr_cancle');
	var BUTTON_OK = 'OK';
	var dialog = $('<div></div>');
	var question = $this.data('ajax-confirm');
	dialog.html(question);
	dialog.dialog({
	    autoOpen: true,
	    dialogClass: 'data-confirm',
	    buttons: [
	    {
		text: BUTTON_CANCEL,
		click: function() 
		{ 
		    $(this).dialog("close");
		}
	    },
	    {
		text: BUTTON_OK,
		click: function() 
		{ 
		    $(this).dialog("close");
		    $.get(href);
		    // zobrazení spinneru a nastavení jeho pozice
		    $("#ajax-spinner").show().css({
			position: "absolute",
			left: event.pageX + 20,
			top: event.pageY + 40
		    });
		}
	    }
	    ],	
	    resizable: false,
	    show: 'fade',
	    hide: 'fade',
	    modal: true
	});
    }
    else
    {
	$.get(href);
	// zobrazení spinneru a nastavení jeho pozice
	$("#ajax-spinner").show().css({
	    position: "absolute",
	    left: event.pageX + 20,
	    top: event.pageY + 40
	});
    }
});



// zajaxovatění odkazů pro smazani provedu takto
$("a.ajaxdelete").live("click", function (event) {
    event.preventDefault();
    $ajaxbox = $(this).parentsUntil('.ajaxbox');
    if($ajaxbox.length == 0)
    {
	if(typeof DEBUG != 'undefined'){
	    alert('ERROR: Can not find parent ajaxbox.');
	}
    }
    else 
	$ajaxbox.parent().slideUp('fast');
    $.get(this.href);
});







