/***************************
Ajax
***************************/
var http = false;

function ajaxReq(file, params) 
{
	http = false;

	if (window.XMLHttpRequest) 
	{ // Mozilla, Safari, ...
    	http = new XMLHttpRequest();
		http.overrideMimeType('text/xml');
	} 
	else if (window.ActiveXObject) 
	{ // IE
	    http = new ActiveXObject("Microsoft.XMLHTTP");
	}
	/***********************************
	Parameter:
	
	file = phpFileName
	
	params = mit komma getrennte Werte
	[0] wenn 'get' hol Daten aus einem Formular
		[1] Feldtyp
		[2] Formularname
		[3] Feldname
		[4] Anzahl Zeichen die Eingegeben werden müssen bevor ajax losrennt
		[5] action (parameter für das php Script als Fallunterscheidung)
		[6] additional Arguments (optional)
	
	[0] wenn 'all' durchsuche alle Formularelemente
		[1] Feldtyp (text, select, all...)
		[2] Formularname
	
	[0] wenn nicht 'get'
		[1] x=y
		[2] a=b
		...
		[n] i=o
		Daraus wird der QUERY_STRING gebaut
		?x=y&a=b...&i=o
	
	[0] checkMail
		[1] false
		[2] Formularname
		[3] Formular Feldname mit E-Mail Adresse
	***********************************/
	//alert(params);
	var append = "";
	params = params.split(',');
	formular = params[2];
	element = params[3];
	if (params[0] == 'get')
	{
		switch (params[1])
		{
			case 'text':
			if (document[formular][element].value.length < params[4])
			{
				return false;
			};
			append+=params[5]+"="+document[formular][element].value+"&";
		}
		append+="action="+params[5];
	}
	else if (params[0] == 'all')
	{
		for (x=0;x<document[formular].length;x++)
		{
			if (document[formular].elements[x].type==params[1] || params[2]=='all')			
			{
				document[formular].elements[x].type=='select-one' ? wert=document[formular].elements[x].options[document[formular].elements[x].selectedIndex].value : wert = document[formular].elements[x].value;
				append += x+'='+wert+"&";
			}
		}
		append += "action="+params[3];
	}
	else if (params[0] == 'checkMail')
	{
		append="action=checkMail&email="+document[formular][element].value+"&form="+formular+"&element="+element; 
	}
	else if (params[0]=='helpBox')
	{
		append += "action=cat&cat="+params[1];
	}
	else if (params[0]=='infoBox')
	{
		params[1] == '' ? params[1] = 100 : '';
		append += "action=catInfo&cat="+params[1];
	}
	else if (params[0]=='newsToolTip')
	{
		append += "action=newsToolTip&lim="+params[1];
	}
	else
	{
		for (x=0;x<params.length;x++)
		{
			gets = params[x].split('=');
			append+=gets[0]+"="+gets[1]+"&";
		}
	}
	if (params[6])
	{
		append+="&add="+document[formular][params[6]].value;
	}
	
	//alert(append);
	
    document.body.className="curWait";
    http.onreadystatechange = handleResponse;
    http.open('get', file+'.php?'+append);
    http.send(null);
}

function handleResponse() 
{
	if(http.readyState == 4)
	{
        var response = http.responseText;
        
        //alert(response);
        
        var update = new Array();
        update = response.split('###')
        
        /*************************************
        update[0] kommt vom phpScript als erstes
        Element in dem String der ausgegeben wird. 
		Elemente werden durch '###' getrennt.
		z.B.: newOptions###selectID###text2###text3...
        *************************************/
        
        switch (update[0])
        {
        	case "newOptions":
        	/* löscht die OPTIONS in einer Selectbox und ersetzt diese durch die Datenbankabfrage (text==value)*/
			document.getElementById(update[1]).options.length = 0;
        	for(x=2;x<update.length;x++)
	        {
				var newOpt = document.createElement("option");
				newOpt.value = update[x];
				newOpt.text = update[x];
				document.getElementById(update[1]).options.add(newOpt)
			}
			break;
			
			case "checkMail":
			document[update[1]][update[2]].value = update[3]+document[update[1]][update[2]].value;
			break;
			
			case "helpBox":
			var kategorien;
			var textNeu;
			var elementNeu = document.createElement("div");
			var br = document.createElement("br");
			var attributeNeu = document.createAttribute("id");
			attributeNeu.nodeValue=update[0];
			elementNeu.setAttributeNode(attributeNeu);
			for (x=1;x<update.length;x++)
			{
				pNeu = document.createElement("p");
				textNeu = document.createTextNode(update[x]);
				pNeu.appendChild(textNeu);
				elementNeu.appendChild(pNeu);
			}
			textNeu = document.createTextNode(" ... ");
			elementNeu.appendChild(textNeu);
			document.getElementById('suchForm').appendChild(elementNeu);
			break;
			
			case "infoBox":
			if (document.getElementById(update[0]))
			{
				var node = document.getElementById(update[0]);
				document.getElementById('suchForm').removeChild(node);
			}
			if (document.suchForm.cat.selectedIndex > 0)
			{
				var kategorien;
				var textNeu;
				var elementNeu = document.createElement("div");
				var br = document.createElement("br");
				var attributeNeu = document.createAttribute("id");
				attributeNeu.nodeValue=update[0];
				elementNeu.setAttributeNode(attributeNeu);
				for (x=1;x<update.length;x++)
				{
					pNeu = document.createElement("p");
					textNeu = document.createTextNode(update[x]);
					pNeu.appendChild(textNeu);
					elementNeu.appendChild(pNeu);
				}
				textNeu = document.createTextNode(" ... ");
				elementNeu.appendChild(textNeu);
				document.getElementById('suchForm').appendChild(elementNeu);
			}
			break;
			case "newsToolTip":
			if (update[1] != "keine daten")
			{
				if (document.getElementById(update[0]))
				{
					var node = document.getElementById('newsToolTip');
					document.getElementById('fussnavi').removeChild(node);
				}
				var elementNeu = document.createElement("span");
				var attributeNeu = document.createAttribute("id");
				attributeNeu.nodeValue='newsToolTip';
				elementNeu.setAttributeNode(attributeNeu);
				
				var textNeu = document.createTextNode(update[1]);
				elementNeu.appendChild(textNeu);
				
				document.getElementsByName('fusslink'+update[2])[0].appendChild(elementNeu);
				var breite = 0;
				update[1].length==10 ? breite = 62 : breite = 135;
				document.getElementById('newsToolTip').style.width=breite+"px";
			}
			break;		
		}
        
	    document.body.className="curNormal";
    }
}
/***************************
Ende Ajax
***************************/
/* Newstooltip entfernen */
function hideNewsTt(lim)
{
	var node = document.getElementById('newsToolTip');
	document.getElementsByName('fusslink'+lim)[0].removeChild(node);
}

/****************
Ajax Suchformular
****************/
function getKeycode(e)
{
	if (navigator.appName=="Netscape")
	{
		keycode = e.which;
	}
	else if (navigator.appName.indexOf("Microsoft")>'-1')
	{
		keycode = window.event.keyCode;
	}
	return keycode;
}

function intelliFocus(e, params)
{
	params = params.split(',');
	formular = params[0];
	element = document[formular][params[1]];
	element2 = document[formular][params[2]];
	
	/* soll verhindern das Fehlermldung durch Firefox-Bug die JS-Console füllt */
	element.setAttribute("autocomplete","OFF");
	element2.setAttribute("autocomplete","OFF");
	
	var keycode = getKeycode(e);
	if (keycode == 40)
	{
		element2.focus();
		return true;
	}
	if (element.value.length>params[3])
	{
		element2.style.visibility="hidden";
		return false;
	}
	if (keycode == 13)
	{
		//element2.focus();
		//element2.style.visibility="hidden";
		//return false;
	}
}
function intelliFocusOff(e, params)
{	
	params = params.split(',');
	formular = params[0];
	if (document[formular])
	{
		element = document[formular][params[1]];
		element2 = document[formular][params[2]];
	}
	if (document[formular] && element && element2)
	{
		element.setAttribute("autocomplete","OFF");
		element2.setAttribute("autocomplete","OFF");
	}
	
	if (params[1]=='body' && document[formular])
	{
		var elemente = document[formular].length;
		for (x=0;x<elemente;x++)
		{
			if(document[formular].elements[x].name.indexOf('intelli')>-1)
			{
				document[formular].elements[x].style.visibility="hidden";
			}
		}
		return true;
	}
	
	if(document[formular] && e.type=='click')
	{
		element.value = element2.options[element2.selectedIndex].value;
		element2.style.visibility="hidden";
		return false;
	}
	var keycode = getKeycode(e);
	if (document[formular] && keycode == 13)
	{
		element.value = element2.options[element2.selectedIndex].value;
		element2.style.visibility="hidden";
		element.focus();
		return false;
	}
	if (document[formular] && keycode==38 && element2.selectedIndex==0)
	{
		element.focus();
	}
}
function intellisense(e, params)
{
	var keycode = getKeycode(e);
	
	params = params.split(',');
	formular = params[0];
	element = params[1];
	element2 = params[2];
	
	document[formular][element].setAttribute("autocomplete","OFF");
	document[formular][element2].setAttribute("autocomplete","OFF");
	
	var elemente = document[formular].length;
	for (x=0;x<elemente;x++)
	{
		if(document[formular].elements[x].name.indexOf('intelli')>-1)
		{
			document[formular].elements[x].style.visibility="hidden";
		}
	}
	if (keycode == 13)
	{
		//document[formular][element2].focus();
		document[formular][element2].style.visibility="hidden";
		return false;
	}
	if (document[formular][element].value.length < params[3] || document[formular][element].value.length >= params[4])
	{
		document[formular][element2].style.visibility="hidden";
		return false;
	}
	else
	{
		document[formular][element2].style.visibility="visible";
		return false;
	}
}
function suchFormSubmit()
{
	if(document.suchForm.selectPlz.selectedIndex>-1)
	{
		document.suchForm.suchFormPlz.value = document.suchForm.selectPlz.options[document.suchForm.selectPlz.selectedIndex].value;
	}
	return true;
}
/***************************
/AJAX Suchformular
***************************/