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

jQuery.extend({
    nette: {

        updateSnippet: function (id, html) {
            $("#" + id).fadeTo("fast", 0.01, function () {
                $(this).html(html).fadeTo("fast", 1);
            });

            if(id.match(/^snippet--flashes$/gi)){
                $("." + id).fadeTo("fast", 0.01, function () {
                    $(this).html(html).fadeTo("fast", 1);
                });
            }
        },

        updateDialog: function (id, html) {

                if(!$('#'+id)[0]){
                    $('<div id='+ id +' class="dialogwin"></div>\n').appendTo('body');
                }

                $('#'+id).html('<div class="snippet--flashes"></div>\n' + html);
                
                $('#'+id).dialog({
                    modal: true,
                    width: "auto",
                    height: "auto",
                    open: function() {
                        //$("embed, object").hide();
                    },
                    close: function() {
                        //$("embed, object").show();
                    }
                });

                $('#'+id).find("input:first").focus();
        },
        
        success: function (payload) { 
            // redirect
            if (payload.redirect) {
                window.location.href = payload.redirect;
                return;
            }

            // snippets
            if (payload.snippets) {
                for (var i in payload.snippets) {
                    if(i.match(/dialog/gi) !== null)
                        jQuery.nette.updateDialog(i, payload.snippets[i]);
                    else
                        jQuery.nette.updateSnippet(i, payload.snippets[i]);
                }
            }
            
            // snippets
            if (payload.error) {
                jQuery.nette.error(payload.error);
            }
        },

        error: function (error) {
            alert('P\u0159i zpracování požadavku se vyskytla chyba! Opakujte akci později.');
        }
    }
});

$(function () {
    $("#ajax_loader").ajaxStop(function(){
        $(this).hide();
    });
    
    $("#ajax_loader").ajaxSend(function() {
        $(this).show();
    });
});

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


$("a[href].ajax").livequery("click", function(e){
    e.preventDefault();

    var el = $(this);
    
    if(el.attr('data-confirm')){
        if (el.triggerAndReturn('confirm')) {
            if (!confirm(el.attr('data-confirm'))) {
                return false;
            }
        }
    }
    
    $.get(el.attr("href"));
});


