Event.observe(window, 'load', initializeOpener, false);

var Opener = Class.create();
var idCounter = 0;

Opener.prototype = {
	loaded : false,
	loading : false,
	object : undefined,
	initialize : function(link) {
		this.loaded = false;
		this.link = link;
		link.onclick = function() { return false; };
		Event.observe(link, 'click', this.toggle.bindAsEventListener(this), false);
	},
	loadIt : function() {
	},
	toggle : function() {
		if(!this.loaded) {
			if(this.loading)
				return;
			this.loading = true;
			var request = new Ajax.Request(
				this.link.href, {
					method: 'post', 
					parameters: "", 
					onComplete: this.ifLoaded.bindAsEventListener(this)
				}
			);
		} else {
			Effect.toggle(this.object, 'slide', { duration: 0.2 });
		}
	},
	ifLoaded : function(response) {
		var id = "opObject" + (idCounter++);
		var info = "<div id=\""+id+"\"><div>" + response.responseText.match(/\<body.*?\>(([\t\r\n]|.)*?)\<\/body\>/im)[1] + "</div></div>";
		new Insertion.After(this.link, info);
		this.object = $(id);
		this.loading = false;
		Element.hide(this.object);
		this.loaded = true;
		this.toggle();
	}
}

function initializeOpener() {
	var links = document.getElementsByClassName('opLink');
	for(i = 0; i < links.length; i++) {
		if(links[i].parentNode)
			new Opener(links[i]);
	}
}
