VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "clsSSE_Main"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Private scripts()        As clsSSE_Script
Private script_count     As Integer

'* Global variables
Private variables()     As typVariable
Private varCount        As Integer
Private Type typVariable
    Name    As String
    value   As String
End Type

Public cChildAlias  As New clsSSE_Alias
Public bLastExec    As Boolean
Function function_ping(ByRef paramlist())
    If UBound(paramlist()) < 1 Then function_ping = -1: Exit Function
    
    Dim theArgs(3)
    theArgs(0) = paramlist(0)
    theArgs(1) = paramlist(1)
    theArgs(2) = "PING"
    theArgs(3) = Timer
    function_ctcp theArgs()
    
    function_ping = ""
End Function

Function function_format(ByRef paramlist())
    If UBound(paramlist()) < 2 Then function_format = -1: Exit Function
    
    function_format = Format(paramlist(1), paramlist(2))
End Function

Function function_queryexists(paramlist())
    If UBound(paramlist) < 1 Then function_queryexists = -1: Exit Function
    
    function_queryexist = QueryExists(CStr(paramlist(1)), CInt(paramlist(0)))
End Function

Public Function AliasCount(scriptID As Integer) As Integer
    
    If ScriptCount = 0 Then AliasCount = 0 Else AliasCount = scripts(scriptID).GetAliasCount()
    
End Function


Function CallByNameVar(obj As Object, strAliasNameX As String, theMethod As VbCallType, XvarArgs() As Variant)
    CallByNameVar = CallByName(obj, strAliasNameX, theMethod, XvarArgs)
End Function


Public Function ExecuteEvent(strEventName As String, ByRef strParamList() As String, serverID As Integer, localVars() As String)

    ' No default events, comment out
    
'    On Error GoTo NotBuiltIn
'    Dim returnValue
'    returnValue = CallByName(Me, "function_" & strEventName, VbMethod, strParamList)
'    ExecuteAlias = CStr(returnValue)
'    Exit Function

'NotBuiltIn:
    'MsgBox strEventName
    Dim i As Integer, j As Integer, returnVal As String
    For i = 1 To script_count
        DoEvents
        CurrentServerID = serverID
        Call scripts(i).ExecuteAlias(strEventName, strParamList, 1, serverID, localVars) '1 = event
        If scripts(i).bExecuted = False Then
            '* **
            '* code to generate error??
            '* **
            bLastExec = False
            ExecuteEvent = ""
            'Exit Function
        Else
            bLastExec = False
            ExecuteEvent = returnValue
        End If
    Next i
End Function

Function function_asctime(ByRef paramlist())
    If UBound(paramlist) < 1 Then function_asctime = 0: Exit Function
    
    On Error GoTo errhand
    function_asctime = AscTime(CLng(paramlist(1)))
    Exit Function
errhand:
    function_asctime = ""
End Function

Public Function ExecuteCTCP(strCtcpName As String, ByRef strParamList() As String, serverID As Integer, localVars() As String)
    Dim i As Integer, j As Integer, returnVal As String
    For i = 1 To script_count
        CurrentServerID = serverID
        returnValue = scripts(i).ExecuteAlias(strCtcpName, strParamList, 2, serverID, localVars) '1 = ctcp
        If scripts(i).bExecuted = False Then
            '* **
            '* code to generate error??
            '* **
        
            ExecuteCTCP = ""
            'Exit Function
        Else
            ExecuteCTCP = returnValue
        End If
    Next i
End Function


Public Function ExecuteHotkey(strVirtKey As String, strKey As String, ByRef strParamList() As String, serverID As Integer, localVars() As String) As Boolean
    Dim i As Integer, j As Integer, returnVal As String
    For i = 1 To script_count
        CurrentServerID = serverID
        returnValue = scripts(i).ExecuteAlias(strVirtKey, strParamList, 3, serverID, localVars, strKey) '1 = ctcp
        If scripts(i).bExecuted = False Then
            '* **
            '* code to generate error??
            '* **
        
            ExecuteHotkey = False
            'Exit Function
        Else
            ExecuteHotkey = True
        End If
    Next i
End Function
Function function_channelcentral(ByRef paramlist())
    If UBound(paramlist) < 1 Then function_channelcentral = 0: Exit Function
    
    Dim theChan As CHANNEL
    Set theChan = GetFormByName(CStr(paramlist(1)), CInt(paramlist(0)))
    
    If theChan Is Nothing Then
    Else
        With frmChanCentral
            .strChanModes = windowStatus(theChan.serverID).strChannelModes
            .strSetChanModes = theChan.strModes
            .strKey = theChan.strKey
            .strLimit = theChan.strLimit
            .SetInfo
            
            Set .refWindow = theChan
            .LoadTopics
            
            .Show
        End With
    End If
End Function
Function function_calc(ByRef paramlist())
    If UBound(paramlist) < 1 Then function_calc = -1: Exit Function
    
    Dim strEval As String
    strEval = Eval(JoinArrayV(paramlist, " ", 2))
    
    function_calc = strEval
End Function

Function function_ctcpreply(ByRef paramlist())
    If UBound(paramlist) < 2 Then function_ctcpreply = -1: Exit Function
    
    Dim strReply As String
    strReply = JoinArrayV(paramlist, " ", 3)
    
    windowStatus(CurrentServerID).SendData "NOTICE " & paramlist(1) & " :" & Chr(1) & strReply & Chr(1)
    'Dim paramListX() As String, vars(3) As String
    'vars(0) = "target:" & paramlist(1)
    'vars(1) = "nick:" & paramlist(1)
    'vars(2) = "command:" & paramlist(2)
    'vars(3) = "data:" & JoinArrayV(paramlist, " ", 4)
    'paramListX = Split(JoinArrayV(paramlist, " ", 2), " ")
    'ExecuteEvent "ctcpreply", paramListX, CInt(paramlist(0)), vars
End Function

Function function_ctcp(ByRef paramlist())
    If UBound(paramlist) < 2 Then function_ctcp = -1: Exit Function
    
    Dim strReply As String
    paramlist(2) = UCase(paramlist(2))
    strReply = JoinArrayV(paramlist, " ", 3)
    
    windowStatus(CurrentServerID).SendData "PRIVMSG " & paramlist(1) & " :" & Chr(1) & strReply & Chr(1)
    Dim paramListX() As String, vars(3) As String
    vars(0) = "target:" & paramlist(1)
    vars(1) = "nick:" & paramlist(1)
    vars(2) = "command:" & paramlist(2)
    vars(3) = "data:" & JoinArrayV(paramlist, " ", 4)
    paramListX = Split(JoinArrayV(paramlist, " ", 2), " ")
    ExecuteEvent "ctcpsend", paramListX, CInt(paramlist(0)), vars
End Function
Function function_chancount(ByRef paramlist())
    Dim i As Integer
    
    For i = 1 To MAX_CHANS
        If ChanInUse(i) Then
            If Channels(i).serverID = paramlist(0) Then 'paramlist(0) = serverid
                function_chancount = function_chancount + 1
            End If
        End If
    Next i
    
    Exit Function
End Function


Function function_channel(ByRef paramlist())
    If UBound(paramlist) < 1 Then function_channel = -1: Exit Function
    
    Dim i As Integer, chanNum As Integer
    
    If Val(paramlist(1)) = 0 Then
        function_channel = function_chancount(paramlist)
        Exit Function
    End If
    
    For i = 1 To MAX_CHANS
        If ChanInUse(i) Then
            If Channels(i).serverID = paramlist(0) Then 'paramlist(0)=serverid
                chanNum = chanNum + 1
                If chanNum = Val(paramlist(1)) Then
                    function_channel = Channels(i).strChanName
                    Exit Function
                End If
            End If
        End If
    Next i
    
    function_channel = ""
End Function

Function function_charcount(ByRef paramlist())
    If UBound(paramlist) < 2 Then function_charcount = 0: Exit Function
    
    If Len(paramlist(1)) Then
        function_charcount = UBound(Split(paramlist(1), paramlist(2)))
    Else
        function_charcount = 0
    End If

End Function

Function function_dec(ByRef paramlist())
    If UBound(paramlist) < 1 Then function_dec = -1: Exit Function
    
    'MsgBox Val(paramlist(1)) & "~" & Val(paramlist(2))
    If UBound(paramlist) >= 2 Then
        function_dec = Val(paramlist(1)) - Val(paramlist(2))
    Else
        function_dec = Val(paramlist(1)) - 1
    End If
End Function
Function function_doevents(ByRef paramlist())
    DoEvents
End Function

Function function_beep(ByRef paramlist())
    Beep
End Function
Function function_echo(ByRef paramlist())
    If UBound(paramlist) < 2 Then function_echo = -1: Exit Function
    
    If paramlist(0) = 0 Then Exit Function
    
    Dim frmLoop As Form, i As Integer
    For Each frmLoop In Forms
        On Error GoTo nextthing
        If TypeOf frmLoop Is MDIForm Then GoTo nextthing
        On Error GoTo nextthing
        If frmLoop.serverID = paramlist(0) Then
            If Left$(paramlist(1), 1) = "-" Then
                For i = 2 To Len(paramlist(1))
                    If Mid$(paramlist(1), i, 1) = "c" Then
                        'nothing yet
                    End If
                    Select Case Mid$(paramlist(1), i, 1)
                        Case "s"
                            If frmLoop.WinType() = "Status" Then
                                PutText frmLoop.rt_Output, JoinArrayV(paramlist, " ", 3)
                                Exit Function
                            End If
                        Case "a"
                            On Error Resume Next
                            If CLIENT.ActiveForm.serverID = paramlist(0) Then
                                PutText CLIENT.ActiveForm.rt_Output, JoinArrayV(paramlist, " ", 3)
                            Else
                                PutText windowStatus(CInt(paramlist(0))).rt_Output, JoinArrayV(paramlist, " ", 3)
                            End If
                            Exit Function
                        Case "q"
                            If QueryExists(CStr(paramlist(2)), CInt(paramlist(0))) Then
                                If frmLoop.GetTitle = CStr(paramlist(2)) Then
                                    PutText frmLoop.rt_Output, JoinArrayV(paramlist, " ", 4)
                                    Exit Function
                                End If
                            Else
                                If frmLoop.WinType() = "Status" Then
                                    PutText frmLoop.rt_Output, JoinArrayV(paramlist, " ", 4)
                                    Exit Function
                                End If
                            End If
                    End Select
                Next i
            Else
                If LCase(paramlist(1)) = LCase(frmLoop.strTitle) Then
                    PutText frmLoop.rt_Output, JoinArrayV(paramlist, " ", 3)
                    Exit Function
                End If
            End If
        End If
nextthing:
    Next
End Function
Function function_eval(ByRef paramlist())
    'MsgBox "WEE"
    If UBound(paramlist) < 1 Then function_eval = -1: Exit Function
    
    Dim strEval, i As Integer, strExpr As String
    strExpr = JoinArrayV(paramlist, " ", 2)
    
    strEval = Eval(strExpr)
    
    function_eval = CVar(strEval)
End Function

Function function_inc(ByRef paramlist())
    If UBound(paramlist) < 1 Then function_inc = -1: Exit Function
    
    If UBound(paramlist) >= 2 Then
        function_inc = Val(paramlist(1)) + Val(paramlist(2))
    Else
        function_inc = Val(paramlist(1)) + 1
    End If
End Function

Function function_inchannel(ByRef paramlist())
    If UBound(paramlist) < 2 Then function_inchannel = -1: Exit Function
    
    Dim i As Integer
    
    For i = 1 To MAX_CHANS
        If ChanInUse(i) Then
            If Channels(i).serverID = paramlist(0) Then
                If LCase(Channels(i).strChanName) = LCase(paramlist(1)) Then
                    If Channels(i).InChannel(CStr(paramlist(2))) Then
                        function_inchannel = 1
                        Exit Function
                    End If
                End If
            End If
        End If
    Next i
    
    function_inchannel = 0
End Function

Function function_instr(ByRef paramlist())
    If UBound(paramlist) < 2 Then function_instr = -1: Exit Function
    
    If UBound(paramlist) = 2 Then
        function_instr = InStr(1, paramlist(1), paramlist(2))
    Else
        function_instr = InStr(Val(paramlist(3)), paramlist(1), paramlist(2))
    End If
End Function

Function function_join(ByRef paramlist())
    If UBound(paramlist) < 1 Then function_join = -1: Exit Function
    
    windowStatus(paramlist(0)).SendData "JOIN " & JoinArrayV(paramlist, " ", 2)
End Function

Function function_left(ByRef paramlist())
    If UBound(paramlist) < 2 Then function_left = -1: Exit Function
    
    If paramlist(1) = "" Or Val(paramlist(2)) < 0 Then Exit Function
    function_left = Left$(paramlist(1), Val(paramlist(2)))
End Function
Function function_len(ByRef paramlist())
    If UBound(paramlist) < 1 Then function_len = -1: Exit Function
    
    function_len = Len(paramlist(1))
End Function

Function function_me(ByRef paramlist())
    If UBound(paramlist) < 2 Then function_me = -1: Exit Function
    
    windowStatus(CurrentServerID).SendData "PRIVMSG " & paramlist(1) & " :" & Chr$(ACTION) & "ACTION " & paramlist(2) & Chr$(ACTION)
    Dim paramListX(3) As String, vars(3) As String
    vars(0) = "target:" & paramlist(1)
    vars(1) = "nick:" & windowStatus(paramlist(0)).strCurNick
    vars(2) = "message:" & paramlist(2)
    vars(3) = "action:" & paramlist(2)
    paramListX(1) = paramlist(1)
    paramListX(2) = windowStatus(paramlist(0)).strCurNick
    paramListX(3) = paramlist(2)
    ExecuteEvent "action", paramListX, CInt(paramlist(0)), vars

End Function

Function function_mid(ByRef paramlist())
    
    If UBound(paramlist) < 2 Then function_mid = -1:  Exit Function
    
    If UBound(paramlist) = 2 Then
        function_mid = Mid$(paramlist(1), Val(paramlist(2)))
    Else
        function_mid = Mid$(paramlist(1), Val(paramlist(2)), Val(paramlist(3)))
    End If

End Function

Function function_date(ByRef paramlist())
    
    If UBound(paramlist) < 1 Then
        function_date = Date
    Else
        function_date = Format(Now, paramlist(1))
    End If

End Function
Function function_time(ByRef paramlist())
    
    If UBound(paramlist) = 1 Then
        function_time = Time
    Else
        function_time = Format(Time, paramlist(2))
    End If

End Function
Function function_msg(ByRef paramlist())
    If UBound(paramlist) < 2 Then function_msg = -1: Exit Function
    
    Dim msg As String
    strMsg = JoinArrayV(paramlist, " ", 3)
    
    windowStatus(CurrentServerID).SendData "PRIVMSG " & paramlist(1) & " :" & strMsg
    Dim paramListX(3) As String, vars(4) As String
    vars(0) = "target:" & paramlist(1)
    vars(1) = "channel:" & paramlist(1)
    vars(2) = "chan:" & paramlist(1)
    vars(3) = "nick:" & windowStatus(paramlist(0)).strCurNick
    vars(4) = "message:" & strMsg
    
    paramListX(1) = paramlist(1)
    paramListX(2) = windowStatus(paramlist(0)).strCurNick
    paramListX(3) = strMsg
    ExecuteEvent "text", paramListX, CInt(paramlist(0)), vars
End Function
Function function_notice(ByRef paramlist())
    If UBound(paramlist) < 2 Then function_notice = -1: Exit Function
    
    Dim msg As String
    strMsg = JoinArrayV(paramlist, " ", 3)
    
    windowStatus(CurrentServerID).SendData "NOTICE " & paramlist(1) & " :" & strMsg
    Dim paramListX(3) As String, vars(4) As String
    vars(0) = "target:" & paramlist(1)
    vars(1) = "channel:" & paramlist(1)
    vars(2) = "chan:" & paramlist(1)
    vars(3) = "nick:" & windowStatus(paramlist(0)).strCurNick
    vars(4) = "message:" & strMsg
    
    paramListX(1) = paramlist(1)
    paramListX(2) = windowStatus(paramlist(0)).strCurNick
    paramListX(3) = strMsg
    ExecuteEvent "noticesend", paramListX, CInt(paramlist(0)), vars
End Function
Function function_opnotice(ByRef paramlist())
    If UBound(paramlist) < 2 Then function_opnotice = -1: Exit Function
    
    Dim msg As String
    strMsg = JoinArrayV(paramlist, " ", 3)
    
    windowStatus(CurrentServerID).SendData "NOTICE @" & paramlist(1) & " :" & strMsg
    Dim paramListX(3) As String, vars(4) As String
    vars(0) = "target:" & paramlist(1)
    vars(1) = "channel:" & paramlist(1)
    vars(2) = "chan:" & paramlist(1)
    vars(3) = "nick:" & windowStatus(paramlist(0)).strCurNick
    vars(4) = "message:" & strMsg
    
    paramListX(1) = paramlist(1)
    paramListX(2) = windowStatus(paramlist(0)).strCurNick
    paramListX(3) = strMsg
    ExecuteEvent "opnoticesend", paramListX, CInt(paramlist(0)), vars
End Function
Function function_query(ByRef paramlist())
    If UBound(paramlist()) < 1 Then function_query = -1: Exit Function
    
    If QueryExists(CStr(paramlist(1)), CInt(paramlist(0))) Then
        Dim theQuery As Form
        Set theQuery = GetFormByName(CStr(paramlist(1)), CInt(paramlist(0)))
        
        If theQuery Is Nothing Then Exit Function
        theQuery.setFocus
    Else
        newQuery CStr(paramlist(1)), CInt(paramlist(0))
    End If
            
    If UBound(paramlist()) >= 2 Then
        Dim paramListX(3) As String, vars(2) As String, strMessage As String
        strMessage = JoinArrayV(paramlist, " ", 3)
        
        windowStatus(CurrentServerID).SendData "PRIVMSG " & paramlist(1) & " :" & strMessage
        
        vars(0) = "target:" & paramlist(1)
        vars(1) = "nick:" & windowStatus(paramlist(0)).strCurNick
        vars(2) = "message:" & strMessage
        paramListX(1) = paramlist(1)
        paramListX(2) = windowStatus(paramlist(0)).strCurNick
        paramListX(3) = strMessage
        ExecuteEvent "text", paramListX, CInt(paramlist(0)), vars
    End If
End Function

Function function_topic(ByRef paramlist())
    If UBound(paramlist) < 2 Then function_topic = -1: Exit Function
    
    windowStatus(paramlist(0)).SendData "TOPIC " & paramlist(1) & " :" & paramlist(2)
End Function

Function function_kick(ByRef paramlist())
    If UBound(paramlist) < 3 Then function_kick = -1: Exit Function
    
    windowStatus(paramlist(0)).SendData "KICK " & paramlist(1) & " " & paramlist(2) & " :" & JoinArrayV(paramlist, " ", 4)
End Function

Function function_part(ByRef paramlist())
    If UBound(paramlist) < 1 Then function_part = -1: Exit Function
    
    If UBound(paramlist) >= 2 Then
        windowStatus(paramlist(0)).SendData "PART " & paramlist(1) & " :" & JoinArrayV(paramlist, " ", 3)
    Else
        windowStatus(paramlist(0)).SendData "PART " & paramlist(1)
    End If
End Function


Function function_quit(ByRef paramlist())
    If UBound(paramlist) < 1 Then
        windowStatus(paramlist(0)).SendData "QUIT :Leaving - " & strVersion
    Else
        windowStatus(paramlist(0)).SendData "QUIT :" & JoinArrayV(paramlist, " ", 2)
    End If
End Function


Function function_right(ByRef paramlist())
    If UBound(paramlist) < 2 Then function_right = -1: Exit Function
    
    If paramlist(1) = "" Or Val(paramlist(2)) < 0 Then Exit Function
    function_right = Right$(paramlist(1), Val(paramlist(2)))
    
End Function


Function function_senddata(ByRef paramlist())
    If UBound(paramlist) < 1 Then function_senddata = -1: Exit Function
    
    windowStatus(paramlist(0)).SendData JoinArrayV(paramlist, " ", 2) & vbCrLf
End Function

Function function_set(ByRef paramlist())
    If UBound(paramlist) < 2 Then function_set = -1: Exit Function
    
    'MsgBox paramlist(1) & "~fucker"
    If paramlist(1) Like "*:*" Then
        cChildAlias.SetLocalVar CStr(Mid$(paramlist(1), 1, InStr(paramlist(1), ":") - 1)), JoinArrayV(paramlist, " ", 3), Mid$(paramlist(1), InStr(paramlist(1), ":") + 1)
    End If
    
    cChildAlias.SetLocalVar CStr(paramlist(1)), JoinArrayV(paramlist, " ", 3)
End Function

Function function_ticks(ByRef paramlist())
    
    function_ticks = Timer
    
End Function

Function function_getctime(ByRef paramlist())
    
    function_getctime = CTime
    
End Function

Function function_ctime(ByRef paramlist())
    
    function_ctime = CTime
    
End Function
Public Function GetAlias(scriptID As Integer, AliasNum As Integer) As String
    GetAlias = scripts(scriptID).GetAlias(AliasNum)
End Function

Public Function GetGlobalVar(strName As String) As String
    Dim i As Integer
    For i = 1 To varCount
        If StrComp(variables(i).Name, strName) = True Then
            GetGlobalVar = variables(i).value
            Exit Function
        End If
    Next i
    GetGlobalVar = ""
End Function


Private Sub AddGlobalVar(strName As String, strValue As String, Optional tvType As Integer = 0)
    varCount = varCount + 1
    ReDim Preserve variables(1 To varCount) As typVariable
    variables(varCount).Name = strName
    variables(varCount).value = strValue
    'variables(varCount).type = tvType
End Sub
Public Sub KillAllScripts()
    script_count = 0
    ReDim Preserve scripts(1 To 1) As clsSSE_Script

End Sub

Public Sub SetGlobalVar(strName As String, strValue As String)
    Dim i As Integer
    
    For i = 1 To varCount
        If StrComp(variables(i).Name, strName) = True Then
            variables(i).value = strValue
            Exit Sub
        End If
    Next i
    AddGlobalVar strName, strValue
End Sub



    


Public Function ExecuteAlias(strAliasNameX As String, ByRef strParamList() As String, serverID As Integer, localVars() As String)

    On Error GoTo NotBuiltIn
    Dim returnValue, varArgsX(), i As Integer
    ReDim varArgsX(UBound(strParamList))
    
    For i = 0 To UBound(strParamList)
        'MsgBox strParamList(i)
        varArgsX(i) = CVar(strParamList(i))
    Next i
    
    CurrentServerID = serverID
    varArgsX(0) = serverID
    returnValue = CallByName(Me, "function_" & strAliasNameX, VbMethod, varArgsX)
    ExecuteAlias = CStr(returnValue)
    bLastExec = True
    Exit Function

NotBuiltIn:
    'If Err Then MsgBox Err.Number & " -> " & Err.Description & " (on " & Err.Source & ")"
    
    Dim j As Integer, returnVal As String
    For i = 1 To script_count
        
        CurrentServerID = serverID
        returnValue = scripts(i).ExecuteAlias(strAliasNameX, strParamList, 0, serverID, localVars)
        
        If scripts(i).bExecuted = False Then
            '* **
            '* code to generate error??
            '* **
            bLastExec = False
            ExecuteAlias = ""
            Exit Function
        Else
            bLastExec = True
            ExecuteAlias = returnValue
            Exit Function
        End If
    Next i
    
End Function

Function function_input(ByRef paramlist())
    If UBound(paramlist) < 1 Then function_input = -1: Exit Function
    
    If UBound(paramlist) = 1 Then
        function_input = InputBox(paramlist(1))
    ElseIf UBound(paramlist) = 2 Then
        function_input = InputBox(paramlist(1), paramlist(2))
    Else
        function_input = InputBox(paramlist(1), paramlist(2), paramlist(3))
    End If
End Function

Function function_msgbox(ByRef paramlist())
    On Error Resume Next
    If UBound(paramlist) < 1 Then function_msgbox = -1: Exit Function
    
    If UBound(paramlist) = 1 Then
        function_msgbox = MsgBox(paramlist(1))
    ElseIf UBound(paramlist) = 2 Then
        function_msgbox = MsgBox(paramlist(1), 0, paramlist(2))
    Else
        function_msgbox = MsgBox(paramlist(1), paramlist(3), paramlist(2))
    End If
    
End Function

Function function_lcase(ByRef paramlist())
    On Error Resume Next
    If UBound(paramlist) < 1 Then function_lcase = -1: Exit Function
    
    function_lcase = LCase(JoinArrayV(paramlist, " ", 2))
    
End Function
Function function_ucase(ByRef paramlist())
    On Error Resume Next
    If UBound(paramlist) < 1 Then function_ucase = -1: Exit Function
    
    function_ucase = UCase(JoinArrayV(paramlist, " ", 2))
    
End Function

Function function_server(ByRef paramlist())
    On Error Resume Next
    If UBound(paramlist) < 1 Then function_server = -1: Exit Function
    
    If UBound(paramlist) = 1 Then
        windowStatus(paramlist(0)).SetServerInfo CStr(paramlist(1))
    ElseIf UBound(paramlist) = 2 Then
        windowStatus(paramlist(0)).SetServerInfo CStr(paramlist(1)), CInt(paramlist(2))
    Else
        windowStatus(paramlist(0)).SetServerInfo CStr(paramlist(1)), CInt(paramlist(2)), CStr(paramlist(3))
    End If
    
    windowStatus(paramlist(0)).Disconnect
    windowStatus(paramlist(0)).Connect
    
End Function
Public Sub LoadScript(script_id As Integer, strFileName As String)
    scripts(script_id).LoadScript strFileName, Me
    
End Sub

Public Function NewScript()
    script_count = script_count + 1
    ReDim Preserve scripts(1 To script_count) As clsSSE_Script
    Set scripts(script_count) = New clsSSE_Script
    Set scripts(script_count).parent = Me
    NewScript = script_count
End Function

Public Function ScriptCount() As Integer
    ScriptCount = script_count
End Function