	;(function($){

		MattFitz.CenterHelper = function() {
			this.config = { 
				selector:false,
				parentSelector:false,
				minimumTopOffset:0,
				minimumLeftOffset:0
			};
			
			if (arguments[0]) this.config = $.extend(this.config,arguments[0]);
			this.__init();
		};
		
		/**
		 * INIT
		 */
		MattFitz.CenterHelper.prototype.__init = function() {	
			var model = this;
			$(model.config.selector).css('position','absolute');
			model.realign();
			setInterval(function(){
				model.realign();
			},1000);
		};
		
		
		/**
		 * REALIGN
		 */
		MattFitz.CenterHelper.prototype.realign = function() {
			var model = this;	
			
			var trace = "";		
			var innerHeight = screen.availHeight; 
			trace += "innerHeight = "+innerHeight;

			var innerWidth = window.top.document.documentElement.clientWidth; 
			trace += "\ninnerWidth = "+innerWidth;

			var scrollTop = $(document).scrollTop(); 
			trace += "\nscrollTop = "+scrollTop;
			var scrollLeft = $(document).scrollLeft(); 
			trace += "\nscrollLeft = "+scrollLeft;
			
			var myDiv = $(model.config.selector); 
			var myDivHeight = $(myDiv).height();
			var myDivWidth = $(myDiv).width();
			trace += "\nmyDivHeight = "+myDivHeight;
			trace += "\nmyDivWidth = "+myDivWidth;
			
			var myParent = $(model.config.parentSelector); 
			var myParentWidth = $(myParent).width();
			trace += "\nmyParentWidth = "+myParentWidth;
			
			var top = scrollTop + (innerHeight / 2) - (myDivHeight / 2);
			var left = (innerWidth / 2) - ( myParentWidth / 2 ) + (model.config.minimumLeftOffset);
			
			top = top - 100;
			
			trace += "\ntop = "+top;
			trace += "\nleft = "+left;
			if (typeof console != "undefined") {
				console.log(trace);
			}
			
			if (top < model.config.minimumTopOffset) {
				top = model.config.minimumTopOffset;
			}
			
			
			
			$(model.config.selector).animate({ 
				top: top,
				left: left
			}, 500 );
			
		};
		
	})(jQuery);
