(function($) { 
	var methods = {
		init: function(options) {
			// default configuration properties
			var defaults = {	
				"url": "",                    // url of content (optional)
				"content": "",                // content (optional)
				"title": "",                  // popup window title
				"id": "",                     // id of popup window 
				"classes": "",                // classes of popup window
				"width": 480,
				"height": 240,
				"show_close" : true,
				"show_title" : true,
				"position": "center"
			}; 

			var options = $.extend(defaults, options);  
			this.click( function() {

				// create overlay, create and hide sb_window
				$("body").append("<div id=\"sb_overlay\"></div>");
				$("body").append("<div id=\"sb_window\"></div>");
				$("#sb_window").hide();

				if (options.classes!="") $("#sb_window").addClass(options.classes);

				// create objects of sb_window: title, close button, content 
				if (options.title != "") {
					$("#sb_window").append("<div id=\"sb_title\"></div>");
					$("#sb_title").html(options.title);
				}
				$("#sb_window").append("<div id=\"sb_close\"><span>X</span></div>");
				$("#sb_window").append("<div id=\"sb_content\"></div>");

				// load content and show window
				if (options.url != "") {
					$("#sb_content").load(options.url, function() {
						methods.show(options);
					});
				}
				if (options.content != "") {
					$("#sb_content").html( $(options.content).html() );
					methods.show(options);
				}
			});
		},
		show: function(options) {
			$("#sb_window").show();

			// close events
//					$("#sb_close").click( destroy() );
			document.onkeyup = function(e) {
				var KeyID = (window.event) ? event.keyCode : e.keyCode;
				if (KeyID == 27) {
					$("#sb_overlay").remove();
					$("#sb_window").remove();
				}
			}
			$("#sb_close").click( function() {
				$("#sb_overlay").remove();
				$("#sb_window").remove();
			} ); 
			$("#sb_overlay").click( function() {
				$("#sb_overlay").remove();
				$("#sb_window").remove();
			} );

			// setting dimensions: overlay
			var content_height = $(document).height() > $(window).height() ? $(document).height() : $(window).height();
			$("#sb_overlay").height( content_height );

			// setting dimensions: content
			$("#sb_content").width( options.width );
			$("#sb_content").height( options.height );

			// setting dimensions: sbwindow
			var window_height = options.height;
			if (options.title != "") window_height += $("#sb_title").outerHeight();
			$("#sb_window").width( options.width );
			$("#sb_window").height( window_height );

			// setting position
			if (options.position == "center") {
				$("#sb_window").css( "top", $(window).height() / 2 - $("#sb_window").height() / 2 );
				$("#sb_window").css( "left", $(window).width() / 2 - $("#sb_window").width() / 2 );
			}

			return false;			
		},
		destroy: function() {
			$(this).remove();
			$("#sb_window").remove();
		}
	};
	$.fn.simplebox = 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.simplebox' );
		}
	};
})(jQuery);

