(function( $ ){

  var methods = {
    init : function( options ) {
      var settings={closeSelector: '.close',center: false};
      var parent=this;
      
      $.extend(settings,options);
      
      $(this).show();

      function placeCenter()
      {
    	var width=$(parent).outerWidth();
      	var height=$(parent).outerHeight();
      	var screenWidth=$(window).width();
      	var screenHeight=$(window).height();
      	
      	$(parent).css('left',((screenWidth-width)/2)+'px').css('top',((screenHeight-height)/2)+'px');
      }
      
      if(settings.center)
      {
    	placeCenter();
    	$(window).resize(placeCenter);
    	$(window).scroll(placeCenter);
      }
      
      $(settings.closeSelector,this).click(function(){
    	$(parent).hide();
    	
    	if(settings.closeCallback)
        {
          settings.closeCallback(parent);
        }
    	return false;
      });
      
      if(settings.initCallback)
      {
    	settings.initCallback()
      }
    }
  };

  $.fn.popup = function( method ) {
    
    if ( methods[method] ) {
      return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
    } else if ( typeof method === 'object' || ! method ) {
      return methods.init.apply( this, arguments );
    } else {
      $.error( 'Method ' +  method + ' does not exist on jQuery.popup' );
    }    
  
  };

})( jQuery );
