Americo Barbosa da Cunha Junior
<<gradient vert #ffffff #eeeeff #ccccff >>''[[Home]]''>> <<gradient vert #ffffff #eeeeff #ccccff >>''[[My Math Genealogy]]''>> <<gradient vert #ffffff #eeeeff #ccccff >>''[[My Erdös Number]]''>> <<gradient vert #ffffff #eeeeff #ccccff >>''[[Articles and Talks]]''>> <<gradient vert #ffffff #eeeeff #ccccff >>''[[Work in Progress]]''>> <<gradient vert #ffffff #eeeeff #ccccff >>''[[Collaborators]]''>> <<gradient vert #ffffff #eeeeff #ccccff >>''[[My Codes]]''>> <<gradient vert #ffffff #eeeeff #ccccff >>''[[Online Courses]]''>> <<gradient vert #ffffff #eeeeff #ccccff >>''[[Cool]]''>>
[>img[americo | americo.jpg]] I have two B.Sc. degrees, one in Mechanical Engineering and another in Applied Mathematics, both from [[PUC-Rio. | http://www.puc-rio.br]] I also have a M.Sc. degree in Mechanical Engineering from [[PUC-Rio. | http://www.puc-rio.br]] Currently I am a D.Sc. student at the [[Department of Mechanical Engineering | http://www.mec.puc-rio.br]] of [[PUC-Rio | http://www.puc-rio.br]], under supervision of professor [[Rubens Sampaio. | http://www.mec.puc-rio.br/dem_perfil.php?id=43]] My research is focused on the design of stochastic models for mechanical systems and development of numerical methods for uncertainty quantification. I also hold a position as a partial time professor at the [[Department of Mathematics | http://www.mat.puc-rio.br]] of [[PUC-Rio, | http://www.puc-rio.br]] teaching math courses at the undergraduate level. More information about me is available from [[Lattes platform | http://lattes.cnpq.br/5659403706694491]] and [[Linkedin | http://br.linkedin.com/in/americocunhajr]]. You can contact me on [img[email | email.png]]
As can be seen [[here | mathgen/mathgen_bsc_short.png]], my mathematical lineage has some noble ancestors (two Bernoulli's, Euler, Lagrange, d'Alambert and others). Perhaps this explains my interest in mechanics. A litle bit more detailed genealogy tree is available [[here | mathgen/mathgen_bsc_long.pdf]]. Do you want to know your Math Genealogy? (Of course, if you have one!) See [[The Mathematics Genealogy Project | http://www.genealogy.ams.org/]].
Currently my [[Erdös Number | http://en.wikipedia.org/wiki/Erd%C5%91s_number]] is 5. || {{{Paul Erdös}}}|| coauthored with ||{{{Jenő Lehel}}} || [1] || || {{{Jenő Lehel}}}|| coauthored with ||{{{Lael Kinch}}} || [2] || || {{{Lael Kinch}}}|| coauthored with ||{{{William Williams}}} || [3] || || {{{William Williams}}}|| coauthored with ||{{{Rubens Sampaio}}} || [4] || || {{{Rubens Sampaio}}}|| coauthored with ||{{{Americo Cunha}}} || [5] || || [1] ||{{{Erdös, P.; Jacobson, M. S.; Lehel, J.}}} || || ||''//Graphs realizing the same degree sequences and their respective clique numbers//'' || || ||{{{Graph Theory, Combinatorics, and Applications, vol. 1, pp. 439–449, 1991.}}} || || [2] ||{{{Kinch, L.; Lehel, J.}}} || || ||''//Sum-distinct sequences and Fibonacci numbers//'' || || ||{{{Period. Math. Hungar. vol. 21, no. 1, pp. 65–71, 1990.}}} || || [3] ||{{{Eberhart, C.; Williams, W.; Kinch, L.}}} || || ||''//Idempotent-generated regular semigroups//'' || || ||{{{J. Austral. Math. Soc. vol. 15, pp. 27–34, 1973.}}} || || [4] ||{{{Sampaio, R.; Williams, W. O.}}} || || ||''//Thermodynamics of diffusing mixtures//'' || || ||{{{J. Mécanique vol. 18, no. 1, pp. 19–45, 1979.}}} || || [5] ||{{{Cunha, A. B.; Sampaio, R.}}} || || ||''//On the dynamics of a nonlinear continuous random system//'' || || ||{{{Proceedings of Uncertainties 2012}}} ||
[img[paper | icons/pdf.gif]] text [img[talk | icons/pdf.png]] talk @@''Conference Articles''@@ ''//On the Dynamics of a Nonlinear Continuous Random System//'' [img[paper | icons/pdf.gif][pubs/conferences/UNCERT2012-53_paper.pdf]] [img[talk | icons/pdf.png][pubs/conferences/UNCERT2012-53_talk.pdf]] {{{with R. Sampaio}}} {{{Proceedings of Uncertainties 2012}}} ''//Characterization of an Adaptive Technique to Reduce Combustion Thermochemistry//'' [img[paper | icons/pdf.gif][pubs/conferences/ENC10-0067_paper.pdf]] [img[talk | icons/pdf.png][pubs/conferences/ENC10-0067_talk.pdf]] {{{with L. F. Figueira da Silva}}} {{{Proceedings of ENCIT 2010}}} ''//Combustion Regime Identification on a Bluff-body Burner by Using Experimental PLIF - OH Images and RANS Numerical Simulations//'' [img[paper | icons/pdf.gif][pubs/conferences/COB09-2777_paper.pdf]] [img[talk | icons/pdf.png][pubs/conferences/COB09-2777_talk.pdf]] {{{with N. R. Caetano, A. R. Novgorodcev Jr and L. F. Figueira da Silva}}} {{{Proceedings of COBEM 2009}}} @@''Talks''@@ ''//Vibrações Aleatórias//'' [img[talk | icons/pdf.png][talks/rand_vib_okbmat11.pdf]] {{{IX Oktobermat}}} @@''Notas de Aula''@@ ''//O Problema da Braquistócrona e Algumas Noções de Cálculo Variacional//'' [img[paper | icons/pdf.gif][pubs/other/pbncv_report.pdf]] [img[talk | icons/pdf.png][pubs/other/pbncv_slides.pdf]] ''//Noções Topológicas do Plano//'' [img[paper | icons/pdf.gif][pubs/other/nocoes_topologia.pdf]] ''//Descrevendo Regiões no Plano Cartesiano e no Espaço Euclidiano//'' [img[paper | icons/pdf.gif][pubs/other/regioes.pdf]] ''//Autovalores e Autovetores//'' [img[paper | icons/pdf.gif][pubs/other/autovalores.pdf]] @@''Other''@@ ''//Reduction of Complexity in Combustion Thermochemistry//'' [img[paper | icons/pdf.gif][pubs/other/msc_americo.pdf]] [img[talk | icons/pdf.png][pubs/other/msc_slides.pdf]] {{{Master Dissertation}}}
[img[working | icons/work.gif]] ''//Uncertainty Propagation in the Dynamics of a Nonlinear Random Bar//'' {{{with R. Sampaio}}} ''//Analysis of a Stochastic One Degree of Freedom Mass - Spring - Damper System//'' {{{with R. Sampaio}}} ''//Notas em Vibrações Mecânicas//'' {{{with T. G. Ritto and R. Sampaio}}} ''//Notas em Mecânica Computacional Estocástica//'' {{{with E. Cataldo and R. Sampaio}}} ''//Assessment of a Transient Homogeneous Reactor through In Situ Adaptive Tabulation //'' {{{with L. F. Figueira da Silva}}} {{{submitted for publication in Combustion Theory and Modelling}}}
In this section you can find list of my current and past collaborators. As a collaborator I mean not only a person who have written an article with me. [[Andrea Cristina Carvalho dos Anjos | http://lattes.cnpq.br/1674843708868611 ]] [[André Reinaldo Novgorodcev Junior | http://lattes.cnpq.br/7999890350964466 ]] [[Daniel Fleischman | http://lattes.cnpq.br/7027426424661447 ]] [[Edson Luiz Cataldo Ferreira | http://lattes.cnpq.br/5170756020561542 ]] [[Elder Marino Mendonza Orbegoso | http://lattes.cnpq.br/5172367592641310 ]] [[Fernando Oliveira de Andrade | http://lattes.cnpq.br/5175699449525205 ]] [[Hélio Côrtes Vieira Lopes | http://www.inf.puc-rio.br/~lopes ]] [[Julien Mauprivez | http://lattes.cnpq.br/4872628405109554 ]] [[Karin Koogan Breitman | http://www.inf.puc-rio.br/~karin ]] [[Luis Enrique Alva Huapaya | http://lattes.cnpq.br/3003482866558556 ]] [[Luis Fernando Figueira da Silva | http://www.mec.puc-rio.br/dem_perfil.php?id=37 ]] [[Marcelo Túlio Piovan | http://lattes.cnpq.br/9428092527560377 ]] [[Mario German Sandoval | http://lattes.cnpq.br/5041144455720037 ]] [[Mario Raúl Escalante | http://lattes.cnpq.br/9923466550981315 ]] [[Nattan Roberto Caetano | http://lattes.cnpq.br/6182078438279096 ]] [[Rafael Barbosa Nasser | http://lattes.cnpq.br/9503735014198416 ]] [[Roberta de Queiroz Lima | http://lattes.cnpq.br/1117824177202915 ]] [[Rubens Sampaio Filho | http://www.mec.puc-rio.br/dem_perfil.php?id=43 ]] [[Thiago Gamboa Ritto | http://lattes.cnpq.br/8907423644221097 ]] [[Thomas Maurice Lewiner | http://thomas.lewiner.org/ ]]
[[mgraph | my_codes/mgraph.zip]] {{{Graphical Library in Matlab}}} [[msd_1dof | my_codes/msd_1dof.zip]] {{{1 DoF mass-spring-damper code in Matlab}}} [[puc-rio_monografia | my_codes/puc-rio_monografia.zip]] {{{classe LaTeX para monografias da PUC-Rio}}} [[puc-rio_tese | my_codes/puc-rio_tese.zip]] {{{classe LaTeX para teses/dissertações da PUC-Rio}}} [[puc-rio_thesis | my_codes/puc-rio_thesis.zip]] {{{LaTeX class for PUC-Rio theses and dissertations}}}
In this section you can find links to selected online courses from some of the world top universities. [[Single Variable Calculus | http://www.youtube.com/view_play_list?p=590CCC2BC5AF3BC1]] [[Multivariable Calculus | http://www.youtube.com/view_play_list?p=4C4C8A7D06566F38]] [[Linear Algebra | http://www.youtube.com/view_play_list?p=E7DDD91010BC51F8]] [[Differential Equations | http://www.youtube.com/view_play_list?p=EC88901EBADDD980]] [[Convex Optimization | http://www.youtube.com/view_play_list?p=3940DD956CDF0622]] [[Linear Dynamical Systems | http://www.youtube.com/view_play_list?p=06960BA52D0DB32B]] [[The Fourier Transforms and Its Applications | http://www.youtube.com/view_play_list?p=B24BC7956EE040CD]] [[Computational Science & Engineering I | http://www.youtube.com/user/MIT#g/c/F706B428FB7BD52C]] [[Mathematical Methods for Engineers II | http://www.youtube.com/user/MIT#grid/user/3A13781649466805]] [[Classical Mechanics | http://ocw.mit.edu/OcwWeb/Mathematics/18-330Spring-2004/CourseHome/index.htm]] [[Vibrations and Waves | http://www.youtube.com/user/MIT#grid/user/854AA255B15C574C]] [[Electricity and Magnetism | http://www.youtube.com/user/MIT#grid/user/C2CEECFD938FD494]]
[img[O glorioso | icons/botafogo.gif][http://www.botafogo.com.br/]] Do you know how is charged income tax in Brazil? (in Portuguese) [img[irpf | icons/pdf.gif][cool/irpf.pdf]] Do you know how much tax has been paid in Brazil this year? [[Impostômetro | http://www.impostometro.com.br/]] Do you know what are the chances of your team? (in Portuguese) [[Soccer Probabilities | http://www.mat.ufmg.br/futebol/]] Do you know what is a Ph.D.? [[The Illustrated Guide to a Ph.D. | http://www.openculture.com/2010/09/the_illustrated_guide_to_a_phd.html]] Do you like Math? [[Matemateca | http://matemateca.ime.usp.br/]] João Moreira Sales: A non-scientist speaking to scientists. (in Portuguese) [[click here | http://www.observatoriousp.pro.br/um-documentarista-se-dirige-a-cientistas/]] Live long and prosper [[Memory Alpha | http://memory-alpha.org/]] ta' SoH jatlh tlhIngan [[The Klingon Language Institute | http://www.kli.org/]]
"Home"
/***\n|''Name:''|HTMLFormattingPlugin|\n|''Source:''|http://www.TiddlyTools.com/#HTMLFormattingPlugin|\n|''Author:''|Eric Shulman - ELS Design Studios|\n|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|''~CoreVersion:''|2.0.10|\n\nIMPORTANT! modified by fjm to prevent HTMLArea showing linebreaks. By default Linebreak are ignored and, only are showd when you use a tag <show_linebreaks> in the HTML code.\n\nThe shorthand Wiki-style formatting syntax of ~TiddlyWiki is very convenient and enables most content to be reasonably well presented. However, there are times when tried-and-true HTML formatting syntax allows more more precise control of the content display.\n\nWhen HTML formatting syntax is embedded within a tiddler (in between {{{<}}}{{{html>}}} and {{{<}}}{{{/html>}}} markers) TiddlyWiki passes this content to the browser for processing as 'native' HTML. However, TiddlyWiki does not also process the HTML source content for any embedded wiki-formatting syntax it may contain. This means that while you can use HTML formatted content, you cannot mix wiki-formatted content within the HTML formatting.\n!!!!!Usage\n<<<\nThe ~HTMLFormatting plugin allows you to freely ''mix wiki-style formatting syntax within HTML formatted content'' by extending the action of the standard TiddlyWiki formatting handler.\n\nWhen a tiddler is about to be displayed, ~TiddlyWiki looks for tiddler content contained within ''<{{{html}}}>'' and ''<{{{/html}}}>'' HTML tags. This content (if any) is passed directly to the browser's internal "rendering engine" to process as ~HTML-formatted content. Once the HTML formatting has been processed, all the pieces of text occuring in between the HTML formatting are then processed by the ~TiddlyWiki rendering engine, one piece at a time, so that normal wiki-style formatting can be applied to the individual text pieces.\n<<<\n!!!!!Line breaks\n<<<\nOne major difference between Wiki formatting and HTML formatting is how "line breaks" are processed. Wiki formatting treats all line breaks as literal content to be displayed //as-is//. However, because HTML normally ignores line breaks and actually processes them as simple "word separators" instead, many people who write HTML include extra line breaks in their documents, just to make the "source code" easier to read.\n\nEven though you can use HTML tags within your tiddler content, the default treatment for line breaks still follows the Wiki-style rule (i.e., all new lines are displayed as-is). When adding HTML content to a tiddler (especially if you cut-and-paste it from another web page), you should take care to avoid adding extra line breaks to the text.\n\nIf removing all the extra line breaks from your HTML content would be a big hassle, you can quickly //override the default Wiki-style line break rule// so that the line breaks use the standard HTML rules instead. Placing a ''<{{{hide linebreaks}}}>'' tag within the tiddler's HTML content changes all line breaks to spaces before rendering the content, so that the literal line breaks will be processed as simple word-breaks instead.\n\nNote: this does //not// alter the actual tiddler content that is stored in the document, just the manner in which it is displayed. Any line breaks contained in the tiddler will still be there when you edit its content. Also, to include a literal line break when the ''<{{{hide linebreaks}}}>'' tag is present, you will need to use a ''<{{{br}}}>'' or ''<{{{p}}}>'' HTML tag instead of simply typing a line break.\n<<<\n!!!!!How it works\n<<<\nThe TW core support for HTML does not let you put ANY wiki-style syntax (including TW macros) *inside* the {{{<html>...</html>}}} block. Everything between {{{<html>}}} and {{{</html>}}} is handed to the browser for processing and that is it. Fortunately, this plugin ADDS the ability to let you put wiki-syntax (including macros) inside the html. It does this by first giving the tiddler source content to the browser to process the HTML, and then handling any wiki-based syntax that remains afterward.\n\nHowever, not all wiki syntax can be safely passed through the browser's parser. Specifically, any TW macros inside the HTML will get 'eaten' by the browser since the macro brackets, {{{<<...>>}}} use the "<" and ">" that normally delimit the HTML/XML syntax recognized by the browser's parser.\n\nSimilarly, you can't use InlineJavascript within the HTML because the {{{<script>...</script>}}} syntax will also be consumed by the browser and there will be nothing left to process afterward. Note: unfortunately, even though the browser removes the {{{<script>...</script>}}} sequence, it doesn't actually execute the embedded javascript code that it removes, so any scripts contained inside of <html> blocks in TW are currently being ignored. :-(\n\nAs a work-around to allow TW *macros* (but not inline scripts) to exist inside of <html> formatted blocks of content, the plugin first converts the {{{<<}}} and {{{>>}}} into "%%(" and ")%%", making them "indigestible" so they can pass unchanged through the belly of the beast (the browser's HTML parser).\n\nAfter the browser has done its job, the wiki syntax sequences (including the "undigested" macros) are contained in #text nodes in the browser-generated DOM elements. The plugin then recursively locates and processes each #text node, converts the %%( and )%% back into {{{<<}}} and {{{>>}}}, passes the result to wikify() for further rendering of the wiki-formatted syntax into a containing SPAN that replaces the previous #text node. At the end of this process, none of the encoded %%( and )%% sequences remain in the rendered tiddler output.\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''HTMLFormattingPlugin'' (tagged with <<tag systemConfig>>)\n^^documentation and javascript for HTMLFormatting handling^^\n<<<\n!!!!!Revision History\n<<<\n''2006.09.10 [2.1.4]'' update formatter for 2.1 compatibility (use this.lookaheadRegExp instead of temp variable)\n''2006.05.28 [2.1.3]'' in wikifyTextNodes(), decode the *value* of TEXTAREA nodes, but don't wikify() its children. (thanks to "ayj" for bug report)\n''2006.02.19 [2.1.2]'' in wikifyTextNodes(), put SPAN element into tiddler DOM (replacing text node), BEFORE wikifying the text content. This ensures that the 'place' passed to any macros is correctly defined when the macro is evaluated, so that calls to story.findContainingTiddler(place) will work as expected. (Thanks for bug report from GeoffSlocock)\n''2006.02.05 [2.1.1]'' wrapped wikifier hijack in init function to eliminate globals and avoid FireFox 1.5.0.1 crash bug when referencing globals\n''2005.12.01 [2.1.0]'' don't wikify #TEXT nodes inside SELECT and TEXTAREA elements\n''2005.11.06 [2.0.1]'' code cleanup\n''2005.10.31 [2.0.0]'' replaced hijack wikify() with hijack config.formatters["html"] and simplified recursive WikifyTextNodes() code\n''2005.10.09 [1.0.2]'' combined documentation and code into a single tiddler\n''2005.08.05 [1.0.1]'' moved HTML and CSS definitions into plugin code instead of using separate tiddlers\n''2005.07.26 [1.0.1]'' Re-released as a plugin. Added <{{{html}}}>...</{{{nohtml}}}> and <{{{hide newlines}}}> handling\n''2005.07.20 [1.0.0]'' Initial Release (as code adaptation)\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.HTMLFormatting = {major: 2, minor: 1, revision: 4, date: new Date(2006,9,10)};\n\n// find the formatter for HTML and replace the handler\ninitHTMLFormatter();\nfunction initHTMLFormatter()\n{\n for (var i=0; i<config.formatters.length && config.formatters[i].name!="html"; i++);\n if (i<config.formatters.length) config.formatters[i].handler=function(w) {\n if (!this.lookaheadRegExp) // fixup for TW2.0.x\n this.lookaheadRegExp = new RegExp(this.lookahead,"mg");\n this.lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n var html=lookaheadMatch[1];\n // optionally suppress wiki-style literal handling of newlines\n // strip any carriage returns added by Internet Explorer's textarea edit field\n // encode newlines as \sn so Internet Explorer's HTML parser won't eat them\n // encode macro brackets (<< and >>) so HTML parser won't eat them\n if (html.indexOf('<show_linebreaks>')==-1) html=html.replace(regexpNewLine,' ');\n html=html.replace(regexpCarriageReturn,'');\n html=html.replace(regexpNewLine,'\s\sn');\n html=html.replace(/<</g,'%%(').replace(/>>/g,')%%');\n // create span to hold HTML\n // parse HTML and normalize the results\n // walk node tree and call wikify() on each text node\n var e = createTiddlyElement(w.output,"span");\n e.innerHTML=html;\n e.normalize(); \n wikifyTextNodes(e);\n // advance to next parse position\n w.nextMatch = this.lookaheadRegExp.lastIndex;\n }\n }\n}\n\n// wikify text nodes remaining after HTML content is processed (pre-order recursion)\nfunction wikifyTextNodes(theNode)\n{\n // textarea node doesn't get wikified, just decoded... \n if (theNode.nodeName.toLowerCase()=='textarea')\n theNode.value=theNode.value.replace(/\s%%\s(/g,'<<').replace(/\s)\s%%/g,'>>').replace(regexpBackSlashEn,'\sn');\n else for (var i=0;i<theNode.childNodes.length;i++) {\n var theChild=theNode.childNodes.item(i);\n if (theChild.nodeName.toLowerCase()=='option') continue;\n if (theChild.nodeName.toLowerCase()=='select') continue;\n wikifyTextNodes(theChild);\n if (theChild.nodeName=='#text') {\n var txt=theChild.nodeValue;\n // decode macro brackets and newlines\n txt=txt.replace(/\s%%\s(/g,'<<').replace(/\s)\s%%/g,'>>').replace(regexpBackSlashEn,'\sn');\n // replace text node with wikified() span\n var newNode=createTiddlyElement(null,"span");\n theNode.replaceChild(newNode,theChild);\n wikify(txt,newNode);\n }\n }\n}\n//}}}
/***\n!Metadata:\n|''Name:''|HTMLAreaPlugin|\n|''Description:''| |\n|''Version:''|2.1.2|\n|''Date:''|Oct 5, 2006|\n|''Source:''|http://sourceforge.net/project/showfiles.php?group_id=150646|\n|''Author:''|BramChen (bram.chen (at) gmail (dot) com)|\n|''Original:''|Asciencepad, hijacked by PeterJipsen|\n|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License]]|\n|''~CoreVersion:''|2.1.2|\n|''Browser:''|Firefox 1.5+; InternetExplorer 6.0|\n\n!Required:\n* TiddlyWiki 2.1.2\n* HtmlArea eitor modified by PeterJipsen\n!Reference: http://math.chapman.edu/~jipsen/asciencepad/asciencepad.html\n!Installation: \n # Add below statement to MarkupPostHead\n<script type="text/javascript" src="HTMLArea/htmlareaPlugin.js"></script>\n\n # Add below statements to MarkupPreHead\n{{{\n<!--PJ-->\n<script type="text/javascript" src="HTMLArea/plugins/AsciiMath/ASCIIMathML.js"></script>\n<script type="text/javascript" src="HTMLArea/plugins/AsciiSvg/ASCIIsvg.js"></script>\n<script type="text/javascript" src="HTMLArea/plugins/AsciiSvg/ASCIIsvgAddon.js"></script>\n<!--script type="text/javascript" src="HTMLArea/plugins/AsciiMath/ASCIIMathCalculator.js"></script-->\n<script type="text/javascript">\n _editor_url = "HTMLArea/";\n _editor_lang = "en";\n</script>\n<script type="text/javascript" src="HTMLArea/htmlarea.js"></script>\n<!--PJ-->\n}}} \n # Save changes and reload page.\n\n!Uninstall:\n * Open TW document in your edtior, and remove all lines added from installation step.\n\n!Note:\n * Do not install this plugin as "systemConfig".\n * The content of tiddler is no more with wiki texts but a big <html>blahblah</html> block.\n!Revision history:\n * Jun 27 2006 \n ** for TiddlyWiki 2.1.0\n ** cleaned up hijacking codes. \n * Jnu 07 2006\n ** Initial release, for TiddlyWiki 2.0.11\n! Codes\n***/\n//{{{\nversion.extensions.HTMLAreaPlugin = {major: 2, minor: 1, revision: 2,\n date: new Date("Oct 5, 2006"),\n name: "HTMLAreaPlugin",\n type: "Plugin",\n author: "BramChen",\n source: "http://sourceforge.net/project/showfiles.php?group_id=150646"\n};\n\n// PJ\n\nHTMLArea.loadPlugin("AsciiMath");\nHTMLArea.loadPlugin("AsciiSvg");\nvar editors = {};\nvar editor = null;\nvar cureditor = null;\n\nfunction initEditor(str) {\n editors[str] = new HTMLArea(str);\n editor = editors[str]; //hack to make setsscr in ascii-svg.js work in Firefox\n var line = editors[str].config.toolbar[1] ? 1 : 0;\n editors[str].config.toolbar[line].push("separator","insertnewmath",\n "insertmath","swapmathmode","calculate");\n editors[str].config.toolbar[line].push("separator","insertsvg");\n editors[str].registerPlugin(AsciiMath);\n editors[str].registerPlugin(AsciiSvg);\n editors[str].config.hideSomeButtons(" subscript superscript popupeditor lefttoright righttoleft ");\n //surrounds AsciiMath in red box while editting. Change to your liking\n editors[str].config.pageStyle = "span.AMedit {border:solid 1px #ff0000}";\n editors[str].generate();\n return false;\n};\nfunction wikifyTextNodes(w,e) { //recursively apply subWikify to e\n var tmp,ptmp,wtmp;\n if (!e.className || e.className.slice(0,2) != "AM") { //skip ASCIIMath nodes\n if (e.childNodes.length==0) {\n if (e.nodeValue) {\n wtmp = new Wikifier(e.nodeValue,w.formatter,null,w.tiddler);\n tmp=createTiddlyElement(w.output,"span");\n wtmp.subWikify(tmp);\n ptmp=e.parentNode;\n ptmp.replaceChild(tmp,e);\n }\n } else {\n for (var i=0; i<e.childNodes.length; i++)\n wikifyTextNodes(w,e.childNodes[i]);\n }\n }\n}\n\n// Hijack\n\nfor (var i=0; i<config.formatters.length; i++){\n if (config.formatters[i].name == "html"){\n config.formatters[i].handler = function(w){\n this.lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart)\n {\n var e = createTiddlyElement(w.output,"span");\n e.innerHTML = lookaheadMatch[1];\n \nwikifyTextNodes(w,e);//PJ\n\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n }\n }\n break; \n }\n}\n\nconfig.editPJ = config.macros.edit.handler;\nconfig.macros.edit.handler = function(place,macroName,params,wikifier,paramString,tiddler){\n var field = params[0];\n if (field == "text"){\n\n if((tiddler instanceof Tiddler) && field){\n story.setDirty(tiddler.title,true);\n var wrapper1 = createTiddlyElement(place,"fieldset",null,"fieldsetFix");\n var wrapper2 = createTiddlyElement(wrapper1,"div");\n var e = createTiddlyElement(wrapper2,"textarea");\n if(tiddler.isReadOnly())\n e.setAttribute("readOnly","readOnly");\n var v = store.getValue(tiddler,field);\n e.value = (v)?v:"";\n var rows = 20;\n var lines = v.match(/\sn/mg);\n var maxLines = Math.max(parseInt(config.options.txtMaxEditRows),5);\n if(lines != null && lines.length > rows)\n rows = lines.length + 5;\n rows = Math.min(rows,maxLines);\n e.setAttribute("rows",rows);\n e.setAttribute("edit","text");\n\nif (tiddler.tags.length==0 || tiddler.tags[0].slice(0,6) != "system") { //PJ\n e.setAttribute("id","editorBody"+tiddler.title);\n initEditor("editorBody"+tiddler.title);\n} //PJ\n }\n }\n else {\n config.editPJ(place,macroName,params,wikifier,paramString,tiddler);\n }\n}\n\nStory.prototype.refreshTiddlerPJ = Story.prototype.refreshTiddler;\nStory.prototype.refreshTiddler = function(title,minorUpdate) {\n var theTiddler = story.refreshTiddlerPJ(title,minorUpdate);\n AMprocessNode(theTiddler,false); //PJ\n setTimeout('drawPictures()',100); //PJ\n return theTiddler;\n}\nStory.prototype.saveTiddlerPJ = Story.prototype.saveTiddler;\nStory.prototype.saveTiddler = function(title,minorUpdate) {\n var tiddler = document.getElementById(this.idPrefix + title);\n if(tiddler != null)\n {\n var fields = {};\n if (tiddler.getAttribute("tags").slice(0,6) != "system") { //PJ\n var str="editorBody"+title;\n editors[str]._iframe.style.display = "none";\n editors[str]._textArea.style.display = "block";\n editors[str]._textArea.value = "<html>"+editors[str].getHTML().replace(/^\ss+/g,'')+"</html>";\n } //PJ\n }\n return story.saveTiddlerPJ(title,minorUpdate);\n}\n//}}}
/***\n| Name:|HideWhenPlugin|\n| Description:|Allows conditional inclusion/exclusion in templates|\n| Version:|1.0.2|\n| Date:|19-Sep-2006|\n| Source:|http://mptw.tiddlyspot.com/#HideWhenMacro|\n| Author:|Simon Baird <simon.baird@gmail.com>|\nFor use in ViewTemplate and EditTemplate. Eg\n{{{<div macro="showWhen tiddler.tags.contains('Task')">[[TaskToolbar]]</div>}}}\n{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}\n***/\n//{{{\nmerge(config.macros,{\n hideWhen: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n if (eval(paramString)) {\n removeChildren(place);\n place.parentNode.removeChild(place);\n }\n }},\n showWhen: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n config.macros.hideWhen.handler(place,macroName,params,wikifier,'!('+paramString+')',tiddler);\n }}\n});\n//}}}
/***\n|''Name:''|InlineJavascriptPlugin|\n|''Source:''|http://www.TiddlyTools.com/#InlineJavascriptPlugin|\n|''Author:''|Eric Shulman - ELS Design Studios|\n|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|''~CoreVersion:''|2.0.10|\n\nInsert Javascript executable code directly into your tiddler content. Lets you ''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.\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" 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''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: 5, revision: 1, date: new Date(2006,6,1)};\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")?( 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[4]) { // there is script code\n if (lookaheadMatch[3]) // 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[4]+"};_out(this);"\n link.setAttribute("href","javascript:;"); link.setAttribute("title",""); link.style.cursor="pointer";\n }\n else { // run inline script code\n var code="function _out(place){"+lookaheadMatch[4]+"};_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//}}}
/***\n|''Name:''|LegacyStrikeThroughPlugin|\n|''Description:''|Support for legacy (pre 2.1) strike through formatting|\n|''Version:''|1.0.1|\n|''Date:''|Jul 21, 2006|\n|''Source:''|http://www.tiddlywiki.com/#LegacyStrikeThroughPlugin|\n|''Author:''|MartinBudden (mjbudden (at) gmail (dot) 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\n***/\n\n//{{{\n\n// Ensure that the LegacyStrikeThrough Plugin is only installed once.\nif(!version.extensions.LegacyStrikeThroughPlugin)\n {\n version.extensions.LegacyStrikeThroughPlugin = true;\n\nconfig.formatters.push(\n{\n name: "legacyStrikeByChar",\n match: "==",\n termRegExp: /(==)/mg,\n element: "strike",\n handler: config.formatterHelpers.createElementAndWikify\n});\n\n} // end of "install only once"\n//}}}\n
<script type="text/javascript" src="HTMLArea/htmlareaPlugin.js"></script>
<!--{{{-->\n<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>\n<script type="text/javascript" src="HTMLArea/plugins/AsciiMath/ASCIIMathML.js"></script>\n<script type="text/javascript" src="HTMLArea/plugins/AsciiSvg/ASCIIsvg.js"></script>\n<script type="text/javascript" src="HTMLArea/plugins/AsciiSvg/ASCIIsvgAddon.js"></script>\n<script type="text/javascript">\n_editor_url = "HTMLArea/";\n_editor_lang = "en";\n</script>\n<script type="text/javascript" src="HTMLArea/htmlarea.js"></script>\n<!--}}}-->\n
/*{{{*/\ninput {font-size: 100%;}\n\nbutton {font-size: 100%;}\n\n.txtOptionInput {\n width: 15em;\n}\n\n.tabContents li{\n list-style: none;\n}\n\n#siteTitle .tiddlyLinkExisting,\n#siteTitle .tiddlyLinkNonExisting{\n font-weight: normal;\n font-style: normal;\n}\n\n.siteSubtitle .externalLink {\n text-decoration: none;\n}\n\n.headerForeground a {\n color: [[ColorPalette::Background]];\n}\n\n.viewer .center {\nmargin-left: auto;\nmargin-right: auto;\n}\n\n.center {\ntext-align:center;\n}\n\n.viewer .calendarHolder {\n font-size: 0.75em;\n}\n\n.viewer #calendarWrapper {\n width: 22em;\n}\n\n.pauta tbody tr.oddRow {\nbackground: #efefef;\n}\n\n.pauta tbody tr.evenRow {\nbackground: #fff;\n}\n\n#pageFooter {\n border-bottom:1px solid #ccc;\n border-right:1px solid #ccc;\n padding-bottom:1em;\n margin-bottom:1em; \n background:#fff;\n padding-top: 1.25em;\n -moz-border-radius: 1.5em;\n}\n\n@media print {\nbody {background:#ffffff;}\n#mainMenu, #sidebar, #messageArea, .tagging, .tagged, .subtitle, #pageFooter {display: none ! important;}\n#displayArea {margin: 1em 0em 0em 0em !important;}\n.tiddler {border: none;padding:0;}\n.button {display: none ! important;}\n.header {display: none ! important;}\nnoscript{ display:none;}\n.title {color:#000;}\n#jsMath_button{ display:none !important;}\n}\n/*}}}*/
/***\n|''Name:''|NestedSlidersPlugin|\n|''Source:''|http://www.TiddlyTools.com/#NestedSlidersPlugin|\n|''Author:''|Eric Shulman - ELS Design Studios|\n|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|''~CoreVersion:''|2.0.10|\n\nQuickly make any tiddler content into an expandable 'slider' panel, without needing to create a separate tiddler to contain the slider content. Optional syntax allows ''default to open'', ''custom button label/tooltip'' and ''automatic blockquote formatting.''\n\nYou can also 'nest' these sliders as deep as you like (see complex nesting example below), so that expandable 'tree-like' hierarchical displays can be created. This is most useful when converting existing in-line text content to create in-line annotations, footnotes, context-sensitive help, or other subordinate information displays.\n\nFor more details, please click on a section headline below:\n++++!!!!![Configuration]>\nDebugging messages for 'lazy sliders' deferred rendering:\n<<option chkDebugLazySliderDefer>> show debugging alert when deferring slider rendering\n<<option chkDebugLazySliderRender>> show debugging alert when deferred slider is actually rendered\n===\n++++!!!!![Usage]>\nWhen installed, this plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content. Use {{{+++}}} and {{{===}}} to delimit the slider content. Additional optional syntax elements let you specify\n*default to open\n*cookiename\n*heading level\n*floater (with optional CSS width value)\n*mouse auto rollover\n*custom class/label/tooltip/accesskey\n*automatic blockquote\n*deferred rendering\nThe complete syntax, using all options, is:\n//{{{\n++++(cookiename)!!!!!^width^*{{class{[label=key|tooltip]}}}>...\ncontent goes here\n===\n//}}}\nwhere:\n* {{{+++}}} (or {{{++++}}}) and {{{===}}}^^\nmarks the start and end of the slider definition, respectively. When the extra {{{+}}} is used, the slider will be open when initially displayed.^^\n* {{{(cookiename)}}}^^\nsaves the slider opened/closed state, and restores this state whenever the slider is re-rendered.^^\n* {{{!}}} through {{{!!!!!}}}^^\ndisplays the slider label using a formatted headline (Hn) style instead of a button/link style^^\n* {{{^width^}}} (or just {{{^}}})^^\nmakes the slider 'float' on top of other content rather than shifting that content downward. 'width' must be a valid CSS value (e.g., "30em", "180px", "50%", etc.). If omitted, the default width is "auto" (i.e., fit to content)^^\n* {{{*}}}^^\nautomatically opens/closes slider on "rollover" as well as when clicked^^\n* {{{{{class{[label=key|tooltip]}}}}}}^^\nuses custom label/tooltip/accesskey. {{{{{class{...}}}}}}, {{{=key}}} and {{{|tooltip}}} are optional. 'class' is any valid CSS class name, used to style the slider label text. 'key' must be a ''single letter only''. Default labels/tootips are: ">" (more) and "<" (less), with no default access key assignment.^^\n* {{{">"}}} //(without the quotes)//^^\nautomatically adds blockquote formatting to slider content^^\n* {{{"..."}}} //(without the quotes)//^^\ndefers rendering of closed sliders until the first time they are opened. //Note: deferred rendering may produce unexpected results in some cases. Use with care.//^^\n\n//Note: to make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the {{{+++}}} 'start slider' or preceding the {{{===}}} 'end slider' sequence are automatically supressed so that excess whitespace is eliminated from the output.//\n===\n++++!!!!![Examples]>\nsimple in-line slider: \n{{{\n+++\n content\n===\n}}}\n+++\n content\n===\n----\nuse a custom label and tooltip: \n{{{\n+++[label|tooltip]\n content\n===\n}}}\n+++[label|tooltip]\n content\n===\n----\ncontent automatically blockquoted: \n{{{\n+++>\n content\n===\n}}}\n+++>\n content\n===\n----\nall options combined //(default open, cookie, heading, sized floater, rollover, class, label/tooltip/key, blockquoted, deferred)//\n{{{\n++++(testcookie)!!!^30em^*{{big{[label=Z|click or press Alt-Z to open]}}}>...\n content\n===\n}}}\n++++(testcookie)!!!^30em^*{{big{[label=Z|click or press Alt-Z to open]}}}>...\n content\n===\n----\ncomplex nesting example:\n{{{\n+++^[get info...=I|click for information or press Alt-I]\n put some general information here, plus a floating slider with more specific info:\n +++^10em^[view details...|click for details]\n put some detail here, which could include a rollover with a +++^25em^*[glossary definition]explaining technical terms===\n ===\n===\n}}}\n+++^[get info...=I|click for information or press Alt-I]\n put some general information here, plus a floating slider with more specific info:\n +++^10em^[view details...|click for details]\n put some detail here, which could include a rollover with a +++^25em^*[glossary definition]explaining technical terms===\n ===\n===\n===\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''NestedSlidersPlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n''2006.07.28 - 2.0.0'' added custom class syntax around label/tip/key syntax: {{{{{classname{[label=key|tip]}}}}}}\n''2006.07.25 - 1.9.3'' when parsing slider, save default open/closed state in button element, then in onClickNestedSlider(), if slider state matches saved default, instead of saving cookie, delete it. Significantly reduces the 'cookie overhead' when default slider states are used.\n''2006.06.29 - 1.9.2'' in onClickNestedSlider(), when setting focus to first control, skip over type="hidden"\n''2006.06.22 - 1.9.1'' added panel.defaultPanelWidth to save requested panel width, even after resizing has changed the style value\n''2006.05.11 - 1.9.0'' added optional '^width^' syntax for floating sliders and '=key' syntax for setting an access key on a slider label\n''2006.05.09 - 1.8.0'' in onClickNestedSlider(), when showing panel, set focus to first child input/textarea/select element\n''2006.04.24 - 1.7.8'' in adjustSliderPos(), if floating panel is contained inside another floating panel, subtract offset of containing panel to find correct position\n''2006.02.16 - 1.7.7'' corrected deferred rendering to account for use-case where show/hide state is tracked in a cookie\n''2006.02.15 - 1.7.6'' in adjustSliderPos(), ensure that floating panel is positioned completely within the browser window (i.e., does not go beyond the right edge of the browser window)\n''2006.02.04 - 1.7.5'' add 'var' to unintended global variable declarations to avoid FireFox 1.5.0.1 crash bug when assigning to globals\n''2006.01.18 - 1.7.4'' only define adjustSliderPos() function if it has not already been provided by another plugin. This lets other plugins 'hijack' the function even when they are loaded first.\n''2006.01.16 - 1.7.3'' added adjustSliderPos(place,btn,panel,panelClass) function to permit specialized logic for placement of floating panels. While it provides improved placement for many uses of floating panels, it exhibits a relative offset positioning error when used within *nested* floating panels. Short-term workaround is to only adjust the position for 'top-level' floaters.\n''2006.01.16 - 1.7.2'' added button property to slider panel elements so that slider panel can tell which button it belongs to. Also, re-activated and corrected animation handling so that nested sliders aren't clipped by hijacking Slider.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends\n''2006.01.14 - 1.7.1'' added optional "^" syntax for floating panels. Defines new CSS class, ".floatingPanel", as an alternative for standard in-line ".sliderPanel" styles.\n''2006.01.14 - 1.7.0'' added optional "*" syntax for rollover handling to show/hide slider without requiring a click (Based on a suggestion by tw4efl)\n''2006.01.03 - 1.6.2'' When using optional "!" heading style, instead of creating a clickable "Hn" element, create an "A" element inside the "Hn" element. (allows click-through in SlideShowPlugin, which captures nearly all click events, except for hyperlinks)\n''2005.12.15 - 1.6.1'' added optional "..." syntax to invoke deferred ('lazy') rendering for initially hidden sliders\nremoved checkbox option for 'global' application of lazy sliders\n''2005.11.25 - 1.6.0'' added optional handling for 'lazy sliders' (deferred rendering for initially hidden sliders)\n''2005.11.21 - 1.5.1'' revised regular expressions: if present, a single newline //preceding// and/or //following// a slider definition will be suppressed so start/end syntax can be place on separate lines in the tiddler 'source' for improved readability. Similarly, any whitespace (newlines, tabs, spaces, etc.) trailing the 'start slider' syntax or preceding the 'end slider' syntax is also suppressed.\n''2005.11.20 - 1.5.0'' added (cookiename) syntax for optional tracking and restoring of slider open/close state\n''2005.11.11 - 1.4.0'' added !!!!! syntax to render slider label as a header (Hn) style instead of a button/link style\n''2005.11.07 - 1.3.0'' removed alternative syntax {{{(((}}} and {{{)))}}} (so they can be used by other\nformatting extensions) and simplified/improved regular expressions to trim multiple excess newlines\n''2005.11.05 - 1.2.1'' changed name to NestedSlidersPlugin\nmore documentation\n''2005.11.04 - 1.2.0'' added alternative character-mode syntax {{{(((}}} and {{{)))}}}\ntweaked "eat newlines" logic for line-mode {{{+++}}} and {{{===}}} syntax\n''2005.11.03 - 1.1.1'' fixed toggling of default tooltips ("more..." and "less...") when a non-default button label is used\ncode cleanup, added documentation\n''2005.11.03 - 1.1.0'' changed delimiter syntax from {{{(((}}} and {{{)))}}} to {{{+++}}} and {{{===}}}\nchanged name to EasySlidersPlugin\n''2005.11.03 - 1.0.0'' initial public release\n<<<\n!!!!!Credits\n<<<\nThis feature was implemented by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]] with initial research and suggestions from RodneyGomes, GeoffSlocock, and PaulPetterson.\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.nestedSliders = {major: 2, minor: 0, revision: 0, date: new Date(2006,7,28)};\n//}}}\n\n//{{{\n// options for deferred rendering of sliders that are not initially displayed\nif (config.options.chkDebugLazySliderDefer==undefined) config.options.chkDebugLazySliderDefer=false;\nif (config.options.chkDebugLazySliderRender==undefined) config.options.chkDebugLazySliderRender=false;\n\n// default styles for 'floating' class\nsetStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \s\n background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");\n//}}}\n\n//{{{\nconfig.formatters.push( {\n name: "nestedSliders",\n match: "\s\sn?\s\s+{3}",\n terminator: "\s\ss*\s\s={3}\s\sn?",\n lookahead: "\s\sn?\s\s+{3}(\s\s+)?(\s\s([^\s\s)]*\s\s))?(\s\s!*)?(\s\s^(?:[^\s\s^\s\s*\s\s[\s\s>]*\s\s^)?)?(\s\s*)?(?:\s\s{\s\s{([\s\sw]+[\s\ss\s\sw]*)\s\s{)?(\s\s[[^\s\s]]*\s\s])?(?:\s\s}{3})?(\s\s>)?(\s\s.\s\s.\s\s.)?\s\ss*",\n handler: function(w)\n {\n // defopen=lookaheadMatch[1]\n // cookiename=lookaheadMatch[2]\n // header=lookaheadMatch[3]\n // panelwidth=lookaheadMatch[4]\n // rollover=lookaheadMatch[5]\n // class=lookaheadMatch[6]\n // label=lookaheadMatch[7]\n // blockquote=lookaheadMatch[8]\n // deferred=lookaheadMatch[9]\n\n 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 {\n // location for rendering button and panel\n var place=w.output;\n\n // default to closed, no cookie, no accesskey\n var show="none"; var title=">"; var tooltip="show"; var cookie=""; var key="";\n\n // extra "+", default to open\n if (lookaheadMatch[1])\n { show="block"; title="<"; tooltip="hide"; }\n\n // cookie, use saved open/closed state\n if (lookaheadMatch[2]) {\n cookie=lookaheadMatch[2].trim().slice(1,-1);\n cookie="chkSlider"+cookie;\n if (config.options[cookie]==undefined)\n { config.options[cookie] = (show=="block") }\n if (config.options[cookie])\n { show="block"; title="<"; tooltip="hide"; }\n else\n { show="none"; title=">"; tooltip="show"; }\n }\n\n // parse custom label/tooltip/accesskey: [label=X|tooltip]\n if (lookaheadMatch[7]) {\n title = lookaheadMatch[7].trim().slice(1,-1);\n var pos=title.indexOf("|");\n if (pos!=-1) { tooltip = title.substr(pos+1,title.length); title=title.substr(0,pos); }\n if (title.substr(title.length-2,1)=="=") { key=title.substr(title.length-1,1); title=title.slice(0,-2); }\n if (pos==-1) tooltip += " "+title; // default tooltip: "show/hide <title>"\n }\n\n // create the button\n if (lookaheadMatch[3]) { // use "Hn" header format instead of button/link\n var lvl=(lookaheadMatch[3].length>6)?6:lookaheadMatch[3].length;\n var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,lookaheadMatch[6],title);\n btn.onclick=onClickNestedSlider;\n btn.setAttribute("href","javascript:;");\n btn.setAttribute("title",tooltip);\n }\n else\n var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider,lookaheadMatch[6]);\n\n // set extra button attributes\n btn.sliderCookie = cookie; // save the cookiename (if any) in the button object\n btn.defOpen=lookaheadMatch[1]!=null; // save default open/closed state (boolean)\n btn.keyparam=key; // save the access key letter ("" if none)\n if (key.length) {\n btn.setAttribute("accessKey",key); // init access key\n btn.onfocus=function(){this.setAttribute("accessKey",this.keyparam);}; // **reclaim** access key on focus\n }\n\n // "non-click" MouseOver open/close slider\n if (lookaheadMatch[5]) btn.onmouseover=onClickNestedSlider;\n\n // create slider panel\n var panelClass=lookaheadMatch[4]?"floatingPanel":"sliderPanel";\n var panel=createTiddlyElement(place,"div",null,panelClass,null);\n panel.button = btn; // so the slider panel know which button it belongs to\n panel.defaultPanelWidth=(lookaheadMatch[4] && lookaheadMatch[4].length>2)?lookaheadMatch[4].slice(1,-1):""; // save requested panel size\n btn.sliderPanel=panel;\n panel.style.display = show;\n panel.style.width=panel.defaultPanelWidth;\n\n // render slider (or defer until shown) \n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n if ((show=="block")||!lookaheadMatch[9]) {\n // render now if panel is supposed to be shown or NOT deferred rendering\n w.subWikify(lookaheadMatch[8]?createTiddlyElement(panel,"blockquote"):panel,this.terminator);\n // align slider/floater position with button\n adjustSliderPos(place,btn,panel,panelClass);\n }\n else {\n var src = w.source.substr(w.nextMatch);\n var endpos=findMatchingDelimiter(src,"+++","===");\n panel.setAttribute("raw",src.substr(0,endpos));\n panel.setAttribute("blockquote",lookaheadMatch[8]?"true":"false");\n panel.setAttribute("rendered","false");\n w.nextMatch += endpos+3;\n if (w.source.substr(w.nextMatch,1)=="\sn") w.nextMatch++;\n if (config.options.chkDebugLazySliderDefer) alert("deferred '"+title+"':\sn\sn"+panel.getAttribute("raw"));\n }\n }\n }\n }\n)\n\n// TBD: ignore 'quoted' delimiters (e.g., "{{{+++foo===}}}" isn't really a slider)\nfunction findMatchingDelimiter(src,starttext,endtext) {\n var startpos = 0;\n var endpos = src.indexOf(endtext);\n // check for nested delimiters\n while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {\n // count number of nested 'starts'\n var startcount=0;\n var temp = src.substring(startpos,endpos-1);\n var pos=temp.indexOf(starttext);\n while (pos!=-1) { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }\n // set up to check for additional 'starts' after adjusting endpos\n startpos=endpos+endtext.length;\n // find endpos for corresponding number of matching 'ends'\n while (startcount && endpos!=-1) {\n endpos = src.indexOf(endtext,endpos+endtext.length);\n startcount--;\n }\n }\n return (endpos==-1)?src.length:endpos;\n}\n//}}}\n\n//{{{\nwindow.onClickNestedSlider=function(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var theLabel = theTarget.firstChild.data;\n var theSlider = theTarget.sliderPanel\n var isOpen = theSlider.style.display!="none";\n // if using default button labels, toggle labels\n if (theLabel==">") theTarget.firstChild.data = "<";\n else if (theLabel=="<") theTarget.firstChild.data = ">";\n // if using default tooltips, toggle tooltips\n if (theTarget.getAttribute("title")=="show")\n theTarget.setAttribute("title","hide");\n else if (theTarget.getAttribute("title")=="hide")\n theTarget.setAttribute("title","show");\n if (theTarget.getAttribute("title")=="show "+theLabel)\n theTarget.setAttribute("title","hide "+theLabel);\n else if (theTarget.getAttribute("title")=="hide "+theLabel)\n theTarget.setAttribute("title","show "+theLabel);\n // deferred rendering (if needed)\n if (theSlider.getAttribute("rendered")=="false") {\n if (config.options.chkDebugLazySliderRender)\n alert("rendering '"+theLabel+"':\sn\sn"+theSlider.getAttribute("raw"));\n var place=theSlider;\n if (theSlider.getAttribute("blockquote")=="true")\n place=createTiddlyElement(place,"blockquote");\n wikify(theSlider.getAttribute("raw"),place);\n theSlider.setAttribute("rendered","true");\n }\n // show/hide the slider\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n theSlider.style.display = isOpen ? "none" : "block";\n // reset to default width (might have been changed via plugin code)\n theSlider.style.width=theSlider.defaultPanelWidth;\n // align slider/floater position with target button\n if (!isOpen) adjustSliderPos(theSlider.parentNode,theTarget,theSlider,theSlider.className);\n // if showing panel, set focus to first 'focus-able' element in panel\n if (theSlider.style.display!="none") {\n var ctrls=theSlider.getElementsByTagName("*");\n for (var c=0; c<ctrls.length; c++) {\n var t=ctrls[c].tagName.toLowerCase();\n if ((t=="input" && ctrls[c].type!="hidden") || t=="textarea" || t=="select")\n { ctrls[c].focus(); break; }\n }\n }\n if (this.sliderCookie && this.sliderCookie.length) {\n config.options[this.sliderCookie]=!isOpen;\n if (config.options[this.sliderCookie]!=this.defOpen)\n saveOptionCookie(this.sliderCookie);\n else { // remove cookie if slider is in default display state\n var ex=new Date(); ex.setTime(ex.getTime()-1000);\n document.cookie = this.sliderCookie+"=novalue; path=/; expires="+ex.toGMTString();\n }\n }\n return false;\n}\n\n// hijack animation handler 'stop' handler so overflow is visible after animation has completed\nSlider.prototype.coreStop = Slider.prototype.stop;\nSlider.prototype.stop = function() { this.coreStop(); this.element.style.overflow = "visible"; }\n\n// adjust panel position based on button position\nif (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel,panelClass) {\n if (panelClass=="floatingPanel") {\n var left=0;\n var top=btn.offsetHeight; \n if (place.style.position!="relative") {\n var left=findPosX(btn);\n var top=findPosY(btn)+btn.offsetHeight;\n var p=place; while (p && p.className!='floatingPanel') p=p.parentNode;\n if (p) { left-=findPosX(p); top-=findPosY(p); }\n }\n if (left+panel.offsetWidth > getWindowWidth()) left=getWindowWidth()-panel.offsetWidth-10;\n panel.style.left=left+"px"; panel.style.top=top+"px";\n }\n}\n\nfunction getWindowWidth() {\n if(document.width!=undefined)\n return document.width; // moz (FF)\n if(document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )\n return document.documentElement.clientWidth; // IE6\n if(document.body && ( document.body.clientWidth || document.body.clientHeight ) )\n return document.body.clientWidth; // IE4\n if(window.innerWidth!=undefined)\n return window.innerWidth; // IE - general\n return 0; // unknown\n}\n//}}}
<div class='header' macro='gradient vert [[ColorPalette::Foreground]] [[ColorPalette::PrimaryMid]]'>\n<div class='headerShadow'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div class='headerForeground'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n</div>\n<div id='sidebar'>\n<span macro="hideWhen !store.tiddlerExists('wwwin')">\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</span>\n<span macro="showWhen !store.tiddlerExists('wwwin')">\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions_www'></div>\n</span>\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='tiddlerDisplay'></div>\n</div>
<<search>><<tiddler MainMenu>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel 'opções »' 'Muda as opções avançadas do TiddlyWiki'>>
\n<<tiddler MainMenu>>\n
/***\n|Name|SinglePageModePlugin|\n|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|\n|Version|2.3.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|Story.prototype.displayTiddler(), Story.prototype.displayTiddlers()|\n|Description|Display tiddlers one at a time with automatic update of URL (permalink). Also, options to always open tiddlers at top/bottom of page|\n\nNormally, as you click on the links in TiddlyWiki, more and more tiddlers are displayed on the page. The order of this tiddler display depends upon when and where you have clicked. Some people like this non-linear method of reading the document, while others have reported that when many tiddlers have been opened, it can get somewhat confusing.\n\n!!!!!Usage\n<<<\nSinglePageMode allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one item displayed at a time. When SinglePageMode is enabled, the title of the current tiddler is automatically displayed in the browser window's titlebar and the browser's location URL is updated with a 'permalink' for the current tiddler so that it is easier to create a browser 'bookmark' for the current tiddler.\n\nEven when SinglePageMode is disabled (i.e., displaying multiple tiddlers is permitted), you can reduce the potential for confusion by enable TopOfPageMode, which forces tiddlers to always open at the top of the page instead of being displayed following the tiddler containing the link that was clicked.\n<<<\n!!!!!Configuration\n<<<\nWhen installed, this plugin automatically adds checkboxes in the AdvancedOptions tiddler so you can enable/disable the plugin behavior. For convenience, these checkboxes are also included here:\n\n<<option chkSinglePageMode>> Display one tiddler at a time\n<<option chkTopOfPageMode>> Always open tiddlers at the top of the page\n<<option chkBottomOfPageMode>> Always open tiddlers at the bottom of the page\n//(note: if both settings are selected, "top of page" is used)//\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''SinglePageModePlugin'' (tagged with <<tag systemConfig>>)\n^^documentation and javascript for SinglePageMode handling^^\n\nWhen installed, this plugin automatically adds checkboxes in the ''shadow'' AdvancedOptions tiddler so you can enable/disable this behavior. However, if you have customized your AdvancedOptions, you will need to ''manually add these checkboxes to your customized tiddler.''\n<<<\n!!!!!Revision History\n<<<\n''2007.03.03 [2.3.1]'' fix typo when adding BPM option to AdvancedOptions (prevented checkbox from appearing)\n''2007.03.03 [2.3.0]'' added support for BottomOfPageMode (BPM) based on request from DaveGarbutt\n''2007.02.06 [2.2.3]'' in Story.prototype.displayTiddler(), use convertUnicodeToUTF8() for correct I18N string handling when creating URL hash string from tiddler title (based on bug report from BidiX)\n''2007.01.08 [2.2.2]'' use apply() to invoke hijacked core functions\n''2006.07.04 [2.2.1]'' in hijack for displayTiddlers(), suspend TPM as well as SPM so that DefaultTiddlers displays in the correct order.\n''2006.06.01 [2.2.0]'' added chkTopOfPageMode (TPM) handling\n''2006.02.04 [2.1.1]'' moved global variable declarations to config.* to avoid FireFox 1.5.0.1 crash bug when assigning to globals\n''2005.12.27 [2.1.0]'' hijack displayTiddlers() so that SPM can be suspended during startup while displaying the DefaultTiddlers (or #hash list). Also, corrected initialization for undefined SPM flag to "false", so default behavior is to display multiple tiddlers\n''2005.12.27 [2.0.0]'' Update for TW2.0\n''2005.11.24 [1.1.2]'' When the back and forward buttons are used, the page now changes to match the URL. Based on code added by Clint Checketts\n''2005.10.14 [1.1.1]'' permalink creation now calls encodeTiddlyLink() to handle tiddler titles with spaces in them\n''2005.10.14 [1.1.0]'' added automatic setting of window title and location bar ('auto-permalink'). feature suggestion by David Dickens.\n''2005.10.09 [1.0.1]'' combined documentation and code in a single tiddler\n''2005.08.15 [1.0.0]'' Initial Release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].\nSupport for BACK/FORWARD buttons adapted from code developed by Clint Checketts\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.SinglePageMode= {major: 2, minor: 3, revision: 1, date: new Date(2007,3,3)};\n\nif (config.options.chkSinglePageMode==undefined) config.options.chkSinglePageMode=true;\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSinglePageMode>> Display one tiddler at a time";\n\nif (config.options.chkTopOfPageMode==undefined) config.options.chkTopOfPageMode=false;\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkTopOfPageMode>> Always open tiddlers at the top of the page";\n\nif (config.options.chkBottomOfPageMode==undefined) config.options.chkBottomOfPageMode=false;\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkBottomOfPageMode>> Always open tiddlers at the bottom of the page";\n\nconfig.SPMTimer = 0;\nconfig.lastURL = window.location.hash;\nfunction checkLastURL()\n{\n if (!config.options.chkSinglePageMode)\n { window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }\n if (config.lastURL == window.location.hash)\n return;\n var tiddlerName = convertUTF8ToUnicode(decodeURI(window.location.hash.substr(1)));\n tiddlerName=tiddlerName.replace(/\s[\s[/,"").replace(/\s]\s]/,""); // strip any [[ ]] bracketing\n if (tiddlerName.length) story.displayTiddler(null,tiddlerName,1,null,null);\n}\n\nif (Story.prototype.SPM_coreDisplayTiddler==undefined) Story.prototype.SPM_coreDisplayTiddler=Story.prototype.displayTiddler;\nStory.prototype.displayTiddler = function(srcElement,title,template,animate,slowly)\n{\n if (config.options.chkSinglePageMode) {\n window.location.hash = encodeURIComponent(convertUnicodeToUTF8(String.encodeTiddlyLink(title)));\n config.lastURL = window.location.hash;\n document.title = wikifyPlain("SiteTitle") + " - " + title;\n story.closeAllTiddlers();\n if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);\n }\n if (config.options.chkTopOfPageMode) { story.closeTiddler(title); srcElement=null; }\n else if (config.options.chkBottomOfPageMode) { story.closeTiddler(title); srcElement="bottom"; }\n this.SPM_coreDisplayTiddler.apply(this,arguments);\n if (config.options.chkTopOfPageMode) window.scrollTo(0,0); // make sure top of page is visible\n else if (config.options.chkBottomOfPageMode) {\n var display=document.getElementById("tiddlerDisplay"); // for TW2.1-\n if (!display) var display=document.getElementById("storyDisplay"); // for TW2.2+\n window.scrollTo(0,ensureVisible(display.lastChild)); // make sure last tiddler is visible\n }\n}\n\nif (Story.prototype.SPM_coreDisplayTiddlers==undefined) Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;\nStory.prototype.displayTiddlers = function(srcElement,titles,template,unused1,unused2,animate,slowly)\n{\n // suspend single-page mode (and/or top/bottom display options) when showing multiple tiddlers\n var saveSPM=config.options.chkSinglePageMode; config.options.chkSinglePageMode=true;\n var saveTPM=config.options.chkTopOfPageMode; config.options.chkTopOfPageMode=false;\n var saveBPM=config.options.chkBottomOfPageMode; config.options.chkBottomOfPageMode=false;\n this.SPM_coreDisplayTiddlers.apply(this,arguments);\n config.options.chkBottomOfPageMode=saveBPM;\n config.options.chkTopOfPageMode=saveTPM;\n config.options.chkSinglePageMode=saveSPM;\n}\n//}}}
/*{{{*/\nbody {\n font-family: arial,"Bitstream Vera Sans",sans-serif;\n background: [[ColorPalette::TertiaryPale]];\n}\n\n.externalLink {\n text-decoration: none;\n}\n\nh1,h2,h3,h4,h5 {\n color: [[ColorPalette::Foreground]];\n background: transparent;\n padding-left: 0;\n}\n\nhr {\n border: 0px solid [[ColorPalette::PrimaryMid]];\n color: [[ColorPalette::PrimaryMid]];\n background-color: [[ColorPalette::PrimaryMid]];\n}\n\n.title {\n font-size: 200%;\n color: [[MyPalette::Title]];\n border-bottom: 1px solid [[MyPalette::Title]];\n padding-bottom: 0.25em;\n}\n\n.tiddler {\n border-bottom:1px solid [[ColorPalette::TertiaryLight]];\n border-right:1px solid [[ColorPalette::TertiaryLight]];\n padding-bottom: 1em;\n margin-bottom: 1em;\n background: [[ColorPalette::Background]];\n -moz-border-radius: 1.5em;\n}\n\n.selected .tagging, .selected .tagged {\n background-color: [[ColorPalette::TertiaryPale]];\n}\n\n.toolbar .button {\n border: 1px solid [[ColorPalette::Background]];\n}\n\n.button {\n border: 1px solid [[ColorPalette::TertiaryPale]];\n}\n\n.button:hover {\n border: 1px solid [[ColorPalette::TertiaryPale]];\n}\n\n.headerShadow {\n padding: 1.5em 0em 1.5em 1.5em;\n}\n\n.headerForeground {\n padding: 1.5em 0em 1.5em 1.5em;\n}\n\n.viewer {\n padding: 0.5em 0 0 0;\n line-height: 125%;\n font-family: "Bitstream Vera Serif", serif;\n font-size: 120%;\n}\n\n.viewer code {\n font-size: 100%;\n}\n\n.viewer pre {\n padding: 0.5em;\n font-size: 100%;\n overflow: auto;\n}\n\n .tabContents {\n background: [[ColorPalette::SecondaryPale]];\n border: 1px solid [[ColorPalette::SecondaryPale]];\n}\n\n.tabSelected {\n background: [[ColorPalette::SecondaryPale]];\n border: 1px solid [[ColorPalette::SecondaryPale]];\n}\n\n.tabUnselected {\n color: [[ColorPalette::TertiaryMid]];\n background: [[ColorPalette::TertiaryPale]];\n border-top: solid 1px [[ColorPalette::TertiaryLight]];\n border-left: solid 1px [[ColorPalette::TertiaryLight]];\n border-right: solid 1px [[ColorPalette::TertiaryLight]];\n border-bottom: none;\n}\n\n.viewer table {\n border: 0px solid [[ColorPalette::TertiaryDark]];\n}\n\n.viewer th, thead td {\n background: [[ColorPalette::SecondaryMid]];\n border: 0px solid [[ColorPalette::TertiaryDark]];\n color: [[ColorPalette::Background]];\n}\n\n.viewer td, .viewer tr {\n border: 0px solid [[ColorPalette::TertiaryDark]];\n}\n\n\n#sidebarOptions .sliderPanel {\n background: transparent;\n}\n\n#MainMenu .externalLink {\n text-decoration: none;\n}\n\n#sidebarTabs .tabSelected {\n color: #000;\n background: [[ColorPalette::Background]];\n border: 1px solid [[ColorPalette::Background]];\n}\n\n#sidebarTabs .tabUnselected {\n color: [[ColorPalette::TertiaryMid]];\n background: [[ColorPalette::TertiaryPale]];\n border-top: solid 1px [[ColorPalette::TertiaryLight]];\n border-left: solid 1px [[ColorPalette::TertiaryLight]];\n border-right: solid 1px [[ColorPalette::TertiaryLight]];\n border-bottom: none;\n}\n\n#sidebarTabs .tabContents {\n background: [[ColorPalette::Background]];\n border: 1px solid [[ColorPalette::Background]];\n}\n\n#sidebarTabs .txtMoreTab .tabContents {\n background: [[ColorPalette::SecondaryPale]];\n border: 1px solid [[ColorPalette::SecondaryPale]];\n}\n\n#sidebarTabs .txtMoreTab .tabSelected {\n background: [[ColorPalette::SecondaryPale]];\n border: 1px solid [[ColorPalette::SecondaryPale]];\n}\n\n#sidebarTabs .txtMoreTab .tabUnselected {\n background: [[ColorPalette::Background]];\n}\n\n#displayArea {\n margin: 1em 15.5em 0em 0em;\n}\n\n.sparkline {\n background: none;\n}\n\n.editor input, .editor textarea {\n margin-bottom: 1px;\n}\n\n#messageArea{\n background-color: [[ColorPalette::TertiaryPale]];\n font-size: 90%;\n border: none;\n/* filter:alpha(opacity=50);*/\n opacity: 0.8;\n -moz-opacity: 0.8;\n}\n\n#messageArea .button{\n text-decoration: none;\n font-weight: bold;\n background: transparent;\n border: 0px;\n}\n\n#messageArea .button:hover{\n background: [[ColorPalette::PrimaryPale]];\n}\n/*}}}*/\n[[MyStyleSheet]]\n[[BoxesStyleSheet]]\n[[TopMenuStyleSheet]]
/*{{{*/\n* html .tiddler {\n height: 1%;\n}\n\nbody {\n font-size: .75em;\n font-family: arial,helvetica;\n margin: 0;\n padding: 0;\n}\n\nh1,h2,h3,h4,h5 {\n font-weight: bold;\n text-decoration: none;\n padding-left: 0.4em;\n}\n\nh1 {font-size: 1.35em;}\nh2 {font-size: 1.25em;}\nh3 {font-size: 1.1em;}\nh4 {font-size: 1em;}\nh5 {font-size: .9em;}\n\nhr {\n height: 1px;\n}\n\na{\n text-decoration: none;\n}\n\ndt {font-weight: bold;}\n\nol { list-style-type: decimal }\nol ol { list-style-type: lower-alpha }\nol ol ol { list-style-type: lower-roman }\nol ol ol ol { list-style-type: decimal }\nol ol ol ol ol { list-style-type: lower-alpha }\nol ol ol ol ol ol { list-style-type: lower-roman }\nol ol ol ol ol ol ol { list-style-type: decimal }\n\n.txtOptionInput {\n width: 11em;\n}\n\n#contentWrapper .chkOptionInput {\n border: 0;\n}\n\n.externalLink {\n text-decoration: underline;\n}\n\n.indent {margin-left:3em;}\n.outdent {margin-left:3em; text-indent:-3em;}\ncode.escaped {white-space:nowrap;}\n\n.tiddlyLinkExisting {\n font-weight: bold;\n}\n\n.tiddlyLinkNonExisting {\n font-style: italic;\n}\n\n/* the 'a' is required for IE, otherwise it renders the whole tiddler a bold */\na.tiddlyLinkNonExisting.shadow {\n font-weight: bold;\n}\n\n#mainMenu .tiddlyLinkExisting, \n#mainMenu .tiddlyLinkNonExisting,\n#sidebarTabs .tiddlyLinkNonExisting{\n font-weight: normal;\n font-style: normal;\n}\n\n#sidebarTabs .tiddlyLinkExisting {\n font-weight: bold;\n font-style: normal;\n}\n\n.header {\n position: relative;\n}\n\n.header a:hover {\n background: transparent;\n}\n\n.headerShadow {\n position: relative;\n padding: 4.5em 0em 1em 1em;\n left: -1px;\n top: -1px;\n}\n\n.headerForeground {\n position: absolute;\n padding: 4.5em 0em 1em 1em;\n left: 0px;\n top: 0px;\n}\n\n.siteTitle {\n font-size: 3em;\n}\n\n.siteSubtitle {\n font-size: 1.2em;\n}\n\n#mainMenu {\n position: absolute;\n left: 0;\n width: 10em;\n text-align: right;\n line-height: 1.6em;\n padding: 1.5em 0.5em 0.5em 0.5em;\n font-size: 1.1em;\n}\n\n#sidebar {\n position: absolute;\n right: 3px;\n width: 16em;\n font-size: .9em;\n}\n\n#sidebarOptions {\n padding-top: 0.3em;\n}\n\n#sidebarOptions a {\n margin: 0em 0.2em;\n padding: 0.2em 0.3em;\n display: block;\n}\n\n#sidebarOptions input {\n margin: 0.4em 0.5em;\n}\n\n#sidebarOptions .sliderPanel {\n margin-left: 1em;\n padding: 0.5em;\n font-size: .85em;\n}\n\n#sidebarOptions .sliderPanel a {\n font-weight: bold;\n display: inline;\n padding: 0;\n}\n\n#sidebarOptions .sliderPanel input {\n margin: 0 0 .3em 0;\n}\n\n#sidebarTabs .tabContents {\n width: 15em;\n overflow: hidden;\n}\n\n.wizard {\n padding: 0.1em 0em 0em 2em;\n}\n\n.wizard h1 {\n font-size: 2em;\n font-weight: bold;\n background: none;\n padding: 0em 0em 0em 0em;\n margin: 0.4em 0em 0.2em 0em;\n}\n\n.wizard h2 {\n font-size: 1.2em;\n font-weight: bold;\n background: none;\n padding: 0em 0em 0em 0em;\n margin: 0.2em 0em 0.2em 0em;\n}\n\n.wizardStep {\n padding: 1em 1em 1em 1em;\n}\n\n.wizard .button {\n margin: 0.5em 0em 0em 0em;\n font-size: 1.2em;\n}\n\n#messageArea {\nposition:absolute; top:0; right:0; margin: 0.5em; padding: 0.5em;\n}\n\n*[id='messageArea'] {\nposition:fixed !important; z-index:99;}\n\n.messageToolbar {\ndisplay: block;\ntext-align: right;\n}\n\n#messageArea a{\n text-decoration: underline;\n}\n\n.popup {\n font-size: .9em;\n padding: 0.2em;\n list-style: none;\n margin: 0;\n}\n\n.popup hr {\n display: block;\n height: 1px;\n width: auto;\n padding: 0;\n margin: 0.2em 0em;\n}\n\n.listBreak {\n font-size: 1px;\n line-height: 1px;\n}\n\n.listBreak div {\n margin: 2px 0;\n}\n\n.popup li.disabled {\n padding: 0.2em;\n}\n\n.popup li a{\n display: block;\n padding: 0.2em;\n}\n\n.tabset {\n padding: 1em 0em 0em 0.5em;\n}\n\n.tab {\n margin: 0em 0em 0em 0.25em;\n padding: 2px;\n}\n\n.tabContents {\n padding: 0.5em;\n}\n\n.tabContents ul, .tabContents ol {\n margin: 0;\n padding: 0;\n}\n\n.txtMainTab .tabContents li {\n list-style: none;\n}\n\n.tabContents li.listLink {\n margin-left: .75em;\n}\n\n#displayArea {\n margin: 1em 17em 0em 14em;\n}\n\n\n.toolbar {\n text-align: right;\n font-size: .9em;\n visibility: hidden;\n}\n\n.selected .toolbar {\n visibility: visible;\n}\n\n.tiddler {\n padding: 1em 1em 0em 1em;\n}\n\n.missing .viewer,.missing .title {\n font-style: italic;\n}\n\n.title {\n font-size: 1.6em;\n font-weight: bold;\n}\n\n.missing .subtitle {\n display: none;\n}\n\n.subtitle {\n font-size: 1.1em;\n}\n\n.tiddler .button {\n padding: 0.2em 0.4em;\n}\n\n.tagging {\nmargin: 0.5em 0.5em 0.5em 0;\nfloat: left;\ndisplay: none;\n}\n\n.isTag .tagging {\ndisplay: block;\n}\n\n.tagged {\nmargin: 0.5em;\nfloat: right;\n}\n\n.tagging, .tagged {\nfont-size: 0.9em;\npadding: 0.25em;\n}\n\n.tagging ul, .tagged ul {\nlist-style: none;margin: 0.25em;\npadding: 0;\n}\n\n.tagClear {\nclear: both;\n}\n\n.footer {\n font-size: .9em;\n}\n\n.footer li {\ndisplay: inline;\n}\n\n* html .viewer pre {\n width: 99%;\n padding: 0 0 1em 0;\n}\n\n.viewer {\n line-height: 1.4em;\n padding-top: 0.5em;\n}\n\n.viewer .button {\n margin: 0em 0.25em;\n padding: 0em 0.25em;\n}\n\n.viewer blockquote {\n line-height: 1.5em;\n padding-left: 0.8em;\n margin-left: 2.5em;\n}\n\n.viewer ul, .viewer ol{\n margin-left: 0.5em;\n padding-left: 1.5em;\n}\n\n.viewer table {\n border-collapse: collapse;\n margin: 0.8em 1.0em;\n}\n\n.viewer th, .viewer td, .viewer tr,.viewer caption{\n padding: 3px;\n}\n\n.viewer table.listView {\n font-size: 0.85em;\n margin: 0.8em 1.0em;\n}\n\n.viewer table.listView th, .viewer table.listView td, .viewer table.listView tr {\n padding: 0px 3px 0px 3px;\n}\n\n.viewer pre {\n padding: 0.5em;\n margin-left: 0.5em;\n font-size: 1.2em;\n line-height: 1.4em;\n overflow: auto;\n}\n\n.viewer code {\n font-size: 1.2em;\n line-height: 1.4em;\n}\n\n.editor {\nfont-size: 1.1em;\n}\n\n.editor input, .editor textarea {\n display: block;\n width: 100%;\n font: inherit;\n}\n\n.editorFooter {\n padding: 0.25em 0em;\n font-size: .9em;\n}\n\n.editorFooter .button {\npadding-top: 0px; padding-bottom: 0px;}\n\n.fieldsetFix {border: 0;\npadding: 0;\nmargin: 1px 0px 1px 0px;\n}\n\n.sparkline {\n line-height: 1em;\n}\n\n.sparktick {\n outline: 0;\n}\n\n.zoomer {\n font-size: 1.1em;\n position: absolute;\n padding: 1em;\n}\n\n.cascade {\n font-size: 1.1em;\n position: absolute;\n overflow: hidden;\n}\n\n\n\n\n/*}}}*/
<!--{{{-->\n<div class='toolbar' >\n<span macro="hideWhen !store.tiddlerExists('wwwin')">\n<span macro='toolbar -closeTiddler closeOthers +editTiddler revisions jump'>\n</span>\n</span>\n</div>\n</span>\n<div class='title' macro='view title'></div>\n<div class='subtitle'>\n<span macro="hideWhen !store.tiddlerExists('wwwin')">\n<span macro='view modifier link'></span>, <span macro='view modified date [[DD MMM YYYY]]'></span> (created <span macro='view created date [[DD MMM YYYY]]'></span>\n)</span></div>\n\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>\n<!--}}}-->