function $(id) { return document.getElementById(id); }

function find_index(field, value) {
	field = $(field);
	for (i = 0; i < field.length; i++) {
		if (field[i].value == value) {
			return i;
		}
	}
}

function ajax_sender() {
	if (this.request == '') {
		this.request = 'sid='+Math.floor(Math.random()*9999999999);
	} else {
		this.request = this.request + '&sid='+Math.floor(Math.random()*9999999999);
	}
    this.xmlHttp.open('POST', this.page, true);
    var xmlHttpObject = this.xmlHttp;
	xmlHttpObject.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
	xmlHttpObject.setRequestHeader('Content-length', this.request.length);
	xmlHttpObject.setRequestHeader('Connection', 'close');
    var element = this.element;
	var type = this.type;
	var status_start = this.status_start;
	var status_finish = this.status_finish;

	try {
		eval(status_start);
	} catch(e) { }

    if (element != '' || type == 'alert' || type == '') {
        this.xmlHttp.onreadystatechange = function() {
            if (xmlHttpObject.readyState == 4) {
				switch (type) {
					case 'alert': {
						alert(xmlHttpObject.responseText);
						break;
					}
					case 'select': {
						$(element).selectedIndex = find_index(element, xmlHttpObject.responseText);
						break;
					}
					case 'div': {
						$(element).innerHTML = xmlHttpObject.responseText;
						break;
					}
					case '': {
						// do nothing
						break;	
					}
				}
				try {
					eval(status_finish);
				} catch(e) { }
            }
        };
    }
    this.xmlHttp.send(this.request);
}

function ajax(page, request, type, element, status_start, status_finish) {
    if (arguments.length < 2) {
        return;
    }
    this.element = element;
    this.page = page;
	this.type = type;
    if (request == null) {
        this.request = '';
    } else {
        this.request = request;
    }
	this.status_start = status_start;
	this.status_finish = status_finish;
    try {
        this.xmlHttp = new XMLHttpRequest();
    } catch (e) {
        try {
            this.xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e) {
            try {
                this.xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
            } catch (e) {
                alert('Your browser does not support AJAX!');
                return false;
            }
        }
	}
    this.send = ajax_sender;
	this.send();
}

