
Function KeepAlive()
    Dim HTTP2
    Set HTTP2 = New HTTPExClass
    HTTP2.Init PROCESSORURL
    HTTP2.WaitForObject = False
    HTTP2.Clear
    window.status = "checking session ... "
    HTTP2.CallProcessor("keepalive")
    If Not CBool(HTTP2.ProcessorResponse("IsAlive")) Then
        Top.Location.Reload
    End if
    window.status = "checking session ... ok"
    
End Function

Function DefaultConsole()
    If Top.Frames.Length = 0 Then
        If IsEmpty(Window.Opener) then
            Set DefaultConsole = Window.dialogArguments.Item("Top").Frames.Item("top").Console
        else
            Set DefaultConsole = Window.Opener.Parent.Frames.Item("top").Console
        end if
    Else
        Set DefaultConsole = Top.Frames.Item("top").Console    
    End if
End Function


Function OpenSuperviserWindow()
	Window.Open "superviser.asp","superviser","status=no,help=no,scroll=no,width=415,height=590"
End Function

Function OpenSDIWindow(link, width, height)
	Window.Open link,"wnd_" & RandomString(8),"status=no,help=no,resizable=1,scrollbars=1,width=" & width & ",height=" & height
End Function

Function OpenSDIDialog(link, width, height)
	Window.Open link,"wnd_" & RandomString(8),"status=no,help=no,resizable=no,scrollbars=no,width=" & width & ",height=" & height
End Function


Function FormatDateTimeEx(sDate,splitter)
	Dim ND
	Dim NDa
	ND = sDate
	If ND = "" Then ND = CStr(Date())
	NDa = Split(ND, ".")
	ND = NDa(1) & splitter & NDa(0) & splitter & NDa(2)
	FormatDateTimeEx = ND
End function

Function IsGUID(strGUID)
    dim regEx, regEx1
    
    If IsNull(strGUID) Then
        IsGUID = False
        Exit Function
    End if
    
    strGUID = CStr(strGUID)
    
    set regEx = New RegExp
    regEx.Pattern = Replace("{########-####-####-####-############}", "#", "[0-9,A-F,a-f]")

    set regEx1 = New RegExp
    regEx1.Pattern = Replace("########-####-####-####-############", "#", "[0-9,A-F,a-f]")
    
    IsGUID = regEx.Test(strGUID) Or regEx1.Test(strGUID)
End Function



Function FindElementByTagName(ByVal Element, ParentTag)
	
	While Element.tagName <> ParentTag
		Set Element = Element.parentElement
	WEnd
	Set FindElementByTagName = Element
	
End Function

Function GetAbsoluteTop(ByVal Element, RelativeTo)
	Dim itop
	itop = 0
	While Element.tagName <> RelativeTo
		Select Case LCAse(Element.tagName)
			Case "tbody", "form", "tr"
			Case Else
				itop = itop + Element.offsetTop
		End Select

		Set Element = Element.parentElement
	WEnd
	GetAbsoluteTop = itop
End Function

Function GetAbsoluteLeft(ByVal Element, RelativeTo)
	Dim ileft	
	ileft = 0
	While Element.tagName <> RelativeTo
		Select Case Element.tagName
			Case "tbody", "form" , "tr"
			Case Else
				ileft = ileft + Element.offsetLeft
		End Select
		Set Element = Element.parentElement
	WEnd
	GetAbsoluteLeft = ileft
End Function

Function GetAbsoluteTopEx(ByVal Element, RelativeTo)
	Dim itop
	itop = 0
	While Not Element is RelativeTo And Not Element Is Nothing
		Select Case LCAse(Element.tagName)
			Case "tbody", "form" , "tr"
			Case Else
				itop = itop + Element.offsetTop
		End Select

		Set Element = Element.offsetParent
	WEnd
	GetAbsoluteTopEx = itop
End Function

Function GetAbsoluteLeftEx(ByVal Element, RelativeTo)
	Dim ileft	
	ileft = 0
	While Not Element is RelativeTo And Not Element Is Nothing
		Select Case Lcase(Element.tagName)
			Case "tbody", "form", "tr"
			Case Else
				ileft = ileft + Element.offsetLeft
		End Select
		Set Element = Element.offsetParent
	WEnd
	GetAbsoluteLeftEx = ileft
End Function

Function GetAbsoluteScrollLeftEx(ByVal Element, RelativeTo)
	Dim ileft	
	ileft = 0
	While Not Element is RelativeTo
		Select Case Element.tagName
			Case "tbody", "form", "tr"
			Case Else
				ileft = ileft + Element.scrollLeft
		End Select
		Set Element = Element.parentElement
	WEnd
	GetAbsoluteScrollLeftEx = ileft
End Function

Function GetAbsoluteScrollTopEx(ByVal Element, RelativeTo)
	Dim itop
	itop = 0
	While Not Element is RelativeTo
		Select Case LCAse(Element.tagName)
			Case "tbody", "form", "tr"
			Case Else
				itop = itop + Element.scrollTop
		End Select

		Set Element = Element.parentElement
	WEnd
	GetAbsoluteScrollTopEx = itop
End Function


Function ShowDialog(Url, Params, Width, Height)
	ShowDialog = Window.ShowModalDialog(Url, Params, "status:no; help:no; scroll:no; dialogWidth:" & Width & "px; dialogHeight:" & Height & "px;")
End Function

Public Function Random(Min, Max)
	Dim Tmp
	Randomize Timer
	Tmp = (Rnd(1) * (Max - Min)) + Min
	Random = Tmp
End Function

Function ListDialog(Prompt, TypeId , Id)
	Dim d
	Set d = CreateObject("Scripting.Dictionary")
	d.Add "Prompt", Prompt
	d.Add "Title", Title
	d.Add "DefaultValue", DefaultValue
	ListDialog = SdiDev.Modal("List.html?id=" & Id & "&type=" & TypeId, d, 375, 300)
End Function

Function InputEx(Prompt, Title, DefaultValue)
	Dim dlg
	Dim d
	Set d = CreateObject("Scripting.Dictionary")
	d.Add "Prompt", Prompt
	d.Add "Title", Title
	d.Add "DefaultValue", DefaultValue
	InputEx = SdiDev.Modal("/Admin/BackOffice/Input.html", d, 325, 105)
End Function


'Function SetCookie(name, value, timeinterval)
'    Dim dt
'    dt = Now
'    dt = DateAdd ("d",timeinterval,dt)
'    
'    alert name & "=" & value & "; expires=" & FormatDateTime(dt, 0) & ";"
'    Document.Cookie = name & "=" & value & "; expires=" & FormatDateTime(dt, 0) & ";"
'    
'End Function

Function GetCookie(name)
    Dim col
    Set col = New CollectionSEClass
    col.SplitEx Document.Cookie, "=", ";"
    GetCookie = col(name)
    Set col = Nothing
End Function

Function ReplaceEx(s, spl, repl)
    Dim i
    If Not IsArray(spl) Then
        ReplaceEx = Replace (s, spl, repl)
        Exit Function
    end if
    
    ReplaceEx = s
    For i=LBound(spl) To UBound(spl)
        ReplaceEx = Replace (ReplaceEx, spl(i), repl)
    Next
    
End Function

Function ClearGUID(guid)
	Dim tmp
	tmp = CStr(guid)
	tmp = ReplaceEx(tmp, Array("-","{","}"), "")
	ClearGUID = tmp
End Function

Function SplitEx (str, splitters)
    		
    Dim arrRet()
    ReDim arrRet(Len(str))
    Dim prev, last, count

    prev = 1
    last = Len(str)
    count = 0
    For i=1 to Len(str)
	    char = Mid(str,i,1)
	    if InStr(splitters, char) > 0 Then
		    last = i
		    arrRet(count) = Mid(str,prev,last - prev)
		    count = count + 1
		    prev = last + 1
	    End if
    Next
    if Len(str) - prev > 0 Then
	    arrRet(count) = Mid(str,prev,Len(str) - prev + 1)
    end if

    Dim arrRet1()
    ReDim arrRet1(count)
    for i=0 to count
	    arrRet1(i) = arrRet(i)
    next		
    		
    SplitEx = arrRet1

End Function

Function StripHTML(strHTML, intWorkFlow)
  Dim regEx, strTagLess
  strTagless = strHTML
  Set regEx = New RegExp 
  regEx.IgnoreCase = True
  regEx.Global = True
  If intWorkFlow <> 1 Then
    regEx.Pattern = "<[^>]*>"
    strTagLess = regEx.Replace(Cstr(strTagLess), "")
  End if
  If intWorkFlow > 0 And intWorkFlow < 3 Then
    regEx.Pattern = "[<]"
    strTagLess = regEx.Replace(strTagLess, "<")
    regEx.Pattern = "[>]"
    strTagLess = regEx.Replace(strTagLess, ">")
  End if
  Set regEx = Nothing
  StripHTML = strTagLess
end function

Public Sub SetStyle(obj, style)
    Dim A, j, i
    Dim B, k
    Dim name, value
    A = Split(style, ";")
    For j = 0 To UBound(A)
        If Trim(A(j)) <> "" Then
            i = InStr(A(j), ":")
            name = Trim(Left(A(j), i - 1))
            value = Trim(Right(A(j), Len(A(j)) - i))
            name = Replace(name, "-", "")
            Execute "obj.style." & name & " = """ & value & """"
        End If
    Next
End Sub

Function CreateStylesCollection()
    Dim StylesCollection
    Set StylesCollection = CreateObject("Scripting.Dictionary")
    StylesCollection.Add "accelerator", "accelerator"
    StylesCollection.Add "background", "background"
    StylesCollection.Add "background-attachment", "backgroundAttachment "
    StylesCollection.Add "background-color", "backgroundColor"
    StylesCollection.Add "background-image", "backgroundImage" 
    StylesCollection.Add "background-position", "backgroundPosition" 
    StylesCollection.Add "background-position-x", "backgroundPositionX" 
    StylesCollection.Add "background-position-y", "backgroundPositionY" 
    StylesCollection.Add "background-repeat", "backgroundRepeat" 
    StylesCollection.Add "behavior", "behavior" 
    StylesCollection.Add "border", "border" 
    StylesCollection.Add "border-bottom", "borderBottom"
    StylesCollection.Add "border-bottom-color", "borderBottomColor" 
    StylesCollection.Add "border-bottom-style", "borderBottomStyle" 
    StylesCollection.Add "border-bottom-width", "borderBottomWidth" 
    StylesCollection.Add "border-collapse", "borderCollapse" 
    StylesCollection.Add "border-color", "borderColor" 
    StylesCollection.Add "border-left", "borderLeft" 
    StylesCollection.Add "border-left-color", "borderLeftColor" 
    StylesCollection.Add "border-left-style", "borderLeftStyle" 
    StylesCollection.Add "border-left-width", "borderLeftWidth" 
    StylesCollection.Add "border-right", "borderRight" 
    StylesCollection.Add "border-right-color", "borderRightColor" 
    StylesCollection.Add "border-right-style", "borderRightStyle" 
    StylesCollection.Add "border-right-width", "borderRightWidth" 
    StylesCollection.Add "border-style", "borderStyle" 
    StylesCollection.Add "border-top", "borderTop" 
    StylesCollection.Add "border-top-color", "borderTopColor" 
    StylesCollection.Add "border-top-style", "borderTopStyle" 
    StylesCollection.Add "border-top-width", "borderTopWidth" 
    StylesCollection.Add "border-width", "borderWidth" 
    StylesCollection.Add "bottom", "bottom" 
    StylesCollection.Add "clear", "clear" 
    StylesCollection.Add "clip", "clip" 
    StylesCollection.Add "color", "color" 
    StylesCollection.Add "cursor", "cursor" 
    StylesCollection.Add "direction", "direction" 
    StylesCollection.Add "display", "display" 
    StylesCollection.Add "font", "font" 
    StylesCollection.Add "font-family", "fontFamily" 
    StylesCollection.Add "font-size", "fontSize" 
    StylesCollection.Add "font-style", "fontStyle" 
    StylesCollection.Add "font-variant", "fontVariant" 
    StylesCollection.Add "font-weight", "fontWeight" 
    StylesCollection.Add "height", "height" 
    StylesCollection.Add "ime-mode", "imeMode" 
    StylesCollection.Add "layout-flow", "layoutFlow" 
    StylesCollection.Add "layout-grid", "layoutGrid" 
    StylesCollection.Add "layout-grid-char", "layoutGridChar" 
    StylesCollection.Add "layout-grid-line", "layoutGridLine" 
    StylesCollection.Add "layout-grid-mode", "layoutGridMode" 
    StylesCollection.Add "layout-grid-type", "layoutGridType" 
    StylesCollection.Add "left", "left" 
    StylesCollection.Add "letter-spacing", "letterSpacing" 
    StylesCollection.Add "line-break", "lineBreak" 
    StylesCollection.Add "line-height", "lineHeight" 
    StylesCollection.Add "list-style", "listStyle" 
    StylesCollection.Add "list-style-image", "listStyleImage" 
    StylesCollection.Add "list-style-position", "listStylePosition" 
    StylesCollection.Add "list-style-type", "listStyleType" 
    StylesCollection.Add "margin", "margin" 
    StylesCollection.Add "margin-bottom", "marginBottom" 
    StylesCollection.Add "margin-left", "marginLeft"
    StylesCollection.Add "margin-right", "marginRight"
    StylesCollection.Add "margin-top", "marginTop" 
    StylesCollection.Add "min-height", "minHeight" 
    StylesCollection.Add "overflow", "overflow" 
    StylesCollection.Add "overflow-x", "overflowX" 
    StylesCollection.Add "overflow-y", "overflowY" 
    StylesCollection.Add "padding", "padding" 
    StylesCollection.Add "padding-bottom", "paddingBottom" 
    StylesCollection.Add "padding-left", "paddingLeft"
    StylesCollection.Add "padding-right", "paddingRight" 
    StylesCollection.Add "padding-top", "paddingTop" 
    StylesCollection.Add "page-break-after", "pageBreakAfter" 
    StylesCollection.Add "page-break-before", "pageBreakBefore" 
    StylesCollection.Add "position", "position"
    StylesCollection.Add "right", "right" 
    StylesCollection.Add "ruby-align", "rubyAlign" 
    StylesCollection.Add "ruby-overhang", "rubyOverhang" 
    StylesCollection.Add "ruby-position", "rubyPosition" 
    StylesCollection.Add "scrollbar-3dlight-color", "scrollbar3dLightColor"
    StylesCollection.Add "scrollbar-arrow-color", "scrollbarArrowColor" 
    StylesCollection.Add "scrollbar-base-color", "scrollbarBaseColor" 
    StylesCollection.Add "scrollbar-darkshadow-color", "scrollbarDarkShadowColor" 
    StylesCollection.Add "scrollbar-face-color", "scrollbarFaceColor" 
    StylesCollection.Add "scrollbar-highlight-color", "scrollbarHighlightColor" 
    StylesCollection.Add "scrollbar-shadow-color", "scrollbarShadowColor" 
    StylesCollection.Add "scrollbar-track-color", "scrollbarTrackColor" 
    StylesCollection.Add "float", "styleFloat" 
    StylesCollection.Add "table-layout", "tableLayout" 
    StylesCollection.Add "text-align", "textAlign" 
    StylesCollection.Add "text-align-last", "textAlignLast" 
    StylesCollection.Add "text-autospace", "textAutospace"
    StylesCollection.Add "text-decoration", "textDecoration" 
    StylesCollection.Add "text-indent", "textIndent"
    StylesCollection.Add "text-justify", "textJustify" 
    StylesCollection.Add "text-kashida-space", "textKashidaSpace" 
    StylesCollection.Add "text-overflow", "textOverflow"
    StylesCollection.Add "text-transform", "textTransform" 
    StylesCollection.Add "text-underline-position", "textUnderlinePosition" 
    StylesCollection.Add "top", "top" 
    StylesCollection.Add "unicode-bidi", "unicodeBidi" 
    StylesCollection.Add "vertical-align", "verticalAlign" 
    StylesCollection.Add "visibility", "visibility"
    StylesCollection.Add "white-space", "whiteSpace" 
    StylesCollection.Add "width", "width"
    StylesCollection.Add "word-break", "wordBreak" 
    StylesCollection.Add "word-spacing", "wordSpacing" 
    StylesCollection.Add "word-wrap", "wordWrap" 
    StylesCollection.Add "writing-mode", "writingMode"
    StylesCollection.Add "z-index", "zIndex" 
    StylesCollection.Add "zoom", "zoom"
    Set CreateStylesCollection = StylesCollection
End Function


Function ClearGUID(guid)	
	ClearGUID = Replace(Replace(Replace(guid, "-", ""), "{", ""), "}", "")
	ClearGUID = UCase(ClearGUID)
End Function

Function MakeGUID(guidStr)	
    if Len(guidStr) <> 32 then
        MakeGUID = guidStr
        exit function
    end if
    sPart1 = Mid(guidStr, 1, 8)
    sPart2 = Mid(guidStr, 9, 4)
    sPart3 = Mid(guidStr, 13, 4)
    sPart4 = Mid(guidStr, 17, 4)
    sPart5 = Mid(guidStr, 21)
    MakeGUID = "{" & sPart1 & "-" & sPart2 & "-" & sPart3 & "-" & sPart4 & "-" & sPart5 & "}"
End Function

Function HideChars([string], chars)
    Dim i
    HideChars = [string]
	For i=LBound(chars) to UBound(chars)
		HideChars = Replace(HideChars, chars(i), "*" & Asc(chars(i)) & "*")
	Next
End Function

Function UnhideChars([string], chars)
    Dim i
    UnhideChars = [string]
	For i=LBound(chars) to UBound(chars)
		UnhideChars = Replace(UnhideChars, "*" & Asc(chars(i)) & "*", chars(i))
	Next
End Function
