var upl;

strtrim = function(text) { return text.replace(/^\s+|\s+$/, ''); };

function inline_message(formobj, data){
    if (!data['errors']){
        var pane = $(formobj).parent('div');
        // render message
        var new_message = $('div.message-to-clone').clone();
        new_message.hide();
        pane.after(new_message);
        new_message.find('div.text').html(data['text']);
        new_message.removeClass('message-to-clone');
        new_message.find('div.author').children('span').html(data['datetime']);
        // change counts if they exist
        on_page = $('div.filter').find('strong');
        if (typeof(on_page[0]) != 'undefined'){
            on_page.html(parseInt(on_page.html()) + 1);
            whole_count = $('div.filter').find('span');
            if (typeof(whole_count[0]) != 'undefined')
                whole_count.html(parseInt(whole_count.html()) + 1);
        }
        // reply
        // blocked for a while
        ///new_message.after('<div class="reply-message-button editlink"><div><span>Ответить</span><span class="message-id-holder">{{ message.id }}</span></div></div><div class="clearboth"></div>');
        ///new_message.next('div').find('span.message-id-holder').html(data['id']);
        ///new_message.next('div').click(perehodyashee_znamya_ordena_leninskogo_komsomola);
        // picture
        if (data['big_pic_url']){
            new_message.find('div.message-pic').find('a').click(function(e){
                show_preview('', data['big_pic_url']);
                e.preventDefault();
            });
            new_message.find('div.message-pic').find('img').attr({src: data['mini_pic_url']});
            new_message.find('div.message-pic').show();
        }
        new_message.css({'margin-left': pane.css('margin-left')});
        // clear form
        formobj.elements['text'].value = '';
        formobj.upl.destroy();
        formobj.upl._createInput();
        formobj.upl._rerouteClicks();
        $(formobj).find('div.btn-browse').next('div').find('input[type="text"]').val('');
        
        var form = $(formobj).parent('div');
        form.fadeOut(500, function(){$(form).remove();oldform = null;new_message.fadeIn(500);});
    }
}

function appended_message(formobj, data){
    if (!data['errors']){
        // render message
        var new_message = $('div.message-to-clone').clone();
        new_message.hide();
        $('div.message-to-clone').after(new_message);
        new_message.find('div.text').html(out['text']);
        new_message.removeClass('message-to-clone');
        new_message.find('div.author').children('span').html(data['datetime']);
        // change counts if they exist
        on_page = $('div.filter').find('strong');
        if (typeof(on_page[0]) != 'undefined'){
            parts = on_page.html().split('-');
            if (parts.length > 1)
                on_page.html('1-' + (parseInt(parts.pop()) + 1))
            else
                on_page.html(parseInt(parts.pop()) + 1);
            whole_count = $('div.filter').find('span');
            if (typeof(whole_count[0]) != 'undefined')
                whole_count.html(parseInt(whole_count.html()) + 1);
        }
        // reply
        // blocked for a while
        ///new_message.after('<div class="reply-message-button editlink"><div><span>Ответить</span><span class="message-id-holder">{{ message.id }}</span></div></div><div class="clearboth"></div>');
        ///new_message.next('div').find('span.message-id-holder').html(data['id']);
        ///new_message.next('div').click(perehodyashee_znamya_ordena_leninskogo_komsomola);
        // picture
        if (data['big_pic_url']){
            new_message.find('div.message-pic').find('a').click(function(e){
                show_preview('', data['big_pic_url']);
                e.preventDefault();
            });
            new_message.find('div.message-pic').find('img').attr({src: data['mini_pic_url']});
            new_message.find('div.message-pic').show()
        }
        // clear form
        formobj.elements['text'].value = '';
        formobj.upl.destroy();
        formobj.upl._createInput();
        formobj.upl._rerouteClicks();
        $(formobj).find('div.btn-browse').next('div').find('input[type="text"]').val('');
        
        new_message.slideDown(500);
        //$(formobj).parent('div').find('a.cancel-btn').click();
    }
}

function form_to_ajax(formobj, backend){
    out = {};
    for (i=0; i < formobj.elements.length; i++){
        if (formobj.elements[i].type == 'radio'){
            if (formobj.elements[i].checked)
                out[formobj.elements[i].name] = formobj.elements[i].value;
        }else{
            out[formobj.elements[i].name] = formobj.elements[i].value;
        }
        formobj.elements[i].blur();
    }
    if (out['text'].replace(/\s+$/,"") == ''){
        show_popup('Внимание', 'Тело сообщения не должно быть пустым');
        return false;
    }
    var send_div = $(formobj).find('div.picture-send');
    send_div.find('input[type="image"]').hide();
    send_div.find('div.message-wait').show();
    // no picture - self send
    if (formobj.upl._input.value === ''){
        $.post(backend, 
               out,
               function(json){
                    eval("var data = " + json);
                    // top form
                    if (typeof($(formobj).parent('div.form-to-clone')[0]) != 'undefined')
                        appended_message(formobj, data)
                    else 
                        inline_message(formobj, data);
        });
    // othervise send via AjaxUpload
    }else{
        formobj.upl.setData(out);
        formobj.upl.submit();
    }
}

function create_upload(selector, backend){
    selector.next('div').find('input[type="text"]').val('');
    return new AjaxUpload(selector, 
                       {action: backend,
                        autoSubmit: false,
                        onChange: function(file_name, extension){
                                    //this.setData({'instanceid': form.elements['instanceid'].value,
                                                  //'title': form.elements['title'].value});
                                    //this.submit();
                                    selector.next('div').find('input[type="text"]').val(file_name);
                                    var upl = this;
                                    selector.next('div').find('input[type="text"]').change(function(){
                                        if (!$(this).val()){
                                            upl.destroy();
                                            upl._createInput();
                                            upl._rerouteClicks();
                                        }
                                    });
                                    },
                        onComplete: function(file_name, json){
                                        eval("var data = " + json + ";");
                                        formobj = $(this._button).parents().filter('form')[0];
                                        this._input.value = '';
                                        if (typeof($(formobj).parent('div.form-to-clone')[0]) != 'undefined')
                                            appended_message(formobj, data)
                                        else 
                                            inline_message(formobj, data);
                                    }
                        });
}

var oldform;

function perehodyashee_znamya_ordena_leninskogo_komsomola(e){
        if (!oldform){
            $(this).next('div').after($('form.message-form:first').parent('div.slide').clone());
            ml = $(this).prev('div').css('margin-left');
            if (isNaN(ml.replace('px','')))
                ml = '20px';
            else
                ml = parseInt(ml.replace('px','')) + 20 + 'px';
            $(this).next('div').next('div').hide();
            $(this).next('div').next('div').css({position: 'relative', top: '-20px', 'margin-left': ml});
            $(this).next('div').next('div').removeClass('form-to-clone');
            $(this).next('div').next('div').find('form').find('input[type="hidden"]')[0].value = $(this).find('span.message-id-holder').html();
            $(this).next('div').next('div').find('form').find('textarea')[0].value = '';
            $(this).next('div').next('div').find('form').find('textarea').keyup(verify_message);
            $(this).next('div').next('div').find('form').find('textarea').keyup();
            oldform = $(this).next('div').next('div');
            $(this).next('div').next('div').find('a.cancel-btn').unbind('click').click(function(e){
                var form = $(this).parents().filter('div.slide');
                form.slideUp(500, function(){$(this).remove();oldform = null;});
                e.preventDefault();
            });
            var formobj = $(this).next('div').next('div').find('form')[0];
            formobj.upl = create_upload($(this).next('div').next('div').find('form').find('div.btn-browse'), '/comments/add_comment_ajax/');
            //$(this).next('div').next('div').show();
            $(this).next('div').next('div').slideDown(500, function(){$(this).css({width: $(this).width()-1});});
            e.preventDefault();
            return false;
        }
}

function verify_message(){
    var pic_hold = $(this).parent('div').next('div').next('div');
    if ($(this)[0].value.replace(/\s+$/,"") == ''){
        pic_hold.find('input[type="image"]').hide();
        pic_hold.find('div.message-wait').show();
    }else{
        pic_hold.find('div.message-wait').hide();
        pic_hold.find('input[type="image"]').show();
    }
}

$(document).ready(function(){
    var formobj = $('form.message-form:first')[0];
    if (formobj){
        $('div.reply-message-button').unbind('click').click(perehodyashee_znamya_ordena_leninskogo_komsomola);
        formobj.upl = create_upload($(formobj).find('div.btn-browse'), '/comments/add_comment_ajax/');
        $('form.message-form:first').find('textarea').keyup(verify_message);
        $('form.message-form:first').find('textarea').keyup();
    }
});

