/**
 * @author Stephane Roucheray 
 * @extends jquery
 */

jQuery.fn.iframeResize = function (options) {
    var settings = jQuery.extend({
        width: "fill",
        height: "auto",
        autoUpdate: false
    }, options);
    var filler = 10;

    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);
};

