function IsIE()
{
	return (window.ActiveXObject) ? true : false;
}



function SupportsXML()
{
	try
	{
		var bSupportsXML = IsIE();
		
		if(!bSupportsXML)
		{
			if(window.XMLDocument)
			{
				bSupportsXML = true;
			}
		}
		
		return bSupportsXML;
	}	
	catch(e){
		return false;
	}
}


function GetStringFromXML(oXMLObject)
{
	var sString = "";
	if(IsIE())
	{
		sString = oXMLObject.xml;
	}
	else
	{
		var oXMLSerializer = new XMLSerializer();
		sString = oXMLSerializer.serializeToString(oXMLObject);
	}
	
	return sString;
}


function CreateXMLHTTPObject()
{
	var oXMLHTTPObject;

	if(IsIE())
	{
		oXMLHTTPObject = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else
	{
		oXMLHTTPObject = new XMLHttpRequest();
	}
	
	return oXMLHTTPObject;
}


function CreateXMLDOMObject(sSourceXMLData)
{
	var oXMLDOMObject;

	if(IsIE())
	{
		oXMLDOMObject = new ActiveXObject("Microsoft.XMLDOM");
		oXMLDOMObject.async = false;
		if(sSourceXMLData != "")
		{
			oXMLDOMObject.loadXML(sSourceXMLData);
		}
	}
	else
	{
		var oDOMParser = new DOMParser();
		
		oXMLDOMObject = oDOMParser.parseFromString(sSourceXMLData, "text/xml");
	}
	
	return oXMLDOMObject;
}


function CreateXMLDOMObjectFromHTTP(oHTTPRequest)
{
	var oXMLDOMObject;

	if(IsIE())
	{
		oXMLDOMObject = new ActiveXObject("Microsoft.XMLDOM");
		oXMLDOMObject.async = false;
		if(oHTTPRequest.responseXML.documentElement)
		{
			oXMLDOMObject.loadXML(oHTTPRequest.responseXML.xml);
		}
	}
	else
	{
		var oDOMParser = new DOMParser();
		
		oXMLDOMObject = oDOMParser.parseFromString(oHTTPRequest.responseText, "text/xml");
	}
	
	return oXMLDOMObject;
}

function PasteTransformedXML(oXML, oXSLObject, sElementId)
{
	var oTarget = document.getElementById(sElementId);

	if(IsIE())
	{
		oTarget.innerHTML = oXML.transformNode(oXSLObject.documentElement);
	}
	else
	{
		var oXSLTProcessor = new XSLTProcessor();
		oXSLTProcessor.importStylesheet(oXSLObject);

		var objXMLRef = document.implementation.createDocument("", "", null);
		objXMLRef.appendChild(oXML.documentElement.cloneNode(true));
		
		var oHTMLContent = oXSLTProcessor.transformToFragment(objXMLRef, document);
		oTarget.innerHTML = "";
		oTarget.appendChild(oHTMLContent);
	}
}


function GetAttributeMultiLine(oXMLNode, sAttributeName)
{
	var sAttributeValue = oXMLNode.getAttribute(sAttributeName);

	if(sAttributeValue != null)
	{
		if(sAttributeValue.indexOf("\n") == -1)
		{
			sAttributeValue = sAttributeValue.replace(/\r/g, "\n")
		}
	}
	
	return sAttributeValue;
}


