/**
 * @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);


   });

};

$(window).load(function() { 
        jQuery.fn.centerScreen = function(loaded) { 
             var obj = this; 
			 var scrOfY = 0;
			  if( typeof( window.pageYOffset ) == 'number' ) {
				//Netscape compliant
				scrOfY = window.pageYOffset;
			  } else if( document.body && document.body.scrollTop ) {
				//DOM compliant
				scrOfY = document.body.scrollTop;
			  } else if( document.documentElement && document.documentElement.scrollTop ) {
				//IE6 standards compliant mode
				scrOfY = document.documentElement.scrollTop;
			  }
			  
			  if(scrOfY < 0){
				  scrOfY = 0;
			  }

				var y = $(window).height()/2 - (this.height()/2);// + scrOfY;
				if(y < 0){
					y = 20;
				}
				
                if(!loaded) { 
                        obj.css('top', y ); 
                        obj.css('left', $(window).width()/2- this.width()/2); 
                        $(window).resize(function(){ 
						obj.centerScreen(!loaded); 
				    }); 
                } else { 
                        //obj.stop(); 
                        obj.animate({ top: y, left: $ 
(window).width()/2-this.width()/2}, 'fast', 'swing'); 
                } 
        } 
}); 
