jQuery.fn.center = function (absolute) {
	    return this.each(function () {
	        var t = jQuery(this);

	        t.css({
	            position:    absolute ? 'absolute' : 'fixed', 
	            left:        '50%', 
	            top:        '50%', 
	            zIndex:        '99'
	        }).css({
	            marginLeft:    '-' + (t.outerWidth() / 2) + 'px', 
	            marginTop:    '-' + (t.outerHeight() / 2) + 'px'
	        });

	        if (absolute) {
	            t.css({
	                marginTop:    parseInt(t.css('marginTop'), 10) + jQuery(window).scrollTop(), 
	                marginLeft:    parseInt(t.css('marginLeft'), 10) + jQuery(window).scrollLeft()
	            });
	        }
	    });
	};
	
	/**
 * @author Stephane Roucheray 
 * @extends jquery
 */

jQuery.fn.iframeResize = function(options){
	var settings = jQuery.extend({
		width: "fill",
		height: "auto",
		autoUpdate : true
	}, options);
	var filler = 30;
	
	function onEachIframe(){
		var frame = jQuery(this);
		var body = frame.contents().find("body");
		
		frame.css("overflow", "hidden");
		if (settings.autoUpdate) {
			if (jQuery.browser.msie) {
				frame.attr("scrolling", "auto");
				setInterval(immediateResize, 1000);
			}
			else {
				body.bind("DOMSubtreeModified", {
					frame: frame
				}, resizeIframe);
			}
		}
		immediateResize();
		
		function immediateResize(){
			var e = jQuery.Event();
			e.data = {};
			e.data.frame = frame;
			resizeIframe.call(body, e);
		}
	}
	
	function resizeIframe(event){
		var body = jQuery(this);
		event.data.frame.css("width",  settings.width  == "fill" ? "100%" : parseInt(settings.height));
		event.data.frame.css("height", settings.height == "auto" ? body.outerHeight(true) + filler : parseInt(settings.height));
	}
	
	jQuery(this).children("iframe").each(onEachIframe);
};

