// arguments: GET or POST, file 1st handling, div where 2 display 1st handling, , form name for POST method, yes/no question, file 2nd handling, div where 2 display 2st handling

function zajaxGetData (method, dataSource, divID, questMsg, formX, goBackTo, divResp){

//if question is passed (assume yes or no answer)

if(questMsg != '' && questMsg != null){

var conf = confirm(questMsg);

switch (conf) {

case false:

return;

}

 

 

}

 

var XMLHttpRequestObject = false;

 

if(window.XMLHttpRequest){

 

XMLHttpRequestObject = new XMLHttpRequest();

 

} else if (window.ActiveXObject) {

XMLHttpRequestObject = new ActiveXObject ("Microsoft.XMLHTTP");

}

if (XMLHttpRequestObject) {

var obj = document.getElementById(divID);

//_________________________________ anticache handling IE_____________________________//

if(dataSource.indexOf('?') == -1)

{

var anticache = randnr();

dataSource += '?dummy=' + anticache;

}

else

{

var anticache = randnr();

dataSource += '&dummy=' + anticache;

}

//___________________ Check for chosen method ____________________//

if(method.toUpperCase() == 'GET')

{

// GET request

XMLHttpRequestObject.open("GET", dataSource, true);

XMLHttpRequestObject.onreadystatechange = function ()

{

// if state is ready

if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {

obj.innerHTML = XMLHttpRequestObject.responseText;

}

// if state not yet ready

else

{

displayLoading(divID);

}

}

XMLHttpRequestObject.send(null);

// if the 2nd file handling is passed

if(goBackTo)

{

//setTimeout ("callMeBack('"+method+"', '"+goBackTo+"', '"+divResp+"')", 2000); //for delayed version

callMeBack(''+method+'',''+goBackTo+'', ''+divResp+'') // simultanous version

}

}

//_______________________ end method GET _______________________//

if(method.toUpperCase() == 'POST' && formX != '')

{

var str = '';

var elem = document.getElementById(formX).elements;

var question = dataSource.indexOf('?');

for(var i = 0; i < elem.length; i++)

{

elem[i].value = elem[i].value.replace(/€/,"&euro;");

if(question == -1){

str += "?";

}

else

{

str += "&";

}

str += elem[i].name + "=";

str += encodeURIComponent(elem[i].value);

question = 1;

}

dataSource = dataSource+str;

// POST request

XMLHttpRequestObject.open("POST", dataSource, true);

XMLHttpRequestObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

XMLHttpRequestObject.setRequestHeader("Content-length", str.length);

XMLHttpRequestObject.setRequestHeader("Connection", "close");

XMLHttpRequestObject.onreadystatechange = function ()

{

// if state is ready

if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {

obj.innerHTML = XMLHttpRequestObject.responseText;

}

// if state not yet ready

else

{

displayLoading(divID);

}

}

XMLHttpRequestObject.send(str);

// if the 2nd file handling is passed

if(goBackTo){

//setTimeout ("callMeBack('"+method+"', '"+goBackTo+"', '"+divResp+"')", 2000); //for delayed version

callMeBack(''+method+'',''+goBackTo+'', ''+divResp+'') // simultanous version

}

}

//_______________________ end method POST _______________________//

}

}

 

function randnr ()

{

var randomnumber=Math.floor(Math.random()*9999999999);

return randomnumber;

}

 

// call back function for 2nd handling

function callMeBack(method, file, divID){

getData(''+method+'',''+file+'',''+divID+'');

}

 

// feedback during handling

function displayLoading(element) {

 

if(element){

var obj = document.getElementById(element);

while (obj.hasChildNodes()) {

obj.removeChild(obj.lastChild);

}

var image = document.createElement("img");

image.setAttribute("src","ajax-loader.gif");

image.setAttribute("alt","Loading...");

obj.appendChild(image);

}

 

}