// General Ajax Functions

////////////////////////////
// createXMLHttpRequest() //
////////////////////////////

function createXMLHttpRequest() {
if (window.XMLHttpRequest) { // XMLHttpRequest
if (typeof XMLHttpRequest != 'undefined') {
try { // XMLHttpRequest
var request = new XMLHttpRequest();
} catch (e) {
var request = false;
}
}
} else if (window.ActiveXObject) { // ActiveXObject
try { // Msxml2.XMLHTTP
var request = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e) {
try { // Microsoft.XMLHTTP
var request = new ActiveXObject('Microsoft.XMLHTTP');
} catch (e) {
var request = false;
}
}
} // end ActiveXObject
return request;
}

/////////////////////////////
// destroyXMLHttpRequest() //
/////////////////////////////

function destroyXMLHttpRequest(request) {
request.onreadystatechange = function() {};
request.abort();
delete request;
}

///////////////////
// ajaxRequest() //
///////////////////

function ajaxRequest(request,url,func,key,value) {
var keyPos = 3;
var data = '';
for (var i = keyPos; i < arguments.length; i += 2) { // multiple key / value pairs supported
j = i + 1;
if (i > keyPos) { // add separator
data += '&';
} // end add separator
data += arguments[i] +'='+ arguments[j];
} // end multiple key / value pairs supported
requestData(request,url,data,func);
}

///////////////////
// requestData() //
///////////////////

function requestData(request,url,data,func,method) {
var method = method || 'GET'; // default
if (request) {
if (method == 'GET') { // GET
request.open('GET',url +'?'+ data,true);
} else { // POST
request.open('POST',url,true);
} // end POST
request.onreadystatechange = func;
if (method == 'GET') { // GET
request.send(null);
} else { // POST
request.send(data);
} // end POST
}
}

/////////////////////
// returnXMLData() //
/////////////////////

function returnXMLData(request,id) {
var response = false;
if (request.readyState == 4) { // 4
if (request.status == 200) { // 200
////////////////////////////////////
////////////////////////////////////
var response = request.responseXML;
var items = response.getElementsByTagName('item');
var element = (document.getElementById(id)) ? document.getElementById(id) : false;
var str = '';
for (var i = 0; i < items.length; i++) { // for each item
var itemID = items[i].getAttribute('id');
var itemValue = items[i].firstChild.nodeValue;
str += '<div id="'+ itemID +'">'+ itemValue +'</div>';
} // end for each item
if (element) { // element exists
element.innerHTML = str;
} // end element exists
////////////////////////////////////
////////////////////////////////////
} else { // not 200
// alert(request.statusText);
} // end not 200
destroyXMLHttpRequest(request);
} // end 4
}

//////////////////////
// returnTextData() //
//////////////////////

function returnTextData(request,id) {
var response = false;
if (request.readyState == 4) { // 4
if (request.status == 200) { // 200
/////////////////////////////////////
/////////////////////////////////////
var response = request.responseText;
var element = (document.getElementById(id)) ? document.getElementById(id) : false;
if (element) { // element exists
element.innerHTML = response;
} // end element exists
/////////////////////////////////////
/////////////////////////////////////
} else { // not 200
// alert(request.statusText);
} // end not 200
destroyXMLHttpRequest(request);
} // end 4
}