$.window = function(options) {
  var defaults = {
    overlayOpacity : 0.25,
    width: 800,
    height: 600,
    border: "1px solid #AEAEAE",
    overflow: 'hidden',
    //overflowX: 'hidden',   * werkt niet in IE6/7
    //overflowY: 'hidden',   * werkt niet in IE6/7
    backgroundColor: '#FFFFFF',
    title : '',
    header: false,
    close: false
	};

	options = jQuery.extend(defaults, options);

  if ($("body > .overlay").length == 0) {
    $("body").overlay({
      opacity: options.overlayOpacity,
      bgColor: options.overlayColor
    });
  }

  var html = '';
  html += '<div class="window" style="margin-top: '+ (0 - (((options.height + (options.header?26:0)) / 2 + 1) - $(window).scrollTop())) + 'px; margin-left: -'+ (options.width / 2 + 1) +'px; ">';
  html += '<div class="window-container" style="'+ ((options.backgroundColor != "transparent")?'background-color: '+ options.backgroundColor +'; ':'') + ((options.backgroundColor != "transparent")?'border: '+ options.border +'; '+ ((options.header)?'border-top: none; ':''):'') +'width: '+options.width+'px;">';

  if (options.header) {
    html += '<div class="window-header">'+ ((options.close)?'<div class="window-close"><img src="/etc/plugins/jquery/window/images/close.png" alt="close" /></div>':'') + options.title +'</div>';
  }

  html += '<iframe id="jquerywindow" '+ ((options.backgroundColor == "transparent")?' ALLOWTRANSPARENCY':'') +' frameborder="0"'+ ((options.overflow == 'hidden')?' scrolling="no"':'') +' src="'+ options.src +'" style="overflow: '+ options.overflow +'; width: '+ options.width +'px; height: '+ options.height +'px;"></iframe>';
  html += '</div>';
  html += '</div>';

  $("body").prepend(html);

  $(".window-close img").bind("click", function() {
    $.window.hide();
  });

  if (options.closeCallback) {
    $(".window").data("closeCallback", options.closeCallback);
  }

  return $("body iframe");
};

$.window.hide = function() {
  var destination = top.document ? top.document : document.body;

  $("body > .overlay", destination).overlayHide();

  if ($(".window").data("closeCallback")) {
    window[($(".window").data("closeCallback"))]();

    $("body .window").removeData();
  }

  $.window.remove();
}

$.window.checkAnimation = function() {
  var destination = top.document ? top.document : document.body;

  return $(":animated", destination).length;
}

$.window.remove = function() {
  var destination = top.document ? top.document : document.body;

  if ($.window.checkAnimation() == 0) {
    clearTimeout(timeout);

    $("body > .window", destination).remove();
  } else {
    var timeout = setTimeout(function() {
      $.window.remove();
    }, 10);
  }
}

$.window.parent = top.document;