var XMLDom;
var bodyLoaded;
var debug = '0';
/*<!+++++++++++++++++++++++++ How can I use servlet  XML request+++++++++++++++++-->
<!--1. In form
<field name="fileSelect" eachrow="yes" fieldtype="ajaxFileselect" datatype="string" options="navigation.file" optionsvalue="local" optionsname="@name" url="servlet.php?mode=servlet&amp;submode=publication&amp;navigationFile" urltarget="navigation"/>
fieldtype :	 can be xmlReqoptions for normal option format or ajaxFileselect for fileselect option format
options:		 just used in the case which option has no xml  Request. all other form with request no need of options!
optionsvalue , 
optionsname: the same as normal option
url: 				the relative url to servlet name with mode and submode and the command for the servlet. the name of the Variable wich send with field should be written as the last name without '=' sign in examlpe the value of field should be written in 'navigationFile'.
urltarget:		Is the Target of the Values which is send with XML Request.
2. In servlet: 
a.		Testing which field has asked for data 
b.		writing the datas in system/dom
c.		Writing the name of the data in command with "data" as name

Aufruf aus html: 
xmlRequest('http://localhost/projekte/comas3/comas.3.0.dev/licence/app/demo/servlet.php?mode=servlet&submode=publication&navigationFile=
'+ document.getElementById('contentversionEdit[3][fileSelect][1]').options[document.getElementById('contentversionEdit[3][fileSelect][1]').selectedIndex].value, 
'contentversionEdit[3][navigation][1]', 'value', 'name','contentversionEdit[3][navigation][1] contentversionEdit[3][navigation][1] ');" 


Funktionen
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/ bisheriger Name        			 ---------------------	neuer Name                                              /        Übergabeparameter                                                                          /
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
xmlRequestDivisionForm 		---------------------	mpxAjaxNSLSubscribe				(formname, div)
xmlRequestDivision 		 	---------------------	mpxAjaxSortableList				(formname, div)
xmlRequest					 ---------------------	mpxAjaxFillSelect				(src,formname,optionsvalue,optionsname,nextOptionsArray)
addOption 					 ---------------------   mpxAjaxAddOption				(formname,optionsvalue,optionsname,nextOptionsArray)
mpxSubmitFormXML 			 ---------------------   mpxAjaxSubmitForm				(formname)
mpxSubmitFormXMLComment		 ---------------------   mpxAjaxSubmitFormComment			(formname)
mpxSubmitFormXMLChat 		 ---------------------   mpxAjaxSubmitFormChat			(formname, CountDown, first)
mpxSubmitFormXMLChat_CountDown ---------------------   mpxAjaxSubmitFormChatCountDown		(msecs, formname, first) 
toCharEnt 					 ---------------------   mpxAjaxToCharEnt				(chat)
htmlEntityReplace				 ---------------------   mpxAjaxHtmlEntityReplace			(string) 
xml_load 					 ---------------------   mpxAjaxXmlLoad					(src)
checkForParseError 			 ---------------------   mpxAjaxCheckForParseError			(xmlDocument) 
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-->*/

/* allgemeine Funktionen */
function mpxAjaxXmlLoad(src) {
	var xmlDocument;
	var xmlhtt;

	// code for Mozilla, etc.
	if(debug=='1') alert('SRC: ' + src);
	if (window.XMLHttpRequest)
	{
		if(debug=='1') alert('hallo');
		var	p = new XMLHttpRequest();
		if(debug=='1') alert('hallo2');
		p.open("GET",src, false);
		if(debug=='1') alert('hallo3');
		p.send(null);
		if(debug=='1') alert('hallo4');
		if(debug=='1') alert('p.responseText: ' + p.responseText);
		var domParser = new DOMParser();
		xmlDocument = domParser.parseFromString(p.responseText,'application/xml');
		if(debug=='1') alert('hallo5');
		var parseError = mpxAjaxCheckForParseError(xmlDocument);
		if(debug=='1') alert('hallo6');
		if (parseError.errorCode == 0) 
			{
			if(debug=='1') alert('hallo7');
			 return xmlDocument;    
			}  
		else
			{
			if(debug=='1') alert('hallo8');
			 alert(parseError.reason + '\r\n' + parseError.srcText); 		
			// shows detailed error message  
			}
	}
	//FOR IE
	else if (window.ActiveXObject)
	{
		if(debug=='1') alert('iehallo1');
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");			
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
		if (xmlhttp)
		{
			if(debug=='1') alert('iehallo2');
//			xmlhttp.onreadystatechange=xmlhttpChange
			xmlhttp.open("GET",src,false)
			if(debug=='1') alert('iehallo3');
			xmlhttp.send()
			if(debug=='1') alert('iehallo4');
			xmlDoc = xmlhttp.responseText
			if(debug=='1') alert('iehallo5');
			if(debug=='1') alert(xmlhttp.responseText);
			// Auskommentiert, da hier der IE6 aussteigt LR06
			//var s = new XMLSerializer();
			if(debug=='1') alert('iehallo6a');
			//xmlDoc = s.serializeToString(xmlDoc);
			if(debug=='1') alert('iehallo6');	
			return xmlhttp.responseText
			//return xmlDoc
			if(debug=='1') alert('iehallo7');
		}
	}
}
function mpxAjaxCheckForParseError (xmlDocument) {
	var errorNamespace = 'http://www.mozilla.org/newlayout/xml/parsererror.xml';
	var documentElement = xmlDocument.documentElement;
	var parseError = { errorCode : 0 };
	if (documentElement.nodeName == 'parsererror' && documentElement.namespaceURI == errorNamespace) {
	  parseError.errorCode = 1;
	  var sourceText =
	documentElement.getElementsByTagNameNS(errorNamespace, 'sourcetext')[0];
	  if (sourceText != null) {
		parseError.srcText = sourceText.firstChild.data
	  }
	  parseError.reason = documentElement.firstChild.data;
	}
	return parseError;
}
function mpxAjaxToCharEnt(chat) {
	if(debug=='1') alert(chat);
	var mtoc = /<([^<>]*)>/g;
	//var chat1 = chat.replace(mtoc,"&lt;$1&gt;");
	
	//chat =  chat.replace(/<\?([^?]+)\?>/g, "&lt;#$1#&gt;");
	var chat1 =  chat.replace(/&/g, ";and;");
	//alert(chat1)
	return chat1
}
function mpxAjaxHtmlEntityReplace(string) {
	if(debug=='1') alert(string);
	
	//alert('afterall')
	//alert(string)
	//var string1 =  string.replace(/&lt;\?([^?]+)\?&gt;/g, "<?#$1#?>");
	var string1 =  string.replace(/;and;/g, "&"); 
	//string =  string.replace(/&lt;#([^#]+)#&gt;/g, "<?$1?>");

	string1 =  string1.replace(/â?¬/g, "€")	
	
		//string1 =  string1.replace(/â€/g, "€")			
	return string1;
}



/* verschiedene Funktionen */
function mpxAjaxSortableList(src,divID){
	if (bodyLoaded == 1) {
		//alert(src);
		//alert(divID);
		XMLList = mpxAjaxXmlLoad(src);
		//alert(XMLList);
		if (window.XMLHttpRequest)
		{
			var s = new XMLSerializer();
			document.getElementById(divID).innerHTML = s.serializeToString(XMLList);
			// nur bei sortierbaren Liste muss das sortieren neu erzeugt werden
			//alert(divID);
			if(divID == 'sortable_list') Sortable.create('publ_list');
			//alert(s.serializeToString(XMLList));
		}
		//FOR IE
		else if (window.ActiveXObject)
		{
			document.getElementById(divID).innerHTML = XMLList;
			// nur bei sortierbaren Liste muss das sortieren neu erzeugt werden
			//alert(divID);
			if(divID == 'sortable_list') Sortable.create('publ_list');			
		}
	}
}
/*  Newsletter Subscribe (Aufruf aus mpx.bis.box.xsl Zeile  595)*/
function mpxAjaxNSLSubscribe(formname, div){
	if(debug=='1') alert('Formname: ' + formname);
	if(document.forms[formname])
	{
		url = document.forms[formname].action + "?";
		for (i = 0; i < document.forms[formname].elements.length; ++i)
		{
			if(document.forms[formname].elements[i].type == "checkbox")
			{
				if(document.forms[formname].elements[i].checked == true)
					url = url + document.forms[formname].elements[i].name + "=yes&";
			}
			else
				url = url + document.forms[formname].elements[i].name + "=" + document.forms[formname].elements[i].value + "&";
			//alert(document.forms[formname].elements[i].type)
			//alert(document.forms[formname].elements[i].name);
		}
		if(debug=='1') alert('URL: ' + url);
		XMLList = mpxAjaxXmlLoad(url);
		// mit dem object XMLList sollte eine neue Liste aufgebaut werden 
		div = document.getElementById(div);
		if(debug=='1') alert('XMLList: ' + XMLList);
		if (window.XMLHttpRequest)
		{
			if(debug=='1') alert('FF');
			var s = new XMLSerializer();
			div.innerHTML = s.serializeToString(XMLList);
			if(debug=='1') alert(s.serializeToString(XMLList));
		}
		//FOR IE
	  	else if (window.ActiveXObject)
	  	{
			if(debug=='1') alert('IE');
	  		div.innerHTML = XMLList;
		}
		// hier: textarea leeren
		//document.getElementsByName("text")[0].value = "";
		//alert("Danke, das haben wir gespeichert!");
		return false;
	}
	alert("unknown form '" + formname + "'");
	return false;
}
/* Select Funktionen */
function mpxAjaxFillSelect(src,formname,optionsvalue,optionsname,nextOptionsArray){
	if(debug=='1') alert(src);
	//alert(nextOptionsArray[1]);
	XMLDom = mpxAjaxXmlLoad(src);

	mpxAjaxAddOption (formname,optionsvalue,optionsname,nextOptionsArray);   
	}
/*
	Problem:
	hier werden alle folgenden selects geleert, gibt ein problem bei transfer, dort sollte nur
	diese selects geleert werden welche in einen Kontext gehï¿½...
	Woher weiss ich wann ich nicht alle Lï¿½en darf ? -> nie nur die die zum kontext gehï¿½!!!
	weil einfach nur das nã¢¨ste zu lï¿½en ist nicht drin glaube ich,
	
*/
function mpxAjaxAddOption (formname,optionsvalue,optionsname,nextOptionsArray) {
	//alert(formname);
	//alert(optionsvalue);
	//alert(optionsname);
	//alert(nextOptionsArray);
	var optionsArray	= nextOptionsArray.split(' ');
	//alert(optionsArray); // Kommagetrennt alle nachfolgenden Formnamen
	//delete the list of options next to the actuel option	
	for(j= optionsArray.length -2 ; j >= 0 ; j--) {		
		//alert(optionsArray[j]);
		if(document.getElementById(optionsArray[j])!= null) {
			for(i = document.getElementById(optionsArray[j]).length -1  ; i > 0 ; i--)
				document.getElementById(optionsArray[j]).options[i]	= null;
		}
	}
	//write the options in to the form		
	//alert(XMLDom.documentElement.childNodes);
	//alert(XMLDom.documentElement.childNodes.length);
	for (i=0; i<=XMLDom.documentElement.childNodes.length; i++) {
		//alert(XMLDom.documentElement.childNodes[i].nodeType);
		if(!(XMLDom.documentElement.childNodes[i]) || XMLDom.documentElement.childNodes[i].nodeType != 1)
			continue;		
		//alert(XMLDom.documentElement.childNodes[i].getAttributeNode('selected'));
		if(XMLDom.documentElement.childNodes[i].getAttributeNode('selected')) {
			NeuerEintrag = new Option(XMLDom.documentElement.childNodes[i].getElementsByTagName(optionsname)[0].firstChild.nodeValue, XMLDom.documentElement.childNodes[i].getElementsByTagName(optionsvalue)[0].firstChild.nodeValue, true, true);	
		}
		else {
			NeuerEintrag = new Option(XMLDom.documentElement.childNodes[i].getElementsByTagName(optionsname)[0].firstChild.nodeValue, XMLDom.documentElement.childNodes[i].getElementsByTagName(optionsvalue)[0].firstChild.nodeValue, false, false);
		}
		document.getElementById(formname).options[document.getElementById(formname).length] = NeuerEintrag;
	}
}function mpxAjaxSubmitForm(formname){
	//alert(formname);
	if(document.forms[formname])
	{
		url = document.forms[formname].action + "?";
		for (i = 0; i < document.forms[formname].elements.length; ++i)
		{
			if(document.forms[formname].elements[i].type == "checkbox")
			{
				if(document.forms[formname].elements[i].checked == true)
					url = url + document.forms[formname].elements[i].name + "=yes&";
			}
			else
				url = url + document.forms[formname].elements[i].name + "=" + document.forms[formname].elements[i].value + "&";
			//alert(document.forms[formname].elements[i].type)
			//alert(document.forms[formname].elements[i].name);
		}
		//alert(url);
		//document.write(url);
		XMLList = mpxAjaxXmlLoad(url);
		// mit dem object XMLList sollte eine neue Liste aufgebaut werden 
		div = document.getElementById("mpxDebugComment");
		//alert(div.firstChild.nodeValue);
		//alert(XMLList);
		var s = new XMLSerializer();
		div.innerHTML = s.serializeToString(XMLList);
		//alert(s.serializeToString(XMLList));
		// hier: textarea leeren
		//document.getElementsByName("text")[0].value = "";
		//alert("Danke, das haben wir gespeichert!");
		return false;
	}
	alert("unknown form '" + formname + "'");
	return false;
}

/* SUbmitForm Funktionen */
function mpxAjaxSubmitFormComment(formname){
	//alert(formname);
	if(document.forms[formname])
	{
		url = document.forms[formname].action + "?";
		for (i = 0; i < document.forms[formname].elements.length; ++i)
		{
			if(document.forms[formname].elements[i].type == "checkbox")
			{
				if(document.forms[formname].elements[i].checked == true)
					url = url + document.forms[formname].elements[i].name + "=yes&";
			}
			else
				url = url + document.forms[formname].elements[i].name + "=" + document.forms[formname].elements[i].value + "&";
			//alert(document.forms[formname].elements[i].type)
			//alert(document.forms[formname].elements[i].name);
		}
		//alert(url);
		//document.write(url);
		XMLList = mpxAjaxXmlLoad(url);
		// mit dem object XMLList sollte eine neue Liste aufgebaut werden 
		div = document.getElementById("mpxDebugComment");
		//alert(div.firstChild.nodeValue);
		//alert(XMLList);
		if (window.XMLHttpRequest)
		{
			if (typeof XMLSerializer == "undefined")
			{
				div.innerHTML = XMLList;
			}
			else
			{
				var s = new XMLSerializer();
				div.innerHTML = s.serializeToString(XMLList);
			}
			//alert(s.serializeToString(XMLList));
		}
		//FOR IE
		else if (window.ActiveXObject)
		{
			div.innerHTML = XMLList;
		}
		// hier: textarea leeren
		//alert(document.getElementsByTagName('textarea')item[0].value);
		document.getElementsByName("text")[0].value = "";
		alert("Danke, das haben wir gespeichert!");
		return false;
	}
	alert("unknown form '" + formname + "'");
	return false;
}
function mpxAjaxSubmitFormChat(formname, CountDown, first){
	//debug='1';
	//alert("isNew: "+ isNew);
	if(debug=='1') alert(formname);
	//alert(document.forms[formname].action);
	if(document.forms[formname])
	{
//			url = /*document.forms[formname].action +*/ "http://195.96.33.223/comas/c3/licence/offenbach/mpx.chat.seminar.php?mode=servlet&submode=chat&xsl=mpx.template.servlet.chat.xsl&";
		url = document.forms[formname].action + "/mpx.chat.seminar.php?mode=servlet&submode=chat&xsl=mpx.template.servlet.chat.xsl&";
		var nickname;
		var userId = 0;
		var isFirst;
		for (i = 0; i < document.forms[formname].elements.length; ++i)
		{
			/*if(document.forms[formname].elements[i].type == "checkbox")
			{
				if(document.forms[formname].elements[i].checked == true)
				url = url + document.forms[formname].elements[i].name + "=yes&";
			}*/
			if(document.forms[formname].elements[i].name == "seminar")
			{
				url = url + "seminar=" + document.forms[formname].elements[i].value + "&";
			}
			if(document.forms[formname].elements[i].name == "nickname")
			{
				nickname = "<b>" +document.forms[formname].elements[i].value + "::</b> ";
			}
			if(document.forms[formname].elements[i].name == "userId")
			{
				userId = document.forms[formname].elements[i].value;
			}
			if(document.forms[formname].elements[i].name == "chatAjax[value][1]" && document.forms[formname].elements[i].value != "" && CountDown != "1")
			{
				if(debug=='1') alert(document.forms[formname].elements[i].value);
				var chat1 = mpxAjaxToCharEnt(document.forms[formname].elements[i].value);
				if(debug=='1') alert('return von stringersetzung' + chat1);
				url = url + "chat=" + nickname + chat1 + "&user=" + userId + "&"; 
				if (document.forms[formname].elements[i].value != "")document.forms[formname].elements[i].value = "";
			}
				
			//else
			//url = url + document.forms[formname].elements[i].name + "=" + document.forms[formname].elements[i].value + "&";*/
			//alert(document.forms[formname].elements[i].type)
			//alert(document.forms[formname].elements[i].name);
		}		
		if(CountDown == '1')
		{
			if(first == 'yes')
			{
				url = url + "user=" + userId + "&first=yes";
			}
			else {
				url = url + "user=" + userId + "&";
			}
			if(debug=='1') alert(' URL: '+url);					
		}				
		if(debug=='1') alert(url);
		if(debug=='1') alert('rufe xml_load auf');
		//document.write(url);			
		XMLList = mpxAjaxXmlLoad(url);
		if(debug=='1') alert('hallo nach XMLList');
		// mit dem object XMLList sollte eine neue Liste aufgebaut werden 
		div = document.getElementById("chatContainer");
		if(debug=='1') alert(div);
		if(debug=='1') alert(XMLList);
		if (window.XMLHttpRequest)
		{
			if (typeof XMLSerializer == "undefined")
			{
				div.innerHTML = XMLList;
			}
			else
			{
				var s = new XMLSerializer();
				var serializedString	= mpxAjaxHtmlEntityReplace(s.serializeToString(XMLList));
				div.innerHTML = serializedString;
				//alert(s.serializeToString(XMLList));				
			}
		}
		//FOR IE
		else if (window.ActiveXObject)
		{
			
			div.innerHTML = mpxAjaxHtmlEntityReplace(XMLList);
			//div.innerHTML =XMLList.responseText		  	
		}
		// hier: textarea leeren
		//document.getElementsByName("text")[0].value = "";
		//alert("Danke, das haben wir gespeichert!");
		return false;
	}
	alert("unknown form '" + formname + "'");
	return false;
}	
function mpxAjaxSubmitFormChatCountDown(msecs, formname, first) {
	if(debug=='1') alert(msecs);
	mpxAjaxSubmitFormChat(formname, '1', first);
	window.setTimeout("mpxSubmitFormXMLChat_CountDown('"+ msecs +"','"+ formname +"')",msecs); 
}







