//based on prototype's ajax class
//to be used with prototype.lite, moofx.mad4milk.net.

ajax = Class.create();
ajax.prototype = {
	initialize: function(url, options){
		this.transport = this.getTransport();
		this.postBody = options.postBody || '';
		this.method = options.method || 'post';
		this.onComplete = options.onComplete || null;

		this.update = $(options.update) || null;
		
		this.updateMultiple = (options.multiple == null) ? true : false;
		
		this.request(url);
	},

	request: function(url){
		this.transport.open(this.method, url, true);
		this.transport.onreadystatechange = this.onStateChange.bind(this);
		if (this.method == 'post') {
			this.transport.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
			if (this.transport.overrideMimeType) this.transport.setRequestHeader('Connection', 'close');
		}
		this.transport.send(this.postBody);
	},

	onStateChange: function(){
		if (this.transport.readyState == 4 && this.transport.status == 200) {
			if (this.onComplete) 
				setTimeout(function(){this.onComplete(this.transport);}.bind(this), 10);
			if (this.update)
				setTimeout(function(){this.update.innerHTML = this.transport.responseText;}.bind(this), 10);
			if (this.updateMultiple)
				{
					alert(this.updateMultiple); 
					setTimeout(function(){ 
						try	{	
							var hasscript = false;
							eval("var inputObject = "+this.transport.responseText);	
							for (var i in inputObject) {
								if (i == 'script') { hasscript = true; continue; }
								if (i == 'scripts')	{
									alert(inputObject[i]);
									for (var script in inputObject[i]) {
										
										scriptElm = document.createElement('SCRIPT');
										scriptElm.type='text/javascript';
										scriptElm.src = script;
										document.head.appendChild(scriptElm);
									}
								}
								else 
								{
									try
									{
										if (elm = $(i))	{ elm.innerHTML = inputObject[i]; }
									}
									catch (f)
									{
										alert(f.message);
										alert("element "+i+" not found!");
									}									
								}
							}
							if (hasscript) eval(inputObject['script']);
						}
						catch (e)
						{
							alert(e.message);
							alert(this.transport.responseText);
						}
						
						
					}.bind(this), 10);
				}
			this.transport.onreadystatechange = function(){};
		}
	},

	getTransport: function() {
		if (window.ActiveXObject) return new ActiveXObject('Microsoft.XMLHTTP');
		else if (window.XMLHttpRequest) return new XMLHttpRequest();
		else return false;
	}
};