(function ($) {
  function fclose(event) {
    event.data.modal.remove();
    event.data.window.remove();
    return false;
  }
  function fopen(options) {
    var content = $("<div/>").addClass('window-content').append($.isFunction(options.content) ? options.content() : options.content);
    options.window = $("<div/>").addClass("modal-window").attr('style', "display: none;" +
      "width: " + options.width + "px;" + "height: " + options.height + "px;" + 
      "margin-top: -" + (options.height / 2)  + "px;" + "margin-left: -" + ( + options.width / 2)  + "px;"
    ).append(content).append($("<a/>").addClass('close-window').bind('click', options, fclose)).appendTo($(options.container));
    options.modal = $("<div/>").addClass("modal-overlay").bind('click', options, fclose).appendTo($(options.container));
    options.window.fadeIn()
  }
  $.fn.overlayWindow = function(options) {
    var open = false;
    var close = false;
    if (!options || (typeof(options) == 'object')) {
      options = $.extend({
        container: document.body,
        windowId: null,
        content: this,
        width: 480,
        height: 405,
        open: false
      }, options)
      $(this).data('options', options)
      open = options.open;
    } else {
      open = options == 'open';
      close = options == 'close';
      options = $(this).data('options'); 
    }
    if (options) {
      if (open) {
        fopen(options);
      }
      if (close) {
        fclose({data: options});
      }
    }
  }
})(jQuery);
