option explicit
class ErrorHandling

'************************************
' Check Xml
'************************************
Public sub checkXML(sXml)
	dim tmpDom
	
	set tmpDom = CreateObject("Msxml.DOMDocument")
	tmpDom.async = false
	tmpDom.loadxml sXml
	
	if tmpDom.xml="" then 
		raiseError(tmpDom)
	elseif ucase(tmpDom.documentelement.nodename)="ERROR" then
		raiseError(tmpDom)
	end if


'	if instr (1,sXml,"ERROR") = 0  then
'		checkXML = ""
'		exit function
'	end if	
'	myErrStr = ""
'	set myXml = CreateObject("Msxml.DOMDocument")
'	myXml.async = false
'	myXml.loadxml sXml
'	strXPath="//ErrNumber"
'	set myNode = myXml.selectsingleNode (strXPath)
'	if not (myNode is nothing) then
'		myErrStr = myErrStr & " ErrNumber=" & myNode.text & vbNewLine 
'	end if
'	strXPath="//ErrDescription"
'	set myNode = myXml.selectsingleNode (strXPath)
'	if not (myNode is nothing) then
'		myErrStr = myErrStr & " ErrDescription=" & myNode.text & vbNewLine 
'	end if
'	strXPath="//ErrSource"
'	set myNode = myXml.selectsingleNode (strXPath)
'	if not (myNode is nothing) then
'		myErrStr = myErrStr & " ErrSource=" & myNode.text 
'	end if
'	checkXML = myErrStr	
end sub

'************************************
' Raise Error object
'************************************
private sub raiseError (errDom)
	on error resume next
	dim num,source,des
	
	if errDom.xml = "" then
		if errDom.parseError.errorCode <> 0 then
			num = Clng(errDom.parseError.errorCode)
			des = Cstr(errDom.parseError.reason)
			source = Cstr(errDom.parseError.url)
		end if
	else
		num = errDom.documentElement.childnodes(0).attributes.getNamedItem("Number").text
		des = errDom.documentElement.childnodes(0).attributes.getNamedItem("Description").text
		source = errDom.documentElement.childnodes(0).attributes.getNamedItem("Source").text
	end if
	
	Err.Raise num,source,des
	
end sub

'************************************
' Show Error Message
'************************************
Public function ShowErr(err, title)
dim myErrStr

	myErrStr = ""
	myErrStr = myErrStr & " ErrNumber=" & err.number & vbNewLine 
	myErrStr = myErrStr & " ErrDescription=" & err.description & vbNewLine 
	myErrStr = myErrStr & " ErrSource=" & err.source
	msgbox myErrStr, vbMsgBoxRight + vbMsgBoxRtlReading , title
end function
end class
