jQuery.fn.center = function( ) { 
	
	return this.each(function( ){
		
		function getScrollPosition( ){
			if (self.pageYOffset) {
				return { scrollTop:self.pageYOffset, scrollLeft:self.pageXOffset };
			} else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict
				return { scrollTop:document.documentElement.scrollTop, scrollLeft:document.documentElement.scrollLeft };
			} else if (document.body) {// all other Explorers
				return { scrollTop:document.body.scrollTop, scrollLeft:document.body.scrollLeft };
			};
		};
		
		function findCenter(that) {
			
			var t = jQuery(that);
			scrollPosition = getScrollPosition( );
			windowHeight = $(window).height( );
			windowWidth = $(window).width( );

			var left = (windowWidth / 2) + scrollPosition['scrollLeft'] - (t.outerWidth( ) / 2);
			var top = (windowHeight / 2) + scrollPosition['scrollTop'] - (t.outerHeight( ) / 2);
			
			return { left: left, top: top };
			
		}
		
		function jump(t) {
			var center = findCenter(t);
			t.css({
				left: center["left"] + "px",
				top: center["top"] + "px"
			});
		}
		
		function slide(t) {
			var center = findCenter(t);
			t.stop(true).animate({
				left: center["left"] + "px",
				top: center["top"] + "px"
			}, 200);
		}
		
		function resize(evt) {
			
			var t = jQuery(evt.data.that);
			var center = findCenter(t);
			jump(t);
		
		}
		
		function scroll(evt) {
			
			var t = jQuery(evt.data.that);
			if(t.css("display") == "none") {
				jump(t);
			} else {
				slide(t);
			}
			
		}
		
		$(window).bind("resize", {that:this}, resize);
		$(window).bind("scroll", {that:this}, scroll);

		var t = jQuery(this);
		t.css({
			position: 'absolute',
			zIndex:'99',
		});
		jump(t);
		
	});
	
};
