% makeindex < aebpro_man.idx > aebpro_man.ind \documentclass{article} %\usepackage[fleqn]{amsmath} \usepackage[ web={centertitlepage,designv,tight, forcolorpaper,latextoc,pro},%usesf, eforms,aebxmp ]{aeb_pro} %\usepackage{multicol} \usepackage{array} \usepackage[altbullet]{lucidbry} \usepackage[shortcount,longcount]{cntdwn} %\usepackage[usecmtt]{myriadpro} %\DeclareInitView %{% % layoutmag={mag=100}, %% windowoptions={fit} %} \usepackage{makeidx} \makeindex \usepackage{acroman} \usepackage[active]{srcltx} \def\expath{../examples} \urlstyle{rm} %\def\tutpath{doc/tutorial} %\def\tutpathi{tutorial} \DeclareDocInfo { university={\AcroTeX.Net}, title={The \texorpdfstring{\textsf{cntdwn} Package\\[1em]}{: } Creating short and long countdowns}, author={D. P. Story}, email={dpstory@acrotex.net}, subject={Creating short and long countdowns}, talksite={\url{www.acrotex.net}}, version={1.0}, keywords={countdown timer}, copyrightStatus=True, copyrightNotice={Copyright (C) \the\year, D. P. Story}, copyrightInfoURL={http://www.acrotex.net} } \def\dps{$\hbox{$\mathfrak D$\kern-.3em\hbox{$\mathfrak P$}% \kern-.6em \hbox{$\mathcal S$}}$} \universityLayout{fontsize=Large} \titleLayout{fontsize=LARGE} \authorLayout{fontsize=Large} \tocLayout{fontsize=Large,color=aeb} \sectionLayout{indent=-40pt,fontsize=large,color=aeb,afterskip=1sp} \subsectionLayout{indent=-20pt,color=aeb,afterskip=1sp} \subsubsectionLayout{indent=0pt,color=aeb,afterskip=1sp} \subsubDefaultDing{\texorpdfstring{$\bullet$}{\textrm\textbullet}} \newenvironment{eqComments}[1][\strut]{\smallskip\leftskip-\labelwidth \item[]\textbf{\textcolor{blue}{#1}}}{\par\smallskip} %-------------------- \setShortCntDwn{Timer1}{% length=1*\minutes, notify1=45*\seconds, notify2=30*\seconds, notify3=15*\seconds } \setLongCntDwn{NewYearsLocal}{% date=2011/01/01, time=00:01:00, } \setLongCntDwn{NewYearsCET}{% date=2011/01/01, time=00:01:00, tzoffset=+0100 } \setClockTimer{LocalClock}{} \setClockTimer{CESTClock}{tzoffset=+0200} %-------------------- %\pagestyle{empty} \parindent0pt\parskip\medskipamount \definePath\bgPath{"C:/Users/Public/Documents/ManualBGs/Manual_BG_Print_AeB.pdf"} \begin{docassembly} \addWatermarkFromFile({ bOnTop:false, cDIPath:\bgPath }); \executeSave(); \end{docassembly} \begin{document} \maketitle \selectColors{linkColor=black} \tableofcontents \selectColors{linkColor=webgreen} \section{Introduction}\label{s:intro} The \textsf{cntdwn} package provides two types of countdowns, short and long. \begin{itemize} \item A short countdown, accessed through the \texttt{shortcount} option, is a countdown (or count-up) that is for a relatively short time period (less than a day). Such a countdown is designed for a talk (or presentation). \item A long countdown, accessed through the \texttt{longcount} option, is a countdown to a distant event, perhaps many days or even years in the future. \item As a bonus of long countdown, a clocks can be defined for local or time zones. \end{itemize} Each type of countdown (clocks excepted) has several events: (1) the main event, which is the target of the countdown; (2) pre-events, events that occur \textit{before} the occurrence of the main event; and (3) post-events, events that occur \textit{after} the occurrence of the main event. Each event occurs at a definable instant in time, and may have a (JavaScript) action associated with the event. \section{Requirements and Sample files} The \textsf{cntdwn} requires the \textsf{eforms} package, part of AeB (the {\AcroTeX} eDucation Bundle), and, of course, the \textsf{hyperref} package. The PDFs need to be viewed in Adobe Reader (or Acrobat), not some other nonconforming PDF viewer that does not support document level JavaScript. Basic examples are provided in the \texttt{examples} folder; advanced examples can be found, in time, on my \href{http://www.math.uakron.edu/~dpstory/aebblog.html}{{\AEB} Blog} site, \url{http://www.math.uakron.edu/~dpstory/aebblog.html}. \section{The short countdown}\label{s:short} To input the code for the short count, type either\\[6pt] \hspace*{20pt}\verb!\usepackage{cntdwn}! or \verb!\usepackage[shortcount]{cntdwn}!\\[6pt] in the preamble. We begin with an example of the default behavior of a short countdown:\\[6pt] \hspace*{20pt}\cntdwnDisplay{Timer1}{.5in}{11bp} \cntdwnStartT{Timer1}{11bp}{11bp} \cntdwnPauseT{Timer1}{11bp}{11bp} \cntdwnStopT{Timer1}{11bp}{11bp}\\[6pt] To start the countdown, press the Start button (the second form field from the left). The left-most field is a text field, the others are buttons. The original idea behind this behavior was that this seemed a nice way to do a count for a talk: (1) at a preselected time (45 seconds in this example) the first button would turn green indicating to the speaker that time is running out; (2) a little later, the second notification signal appears, a yellow button (at 30 seconds); at a third notification time, the third button starts blinking red (at 15 seconds), this tells the speaker to wrap it up; (4) finally, at the end of the defined length of the timer, the third button stops blinking indicating that the speaker's time is up. The buttons also play roles as controls over the counter, the three buttons are \textbf{Start}, \textbf{Pause}, and \textbf{Stop}. The user can press the \textbf{Pause} button to pause the count (without taking away from his/her time), then restart it by pressing the \textbf{Start} button. The code for the above countdown consisted to two sets of lines. In the preamble, we find, \begin{verbatim} \setShortCntDwn{Timer1}{% length=1*\minutes, notify1=45*\seconds, notify2=30*\seconds, notify3=15*\seconds } \end{verbatim} This defines a timer name \texttt{Timer1}, with key-value pairs give above. The length of the countdown is 1 minutes, following by the defining of three notification times. The mean of these key-values is clear in light of the above example. The second line of code is the laying down of the timers themselves. \begin{verbatim} \cntdwnDisplay{Timer1}{.5in}{11bp} \cntdwnStartT{Timer1}{11bp}{11bp} \cntdwnPauseT{Timer1}{11bp}{11bp} \cntdwnStopT{Timer1}{11bp}{11bp} \end{verbatim} The first argument of each is the name of the timer to use, \texttt{Timer1}, in this case. All of these form fields are optional; if none is included in the document, the timer ticks away silently.\footnote{Why would anyone do this, you might ask?} \subsection{Using \texorpdfstring{\protect\cs{setShortCntDwn}}{\CMD{setShortCntDwn}} in the preamble} For each short countdown timer, the \cs{setShortCntDwn} must be used to define the properties of the timer. \begin{dCmd*}{.6\linewidth} \setShortCntDwn{}{} \end{dCmd*} \CmdDescription The command defines the properties of the countdown. Internally, the command defines macros \cs{seconds}, \cs{minutes}, and \cs{hours}. For key-value pairs that take a time as its value, use these commands to define the time value, for example, 20~minutes should be denoted \texttt{20*\cs{minutes}} (use \texttt{*} for multiplication); for 1~minute and 30~seconds, you can type either \texttt{1*\cs{minutes}+\texttt{30*\cs{seconds}}} or, alternatively, \texttt{1.5*\cs{minutes}}; and so on. \PD The first parameter \texttt{} is a name you assign the timer. The name must be unique among all timer names defined in the document. The second parameter consists of key-value pairs, described below. \KVP The second parameter takes several key-value pairs. \begin{itemize} \item \texttt{length}: The length of the countdown, the default is 20 minutes. (\texttt{20*\cs{minutes}}) \item \texttt{stopwatch}: A Boolean, which if \texttt{true}, the counter counts up, like a stopwatch; he default is \texttt{false}, in this case the counter counts down. If stopwatch is not in the list of parameters, the counter counts down. \item \texttt{onfinish}: A choice key that determines the behavior of the counter when it reaches the main time event. Possible values are \texttt{stop} (the default) and \texttt{continue}. If \texttt{onfinish=continue}, the clock continues to count even after the main time has been attained. \item \texttt{endmsg}: When the timer reaches the main time event, the default behavior of the timer is to write a message to a text field created by the \cs{cntdwnEndTarget} command. The default message is ``This ends the Presentation, any questions?'' This message can be changed for this timer using the \texttt{endmsg} key. To globally change the message, redefine the command \cs{cnddwnDefaultEndMsg}. The redefinition of this command must occur before the expansion of any \cs{setShortCntDwn} command. \end{itemize} The next three keys take time as a value. Use the special macros \cs{hours}, \cs{minutes}, and \cs{seconds}, as explained above. \begin{itemize} \item \texttt{notify1}: The first notification time; the time before/after the main time event. The time is a prior time if the counter is counting down; and is a post time if the counter is counting up (\texttt{stopwatch=true}). The default is \texttt{5*\cs{minutes}}. \item \texttt{notify2}: The second notification time; the time before/after the main time event. The time is a prior time if the counter is counting down; and is a post time if the counter is counting up (\texttt{stopwatch=true}). The default is \texttt{3*\cs{minutes}}. \item \texttt{notify3}: The third notification time; the time before/after the main time event. The time is a prior time if the counter is counting down; and is a post time if the counter is counting up (\texttt{stopwatch=true}). The default is \texttt{1*\cs{minutes}}. \end{itemize} If \texttt{stopwatch=false}, the default, the counter is counting down to the main time event (at time 0 seconds); in this case \texttt{notify1 > notify2 > notify3}. If \texttt{stopwatch=false}, the counter is counting up to the main time event (at time \texttt{length}); in this case \texttt{notify1 < notify2 < notify3}. If these restrictions are not met, the timer and notification may not be as expected. The next four keys concern the actions that are taken at the four notification times (\texttt{notify1}, \texttt{notify2}, \texttt{notify3}, and the main time event). These actions are in the form of JavaScript functions, which may be re-defined by the document author to obtain custom behaviors. \begin{itemize} \item \texttt{event1}: A JavaScript function (which the document author can create) to handle the first notification event. The default event turns the \textbf{Start} button green and causes a beep to sound. \item \texttt{event2}: A JavaScript function (which the document author can create) to handle the second notification event. The default event turns the \textbf{Pause} button yellow and causes a beep to sound. \item \texttt{event3}: A JavaScript function (which the document author can create) to handle the third notification event. The default event causes the \textbf{Stop} button to blink red and causes a beep to sound. \item \texttt{endEvent}: When main time is reached (time 0 or \texttt{length}), this function turns the \texttt{Stop} button to solid red (non-blinking), and writes a message to the text field created by the command \cs{cntdwnEndTarget}. \item \texttt{startcolor}: The color used by the default \texttt{event1} function to color the \textbf{Start} button. The color is a JavaScript color; the default is \texttt{color.green}. \item \texttt{pausecolor}: The color used by the default \texttt{event2} function to color the \textbf{Pause} button. The color is a JavaScript color; the default is \texttt{color.yellow}. \item \texttt{stopcolor}: The color used by the default \texttt{event3} and \texttt{endEvent} functions to color the \textbf{Stop} button. The color is a JavaScript color; the default is \texttt{color.red}. \item \texttt{autorun}: A Boolean that determines whether the count begins when the page containing the counter is opened. The default is \texttt{false}. \item \texttt{refreshrate}: The refresh rate of the counter, the default is 1000 (milliseconds). \end{itemize} \subsection{Commands that go in the body} The main field for the counter is \cs{cntdwnDisplay}, and it has three supporting fields \cs{cntdwnStartT}, \cs{cntdwnPauseT}, and \cs{cntdwnStopT}. \begin{dCmd*}{\linewidth} \cntdwnDisplay[]{}{}{} \cntdwnStartT[]{t_name}{}{} \cntdwnPauseT[]{t_name}{}{} \cntdwnStopT[]{t_name}{}{} \end{dCmd*} \PD The first optional parameter is used to change the appearance of the fields (these fields use the \textsf{eforms} package). The second parameter is the name of a timer (\texttt{}) that has already been defined by \cs{setShortCntDwn}. The last two parameters sets the width and height of the form fields. \CmdDescription All four of these fields are optional (no JavaScript exceptions are thrown if they do not exist). \cs{cntdwnDisplay} show the countdown of the timer; \cs{cntdwnStartT} is the start button, \cs{cntdwnPauseT} is the pause button, and \cs{cntdwnStopT} is the stop button. The capital letter \texttt{T} indicates that these buttons are the \texttt{T}arget of the default event functions. Below, we describe non-target start, pause, and stop buttons. When the timer reaches it main time event (time 0 for a countdown clock, and time \texttt{length} for a count-up clock), the default endEvent writes message to the multiline text field created by \cs{cntdwnEndTarget}. \begin{dCmd*}{\linewidth} \cntdwnEndTarget[]{t_name}{}{} \end{dCmd*} \PD The four parameters are the same as described above for the \cs{cntdwnDisplay} field, for example. This field is optional, if it does not exist, no exception is thrown.\footnote{Actually, an exception is thrown, but it is ``caught'' so no harm is done.} The \textsf{cntdwn} package also provides three form field buttons for starting, pausing, and stopping the target count. The parameters are the same as those of the `\texttt{T}' counterparts. \begin{dCmd*}{\linewidth} \cntdwnStart[]{t_name}{}{} \cntdwnPause[]{t_name}{}{} \cntdwnStop[]{t_name}{}{} \end{dCmd*} \section{The long countdown}\label{s:long} A long countdown is one where the main countdown event is in the distant future. Since a short countdown is designed for less than one day, a long countdown is for times greater than a day. As an example, let us countdown to New Year's Day, which is 1~second after midnight.\\[6pt] \hspace*{20pt}\lcntdwnDisplay{NewYearsLocal}{3.5in}{11bp}\\[6pt] This countdown is in \emph{local time}. No matter where you are in the world, in whatever time zone, the countdown reflect the time until your New Year's Day. The time until my friend J\"{u}rgen celebrates New Year's Day is shown below:\\[6pt] \hspace*{20pt}\lcntdwnDisplay{NewYearsCET}{3.5in}{11bp}\\[6pt] Note that there is a difference in the count between the two counters, probably in the hour position; this is due difference between his timezone offset, and yours. This counter gives the time until my friend celebrates the New Year; it should read the same throughout the world, for he celebrates at a unique time in the world. As with the short countdown, to obtain such clocks we must set the clocks parameters in the preamble (using the \cs{setLongCntDwn} command), and place the countdown clock anywhere we like in the body of the document (using \cs{lcntdwnDisplay}). In the preamble, we have \begin{verbatim} \setLongCntDwn{NewYearsLocal}{% date=2011/01/01, time=00:01:00, } \setLongCntDwn{NewYearsCEST}{% date=2011/01/01, time=00:01:00, tzoffset=+0100 } \end{verbatim} The first one sets the parameters of the local clock. The \texttt{date} and \texttt{time} are specified in the obvious way. We set the counter to run and pause automatically. The parameters for the Central European New Year clock are the same, with one exception; I've included a value for the \texttt{tzoffset} key (time zone offset), this is \texttt{+0100} (in Germany during the Winter). In the body of the document, we place the countdown clocks, \begin{verbatim} \lcntdwnDisplay{NewYearsLocal}{3.5in}{11bp} ... \lcntdwnDisplay{NewYearsCET}{3.5in}{11bp} \end{verbatim} As with the short count, we reference the counter parameters through the name of the counter, as defined using \cs{setLongCntDwn}. \subsection{Using \texorpdfstring{\protect\cs{setLongCntDwn}}{\CMD{setShortCntDwn}} in the preamble} For each long countdown timer, the \cs{setLongCntDwn} must be used to define the properties of the timer. \begin{dCmd*}{.6\linewidth} \setLongCntDwn{}{} \end{dCmd*} \CmdDescription The command defines the properties of the countdown. Internally, the command defines macros \cs{seconds}, \cs{minutes}, \cs{hours}, \cs{weeks}, and \cs{years}. For key-value pairs that take a time as its value, use these commands to define the time value, for example, 20 minutes should be denoted \texttt{20*\cs{minutes}} (use \texttt{*} for multiplication); for 2 weeks and 3 days, you can type either \texttt{2*\cs{weeks}+\texttt{3*\cs{days}}} or \texttt{13*\cs{days}}; and so on. \PD The first parameter \texttt{} is a name you assign the timer. The name must be unique among all timer names defined in the document. The second parameter consists of key-value pairs, described below. \KVP The second parameter takes several key-value pairs. \begin{itemize} \item \texttt{date}: The date of the event. The value of the \texttt{date} key has the form \texttt{YYYY/MM/DD}. If \texttt{date} key is not specified then the default date of \texttt{1970/01/01} is used and a warning message is written to the log. Valid variations on the \texttt{date} key are \texttt{YYYY} (in which case the default month and day values are used, \texttt{YYYY/01/01}, and \texttt{YYYY/MM} (again, the default day is used \texttt{YYYY/MM/01}). Year must be specified with four numbers, and the month and day with two numbers. (The first month is 01.) \item \texttt{time}: The time of the event on the specified date. The format for the value of time is \texttt{HH:mm:SS} (hours, minutes, seconds). All time components are specified with two digits, if specified at all. The default value of \texttt{00} is taken for any missing component. If no \texttt{time} is specified then \texttt{00:00:00} is used; if \texttt{HH} only is specified, then the value for time is \texttt{HH:00:00}; if \texttt{HH:mm} is specified, then the value of time is \texttt{00:mm:00}. \item \texttt{tzoffset}: The time zone offset of the time of the event. If \texttt{tzoffset} is not specified, then time is interpreted as local time. The format for \texttt{tzoffset} is \texttt{Z|OHHmm}, where \texttt{Z} means that local time is equal to UT (Universal Time). For the \texttt{OHHmm} pattern, the \texttt{O} is \texttt{+} (plus) or \texttt{-} (minus); a \texttt{+} (plus) means that local time is later than UT, and a \texttt{-} (minus) means that local time is earlier than UT. For example CST (Central Standard Time) is \texttt{-0600} while CET (Central European Time) is \texttt{+0100}. See \url{http://www.timeanddate.com} for time zone information. \texttt{HH} is the number of hours offset from UT and \texttt{mm} is the number of minutes (some time zones are measured in hours and minutes, for example, Australian Central Standard Time is \texttt{+0930}). \item \texttt{refreshrate}: The refresh rate of the counter, the default is 1000 (milliseconds). \item \texttt{autorun}: A Boolean that determines whether the count begins when the page containing the counter is opened. The default is \texttt{true}. \item \texttt{autopause}: A Boolean that determines whether the count is paused when the page containing the counter is closed. The default is \texttt{true}. \item \texttt{autorunenabled}: A Boolean that enables the \texttt{autorun} feature. The default value of this key is \texttt{true}. The purpose of this key-value is to turn off \texttt{autorun} dynamically (through JavaScript). The timer object that keeps all timer information has a key named \texttt{bAutorunEnabled}. If the name of the timer is \texttt{MyTimer}, and you execute \texttt{\_oMyTimer.bAutorunEnabled=false}, the timer, if already paused, \emph{will not start} (automatically) when the page containing the timer is opened again. For an example of usage, see the file \texttt{armistice\_day.pdf}, titled ``The cntdwn Package: Handling Notification Events for the Long Countdown Timer, Remembrance Day,'' available on the \href{http://www.math.uakron.edu/~dpstory/aebblog.html}{AeB Blog site}. \item \texttt{notify1}, \texttt{notify2}, \texttt{notify3}: Leading up to the main time event are three \emph{pre-events} that occur at times \texttt{notify1 > notify2 > notify3} \emph{before} the main event. These are the first, second, and third notification event times. The times are relative to the main event, so if \texttt{notify1=1*\string\weeks}, then the first notification event occurs 1 week \emph{before} the main event. \item \texttt{notify5}, \texttt{notify6}, \texttt{notify7}: Following the main time event are three \emph{post-events} that occur at times \texttt{notify5 < notify6 > notify7} \emph{after} the main event. These are the fifth, sixth, and seventh notification event times.\footnote{You may ask about the fourth notification event, that event is the main time event, the event that occurs when the countdown reaches 0.} The times are relative to the main event, so if \texttt{notify5=5*\string\hours}, then the fifth notification event (the first after the main event) occurs 5 hours \emph{after} the main event. \item \texttt{eventhandler}: When the timer reaches any of the seven notification times, a event handler function is launched, the default function is \texttt{\_NoOpt}. The \texttt{\_NoOpt} does nothing. The document author ca define his/her own event handler using this key. An event handler should take three parameters \texttt{doc}, \texttt{cTimer}, and \texttt{nEvent}. Use the \texttt{insDLJS} environment to define your custom handler. A very simple example is \begin{verbatim} \begin{insDLJS}[myEventHandler]{dps}{My Event Handlers} function myEventHandler (doc,cTimer,nEvent) { console.show(); console.println("Event number " + nEvent + " just occurred); } \end{insDLJS} \end{verbatim} and type \texttt{eventhandler=myEventHandle} as part of the key-values of \cs{set\-Long\-Cnt\-Dwn}. \item \texttt{endtimecolor}: When main time event is reached (0 seconds), the color of the display is changed to the JavaScript color determined by this key. The default is \texttt{color.red}. \item \texttt{displayfunc}: This JavaScript function displays the count; the default display function is \texttt{\_defaultLDisplayFunc}, it takes parameters\vspace{3pt} \begin{Verbatim}[fontsize=\small] function _defaultLDisplayFunc(f,nYears,nDays,nHours,nMinutes,nSeconds) \end{Verbatim} where \texttt{f} is the field object of the display field, the meaning of the other parameters is obvious. The default display function uses the strings year, years, day, days, hours, hour, minutes, minute, seconds, second. For localization of these strings, the document author may redefine the commands \begin{dCmd*}{.6\linewidth} \newcommand{\cntdwnYear}{year} \newcommand{\cntdwnYears}{years} \newcommand{\cntdwnDay}{day} \newcommand{\cntdwnDays}{day} \newcommand{\cntdwnHour}{hour} \newcommand{\cntdwnHours}{hours} \newcommand{\cntdwnMinute}{minute} \newcommand{\cntdwnMinutes}{minutes} \newcommand{\cntdwnSecond}{second} \newcommand{\cntdwnSeconds}{seconds} \end{dCmd*} \item \texttt{onfinish}: A choice key that determines the behavior of the counter when it reaches the main time event. Possible values are \texttt{stop} and \texttt{continue} (the default). If \texttt{onfinish=stop}, the clock stops the count when main event time is attained (when the timer reaches 0 seconds). \item \texttt{endmsg}: When the timer reaches the main time event and \texttt{onfinish=stop}, the default behavior is to write a message to a text field created by the \cs{lcntdwnDisplay} command. The default message is ``The time has expired.'' This message can be changed for this timer using the \texttt{endmsg} key. To globally change the message, redefine the command \cs{lcnddwnDefaultEndMsg}. The redefinition of this command must occur before the expansion of any \cs{setLongCntDwn} command. \end{itemize} \subsection{Commands that go in the body} In the body of the document there are several commands used with the long countdown timer. \begin{dCmd*}{\linewidth} \lcntdwnDisplay[]{}{}{} \end{dCmd*} \CmdDescription The command creates a text field that holds the current countdown. \PD The first optional parameter is used to change the appearance of the field (these field use the \textsf{eforms} package). The second parameter is the name of a timer (\texttt{}) that has already been defined by \cs{setLongCntDwn}. The last two parameters sets the width and height of the form fields. \begin{dCmd*}{\linewidth} \lcntdwnToggle[]{}{}{} \end{dCmd*} \CmdDescription The command creates a push button field that is used to toggle the count on and off (start and pause). Normally, this button is not needed, but there may be situations that it may be useful. \PD The first optional parameter is used to change the appearance of the field (these field use the \textsf{eforms} package). The second parameter is the name of a timer (\texttt{}) that has already been defined by \cs{setLongCntDwn}. The last two parameters sets the width and height of the form fields. \newtopic For example, the button \kern1bp\lcntdwnToggle{NewYearsLocal}{11bp}{11bp}\kern1bp \lcntdwnDisplay{NewYearsLocal}{2.5in}{11bp}\space\kern1bp will toggle the New Years Day counter. The verbatim listing is as follows: \begin{Verbatim}[fontsize=\small] For example, the button \lcntdwnToggle{NewYearsLocal}{11bp}{11bp}\kern1bp \lcntdwnDisplay{NewYearsLocal}{2.5in}{11bp} will toggle the New Years Day counter. \end{Verbatim} \subsection{The clock timer} I was just getting to wrap up this package, when I decided that it wouldn't be too much trouble to define clock timers. I include the code in as part of the \texttt{longcount} option because the code for the clock is derived from the \texttt{longcount} count. Multiple clocks can be activated at once, both clocks in the local time zone, as well as other time zones, as shown below. \begin{tabular}{rcc} &\textbf{Time}&\textbf{Date}\\[3bp] Local Time:& \cntdwnclocktime{LocalClock}{1in}{11bp}& \cntdwnclockdate{LocalClock}{1in}{11bp}\\[3bp] CEST:& \cntdwnclocktime{CESTClock}{1in}{11bp}& \cntdwnclockdate{CESTClock}{1in}{11bp}% \end{tabular} \newtopic\textbf{Note:} You can specify the time zone you want your clock to function in, there is, however, no way to automatically adjust time zone when there is a change from standard to/from summer time.\footnote{The statement has limited truth to it. If the dates are known when a given time zone changes UT offsets (between standard and summer/daylight savings time), you can write some JavaScript to make this adjustment dynamically. The problem is the dates/times may change from year to year. The ultimate solution is have access to a time/date database/server.} For these two clocks, we need to execute the command \cs{setClockTimer} in the preamble. \begin{verbatim} \setClockTimer{LocalClock}{} \setClockTimer{CESTClock}{tzoffset=+0200} \end{verbatim} The first parameter is the name of the clock and the second takes key-value pairs. For the \texttt{LocalClock}, we take the defaults, for the \texttt{CESTClock}, we set the time zone offset from UTC to CEST (Central European Summer Time). The code for the clocks themselves that appear above follows: \begin{verbatim} \begin{tabular}{rcc} &\textbf{Time}&\textbf{Date}\\[3bp] Local Time:& \cntdwnclocktime{LocalClock}{1in}{11bp}& \cntdwnclockdate{LocalClock}{1in}{11bp}\\[3bp] CEST:& \cntdwnclocktime{CESTClock}{1in}{11bp}& \cntdwnclockdate{CESTClock}{1in}{11bp}% \end{tabular} \end{verbatim} The current time is displayed by \cs{cntdwnclocktime} and the date is displayed by \cs{cntdwnclockdate}. \subsubsection{Using \texorpdfstring{\protect\cs{setClockTimer}}{\CMD{setClockTimer}} in the preamble} For each clock , the \cs{setClockTimer} must be used to define the properties of the clock. \begin{dCmd*}{.6\linewidth} \setClockTimer{}{} \end{dCmd*} \CmdDescription The command defines the properties of the clock. \PD The first parameter \texttt{} is a name you assign the clock. The name must be unique among all timer names defined in the document. The second parameter consists of key-value pairs, described below. \KVP The second parameter takes several key-value pairs. \begin{itemize} \item \texttt{tzoffset}: The time zone offset of the time of the event. If \texttt{tzoffset} is not specified, then time is interpreted as local time. The format for \texttt{tzoffset} is \texttt{Z|OHHmm}, where \texttt{Z} means that local time is equal to UT (Universal Time). For the \texttt{OHHmm} pattern, the \texttt{O} is \texttt{+} (plus) or \texttt{-} (minus); a \texttt{+} (plus) means that local time is later than UT, and a \texttt{-} (minus) means that local time is earlier than UT. For example CST (Central Standard Time) is \texttt{-0600} while CET (Central European Time) is \texttt{+0100}. See \url{http://www.timeanddate.com} for time zone information. \texttt{HH} is the number of hours offset from UT and \texttt{mm} is the number of minutes (some time zones are measured in hours and minutes, for example, Australian Central Standard Time is \texttt{+0930}). \item \texttt{refreshrate}: The refresh rate of the counter, the default is 1000 (milliseconds). \item \texttt{autorun}: A Boolean that determines whether the count begins when the page containing the counter is opened. The default is \texttt{true}. \item \texttt{autopause}: A Boolean that determines whether the count is paused when the page containing the counter is closed. The default is \texttt{true}. \item \texttt{currtimefunc}: When a long count is active, \textsf{cntdwn} provides the current time and date. The document author can design a custom display through this key. The default value of this key is \texttt{\_defaultTimeDateFunc}, the definition of which is \begin{verbatim} function _defaultTimeDateFunc(oTime,cTimer) { try{ this.getField(cTimer+".clock.time").value =util.printd("H:MM:ss",oTime); } catch(e) {}; try { this.getField(cTimer+".clock.date").value= util.printd("mm/dd/yyyy", oTime); } catch(e) {}; \end{verbatim} where \texttt{oTime} is the Date object containing current time/date. \end{itemize} \subsubsection{Commands that go in the body} In the body of the document there are several commands used with the long countdown timer. \begin{dCmd*}{\linewidth} \cntdwnclocktime[]{}{}{} \cntdwnclockdate[]{}{}{} \end{dCmd*} \CmdDescription Each command creates a read-only text field, the first displays the time, and second displays the date. countdown. \PD The first optional parameter is used to change the appearance of the field (these field use the \textsf{eforms} package). The second parameter is the name of a timer (\texttt{}) that has already been defined by \cs{setClockTimer}. The last two parameters sets the width and height of the form fields. \begin{dCmd*}{\linewidth} \clockToggle[]{}{}{} \end{dCmd*} \CmdDescription The command creates a push button field that is used to toggle the clock on and off (start and pause). Normally, this button is not needed, but there may be situations that it may be useful. \PD The first optional parameter is used to change the appearance of the field (these field use the \textsf{eforms} package). The second parameter is the name of a timer (\texttt{}) that has already been defined by \cs{setClockTimer}. The last two parameters sets the width and height of the form fields. \newtopic\textbf{Note:} It is easy to create a single button to toggle all clocks, or a selection of clocks, but this button is not provided with this package. \bigskip That's all for now, I simply must get back to my retirement. {\dps} \end{document}