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.statusOut = $(options.statusOut) || null;
				this.property = options.property || 'innerHTML';
				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.statusOut && this.transport.responseText) {
                        	a = this.transport.responseText.split('<eval_after>');
                        	if(a[0]) setTimeout(function(){this.statusOut[this.property] = a[0];}.bind(this), 10);
                        	if(a[1]) setTimeout(function(){eval(a[1]);}.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;
        }
};
