// request object
var arrAjaxHttpRequest = new Array();
var boolRequestRunning = false;
var arrTimeouts = new Array();
var arrParams = new Array();


/**
 * Reloads content for lookibox
 *
 * @param paramsJson Contains all neccessary parameters in json String Format
 */
function makeAjaxRequest(params)
{
	if(boolRequestRunning==false)
	{
		boolRequestRunning = true;

		// --- Loadingbild durch ein �bergebenes Bild ersetzen ----------------------------------------
		if (params.loadingImgUrl && params.loadingImgUrl != '' && params.targetDiv)
		{
			document.getElementById(params.targetDiv).innerHTML = '<img src="' + params.loadingImgUrl + '">';
		}
		else 
		{
			if (params.targetDiv)
			{
				document.getElementById(params.targetDiv).innerHTML = '<div style="position: relative;">' + document.getElementById(params.targetDiv).innerHTML + '<div class="lookibox_ajaxtabs_loader_overlay"><img src="/gfx/ajax/ajax-loader-white.gif" title="Loading..." alt="Loading..."></div></div>';
			}
		}

		//document.getElementById(params.targetDiv).innerHTML = params.url;


		// HttpRequest Objekt erstellen
		if (window.XMLHttpRequest) // Mozilla, Safari, Opera, IE7
	    {
		    arrAjaxHttpRequest[params.url] = new XMLHttpRequest();
	    }
		else if (window.ActiveXObject) // IE6, IE5
	    {
		    try
			{
				arrAjaxHttpRequest[params.url] = new ActiveXObject("Microsoft.XMLHTTP");
	    	}
	    	catch (e)
	    	{
	        	arrAjaxHttpRequest[params.url] = new ActiveXObject("Msxml2.XMLHTTP");
	    	}
		}

		// Callback Function
		//arrAjaxHttpRequest[params.url].onreadystatechange = new Function('getAjaxResponse(params)');
		arrAjaxHttpRequest[params.url].onreadystatechange = function () {

			if (arrAjaxHttpRequest[params.url].readyState == 4 && arrAjaxHttpRequest[params.url].status == 200)
		    {
				boolRequestRunning = false;
				// http response inhalt dem target div zuweisen
				response = arrAjaxHttpRequest[params.url].responseText;
				
				if (params.targetDiv)
				{
					document.getElementById(params.targetDiv).innerHTML = response;
				}

				// --- eventuelle Skript Tags ausführen -------------------------------------------
				evalScript(response);
		    }

		}

		get_variable();

		// --- debuggen ? -------------------------------------------------------------------------
		if (window.$_GET["debug"] != undefined)
		{
			debug = '&debug=' + window.$_GET["debug"];
		}
		else
		{
			debug = '';
		}

		// Response ausführen
		arrAjaxHttpRequest[params.url].open('GET', params.url + debug, true);

		// Method, url, Async = true / Sync = false
		arrAjaxHttpRequest[params.url].send(null); // Start request
	}
	else
	{


		// --- Aktuelles Param objekt in ein Array einfügen um später das richtige objekt beim Aufruf zu haben
		add = arrParams.length;
		arrParams[add] = params;

		arrTimeouts[arrTimeouts.length] = window.setTimeout("makeAjaxRequest(arrParams[" + add + "]);", 100);
	}
}

// --- Skripte ausführen die nachgeladen wurden ---------------------------------------------------
function evalScript(scripts)
{
	try
	{
		if(scripts != '')
		{
			var script = "";

			scripts = scripts.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi,
						function()
						{
							if (scripts !== null) script += arguments[1] + '\n';
				 	        	return '';
						}
			);

			if(script)
				(window.execScript) ? window.execScript(script) : window.setTimeout(script, 0);
		}
		return false;
	}
	catch (e)
	{
		alert(e);
	}
}

// --- Funktion um get variablen auszulesen -------------------------------------------------------
function get_variable()
{
	var s = window.location.search.substring(1).split('&');

	if(!s.length)
		return false;

	window.$_GET = {};

	for(var i = 0; i < s.length; i++)
	{
		var parts = s[i].split('=');

		window.$_GET[decodeURI(parts[0])] = decodeURI(parts[1]);
    }
}

/**
 * Sets response as new content of targetDiv.

function getAjaxResponse(params)
{
	if (arrAjaxHttpRequest[params.url].readyState == 4 && arrAjaxHttpRequest[params.url].status == 200)
    {
		boolRequestRunning = false;
		// http response inhalt dem target div zuweisen
		document.getElementById(params.targetDiv).innerHTML = arrAjaxHttpRequest[params.url].responseText;
    }

}
 */