/**

 * @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

		var borderTop = parseInt($self.css("border-top-width"));

		var borderBottom = 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);





   });



};