multiPanelSwitcher = Class.create();
Object.extend(Object.extend(multiPanelSwitcher.prototype, Ajax.Request.prototype), {
	inId:'',
	initialize: function(url,inId , container, options) {
		this.inId = inId;
		this.containers = {
			success: container.success ? $(container.success) : $(container),
			failure: container.failure ? $(container.failure) :
				(container.success ? null : $(container))
		}
		this.transport = Ajax.getTransport();
		this.setOptions(options);
		var onComplete = this.options.onComplete || Prototype.emptyFunction;
		this.options.onComplete = (function(transport, object) {
			this.updateContent();
			onComplete(transport, object);
		}).bind(this);
		this.request(url);
	},

	updateContent: function() {
		var receiver = this.responseIsSuccess() ?
			this.containers.success : this.containers.failure;
		var response = this.transport.responseText;

		if(this.inId != null && this.inId != ""){
			var start = response.indexOf("<!-- " + this.inId + " -->") + this.inId.length + 9;
			var end = response.lastIndexOf("<!-- /" + this.inId + " -->");
			response = response.substring(start, end);
		}
		
		response = response.replace(/<!-- mponly/g,"");
		response = response.replace(/\/mponly -->/g,"");
		response = response.replace(/<!-- linkonly -->(\n|.)*<!-- \/linkonly -->/gm,"");

		if (!this.options.evalScripts)
			response = response.stripScripts();
		if (receiver) {
			if (this.options.insertion) {
				new this.options.insertion(receiver, response);
			} else {
				Element.update(receiver, response);
			}
		}

		if (this.responseIsSuccess()) {
			if (this.onComplete)
				setTimeout(this.onComplete.bind(this), 10);
		}
	}

});

function switchMultiPanel(linkUrl, inId, outId){
	new multiPanelSwitcher(linkUrl, inId , outId, { method: "get"});
}
