/*********************************************************************
 * Queued XML HTTP Request, for use with frameless websites
 *********************************************************************
 * Author: Marc Schieferdecker
 *********************************************************************/

// Globals
var jah_inuse = false;			// Global switch, if requests are actually processed (true)
var jah_queue = new Array();		// AJAX Request queue

// If on IE
if( !window.XMLHttpRequest && window.ActiveXObject )
{
	window.XMLHttpRequest = function () {
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
}

function jah_xhtml(jurl,jtarget,addresult,jmustfinish)
{
	jah_inuse = true;
	// Add native XMLHttpRequest object to queue
	jah_queue.unshift( new Array( new XMLHttpRequest(), jtarget, addresult, /<script(.*)>(.*)<\/script>/gi, jmustfinish ) );
	jah_queue[0][0].onreadystatechange = function() 
	{
		all_done = true;
		for( counter = 0; counter < jah_queue.length; counter++ )
		{
			if( jah_queue[counter] )
			{
				// If request done
				if( jah_queue[counter][0].readyState == 4 )
				{
					// If request has not failed
					if( jah_queue[counter][0].status == 200 )
					{
						jah_result = jah_queue[counter][0].responseText;
						jah_jtarget = jah_queue[counter][1];
						jah_addresult = jah_queue[counter][2];
						jah_search = jah_queue[counter][3];
						jah_queue[counter] = null;
						if( jah_addresult != false )
						{
							if( jah_addresult == true )
								document.getElementById(jah_jtarget).innerHTML += jah_result;
							else	document.getElementById(jah_jtarget).innerHTML = jah_result + document.getElementById(jtarget).innerHTML;
						}
						else	document.getElementById(jah_jtarget).innerHTML = jah_result;
						SearchResult = jah_search.exec(jah_result);
						while( SearchResult != null )
						{
							eval( SearchResult[2] );
							SearchResult = jah_search.exec(jah_result);
						}
					}
					else jah_queue[counter] = null;
				}
				else
				if( jah_queue[counter][4] == true )
					all_done = false;
			}
		}
		if( all_done == true )
			jah_inuse = false;
	};
	// Add random value as url parameter to prevent caching
	rnd = '' + (Math.random() * 100);
	rnd = rnd.replace(/\./,'');
	jurl += (jurl.indexOf('?') != -1 ? '&' : '?') + '_jah_rnd' + rnd + '=' + rnd;
	// Start request
	jah_queue[0][0].open("GET", jurl, true);
	jah_queue[0][0].send(null);
	return true;
}