
function form2post(formId) {
    var queryString = null;
    var eForm = document.getElementById(formId);
    var numberElements =  eForm.elements.length;
    for(var i = 0; i < numberElements; i++) {
        if (eForm.elements[i].name == '') {
            continue;
        }
        if (queryString) {
            queryString += '&' + eForm.elements[i].name + '=' + encodeURIComponent(eForm.elements[i].value);
        } else {
            queryString = eForm.elements[i].name + '=' + encodeURIComponent(eForm.elements[i].value);
        }
		eForm.elements[i].value = '';
    }
    return queryString;
}


function __initAjax() {
	if (window.XMLHttpRequest) {
	    return new XMLHttpRequest();
	} else {
		if (window.ActiveXObject) {
			return new ActiveXObject('Microsoft.XMLHTTP');
		}
	}
	return false;
}

function __reciveRequest() {
    if (ajaxObj.httpRequest && ajaxObj.httpRequest.readyState == 4) {
        clearTimeout(ajaxObj.timer);
        if (ajaxObj.httpRequest.status == 200) {
            switch (ajaxObj.arrayRequests[0][2]) {
                    case 'rewrite':
                        ajaxObj.div.innerHTML = ajaxObj.httpRequest.responseText;
						
                        break;
                    case 'append':
                        ajaxObj.div.innerHTML += ajaxObj.httpRequest.responseText;
                        break;
					default :
                        ajaxObj.div.innerHTML = ajaxObj.httpRequest.responseText;
				}
        } else {
            //alert('ERROR: Status = ' + ajaxObj.httpRequest.status);
        }
        delete ajaxObj.httpRequest;
        ajaxObj.arrayRequests.shift();
        ajaxObj.sendRequest();
    }
}

function __addRequest(divID, URL, requestType, postData) {
   	
	if (this.arrayRequests.length > 0) {
        if (this.arrayRequests[this.arrayRequests.length-1] == [divID, URL, requestType, postData].toString()) {
            return;
        }
    }
    this.arrayRequests.push([divID, URL, requestType, postData]);
    if (this.arrayRequests.length==1) {
        this.sendRequest();
    }
	
}

function __sendRequest() {
    if (this.arrayRequests.length == 0) {
        return;
    }
    this.httpRequest = this.init();
    if (this.httpRequest) {
        this.httpRequest.onreadystatechange = __reciveRequest;
        this.div = document.getElementById(this.arrayRequests[0][0]);
        this.timer = setTimeout('ajaxObj.destroyRequest();', 10*ajaxObj.avg);
        this.time = new Date().getTime();
        if (this.arrayRequests[0][3]) {
            this.httpRequest.open('POST', this.arrayRequests[0][1]);
            this.httpRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded;,');
            this.httpRequest.send(encodeURI(this.arrayRequests[0][3]));
        } else {
            this.httpRequest.open('GET', this.arrayRequests[0][1]);
            this.httpRequest.send(null);
        }
    }
}

function __destroyRequest() {
    delete this.httpRequest;
    this.sendRequest();
}

function Ajax() {

    this.init = __initAjax;
    this.addRequest = __addRequest;
    this.sendRequest = __sendRequest;
    this.destroyRequest = __destroyRequest;
    this.arrayRequests = new Array();
    this.div = null;
    this.timer = null;
    this.httpRequest = null;
    this.time = null;
    this.avg = 1000;
	
}

var ajaxObj = new Ajax();j = new Ajax();
