jq(document).ready(function() {

    /*****************************************************************
     * Check or uncheck all checkboxes
     *****************************************************************/
    jq("input[name='check_all']").click(function(){
          if(jq(this).val()==0){
            jq(this).parents("table")
                   .find("input:checkbox")
                   .attr("checked","checked");
            jq(this).val("1");
          }
          else{
            jq(this).parents("table")
                   .find("input:checkbox")
                   .attr("checked","");
            jq(this).val("0");
          }
    });


    /*****************************************************************
     * Delete comment
     *****************************************************************/
    jq("input[name='form.button.Delete']").click(function(e) {
        e.preventDefault();
        var button = jq(this);
        var row = jq(this).parent().parent();
        var form = jq(row).parents("form");
        var path = jq(row).find("input:checkbox").attr("value");
		var target = path + "/@@moderate-delete-comment";
        var comment_id = jq(this).attr("id");
        jq.ajax({
            type: "GET",
            url: target,
            success: function(msg){
                // fade out row
                jq(row).fadeOut("normal", function(){
                    jq(this).remove();
                });
            },
			error: function(msg){
                alert("Error sending AJAX request:" + target);
            }
        });
    });

    /*****************************************************************
     * Publish comment
     *****************************************************************/
    jq("input[name='form.button.Publish']").click(function(e) {
        e.preventDefault();
        var button = jq(this);
        var row = jq(this).parent().parent();
        var form = jq(row).parents("form");
        var path = jq(row).find("input:checkbox").attr("value");
        var target = path + "/@@moderate-publish-comment";
        var currentFilter = jq(form).find("[name='form.button.Filter']").attr("value");
        jq.ajax({
            type: "GET",
            url: target,
            success: function(msg){
				if (currentFilter == 'pending') {
                    // fade out row
                    jq(row).fadeOut("normal", function(){
                        jq(this).remove();
                    });
				} else {
					// fade out button
					jq(button).fadeOut("normal", function(){
						jq(this).remove();
					});
				}
            },
            error: function(msg){
                alert("Error sending AJAX request:" + target);
            }
        });
    });


    /*****************************************************************
     * Bulk actions (delete, publish)
     *****************************************************************/
    jq("input[name='form.button.BulkAction']").click(function(e) {
        e.preventDefault();
        var form = jq(this).parents("form")
        var target = jq(form).attr('action');
        var params = jq(form).serialize();
        var valArray = jq('input:checkbox:checked');
        var currentFilter = jq(form).find("[name='form.button.Filter']").attr("value");
        var currentAction = jq(form).find("[name='form.select.BulkAction']").val();
        var selectField = jq(form).find("[name='form.select.BulkAction']");
        if (valArray.length) {
            jq.post(target, params, function(data) {
                valArray.each(function () {
                    // if bulkaction is delete, or the current filter is
                    // pending (because then publish also removes the comment),
                    // remove all selected comments.
                    if (currentAction == 'delete' || currentFilter == 'pending') {
                        var row = jq(this).parent().parent();
                        row.fadeOut("normal", function() {
                           row.remove();
                        });
                    }
                    // bulkaction is publish and there is no current filter
                    if (currentAction == 'publish' && currentFilter == '') {
                        // remove the publish button
                        var row = jq(this).parent().parent();
                        var form = row.find("form.workflow_action");
                        var publishButton = row.find(".comment-publish-button");
                        var selectField = row.find("input:checkbox");
                        jq(publishButton).fadeOut("normal", function(){
                            jq(form).remove();
                        });
                        // reset the select fields
                        selectField.attr("checked","");
                    }
                });
            });
        } else {
            // The user has submitted a bulk action, but no comment
            // was selected.
            // Todo: nicer and translated message
            alert("You haven't selected anything for this bulk action.");
        }
        // reset the bulkaction select
        selectField.find("option[value='-1']").attr( 'selected', 'selected' );
    });

});
