Current Features present in Zipper! as of 7/10/98

IRC Commands Supported:

	/action		: send an action to a channel
	/alias 		: create command aliases 
	/ban   		: ban a user from a channel
	/chat  		: initiate a DCC chat with another user
	/chef		: "Encheferize" output
	/clone 		: create a clone of zipper to connect to another server
	/ctcp  		: send a CTCP message to another user
	/describe	: sends a /action to a user
	/disconnect	: disconnects you from and IRC server
	/echo		: echo a string to the server window
	/edit		: edit system settings
	/exec		: execute a command line function
	/flood		: change inbound flood protection settings
	/ignore		: ignore a user
	/irccommand	: execute a string as an IRC command
	/join 		: join a channel
	/kick		: kick a user from a channel
	/list		: get a channel list from the IRC server
	/load		: load customized settings
	/me		: a synonym for /action
	/mode		: set user/channel modes
	/modify		: activate list editing
	/msg		: send a private message to another user
	/names		: get a list of nicks on a channel
	/nick		: change your nickname
	/notice		: send a notice
	/notify		: add or remove a notify list entry
	/part		: leave a channel
	/play		: play a file to a channel (unimplemented)
	/query		: open a private message window for another user
	/quit		: exit IRC
	/quote		: send a string directly to the server
	/recycle	: reload the current user settings
	/rctcp		: generate a CTCP reply string
	/save		: save current settings
	/say		: send a message to a window as if typed
	/script		: execute an irc script
	/server		: change servers
	/send		: send a file to someone via DCC
	/set		: set a user variable
	/source		: "source" a TCL or TK script
	/timer		: set a timer to execute a command
	/topic		: set the channel topic
	/whois		: get information about a user
	/who		: get a list of users

	There are also a number of alias predefined for some of these commands.  Issue a "/alias"
	command to see the current list OR "/edit alias" will also work.


Unsupported or Unlisted Commands:

	IRC commands which are not listed may or may not be fully supported depending on the 
	nature of the command.  The command processor attempts to locate the command internally,
	failing that, it looks for an alias, failing that, the command is passed directly
	to the server as-is.


	
User List
	
	Zipper! supports the notion of leveled users.  That is a user may be assigned a certain
	level and as such may be entitled to priviledges encoded within Zipper!  Users are 
	defined by a level and a user@host type notation that conforms to the user@host system
	in use by the IRC servers.

Server List

	Zipper! currently supports a small server list comprised of the the server name and port 
	number.  Grouping may be added later

Channel List

	Zipper! supports a user definable "frequent" channels list.

Notify List

	Zipper! supports a user definable notify list which can be accessed by either the /notify
	command or by the notify list editor.

Ignore List
	Zipper! supports an ignore list system that is accessible via the /ignore command
	or the ignore list editor.  The ignore list supports variable ignorance...meaning
	that you can selectively the messages a user sends.  Ignore supports channel, private
	message, notice and CTCP messages.

URL List
	Zipper! supports a URL Capture system and internal list manager.  Double clicking
	a list entry launches the URL if you have a browser configured.  At this time
	browser support is spotty at best.  Look for this to improve


CTCP
	CTCP's are implemented as a COMPLETELY user definable system.  Normal CTCP events are
	already included with the default resource files.
	The CTCP system is accessible via the CTCP editor.  CTCP's support user level,
	and Nickname and channel triggering.  

	Once triggered an action is executed.
	Action which are listed as #internal are handled by code within Zipper!

Events

	Zipper! supports IRC server event triggering.  Events like CTCP's are user definable.
	Currently Zipper! supports the following events:

		ban		: a user gets banned from the channel
		chanmsg		: any message is sent to a channel
		deop		: someone is De-Opped
		join		: someone joins a channel
		kick		: someone is kicked from a channel
		part		: someone leaves a channel
		mode		: a channel mode is changed
		nick		: a nickname is changed
		notify		: someone on your notify list joins IRC
		op		: somone is opped
		privmsg 	: you get a private message
		quit		: someone quits IRC
		sound		: a sound is played
		nosound		: you don't have a particular sound
		topic		: a channel topic is changed
		unban		: someone is unbanned from a channel

	When the events are triggered, the following information (if applicaple) is made available:
		
		User Level 	: the level of the user triggering the event
		Channel		: the channel where the event was triggered
		Nick/User	: the nickname/userhost of the user triggering the event
		target		: the target of the event



Script Actions (For Alias, CTCP, Event)

	The file "startup.zipper" located in the resource directory
	can be used to set automatically execute multiple irc commands
	at the time the user connects to the server.

	The scripting system built into Zipper! is not a robust programming
	language nor was it intended to ever be.  It is provided as a method
	to do quick and simple everyday IRC tasks.  More complex functions
	can be achieved by using a combination of internal and extern
	TCL scripts.  Functions and commands are provided to allow you
	to do this.

	Actions support variable and function substition.
	Actions also support multiple commands per LINE separated by " ; "

	A script action is any irc command or commands (/command)
	Actions may contain variable information or information obtained
	by executing functions. TCL commands may also be used but in this 
	case you would use "{" to start the command and "}" to end it.

	There are 2 types of variables, system variables, and user variables.
	System variables are those which are made available as IRC runs and 
	contain various informtation about who set off CTCPs Events and so 
	forth.  They also are used to access parameters given by the user, or
	by triggered commands.  They are accessed by using the "-$name" notation.

	User varibles are created and set by the user as IRC is running and
	are independent of ANY other variables.  They are accessed by using the 
	"-%name" notation.


	A set of simple functions are included to make things easier.  Zipper! 
	however is intended not to include a rich set of internal functions, but
	rather to make functions available by using external scripts and programs.
	included are a few TCL scripts to perform some useful and some useless
	functions, but mainly are for use a guide.  They are accessed by using the
	"-@" notation.


	Current System Variable List:
		fromchannel	: channel triggered from
		fromnick	: nickname of user that caused trigger
		fromuser	: userhost of user that caused trigger
		hostname	: your host name
		ip		: your IP address
		level		: level of user that caused trigger
		line		: all paramaters associated with a trigger
		myuserhost	: my user@host
		nick		: my nickname
		parm1-6		: user or triggered parameters
		port		: server port
		realname	: my realname
		server		: IRC server
		username	: my username
		version		: Zipper! version
	
		In normal aliases, CTCP's, and events, fromchannel, fromnick, level, parm1-6 are
		generally the only variables needed.

		In the case of events, parm1-6 is generally additional information other
		than the identity and location of the person that triggered the event.
	
		In cases where there is a target, the target(s) will be contained in the "parm(s)"
		
		In the case of aliases, parm1-6 is defined by the user on the command line
		
		In the case of CTCP's, parm1-6 contain the first 6 words of the CTCP command, $line
		can be used to access ALL of the words and to send them to an external
		program if they are needed.


		Note that the 6 parameter limitation MAY be removed in the future if warranted.




	Current System Functions:

		add 		: add 2 numbers or variables together (numeric only)
		chanlist	: retrieve the list of people currently on a channel
		date		: access the current date	
		level		: get the level of a user
		longip		: convert the parameter to a DCC style ip notation
		none		: do nothing
		rtime		: get the time in CTCP PING format
		run		: run an external program and return its result
		shortip		: Convert DCC style ip notation to regular
		sub		: subtract 2 numbers or variables
		tcl		: execute an internal TCL function in the personal.tcl file
		time		: access the current time
		window		: access the name of the current active window




	Special Notes on functions, scripts, and variables:

		ALL variables must be "clean."  That is there must be at least 1 space
		both before and after the variable name.  This is because of the method
		used for processing commands.  

		ALL functions must be "clean" of whitespace.  This means that you cannot
		embed spaces or tabs into functions at this time.   This limitation may be
		removed in the future.  As a work-around, you can "/set" a variable
		first, then send it into the function.	


DCC CHAT and SEND

	Zipper! includes the ability to perform DCC CHAT and File Transfers.  
	The CHAT option is integrated into the standard window system.  
	DCC File transfers are actually handled by external programs,
	but are still fully functional.  Zipper! does not at this time
	support the mIRC RESUME feature.  The transfer system still needs
	to be cleaned up a bit in its display, otherwise it should work
	fine.


Channel Activity Indicator

	The button bar  Window, will indicate when there has been activity
	in a window that is minimized or is not currently focused on.  
	The Red Title indicates that there is a new message waiting there.
	Also any minimized windows that have waiting messages will indicate
	this by the icon image.


Sounds, Pictures, Programs, and Directorys

	Zipper! the ability to automatically display/play/open files 
	which are DCC received.  The Application Directory, and Applications
	variables control this.  The format is a "comma" seperated list
	of the form "extention=application" or "extension=directory". 
	This controls what application to open the file.  The directory
	is used mainly for playing back sounds.  
