//AJAX handling
function getDomFromResponse(text)
{
	if (window.DOMParser)
	{
	  parser=new DOMParser();
	  xmlDoc=parser.parseFromString(text,"text/xml");
	}
	else // Internet Explorer
	{
	  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	  xmlDoc.async="false";
	  xmlDoc.loadXML(text);
	} 
	return xmlDoc;
}

function processAjaxResponse(oResponse, oGrid, oTabbar)
{
	var responseXml = oResponse.xmlDoc.responseText;
	var oDomResponse = getDomFromResponse(responseXml);
	if (oResponse.doXPath("/ajaxResponse/state", oDomResponse, null, 'single').firstChild.nodeValue == 'error')
	{
		if (oResponse.doXPath("/ajaxResponse/errorRow", oDomResponse, null, 'single').firstChild !== null)
		{
			errorRow = oResponse.doXPath("/ajaxResponse/errorRow", oDomResponse, null, 'single').firstChild.nodeValue;
			oGrid.forEachRow(function(id){
				oGrid.cells(id, 0).setValue('');
			}
			);
			oGrid.cells(errorRow, 0).setValue('<img src="/imgs/formbuttons/16_abbrechen.png"/>');
			oGrid.showRow(errorRow);
		}
		if (oResponse.doXPath("/ajaxResponse/errorTab", oDomResponse, null, 'single').firstChild !== null)
		{
			errorTab = oResponse.doXPath("/ajaxResponse/errorTab", oDomResponse, null, 'single').firstChild.nodeValue;
			oTabbar.setTabActive(errorTab);
		}
		errorMessage(oResponse.doXPath("/ajaxResponse/message", oDomResponse, null, 'single').firstChild.nodeValue);
		return false;
	}
	if (oResponse.doXPath("/ajaxResponse/state", oDomResponse, null, 'single').firstChild.nodeValue == 'warning')
	{
		return 'confirm';
	}
	else
	{
		
		if (oResponse.doXPath("/ajaxResponse/forwardUrl", oDomResponse, null, 'single').firstChild !== null)
		{
			document.location.href = oResponse.doXPath("/ajaxResponse/forwardUrl", oDomResponse, null, 'single').firstChild.nodeValue;
		}
		return true
	}
}

function addSelectOptionsFromAjaxResponse(oResponse, optionsPath, oToolbar, idSelect)
{
	var responseXml = oResponse.xmlDoc.responseText;
	var oDomResponse = getDomFromResponse(responseXml);
	
	aOptions = oResponse.doXPath(optionsPath, oDomResponse, null);
	
	for (i=0; i<aOptions.length; i++)
	{
		idOption = aOptions[i].getElementsByTagName('idOption')[0].firstChild.nodeValue;
		pos = aOptions[i].getElementsByTagName('pos')[0].firstChild.nodeValue;
		text = aOptions[i].getElementsByTagName('text')[0].firstChild.nodeValue;
		oToolbar.addListOption(idSelect, idOption, pos, "button", text, "");
	}
}

//Message Windows
function windowMessage(message, header, icon, css)
{
	oWindowError = addWindow("windowError", 0, 0, 400, 200, header, icon);
	
	var divError = document.createElement('div');
	divError.setAttribute('id', 'divError');
	oWindowError.attachObject(divError);
	oWindowError.setModal(true);
	oWindowError.center();
	oWindowError.button("minmax1").hide();
	oWindowError.button("minmax2").hide();
	oWindowError.button("park").hide();
	document.getElementById('divError').innerHTML = '<p style="padding:10px;font-family: Tahoma; '+css+'text-align:center;">'+message+'<br/><br/><br/><input style="width: 100px;" type="button" value="OK" onClick="Javascript:oWindowError.close();"/></p>';
}

function confirmMessage(message, header, onConfirm)
{
	oWindowError = addWindow("windowError", 0, 0, 400, 200, header, 'windowicons/16_info.png');
	
	var divError = document.createElement('div');
	divError.setAttribute('id', 'divError');
	oWindowError.attachObject(divError);
	oWindowError.setModal(true);
	oWindowError.center();
	oWindowError.button("minmax1").hide();
	oWindowError.button("minmax2").hide();
	oWindowError.button("park").hide();
	document.getElementById('divError').innerHTML = '<p style="padding:10px;font-family: Tahoma; text-align:center;">'+message+'<br/><br/><br/><input style="width: 100px;" type="button" value="Ja" onClick="Javascript:oWindowError.close();'+onConfirm+'"/><input style="width: 100px;" type="button" value="Nein" onClick="Javascript:oWindowError.close();"/></p>';
}

function errorMessage(message)
{
	windowMessage(message, 'Fehler', 'windowicons/16_error.png' ,'color:red;');
}

function infoMessage(message)
{
	windowMessage(message, 'Info', 'windowicons/16_info.png' ,'');
}

function setNodeStyle(cssStyle, oNode)
{
	if (window.DOMParser) //Firefox
	{
		oNode.setAttribute('style', cssStyle);
	}
	else //IE
	{
		oNode.style.setAttribute('cssText', cssStyle, 0);
	}
}

//XML DOCUMENT EDITING
function createXmlDocument()
{
	if(typeof(ActiveXObject) == "undefined")
	{
		oDomDocument = document.implementation.createDocument("", "", null);
	}
	else
	{
		oDomDocument = new ActiveXObject("Msxml.DOMDocument");
	}
	oNodeRoot = oDomDocument.createElement('data');
	oDomDocument.appendChild(oNodeRoot);
	return([oDomDocument, oNodeRoot]);
}
