var SmartyAjax = {

    update: function (update_id, url, method, params, callback) {
        if (params != "") {
            url += "?" + params;
        }
        jQuery("#" + update_id).load(url, callback);
    },

    call: function (url, method, params, callback, params_func) {
        jQuery.ajax({
            url: url,
            type: method,
            data: params,
            complete: callback
        });
    },

    submit: function (form, href, params, callback) {
        var inputs = form.getElementsByTagName("INPUT");
        var fileUpload = false;
        var fUplUrl = "";
        var fileUploadElements = new Array();
        var fc = 0;
        for (i = 0; i < inputs.length; i++) {
            if ((inputs[i].type == "submit" || inputs[i].type == "image") && inputs[i].name != undefined && inputs[i].name != "") {
                params += "&" + inputs[i].name + "=1";
                fUplUrl += "&" + inputs[i].name + "=1";
            }
            if (inputs[i].type == "file" && inputs[i].value != "") { //посылает файл отдельно от данных формы, иначе данные формы не распознаются
                fileUpload = true;
            }
        }
        if (fileUpload) {
            submitWithFiles.upload(form, href, fUplUrl, callback);
        } else {
            jQuery.ajax({
                url: href,
                type: "POST",
                data: params,
                complete: callback
            });
        }
    }

};


var submitWithFiles = {

    createUploadIframe: function (uri) {
        //create frame
        var frameId = 'jUploadFrame';

        if (window.ActiveXObject) {
            var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />');
            if (typeof uri == 'boolean') {
                io.src = 'javascript:false';
            }
            else if (typeof uri == 'string') {
                io.src = uri;
            }
        }
        else {
            var io = document.createElement('iframe');
            io.id = frameId;
            io.name = frameId;
        }
        io.style.position = 'absolute';
        io.style.top = '-1000px';
        io.style.left = '-1000px';

        document.body.appendChild(io);

        return io
    },

    createUploadForm: function (oForm, href, frame) {
        //create form
        var formId = 'jUploadForm';
        form = jQuery(oForm).clone();
        form.attr("name", formId);
        form.attr("id", formId);
        form.attr("target", frame.name);
        if (form.action == undefined || form.action == "") form.attr("action", href);
        jQuery(form).appendTo(frame);
        return form;
    },

    upload: function (form, href, exturl, callback) {
        frame = this.createUploadIframe("", href);
        cForm = this.createUploadForm(form, href + exturl, frame);
        cForm.submit();
        frame.onload = function () {
            jQuery(cForm).remove();
            jQuery(frame).remove();
            SmartyAjax.call(href, cForm.method, "", callback);
        }
    }

};


jQuery("#loading").bind("ajaxSend", function () {
    jQuery(this).show(); // показываем лоадер
}).bind("ajaxComplete", function () {
    jQuery(this).hide(); // скрываем лоадер
});
