sub alertErr(TControlID, TControlType, TFunctionName, TErrorDescription)
	dim str
	str = "_______________________________________________________________________" & vbCrLf & vbCrLf & "An error has occured"
	if len(TFunctionName) > 0 then
		str = str & " in function '" & TFunctionName & "'"
	end if
	if len(TControlID) > 0 then
		if TControlID = "Form" then
			str = str & " for 'Form'"
		else 
			str = str & " for control '" & TControlID & "'"
			if len(TControlType) > 0 then
				str = str & " of type '" & TControlType & "'"
			end if
		end if
	end if
	str = str & "." & vbCrLf & vbCrLf
	if len(TErrorDescription) > 0 then
		str = str & TErrorDescription
	else
		str = str & "No Error Specified"
	end if
	str = str & vbCrLf & "_______________________________________________________________________"

	dim MessageData, srcElement, eventType

	on error resume next
	
	if (DevMode) then
		srcElement = ""
		if not isNull(window.event) then
			if not isNull(window.event.srcElement) then
				srcElement = window.event.srcElement.id & "."
				if err.Number <> 0 then
					srcElement = "Form."
				end if
			end if
			if not isNull(window.event.type) then
				eventType = window.event.type
			end if
		end if
		
		if (TControlID <> "Form") then
			MessageData = document.all(TControlID).HTMLControlID & "|" & TFunctionName
		else
			MessageData = TControlID & "|" & TFunctionName
		end if
		//msgbox MessageData(0)
		//msgbox MessageData(1)
		debugWrite srcElement & eventType & "->" & TControlID & " : " & TFunctionName & " - " & TErrorDescription, cstr(MessageData)
	else
		if (xmlRequestObject_GetQueryStringField("SYS__Debug") = "1") then
			srcElement = ""
			if not isNull(window.event) then
				if not isNull(window.event.srcElement) then
					srcElement = window.event.srcElement.id & "."
					if err.Number <> 0 then
						srcElement = "Form."
					end if
				end if
				if not isNull(window.event.type) then
					eventType = window.event.type
				end if
			end if
		
			if (TControlID <> "Form") then
				MessageData = document.all(TControlID).HTMLControlID & "|" & TFunctionName
			else
				MessageData = TControlID & "|" & TFunctionName
			end if
			//msgbox MessageData(0)
			//msgbox MessageData(1)
			debugWrite srcElement & eventType & "->" & TControlID & " : " & TFunctionName & " - " & TErrorDescription, cstr(MessageData)
		else
			alert(str)
		end if
	end if
end sub

function VBDateDiff(Interval,Date1,Date2)
	dim CurrentDate,CompareDate
	CurrentDate = Cdate(Date1)
	CompareDate = Cdate(Date2)
	if (not IsDate(CurrentDate)) OR (not IsDate(CompareDate)) then
		VBDateDiff = ""
		exit function
	end if
	VBDateDiff = DateDiff(Interval,CurrentDate,CompareDate)
end function

function Encode(Str1)
	dim str
	str = str1
	str = Replace(str," ","__space__")
	str = Replace(str,"&","__amp__")
	str = Replace(str,",","__comma__")
	str = Replace(str,".","__fullstop__")
	str = Replace(str,"/","__frontslash__")
	str = Replace(str,";","__semicolon__")
	str = Replace(str,"'","__qoute__")
	str = Replace(str,"[","__lsquarebracket__")
	str = Replace(str,"]","__rsquarebracket__")
	str = Replace(str,"\","__backslash__")
	str = Replace(str,"-","__minus__")
	str = Replace(str,"=","__equal__")
	str = Replace(str,"<","__lt__")
	str = Replace(str,">","__gt__")
	str = Replace(str,"?","__questionmark__")
	str = Replace(str,":","__colon__")
	str = Replace(str,"""","__doublequote__")
	str = Replace(str,"{","__lcurlybracket__")
	str = Replace(str,"}","__rcurlybracket__")
	str = Replace(str,"|","__pipe__")
	str = Replace(str,"+","__plus__")
	str = Replace(str,"`","__accent__")
	str = Replace(str,"~","__tilder__")
	str = Replace(str,"!","__exclamation__")
	str = Replace(str,"@","__at__")
	str = Replace(str,"#","__number__")
	str = Replace(str,"$","__dolar__")
	str = Replace(str,"%","__percent__")
	str = Replace(str,"^","__power__")
	str = Replace(str,"*","__multiply__")
	str = Replace(str,"(","__lbracket__")
	str = Replace(str,")","__rbracket__")
	str = Replace(str,vbCrLf,"__returnlinefeed__")
	Encode = str
end function

function StripChars(Str1)
	dim str
	str = str1
	str = Replace(str," ","")
	str = Replace(str,"&","")
	str = Replace(str,",","")
	str = Replace(str,".","")
	str = Replace(str,"/","")
	str = Replace(str,";","")
	str = Replace(str,"'","")
	str = Replace(str,"[","")
	str = Replace(str,"]","")
	str = Replace(str,"\","")
	str = Replace(str,"-","")
	str = Replace(str,"=","")
	str = Replace(str,"<","")
	str = Replace(str,">","")
	str = Replace(str,"?","")
	str = Replace(str,":","")
	str = Replace(str,"""","")
	str = Replace(str,"{","")
	str = Replace(str,"}","")
	str = Replace(str,"|","")
	str = Replace(str,"+","")
	str = Replace(str,"`","")
	str = Replace(str,"~","")
	str = Replace(str,"!","")
	str = Replace(str,"@","")
	str = Replace(str,"#","")
	str = Replace(str,"$","")
	str = Replace(str,"%","")
	str = Replace(str,"^","")
	str = Replace(str,"*","")
	str = Replace(str,"(","")
	str = Replace(str,")","")
	str = Replace(str,vbCrLf,"")
	StripChars = str
end function
	
function Decode(Str1)
	dim str
	str = str1
	str = Replace(str,"__space__"," ")
	str = Replace(str,"__amp__","&")
	str = Replace(str,"__comma__",",")
	str = Replace(str,"__fullstop__",".")
	str = Replace(str,"__frontslash__","/")
	str = Replace(str,"__semicolon__",";")
	str = Replace(str,"__qoute__","'")
	str = Replace(str,"__lsquarebracket__","[")
	str = Replace(str,"__rsquarebracket__","]")
	str = Replace(str,"__backslash__","\")
	str = Replace(str,"__minus__","-")
	str = Replace(str,"__equal__","=")
	str = Replace(str,"__lt__","<")
	str = Replace(str,"__gt__",">")
	str = Replace(str,"__questionmark__","?")
	str = Replace(str,"__colon__",":")
	str = Replace(str,"__doublequote__","""")
	str = Replace(str,"__lcurlybracket__","{")
	str = Replace(str,"__rcurlybracket__","}")
	str = Replace(str,"__pipe__","|")
	str = Replace(str,"__plus__","+")
	str = Replace(str,"__accent__","`")
	str = Replace(str,"__tilder__","~")
	str = Replace(str,"__exclamation__","!")
	str = Replace(str,"__at__","@")
	str = Replace(str,"__number__","#")
	str = Replace(str,"__dolar__","$")
	str = Replace(str,"__percent__","%")
	str = Replace(str,"__power__","^")
	str = Replace(str,"__multiply__","*")
	str = Replace(str,"__lbracket__","(")
	str = Replace(str,"__rbracket__",")")
	str = Replace(str,"__returnlinefeed__",vbCrLf)
	Decode = str
end function

function VBLeft(str,length1)
	VBLeft = Left(str,length1)
end function

function VBRight(str,length1)
	VBRight = Right(str,length1)
end function

function VBReplace(str, findstr, replacestr)
	if lcase(findstr) = "vbcrlf" then 
		VBReplace = replace(str, vbCrLf, replacestr, 1) 
	else 
		VBReplace = replace(str, findstr, replacestr, 1)
	end if
end function  

function VBInstring(str, findstr)
	VBInstring = instr(str, findstr)
end function

function VBInstrRev(str, findstr)
	VBInstrRev = InstrRev(str, findstr)
end function

function VBTrim(str)
	VBTrim = trim(str)
end function

function EscapeHTML(str)
	dim ReturnValue
	ReturnValue = str
	ReturnValue = replace(ReturnValue, """", "&quot;", 1)
	ReturnValue = replace(ReturnValue, "<", "&lt;", 1)
	ReturnValue = replace(ReturnValue, "&", "&amp;", 1)
	ReturnValue = replace(ReturnValue, ">", "&gt;", 1)
	ReturnValue = replace(ReturnValue, "'", "&apos;", 1)
	EscapeHTML = ReturnValue
end function

function UnEscapeHTML(str)
	dim ReturnValue
	ReturnValue = str
	ReturnValue = replace(ReturnValue, "&quot;","""", 1)
	ReturnValue = replace(ReturnValue, "&amp;quot;","""", 1)
	ReturnValue = replace(ReturnValue, "&lt;","<", 1)
	ReturnValue = replace(ReturnValue, "&amp;lt;","<", 1)
	ReturnValue = replace(ReturnValue, "&amp;","&", 1)
	ReturnValue = replace(ReturnValue, "&amp;amp;","&", 1)
	ReturnValue = replace(ReturnValue, "&gt;",">", 1)
	ReturnValue = replace(ReturnValue, "&amp;gt;",">", 1)
	ReturnValue = replace(ReturnValue, "&apos;","'", 1)
	ReturnValue = replace(ReturnValue, "&amp;apos;","'", 1)

	UnEscapeHTML = ReturnValue
end function

function EscapeHTML2(str)
	dim ReturnValue
	ReturnValue = str
	ReturnValue = replace(ReturnValue, """", "&#34;", 1)
	ReturnValue = replace(ReturnValue, "<", "&#60;", 1)
	'ReturnValue = replace(ReturnValue, "&", "&#38;", 1)
	ReturnValue = replace(ReturnValue, ">", "&#62;", 1)
	ReturnValue = replace(ReturnValue, "'", "&#39;", 1)
	EscapeHTML2 = ReturnValue
end function

function xconfirm(str)
		if msgbox(str,vbYesNo + vbQuestion,"Confirm")=vbYes then
			xconfirm = true
		else 
			xconfirm = false
		end if	 
end function

function VBMsgBox(prompt,buttons,title)
		VBMsgBox =  MsgBox(prompt,buttons,title)
end function

function VBChr(iCode)
		VBChr =  Chr(iCode)
end function
