// JavaScript Document

function cLoader()
{
	var http_request = false;
	var ziel_container=false;
	var ziel_function=false;
	var formular_name='';
	var show_loading=true;
	
	this.loadContent=function(url)
	{
		url=addTS_url(url);
		http_request = false;
	
		if (window.XMLHttpRequest) // Mozilla, Safari,...
		{
			http_request = new XMLHttpRequest();
			if (http_request.overrideMimeType)
			{
				http_request.overrideMimeType('text/xml');
			}
		}
		else if (window.ActiveXObject) // IE
		{
			try
			{
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch (e)
			{
				try
				{
					http_request = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (e) {}
			}
		}
	
		if (!http_request)
		{
			alert('Fehler: XMLHTTP-Instanz konnte nicht erzeugt werden');
			return false;
		}
		http_request.open('GET', url, true);
		http_request.onreadystatechange = this.handleContent;
		http_request.send(null);
	}
	this.loadPost=function(url)
	{
		http_request = false;
	
		if (window.XMLHttpRequest) // Mozilla, Safari,...
		{
			http_request = new XMLHttpRequest();
			if (http_request.overrideMimeType)
			{
				http_request.overrideMimeType('application/x-www-form-urlencoded');
			}
		}
		else if (window.ActiveXObject) // IE
		{
			try
			{
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch (e)
			{
				try
				{
					http_request = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (e) {}
			}
		}
		
		if (!http_request)
		{
			alert('Fehler: XMLHTTP-Instanz konnte nicht erzeugt werden');
			return false;
		}
		
		http_request.open('POST', url, true);
		http_request.onreadystatechange = this.handleContent;
		http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		//http_request.send(null);
		var post_string='';
		var v='';
		var obj=null;
		var addvar=true;
		for(i=0;i<document.forms[formular_name].elements.length;i++)
		{
			obj=document.forms[formular_name].elements[i];
			if(obj.name!=undefined)
			{
				v=obj.value;
				addvar=true;
				if(obj.type=='radio')
				{
					//for (var j=0; j<obj.length; j++) if (obj[j].checked) v=obj[j].value;
					v='';
					if (obj.checked)
					{
						v=obj.value;
					}
					else
					{
						addvar=false;
					}
				}
				else if(obj.type=='checkbox')
				{
					v=obj.checked ? '1' : '';
				}
				if(addvar)
				{
					post_string+=(post_string=='' ? '' : '&')+(obj.name+'='+v.replace(/\+/gi,'%2B').replace(/&/gi,'%26'));//encodeURIComponent
				}
			}
		}
		http_request.send(post_string);
	}
	
	this.loadContentIC = function(url,obj,fnc,show_loading_)
	{
		ziel_function=fnc && fnc!='undefined' ? fnc : false;
		show_loading=show_loading_;
		ziel_container=obj;
		this.loadContent(url);
	}
	this.loadPostIC = function(url,obj,frm,fnc,show_loading_)
	{
		formular_name=frm;
		ziel_function=fnc && fnc!='undefined' ? fnc : false;
		show_loading=show_loading_;
		ziel_container=obj;
		this.loadPost(url);
	}
	this.loadPostIFnc = function(url,frm,fnc,ziel_container)
	{
		formular_name=frm;
		ziel_function=fnc && fnc!='undefined' ? fnc : false;
		ziel_container=ziel_container!='undefined' && ziel_container!=null ? ziel_container : false;
		this.loadPost(url);
	}
	this.loadContentIFnc = function(url,fnc)
	{
		ziel_function=fnc;
		ziel_container=false;
		this.loadContent(url);
	}
	
	this.handleContent=function()
	{
		var ret_text='';
		switch(http_request.readyState)
		{
			case 0: // nicht initialisiert
				ret_text='nicht initialisiert';
				break;
			case 1: // lade
				ret_text='<img src="/img/icons/loading.gif" alt="Lade Daten" />';
				break;
			case 2: // geladen
				ret_text='Daten geladen';
				break;
			case 3: // interaktiv
				//ret_text='interaktiv';
				ret_text='<img src="/img/icons/loading.gif" alt="Lade Daten" />';
				break;
			case 4: // vollständig
				switch(http_request.status)
				{
					case 200: // alles korrekt geladen
						ret_text=http_request.responseText;
						break;
					case 404: // nicht gefunden
						ret_text='Bei der Anfrage ist ein Problem aufgetreten: ';	
						ret_text+='Die Seite wurde nicht gefunden';
						break;
					case 500: // interner Server-Fehler
						ret_text='Bei der Anfrage ist ein Problem aufgetreten: ';
						ret_text+='Ein interner Server-Fehler ist aufgetreten';
						break;
					default: // unbekannter Fehler
						ret_text='Bei der Anfrage ist ein unbekannter Fehler aufgetreten: ';
						break;
				}
				break;
			default:
				ret_text='Status konnte nicht abgefragt werden';
				//unbekannter Status
				break;
		}
		
		ret_text=cLoaderLinks(ret_text,ziel_container);
		if(!ziel_container)
		{
			//return ret_text
			if(!ziel_function)
			{
				
			}
			else
			{
				window[ziel_function](http_request.responseXML!=null ? http_request.responseXML.documentElement : http_request,ret_text,http_request.readyState);
			}
		}
		else
		{
			if(http_request.readyState==4 || show_loading)
			{
				ziel_container.innerHTML=ret_text;
				ziel_container.style.height="auto";
			}
			if(ziel_function && http_request.readyState==4)
			{
				window[ziel_function](http_request.responseXML!=null ? http_request.responseXML.documentElement : http_request,ret_text,http_request.readyState);
			}
		}
		if(http_request.readyState==4)
		{
			full_loaded=true;
			evalScript(ret_text);
			/*var i=0;
			var pos=0;
			var fnc;while(ret_text.substr(i).indexOf('addLoadEvent')>0)
			{
				pos=ret_text.substr(i).indexOf('addLoadEvent')+13;
				fnc=ret_text.substr(i+pos,ret_text.substr(pos).indexOf(')'));
				//alert(fnc);
				//eval(fnc+"()");
				i=ret_text.substr(i).indexOf('addLoadEvent')+5;
			}*/
		}
	}
}


function loadContentIC(url,obj,fnc,show_loading_)
{
	var cLoader_=new cLoader();
	cLoader_.loadContentIC(url,obj,fnc,show_loading_);
}
function loadContentIFnc(url,fnc)
{
	var cLoader_=new cLoader();
	cLoader_.loadContentIFnc(url,fnc);
}

function loadPostIC(url,obj,frm,fnc,show_loading_)
{
	//alert(frm);
	var cLoader_=new cLoader();
	cLoader_.loadPostIC(addCloader_url(url),obj,frm,fnc,show_loading_);
}
function loadPostIFnc(url,frm,fnc,ziel_container)
{
	//alert(frm);
	var cLoader_=new cLoader();
	cLoader_.loadPostIFnc(addCloader_url(url),frm,fnc,ziel_container);
}

function cLoaderLinks(ret_text,ziel_container)
{
	//ABSOLUTE LINKS UMLEITEN (kein JS!)
	ziel_container_=ziel_container!='undefined' && ziel_container ? ziel_container.id : 'modDivAlert_msg';
	ret_text=ret_text.replace(/<a href="\/([^"]*)/gi,'<a href="javascript:cLoader_msg(\'/$1\')');
	ret_text=ret_text.replace(/<form method="post" name="(\S*)" action="\/([^"]*)/gi,'<form method="post" name="$1_" action="javascript:loadPostIC(\'/$2\',getObj(\''+ziel_container_+'\'),\'$1_\')');
	return ret_text;
}

function addTS_url(url)
{
	return url+(url.indexOf("?")>0 ? "&" : "?")+"ts="+new Date().getTime();
}
function addCloader_url(url)
{
	return url+(url.indexOf("?")>0 ? "&" : "?")+"cloader=1";
}

var msg_classname;

function cLoader_msg(url,classname)
{
	if(classname!="undefined")
	{
		msg_classname=classname;
	}
	loadContentIFnc(addCloader_url(url),"cLoader_msg_");					
}
function cLoader_msg_(xml,ret_text,readyState)
{
	if(readyState==4)
	{
		if(ret_text!="")
		{
			//ret_text=cLoaderLinks(ret_text);
			msg(ret_text,"","",msg_classname);
			msg_classname=null;
		}
		else
		{
			msg("Es ist ein Fehler aufgetreten.<br /><br />Bitte versuche es erneut.","Fehler","close");							
		}
	}
}
function cLoader_msg_silent_(xml,ret_text,readyState)
{
	if(readyState==4)
	{
		if(ret_text!="")
		{
			msg(ret_text,"Fehler","",msg_classname);
			msg_classname=null;
		}
	}
}

