JSPlumb Draggable Groups

HTML

<link rel="stylesheet" href="https://jsplumbtoolkit.com/demo/statemachine/demo.css">
<link rel="stylesheet" href="https://jsplumbtoolkit.com/css/jsplumb.css">
<script src="https://jsplumbtoolkit.com/js/jquery.jsPlumb-1.7.2.js"></script>
<script src="https://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<div id="main">
    <!-- demo -->
    <div style="height: 20px">
        <button id="moveNode1">Move PHONE1 to GREEN</button>
        <button id="moveNode2">Move PHONE1 to BLUE</button>
    </div>
    <div class="demo statemachine-demo" id="statemachine-demo">
        <div class="group" id="group1">
            <div class="background"></div>
            <div class="w" id="opened">BEGIN
                <div class="ep"></div>
            </div>
            <div class="w" id="phone1">PHONE INTERVIEW 1
                <div class="ep"></div>
            </div>
            <div class="w" id="phone2">PHONE INTERVIEW 2
                <div class="ep"></div>
            </div>
            <div class="w" id="phone3">PHONE INTERVIEW 3
                <div class="ep"></div>
            </div>
            <div class="w" id="phone4">PHONE INTERVIEW 4
                <div class="ep"></div>
            </div>
        </div>
        <div class="group" id="group2">
            <div class="background"></div>
            <div class="w" id="inperson">IN PERSON
                <div class="ep"></div>
            </div>
            <div class="w" id="rejected">REJECTED
                <div class="ep"></div>
            </div>
        </div>
        <div class="group" id="group3">
            <div class="background"></div>
            <div class="w" id="inperson1">IN PERSON
                <div class="ep"></div>
            </div>
            <div class="w" id="rejected1">REJECTED
                <div class="ep"></div>
            </div>
        </div>
        <div class="w" id="outer">OUTER
            <div class="ep"></div>
        </div>
    </div>
    <!-- /demo -->
</div>

CSS

html, body {
    height: 100%;
    width: 100%;
}
#main {
    width: 100%;
    height:100%;
    margin:0px;
}
.demo {
    margin:0px;
    position: relative;
    height: 500px;
}
.w {
    position: absolute;
    pointer-events: auto;
}
.group {
    position: absolute;
    width: 100%;
    height: 100%;
    z-index: 5;
    pointer-events: none;
}
.background {
    position: absolute;
    background-color: blue;
    opacity: 0.4;
    z-index: 3;
    border-radius: 4px;
    pointer-events:auto;
    padding: 10px;
    width: 0px;
    height: 0px;
}
#group2 .background {
    background-color: red;
}
.ep {
    pointer-events: auto;
}
#group3 .background {
    background-color: green;
}
}

JavaScript

jsPlumb.ready(function (instance) {

    var updateGroupPositions = function (animate) {

        $(".group").each(function (index) {
            var top, left, width, height;

            var $group = $(this);
            $nodes = $group.find('.w');
            $nodes.each(function (index) {
                var $node = $(this);
                var position = $node.position();
                top = (top === undefined ? position.top : Math.min(top, position.top));
                left = (left === undefined ? position.left : Math.min(left, position.left));
                width = (width === undefined ? (position.left + $node.outerWidth()) : Math.max(width, position.left + $node.outerWidth()));
                height = (height === undefined ? (position.top + $node.outerHeight()) : Math.max(height, position.top + $node.outerHeight()));
                //console.log($node.attr('id') + " height total: " + height + " position-top: " + position.top + " outer: " + $node.outerHeight());
            });

            height = height - top;
            width = width - left;

            var paddingTop = $group.find('.background').css('padding-top');
            var paddingBottom = $group.find('.background').css('padding-bottom');
            var paddingLeft = $group.find('.background').css('padding-left');
            var paddingRight = $group.find('.background').css('padding-right');
            if (animate) {
                $group.find('.background').animate({
                    "top": top - parseInt(paddingTop, 10),
                        "left": left - parseInt(paddingLeft, 10),
                        "width": width + parseInt(paddingRight, 10),
                        "height": height + parseInt(paddingBottom, 10)
                }, 250);
            } else {
                $group.find('.background').css({
                    "top": top - parseInt(paddingTop, 10),
                        "left": left - parseInt(paddingLeft, 10),
                        "width":...