// set isi variabel
var sedangproses = false;
var pewaktu;
var batal = false;
var tunggudiv, statusdiv;
var bataswaktu = 15000;
function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
ro = new ActiveXObject("Microsoft.XMLHTTP");
}else{
ro = new XMLHttpRequest();
}
return ro;
}
// ciptakan objek request
var http = createRequestObject();
function handleRequest() {
// jika proses gagal, abaikan hasil
if (batal) return false;
// jika response lengkap diterima dan kode http sukses
if ((http.readyState == 4) && (http.status == 200)) {
// ambil xml
var response = http.responseXML;
// baca tiap2 node
var response_status = response.getElementsByTagName("status");
var response_action = response.getElementsByTagName("action");
var response_data = response.getElementsByTagName("data");
// reset status
sedangproses = false;
tunggudiv.style['visibility'] = "hidden";
clearTimeout(pewaktu);
window.scrollTo(0, 0);
// jika request sukses, response diolah di sini
if (response_status[0].firstChild.data == "OK")
{
switch(response_action[0].firstChild.data)
{
case "team1" : case "team2" :
var div = document.getElementById("daftarnama");
div.innerHTML = '';
for(i = 0; i < response_data.length; i++)
div.innerHTML += '
' + response_data[i].firstChild.data + '
';
break;
case "varserver" :
var div = document.getElementById("hasil");
var items = new Array();
div.innerHTML = '';
for(i = 0; i < response_data.length; i++)
{
var items = response_data[i].firstChild.data.split("|");
div.innerHTML += '' + items[0] + ' = ' + items[1] + '
';
}
break;
default:
document.getElementById("hasil").innerHTML = response_data[0].firstChild.data;
}
}
else
{
statusdiv.innerHTML = response_data[0].firstChild.data;
}
}
}
function doRequest(method, data, formaction)
{
// sedang proses, hentikan proses (false)
if (sedangproses) return false;
// jika tidak support ajax, serahkan pada default handler
if (!http) return true;
if (method == "get")
{
// jika method get, parameter 'data' adalah url
http.open('get', data);
http.onreadystatechange = handleRequest;
http.send(null);
}
else
{
// untuk method post, parameter 'data' adalah form
// gabung semua variabel input dalam form
var reqList = '';
for(i = 0; i < data.length; i++)
{
if (reqList.length) reqList += '&';
reqList += data.elements[i].name + '=' + encodeURI(data.elements[i].value);
}
http.open('post', formaction, true);
http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
http.onreadystatechange = handleRequest;
http.send(reqList);
}
// geser window ke atas
scrollTo(0, 0);
// reset semua state variabel
tunggudiv.style['visibility'] = "visible";
statusdiv.innerHTML = ' ';
batal = false;
pewaktu = setTimeout("waktuHabis()", bataswaktu);
sedangproses = true;
return false;
}
function initAjax()
{
tunggudiv = document.getElementById("tunggu");
statusdiv = document.getElementById("status");
}
function waktuHabis()
{
batal = true;
clearTimeout(pewaktu);
tunggudiv.style['visibility'] = "hidden";
http.abort();
alert('Ups... server kelamaan ngerespon... request dibatalkan');
sedangproses = false;
}