<html>The editor now includes a button `~~` that calculates the value of the current math expression (if possible). The cursor should be at the end of the read box, and the answer will be inserted at that point. If the expression contains a string of equalities, only the expression after the last equality is evaluated. Some expressions are considered too easy (this behavior can be switched off by editing the value of AMpreventEasyCalculations in ascii-math.js). The syntax and code for the Calculate button are derived from the [[ASCIIMathCalculator|http://www.chapman.edu/~jipsen/mathml/asciimathcalculator.html]]. Separate expressions with &quot;;&quot;.</html>
<html><br />!Example 1: <br />Solving the quadratic equation.<div style="text-align: center; font-weight: bold;"><div style="text-align: center;"><div style="text-align: left;"><pre style="font-weight: normal;"><br />Suppose <span class="AM">`ax^2+bx+c=0`</span> and <span class="AM">`a!=0`</span>. We first divide by <span class="AM">`a`</span> to get <span class="AM">`x^2+b/ax+c/a=0`</span>. <br />Then we complete the square and obtain <span class="AM">`x^2+b/ax+(b/(2a))^2-(b/(2a))^2+c/a=0`</span>. <br />The first three terms factor to give <span class="AM">`(x+b/(2a))^2=(b^2)/(4a^2)-c/a`</span>.<br />Now we take square roots on both sides and get <span class="AM">`x+b/(2a)=+-sqrt((b^2)/(4a^2)-c/a)`</span>.<br /></pre></div><div style="font-weight: normal; text-align: left;">Finally we move the <span class="AM">`b/(2a)`</span> to the right and simplify to get <br /></div><div style="text-align: left;"><pre style="font-weight: normal;">the two solutions: <span class="AMedit">`x_(1,2)=(-b+-sqrt(b^2-4ac))/(2a)`.</span></pre></div></div></div></html>
<html>ASCIIMathML.js is a JavaScript that translates simple ASCII mathematics expressions to MathML while the webpage is loading. It works in InternetExplorer+MathPlayer and Firefox. See <a href="http://www1.chapman.edu/~jipsen/asciimath.html">http://www1.chapman.edu/~jipsen/asciimath.html</a> for more details.<br /></html>
<html>ASCIIsvg.js is a JavaScript that translates simple descriptions of diagrams into [[SVG]] while the webpage is loading. It works in InternetExplorer+SVGview and [[Firefox 1.5]]. See <a href="http://www1.chapman.edu/~jipsen/asciisvg.html">http://www1.chapman.edu/~jipsen/asciisvg.html</a> for more details.<br /></html>
<html><p>This is a modification of TiddlyWiki that adds a convenient editor, namely a slightly modified version of HTMLArea 3.0 with AsciiMath and AsciiSvg plugins developed by [[Peter Jipsen|http://www.chapman.edu/~jipsen]] and [[David Lippman|http://www.pierce.ctc.edu/dlippman/]].</p><p>The net result is that one can now easily create mathematical and scientific webpages with formulas and graphs using a familiar browser interface. These pages are saved locally and can be uploaded to a webserver. Effectively this is a lightweight scientific wordprocessor and computer algebra system (without any symbolic capabilities at the moment). Various plugins for TiddlyWiki can be used to extend the features, e.g. to display parts of the webpage in the form of presentation slides.</p><p>The latest version of ASciencePad can be freely downloaded from <a href="http://math.chapman.edu/~jipsen/asciencepad">http://math.chapman.edu/~jipsen/asciencepad</a>. The current version is 1.1a and has not yet been tested extensively. If you use ASciencePad or notice problems (and perhaps fix them:-) please send me an email at <a href="mailto:jipsen@chapman.edu">jipsen@chapman.edu</a>. </p><p>Note that ASciencePad does not take the approach of embedding the entire JavaScript into the webpage (since the HTMLArea editor consists of numerous files). This reduces the size of the main html file (and its many backups), but does imply that this html file should always be in the same folder as the HTMLArea folder.</p></html>
<html>SVGview.exe is the filename of the Adobe SVG Viewer plugin for InternetExplorer. It is freely available from <a href="http://www.adobe.com/svg">http://www.adobe.com/svg</a>.</html>
| source file|{{{D:\shtml\stiddlytools\sclock.swf}}}|\n| attached on|30 November 2006 by ELSDesignStudios|\n| description|flash-based analog clock|\n| embedded data|//none//|\n| local link|/%LOCAL_LINK%/[[clock.swf|clock.swf]]|\n| remote link|/%REMOTE_LINK%/[[http://www.TiddlyTools.com/clock.swf|http://www.TiddlyTools.com/clock.swf]]|\n\nUsage:\nexternal link:\n> {{{[[click to open|AnalogClock]]}}}\n> [[click to open|AnalogClock]]\nembedded player (requires http://www.TiddlyTools.com/#PlayerPlugin):\n> {{{<<player flash AnalogClock 400px 400px>>}}}\n> <<player flash AnalogClock 400px 400px>>
/***\n|Name|AnswerMacro|\n|Source|http://luceatlux.net/macros/answer/index.html|\n|Version|1.2|\n|Author|''George C Brackett'' (http://luceatlux.net/gcb/) <br />//with major contributions from//<br />''Paulo Soares''|\n|License|GPL|\n|~CoreVersion|1.2|\n|Type|macro|\n|Requires||\n|Overrides||\n|Description|displays answers and feedback for online questions|\n\nThis alternative to the {{{<<slider>>}}} plugin\n*displays an answer or other feedback either\n**inserted in content like the standard slider or\n**floated above existing tiddler content on a panel\n*provides default feedback for correct and incorrect responses\n*uses no cookies to remember its open or closed state; defaults to closed, so a new user on a shared machine always gets hidden answers\n*offers three interfaces\n**the standard tiddlybutton\n**checkboxes for questions with multiple correct answers\n**radio buttons for questions with a single correct answer\n*provides option to display default feedback plus a tiddler button for more information [NEW in v1.2]\n\n!!Syntax\nThe AnswerMacro has four parameters; most are optional:\n//{{{\n<<answer [type[^]] (id) [text] [label]>>\n//}}}\nParameters (separated by spaces):\n*type\n**"T" (tiddlybutton),\n**"S" (single-answer radio button group), \n**"M" (multiple answer checkbox), \n**Append "^" for floating panel (e.g., T^, S^, M^)\n** default is "M^"\n*id\n**required for type S only\n**assign same value for all radio buttons in the group; value must be unique across all tiddlers\n*text: \n**text:"TheTiddler" (display text from tiddler named "TheTiddler"),\n**text:"OK" (display config.macros.answer.rightAnswer)\n**text:"NO" (display config.macros.answer.wrongAnswer\n**text:"OK+TheTiddler" (display config.answer.rightAnswer + tiddlybutton labeled config.macros.answer.okButton that reveals "TheTiddler"\n**text:"NO+TheTiddler" (display config.answer.wrongAnswer + tiddlybutton labeled config.macros.answer.noButton) that reveals "TheTiddler"\n**default is text:"NO"\n*label:\n**label:"Button Label" (set label on tiddlybutton to "Button Label"),\n**default is config.macros.answer.label\n\nDefaults: (to change, edit config.macro.answer.)\n*wrongAnswer: "Incorrect answer. Please think again.", \n*rightAnswer: "That's correct!"\n*okButton: "explanation"\n*noButton: "hint"\n*label: "Answer"\n\n!!Usage\n!!!!Example 1 - A checkbox revealing a standard wrong answer (two ways), a standard wrong answer with tiddlybutton to a hint, a standard right answer, a standard right answer with tiddlybutton to a solution, and the tiddler Q1A, each on a floating panel\n//{{{\n<<answer>> A wrong answer <<answer text:"NO">> A wrong answer\n<<answer text:"NO+Q1H">> Another wrong answer\n<<answer text:"OK">> A correct answer\n<<answer text:"OK+Q1S">> Another correct answer\n<<answer text:"Q1A">> Yet another correct answer\n//}}}\n><<answer>> A wrong answer <<answer text:"NO">> A wrong answer\n><<answer text:"NO+Q1H">> Another wrong answer\n><<answer text:"OK">> A correct answer\n><<answer text:"OK+Q1S">> Another correct answer\n><<answer text:"Q1A">> Yet another correct answer\n\n!!!!Example 2 - A radio button revealing standard wrong answer, a standard right answer, and a wrong-with-hint tiddler on floating panel\n//{{{\n<<answer S^ id="Q1">> A wrong answer\n<<answer S^ id="Q1" text:"OK">> A correct answer\n<<answer S^ id="Q1" text:"NO+Q1H">> An incorrect answer\n//}}}\n><<answer S^ id="Q1">> A wrong answer\n><<answer S^ id="Q1" text:"OK">> A correct answer\n><<answer S^ id="Q1" text:"NO+Q1H">> An incorrect answer\n\nBecause sliders push everything after them downscreen, it's not a good idea to use radio buttons with sliders. Example:\n\n>The United States is a world leader in reducing carbon dioxide emissions.\n><<answer S id="Q1">> True\n><<answer S id="Q1" text:"OK">> False\n\n!!!!Example 3 - A tiddlybutton labeled "solution" revealing tiddler Q1S as a slider\n//{{{\n<<answer T text:"Q1S" label:"solution">>\n//}}}\n>Question 1: What is the answer to this problem?\n> ''A'' one answer\n> ''B'' another answer\n> ''C'' a third answer\n>\n><<answer T text:"Q1S" label:"solution">>\n\n!!!!Example 4 - Tiddly buttons revealing standard wrong answer and standard right answer on a floating panel\n//{{{\n<<answer T^ label:"Always">> <<answer T^ label:"Sometimes">> <<answer T^ text:"OK" label:"Never">>\n//}}}\n>When is it correct to wear a hat indoors?\n><<answer T^ label:"Always">> <<answer T^ label:"Sometimes">> <<answer T^ text:"OK" label:"Never">>\n\n!!Notes\n#Notice that it's easy (by writing wrong-answer tiddlers) to give a specific response to each wrong answer, or responses that offer hints, etc.\n#The answer macro is not really designed for questions with multiple right answers, although it can be used that way. The difficulty is that students don't know when they've found all the right answers without clicking all the choices. (This may not be much of a drawback, though. The students then see not only which answers are right, but also which are wrong.)\n#To change the appearance of the floating and/or slider panels, add .floatingPanel and/or .sliderPanel CSS classes to your ~StyleSheet.\n\n!!Code\n***/\n\n//{{{\nconfig.macros.answer = {label: "Answer", \n wrongAnswer: "Incorrect answer. Please think again.", \n rightAnswer: "That's correct!",\n okButton:"explanation",\n noButton:"hint"};\n\nconfig.macros.answer.onClickButton = function(evt)\n{\n if(!evt) var evt = window.event; //for IE\n var n = this.nextSibling; // n points at panel\n var isOpen = n.style.display != "none";\n var viewer = document.getElementById("viewer");\n\n // close other panels unless button on second level (in which case they are already closed)\n if (this.name != "2ndLevel") {\n var panel = getElementsByClass('floatingPanel', viewer);\n for ( var i = 0; i < panel.length; i++ ) {\n panel[ i ].style.display = "none";\n }\n }\n\n // show or hide floating or slider panel as required\n n.style.display = isOpen ? "none" : "block";\n var left= evt.clientX +10;\n n.style.left = left + "px";\n return ""; \n}\n\nconfig.macros.answer.onClickPanel = function(evt) {\n if (!evt) var evt = window.event;\n var theSrc = evt.target ? evt.target : evt.srcElement; // get clicked element\n\n // only close panel if it is the target; i.e., don't close when panel button is clicked)\n if (theSrc == this) {\n this.style.display = "none";\n this.previousSibling.checked = false;\n }\n}\n\nconfig.macros.answer.createButton = function(place, type, label, id)\n{\n var panelClass = "sliderPanel"; //default to slider panel\n if (type.charAt(1) == "^") {panelClass = "floatingPanel";}\n mainType = type.charAt(0);\n switch (mainType) {\n case "M":\n var btn = createTiddlyCheckbox(place,"",false,this.onClickButton);\n btn.className = "checkboxItem";\n break;\n case "S":\n var btn = createTiddlyRadiobox(place,"",false,this.onClickButton,id);\n btn.className = "radioItem";\n break;\n case "T":\n var btn = createTiddlyButton(place,label,"",this.onClickButton);\n btn.classname = "button" // already set; this is here to remind me\n if (id == "2ndLevel") {btn.setAttribute("name",id)}; // mark as 2nd level\n break;\n }\n var panel = createTiddlyElement(null,"div","",panelClass);\n panel.style.display = "none"; //default to closed\n panel.onclick = this.onClickPanel;\n place.appendChild(panel);\n return panel;\n}\n\nconfig.macros.answer.handler = function(place,macroName,params,wikifier,paramString)\n{ \n var theText = getParam(paramString.parseParams("list",null,true),"text", "");\n var theId = getParam(paramString.parseParams("list",null,true),"id", "");\n var btnLabel = getParam(paramString.parseParams("list",null,true),"label", "");\n\n var theType = "M^"; //default to floating checkbox\n if (params[0] != undefined) { // if params[0] exists\n if (params[0].indexOf(":") == -1) { // if the first parameter is not like id: text: label:\n theType = params[0]; // then params[0] is the type\n }\n } \n switch (theText) {\n case "": //empty text defaults to wrong answer\n case "NO":\n panelText = config.macros.answer.wrongAnswer;\n break;\n case "OK":\n panelText = config.macros.answer.rightAnswer;\n break;\n default:\n var cmdStr = theText.substr(0,3); //get command, if any\n var theTarget = theText.substr(3, theText.length - 3); //get target tiddler if any\n switch (cmdStr) {\n\n //create panel content and mark 2nd-level button for OK+ and NO+\n case "OK+":\n panelText = config.macros.answer.rightAnswer + \n " <<answer T text:\s"" + theTarget + "\s" label:\s"" + \n config.macros.answer.okButton + "\s" id:2ndLevel>>";\n break;\n case "NO+":\n panelText = config.macros.answer.wrongAnswer + \n " <<answer T text:\s"" + theTarget + "\s" label:\s"" + \n config.macros.answer.noButton + "\s" id:2ndLevel>>";\n break;\n\n // create panel content from specified tiddler\n default:\n panelText = store.getTiddlerText(theText);\n break;\n }\n break;\n }\n\n var panel = this.createButton(place, theType, btnLabel, theId);\n panel.setAttribute("refresh", "content");\n panel.setAttribute("tiddler", panelText);\n wikify(panelText,panel,null);\n}\n\n// this function by Udo, overrides TW function\n\nfunction getParam(params, name, defaultValue) {\n if (!params) return defaultValue;\n var p = params[0][name];\n return p ? p[0] : defaultValue;\n}\n\n\nfunction getElementsByClass(searchClass,node,tag) {\n var classElements = new Array();\n if ( node == null ) node = document;\n if ( tag == null ) tag = '*';\n var els = node.getElementsByTagName(tag); \n var elsLen = els.length;\n var pattern = new RegExp("(^|\s\ss)"+searchClass+"(\s\ss|$)");\n var j = 0;\n for (var i = 0; i < elsLen; i++) {\n if ( pattern.test(els[ i ].className) ) {\n classElements[ j ] = els[ i ];\n j++;\n }\n }\n return classElements;\n}\n\nfunction createTiddlyRadiobox(theParent,caption,checked,onChange,id)\n{\n var rb = document.createElement("input");\n rb.setAttribute("type","radio");\n rb.setAttribute("name",id);\n rb.onclick = onChange;\n theParent.appendChild(rb);\n rb.checked = checked;\n rb.className = "chkOptionInput";\n if(caption)\n wikify(caption,theParent);\n return rb;\n}\n\nsetStylesheet("/*{{{*/\sn .floatingPanel {\sn color: black;\sn;position: absolute;\snz-index: 10;\snpadding: 0.5em;\snbackground-color: #eee;\snborder: 1px solid #333;\sncursor: pointer;\snmargin-right: 20%;}\sn\sn.sliderPanel {padding: 0.5em;\snborder: 1px dotted #333;\snwidth: auto;\sncursor: pointer;}\sn\sn/*}}}*/","AnswerPanelStyles");\n//}}}
<html><p>This plugin for the HTMLArea editor uses the ASCIIMathML script to enable the editing of mathematical expressions within a webpage. The expressions are displayed using MathML, and when the user clicks on an expression it is converted to a readable ASCII representation that can be easily edited using a keyboard or by choosing symbols from a popup panel.</p><p>The AsciiMath plugin for the HTMLArea editor was developed jointly by Peter Jipsen and David Lippman. It requires some minor modifications to the editor script (htmlarea.js), and with similar modifications the plugin can also be used with the [[Xinha|http://xinha.python-hosting.com/]] editor.</p></html>
<html><p>This plugin for the HTMLArea editor allows a user to easily create mathematical graphs within a webpage. The graphs are displayed using [[SVG]], and when the user double-clicks on a graph (or selects the graph and clicks on the Insert Graph button in Firefox), a popup panel opens in which the graph can be modified. In [[Firefox 1.5]] the graphs are currently not displayed in the editor window, but they are shown in the popup panel</p><p>The AsciiSvg plugin for the HTMLArea editor was developed by David Lippman, based on the ASCIIsvg script developed by Peter Jipsen. It requires some minor modifications to the editor script (htmlarea.js), and with similar modifications the plugin can also be used with the [[Xinha|http://xinha.python-hosting.com/]] editor.</p></html>
.hilite {\n font-weight: bold;\n background: #ffffcc;\n padding: 0.2em;\n}\n\n.Definição {\nbackground: #fafafa;\nborder: 3px #999999 dashed;\npadding: 0.5em;\nwidth: 80%;\nmargin-left: auto;\nmargin-right: auto;\n}\n\n.Definição .envHeader{\nborder: none;\ncolor: blue;\nmargin: 0 0 0.25em 0;\npadding: 0;\nfont-family: arial;\nfont-size: 1.2em;\nfont-weight: bold;\nwidth: 99%;\n}\n\n.Teorema {\nborder: 1px #666 dashed;\npadding: 0.5em;\nwidth: 55%;\nmargin-left: auto;\nmargin-right: auto;\n}\n\n.Teorema .envHeader{\nbackground: none;\nborder: none;\ncolor: blue;\nmargin: 0 0 0.25em 0;\npadding: 0;\nfont-family: arial;\nfont-size: 1.5em;\nfont-weight: bold;\nwidth: 100%;\n}\n\n.Theorem {\nborder: 1px #666 dashed;\npadding: 0.5em;\nwidth: 55%;\nmargin-left: auto;\nmargin-right: auto;\n}\n\n.Theorem .envHeader{\nbackground: none;\nborder: none;\ncolor: blue;\nmargin: 0 0 0.25em 0;\npadding: 0;\nfont-family: arial;\nfont-size: 1.5em;\nfont-weight: bold;\nwidth: 100%;\n}\n\n.Example {\nbackground: #ffffcc;\npadding: 0.5em;\n}\n\n.Example .envHeader{\nbackground: none;\ncolor: orange;\nmargin: 0 0 0.25em 0;\npadding: 0;\nfont-family: arial;\nfont-size: 1.5em;\nfont-weight: bold;\n}\n\n.Exercise {\nbackground: #e8ffd2;\npadding: 0.5em 0.5em 0.5em 0.6em;\n border-top:solid #e8ffd2 1px;\n border-left:solid #e8ffd2 1px;\n border-bottom:solid green 2px;\n border-right:solid green 2px;\n -moz-border-radius: 1.0em;\nwidth: 20em;\n}\n\n.Exercise .envHeader{\nbackground: none;\nborder: none;\ncolor: green;\nmargin: 0 0 0.25em 0;\npadding: 0;\nfont-family: arial;\nfont-size: 1.5em;\nfont-weight: bold;\nwidth: 100%;\n}\n\n.Frame {\nbackground: #000000;\ncolor: #ffffff;\npadding: 0.5em 0.5em 0.5em 0.6em;\nwidth: 20em;\nmargin-left: auto;\nmargin-right: 0;\n}\n\n.Frame .envHeader{\ndisplay: none;\n}\n\n.Question {\npadding: 0.5em 0.5em 0.5em 0.5em;\nbackground: #ffffcc;\nfont-size: 1.5em;\n}\n\n.Question .envHeader{\nmargin-bottom: 0.25em;\ncolor: red;\nfont-family: arial;\nfont-size: 1.5em;\nfont-weight: bold;\nborder: 2px red solid;\ntext-align: right;\n}
*Instructor\n**Dr. Michael Freeze\n*Office Location\n**Bear Hall 124\n*Office Hours\n**by appointment\n*Phone\n**910.795.1385\n*Email\n**freezem at uncw dot edu\n
!Text\nLinear Algebra and its Applications, David C. Lay, Third Edition, 2006\n!Course Content\nWe will discuss systems of linear equations, algebra of matrices, vector spaces, matrix factorizations, determinants, and applications as detailed in Chapters 1 through 7 of the text.\n!Attendance\nI expect you to attend class on time each day. Active involvement in class will greatly enhance your learning experience and make learning linear algebra far easier for you. Attendance will be recorded on a regular basis.\n!Tests, Homework and Quizzes\nFour classroom tests will be given. There will be no make-up tests without prior permission. The final exam will be given on Friday, July 27. Homework problems will be suggested for each section. Short, unannounced quizzes may also be given occasionally.\n!Grading\nEach of your three tests will contribute 20% toward your grade. Your combined homework grades will contribute an additional 20%, and your final exam will determine the remaining 20%. A plus or minus may be used as a possible grade modifier, for final grades only, at the end of the semester. Factors that influence the judgment to assign a + or – (or neither) are: performance on the final exam, consistency of performance throughout the semester, proximity to a grade borderline, class participation and effort.\n!Academic Honesty\nAll students are expected to read and abide by the Academic Honor Code the Student Handbook. Collaborative work is encouraged in general, but all work which is to be handed in must be written up individually.\n!Incompletes\nA grade of I (incomplete) is given only if documented circumstances beyond the student’s control (e.g., medical, legal) render the student unable to complete the course work, and only if there is a reasonable possibility of passing the course. The grade I is not given for simply failing to meet the course requirements.\n!Students with Disabilities\nIf you have a disability and need reasonable accommodation in this course, you should inform the instructor of this fact in writing within the first week of class or as soon as possible. If you have not already done so, you must register with the Office of Disability Services in Westside Hall (extension 3746) and obtain a copy of your Accommodation Letter. You should then meet with your instructor to make mutually agreeable arrangements based on the recommendations of the Accommodation Letter.\n
[[Schedule]]
<html><p><span>ASciencePad is </span><strong><span>freely available</span></strong><span> for noncommercial use (various parts covered by ~BSD-style or GPL licenses). The latest version can be downloaded from </span><a href="http://math.chapman.edu/~jipsen/asciencepad/"><span></span></a><span></span><a target="_blank" href="http://math.chapman.edu/~jipsen/asciencepad/" title="External link to http://math.chapman.edu/~jipsen/asciencepad/" class="externalLink"><font color="#0044bb">http://math.chapman.edu/~jipsen/asciencepad/</font></a></p></html>
<html>Firefox 1.5 is a version of the Firefox browser that supports both MathML and [[SVG]] right out of the box. It's free, its easy to install, its standards compliant, and it works on many platforms. Don't hesitate to get your own copy at <a href="http://www.mozilla.org/products/firefox/">http://www.mozilla.org/products/firefox/</a>.</html>
<html><p>This is the name of an editor written in JavaScript that can replace any &lt;textarea&gt; input field in a webpage. HTMLArea can be easily extended by various plugins, and is being used in numerous web applications, including ASciencePad. It can be obtained in its original form from <a href="http://www.dynarch.com/projects/htmlarea/">http://www.dynarch.com/projects/htmlarea/</a>.</p></html>
*Section 1.1: 1,5,7,11,13,15 \n*Section 1.2: 1,3,7,11,17 \n*Section 1.3: 1,3,5,9,13 \n*Section 1.4: 1,7,9,11,15 \n*Section 1.5: 1,5,7,9,17 \n*Section 1.6: 1,3,5 \n*Section 1.7: 1,5,9,11,15 \n*Section 1.8: 1,3,9,13,19 \n*Section 1.9: 1,3,5,15,17 \n*Section 2.1: 1,3,5,7,11 \n*Section 2.2: 1,3,5,7,31 \n*Section 2.3: 1,5,13,21,33 \n*Section 2.4: 1,5,13,15 \n*Section 2.5: 1,3,7,9,25 \n*Section 2.6: 1,3,5 \n*Section 2.8: 1,3,5,7,23 \n*Section 2.9: 1,3,5,9,13 \n*Section 3.1: 1,3,9,15,19 \n*Section 3.2: 1,3,5,11,15 \n*Section 3.3: 1,5,7,11,19 \n*Section 4.1: 1,3,7,9,11 \n*Section 4.2: 1,3,5,7,11 \n*Section 4.3: 1,3,9,13,15 \n*Section 4.4: 1,3,5,7,9 \n*Section 4.5: 1,5,11,13,17 \n*Section 4.6: 1,3,5,7,9 \n*Section 4.7: 1,3,7,9 \n*Section 4.8: 1,3,7,13 \n*Section 4.9: 1,3,5,15 \n*Section 5.1: 1,3,9,13,17 \n*Section 5.2: 1,5,9,15 \n*Section 5.3: 1,3,5,11,13 \n*Section 5.4: 1,3,5,7,9 \n*Section 5.5: 1,7,13,23 \n*Section 5.6: 1,3,5,9,11 \n*Section 5.7: 1,3,9,11 \n*Section 5.8: 1,3,5 \n*Section 6.1: 1,3,9,13,15 \n*Section 6.2: 1,3,7,9,11 \n*Section 6.3: 1,3,7,11,13 \n*Section 6.4: 1,3,9,11 \n*Section 6.5: 1,3,5,7,9 \n*Section 6.7: 1,3,5,7,11 \n*Section 7.1: 1,7,13,17,23 \n*Section 7.2: 1,3,5,7 \n*Section 7.4: 1,3,5,7,13 \n
/***\n|Name|InlineJavascriptPlugin|\n|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|\n|Version|1.6.0|\n|Author|Eric Shulman - ELS Design Studios|\n|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|~CoreVersion|2.1|\n|Type|plugin|\n|Requires||\n|Overrides||\n|Description|Insert Javascript executable code directly into your tiddler content.|\n\n''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.\n!!!!!Usage\n<<<\nWhen installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.\n\n''Deferred execution from an 'onClick' link''\nBy including a {{{label="..."}}} parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered. You may also include a {{{title="..."}}} parameter to specify the 'tooltip' text that will appear whenever the mouse is moved over the onClick link text\n\n''External script source files:''\nYou can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}). This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins. The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.\n\n''Display script source in tiddler output''\nBy including the keyword parameter "show", in the initial {{{<script>}}} marker, the plugin will include the script source code in the output that it displays in the tiddler.\n\n''Defining javascript functions and libraries:''\nAlthough the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed. Thus, you cannot load a library and //immediately// use it's functions within the same tiddler. However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).\n\nTo ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened. For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.\n\nSince the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines. Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.\n\n''Creating dynamic tiddler content''\nAn important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:\n* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.\n* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.\n* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.\n\nIf your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display. For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.\n\n//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler. To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//\n\n''Accessing the ~TiddlyWiki DOM''\nThe plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.\n\nAccess to this DOM element allows you to create scripts that can:\n* vary their actions based upon the specific location in which they are embedded\n* access 'tiddler-relative' information (use findContainingTiddler(place))\n* perform direct DOM manipulations (when returning wikified text is not enough)\n<<<\n!!!!!Examples\n<<<\nan "alert" message box:\n><script show>\n alert('InlineJavascriptPlugin: this is a demonstration message');\n</script>\ndynamic output:\n><script show>\n return (new Date()).toString();\n</script>\nwikified dynamic output:\n><script show>\n return "link to current user: [["+config.options.txtUserName+"]]";\n</script>\ndynamic output using 'place' to get size information for current tiddler:\n><script show>\n if (!window.story) window.story=window;\n var title=story.findContainingTiddler(place).id.substr(7);\n return title+" is using "+store.getTiddlerText(title).length+" bytes";\n</script>\ncreating an 'onclick' button/link that runs a script:\n><script label="click here" title="clicking this link will show an 'alert' box" show>\n if (!window.story) window.story=window;\n alert("Hello World!\snlinktext='"+place.firstChild.data+"'\sntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");\n</script>\nloading a script from a source url:\n>http://www.TiddlyTools.com/demo.js contains:\n>>{{{function demo() { alert('this output is from demo(), defined in demo.js') } }}}\n>>{{{alert('InlineJavascriptPlugin: demo.js has been loaded'); }}}\n><script src="demo.js" show>\n return "loading demo.js..."\n</script>\n><script label="click to execute demo() function" show>\n demo()\n</script>\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n''2007.02.19 [1.6.0]'' added support for title="..." to specify mouseover tooltip when using an onclick (label="...") script\n''2006.10.16 [1.5.2]'' add newline before closing '}' in 'function out_' wrapper. Fixes error caused when last line of script is a comment.\n''2006.06.01 [1.5.1]'' when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly\n''2006.04.19 [1.5.0]'' added 'show' parameter to force display of javascript source code in tiddler output\n''2006.01.05 [1.4.0]'' added support 'onclick' scripts. When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked. 'place' value is set to match the clicked button/link element.\n''2005.12.13 [1.3.1]'' when catching eval error in IE, e.description contains the error text, instead of e.toString(). Fixed error reporting so IE shows the correct response text. Based on a suggestion by UdoBorkowski\n''2005.11.09 [1.3.0]'' for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content. Based on a suggestion by BradleyMeck\n''2005.11.08 [1.2.0]'' handle loading of javascript from an external URL via src="..." syntax\n''2005.11.08 [1.1.0]'' pass 'place' param into scripts to provide direct DOM access \n''2005.11.08 [1.0.0]'' initial release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.inlineJavascript= {major: 1, minor: 6, revision: 0, date: new Date(2007,2,19)};\n\nconfig.formatters.push( {\n name: "inlineJavascript",\n match: "\s\s<script",\n lookahead: "\s\s<script(?: src=\s\s\s"((?:.|\s\sn)*?)\s\s\s")?(?: label=\s\s\s"((?:.|\s\sn)*?)\s\s\s")?(?: title=\s\s\s"((?:.|\s\sn)*?)\s\s\s")?( show)?\s\s>((?:.|\s\sn)*?)\s\s</script\s\s>",\n\n handler: function(w) {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n if (lookaheadMatch[1]) { // load a script library\n // make script tag, set src, add to body to execute, then remove for cleanup\n var script = document.createElement("script"); script.src = lookaheadMatch[1];\n document.body.appendChild(script); document.body.removeChild(script);\n }\n if (lookaheadMatch[5]) { // there is script code\n if (lookaheadMatch[4]) // show inline script code in tiddler output\n wikify("{{{\sn"+lookaheadMatch[0]+"\sn}}}\sn",w.output);\n if (lookaheadMatch[2]) { // create a link to an 'onclick' script\n // add a link, define click handler, save code in link (pass 'place'), set link attributes\n var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);\n link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}\n link.code="function _out(place){"+lookaheadMatch[5]+"\sn};_out(this);"\n link.setAttribute("title",lookaheadMatch[3]?lookaheadMatch[3]:"");\n link.setAttribute("href","javascript:;");\n link.style.cursor="pointer";\n }\n else { // run inline script code\n var code="function _out(place){"+lookaheadMatch[5]+"\sn};_out(w.output);"\n code=code.replace(/document.write\s(/gi,'place.innerHTML+=(');\n try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }\n if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);\n }\n }\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n }\n }\n} )\n//}}}
<html><p>Internet Explorer is reportedly the most widely used browser for reading webpages. Fortunately TiddlyWiki and ASciencePad work with this browser, though the latter only on ~MSWindows with MathPlayer and AdobeSVGview plugins installed.</p></html>
<html>JavaScript is a computer language that is implemented in many webbrowsers and is used to create dynamic webpages. In InternetExplorer it is called ~JScript, and part of the language has been standardized as ~ECMAscript. It is a weakly typed language with a syntax based on c and a prototype mechnism for handling objects. JavaScript programs are downloaded with the webpage, cached and interpreted on the client machine.</html>
<<tag systemLab>>\n
<<tiddler Week1>>\n<<tiddler Week2>>\n<<tiddler Week3>>\n<<tiddler Week4>>\n<<tiddler Week5>>
[[Schedule]]\n[[Lecture Notes]]\n[[Homework]]\n[[Quizzes]]\n[[Test Dates]]\n[[Practice Tests]]\n[[Contact Information]]\n[[Course Policies]]\n[[Math Examples]]\n<<toggleSideBar '' '' hide>>\n
<script src="HTMLArea/htmlareaPlugin.js" type="text/javascript"></script>
<!--PJ-->\n<script src="HTMLArea/plugins/AsciiMath/ASCIIMathML.js" type="text/javascript"></script>\n<script src="HTMLArea/plugins/AsciiSvg/ASCIIsvg.js" type="text/javascript"></script>\n<script src="HTMLArea/plugins/AsciiSvg/ASCIIsvgAddon.js" type="text/javascript"></script>\n<!--script type="text/javascript" src="HTMLArea/plugins/AsciiMath/ASCIIMathCalculator.js"></script-->\n<script type="text/javascript">\n//<![CDATA[\n _editor_url = "HTMLArea/";\n _editor_lang = "en";\n//]]>\n</script>\n<script src="HTMLArea/htmlarea.js" type="text/javascript"></script>\n<!--PJ-->
<html><p>To edit this webpage, you first need to get a local copy of it and the modified HTMLArea editor (bundled at <a href="http://math.chapman.edu/~jipsen/asciencepad">http://math.chapman.edu/~jipsen/asciencepad</a>). If you are using Internet Explorer, you also need to install the MathPlayer and AdobeSVGview plugins. [[Firefox 1.5]] may need some additional fonts (if squareroots display incorrectly).</p><p>Assuming things are setup ok, just double-click any plain text or heading to start the editor. To insert math, you can click the &quot;<strong>Insert New Math</strong>&quot; button (<span class="AM">`sum+`</span>) or you can type a backquote (usually on the top-left corner of us-keyboards, but you can also configure this so that another key is used, e.g. \s$). In the red box that appears, you type your mathematics using a calculator-style syntax (called linear ASCII math). If you need specific symbols and don't know (or don't remember) what to type, click the &quot;<strong>Insert Math Symbols</strong>&quot; button (<span class="AM">`sum`</span>) and choose from the popup window. When you click outside of the red box, the expression is displayed in typeset form using MathML (usually in red, but this can also be changed).</p><p>Here is an example: <span class="AM">`int_-1^1 sqrt(1-x^2)dx = pi/2`</span> is the area of a unit semicircle. Point at the formula to see what was typed. (If integrals are unfamiliar, consider the example below.)</p><p>To create a graph of this semicircle, click the &quot;<strong>Insert Graph</strong>&quot; button, <embed src="file:///C:/Documents%20and%20Settings/Michael/Desktop/desktop07Apr01/projects/mathwebdev/HTMLAreaPackage-2.1.2/HTMLArea/plugins/AsciiSvg/d.svg" sscr="-1.5,1.5,-.5,1.5,1,1,1,1,1,300,200,func,sqrt(1-x^2),null,0,0,-1,1,blue,2,none" script=" " style="float: right; vertical-align: middle; width: 300px; height: 200px;" id="mygraph6" /> enter sqrt(1-x^2) from -1 to 1 and change the values for <strong>xmin, xmax, ymin, ymax</strong> (here I also chose to have the graph positioned &quot;float right&quot;).</p><p>Finally, click &quot;<strong>done</strong>&quot; right above the editor window, and then click &quot;<strong>save changes</strong>&quot; on the top right column of the webpage (there is also an option to save the file automatically after every edit). <strong>That's it!</strong></p><p>Another example: The roots of the quadratic equation <span class="AM">`ax^2+bx+c=0`</span> are <span class="AM">`x_(1,2)=(-b+-sqrt(b^2-4ac))/(2a)`</span>. </p></html>
<html>MathML is the W3C standard for mathematics notation on webpages. See <a href="http://w3.org/Math">http://w3.org/Math</a> for more details.</html>
<html>MathPlayer is a free plugin for InternetExplorer that allows this browser to display MathML. The plugin is available from <a href="http://dessci.com">http://dessci.com</a>.</html>
<html><p>For more information see the homepage at <a href="http://www.chapman.edu/~jipsen">http://www.chapman.edu/~jipsen</a>. </p></html>
/***\n|Name|PlayerPlugin|\n|Source|http://www.TiddlyTools.com/#PlayerPlugin|\n|Version|1.0.1|\n|Author|Eric Shulman - ELS Design Studios|\n|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|~CoreVersion|2.1|\n|Type|plugin|\n|Requires||\n|Overrides||\n|Description|Embed a media player in a tiddler|\n\n!!!!!Usage\n<<<\n{{{<<player [type] [URL] [width] [height] [hidecontrols]>>}}}\n\nwhere ''type'' is optional, and is one of the following: ''windows'', ''realone'', ''quicktime'', ''flash'' or ''image''. If the media type is not specified, the plugin automatically detects Windows, Real, QuickTime, Flash video or JPG/GIF images by matching known file extensions and/or specialized streaming-media transfer protocols (such as RTSP:). For unrecognized media types, the plugin assumes WindowsMedia (the player with the most users... *sigh*)\n\n''If you use [[AttachFilePlugin]] to encode and store a media file within your document, you can play embedded media content by using the title of the //attachment tiddler//'' as a parameter in place of the usual reference to an external URL. When playing an attached media content, you should always explicitly specify the media type parameter, because the name used for the attachment tiddler may not contain a known file extension from which a default media type can be readily determined.\n<<<\n!!!!!Configuration\n<<<\nDefault player size:\nwidth: <<option txtPlayerDefaultWidth>> height: <<option txtPlayerDefaultHeight>>\n<<<\n!!!!!Examples\n<<<\n+++[Windows Media]...\nTimes Square Live Webcam\n{{{<<player id=1 http://www.earthcam.com/usa/newyork/timessquare/asx/tsq_stream.asx>>}}}\n<<player id=1 http://www.earthcam.com/usa/newyork/timessquare/asx/tsq_stream.asx>>\n===\n+++[RealOne]...\nBBC London: Live and Recorded news\n{{{<<player id=2 http://www.bbc.co.uk/london/realmedia/news/tvnews.ram>>}}}\n<<player id=2 http://www.bbc.co.uk/london/realmedia/news/tvnews.ram>>\n===\n+++[Quicktime]...\nAmerica Free TV: Classic Comedy\n{{{<<player id=3 http://www.americafree.tv/unicast_mov/AmericaFreeTVComedy.mov>>}}}\n<<player id=3 http://www.americafree.tv/unicast_mov/AmericaFreeTVComedy.mov>>\n===\n+++[Flash]...\nAsteroids arcade game\n{{{<<player id=4 http://www.80smusiclyrics.com/games/asteroids/asteroids.swf 400 300>>}}}\n<<player id=4 http://www.80smusiclyrics.com/games/asteroids/asteroids.swf 400 300>>\nGoogle Video\n{{{<<player id=5 flash http://video.google.com/googleplayer.swf?videoUrl=http%3A%2F%2Fvp.video.google.com%2Fvideodownload%3Fversion%3D0%26secureurl%3DoQAAAIVnUNP6GYRY8YnIRNPe4Uk5-j1q1MVpJIW4uyEFpq5Si0hcSDuig_JZcB9nNpAhbScm9W_8y_vDJQBw1DRdCVbXl-wwm5dyUiiStl_rXt0ATlstVzrUNC4fkgK_j7nmse7kxojRj1M3eo3jXKm2V8pQjWk97GcksMFFwg7BRAXmRSERexR210Amar5LYzlo9_k2AGUWPLyRhMJS4v5KtDSvNK0neL83ZjlHlSECYXyk%26sigh%3Dmpt2EOr86OAUNnPQ3b9Tr0wnDms%26begin%3D0%26len%3D429700%26docid%3D-914679554478687740&thumbnailUrl=http%3A%2F%2Fvideo.google.com%2FThumbnailServer%3Fcontentid%3De7e77162deb04c42%26second%3D5%26itag%3Dw320%26urlcreated%3D1144620753%26sigh%3DC3fqXPPS1tFiUqLzmkX3pdgYc2Y&playerId=-91467955447868774 400 326>>}}}\n<<player id=5 flash http://video.google.com/googleplayer.swf?videoUrl=http%3A%2F%2Fvp.video.google.com%2Fvideodownload%3Fversion%3D0%26secureurl%3DoQAAAIVnUNP6GYRY8YnIRNPe4Uk5-j1q1MVpJIW4uyEFpq5Si0hcSDuig_JZcB9nNpAhbScm9W_8y_vDJQBw1DRdCVbXl-wwm5dyUiiStl_rXt0ATlstVzrUNC4fkgK_j7nmse7kxojRj1M3eo3jXKm2V8pQjWk97GcksMFFwg7BRAXmRSERexR210Amar5LYzlo9_k2AGUWPLyRhMJS4v5KtDSvNK0neL83ZjlHlSECYXyk%26sigh%3Dmpt2EOr86OAUNnPQ3b9Tr0wnDms%26begin%3D0%26len%3D429700%26docid%3D-914679554478687740&thumbnailUrl=http%3A%2F%2Fvideo.google.com%2FThumbnailServer%3Fcontentid%3De7e77162deb04c42%26second%3D5%26itag%3Dw320%26urlcreated%3D1144620753%26sigh%3DC3fqXPPS1tFiUqLzmkX3pdgYc2Y&playerId=-91467955447868774 400 326>>\nYouTube Video\n{{{<<player id=6 flash http://www.youtube.com/v/OdT9z-JjtJk 400 300>>}}}\n<<player id=6 flash http://www.youtube.com/v/OdT9z-JjtJk 400 300>>\n===\n+++[Still Images]...\nGIF (best for illustrations, animations, diagrams, etc.)\n{{{<<player id=7 image images/meow.gif auto auto>>}}}\n<<player id=7 image images/meow.gif auto auto>>\nJPG (best for photographs, scanned images, etc.)\n{{{<<player id=8 image images/meow2.jpg 200 150>>}}}\n<<player id=8 image images/meow2.jpg 200 150>>\n===\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''PlayerPlugin '' (tagged with <<tag systemConfig>>)\n^^documentation and javascript for macro handling^^\n<<<\n!!!!!Revision History\n<<<\n''2006.12.06 [1.0.1]'' in handler(), corrected check for config.macros.attach (instead of config.macros.attach.getAttachment) so that player plugin will work when AttachFilePlugin is NOT installed. (Thanks to Phillip Ehses for bug report)\n''2006.11.30 [1.0.0]'' support embedded media content using getAttachment() API defined by AttachFilePlugin or AttachFilePluginFormatters. Also added support for 'image' type to render JPG/GIF still images\n''2006.02.26 [0.7.0]'' major re-write. handles default params better. create/recreate player objects via loadURL() API for use with interactive forms and scripts.\n''2006.01.27 [0.6.0]'' added support for 'extra' macro params to pass through to object parameters\n''2006.01.19 [0.5.0]'' Initial ALPHA release\n''2005.12.23 [0.0.0]'' Started\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].\n<<<\n!!!!!Code\n***/\n\n// // macro definition\n\n//{{{\nversion.extensions.player = {major: 1, minor: 0, revision: 1, date: new Date(2006,12,6)};\n\nconfig.macros.player = {};\nconfig.macros.player.html = {};\nconfig.macros.player.handler= function(place,macroName,params) {\n var id=null;\n if (params[0].substr(0,3)=="id=") id=params.shift().substr(3);\n var type="";\n if ((params[0]=="windows")||(params[0]=="realone")||(params[0]=="quicktime")||(params[0]=="flash")||(params[0]=="image"))\n type=params.shift();\n var url=params.shift(); if (!url || !url.trim().length) url="";\n if (url.length && config.macros.attach!=undefined) // if AttachFilePlugin is installed\n if ((tid=store.getTiddler(url))!=null && tid.isTagged("attachment")) // if URL is attachment tiddler title\n url=config.macros.attach.getAttachment(url); // replace TiddlerTitle with attachment-expanded URL\n var width=params.shift();\n var height=params.shift();\n var show=(params.shift()=='hidecontrols')?"0":"1"; \n var extras=""; while (params[0]!=undefined) extras+="<param name='"+params.shift()+"' value='"+params.shift()+"'> ";\n this.loadURL(place,id,type,url,width,height,show,extras);\n}\n\nif (config.options.txtPlayerDefaultWidth==undefined) config.options.txtPlayerDefaultWidth="100%";\nif (config.options.txtPlayerDefaultHeight==undefined) config.options.txtPlayerDefaultHeight="480"; // can't use "100%"... player height doesn't stretch right :-(\n\nconfig.macros.player.loadURL=function(place,id,type,url,width,height,show,extras) {\n\n if (id==undefined) id="tiddlyPlayer";\n if (!width) var width=config.options.txtPlayerDefaultWidth;\n if (!height) var height=config.options.txtPlayerDefaultHeight;\n if (url && (!type || !type.length)) { // determine type from URL\n u=url.toLowerCase();\n if ((u.indexOf('mms')!=-1)||(u.indexOf('.asx')!=-1)||(u.indexOf('.wvx')!=-1)||(u.indexOf('.wmv')!=-1)||(u.indexOf('.mp3')!=-1))\n var type="windows";\n else if ((u.indexOf('rtsp')!=-1)||(u.indexOf('.ram')!=-1)||(u.indexOf('.rpm')!=-1)||(u.indexOf('.rm' )!=-1)||(u.indexOf('.ra' )!=-1))\n var type="realone";\n else if ((u.indexOf('.mov')!=-1)||(u.indexOf('.qt' )!=-1))\n var type="quicktime";\n else if ((u.indexOf('.swf')!=-1)||(u.indexOf('.flv')!=-1))\n var type="flash";\n else if ((u.indexOf('.jpg')!=-1)||(u.indexOf('.gif')!=-1))\n var type="image";\n }\n if (!type) var type="none";\n if (!url) var url="";\n if (show===undefined) var show=true;\n if (!extras) var extras="";\n if (type=="none" && url.trim().length) url="<br>unrecognized media type:<br>"+url;\n if (type=="realone") height-=show?60:0; // leave room for controls\n if (type=="windows") show=show?"1":"0"; // player-specific param value\n if (type=="realone") show=show?"block":"none";\n if (type=="quicktime") show=show?"true":"false";\n if (type=="image") show=show?"block":"none";\n\n // create containing div for player HTML\n // and add or replace player in TW DOM structure\n var newplayer = document.createElement("div");\n newplayer.playerType=type;\n newplayer.setAttribute("id",id+"_div");\n var existing = document.getElementById(id+"_div");\n if (existing && !place) place=existing.parentNode;\n if (!existing)\n place.appendChild(newplayer);\n else {\n if (place==existing.parentNode) place.replaceChild(newplayer,existing)\n else { existing.parentNode.removeChild(existing); place.appendChild(newplayer); }\n }\n\n var html=config.macros.player.html[type];\n html=html.replace(/%i%/mg,id);\n html=html.replace(/%w%/mg,width);\n html=html.replace(/%h%/mg,height);\n html=html.replace(/%u%/mg,url);\n html=html.replace(/%s%/mg,show);\n html=html.replace(/%x%/mg,extras);\n newplayer.innerHTML=html;\n}\n//}}}\n\n// // Player-specific API functions: isReady(id), isPlaying(id), toggleControls(id), showControls(id,flag)\n\n//{{{\n// status values:\n// Windows: 0=Undefined, 1=Stopped, 2=Paused, 3=Playing, 4=ScanForward, 5=ScanReverse\n// 6=Buffering, 7=Waiting, 8=MediaEnded, 9=Transitioning, 10=Ready, 11=Reconnecting\n// RealOne: 0=Stopped, 1=Contacting, 2=Buffering, 3=Playing, 4=Paused, 5=Seeking\n// QuickTime: 'Waiting', 'Loading', 'Playable', 'Complete', 'Error:###'\n// Flash: 0=Loading, 1=Uninitialized, 2=Loaded, 3=Interactive, 4=Complete\nconfig.macros.player.isReady=function(id)\n{\n var d=document.getElementById(id+"_div"); if (!d) return false;\n var p=document.getElementById(id); if (!p) return false;\n if (d.playerType=='windows') return !((p.playState==0)||(p.playState==7)||(p.playState==9)||(p.playState==11));\n if (d.playerType=='realone') return (p.GetPlayState()>1);\n if (d.playerType=='quicktime') return !((p.getPluginStatus()=='Waiting')||(p.getPluginStatus()=='Loading'));\n if (d.playerType=='flash') return (p.ReadyState>2);\n return true;\n}\nconfig.macros.player.isPlaying=function(id)\n{\n var d=document.getElementById(id+"_div"); if (!d) return false;\n var p=document.getElementById(id); if (!p) return false;\n if (d.playerType=='windows') return (p.playState==3);\n if (d.playerType=='realone') return (p.GetPlayState()==3);\n if (d.playerType=='quicktime') return (p.getPluginStatus()=='Complete');\n if (d.playerType=='flash') return (p.ReadyState<4);\n return false;\n}\nconfig.macros.player.showControls=function(id,flag) {\n var d=document.getElementById(id+"_div"); if (!d) return false;\n var p=document.getElementById(id); if (!p) return false;\n if (d.playerType=='windows') { p.ShowControls=flag; p.ShowStatusBar=flag; }\n if (d.playerType=='realone') { alert('show/hide controls not available'); }\n if (d.playerType=='quicktime') // if player not ready, retry in one second\n { if (this.isReady(id)) p.setControllerVisible(flag); else setTimeout('config.macros.player.showControls("'+id+'",'+flag+')',1000); }\n if (d.playerType=='flash') { alert('show/hide controls not available'); }\n}\nconfig.macros.player.toggleControls=function(id) {\n var d=document.getElementById(id+"_div"); if (!d) return false;\n var p=document.getElementById(id); if (!p) return false;\n if (d.playerType=='windows') var flag=!p.ShowControls;\n if (d.playerType=='realone') var flag=true; // TBD\n if (d.playerType=='quicktime') var flag=!p.getControllerVisible();\n if (d.playerType=='flash') var flag=true; // TBD\n this.showControls(id,flag);\n}\nconfig.macros.player.fullScreen=function(id) {\n var d=document.getElementById(id+"_div"); if (!d) return false;\n var p=document.getElementById(id); if (!p) return false;\n if (d.playerType=='windows') p.DisplaySize=3;\n if (d.playerType=='realone') p.SetFullScreen();\n if (d.playerType=='quicktime') { alert('full screen not available'); }\n if (d.playerType=='flash') { alert('full screen not available'); }\n}\n//}}}\n\n// // Player HTML\n\n//{{{\n// placeholder (no player)\nconfig.macros.player.html.none=' \s\n <table id="%i%" width="%w%" height="%h%" style="background-color:#111;border:0;margin:0;padding:0;"> \s\n <tr style="background-color:#111;border:0;margin:0;padding:0;"> \s\n <td width="%w%" height="%h%" style="background-color:#111;color:#ccc;border:0;margin:0;padding:0;text-align:center;"> \s\n &nbsp; \s\n %u% \s\n &nbsp; \s\n </td></tr></table>';\n//}}}\n\n//{{{\n// JPG/GIF still images\nconfig.macros.player.html.image='\s\n <img width="%w%" height="%h%" style="display:%s%;" src="%u%">';\n//}}}\n\n//{{{\n// Windows Media Player\n// v7.1 ID: classid=CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6\n// v9 ID: classid=CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95\nconfig.macros.player.html.windows=' \s\n <object id="%i%" width="%w%" height="%h%" style="margin:0;padding:0;" \s\n classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" \s\n codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" \s\n align="baseline" border="0" \s\n standby="Loading Microsoft Windows Media Player components..." \s\n type="application/x-oleobject"> \s\n <param name="FileName" value="%u%"> <param name="ShowControls" value="%s%"> \s\n <param name="ShowPositionControls" value="1"> <param name="ShowAudioControls" value="1"> \s\n <param name="ShowTracker" value="1"> <param name="ShowDisplay" value="0"> \s\n <param name="ShowStatusBar" value="1"> <param name="AutoSize" value="1"> \s\n <param name="ShowGotoBar" value="0"> <param name="ShowCaptioning" value="0"> \s\n <param name="AutoStart" value="1"> <param name="AnimationAtStart" value="1"> \s\n <param name="TransparentAtStart" value="0"> <param name="AllowScan" value="1"> \s\n <param name="EnableContextMenu" value="1"> <param name="ClickToPlay" value="1"> \s\n <param name="InvokeURLs" value="1"> <param name="DefaultFrame" value="datawindow"> \s\n %x% \s\n <embed src="%u%" style="margin:0;padding:0;" \s\n align="baseline" border="0" width="%w%" height="%h%" \s\n type="application/x-mplayer2" \s\n pluginspage="http://www.microsoft.com/windows/windowsmedia/download/default.asp" \s\n name="%i%" showcontrols="%s%" showpositioncontrols="1" \s\n showaudiocontrols="1" showtracker="1" showdisplay="0" \s\n showstatusbar="%s%" autosize="1" showgotobar="0" showcaptioning="0" \s\n autostart="1" autorewind="0" animationatstart="1" transparentatstart="0" \s\n allowscan="1" enablecontextmenu="1" clicktoplay="0" invokeurls="1" \s\n defaultframe="datawindow"> \s\n </embed> \s\n </object>';\n//}}}\n\n//{{{\n// RealNetworks' RealOne Player\nconfig.macros.player.html.realone=' \s\n <table width="%w%" style="border:0;margin:0;padding:0;"><tr style="border:0;margin:0;padding:0;"><td style="border:0;margin:0;padding:0;"> \s\n <object id="%i%" width="%w%" height="%h%" style="margin:0;padding:0;" \s\n CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"> \s\n <PARAM NAME="CONSOLE" VALUE="player"> \s\n <PARAM NAME="CONTROLS" VALUE="ImageWindow"> \s\n <PARAM NAME="AUTOSTART" Value="true"> \s\n <PARAM NAME="MAINTAINASPECT" Value="true"> \s\n <PARAM NAME="NOLOGO" Value="true"> \s\n <PARAM name="BACKGROUNDCOLOR" VALUE="#333333"> \s\n <PARAM NAME="SRC" VALUE="%u%"> \s\n %x% \s\n <EMBED width="%w%" height="%h%" controls="ImageWindow" type="audio/x-pn-realaudio-plugin" style="margin:0;padding:0;" \s\n name="%i%" \s\n src="%u%" \s\n console=player \s\n maintainaspect=true \s\n nologo=true \s\n backgroundcolor=#333333 \s\n autostart=true> \s\n </OBJECT> \s\n </td></tr><tr style="border:0;margin:0;padding:0;"><td style="border:0;margin:0;padding:0;"> \s\n <object id="%i%_controls" width="%w%" height="60" style="margin:0;padding:0;display:%s%" \s\n CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"> \s\n <PARAM NAME="CONSOLE" VALUE="player"> \s\n <PARAM NAME="CONTROLS" VALUE="All"> \s\n <PARAM NAME="NOJAVA" Value="true"> \s\n <PARAM NAME="MAINTAINASPECT" Value="true"> \s\n <PARAM NAME="NOLOGO" Value="true"> \s\n <PARAM name="BACKGROUNDCOLOR" VALUE="#333333"> \s\n <PARAM NAME="SRC" VALUE="%u%"> \s\n %x% \s\n <EMBED WIDTH="%w%" HEIGHT="60" NOJAVA="true" type="audio/x-pn-realaudio-plugin" style="margin:0;padding:0;display:%s%" \s\n controls="All" \s\n name="%i%_controls" \s\n src="%u%" \s\n console=player \s\n maintainaspect=true \s\n nologo=true \s\n backgroundcolor=#333333> \s\n </OBJECT> \s\n </td></tr></table>';\n//}}}\n\n//{{{\n// QuickTime Player\nconfig.macros.player.html.quicktime=' \s\n <OBJECT ID="%i%" WIDTH="%w%" HEIGHT="%h%" style="margin:0;padding:0;" \s\n CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" \s\n CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab"> \s\n <PARAM name="SRC" VALUE="%u%"> \s\n <PARAM name="AUTOPLAY" VALUE="true"> \s\n <PARAM name="CONTROLLER" VALUE="%s%"> \s\n <PARAM name="BGCOLOR" VALUE="#333333"> \s\n <PARAM name="SCALE" VALUE="aspect"> \s\n <PARAM name="SAVEEMBEDTAGS" VALUE="true"> \s\n %x% \s\n <EMBED name="%i%" WIDTH="%w%" HEIGHT="%h%" style="margin:0;padding:0;" \s\n SRC="%u%" \s\n AUTOPLAY="true" \s\n SCALE="aspect" \s\n CONTROLLER="%s%" \s\n BGCOLOR="#333333" \s\n EnableJavaSript="true" \s\n PLUGINSPAGE="http://www.apple.com/quicktime/download/"> \s\n </EMBED> \s\n </OBJECT>';\n//}}}\n\n//{{{\n// Flash Player\nconfig.macros.player.html.flash='\s\n <object id="%i%" width="%w%" height="%h%" style="margin:0;padding:0;" \s\n classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" \s\n codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"> \s\n <param name="movie" value="%u%"> \s\n <param name="quality" value="high"> \s\n <param name="SCALE" value="exactfit"> \s\n <param name="bgcolor" value="333333"> \s\n %x% \s\n <embed name="%i%" src="%u%" style="margin:0;padding:0;" \s\n height="%h%" width="%w%" quality="high" \s\n pluginspage="http://www.macromedia.com/go/getflashplayer" \s\n type="application/x-shockwave-flash" scale="exactfit"> \s\n </embed> \s\n </object>';\n//}}}
*Test 1\n**[[Sample Problems|tests/mat335summer07Test1SampleProblems.html]] [[(pdf)|tests/mat335summer07Test1SampleProblems.pdf]]\n*Test 2\n**[[Sample Problems|tests/mat335summer07Test2SampleProblems.html]] [[(pdf)|tests/mat335summer07Test2SampleProblems.pdf]]\n*Test 3\n**[[Sample Problems|tests/mat335summer07Test3SampleProblems.html]] [[(pdf)|tests/mat335summer07Test3SampleProblems.pdf]]\n*Final Exam\n**[[Practice Problems (pdf)|tests/mat335spring07FinalSampleProblems.pdf]]\n\n
*[[Quiz 1|quizzes/mat335summer07Quiz1.html]]\n*[[Quiz 2|quizzes/mat335summer07Quiz2.html]]\n*[[Quiz 3|quizzes/mat335summer07Quiz3.html]]\n*[[Quiz 4|quizzes/mat335summer07Quiz4.html]]\n*[[Quiz 5|quizzes/mat335summer07Quiz5.html]]\n*[[Quiz 6|quizzes/mat335summer07Quiz6.html]]\n*[[Quiz 7|quizzes/mat335summer07Quiz7.html]]\n
<html><div style="text-align: left; color: rgb(0, 51, 255);"><span style="font-weight: bold;"><span style="background-color: rgb(255, 255, 255);"><br />Information:<br /><br /></span><table border="1" style="width: 100%;"><tbody><tr><td><span style="font-weight: bold;">Name:</span></td><td><span style="font-weight: bold;">HTMLAreaPlugin</span></td></tr><tr><td><span style="font-weight: bold;">Version</span></td><td><span style="font-weight: bold;">2.1.2(Oct 5</span><span style="font-weight: bold;"><span style="font-weight: bold;">, 2006</span></span><span style="font-weight: bold;">)</span></td></tr><tr><td><span style="font-weight: bold;">Source</span></td><td><span style="font-weight: bold;">http://sourceforge.net/project/showfiles.php?group_id=150646</span></td></tr><tr><td><span style="font-weight: bold;">Author</span></td><td><span style="font-weight: bold;">BramChen<br /></span></td></tr><tr><td style="vertical-align: top;"><span style="font-weight: bold;">Original</span><br /></td><td style="vertical-align: top;"><span style="font-weight: bold;">Asciencepad, hijacked by PeterJipsen</span><br /></td></tr><tr><td style="vertical-align: top; font-weight: bold;">License<br /></td><td style="vertical-align: top; font-weight: bold;">Creative Commons Attribution-ShareAlike 2.5 License<br /></td></tr><tr><td><span style="font-weight: bold;">Type</span></td><td><span style="font-weight: bold;">Plugin</span></td></tr></tbody></table><br />Required:<br /></span><ul><li>TiddlyWiki 2.1.0<br /></li><li>HtmlArea eitor modified by PeterJipsen</li></ul><span style="font-weight: bold;">Reference:</span> <br /><div style="margin-left: 40px;">http://math.chapman.edu/~jipsen/asciencepad/asciencepad.html<br /><br /></div><span style="font-weight: bold;">Installation: </span><br /><ul><li>Add below statement to <span style="font-weight: bold;">MarkupPostHead</span></li></ul><span style="background-color: rgb(153, 255, 255);">&lt;script type=&quot;text/javascript&quot; src=&quot;HTMLArea/htmlareaPlugin.js&quot;&gt;&lt;/script&gt;</span><br /><ul><li>Add below statements to <span style="font-weight: bold;">MarkupPreHead</span></li></ul><span style="background-color: rgb(153, 255, 255);">&lt;!--PJ--&gt;</span><br /><span style="background-color: rgb(153, 255, 255);">&lt;script type=&quot;text/javascript&quot; src=&quot;HTMLArea/plugins/AsciiMath/ASCIIMathML.js&quot;&gt;&lt;/script&gt;</span><br style="background-color: rgb(153, 255, 255);" /><span style="background-color: rgb(153, 255, 255);">&lt;script type=&quot;text/javascript&quot; src=&quot;HTMLArea/plugins/AsciiSvg/ASCIIsvg.js&quot;&gt;&lt;/script&gt;</span><br style="background-color: rgb(153, 255, 255);" /><span style="background-color: rgb(153, 255, 255);">&lt;script type=&quot;text/javascript&quot; src=&quot;HTMLArea/plugins/AsciiSvg/ASCIIsvgAddon.js&quot;&gt;&lt;/script&gt;</span><br style="background-color: rgb(153, 255, 255);" /><span style="background-color: rgb(153, 255, 255);">&lt;!--script type=&quot;text/javascript&quot; src=&quot;HTMLArea/plugins/AsciiMath/ASCIIMathCalculator.js&quot;&gt;&lt;/script--&gt;</span><br style="background-color: rgb(153, 255, 255);" /><span style="background-color: rgb(153, 255, 255);">&lt;script type=&quot;text/javascript&quot;&gt;</span><br style="background-color: rgb(153, 255, 255);" /><span style="background-color: rgb(153, 255, 255);"> _editor_url = &quot;HTMLArea/&quot;;</span><br style="background-color: rgb(153, 255, 255);" /><span style="background-color: rgb(153, 255, 255);"> _editor_lang = &quot;en&quot;; </span><span style="background-color: rgb(153, 255, 255);">// or zh-tw, zh-cn ....</span><br style="background-color: rgb(153, 255, 255);" /><span style="background-color: rgb(153, 255, 255);">&lt;/script&gt;</span><br style="background-color: rgb(153, 255, 255);" /><span style="background-color: rgb(153, 255, 255);">&lt;script type=&quot;text/javascript&quot; src=&quot;HTMLArea/htmlarea.js&quot;&gt;&lt;/script&gt;</span><br style="background-color: rgb(153, 255, 255);" /><span style="background-color: rgb(153, 255, 255);">&lt;!--PJ--&gt;</span><br /><ul><li>Save changes and reload page.</li></ul><span style="font-weight: bold;">Uninstall:<br /></span><ul><li>Remove all lines of Markup* added from installation step, save changes and reload page.. <br /></li></ul><ul><li>or Open TW document in your edtior, and remove all lines added from installation step.<br /></li></ul><br /><span style="font-weight: bold;">Note: </span><br /><div style="margin-left: 40px;"><ul><li>Do not install this plugin as &quot;systemConfig&quot;.</li><li>The content of tiddler is no more with wiki texts but a big <span style="font-weight: bold;"></span><br /><span style="font-weight: bold;">&amp;lt;html&amp;gt;blahblah&amp;lt;/html&amp;gt; </span>block.</li></ul></div><br /></div></html>
<html>SVG is the W3C standard for scalable vector graphics on webpages. See <a href="http://www.w3.org/Graphics/SVG/">http://www.w3.org/Graphics/SVG/</a> for more details.</html>
\n<<tabs Schedule\nWeek1 "Week1" [[Week1]]\nWeek2 "Week2" [[Week2]]\nWeek3 "Week3" [[Week3]]\nWeek4 "Week4" [[Week4]]\nWeek5 "Week5" [[Week5]]\n>>\n\n
<<slideShow>>\n\n-s-\n!The Product Rule\n\nIf $f$ and $g$ are both differentiable, then\n<html><div style="text-align: center;">\n$\sfrac{d}{dx}[f(x)+g(x)] = f(x)\sfrac{d}{dx}[g(x)] + g(x)\sfrac{d}{dx}[f(x)]$\n</div></html>\n\n\n-s-\n!Example\n\nFind the derivative of $y=\sfrac{1}{x}(x^2 + \sfrac{1}{x}).\n\n\n\n\n-s-\n!The Reciprocal Rule\n\nIf $g$ is differentiable, then\n<html><div style="text-align: center;">\n$\sfrac{d}{dx}[\sfrac{1}{g(x)}] = - \sfrac{g'(x)}{[g(x)]^2}$\n</div></html>\n\n\n-s-\n!The Power Rule for Negative Integers\n\nIf $n$ is a negative integer and $x \sne 0$, then\n<html><div style="text-align: center;">\n$\sfrac{d}{dx}(x^n) = nx^{n-1}$\n</div></html>\n\n\n-s-\n!The Quotient Rule\n\nIf $f$ and $g$ are differentiable, then\n<html><div style="text-align: center;">\n$\sfrac{d}{dx}[\sfrac{f(x)}{g(x)}] = \sfrac{g(x)\sfrac{d}{dx}[f(x)] - f(x)\sfrac{d}{dx}[g(x)]}{[g(x)]^2}$\n</div></html>\n\n-s-\n!Example\n\nFind the derivative of $y=\sfrac{(x-1)(x^2-2x)}{x^4}$.\n\n\n-s-\n!A Witch of Agnesi\n\nFind an equation for the tangent line to the //witch of Agnesi// given by\n<html><div style="text-align: center;">\n$f(x)=\sfrac{8}{x^2+4}$\n</div></html>\nat the point $(2,1)$.\n\n\n\n-s-\n!A Serpentine\n\nFind an equation for the tangent line to //Newton's serpentine// given by\n<html><div style="text-align: center;">\n$f(x)=\sfrac{4x}{x^2+1}$\n</div></html>\nat the point $(1,2)$.\n\n\n
/***\n|''Name:''|~SectionMacro|\n|''Version:''|0.9.3 (19-Apr-2007)|\n|''Author:''|[[Jack]]|\n|''Type:''|Macro|\n!Description\nAllows you to create collapsable sections just like the slider macro but without needing to create new tiddlers for these sections.\n!Usage\n{{{<<section Title Tiddler Text goes here...\nand can be multi-\nline and include {${${monospace text}$}$}.\n>>}}}\n<<section Title Tiddler Text goes here...\nand can be multi-\nline and include {${${monospace text}$}$}.\n>>\n!Revision History\n* Original by [[Jack]] 0.9\n* Nested sliders and cookie persistence 0.9.1\n* Removed crappy cookie persistance 0.9.2\n* Bug-fix with quoted 2st parameter (thanks M. Macolio) 0.9.3\n* Bug-fix with monospace text (thanks M. Macolio) 0.9.4\n!Code\n***/\n//{{{\nversion.extensions.section = {major: 0, minor: 9, revision: 3, date: new Date("Apr 19, 2007")};\n\nconfig.macros.section = {count:0,display:'none'};\nconfig.macros.section.handler = function(place,macroName,params,wikifier,paramString,tiddler) {\n this.slider(place,"chkSection" + this.count++,paramString.substr(params[0].length+(paramString.substr(params[0].length+1,1).match(/['"]/)?2:1)).replace(/\s$\s>/g, '>').replace(/}\s$}\s$}/, '}}}').replace(/{\s${\s${/, '{{{'),params[0], "tooltip");\n}\n\nconfig.macros.section.slider = function(place,cookie,text,title,tooltips) {\n var btn = createTiddlyButton(place,title,tooltips,config.macros.slider.onClickSlider); \n var panel = createTiddlyElement(place,"div",null,"timelineSliderPanel",null);\n panel.setAttribute("cookie",cookie);\n panel.style.display = config.options[cookie] ? "block" : "none";\n panel.style.display=this.display;\n if(text) wikify(text,panel);\n};\n//}}}
[[Sequences|lectures/section11-1.html]]\n<html>\n<iframe src="lectures/section11-1.html" style="width: 95%; height: 400px;" id="external" />\n</html>
Linear Algebra Summer II 2007
MAT 335
http://www.math.chapman.edu/asp/asciencepad.html
<<slideShow>> - A simple slide show that keeps the TW style \n<<slideShow style:'MySSStyleSheet' clock:'+'>> - A themed slide show with a clock showing the presentation elapsed time\n<<slideShow repeat clock:'-20'>> - A looping slide show with a 20 minutes countdown clock\n<<slideShow slidePause:1000>> - A timed slideshow that runs once\n<<slideShow slidePause:1000 repeat>> - A timed looping slideshow\n-s-\n!The [[SlideShowPlugin]]\nPress F11 to go fullscreen and adjust the font sizes with Ctrl++ Ctrl+- (or Ctrl+mousewheel).\n\nThis plugin was developed by Paulo Soares and Clint Checketts.\n{{Comment{This block is not shown in the slide show.\n@@Don't show me!!!@@}}}\n-s-\n!How slides are separated\nIn a tiddler, you start each slide with the markup {{{-s-}}}\n-s-\nSlides don't have to have titles like this poor one but can have images.\n[img[photos/lisboa-0.jpg]]\n-s-\n!A slide with subsections and a long title\nCheck to TOC below to see how this slide title is abbreviated.\n!!Section 1\nThis is a section\n!!!Subsection 1.1\nThis is a subsection\n!!!Subsection 1.2\nThis is another subsection\n!!!!Subsubsection 1.2.1\nThis is a subsubsection\n-s-\n!Using the keyboard\nThe following keys are defined:\n*Left arrow - previous overlay\n*Down arrow - previous slide\n*Right arrow - next overlay\n*Up arrow - next slide\n*Home - first slide\n*End - last slide\n*Escape - exit slide show\n*Spacebar - pause/resume slide show in auto advance mode\n-s-\n!Slide show parameters\n*The slide show can be themed by providing a ~StyleSheet ({{{<<slideShow style:'MyStyleSheet'>>}}})\n*By default, there is a clock at bottom of the browser window that displays the current time. This clock can also show the presentation elapsed time with {{{<<slideShow clock:'+'>>}}} or a countdown clock with {{{<<slideShow clock:'-20'>>}}} (for 20 minutes). In these two cases, if you click on the clock display it will be restarted\n*The slide show can be set to loop ({{{<<slideShow repeat>>}}})\n*You can set it so each slide changes after X milliseconds ({{{<<slideShow slidePause:X>>}}}) (auto advance mode)\n*Use auto start mode to begin the slideshow the moment the tiddler is opened ({{{<<slideShow autostart>>>}}})\n*You can disable overlays with {{{<<slideShow noOverlays>>}}}\n*These parameters can be mixed and matched in any order: {{{<<slideShow slidePause:1000 repeat>>}}} is the same as {{{<<slideShow repeat slidePause:1000>>}}}\n-s-\n!Overlays\nTo see how incremental display works use the left and right mouse buttons.\n{{Overlay1{You can}}} {{Overlay2{present things}}} {{Overlay1{in an arbitrary order!!!}}}\n{{Overlay3{Its a bit harder with lists but it works:}}}\n<html>\n<ol>\n<li class="Overlay4">First item</li>\n<li class="Overlay5">Second item</li>\n<li class="Overlay4">Last item</li>\n</ol>\n</html>\n{{Comment{You can hide comments on a slide that won't display in the slide show}}}
<!--{{{-->\n<div id='displayArea'>\n<div id='tiddlerDisplay'></div>\n</div>\n<!--}}}-->
/***\n|''Name:''|SlideShowPlugin|\n|''Description:''|Creates a simple slide show type display|\n|''Version:''|1.5.1|\n|''Date:''|Nov 10, 2006|\n|''Source:''|http://www.math.ist.utl.pt/~psoares/addons.html|\n|''Author:''|Paulo Soares (psoares (at) math (dot) ist (dot) utl (dot) pt) and [[Clint Checketts|http://www.checkettsweb.com]]|\n|''License:''|[[BSD open source license]]|\n|''~CoreVersion:''|2.1.0|\n|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|\n<<tiddler SlideShowPluginDoc>>\n!Code\n***/\n//{{{\nconfig.macros.slideShow = {label: "slide show", maxTOCLength: 30};\nconfig.macros.slideShow.messages = {gotoLabel: "Go to slide:"};\nconfig.views.wikified.slideShow = {text: "slide show", tooltip: "Start slide show"};\nconfig.views.wikified.slideShow.quit = {text: "end", tooltip: "Quit the slide show"};\nconfig.views.wikified.slideShow.firstSlide = {text: "<<", tooltip: "first slide"};\nconfig.views.wikified.slideShow.previousSlide = {text: "<", tooltip: "previous slide"};\nconfig.views.wikified.slideShow.nextSlide = {text: ">", tooltip: "next slide"};\nconfig.views.wikified.slideShow.lastSlide = {text: ">>", tooltip: "last slide"};\nconfig.views.wikified.slideShow.resetClock = {text: " ", tooltip: "reset"};\n\nconfig.formatters.push( {\n name: "SlideSeparator",\n match: "^-s-+$\s\sn?",\n handler: function(w)\n {\n createTiddlyElement(w.output,"hr",null,'slideSeparator');\n }\n}\n)\n\nfunction changeStyleSheet(tiddlerName) {\n if (tiddlerName == null) tiddlerName = "StyleSheet";\n setStylesheet(store.getRecursiveTiddlerText("StyleSheetColors"),"StyleSheetColors");\n setStylesheet(store.getRecursiveTiddlerText("StyleSheetLayout"),"StyleSheetLayout");\n var theCSS = store.getRecursiveTiddlerText(tiddlerName,"");\n setStylesheet(theCSS,"StyleSheet");\n}\n\n//Excellent (and versatile) reparser created by Paul Petterson for parsing the paramString in a macro\nfunction reparse( params ) {\n var re = /([^:\ss]+)(?:\s:((?:\sd+)|(?:["'](?:[^"']+)["']))|\ss|$)/g;\n var ret = new Array() ;\n var m ;\n while( (m = re.exec( params )) != null ) ret[ m[1] ] = m[2]?m[2]:true ;\n return ret ;\n}\n\nfunction getElementsByClass(searchClass,node,tag) {\n var classElements = new Array();\n if ( node == null ) node = document;\n if ( tag == null ) tag = '*';\n var els = node.getElementsByTagName(tag);\n var elsLen = els.length;\n var pattern = new RegExp("(^|\s\ss)"+searchClass+"(\s\ss|$)");\n var j=0;\n for (var i = 0; i < elsLen; i++) {\n if ( pattern.test(els[i].className) ) {\n classElements[j] = els[i];\n j++;\n }\n }\n return classElements;\n}\n\n// 'keys' code adapted from S5 which in turn was adapted from MozPoint (http://mozpoint.mozdev.org/)\nfunction keys(key) {\n if (document.getElementById('contentWrapper').className == "slideShowMode"){\n if (!key) {\n key = event;\n key.which = key.keyCode;\n }\n switch (key.which) {\n case 32: // spacebar\n if(time>0){\n if(autoAdvance){\n clearInterval(autoAdvance);\n autoAdvance = null;\n } else {\n autoAdvance=setInterval("GoToSlide(1)", time);\n }\n }\n break;\n case 34: // page down\n case 39: // rightkey\n GoToSlide("n");\n break;\n // case 40: // downkey\n GoToSlide(-1);\n break;\n case 33: // page up\n case 37: // leftkey\n GoToSlide("p");\n break;\n // case 38: // upkey\n GoToSlide(1);\n break;\n case 36: // home\n GoToSlide("f");\n break;\n case 35: // end\n GoToSlide("l");\n break;\n case 27: // escape\n endSlideShow();\n break;\n }\n\n }\n return false;\n}\n\nfunction clicker(e) {\n if (!e) var e = window.event;\n var target = resolveTarget(e);\n //Whenever something is clicked that won't advance the slide make sure that the table of contents gets hidden\n if (target.getAttribute('href') != null || isParentOrSelf(target, 'toc') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object') || isParentOrSelf(target, 'pageFooter') || isParentOrSelf(target, 'navigator')){\n //Don't hide the TOC if the indexNumbers (which trigger the index) is clicked\n if(isParentOrSelf(target,'indexNumbers') || isParentOrSelf(target,'jumpInput')){\n return true;\n }\n showHideTOC('none');\n return true;\n }\n \n //Advance a slide if the TOC is visible otherwise make sure that the TOC gets hidden\n if ((!e.which && e.button == 1) || e.which == 1) {\n if (document.getElementById('toc').style.display != 'block'){\n GoToSlide("n");\n } else {\n showHideTOC('none');\n }\n }\n \n if ((!e.which && e.button == 2) || e.which == 3) {\n if (document.getElementById('toc').style.display != 'block'){\n GoToSlide("p");\n } else {\n showHideTOC('none');\n }\n return false;\n }\n}\n\nfunction isParentOrSelf(element, id) {\n if (element == null || element.nodeName=='BODY') return false;\n else if (element.id == id) return true;\n else return isParentOrSelf(element.parentNode, id);\n}\n\nGoToSlide=function(step) {\n var new_pos;\n var slideHolder = document.getElementById('slideContainer');\n //The parse float ensures that the attribute is returned as a number and not a string.\n var cur_pos = parseFloat(slideHolder.getAttribute('currentslide'));\n var numberSlides = parseFloat(slideHolder.getAttribute('numberSlides'));\n switch (step) {\n case "f":\n new_pos=0;\n break;\n case "l":\n new_pos=numberSlides-1;\n break;\n case "n":\n var numberOverlays = parseFloat(slideHolder.childNodes[cur_pos].getAttribute('numberOverlays'));\n var currentOverlay = parseFloat(slideHolder.getAttribute('currentOverlay'));\n if(numberOverlays==0 || currentOverlay==numberOverlays){\n new_pos=cur_pos+1;\n } else {\n var className="Overlay"+currentOverlay;\n var overlay=getElementsByClass(className,slideHolder.childNodes[cur_pos]);\n for(var i=0; i<overlay.length; i++) {overlay[i].className=className+' previousOverlay';}\n currentOverlay++;\n slideHolder.setAttribute('currentOverlay',currentOverlay);\n className="Overlay"+currentOverlay;\n overlay=getElementsByClass(className,slideHolder.childNodes[cur_pos]);\n for(i=0; i<overlay.length; i++) {overlay[i].className=className+' currentOverlay';}\n return false;\n }\n break;\n case "p":\n var numberOverlays = parseFloat(slideHolder.childNodes[cur_pos].getAttribute('numberOverlays'));\n var currentOverlay = parseFloat(slideHolder.getAttribute('currentOverlay'));\n if(numberOverlays==0 || currentOverlay==0){\n new_pos=cur_pos-1;\n } else {\n var className="Overlay"+currentOverlay;\n var overlays=getElementsByClass(className,slideHolder.childNodes[cur_pos]);\n for(var i=0; i<overlays.length; i++) {overlays[i].className=className+' nextOverlay';}\n currentOverlay--;\n className="Overlay"+currentOverlay;\n overlays=getElementsByClass(className,slideHolder.childNodes[cur_pos]);\n for(i=0; i<overlays.length; i++) {overlays[i].className=className+' currentOverlay';}\n slideHolder.setAttribute('currentOverlay',currentOverlay);\n return false;\n }\n break;\n default:\n new_pos=cur_pos+step;\n }\n\n if(slideShowCircularMode && new_pos == numberSlides) new_pos=0;\n if(slideShowCircularMode && new_pos<0) new_pos=(numberSlides - 1);\n if(step!=0 && new_pos>=0 && new_pos<numberSlides) {\n slideHolder.childNodes[cur_pos].style.display='none';\n slideHolder.childNodes[new_pos].style.display='block';\n slideHolder.setAttribute('currentslide',new_pos);\n var numberOverlays = parseFloat(slideHolder.childNodes[new_pos].getAttribute('numberOverlays'));\n if(step=="p"){\n var currentOverlay=numberOverlays;\n var state=' previousOverlay';\n } else {\n var currentOverlay=0;\n var state=' nextOverlay';\n }\n slideHolder.setAttribute('currentOverlay',currentOverlay);\n if(numberOverlays>0) {\n for(var i=1; i<=numberOverlays; i++){\n var className="Overlay"+i;\n var overlays=getElementsByClass(className,slideHolder.childNodes[new_pos]);\n for(var j=0; j<overlays.length; j++) {overlays[j].className=className+state;}\n }\n if(step=="p"){\n var className="Overlay"+numberOverlays;\n var overlays=getElementsByClass(className,slideHolder.childNodes[new_pos]);\n for(var j=0; j<overlays.length; j++) {overlays[j].className=className+' currentOverlay';}\n }\n }\n new_pos++;\n var indexNumbers = document.getElementById('indexNumbers');\n indexNumbers.firstChild.data = new_pos+'/'+numberSlides;\n if((new_pos==numberSlides) && !slideShowCircularMode && autoAdvance) clearInterval(autoAdvance);\n return true;\n }\n return false;\n}\n\nfunction tocShowSlide(e) {\n if (!e) var e = window.event;\n var target = resolveTarget(e);\n var slide = target.getAttribute('slideNumber');\n var cur_pos = document.getElementById('slideContainer').getAttribute('currentslide');\n var step = slide-cur_pos;\n if(step!=0) GoToSlide(step);\n showHideTOC('none');\n return;\n}\n\n//Toggle the display of the table of contents\nfunction showHideTOC(display){\n var toc = document.getElementById('toc');\n //Reset the input box\n document.getElementById('jumpInput').value = "";\n\n if (display == null || display.length == null){\n if (toc.style.display == 'none' || toc.style.display == ''){\n toc.style.display = 'block';\n document.getElementById('jumpInput').focus();\n } else {\n toc.style.display = 'none';\n }\n } else {\n toc.style.display = display;\n if (display == 'block')\n document.getElementById('jumpInput').focus();\n }\n}\n\nfunction makeSignature(title,params){\n var signature = title+store.getTiddler(title).modified;\n if(params['style']) signature += params['style'];\n if(params['repeat']) signature += "repeat";\n if(params['slidePause'] > 0) signature += params['slidePause'];\n if(params['autostart']) signature += "autostart";\n if(params['clock']) signature += params['clock'];\n if(params['noOverlays']) signature += "noOverlays";\n return signature;\n}\n\nfunction padZero(x){\n return (x>=10 || x<0 ? "" : "0")+x;\n}\n\nsetClock=function(){\n var actualTime = new Date();\n var newTime = actualTime.getTime() - clockStartTime;\n newTime = clockMultiplier*newTime+clockInterval+clockCorrection;\n actualTime.setTime(newTime);\n newTime = padZero(actualTime.getHours()) + ":" + padZero(actualTime.getMinutes())+ ":" + padZero(actualTime.getSeconds());\n var clock = document.getElementById('slideClock');\n clock.firstChild.nodeValue = newTime;\n}\n\nresetClock=function(){\n var time = new Date(0);\n if(clockStartTime>time){\n var startTime = new Date();\n clockStartTime=startTime.getTime();\n }\n}\n\nvar title;\nvar place;\nvar autoAdvance=null;\nvar autoStart=null;\nvar slideClock=null;\nvar noOverlays=false;\nvar time = 0;\nvar slideShowCircularMode;\nvar slideShowStyleSheet;\nvar slideShowParams;\nvar clockMultiplier;\nvar clockInterval;\nvar clockCorrection=0;\nvar clockStartTime;\nvar openTiddlers;\n\nconfig.macros.slideShow.handler = function(aPlace,macroName,params,wikifier,paramString,tiddler){\n if(tiddler instanceof Tiddler){\n var lingo = config.views.wikified.slideShow;\n var autostart = false;\n if (!e) var e = window.event;\n \n place = aPlace;\n title = tiddler.title;\n params = reparse(paramString);\n var onclick = function(){config.macros.slideShow.onClickSlideShow(params);};\n createTiddlyButton(aPlace,lingo.text,lingo.tooltip,onclick);\n \n var slideShowHolder = document.getElementById('slideShowWrapper');\n //If no show exist previously, create it\n if(params['autostart']){\n if(slideShowHolder != null){\n var signature = slideShowHolder.getAttribute('showSignature');\n if(signature.indexOf("autostart")==-1) autostart = true;\n } else {autostart = true;}\n if(autostart){\n slideShowParams = params;\n setTimeout(config.macros.slideShow.onClickSlideShow,100);\n }\n }\n }\n}\n\nvar disableFunction = function(e){return false;}\nvar enableFunction = function(e){}\n\nconfig.macros.slideShow.onClickSlideShow = function(newParams) {\n if(typeof(newParams)=="number") newParams=slideShowParams;\n openTiddlers = new Array;\n var viewer=document.getElementById('tiddlerDisplay');\n for(var i=0; i<viewer.childNodes.length; i++){\n var name = viewer.childNodes[i].getAttribute('tiddler');\n openTiddlers.push(name);\n }\n document.oncontextmenu = disableFunction;\n clockMultiplier = 1;\n clockInterval = 0;\n var startTime = new Date(0);\n slideShowCircularMode = false;\n time = 0;\n slideShowStyleSheet = null;\n if(newParams['style']){\n slideShowStyleSheet = eval(newParams['style']);\n } \n if(newParams['repeat']){\n slideShowCircularMode = true;\n }\n if(newParams['slidePause'] > 0){\n time = newParams['slidePause'];\n }\n if(newParams['clock']){\n clockCorrection=startTime.getTimezoneOffset()*60000;\n startTime = new Date();\n var clockType= eval(newParams['clock']);\n if(clockType != '+') {\n clockMultiplier = -1;\n clockInterval = -clockType*60000;\n }\n }\n clockStartTime=startTime.getTime();\n if(newParams['noOverlays']){\n noOverlays = true;\n }\n var contentWrapper = document.getElementById('contentWrapper');\n if (contentWrapper.className != "slideShowMode"){\n clearMessage();\n //Attach the key and mouse listeners\n document.onkeyup = keys;\n document.onmouseup = clicker;\n \n var slideShowHolder = document.getElementById('slideShowWrapper');\n story.refreshTiddler(title,"SlideShowViewTemplate",true);\n //If no show exist previously, create it\n if(slideShowHolder == null){\n createSlides(newParams);\n //If there was once waiting in the background and it matches the one we just started, resume it\n } else if (slideShowHolder.getAttribute('showSignature') == makeSignature(title,newParams)){\n \n //Remove dblClick on edit function\n var theTiddler = document.getElementById("tiddler"+title);\n theTiddler.ondblclick = function() {};\n\n // Grab the 'viewer' element and give it a signature so the show can be resumed if stopped\n var tiddlerElements = theTiddler.childNodes;\n var viewer;\n for (var i = 0; i < tiddlerElements.length; i++){\n if (tiddlerElements[i].className == "viewer") viewer = tiddlerElements[i];\n }\n theTiddler.insertBefore(slideShowHolder,viewer);\n theTiddler.removeChild(viewer);\n slideShowHolder.style.display = 'block';\n document.getElementById("pageFooter").className = "pageFooterOff";\n \n //If the show we started it totally new than the resumable one, create the new one and kill the resumable one\n } else {\n slideShowHolder.parentNode.removeChild(slideShowHolder);\n createSlides(newParams);\n }\n slideClock=setInterval("setClock()", 1000); \n if(time>0) autoAdvance=setInterval("GoToSlide(1)", time); \n story.closeAllTiddlers(title);\n toggleSlideStyles();\n } else {\n endSlideShow();\n }\n return ;\n \n}\n\nfunction endSlideShow(){\n //Set aside show so it can be resumed later\n var showHolder = document.getElementById('slideShowWrapper');\n showHolder.style.display = 'none';\n document.getElementById('contentWrapper').parentNode.appendChild(showHolder);\n document.oncontextmenu = enableFunction;\n if(autoAdvance) clearInterval(autoAdvance);\n if(slideClock) clearInterval(slideClock);\n story.refreshTiddler(title,null,true);\n story.closeAllTiddlers();\n toggleSlideStyles();\n story.displayTiddlers(null,openTiddlers,DEFAULT_VIEW_TEMPLATE);\n document.onmouseup = function(){};\n}\n\nfunction isInteger(s){\n var i;\n for (i = 0; i < s.length; i++){\n // Check that current character is number.\n var c = s.charAt(i);\n if (((c < "0") || (c > "9"))) return false;\n }\n // All characters are numbers.\n return true;\n}\n\nfunction jumpInputToSlide(e){\n if (!e) {\n e = window.event;\n e.which = e.keyCode;\n }\n if(e.which==13){\n var jumpInput= document.getElementById("jumpInput").value;\n if(isInteger(jumpInput)){\n var step=jumpInput-document.getElementById('slideContainer').getAttribute('currentslide')-1;\n if (GoToSlide(step)){\n showHideTOC('none'); \n }\n }\n }\n return;\n}\n\n//Used to shorten the TOC fields\nfunction abbreviateLabel(label){\n var maxTOCLength = config.macros.slideShow.maxTOCLength;\n if(label.length>maxTOCLength) {\n var temp = new Array();\n temp = label.split(' ');\n label = temp[0];\n for(var j=1; j<temp.length; j++){\n if((label.length+temp[j].length)<=maxTOCLength){\n label += " " + temp[j];\n } else {\n label += " ...";\n break;\n }\n }\n }\n return label;\n}\n\ncreateSlides = function(newParams){\n var lingo = config.views.wikified.slideShow;\n\n //Remove dblClick on edit function\n var theTiddler = document.getElementById("tiddler"+title);\n theTiddler.ondblclick = function() {};\n\n // Grab the 'viewer' element and give it a signature so the show can be resumed if stopped\n var tiddlerElements = theTiddler.childNodes;\n var viewer;\n for (var i = 0; i < tiddlerElements.length; i++){\n if (tiddlerElements[i].className == "viewer") viewer = tiddlerElements[i];\n }\n viewer.id = 'slideShowWrapper';\n viewer.setAttribute("showSignature",makeSignature(title,newParams));\n\n //Hide the text that comes before the first H1 element (I think I may put this into a cover page type thing)\n while(viewer.childNodes.length > 0 && viewer.firstChild.nodeName.toUpperCase() != "HR" && viewer.firstChild.className!="slideSeparator") {\n viewer.removeChild(viewer.firstChild);\n }\n \n //Cycle through the content and each time you hit an H1 begin a new slide div\n var slideNumber = 0;\n var slideHolder = document.createElement('DIV');\n slideHolder.id = "slideContainer";\n \n while(viewer.childNodes.length > 0){\n //Create a new slide a append it to the slide holder\n if (viewer.firstChild.nodeName.toUpperCase() == "HR" && viewer.firstChild.className=="slideSeparator"){\n slideNumber++;\n var slide = document.createElement('DIV');\n slide.id = "slideNumber"+slideNumber;\n slide.className = "slide";\n if (slideNumber > 1) {\n slideHolder.setAttribute('currentslide',0);\n slide.style.display='none';\n } else {\n slide.style.display='block';\n }\n slideHolder.appendChild(slide); \n viewer.removeChild(viewer.firstChild);\n } else {\n if(viewer.firstChild.nodeName=="SPAN" && viewer.firstChild.className=="" && viewer.firstChild.hasChildNodes()) {\n var anchor=viewer.firstChild.nextSibling;\n for (var ii=0;ii<viewer.firstChild.childNodes.length;ii++) {\n var clone=viewer.firstChild.childNodes[ii].cloneNode(true);\n viewer.insertBefore(clone,anchor);\n }\n viewer.removeChild(viewer.firstChild);\n } else {\n slide.appendChild(viewer.firstChild);\n }\n }\n }\n \n //Stick the slides back into the viewer\n viewer.appendChild(slideHolder);\n slideHolder.setAttribute('numberSlides',slideNumber);\n \n //Create the navigation bar\n var pagefooter = createTiddlyElement(viewer,"DIV","pageFooter","pageFooterOff");\n var navigator = createTiddlyElement(pagefooter,"SPAN","navigator");\n\n //Make it so that when the footer is hovered over the class will change to make it visible\n pagefooter.onmouseover = function () {pagefooter.className = "pageFooterOn"};\n pagefooter.onmouseout = function () {pagefooter.className = "pageFooterOff"};\n\n //Create the control button for the navigation \n var onClickQuit = function(){endSlideShow();};\n createTiddlyButton(navigator,lingo.quit.text,lingo.quit.tooltip,onClickQuit);\n createTiddlyButton(navigator,lingo.firstSlide.text,lingo.firstSlide.tooltip,first_slide);\n createTiddlyButton(navigator,lingo.previousSlide.text,lingo.previousSlide.tooltip,previous_slide);\n createTiddlyButton(navigator,lingo.nextSlide.text,lingo.nextSlide.tooltip,next_slide);\n createTiddlyButton(navigator,lingo.lastSlide.text,lingo.lastSlide.tooltip,last_slide); \n createTiddlyButton(navigator,lingo.resetClock.text,lingo.resetClock.tooltip,resetClock,"button","slideClock"); \n\n var indexNumbers = createTiddlyElement(pagefooter,"SPAN","indexNumbers","indexNumbers","1/"+slideNumber)\n indexNumbers.onclick = showHideTOC;\n var toc = createTiddlyElement(pagefooter,"UL","toc");\n var ovl=1;\n for (var i=0;i<slideHolder.childNodes.length;i++) {\n if(!noOverlays) {\n var ovl=1;\n while(1){\n var className="Overlay"+ovl;\n var overlays=getElementsByClass(className,slideHolder.childNodes[i]);\n if(overlays.length>0){\n for(var j=0; j<overlays.length; j++) {overlays[j].className+=' nextOverlay';}\n ovl++;\n } else {break;}\n }\n }\n slideHolder.childNodes[i].setAttribute("numberOverlays",ovl-1);\n slideHolder.setAttribute("currentOverlay",0);\n\n //Loop through each slide and check the header's content\n var tocLabel = null; \n for (var j=0;j<slideHolder.childNodes[i].childNodes.length;j++) {\n var node = slideHolder.childNodes[i].childNodes[j];\n if(node.nodeName=="H1" || node.nodeName=="H2" || node.nodeName=="H3" || node.nodeName=="H4") {\n var htstring = node.innerHTML;\n var stripped = htstring.replace(/(<([^>]+)>)/ig,"");\n tocLabel = abbreviateLabel(stripped);\n var tocLevel="tocLevel"+node.nodeName.charAt(1);\n var tocItem = createTiddlyElement(toc,"LI",null,tocLevel);\n var tocLink = createTiddlyElement(tocItem,"A",null,"tocItem",tocLabel);\n tocLink.setAttribute("slideNumber",i);\n tocLink.onclick=tocShowSlide;\n }\n }\n }\n \n\n //Input box to jump to s specific slide\n var tocItem = createTiddlyElement(toc,"LI",null,"tocJumpItem",config.macros.slideShow.messages.gotoLabel);\n var tocJumpInput = createTiddlyElement(tocItem,"INPUT","jumpInput");\n tocJumpInput.type="text";\n tocJumpInput.onkeyup=jumpInputToSlide;\n}\n\nvar next_slide= function(e){GoToSlide(1);}\nvar first_slide= function(e){GoToSlide("f");}\nvar previous_slide= function(e){GoToSlide(-1);}\nvar last_slide= function(e){GoToSlide("l");}\n\nfunction toggleSlideStyles(){\n var contentWrapper = document.getElementById('contentWrapper');\n if (contentWrapper.className == "slideShowMode"){\n contentWrapper.className = "";\n window.applyPageTemplate();\n if(slideShowStyleSheet) changeStyleSheet();\n } else{\n contentWrapper.className = "slideShowMode";\n window.applyPageTemplate("SlideShowPageTemplate");\n if(slideShowStyleSheet) changeStyleSheet(slideShowStyleSheet);\n }\n}\n\nsetStylesheet("/***\sn!Slide Mode Styles\sn***/\sn/*{{{*/\sn#contentWrapper.slideShowMode #slideContainer{\sn display: block;\sn}\sn\sn#contentWrapper.slideShowMode .Comment{\sn display: none;\sn}\sn\sn#contentWrapper.slideShowMode .nextOverlay{\sn visibility: hidden;\sn}\sn\sn#contentWrapper.slideShowMode .currentOverlay{\sn visibility: visible;\sn}\sn\sn#contentWrapper.slideShowMode .previousOverlay{\sn visibility: visible;\sn}\sn\sn#jump{\sn text-align: right;\sn}\sn\sn.pageFooterOff #navigator{\sn visibility: hidden;\sn}\sn\sn.pageFooterOn #navigator{\sn visibility: visible;\sn}\sn\sn#contentWrapper.slideShowMode #slideClock{\sn cursor: pointer; margin: 0 5px 0 5px; border: 1px solid #db4\sn}\sn\sn#contentWrapper.slideShowMode,\sn #contentWrapper.slideShowMode #displayArea{\sn width: 100%;\sn font-size: 1.5em;\sn margin: 0 !important;\sn padding: 0;\sn}\sn\sn#slideContainer{\sn display: none;\sn}\sn\sn.indexNumbers{\sn cursor: pointer;\sn}\sn\sn#navigator{\sn visibility: hidden;\sn bottom: 0;\sn}\sn\sn#toc{\sn display: none;\sn position: absolute;\sn font-size: .75em;\sn bottom: 2em;\sn right: 0;\sn background: #fff;\sn border: 1px solid #000;\sn text-align: left;\sn}\sn\snul#toc, #toc li{\sn margin: 0;\sn padding: 0;\sn list-style: none;\sn line-height: 1em;\sn}\sn\sn.tocJumpItem{\sn margin-right: 2em;\sn}\sn\sn.tocJumpItem input{\snmargin-right: 1em;\sn border: 0;\sn}\sn\sn#toc a,\sn#toc a.button{\sn display: block;\sn padding: .1em;\sn}\sn\sn#toc .tocLevel1{\snfont-size: .8em;\sn}\sn\sn#toc .tocLevel2{\sn margin-left: 1em;\sn font-size: .75em;\sn}\sn\sn#toc .tocLevel3{\sn margin-left: 2em;\snfont-size: .75em;\sn}\sn\sn#toc .tocLevel4{\sn margin-left: 3em;\snfont-size: .65em;\sn}\sn\sn#toc a{\sn cursor: pointer;\sn}\sn\snh1{\sn min-height: 1em;\sn}\sn\sn.slide h1{\sn min-height: 0;\sn}\sn\sn/* The '&gt;' selector is ignored by IE6 and earlier so the proper rules are given */\sn#pageFooter{\sn position: fixed;\sn bottom: 2px;\sn right: 2px;\sn width: 100%;\sn text-align: right;\sn}\sn\sn/* This is a hack to trick IE6 and earlier to put the navbar on the bottom of the page */\sn* html #pageFooter {\sn position: absolute;\sn width: 100%;\sn text-align: right;\sn right: auto; bottom: auto;\sn left: expression( ( -20 - pageFooter.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );\sn top: expression( ( -10 - pageFooter.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );\sn}\sn\sn\sn\sn/*}}}*/","slideShowStyles");\n//}}}
!Description\nThis plugin turns a TiddlyWiki tiddler into a simple slide show type display. Most features that are usually found in presentation software are available. It should work in a way that does not interfere with TiddlyWiki. When you close the slide show you get back to your good old TW. \n\nThis plugin has been tested in Firefox and Internet Explorer. Let me know if something seems broken.\n!Usage\nTo use this plugin you //must// be using TiddlyWiki 2.0. Some optional features (as the incremental display) require version 2.0.8 or higher. To install the plugin copy the tiddlers SlideShowPlugin, SlideShowPageTemplate and SlideShowViewTemplate to your TW, label the first one with the //systemConfig// tag, save the TW and refresh the browser.\n\nTo make a slide show simply drop {{{<<slideShow>>}}} at the beginning of a tiddler and use {{{--s--}}} to start each slide. \n\nIf you move your mouse over the bottom of the browser window you will see a few navigation buttons, a clock and a table of contents that shows up when you click the slide number.\n\nAny block of text marked as {{{{{Comment{For my eyes only!}}}}}} will not be displayed in the slide show.\n\nSee these and other features in this [[SlideShowExample]].\n!Incremental display\nA succession of overlays (or layers) can be defined in each slide by marking blocks of text with {{{{{Overlay1{...some text...}}}}}}, {{{{{Overlay2{...some text...}}}}}}, {{{{{Overlay3{...some text...}}}}}}, ...\n\nTo costumize the way overlays are shown you can redefine the following CSS classes\n*contentWrapper.slideShowMode .previousOverlay \n*contentWrapper.slideShowMode .currentOverlay \n*contentWrapper.slideShowMode .nextOverlay \nin a ~StyleSheet. The default style simply hides the next overlays and shows the current and the previous ones as normal text.\n!Slide show parameters\n*The slide show can be themed by providing a ~StyleSheet ({{{<<slideShow style:'MyStyleSheet'>>}}})\n*By default, there is a clock at bottom of the browser window that displays the current time. This clock can also show the presentation elapsed time with {{{<<slideShow clock:'+'>>}}} or a countdown clock with {{{<<slideShow clock:'-20'>>}}} (for 20 minutes). In these two cases, if you click on the clock display it will be restarted\n*The slide show can be set to loop ({{{<<slideShow repeat>>}}})\n*You can set it so each slide changes after X milliseconds ({{{<<slideShow slidePause:X>>}}}) (auto advance mode)\n*Use auto start mode to begin the slideshow the moment the tiddler is opened ({{{<<slideShow autostart>>>}}})\n*You can disable overlays with {{{<<slideShow noOverlays>>}}}\n*These parameters can be mixed and matched in any order: {{{<<slideShow slidePause:1000 repeat>>}}} is the same as {{{<<slideShow repeat slidePause:1000>>}}}\n!Slide show navigation\nYou can navigate through a slide show using the keyboard or the mouse. To quickly move to titled sections you can use the table of contents. \n!!Mouse navigation\nLeft (right) clicking on a slide jumps to the next (previous) overlay. To move to the beginning of the next or previous slide you must use the navigation bar at the bottom of the browser's window. If there are no overlays defined both operations are equivalent.\n!!Keyboard navigation\nThe following keys are defined:\n*Left arrow - previous overlay\n*Down arrow - previous slide\n*Right arrow - next overlay\n*Up arrow - next slide\n*Home - first slide\n*End - last slide\n*Escape - exit slide show\n*Spacebar - pause/resume slide show in auto advance mode\n!Revision history\n*1.5.1 10/11/2006\n**added SlideShowPageTemplate and SlideShowViewTemplate. This way, the plugin no longer requires a standard TW layout. Thanks to Andrew Lister for the idea.\n*1.5.0 18/09/2006\n**fixed restoring stylesheet on exit\n**changed (again!) the way how slides are separated (slide shows prepared for previous versions must be fixed)\n*1.4.0 20/04/2006\n**changed the way how slides are separated (slide shows prepared for previous versions must be fixed)\n**now works with content included with the {{{<<tiddler>>}}} macro\n**added incremental display (overlays)\n**improved documentation\n**assorted small fixes\n*1.3.1 10/03/2006\n**removed empty slide titles\n**fixed wrong numberSlides when slides have div's\n**fixed wrong time in Windows\n*1.3.0 26/02/2006\n**restore open tiddlers on exit\n**fixed problem with markup in headers (should work with NestedSlidersPlugin)\n**added slide comments (blocks of text in the tiddler that don't show up in the presentation)\n*1.2.1 28/01/2006\n**pause timed slideshow with spacebar\n**added clock with 3 different modes\n**fixed bugs with style and abbreviation options\n**general cleanup\n*1.2.0 07/01/2006\n**added a resume feature\n**added themes support\n*1.1.5 14/12/2005\n**added mouse support\n**cleaned up navbar generation\n*1.1.0 12/12/2005\n**added support for IE\n**added key listeners\n*1.0.0 11/12/2005\n**initial release\n!Todo\n*Time code is still very hackerish and unreliable.
<!--{{{-->\n<div class='title' macro='view title' style='font-size: 1em;'></div>\n<div class='viewer' macro='view text wikified'></div>\n<!--}}}-->
<html><p>This is an adaptation of Jeremy Ruston's TiddlyWiki (version 2.0.2) that is suitable for writing scientific notes (e.g. research notes, lecture notes, projects, homework, ...). TiddlyWiki is an amazing JavaScript program that lets you read, edit, save and share infomation conveniently in a single html file using a familiar browser even without an internet connection. ASciencePad extends this by integrating a <strong>what-you-see-is-what-you-get editor</strong> where one can easily type <strong>mathematical formulas</strong> (displayed with MathML) and produce 2D cartesian, parametric and polar <strong>graphs</strong> (displayed with [[SVG]]). The HTMLArea editor was originally developed by <a href="http://www.interactivetools.com/">www.interactivetools.com</a>, now maintained by Mihai Bazon at <a href="http://www.dynarch.com/">www.dynarch.com</a>, and the plugins that provide the math extensions were developed by [[Peter Jipsen|http://www.chapman.edu/~jipsen]] and [[David Lippman|http://www.pierce.ctc.edu/dlippman/]]. See AsciiMath and AsciiSvg for a brief description of the additional scripts that enable the display and <strong>WYSIWYG editing</strong> of math formulas and graphs.</p><p>The math features require InternetExplorer+MathPlayer+AdobeSVGview or [[Firefox 1.5]]. If you can see the MathExamples below, your browser is setup okay, otherwise install the two free plugins for InternetExplorer or install a free copy of [[Firefox 1.5]].</p><p>ASciencePad is <strong>freely available</strong> for noncommercial use (various parts covered by ~BSD-style or GPL license). You can download the latest version (currently 1.1a) from <a href="http://math.chapman.edu/~jipsen/asciencepad/">http://math.chapman.edu/~jipsen/asciencepad/</a>.</p></html>
To switch off the HTMLarea WYSIWYG editor and use the original TiddlyWiki editor, tag the tiddler with a string that starts with system (edit this tiddler to see an example).
*Test 1: July 6\n*Test 2: July 13\n*Test 3: July 20\n*Final Exam: July 27
*Test 1 Solutions\n*Test 2 Solutions\n*Test 3 Solutions
<html><p>Many thanks to all who have contributed to making ASciencePad possible.</p><p>TiddlyWiki is due to Jeremy Ruston (with contributions from other volunteers).<br />HTMLArea was originally developed by <a href="http://interactivetools.com">http://interactivetools.com</a> and version 3.0 is due to Mihai Bazon.<br />ASCIIMathML and ASCIIsvg are scripts I wrote (mostly) in early 2004.<br />The AsciiMath plugin for the HTMLArea editor was developed jointly by David Lippman and myself, and the AsciiSvg plugin is due to David Lippman.<br />The integration of the HTMLArea editor into TiddlyWiki and the ASciencePad webpage are an ongoing project of mine.<br />Thanks also to the many individuals who have worked on creating MathML, [[SVG]], JavaScript, [[Firefox 1.5]], InternetExplorer, MathPlayer and AdobeSVGview.</p></html>
<html>Take a look at <a href="http://www.tiddlywiki.com">http://www.tiddlywiki.com</a> for a description of TiddlyWiki and the latest version of Jeremy Ruston's fantastic script. </html>
//{{{\nconfig.macros.toggleSideBar={};\n\nconfig.macros.toggleSideBar.settings={\n styleHide : "#sidebar { display: none;}\sn"+"#contentWrapper #displayArea { margin-right: 1em;}\sn"+"",\n styleShow : " ",\n arrow1: "«",\n arrow2: "»"\n};\n\nconfig.macros.toggleSideBar.handler=function (place,macroName,params,wikifier,paramString,tiddler)\n{\n var tooltip= params[1]||'toggle sidebar';\n var mode = (params[2] && params[2]=="hide")? "hide":"show";\n var arrow = (mode == "hide")? this.settings.arrow1:this.settings.arrow2;\n var label= (params[0]&&params[0]!='.')?params[0]+" "+arrow:arrow;\n var theBtn = createTiddlyButton(place,label,tooltip,this.onToggleSideBar,"button HideSideBarButton");\n if (mode == "hide")\n { \n (document.getElementById("sidebar")).setAttribute("toggle","hide");\n setStylesheet(this.settings.styleHide,"ToggleSideBarStyles");\n }\n};\n\nconfig.macros.toggleSideBar.onToggleSideBar = function(){\n var sidebar = document.getElementById("sidebar");\n var settings = config.macros.toggleSideBar.settings;\n if (sidebar.getAttribute("toggle")=='hide')\n {\n setStylesheet(settings.styleShow,"ToggleSideBarStyles");\n sidebar.setAttribute("toggle","show");\n this.firstChild.data= (this.firstChild.data).replace(settings.arrow1,settings.arrow2);\n }\n else\n { \n setStylesheet(settings.styleHide,"ToggleSideBarStyles");\n sidebar.setAttribute("toggle","hide");\n this.firstChild.data= (this.firstChild.data).replace(settings.arrow2,settings.arrow1);\n }\n\n return false;\n}\n\nsetStylesheet(".HideSideBarButton .button {font-weight:bold; padding: 0 5px;}\sn","ToggleSideBarButtonStyles");\n\n//}}}
*Tuesday, June 26\n**Lecture\n***[[Systems of Linear Equations; Row Reduction and Echelon Forms]]\n***[[Vector Equations; Matrix Equations]]\n*Wednesday, June 27\n**Lecture\n***[[Solution Sets of Linear Systems]]\n***[[Applications of Linear Systems]]\n*Thursday, June 28\n**Lecture\n***[[Linear Independence; Introduction to Linear Transformations]]\n***[[The Matrix of a Linear Transformation]]\n*Friday, June 29\n**Lecture\n***[[Matrix Operations; The Inverse of a Matrix; Characterizations of Invertible Matrices]]\n***[[Partitioned Matrices; Matrix Factorizations]]
*Monday, July 2\n**Lecture\n***[[Subspaces of Euclidean Space]]\n*Tuesday, July 3\n**Lecture\n***[[Dimension and Rank]]\n*Wednesday, July 4\n**Independence Day\n*Thursday, July 5\n**Review\n*Friday, July 6\n**Test 1
*Monday, July 9\n**Lecture\n***[[Introduction to Determinants; Properties of Determinants]]\n***[[Cramer's Rule, Volume and Linear Transformations]]\n*Tuesday, July 10\n**Lecture\n***[[Vector Spaces and Subspaces]]\n***[[Null Spaces, Column Spaces and Linear Transformations]]\n***[[Linearly Independent Sets; Bases]]\n*Wednesday, July 11\n**Lecture\n***[[Coordinate Systems; The Dimension of a Vector Space]]\n***[[Rank]]\n*Thursday, July 12\n**Review\n*Friday, July 13\n**Test 2