function eval_ajax_response(url, form)
    {
        new Ajax.Request(url, {
            method: 'post',
            parameters: Form.serialize(form),
            onSuccess: function (transport) {
                var response = transport.headerJSON;
                run_callbacks(response.callbacks);
            }
        });
        return false;
    }
    function eval_iframe_response(form)
    {
        
        if (window.iframeSubmitLock) {
            alert('Подождите, Ваш комментарий в процессе загрузки.');
        } else {
        window.iframeSubmitLock = true;
        new Form.IframeSubmit(form, {
            onComplete: function(transport) {
                //alert();
                var callbacks = transport.responseText.evalJSON();
                //alert(callbacks.toSource());
                run_callbacks(callbacks.callbacks);
                window.iframeSubmitLock = false;
            }
        });
        }

    }
    function run_callbacks(callbacks)
    {
        var callbacks = $H(callbacks);
        
        callbacks.each(function(pair){
            window[pair.key](pair.value);
        });
    }
    
    function render_register_errors(params)
    {
        var formIdScope = '';
        if (params.form_id) {
            var formIdScope = 'form#' + params.form_id + ' > ';
        }

        clear_errors(params);
        var errors = $H(params.errors);

        errors.each(function(pair){
            errorDiv = $$('#' + params.form_id + '_form_' + pair.key)[0].ancestors()[0].siblings()[0];
            errorDiv.update(pair.value).show();
        });
    }
    
    function render_errors(params)
    {
        var formIdScope = '';
        if (params.form_id) {
            var formIdScope = 'form#' + params.form_id + ' > ';
        }
        clear_errors(params);
        var errors = $H(params.errors);
        errors.each(function(pair){
            //$(pair.key).clear();
            $$(formIdScope + '#error_for_' + pair.key).invoke('update', (pair.value)).invoke('show');
        });
    }

    function clear_errors(params)
    {
        var formIdScope = '';
        if (params.form_id) {
            var formIdScope = 'form#' + params.form_id + ' > ';
        }
        $A($$(formIdScope + 'div.error')).map(Element.extend).invoke('update', '').invoke('hide');
    }

    function redirect_me(params)
    {
        document.location = params.url;
    }

    function reload_captcha(params)
    {
        //alert(typeof(params.reload));
        if (params.reload) {
        	$$('img.captcha')[0].src=params.url+'&key='+Math.round(Math.random(0)*10000000)+1;
        }

    }