function AJAXredir(url, target) {

    var req = init();
    req.onreadystatechange = processRequest;
        
    function init() {
      if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
      } else if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
    
    function processRequest () {
      if (req.readyState == 4) {
        if (req.status == 200) {
		location.href=target;
        }
      }
    }

    this.doGet = function() {
      req.open("GET", url, true);
      req.send(null);
    }
    
    this.doPost = function(body) {
      req.open("POST", url, true);
      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      req.send(body);
    }
}

function AJAXwrite(url, target) {

    var req = init();
    req.onreadystatechange = processRequest;
        
    function init() {
      if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
      } else if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
    
    function processRequest () {
      if (req.readyState == 4) {
        if (req.status == 200) {
	  document.getElementById(target).innerHTML=req.responseText;
        }
      }
    }

    this.doGet = function() {
      req.open("GET", url, true);
      req.send(null);
    }
    
    this.doPost = function(body) {
      req.open("POST", url, true);
      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      req.send(body);
    }
}

function AJAXwriteCallback(url, target, callback) {

    var req = init();
    req.onreadystatechange = processRequest;
        
    function init() {
      if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
      } else if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
    
    function processRequest () {
      if (req.readyState == 4) {
        if (req.status == 200) {
	  document.getElementById(target).innerHTML=req.responseText;
          if (callback) callback(req.responseXML);        
        }
      }
    }

    this.doGet = function() {
      req.open("GET", url, true);
      req.send(null);
    }
    
    this.doPost = function(body) {
      req.open("POST", url, true);
      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      req.send(body);
    }
}

function AJAXxmlCallback(url, callback) {

    var req = init();
    req.onreadystatechange = processRequest;
        
    function init() {
      if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
      } else if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
    
    function processRequest () {
      if (req.readyState == 4) {
        if (req.status == 200) {
          if (callback) callback(req.responseXML);        
	}
      }
    }

    this.doGet = function() {
      req.open("GET", url, true);
      req.send(null);
    }
    
    this.doPost = function(body) {
      req.open("POST", url, true);
      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      req.send(body);
    }
}

function AJAXxmlCallbacks(url, callback1, callback2) {

    var req = init();
    req.onreadystatechange = processRequest;
        
    function init() {
      if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
      } else if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
    
    function processRequest () {
      if (req.readyState == 4) {
        if (req.status == 200) {
          if (callback1) callback1(req.responseXML);        
          if (callback2) callback2();        
	}
      }
    }

    this.doGet = function() {
      req.open("GET", url, true);
      req.send(null);
    }
    
    this.doPost = function(body) {
      req.open("POST", url, true);
      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      req.send(body);
    }
}

function AJAXxml(url) {
    var req = init();
    req.onreadystatechange = processRequest;
        
    function init() {
      if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
      } else if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
    
    function processRequest () {
      if (req.readyState == 4) {
          if (req.responseXML) {
	      return req.responseXML;
	  }
      }
    }

    this.doGet = function() {
      req.open("GET", url, true);
      req.send(null);
    }
    
    this.doPost = function(body) {
      req.open("POST", url, true);
      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      req.send(body);
    }
}

function AJAX(url) {
    var req = init();
    req.onreadystatechange = processRequest;
        
    function init() {
      if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
      } else if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
    
    function processRequest () {
      if (req.readyState == 4) {
        if (req.status == 200) {
	  return true;
	}
      }
    }

    this.doGet = function() {
      req.open("GET", url, true);
      req.send(null);
    }
    
    this.doPost = function(body) {
      req.open("POST", url, true);
      req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      req.send(body);
    }
}
function ajaxGetRedir(url, query, target) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var new_url = url + '?rgn=' + Math.floor(Math.random()*1100233) + '&' + query;	
	var ai = new AJAXredir(new_url, target);
  	ai.doGet();
} 

function ajaxGetXML(url, query) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var new_url = url + '?rgn=' + Math.floor(Math.random()*1100233) + '&' + query;	
	var ai = new AJAXxml(new_url);
  	ai.doGet();
} 

function ajaxGetXMLfromForm(url, f) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var query = formIntoString(f);	
	ajaxGetXML(url, query);
} 

function ajaxPostXML(url, query) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var new_url = url + '?rgn=' + Math.floor(Math.random()*1100233);	
	var ai = new AJAXxml(new_url);
  	ai.doPost(query);
} 

function ajaxPostXMLfromForm(url, f) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var query = formIntoString(f);	
	ajaxPostXML(url, query);
} 
function ajaxPost(url, query) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var new_url = url + '?rgn=' + Math.floor(Math.random()*1100233);	
	var ai = new AJAX(new_url);
  	ai.doPost(query);
} 
function ajaxPostfromForm(url, f) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var query = formIntoString(f);	
	ajaxPost(url, query);
} 

function ajaxGetXMLCallback(url, query, callback) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var new_url = url + '?rgn=' + Math.floor(Math.random()*1100233) + '&' + query;	
	var ai = new AJAXxmlCallback(new_url, callback);
  	ai.doGet();
} 

function ajaxGetXMLCallbackfromForm(url, f, callback) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var query = formIntoString(f);	
	ajaxGetXMLCallback(url, query, callback);
} 

function ajaxPostXMLCallback(url, query, callback) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var new_url = url + '?rgn=' + Math.floor(Math.random()*1100233);	
	var ai = new AJAXxmlCallback(new_url, callback);
  	ai.doPost(query);
} 

function ajaxPostXMLCallbackfromForm(url, f, callback) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var query = formIntoString(f);	
	ajaxPostXMLCallback(url, query, callback);
} 

function ajaxGetXMLCallbacks(url, query, callback1, callback2) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var new_url = url + '?rgn=' + Math.floor(Math.random()*1100233) + '&' + query;	
	var ai = new AJAXxmlCallbacks(new_url, callback1, callback2);
  	ai.doGet();
} 

function ajaxGetXMLCallbacksfromForm(url, f, callback1, callback2) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var query = formIntoString(f);	
	ajaxGetXMLCallbacks(url, query, callback1, callback2);
} 

function ajaxPostXMLCallbacks(url, query, callback1, callback2) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var new_url = url + '?rgn=' + Math.floor(Math.random()*1100233);	
	var ai = new AJAXxmlCallbacks(new_url, callback1, callback2);
  	ai.doPost(query);
} 

function ajaxPostXMLCallbacksfromForm(url, f, callback1, callback2) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var query = formIntoString(f);	
	ajaxPostXMLCallbacks(url, query, callback1, callback2);
} 

function ajaxGetWrite(url, query, target) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var new_url = url + '?rgn=' + Math.floor(Math.random()*1100233) + '&' + query;	
	var ai = new AJAXwrite(new_url, target);
  	ai.doGet();
} 

function ajaxGetWritefromForm(url, f, target) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var query = formIntoString(f);	
	ajaxGetWrite(url, query, target);
}

function ajaxPostWrite(url, query, target) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var new_url = url + '?rgn=' + Math.floor(Math.random()*1100233);	
	var ai = new AJAXwrite(new_url, target);
  	ai.doPost(query);
} 

function ajaxPostWritefromForm(url, f, target) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var query = formIntoString(f);	
	ajaxPostWrite(url, query, target);
}

function ajaxGetWriteCallback(url, query, target, callback) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var new_url = url + '?rgn=' + Math.floor(Math.random()*1100233) + '&' + query;	
	var ai = new AJAXwriteCallback(new_url, target, callback);
  	ai.doGet();
} 

function ajaxGetWriteCallbackfromForm(url, f, target, callback) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var query = formIntoString(f);	
	ajaxGetWriteCallback(url, query, target, callback);
}
 
function ajaxPostWriteCallback(url, query, target, callback) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var new_url = url + '?rgn=' + Math.floor(Math.random()*1100233);	
	var ai = new AJAXwriteCallback(new_url, target, callback);
  	ai.doPost(query);
} 

function ajaxPostWriteCallbackfromForm(url, f, target, callback) {
	if(document.getElementById('progressDiv') != null) {
		document.getElementById('progressDiv').style.visibility='visible';
	}

	var query = formIntoString(f);	
	ajaxPostWriteCallback(url, query, target, callback);
}
 
function formIntoString(docForm) {
	var query = '';
	var formElem;
	for (i=0;i< docForm.elements.length; i++) {
		formElem = docForm.elements[i];

		switch (formElem.type) {
			case 'radio':
				if(formElem.checked) {
					query += formElem.name + '=' + escape(formElem.value) + '&'
				}
				break;
			case 'checkbox':
				if (formElem.checked) {
					query += formElem.name + '=' + escape(formElem.value) + '&'
				}
				break;
			case 'select-multiple':
				for (j=0;j< formElem.options.length;j++) {
					if (formElem.options[j].selected) {
						query += formElem.name + '=' + escape(formElem.options[j].value) + '&'
					}
				}
				break;
			default:
				query += formElem.name + '=' + escape(formElem.value) + '&'
				break;
		}
	}	
	return query;
} 