var Overlay = new Class({
	initialize: function (el) {
		el = $(el);

		this.link = el;
		this.xhr = new Request.HTML({
			onComplete: this.intializeOverlay.bind(this)
		});

		el.addEvent('click', (function (evt) {
			this.getOverlayCode();
			evt.stop();
		}).bind(this));
	},

	getOverlayCode: function () {
		this.xhr.setOptions({url: this.link.get('href')});
		this.xhr.get();
	},

	intializeOverlay: function (responsTree, responseElements, responseHTML) {
		var dummy = new Element('div'),
		    backdrop = new Element('div', {'class': 'overlay-backdrop'}),
		    overlay;

		$$('.overlay').destroy();

		$$('body')[0].adopt(backdrop, dummy);

		dummy.innerHTML = responseHTML;
		overlay = dummy.getFirst().dispose();
		dummy.destroy();

		this.overlay = overlay;

		$$('body')[0].grab(overlay);
		FormConditionals.scan(overlay);
		
		var close_button = overlay.getElement('.close');
		if (close_button) {
			close_button.addEvent('click', this.removeOverlay.bind(this));
		}
		
		var first_input = overlay.getElement('input[type=text]');
		if (first_input) {
			first_input.focus();
		}
	},

	removeOverlay: function () {
		$$('.overlay-backdrop').destroy();
		this.overlay.destroy();
	}
});

window.addEvent('domready', function () {
	$$('.overlaytrigger').each(function (el) {
		new Overlay(el);
	})
});
