/*********************************************************************
 * XML HTTP Request und weitere Tools für Formularbehandlung
 *********************************************************************
 * Author: Marc Schieferdecker
 *********************************************************************/

var jah_inuse = false;			// Global switch, if requests are actually processed (true)
var jah_queue = new Array();		// AJAX Request queue

function jah_xhtml(jurl,jtarget,addresult,jmustfinish)
{
	jah_inuse = true;

	// Native XMLHttpRequest object (mozilla,opera,...)
	if( window.XMLHttpRequest )
		jah_queue.unshift( new Array( new XMLHttpRequest(), jtarget, addresult, /<script(.*)>(.*)<\/script>/gi, jmustfinish ) );
	else
	if (window.ActiveXObject)
		jah_queue.unshift( new Array( new ActiveXObject("Microsoft.XMLHTTP"), 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;
	};
	jah_queue[0][0].open("GET", jurl, true);
	jah_queue[0][0].send(null);
	return true;
}
