var toolboxDiv;
var toolboxButton;

$(document).ready(function() {
    toolboxDiv = $("#toolbox");
    toolboxButton = $("a#toolboxbutton");
    $('a[href*="cluster.php"]').draggable({
        cursor: 'move',
        cursorAt: {
            top: 10,
            left: 10
        },
        helper: function(event) {
            return $('<div class="clusterdraghelper">Cluster ' + $(this).attr("rel") + '</div>');
        },
        revert: 'invalid'
    });
    setUpDroppable();
    $(window).scroll(function(){
        toolboxDiv
        .stop()
        .animate({
            "marginTop": ($(window).scrollTop()) + "px"
        }, "normal" );
        setUpDroppable();
    });
    toolboxButton.click(function () {
        toggleToolbox();
    });
    $("form#mergersuggestion").submit(function(e) {
        e.preventDefault();
        $(this).children("input[type=submit]").attr('disabled', 'disabled');
        $(this).children("input[type=submit]").attr('value', 'Wait...');
        $.post("suggestmerger.php?ajax",
            $(this).serialize(), // The data is serialized from the form
            function(data){ // the success crap
                var response = parseInt(data);
                if(response == 1) {
                    addMessageTo(messageBox,"Thank you for your suggestion.");
                } else {
                    addMessageTo(errorBox,"Sorry, something went wrong with your suggestion.");
                }
                $("form#mergersuggestion > input[type=hidden]").remove();
                $("form#mergersuggestion > input[type=submit]").removeAttr("disabled");
                $("form#mergersuggestion > input[type=submit]").attr('value', 'Submit');
                $("div#clusterstomerge > ul > li").fadeOut("fast",function(){
                    $("div#clusterstomerge > ul > li").remove();
                })
                $("div#clusterbox").text("0");
            });
    });
    getNumberOfClusters();
});

function setUpDroppable() {
    $("#clusterbox").droppable({
        tolerance: 'touch',
        drop: function(event, ui) {
            var clusterid = ui.draggable.attr("rel");
            var clustertitle = ui.draggable.text();
            var clusterlink = ui.draggable.attr("href");
            addClusterToSuggestedMergers(clusterid,clustertitle,clusterlink);
        }
    });
}

function getNumberOfClusters() {
    var numofclusterstomerge = $("#mergersuggestion > input[type='hidden']").size();
    $("#clusterbox").text(numofclusterstomerge);
    if(numofclusterstomerge < 2) {
        $("form#mergersuggestion > input[type=submit]").attr('disabled', 'disabled');
    } else {
        $("form#mergersuggestion > input[type=submit]").removeAttr("disabled");
    }
    $("#clusterbox").css("font-size", "2.1em");
    $("#clusterbox").animate({
        fontSize: "1.8em"
    }, 500 );
}

function addClusterToSuggestedMergers(clusterid,clustertitle,clusterlink) {
    var numalreadyexisting = $("#mergersuggestion > input[value='" + clusterid + "']").size();
    if(numalreadyexisting < 1) {
        $.post("ajaxscripts/managemergers.php",
        {
            c : clusterid,
            ctitle : clustertitle,
            action: "add"
        },
        function(data){ // the success crap
            var response = parseInt(data);
            if(response == 1) {
                var newlistelementid = 'cl-' + clusterid;
                var newhiddeninput = '<input type="hidden" name="c[]" value="' + clusterid + '" />';
                $("form#mergersuggestion").prepend(newhiddeninput);
                getNumberOfClusters();
                var newlistelement = '<li id="' + newlistelementid + '" style="display:none;"><a href="' + clusterlink + '" title="' + clustertitle + '">' + clusterid + '</a><a href="javascript:deleteClusterFromSuggestedMergers(' + clusterid + ')"" class="remcluster">x</a></li>';
                $("div#clusterstomerge > ul").append(newlistelement);
                $("div#clusterstomerge > ul > li#" + newlistelementid).fadeIn("fast");
            } else {
                addMessageTo(errorBox,"Something went wrong, please try again.");
            }
        });
    }
}

function deleteClusterFromSuggestedMergers(clusterid) {
    $.post("ajaxscripts/managemergers.php",
    {
        c : clusterid,
        action: "remove"
    },
    function(data){ // the success crap
        var response = parseInt(data);
        if(response == 1) {
            var input = $("#mergersuggestion > input[value='" + clusterid + "']");
            var li = $("li#cl-" + clusterid);
            input.remove();
            li.fadeOut("fast",function() {
                li.remove();
            });
            getNumberOfClusters();
        } else {
            addMessageTo(errorBox,"Something went wrong, please try again.");
        }
    });
}

function toggleToolbox() {
    var toolboxWidth = toolboxDiv.width();
    if(toolboxWidth > 200) {
        $("div#clusterstomerge").fadeOut("fast", function() {
            toolboxDiv.animate({
                width: "-=200",
                height: "-=200"
            }, 500, function() {
                toolboxButton.attr("class","expandtoolbox");
            });
        });
    } else {
        toolboxDiv.animate({
            width: "+=200",
            height: "+=200"
        }, 500, function() {
            toolboxButton.attr("class","contracttoolbox");
            $("div#clusterstomerge").fadeIn();
        });
    }
    
}
