
var ajax_global_data=new Array();
var ajax_req_array = new Array();
var req_counter = 0;
function ajax_load_get_xml_doc(url,ajax_zieltyp,ajax_zielid)
{
	//alert(url);
	ajax_load_xml_doc(url,'GET','',ajax_zieltyp,ajax_zielid);
}
function ajax_load_xml_doc(url,typ,postdata,ajax_zieltyp,ajax_zielid)
{
	var req;
    if (window.XMLHttpRequest) 
    {
        req = new XMLHttpRequest();
    }   
    else if (window.ActiveXObject) 
    {
        req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (req)
	{
		req_pos=req_counter;
		req_counter++;
		ajax_req_array[req_pos]=req;
		
		if (req_counter>1000) 
		{
			req_counter=0;
		}
		
        req.onreadystatechange = new Function( "", "ajax_processReqChange('"+req_pos+"','"+ ajax_zieltyp + "','" + escape(ajax_zielid) + "')" ); 
        req.open(String(typ), url, true);
        if (typ=='GET')
        {
        	req.send(null);
        }
        else
        {
        	req.setRequestHeader("Method", "POST " +  url  + " HTTP/1.1");
    		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    		if (postdata!=null)
    		{
    			req.setRequestHeader("Content-Length", postdata.length);
    		}
    		else
			{
				req.setRequestHeader("Content-Length", 0);
				postdata=""; //ff berechnet content-length anhand des body. wenn body null, dann keine content length. setheader wird ignoriert
			}
        	req.send(postdata);
        }
    } 
}
function ajax_processReqChange(req_pos,ajax_zieltyp,ajax_zielid_scheiss_avast)
{
	try
	{
		req=ajax_req_array[req_pos];
	}
	catch (e)
	{
		return;
	}

	ajax_zielid_scheiss_avast = unescape ( ajax_zielid_scheiss_avast ) ;
	//var ajax_zielid=ajax_zielid_scheiss_avast;
    if (req.readyState == 4) 
    {
        if (req.status == 200) 
        {
        	if (ajax_zielid_scheiss_avast=='') 
        	{
        		ajax_zielid_scheiss_avast='ajax_xml_default_reaktion(req);';
        	}
        	switch (ajax_zieltyp)
        	{
        		case "xml":
        			eval(ajax_zielid_scheiss_avast);
        			break;
        		case "text":
        			ajax_data_text2html(ajax_zielid_scheiss_avast);
					break;
				case "json":
					eval(ajax_zielid_scheiss_avast);
				case 'none':
					break;
        		default:
					ajax_data_text2html(ajax_zielid_scheiss_avast);
					break;
			}
			ajax_req_array[req_pos]=null;
 		}
    }
}
function ajax_data_text2html(ajax_zielid)
{
	if (!document.getElementById(ajax_zielid))
	{
		return;
	}
	document.getElementById(ajax_zielid).innerHTML=req.responseText;
	
}
function ajax_xml_default_reaktion(data)
{
	var data_xml=data.responseXML.getElementsByTagName('ajax_data')[0];

	if (data_xml && data_xml.getElementsByTagName('javascript')[0] && data_xml.getElementsByTagName('javascript')[0].getElementsByTagName('eval'))
	{
		var eval_data=data_xml.getElementsByTagName('javascript')[0].getElementsByTagName('eval');
		for (var i=0;i<eval_data.length;i++)
		{
			eval(eval_data[i].firstChild.data);
		}
	}
	if (data_xml && data_xml.getElementsByTagName('output')[0])
	{
		if (data_xml.getElementsByTagName('output')[0].getElementsByTagName('information') && data_xml.getElementsByTagName('output')[0].getElementsByTagName('information')[0])
		{
			var sys_msg_data=data_xml.getElementsByTagName('output')[0].getElementsByTagName('information')[0];
			var sys_msg_data_generate=ajax_sys_msg_generate(sys_msg_data);
			if (sys_msg_data_generate==false)
			{
				return;
			}
			
			//es gibt bwereits eine sysmsg
			if(document.getElementById('content_box_id_systemmeldung_0'))
			{
				document.getElementById('content_box_id_systemmeldung_0').parentNode.replaceChild(skin_rahmen_generate('bla',sys_msg_data_generate,'systemmeldung_0'),document.getElementById('content_box_id_systemmeldung_0'));
			}
			else
			{
				document.getElementById('content_box_id_platzhalter_systemmeldung_0').parentNode.replaceChild(skin_rahmen_generate('bla',sys_msg_data_generate,'systemmeldung_0'),document.getElementById('content_box_id_platzhalter_systemmeldung_0'));
			}
		}
		if (data_xml.getElementsByTagName('output')[0].getElementsByTagName('content') && data_xml.getElementsByTagName('output')[0].getElementsByTagName('content')[0])
		{
			var sys_content_data=data_xml.getElementsByTagName('output')[0].getElementsByTagName('content')[0];
			if (sys_content_data.getElementsByTagName('change')) //changedata
			{
				ajax_content_change(sys_content_data.getElementsByTagName('change')[0]);
			}

			
		}
	}
}
function ajax_content_change(data)
{
	if (data.getElementsByTagName('multiple'))
	{
		ajax_content_change_multiple(data);
	}
	if (data.getElementsByTagName('one'))
	{
		ajax_content_change_one(data);
	}
}
function ajax_content_add(data)
{
	if (data.getElementsByTagName('one'))
	{
		ajax_content_add_one(data);
	}
}
function ajax_content_change_one(data)
{
	for (var i=0;i<data.getElementsByTagName('one').length;i++)
	{
		var css_id=data.getElementsByTagName('one')[i].getElementsByTagName('css_id')[0].firstChild.data;
		if (!document.getElementById(css_id))
		{
			continue;
		}
		var content=data.getElementsByTagName('one')[i].getElementsByTagName('content');
		var css_change=data.getElementsByTagName('one')[i].getElementsByTagName('css_attributes');
		if (content && content[0] && content[0].getElementsByTagName('data')[0].firstChild)
		{
			var typ=data.getElementsByTagName('one')[i].getElementsByTagName('content')[0].getElementsByTagName('typ')[0].firstChild.data;
			if (data.getElementsByTagName('one')[i].getElementsByTagName('content')[0].getElementsByTagName('decimals')[0])
			{
				var decimals=parseInt(data.getElementsByTagName('one')[i].getElementsByTagName('content')[0].getElementsByTagName('decimals')[0].firstChild.data);
			}
			else 
			{
				var decimals=0;
			}
			if (data.getElementsByTagName('one')[i].getElementsByTagName('content')[0].getElementsByTagName('data_change')[0])
			{
				var content_change=(data.getElementsByTagName('one')[i].getElementsByTagName('content')[0].getElementsByTagName('data_change')[0].firstChild ? data.getElementsByTagName('multiple')[i].getElementsByTagName('content')[0].getElementsByTagName('data_change')[0].firstChild.data : '' );
			}
			else
			{
				var content_change="";
			}
			
			//ok frickeln für den frickfox
			//4k ajax response problem
			if(browser_mozi==1 && content[0].getElementsByTagName('data')[0].firstChild.textContent && content[0].getElementsByTagName('data')[0].normalize) 
			{
				content[0].getElementsByTagName('data')[0].normalize(content[0].getElementsByTagName('data')[0].firstChild);
			} 

			ajax_content_change_by_typ(typ,css_id,content[0].getElementsByTagName('data')[0].firstChild.data,decimals,content_change);
		}
		if (css_change)
		{
			for (var j=0;j<css_change.length;j++)
			{
				document.getElementById(css_id).setAttribute(css_change[j].getElementsByTagName('attribut')[0].firstChild.data,css_change[j].getElementsByTagName('value')[0].firstChild.data);
			}
		}
	}
}
function ajax_content_change_multiple(data)
{
	for (var i=0;i<data.getElementsByTagName('multiple').length;i++)
	{		
		var von=parseInt(data.getElementsByTagName('multiple')[i].getElementsByTagName('variable')[0].getElementsByTagName('von')[0].firstChild.data);
		var bis=parseInt(data.getElementsByTagName('multiple')[i].getElementsByTagName('variable')[0].getElementsByTagName('bis')[0].firstChild.data);
		var css_id_praefix=data.getElementsByTagName('multiple')[i].getElementsByTagName('css_id_praefix')[0].firstChild.data;
		var css_id_suffix=(data.getElementsByTagName('multiple')[i].getElementsByTagName('css_id_suffix')[0].firstChild ? data.getElementsByTagName('multiple')[i].getElementsByTagName('css_id_suffix')[0].firstChild.data : '' );
		var content=(data.getElementsByTagName('multiple')[i].getElementsByTagName('content')[0].getElementsByTagName('data')[0].firstChild ? data.getElementsByTagName('multiple')[i].getElementsByTagName('content')[0].getElementsByTagName('data')[0].firstChild.data : '' );
		var content_change=(data.getElementsByTagName('multiple')[i].getElementsByTagName('content')[0].getElementsByTagName('data_change')[0].firstChild ? data.getElementsByTagName('multiple')[i].getElementsByTagName('content')[0].getElementsByTagName('data_change')[0].firstChild.data : '' );
		var typ=data.getElementsByTagName('multiple')[i].getElementsByTagName('content')[0].getElementsByTagName('typ')[0].firstChild.data;
		var decimals=parseInt(data.getElementsByTagName('multiple')[i].getElementsByTagName('content')[0].getElementsByTagName('decimals')[0].firstChild.data);
		for (var j=von;j<=bis;j++)
		{
			if (document.getElementById(css_id_praefix+j+css_id_suffix))
			{
				ajax_content_change_by_typ(typ,css_id_praefix+j+css_id_suffix,content,decimals,content_change);
			}
		}
	}
}
function ajax_content_change_by_typ(typ,css_id,content,decimals,content_change)
{

	switch(typ)
	{
		case "1":
			dom_destroy_all_childs_by_element(document.getElementById(css_id));
			document.getElementById(css_id).appendChild(document.createTextNode(format_number(parseInt(content),0)));
			break;
		case "2":
			dom_destroy_all_childs_by_element(document.getElementById(css_id));
			document.getElementById(css_id).appendChild(document.createTextNode(format_number(parseFloat(content),decimals)));
			break;
		case "3":
			dom_destroy_all_childs_by_element(document.getElementById(css_id));
			document.getElementById(css_id).appendChild(document.createTextNode(content));
			break;
		case "4": //number
			var content_prev=document.getElementById(css_id).firstChild.data;
			dom_destroy_all_childs_by_element(document.getElementById(css_id));
			document.getElementById(css_id).appendChild(document.createTextNode(format_number(parseFloat(tsd_strip(String(content_prev)))+parseFloat(content_change),decimals)));
			break;
		case "5": //add script //nur temp
			var script1= document.createElement('script');
			//alert(content);
			script1.text=content;
			document.getElementById(css_id).appendChild(script1);
			break;
		default:
			dom_destroy_all_childs_by_element(document.getElementById(css_id));
			document.getElementById(css_id).innerHTML=content;
	}
}
function ajax_sys_msg_generate(data)
{
	var count=0;
	var table1=document.createElement("table");
	table1.setAttribute("class","table_default_bg table_default_contenttable");
	table1.setAttribute("className","table_default_bg table_default_contenttable");
	table1.setAttribute("cellspacing","1");
	table1.setAttribute("cellpadding","3");
	
	var tr1=document.createElement("tr");
	tr1.setAttribute("class","warnung");
	tr1.setAttribute("className","warnung");
	var td1=document.createElement("td");
	
	if (data.getElementsByTagName('error'))
	{
		for (var i=0;i<data.getElementsByTagName('error').length;i++)
		{
			if (count>0) 
			{
				td1.appendChild(document.createElement("br"));
			}
			var span1=document.createElement("span");
			span1.setAttribute("class","fehler_error");
			span1.setAttribute("className","fehler_error");
				var text1=document.createTextNode(data.getElementsByTagName('error')[i].firstChild.data);
			span1.appendChild(text1);
			td1.appendChild(span1);
			count++;
		}
	}
	
	if (data.getElementsByTagName('warning'))
	{
		for (var i=0;i<data.getElementsByTagName('warning').length;i++)
		{
			if (count>0) 
			{
				td1.appendChild(document.createElement("br"));
			}
			var span1=document.createElement("span");
			span1.setAttribute("class","fehler_warning");
			span1.setAttribute("className","fehler_warning");
				var text1=document.createTextNode(data.getElementsByTagName('warning')[i].firstChild.data);
			span1.appendChild(text1);
			td1.appendChild(span1);
			count++;
		}
	}
	
	if (data.getElementsByTagName('msg'))
	{
		for (var i=0;i<data.getElementsByTagName('msg').length;i++)
		{
			if (count>0) 
			{
				td1.appendChild(document.createElement("br"));
			}
			var span1=document.createElement("span");
			span1.setAttribute("class","fehler_msg");
			span1.setAttribute("className","fehler_msg");
				var text1=document.createTextNode(data.getElementsByTagName('msg')[i].firstChild.data);
			span1.appendChild(text1);
			td1.appendChild(span1);
			count++;
		}
	}
	tr1.appendChild(td1);
	table1.appendChild(tr1);
	if (count==0)
	{
		return false;
	}
	return table1;
}