dojo.addOnLoad( function() { process_solutions_rate() } );

function process_solutions_rate() {
    var links_containers = dojo.html.getElementsByClass('solutions_rate_links');
    
    for ( var i in links_containers ) {
        var links_div = links_containers[i];
        if ( dojo.html.hasClass( links_div, 'solutions_rate_links_processed' ) ) continue;
        dojo.html.addClass( links_div, 'solutions_rate_links_processed' );
        var parts = links_div.getAttribute('id').match(/^solutions_rate_links_(\d+)$/);
        if ( ! parts || ! parts[1] ) continue;
        
        var enabled = 1;
        if ( dojo.html.hasClass( links_div, 'solutions_rating_disabled' ) ) enabled = 0;
        
        var id = parts[1];
        var buttons = dojo.html.getElementsByClass('solutions_solution_rate_link_'  + id);
        for ( var j in buttons ) {
            solutions_rate_attach( buttons[j], id, enabled, 'solution' );
        }
        var buttons = dojo.html.getElementsByClass('solutions_idea_link_rate_link_'  + id);
        for ( var j in buttons ) {
            solutions_rate_attach( buttons[j], id, enabled, 'idea_link' );
        }
    }
}

function solutions_rate_attach( button, post_id, enabled, prefix ) {
    dojo.event.connect( button, 'onclick', function( evt ) {
        evt.preventDefault();
        if ( enabled ) dojo.io.bind({
            url: button.href,
            mimetype: "text/json",
            method: 'POST',
            content : {},
            load: function(type, data, evt) {
                var container = dojo.byId( 'solutions_'+prefix+'_rate_container_' + post_id );
                if ( ! container ) return;
                container.innerHTML = data.messages_html;
                process_solutions_rate();
            },
            error: function(type, error) {
                alert('Error sending vote. Please try again.');
            }
        });
    } );
}

