$(document).ready(function() {
    $(".addgroup").mingrouper(p);
    $('#addbtn').click(function() {
        $('#addbtn').fadeOut(1000).hide();
        $('#insertbox').fadeIn(1000).show();
        $('#addgrpbox').focus();
        //$('#insertbox').html("<input id=\"addgrpbox\" style=\"background-color:yellow\" type=\"text\"><span style=\"cursor:pointer;\" id=\"grpsubmiter\"><img src=\"../App_Themes/images/SubmitGroup.png\" /></span>");
    });
    $('.addgroup').click(function() {
        if ($("#grpmenulist em").length > 0) //if newcomer message element exists. Not a future proof check.
            $("#addbtn").fadeIn(100).fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100);
        $.fn.mingrouper.ein = $(this).attr('id').replace(/gr/, "");
    });
    $('.rmvgroup').click(function() {
        var css_id = $(this).parents('div:eq(0)').attr('id');
        var group = $("h2:first").html();
        $(this).append("<img src=\"../App_Themes/images/ajax-loader.gif\" />");
        $.ajax({
            type: "POST",
            url: "../MinistryWatch.asmx/RemoveFromGroup",
            data: "{'ein':'" + css_id + "', 'group':'" + group + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
                //count
                $("#" + css_id).remove();
                $("#m" + css_id).remove();
                var oddnumber = true; //reorder background color
                $(".minblock").each(function(i) {
                    if (oddnumber) {
                        if ($(this).hasClass("alternat")) {
                            $(this).removeClass("alternat").addClass("alternate");
                        }
                    }
                    else {
                        if ($(this).hasClass("alternate")) {
                            $(this).removeClass("alternate").addClass("alternat");
                        }
                    }
                    oddnumber = !oddnumber;
                });
            },
            error: function(msg) {
                $("#" + thisclick).html("Temporary database error, ministry could not be removed from group");
            }
        });
    });
});

//$('.addgroup').live('click', function() { //remembers ID/EIN of last clicked before menu opens
//    alert("addrgorup");
    //$.fn.mingrouper.ein = $(this).attr('id').replace(/gr/, "");
    //alert($.fn.mingrouper.ein);
    //$("#grp p:first").html($.fn.mingrouper.ein.replace(/gr/, ""));
//});

//$('.addgroup').click(function() {
//    $.fn.mingrouper.ein = $(this).attr('id');
//    $("#grp p:first").html($.fn.mingrouper.ein.replace(/gr/, ""));
//    //alert($.fn.mingrouper.ein.replace(/gr/, ""));
//});

$('#grpsubmiter') //add a new group name
    .live('click', function() {
        var input = $('#addgrpbox').val();
        var check = input.match(/[`\+]/);
        if (check != null) {
            $('#insertboxmsg').html("Cannot add a group with this name, invalid characters. Try sticking with alpha-numerics and space.");
        }
        else {
            $('#insertboxmsg').html("<img src=\"../App_Themes/images/ajax-loader.gif\" />");
            $.ajax({
                type: "POST",
                url: "../MinistryWatch.asmx/InsertGrouping",
                data: "{'grouping':'" + input + "'}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                    //alert("success ajax");
                    //$.fn.mingrouper.groupings = ""; //resets the group listings
                    //$(".addgroup").mingrouper((msg.d.split("`"))); //update new array back into pluggin
                    //$("#notes" + css_id).html("<hr />" + msg.d);
                    var returnedItems = msg.d.split("`");
                    var menuoutput = "";
                    var mainlistingoutput = "<div><a href=\"myministries.aspx\">Complete Listing</a></div>";
                    for (var i = 0; i < returnedItems.length; i++) { //<a href=\"myministries.aspx?group=" + p + "\">" + p + "</a>
                        menuoutput += "<p>" + returnedItems[i] + "</p>"; //<a href="myministries.aspx?group=<%=p %>"><%=p %></a>
                        mainlistingoutput += "<div><span class=\"groupitem\" ><a href=\"myministries.aspx?group=" + returnedItems[i].replace(/ /g, '+') + "\">" +
                            returnedItems[i] + "</a></span><span class=\"rmvgroup\"><em>remove</em></span></div>";
                    } //returnedItems[i]
                    $("#grpmenulist").html(menuoutput);
                    $("#grplist").html(mainlistingoutput);
                    $('#insertboxmsg').html("");
                    $('#insertbox').fadeOut(1000).hide();
                    $('#addbtn').fadeIn(1000).show();
                },
                error: function(msg) {
                    $('#insertboxmsg').html("Error adding new group, possibly illegal characters.  Try sticking with alpha-numerics and space.");
                }
            });
        }
    });

$('.rmvgroup') //remove a group name from existence
.live('click', function() {
    //alert($(this).prev().find("a").html());
    $(this).append("<img src=\"../App_Themes/images/ajax-loader.gif\" />");
    $.ajax({
        type: "POST",
        url: "../MinistryWatch.asmx/RemoveGroupings",
        data: "{'grouping':'" + $(this).prev().find("a").html() + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            var returnedItems = msg.d.split("`");
            var menuoutput = "";
            var mainlistingoutput = "<div><a href=\"myministries.aspx\">Complete Listing</a></div>";
            for (var i = 0; i < returnedItems.length; i++) {
                menuoutput += "<p>" + returnedItems[i] + "</p>";
                //                  mainlistingoutput += "<div><span>" + returnedItems[i] + "</span> - <span class=\"rmvgroup\"><em>remove</em></span></div>";
                mainlistingoutput += "<div><span class=\"groupitem\" ><a href=\"myministries.aspx?group=" + returnedItems[i].replace(/ /g, '+') + "\">" +
                        returnedItems[i] + "</a></span><span class=\"rmvgroup\"><em>remove</em></span></div>";
            }
            $("#grpmenulist").html(menuoutput);
            $("#grplist").html(mainlistingoutput);
        }
    });
    //$(this).parents('div:eq(0)').remove();
});

$('#grpmenulist p') //add to group clicked
.live('click', function() {
    var groupp = $(this).html();
    var id = $.fn.mingrouper.ein;
    $("#msg" + id).html("<img src=\"../App_Themes/images/ajax-loader.gif\" />");
    $.ajax({
        type: "POST",
        url: "../MinistryWatch.asmx/AddEINToGroup",
        data: "{'ein':'" + id + "', 'group':'" + groupp + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(msg) {
            $("#msg" + id).html("Added to group: " + groupp);
        },
        error: function(msg) {
            $("#msg" + id).html("Error in adding to group");
        }
    });
});

(function($) {
    $.fn.mingrouper = function(grouparray) {
        return this.each(function() {

            $(this).click(function(e) {
                e.stopPropagation(); //stop body click event trigger
                var clickX = e.pageX;
                var clickY = e.pageY;
                if ($.browser.msie) var boxWidth = $("#grp").outerWidth(true)
                else var boxWidth = $("#grp").width()
                $("#grp").width(boxWidth);
                $("#grp").css("left", clickX).css("top", clickY).fadeIn("fast");
            });
            $('body').click(function() {
                $("#grp").fadeOut("fast");
            });
        });
    }

    $.fn.mingrouper.ein = "";
})(jQuery);