/**
 * Ajax upload plugin
 * Odešle formulář a zavolá callback s JSON daty v parametru
 */

jQuery.fn.extend({
        ajaxUpload: function(callback) {
                if (!this.is("form")) return;

                // počítadlo
                if (!arguments.callee.count) {
                        arguments.callee.count = 0;
                }
                var target = "ajaxUploadFrame" + (++arguments.callee.count);

                // vyrobí rámec
                var iframe = jQuery(
                        '<iframe src="" width="1" height="1" frameborder="0" ' +
                        'name="' + target + '"></iframe>'
                );
                iframe.css({
                        visibility: "hidden",
                        position: "absolute",
                        left: "-1000px",
                        top: "-1000px"
                });
                iframe.appendTo("body");

                // po načtení stránky zpracuje požadavek
                iframe.load(function () {
                        jQuery.event.trigger("ajaxComplete");

                        var body = iframe.get(0).contentDocument.body;
                        var content = body.innerHTML;

                        if (!content) {
                                callback();
                        } else {
                                eval("var data = " + content + ";");
                                callback(data);
                        }

                        // nechat zmizet iframe
                        setTimeout(function () {
                                iframe.remove()
                        }, 1000);
                });

                // odešle formulář do rámce
                this.attr({
                        target: target,
                        method: "post",
                        enctype: "multipart/form-data"
                }).submit();

                jQuery.event.trigger("ajaxStart");
        }
});
