//Basic Ajax Routine- Author: Dynamic Drive (http://www.dynamicdrive.com)
//Last updated: Jan 15th, 06'
function createAjaxObj () {
	var httprequest	= false;
	if ( window.XMLHttpRequest ) { // if Mozilla, Safari etc
		httprequest	=new XMLHttpRequest ();
		if ( httprequest.overrideMimeType )
			httprequest.overrideMimeType ( 'text/xml' );
	} else if ( window.ActiveXObject ) { // if IE
		try {
			httprequest	= new ActiveXObject ( "Msxml2.XMLHTTP" );
		} 
		catch (e) {
			try {
				httprequest	= new ActiveXObject ( "Microsoft.XMLHTTP" );
			}
			catch (e) { }
		}
	}
	return httprequest;
}

function getSiblingValue ( node, tag ) {
	var subnode = node.getElementsByTagName( tag );
	return subnode.item(0).firstChild.data;
}

var ajaxpack	= new Object ();
ajaxpack.basedomain	= "http://" + window.location.hostname;
ajaxpack.ajaxobj	= createAjaxObj()
ajaxpack.filetype	= "txt";
ajaxpack.loadingimg	= "<img src='/wimages/ajax-loader2.gif' border='0px'>";

   
ajaxpack.addrandomnumber	= 1; //Set to 1 or 0. See documentation.

ajaxpack.getAjaxRequest	= function ( url, parameters, callbackfunc, filetype ) {
	ajaxpack.ajaxobj	= createAjaxObj (); //recreate ajax object to defeat cache problem in IE
	if ( ajaxpack.addrandomnumber == 1 ) //Further defeat caching problem in IE?
		var parameters	= parameters + "&ajaxcachebust=" + new Date().getTime();
		if ( this.ajaxobj ) {
			this.filetype					= filetype;
			//this.ajaxobj.setRequestHeader("X_USERAGENT", "AjaxHandler" );
			this.ajaxobj.onreadystatechange	= callbackfunc;
			this.ajaxobj.open ( 'GET', url + "?" + parameters, true );
			this.ajaxobj.send ( null );
		}
}

ajaxpack.postAjaxRequest	= function ( url, parameters, callbackfunc, filetype ) {
	ajaxpack.ajaxobj	= createAjaxObj (); //recreate ajax object to defeat cache problem in IE
	if ( this.ajaxobj ) {
		this.filetype=filetype
		this.ajaxobj.onreadystatechange	= callbackfunc;
		this.ajaxobj.open ( 'POST', url, true );
		this.ajaxobj.setRequestHeader("X_USERAGENT", "AjaxHandler" );
		this.ajaxobj.setRequestHeader ( "Content-type", "application/x-www-form-urlencoded" );
		this.ajaxobj.setRequestHeader ( "Content-length", parameters.length );
		this.ajaxobj.setRequestHeader ( "Connection", "close" );
		this.ajaxobj.send ( parameters );
	}
}

//ACCESSIBLE VARIABLES (for use within your callback functions):
//1) ajaxpack.ajaxobj //points to the current ajax object
//2) ajaxpack.filetype //The expected file type of the external file ("txt" or "xml")
//3) ajaxpack.basedomain //The root domain executing this ajax script, taking into account the possible "www" prefix.
//4) ajaxpack.addrandomnumber //Set to 0 or 1. When set to 1, a random number will be added to the end of the query string of GET requests to bust file caching of the external file in IE. See docs for more info.

//ACCESSIBLE FUNCTIONS:
//1) ajaxpack.getAjaxRequest(url, parameters, callbackfunc, filetype)
//2) ajaxpack.postAjaxRequest(url, parameters, callbackfunc, filetype)

///////////END OF ROUTINE HERE////////////////////////


//////EXAMPLE USAGE ////////////////////////////////////////////
/* Comment begins here

//Define call back function to process returned data
function processGetPost(){
var myajax=ajaxpack.ajaxobj
var myfiletype=ajaxpack.filetype
if (myajax.readyState == 4){ //if request of file completed
if (myajax.status==200 || window.location.href.indexOf("http")==-1){ if request was successful or running script locally
if (myfiletype=="txt")
alert(myajax.responseText)
else
alert(myajax.responseXML)
}
}
}

/////1) GET Example- alert contents of any file (regular text or xml file):

ajaxpack.getAjaxRequest("example.php", "", processGetPost, "txt")
ajaxpack.getAjaxRequest("example.php", "name=George&age=27", processGetPost, "txt")
ajaxpack.getAjaxRequest("examplexml.php", "name=George&age=27", processGetPost, "xml")
ajaxpack.getAjaxRequest(ajaxpack.basedomain+"/mydir/mylist.txt", "", processGetPost, "txt")

/////2) Post Example- Post some data to a PHP script for processing, then alert posted data:

//Define function to construct the desired parameters and their values to post via Ajax
function getPostParameters(){
var namevalue=document.getElementById("namediv").innerHTML //get name value from a DIV
var agevalue=document.getElementById("myform").agefield.value //get age value from a form field
var poststr = "name=" + encodeURI(namevalue) + "&age=" + encodeURI(agevalue)
return poststr
}

var poststr=getPostParameters()

ajaxpack.postAjaxRequest("example.php", poststr, processGetPost, "txt")
ajaxpack.postAjaxRequest("examplexml.php", poststr, processGetPost, "xml")

Comment Ends here */