﻿jQuery.fn.center = function (params) {
    var options = {
        vertical: true,
        horizontal: true
    }
    op = jQuery.extend(options, params);
    return this.each(function () {
        var $self = jQuery(this);
        var width = $self.width();
        var height = $self.height();
        var paddingTop = parseInt($self.css("padding-top"));
        var paddingBottom = parseInt($self.css("padding-bottom"));
        var borderTop = parseInt($self.css("border-top-width"));
        var borderBottom = parseInt($self.css("border-bottom-width"));
        var mediaBorder = (borderTop + borderBottom) / 2;
        var mediaPadding = (paddingTop + paddingBottom) / 2;
        var positionType = $self.parent().css("position");
        var halfWidth = (width / 2) * (-1);
        var halfHeight = ((height / 2) * (-1)) - mediaPadding - mediaBorder;
        var cssProp = {
            position: 'absolute'
        };
        if (op.vertical) {
            cssProp.height = height;
            cssProp.top = '50%';
            cssProp.marginTop = halfHeight;
        }
        if (op.horizontal) {
            cssProp.width = width;
            cssProp.left = '50%';
            cssProp.marginLeft = halfWidth;
        }
        if (positionType == 'static') {
            $self.parent().css("position", "relative");
        }
        $self.css(cssProp);
    });
};
