
var isIE = (navigator.userAgent.indexOf("MSIE") > -1)



//************* 		cross browser dhtml 		******************************

function XBrowser_FireEvent (objToFireEvent, eventName, eventType)
{
	if (navigator.userAgent.indexOf("MSIE") > -1)
	{
		//** IE
		eval ("objToFireEvent." + eventName + "()")
	}
	else
	{
		//** mozilla eventType is either: "UIEvents", "MouseEvents", "MutationEvents", or "HTMLEvents"
		var ev = document.createEvent(eventType)
		ev.initEvent (eventName, true, true)
		objToFireEvent.dispatchEvent (ev)
	}
}




//************* 		cross browser xml 		******************************


function XML_LoadDoc (txt)
{
	try
	{
		if (isIE)
		{
			var xmlDoc = new ActiveXObject ("Microsoft.XMLDOM")
			xmlDoc.loadXML (txt)
		}
		else
		{
			var parser = new DOMParser ()
			var xmlDoc = parser.parseFromString (txt, "text/xml")
		}
	}
	catch (e)
	{
		alert ("XML_LoadDoc error: " + e)
		return null
	}
	return xmlDoc
}

function XML_GetNode (doc, query)
{
	try
	{
		if (isIE)
			var node = doc.selectSingleNode (query)
		else
		{
			var nodes = doc.evaluate (query, doc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null )
			node = nodes.snapshotItem(0)
		}
	}
	catch (e)
	{
		alert ("XML_GetNode error: " + e)
		return null
	}
	return node
}

function XML_GetNodes (doc, query)
{
	try
	{
		if (isIE)
			var nodes = doc.selectNodes (query)
		else
			var nodes = doc.evaluate (query, doc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null )
	}
	catch (e)
	{
		alert ("XML_GetNodes error: " + e)
		return null
	}
	return nodes
}

function XML_NodesLength (nodes)
{
	try
	{
		if (isIE)
			return nodes.length
		else
			return nodes.snapshotLength
	}
	catch (e)
	{
		alert ("XML_NodesLength error: " + e)
		return null
	}
}

function XML_GetItem (nodes, index)
{
	try
	{
		if (isIE)
			var node = nodes.item(index)
		else
		{
			node = nodes.snapshotItem(index)
		}
	}
	catch (e)
	{
		alert ("XML_GetItem error: " + e)
		return null
	}
	return node
}

function XML_GetNodeText (node)
{
	try
	{
		if (isIE)
			return node.text
		else{
			if( node.textContent == undefined )
				return node.childNodes[0].textContent;
			return node.textContent;
		}
	}
	catch (e)
	{
		alert ("XML_GetNodeText error: " + e)
	}
	return ""
}

function XML_GetNodeXML (node)
{
	try
	{
		if (isIE)
			return node.xml
		else
		{
			var serializer = new XMLSerializer();
			var xml = serializer.serializeToString(node);
			return xml
		}
	}
	catch (e)
	{
		alert ("XML_GetNodeXML error: " + e)
	}
	return ""
}

function XML_StripTag (str, tag)
{
	return str.substr (tag.length+2, str.length-(2*tag.length+5))
}

