function createRequestObject() {
	var ro;
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer"){
		ro = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		ro = new XMLHttpRequest();
	}
	return ro;
}

function parseSetDiv(response) {
	var aData = new Array();
	if(response.indexOf('||' != -1)) {
		aData = response.split('||');
		divid = trim(aData[0]);
		obj = getElement(divid);
		if(obj != null) {
			obj.innerHTML = aData[1];
		}
	}
}

function ajax(page, qstr, divid, async) {
	var http = createRequestObject();
	http.open('get', page + '?divid=' + divid + '&' + qstr, async);

	if(async) {
		http.onreadystatechange = function() {
			if(http.readyState == 4) {
				parseSetDiv(http.responseText);				
			}
		};
		http.send(null);
	} else {
		http.send(null);
		parseSetDiv(http.responseText);
	}
	return true;
}

function ajaxPOST(page, qstr, divid, aPostVars, async) {
	var http = createRequestObject();
	var postdata = aPostVars.join('&');
	http.open('POST', page + '?divid=' + divid + '&' + qstr, async);
	http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	http.setRequestHeader("Content-length", postdata.length);
	http.setRequestHeader("Connection", "close");
	if(async) {
		http.onreadystatechange = function() {
			if(http.readyState == 4) {
				parseSetDiv(http.responseText);
			}
		};
		http.send(postdata);
	} else {
		http.send(postdata);
		parseSetDiv(http.responseText);
	}
	return true;
}

function ajaxGridDelete(page, qstr, divid, async) {
	ok = confirm('Please confirm to delete this record.');
	if(ok) {
		ajax(page, qstr, divid, async);
	}
	return true;
}

function ajaxGridDeleteAndRepost(theform, page, qstr, divid, async) {
	var aPostVars = new Array();
	ok = confirm('Please confirm to delete this record.');
	if(ok) {
		if( theform == null) {
			alert("Error: missing form tag.");
		} else {
			for(i = 0; i < theform.elements.length; i++) {
				var el = theform.elements[i];
				if(el.type != 'button') {
					aPostVars.push( el.name + "=" + encodeURIComponent(el.value) );
				}
			}
			ajaxPOST(page, qstr, divid, aPostVars, async);
		}
	}
	return true;
}

function ajaxGridSave(page, qstr, divid, aFields, async) {
	var aPostVars = new Array();
	for(i = 0; i < aFields.length; i++) {
		el = getElement(aFields[i]);
		if(el != null) {
			if(el.type == "checkbox") {
				if(el.checked) {
					elvalue = encodeURI(el.value);
					aPostVars.push( el.name + "=" + elvalue );
				}
			} else {
				elvalue = encodeURIComponent(el.value);
				aPostVars.push( el.name + "=" + elvalue );
			}
		}
	}
	ajaxPOST(page, qstr, divid, aPostVars, async);
	return true;
}

function ajaxSaveField(field, value, page, qstr, divid, async) {
	var aPostVars = new Array();
	elvalue = encodeURIComponent(value);
	aPostVars.push( field + "=" + value );
	ajaxPOST(page, qstr, divid, aPostVars, async);
	return true;
}

//function handleResponse() {
//	if(http.readyState == 4){
//		var response = http.responseText;
//		var aData = new Array();
//
//		if(response.indexOf('||' != -1)) {
//			aData = response.split('||');
//			divid = trim(aData[0]);
//			obj = getElement(divid);
//			if(obj != null) {
//				obj.innerHTML = aData[1];
//			}
//		}
//	}
//}
