/* Plugin name: jQuery centerIt
 * Version: 0.9.3
 * Date: September 2011
 * Copyright © 2011 Julien Knebel. contact 'at' julienknebel 'dot' com
 * Licensed under the MIT License.
*/
(function($){$.fn.centerIt=function(options){var defaults={horizontal:true,vertical:true,parent:false,autoWindowCenter:false,offsetX:null,offsetY:null,liquidParent:false};var options=$.extend(defaults,options);return this.each(function(){var elem=$(this);var parent=(options.parent)?$(options.parent):false;function setCenter(){var totalWidth=(parent)?parent.outerWidth():$(window).width(),totalHeight=(parent)?parent.outerHeight():$(window).height(),hiddenElem=getHiddenDimensions(elem),elemWidth=(elem)?elem.outerWidth(true):hiddenElem.outerWidth,elemHeight=(elem)?elem.outerHeight(true):hiddenElem.outerHeight;function getHiddenDimensions(elem,includeMargin){var $item=elem,props={position:'absolute',visibility:'hidden',display:'block'},dim={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},$hiddenParents=$item.parents().andSelf().not(':visible'),includeMargin=(includeMargin==null)?false:includeMargin;var oldProps=[];$hiddenParents.each(function(){var old={};for(var name in props){old[name]=this.style[name];this.style[name]=props[name];}
oldProps.push(old);});dim.width=$item.width();dim.outerWidth=$item.outerWidth(includeMargin);dim.innerWidth=$item.innerWidth();dim.height=$item.height();dim.innerHeight=$item.innerHeight();dim.outerHeight=$item.outerHeight(includeMargin);$hiddenParents.each(function(i){var old=oldProps[i];for(var name in props){this.style[name]=old[name];}});return dim;}
if(options.parent)elem.parent().css({position:'relative'});if(elem.css('position')!=='absolute')elem.css('position','absolute');if(options.liquidParent){if(options.vertical)totalHeight-=elemHeight;}
centeredFromLeft=(options.horizontal)?(totalWidth/2)-(elemWidth/2):null,centeredFromTop=(options.vertical)?(totalHeight/2)-(elemHeight/2):null;if(options.offsetX)centeredFromLeft+=options.offsetX;if(options.offsetY)centeredFromTop+=options.offsetY;elem.css({left:centeredFromLeft,top:centeredFromTop});};setCenter();if(options.autoWindowCenter)$(window).bind('resize',setCenter);});}}(jQuery));
