/* 
* CenterIt (v.1.0.0)
* by James Studdart (www.darkviper.co.uk)
* james@darkviper.co.uk
*
* Copyright (c) 2009 James Studdart
* Licensed under the GPL license. 
*
*
* NOTE: Requires jQuery framework (www.jquery.com)
*	Developed for: jQuery 1.3.2
*
* Special Thanks to James Parker
*
*/


(function($) {
    $.fn.CenterIt = function(options) {

        var defaults = {
            ignorechildren: true
        };
        var settings = $.extend({}, defaults, options);

        var control = $(this);

        $(document).ready(function() { CenterItem(); });
        $(window).resize(function() { CenterItem(); });

        function CenterItem() {


            var controlHeight = 0;
            var controlWidth = 0;

            if (settings.ignorechildren) {
                controlHeight = control.height();
                controlWidth = control.width();
            } else {

                var children = control.children();

                for (var i = 0; i < children.length; i++) {
                    if (children[i].style.display != 'none') {
                        controlHeight = children[i].clientHeight;
                        controlWidth = children[i].clientWidth;
                    }
                }
            }

            var controlMarginCSS = control.css("margin");
            var controlPaddingCSS = control.css("padding");

            //Work out Margins
            controlMarginCSS = controlMarginCSS.replace(/auto/gi, '0');
            controlMarginCSS = controlMarginCSS.replace(/px/gi, '');
            controlMarginCSS = controlMarginCSS.replace(/pt/gi, '');
            var totalMargin = "";

            if (controlMarginCSS != "") {
                totalMargin = controlMarginCSS.split(' ');
            }

            var horizontalMargin = 0;
            var verticalMargin = 0;

            if (totalMargin != "NaN") {
                if (totalMargin.length > 0) {
                    horizontalMargin = parseInt(totalMargin[1]) + parseInt(totalMargin[3]);
                    verticalMargin = parseInt(totalMargin[2]) + parseInt(totalMargin[2]);
                }
            }

            //Work out Padding
            controlPaddingCSS = controlPaddingCSS.replace(/auto/gi, '0');
            controlPaddingCSS = controlPaddingCSS.replace(/px/gi, '');
            controlPaddingCSS = controlPaddingCSS.replace(/pt/gi, '');
            var totalPadding = "";

            if (controlPaddingCSS != "") {
                totalPadding = controlPaddingCSS.split(' ');
            }

            var horizontalPadding = 0;
            var verticalPadding = 0;

            if (totalPadding != "NaN") {
                if (totalPadding.length > 0) {
                    horizontalPadding = parseInt(totalPadding[1]) + parseInt(totalPadding[3]);
                    verticalPadding = parseInt(totalPadding[2]) + parseInt(totalPadding[2]);
                }
            }

            if (verticalMargin == "NaN" || isNaN(verticalMargin ))
            { verticalMargin = 0; }
            if (verticalPadding == "NaN" || isNaN(verticalPadding))
            { verticalPadding = 0; }
            
            //Apply  CSS
            var windowHeight = $(window).height();
            var windowWidth = $(window).width();

            control.css("position", "fixed");
            control.css("height", controlHeight + "px");
            control.css("width", controlWidth + "px");



                control.css("top", ((windowHeight - (controlHeight + verticalMargin + verticalPadding)) / 2) + "px");

            control.css("left", ((windowWidth - (controlWidth + horizontalMargin + horizontalPadding)) / 2) + "px");
        }
    }
})(jQuery);



