function Lightbox(html){
	this.create(html);
	this.show();
}

jQuery.extend(Lightbox, {

    // load a URL and display in boxy
    // url - url to load
    // options keys (any not listed below are passed to boxy constructor)
    //   type: HTTP method, default: GET
    //   cache: cache retrieved content? default: false
    //   filter: jQuery selector used to filter remote content
    load: function(url, options) {

        options = options || {};

        var ajax = {
            url: url, type: 'GET', dataType: 'html', cache: false, success: function(html) {
                html = jQuery(html);
                if (options.filter) html = jQuery(options.filter, html);
                new Lightbox(html, options);
            }
        };

        jQuery.each(['type', 'cache'], function() {
            if (this in options) {
                ajax[this] = options[this];
                delete options[this];
            }
        });

        jQuery.ajax(ajax);

    },

    alert: function(q,c){
		Lightbox.display(q, "alert", [], function(){
			if(typeof(c) == "function"){ c(); }
		});
	},

	confirm: function(q,c){
		Lightbox.display(q, "confirm", ["Continue","Cancel"], function(r){
			if(r == 'Continue'){ c(r); }
		});
	},

	display: function(q,i,a,c){

		var html = $("<p></p>").addClass("lightbox-message").html(q);
		if(a.length > 0){
			html.append("<hr />");
			var buttons = $("<p></p>").addClass("lightbox-buttons");
			for(x=0;x<a.length;x++){
				buttons.append($("<input type='button'></img>").val(a[x]).click(function(){
					c($(this).val());
				}));
			}
			html.append(buttons);
		}

		new Lightbox(html);

	}

});

Lightbox.prototype = {

	wrapper: '<div class="lightbox">'
		+'<div><span class="nw"></span><span class="n"></span><span class="ne"></span></div>'
		+'<div><span class="w"></span><span class="contents"></span><span class="e"></span></div>'
		+'<div><span class="sw"></span><span class="s"></span><span class="se"></span></div></div>',

	blackout: null, close: null, lightbox: null, content: null,

	create: function(html){

		if ($(".lightbox").length > 0) {
			this.blackout = $(".blackout");
			this.close = $(".lightbox-close");
			this.lightbox = $(".lightbox");
			this.content = $(".lightbox .contents").html(html);
			this.events();
		}else {
			this.blackout = $('<div></div>').addClass("blackout").appendTo(document.body).hide();
			this.close = $('<div></div>').addClass("lightbox-close").appendTo(document.body).hide();
			this.lightbox = $(this.wrapper).appendTo(document.body).hide();
			this.content = this.lightbox.find(".contents").html(html);
			this.events();
		}

	},

	events: function(){
		var lightbox = this;
		this.close.click(function(){ lightbox.hide(); });
		this.lightbox.find("input[type=button]").click(function(){ lightbox.hide(); });
	},

	show: function(){
		this.position();
		this.blackout.fadeIn(800);
		this.lightbox.fadeIn(800);
		this.close.fadeIn(800);
	},

	hide: function(){
		this.lightbox.fadeOut(400);
		this.close.fadeOut(400);
		this.blackout.fadeOut(400);
	},

	position: function(){

		this.lightbox.css({
			left: (($(window).width()/2)-(this.lightbox.width()/2)),
			top: (($(window).height()/2)-(this.lightbox.height()/2))
		});

		this.close.css({
			left: (($(window).width()/2)+(this.lightbox.width()/2)-(this.close.width())+7),
			top: (($(window).height()/2)-(this.lightbox.height()/2)-(this.close.height())+17)
		});

	}

};
