﻿var PositionHelper = {

    getMinLeft: function(elements) {
        var minLeft = -1;

        for (var i = 0; i < elements.length; i++) {

            var obj = $(elements[i]);
            //Validate the element
            if (obj == undefined || obj.length == 0) continue;

            //Find the min left pos.
            var left = PositionHelper.findPosX(obj[0]);
            if ((left < minLeft) || (minLeft == -1)) minLeft = left;
        }
        return minLeft;
    },

    getMinTop: function(elements) {
        var minTop = -1;

        for (var i = 0; i < elements.length; i++) {
            var obj = $(elements[i]);
            //Validate the element.
            if (obj == undefined || obj.length == 0) continue;

            //Find top.
            var top = PositionHelper.findPosY(obj[0]);

            //Update min top.
            if ((top < minTop) || (minTop == -1)) minTop = top;
        }
        return minTop;
    },

    findPosX: function(obj) {
        return $(obj).offset().left;
    },

    findPosY: function(obj) {
        return $(obj).offset().top;
    },

    //The max width needed to wrap the set of elements.
    getMaxWidth: function(elements) {
        var maxTotalWidth = 0;

        for (var i = 0; i < elements.length; i++) {
            var obj = $(elements[i]);
            //Validate the element
            if (obj == undefined || obj.length == 0) continue;

            //Get the total width for the element.
            var left = PositionHelper.findPosX(obj[0])
            var width = obj.outerWidth();
            var totalWidth = left + width;

            //Update max total width.
            if (totalWidth > maxTotalWidth) maxTotalWidth = totalWidth;
        }
        return maxTotalWidth - PositionHelper.getMinLeft(elements);
    },

    //The max height needed to wrap the set of elements.
    getMaxHeight: function(elements) {
        var maxHeight = null;

        for (var i = 0; i < elements.length; i++) {
            var obj = $(elements[i]);
            //Validate the element.
            if (obj == undefined || obj.length == 0) continue;

            //Update max height.
            var height = PositionHelper.findPosY(obj[0]) + obj.outerHeight();
            if (height > maxHeight) maxHeight = height;
        }
        return maxHeight;
    }
};