function MyXml(){
	if( document.implementation&&document.implementation.createDocument){
		this.xmlDom= document.implementation.createDocument("","",null);
	}else if (window.ActiveXObject){
		this.xmlDom=new ActiveXObject("Microsoft.XMLDOM");
		this.xmlDom.setProperty("SelectionLanguage","XPath")
 	}else{
		alert('Your browser can\'t handle this script');
		return;
	}
	this.xmlDom.async=false;
}
MyXml.prototype.alertError=
function alertError(){
	alert(  "errorCode:"+this.xmlDom.parseError.errorCode+
		"\nurl:"+this.xmlDom.parseError.url+
		"\nline:"+this.xmlDom.parseError.line+
		"\nlinepos:"+this.xmlDom.parseError.linepos+
		"\nerrorString:"+this.xmlDom.parseError.errorString+
		"\nreason:"+this.xmlDom.parseError.reason+
		"\nsrcText:"+this.xmlDom.parseError.srcText
	)
}
MyXml.prototype.getFieldData=
function getFieldData(recNode,fld){
	var node=this.selectNodes(fld,recNode)[0]
	return this.getNodeData(node)
}
MyXml.prototype.getNodeData=
function getNodeData(node){
	if(node&&node.firstChild)return node.firstChild.data
	return ""
}
MyXml.prototype.loadFile=
function loadFile(filename,ns){
	this.ns=ns
	this.xmlDom.load(filename)
	if(bd.browser=="IE"){
		if(this.xmlDom.parseError!=0)this.alertError()
		if(this.ns)
			this.setPropertySelectionNamespaces(this.ns)
	}

	this.myChildNodes=this.xmlDom.documentElement.childNodes
}
MyXml.prototype.loadStr=
function loadStr(xmlString,ns){
	this.ns=ns
	switch(bd.browser){
	case "IE":
		this.xmlDom.loadXML(xmlString)
		if(this.ns)
			this.setPropertySelectionNamespaces(this.ns)
		break
	default:
		this.xmlDom=(new DOMParser()).parseFromString(xmlString,"text/xml");
	}
	switch(bd.browser){
	case "IE":
		if(this.xmlDom.parseError!=0){
			this.alertError()
		}
		break
	default:	
		if(this.xmlDom.parseError)this.alertError()
	}
	this.myChildNodes=this.xmlDom.documentElement.childNodes
}
MyXml.prototype.evaluateXPath=
function evaluateXPath(aNode,aExpr) {
	var xpe=new XPathEvaluator();
	var nsResolver=xpe.createNSResolver(aNode.ownerDocument.documentElement);
	var result=xpe.evaluate(aExpr,aNode,nsResolver,0,null);
	var found=[];
	var res;
	while(res=result.iterateNext())
		found.push(res);
	return found;
}
MyXml.prototype.selectNodes=
function selectNodes(xpathstr,contextNode) {
	if(!contextNode)contextNode=this.xmlDom.documentElement
	switch(bd.browser){
	case "Netscape":	
		return this.evaluateXPath(contextNode,xpathstr)
	default:
		var nodes=contextNode.selectNodes(xpathstr)
		return nodes
	}
}
MyXml.prototype.setPropertySelectionNamespaces=
function setPropertySelectionNamespaces(){
	this.xmlDom.setProperty("SelectionNamespaces", "xmlns:"+this.ns+"='http://www.wroque.com/namespace/"+this.ns+"'")
}
