+ = done
- = not done
? = not sure about/in progress
-----------------------------------------

TODO:

+ Correctly parse gopher:// URLs (for DDE)
+ Implement the 'Go' popup button for everything.
+ Allow simultaneous directory browsing and file transfer.
+ Stop writing when ".CR-LF" is recieved in ASCII file transfers.
+ Keyboard mapping.

- Editable bookmarks/history.
- Store history/file info in hash tables instead of variables.
- User-definable actions for itemtypes.
- Cache
- Gopher+
- Maybe make the UI prettier.
- Make select+copy "smarter"
- More bookmark options, such as 'Set current page as home'.

? Scripting improvements / Re-organization.
? Browse multiple sites at once (already done for file transfer).
? Make history/titlebar/bookmarks show info text.
? Error checking

-----------------------------------------

Changelog:

09/12/04 - Connects to a gopher server and (correctly?) parses the
          pages.
          So far it's possible to browse directories, and link
          history is remembered.
          $gettok wasn't impressed with gopher protocol, so I
          borrowed $_gettok.  It worked beautifully as soon as I
          stuck it in, thanks MonoTeK.

09/13/04 - Implemented FullText search.
          Implemented ASCII/BIN downloads.  If the file exists it
          will be overwritten.  If the file is ASCII, it will be
          opened in notepad, if it is binary, the download folder
          will be opened.  If the filename isn't sent by the server,
          the remote folder name will be used, so you may have to
          guess at filetypes.  Downloads are currently "broken" sort
          of, on some servers.  Gopher protocol sends a "." at the
          end of a menu/ASCII file, but I don't know how to read
          from &binvars, so ASCII files will usually have a .<crlf>
          at the end.
          Implemented telnet support.  Sends "user@host:port" - no
          error checking yet.
          Made some improvements, doesn't check for socket errors
          yet but at least it won't clear the screen anymore until a
          socket has been opened.

09/14/04 - A few little bugfixes.
          Checks for socket errors.
          Opens TXT/IMG files in notepad/iview.
          Attempts to download unknown item types.  If the item has
          a ":" in the name,
          Gayfer instead assumes it is a URL and prompts you to run
          it.
          The titlebar is more informative.

09/15/04 - Added some options (which will have to be set before using
          gayfer.)  Right-click the gayfer window.
          ~ Release of 0.1 ~

09/16/04 - Last window position/size/font will be remembered.
          Window can be sent to the desktop.
          History is viewable through the popup menu (VERY ugly.)
          Titlebar is more informative.
          'I' item type is no longer broken :p
          Make sure a site exists before adding it to the history.
          Don't add sites to history if they've been visited FROM
          the history.
          I broke history and had to re-write it :)  Still buggy,
          but more reliable.
          Added Back/Stop/Home buttons to the popup menu.  The stop
          button can only end file transfers.  I probably won't make
          it end menu transfers, since my mIRC freezes during these.
          ~ Release of 0.2 ~

09/16/04 - 'Socket in use' error only appears if link text is clicked.
          If a string with no tab characters is recieved during a
          menu transaction, gayfer will display it as info text.
          This usually occurs during a server error.  Now gayfer can
          show some menus that HGopher fails on :)
          Font can be changed via the popup menu.
          'Select viewer' dialogs are better.
          Moved the 'Previous menu' dir and renamed it to '..'.
          The 'Exec warning' info is now editable by the user.
          Renamed $_gettok to $g.gettok so it doesn't conflict with
          other scripts.

09/17/04 - Added a 'Go' button to the popup menu.
          Changed the 'Stop' button to 'Stop transfer'.  It will be
          hidden unless a file transfer is in progress.
          ~ Release of 0.3 ~

09/17/04 - Added 'Link info' popup, which shows some extra info.
          'Clear history' popup didn't remove the '..' link, so I
          fixed that.
          Revised the 'upcoming' section of the readme.
          Revised the 'Exec warning' dialog.  Now it is "mostly"
          gopher-compliant.
          I'll never make it run anything automatically though,
          because items in a URL: selector aren't necessarily
          pointing to websites.

09/18/04 - Half-assed bookmarking, to go with a half-assed gopher
          client!
          More error checking, and some other improvements.
          ~ Release of 0.4 ~

09/18/04 - Bug fix regarding bad filenames.
          Popup menu to access Gayfer.
          ~ Release of 0.4.1 ~

09/19/04 - Some scripting improvements.
          Added Select+Copy (expect improvements)
          Bugfix: can now recover from sockerrs in the sockclose
          script, I hope.
          Added 'Properties' button to the popup menu.
          The title bar now shows host:port/selector.
          Added the beginnings of CSO PB.  It is experimental, but
          useable for the average nosey fellow.  It's quite slow, so
          be specific in your search!  And please, don't abuse it.

09/20/04 - Better support for the 'w' item type. Seems harmless..
          Sort of fixed a download bug, more improvements to it
          later.
          A web browser must be set in the 'Select viewer' menu.
          ~ Release of 0.5 ~

09/21/04 - %gayfer.file is once again unset properly, I forgot to
          uncomment that..
          The 'selector' line in 'Bookmark info' actually works now.
          ~ Release of 0.5.1 ~

10/10/04 - Don't try to download the Error ItemType (3)
          Better checking for invalid Menus.
          Better support for w/h ItemTypes with GET selectors, I
          hope.  Another one-up on HGopher.
          Begin to use MonoTek's _numtok snippet (renamed to
          g.numtok) because mIRC's $numtok can make Gayfer unhappy.

10/11/04 - If 'h' ItemType doesn't have a selector, assume it is a
          URL and ask to run it.  ~Another~ thing HGopher fails on.
          I begin to wonder, if all these little patches are really
          a good idea. ;)
          If you know how to set up mIRC's DDE, you can use
          mIRC/Gayfer as your default app for gopher protocol!  A
          basic DDE message would be "/gayfer -url %1", without
          quotes.  Ahh, the convenience of clicking gopher:// links.
          Only the menu (DIR) ItemType is recognised, so far.  This
          is going to require a lot of rewriting.
          ~ Release of 0.6 ~

10/12/04 - Some improvements to the copy function.

10/13/04 - HUGE changes.  Gayfer now operates (menus, FullText search
          and files by gopher:// links, and also creates these links
          from selectors.  Old bookmarks won't work anymore.  This
          means that any fully-qualified gopher:// link will run
          from the command line (or from your browser, if your
          browser will pass gopher links to the system!)  Also you
          can just "/gayfer %1" in the DDE settings now.
          Using g.gettok in places, instead of gettok to parse URLs
          now.

10/15/04 - Send 'h' items with GET/ or GET / selectors to the browser
          instead of trying to implement HTTP in Gayfer.  If an 'h'
          document called GET is actually on the gopher server,
          there will be problems.  I'm doing this because although
          tricking both your gopher client and the web server by
          using "GET /" selectors is a cool idea, it won't work for
          every HTTP server.  And if a webpage downloaded in that
          manner doesn't use fully-qualified URLs for its navigation
          you'll be going nowhere.
          CSO PB output is more attractive but won't copy perfectly.

10/16/04 - Gayfer now stores the info text of items in its history,
          in addition to links.  Currently I've got this new info
          hooked into the titlebar, but that will probably change
          once I start losing my place in selectors ;)  The info
          text is stored by using $chr(1) as a delimiter, if an
          actual selector uses $chr(1) there will be problems.
          * History shows the info text, or the URL if history text
            doesn't exist.

          [*] At this point I got bored and quit..

11/19/04   ~ Release of 0.7 ~ (unfinished)

09/11/05 - Yesterday I brushed the dust off this to make a few minor
          improvements.  I discovered a bug in the search URL parser
          so I rewrote the search function, made more improvements
          today which involved re-writing yesterday's code.
          The URL parser now takes hex-encoded tabs and whitespace
          in URLs, so if you're using mIRC's DDE/registry stuff to
          run gopher:// links all you have to have is /gayfer %1.
          I also did a bit of work to the titlebar display to show
          encoded tabs/spaces in URLs.

09/12/05 - Close the menu socket before going to a new URL (Moved
          this code from the menu UI to g.m.init.

09/18/05 - Started multi-connections for transfers, and transfer UI.

10/04/05 - Got transfers working again (not fully linked to UI).

10/06/05 - Continuing work on file transfer, prompts to save file.
          Started linking the UI: new file, delete buttons work. The
          stop button ends the active transfer, but isn't dynamic.
          Menu transfer data isn't shown in the titlebar for now but
          will be re-added.
          Renamed the script from Gayfer to GopherJ in anticipation
          of a major release.

10/07/05 - File transfer UI: A finished transfer will now show a
          'Retransfer' button instead of 'run'.  Files can be run by
          double-clicking a filename in the listbox.
          Fixed the 'Go' popup (should work for all itemtypes).

10/08/05 - Got a tentative fix for the '.CR-LF in transfers'
          bug.  It stops writing the file if 'LF.CR-LF', 'CR.CR-LF',
          or 'LF.LF' is received, and also removes the matching CRLF
          string.  It is only used for text transfer.
          Default for GET/ selectors is now http:// in the warning.
          ~ Release of 1.0 ~

10/09/05 - Fixed a stupid typo in the 10/08 bugfix.
          Added an on EXIT event to clean up variables, if mIRC is
          closed while GopherJ is still open.

10/10/05 - Added 'Uninstall' and 'Readme' items to the main popup.
          Added an on UNLOAD event for the uninstall popup.
          Added a 'Refresh' item to the client popup.

10/11/05 - F5 re-fetches the current gopher menu.
          ESC cancels the current menu/CSO PB transaction.
          Moved most of the on SOCKCLOSE code to alias g.sockclose.
          CTRL+left or Backspace will navigate the history.
          CTRL+T will add the current page to bookmarks.

10/13/05 - Don't open the transfer window on the desktop if 'Use
          desktop windows' is disabled.
          Added g.m.close to the EXIT event.