%
% D. P. Story  dpstory@uakron.edu
% The University of Akron
%
% Demo of using web/exerquiz to create a quiz, then process the
% user's responses using the Adobe FDF Toolkit.
%
\documentclass{article}
\usepackage[designi]{web} % dvips, pdftex, xetex
\usepackage{exerquiz}
\usepackage[ImplMulti,indefIntegral]{dljslib}
\usepackage[eqRecord]{eq2db}

\everyTextField{\BC{}\textFont{TiRo}\textSize{10}\textColor{0 0 1 rg}}

% Set the deadline date
\newcommand\Deadline{8/10/2003}

% set the time limit
\newcommand\TimeLimit{15} % measured in minutes

%
% Document level JavaScript to check whether student has entered the IdInfo
% fields, and whether the student has a SSN of someone enrolled in the ``course''.
% The ClassRoster array lists the student IDs (SSN) of student ``enrolled''.
%
\begin{insDLJS}[checkIDs]{eqrecord}{JS for eqRecord}
var ok2Initialize = false;
var okToSubmit = false;
var ClassRoster = new Array(123456789, 111111111, 222222222, 987654321);
var TimeLimit = 60 * 1000 * \TimeLimit;
var StartingTime, RequiredEndingTime;
function checkIDs() {
    var DeadlineDate = util.scand("mm/dd/yyyy", "\Deadline").valueOf();
    var TimeOfQuiz = new Date().valueOf();
    if ( TimeOfQuiz > DeadlineDate) {
        app.alert("It is too late to take this quiz!");
        return false;
    }
    var f = this.getField("IdInfo.Name.First");
    if ( f.value.replace(/\s/g,"") == "" ) {
        app.alert("Please enter your \"First Name\", then try again to initialize the quiz again.");
        return false;
    }
    var f = this.getField("IdInfo.Name.Last");
    if ( f.value.replace(/\s/g,"") == "" ) {
        app.alert("Please enter your \"Last Name\", then try again to initialize the quiz again.");
        return false;
    }
    var f = this.getField("IdInfo.SSN");
    if ( f.value == "" ) {
        app.alert("Please enter enter your \"SSN\", then try to initialize the quiz again.");
        return false;
    }
    for (var i=0; i < ClassRoster.length; i++)
        if ( f.value == ClassRoster[i] ) break;
    if ( i == ClassRoster.length ) {
        app.alert("You are not enrolled in this class and, therefore, will not be permitted to take the quiz!");
        return false
    }
    else {
        StartingTime = new Date().valueOf();
        RequiredEndingTime = StartingTime + TimeLimit;
        return true;
    }
}
function checkTimeLimit()
{
    var FinishTime = new Date().valueOf();
    if ( FinishTime > RequiredEndingTime )
    {
        app.alert("The time limit of \TimeLimit\space minutes has expired, your results will not be submitted, sorry!");
        return false;
    }
    else return true;
}
\end{insDLJS}


% Check IDs just before we initialize the quiz
\renewcommand\priorInitQuiz{if(checkIDs())}

% Check the time limit just before we submit, if exceeded, we
% do not submit.
\renewcommand\priorSubmitQuiz{if(checkTimeLimit())}

\useBeginQuizButton[\textColor{0 0 1}\CA{Begin}\AC{}\RC{}\rectW{}]
\useEndQuizButton[\textColor{0 0 1}\CA{End}\AC{}\RC{}\rectW{}]

% Design the "Quiz": Have the user enter his/her name and SSN (and perhaps
% other data to identify the class.

% User's First Name
\newcommand\FirstName[2]{\textField{IdInfo.Name.First}{#1}{#2}} %\V{First Name}

% User's Last Name
\newcommand\LastName[2]{\textField{IdInfo.Name.Last}{#1}{#2}} %\V{Last Name}%

% User's SSN
\newcommand\SSN[2]{\textField[\MaxLen{11}
    \AA{\AAKeystroke{AFSpecial_Keystroke(3);}
        \AAFormat{AFSpecial_Format(3);}
    }]{IdInfo.SSN}{#1}{#2}}


\begin{document}
\thispagestyle{empty}

\begin{flushleft}
Quiz~\#3 \hfill \underbar{First Name:\ \FirstName{100pt}{10pt}}\par
D. P. Story \hfill\underbar{\rlap{Last Name:}\phantom{First Name:}\ \LastName{100pt}{10pt}}\par
Math 101 \hfill \rlap{SSN:}\phantom{First Name:}\ \SSN{100pt}{10pt}
\end{flushleft}

% Submit this quiz to the ASP, and save it in the Database eqQuiz,
% within eqQuiz, there is a table called Quiz1.
\eqSubmit{http://localhost/scripts/eqRecord.asp\#FDF}{eqQuiz}{Math101}
\begin{quiz}*{Quiz3} Answer each of the following. Passing
is 100\%.

\begin{questions}

\item Name \emph{one} of the two people recognized as a founder of
Calculus.\par%\kern2pt
\RespBoxTxt{0}{0}{5}{Isaac Newton}{Newton}{I. Newton}%
{Gottfried Leibniz}{Leibniz}%
\CorrAnsButton{Isaac Newton or Gottfried Leibniz}

\item $\displaystyle\frac{d}{dx} e^{x^2}=\RespBox{2*x*e^(x^2)}{4}{.0001}{[0,1]} %\hfill
\CorrAnsButton{2*x*e^(x^2)}$%\kern1bp\sqTallyBox

\item $\cos(\pi) = \RespBox{-1}{1}{.0001}24\CorrAnsButton{-1}$

\item $\displaystyle\int \sin(x)\,dx =
\RespBox{-cos(x)}{4}{.0001}{[0,1]}[indefCompare]\CorrAnsButton{-cos(x)}$
\end{questions}
\end{quiz}\quad\ScoreField\currQuiz\CorrButton\currQuiz

\noindent
Answers: \AnswerField\currQuiz\hfill

\newpage
\begin{flushleft}
Quiz \#4 \hfill Math 101
\end{flushleft}

%
% You can remove the limitations of the first quiz by saying
% \renewcommand\priorInitQuiz{}
% \renewcommand\priorSubmitQuiz{}
% that is, redefined one or both to be empty.
%

\eqSubmit{http://localhost/scripts/eqRecord.asp\#FDF}{eqQuiz}{Math101}

\begin{quiz}*{Quiz4}
Using the discriminant, $b^2-4ac$, respond to each of the
following questions.
\begin{questions}
\item Is the quadratic polynomial $x^2-4x + 3$ irreducible?
\begin{answers}4
\Ans0 Yes &\Ans1 No
\end{answers}
\item Is the quadratic polynomial $2x^2 - 4x + 3 $ irreducible?
\begin{answers}4
\Ans1 Yes &\Ans0 No
\end{answers}
\item How many solutions does the equation $2x^2 - 3x - 2= 0$ have?
\begin{answers}4
\Ans0 none &\Ans0 one &\Ans1 two
\end{answers}
\item $\displaystyle\int_0^\pi \sin(x)\,dx = $\space
\RespBox{2}{1}{.0001}{[0,1]}\CorrAnsButton{2}
\end{questions}
\end{quiz}\quad\ScoreField\currQuiz\CorrButton\currQuiz

\noindent
Answers: \AnswerField\currQuiz

\end{document}
