//=============================================================================
//  global Helperfunction for XML-Access
//  - encapsulate different behaviour / Support of several Browsers
//-----------------------------------------------------------------------------
//  (c) StefaniusSW 2010
//-----------------------------------------------------------------------------
//  History:
//	21.06.2009	Created
//	26.09.2010	made ready for Google Chrome 
//				->  Chrome don't support Document.load()
//=============================================================================

var bIsIE = (window.ActiveXObject != null);

function LoadXMLDoc( strFileName )
{
	var error = "";
	var xmlDoc = null;
	
	try 
	{
		// for IE we create ActiveX-Object nad activate XPath for detailed Selections
		xmlDoc = new ActiveXObject("MSXML2.DOMDocument.3.0");
		xmlDoc.setProperty( "SelectionLanguage", "XPath" );
		xmlDoc.async = false;
		xmlDoc.load( strFileName );
	}
	catch(e)
	{
		try 
		{
			// Firefox, Mozilla, Opera, etc. we use buildin DOMParser
			xmlDoc = document.implementation.createDocument("","",null);
			xmlDoc.async = false;
			xmlDoc.load( strFileName );
		}
		catch(e)
		{
			try
			{
				// cause Google Chrome don't support 'load'-Method, we've to use XMLHttpRequest....
				var xmlhttp = new window.XMLHttpRequest();
				xmlhttp.open( "GET", strFileName, false );
				xmlhttp.send( null );
				xmlDoc = xmlhttp.responseXML.documentElement;
			}
			catch(e)
			{
				error = e.message;
			}
		}
	}
	
	return xmlDoc;
}


function SelectSingleNode(xmlNode, elementPath)
{
	if( window.ActiveXObject )
	{
		// IE directly supports access through XPath
		return xmlNode.selectSingleNode(elementPath);
	}
	else
	{
		// Other Browsers needs more 
		var xpe = new XPathEvaluator();
		var nsResolver = xpe.createNSResolver( xmlNode.ownerDocument == null ? xmlNode.documentElement : xmlNode.ownerDocument.documentElement);
		var results = xpe.evaluate(elementPath,xmlNode,nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE, null);
		return results.singleNodeValue; 
	}
}

function SelectNodes(xmlNode, elementPath)
{
	if( window.ActiveXObject )
	{
		// IE directly supports access through XPath
		return xmlNode.selectNodes(elementPath);
	}
	else
	{
		// Other Browsers needs more 
		var xpe = new XPathEvaluator();
		var nsResolver = xpe.createNSResolver( xmlNode.ownerDocument == null ? xmlNode.documentElement : xmlNode.ownerDocument.documentElement);
		var aItems  = xpe.evaluate(elementPath,xmlNode,nsResolver,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);

		var aResult = [];
		for( var i = 0; i < aItems.snapshotLength; i++ ) 
		{ 
			aResult[i] = aItems.snapshotItem(i);
		} 
		return aResult;
	}
}

function NodeText( xmlNode )
{
	var strText = '<null>';
	if( xmlNode != null )
	{
		if( window.ActiveXObject )
		{
			strText = xmlNode.text;
		}
		else
		{
			strText = xmlNode.textContent;
		}
	}
	return strText;
}

