﻿/************************************************************************
#########################################################################
#									              						#
#	Project:		dOne												#
#	Date:			29.05.2008											#
#	Scriptname:		simpleAjax.js										#
#	Module:			core												#
#	Language:		Java Script											#
# 	Version:	  	1.0.0												#
#	Author:			Luzi Egger (designinmotion)							#
#	Copyright:		designinmotion, all rights reserved					#
#																		#
#	Website:		www.designinmotion.ch								#
#	E-Mail:			info@designinmotion.ch								#
#																		#
#########################################################################
# 	Description:														#
#	Funktionen um den AJAX Request zu verarbeiten						#
#########################################################################

#########################################################################
#	ChangeLog:															#
# 	Clean Up												29.05.2008	#
#	Anpassungen für Bluetrac											#
#########################################################################
************************************************************************/


/********************************************************************************
# Damit Javascript auch im nachgeladenen Teil funktioniert						#
********************************************************************************/
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)
	}
}


/********************************************************************************
# Erzeugen des AJAX-Requests													#
********************************************************************************/
function xhrObject()
{
	var xhrHandler = null;

	try
	{
		xhrHandler = new ActiveXObject("Microsoft.XMLHTTP");
	}
	catch(Error)
	{
		try
		{
			xhrHandler = new ActiveXObject("MSXML2.XMLHTTP");
		}
		catch(Error)
		{
			try
			{
				xhrHandler = new XMLHttpRequest();
			}
			catch(Error)
			{
				alert("Erzeugung des XMLHttpRequest-Objekts nicht möglich");
			}
		}
	}

	return xhrHandler;
}


/********************************************************************************
# Eigentlicher Request, hier wird die Datei angefordert und per HandleResponse	#
# weiter verarbeitet 															#
********************************************************************************/
function xhrSendRequest(xhrMethod, xhrUrl, xhrVariables, xhrElementId, xhrIndicatorId)
{



	xhrHandler = xhrObject();

	/* Variabeln per GET übergeben */
	if((xhrMethod == 'GET')||(xhrMethod == 'get'))
	{
		sendUrl = xhrUrl;

		/* Url mit Parametern ergänzen */
		if((xhrVariables != '')&&(xhrVariables != '0'))
		{
			sendUrl = sendUrl+'?'+xhrVariables;
		}

		xhrHandler.onreadystatechange = function()
		{
			xhrHandleResponse(xhrElementId, xhrIndicatorId);
    	};

		xhrHandler.open(xhrMethod, sendUrl, true);
		xhrHandler.setRequestHeader("Pragma", "no-cache");
		xhrHandler.setRequestHeader("Cache-Control", "must-revalidate");
		xhrHandler.setRequestHeader("If-Modified-Since", document.lastModified);

		xhrHandler.send(null);
	}
	/* Variabeln per POST übergeben */
	else if((xhrMethod == 'POST')||(xhrMethod == 'post'))
	{
		xhrHandler.onreadystatechange = function()
		{
			xhrHandleResponse(xhrElementId, xhrIndicatorId);
    	};

		xhrHandler.open(xhrMethod,xhrUrl,true);
		xhrHandler.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xhrHandler.setRequestHeader("Content-length", xhrVariables.length);
		xhrHandler.setRequestHeader("Connection", "close");

		xhrHandler.send(xhrVariables);
	}
}


/********************************************************************************
# Rückgabe der Daten und ausführen eventueller Effekte							#
# Anzeigen des Indicators														#
********************************************************************************/
function xhrHandleResponse(xhrElementId, xhrIndicatorId)
{
	if(xhrHandler.readyState == 1)
	{
		document.getElementById(xhrElementId).innerHTML = '';
		document.getElementById(xhrIndicatorId).style.display='';
	}

	if(xhrHandler.readyState == 4)
	{
		document.getElementById(xhrIndicatorId).style.display = 'none';
		document.getElementById(xhrElementId).innerHTML = xhrHandler.responseText;

		content = document.getElementById(xhrElementId).innerHTML;
		evalScript(content);
	}
}