/**
 * @author Alexandre Magno
 * @desc Center a element with jQuery
 * @version 1.0
 * @example
 * $("element").center({
 * 	vertical: true,
 *      horizontal: true
 * });
 * @obs With no arguments, the default is above
 * @license free
 * @param bool vertical, bool horizontal
 * @contribution Paulo Radichi
 *
 */
jQuery.fn.center = function(params) {
    
    var options = {
        vertical: true,
        horizontal: true
    }
    op = jQuery.extend(options, params);

    return this.each(function() {

        //initializing variables
        var $self = jQuery(this);
        //get the dimensions using dimensions plugin
        var width = $self.width();
        var height = $self.height();
        //get the paddings
        var paddingTop = parseInt($self.css("padding-top"));
        var paddingBottom = parseInt($self.css("padding-bottom"));
        //get the borders
        /* Modifié par Sicabol pour résoudre un pb sous IE…
        var borderTop = parseInt($self.css("border-top-width"));
        var borderBottom = parseInt($self.css("border-bottom-width"));
        */
        var borderTop = isNaN(parseInt($self.css("border-top-width"))) ? 0 : parseInt($self.css("border-top-width"));
        var borderBottom = isNaN(parseInt($self.css("border-bottom-width"))) ? 0 : parseInt($self.css("border-bottom-width"));
        //get the media of padding and borders
        var mediaBorder = (borderTop+borderBottom)/2;
        var mediaPadding = (paddingTop+paddingBottom)/2;
        //get the type of positioning
        var positionType = $self.parent().css("position");
        // get the half minus of width and height
        var halfWidth = (width/2)*(-1);
        var halfHeight = ((height/2)*(-1))-mediaPadding-mediaBorder;
        // initializing the css properties
        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;
        }
        //check the current position
        if(positionType == 'static') {
            $self.parent().css("position","relative");
        }
        //aplying the css
        $self.css(cssProp);

    });
};
