#!/bin/sh # MetaCard 2.4 stack # The following is not ASCII text, # so now would be a good time to q out of more exec mc $0 "$@" P ChatRev M193"0on closeStackRequest if (the target is "card" && quote & "chat" & quote) or (the target is "card" && quote & "login" & quote) or (the target is "card" && quote & "register" & quote) or (the target is "card" && quote & "settings" & quote) then answer warning "Are you sure you want to close this stack (and disconnect)?" with "Okay" or "Cancel" if it is "Okay" then send "disconnect" to btn "Connect" of cd 1 if the environment is "development" then save this stack pass closestackrequest end if cleanUp quit end if else pass closestackrequest end if end closeStackRequest on preOpenStack global gChatRevShortName, gMainStackRect if (the target is "card" && quote & "chat" & quote) or (the target is "card" && quote & "login" & quote) or (the target is "card" && quote & "register" & quote) or (the target is "card" && quote & "settings" & quote) then put the short name of this stack into gChatRevShortName send "restoreStyleMenu" to btn "Style Storage" of cd "Chat" of stack gChatRevShortName readPrefs get the result if gMainStackRect is a rect then set the rect of stack gChatRevShortName to gMainStackRect else set the rect of this stack to 1,1,640,480 set the loc of me to the screenLoc end if set the label of btn "Status" of cd 2 of stack gChatRevShortName to "Disconnect" lock messages set the menuHistory of btn "Go" to 1 set the label of btn "Connect" to "Connect" setFieldBackColor if the platform is not "MacOS" then hide btn "iTunes" of cd "Settings" of stack gChatRevShortName end if unlock messages end if pass preOpenStack end preOpenStack -- handler added by Mark S on openStack global gChatRevShortName if (the target is "card" && quote & "chat" & quote) or (the target is "card" && quote & "login" & quote) then choose browse tool checkLastMessageSentTime send "setMenus" to btn "Style Storage" cd "Chat" of stack gChatRevShortName if the platform is "MacOS" then show btn "iTunes" of cd "Settings" of stack gChatRevShortName else hide btn "iTunes" of cd "Settings" of stack gChatRevShortName end if end if pass openStack end openStack -- handler added by Mark S on checkLastMessageSentTime global gChatRevShortName if the cLastMessageSentTime of cd 2 is empty then set the cLastMessageSentTime of cd 2 to the long time end if put the cLastMessageSentTime of cd 2 into myIdleTime put ((fld "Idle Time" of cd 4 of stack gChatRevShortName)*60) into myTimeLimit convert myIdleTime to seconds if the label of btn "Status" of cd 2 of stack gChatRevShortName is not "Disconnect" then if (the seconds - myidleTime) > myTimeLimit then set the label of btn "Status" of cd 2 of stack gChatRevShortName to "Away" end if end if put ((fld "Idle Time" of cd 4 of stack gChatRevShortName) * 60) - 1 into myIdleTimeSecs send "checkLastMessageSentTime" to me in myIdleTimeSecs seconds end checkLastMessageSentTime on preOpenCard lock screen revUpdateGeometry pass preOpenCard end preOpenCard -- handler by Mark S -- replace smileys function replaceSmileys theMsg put smileyServer() into mySmileServer put false into mySmileyFound if the hilite of btn "Replace smileys" of cd 4 is true then implementedSmileys smiley put mySmileysList() into mySmileys repeat with x = 1 to (number of lines of mySmileys) put smiley[x] into tempVar --for debugging if smiley[x] is in theMsg then put true into mySmileyFound put the length of smiley[x] into mySmileyLength repeat until smiley[x] is not in theMsg put offset(smiley[x],theMsg) into c delete char (c+1) to (c+mySmileyLength-1) of theMsg put ("") into char c of theMsg end repeat end if end repeat if mySmileyFound then put "
" after theMsg end if return (theMsg & numToChar(11) & mySmileyFound) end replaceSmileys function smileyServer global gChatRevShortName put line lineoffset(the label of btn "Smile Server" of cd 4 of stack gChatRevShortName,btn "Smile Server" of cd 4 of stack gChatRevShortName) of the cServers of btn "Smile Server" of cd 4 of stack gChatRevShortName into mySmileServer if last char of mySmileServer is not "/" then put "/" after mySmileServer return mySmileServer end smileyServer function mySmileysList put "smile.gif" & return & "wink.gif" & return & "sad.gif" & return & "cry.gif" & return & "rasp.gif" & return & "grin.gif" & return & "shock.gif" & return & "love.gif" & return & "rolleyes.gif" & return & "cool.gif" & return & "sneaky.gif" & return & "bored.gif" into mySmileys return mySmileys end mySmileysList on implementedSmileys @smiley put ":-)" into smiley[1] put ";-)" into smiley[2] put ":-(" into smiley[3] put ":'-(" into smiley[4] put ":-p" into smiley[5] put ":-D" into smiley[6] put "=:-o" into smiley[7] put ":-*" into smiley[8] put ":-/" into smiley[9] put "8-)" into smiley[10] put ":^)" into smiley[11] put ":-|" into smiley[12] end implementedSmileys on saveStackRequest global gChatRevShortName cleanUp pass saveStackRequest end saveStackRequest on cleanUp global gChatRevShortName,gLogViewerApp set the cursor to watch set the itemDelimiter to numToChar(11) put btn "IP List" of cd 1 of stack gChatRevShortName into item 1 of myPrefs put the label of btn "IP List" of cd 1 of stack gChatRevShortName into item 2 of myPrefs put fld "Name" of cd 1 of stack gChatRevShortName into item 3 of myPrefs put fld "Pass" of cd 1 of stack gChatRevShortName into item 4 of myPrefs put fld "Port" of cd 1 of stack gChatRevShortName into item 5 of myPrefs put fld "Nickname" of cd 3 of stack gChatRevShortName into item 6 of myPrefs put fld "Password" of cd 3 of stack gChatRevShortName into item 7 of myPrefs put fld "E-Mail" of cd 3 of stack gChatRevShortName into item 8 of myPrefs put fld "MouseOver" of cd 3 of stack gChatRevShortName into item 9 of myPrefs put fld "About" of cd 3 of stack gChatRevShortName into item 10 of myPrefs put fld "Message Sound" of cd 4 of stack gChatRevShortName into item 11 of myPrefs put fld "Login Sound" of cd 4 of stack gChatRevShortName into item 12 of myPrefs put fld "Path" of cd 4 of stack gChatRevShortName into item 13 of myPrefs put fld "Autoreply Message" of cd 4 of stack gChatRevShortName into item 14 of myPrefs put fld "Idle Time" of cd 4 of stack gChatRevShortName into item 15 of myPrefs -- put fld "Login Sound" of cd 4 of stack gChatRevShortName into item 16 of myPrefs put the hilite of btn "Receive HTML" of cd 4 of stack gChatRevShortName into item 17 of myPrefs put the hilite of btn "Replace Smileys" of cd 4 of stack gChatRevShortName into item 18 of myPrefs put the hilite of btn "Press enter for multiple lines" of cd 4 of stack gChatRevShortName into item 19 of myPrefs put the label of btn "Smile Server" of cd 4 of stack gChatRevShortName into item 20 of myPrefs put btn "IP URL" of cd 1 of stack gChatRevShortName into item 21 of myPrefs put the label of btn "IP URL" of cd 1 of stack gChatRevShortName into item 22 of myPrefs put the rect of this stack into item 23 of myPrefs put fld "IP" of cd 1 of stack gChatRevShortName into item 24 of myPrefs put the backgroundcolor of grc "message" of cd 4 of stack gChatRevShortName into item 25 of myPrefs put the backgroundcolor of grc "privmessage" of cd 4 of stack gChatRevShortName into item 26 of myPrefs put the thumbPosition of scrollbar "Sound Level" of cd 4 of stack gChatRevShortName into item 27 of myPrefs set the thumbPosition of scrollbar "Sound Level" of cd 4 of stack gChatRevShortName to 75 put the hilite of btn "Save to file" of cd 4 of stack gChatRevShortName into item 28 of myPrefs set the hilite of btn "Save to file" of cd 4 of stack gChatRevShortName to false put gLogViewerApp into item 29 of myPrefs put the thumbposition of scrollbar "sound level" of cd 4 into item 30 of myPrefs put the hilite of btn "Enable Speech" of cd 4 into item 31 of myPrefs put the loc of window "Colour Palette" into item 32 of myPrefs put the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName into item 33 of myPrefs put the textFont of fld "Chat" of cd "Chat" of stack gChatRevShortName into item 34 of myPrefs if there is a window "Colour Palette" then put the bottomLeft of window "Colour Palette" into item 35 of myPrefs else put the cCustomLoc of stack "Colour Palette" into item 35 of myPrefs end if if there is a window "Smileys" then put the bottomLeft of window "Smileys" into item 36 of myPrefs else put the cCustomLoc of stack "Smileys" into item 36 of myPrefs end if put the short name of this stack & return & myPrefs into myPrefs put myPrefs into url ("file:" & stackToFilename("User Data/User Data")) put empty into btn "IP List" of cd 1 of stack gChatRevShortName set the fileName of image "Default Smile" of cd 2 of stack gChatRevShortName to empty set the icon of btn "Insert Smile" of cd 2 of stack gChatRevShortName to empty put empty into fld "Enter" of cd 2 of stack gChatRevShortName put empty into fld "Chat" of cd 2 of stack gChatRevShortName put empty into fld "Members" of cd 2 of stack gChatRevShortName put empty into fld "Log" of cd 1 of stack gChatRevShortName put empty into fld "Name" of cd 1 of stack gChatRevShortName put empty into fld "Pass" of cd 1 of stack gChatRevShortName put empty into fld "IP" of cd 1 of stack gChatRevShortName put empty into fld "Port" of cd 1 of stack gChatRevShortName put empty into fld "Nickname" of cd 3 of stack gChatRevShortName put empty into fld "Password" of cd 3 of stack gChatRevShortName put empty into fld "E-Mail" of cd 3 of stack gChatRevShortName put empty into fld "MouseOver" of cd 3 of stack gChatRevShortName put empty into fld "About" of cd 3 of stack gChatRevShortName put empty into fld "Message Sound" of cd 4 of stack gChatRevShortName put empty into fld "Login Sound" of cd 4 of stack gChatRevShortName put empty into fld "Path" of cd 4 of stack gChatRevShortName put empty into btn "IP URL" of cd 1 of stack gChatRevShortName set the label of btn "IP URL" of cd 1 of stack gChatRevShortName to empty repeat for each char x in "pbiu" set the hilite of btn x of cd 2 of stack gChatRevShortName to false end repeat set the cTextStyle of fld "Enter" of cd 2 of stack gChatRevShortName to empty set the itemDel to comma put "Threads,Text,Edit,Thread,Create" into myForumFields repeat for each item x in myForumFields put empty into fld x of cd "Forum" end repeat set the backgroundColor of graphic "Selected Colour" of cd 1 of stack "Colour Palette" to 0,0,0 set the backgroundColor of graphic "Old Colour" of cd 1 of stack "Colour Palette" to 0,0,0 set the fileName of image "Smiley" of cd 4 to empty if there is a window "Smileys" then close window "Smileys" if there is a window "Colour Palette" then close window "Colour Palette" end cleanUp on readPrefs global gChatRevShortName,gMainStackRect,gLogViewerApp put "http://www.revolutionboard.de/bvg/ip.txt" into myDfltURL put empty into myPrefs set the cursor to watch put stackToFilename("User Data") into myUserDataFolder if there is not a folder myUserDataFolder then create folder myUserDataFolder if there is not a folder (myUserDataFolder & "/Smileys") then put "(Local" into line 5 of btn "Smile Server" of cd 4 of stack gChatRevShortName else put "Local" into line 5 of btn "Smile Server" of cd 4 of stack gChatRevShortName end if put stackToFilename("User Data/User Data") into myPrefsFilePath put "file:" before myPrefsFilePath put url myPrefsFilePath into myPrefs if myPrefs is not empty then if line 1 of myPrefs is not (the short name of this stack) then beep answer warning "Sorry, the user data are incompatible with this version" & return & " of ChatRev." && "Please enter your user data again." with "Okay" end if end if delete line 1 of myPrefs set the cServers of btn "Smile Server" of cd 4 of stack gChatRevShortName to allSmileServers() set the itemDelimiter to numToChar(11) put item 1 of myPrefs into btn "IP List" of cd 1 of stack gChatRevShortName set the label of btn "IP List" of cd 1 of stack gChatRevShortName to item 2 of myPrefs put item 3 of myPrefs into fld "Name" of cd 1 of stack gChatRevShortName put item 4 of myPrefs into fld "Pass" of cd 1 of stack gChatRevShortName if item 5 of myPrefs is not empty then put item 5 of myPrefs into fld "Port" of cd 1 of stack gChatRevShortName else put "80" into fld "Port" of cd 1 of stack gChatRevShortName end if put item 6 of myPrefs into fld "Nickname" of cd 3 of stack gChatRevShortName put item 7 of myPrefs into fld "Password" of cd 3 of stack gChatRevShortName put item 8 of myPrefs into fld "E-Mail" of cd 3 of stack gChatRevShortName put item 9 of myPrefs into fld "MouseOver" of cd 3 of stack gChatRevShortName put item 10 of myPrefs into fld "About" of cd 3 of stack gChatRevShortName put item 11 of myPrefs into fld "Message Sound" of cd 4 of stack gChatRevShortName if there is a file (item 11 of myPrefs) then set the filename of player "message sound" of card "chat" to (item 11 of myPrefs) set the filename of player "message sound" of cd "Settings" to (item 11 of myPrefs) else set the filename of player "message sound" of card "chat" to empty set the filename of player "message sound" of cd "Settings" to empty end if if item 12 of myPrefs is not empty then put item 12 of myPrefs into fld "Login Sound" of cd 4 of stack gChatRevShortName if there is a file (item 12 of myPrefs) then set the filename of player "login sound" of card "chat" to (item 12 of myPrefs) set the filename of player "login sound" to (item 12 of myPrefs) else set the filename of player "login sound" of card "chat" to empty set the filename of player "login sound" of cd "Settings" to empty end if else put "beep" into fld "Login Sound" of cd 4 of stack gChatRevShortName end if put item 13 of myPrefs into fld "Path" of cd 4 of stack gChatRevShortName if item 14 of myPrefs is not empty then put item 14 of myPrefs into fld "Autoreply Message" of cd 4 of stack gChatRevShortName else put "I am currently away from my computer." into fld "Autoreply Message" of cd 4 of stack gChatRevShortName end if if item 15 of myPrefs is not empty then put item 15 of myPrefs into fld "Idle Time" of cd 4 of stack gChatRevShortName else put 20 into fld "Idle Time" of cd 4 of stack gChatRevShortName end if --put item 16 of myPrefs into fld "Login Sound" of cd 4 of stack gChatRevShortName if item 17 of myPrefs is not empty then set the hilite of btn "Receive HTML" of cd 4 of stack gChatRevShortName to item 17 of myPrefs if item 18 of myPrefs is not empty then set the hilite of btn "Replace Smileys" of cd 4 of stack gChatRevShortName to item 18 of myPrefs set the enabled of btn "Smile Server" of cd 4 of stack gChatRevShortName to item 18 of myPrefs end if if item 19 of myPrefs is not empty then set the hilite of btn "Press enter for multiple lines" of cd 4 of stack gChatRevShortName to item 19 of myPrefs if item 20 of myPrefs is not empty then set the label of btn "Smile Server" of cd 4 of stack gChatRevShortName to item 20 of myPrefs else set the label of btn "Smile Server" of cd 4 of stack gChatRevShortName to line 1 of btn "Smile Server" of cd 4 of stack gChatRevShortName end if if item 21 of myPrefs is not empty then put item 21 of myPrefs into btn "IP URL" of cd 1 of stack gChatRevShortName set the label of btn "IP URL" of cd 1 of stack gChatRevShortName to item 22 of myPrefs else put myDfltURL into btn "IP URL" of cd 1 of stack gChatRevShortName set the label of btn "IP URL" to myDfltURL end if put item 23 of myPrefs into gMainStackRect put the itemDelimiter into myOldDel set the itemDelimiter to comma add 20 to last item of gMainStackRect set the itemDelimiter to myOldDel put item 24 of myPrefs into fld "IP" of cd 1 of stack gChatRevShortName if item 25 of myPrefs is not empty then set the backgroundcolor of grc "message" of cd 4 of stack gChatRevShortName to item 25 of myPrefs else set the backgroundcolor of grc "message" of cd 4 of stack gChatRevShortName to 255,0,0 end if if item 26 of myPrefs is not empty then set the backgroundcolor of grc "privmessage" of cd 4 of stack gChatRevShortName to item 26 of myPrefs else set the backgroundcolor of grc "privmessage" of cd 4 of stack gChatRevShortName to "30,58,238" end if if item 27 of myPrefs is a number then set the thumbPosition of scrollbar "Sound Level" of cd 4 of stack gChatRevShortName to item 27 of myPrefs else set the thumbPosition of scrollbar "Sound Level" of cd 4 of stack gChatRevShortName to 75 end if if item 28 of myPrefs is not empty then set the hilite of btn "Save to file" of cd 4 of stack gChatRevShortName to item 28 of myPrefs else set the hilite of btn "Save to file" of cd 4 of stack gChatRevShortName to false end if if (char 1 of menuItem 5 of btn "Smile Server" of cd 4 of stack gChatRevShortName is "(") and (the label of btn "Smile Server" of cd 4 of stack gChatRevShortName is "Local") then set the label of btn "Smile Server" of cd 4 of stack gChatRevShortName to line 1 of btn "Smile Server" of cd 4 of stack gChatRevShortName end if put (line (lineoffset(the label of btn "Smile Server" of cd 4,btn "Smile Server" of cd 4)) of the cServers of cd btn "Smile Server" of cd 4) into mySmileServer if char 1 to 8 of mySmileServer is "binfile:" then delete char 1 to 8 of mySmileServer set the fileName of image "Default Smile" of cd 2 to mySmileServer & "smile.gif" get the result set the icon of btn "Insert Smile" of cd 2 to the short id of image "Default Smile" of cd 2 set the fileName of image "Smiley" of cd 4 to mySmileServer & "smile.gif" put item 29 of myPrefs into gLogViewerApp if item 30 of myPrefs is not empty then set the thumbposition of scrollbar "sound level" of cd 4 to item 30 of myPrefs else set the thumbposition of scrollbar "sound level" of cd 4 to 50 end if if item 31 of myPrefs is in "true,false" then set the hilite of btn "Enable Speech" of cd 4 to item 31 of myPrefs else set the hilite of btn "Enable Speech" of cd 4 to false end if if item 32 of myPrefs is a point then put the loc of window "Colour Palette" into item 32 of myPrefs end if set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to item 33 of myPrefs set the textFont of fld "Chat" of cd "Chat" of stack gChatRevShortName to item 34 of myPrefs if item 35 of myPrefs is a point then set the cCustomLoc of stack "Colour Palette" to item 35 of myPrefs else set the cCustomLoc of stack "Colour Palette" to empty end if if item 36 of myPrefs is a point then set the cCustomLoc of stack "Smileys" to item 36 of myPrefs else set the cCustomLoc of stack "Smileys" to empty end if end readPrefs function smileURL theSmiley put smileyServer() into mySmileServer implementedSmileys smiley put mySmileysList() into mySmileys repeat with x = 1 to number of lines of mySmileys if smiley[x] is theSmiley then return mySmileServer & line x of mySmileys end if end repeat end smileURL function stackToFilename theFile set the itemDelimiter to "/" if the platform is "MacOS" then put macSysVersion() into myMacSysVersion else put 0 into myMacSysVersion end if if myMacSysVersion < 10 then -- Mac Classic, Linux, Windows put item 1 to -2 of value(word 2 of the long name of stack (the mainStack of this stack)) into myPath -- put item 1 to -2 of value(word 2 of long name of stack (the mainStack of this stack)) into myPath else if myMacSysVersion >= 10 then -- Mac OS X put item 1 to -5 of value(word 2 of the long name of stack (the mainStack of this stack)) into myPath --put item 1 to -5 of value(word 2 of long name of stack (the mainStack of this stack)) into myPath end if if char 1 of theFile is not "/" then put "/" after myPath return myPath & theFile end stackToFilename function macSysVersion put the itemDelimiter into myOldDel set the itemdelimiter to "." put item 1 of the systemVersion into myOSVersion set itemDelimiter to myOldDel return myOSVersion end macSysVersion on commandKeyDown k switch k case "S" if the environment is "development" then save this stack readPrefs end if break case (k is in "'?/") send ("commandKeyDown" && quote & "/" & quote) to this cd break default pass commandKeyDown beak end switch end commandKeyDown function allSmileServers return "http://home.wanadoo.nl/mark.sch/smile/" & return & "http://www.ihug.org/ehug/smile/" & return & "http://www.ihug.org/ehug/smile2/" & return & "http://homepage.mac.com/bvg/smilies/" & return & "binfile:" & stackToFilename("User Data/Smileys/") end allSmileServers function removeFinalEmptyLines theHtmlData repeat until (char -7 to -1 of last word of theHtmlData) is not "

" delete char -7 to -1 of last word of theHtmlData if last char of theMessage is space then delete last char of theHtmlData end repeat return theHtmlData end removeFinalEmptyLines on setFieldBackColor global gChatRevShortName put "237,243,254" into myBackColor if the platForm is "MacOS" then if macSysversion() < 10 then put "232,232,232" into myBackColor end if set the backgroundColor of fld "Members" of cd 2 of stack gChatRevShortName to myBackColor end setFieldBackColor -- this function uses above AppleScript to -- retrieve the song information function iTunesTrack -- the stackToFilename function puts the path to the script -- into the variable myScriptFile. This lines needs -- adjustment if you implement this in your own stack put stackToFilename("User Data/iTunes track.scpt") into myScriptFile if there is a file myScriptFile then if the platForm is "MacOS" then if macSysVersion() <= 9 then put ("run script" && quote & revMacFromUnixPath(myScriptFile) & quote) into myScript wait 1 else put ("run script" && quote & myScriptFile & quote) into myScript end if do myScript as AppleScript return the result end if end if return empty end iTunesTrack -- gets info from above function and -- updates tooltip on setTooltip2iTunes global gChatRevShortName set the itemDelimiter to tab if the hilite of btn "iTunes" of cd 4 of stack gChatRevShortName is true then put fld "Members" of cd 2 of stack gChatRevShortName into myMemberList put field "Name" of cd 1 of stack gChatRevShortName into myUserName put 1 into myNumber repeat until ((item 1 of line myNumber of myMemberList is myUserName) or (item 1 of line myNumber of myMemberList is empty)) put lineOffset(myUserName,myMemberList) into myNumber end repeat if (myNumber > 0) and (myNumber <= number of lines of myMemberList) then put iTunesTrack() into myTrack if myTrack is not "execution error" then put char 2 to -2 of myTrack into myTrack else put empty into myTrack end if if item 2 of line myNumber of myMemberList is not myTrack then write "setMouse" & return & myTrack & return to socket field "IP" of card 1 end if end if send setTooltip2iTunes to me in 5 seconds end if end setTooltip2iTunes on savetofile theLines if field "message sound" of card "settings" = "beep" then beep else if field "message sound" of card "settings" = "" then --do nothing here else set the currentTime of player "message sound" of card "chat" to 1 start player "message sound" of card "chat" end if lock screen --set the textstyle of line -1 of field "chat" of card "chat" to empty if line -1 of field "chat" of card "chat" contains "http://" then put word wordoffset("http://",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" into theURL set the linktext of word wordoffset("http://",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" to theURL set the textstyle of word wordoffset("http://",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" to "Link" else if line -1 of field "chat" of card "chat" contains " www." then put "http://" & word wordoffset("www.",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" into theURL set the linktext of word wordoffset("www.",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" to theURL set the textstyle of word wordoffset("www.",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" to "Link" else if line -1 of field "chat" of card "chat" contains " ftp." then put "ftp://" & word wordoffset("ftp.",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" into theURL set the linktext of word wordoffset("ftp.",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" to theURL set the textstyle of word wordoffset("ftp.",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" to "Link" else if line -theLines to -1 of field "chat" of card "chat" contains "ftp://" then put word wordoffset("ftp://",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" into theURL set the linktext of word wordoffset("ftp://",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" to theURL set the textstyle of word wordoffset("ftp://",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" to "Link" else if line -theLines to -1 of field "chat" of card "chat" contains "@" then put offset("@",line -theLines to -1 of field "chat" of card "chat") into c if charToNum(char (c-1) of line -theLines to -1 of field "chat" of card "chat") > 32 and charToNum(char (c-1) of line -theLines to -1 of field "chat" of card "chat") < 122 and charToNum(char (c+1) of line -theLines to -1 of field "chat" of card "chat") > 32 and charToNum(char (c+1) of line -theLines to -1 of field "chat" of card "chat") < 123 then put word wordoffset("@",line -theLines to -1 of field "chat" of card "chat") of line -theLines to -1 of field "chat" of card "chat" into theURL set the linktext of word wordoffset("@",line -theLines to -1 of field "chat" of card "chat") of line -theLines to -1 of field "chat" of card "chat" to theURL set the textstyle of word wordoffset("@",line -theLines to -1 of field "chat" of card "chat") of line -theLines to -1 of field "chat" of card "chat" to "Link" end if else if line -1 of field "chat" of cd "Chat" contains "bug " then put wordoffset("bug",line -1 of field "Chat" of card "Chat") into w if word (w+1) of line -1 of field "Chat" of card "Chat" is a number then put word w to (w+1) of line -1 of field "Chat" of card "Chat" into theURL set the linktext of word w to (w+1) of line -1 of field "chat" of card "chat" to theURL set the textstyle of word w to (w+1) of line -1 of field "chat" of card "chat" to "Link" end if end if if the textstyle of char -1 of field "chat" of card "chat" contains "link" then put " " after line -1 of field "chat" of card "chat" set the textstyle of char -1 field "chat" of card "chat" to "plain" end if if the hilite of button "save to file" of card "settings" = true then if field "path" of card "settings" <> "" then put field "path" of card "settings" into thepath open file thePath for append write return & line -thelines of field "chat" of card "chat" to file thePath close file thePath --put return & line -thelines of field "chat" of card "chat" after url ("file:" & the path of button "save to file" of card "chat") end if end if end savetofile on handleThisLink theUrl if the optionKey is down then saveURL theURL else if char -4 to -1 of theurl = ".rev" or char -3 to -1 of theUrl = ".mc" then if the environment is "development" then put "Revolution" into myApp else put "ChatRev" into myApp end if answer question "Do you want to open this stack in" && myApp && "or save it to disk?" with "Open" or "Save" or "Cancel" if it is "Open" then if char 1 to 4 of theURL is "ftp." then put "ftp://" before theURL go stack url theurl else if it is "Save" then saveURL theURL end if else if ("@" is not in theUrl) and (word 1 of theURL is not "bug") then if (char -4 to -1 of theURL is not ".htm") and (char -5 to -1 of theURL is not ".html") and ("." is in char -5 to -1 of theURL) and (last char of theURL is not "/") then answer "Open this file in your browser or save to disk?" with "Open" or "Save" if it is "Save" then saveURL theURL else if char 1 to 4 of theUrl is "ftp." then put "ftp://" before theUrl revgoURL theUrl end if else if char 1 to 4 of theURL is "ftp." then put "ftp://" before theURL revgoURL theURL end if else if (theURL contains "@") and ("http://" is not in theURL) and ("ftp://" is not in theURL) and (word 1 of theURL is not "bug") then put offset("@",theURL) into c if charToNum(char (c-1) of theURL) > 32 and charToNum(char (c-1) of theURL) < 122 and charToNum(char (c+1) of theURL) > 32 and charToNum(char (c+1) of theURL) < 123 then if char 1 to 7 of theURL is not "mailto:" then revGoURL "mailto:" & theURL else revGoURL theURL end if end if else if (word 1 of theURL is "bug") and (word 2 of theURL is a number) then revGoURL ("http://support.runrev.com/bugdatabase/show_bug.cgi?id=" & word 2 of theURL) else -- this last option is probably no longer necessary if char 1 to 4 of theURL is "ftp." then put "ftp://" before theURL revgoURL theURL end if end handleThisLink on saveURL theURL if char 1 to 4 of theURL is "ftp." then put "ftp://" before theURL set the itemDelimiter to "/" put last item of theURL into myFileName ask file "Save file as..." with myFileName if it is not empty then put it into myNewFile put the fileType into myOldFileType set the fileType to "????????" put url theURL into url ("binfile:" & myNewFile) set the fileType to myOldFileType end if end saveURL on makeLinks theField if (" www." is in fld theField) or (" ftp." is in fld theField) or ("http://" is in fld theField) or (" ftp://" is in fld theField) or ("@" is in fld theField) then repeat with x = 1 to number of words in fld theField put "www.,ftp.,http://,ftp://,@" into myList repeat for each item y in myList if y is in word x of fld theField then switch y case "www." set the linkText of word x of fld theField to ("http://" & word x of fld theField) set the textStyle of word x of fld theField to "link" break case "ftp." if char 1 to 4 of word x of fld theField is "ftp." then set the linkText of word x of fld theField to ("ftp://" & word x of fld theField) set the textStyle of word x of fld theField to "link" break case "http://" set the linkText of word x of fld theField to (word x of fld theField) set the textStyle of word x of fld theField to "link" break case "ftp://" set the linkText of word x of fld theField to (word x of fld theField) set the textStyle of word x of fld theField to "link" break case "@" put offset("@",word x of fld theField) into c if not ((char (c-1) of word x of fld theField is in (return & space)) or (char (c+1) of word x of fld theField is in (return & space))) then if char 1 to 7 of word x of fld theField is not "mailto:" then set the linkText of word x of fld theField to ("mailto:" & word x of fld theField) else set the linkText of word x of fld theField to (word x of fld theField) end if set the textStyle of word x of fld theField to "link" end if break end switch end if end repeat end repeat end if end makeLinks function validIP theIP put false into rslt set the itemDelimiter to "." if the number of items of theIP is 4 then repeat for each item x in theIP if x is an integer then put true into rslt else put false into rslt exit repeat end if end repeat end if return rslt end validIP on setAbout ask "Pease enter a new text about yourself..." if it is not empty then lock screen put "/setAbout" && it into fld "Enter" send "returnInField" to fld "Enter" end if end setAbout on setEmail ask "Pease enter your e-mail address..." if it is not empty then lock screen put "/setmail" && it into fld "Enter" send "returnInField" to fld "Enter" end if end setEmail on setLabel ask "Pease enter a new label (tooltip text)" if it is not empty then lock screen put "/l" && it into fld "Enter" send "returnInField" to fld "Enter" end if end setLabel function noPendingTransfers if ("sendFile" is in the pendingMessages) or ("getFile" is in the pendingMessages) then return false end if return true end noPendingTransfers N#cPingReceived 66186751839helptype a slash (/) and a command to do one of these options: /h = Show this text. Aliases: /help /hlp /msg = A private message only that user can see. Aliases: /message /m /me = Humorous action. No aliases /label = change your tool tip (mouseover). Aliases: /l /mouse /mo /setmail = change your email. Alias: /sm /mail = send an email to a user. Alias: /ma /setabout = set your about text to something new. Alias /sa /about = look at the about of a user. Alias: /a /clear = put empty into the chat window. No aliases /disconnect = Disconnect from the server. Alias = /disc ChatRev M19 \ Ums sans serif ULucida Grande @ULucida Grande WLucida Grande ULucida Grande ULucida Grande U Andale Mono U Big Caslon U Colonna MT U #AULucida GrandeULucida Grande UGeneva @UGeneva U Charcoal U Charcoal WGenevaWGenevaUGeneva Wms sans serif UVerdana UVerdana @UVerdana UGeneva Uusesystemfont UGeneva UGeneva WGeneva (UGeneva UGeneva UGeneva @UGenevaUGenevaWGeneva ULucida Grande UGeneva WGenevaUArialWArial ULucida Grande UGeneva UMonaco UMonaco @UMonaco U HelveticaU HelveticaU HelveticaW Helvetica UGeneva UGenevaUGenevaHUGeneva U Arial Black @U Arial BlackU Arial Black@U Arial Black UTextile @UTextile UCourier UCourier @UCourier UBitstream Vera Sans UBitstream Vera Serif UCezanneUCezanneUCezanne UCezanne UAppleGaramond Lt UAppleGaramond LtUAppleGaramond LtU Curlz MTUGadget UGadget UGeorgia UTimes U TLCyrillic UN Helvetica NarrowUN Helvetica Narrow UTahoma UTahoma @UTahomaUTahomaU Charcoal UArial UBitstream Vera Sans Mono UGeneva WGeneva U Espy Sans @U Espy Sans W Espy Sans U Espy Sans @U Espy SansChatBarQDa8cRevStandaloneSettingsBscriptLibrariesInternet Geometry PrintingMacOSXfalse OSX,iconFileH/Macintosh HD/Documenten/Rev Stacks/ChatRev/ChatRev 1.2M/Icons/chat.icnsMacOS,documentTypeUNIX,fileSelectortrueWindowsfalseWindows,Comments&This version 2004 by Mark SchonewilleWindows,LegalCopyright$Copyright2004 Von Gierke and othersUNIX,pageSetupfalseOSX,smallappicon1994OdtfalseWindows,copyright-2004 von Gierke All rights reserved worldwide answerDialogtrue SolIntelfalseWindows,FileDescriptionChatRev 1.2M19 for WindowsOSX,longVersionChatRev 1.2M19 MacOSfatfalseOSX,copyright$Copyright2004 by Von Gierke and co.MacOS,versionnumber11MacOS,ReleaseFinalMacOS,versionnumber22MacOS,versionnumber30nameChatRev 1.2M19Hp9k700falseOSX,shortVersion1.2M19Windows,fileversion11Windows,fileversion22MacOS,non-releaseWindows,fileversion30Windows,fileversion40cursorsfalseMacOS,dynamicMemorytrueIrisfalseMacOS,PreferredSize15000 MacOSPPCtrueMacOS,creatorcRevWindows,SpecialBuild1.2M19 OSX,nameChatRev OSX,appicon1993MacOS,longVersionChatRev 1.2M19MacOS,includeResourcesIcons/chat rsrcOSX,documentTypeLinuxfalseWindows,documenticonFile inclusionssearchSPARCfalseOSX,documentExtensionUNIX,printerChooserfalseMacOS,shortVersion1.0.0.0MacOS,MinimumSize15000 MacOS,Region1rs6000falseWindows,productversion11Windows,productversion22Windows,productversion30Bsdfalse OSX,info(ChatRev 1.2M19 built by Mark SchonewilleWindows,productversion40 MacOS68kfalse askDialogtrueWindows,iconFileQ/Macintosh HD/Documenten/Rev Stacks/ChatRev/ChatRev 1.2M/Icons/ChatRev 1.2M18.icoOSX,signaturecRevWindows,ProductNameChatRev 1.2M19UNIX,colorChoosertrue SolSparcfalseWindows,companynamecREVGeometryCachestackID2128 cREVGeneral@ scriptChecksumu-r debugObjectsstack "ChatRev M18" handlerListcloseStackRequest preOpenStack openStack checkLastMessageSentTime preOpenCard replaceSmileys smileyServer mySmileysList implementedSmileys saveStackRequest cleanUp readPrefs smileURL stackToFilename macSysVersion commandKeyDown allSmileServers removeFinalEmptyLines setFieldBackColor iTunesTrack setTooltip2iTunes savetofile handleThisLink saveURL makeLinks validIP setAbout setEmail setLabel noPendingTransfers breakPointsscriptSelectionchar 34074 to 34073 bookmarks tempScript prevHandler readPrefsscriptbh

on closeStackRequest

if (the target is "card" && quote & "chat" & quote) or (the target is "card" && quote & "login" & quote) or ¬

(the target is "card" && quote & "register" & quote) or (the target is "card" && quote & "settings" & quote) then

answer warning "Are you sure you want to close this stack (and disconnect)?" with "Okay" or "Cancel"

if it is "Okay" then

send "disconnect" to btn "Connect" of cd 1

if the environment is "development" then

save this stack

pass closestackrequest

end if

cleanUp

quit

end if

else

pass closestackrequest

end if

end closeStackRequest

on preOpenStack

global gChatRevShortName, gMainStackRect

if (the target is "card" && quote & "chat" & quote) or (the target is "card" && quote & "login" & quote) or ¬

(the target is "card" && quote & "register" & quote) or (the target is "card" && quote & "settings" & quote) then

put the short name of this stack into gChatRevShortName

send "restoreStyleMenu" to btn "Style Storage" of cd "Chat" of stack gChatRevShortName

readPrefs

get the result

if gMainStackRect is a rect then

set the rect of stack gChatRevShortName to gMainStackRect

else

set the rect of this stack to 1,1,640,480

set the loc of me to the screenLoc

end if

set the label of btn "Status" of cd 2 of stack gChatRevShortName to "Disconnect"

lock messages

set the menuHistory of btn "Go" to 1

set the label of btn "Connect" to "Connect"

setFieldBackColor

if the platform is not "MacOS" then

hide btn "iTunes" of cd "Settings" of stack gChatRevShortName

end if

unlock messages

end if

pass preOpenStack

end preOpenStack

-- handler added by Mark S

on openStack

global gChatRevShortName

if (the target is "card" && quote & "chat" & quote) or (the target is "card" && quote & "login" & quote) then

choose browse tool

checkLastMessageSentTime

send "setMenus" to btn "Style Storage" cd "Chat" of stack gChatRevShortName

if the platform is "MacOS" then

show btn "iTunes" of cd "Settings" of stack gChatRevShortName

else

hide btn "iTunes" of cd "Settings" of stack gChatRevShortName

end if

end if

pass openStack

end openStack

-- handler added by Mark S

on checkLastMessageSentTime

global gChatRevShortName

if the cLastMessageSentTime of cd 2 is empty then

set the cLastMessageSentTime of cd 2 to the long time

end if

put the cLastMessageSentTime of cd 2 into myIdleTime

put ((fld "Idle Time" of cd 4 of stack gChatRevShortName)*60) into myTimeLimit

convert myIdleTime to seconds

if the label of btn "Status" of cd 2 of stack gChatRevShortName is not "Disconnect" then

if (the seconds - myidleTime) > myTimeLimit then

set the label of btn "Status" of cd 2 of stack gChatRevShortName to "Away"

end if

end if

put ((fld "Idle Time" of cd 4 of stack gChatRevShortName) * 60) - 1 into myIdleTimeSecs

send "checkLastMessageSentTime" to me in myIdleTimeSecs seconds

end checkLastMessageSentTime

on preOpenCard

lock screen

revUpdateGeometry

pass preOpenCard

end preOpenCard

-- handler by Mark S

-- replace smileys

function replaceSmileys theMsg

put smileyServer() into mySmileServer

put false into mySmileyFound

if the hilite of btn "Replace smileys" of cd 4 is true then

implementedSmileys smiley

put mySmileysList() into mySmileys

repeat with x = 1 to (number of lines of mySmileys)

put smiley[x] into tempVar --for debugging

if smiley[x] is in theMsg then

put true into mySmileyFound

put the length of smiley[x] into mySmileyLength

repeat until smiley[x] is not in theMsg

put offset(smiley[x],theMsg) into c

delete char (c+1) to (c+mySmileyLength-1) of theMsg

put ("<img src=" & quote & mySmileServer & line x of mySmileys & quote & ">") into char c of theMsg

end repeat

end if

end repeat

if mySmileyFound then put "<br> " after theMsg

end if

return (theMsg & numToChar(11) & mySmileyFound)

end replaceSmileys

function smileyServer

global gChatRevShortName

put line lineoffset(the label of btn "Smile Server" of cd 4 of stack gChatRevShortName,btn "Smile Server" of cd 4 of stack gChatRevShortName) of the cServers of btn "Smile Server" of cd 4 of stack gChatRevShortName into mySmileServer

if last char of mySmileServer is not "/" then put "/" after mySmileServer

return mySmileServer

end smileyServer

function mySmileysList

put "smile.gif" & return & ¬

"wink.gif" & return & ¬

"sad.gif" & return & ¬

"cry.gif" & return & ¬

"rasp.gif" & return & ¬

"grin.gif" & return & ¬

"shock.gif" & return & ¬

"love.gif" & return & ¬

"rolleyes.gif" & return & ¬

"cool.gif" & return & ¬

"sneaky.gif" & return & ¬

"bored.gif" into mySmileys

return mySmileys

end mySmileysList

on implementedSmileys @smiley

put ":-)" into smiley[1]

put ";-)" into smiley[2]

put ":-(" into smiley[3]

put ":'-(" into smiley[4]

put ":-p" into smiley[5]

put ":-D" into smiley[6]

put "=:-o" into smiley[7]

put ":-*" into smiley[8]

put ":-/" into smiley[9]

put "8-)" into smiley[10]

put ":^)" into smiley[11]

put ":-|" into smiley[12]

end implementedSmileys

on saveStackRequest

global gChatRevShortName

cleanUp

pass saveStackRequest

end saveStackRequest

on cleanUp

global gChatRevShortName,gLogViewerApp

set the cursor to watch

set the itemDelimiter to numToChar(11)

put btn "IP List" of cd 1 of stack gChatRevShortName into item 1 of myPrefs

put the label of btn "IP List" of cd 1 of stack gChatRevShortName into item 2 of myPrefs

put fld "Name" of cd 1 of stack gChatRevShortName into item 3 of myPrefs

put fld "Pass" of cd 1 of stack gChatRevShortName into item 4 of myPrefs

put fld "Port" of cd 1 of stack gChatRevShortName into item 5 of myPrefs

put fld "Nickname" of cd 3 of stack gChatRevShortName into item 6 of myPrefs

put fld "Password" of cd 3 of stack gChatRevShortName into item 7 of myPrefs

put fld "E-Mail" of cd 3 of stack gChatRevShortName into item 8 of myPrefs

put fld "MouseOver" of cd 3 of stack gChatRevShortName into item 9 of myPrefs

put fld "About" of cd 3 of stack gChatRevShortName into item 10 of myPrefs

put fld "Message Sound" of cd 4 of stack gChatRevShortName into item 11 of myPrefs

put fld "Login Sound" of cd 4 of stack gChatRevShortName into item 12 of myPrefs

put fld "Path" of cd 4 of stack gChatRevShortName into item 13 of myPrefs

put fld "Autoreply Message" of cd 4 of stack gChatRevShortName into item 14 of myPrefs

put fld "Idle Time" of cd 4 of stack gChatRevShortName into item 15 of myPrefs

-- put fld "Login Sound" of cd 4 of stack gChatRevShortName into item 16 of myPrefs

put the hilite of btn "Receive HTML" of cd 4 of stack gChatRevShortName into item 17 of myPrefs

put the hilite of btn "Replace Smileys" of cd 4 of stack gChatRevShortName into item 18 of myPrefs

put the hilite of btn "Press enter for multiple lines" of cd 4 of stack gChatRevShortName into item 19 of myPrefs

put the label of btn "Smile Server" of cd 4 of stack gChatRevShortName into item 20 of myPrefs

put btn "IP URL" of cd 1 of stack gChatRevShortName into item 21 of myPrefs

put the label of btn "IP URL" of cd 1 of stack gChatRevShortName into item 22 of myPrefs

put the rect of this stack into item 23 of myPrefs

put fld "IP" of cd 1 of stack gChatRevShortName into item 24 of myPrefs

put the backgroundcolor of grc "message" of cd 4 of stack gChatRevShortName into item 25 of myPrefs

put the backgroundcolor of grc "privmessage" of cd 4 of stack gChatRevShortName into item 26 of myPrefs

put the thumbPosition of scrollbar "Sound Level" of cd 4 of stack gChatRevShortName into item 27 of myPrefs

set the thumbPosition of scrollbar "Sound Level" of cd 4 of stack gChatRevShortName to 75

put the hilite of btn "Save to file" of cd 4 of stack gChatRevShortName into item 28 of myPrefs

set the hilite of btn "Save to file" of cd 4 of stack gChatRevShortName to false

put gLogViewerApp into item 29 of myPrefs

put the thumbposition of scrollbar "sound level" of cd 4 into item 30 of myPrefs

put the hilite of btn "Enable Speech" of cd 4 into item 31 of myPrefs

put the loc of window "Colour Palette" into item 32 of myPrefs

put the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName into item 33 of myPrefs

put the textFont of fld "Chat" of cd "Chat" of stack gChatRevShortName into item 34 of myPrefs

if there is a window "Colour Palette" then

put the bottomLeft of window "Colour Palette" into item 35 of myPrefs

else

put the cCustomLoc of stack "Colour Palette" into item 35 of myPrefs

end if

if there is a window "Smileys" then

put the bottomLeft of window "Smileys" into item 36 of myPrefs

else

put the cCustomLoc of stack "Smileys" into item 36 of myPrefs

end if

put the short name of this stack & return & myPrefs into myPrefs

put myPrefs into url ("file:" & stackToFilename("User Data/User Data"))

put empty into btn "IP List" of cd 1 of stack gChatRevShortName

set the fileName of image "Default Smile" of cd 2 of stack gChatRevShortName to empty

set the icon of btn "Insert Smile" of cd 2 of stack gChatRevShortName to empty

put empty into fld "Enter" of cd 2 of stack gChatRevShortName

put empty into fld "Chat" of cd 2 of stack gChatRevShortName

put empty into fld "Members" of cd 2 of stack gChatRevShortName

put empty into fld "Log" of cd 1 of stack gChatRevShortName

put empty into fld "Name" of cd 1 of stack gChatRevShortName

put empty into fld "Pass" of cd 1 of stack gChatRevShortName

put empty into fld "IP" of cd 1 of stack gChatRevShortName

put empty into fld "Port" of cd 1 of stack gChatRevShortName

put empty into fld "Nickname" of cd 3 of stack gChatRevShortName

put empty into fld "Password" of cd 3 of stack gChatRevShortName

put empty into fld "E-Mail" of cd 3 of stack gChatRevShortName

put empty into fld "MouseOver" of cd 3 of stack gChatRevShortName

put empty into fld "About" of cd 3 of stack gChatRevShortName

put empty into fld "Message Sound" of cd 4 of stack gChatRevShortName

put empty into fld "Login Sound" of cd 4 of stack gChatRevShortName

put empty into fld "Path" of cd 4 of stack gChatRevShortName

put empty into btn "IP URL" of cd 1 of stack gChatRevShortName

set the label of btn "IP URL" of cd 1 of stack gChatRevShortName to empty

repeat for each char x in "pbiu"

set the hilite of btn x of cd 2 of stack gChatRevShortName to false

end repeat

set the cTextStyle of fld "Enter" of cd 2 of stack gChatRevShortName to empty

set the itemDel to comma

put "Threads,Text,Edit,Thread,Create" into myForumFields

repeat for each item x in myForumFields

put empty into fld x of cd "Forum"

end repeat

set the backgroundColor of graphic "Selected Colour" of cd 1 of stack "Colour Palette" to 0,0,0

set the backgroundColor of graphic "Old Colour" of cd 1 of stack "Colour Palette" to 0,0,0

set the fileName of image "Smiley" of cd 4 to empty

if there is a window "Smileys" then close window "Smileys"

if there is a window "Colour Palette" then close window "Colour Palette"

end cleanUp

on readPrefs

global gChatRevShortName,gMainStackRect,gLogViewerApp

put "http://www.revolutionboard.de/bvg/ip.txt" into myDfltURL

put empty into myPrefs

set the cursor to watch

put stackToFilename("User Data") into myUserDataFolder

if there is not a folder myUserDataFolder then create folder myUserDataFolder

if there is not a folder (myUserDataFolder & "/Smileys") then

put "(Local" into line 5 of btn "Smile Server" of cd 4 of stack gChatRevShortName

else

put "Local" into line 5 of btn "Smile Server" of cd 4 of stack gChatRevShortName

end if

put stackToFilename("User Data/User Data") into myPrefsFilePath

put "file:" before myPrefsFilePath

put url myPrefsFilePath into myPrefs

if myPrefs is not empty then

if line 1 of myPrefs is not (the short name of this stack) then

beep

answer warning "Sorry, the user data are incompatible with this version" & return & " of ChatRev." && ¬

"Please enter your user data again." with "Okay"

end if

end if

delete line 1 of myPrefs

set the cServers of btn "Smile Server" of cd 4 of stack gChatRevShortName to allSmileServers()

set the itemDelimiter to numToChar(11)

put item 1 of myPrefs into btn "IP List" of cd 1 of stack gChatRevShortName

set the label of btn "IP List" of cd 1 of stack gChatRevShortName to item 2 of myPrefs

put item 3 of myPrefs into fld "Name" of cd 1 of stack gChatRevShortName

put item 4 of myPrefs into fld "Pass" of cd 1 of stack gChatRevShortName

if item 5 of myPrefs is not empty then

put item 5 of myPrefs into fld "Port" of cd 1 of stack gChatRevShortName

else

put "80" into fld "Port" of cd 1 of stack gChatRevShortName

end if

put item 6 of myPrefs into fld "Nickname" of cd 3 of stack gChatRevShortName

put item 7 of myPrefs into fld "Password" of cd 3 of stack gChatRevShortName

put item 8 of myPrefs into fld "E-Mail" of cd 3 of stack gChatRevShortName

put item 9 of myPrefs into fld "MouseOver" of cd 3 of stack gChatRevShortName

put item 10 of myPrefs into fld "About" of cd 3 of stack gChatRevShortName

put item 11 of myPrefs into fld "Message Sound" of cd 4 of stack gChatRevShortName

if there is a file (item 11 of myPrefs) then

set the filename of player "message sound" of card "chat" to (item 11 of myPrefs)

set the filename of player "message sound" of cd "Settings" to (item 11 of myPrefs)

else

set the filename of player "message sound" of card "chat" to empty

set the filename of player "message sound" of cd "Settings" to empty

end if

if item 12 of myPrefs is not empty then

put item 12 of myPrefs into fld "Login Sound" of cd 4 of stack gChatRevShortName

if there is a file (item 12 of myPrefs) then

set the filename of player "login sound" of card "chat" to (item 12 of myPrefs)

set the filename of player "login sound" to (item 12 of myPrefs)

else

set the filename of player "login sound" of card "chat" to empty

set the filename of player "login sound" of cd "Settings" to empty

end if

else

put "beep" into fld "Login Sound" of cd 4 of stack gChatRevShortName

end if

put item 13 of myPrefs into fld "Path" of cd 4 of stack gChatRevShortName

if item 14 of myPrefs is not empty then

put item 14 of myPrefs into fld "Autoreply Message" of cd 4 of stack gChatRevShortName

else

put "I am currently away from my computer." into fld "Autoreply Message" of cd 4 of stack gChatRevShortName

end if

if item 15 of myPrefs is not empty then

put item 15 of myPrefs into fld "Idle Time" of cd 4 of stack gChatRevShortName

else

put 20 into fld "Idle Time" of cd 4 of stack gChatRevShortName

end if

--put item 16 of myPrefs into fld "Login Sound" of cd 4 of stack gChatRevShortName

if item 17 of myPrefs is not empty then set the hilite of btn "Receive HTML" of cd 4 of stack gChatRevShortName to item 17 of myPrefs

if item 18 of myPrefs is not empty then

set the hilite of btn "Replace Smileys" of cd 4 of stack gChatRevShortName to item 18 of myPrefs

set the enabled of btn "Smile Server" of cd 4 of stack gChatRevShortName to item 18 of myPrefs

end if

if item 19 of myPrefs is not empty then set the hilite of btn "Press enter for multiple lines" of cd 4 of stack gChatRevShortName to item 19 of myPrefs

if item 20 of myPrefs is not empty then

set the label of btn "Smile Server" of cd 4 of stack gChatRevShortName to item 20 of myPrefs

else

set the label of btn "Smile Server" of cd 4 of stack gChatRevShortName to line 1 of btn "Smile Server" of cd 4 of stack gChatRevShortName

end if

if item 21 of myPrefs is not empty then

put item 21 of myPrefs into btn "IP URL" of cd 1 of stack gChatRevShortName

set the label of btn "IP URL" of cd 1 of stack gChatRevShortName to item 22 of myPrefs

else

put myDfltURL into btn "IP URL" of cd 1 of stack gChatRevShortName

set the label of btn "IP URL" to myDfltURL

end if

put item 23 of myPrefs into gMainStackRect

put the itemDelimiter into myOldDel

set the itemDelimiter to comma

add 20 to last item of gMainStackRect

set the itemDelimiter to myOldDel

put item 24 of myPrefs into fld "IP" of cd 1 of stack gChatRevShortName

if item 25 of myPrefs is not empty then

set the backgroundcolor of grc "message" of cd 4 of stack gChatRevShortName to item 25 of myPrefs

else

set the backgroundcolor of grc "message" of cd 4 of stack gChatRevShortName to 255,0,0

end if

if item 26 of myPrefs is not empty then

set the backgroundcolor of grc "privmessage" of cd 4 of stack gChatRevShortName to item 26 of myPrefs

else

set the backgroundcolor of grc "privmessage" of cd 4 of stack gChatRevShortName to "30,58,238"

end if

if item 27 of myPrefs is a number then

set the thumbPosition of scrollbar "Sound Level" of cd 4 of stack gChatRevShortName to item 27 of myPrefs

else

set the thumbPosition of scrollbar "Sound Level" of cd 4 of stack gChatRevShortName to 75

end if

if item 28 of myPrefs is not empty then

set the hilite of btn "Save to file" of cd 4 of stack gChatRevShortName to item 28 of myPrefs

else

set the hilite of btn "Save to file" of cd 4 of stack gChatRevShortName to false

end if

if (char 1 of menuItem 5 of btn "Smile Server" of cd 4 of stack gChatRevShortName is "(") and ¬

(the label of btn "Smile Server" of cd 4 of stack gChatRevShortName is "Local") then

set the label of btn "Smile Server" of cd 4 of stack gChatRevShortName to line 1 of btn "Smile Server" of cd 4 of stack gChatRevShortName

end if

put (line (lineoffset(the label of btn "Smile Server" of cd 4,btn "Smile Server" of cd 4)) of the cServers of cd btn "Smile Server" of cd 4) into mySmileServer

if char 1 to 8 of mySmileServer is "binfile:" then delete char 1 to 8 of mySmileServer

set the fileName of image "Default Smile" of cd 2 to mySmileServer & "smile.gif"

get the result

set the icon of btn "Insert Smile" of cd 2 to the short id of image "Default Smile" of cd 2

set the fileName of image "Smiley" of cd 4 to mySmileServer & "smile.gif"

put item 29 of myPrefs into gLogViewerApp

if item 30 of myPrefs is not empty then

set the thumbposition of scrollbar "sound level" of cd 4 to item 30 of myPrefs

else

set the thumbposition of scrollbar "sound level" of cd 4 to 50

end if

if item 31 of myPrefs is in "true,false" then

set the hilite of btn "Enable Speech" of cd 4 to item 31 of myPrefs

else

set the hilite of btn "Enable Speech" of cd 4 to false

end if

if item 32 of myPrefs is a point then

put the loc of window "Colour Palette" into item 32 of myPrefs

end if

set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to item 33 of myPrefs

set the textFont of fld "Chat" of cd "Chat" of stack gChatRevShortName to item 34 of myPrefs

if item 35 of myPrefs is a point then

set the cCustomLoc of stack "Colour Palette" to item 35 of myPrefs

else

set the cCustomLoc of stack "Colour Palette" to empty

end if

if item 36 of myPrefs is a point then

set the cCustomLoc of stack "Smileys" to item 36 of myPrefs

else

set the cCustomLoc of stack "Smileys" to empty

end if

end readPrefs

function smileURL theSmiley

put smileyServer() into mySmileServer

implementedSmileys smiley

put mySmileysList() into mySmileys

repeat with x = 1 to number of lines of mySmileys

if smiley[x] is theSmiley then

return mySmileServer & line x of mySmileys

end if

end repeat

end smileURL

function stackToFilename theFile

set the itemDelimiter to "/"

if the platform is "MacOS" then

put macSysVersion() into myMacSysVersion

else

put 0 into myMacSysVersion

end if

if myMacSysVersion < 10 then

-- Mac Classic, Linux, Windows

put item 1 to -2 of value(word 2 of the long name of stack (the mainStack of this stack)) into myPath

-- put item 1 to -2 of value(word 2 of long name of stack (the mainStack of this stack)) into myPath

else if myMacSysVersion >= 10 then

-- Mac OS X

put item 1 to -5 of value(word 2 of the long name of stack (the mainStack of this stack)) into myPath

--put item 1 to -5 of value(word 2 of long name of stack (the mainStack of this stack)) into myPath

end if

if char 1 of theFile is not "/" then put "/" after myPath

return myPath & theFile

end stackToFilename

function macSysVersion

put the itemDelimiter into myOldDel

set the itemdelimiter to "."

put item 1 of the systemVersion into myOSVersion

set itemDelimiter to myOldDel

return myOSVersion

end macSysVersion

on commandKeyDown k

switch k

case "S"

if the environment is "development" then

save this stack

readPrefs

end if

break

case (k is in "'?/")

send ("commandKeyDown" && quote & "/" & quote) to this cd

break

default

pass commandKeyDown

beak

end switch

end commandKeyDown

function allSmileServers

return "http://home.wanadoo.nl/mark.sch/smile/" & return & ¬

"http://www.ihug.org/ehug/smile/" & return & ¬

"http://www.ihug.org/ehug/smile2/" & return & ¬

"http://homepage.mac.com/bvg/smilies/" & return & ¬

"binfile:" & stackToFilename("User Data/Smileys/")

end allSmileServers

function removeFinalEmptyLines theHtmlData

repeat until (char -7 to -1 of last word of theHtmlData) is not "<p></p>"

delete char -7 to -1 of last word of theHtmlData

if last char of theMessage is space then delete last char of theHtmlData

end repeat

return theHtmlData

end removeFinalEmptyLines

on setFieldBackColor

global gChatRevShortName

put "237,243,254" into myBackColor

if the platForm is "MacOS" then

if macSysversion() < 10 then put "232,232,232" into myBackColor

end if

set the backgroundColor of fld "Members" of cd 2 of stack gChatRevShortName to myBackColor

end setFieldBackColor

-- this function uses above AppleScript to

-- retrieve the song information

function iTunesTrack

-- the stackToFilename function puts the path to the script

-- into the variable myScriptFile. This lines needs

-- adjustment if you implement this in your own stack

put stackToFilename("User Data/iTunes track.scpt") into myScriptFile

if there is a file myScriptFile then

if the platForm is "MacOS" then

if macSysVersion() <= 9 then

put ("run script" && quote & revMacFromUnixPath(myScriptFile) & quote) into myScript

wait 1

else

put ("run script" && quote & myScriptFile & quote) into myScript

end if

do myScript as AppleScript

return the result

end if

end if

return empty

end iTunesTrack

-- gets info from above function and

-- updates tooltip

on setTooltip2iTunes

global gChatRevShortName

set the itemDelimiter to tab

if the hilite of btn "iTunes" of cd 4 of stack gChatRevShortName is true then

put fld "Members" of cd 2 of stack gChatRevShortName into myMemberList

put field "Name" of cd 1 of stack gChatRevShortName into myUserName

put 1 into myNumber

repeat until ((item 1 of line myNumber of myMemberList is myUserName) or (item 1 of line myNumber of myMemberList is empty))

put lineOffset(myUserName,myMemberList) into myNumber

end repeat

if (myNumber > 0) and (myNumber <= number of lines of myMemberList) then

put iTunesTrack() into myTrack

if myTrack is not "execution error" then

put char 2 to -2 of myTrack into myTrack

else

put empty into myTrack

end if

if item 2 of line myNumber of myMemberList is not myTrack then

write "setMouse" & return & myTrack & return to socket field "IP" of card 1

end if

end if

send setTooltip2iTunes to me in 5 seconds

end if

end setTooltip2iTunes

on savetofile theLines

if field "message sound" of card "settings" = "beep" then

beep

else if field "message sound" of card "settings" = "" then

--do nothing here

else

set the currentTime of player "message sound" of card "chat" to 1

start player "message sound" of card "chat"

end if

lock screen

--set the textstyle of line -1 of field "chat" of card "chat" to empty

if line -1 of field "chat" of card "chat" contains "http://" then

put word wordoffset("http://",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" into theURL

set the linktext of word wordoffset("http://",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" to theURL

set the textstyle of word wordoffset("http://",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" to "Link"

else if line -1 of field "chat" of card "chat" contains " www." then

put "http://" & word wordoffset("www.",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" into theURL

set the linktext of word wordoffset("www.",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" to theURL

set the textstyle of word wordoffset("www.",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" to "Link"

else if line -1 of field "chat" of card "chat" contains " ftp." then

put "ftp://" & word wordoffset("ftp.",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" into theURL

set the linktext of word wordoffset("ftp.",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" to theURL

set the textstyle of word wordoffset("ftp.",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" to "Link"

else if line -theLines to -1 of field "chat" of card "chat" contains "ftp://" then

put word wordoffset("ftp://",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" into theURL

set the linktext of word wordoffset("ftp://",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" to theURL

set the textstyle of word wordoffset("ftp://",line -1 of field "chat" of card "chat") of line -1 of field "chat" of card "chat" to "Link"

else if line -theLines to -1 of field "chat" of card "chat" contains "@" then

put offset("@",line -theLines to -1 of field "chat" of card "chat") into c

if charToNum(char (c-1) of line -theLines to -1 of field "chat" of card "chat") > 32 and charToNum(char (c-1) of line -theLines to -1 of field "chat" of card "chat") < 122 and charToNum(char (c+1) of line -theLines to -1 of field "chat" of card "chat") > 32 and charToNum(char (c+1) of line -theLines to -1 of field "chat" of card "chat") < 123 then

put word wordoffset("@",line -theLines to -1 of field "chat" of card "chat") of line -theLines to -1 of field "chat" of card "chat" into theURL

set the linktext of word wordoffset("@",line -theLines to -1 of field "chat" of card "chat") of line -theLines to -1 of field "chat" of card "chat" to theURL

set the textstyle of word wordoffset("@",line -theLines to -1 of field "chat" of card "chat") of line -theLines to -1 of field "chat" of card "chat" to "Link"

end if

else if line -1 of field "chat" of cd "Chat" contains "bug " then

put wordoffset("bug",line -1 of field "Chat" of card "Chat") into w

if word (w+1) of line -1 of field "Chat" of card "Chat" is a number then

put word w to (w+1) of line -1 of field "Chat" of card "Chat" into theURL

set the linktext of word w to (w+1) of line -1 of field "chat" of card "chat" to theURL

set the textstyle of word w to (w+1) of line -1 of field "chat" of card "chat" to "Link"

end if

end if

if the textstyle of char -1 of field "chat" of card "chat" contains "link" then

put " " after line -1 of field "chat" of card "chat"

set the textstyle of char -1 field "chat" of card "chat" to "plain"

end if

if the hilite of button "save to file" of card "settings" = true then

if field "path" of card "settings" <> "" then

put field "path" of card "settings" into thepath

open file thePath for append

write return & line -thelines of field "chat" of card "chat" to file thePath

close file thePath

--put return & line -thelines of field "chat" of card "chat" after url ("file:" & the path of button "save to file" of card "chat")

end if

end if

end savetofile

on handleThisLink theUrl

if the optionKey is down then

saveURL theURL

else if char -4 to -1 of theurl = ".rev" or char -3 to -1 of theUrl = ".mc" then

if the environment is "development" then

put "Revolution" into myApp

else

put "ChatRev" into myApp

end if

answer question "Do you want to open this stack in" && myApp && "or save it to disk?" with "Open" or "Save" or "Cancel"

if it is "Open" then

if char 1 to 4 of theURL is "ftp." then put "ftp://" before theURL

go stack url theurl

else if it is "Save" then

saveURL theURL

end if

else if ("@" is not in theUrl) and (word 1 of theURL is not "bug") then

if (char -4 to -1 of theURL is not ".htm") and (char -5 to -1 of theURL is not ".html") ¬

and ("." is in char -5 to -1 of theURL) and (last char of theURL is not "/") then

answer "Open this file in your browser or save to disk?" with "Open" or "Save"

if it is "Save" then

saveURL theURL

else

if char 1 to 4 of theUrl is "ftp." then put "ftp://" before theUrl

revgoURL theUrl

end if

else

if char 1 to 4 of theURL is "ftp." then put "ftp://" before theURL

revgoURL theURL

end if

else if (theURL contains "@") and ("http://" is not in theURL) and ("ftp://" is not in theURL) and (word 1 of theURL is not "bug") then

put offset("@",theURL) into c

if charToNum(char (c-1) of theURL) > 32 and charToNum(char (c-1) of theURL) < 122 and charToNum(char (c+1) of theURL) > 32 and charToNum(char (c+1) of theURL) < 123 then

if char 1 to 7 of theURL is not "mailto:" then

revGoURL "mailto:" & theURL

else

revGoURL theURL

end if

end if

else if (word 1 of theURL is "bug") and (word 2 of theURL is a number) then

revGoURL ("http://support.runrev.com/bugdatabase/show_bug.cgi?id=" & word 2 of theURL)

else

-- this last option is probably no longer necessary

if char 1 to 4 of theURL is "ftp." then put "ftp://" before theURL

revgoURL theURL

end if

end handleThisLink

on saveURL theURL

if char 1 to 4 of theURL is "ftp." then put "ftp://" before theURL

set the itemDelimiter to "/"

put last item of theURL into myFileName

ask file "Save file as..." with myFileName

if it is not empty then

put it into myNewFile

put the fileType into myOldFileType

set the fileType to "????????"

put url theURL into url ("binfile:" & myNewFile)

set the fileType to myOldFileType

end if

end saveURL

on makeLinks theField

if (" www." is in fld theField) or (" ftp." is in fld theField) or ("http://" is in fld theField) or (" ftp://" is in fld theField) or ("@" is in fld theField) then

repeat with x = 1 to number of words in fld theField

put "www.,ftp.,http://,ftp://,@" into myList

repeat for each item y in myList

if y is in word x of fld theField then

switch y

case "www."

set the linkText of word x of fld theField to ("http://" & word x of fld theField)

set the textStyle of word x of fld theField to "link"

break

case "ftp."

if char 1 to 4 of word x of fld theField is "ftp." then set the linkText of word x of fld theField to ("ftp://" & word x of fld theField)

set the textStyle of word x of fld theField to "link"

break

case "http://"

set the linkText of word x of fld theField to (word x of fld theField)

set the textStyle of word x of fld theField to "link"

break

case "ftp://"

set the linkText of word x of fld theField to (word x of fld theField)

set the textStyle of word x of fld theField to "link"

break

case "@"

put offset("@",word x of fld theField) into c

if not ((char (c-1) of word x of fld theField is in (return & space)) or (char (c+1) of word x of fld theField is in (return & space))) then

if char 1 to 7 of word x of fld theField is not "mailto:" then

set the linkText of word x of fld theField to ("mailto:" & word x of fld theField)

else

set the linkText of word x of fld theField to (word x of fld theField)

end if

set the textStyle of word x of fld theField to "link"

end if

break

end switch

end if

end repeat

end repeat

end if

end makeLinks

function validIP theIP

put false into rslt

set the itemDelimiter to "."

if the number of items of theIP is 4 then

repeat for each item x in theIP

if x is an integer then

put true into rslt

else

put false into rslt

exit repeat

end if

end repeat

end if

return rslt

end validIP

on setAbout

ask "Pease enter a new text about yourself..."

if it is not empty then

lock screen

put "/setAbout" && it into fld "Enter"

send "returnInField" to fld "Enter"

end if

end setAbout

on setEmail

ask "Pease enter your e-mail address..."

if it is not empty then

lock screen

put "/setmail" && it into fld "Enter"

send "returnInField" to fld "Enter"

end if

end setEmail

on setLabel

ask "Pease enter a new label (tooltip text)"

if it is not empty then

lock screen

put "/l" && it into fld "Enter"

send "returnInField" to fld "Enter"

end if

end setLabel

function noPendingTransfers

if ("sendFile" is in the pendingMessages) or ("getFile" is in the pendingMessages) then

return false

end if

return true

end noPendingTransfers

login Pon preOpenCard revupdategeometry select text of fld "Name" end preOpenCard on commandKeyDown k if k = "/" then go cd 1 of stack "Help" as modeless else pass commandKeyDown end commandKeyDown # cREVGeneralscriptChecksumryRQm bookmarks handlerListpreOpenCard commandKeyDownscriptSelectionchar 113 to 112 prevHandler preOpenCard tempScriptscript

on preOpenCard

revupdategeometry

select text of fld "Name"

end preOpenCard

on commandKeyDown k

if k = "/" then go cd 1 of stack "Help" as modeless

else pass commandKeyDown

end commandKeyDown

cREVGeometryCacheIDs)1093556362001163310935539570031626109015587243810051093783776002176810931093249841580109355535800116301101213411519199410934528742821587110121320022219931093776992003175911018238914032097110182358806120841101823588773208810903384365781008109041619982010111090155882974100611018235905182096110098848059719651093553953002162511014719040192030109283626246515481093777078001176211018235884022086109378379200217691101823587751208210901558672861004109015585594710031100294247139189210937713550031751109239411438015021093771355004175210937713550051753109377135500617541093107629144157811018239036872098109041620581410121101823590309209511018235900672094109015589474810071101823587613208111018235874572080cREVGeometrycacheorder1093107629144 1090338436578 1090416199820 1101213200222 1092394114380 1093452874282 1090155855947 1090155867286 1090155872438 1093553953002 1093553957003 1093555358001 1093556362001 1093777078001 1100294247139 total41, 3d !"$&(./012chat P on preOpenCard revupdategeometry set the vScroll of field "chat" of card "chat" to the formattedHeight of field "chat" of card "chat" set the icon of btn "Insert Smile" to 1737 select text of fld "Enter" end preOpenCard on setStyle theFlag,theStyle put theStyle into myNewStyle put the selectedChunk into mySelectedChunk put "bold,italic,underline" into myStyleList put the cTextStyle of fld "enter" into myTextStyle put number of chars of fld "Enter" into myOldNrOfChars if theFlag is "remove" then delete item itemoffset(myNewStyle,myTextStyle) of myTextStyle if the optionKey is down then if the short name of the selectedField is "Enter" then put (item itemOffset(theStyle,myStyleList) of ",,") after the selection set the textStyle of char (myOldNrOfChars + 1) to (myOldNrOfChars+4) of fld "Enter" to the cTextStyle of fld "enter" end if end if set the cTextStyle of fld "enter" to myTextStyle else if myNewStyle is not in myTextStyle then if myTextStyle is not empty then put comma after myTextStyle put myNewStyle after myTextStyle set the cTextStyle of fld "enter" to myTextStyle if the optionKey is down then if the short name of the selectedField is "Enter" then put (item itemOffset(theStyle,myStyleList) of ",,") after the selection set the textStyle of char (myOldNrOfChars + 1) to (myOldNrOfChars+3) of fld "Enter" to the cTextStyle of fld "enter" end if end if end if end if if the selection is not empty then set the textStyle of mySelectedChunk to the cTextStyle of fld "Enter" end setStyle on commandKeyDown k if k = "/" then go cd 2 of stack "Help" as modeless else pass commandKeyDown end commandKeyDown on userAction theAction,theMember lock screen switch theAction case "Send Private Message" put "/msg" && theMember & space into field "enter" select after text of fld "Enter" break case "See Profile" put "/about" && theMember & space into field "enter" send "returnInField" to fld "Enter" put empty into fld "Enter" select after text of fld "Enter" break case "Send E-Mail" put "/mail" && theMember & space into field "enter" send "returnInField" to fld "Enter" put empty into fld "Enter" select after text of fld "Enter" break case "Send File" send "sendRequest theMember" to stack "Send File Request" put empty into fld "Enter" break end switch end userAction cLastMessageSentTime 1:09:41 PM cREVGeneralscriptChecksumJ80㩙v bookmarks breakPoints handlerList.preOpenCard setStyle commandKeyDown userActionscriptSelectionchar 184 to 183 prevHandler preOpenCard tempScriptscript

on preOpenCard

revupdategeometry

set the vScroll of field "chat" of card "chat" to the formattedHeight of field "chat" of card "chat"

set the icon of btn "Insert Smile" to 1737

select text of fld "Enter"

end preOpenCard

on setStyle theFlag,theStyle

put theStyle into myNewStyle

put the selectedChunk into mySelectedChunk

put "bold,italic,underline" into myStyleList

put the cTextStyle of fld "enter" into myTextStyle

put number of chars of fld "Enter" into myOldNrOfChars

if theFlag is "remove" then

delete item itemoffset(myNewStyle,myTextStyle) of myTextStyle

if the optionKey is down then

if the short name of the selectedField is "Enter" then

put (item itemOffset(theStyle,myStyleList) of "</b>,</i>,</u>") after the selection

set the textStyle of char (myOldNrOfChars + 1) to (myOldNrOfChars+4) of fld "Enter" to the cTextStyle of fld "enter"

end if

end if

set the cTextStyle of fld "enter" to myTextStyle

else

if myNewStyle is not in myTextStyle then

if myTextStyle is not empty then put comma after myTextStyle

put myNewStyle after myTextStyle

set the cTextStyle of fld "enter" to myTextStyle

if the optionKey is down then

if the short name of the selectedField is "Enter" then

put (item itemOffset(theStyle,myStyleList) of "<b>,<i>,<u>") after the selection

set the textStyle of char (myOldNrOfChars + 1) to (myOldNrOfChars+3) of fld "Enter" to the cTextStyle of fld "enter"

end if

end if

end if

end if

if the selection is not empty then set the textStyle of mySelectedChunk to the cTextStyle of fld "Enter"

end setStyle

on commandKeyDown k

if k = "/" then go cd 2 of stack "Help" as modeless

else pass commandKeyDown

end commandKeyDown

on userAction theAction,theMember

lock screen

switch theAction

case "Send Private Message"

put "/msg" && theMember & space into field "enter"

select after text of fld "Enter"

break

case "See Profile"

put "/about" && theMember & space into field "enter"

send "returnInField" to fld "Enter"

put empty into fld "Enter"

select after text of fld "Enter"

break

case "Send E-Mail"

put "/mail" && theMember & space into field "enter"

send "returnInField" to fld "Enter"

put empty into fld "Enter"

select after text of fld "Enter"

break

case "Send File"

send "sendRequest theMember" to stack "Send File Request"

put empty into fld "Enter"

break

end switch

end userAction

cREVGeometryCacheIDs10936163219431649109370163307117371090841017477102010908410174781022109084101747910241093109324984158010936156252621644109361632532016501101007601334197010935482100021614110152781604820421093771355003175110937713550041752109377135500517531093771355006175410928380764251509109310762914415781092838076426151110936163022251647110130956266319951100993656228196710936163195631648110091624464119541101527806306204110935344110011607110147642967120321092836735950154910935368770011611109370204800117381100988480597196511014719040192030cREVGeometrycachetotal31order1093107629144 1090841017477 1090841017478 1090841017479 1093616302225 1093616319563 1093616321943 1093616325320 1093702048001 1101007601334 1092836735950 1093534411001 1093536877001 1100993656228 1101309562663 , Nlopqr register Pon transferLoginInfo put fld "Nickname" into fld "Name" of cd 1 put fld "Password" into fld "Pass" of cd 1 end transferLoginInfo on enterInField set the hilite of btn "OK" to true wait 6 set the hilite of btn "OK" to false send "mouseUp" to btn "OK" end enterInField on returnInField beep end returnInField on commandKeyDown k if k = "/" then go cd 3 of stack "Help" as modeless else pass commandKeyDown end commandKeyDown on preOpenCard select text of fld "Nickname" end preOpenCard  cREVGeneralscriptChecksumBD@27PY bookmarks handlerListGtransferLoginInfo enterInField returnInField commandKeyDown preOpenCard tempScript prevHandlertransferLoginInfoscriptSelectionchar 462 to 492script

on transferLoginInfo

put fld "Nickname" into fld "Name" of cd 1

put fld "Password" into fld "Pass" of cd 1

end transferLoginInfo

on enterInField

set the hilite of btn "OK" to true

wait 6

set the hilite of btn "OK" to false

send "mouseUp" to btn "OK"

end enterInField

on returnInField

beep

end returnInField

on commandKeyDown k

if k = "/" then go cd 3 of stack "Help" as modeless

else pass commandKeyDown

end commandKeyDown

on preOpenCard

select text of fld "Nickname"

end preOpenCard

cREVGeometryCacheIDs1093002084643155610930020846441557109300208464515581093002084646155910930020846471560109318336477915821093002084648156110931834803411585109300208464915621093182675426158110930020846501563109300208465115641093684808002171910937713550031751109377135500417521093771355005175310937713550061754109318354768115861093684888002172010931834631191583109300247559615661093002475561156510931834638321584110098848059719651101471904019203010930020846421554cREVGeometrycacheorder~1093002084643 1093002084644 1093002084642 1093183547681 1093182675426 1093002084650 1093002475561 1093002084648 1093002084645 total26-4 settings Pon openCard select text of fld "Autoreply Message" pass openCard end openCard on commandKeyDown k if k = "/" then go cd 4 of stack "Help" as modeless else pass commandKeyDown end commandKeyDown  cREVGeneralscriptChecksum{5zKD bookmarks handlerListopenCard commandKeyDown tempScript prevHandleropenCardscriptSelectionchar 130 to 129script

on openCard

select text of fld "Autoreply Message"

pass openCard

end openCard

on commandKeyDown k

if k = "/" then go cd 4 of stack "Help" as modeless

else pass commandKeyDown

end commandKeyDown

cREVGeometryCacheIDs,1100305989476193110931093249841580109355150400216221093551864002162410939629320021834109354881206816171093534635001160910936558780021678109441536977118821100988480597196511014719040192030109352666078214991093641933671165310935516260021623109352973408715511093529734088155210937713550031751109377135500417521093526212600160010935388560491613109352621259015901093526212589158910937713550051753109352621260116011093526212591159110936130060011642109377135500617541093526212602160210931076291441578109395033400218071093526212592159210935262125931593109352621259415941093526212595159510935262125961596109352621259715971093526212598159810935262125991599109355146200216211093555173002162810935268084041606109394675900218051093555009002162710935267661891605cREVGeometrycacheorder1093107629144 1093538856049 1093526212597 1093526212600 1093526212602 1093526212595 1093526212599 1093526212601 1093526766189 1093534635001 1093613006001 1093641933671 1093655878002 1093962932002 1094415369771 1100305989476 1093548812068 1093526660782total44,WX[\*ZhForum Pyon commandKeyDown k if k = "/" then go cd 5 of stack "Help" as modeless else pass commandKeyDown end commandKeyDown  cREVGeneralscriptChecksum '}.gUl bookmarks handlerListcommandKeyDown tempScript prevHandlercommandKeyDownscriptSelection char 32 to 31script

on commandKeyDown k

if k = "/" then go cd 5 of stack "Help" as modeless

else pass commandKeyDown

end commandKeyDown

cREVGeometryCacheIDs110036511272419451093109324984158011003017224191916110030189275519181093771355003175110923941143801941109377135500417521093771355005175311003018358001917110034506385319381093771355006175410931076291441578110030165771818981100301657720190211003016577191900110030235566919281100301657721190311003016577251907110030165772619091100301657727191011003016577281911110030165772919131100301657730191411003016577311915110030235491619271100988480597196511003023145631924110030192956119201100302314564192511014719040192030cREVGeometrycachetotal30order1100365112724 1093107629144 1100301657728 1100301657719 1100301657725 1100301657729 1100301657730 1100301657731 1100301657718 1100301657720 1100301657721 1100301657726 1100301657727 1092394114380 ,|}~ log)`@ cREVGeometryMaster,scaleBottomObjectSideBottomMaster,movehDistancefalseMaster,scaleRightscaleBottomtrueMastertrueMaster,scaleBottomObjectRefcardMaster,scaleBottomAbsolutetrueMaster,scaleBottomtrueMaster,movevDistancefalseMaster,scalebottomDistance-53Master,expectedRect120,227,420,404Master,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-114Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,cardRanking2Master,scaletopDistanceMaster,scaleleftDistance cREVGeneral revUniqueID 1090338436578  `'A ip HHHH@ cREVGeometryMaster,moveVObjectSidebottomMaster,movehDistance-145MastertrueMaster,moveVObjectRefcardMaster,moveHObjectRefcardMaster,moveVAbsolutetrue Master,moveVtrueMaster,expectedRect344,559,577,578Master,scalebottomDistanceMaster,movevDistance-38Master,moveHObjectSiderightMaster,scalerightDistanceMaster,cardRanking2Master,scaleleftDistanceMaster,moveHAbsolutetrueMaster,scaletopDistance Master,moveHtrue cREVGeneral revUniqueID 1090416199820  ?bC&Don mouseUp go to card 1 of stack "HELP" as modeless end mouseUp Y;,,1( cREVGeometryMaster,movehDistance-59Master,scaleRightscaleBottomtrueMastertrueMaster,moveHObjectRefcardMaster,expectedRect318,92,400,115Master,scalebottomDistanceMaster,movevDistancefalseMaster,moveHObjectSiderightMaster,scaleRightAbsolutefalseMaster,scaleRightfalseMaster,scalerightDistance -0.057813Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,cardRanking1Master,scaleleftDistanceMaster,scaletopDistanceMaster,moveHAbsolutetrue Master,moveHtrue cREVGeneralscriptChecksum*|FTu*$# bookmarks revUniqueID 1092394114380 handlerListmouseUpscriptSelection char 55 to 54 prevHandlermouseUp tempScriptscript~

on mouseUp

go to card 1 of stack "HELP" as modeless

end mouseUp

Chat)p?on linkClicked theUrl handleThisLink theUrl end linkClicked :e cREVGeometryMaster,scaleBottomObjectSideBottomMaster,movehDistancefalseMastertrueMaster,scaleBottomObjectRefcardMaster,scaleBottomAbsolutetrueMaster,scaleBottomtrueMaster,expectedRect 17,65,449,440Master,scalebottomDistance-64Master,movevDistancefalseMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-192Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,cardRanking2Master,scaleleftDistanceMaster,scaletopDistance cREVGeneral scriptChecksumo]>h#l breakPoints handlerList linkClickedscriptSelection char 62 to 61 revUniqueID 1090841017477 bookmarks tempScript prevHandler linkClickedscriptw

on linkClicked theUrl

handleThisLink theUrl

end linkClicked

 `;T+a members)z --on mouseUp -- if the mouseLoc is within the rect of me then -- set the itemDelimiter to tab -- if the label of button "kind" of card "chat" = "private message" then -- put "/msg" && item 1 of the selectedtext of me & " " into field "enter" -- else if label of button "kind" of card "chat" = "about" then -- put "/about" && item 1 of the selectedtext of me & " " into field "enter" -- else if label of button "kind" of card "chat" = "e-mail" then -- put "/mail" && item 1 of the selectedtext of me & " " into field "enter" -- end if -- select after field "enter" -- end if --end mouseUp on mouseWithin set the itemDelimiter to tab set the toolTip of me to item 2 of the mouseText end mouseWithin on mouseDown lock screen wait 200 millisec with messages if the mouse is down then popup btn "Popup Test" --put the result else focus me pass mouseDown end if end mouseDown @ short visit  cREVGeometryMaster,scaleBottomObjectSideBottomMaster,movehDistance-102Master,scaleRightscaleBottomtrueMastertrueMaster,scaleBottomObjectRefcardMaster,moveHObjectRefcardMaster,scaleBottomAbsolutetrueMaster,scaleBottomtrueMaster,movevDistancefalseMaster,scalebottomDistance-64Master,expectedRect457,193,621,433Master,moveHObjectSiderightMaster,scaleRightAbsolutefalseMaster,scaleRightfalseMaster,scalerightDistance-0.03125Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking2Master,scaletopDistanceMaster,scaleleftDistanceMaster,moveHAbsolutetrue Master,moveHtrue cREVTableformattedview currentxmouseloc182currenthscroll0currentymouseloc30scrollbarwidth16 cellyspacing20rightfieldloc691 cellxspacing50 leftfieldloc526 topfieldloc195 currentview currentvscroll0 viewablerows13viewablecolumns4numbertabstops1 cellformattrue celleditfalsebottomfieldloc443 cREVGeneral scriptChecksumxIQI$MBXtablefalse handlerListmouseWithin mouseDownscriptSelection char 1 to 623 bookmarks revUniqueID 1090841017478 prevHandlermouseUp tempScriptscript 

--on mouseUp

-- if the mouseLoc is within the rect of me then

-- set the itemDelimiter to tab

-- if the label of button "kind" of card "chat" = "private message" then

-- put "/msg" && item 1 of the selectedtext of me & " " into field "enter"

-- else if label of button "kind" of card "chat" = "about" then

-- put "/about" && item 1 of the selectedtext of me & " " into field "enter"

-- else if label of button "kind" of card "chat" = "e-mail" then

-- put "/mail" && item 1 of the selectedtext of me & " " into field "enter"

-- end if

-- select after field "enter"

-- end if

--end mouseUp

on mouseWithin

set the itemDelimiter to tab

set the toolTip of me to item 2 of the mouseText

end mouseWithin

on mouseDown

lock screen

wait 200 millisec with messages

if the mouse is down then

popup btn "Popup Test"

--put the result

else

focus me

pass mouseDown

end if

end mouseDown

 `Z enter)p 'on returnInField recordTime set the label of btn "Status" to "Available" if the number of words of me = 0 then exit returninfield else if the altKey is down then pass returninfield else chatOut end if end returnInField -- handler by Xavier -- inserted here and slightly adjusted by Mark S function makeHtmlMsg theMsg if not the hilite of btn "Receive HTML" of cd 4 is true then return theMsg else if "<" is not in theMsg then put the htmltext of fld "Enter" into theMsg if "

" is in char 1 to 3 of theMsg then delete char 1 to 3 of theMsg delete char -4 to -1 of theMsg end if end if return theMsg end makeHtmlMsg on chatOut global gChatRevShortName lock screen put the scroll of fld "chat" of cd "chat" into oldScroll if char 1 of field "enter" of card "chat" = "/" then put char 2 to -1 of word 1 of field "enter" of card "chat" into a if a = "msg" or a = "message" or a = "m" then sendPrivMessageMS else if a = "me" then write "me" & return & word 2 to -1 of line one of field "enter" of card "chat" & return to socket field "IP" of card 1 else if a = "label" or a = "l" or a = "Mouse" or a = "Mo" then write "setMouse" & return & word 2 to -1 of line one of field "enter" of card "chat" & return to socket field "IP" of card 1 else if a = "about" or a = "a" then write "getAbout" & return & word 2 to -1 of line one of field "enter" of card "chat" & return to socket field "IP" of card 1 else if a = "mail" or a = "ma" then write "getMail" & return & word 2 to -1 of line one of field "enter" of card "chat" & return to socket field "IP" of card 1 else if a = "setmail" or a = "sm" then write "setMail" & return & word 2 to -1 of line one of field "enter" of card "chat" & return to socket field "IP" of card 1 else if a = "setabout" or a = "sa" then write "setAbout" & return & word 2 to -1 of line one of field "enter" of card "chat" & return to socket field "IP" of card 1 else if a = "disc" or a = " disconnect" then send "disconnect" to button "connect" of card 1 else if a = "help" or a = "h" or a = "hlp" then put the formattedHeight of field "chat" of card "chat" <= the vscroll of field "chat" of card "chat" + the height of field "chat" of card "chat" + 30 into x put return & the help of this stack after field "chat" if x = true then set the vScroll of field "chat" of card "chat" to the formattedHeight of field "chat" of card "chat" else set the scroll of field "chat" of card "chat" to oldscroll end if send "savetofile" && the number of lines in the help of this stack to button "connect" of card 1 else if a = "clear" then put empty into field "chat" of card "chat" else if a = "put" or a = "p" then try put value(word 2 to -1 of field "enter" of card "chat") into rslt catch rslt put "Error, syntax cannot be executed" into rslt end try if length(rslt) > 255 then put "Error, result is longer than 255 characters." into rslt write "chat" & return & "

" & char 2 to -1 of field "enter" of card "chat" & "

" & return to socket field "IP" of card 1 if rslt contains return then write "chat" & return & "

" & "Error, result contains return." & "

" & return to socket field "IP" of card 1 else write "chat" & return & "

" & rslt & "

" & return to socket field "IP" of card 1 end if end if else put field "enter" of card "chat" of stack gChatRevShortName into myTempVar put the htmltext of field "enter" of card "chat" into a replace return with " " in a repeat forever if word -1 of a = "

" then put "" into word -1 of a delete char -1 of a else exit repeat end if end repeat write "chat" & return & a & return to socket field "IP" of card 1 end if if the result <> "" and the result is not a number then send error && ("chatout" && the result) to button "connect" of card 1 end if put empty into field "enter" of card "chat" end chatOut on sendPrivMessageMS -- put "Mark" into myUser -- put "/msg" && myUser && "hello world test" into fld "Enter" put word 2 of fld "Enter" into myUser put return & space after fld "Chat" delete char ((number of chars of word 1 to -1 of fld "Enter") + 1) to (number of chars of fld "Enter") of fld "Enter" put (word 3 to -1 of the htmlText of fld "Enter") into myMsgToBeSent put removeFinalEmptyLines(myMsgToBeSent) into myMsgToBeSent replace return with space in myMsgToBeSent put myMsgTobeSent into myNrOfLines replace "

" with return in myNrOfLines put number of lines of myNrOfLines into myNrOfLines replace return with space in myMsgToBeSent put replaceSmileys(myMsgTobeSent) into myTempVar set the itemDelimiter to numToChar(11) put item 1 of myTempVar into myMsgForDisplay put item 2 of myTempVar into mySmileysFound if mySmileysFound is true then add 1 to myNrOfLines put "msg to" && (word 2 of fld "Enter") & colon & space & myMsgForDisplay into myMsgForDisplay set the htmlText of last line of fld "Chat" to myMsgForDisplay set the itemDelimiter to colon set the textColor of item 1 of line -myNrOfLines of field "chat" of card "chat" to the backgroundcolor of graphic "privmessage" of card "settings" -- put "message" & return & myUser & return & "

" & (myMsgToBeSent) & "

" & return into theMsg put "message" & return & myUser & return & "" & ("

" & myMsgToBeSent) & "" & return into theMsg -- put theMsg write theMsg to socket (field "IP" of card 1) set the scroll of fld "Chat" to the formattedHeight of fld "Chat" saveToFile myNrOfLines end sendPrivMessageMS on tabKey repeat for each line theLine in field "members" put word 1 of theLine & cr after theMembers end repeat put last word of field "enter" into thePart put lineoffset(thePart, theMembers) into theResult if theResult is not "0" then put line theResult of theMembers & space into word -1 of field "enter" select after char -1 of field "enter" else pass tabkey end if end tabKey -- added by Mark S on enterInField if the hilite of btn "Press enter for multiple lines" of cd 4 is true then pass enterInField else returnInField end if end enterInField on recordTime set the cLastMessageSentTime of this cd to the long time end recordTime -- I'll remove this bug later (Mark S) -- it is time to sleep now on keyDown k put the selectedChunk into myOldSelectedText if number of chars of value(myOldSelectedText) > 0 then put empty into the selection try put k after the selection catch nothing select after fld "Enter" put k after the selection end try set the textStyle of char (word 2 of myOldSelectedText) to (word 2 of the selectedChunk - 1) of me to the cTextStyle of me if the myRandomColour of me is true then put -20 into a --brightness of the colour put 55 into b -- contrast put 2-random(3) into c -- switch contrast put random(160+c*b)+a & comma & random(160-b*c)+a & comma & random(140)+a into myTextColour set the textColor of char (word 2 of myOldSelectedText) to (word 2 of the selectedChunk - 1) of me to (myTextColour) else put the backgroundColor of graphic "Selected Colour" of cd 1 of stack "Colour Palette" into myTextColour if myTextColour is 0,0,0 then put empty into myTextColour set the textColor of char (word 2 of myOldSelectedText) to (word 2 of the selectedChunk - 1) of me to (myTextColour) end if keepSmileysBlack set the hScroll of me to the formattedWidth of me end keyDown on keepSmileysBlack put empty into smiley if ":" is in me then implementedSmileys smiley repeat with x = 1 to 12 if smiley[x] is in me then repeat with y = 1 to number of words of me if word y of me contains smiley[x] then put offset(smiley[x],word y of me) into c set the textColor of char c to c+3 of word y of me to empty end if end repeat end if end repeat end if end keepSmileysBlack  cTextStylemyRandomColourfalsePress return to send chat cREVGeometryMaster,scaleBottomObjectSideBottomMaster,moveVObjectSidebottomMaster,scaleBottomscaleBottomtrueMaster,movehDistancefalseMastertrueMaster,scaletopObjectRef 1090841017477Master,scaleBottomObjectRefcardMaster,moveVObjectRefcardMaster,scaleBottomAbsolutefalseMaster,moveVAbsolutetrueMaster,scaleBottomfalse Master,moveVtrueMaster,scaletopObjectSidebottomMaster,expectedRect16,447,449,469Master,scalebottomDistance -0.064583Master,movevDistance-42Master,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-191Master,scaletopAbsolutefalseMaster,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,scaletopfalseMaster,cardRanking2Master,scaleleftDistanceMaster,scaletopDistance0.022917 cREVGeneral scriptChecksum!H CeQ breakPoints handlerListkreturnInField makeHtmlMsg chatOut sendPrivMessageMS tabKey enterInField recordTime keyDown keepSmileysBlackscriptSelectionchar 7031 to 7030 bookmarks revUniqueID 1090841017479 prevHandlerkeepSmileysBlack tempScriptscriptRP

on returnInField

recordTime

set the label of btn "Status" to "Available"

if the number of words of me = 0 then

exit returninfield

else if the altKey is down then

pass returninfield

else

chatOut

end if

end returnInField

-- handler by Xavier

-- inserted here and slightly adjusted by Mark S

function makeHtmlMsg theMsg

if not the hilite of btn "Receive HTML" of cd 4 is true then

return theMsg

else if "<" is not in theMsg then

put the htmltext of fld "Enter" into theMsg

if "<P>" is in char 1 to 3 of theMsg then

delete char 1 to 3 of theMsg

delete char -4 to -1 of theMsg

end if

end if

return theMsg

end makeHtmlMsg

on chatOut

global gChatRevShortName

lock screen

put the scroll of fld "chat" of cd "chat" into oldScroll

if char 1 of field "enter" of card "chat" = "/" then

put char 2 to -1 of word 1 of field "enter" of card "chat" into a

if a = "msg" or a = "message" or a = "m" then

sendPrivMessageMS

else if a = "me" then

write "me" & return & word 2 to -1 of line one of field "enter" of card "chat" & return to socket field "IP" of card 1

else if a = "label" or a = "l" or a = "Mouse" or a = "Mo" then

write "setMouse" & return & word 2 to -1 of line one of field "enter" of card "chat" & return to socket field "IP" of card 1

else if a = "about" or a = "a" then

write "getAbout" & return & word 2 to -1 of line one of field "enter" of card "chat" & return to socket field "IP" of card 1

else if a = "mail" or a = "ma" then

write "getMail" & return & word 2 to -1 of line one of field "enter" of card "chat" & return to socket field "IP" of card 1

else if a = "setmail" or a = "sm" then

write "setMail" & return & word 2 to -1 of line one of field "enter" of card "chat" & return to socket field "IP" of card 1

else if a = "setabout" or a = "sa" then

write "setAbout" & return & word 2 to -1 of line one of field "enter" of card "chat" & return to socket field "IP" of card 1

else if a = "disc" or a = " disconnect" then

send "disconnect" to button "connect" of card 1

else if a = "help" or a = "h" or a = "hlp" then

put the formattedHeight of field "chat" of card "chat" <= the vscroll of field "chat" of card "chat" + the height of field "chat" of card "chat" + 30 into x

put return & the help of this stack after field "chat"

if x = true then

set the vScroll of field "chat" of card "chat" to the formattedHeight of field "chat" of card "chat"

else

set the scroll of field "chat" of card "chat" to oldscroll

end if

send "savetofile" && the number of lines in the help of this stack to button "connect" of card 1

else if a = "clear" then

put empty into field "chat" of card "chat"

else if a = "put" or a = "p" then

try

put value(word 2 to -1 of field "enter" of card "chat") into rslt

catch rslt

put "Error, syntax cannot be executed" into rslt

end try

if length(rslt) > 255 then put "Error, result is longer than 255 characters." into rslt

write "chat" & return & "<p>" & char 2 to -1 of field "enter" of card "chat" & "</p>" & return to socket field "IP" of card 1

if rslt contains return then

write "chat" & return & "<p>" & "Error, result contains return." & "</p>" & return to socket field "IP" of card 1

else

write "chat" & return & "<p>" & rslt & "</p>" & return to socket field "IP" of card 1

end if

end if

else

put field "enter" of card "chat" of stack gChatRevShortName into myTempVar

put the htmltext of field "enter" of card "chat" into a

replace return with " " in a

repeat forever

if word -1 of a = "<p></p>" then

put "" into word -1 of a

delete char -1 of a

else

exit repeat

end if

end repeat

write "chat" & return & a & return to socket field "IP" of card 1

end if

if the result <> "" and the result is not a number then

send error && ("chatout" && the result) to button "connect" of card 1

end if

put empty into field "enter" of card "chat"

end chatOut

on sendPrivMessageMS

-- put "Mark" into myUser

-- put "/msg" && myUser && "hello world test" into fld "Enter"

put word 2 of fld "Enter" into myUser

put return & space after fld "Chat"

delete char ((number of chars of word 1 to -1 of fld "Enter") + 1) to (number of chars of fld "Enter") of fld "Enter"

put (word 3 to -1 of the htmlText of fld "Enter") into myMsgToBeSent

put removeFinalEmptyLines(myMsgToBeSent) into myMsgToBeSent

replace return with space in myMsgToBeSent

put myMsgTobeSent into myNrOfLines

replace "</p>" with return in myNrOfLines

put number of lines of myNrOfLines into myNrOfLines

replace return with space in myMsgToBeSent

put replaceSmileys(myMsgTobeSent) into myTempVar

set the itemDelimiter to numToChar(11)

put item 1 of myTempVar into myMsgForDisplay

put item 2 of myTempVar into mySmileysFound

if mySmileysFound is true then add 1 to myNrOfLines

put "msg to" && (word 2 of fld "Enter") & colon & space & myMsgForDisplay into myMsgForDisplay

set the htmlText of last line of fld "Chat" to myMsgForDisplay

set the itemDelimiter to colon

set the textColor of item 1 of line -myNrOfLines of field "chat" of card "chat" to the backgroundcolor of graphic "privmessage" of card "settings"

-- put "message" & return & myUser & return & "<p>" & (myMsgToBeSent) & "</p>" & return into theMsg

put "message" & return & myUser & return & "" & ("<p>" & myMsgToBeSent) & "" & return into theMsg

-- put theMsg

write theMsg to socket (field "IP" of card 1)

set the scroll of fld "Chat" to the formattedHeight of fld "Chat"

saveToFile myNrOfLines

end sendPrivMessageMS

on tabKey

repeat for each line theLine in field "members"

put word 1 of theLine & cr after theMembers

end repeat

put last word of field "enter" into thePart

put lineoffset(thePart, theMembers) into theResult

if theResult is not "0" then

put line theResult of theMembers & space into word -1 of field "enter"

select after char -1 of field "enter"

else

pass tabkey

end if

end tabKey

-- added by Mark S

on enterInField

if the hilite of btn "Press enter for multiple lines" of cd 4 is true then

pass enterInField

else

returnInField

end if

end enterInField

on recordTime

set the cLastMessageSentTime of this cd to the long time

end recordTime

-- I'll remove this bug later (Mark S)

-- it is time to sleep now

on keyDown k

put the selectedChunk into myOldSelectedText

if number of chars of value(myOldSelectedText) > 0 then put empty into the selection

try

put k after the selection

catch nothing

select after fld "Enter"

put k after the selection

end try

set the textStyle of char (word 2 of myOldSelectedText) to (word 2 of the selectedChunk - 1) of me to the cTextStyle of me

if the myRandomColour of me is true then

put -20 into a --brightness of the colour

put 55 into b -- contrast

put 2-random(3) into c -- switch contrast

put random(160+c*b)+a & comma & random(160-b*c)+a & comma & random(140)+a into myTextColour

set the textColor of char (word 2 of myOldSelectedText) to (word 2 of the selectedChunk - 1) of me to (myTextColour)

else

put the backgroundColor of graphic "Selected Colour" of cd 1 of stack "Colour Palette" into myTextColour

if myTextColour is 0,0,0 then put empty into myTextColour

set the textColor of char (word 2 of myOldSelectedText) to (word 2 of the selectedChunk - 1) of me to (myTextColour)

end if

keepSmileysBlack

set the hScroll of me to the formattedWidth of me

end keyDown

on keepSmileysBlack

put empty into smiley

if ":" is in me then

implementedSmileys smiley

repeat with x = 1 to 12

if smiley[x] is in me then

repeat with y = 1 to number of words of me

if word y of me contains smiley[x] then

put offset(smiley[x],word y of me) into c

set the textColor of char c to c+3 of word y of me to empty

end if

end repeat

end if

end repeat

end if

end keepSmileysBlack

  Field 2 ) cREVGeneral revUniqueID 1092836262465 Connection log delimiterCF cREVGeometry Master,expectedRect -1,1,3,441Master,scalebottomDistance474Master,movevDistancefalseMaster,scaleBottomObjectSideBottomMaster,movehDistancefalseMastertrueMaster,scalerightDistanceMaster,scaleBottomObjectRefcardMaster,scaleBottomAbsolutetrueMaster,cardRanking1Master,scaleBottomtrueMaster,scaleleftDistanceMaster,scaletopDistance cREVGeneral revUniqueID 1092836735950message sound`&p  cREVGeneral revUniqueID 1092838076425 login sound`$p  cREVGeneral revUniqueID 1092838076426CancelEx(on mouseUp go to card 1 end mouseUp R cREVGeometryMaster,moveVObjectSidebottomMaster,scaleBottomObjectSideBottomMaster,scaleBottomscaleBottomtrueMaster,movehDistance-166Master,scaleRightscaleBottomtrueMastertrueMaster,moveVObjectRefcardMaster,scaleBottomObjectRefcardMaster,moveHObjectRefcardMaster,moveVAbsolutetrueMaster,scaleBottomAbsolutefalse Master,moveVtrueMaster,scaleBottomfalseMaster,expectedRect229,364,311,387Master,scalebottomDistance -0.027083Master,movevDistance-25Master,moveHObjectSiderightMaster,scaleRightAbsolutefalseMaster,scaleRightfalseMaster,scalerightDistance -0.195312Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,cardRanking2Master,moveHAbsolutetrueMaster,scaleleftDistanceMaster,scaletopDistance Master,moveHtrue cREVGeneralscriptChecksumH*` revUniqueID 1093002084643 bookmarks handlerListmouseUp tempScript prevHandlermouseUpscriptSelection char 27 to 26script;

on mouseUp

go to card 1

end mouseUp

OKmx local nick, pass on mouseUp put the label of btn "IP List" of cd 1 & colon & fld "Port" of cd 1 into field "IP" of cd 1 open socket to (field "ip" of card 1) with message connected If the result is not empty then error "register:" && the Result end if end mouseUp on connected theIP put field "nickname" of card "register" into nick put field "password" of card "register" into pass if pass contains "," or nick contains "," then answer error "Sorry, commas (,) are not allowed in the password or nickname, please try again." else if nick = "" then answer error "Your nick cannot be empty!" else if field "about" of card "register" contains return then answer error "Sorry, but there are no returns allowed in any of the fields, specifically the about field." else write "register" & return & nick, pass, "deprecated" & return to socket theIP with message register if the result is not empty then error "register:" && the Result end if end if end if end if end connected on register theIP read from socket theIP until return with message registered if the result <> "" then error "register:" && the result end if end register on registered theIP theMessage if char 1 to -2 of theMessage = "registered" then write "setMouse" & return & field "mouseover" of card "register" & return to socket theIP write "setMail" & return & field "e-mail" of card "register" & return to socket theIP put field "about" of card "register" into about replace return with "<&%&>" in about write "setAbout" & return & about & return to socket theIP write "disconnect" & return to socket theIP answer information "I am pleased to announce: You are registered and might login now." put nick into field "name" of card 1 put pass into field "pass" of card 1 else if char 1 to -2 of theMessage = "taken" then answer error "That Nick is already taken, I am sorry." close socket theIP else if char 1 to -2 of theMessage = "empty nick" then answer error "You must enter a nick." close socket theIP end if transferLoginInfo go to card 1 end registered on error themessage close socket field "IP" of card 1 send mouseUp to button "cancel" of card "register" answer error "an error occured while connecting to the server" put "error:" & themessage & return before field "log" of card 1 end error FR developmentfalseOkay cREVGeometryMaster,moveVObjectSidebottomMaster,movehDistance-62MastertrueMaster,moveVObjectRefcardMaster,moveHObjectRefcardMaster,moveVAbsolutetrue Master,moveVtrueMaster,movevDistance-25Master,scalebottomDistanceMaster,expectedRect324,364,406,387Master,moveHObjectSiderightMaster,scalerightDistanceMaster,cardRanking2Master,scaletopDistanceMaster,moveHAbsolutetrueMaster,scaleleftDistance Master,moveHtrue cREVGeneralscriptChecksumm 6$lU revUniqueID 1093002084644 bookmarks handlerList+mouseUp connected register registered error tempScript prevHandler connectedscriptSelection char 18 to 17script

local nick, pass

on mouseUp

put the label of btn "IP List" of cd 1 & colon & fld "Port" of cd 1 into field "IP" of cd 1

open socket to (field "ip" of card 1) with message connected

If the result is not empty then

error "register:" && the Result

end if

end mouseUp

on connected theIP

put field "nickname" of card "register" into nick

put field "password" of card "register" into pass

if pass contains "," or nick contains "," then

answer error "Sorry, commas (,) are not allowed in the password or nickname, please try again."

else

if nick = "" then

answer error "Your nick cannot be empty!"

else

if field "about" of card "register" contains return then

answer error "Sorry, but there are no returns allowed in any of the fields, specifically the about field."

else

write "register" & return & nick, pass, "deprecated" & return to socket theIP with message register

if the result is not empty then

error "register:" && the Result

end if

end if

end if

end if

end connected

on register theIP

read from socket theIP until return with message registered

if the result <> "" then

error "register:" && the result

end if

end register

on registered theIP theMessage

if char 1 to -2 of theMessage = "registered" then

write "setMouse" & return & field "mouseover" of card "register" & return to socket theIP

write "setMail" & return & field "e-mail" of card "register" & return to socket theIP

put field "about" of card "register" into about

replace return with "<&%&>" in about

write "setAbout" & return & about & return to socket theIP

write "disconnect" & return to socket theIP

answer information "I am pleased to announce: You are registered and might login now."

put nick into field "name" of card 1

put pass into field "pass" of card 1

else if char 1 to -2 of theMessage = "taken" then

answer error "That Nick is already taken, I am sorry."

close socket theIP

else if char 1 to -2 of theMessage = "empty nick" then

answer error "You must enter a nick."

close socket theIP

end if

transferLoginInfo

go to card 1

end registered

on error themessage

close socket field "IP" of card 1

send mouseUp to button "cancel" of card "register"

answer error "an error occured while connecting to the server"

put "error:" & themessage & return before field "log" of card 1

end error

-HelpbCDon mouseUp go to card 3 of stack "help" as modeless end mouseUp **1( cREVGeometry Master,movevDistance-27Master,scalebottomDistanceMaster,expectedRect81,363,163,386Master,moveVObjectSidebottomMaster,movehDistancefalseMastertrueMaster,moveVObjectRefcardMaster,scalerightDistanceMaster,cardRanking1Master,moveVAbsolutetrue Master,moveVtrueMaster,scaletopDistanceMaster,scaleleftDistance cREVGeneralscriptChecksumJ[z|q/`n bookmarks revUniqueID 1093182675426 handlerListmouseUpscriptSelection char 55 to 54 prevHandlermouseUp tempScriptscripta

on mouseUp

go to card 3 of stack "help" as modeless

end mouseUp

3!bC&Don mouseUp go to card 4 of stack "HELP" as modeless end mouseUp [p+*$& cREVGeometryMaster,movehDistance-58Master,scaleRightscaleBottomtrueMastertrueMaster,moveHObjectRefcardMaster,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect318,92,400,115Master,moveHObjectSiderightMaster,scaleRightAbsolutefalseMaster,scaleRightfalseMaster,scalerightDistance-0.05625Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking1Master,moveHAbsolutetrueMaster,scaletopDistanceMaster,scaleleftDistance Master,moveHtrue cREVGeneralscriptChecksumW*n0!| revUniqueID 1093452874282 bookmarks handlerListmouseUp tempScript prevHandlermouseUpscriptSelection char 55 to 54script~

on mouseUp

go to card 4 of stack "HELP" as modeless

end mouseUp

message sound!`8  cREVGeneral revUniqueID 1093529734087 login sound!`8  cREVGeneral revUniqueID 1093529734088N Commands,i 5q Commands cREVGeneral revUniqueID 1093548210002 bookmarks handlerList tempScript prevHandlerscriptG Clear ChatbC4on mouseUp put empty into fld "Chat" end mouseUp p**Clear the chat field./ cREVGeometryMaster,movehDistance-151Master,scaleRightscaleBottomtrueMastertrueMaster,moveHObjectRefcardMaster,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect 456,34,513,56Master,moveHObjectSiderightMaster,scaleRightAbsolutefalseMaster,scaleRightfalseMaster,scalerightDistance -0.203125Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking1Master,moveHAbsolutetrueMaster,scaletopDistanceMaster,scaleleftDistance Master,moveHtrue cREVGeneralscriptChecksumPihxoڪc|C2 bookmarks revUniqueID 1093534411001 handlerListmouseUpscriptSelection char 39 to 38 prevHandlermouseUp tempScriptscript

on mouseUp

put empty into fld "Chat"

end mouseUp

KStatus }on menuPick w switch w case "Available" if the cPrevLabel of me is "Disconnect" then set the label of btn "Connect" of cd 1 to "Disconnect" send "startconnection" to btn "Connect" of cd 1 end if set the cLastMessageSentTime of cd 2 to the long time break case "Disconnect" set the label of btn "Connect" of cd 1 to "Connect" send "disconnect" to btn "Connect" of cd 1 put empty into fld "Members" of cd 2 break end switch set the cPrevLabel of me to the label of me end menuPick I cPrevLabel DisconnectSet your status DisconnectAvailable Away Disconnect cREVGeometry Master,expectedRect 343,34,454,56Master,scalebottomDistanceMaster,movevDistancefalseMaster,movehDistance-103Master,moveHObjectSiderightMastertrueMaster,scalerightDistanceMaster,moveHObjectRefcardMaster,cardRanking1Master,scaleleftDistanceMaster,moveHAbsolutetrueMaster,scaletopDistance Master,moveHtrue cREVGeneral scriptChecksum/j*jBTчqXP breakPoints handlerListmenuPickscriptSelectionchar 520 to 519 revUniqueID 1093536877001 bookmarks tempScript prevHandlermenuPickscript

on menuPick w

switch w

case "Available"

if the cPrevLabel of me is "Disconnect" then

set the label of btn "Connect" of cd 1 to "Disconnect"

send "startconnection" to btn "Connect" of cd 1

end if

set the cLastMessageSentTime of cd 2 to the long time

break

case "Disconnect"

set the label of btn "Connect" of cd 1 to "Connect"

send "disconnect" to btn "Connect" of cd 1

put empty into fld "Members" of cd 2

break

end switch

set the cPrevLabel of me to the label of me

end menuPick

?bC&Aon mouseUp go card 2 of stack "help" as modeless end mouseUp 4n,. Get help1( cREVGeometryMaster,movehDistance-53Master,scaleRightscaleBottomtrueMastertrueMaster,moveHObjectRefcardMaster,expectedRect318,92,400,115Master,scalebottomDistanceMaster,movevDistancefalseMaster,moveHObjectSiderightMaster,scaleRightAbsolutefalseMaster,scaleRightfalseMaster,scalerightDistance -0.048438Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,cardRanking1Master,scaleleftDistanceMaster,scaletopDistanceMaster,moveHAbsolutetrue Master,moveHtrue cREVGeneralscriptChecksumGEKjJD} bookmarks revUniqueID 1100993656228 handlerListmouseUpscriptSelection char 64 to 63 prevHandlermouseUp tempScriptscript

on mouseUp

go card 2 of stack "help" as modeless

end mouseUp

 File Requestb& on mouseUp viewRequest end mouseUp on storeRequest theRemoteUser,myFilePath,myFileDescription if last char of myFileDescription is not in ".!?" then put "." after myFileDescription put the customProperties of me into myReqs put the number of lines of myReqs[line 1 of the keys of myReqs] into myNrOfReqs add 1 to myNrOfReqs put theRemoteUser into line myNrOfReqs of myReqs[kRemoteUser] put myFilePath into line myNrOfReqs of myReqs[kFilePath] put myFileDescription into line myNrOfReqs of myReqs[kFileDescription] set the customProperties of me to myReqs enable me end storeRequest on viewRequest global gChatRevShortName if noPendingTransfers() then disable me put the customProperties of me into myReqs put line 1 of myReqs[kRemoteUser] into myRemoteUser put line 1 of myReqs[kFilePath] into myFilePath put line 1 of myReqs[kFileDescription] into myFileDescription if myRemoteUser is not empty and myFilePath is not empty then beep set the itemDel to "/" put the last item of myFilePath into myFilename -- still to add: a way to include a custom message to explain why the file is not accepted answer warning "User" && myRemoteUser && "wants to send you a file:" && myFileDescription & return & "The file name is" && myFilename & "." & return & "Would you like to accept it?" with "Accept" or "Decline" if it is "Accept" then put "fileAccept" & return & myRemoteUser & return & myFilePath & return & "Accept" & return into myMsg write myMsg to socket (fld "IP" of cd 1 of stack gChatRevShortName) send "readyToReceiveMsg" to stack "Send File Request" else put "I am currently unable to accept your file request. Please, try again, later." into myExcuse put "fileAccept" & cr & myRemoteUser & return & myFilePath & cr & myExcuse & return into myMsg write myMsg to socket (fld "IP" of cd 1 of stack gChatRevShortName) end if else beep answer "An error occurred while processing an incoming file transfer." with "Cancel" end if delete line 1 of myReqs[kRemoteUser] delete line 1 of myReqs[kFilePath] delete line 1 of myReqs[kFileDescription] set the customProperties of me to myReqs put true into myProceedFlag repeat with x = 1 to 3 if the number of lines of myReqs[line x of the keys of myReqs] is 0 then set the customProperties of me to empty put false into myProceedFlag exit repeat end if end repeat if myProceedFlag then enable me end if else beep answer "File transfers are in progress. Please try again, later." with "Cancel" end if end viewRequest p++View file requests" ! cREVGeometryMaster,movehDistance-102Master,scaleRightscaleBottomtrueMastertrueMaster,moveHObjectRefcardMaster,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect318,92,400,115Master,moveHObjectSiderightMaster,scaleRightAbsolutefalseMaster,scaleRightfalseMaster,scalerightDistance-0.125Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking1Master,moveHAbsolutetrueMaster,scaletopDistanceMaster,scaleleftDistance Master,moveHtrue cREVGeneral scriptChecksum˰4B( breakPoints handlerList mouseUp storeRequest viewRequestscriptSelection char 98 to 97 revUniqueID 1101309562663 bookmarks tempScript prevHandler viewRequestscript0

on mouseUp

viewRequest

end mouseUp

on storeRequest theRemoteUser,myFilePath,myFileDescription

if last char of myFileDescription is not in ".!?" then put "." after myFileDescription

put the customProperties of me into myReqs

put the number of lines of myReqs[line 1 of the keys of myReqs] into myNrOfReqs

add 1 to myNrOfReqs

put theRemoteUser into line myNrOfReqs of myReqs[kRemoteUser]

put myFilePath into line myNrOfReqs of myReqs[kFilePath]

put myFileDescription into line myNrOfReqs of myReqs[kFileDescription]

set the customProperties of me to myReqs

enable me

end storeRequest

on viewRequest

global gChatRevShortName

if noPendingTransfers() then

disable me

put the customProperties of me into myReqs

put line 1 of myReqs[kRemoteUser] into myRemoteUser

put line 1 of myReqs[kFilePath] into myFilePath

put line 1 of myReqs[kFileDescription] into myFileDescription

if myRemoteUser is not empty and myFilePath is not empty then

beep

set the itemDel to "/"

put the last item of myFilePath into myFilename

-- still to add: a way to include a custom message to explain why the file is not accepted

answer warning "User" && myRemoteUser && "wants to send you a file:" && myFileDescription & return & "The file name is" && myFilename & "." & return & "Would you like to accept it?" with "Accept" or "Decline"

if it is "Accept" then

put "fileAccept" & return & myRemoteUser & return & myFilePath & return & "Accept" & return into myMsg

write myMsg to socket (fld "IP" of cd 1 of stack gChatRevShortName)

send "readyToReceiveMsg" to stack "Send File Request"

else

put "I am currently unable to accept your file request. Please, try again, later." into myExcuse

put "fileAccept" & cr & myRemoteUser & return & myFilePath & cr & myExcuse & return into myMsg

write myMsg to socket (fld "IP" of cd 1 of stack gChatRevShortName)

end if

else

beep

answer "An error occurred while processing an incoming file transfer." with "Cancel"

end if

delete line 1 of myReqs[kRemoteUser]

delete line 1 of myReqs[kFilePath]

delete line 1 of myReqs[kFileDescription]

set the customProperties of me to myReqs

put true into myProceedFlag

repeat with x = 1 to 3

if the number of lines of myReqs[line x of the keys of myReqs] is 0 then

set the customProperties of me to empty

put false into myProceedFlag

exit repeat

end if

end repeat

if myProceedFlag then

enable me

end if

else

beep

answer "File transfers are in progress. Please try again, later." with "Cancel"

end if

end viewRequest

W$i pKIdle Time Settings cREVGeneral revUniqueID 1093551626002 MAutoreply Message)` cREVGeometry Master,expectedRect154,336,455,357Master,scalebottomDistanceMaster,movevDistancefalseMaster,movehDistancefalseMastertrueMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-32Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,cardRanking1Master,scaleleftDistanceMaster,scaletopDistance cREVGeneral revUniqueID 1093538856049 bookmarks handlerList tempScript prevHandlerscript 4 &I am currently away from my computer. Q Idle Time-`Y$ cREVGeometryMaster,moveVObjectSidebottomMaster,movehDistance -0.432812Master,scaleRightscaleBottomtrueMastertrueMaster,moveVObjectRefcardMaster,moveHObjectRefcardMaster,moveVAbsolutefalse Master,moveVfalseMaster,movevDistance -0.154489Master,scalebottomDistanceMaster,expectedRect356,416,392,437Master,moveHObjectSiderightMaster,scaleRightAbsolutefalseMaster,scaleRightfalseMaster,scalerightDistance -0.404687Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking0Master,scaletopDistanceMaster,scaleleftDistanceMaster,moveHAbsolutefalse Master,moveHfalse cREVGeneral revUniqueID 1093548812068 4 20 U Label Field !r cREVGeneral revUniqueID 1093551462002 Autoreply message: V Label Field #6 cREVGeneral revUniqueID 1093551504002 on closeField

if the text of me = "" then

set the filename of player "login sound" of card "chat" to ""

set the filename of player "login sound" to ""

end if

end closeField

4 >Field 2 !l cREVGeneral revUniqueID 1093526212598 Login/out sound@ login soundewon mouseUp answer file "choose a sound file please:" if the result = "" then put it into field "login sound" set the filename of player "login sound" of card "chat" to it set the filename of player "login sound" to it end if end mouseUp F... cREVGeometry Master,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect372,203,388,223Master,movehDistance-97Master,moveHObjectSiderightMastertrueMaster,scalerightDistanceMaster,moveHObjectRefcardMaster,cardRanking1Master,scaletopDistanceMaster,moveHAbsolutetrueMaster,scaleleftDistance Master,moveHtrue cREVGeneralscriptChecksum@}rn"ﮕ$ revUniqueID 1093526212600 bookmarks handlerListmouseUp tempScript prevHandlermouseUpscriptSelectionchar 229 to 228scripts

on mouseUp

answer file "choose a sound file please:"

if the result = "" then

put it into field "login sound"

set the filename of player "login sound" of card "chat" to it

set the filename of player "login sound" to it

end if

end mouseUp

B Play loginewon mouseUp if field "login sound" = "" then else if field "login sound" <> "beep" then set the currentTime of player "login sound" to 1 start player "login sound" else beep end if end mouseUp f.Play cREVGeometry Master,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect390,203,420,223Master,movehDistance-56Master,moveHObjectSiderightMastertrueMaster,scalerightDistanceMaster,moveHObjectRefcardMaster,cardRanking1Master,scaletopDistanceMaster,moveHAbsolutetrueMaster,scaleleftDistance Master,moveHtrue cREVGeneralscriptChecksum-NSn]> bookmarks revUniqueID 1093526212602 handlerListmouseUpscriptSelection char 59 to 58 prevHandlermouseUp tempScriptscripta

on mouseUp

if field "login sound" = "" then

else if field "login sound" <> "beep" then

set the currentTime of player "login sound" to 1

start player "login sound"

else

beep

end if

end mouseUp

;message soundipon closeField if the text of me = "" then set the filename of player "message sound" of card "chat" to "" set the filename of player "message sound" to "" end if end closeField  cREVGeometry Master,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect120,179,370,199Master,movehDistancefalseMastertrueMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-121Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking1Master,scaletopDistanceMaster,scaleleftDistance cREVGeneralscriptChecksumi둓 revUniqueID 1093526212595 bookmarks handlerList closeField tempScript prevHandlerscriptSelection char 1 to 189script#

on closeField

if the text of me = "" then

set the filename of player "message sound" of card "chat" to ""

set the filename of player "message sound" to ""

end if

end closeField

4 <Field 2 *b cREVGeneral revUniqueID 1093526212596 Message sound?Message soundewon mouseUp answer file "choose a sound file please:" if the result = "" then put it into field "message sound" set the filename of player "message sound" of card "chat" to it set the filename of player "message sound" to it end if end mouseUp F... cREVGeometry Master,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect372,179,388,199Master,movehDistance-97Master,moveHObjectSiderightMastertrueMaster,scalerightDistanceMaster,moveHObjectRefcardMaster,cardRanking1Master,scaletopDistanceMaster,moveHAbsolutetrueMaster,scaleleftDistance Master,moveHtrue cREVGeneralscriptChecksumÝ5jO(A revUniqueID 1093526212599 bookmarks handlerListmouseUp tempScript prevHandlermouseUpscriptSelectionchar 121 to 240scripty

on mouseUp

answer file "choose a sound file please:"

if the result = "" then

put it into field "message sound"

set the filename of player "message sound" of card "chat" to it

set the filename of player "message sound" to it

end if

end mouseUp

A Play messageewon mouseUp if field "message sound" = "" then --nutting else if field "message sound" <> "beep" then set the currentTime of player "message sound" to 1 start player "message sound" else beep end if end mouseUp f.Play cREVGeometry Master,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect390,179,420,199Master,movehDistance-56Master,moveHObjectSiderightMastertrueMaster,scalerightDistanceMaster,moveHObjectRefcardMaster,cardRanking1Master,scaletopDistanceMaster,moveHAbsolutetrueMaster,scaleleftDistance Master,moveHtrue cREVGeneralscriptChecksum)#E@ L revUniqueID 1093526212601 bookmarks handlerListmouseUp tempScript prevHandlermouseUpscriptSelectionchar 134 to 163script

on mouseUp

if field "message sound" = "" then

--nutting

else if field "message sound" <> "beep" then

set the currentTime of player "message sound" to 1

start player "message sound"

else

beep

end if

end mouseUp

 Sound levelqqon mouseUp put the thumbPosition of me into mySoundLevel set the playLoudness of player "message sound" of this cd to mySoundLevel set the playLoudness of player "login sound" of this cd to mySoundLevel set the playLoudness of player "message sound" of cd 2 to mySoundLevel set the playLoudness of player "login sound" of cd 2 to mySoundLevel end mouseUp (0100 cREVGeneralscriptChecksumn K+2yF]h revUniqueID 1093946759002 bookmarks handlerListmouseUp tempScript prevHandlermouseUpscriptSelectionchar 340 to 339script

on mouseUp

put the thumbPosition of me into mySoundLevel

set the playLoudness of player "message sound" of this cd to mySoundLevel

set the playLoudness of player "login sound" of this cd to mySoundLevel

set the playLoudness of player "message sound" of cd 2 to mySoundLevel

set the playLoudness of player "login sound" of cd 2 to mySoundLevel

end mouseUp

Field 2 !l cREVGeneral revUniqueID 1093950334002 Sound volume[$i 2,Logging cREVGeneral revUniqueID 1093555009002 Save to file`Ewon mouseUp if the hilite of me = true then ask file "Save chat as:" with filter "Text file,*.txt" if the result = "" then put it into field "path" of card "settings" put field "chat" of card "chat" into url ("file:" & it) else put empty into field "path" of card "settings" set the hilite of me to false end if end if end mouseUp DVpath)/Users/BvG/Desktop/The Fish Tank/save.txt cREVGeometry Master,expectedRect134,218,228,246Master,scalebottomDistanceMaster,movevDistancefalseMaster,movehDistance-0.73125Master,moveHObjectSiderightMastertrueMaster,scalerightDistanceMaster,moveHObjectRefcardMaster,cardRanking0Master,scaleleftDistanceMaster,moveHAbsolutefalseMaster,scaletopDistance Master,moveHfalse cREVGeneral scriptChecksum} PL] 0 handlerListmouseUp breakPointsscriptSelectionchar 353 to 352 revUniqueID 1093526660782 bookmarks tempScript prevHandlermouseUpscript1

on mouseUp

if the hilite of me = true then

ask file "Save chat as:" with filter "Text file,*.txt"

if the result = "" then

put it into field "path" of card "settings"

put field "chat" of card "chat" into url ("file:" & it)

else

put empty into field "path" of card "settings"

set the hilite of me to false

end if

end if

end mouseUp

Epath@B cREVGeometry Master,expectedRect120,203,370,223Master,scalebottomDistanceMaster,movevDistancefalseMaster,movehDistancefalseMastertrueMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-33Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,cardRanking1Master,scaleleftDistanceMaster,scaletopDistance cREVGeneral revUniqueID 1093526766189 4 FField 2 !Ca cREVGeneral revUniqueID 1093526808404 Backup\$i( JPMessaging options cREVGeneral revUniqueID 1093555173002 6Field 2 !{n cREVGeneral revUniqueID 1093526212590 privatemsg colour9 privmessageAwon mouseUp answer color with the backgroundColor of graphic "privmessage" if the result = "" then set the backgroundColor of graphic "privmessage" to it end if end mouseUp y, cREVGeneralscriptChecksum)yUx+.& revUniqueID 1093526212593 bookmarks handlerListmouseUp tempScript prevHandlermouseUpscriptSelectionchar 148 to 147script

on mouseUp

answer color with the backgroundColor of graphic "privmessage"

if the result = "" then

set the backgroundColor of graphic "privmessage" to it

end if

end mouseUp

: privmessageKP@on mouseUp send mouseUp to button "privmessage" end mouseUp ::~ cREVGeneralscriptChecksum#֏ tڝ.P) revUniqueID 1093526212594 bookmarks handlerListmouseUp tempScript prevHandlermouseUpscriptSelection char 43 to 42script]

on mouseUp

send mouseUp to button "privmessage"

end mouseUp

5Field 2 !\n cREVGeneral revUniqueID 1093526212589 message colour7messageAwon mouseUp answer color with the backgroundColor of graphic "message" if the result = "" then set the backgroundColor of graphic "message" to it end if end mouseUp Z, cREVGeneralscriptChecksumP7= 4: bookmarks revUniqueID 1093526212591 handlerListmouseUpscriptSelectionchar 163 to 162 prevHandler tempScriptscript

on mouseUp

answer color with the backgroundColor of graphic "message"

if the result = "" then

set the backgroundColor of graphic "message" to it

end if

end mouseUp

8messageKP19Fӱm " bookmarks revUniqueID 1093526212592 handlerListmouseUpscriptSelection char 47 to 46 prevHandler tempScriptscriptY

on mouseUp

send mouseUp to button "message"

end mouseUp

IPress enter for multiple lines`E~ cREVGeometryMaster,movehDistance -0.417187Master,scaleRightscaleBottomtrueMastertrueMaster,scaleleftObjectRef 1093526212592Master,moveHObjectRefcardMaster,scaleleftObjectSiderightMaster,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect206,114,385,136Master,moveHObjectSiderightMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-93Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,scaleleftAbsolutetrueMaster,scalelefttrueMaster,cardRanking1Master,moveHAbsolutefalseMaster,scaletopDistanceMaster,scaleleftDistance21 Master,moveHfalse cREVGeneral revUniqueID 1093534635001 bookmarks handlerListmouseUp tempScript prevHandlerscript j Receive HTML`eZ\)Interprete messages containing HTML codeParse HTML tags cREVGeometryMaster,movehDistance -0.457813Master,scaleRightscaleBottomtrueMastertrueMaster,scaleleftObjectRef 1093526212592Master,moveHObjectRefcardMaster,scaleleftObjectSiderightMaster,expectedRect207,78,383,100Master,scalebottomDistanceMaster,movevDistancefalseMaster,moveHObjectSiderightMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-145Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,scaleleftAbsolutetrueMaster,scalelefttrueMaster,cardRanking1Master,scaleleftDistance21Master,scaletopDistanceMaster,moveHAbsolutefalse Master,moveHfalse cREVGeneral bookmarks revUniqueID 1093613006001 handlerListmouseUp prevHandler tempScriptscript uReplace smileys`eTon mouseUp set the enabled of btn "Smile Server" to the hilite of me end mouseUp l5"Replace text smileys by a pictureReplace smileys cREVGeometryMaster,movehDistance-0.4875Master,scaleRightscaleBottomtrueMastertrueMaster,scaleleftObjectRef 1093526212592Master,moveHObjectRefcardMaster,scaleleftObjectSiderightMaster,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect206,96,382,118Master,moveHObjectSiderightMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-184Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,scaleleftAbsolutetrueMaster,scalelefttrueMaster,cardRanking1Master,moveHAbsolutefalseMaster,scaletopDistanceMaster,scaleleftDistance21 Master,moveHfalse cREVGeneralscriptChecksumqFU5mS㴜G revUniqueID 1093641933671 bookmarks handlerListmouseUpscriptSelection char 29 to 28 tempScript prevHandlermouseUpscript

on mouseUp

set the enabled of btn "Smile Server" to the hilite of me

end mouseUp

 Smile Server uon menuPick w lock screen put url ((line lineoffset(w,me) of the cServers of me) & "smile.gif") into image "Smiley" set the loc of image "Smiley" to (width of this cd - 137),117 end menuPick ?mU cServershttp://home.wanadoo.nl/mark.sch/smile/ http://www.ihug.org/ehug/smile/ http://www.ihug.org/ehug/smile2/ http://homepage.mac.com/bvg/smilies/ binfile:/Macintosh HD/Documenten/Rev Stacks/ChatRev/ChatRev 1.2M/User Data/Smileys/ Server 1*Server 1 Server 2 Server 3 Server 4 Local cREVGeometry Master,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect421,97,549,116Master,movehDistance-76Master,moveHObjectSiderightMastertrueMaster,scalerightDistanceMaster,moveHObjectRefcardMaster,cardRanking1Master,scaletopDistanceMaster,moveHAbsolutetrueMaster,scaleleftDistance Master,moveHtrue cREVGeneralscriptChecksumxj^(N<4|K bookmarks revUniqueID 1093655878002 handlerListmenuPick prevHandlermenuPick tempScriptscriptSelectionchar 180 to 179scriptm

on menuPick w

lock screen

put url ((line lineoffset(w,me) of the cServers of me) & "smile.gif") into image "Smiley"

set the loc of image "Smiley" to (width of this cd - 137),117

end menuPick

 l Temp Html!` E cREVGeneral revUniqueID 1093615625262  :-/oPE on mouseDown put the hilite of me into myPrevState repeat while the mouse is down set the hilite of me to (the mouseLoc is within the rect of me) end repeat if the mouseLoc is within the rect of me then set the hilite of me to not myPrevState end if if the hilite of me is true then if the short name of the selectedField is "Enter" then if number of chars of the selection > 0 then set the textStyle of the selection to plain end if end if set the cTextStyle of fld "enter" to empty repeat for each char x in "BIU" set the hilite of btn x to false end repeat end if end mouseDown @ Plain text cREVGeometryMaster,moveVObjectSidebottomMaster,movehDistance-171MastertrueMaster,moveVObjectRefcardMaster,moveHObjectRefcardMaster,moveVAbsolutetrue Master,moveVtrueMaster,movevDistance-43Master,scalebottomDistanceMaster,expectedRect451,395,473,416Master,moveHObjectSiderightMaster,scalerightDistanceMaster,cardRanking2Master,scaletopDistanceMaster,moveHAbsolutetrueMaster,scaleleftDistance Master,moveHtrue cREVGeneral scriptChecksum.V{[cj7 handlerList mouseDown breakPointsscriptSelectionchar 315 to 314 revUniqueID 1093616302225 bookmarks tempScript prevHandlermouseUpscript 

on mouseDown

put the hilite of me into myPrevState

repeat while the mouse is down

set the hilite of me to (the mouseLoc is within the rect of me)

end repeat

if the mouseLoc is within the rect of me then

set the hilite of me to not myPrevState

end if

if the hilite of me is true then

if the short name of the selectedField is "Enter" then

if number of chars of the selection > 0 then

set the textStyle of the selection to plain

end if

end if

set the cTextStyle of fld "enter" to empty

repeat for each char x in "BIU"

set the hilite of btn x to false

end repeat

end if

end mouseDown

pBE on mouseDown put the hilite of me into myPrevState repeat while the mouse is down set the hilite of me to (the mouseLoc is within the rect of me) end repeat if the mouseLoc is within the rect of me then set the hilite of me to not myPrevState end if if the hilite of me is true then setStyle "add","bold" set the hilite of button "P" to false else setStyle "remove","bold" end if end mouseDown Bold cREVGeometryMaster,moveVObjectSidebottomMaster,movehDistance-146MastertrueMaster,moveVObjectRefcardMaster,moveHObjectRefcardMaster,moveVAbsolutetrue Master,moveVtrueMaster,movevDistance-43Master,scalebottomDistanceMaster,expectedRect475,395,499,416Master,moveHObjectSiderightMaster,scalerightDistanceMaster,cardRanking2Master,scaletopDistanceMaster,moveHAbsolutetrueMaster,scaleleftDistance Master,moveHtrue cREVGeneral scriptChecksum%*]mx`5` breakPoints handlerList mouseDownscriptSelectionchar 327 to 326 revUniqueID 1093616319563 bookmarks tempScript prevHandlermouseUpscript

on mouseDown

put the hilite of me into myPrevState

repeat while the mouse is down

set the hilite of me to (the mouseLoc is within the rect of me)

end repeat

if the mouseLoc is within the rect of me then

set the hilite of me to not myPrevState

end if

if the hilite of me is true then

setStyle "add","bold"

set the hilite of button "P" to false

else

setStyle "remove","bold"

end if

end mouseDown

qUE on mouseDown put the hilite of me into myPrevState repeat while the mouse is down set the hilite of me to (the mouseLoc is within the rect of me) end repeat if the mouseLoc is within the rect of me then set the hilite of me to not myPrevState end if if the hilite of me is true then setStyle "add","underline" set the hilite of button "P" to false else setStyle "remove","underline" end if end mouseDown  Underline cREVGeometryMaster,moveVObjectSidebottomMaster,movehDistance-95MastertrueMaster,moveVObjectRefcardMaster,moveHObjectRefcardMaster,moveVAbsolutetrue Master,moveVtrueMaster,movevDistance-43Master,scalebottomDistanceMaster,expectedRect527,395,550,416Master,moveHObjectSiderightMaster,scalerightDistanceMaster,cardRanking2Master,scaletopDistanceMaster,moveHAbsolutetrueMaster,scaleleftDistance Master,moveHtrue cREVGeneralscriptChecksumVw;&DjU bookmarks revUniqueID 1093616321943 handlerList mouseDownscriptSelectionchar 334 to 333 prevHandler mouseDown tempScriptscript

on mouseDown

put the hilite of me into myPrevState

repeat while the mouse is down

set the hilite of me to (the mouseLoc is within the rect of me)

end repeat

if the mouseLoc is within the rect of me then

set the hilite of me to not myPrevState

end if

if the hilite of me is true then

setStyle "add","underline"

set the hilite of button "P" to false

else

setStyle "remove","underline"

end if

end mouseDown

rIE on mouseDown put the hilite of me into myPrevState repeat while the mouse is down set the hilite of me to (the mouseLoc is within the rect of me) end repeat if the mouseLoc is within the rect of me then set the hilite of me to not myPrevState end if if the hilite of me is true then setStyle "add","italic" set the hilite of button "P" to false else setStyle "remove","italic" end if end mouseDown Italic cREVGeometryMaster,moveVObjectSidebottomMaster,movehDistance-120MastertrueMaster,moveVObjectRefcardMaster,moveHObjectRefcardMaster,moveVAbsolutetrue Master,moveVtrueMaster,movevDistance-43Master,scalebottomDistanceMaster,expectedRect502,395,524,416Master,moveHObjectSiderightMaster,scalerightDistanceMaster,cardRanking2Master,scaletopDistanceMaster,moveHAbsolutetrueMaster,scaleleftDistance Master,moveHtrue cREVGeneralscriptChecksum!oؙϳb;Uȩ revUniqueID 1093616325320 bookmarks handlerList mouseDown tempScript prevHandlermouseUpscriptSelectionchar 331 to 330script

on mouseDown

put the hilite of me into myPrevState

repeat while the mouse is down

set the hilite of me to (the mouseLoc is within the rect of me)

end repeat

if the mouseLoc is within the rect of me then

set the hilite of me to not myPrevState

end if

if the hilite of me is true then

setStyle "add","italic"

set the hilite of button "P" to false

else

setStyle "remove","italic"

end if

end mouseDown

Field!@ cREVGeneral revUniqueID 1093684808002  Registrationi`6   cREVGeneral revUniqueID 1093684888002  Nickname)`VDK cREVGeometry Master,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect 80,18,400,38Master,movehDistancefalseMastertrueMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-12Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking1Master,scaletopDistanceMaster,scaleleftDistance cREVGeneralscriptChecksumُ B~ revUniqueID 1093002084650 bookmarks handlerList tempScript prevHandler enterInFieldscriptSelection char 1 to 0script

  Password)`UsJ cREVGeometry Master,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect 80,66,400,86Master,movehDistancefalseMastertrueMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-14Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking1Master,scaletopDistanceMaster,scaleleftDistance cREVGeneralscriptChecksumُ B~ revUniqueID 1093002475561 bookmarks handlerList tempScript prevHandler enterInFieldscriptSelection char 1 to 0script

 E-mail)`VI cREVGeometry Master,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect81,115,401,135Master,movehDistancefalseMastertrueMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-14Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking1Master,scaletopDistanceMaster,scaleleftDistance cREVGeneralscriptChecksumُ B~ revUniqueID 1093002084648 bookmarks handlerList tempScript prevHandler enterInFieldscriptSelection char 1 to 0script

  mouseOver)`UJ cREVGeometry Master,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect80,163,400,183Master,movehDistancefalseMastertrueMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-14Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking1Master,scaletopDistanceMaster,scaleleftDistance cREVGeneralscriptChecksumُ B~ revUniqueID 1093002084645 bookmarks handlerList tempScript prevHandler enterInFieldscriptSelection char 1 to 0script

 About)`VI~ cREVGeometryMaster,scaleBottomObjectSideBottomMaster,scaleBottomscaleBottomtrueMaster,movehDistancefalseMastertrueMaster,scaleBottomObjectRefcardMaster,scaleBottomAbsolutetrueMaster,scaleBottomtrueMaster,expectedRect81,213,397,272Master,scalebottomDistance-130Master,movevDistancefalseMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-14Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,cardRanking2Master,scaleleftDistanceMaster,scaletopDistance cREVGeneralscriptChecksumُ B~ revUniqueID 1093002084642 bookmarks handlerList tempScript prevHandler enterInFieldscriptSelection char 1 to 0script

 ` | Field 2 N cREVGeneral revUniqueID 1093002084646 MouseOver Field 2 N cREVGeneral revUniqueID 1093002084647 About Field 2 N cREVGeneral revUniqueID 1093002084649 E-mail Field 2 CN cREVGeneral revUniqueID 1093002084651 Nickname Field 2 sN cREVGeneral revUniqueID 1093002475596 Password .Field 1 MWJ cREVGeneral revUniqueID 1093183364779 0Examples: "Ken", "Fhqwhgads", "Sluggy", "Pepsi" /Field 1 M cREVGeneral revUniqueID 1093183463119 )Examples: "Strongbadia", "Pass", "Enter" 0Field 1 NJ cREVGeneral revUniqueID 1093183463832 *Examples: "bvg@gmx.net", "your@email.com" 1Field 1 MJ cREVGeneral revUniqueID 1093183480341 @Examples: "I am online", "Don't point at me!", "I like flowers" 2Field 1 PYE cREVGeometryMaster,moveVObjectSidebottomMaster,movehDistancefalseMastertrueMaster,moveVObjectRefcardMaster,moveVAbsolutetrue Master,moveVtrueMaster,movevDistance-90Master,scalebottomDistanceMaster,expectedRect80,278,408,357Master,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-4Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking2Master,scaletopDistanceMaster,scaleleftDistance cREVGeneral revUniqueID 1093183547681 Examples: "I am Bjrnke von Gierke, and work with revolution in my spare time. I made RevChat and other stuff by me can be found at http://revolutionboard.de/bvg", 6"I am paranoid and won't tell you anything about me."Default Smile`x cREVGeneral bookmarks revUniqueID 1093701633071 handlerList prevHandler tempScriptscript Insert SmileATon mouseUp set the cursor to watch open stack "Smileys" as palette end mouseUp S Insert Smile cREVGeometryMaster,moveVObjectSidebottomMaster,movehDistance-32MastertrueMaster,moveVObjectRefcardMaster,moveHObjectRefcardMaster,moveVAbsolutetrue Master,moveVtrueMaster,expectedRect527,395,550,416Master,scalebottomDistanceMaster,movevDistance-43Master,moveHObjectSiderightMaster,scalerightDistanceMaster,cardRanking2Master,scaleleftDistanceMaster,moveHAbsolutetrueMaster,scaletopDistance Master,moveHtrue cREVGeneralscriptChecksumdP`gp: revUniqueID 1093702048001 bookmarks handlerListmouseUp tempScript prevHandlermouseUpscriptSelection char 37 to 36script

on mouseUp

set the cursor to watch

open stack "Smileys" as palette

end mouseUp

ChatBarISon mouseDown if there is a fld "Members" then if the selectedText of fld "Members" is empty then repeat with x = 5 to 8 disable menuitem x of menu "Chat" end repeat else repeat with x = 5 to 8 enable menuitem x of menu "Chat" end repeat end if end if pass mouseDown end mouseDown  cREVGeneral scriptChecksumhyȸ- breakPoints handlerList mouseDownscriptSelectionchar 339 to 338 bookmarks revUniqueID 1093771355003 prevHandler mouseDown tempScriptscript'

on mouseDown

if there is a fld "Members" then

if the selectedText of fld "Members" is empty then

repeat with x = 5 to 8

disable menuitem x of menu "Chat"

end repeat

else

repeat with x = 5 to 8

enable menuitem x of menu "Chat"

end repeat

end if

end if

pass mouseDown

end mouseDown

FileU,--The following menuPick handler was generated by the Menu Builder. on menuPick pWhich global gChatRevShortName,gLogViewerApp switch pWhich case "Register New User..." if the label of btn "Connect" of cd 1 of stack gChatRevShortName is "Disconnect" then beep answer warning "Are you sure that you want to log out and register" & return & "as a new user?" with "Okay" or "Cancel" if it is "Cancel" then exit menuPick end if end if send "disconnect" to btn "Connect" of cd 1 of stack gChatRevShortName go cd "Register" break case "Save As..." ask file "Save this chat as..." with "Untitled.html" if it is not empty then put it into myFilename put "ChatRev 1.2 Chat" & return & (the htmlText of fld "Chat" of cd "Chat" of stack gChatRevShortName) & "" into url ("file:" & myFilename) end if break case "Close" if there is a window "Help" then close window "Help" -- close this stack break case "View Log" put fld "Path" of cd 4 of stack gChatRevShortName into myLogPath if gLogViewerApp is empty then answer file "Choose a text editor to view the log file" if it is not empty then put it into gLogViewerApp if there is a file myLogPath then launch myLogPath with gLogViewerApp else beep end if end if else if there is a file myLogPath then launch myLogPath with gLogViewerApp put the result else beep end if end if break case "Quit" send "disconnect" to btn "Connect" of cd 1 cleanup if the environment is "development" then close stack gChatRevShortName else quit end if break end switch end menuPick File?Register New User... - Save As... (Close/W - View Log - Quit/Q cREVGeneral scriptChecksumo>3DZڜ®)1yS breakPoints handlerListmenuPickscriptSelectionchar 167 to 166 revUniqueID 1093771355004 bookmarks tempScript prevHandlermenuPickscript

--The following menuPick handler was generated by the Menu Builder.

on menuPick pWhich

global gChatRevShortName,gLogViewerApp

switch pWhich

case "Register New User..."

if the label of btn "Connect" of cd 1 of stack gChatRevShortName is "Disconnect" then

beep

answer warning "Are you sure that you want to log out and register" & return & "as a new user?" with "Okay" or "Cancel"

if it is "Cancel" then

exit menuPick

end if

end if

send "disconnect" to btn "Connect" of cd 1 of stack gChatRevShortName

go cd "Register"

break

case "Save As..."

ask file "Save this chat as..." with "Untitled.html"

if it is not empty then

put it into myFilename

put "<html><title>ChatRev 1.2 Chat</title><body>" & return & ¬

(the htmlText of fld "Chat" of cd "Chat" of stack gChatRevShortName) & ¬

"</body></html>" into url ("file:" & myFilename)

end if

break

case "Close"

if there is a window "Help" then close window "Help"

-- close this stack

break

case "View Log"

put fld "Path" of cd 4 of stack gChatRevShortName into myLogPath

if gLogViewerApp is empty then

answer file "Choose a text editor to view the log file"

if it is not empty then

put it into gLogViewerApp

if there is a file myLogPath then

launch myLogPath with gLogViewerApp

else

beep

end if

end if

else

if there is a file myLogPath then

launch myLogPath with gLogViewerApp

put the result

else

beep

end if

end if

break

case "Quit"

send "disconnect" to btn "Connect" of cd 1

cleanup

if the environment is "development" then

close stack gChatRevShortName

else

quit

end if

break

end switch

end menuPick

EditUi--The following menuPick handler was generated by the Menu Builder. on menuPick pWhich global gChatRevShortName switch pWhich case "Undo" undo break case "Cut" cut break case "Copy" copy break case "Paste" paste break case "Clear" clear break case "Select All" put short name of the focusedObject into myFocusedFld if there is a fld myFocusedFld then select text of fld myFocusedFld break case "Settings" lock screen go cd "Settings" set the menuHistory of btn "Go" of stack gChatRevShortName to 4 break end switch end menuPick Edit>Undo/Z - Cut/X Copy/C Paste/V Clear - Select All/A - Settings cREVGeneralscriptChecksum+eFt ! revUniqueID 1093771355005 bookmarks handlerListmenuPick tempScript prevHandlermenuPickscriptSelectionchar 580 to 579script

--The following menuPick handler was generated by the Menu Builder.

on menuPick pWhich

global gChatRevShortName

switch pWhich

case "Undo"

undo

break

case "Cut"

cut

break

case "Copy"

copy

break

case "Paste"

paste

break

case "Clear"

clear

break

case "Select All"

put short name of the focusedObject into myFocusedFld

if there is a fld myFocusedFld then select text of fld myFocusedFld

break

case "Settings"

lock screen

go cd "Settings"

set the menuHistory of btn "Go" of stack gChatRevShortName to 4

break

end switch

end menuPick

ChatU--The following menuPick handler was generated by the Menu Builder. on menuPick pWhich if pWhich contains "Translate" then put the selection into myWord set the itemDelimiter to "|" put item 2 of pWhich into myLanguage put "Translate" into pWhich end if switch pWhich case "Set Tooltip" setlabel break case "Set E-Mail" setEmail break case "Set About" setAbout break case "Clear Chat" put empty into fld "Chat" break case "Translate" send "translate myLanguage,myWord" to stack "Translate" break default set the itemDel to tab put item 1 of the selectedText of fld "Members" into myUser send "userAction pWhich,myUser" to this cd break end switch end menuPick ?!ChatSet Tooltip Set E-Mail Set About - (Send Private Message (See Profile (Send E-Mail (Send File - Translate Chinese Simplified Chinese Traditional English Dutch French German Hebrew Japanese Portuguese Spanish Clear Chat cREVGeneral scriptChecksum|5%ucJG breakPoints handlerListmenuPickscriptSelectionchar 536 to 535 bookmarks revUniqueID 1100988480597 prevHandlermenuPick tempScriptscript

--The following menuPick handler was generated by the Menu Builder.

on menuPick pWhich

if pWhich contains "Translate" then

put the selection into myWord

set the itemDelimiter to "|"

put item 2 of pWhich into myLanguage

put "Translate" into pWhich

end if

switch pWhich

case "Set Tooltip"

setlabel

break

case "Set E-Mail"

setEmail

break

case "Set About"

setAbout

break

case "Clear Chat"

put empty into fld "Chat"

break

case "Translate"

send "translate myLanguage,myWord" to stack "Translate"

break

default

set the itemDel to tab

put item 1 of the selectedText of fld "Members" into myUser

send "userAction pWhich,myUser" to this cd

break

end switch

end menuPick

StyleUD--The following menuPick handler was generated by the Menu Builder. on menuPick pWhich global gChatRevShortName set the itemDel to "|" put the text of me into myMenu if item 1 of pWhich is "Font" then set the textFont of fld "Chat" of cd "Chat" of stack gChatRevShortName to item 2 of pWhich put lineOffset("Font", myMenu) into m put number of lines of fontNames() into myNrOfFontItems repeat with x = m to (m+myNrOfFontItems) if char 1 to 2 of line x of myMenu is "!c" then delete char 1 to 2 of line x of me end repeat put "!c" before line lineoffset(tab & (last item of pWhich),myMenu) of me else if item 1 of pWhich is "Colour" then put lineOffset("Colour", myMenu) into m put 11 into myNrOfClrItems --number of available colours + random repeat with x = m to (m+myNrOfClrItems) if char 1 to 2 of line x of myMenu is "!c" then delete char 1 to 2 of line x of me end repeat put "!c" before line lineoffset(tab & (last item of pWhich),myMenu) of me set the myRandomColour of fld "Enter" of cd "Chat" of stack gChatRevShortName to false if item 2 of pWhich is "Random" then set the myRandomColour of fld "Enter" of cd "Chat" of stack gChatRevShortName to true else if item 2 of pWhich is "Palette" then go stack "Colour Palette" as palette else set the backgroundColor of graphic "Old Colour" of stack "Colour Palette" to the backgroundColor of graphic "Selected Colour" of stack "Colour Palette" set the backgroundColor of graphic "Selected Colour" of stack "Colour Palette" to item 2 of pWhich end if else if item 1 of pWhich is "Size" then put lineOffset("Size", myMenu) into m put 12 into myNrOfSizeItems repeat with x = m to (m+myNrOfSizeItems) if char 1 to 2 of line x of myMenu is "!c" then delete char 1 to 2 of line x of me end repeat put "!c" before line lineoffset(tab & (last item of pWhich),myMenu) of me switch pWhich case "Size|9" set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich break case "Size|10" set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich break case "Size|11" set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich break case "Size|12" set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich break case "Size|14" set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich break case "Size|16" set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich break case "Size|18" set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich break case "Size|20" set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich break case "Size|24" set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich break case "Size|32" set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich break case "Size|48" set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich break case "Size|72" set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich end switch end if end menuPick `%Style9Font !c APC Courier Apple Chancery AppleGaramond Bd AppleGaramond BdIt AppleGaramond Bk AppleGaramond BkIt AppleGaramond Lt AppleGaramond LtIt Arial Arial Black baby BernhardMod BT Bitstream Vera Sans Bitstream Vera Sans Mono Bitstream Vera Serif Capitals Century Gothic Cezanne Charcoal Chicago Comic Sans MS Copperplate Gothic Bold Copperplate Gothic Light Courier Courier CE Courier New Courier TU Curlz MT dyrk Edwardian Script ITC erkend Espy Sans Espy Sans Bold eWorld Tight Gadget Geneva Geneva CE Geneva CY Georgia GrCourier GrHelvetica GrTimes Helvetica Hoefler Text Hoefler Text Ornaments hushold IDAutomationHC39M Impact info Krop Latinskij Lucida Grande Lucida Handwriting mad Monaco Monotype Sorts MT Extra N Helvetica Narrow New York Palatino Photina MT PriamojProp rg samvr Sand Skia smerte Sonata sport SPSS Marker Set sted SToccata Symbol Tahoma Techno Textile Tilstand Times Times CE Times CY Times New Roman Times OE- Roman Times RO TL Help Cyrillic TLCyrillic TLCyrillic2 TLEastEurope TLEastEurope2 Trebuchet MS TTYFont ude Verdana VT100 Webdings Wingdings Zapf Dingbats Size !c 9 10 11 12 14 16 18 20 24 32 48 72 Colour Black White Maroon Green Navy Purple Gray Red Yellow Blue Random - Palette cREVGeneral scriptChecksum4jsQjKg1} breakPoints handlerListmenuPickscriptSelectionchar 1879 to 1878 bookmarks revUniqueID 1101471904019 prevHandlermenuPick tempScriptscript&

--The following menuPick handler was generated by the Menu Builder.

on menuPick pWhich

global gChatRevShortName

set the itemDel to "|"

put the text of me into myMenu

if item 1 of pWhich is "Font" then

set the textFont of fld "Chat" of cd "Chat" of stack gChatRevShortName to item 2 of pWhich

put lineOffset("Font", myMenu) into m

put number of lines of fontNames() into myNrOfFontItems

repeat with x = m to (m+myNrOfFontItems)

if char 1 to 2 of line x of myMenu is "!c" then delete char 1 to 2 of line x of me

end repeat

put "!c" before line lineoffset(tab & (last item of pWhich),myMenu) of me

else if item 1 of pWhich is "Colour" then

put lineOffset("Colour", myMenu) into m

put 11 into myNrOfClrItems --number of available colours + random

repeat with x = m to (m+myNrOfClrItems)

if char 1 to 2 of line x of myMenu is "!c" then delete char 1 to 2 of line x of me

end repeat

put "!c" before line lineoffset(tab & (last item of pWhich),myMenu) of me

set the myRandomColour of fld "Enter" of cd "Chat" of stack gChatRevShortName to false

if item 2 of pWhich is "Random" then

set the myRandomColour of fld "Enter" of cd "Chat" of stack gChatRevShortName to true

else if item 2 of pWhich is "Palette" then

go stack "Colour Palette" as palette

else

set the backgroundColor of graphic "Old Colour" of stack "Colour Palette" to the backgroundColor of graphic "Selected Colour" of stack "Colour Palette"

set the backgroundColor of graphic "Selected Colour" of stack "Colour Palette" to item 2 of pWhich

end if

else if item 1 of pWhich is "Size" then

put lineOffset("Size", myMenu) into m

put 12 into myNrOfSizeItems

repeat with x = m to (m+myNrOfSizeItems)

if char 1 to 2 of line x of myMenu is "!c" then delete char 1 to 2 of line x of me

end repeat

put "!c" before line lineoffset(tab & (last item of pWhich),myMenu) of me

switch pWhich

case "Size|9"

set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich

break

case "Size|10"

set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich

break

case "Size|11"

set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich

break

case "Size|12"

set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich

break

case "Size|14"

set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich

break

case "Size|16"

set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich

break

case "Size|18"

set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich

break

case "Size|20"

set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich

break

case "Size|24"

set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich

break

case "Size|32"

set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich

break

case "Size|48"

set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich

break

case "Size|72"

set the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortName to last item of pWhich

end switch

end if

end menuPick

HelpU>--The following menuPick handler was generated by the Menu Builder. on menuPick pWhich switch pWhich case "Help" go stack "Help" as modeless break case "About ChatRev..." go stack "About" as palette break case "Sponsor..." go stack "Sponsor" as palette break end switch end menuPick "Help&Help/? Sponsor... - &About ChatRev... cREVGeneralscriptChecksum O+mU[ revUniqueID 1093771355006 bookmarks handlerListmenuPick tempScript prevHandlermenuPickscriptSelectionchar 217 to 216script>

--The following menuPick handler was generated by the Menu Builder.

on menuPick pWhich

switch pWhich

case "Help"

go stack "Help" as modeless

break

case "About ChatRev..."

go stack "About" as palette

break

case "Sponsor..."

go stack "Sponsor" as palette

break

end switch

end menuPick

login i 8#c cREVGeneral revUniqueID 1093783776002ConnectexBon mouseUp if the label of me is "connect" then set the label of me to "Disconnect" startconnection put empty into field "members" of card "chat" else disconnect end if end mouseUp on startconnection set the cursor to watch put baseconvert(the seconds,10,16) into myIdentifier put (the label of btn "IP List" of cd 1) & colon & (field "Port" of cd 1) & ("|" & myIdentifier) into field "IP" of cd 1 open socket to (field "ip" of cd 1) with message connected -- set the status button on cd 2 accordingly success of failure of the -- attempt to connect If the Result <> "" then error "startConnection" && the Result set the label of btn "Status" of cd 2 to "Disconnect" set the cPrevLabel of btn "Status" of cd 2 to "Disconnect" else set the label of btn "Status" of cd 2 to "Available" set the cPrevLabel of btn "Status" of cd 2 to "Available" end if end startconnection on disconnect set the menuhistory of button "go" of card "chat" to 1 set the menuhistory of button "go" of card 1 to 1 set the label of button "connect" of card 1 to "connect" write "disconnect" & return to socket field "IP" of card 1 put the result into rslt if rslt is not empty then log rslt end if close socket field "IP" of card 1 log "disconnected" end disconnect on connected theSocket put "login" & return & (field "Name" of cd 1) , (field "Pass" of cd 1) & return into mess write mess to Socket theSocket with message "login" If the Result <> "" then error "connected" && the Result end if end connected on login theIP read from socket theIP until return with message "loginResult" If the Result <> "" then error "login" && the Result close socket theIP end if end login on loginResult theIP theMessage if char 1 to -2 of theMessage = "login wrong" then answer error "wrong login, did you register?" with "Register now" or "Cancel" if it is "Register now" then put fld "Name" into fld "Nickname" of cd "Register" put fld "Pass" into fld "Password" of cd "Register" go to card "Register" end if close socket theIP set the label of me to "connect" else log char 1 to -2 of theMessage write "version 1.2" & return to socket theIP read from socket theIP until return with message "versionResult" end if end loginResult on versionResult theIP theMessage if char 1 to -2 of theMessage = "Version OK" then set the menuhistory of button "go" of card "chat" to 2 set the menuhistory of button "go" of card 1 to 2 read from socket theIP until return with message "loggedIn" else answer error "Version problem:" && char 1 to -2 of theMessage error "version" && char 1 to -2 of theMessage close socket theIP set the label of me to "connect" end if end versionResult -- dit moet worden vervangen door een switch control structure on loggedIn theIP theMessage if char 1 to -2 of theMessage = "ping" then write "pong" & return to socket theIP with message "pong" set the cPingReceived of this stack to the ticks else if char 1 to -2 of theMessage = "chat" then read from socket theIP until return with message "Chat" else if char 1 to -2 of theMessage = "message" then read from socket theIP until return with message "messaging" else if char 1 to -2 of theMessage = "me" then read from socket theIP until return with message "myself" else if char 1 to -2 of theMessage = "setMouse" then read from socket theIP until return with message "setMouse" else if char 1 to -2 of theMessage = "mail" then read from socket theIP until return with message "mail" else if char 1 to -2 of themessage = "member" then read from socket theIP until return with message "member" else if char 1 to -2 of themessage = "unmember" then read from socket theIP until return with message "unmember" else if char 1 to -2 of themessage = "answer" then read from socket theIP until return with message "answerIt" else if char 1 to -2 of themessage = "thread" then read from socket theIP until return with message "thread" else if char 1 to -2 of themessage = "threads" then read from socket theIP until return with message "threads" else if char 1 to -2 of theMessage = "fileRequest" then read from socket theIP until return with message "handleFileRequest" else if char 1 to -2 of theMessage = "fileAccept" then read from socket theIP until return with message "handleFileAccept" else if char 1 to -2 of themessage = "kick" then log "kicked by the server!" disconnect else if char 1 to -2 of theMessage = "error" then read from socket theIP until return with message "serverError" end if end loggedIn on logedIn theIP theMessage put the target into x answer (x && "tried to send a logedIn message!") end logedIn on pong theIP if the result <> "" then error "pong" && the result disconnect else read from socket theIP until return with message "loggedin" end if end pong /* Comment added by Mark S. It appears that a smiley can screw up the entire chat field, because the smiley is put into the field a second time, but then as plain text. You really don't want this. I prevent the chat field from being messed up by adding a break to the html code that displays the image (see above: put "
" after theMsg). The result is that a line is added. This additional line is not counted by the chat handler. So, I have to make a correction by subtracting 1 from theCount. */ on chat theIP theMessage read from socket theIP until return put the scroll of fld "Chat" of cd "Chat" into oldScroll -- lines added by Mark S put it into myReadMessage if the hilite of btn "Receive HTML" of cd 4 is true then set the htmlText of fld "Temp HTML" of cd 2 to myReadMessage get ("

" & fld "Temp HTML" of cd 2 & "

") end if -- replace smileys get replaceSmileys(it) put the itemDelimiter into myOldDel set the itemDelimiter to numToChar(11) put item 2 of it into mySmileyFound get item 1 of it -- to keep remaining syntax as original as possible set the itemDelimiter to myOldDel -- lines added by Mark S until here put "

" & char 1 to -2 of theMessage & ":" && char 4 to -2 of it into theMessage put theMessage into a replace "

" with return in a put the number of lines of char 1 to -3 of a into theCount put the formattedHeight of field "chat" of card "chat" <= the vscroll of field "chat" of card "chat" + the height of field "chat" of card "chat" + 30 into x put return & " " after field "chat" of card "chat" set the htmltext of line -1 of field "chat" of card "chat" to theMessage set the itemDelimiter to ":" -- line added by Mark S if mySmileyFound is true then subtract 2 from theCount set the textColor of item 1 of line -theCount of field "chat" of card "chat" to the backgroundcolor of graphic "message" of card "settings" if x = true then set the vScroll of field "chat" of card "chat" to the formattedHeight of field "chat" of card "chat" else set the scroll of field "chat" of card "chat" to oldscroll end if --speech speekChat savetofile theCount read from socket theIP until return with message "loggedIn" end chat on speekChat set the itemDel to colon if the hilite of button "Enable speech" of cd "Settings" is true then repeat until not revIsSpeaking --with messages wait with messages end repeat revSpeak (item 2 to -1 of last line of fld "Chat" of cd "Chat") end if end speekChat on messaging theIP theMessage put "msg from" && char 1 to -2 of theMessage & ":" into theMessage read from socket theIP until return -- lines added by Mark S -- replace "

" with empty in it put it into myReadMessage if the hilite of btn "Receive HTML" of cd 4 is true then set the htmlText of fld "Temp HTML" of cd 2 to myReadMessage get ("

" & fld "Temp HTML" of cd 2 & "

") end if -- replace smileys get replaceSmileys(it) put the itemDelimiter into myOldDel set the itemDelimiter to numToChar(11) put item 2 of it into mySmileyFound get item 1 of it -- to keep remaining syntax as original as possible set the itemDelimiter to myOldDel -- lines added by Mark S until here privmsg (theMessage && char 1 to -1 of of (word 1 to -1 of it)),mySmileyFound read from socket theIP until return with message "loggedIn" end messaging on privmsg theMessage,mySmileyFound set the itemDelimiter to colon put the scroll of fld "Chat" of cd "Chat" into oldScroll if char 1 to 3 of word 1 of item 2 of theMessage is "

" then delete char 1 to 3 of word 1 of item 2 of theMessage put theMessage into a replace "

" with return in a put the number of lines of char 1 to -3 of a into theCount if mySmileyFound then subtract 2 from theCount put removeFinalEmptyLines(theMessage) into theMessage put the formattedHeight of field "chat" of card "chat" <= the vscroll of field "chat" of card "chat" + the height of field "chat" of card "chat" + 30 into x put return & " " after field "chat" of card "chat" set the htmltext of last line of field "chat" of card "chat" to theMessage set the itemDelimiter to ":" set the textColor of item 1 of line -theCount of field "chat" of card "chat" to the backgroundcolor of graphic "privmessage" of card "settings" if x = true then set the vScroll of field "chat" of card "chat" to the formattedHeight of field "chat" of card "chat" else set the scroll of field "chat" of card "chat" to oldscroll end if sendAwayMessage theMessage speekChat savetofile theCount end privmsg on myself theIP theMessage read from socket theIP until return action "<" & char 1 to -2 of theMessage && char 1 to -2 of it & ">" read from socket theIP until return with message "loggedIn" end myself on action theMessage put the scroll of fld "Chat" of cd "Chat" into oldScroll put the formattedHeight of field "chat" of card "chat" <= the vscroll of field "chat" of card "chat" + the height of field "chat" of card "chat" + 30 into x put return & theMessage after field "chat" of card "chat" set the textColor of char 2 to -2 of line -1 of field "chat" of card "chat" to the backgroundcolor of graphic "message" of card "settings" if x = true then set the vScroll of field "chat" of card "chat" to the formattedHeight of field "chat" of card "chat" else set the scroll of field "chat" of card "chat" to oldscroll end if savetofile 1 end action on setMouse theIP theName read from socket theIP until return set the itemDelimiter to tab put 0 into x repeat for each line theLine in field "members" of card "chat" add one to x if item 1 of theLine = char 1 to -2 of theName then set the itemDelimiter to numToChar(11) put item 1 of replaceSmileys(char 1 to -2 of it) into myTextWithSmileys if last char of myTextWithSmileys is return then delete last char of myTextWithSmileys replace "
" with space in myTextWithSmileys set the itemDelimiter to tab set the htmlText of item 2 of line x of field "members" of card "chat" to myTextWithSmileys exit repeat end if end repeat read from socket theIP until return with message "loggedIn" end setMouse on mail theIP theMessage revmail word one of theMessage,,word 2 to -1 of theMessage read from socket theIP until return with message "loggedIn" end mail on member theIP theMessage if field "login sound" of card "settings" = "beep" then beep else if field "login sound" of card "settings" = "" then --do nothing here else set the currentTime of player "login sound" of card "chat" to 1 start player "login sound" of card "chat" end if if char 1 to -2 of theMessage is not among the lines of field "Members" of card "chat" then put char 1 to -2 of theMessage & return after field "Members" of card "chat" end if read from socket theIP until return with message "loggedIn" end member on unmember theIP theMessage if field "login sound" of card "settings" = "beep" then beep else if field "login sound" of card "settings" = "" then --do nothing here else set the currentTime of player "login sound" of card "chat" to 1 start player "login sound" of card "chat" end if set the itemDelimiter to tab repeat for each line theLine in field "members" of card "chat" add one to x if item 1 of theLine = item 1 of theMessage then delete line x of field "members" of card "chat" exit repeat end if end repeat read from socket theIP until return with message "loggedIn" end unmember on serverError theIP theMessage log "server error:" && char 1 to -2 of theMessage disconnect end serverError on error theMessage log "error:" && theMessage -- made disconnection conditional because if socket is already open -- you don't necessarily want to quit - Mark S if "already open" is not in theMessage then disconnect end if end error on socketError theID, TheError error "socketError" && theerror end socketError on log theError --put return & theError after url "file:error log.txt" put theError & return before field log of card 1 end log -- handler added by Mark S on sendAwayMessage theMessage put (fld "Autoreply message" of cd 4) into myAutoReplyMsg -- put char 4 to -5 of theMessage into theMessage put char 1 to -2 of word 3 of theMessage into myUserName if myAutoReplyMsg is not in theMessage then if (word 1 to 2 of theMessage is "msg from") and (char 1 to 6 of word 3 of theMessage is not "server") then if the label of btn "Status" of cd 2 is "Away" then put "/msg" && myUserName & space into fld "Enter" of cd 2 if the cLastMessageSentTime of this cd is not empty then put the cLastMessageSentTime of this cd into myIdleTime convert myIdleTime to seconds put (the seconds - myIdleTime) into myIdleTime put " (" & "for" && myIdleTime && "seconds)" after myAutoReplyMsg end if repeat with x = 1 to number of chars of myAutoReplyMsg put char x of myAutoReplyMsg after fld "Enter" of cd 2 end repeat send chatOut to fld "Enter" of cd 2 put empty into fld "Enter" of cd 2 end if end if end if end sendAwayMessage /* The following handlers serve the forum */ on thread theIP theMessage put char 1 to -2 of theMessage into theCount read from socket theIP for theCount put it into fld "Text" of cd "Forum" send ("makeLinks" && quote & "text" & quote) to cd "Forum" read from socket theIP until return with message "loggedIn" end thread on threads theIP theMessage put char 1 to -2 of theMessage into theCount read from socket theIP for theCount put it into field "threads" of cd "Forum" -- set the twelveHourTime to false -- put the long system time into field "time" of cd "Forum" read from socket theIP until return with message "loggedIn" end threads on answerIt theIP theMessage answer char 1 to -2 of theMessage log "answer error:" && char 1 to -2 of theMessage read from socket theIP until return with message "loggedIn" end answerIt /* End of the forum handlers Start of handling File Requests */ on handleFileRequest theIP theRemoteUser global gChatRevShortName delete last char of theRemoteUser read from socket theIP until return put char 1 to -2 of it into myFilePath read from socket theIP until return put char 1 to -2 of it into myFileDescription send "storeRequest theRemoteUser,myFilePath,myFileDescription" to btn "File Request" of cd "Chat" of stack gChatRevShortName read from socket theIP until return with message "loggedIn" -- put the result end handleFileRequest on handleFileAccept theIP theRemoteUser global gChatRevShortName delete last char of theRemoteUser read from socket theIP until return put char 1 to -2 of it into myFilePath read from socket theIP until return put char 1 to -2 of it into myRcvdInfo if validIP(myRcvdInfo) then beep -- replace the following line by putting a message into the file request window -- e.g. "accepted by destination user and sending now". answer information "User" && theRemoteUser && "with IP" && myRcvdInfo && "accepted your file request." send "sendFile myRcvdInfo,myFilePath,theRemoteUser" to stack "Send File Request" else beep answer error "User" && theRemoteUser && "rejected your file request, because:" & return & wrapLines(myRcvdInfo) end if read from socket theIP until return with message "loggedIn" end handleFileAccept function wrapLines theData put 0 into y repeat with x = 1 to number of words of theData add 1 to y if x > 11 then put return before word (x+1) of theData put 0 into y end if end repeat return theData end wrapLines on socketClosed error "You got disconnected." disconnect end socketClosed tR developmentfalseConnect cREVGeometryMaster,movehDistance-163Master,scaleRightscaleBottomtrueMastertrueMaster,moveHObjectRefcardMaster,expectedRect 336,64,418,87Master,scalebottomDistanceMaster,movevDistancefalseMaster,moveHObjectSiderightMaster,scaleRightAbsolutefalseMaster,scaleRightfalseMaster,scalerightDistance -0.190625Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,cardRanking1Master,scaleleftDistanceMaster,scaletopDistanceMaster,moveHAbsolutetrue Master,moveHtrue cREVGeneral scriptChecksum #Ox hE handlerList3mouseUp startconnection disconnect connected login loginResult versionResult loggedIn logedIn pong chat speekChat messaging privmsg myself action setMouse mail member unmember serverError error socketError log sendAwayMessage thread threads answerIt handleFileRequest handleFileAccept wrapLines socketClosed breakPointsscriptSelectionchar 16035 to 16034 bookmarks revUniqueID 1090155855947 prevHandlerhandleFileAccept tempScriptscript

on mouseUp

if the label of me is "connect" then

set the label of me to "Disconnect"

startconnection

put empty into field "members" of card "chat"

else

disconnect

end if

end mouseUp

on startconnection

set the cursor to watch

put baseconvert(the seconds,10,16) into myIdentifier

put (the label of btn "IP List" of cd 1) & colon & (field "Port" of cd 1) & ("|" & myIdentifier) into field "IP" of cd 1

open socket to (field "ip" of cd 1) with message connected

-- set the status button on cd 2 accordingly success of failure of the

-- attempt to connect

If the Result <> "" then

error "startConnection" && the Result

set the label of btn "Status" of cd 2 to "Disconnect"

set the cPrevLabel of btn "Status" of cd 2 to "Disconnect"

else

set the label of btn "Status" of cd 2 to "Available"

set the cPrevLabel of btn "Status" of cd 2 to "Available"

end if

end startconnection

on disconnect

set the menuhistory of button "go" of card "chat" to 1

set the menuhistory of button "go" of card 1 to 1

set the label of button "connect" of card 1 to "connect"

write "disconnect" & return to socket field "IP" of card 1

put the result into rslt

if rslt is not empty then

log rslt

end if

close socket field "IP" of card 1

log "disconnected"

end disconnect

on connected theSocket

put "login" & return & (field "Name" of cd 1) , (field "Pass" of cd 1) & return into mess

write mess to Socket theSocket with message "login"

If the Result <> "" then

error "connected" && the Result

end if

end connected

on login theIP

read from socket theIP until return with message "loginResult"

If the Result <> "" then

error "login" && the Result

close socket theIP

end if

end login

on loginResult theIP theMessage

if char 1 to -2 of theMessage = "login wrong" then

answer error "wrong login, did you register?" with "Register now" or "Cancel"

if it is "Register now" then

put fld "Name" into fld "Nickname" of cd "Register"

put fld "Pass" into fld "Password" of cd "Register"

go to card "Register"

end if

close socket theIP

set the label of me to "connect"

else

log char 1 to -2 of theMessage

write "version 1.2" & return to socket theIP

read from socket theIP until return with message "versionResult"

end if

end loginResult

on versionResult theIP theMessage

if char 1 to -2 of theMessage = "Version OK" then

set the menuhistory of button "go" of card "chat" to 2

set the menuhistory of button "go" of card 1 to 2

read from socket theIP until return with message "loggedIn"

else

answer error "Version problem:" && char 1 to -2 of theMessage

error "version" && char 1 to -2 of theMessage

close socket theIP

set the label of me to "connect"

end if

end versionResult

-- dit moet worden vervangen door een switch control structure

on loggedIn theIP theMessage

if char 1 to -2 of theMessage = "ping" then

write "pong" & return to socket theIP with message "pong"

set the cPingReceived of this stack to the ticks

else if char 1 to -2 of theMessage = "chat" then

read from socket theIP until return with message "Chat"

else if char 1 to -2 of theMessage = "message" then

read from socket theIP until return with message "messaging"

else if char 1 to -2 of theMessage = "me" then

read from socket theIP until return with message "myself"

else if char 1 to -2 of theMessage = "setMouse" then

read from socket theIP until return with message "setMouse"

else if char 1 to -2 of theMessage = "mail" then

read from socket theIP until return with message "mail"

else if char 1 to -2 of themessage = "member" then

read from socket theIP until return with message "member"

else if char 1 to -2 of themessage = "unmember" then

read from socket theIP until return with message "unmember"

else if char 1 to -2 of themessage = "answer" then

read from socket theIP until return with message "answerIt"

else if char 1 to -2 of themessage = "thread" then

read from socket theIP until return with message "thread"

else if char 1 to -2 of themessage = "threads" then

read from socket theIP until return with message "threads"

else if char 1 to -2 of theMessage = "fileRequest" then

read from socket theIP until return with message "handleFileRequest"

else if char 1 to -2 of theMessage = "fileAccept" then

read from socket theIP until return with message "handleFileAccept"

else if char 1 to -2 of themessage = "kick" then

log "kicked by the server!"

disconnect

else if char 1 to -2 of theMessage = "error" then

read from socket theIP until return with message "serverError"

end if

end loggedIn

on logedIn theIP theMessage

put the target into x

answer (x && "tried to send a logedIn message!")

end logedIn

on pong theIP

if the result <> "" then

error "pong" && the result

disconnect

else

read from socket theIP until return with message "loggedin"

end if

end pong

/*

Comment added by Mark S.

It appears that a smiley can screw up the entire chat field, because the smiley is

put into the field a second time, but then as plain text. You really don't want this.

I prevent the chat field from being messed up by adding a break to the html code

that displays the image (see above: put "<br>" after theMsg). The result is that

a line is added. This additional line is not counted by the chat handler. So, I have

to make a correction by subtracting 1 from theCount.

*/

on chat theIP theMessage

read from socket theIP until return

put the scroll of fld "Chat" of cd "Chat" into oldScroll

-- lines added by Mark S

put it into myReadMessage

if the hilite of btn "Receive HTML" of cd 4 is true then

set the htmlText of fld "Temp HTML" of cd 2 to myReadMessage

get ("<p>" & fld "Temp HTML" of cd 2 & "</p>")

end if

-- replace smileys

get replaceSmileys(it)

put the itemDelimiter into myOldDel

set the itemDelimiter to numToChar(11)

put item 2 of it into mySmileyFound

get item 1 of it -- to keep remaining syntax as original as possible

set the itemDelimiter to myOldDel

-- lines added by Mark S until here

put "<p>" & char 1 to -2 of theMessage & ":" && char 4 to -2 of it into theMessage

put theMessage into a

replace "</p>" with return in a

put the number of lines of char 1 to -3 of a into theCount

put the formattedHeight of field "chat" of card "chat" <= the vscroll of field "chat" of card "chat" + the height of field "chat" of card "chat" + 30 into x

put return & " " after field "chat" of card "chat"

set the htmltext of line -1 of field "chat" of card "chat" to theMessage

set the itemDelimiter to ":"

-- line added by Mark S

if mySmileyFound is true then subtract 2 from theCount

set the textColor of item 1 of line -theCount of field "chat" of card "chat" to the backgroundcolor of graphic "message" of card "settings"

if x = true then

set the vScroll of field "chat" of card "chat" to the formattedHeight of field "chat" of card "chat"

else

set the scroll of field "chat" of card "chat" to oldscroll

end if

--speech

speekChat

savetofile theCount

read from socket theIP until return with message "loggedIn"

end chat

on speekChat

set the itemDel to colon

if the hilite of button "Enable speech" of cd "Settings" is true then

repeat until not revIsSpeaking --with messages

wait with messages

end repeat

revSpeak (item 2 to -1 of last line of fld "Chat" of cd "Chat")

end if

end speekChat

on messaging theIP theMessage

put "msg from" && char 1 to -2 of theMessage & ":" into theMessage

read from socket theIP until return

-- lines added by Mark S

-- replace "<p>" with empty in it

put it into myReadMessage

if the hilite of btn "Receive HTML" of cd 4 is true then

set the htmlText of fld "Temp HTML" of cd 2 to myReadMessage

get ("<p>" & fld "Temp HTML" of cd 2 & "</p>")

end if

-- replace smileys

get replaceSmileys(it)

put the itemDelimiter into myOldDel

set the itemDelimiter to numToChar(11)

put item 2 of it into mySmileyFound

get item 1 of it -- to keep remaining syntax as original as possible

set the itemDelimiter to myOldDel

-- lines added by Mark S until here

privmsg (theMessage && char 1 to -1 of of (word 1 to -1 of it)),mySmileyFound

read from socket theIP until return with message "loggedIn"

end messaging

on privmsg theMessage,mySmileyFound

set the itemDelimiter to colon

put the scroll of fld "Chat" of cd "Chat" into oldScroll

if char 1 to 3 of word 1 of item 2 of theMessage is "<p>" then delete char 1 to 3 of word 1 of item 2 of theMessage

put theMessage into a

replace "</p>" with return in a

put the number of lines of char 1 to -3 of a into theCount

if mySmileyFound then subtract 2 from theCount

put removeFinalEmptyLines(theMessage) into theMessage

put the formattedHeight of field "chat" of card "chat" <= the vscroll of field "chat" of card "chat" + the height of field "chat" of card "chat" + 30 into x

put return & " " after field "chat" of card "chat"

set the htmltext of last line of field "chat" of card "chat" to theMessage

set the itemDelimiter to ":"

set the textColor of item 1 of line -theCount of field "chat" of card "chat" to the backgroundcolor of graphic "privmessage" of card "settings"

if x = true then

set the vScroll of field "chat" of card "chat" to the formattedHeight of field "chat" of card "chat"

else

set the scroll of field "chat" of card "chat" to oldscroll

end if

sendAwayMessage theMessage

speekChat

savetofile theCount

end privmsg

on myself theIP theMessage

read from socket theIP until return

action "<" & char 1 to -2 of theMessage && char 1 to -2 of it & ">"

read from socket theIP until return with message "loggedIn"

end myself

on action theMessage

put the scroll of fld "Chat" of cd "Chat" into oldScroll

put the formattedHeight of field "chat" of card "chat" <= the vscroll of field "chat" of card "chat" + the height of field "chat" of card "chat" + 30 into x

put return & theMessage after field "chat" of card "chat"

set the textColor of char 2 to -2 of line -1 of field "chat" of card "chat" to the backgroundcolor of graphic "message" of card "settings"

if x = true then

set the vScroll of field "chat" of card "chat" to the formattedHeight of field "chat" of card "chat"

else

set the scroll of field "chat" of card "chat" to oldscroll

end if

savetofile 1

end action

on setMouse theIP theName

read from socket theIP until return

set the itemDelimiter to tab

put 0 into x

repeat for each line theLine in field "members" of card "chat"

add one to x

if item 1 of theLine = char 1 to -2 of theName then

set the itemDelimiter to numToChar(11)

put item 1 of replaceSmileys(char 1 to -2 of it) into myTextWithSmileys

if last char of myTextWithSmileys is return then delete last char of myTextWithSmileys

replace "<br>" with space in myTextWithSmileys

set the itemDelimiter to tab

set the htmlText of item 2 of line x of field "members" of card "chat" to myTextWithSmileys

exit repeat

end if

end repeat

read from socket theIP until return with message "loggedIn"

end setMouse

on mail theIP theMessage

revmail word one of theMessage,,word 2 to -1 of theMessage

read from socket theIP until return with message "loggedIn"

end mail

on member theIP theMessage

if field "login sound" of card "settings" = "beep" then

beep

else if field "login sound" of card "settings" = "" then

--do nothing here

else

set the currentTime of player "login sound" of card "chat" to 1

start player "login sound" of card "chat"

end if

if char 1 to -2 of theMessage is not among the lines of field "Members" of card "chat" then

put char 1 to -2 of theMessage & return after field "Members" of card "chat"

end if

read from socket theIP until return with message "loggedIn"

end member

on unmember theIP theMessage

if field "login sound" of card "settings" = "beep" then

beep

else if field "login sound" of card "settings" = "" then

--do nothing here

else

set the currentTime of player "login sound" of card "chat" to 1

start player "login sound" of card "chat"

end if

set the itemDelimiter to tab

repeat for each line theLine in field "members" of card "chat"

add one to x

if item 1 of theLine = item 1 of theMessage then

delete line x of field "members" of card "chat"

exit repeat

end if

end repeat

read from socket theIP until return with message "loggedIn"

end unmember

on serverError theIP theMessage

log "server error:" && char 1 to -2 of theMessage

disconnect

end serverError

on error theMessage

log "error:" && theMessage

-- made disconnection conditional because if socket is already open

-- you don't necessarily want to quit - Mark S

if "already open" is not in theMessage then

disconnect

end if

end error

on socketError theID, TheError

error "socketError" && theerror

end socketError

on log theError

--put return & theError after url "file:error log.txt"

put theError & return before field log of card 1

end log

-- handler added by Mark S

on sendAwayMessage theMessage

put (fld "Autoreply message" of cd 4) into myAutoReplyMsg

-- put char 4 to -5 of theMessage into theMessage

put char 1 to -2 of word 3 of theMessage into myUserName

if myAutoReplyMsg is not in theMessage then

if (word 1 to 2 of theMessage is "msg from") and (char 1 to 6 of word 3 of theMessage is not "server") then

if the label of btn "Status" of cd 2 is "Away" then

put "/msg" && myUserName & space into fld "Enter" of cd 2

if the cLastMessageSentTime of this cd is not empty then

put the cLastMessageSentTime of this cd into myIdleTime

convert myIdleTime to seconds

put (the seconds - myIdleTime) into myIdleTime

put " (" & "for" && myIdleTime && "seconds)" after myAutoReplyMsg

end if

repeat with x = 1 to number of chars of myAutoReplyMsg

put char x of myAutoReplyMsg after fld "Enter" of cd 2

end repeat

send chatOut to fld "Enter" of cd 2

put empty into fld "Enter" of cd 2

end if

end if

end if

end sendAwayMessage

/*

The following handlers serve the forum

*/

on thread theIP theMessage

put char 1 to -2 of theMessage into theCount

read from socket theIP for theCount

put it into fld "Text" of cd "Forum"

send ("makeLinks" && quote & "text" & quote) to cd "Forum"

read from socket theIP until return with message "loggedIn"

end thread

on threads theIP theMessage

put char 1 to -2 of theMessage into theCount

read from socket theIP for theCount

put it into field "threads" of cd "Forum"

-- set the twelveHourTime to false

-- put the long system time into field "time" of cd "Forum"

read from socket theIP until return with message "loggedIn"

end threads

on answerIt theIP theMessage

answer char 1 to -2 of theMessage

log "answer error:" && char 1 to -2 of theMessage

read from socket theIP until return with message "loggedIn"

end answerIt

/*

End of the forum handlers

Start of handling File Requests

*/

on handleFileRequest theIP theRemoteUser

global gChatRevShortName

delete last char of theRemoteUser

read from socket theIP until return

put char 1 to -2 of it into myFilePath

read from socket theIP until return

put char 1 to -2 of it into myFileDescription

send "storeRequest theRemoteUser,myFilePath,myFileDescription" to btn "File Request" of cd "Chat" of stack gChatRevShortName

read from socket theIP until return with message "loggedIn"

-- put the result

end handleFileRequest

on handleFileAccept theIP theRemoteUser

global gChatRevShortName

delete last char of theRemoteUser

read from socket theIP until return

put char 1 to -2 of it into myFilePath

read from socket theIP until return

put char 1 to -2 of it into myRcvdInfo

if validIP(myRcvdInfo) then

beep

-- replace the following line by putting a message into the file request window

-- e.g. "accepted by destination user and sending now".

answer information "User" && theRemoteUser && "with IP" && myRcvdInfo && "accepted your file request."

send "sendFile myRcvdInfo,myFilePath,theRemoteUser" to stack "Send File Request"

else

beep

answer error "User" && theRemoteUser && "rejected your file request, because:" & return & wrapLines(myRcvdInfo)

end if

read from socket theIP until return with message "loggedIn"

end handleFileAccept

function wrapLines theData

put 0 into y

repeat with x = 1 to number of words of theData

add 1 to y

if x > 11 then

put return before word (x+1) of theData

put 0 into y

end if

end repeat

return theData

end wrapLines

on socketClosed

error "You got disconnected."

disconnect

end socketClosed

Nameipnon enterInField select text fld "Pass" end enterInField on returnInField enterInField end returnInField xTJ cREVGeometry Master,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect 129,69,366,91Master,movehDistancefalseMastertrueMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-232Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking1Master,scaletopDistanceMaster,scaleleftDistance cREVGeneralscriptChecksumb;_ revUniqueID 1090155867286 bookmarks handlerListenterInField returnInField tempScript prevHandler enterInFieldscriptSelection char 40 to 39script@

on enterInField

select text fld "Pass"

end enterInField

on returnInField

enterInField

end returnInField

 passipxon enterInField send "mouseUp" to btn "Connect" end enterInField on returnInField enterInField end returnInField xuJ cREVGeometry Master,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect129,95,323,115Master,movehDistancefalseMastertrueMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-232Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking1Master,scaletopDistanceMaster,scaleleftDistance cREVGeneralscriptChecksumE/ͫe=˚u} revUniqueID 1090155872438 bookmarks handlerListenterInField returnInField tempScript prevHandler enterInFieldscriptSelectionchar 100 to 99script>

on enterInField

send "mouseUp" to btn "Connect"

end enterInField

on returnInField

enterInField

end returnInField

 Field 2 DS2 cREVGeneral revUniqueID 1090155882974 Name Field 2 /uG cREVGeneral revUniqueID 1090155894748 PasswordServers i il cREVGeneral revUniqueID 1093783792002 Field 3 @6 cREVGeneral revUniqueID 1090416205814 IP YPortipon closeField if me is empty then put "80" into me put the label of btn "IP List" & colon & me into fld "IP" end closeField on enterInField closeField end enterInField on returnInField closeField end returnInField : cREVGeometryMaster,movehDistance-181Master,scaleRightscaleBottomtrueMastertrueMaster,moveHObjectRefcardMaster,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect406,210,464,232Master,moveHObjectSiderightMaster,scaleRightAbsolutefalseMaster,scaleRightfalseMaster,scalerightDistance-0.2375Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking1Master,moveHAbsolutetrueMaster,scaletopDistanceMaster,scaleleftDistance Master,moveHtrue cREVGeneralscriptChecksum*F Mhc revUniqueID 1093553953002 bookmarks handlerList%closeField enterInField returnInField tempScript prevHandler closeFieldscriptSelection char 41 to 52script

on closeField

if me is empty then put "80" into me

put the label of btn "IP List" & colon & me into fld "IP"

end closeField

on enterInField

closeField

end enterInField

on returnInField

closeField

end returnInField

 Z * cREVGeometry Master,expectedRect360,210,402,231Master,scalebottomDistanceMaster,movevDistancefalseMaster,movehDistance-237Master,moveHObjectSiderightMastertrueMaster,scalerightDistanceMaster,moveHObjectRefcardMaster,cardRanking1Master,scaleleftDistanceMaster,moveHAbsolutetrueMaster,scaletopDistance Master,moveHtrue cREVGeneral revUniqueID 1093553957003 Port^DefaultEx3on mouseUp put "80" into fld "Port" end mouseUp #RSet the port to default cREVGeometry Master,expectedRect489,210,571,232Master,scalebottomDistanceMaster,movevDistancefalseMaster,movehDistance-94Master,moveHObjectSiderightMastertrueMaster,scalerightDistanceMaster,moveHObjectRefcardMaster,cardRanking1Master,scaleleftDistanceMaster,moveHAbsolutetrueMaster,scaletopDistance Master,moveHtrue cREVGeneralscriptChecksum>g! [xHC revUniqueID 1093555358001 bookmarks handlerListmouseUp tempScript prevHandlermouseUpscriptSelection char 21 to 20script

on mouseUp

put "80" into fld "Port"

end mouseUp

aIP Liste+uCon enterInField if the label of me is not empty then if lineoffset(the label of me,me) = 0 then put (the label of me) & return before me end if put the label of me & colon & fld "Port" of cd 1 into fld "IP" end if end enterInField on menuPick if the optionKey is down then delete line (the menuHistory of me) of me set the label of me to line 1 of me if the lable of me is not empty then put the label of me & colon & fld "Port" of cd 1 into fld "IP" end if end if end menuPick on returnInField enterInField end returnInField x  cREVGeometry Master,expectedRect122,211,276,233Master,scalebottomDistanceMaster,movevDistancefalseMaster,movehDistancefalseMastertrueMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-277Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,cardRanking1Master,scaleleftDistanceMaster,scaletopDistance cREVGeneralscriptChecksumYYxzt Og' revUniqueID 1093556362001 bookmarks handlerList#enterInField menuPick returnInField tempScript prevHandler enterInFieldscriptSelectionchar 514 to 513script w

on enterInField

if the label of me is not empty then

if lineoffset(the label of me,me) = 0 then

put (the label of me) & return before me

end if

put the label of me & colon & fld "Port" of cd 1 into fld "IP"

end if

end enterInField

on menuPick

if the optionKey is down then

delete line (the menuHistory of me) of me

set the label of me to line 1 of me

if the lable of me is not empty then

put the label of me & colon & fld "Port" of cd 1 into fld "IP"

end if

end if

end menuPick

on returnInField

enterInField

end returnInField

Field @.H cREVGeneral revUniqueID 1093776992003  IP URLIP URLe+u]constant dot="." on enterInField if the label of me is not empty then if lineoffset(the label of me,me) = 0 then put (the label of me) & return before me end if end if menuPick end enterInField on menuPick put (the label of me) into myURL if the optionKey is down then delete line (the menuHistory of me) of me set the label of me to line 1 of me end if if ("http://" is not in myURL) and ("ftp://" is not in myURL) then put "http://" before myURL put url myURL into myIP if correctIP(myIP) then set the label of btn "IP List" to myIP send "enterInField" to btn "IP List" end if end menuPick on returnInField enterInField end returnInField function correctIP myIP put false into myCorrectIPFlag if myIP is not empty then if the number of lines of myIP = 1 then set the itemDelimiter to dot repeat with x = 1 to number of items of myURL if x > 4 then put false into myCorrectIPFlag exit repeat else if item x of myIP is not a number then put false into myCorrectIPFlag exit repeat else if (item x of myIP) < 0 or (item x of myIP > 255) then put false into myCorrectIPFlag exit repeat end if put true into myCorrectIPFlag end repeat end if end if return myCorrectIPFlag end correctIP x  cREVGeometry Master,expectedRect122,251,571,273Master,scalebottomDistanceMaster,movevDistancefalseMaster,movehDistancefalseMastertrueMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-54Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,cardRanking1Master,scaleleftDistanceMaster,scaletopDistance cREVGeneral scriptChecksum'6LaI䞀͡pv breakPoints handlerList-enterInField menuPick returnInField correctIPscriptSelectionchar 282 to 281 bookmarks revUniqueID 1093777078001 prevHandler enterInField tempScriptscript

constant dot="."

on enterInField

if the label of me is not empty then

if lineoffset(the label of me,me) = 0 then

put (the label of me) & return before me

end if

end if

menuPick

end enterInField

on menuPick

put (the label of me) into myURL

if the optionKey is down then

delete line (the menuHistory of me) of me

set the label of me to line 1 of me

end if

if ("http://" is not in myURL) and ("ftp://" is not in myURL) then put "http://" before myURL

put url myURL into myIP

if correctIP(myIP) then

set the label of btn "IP List" to myIP

send "enterInField" to btn "IP List"

end if

end menuPick

on returnInField

enterInField

end returnInField

function correctIP myIP

put false into myCorrectIPFlag

if myIP is not empty then

if the number of lines of myIP = 1 then

set the itemDelimiter to dot

repeat with x = 1 to number of items of myURL

if x > 4 then

put false into myCorrectIPFlag

exit repeat

else if item x of myIP is not a number then

put false into myCorrectIPFlag

exit repeat

else if (item x of myIP) < 0 or (item x of myIP > 255) then

put false into myCorrectIPFlag

exit repeat

end if

put true into myCorrectIPFlag

end repeat

end if

end if

return myCorrectIPFlag

end correctIP

*Smiley@$n cREVGeometry Master,expectedRect497,108,512,124Master,scalebottomDistanceMaster,movevDistancefalseMaster,movehDistance-137Master,moveHObjectSiderightMastertrueMaster,scalerightDistanceMaster,moveHObjectRefcardMaster,cardRanking1Master,scaleleftDistanceMaster,moveHAbsolutetrueMaster,scaletopDistance Master,moveHtrue cREVGeneral revUniqueID 1093962932002ZiTunes`eZon mouseUp if the hilite of me is true then setTooltip2iTunes end if end mouseUp 0Show the currently playing song in your tooltipiTunes track in tooltip cREVGeometryMaster,movehDistance-95Master,scaleRightscaleBottomtrueMastertrueMaster,moveHObjectRefcardMaster,expectedRect588,414,729,436Master,scalebottomDistanceMaster,movevDistancefalseMaster,moveHObjectSiderightMaster,scaleRightAbsolutefalseMaster,scaleRightfalseMaster,scalerightDistance-0.0375Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,cardRanking1Master,scaleleftDistanceMaster,scaletopDistanceMaster,moveHAbsolutetrue Master,moveHtrue cREVGeneralscriptChecksumҿ^زo£E bookmarks revUniqueID 1094415369771 handlerListmouseUpscriptSelection char 77 to 76 prevHandlermouseUp tempScriptscriptc

on mouseUp

if the hilite of me is true then

setTooltip2iTunes

end if

end mouseUp

dPeekexon mouseUp put the selection of btn "IP List" into myIP if myIP is empty then put the selection of btn "IP URL" into myIPUrl if myIPUrl is empty then beep answer "Please, enter an IP number or IP URL first." with "Okay" exit mouseUp else put url myIPUrl into myIP if the result is not empty then beep answer "Please, enter an IP number or choose a different IP URL." with "Okay" exit mouseUp end if end if set the label of btn "IP List" to myIP send "enterInField" to btn "IP List" end if set the cursor to watch put myIP & ":8008" into theIP open socket to theIP with message connected put the result into rslt if rslt is not empty then beep answer rslt end if end mouseUp on connected theIP read from socket theIP with message "chatters" end connected on chatters theIP theMessage if the number of chars in theMessage < 1 then put "no chatters" into theMessage else if last char of theMessage is return then delete last char of theMessage replace return with "; " in theMessage put "Current chatters: " before theMessage end if answer information theMessage close socket theIP end chatters RS developmentfalse.Check who is on-line before entering the chatPeek cREVGeometry Master,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect465,92,551,114Master,movehDistance-164Master,moveHObjectSiderightMastertrueMaster,scalerightDistanceMaster,moveHObjectRefcardMaster,cardRanking1Master,scaletopDistanceMaster,moveHAbsolutetrueMaster,scaleleftDistance Master,moveHtrue cREVGeneral scriptChecksumun!Z̗޷d breakPoints handlerListmouseUp connected chattersscriptSelectionchar 788 to 787 revUniqueID 1100294247139 bookmarks tempScript prevHandlerchattersscript

on mouseUp

put the selection of btn "IP List" into myIP

if myIP is empty then

put the selection of btn "IP URL" into myIPUrl

if myIPUrl is empty then

beep

answer "Please, enter an IP number or IP URL first." with "Okay"

exit mouseUp

else

put url myIPUrl into myIP

if the result is not empty then

beep

answer "Please, enter an IP number or choose a different IP URL." with "Okay"

exit mouseUp

end if

end if

set the label of btn "IP List" to myIP

send "enterInField" to btn "IP List"

end if

set the cursor to watch

put myIP & ":8008" into theIP

open socket to theIP with message connected

put the result into rslt

if rslt is not empty then

beep

answer rslt

end if

end mouseUp

on connected theIP

read from socket theIP with message "chatters"

end connected

on chatters theIP theMessage

if the number of chars in theMessage < 1 then

put "no chatters" into theMessage

else

if last char of theMessage is return then delete last char of theMessage

replace return with "; " in theMessage

put "Current chatters: " before theMessage

end if

answer information theMessage

close socket theIP

end chatters

|Createajwj cREVGeneral revUniqueID 1100301722419 wcreate)`#h  cREVGeometryMaster,scaleBottomObjectSideBottomMaster,movehDistancefalseMastertrueMaster,scaleBottomObjectRefcardMaster,scaleBottomAbsolutetrueMaster,scaleBottomtrueMaster,movevDistancefalseMaster,scalebottomDistance-96Master,expectedRect35,186,662,403Master,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-42Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,cardRanking2Master,scaletopDistanceMaster,scaleleftDistance cREVGeneral revUniqueID 1100301657728 h x`z yCreateEx6--on mouseUp -- if field "thread" = "" then -- answer "enter a thread name in the first field, please." -- exit mouseUp -- end if -- put field "name" of card 1 of this stack & ":" & return before field "create" -- put the selectedtext of button "tab" into theForum -- put field "thread" into theThread -- put the number of chars in field "create" into theCount -- write "makeThread" & return & theForum & return & theThread & return & theCount & return & field "create" to socket field "IP" of card 1 of this stack -- put empty into field "create" -- put "Name of thread" into field "thread" -- hide group "create" -- show group "read" --end mouseUp on mouseUp if field "thread" = "" then answer "enter a thread name in the first field, please." exit mouseUp end if put field "name" of card 1 of stack "Chatrev" & ":" & return before field "create" put the selectedtext of button "tab" into theForum put field "thread" into theThread put the number of chars in field "create" into theCount write "makeThread" & return & theForum & return & theThread & return & theCount & return & field "create" to socket field "IP" of card 1 of stack "Chatrev" put "Contents of new post" into field "create" put "Name of thread" into field "thread" hide group "create" show group "read" end mouseUp #R cREVGeometry Master,movevDistance-76Master,scalebottomDistanceMaster,expectedRect36,441,118,464Master,moveVObjectSidebottomMaster,movehDistancefalseMastertrueMaster,moveVObjectRefcardMaster,scalerightDistanceMaster,cardRanking1Master,moveVAbsolutetrue Master,moveVtrueMaster,scaletopDistanceMaster,scaleleftDistance cREVGeneralscriptChecksum̼[,O{IR$Vg bookmarks revUniqueID 1100301657729 handlerListmouseUpscriptSelectionchar 669 to 668 prevHandlermouseUp tempScriptscript

--on mouseUp

-- if field "thread" = "" then

-- answer "enter a thread name in the first field, please."

-- exit mouseUp

-- end if

-- put field "name" of card 1 of this stack & ":" & return before field "create"

-- put the selectedtext of button "tab" into theForum

-- put field "thread" into theThread

-- put the number of chars in field "create" into theCount

-- write "makeThread" & return & theForum & return & theThread & return & theCount & return & field "create" to socket field "IP" of card 1 of this stack

-- put empty into field "create"

-- put "Name of thread" into field "thread"

-- hide group "create"

-- show group "read"

--end mouseUp

on mouseUp

if field "thread" = "" then

answer "enter a thread name in the first field, please."

exit mouseUp

end if

put field "name" of card 1 of stack "Chatrev" & ":" & return before field "create"

put the selectedtext of button "tab" into theForum

put field "thread" into theThread

put the number of chars in field "create" into theCount

write "makeThread" & return & theForum & return & theThread & return & theCount & return & field "create" to socket field "IP" of card 1 of stack "Chatrev"

put "Contents of new post" into field "create"

put "Name of thread" into field "thread"

hide group "create"

show group "read"

end mouseUp

zBackExBon mouseUp hide group "create" show group "read" end mouseUp R cREVGeometry Master,movevDistance-76Master,scalebottomDistanceMaster,expectedRect122,441,204,464Master,moveVObjectSidebottomMaster,movehDistancefalseMastertrueMaster,moveVObjectRefcardMaster,scalerightDistanceMaster,cardRanking1Master,moveVAbsolutetrue Master,moveVtrueMaster,scaletopDistanceMaster,scaleleftDistance cREVGeneralscriptChecksum2[^Ω@ revUniqueID 1100301657730 bookmarks handlerListmouseUp tempScript prevHandlermouseUpscriptSelection char 11 to 10scriptp

on mouseUp

hide group "create"

show group "read"

end mouseUp

{Threadi`n cREVGeometry Master,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect137,118,663,139Master,movehDistancefalseMastertrueMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-120Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking1Master,scaletopDistanceMaster,scaleleftDistance cREVGeneral revUniqueID 1100301657731 h Field@of cREVGeneral revUniqueID 1100302354916 h Thread name: Field@J cREVGeneral revUniqueID 1100302355669 h Text:}ReadiUz~ cREVGeneral revUniqueID 1100301835800 jThreads)xon mouseUp global gChatRevShortName if the selectedtext of me <> "" then --put line (word two of the selectedline) of the times of this stack into field "threadTime" write "getThread" & return & the selectedtext of button "tab" & return & (item 1 of the selectedtext of me) & return to socket field "IP" of card 1 of stack gChatRevShortName end if end mouseUp on selectionChanged mouseUp end selectionChanged "kv cREVGeometry Master,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect34,131,666,237Master,movehDistancefalseMastertrueMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-40Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking1Master,scaletopDistanceMaster,scaleleftDistance cREVGeneralscriptChecksum>)D~'Ds bookmarks revUniqueID 1100301657718 handlerListmouseUp selectionChangedscriptSelectionchar 263 to 262 prevHandlermouseUp tempScriptscriptr

on mouseUp

global gChatRevShortName

if the selectedtext of me <> "" then

--put line (word two of the selectedline) of the times of this stack into field "threadTime"

write "getThread" & return & the selectedtext of button "tab" & return & (item 1 of the selectedtext of me) & return to socket field "IP" of card 1 of stack gChatRevShortName

end if

end mouseUp

on selectionChanged

mouseUp

end selectionChanged

k`|t ltext)p?on linkClicked theURL handleThisLink theURL end linkClicked #*i cREVGeometryMaster,scaleBottomObjectSideBottomMaster,movehDistancefalseMastertrueMaster,scaleBottomObjectRefcardMaster,scaleBottomAbsolutetrueMaster,scaleBottomtrueMaster,movevDistancefalseMaster,scalebottomDistance-65Master,expectedRect33,275,666,463Master,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-41Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,cardRanking2Master,scaletopDistanceMaster,scaleleftDistance cREVGeneral scriptChecksum6 Fbѯܸ{7 breakPoints handlerList linkClickedscriptSelection char 19 to 18 bookmarks revUniqueID 1100301657719 prevHandler linkClicked tempScriptscript

on linkClicked theURL

handleThisLink theURL

end linkClicked

h m`{+n Post replyExon mouseUp --if the selectedtext of field "threads" = "" then --answer "Please select a thread to answer to." --exit mouseUp --end if hide group "read" show group "edit" end mouseUp `Y^ cREVGeometryMaster,movehDistance-294Master,scaleRightscaleBottomtrueMastertrueMaster,moveHObjectRefcardMaster,expectedRect 406,77,482,99Master,scalebottomDistanceMaster,movevDistancefalseMaster,moveHObjectSiderightMaster,scaleRightAbsolutefalseMaster,scaleRightfalseMaster,scalerightDistance -0.385335Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,cardRanking1Master,scaleleftDistanceMaster,scaletopDistanceMaster,moveHAbsolutetrue Master,moveHtrue cREVGeneralscriptChecksum];$?V#tx bookmarks revUniqueID 1100301657720 handlerListmouseUpscriptSelectionchar 140 to 139 prevHandlermouseUp tempScriptscript

on mouseUp

--if the selectedtext of field "threads" = "" then

--answer "Please select a thread to answer to."

--exit mouseUp

--end if

hide group "read"

show group "edit"

end mouseUp

o Make threadExBon mouseUp hide group "read" show group "create" end mouseUp Yh cREVGeometryMaster,movehDistance-166Master,scaleRightscaleBottomtrueMastertrueMaster,moveHObjectRefcardMaster,expectedRect 494,77,570,99Master,scalebottomDistanceMaster,movevDistancefalseMaster,moveHObjectSiderightMaster,scaleRightAbsolutefalseMaster,scaleRightfalseMaster,scalerightDistance -0.177847Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,cardRanking1Master,scaleleftDistanceMaster,scaletopDistanceMaster,moveHAbsolutetrue Master,moveHtrue cREVGeneralscriptChecksum IǴmfQ5t bookmarks revUniqueID 1100301657721 handlerListmouseUpscriptSelection char 63 to 62 prevHandlermouseUp tempScriptscriptp

on mouseUp

hide group "read"

show group "create"

end mouseUp

Field@yd cREVGeneral revUniqueID 1100302314563 h Threads: Field@d cREVGeneral revUniqueID 1100302314564 h Text:~Editapze cREVGeneral revUniqueID 1100301892755 sedit)`"l  cREVGeometryMaster,scaleBottomObjectSideBottomMaster,movehDistancefalseMastertrueMaster,scaleBottomObjectRefcardMaster,scaleBottomAbsolutetrueMaster,scaleBottomtrueMaster,movevDistancefalseMaster,scalebottomDistance-98Master,expectedRect34,131,666,427Master,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-39Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking2Master,scaletopDistanceMaster,scaleleftDistance cREVGeneral revUniqueID 1100301657725 h t`}uReplyex3--on mouseUp -- if the selectedtext of field "threads" = "" then -- answer "select a thread to reply to, please." -- exit mouseUp -- end if -- put field "name" of card 1 of this stack & ":" & return before field "edit" -- put the selectedtext of button "tab" into theForum -- put the selectedtext of field "threads" into theThread -- put the number of chars in field "edit" into theCount -- write "postReply" & return & theForum & return & theThread & return & theCount & return & field "edit" to socket field "IP" of card 1 of this stack -- put empty into field "edit" -- hide group "edit" -- show group "read" --end mouseUp on mouseUp global gChatRevShortname put item 1 of value(the selectedLine of fld "Threads") into theThread if theThread is not an integer then beep answer error "select a thread to reply to, please." else --date & cr & name & ":" & cr & fld "Edit" put forumDate() & return & field "name" of card 1 of stack gChatRevShortname & ":" & return before field "edit" put the selectedtext of button "tab" into theForum put item 1 of value(the selectedLine of fld "Threads") into theThread put the number of chars in field "edit" into theCount write "postReply" & return & theForum & return &theThread & return & theCount & return & field "edit" to socket field "IP" of card 1 of stack gChatRevShortname put empty into field "edit" hide group "edit" show group "read" end if end mouseUp function forumDate return (the short date && the short time && last word of the internet date) end forumDate !RSubmit cREVGeometry Master,movevDistance-74Master,scalebottomDistanceMaster,expectedRect33,439,115,462Master,moveVObjectSidebottomMaster,movehDistancefalseMastertrueMaster,moveVObjectRefcardMaster,scalerightDistanceMaster,cardRanking1Master,moveVAbsolutetrue Master,moveVtrueMaster,scaletopDistanceMaster,scaleleftDistance cREVGeneralscriptChecksumĀ͚s^  bookmarks revUniqueID 1100301657726 handlerListmouseUp forumDatescriptSelectionchar 758 to 757 prevHandlermouseUp tempScriptscript

--on mouseUp

-- if the selectedtext of field "threads" = "" then

-- answer "select a thread to reply to, please."

-- exit mouseUp

-- end if

-- put field "name" of card 1 of this stack & ":" & return before field "edit"

-- put the selectedtext of button "tab" into theForum

-- put the selectedtext of field "threads" into theThread

-- put the number of chars in field "edit" into theCount

-- write "postReply" & return & theForum & return & theThread & return & theCount & return & field "edit" to socket field "IP" of card 1 of this stack

-- put empty into field "edit"

-- hide group "edit"

-- show group "read"

--end mouseUp

on mouseUp

global gChatRevShortname

put item 1 of value(the selectedLine of fld "Threads") into theThread

if theThread is not an integer then

beep

answer error "select a thread to reply to, please."

else

--date & cr & name & ":" & cr & fld "Edit"

put forumDate() & return & field "name" of card 1 of stack gChatRevShortname & ":" & return before field "edit"

put the selectedtext of button "tab" into theForum

put item 1 of value(the selectedLine of fld "Threads") into theThread

put the number of chars in field "edit" into theCount

write "postReply" & return & theForum & return &theThread & return & theCount & return & field "edit" to socket field "IP" of card 1 of stack gChatRevShortname

put empty into field "edit"

hide group "edit"

show group "read"

end if

end mouseUp

function forumDate

return (the short date && the short time && last word of the internet date)

end forumDate

vBackEx@on mouseUp hide group "edit" show group "read" end mouseUp R cREVGeometry Master,movevDistance-74Master,scalebottomDistanceMaster,expectedRect133,439,215,462Master,moveVObjectSidebottomMaster,movehDistancefalseMastertrueMaster,moveVObjectRefcardMaster,scalerightDistanceMaster,cardRanking1Master,moveVAbsolutetrue Master,moveVtrueMaster,scaletopDistanceMaster,scaleleftDistance cREVGeneralscriptChecksum& P?n '9 revUniqueID 1100301657727 bookmarks handlerListmouseUp tempScript prevHandlermouseUpscriptSelection char 11 to 10scriptn

on mouseUp

hide group "edit"

show group "read"

end mouseUp

Field@td cREVGeneral revUniqueID 1100345063853 h Reply:Enable speech`E7]Read incoming messages aloud cREVGeometry Master,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect596,255,689,277Master,movehDistance-80Master,moveHObjectSiderightMastertrueMaster,scalerightDistanceMaster,moveHObjectRefcardMaster,cardRanking1Master,scaletopDistanceMaster,moveHAbsolutetrueMaster,scaleleftDistance Master,moveHtrue cREVGeneral revUniqueID 1100305989476 bookmarks handlerListmouseUp tempScript prevHandlerscript ?bC&Don mouseUp go to card 5 of stack "HELP" as modeless end mouseUp _X-+1( cREVGeometryMaster,movehDistance-64Master,scaleRightscaleBottomtrueMastertrueMaster,moveHObjectRefcardMaster,expectedRect318,92,400,115Master,scalebottomDistanceMaster,movevDistancefalseMaster,moveHObjectSiderightMaster,scaleRightAbsolutefalseMaster,scaleRightfalseMaster,scalerightDistance -0.063963Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,cardRanking1Master,scaleleftDistanceMaster,scaletopDistanceMaster,moveHAbsolutetrue Master,moveHtrue cREVGeneralscriptChecksumuq%Lb` bookmarks revUniqueID 1092394114380 handlerListmouseUpscriptSelection char 27 to 26 prevHandlermouseUp tempScriptscript

on mouseUp

go to card 5 of stack "HELP" as modeless

end mouseUp

Tab }on menuPick theMenu write "threads" & return & theMenu & return to socket (field "IP" of card 1 of this stack) put the result into rslt if rslt is not empty then beep answer rslt end if -- set the twelveHourTime to false -- put the long system time into field "time" put empty into fld "Text" end menuPick --on mouseUp -- menupick the selectedtext of me --end mouseUp @General discussion!General discussion Support forum cREVGeneralscriptChecksum=E+É g3l B revUniqueID 1100301929561 bookmarks handlerListmenuPick tempScript prevHandlermenuPickscriptSelectionchar 316 to 315script

on menuPick theMenu

write "threads" & return & theMenu & return to socket (field "IP" of card 1 of this stack)

put the result into rslt

if rslt is not empty then

beep

answer rslt

end if

-- set the twelveHourTime to false

-- put the long system time into field "time"

put empty into fld "Text"

end menuPick

--on mouseUp

-- menupick the selectedtext of me

--end mouseUp

$i E - cREVGeometryMaster,scaleBottomObjectSideBottomMaster,movehDistancefalseMastertrueMaster,scaleLeftObjectRefcardMaster,scaleTopObjectRefcardMaster,scaleBottomObjectRefcardMaster,scaleBottomAbsolutetrueMaster,scaleBottomtrueMaster,scaleLeftObjectSideLeftMaster,scaleTopObjectSideTopMaster,movevDistancefalseMaster,scalebottomDistance-33Master,expectedRect 20,82,622,477Master,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-24Master,scaleLeftAbsolutetrueMaster,scaleTopAbsolutetrueMaster,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,scaleLefttrueMaster,scaleToptrueMaster,cardRanking4Master,scaletopDistance69Master,scaleleftDistance22 cREVGeneral revUniqueID 1100365112724,i cREVGeneral revUniqueID 1093109324984 bookmarks handlerList tempScript prevHandlerscript*Go}on menuPick themenu if theMenu = "Chat" then go card "chat" else if theMenu = "Settings" then go card "settings" else if theMenu is "Forum" then go cd "Forum" else go card "Login" end if pass menupick end menuPick Login Chat Forum Settings cREVGeometryMaster,scaleBottomObjectSideBottomMaster,movehDistancefalseMastertrueMaster,scaleBottomObjectRefcardMaster,scaleBottomAbsolutetrueMaster,scaleBottomtrueMaster,expectedRect 8,30,632,485Master,scalebottomDistance-18Master,movevDistancefalseMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-9Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking2Master,scaleleftDistanceMaster,scaletopDistance cREVGeneralscriptChecksumN]zuY.Cc revUniqueID 1093107629144 bookmarks handlerListmenuPick tempScript prevHandlermenuPickscriptSelectionchar 181 to 180script9

on menuPick themenu

if theMenu = "Chat" then

go card "chat"

else if theMenu = "Settings" then

go card "settings"

else if theMenu is "Forum" then

go cd "Forum"

else

go card "Login"

end if

pass menupick

end menuPick

 Popup Testţuon menuPick w set the itemDel to tab put item 1 of the selectedText of fld "Members" into myMember if myMember is not empty then userAction w,myMember end menuPick :f7Send Private Message See Profile Send E-Mail Send File cREVGeneral scriptChecksum/"!B^=̢ breakPoints handlerListmenuPickscriptSelectionchar 157 to 156 bookmarks revUniqueID 1100916244641 prevHandlermenuPick tempScriptscript

on menuPick w

set the itemDel to tab

put item 1 of the selectedText of fld "Members" into myMember

if myMember is not empty then userAction w,myMember

end menuPick

Change ColourCAon mouseUp open stack "Colour Palette" as palette end mouseUp 8Change text colour cREVGeometryMaster,moveVObjectSidebottomMaster,movehDistance-59MastertrueMaster,moveVObjectRefcardMaster,moveHObjectRefcardMaster,moveVAbsolutetrue Master,moveVtrueMaster,expectedRect574,447,598,468Master,scalebottomDistanceMaster,movevDistance-43Master,moveHObjectSiderightMaster,scalerightDistanceMaster,cardRanking2Master,scaleleftDistanceMaster,scaletopDistanceMaster,moveHAbsolutetrue Master,moveHtrue cREVGeneralscriptChecksum;** &~:m bookmarks revUniqueID 1101007601334 handlerListmouseUpscriptSelection char 11 to 10 prevHandlermouseUp tempScriptscript

on mouseUp

open stack "Colour Palette" as palette

end mouseUp

application icon.gif @F@@ GIF89a@@ ##   ))(JJIaa`^^]cbQHG:{sRQDÝٰݴÒuƤ76-kiXѱ~jsq_<;2@?6ۺͦԭn{xd][LXVH沰휛NL@,+%/.(('"%$ ¿~~~zzzuuuqqqmmmiiieeecccZZZYYYVVVUUURRRQQQOOOMMMJJJIIIFFFDDDCCC@@@>>>;;;999666444333111///---+++&&&%%%###  !,@@ H*\ȰÇ#Jln_Mܨܺ{.s60 pѻ/?weY5l{Gnu+ЩCG8lіɫ^=6'Qf{ʪ֓&ORP- X@A[*\0Bޓt@mZ]U@Ǎ'@̘j57bĪȝxɧIO,6σ 1aX0ԍ+[82r*e *DƁV/-XhN#^eV9 ^U<@W @H(B p!S`K,Fd;;sW  D+G%BLE b[l1F0r+A6J6'U5[,1E8rU/QvUC<j+b4V`YKuF-hTuK(v'i6Am31D\|<j0 ~l8٢h.Us[pRMgA!D8\u(/ϭC|$c Y)ALnB$$ {6@ OPB,Cu1YVp; "pHP|b{ a>\nx,)Њ03d(jB&#$AM$V@`ø \: P Bo PD#H!A r "C!7 &1FnA VBX'قA JC' L(C: 8(0 ~#4wSa (H[ִp` 7B3AU`lD )Nh65-eHP"+ ` M : N}a{4 Z]˜]a [AL3sL~'?am&P%>ŽЪ: ^`( bacNr 2ʳ|MP" Wp.KopJx!C hJFM jfFWX6! NT6ur`O^߼(*(-xad(cEWAQW@#6PaxIcBvPS9 CXF;`L@ 73>\! ahp@1xFA[4 ⺇9hNz~-qHC | "9aD+V>m! Fإ1xBHSLf;aPVa,0# t&Ps2g8=+_8,>ьZ0688iTmڀЈ2ۥ ƨ dQ66(H\75"۹ 3{gψ> e.1zG?,vtcb3"BX5~`) ȃX=a Xc YC]HaҏMmZ iRE `]n$MrC$ ; cREVGeometryMaster,moveVObjectSidebottomMaster,movehDistance-68MastertrueMaster,moveVObjectRefcardMaster,moveHObjectRefcardMaster,moveVAbsolutetrue Master,moveVtrueMaster,movevDistance-84Master,scalebottomDistanceMaster,expectedRect540,381,604,445Master,moveHObjectSiderightMaster,scalerightDistanceMaster,cardRanking2Master,scaletopDistanceMaster,moveHAbsolutetrueMaster,scaleleftDistance Master,moveHtrue cREVGeneral revUniqueID 1101213200222small app icon.gif@+< >GIF89a ##   ))(JJIaa`^^]cbQHG:{sRQDÝٰݴÒuƤ76-kiXѱ~jsq_<;2@?6ۺͦԭn{xd][LXVH沰휛NL@,+%/.(('"%$ ¿~~~zzzuuuqqqmmmiiieeecccZZZYYYVVVUUURRRQQQOOOMMMJJJIIIFFFDDDCCC@@@>>>;;;999666444333111///---+++&&&%%%###  !,  Hl:HQMµ+،jc//_v X.]xWvݒՊ-8m3'],HJhSz'NOf=``h v}ɫS.` ` Sb} av+-ON ' \\ֳU2ep+sUZlɝU]:ֿYpF6խ^q gzFKNf8qJ < 3K=; nUHBBV #4uzJ+3pv"& %El\>[n8 D`/1(!y,G!^QIo=!@Ȝ!W,aI(DE pDHh&$L+ NrE_\"90@ LbCOxWNbF0]Gt M!!@2(`x {_Ap15?bK-@0DS@aFC^h-b*] toQ^|G B` , JU*EN aEQSBSX.M#6ؠ25p@.4ĢHJ ÊSˋ,.رX K  N} ,C'<(4Z Y̠b3,V_™/05aP/ו-H&WX@J3.L`r /( ^1 10S2S?u LJ1tP, , (7 ; cREVGeneral revUniqueID 1101213411519Style StorageEp\on mouseUp restoreStyleMenu checkMenuItem checkFontMenuItem end mouseUp on setMenus checkMenuItem checkFontMenuItem end setMenus on restoreStyleMenu put the fontNames into myFontList sort lines of myFontList repeat with x = 1 to number of lines of myFontList put tab before line x of myFontlist end repeat put the cMenu of me into myMenu put return & myFontList after line 1 of myMenu put myMenu into btn "Style" of group "ChatBar" end restoreStyleMenu on checkMenuItem -- t e x t s i z e global gChatRevShortname put the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortname into theSize put the text of menu "Style" into myMenu put lineOffset("Size",myMenu) into m put 12 into myNrOfItems put line m to (m + myNrOfItems) of myMenu into mySizes put lineOffset(tab & theSize,mySizes) into myCheckThisItem if myCheckThisItem is not 0 then put (myCheckThisItem + m - 1) into myCheckThisItem put "!c" before line myCheckThisItem of menu "Style" end if end checkMenuItem on checkFontMenuItem -- f o n t s i z e global gChatRevShortname put the textFont of fld "Chat" of cd "Chat" of stack gChatRevShortname into theFont put the text of menu "Style" into myMenu put lineOffset("Font",myMenu) into m put the number of lines of fontnames() into myNrOfItems put line m to (m + myNrOfItems) of myMenu into myFonts put lineOffset(tab & theFont,myFonts) into myCheckThisItem if myCheckThisItem is not 0 then put (myCheckThisItem + m - 1) into myCheckThisItem put "!c" before line myCheckThisItem of menu "Style" end if end checkFontMenuItem RcMenuFont Size 9 10 11 12 14 16 18 20 24 32 48 72 Colour Black White Maroon Green Navy Purple Gray Red Yellow Blue Random - Palette cREVGeneral scriptChecksumH1kQ`i](6:S breakPoints handlerListAmouseUp setMenus restoreStyleMenu checkMenuItem checkFontMenuItemscriptSelectionchar 462 to 461 bookmarks revUniqueID 1101476429671 prevHandler checkMenuItem tempScriptscript

on mouseUp

restoreStyleMenu

checkMenuItem

checkFontMenuItem

end mouseUp

on setMenus

checkMenuItem

checkFontMenuItem

end setMenus

on restoreStyleMenu

put the fontNames into myFontList

sort lines of myFontList

repeat with x = 1 to number of lines of myFontList

put tab before line x of myFontlist

end repeat

put the cMenu of me into myMenu

put return & myFontList after line 1 of myMenu

put myMenu into btn "Style" of group "ChatBar"

end restoreStyleMenu

on checkMenuItem -- t e x t s i z e

global gChatRevShortname

put the textSize of fld "Chat" of cd "Chat" of stack gChatRevShortname into theSize

put the text of menu "Style" into myMenu

put lineOffset("Size",myMenu) into m

put 12 into myNrOfItems

put line m to (m + myNrOfItems) of myMenu into mySizes

put lineOffset(tab & theSize,mySizes) into myCheckThisItem

if myCheckThisItem is not 0 then

put (myCheckThisItem + m - 1) into myCheckThisItem

put "!c" before line myCheckThisItem of menu "Style"

end if

end checkMenuItem

on checkFontMenuItem -- f o n t s i z e

global gChatRevShortname

put the textFont of fld "Chat" of cd "Chat" of stack gChatRevShortname into theFont

put the text of menu "Style" into myMenu

put lineOffset("Font",myMenu) into m

put the number of lines of fontnames() into myNrOfItems

put line m to (m + myNrOfItems) of myMenu into myFonts

put lineOffset(tab & theFont,myFonts) into myCheckThisItem

if myCheckThisItem is not 0 then

put (myCheckThisItem + m - 1) into myCheckThisItem

put "!c" before line myCheckThisItem of menu "Style"

end if

end checkFontMenuItem

clr palette 2 copy.gif@ZGIF89a&dĉ%2=߮xC,WpUjX&y֕qTC<$t⽰\.ϵAh2t>%"nHAV4 1.6fgft=; cREVGeneral revUniqueID 1101527806306clr palette 2 gray.gif@ ZGIF89a  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~,"DHA2hA4paÆ<1a‡rXCx(5ZhKVCJ.cTiUgg4HZJիWΙ3w)RM:jON,W\U<[ݷpzDMr.; cREVGeneral revUniqueID 1101527816048 doc aqua.png]**PNG  IHDR**[uiCCPPhotoshop ICC profilexJAϮQHe5Xh( `LK HY6 0DRXbc|`%VVX(b흌!(e.qo) +lk{ >!!D1]a Y= 5 STiL8jN(.k^P| $BB W, #?9q^P4[4TT^2itF,7nEq*ߟDQxb$3TN ϰn%| 0D5!(^z?XP,Y9c|?+<qO($硼m/jo-)=Kʮ=u1Dxj3~`NA Z;E㕂IDuRASǽ,H֑l`Ů1筋 e9ʳTݘjn 'k{#ken@8\a"Je9UB.6Z|'/_[34ݚeN 92Hõ6D0x]2!hK5{ ޔk<EiVDDv A(%ep@O, ^|GC(8ZE*; ) ɑsgPi10/"aM߅.: 0~~>ԟ)g29CjXxTl]r,ܱ PSӡ$6\13H&!n ! A3dKC!QJ@d@ x H! zÙOPk~Sѡe` Z@?-@7.r(H@M0 LH?P edfQRhL `H%! jgB?)4:h'(u#$4 eE=ġ %jO̠2̌@4vAnɃ@,Lgg(p1  8ëK̐   @pA&Di2s=(@ b؁n F X!@\NJ@ @HH p AXHnCfԃ2),N(㟿`@vCZd2@,fSPtC70m2 QEH& X@'37@OXUO\!I\v:4 6.54BT!1A?>`7݂*fdf:go="DB1.Hrd] 7 h,?hLS #|eOK̃D=С u-5F(x , 2j|ȡboF>t#@UА?,@F`3G-!@s ;P7$?LH1c@Z" 酁pHeXjd%΃Vy)5i`6AS%lbNA 7?`? m@H8E@_, ch'nn haF) t-k*M > HL%%*iS–~;[i`40VG‡-_b:ȄT][_CzXD61cA"hޥQZc]uʒhI$1X&Y k:qVM%g6Ћ 1tA 7BaeR6ءN3>`_X1@׀.8G2qG"v  1ʈ1zٳ?_ w6@>>v` eHL<< ں:5pp0BF'Cc;;77 ߿<{ _@C/ 7  C=h$mxHp73//?Ue%VA~6ɏh.R:0~X~3 30/@~f3(TAn )s\!!D1]a Y= 5 STiL8jN(.k^P| $BB3`?@v/E Ĉˡ.ru$ ##ȡP 6c#hFce?ȡ?/ 0 Цi@qq@?-HqFt,;&aQE s1j*]TAW:E)@@Q"Zy:xV"DLJiy@'ą $Q>`ꍁւ zC %g| {nVhkﺗ;ԁ/ЁG կ""\<Œl<4Q7眜 ,, ~ʕ_yd_hrn` C͜PEĘ0~f?? ϟX"7?|p=1LrL@;v1:d_H&c `?  d Q.ή/&Bc& AA㱰&o۞##;@dc=%rWL!Ȫ9ksIkpY[x<b`*Xv͛޽[_~| r$AzR//oAAo?L,_0t(8١% ȍ )' t M ?!w¡G {KAP *V) {lyw͗8p bp&}WjjGN>|@or3jҰjFJ|TX0} L 3fՂ6@@A9 3A H`,ZP0p`8   M$#u~ LZ8d.߿7z -`6@0B51A1p>09Q2@v ‘0>P X @eA _*?C5>4 ]p 64BV v 1&HԃB@ X`Cpb CAf!(r|b9 06RS9Db/#`l  Ca `hBGq(NE9`7hG 0:Tt(;88p]x(#UĂ(4 /@@}*@ǁ Af\ t1ȍjF=,)B𨇶aQ@`d$$_?ha@4 s(3(dI 4@,N94u'bPfg(*O%%p3 JFr#@@]_ȭOj(r=C`B܉ܑ  P= J8?~CC& HMZ Cr,#uy j䰀FO ~`C@P lE<4P6r`2 r M0 |؇t̠uˡ @n h8 ))imRHp ::r-eORɂ@#j u3r#n~ /qp @{Bux8An p;0_ X1FH'`IDA-_߿Q@4 n C;z@8 4 A[ؿ!Z ii1;} *rGЀ?t Anb20ء>~| `?{J`=Tdˉu, $Ûo_z7`Gϐc  /2C;`w&n..5ua/Id_0w`tsrp0 3cÍ,_Aб@09 wO$ ]С\\ex Xn$v4 yv a`B0 б 7d? &@ \LLtHXhw nh*@62q yǏ( s&XP9x`P63b V7?}* %-Pf9;$3} @t(2|d8<C.ppUá97Y= 1NM6X6IENDB` cREVGeneral revUniqueID 1101823587613"doc white.png]** {PNG  IHDR**[uiCCPPhotoshop ICC profilexJAϮQHe5Xh( `LK HY6 0DRXbc|`%VVX(b흌!(e.qo) +lk{ >!!D1]a Y= 5 STiL8jN(.k^P| $BB}Z9Pcc?7ȡ@PVVVCA | @ǁ߿ UC|Cv(agj# \J***,,, 0dAF?D* @߷o~_C76 Ϝ9 3 $C~B1ء@ L  ׁ JJJϿ?ƍ_;6 f/_pB X`&BcCoτ8rl$, $@ps}׮]MZ }v(0W_u/^^^0-$$؁ƌt r(3=3>&Ab^zZ h K= ! Ah;3>(`K$f XZ{ hjbib$g_J'1{>VTbn³ 8`mA J?k#pO5‘ *^vƉDx7]K'N^>c5AAFA)2@,Q /P/9~ - \ʂ ~P<3 0s07 7ऎQa(ȅ`Gcf2+H/4TTO5>m e7`† PN1@8$?ȀJ RF:\Á*`ǂDs?# J AR͡t UPun@n C7!H @4(2cFu5zj(CSH]0 X1B{GNQ䨇la X@Fv[AU( ( FPAHfZ`d7Ra9: b3 ԑ00_ҡб(d;An@v a}j(i ]T b@ *s0`b$ eNF}P :'` $@,۶m3: k30tߙA=A`c@ C aJ 5An`a\<$}MACn*K2 XPX0KhH  C~v#6zq?1&ȑ.h.6G@N";Pf|hd<'֏?1P nb  ݾ}^``ϟ?B(@XCXG 12zŋd9`6 P@^3N#APlHeXE#bb(۷oف(ȡA\`.L#@k.mOO 6(9<+hh'j@=EC`U((Y=Phhl 7dUo(<3B͈\As93(1hh>w܉2@8o/u999͊@1| 3Z0 M݀eȡ\κuV7ӡlt He@.p8 VVoܸ@75\OIENDB` cREVGeneral revUniqueID 1101823587751$exclame aqua.png]**PNG  IHDR**[uiCCPPhotoshop ICC profilexJAϮQHe5Xh( `LK HY6 0DRXbc|`%VVX(b흌!(e.qo) +lk{ >!!D1]a Y= 5 STiL8jN(.k^P| $BB}k|2;_؁4'o,@M: ?ع2rp`d9!7''+0™> (< ;8T3 Rg৯Ɉrp}'`> A&t@`(f A.C2pgƫ*+# J6P\Ï񟠠/_N"<? ïssp31|;O޿qp.eY@n)@:mAږQun=n ziƘ!s9JhskJLq>`49Gq̚+-r$5yɍH c@̔9| HڀgAhCn=G?p8@'Jb pՙYʗ-Ea!#+N9dJXR,ι~U8!wZq<զjR/weŝۺ!Q"Q+`[] AD{TlD骿>@a ӈ jA.$,T ٠ampƇbNp2.mw7NZfW֧\Myq)X%L”39J H|bu`Vo~2n@(,wjL1-2vc xy2Q7Mj̟?ІE2LT0s-hD0XwlQ%&'>U"r(ȷ(74+0Ͱq(#F r FO_~{Vg?Y>Gq((GgQRhL `H%!q$.ZXؿqvQ| Jll&J1p3n`&ġL8X!/DAXefPh~ E\| (#dt! ,@]@n XQP(b&HǓp~߿~3{r0t$…gaf4(X<C  @<@0B.ȄUfd&98C}fF0|Zs<wq(`;[` HfQ$G2Jޔolv[9z6)hbFr,$@(@<@ b$BUFf<> A ߾Q ПCbB Qhv#@0B`NR! ʩGQ>f' rk[>w /F2#06Y~0 L~ ;4 n`Ӏn `؇ AG׀ *(RX`bб} 79F Jd4@v2B0` VA[m&ѡI g6tSjeUVBD?2Go4%Ҵ]hAn2a@,O5w :/~Oo n2 iԂ:;Ϸ/,v"G@5"6ŭ}\hбe: ?7@7tPF4K0D#?lP L| fUWSr3UxEԿEatL6]Y{tَ q=2An^D[9C &3JaNlTʨ5)(.NK(KòNWFOt,+'__5 WK)W=~)=H`2Gq#-ko|4AxءN3>cApQJDLbb UX 6`Zff`N3 X5aQr_o,@DZO}a?  QJ9_ 4y4M8cu!H>Yrd[dDQ#h?Xw]A!ޡW K:a+3sf:4& UD;RL>>б̠_?@G?=>4@ R&Xx~ y]#P(ԡ(J@ed&P&0ƀ9X`f߀9}#kzHv̬@#}AU "c7?l4 すE0C+ȱO:}@8 =O&!,C:LMJ38soGG00B/IENDB` cREVGeneral revUniqueID 1101823588061&exclame white.png]** PNG  IHDR**[uiCCPPhotoshop ICC profilexJAϮQHe5Xh( `LK HY6 0DRXbc|`%VVX(b흌!(e.qo) +lk{ >!!D1]a Y= 5 STiL8jN(.k^P| $BB}Z9Pcc?7ȡ@PVVVCA | @ǁ߿ UC|Cv(agj# \J***,,, 0dAF?D* @߷o~_C76 Ϝ9 3 $C~B1ء@GCC[RR( E! JD)/!!{ϟ?vƍ@ǁ /_8`! @,0C@@P [KKGYY_@@ ( t$qL@>' !š bbbz %]ipP`_BBBŹILLOPP}83#:g -- 3$LFիW% H982mRA e0 K~? t[!(37ж}qBfTJ~ә#"~-1' 63gmnL}i@0:ȷ@M_Ad8P " }=01 M`LʱP`W = e ] AԪe~gE$z KE&%3h)7kn4ČR`'t; Dц4 :cK3/l.~Pv@ +g|2#eY)'Vnwr4Z1` +@E?AC@(ATeB C@A8N,DAfc+4S< d'A @>;Tht Xj _8(j|($ŀ/0 G2.tan @ߠhARaQPAL,* qhVISLP;u?B`dC7`p 0Ԁ̂`n(}A= $ b5,-X;p6<V` //i(yt@|X@s~bfC$Ϡ`997DpcPh(n0an5'V$!cld(0`(A! J C 6ٍfdhiCA h;`@_Kp!Md@,衉! v` @PjAvc(>ܡ]!Vв7$q (, 1.,;r6(z߽{0ldCzi] @!JJfBL Q`.2K Ofr"qC0A9aU *b6r X` l BgP- =" 8PMBЄ̈-F5L(PR9X2_(r#@:w>Bw<f7`(Pae$b;4( X3B0@|b2(r8qB@Cc# @-cPEX]M`/hScAO&H ?3` @XAaQW\}\A% aK {av@h f #aa:`ηx (cH5@d70@֧R5Bgԁz/pIi ]LO lb0B-4@ߨ @9h܁AP޷ $@,۶m3: l800t/bP:.(-nh-w4)ݭX =uwwFcAl^}L ; 7`NAu?>rT($X@DM^:V֬ϏɋJ!Bw޵cN D 7[")i4CڗaKa0s2 7`=ȒKƱn IuhB?XwD!!D1]a Y= 5 STiL8jN(.k^P| $BB}Z9Pcc?7ȡ@PVVVCA | @ǁ߿ UC|Cv(agj# \J***,,, 0dAF?D* @߷o~_C76 Ϝ9 3 $C~B1ء@GCC[RR( ЍL r#cA`H:ϟ?ۍ7`= X P(0б` r(ţ/ g: B#2]|͛7,weGw PO`lpFcK@s]v 4i>4*F!H=z۫e5 D;<$3[,,^R/K)աֻsiy`$x bKy `fG>ڎ찼6ZJ EU2H` z*~Gxh/Y'Lv79jpd3*:t@]jbwrUJyzC-`5_`AbPO[k!ՠeӿxm1nX(ca Q?CI "E;_> *xtzi,rAЋۖƈ Xr&;j9hoL />P¨U&G@{P:=#@:w(>Bw<-I&ݺuKT܀j3Pl :;̼_G.;av#{`@ g}aSӣ$UjKP_`:#6P1n PFPJnXwp>0=RbA@Ѯu.k8D@#}r(x 9z޾}ˉAs$L`!r!H XLu$#>;܈/9q@=W@=PY gĔv܀& PQ FhfS& 2H#|L Pd@ *s?4bDv0(ǃ0zc$P݁Pu t}{@bIJm6@˘A:1ڢб&p] kqZ: h"-[NA;{z)qh9  0 r#@&`(DWO:Hdl$4'ktK&Уa<'-F4Ph23ȱ BCЄdUo(&ء A!fD@E\ Q  'Ν;Q&􍷷%Р.h PЬr#u& 8A" Bs9+u p:_Aɡp MJ|}ƍ' kNW7IENDB` cREVGeneral revUniqueID 1101823588773.trash aqua.png]**PNG  IHDR**[uiCCPPhotoshop ICC profilexJAϮQHe5Xh( `LK HY6 0DRXbc|`%VVX(b흌!(e.qo) +lk{ >!!D1]a Y= 5 STiL8jN(.k^P| $BB}?_~?H*8X ,l$t<￾1??o%ȍ(+caֶq7Iiȯn+쬲`TݽtG6[,RkE8cIЊer>$  #e0 ВUK&G/J1xB)[zn1C=r\i0k4(œ2Jahk1]~lfύݠBG!*1l$Dț~Ty1Dъ@NAu̘.٠>xQ@eLU`fׯ ^bؑ ςR:0 O`e!d .bq70Ԁr@ǁip3| B;d?`bo 1FdR4A@-Ae;X`&d:^ynXP ؀m` A ,v$L@: ܸ`kaf x_ ~# L߽o߿ ˟O @n9Tg z @3$DE=L &O?S%DA؊lY{G B`[ntȍr((DQjoiV`ae mSRZlXI1QRhL X 4D;X ̌)+( YXYv$P/8JT ۿ@@!P70BBP&XC P,L X9~sp0|۷ d;| TB]@n @,đ r V*.-+PN:l@X;1h?`/:hgg &X@, 2!B@Mb_5h?~9_ ?d l88b;-0$3(#a ʌb n /dTr:Tg5#С-41#9o i (? b$BUFof m~: Q`nbOF֟Le?@BZd2BZ PiFX:ellp~eb|rOc+!Ylw`DA-7`\Bp78l3@j `0}>`kՠ8ui&ۀn XBC ܩPд 8|J LFsd1(Ȝ߬1r(>]`7@p@,70L` j `E9U) |eE?[`9j3$@*;_'>b' 00BL+_p3ʌ! EP=柿Hy\4l?pr  a[i@7 CCkL@&pc AW  ǂZ?6N! 2'#7PwԨL$ %f0Ap3iVxA )*ín}8N!^^oQIV,H-eh [F@q\+6?xHHǾHA iTGq4> @t(2< t Qpk 1P J I  GG0գ_ IENDB` cREVGeneral revUniqueID 1101823590067/trash white.png]** PNG  IHDR**[uiCCPPhotoshop ICC profilexJAϮQHe5Xh( `LK HY6 0DRXbc|`%VVX(b흌!(e.qo) +lk{ >!!D1]a Y= 5 STiL8jN(.k^P| $BB}Z9Pcc?7ȡ@PVVVCA | @ǁ߿ UC|Cv(agj# \J***,,, 0dAF?D* @߷o~_C76 Ϝ9 3 $C~B1ء@GCC[RR( ЍL r#cA`H:ϟ?ۍ7`= X P(0б` rd+Nff JN/_a K|||A:04(-s  B}21(>Mh K=;q@ to` toC|&v!` a DG(JiIJJI]]A\\h yXc )br؈#KN1<AMLmz4rw`knΨf3k=ғm0jÃH`:/P/g-L /^̭ &ɡ 4ر C;N`(r@,`P1Td} +`%~C1(vLvb rȍ*j r$4; vP ݈ZH8@"A!F _ l:*9TzF7X n?M 5r(9I; A+`" """;d6J*3 @lPb`P ;d.( ~@ @ X` h ,ʘ0 1P"`@t 2d^cPs@@a '0rrroy=U JV APan5'V$0(ׁ| ->}R*@fLP36 X`ь9B+o@ 5!r$,DTN2"d@,衉x:TP-X6AM2n C1BP,z%ۡ9q (, `ԲѠP9$$ۡ s@iD0ۇ ľܺu )P wK0l @,p2|qPg(r(ȣ*VvA1^8@B@lP#V;9N O07&L @!ʈ-#PU ǂ," f(ԮߠVہ>cFu}x (^PH{I68$VT!; 9Fan $sao;ԗ Jg6@0k@ ` X@F9?7 2MuM1 r(@s<t, f Fd3x 9^ K($<*@Ԫ}l,``WAl&b:`P†pXu`G$($Hg*XXN*z1O `A.`f" BPPr<05D`v0@݀: lb0 zld( I-`$09ȇ;: i۶m@Ka: LO bC52ҟhjf3@#DaZ`WX1ޠP3jNd70ȍ.@h4 D .8>7l  `fXD(H10(((F ڍ@zL@%9HXH`'=xTƍddd@@G1ܿX98ϟ?|cXAn Co߮x(6h(\o`_ >&g_.xĉo@gPȂBH`e@ rH/@4p `G;# MA/x`jv0r"`|̓'OM@Qt(DA safиe(f  Ixs<1hG޼y ނ#ȡd(04C1~:{N4rgFP.@ O;wL6ooKh PЬt >z0 ϊ [n:}@8 /Fנ<s,ЄOADp+7nHpB 2VIENDB` cREVGeneral revUniqueID 11018235903090trash yellow.png**PNG  IHDR**[uiCCPPhotoshop ICC profilexJAϮQHe5Xh( `LK HY6 0DRXbc|`%VVX(b흌!(e.qo) +lk{ >!!D1]a Y= 5 STiL8jN(.k^P| $BByr ?ؿ}9! @,0:77OCpq2K^AGEG^t? Ncd8H!._V_V~|ԉ5/L0v6ino@&77O.|LB\|LL,33贿0Jz YXXI]]W_Y3PFc?v((z9؁`^n_@,,߿~ǟtB!iWGr#8&IYFFI]CQB\yx12a3 Qa0ڟ =k8oKۄA2_TCI%UP _c9O3)hWP8[D>uX;s1WJ'M!6Ɗur($`SQBLEh{YPB1&ekk5:^I[ޱ’|fww U )׼Y rP &GG @5MxRji rȰH 4 )``pTS>6]K'g'o/(9kC'!PyDh`؜2VF)!e+_5wyy05:@hȞC󾦔šZoYɷKoh]m q1V9! ?ӳ|PҶ=&5 '`p'TieX[pKLP b ;|W_1RHg`?cfa t .( ``;;×/?{ $(HCAB@ʗ&A݌@yC4J  v,Ա ;uo޼ffKjSPef(}`G#r#@&@4 Tqԇo J=~MC&(DA-?eџ' Mu@UlPǂB`0Kp>DeJ`E6/]G 6PE9ML@An p]r#44! u$P 0~@i PbznrVFPK.n8&@n C Q?0,v1G07%@,І7$!IV<1C{ƿzvO!";r0~l<- M mbCB a$fp@lFHE70$>' _x.8}B yF !рPav~|*S?}ε$_0PG@q(( fibЀ.~Av1`5cE9U)(~37OAnl?7  cA xF{QfH&WPXWd%Rw`A߿_e>$-Hr{&: @! \`G35@L.s`9 G"[X&^^PX2כ1 P7r#@;ѵ? >8T ]fFNNB_>|`9/.`! Qpq&pd7 P7g %VL[$u dCe2 / ;y&iy('Q$15rM a\sGDj=SYCh/U[3ܹZmTq:yb1K<g; fb6` ^Mt0D ZjR@XtHZ* &UQW7yO˪OWwy^;.W5s>MZ$P nj9 bLf 0 E}d:)W\[ m&c7N^H8^X[ɳUb9Ժk/)f][wZjcmt8)Վ3 T1`6{ء?3;˟?gԳGO޻M< ,\@PKE]m%%]*z/J }t>}39m oط IP .7{P̪* R-fxf"b X+},압?߯_~Bӧ_Pe7M0ehA O^lxyYqq2{@gp/1Hߕ0agdF~/?{ L,/9I}q˜lp:788X3_  oO6@fD, 1qo؀4ۗϿz2@8o\]dOCPH$B#d`اo!!D1]a Y= 5 STiL8jN(.k^P| $BB}KFL(O|?8 &t@`(f A.C2pgƫ*+# J6P\K9ݺk_? PafRPh?飇/i`ENY;?7' ';;+~wL?Azeσ+Hva(4@faT D&lH,}q,YϾo(ֆr,\eJ@ώ'zW)b9'fhRk-́1rp@8ٺ4ݾe3XAbibp} q QBHc KAh9?A>DZivghrN mXejr>'ӗ(F@\ OUHkRT4> yYK]0<5FL(nzݴV,^sxnwK+Qê0 K&F \;Ċ[+7ރ;f$A,)LД /5í^?JdR~1`,nʯ H4il0/:Põ,YaXLN=xJHO`ˆ}c"t_*cbgBСP#uQ\:iKol\nNF >y$c8pV0Kvɞ[EU|&h9qDE|`;ƌt׵iZ㊟zfw~Flc&0?0U80McLJ*`K.{=A`i ?|~2*b[`w,:7883ȁjaW}̟7~߿8%$$500It 0MBt#@Cd98CE01QQ&1Qa~`i)j`탷|3z 8?z GYPI*Ё(7 !n  Q #8$AQr8?N.nPv 7*j/cKFE !\ Hv38ڛk^c0 G@C~@ hY ~m _%(YAPS\23Ac +ҿE( gz%+?/<Wןp70BBP&XC P,Lea .SnևK0JJJKPT 2\{>,vAnbx` @2ء`qp>Ϸ׊2Rrr rTೲԿ>_~Sl6<@0B.ȄUf߿~9FS anEEEE#AQrӯ_zg_fEv }L4HX$f?3سXҜ,LbbM\k7~`W_|Z |IR$ )W |~3;u}~~`NLXI4 _x'+3h‘L"8Fba4#,2CC{m/M60J(**Ơlb6.~frApM .R@(4/k w@,v?/J 0}< Nc~ndy /""`bbn#̬_`t3Sl1NPFY܁b XBC 54~|i_ޗޠ($,zqO،b9j8@Z-P0iFH.3αG7zvGԪ5,@9YSS bgg% 3_8>ÎՑ`vHrd] 7 h,#Ps`PsZB2#r#3fh'O\ 7^\#A~P[!j Q&X/eP[^U*,UP-$$𑑓` #P- bv3#NH CL u11iO-``2C +a_BS+Bߠ> $v0ŒRA v.fLAGW>"7j?aVJ>64ۙ#x)"Hh2$T^M\l`S{坂X1H 6d Bh<'w갰sA IHv},:va? ,1X t-@7n@P{W`&Ղ&]N o?%ބɣƏ)i9B]lPzyyPvK_#t6;:&$5޳q!e,lQ @J(x%|pҺ"t&z۴7ʭ"*.Jlq*1H|5.Hǎ& =bۜqG̎Yd›U `OA4N]zVZ"hpehӳ? 0]?zrh(Nd=Qп"Syk nM?1~T54وM˅cX6; (b_?_ƘIEh}[Ѱ[ ɛ:4䛨I*ZBQ)am>*j|NK:pch:m)z!@(CҦgX~r` \Y8IGU ΄Y Ahi`oP2B. tg>s~8@aL6H8c t/N_@73p(ԡP%BPFHf`hc !f&` /@l 7d4L`9Rvz8oæoLFx,9?XA}|b7Pd gy<4 ) `9!!D1]a Y= 5 STiL8jN(.k^P| $BB3`?@v/E Ĉˡ.ru$ ##ȡP 6c#hFce?ȡ?/ 0 Цi@qq@?-HqFt,;&aQE s1j*]TAW:E)@@Q"Zy:xV"DLJiy@'ą $Q>`ꍁւ zC %g| {nVhkﺗ;ԁ/ЁG MMXEEX88@@ ѿPO}}[~?<}0$#933 BX% vi++EEVNNF`h2?~f!ۏ> =PʒEi`eR Ç?\@{'N&@}@`7$yxK볉r0_{ӧ#́t L =|goboKEB# + _r/ -@n LX&wa:!U/ 27 ay~w׵1jsT9eIL;(&Lg>lJM,pa;$3 $ƿ4 0DE iS׀qIe02*'_8MUՋ5EZzvuΑk[2tERJc3=9Wߍp57k_ PŸ6GčFA$M bH% M⛰0|H{y6Aub\"R_EA%c MHZk߲mX9*eP C0V c <@ir՘G5 hB)BmE OvD@*&ڛKQ>zC"$0ilƽ0tbZyOkis_*A?qr ``Y3@%`432hki1Hfh -4!` 3A_Z = D@?-бڊr>Y 9?}@r3jҰjDRtƠNPlϏ۷͟?/^9YBT00rL 8&@৐GGa߂ !lb2 r4@?,,L_ą$$$+"(M28$N~x˻%K:'O~'O~a25,T= yF9 0G} YA9T< * WVfxyy K^ɗ?0óg޼ ??חH ),޹'xZ3X#4$ -n*rT!ڵC 1۷D׮}o߾eXfbg&E&> ,jABr?+RMs ~'?Hf&rssTH,nѠ@,`PX/?|N!ǡρ%.n>Ae-(9&@ 5aQIv v*k!IIFq`Nbg?k9Ph@ۣ`b@ 4d+c!!~ ))FP`m_ `!>0r*w03,a@,  d9] T6(Mr/`oWϞ -0$Epǡ;[ K} |Ob28= sݷc>[`DKX@AAn  #T$ȄG @݆%JdfwK@\ o~…`MHi(MD@,H#zp>1![,,|@gldjuA%ͲjS'O~C 0G&>Gea 4AFhdDO#o022ajL#lȀڜ Ywx l`s$%#T#r lA\p$P}/-7(w Ԃ 6C+ŋp9?4DC\-B@,>p oN"f`Y$`G7Qq'bv71 lD7*WAs4`Ɋ8D@ݛ7! Mc4 P7r#@F@ `4]V`q)0297SЊ5` m%F`# 3n (@,k?}J|Q F&@`0x 3$r(a~(3?PVفjK/_>4G8nux8An p;0@jh  ąbvA:;- ,A'/_0u;X3{1j郺 СqOcR h&CY^d eE94MAPgRrX>x =_fh 瀌K1%-`QQF; n5++_VVƏ@! (@C+ȁ@aa q~|y_n ءRA XQv0z) l`4 I0B0'#7BCc‘`t!s$;HC `94jG9},(on preOpenstack

enable menuitem 4 of menu "File"

set the loc of me to the screenLoc

pass preOpenStack

end preOpenstack

on closeStack

disable menuitem 4 of menu "File"

end closeStack

cREVGeometryCachestackID1024 @S.cREVGeometryCacheIDs1093568789002102310935687640021020cREVGeometrycachetotal2order1093568764002  @S.cLastMessageSentTime 10:07:38 PM cREVGeneral bookmarks handlerList prevHandler tempScriptscriptcREVGeometryCacheIDs1093568789002102310935687640021020cREVGeometrycachetotal2order1093568764002  @S.cREVGeometryCacheIDs1093568789002102310935687640021020cREVGeometrycachetotal2order1093568764002  @S.cREVGeometryCacheIDs1093568789002102310935687640021020cREVGeometrycachetotal2order1093568764002  @S.cREVGeometryCacheIDs1093568789002102310935687640021020cREVGeometrycachetotal2order1093568764002 i_+ cREVGeneral revUniqueID 1093568789002 Field)xon mouseUp put the clickText into myClickedText if (myClickedText contains "http://") or (myClickedTest contains "@") then revGoURL myClickedText end if end mouseUp @W# cREVGeometryMaster,scaleBottomObjectSideBottomMaster,movehDistancefalseMastertrueMaster,scaleLeftObjectRefcardMaster,scaleTopObjectRefcardMaster,scaleBottomObjectRefcardMaster,scaleBottomAbsolutetrueMaster,scaleBottomtrueMaster,scaleLeftObjectSideLeftMaster,scaleTopObjectSideTopMaster,movevDistancefalseMaster,scalebottomDistance-13Master,expectedRect -2,-2,416,359Master,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance2Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,scaleLeftAbsolutetrueMaster,scaleTopAbsolutetrueMaster,scaleLefttrueMaster,scaleToptrueMaster,cardRanking4Master,scaletopDistance-2Master,scaleleftDistance-2 cREVGeneralscriptChecksumK/E qQ3:}E; revUniqueID 1093568764002 bookmarks handlerListmouseUp tempScript prevHandlerscriptSelectionchar 122 to 121script

on mouseUp

put the clickText into myClickedText

if (myClickedText contains "http://") or (myClickedTest contains "@") then

revGoURL myClickedText

end if

end mouseUp

 Using ChatRev    You are seeing the chat card. In the big field (top left) you can see chat messages. In the right field you see who is currently logged in.   ZTo make a chat message yourself, write your message into the bottom field, and hit enter. Y  You can type a humorous action by typing /me and your message into the lower field. Normally you would write something like this:  /me laughs really hard @Red  )In the chat this will show up like this: (    {You can also write a private message, which can only be seen by the recipient. click on the name of the person you want to send a private message, and then type your message. Alternatively you can type /msg or /m and then the nick of the recipient and then the message. When you hit enter to send the message, the field should contain something like this: /msg recipient message  @Red  @Red    If you want to change your email adress, your about message, or your label, then just choose the right option from the "Set your profile" pull down. It will place the right command into the lower field, and you can just type your new info. After that, press return.   Another pull down menu lets you set the action that happens when you click the list of users currently logged in. Private message lets you send a message to the selected user, E-Mail will open your email client, and About will show the about text of the user in the chat. r r /  "  2  To disconnect, click the click the Disconnect button in the Login pane or choose Disconnect from the status pulldown menu on the Chat pane. Alternatively you can type /disc into the lower field and hit enter, or just close the stack.  @Red =   'Here is a list of additional commands: &  5/h = Show the command help text. Aliases: /help /hlp 4  W/msg = A private message only that user can see. Aliases: /message /m V  ,/me = Humorous action. No aliases +  Q/label = change your tool tip (mouseover). Aliases: /l /mouse /mo P  5/setmail = change your email. Alias: /sm 4  3/mail = send an email to a user. Alias: /ma 2  H/setabout = set your about text to something new. Alias /sa G  7/about = look at the about of a user. Alias: /a 6  4/clear = put empty into the chat window. No aliases 3  8/disconnect = Disconnect from the server. Alias = /disc 7  Setup   If you have never used this chat before, then you should first register. Click the "register" Button to do so. You will be prompted to enter a name, a password and other info. If you recieve a message that you are registered, then you can login by clicking the "connect" button.   If you already have registered, then it is sufficient to enter your login information into the "Name" and "Password" fields, and click "connect".   KIf there is no IP number available, you have to enter either an IP number or choose an IP URL. If you don't have additional IP URLs, you choose the default. You can add IP numbers and IP URLs by typing or pasting then into the respective boxes and press enter. Delete them by pressing the option (alt) key while selecting an item. J  Bjrnke runs the default server. His IP URL is: http://www.revolutionboard.de/bvg/ip.txt The default port is 80, a test server might be 8080.   Mark might be running a server, sometimes. The IP URL is: http://home.wanadoo.nl/mark.sch/ip.txt If he server is running, it will usually be on port 8080.   uThere are files (smileys.sit and smileys.zip) that contain smiley pictures for that can be stored locally. Put the Smileys folder into the User Data folder of the Rev Chat application (or stack, if you don't use a standalone version). You can put the sound file glass.aif into the User Data as well and configure your Settings to play this sound file upon message arrival. t  The message and privmsg colors can be changed by clicking on them in the Settings pane. They only color the sender of a message, not the whole text. Set a sound by clicking the "..." buttons. You may also enter "beep" for the system beep, or nothing at all for no sound.   The "Save to file" checkbox in the Setting pane lets you save the chat directly into a text file. When you activate it, you are promted for a file name and a place.   The big field at the bottom of the Login pane is the error log. If you expirience problems with the chat, please send the last few lines of the error log to revchat@schonewille.cjb.net, with a description of what you where doing.   -  The ChatRev Project    bChatRev has become a more community based project. Here are the names of some major contributors. a  vMisterX (Xavier) wants to do a more advanced version of the chatrev client. It can be found at . iGame3d (Bill) has made some improvements to the Server GUI which I have adopted immediately. SoapDog (Andr) has made a script to autocomplete on tab, which I have modified and included into my client. Special thanks goes to the regular chatters, Bill and kWeed. u  This project is open source. You can change it as you like, but you must return your modifications to the public domain. You must include this entire text.   The initiator of the project is Bjrnke, who also created a server and which is the default server. This version of the client (the version you are using now) was made by Mark Schonewille. For more info, see http://home.wanadoo.nl/mark.sch   EClient Copyright2004 by Mark Schonewille, Nijmegen, the Netherlands D 6Portions Copyright2004 by Bjrn von Gierke, Germany. 5 MPortions Copyright2000-2004 by Runtime Revolution Ltd, Edinburgh, Scotland. L OIf you modify this version, additional copyrights only apply to modifications. N No one involved in the development of this software bears any responsibility concerning damages allegedly, possibily, or actually caused by this software.   Registering   FEnter a nick name and a password. Only these cannot later be changed. E  |Other users can send you an e-mail by typing /mail (opens mail client). You can set your e-mail address by typing /setmail. - @Red- 2@ @Redr z  pThe About can also be changed by typing /setabout. Users can read this info by typing /about in the chat field. ( @Red( 1% @RedV \  The mouseover is a tool tip which appears if someone hovers the mouse over your name in the loged in users field of the chat. It can be set by typing /label. The same message also appears in th user list (usually largely off-screen).   Forum    Choose a forum from the option menu button at the top of the Forum window to change between the Support forum and the General Discussion forum.   When you have selected a thread in the top field, you can reply to it by pressing "reply". Your nickname and your reply will be added to the Thread.   /The bottom field contains the selected thread. .  1Make a new thread with the "Make Thread" button. 0  The forum updates every time you click on the Tabs, and every time you make a post/thread. The newest threads are always at the top.  `D!PSmileys2on retrieveSmileys set the cursor to watch implementedSmileys smiley put empty into field "Smileys Overview" set the itemDelimiter to tab put 0 into z put " efghijklmnopqrstuvwxyz" into myAlphabet repeat with x = 1 to 4 repeat with y = 1 to 4 add 1 to z get char z of myAlphabet put char z of myAlphabet into item x of line y of field "Smileys Overview" end repeat end repeat put 1 into x put 0 into r put 1 into k put empty into mySmileysList repeat until smiley[x] is empty set the cursor to busy add 1 to r if r > (number of lines of fld "Smileys Overview") then put 1 into r add 1 to k end if -- put smileURL(smiley[x]) & return after mySmileysList -- set the itemDelimiter to tab set the imageSource of char 1 of item (k+1) of line r of field "Smileys Overview" to smileURL(smiley[x]) add 1 to x end repeat return mySmileysList end retrieveSmileys on preOpenStack retrieveSmileys if the cCustomLoc of me is empty then put item 3 to 4 of the screenrect into myScrBotRight set the bottomleft of me to ((item 1 of myScrBotRight - 278) & comma & (item 2 of myScrBotRight - 12)) else set the bottomleft of me to the cCustomLoc of me end if end preOpenStack on closeStack lock screen put empty into field "Smileys Overview" set the cCustomLoc of me to the bottomLeft of me end closeStack _ cCustomLoc752,756Smileys UGenevacREVGeometryCachestackID1360 cREVGeneralscriptChecksum~M Oktv bookmarks breakPoints handlerList'retrieveSmileys preOpenStack closeStack tempScript prevHandler closeStackscriptSelectionchar 1358 to 1357script

on retrieveSmileys

set the cursor to watch

implementedSmileys smiley

put empty into field "Smileys Overview"

set the itemDelimiter to tab

put 0 into z

put " efghijklmnopqrstuvwxyz" into myAlphabet

repeat with x = 1 to 4

repeat with y = 1 to 4

add 1 to z

get char z of myAlphabet

put char z of myAlphabet into item x of line y of field "Smileys Overview"

end repeat

end repeat

put 1 into x

put 0 into r

put 1 into k

put empty into mySmileysList

repeat until smiley[x] is empty

set the cursor to busy

add 1 to r

if r > (number of lines of fld "Smileys Overview") then

put 1 into r

add 1 to k

end if

-- put smileURL(smiley[x]) & return after mySmileysList

-- set the itemDelimiter to tab

set the imageSource of char 1 of item (k+1) of line r of field "Smileys Overview" to smileURL(smiley[x])

add 1 to x

end repeat

return mySmileysList

end retrieveSmileys

on preOpenStack

retrieveSmileys

if the cCustomLoc of me is empty then

put item 3 to 4 of the screenrect into myScrBotRight

set the bottomleft of me to ((item 1 of myScrBotRight - 278) & comma & (item 2 of myScrBotRight - 12))

else

set the bottomleft of me to the cCustomLoc of me

end if

end preOpenStack

on closeStack

lock screen

put empty into field "Smileys Overview"

set the cCustomLoc of me to the bottomLeft of me

end closeStack

 @ cREVGeneral bookmarks handlerList prevHandler tempScriptscriptcREVGeometryCacheIDs109371754200210311093714439001100710937111850011004cREVGeometrycachetotal3order  Smileys Overview {on mouseUp global gChatRevShortName implementedSmileys smiley put " efghijklmnopqrstuvwxyz" into myAlphabet get the clickText put (offset(the clickText,myAlphabet)) into mySmileyNr put smiley[(mySmileyNr - (number of lines of me))] after field "Enter" of card 2 of stack gChatRevShortName if there is a field "Enter" of stack gChatRevShortName then select after text of field "Enter" of card 2 of stack gChatRevShortName end if end mouseUp :@&h#s cREVTableformattedview topcellloc14 leftcellloc16currenthscroll0currentxmouseloc145bottomcellloc34currentymouseloc31 rightcellloc91scrollbarwidth16 cellyspacing20rightfieldloc191 topfieldloc43 leftfieldloc7 cellxspacing65 currentview currentvscroll0 viewablerows6 currentxcell1 currentycell1currentcellvalueviewablecolumns3 cellformatfalsenumbertabstops1 celleditfalsebottomfieldloc146 cREVGeneral scriptChecksumnl!SHi|tabletrue breakPoints handlerListmouseUpscriptSelection char 88 to 87 bookmarks revUniqueID 1093711185001 prevHandlermouseUp tempScriptscript

on mouseUp

global gChatRevShortName

implementedSmileys smiley

put " efghijklmnopqrstuvwxyz" into myAlphabet

get the clickText

put (offset(the clickText,myAlphabet)) into mySmileyNr

put smiley[(mySmileyNr - (number of lines of me))] after field "Enter" of card 2 of stack gChatRevShortName

if there is a field "Enter" of stack gChatRevShortName then

select after text of field "Enter" of card 2 of stack gChatRevShortName

end if

end mouseUp

 ButtonEp(on mouseUp retrieveSmileys end mouseUp %R cREVGeneralscriptChecksum a!5Կ|{ bookmarks revUniqueID 1093714439001 handlerListmouseUpscriptSelection char 11 to 10 prevHandlermouseUp tempScriptscriptu

on mouseUp

retrieveSmileys

end mouseUp

Field@' cREVGeneral revUniqueID 1093717542002 bookmarks handlerList tempScript prevHandlerscript  HClick on a smiley with your mouse to insert one in the text entry field Send File Request3  on sendRequest theUser go stack (short name of me) in new window put theUser into fld "User" put "0/255" into fld "Chars" end sendRequest on enterInField set the hilite of btn "Send" to true wait 6 set the hilite of btn "Send" to false send mouseUp to btn "Send" end enterInField on returnInField enterInField end returnInField on enterKey enterInField end enterKey on returnkey enterInField end returnkey on sendFile theIP,theFile,theUserName set the itemDelimiter to "/" put last item of theFile into myFilename put (url ("binfile:" & theFile)) into myFileData put number of chars of myFileData into myFileLength put theIP & colon & "63663|" & baseconvert(the seconds,10,16) into mySocket open socket mySocket put the result into rslt if rslt is not empty then beep answer error rslt with "Cancel" close socket 63663 exit sendFile end if write "sendfile" & return & theUserName & return & myFileLength & comma & theFile & return to socket mySocket put "Send File Request" into sfr go stack sfr in new window lock screen show grp "Progress" of stack sfr hide grp "Description" of stack sfr put "Waiting for reply..." into fld "Status" of stack sfr set the thumbpos of scrollbar "Transfer" of stack sfr to 0 unlock screen sendFile1 myFileData,mySocket,myFileLength end sendFile on sendFile1 theFileData,theSocket,myStartLength put "Send File Request" into sfr if fld "Status" of stack sfr is not "Receiving file..." then lock screen put "Sending file..." into fld "Status" of stack sfr show grp "Progress" of stack sfr hide grp "Description" of stack sfr unlock screen end if put the number of chars of theFileData into myFileLength put (100-trunc(myFileLength/myStartLength*100)) into myProgress if the thumbpos of scrollbar "Transfer" of stack sfr is not myProgress then set the thumbpos of scrollbar "Transfer" of stack sfr to myProgress if myFileLength > 4096 then write char 1 to 4096 of theFileData to socket theSocket delete char 1 to 4096 of theFileData send "sendFile1 thefileData,theSocket,myStartLength" to me in 10 milliseconds else write char 1 to -1 of theFileData to socket theSocket set the thumbpos of scrollbar "Transfer" of stack sfr to 100 put "Transfer completed" into fld "Status" of stack sfr close socket theSocket wait 10 lock screen hide group "Progress" of stack sfr show group "Description" of stack sfr end if end sendFile1 on readyToReceiveMsg accept connections on port 63663 with message "getFile" end readyToReceiveMsg on getFile theIP thePort read from socket theIP until return if char 1 to -2 of it is "sendFile" then read from socket theIP until return -- user read from socket theIP until return --file put it into myFilePath set the itemDel to comma if item 1 of myFilePath is an integer then put item 1 of myFilePath into myFileLength set the itemDel to "/" put char 1 to -2 of the last item of it into myFilename ask file "Save received file as..." with myFilename put it into myNewFilePath if myNewFilePath is not empty then lock screen put "Waiting for data..." into fld "Status" of stack "Receiving" set the thumbPos of scrollbar "Progress" of stack "Receiving" to 0 go stack "Receiving" in new window unlock screen get 0 put empty into myFileData put the socketTimeoutInterval into myTimeout set the socketTimeoutInterval to 1000 getFile1 theIP,thePort,myTimeout,myFileData,myFilename,myFileLength,myFilePath,myNewFilePath end if else beep answer "An error occurred while contacting the sending computer to transfer a file." with "Cancel" close socket theIP close socket 63663 end if end if end getFile on getFile1 theIP,thePort,theTimeout,theFileData,theFilename,theFileLength,theFilePath,theNewFilePath wait 10 millisecs with messages read from socket theIP for 4096 put the result into rslt -- an error check is not possible, as you never know what you're gonna get in the result. -- rslt contained an integer once, not sure whether this is an error --if (rslt is empty) or (rslt is "eof") or (rslt is an integer) then put (number of chars of theFileData) into myCurrLength put (trunc(myCurrLength/theFileLength*100)) into myProgress if fld "Status" of stack "Receiving" is not "Downloading file..." then put "Downloading file..." into fld "Status" of stack "Receiving" if the thumbPos of scrollbar "Progress" of stack "Receiving" is not myProgress then set the thumbPos of scrollbar "Progress" of stack "Receiving" to myProgress end if put it after theFileData if myCurrLength < theFileLength then send "getFile1 theIP,thePort,theTimeout,theFileData,theFilename,theFileLength,theFilePath,theNewFilePath" to me in 10 millisecs else getFile2 theIP,thePort,theTimeout,theFileData,theFilename,theFileLength,theFilePath,theNewFilePath end if --else --beep --answer rslt --end if end getFile1 on getFile2 theIP,thePort,theTimeout,theFileData,theFilename,theFileLength,theFilePath,theNewFilePath set the thumbPos of scrollbar "Progress" of stack "Receiving" to 100 put "Ready" into fld "Status" of stack "Receiving" set the socketTimeoutInterval to theTimeout if last char of theFileData is linefeed then delete last char of theFileData put the fileType into myTempType set the fileType to "????????" put theFileData into url ("binfile:" & theNewFilePath) put the result into rslt if rslt is not empty then beep answer rslt end if set the fileType to myTempType close socket theIP close socket 63663 wait 2 secs close stack "Receiving" end getFile2 on preOpenstack show grp "Description" hide grp "Progress" put "Click the button above or drag a file into this field." into fld "File" put "Please, accept my file request." into fld "Description" end preOpenstack on socketClosed theIP close socket theIP -- not necessary? close socket 63663 end socketClosed !|@ liferesizingtrueSend File Request|@ WGeneva UGeneva UGeneva U Charcoal Uusesystemfont U CharcoalcREVGeometryCachestackID1033 cREVGeneralscriptChecksum}CʺcTWʃП bookmarks breakPoints handlerListsendRequest enterInField returnInField enterKey returnkey sendFile sendFile1 readyToReceiveMsg getFile getFile1 getFile2 preOpenstack socketClosedscriptSelectionchar 4451 to 4450 prevHandler enterInField tempScriptscriptD

on sendRequest theUser

go stack (short name of me) in new window

put theUser into fld "User"

put "0/255" into fld "Chars"

end sendRequest

on enterInField

set the hilite of btn "Send" to true

wait 6

set the hilite of btn "Send" to false

send mouseUp to btn "Send"

end enterInField

on returnInField

enterInField

end returnInField

on enterKey

enterInField

end enterKey

on returnkey

enterInField

end returnkey

on sendFile theIP,theFile,theUserName

set the itemDelimiter to "/"

put last item of theFile into myFilename

put (url ("binfile:" & theFile)) into myFileData

put number of chars of myFileData into myFileLength

put theIP & colon & "63663|" & baseconvert(the seconds,10,16) into mySocket

open socket mySocket

put the result into rslt

if rslt is not empty then

beep

answer error rslt with "Cancel"

close socket 63663

exit sendFile

end if

write "sendfile" & return & theUserName & return & myFileLength & comma & theFile & return to socket mySocket

put "Send File Request" into sfr

go stack sfr in new window

lock screen

show grp "Progress" of stack sfr

hide grp "Description" of stack sfr

put "Waiting for reply..." into fld "Status" of stack sfr

set the thumbpos of scrollbar "Transfer" of stack sfr to 0

unlock screen

sendFile1 myFileData,mySocket,myFileLength

end sendFile

on sendFile1 theFileData,theSocket,myStartLength

put "Send File Request" into sfr

if fld "Status" of stack sfr is not "Receiving file..." then

lock screen

put "Sending file..." into fld "Status" of stack sfr

show grp "Progress" of stack sfr

hide grp "Description" of stack sfr

unlock screen

end if

put the number of chars of theFileData into myFileLength

put (100-trunc(myFileLength/myStartLength*100)) into myProgress

if the thumbpos of scrollbar "Transfer" of stack sfr is not myProgress then set the thumbpos of scrollbar "Transfer" of stack sfr to myProgress

if myFileLength > 4096 then

write char 1 to 4096 of theFileData to socket theSocket

delete char 1 to 4096 of theFileData

send "sendFile1 thefileData,theSocket,myStartLength" to me in 10 milliseconds

else

write char 1 to -1 of theFileData to socket theSocket

set the thumbpos of scrollbar "Transfer" of stack sfr to 100

put "Transfer completed" into fld "Status" of stack sfr

close socket theSocket

wait 10

lock screen

hide group "Progress" of stack sfr

show group "Description" of stack sfr

end if

end sendFile1

on readyToReceiveMsg

accept connections on port 63663 with message "getFile"

end readyToReceiveMsg

on getFile theIP thePort

read from socket theIP until return

if char 1 to -2 of it is "sendFile" then

read from socket theIP until return -- user

read from socket theIP until return --file

put it into myFilePath

set the itemDel to comma

if item 1 of myFilePath is an integer then

put item 1 of myFilePath into myFileLength

set the itemDel to "/"

put char 1 to -2 of the last item of it into myFilename

ask file "Save received file as..." with myFilename

put it into myNewFilePath

if myNewFilePath is not empty then

lock screen

put "Waiting for data..." into fld "Status" of stack "Receiving"

set the thumbPos of scrollbar "Progress" of stack "Receiving" to 0

go stack "Receiving" in new window

unlock screen

get 0

put empty into myFileData

put the socketTimeoutInterval into myTimeout

set the socketTimeoutInterval to 1000

getFile1 theIP,thePort,myTimeout,myFileData,myFilename,myFileLength,myFilePath,myNewFilePath

end if

else

beep

answer "An error occurred while contacting the sending computer to transfer a file." with "Cancel"

close socket theIP

close socket 63663

end if

end if

end getFile

on getFile1 theIP,thePort,theTimeout,theFileData,theFilename,theFileLength,theFilePath,theNewFilePath

wait 10 millisecs with messages

read from socket theIP for 4096

put the result into rslt

-- an error check is not possible, as you never know what you're gonna get in the result.

-- rslt contained an integer once, not sure whether this is an error

--if (rslt is empty) or (rslt is "eof") or (rslt is an integer) then

put (number of chars of theFileData) into myCurrLength

put (trunc(myCurrLength/theFileLength*100)) into myProgress

if fld "Status" of stack "Receiving" is not "Downloading file..." then put "Downloading file..." into fld "Status" of stack "Receiving"

if the thumbPos of scrollbar "Progress" of stack "Receiving" is not myProgress then

set the thumbPos of scrollbar "Progress" of stack "Receiving" to myProgress

end if

put it after theFileData

if myCurrLength < theFileLength then

send "getFile1 theIP,thePort,theTimeout,theFileData,theFilename,theFileLength,theFilePath,theNewFilePath" to me in 10 millisecs

else

getFile2 theIP,thePort,theTimeout,theFileData,theFilename,theFileLength,theFilePath,theNewFilePath

end if

--else

--beep

--answer rslt

--end if

end getFile1

on getFile2 theIP,thePort,theTimeout,theFileData,theFilename,theFileLength,theFilePath,theNewFilePath

set the thumbPos of scrollbar "Progress" of stack "Receiving" to 100

put "Ready" into fld "Status" of stack "Receiving"

set the socketTimeoutInterval to theTimeout

if last char of theFileData is linefeed then delete last char of theFileData

put the fileType into myTempType

set the fileType to "????????"

put theFileData into url ("binfile:" & theNewFilePath)

put the result into rslt

if rslt is not empty then

beep

answer rslt

end if

set the fileType to myTempType

close socket theIP

close socket 63663

wait 2 secs

close stack "Receiving"

end getFile2

on preOpenstack

show grp "Description"

hide grp "Progress"

put "Click the button above or drag a file into this field." into fld "File"

put "Please, accept my file request." into fld "Description"

end preOpenstack

on socketClosed theIP

close socket theIP -- not necessary?

close socket 63663

end socketClosed

 card id 1002 `|@ cREVGeneral bookmarks handlerList prevHandler tempScriptscriptcREVGeometryCacheIDs1100919705483101111009198987851018110091958259110051100951468945102011019000955331029110098812777310251100919894131101611009524232391024110091958968110071101926149557103311019001066311031110091968954110091100919837726101411019001849941032cREVGeometrycachetotal14order~1100919894131 1100919898785 1100951468945 1100919837726 1100919705483 1100952423239 1101926149557 1101900095533 1101900106631  User@ cREVGeneral revUniqueID 1100919582591  Field@  cREVGeneral revUniqueID 1100919589681  Send file request to:File i $]c cREVGeometry Master,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect 14,36,440,145Master,movehDistancefalseMastertrueMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-17Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking1Master,scaletopDistanceMaster,scaleleftDistance cREVGeneral revUniqueID 1100919837726 Select FileExon mouseUp answer file "Select a file to send..." if it is not empty then put it into fld "File" end if end mouseUp 8_ cREVGeneralscriptChecksum2-<#dav bookmarks revUniqueID 1100919689541 handlerListmouseUpscriptSelection char 48 to 47 prevHandlermouseUp tempScriptscript

on mouseUp

answer file "Select a file to send..."

if it is not empty then

put it into fld "File"

end if

end mouseUp

File)pon dragDrop put the dragdata["files"] into me end dragDrop on dragEnter focus me set the acceptDrop to true end dragEnter on dragLeave set the acceptDrop to false select empty end dragLeave WI& cREVGeometry Master,movevDistancefalseMaster,scalebottomDistanceMaster,expectedRect 24,88,430,136Master,movehDistancefalseMastertrueMaster,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-27Master,scaleRightObjectSideRightMaster,scaleRightObjectRefcardMaster,cardRanking1Master,scaletopDistanceMaster,scaleleftDistance cREVGeneralscriptChecksummϸ1%( bookmarks revUniqueID 1100919705483 handlerListdragDrop dragEnter dragLeavescriptSelection char 48 to 47 prevHandler tempScriptscript]

on dragDrop

put the dragdata["files"] into me

end dragDrop

on dragEnter

focus me

set the acceptDrop to true

end dragEnter

on dragLeave

set the acceptDrop to false

select empty

end dragLeave

 CancelExcon mouseUp put empty into fld "User" put empty into fld "File" close this stack end mouseUp R cREVGeometryMaster,moveVObjectSidebottomMaster,movehDistance-168MastertrueMaster,moveVObjectRefcardMaster,moveHObjectRefcardMaster,moveVAbsolutetrue Master,moveVtrueMaster,movevDistance-32Master,scalebottomDistanceMaster,expectedRect247,267,329,289Master,moveHObjectSiderightMaster,scalerightDistanceMaster,cardRanking2Master,scaletopDistanceMaster,moveHAbsolutetrueMaster,scaleleftDistance Master,moveHtrue cREVGeneralscriptChecksumxf\/WgU/ bookmarks revUniqueID 1100919894131 handlerListmouseUpscriptSelection char 67 to 66 prevHandler tempScriptscriptc

on mouseUp

put empty into fld "User"

put empty into fld "File"

close this stack

end mouseUp

SendMx4on mouseUp global gChatRevShortName if noPendingTransfers() then put "Please, accept this file request." into myFileRequestMsg if there is not a file (fld "File") then beep answer error "Please select a file, first." if number of words of fld "Description" is 0 then put myFileRequestMsg into fld "Description" end if else if number of words of fld "Description" is 0 then beep answer error "A comment or file description is required." put myFileRequestMsg into fld "Description" else put "fileRequest" & return & fld "User" & return & fld "File" & return & fld "Description" & return into myMsg write myMsg to socket (fld "IP" of cd 1 of stack gChatRevShortName) lock screen show grp "Progress" hide grp "Description" put "Waiting for reply..." into fld "Status" set the thumbPos of scrollbar "Transfer" to 0 unlock screen end if else beep answer "File transfers are in progress. Please try again, later." with "Cancel" end if end mouseUp R cREVGeometryMaster,moveVObjectSidebottomMaster,movehDistance-61MastertrueMaster,moveVObjectRefcardMaster,moveHObjectRefcardMaster,moveVAbsolutetrue Master,moveVtrueMaster,movevDistance-32Master,scalebottomDistanceMaster,expectedRect353,267,435,289Master,moveHObjectSiderightMaster,scalerightDistanceMaster,cardRanking2Master,scaletopDistanceMaster,moveHAbsolutetrueMaster,scaleleftDistance Master,moveHtrue cREVGeneralscriptChecksumknJJy bookmarks revUniqueID 1100919898785 handlerListmouseUpscriptSelectionchar 917 to 916 prevHandlermouseUp tempScriptscript3

on mouseUp

global gChatRevShortName

if noPendingTransfers() then

put "Please, accept this file request." into myFileRequestMsg

if there is not a file (fld "File") then

beep

answer error "Please select a file, first."

if number of words of fld "Description" is 0 then

put myFileRequestMsg into fld "Description"

end if

else if number of words of fld "Description" is 0 then

beep

answer error "A comment or file description is required."

put myFileRequestMsg into fld "Description"

else

put "fileRequest" & return & fld "User" & return & fld "File" & return & fld "Description" & return into myMsg

write myMsg to socket (fld "IP" of cd 1 of stack gChatRevShortName)

lock screen

show grp "Progress"

hide grp "Description"

put "Waiting for reply..." into fld "Status"

set the thumbPos of scrollbar "Transfer" to 0

unlock screen

end if

else

beep

answer "File transfers are in progress. Please try again, later." with "Cancel"

end if

end mouseUp

 Description,i ^n Add file description or comment cREVGeneral revUniqueID 1100988127773  Description)pon rawKeyUp k if number of chars of me > 255 then put char 1 to 255 of me into me select after text of me end if put (number of chars of me) & "/255" into fld "Chars" end rawKeyUp J= cREVGeometryMaster,scaleBottomObjectSideBottomMaster,movehDistancefalseMastertrueMaster,scaleBottomObjectRefcardMaster,scaleBottomAbsolutetrueMaster,scaleBottomtrueMaster,movevDistancefalseMaster,scalebottomDistance-90Master,expectedRect14,185,441,241Master,scaleRightAbsolutetrueMaster,scaleRighttrueMaster,scalerightDistance-27Master,scaleRightObjectRefcardMaster,scaleRightObjectSideRightMaster,cardRanking2Master,scaletopDistanceMaster,scaleleftDistance cREVGeneralscriptChecksum'vz勎\A bookmarks revUniqueID 1100951468945 handlerListrawKeyUpscriptSelectionchar 181 to 180 prevHandler tempScriptscriptD

on rawKeyUp k

if number of chars of me > 255 then

put char 1 to 255 of me into me

select after text of me

end if

put (number of chars of me) & "/255" into