/* 
* DVCentre (v.1.0.0)
* by James Studdart (www.darkviper.co.uk)
* chrysb@gmail.com
*
* Special thanks to:
* James Parker - j1mb0jay@jimbojay.com
*
* Copyright (c) 2009 James Studdart
* Licensed under the GPL license. 
*
*
* NOTE: Requires jQuery framework (www.jquery.com)
*	Developed for: jQuery 1.3.2
*
*
*/


(function($) {
    $.fn.DVCentre = function() {

        var control = $(this);
        $(document).ready(function() { CenterItem(); });
        $(window).resize(function() { CenterItem(); });

        function CenterItem() {
            var controlHeight = control.children().height();
            var controlWidth = control.children().width();
            var controlMarginCSS = control.css("margin");
            var controlPaddingCSS = control.css("padding");


            if (controlMarginCSS == undefined) { controlMarginCSS = 0; }
            if (controlPaddingCSS == undefined) { controlPaddingCSS = 0; }

            //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]);
                }
            }


            //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);