dojo.addOnLoad( function() { process_comments_containers() } );
dojo.addOnLoad( function() { process_comments_messages() } );


function process_comments_containers() {
    var containers = dojo.html.getElementsByClass('comments_container');

    for ( var i in containers ) {
        var comments = containers[i];
        if ( dojo.html.hasClass( comments, 'comments_container_processed' ) ) continue;
        dojo.html.addClass( comments, 'comments_container_processed' );
        var parts = comments.id.match(/^comments_container_(\d+)$/);
        if ( ! parts || ! parts[1] ) continue;
        
        var thread_id = parts[1];
        
        var content_submit = dojo.byId( 'comments_submit_' + thread_id );
        if ( content_submit ) connect_submit( content_submit, thread_id);
        
        var start_submit = dojo.byId( 'comments_start_writing_' + thread_id );
        if ( start_submit ) connect_start( start_submit, thread_id);
        
    }
}

function connect_submit( content_submit, thread_id ) {
    dojo.event.connect( content_submit, 'onclick', function( evt ) {
        evt.preventDefault();
        var content = tinyMCE.getContent( 'comments_content_' + thread_id );
        if ( ! content ) return;
        var f_anon_name = dojo.byId('comments_anon_name_' + thread_id );
        var f_anon_email = dojo.byId('comments_anon_email_' + thread_id );
        var f_anon_url = dojo.byId('comments_anon_url_' + thread_id );
        tinyMCE.setContent('<p></p>');
        dojo.io.bind({
            url: content_submit.href,
            mimetype: "text/json",
            method: 'POST',
            content : {
                anon_name : f_anon_name ? f_anon_name.value : '',
                anon_email : f_anon_email ? f_anon_email.value : '',
                anon_url : f_anon_url ? f_anon_url.value : '',
                content : content,
                thread_id : thread_id
            },
            load: function(type, data, evt) {
                tinyMCE.setContent('<p></p>');
                var messages_container = dojo.byId( 'comments_messages_container_' + thread_id );
                if ( ! messages_container ) return;
                messages_container.innerHTML = data.messages_html;
                process_comments_messages();
            },
            error: function(type, error) {
                tinyMCE.setContent( content );
                alert('Error sending comment. Please try again.');
            }
        });
    } );
}

function connect_start( start_submit, thread_id ) {
    dojo.event.connect( start_submit, 'onclick', function( evt ) {
        evt.preventDefault();
        var input_container = dojo.byId('comments_input_container_' + thread_id );
        if ( input_container ) dojo.html.removeClass( input_container, 'hiddenBlock' );
        dojo.html.addClass( start_submit, 'hiddenBlock' );
    } );
}

function process_comments_messages() {
    var comments = dojo.html.getElementsByClass('comments_message');
    
    for ( var i in comments ) {
        var comment = comments[i];
        if ( dojo.html.hasClass( comment, 'comments_message_processed' ) ) continue;
        dojo.html.addClass( comment, 'comments_message_processed' );
        var parts = comment.getAttribute('id').match(/^comments_message_(\d+)_(\d+)$/);
        if ( ! parts || ! parts[1] || ! parts[2] ) continue;
        
        var thread_id = parts[1];
        var post_id = parts[2];
        var delete_button = dojo.byId( 'comments_delete_' + post_id );
        
        if ( ! delete_button ) continue;
        
        connect_delete( delete_button, thread_id, post_id );
    }
}

function connect_delete( delete_button, thread_id, post_id ) {
    dojo.event.connect( delete_button, 'onclick', function( evt ) {
        evt.preventDefault();
        dojo.io.bind({
            url: delete_button.href,
            mimetype: "text/json",
            method: 'POST',
            content : {
                post_id : post_id,
                thread_id : thread_id
            },
            load: function(type, data, evt) {
                var messages_container = dojo.byId( 'comments_messages_container_' + thread_id );
                if ( ! messages_container ) return;
                messages_container.innerHTML = data.messages_html;
                process_comments_messages();
            },
            error: function(type, error) {
                alert('Error sending comment. Please try again.');
            }
        });
    } );
}

