Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
<<importTiddlers>>
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

----
Also see [[AdvancedOptions]]
<!--{{{-->
<div class='header' role='banner' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' role='navigation' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' role='navigation' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' role='complementary' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea' role='main'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected {color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}
.readOnly {background:[[ColorPalette::TertiaryPale]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:alpha(opacity=60);}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0; top:0;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0 3px 0 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0; padding-bottom:0;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='toolbar' role='navigation' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<<makepublic>>

!Getting Started
JODA is a serverless scripting environment for JIRA. Automating your JIRA Cloud instance is as simple as clicking "Create Task". JODA Tasks let you automate common JIRA maintenance functions without having to setup servers, assign domain names, open network ports or other hassles. JODA Tasks are Node.js programs that run using on-demand resources. With JODA, you can run virtually any type of JIRA maintenance function with zero administration. Just write a simple script with the built-in editor and JODA takes care of everything required to run your code. You can run your script on-demand with a button click or automatically trigger it on a repeating schedule. 

/%
!!Why JODA

!!Features
%/

!!Configure Cloud Storage

The first step in configuring JODA is integrating a cloud storage provider for storing JODA Tasks. Amazon S3 is the only storage provider currently supported

[img[http://joda.io/images/docs/config-aws.png]]

After integrating your S3 storage a bucket will be created in your account with the name ''io.joda.addon''. JODA Tasks information will be stored in this bucket using key prefixes of the form ''/{clientKey}/admin/{taskName}''

!Using JODA

Once the JODA Add-on is installed and after configuring AWS, access JODA by clicking the JODA button shown in the top JIRA system menu.

[img[http://joda.io/images/docs/access-joda-button.png]]

The first screen you see will be the JODA Task List

[img[http://joda.io/images/docs/task-list-half.png]]


!!Creating Tasks

# Click "Create Task" on the Task List screen and you will be presented with a dialog to enter a name and other details.<<br>>[img[http://joda.io/images/docs/task-create-dialog.png]]
# Review task configuration. Each JODA Task is defined by three files. A default copy of each of these files is created for you
*; clientInfo.json
*:Each JODA Task is pre-configured with authentication tokens and access URLs to communicate directly with your JIRA Cloud instance.
*; package.json
*:Standard Node.js meta data file that describes your program.
*; //task name//.js
*:The actual JavaScript code for your task.
# Click "Save" when you are finished editing your task.


!!Running Tasks
Running tasks is as simple as clicking the "Run" button on the task details page. Scheduling tasks for delayed or repeated execution will be supported in the very near future.

Each run of the task will create an entry in the Logs section of the Task Detail screen. Select a particular entry to see the output of the task.

[img[http://joda.io/images/docs/log-list.png]]


!!Examples
/%
!Support
!Reference
!!Configuration
%/
!!Supported Environment
JODA supports the following runtime versions and/or environments:
* Linux kernel version – 4.1.27-25.49.amzn1.x86_64
* Node.js 4.3.2
* AWS SDK for JavaScript version 2.4.9


!!Security and Privacy
Our security and privacy policy can be viewed [[here|http://www.joda.io/addon/security-and-privacy-statement/]]

!!Release Notes
* 1.1.4 Atlassian Codegeist 2016 Submission
/***
|Name|DcTableOfContentsPlugin|
|Author|[[Doug Compton|http://www.zagware.com/tw/plugins.html#DcTableOfContentsPlugin]]|
|Contributors|[[Lewcid|http://lewcid.org]], [[FND|http://devpad.tiddlyspot.com]], [[ELS|http://www.tiddlytools.com]]|
|Source|[[FND's DevPad|http://devpad.tiddlyspot.com#DcTableOfContentsPlugin]]|
|Version|0.4.1|
|~CoreVersion|2.2|
<<showtoc>>
!Description
This macro will insert a table of contents reflecting the headings that are used in a tiddler and will be automatically updated when you make changes.  Each item in the table of contents can be clicked on to jump to that heading.  It can be used either inside of select tiddlers or inside a system wide template.

A parameter can be used to show the table of contents of a seperate tiddler, &lt;<showtoc tiddlerTitle>&gt;

It will also place a link beside each header which will jump the screen to the top of the current tiddler.  This will only be displayed if the current tiddler is using the &lt;<showtoc>&gt; macro.

The appearance of the table of contents and the link to jump to the top can be modified using CSS.  An example of this is given below.

!Usage
!!Only in select tiddlers
The table of contents above is an example of how to use this macro in a tiddler.  Just insert &lt;<showtoc>&gt; in a tiddler on a line by itself.

It can also display the table of contents of another tiddler by using the macro with a parameter, &lt;<showtoc tiddlerTitle>&gt;
!!On every tiddler
It can also be used in a template to have it show on every tiddler.  An example ViewTemplate is shown below.

//{{{
<div class='toolbar' macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'>Created <span macro='view created date DD-MM-YY'></span>, updated <span macro='view modified date DD-MM-YY'></span></div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class="toc" macro='showtoc'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
//}}}

!Examples
If you had a tiddler with the following headings:
{{{
!Heading1a
!!Heading2a
!!Heading2b
!!!Heading3
!Heading1b
}}}
this table of contents would be automatically generated:
* Heading1a
** Heading2a
** Heading2b
*** Heading3
* Heading1b
!Changing how it looks
To modifiy the appearance, you can use CSS similiar to the below.
//{{{
.dcTOC ul {
	color: red;
	list-style-type: lower-roman;
}
.dcTOC a {
	color: green;
	border: none;
}

.dcTOC a:hover {
	background: white;
	border: solid 1px;
}
.dcTOCTop {
	font-size: 2em;
	color: green;
}
//}}}

!Revision History
!!v0.1.0 (2006-04-07)
* initial release
!!v0.2.0 (2006-04-10)
* added the [top] link on headings to jump to the top of the current tiddler
* appearance can now be customized using CSS
* all event handlers now return false
!!v0.3.0 (2006-04-12)
* added the ability to show the table of contents of a seperate tiddler
* fixed an error when a heading had a ~WikiLink in it
!!v0.3.5 (2007-10-16)
* updated formatter object for compatibility with TiddlyWiki v2.2 (by Lewcid)
!!v0.4.0 (2007-11-14)
* added toggle button for collapsing/expanding table of contents element
* refactored documentation
!To Do
* code sanitizing/rewrite
* documentation refactoring
* use shadow tiddler for styles
!Code
***/
//{{{

version.extensions.DcTableOfContentsPlugin= {
	major: 0, minor: 4, revision: 0,
	type: "macro",
	source: "http://devpad.tiddlyspot.com#DcTableOfContentsPlugin"
};

// Replace heading formatter with our own
for (var n=0; n<config.formatters.length; n++) {
	var format = config.formatters[n];
	if (format.name == 'heading') {
		format.handler = function(w) {
			// following two lines is the default handler
			var e = createTiddlyElement(w.output, "h" + w.matchLength);
			w.subWikifyTerm(e, this.termRegExp); //updated for TW 2.2+

			// Only show [top] if current tiddler is using showtoc
			if (w.tiddler && w.tiddler.isTOCInTiddler == 1) {
				// Create a container for the default CSS values
				var c = createTiddlyElement(e, "div");
				c.setAttribute("style", "font-size: 0.5em; color: blue;");
				// Create the link to jump to the top
				// createTiddlyButton(c, " [top]", "Go to top of tiddler", window.scrollToTop, "dcTOCTop", null, null);
			}
		}
		break;
	}
}

config.macros.showtoc = {
	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
		var text = "";
		var title = "";
		var myTiddler = null;

		// Did they pass in a tiddler?
		if (params.length) {
			title = params[0];
			myTiddler = store.getTiddler(title);
		} else {
			myTiddler = tiddler;
		}

		if (myTiddler == null) {
			wikify("ERROR: Could not find " + title, place);
			return;
		}

		var lines = myTiddler .text.split("\n");
		myTiddler.isTOCInTiddler = 1;

		// Create a parent container so the TOC can be customized using CSS
		var r = createTiddlyElement(place, "div", null, "dcTOC");
		// create toggle button
		createTiddlyButton(r, "Contents", "show/collapse table of contents",
			function() { config.macros.showtoc.toggleElement(this.nextSibling); },
			"toggleButton")
		// Create a container so the TOC can be customized using CSS
		var c = createTiddlyElement(r, "div");

		if (lines != null) {
			for (var x=0; x<lines.length; x++) {
				var line = lines[x];
				if (line.substr(0,1) == "!") {
					// Find first non ! char
					for (var i=0; i<line.length; i++) {
						if (line.substr(i, 1) != "!") {
							break;
						}
					}
					var desc = line.substring(i);
					// Remove WikiLinks
					desc = desc.replace(/\[\[/g, "");
					desc = desc.replace(/\]\]/g, "");

					text += line.substr(0, i).replace(/[!]/g, '*');
					text += '<html><a href="javascript:;" onClick="window.scrollToHeading(\'' + title + '\', \'' + desc+ '\', event)">' + desc+ '</a></html>\n';
				}
			}
		}
		wikify(text, c);
	}
}

config.macros.showtoc.toggleElement = function(e) {
	if(e) {
		if(e.style.display != "none") {
			e.style.display = "none";
		} else {
			e.style.display = "";
		}
	}
};

window.scrollToTop = function(evt) {
	if (! evt)
		var evt = window.event;

	var target = resolveTarget(evt);
	var tiddler = story.findContainingTiddler(target);

	if (! tiddler)
		return false;

	window.scrollTo(0, ensureVisible(tiddler));

	return false;
};

window.scrollToHeading = function(title, anchorName, evt) {
	var tiddler = null;

	if (! evt)
		var evt = window.event;

	if (title) {
		story.displayTiddler(store.getTiddler(title), title, null, false);
		tiddler = document.getElementById(story.idPrefix + title);
	} else {
		var target = resolveTarget(evt);
		tiddler = story.findContainingTiddler(target);
	}

	if (tiddler == null)
		return false;
	
	var children1 = tiddler.getElementsByTagName("h1");
	var children2 = tiddler.getElementsByTagName("h2");
	var children3 = tiddler.getElementsByTagName("h3");
	var children4 = tiddler.getElementsByTagName("h4");
	var children5 = tiddler.getElementsByTagName("h5");

	var children = new Array();
	children = children.concat(children1, children2, children3, children4, children5);

	for (var i = 0; i < children.length; i++) {
		for (var j = 0; j < children[i].length; j++) {
			var heading = children[i][j].innerHTML;

			// Remove all HTML tags
			while (heading.indexOf("<") >= 0) {
				heading = heading.substring(0, heading.indexOf("<")) + heading.substring(heading.indexOf(">") + 1);
			}

			// Cut off the code added in showtoc for TOP
			heading = heading.substr(0, heading.length-6);

			if (heading == anchorName) {
				var y = findPosY(children[i][j]);
				window.scrollTo(0,y);
				return false;
			}
		}
	}
	return false
};
//}}}
[[Contents]]
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Insert Javascript executable code directly into your tiddler content.|
''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.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2010.12.15 1.9.6 allow (but ignore) type="..." syntax
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 1.0.0 initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 6, date: new Date(2010,12,15)};

config.formatters.push( {
	name: "inlineJavascript",
	match: "\\<script",
	lookahead: "\\<script(?: type=\\\"[^\\\"]*\\\")?(?: src=\\\"([^\\\"]*)\\\")?(?: label=\\\"([^\\\"]*)\\\")?(?: title=\\\"([^\\\"]*)\\\")?(?: key=\\\"([^\\\"]*)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
	handler: function(w) {
		var lookaheadRegExp = new RegExp(this.lookahead,"mg");
		lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			var src=lookaheadMatch[1];
			var label=lookaheadMatch[2];
			var tip=lookaheadMatch[3];
			var key=lookaheadMatch[4];
			var show=lookaheadMatch[5];
			var code=lookaheadMatch[6];
			if (src) { // external script library
				var script = document.createElement("script"); script.src = src;
				document.body.appendChild(script); document.body.removeChild(script);
			}
			if (code) { // inline code
				if (show) // display source in tiddler
					wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
				if (label) { // create 'onclick' command link
					var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
					var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
					link.code="function _out(place,tiddler){"+fixup+"\n};_out(this,this.tiddler);"
					link.tiddler=w.tiddler;
					link.onclick=function(){
						this.bufferedHTML="";
						try{ var r=eval(this.code);
							if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)
								var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);
							if(this.bufferedHTML.length)
								s.innerHTML=this.bufferedHTML;
							if((typeof(r)==="string")&&r.length) {
								wikify(r,s,null,this.tiddler);
								return false;
							} else return r!==undefined?r:false;
						} catch(e){alert(e.description||e.toString());return false;}
					};
					link.setAttribute("title",tip||"");
					var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
					URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
					URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
					link.setAttribute("href",URIcode);
					link.style.cursor="pointer";
					if (key) link.accessKey=key.substr(0,1); // single character only
				}
				else { // run script immediately
					var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
					var c="function _out(place,tiddler){"+fixup+"\n};_out(w.output,w.tiddler);";
					try	 { var out=eval(c); }
					catch(e) { out=e.description?e.description:e.toString(); }
					if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
				}
			}
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
		}
	}
} )
//}}}

// // Backward-compatibility for TW2.1.x and earlier
//{{{
if (typeof(wikifyPlainText)=="undefined") window.wikifyPlainText=function(text,limit,tiddler) {
	if(limit > 0) text = text.substr(0,limit);
	var wikifier = new Wikifier(text,formatter,null,tiddler);
	return wikifier.wikifyPlain();
}
//}}}

// // GLOBAL FUNCTION: $(...) -- 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=='undefined') { function $(id) { return document.getElementById(id.replace(/^#/,'')); } }
//}}}

<div class='header'>
<div class="logoBar">
<div class="logoLine">
		<div class="logoBar-logo">
			<a class="navbar-brand logo" href="http://www.joda.io"><img alt="JODA" height="40px" src="data:image/png;base64,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"/>
</a>
		</div>
		<div class="logoBar-links ">
			<ul class="">
				<li><a href="#">About</a></li>
				<li><a href="mailto:info@joda.io">Contact</a></li>
			</ul>
		</div>
</div>
</div> 


<div class='titleBar'>
    <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
    <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
  </div>

</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
  <div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
  <div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
  <div id='messageArea'></div>
  <div id='tiddlerDisplay'></div>
</div>
/***
|Name|SinglePageModePlugin|
|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|
|Documentation|http://www.TiddlyTools.com/#SinglePageModePluginInfo|
|Version|2.9.7|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Show tiddlers one at a time with automatic permalink, or always open tiddlers at top/bottom of page.|
This plugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one tiddler displayed at a time.
!!!!!Documentation
>see [[SinglePageModePluginInfo]]
!!!!!Configuration
<<<
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)

Notes:
* The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}.
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
<<<
!!!!!Revisions
<<<
2010.11.30 2.9.7 use story.getTiddler()
2008.10.17 2.9.6 changed chkSinglePageAutoScroll default to false
| Please see [[SinglePageModePluginInfo]] for previous revision details |
2005.08.15 1.0.0 Initial Release.  Support for BACK/FORWARD buttons adapted from code developed by Clint Checketts.
<<<
!!!!!Code
***/
//{{{
version.extensions.SinglePageModePlugin= {major: 2, minor: 9, revision: 7, date: new Date(2010,11,30)};
//}}}
//{{{
config.paramifiers.SPM = { onstart: function(v) {
	config.options.chkSinglePageMode=eval(v);
	if (config.options.chkSinglePageMode && config.options.chkSinglePagePermalink && !config.browser.isSafari) {
		config.lastURL = window.location.hash;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
	}
} };
//}}}
//{{{
if (config.options.chkSinglePageMode==undefined)
	config.options.chkSinglePageMode=false;
if (config.options.chkSinglePagePermalink==undefined)
	config.options.chkSinglePagePermalink=true;
if (config.options.chkSinglePageKeepFoldedTiddlers==undefined)
	config.options.chkSinglePageKeepFoldedTiddlers=false;
if (config.options.chkSinglePageKeepEditedTiddlers==undefined)
	config.options.chkSinglePageKeepEditedTiddlers=false;
if (config.options.chkTopOfPageMode==undefined)
	config.options.chkTopOfPageMode=false;
if (config.options.chkBottomOfPageMode==undefined)
	config.options.chkBottomOfPageMode=false;
if (config.options.chkSinglePageAutoScroll==undefined)
	config.options.chkSinglePageAutoScroll=false;
//}}}
//{{{
config.SPMTimer = 0;
config.lastURL = window.location.hash;
function checkLastURL()
{
	if (!config.options.chkSinglePageMode)
		{ window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }
	if (config.lastURL == window.location.hash) return; // no change in hash
	var tids=decodeURIComponent(window.location.hash.substr(1)).readBracketedList();
	if (tids.length==1) // permalink (single tiddler in URL)
		story.displayTiddler(null,tids[0]);
	else { // restore permaview or default view
		config.lastURL = window.location.hash;
		if (!tids.length) tids=store.getTiddlerText("DefaultTiddlers").readBracketedList();
		story.closeAllTiddlers();
		story.displayTiddlers(null,tids);
	}
}


if (Story.prototype.SPM_coreDisplayTiddler==undefined)
	Story.prototype.SPM_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)
{
	var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
	var tiddlerElem=story.getTiddler(title); // ==null unless tiddler is already displayed
	var opt=config.options;
	var single=opt.chkSinglePageMode && !startingUp;
	var top=opt.chkTopOfPageMode && !startingUp;
	var bottom=opt.chkBottomOfPageMode && !startingUp;
	if (single) {
		story.forEachTiddler(function(tid,elem) {
			// skip current tiddler and, optionally, tiddlers that are folded.
			if (	tid==title
				|| (opt.chkSinglePageKeepFoldedTiddlers && elem.getAttribute("folded")=="true"))
				return;
			// if a tiddler is being edited, ask before closing
			if (elem.getAttribute("dirty")=="true") {
				if (opt.chkSinglePageKeepEditedTiddlers) return;
				// if tiddler to be displayed is already shown, then leave active tiddler editor as is
				// (occurs when switching between view and edit modes)
				if (tiddlerElem) return;
				// otherwise, ask for permission
				var msg="'"+tid+"' is currently being edited.\n\n";
				msg+="Press OK to save and close this tiddler\nor press Cancel to leave it opened";
				if (!confirm(msg)) return; else story.saveTiddler(tid);
			}
			story.closeTiddler(tid);
		});
	}
	else if (top)
		arguments[0]=null;
	else if (bottom)
		arguments[0]="bottom";
	if (single && opt.chkSinglePagePermalink && !config.browser.isSafari) {
		window.location.hash = encodeURIComponent(String.encodeTiddlyLink(title));
		config.lastURL = window.location.hash;
		document.title = wikifyPlain("SiteTitle") + " - " + title;
		if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
	}
	if (tiddlerElem && tiddlerElem.getAttribute("dirty")=="true") { // editing... move tiddler without re-rendering
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		if (!isTopTiddler && (single || top))
			tiddlerElem.parentNode.insertBefore(tiddlerElem,tiddlerElem.parentNode.firstChild);
		else if (bottom)
			tiddlerElem.parentNode.insertBefore(tiddlerElem,null);
		else this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	} else
		this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
	var tiddlerElem=story.getTiddler(title);
	if (tiddlerElem&&opt.chkSinglePageAutoScroll) {
		// scroll to top of page or top of tiddler
		var isTopTiddler=(tiddlerElem.previousSibling==null);
		var yPos=isTopTiddler?0:ensureVisible(tiddlerElem);
		// if animating, defer scroll until after animation completes
		var delay=opt.chkAnimate?config.animDuration+10:0;
		setTimeout("window.scrollTo(0,"+yPos+")",delay); 
	}
}

if (Story.prototype.SPM_coreDisplayTiddlers==undefined)
	Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;
Story.prototype.displayTiddlers = function() {
	// suspend single/top/bottom modes when showing multiple tiddlers
	var opt=config.options;
	var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
	var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
	var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
	this.SPM_coreDisplayTiddlers.apply(this,arguments);
	opt.chkBottomOfPageMode=saveBPM;
	opt.chkTopOfPageMode=saveTPM;
	opt.chkSinglePageMode=saveSPM;
}
//}}}

JODA Documentation
/*{{{*/
@media (min-width: 768px) {
#contentWrapper {
    width: 750px;
}
}

@media (min-width: 992px) {
#contentWrapper {
    width: 970px;
}
}

@media (min-width: 1200px) {
#contentWrapper {
    width: 1170px;
}
}

body {
    // font-weight: 600;
    font-family: "Raleway", "Helvetica Neue", Helvetica, Arial, sans-serif;
    font-size: 18px;
    color: #777777;
}

#contentWrapper {
    margin-left: auto;
    margin-right: auto;
    padding-left: 15px;
    padding-right: 15px;
}

.header {
   background-color: #ffffff;
}

.titleBar {
    padding-top: 0px;
    padding-right: 0px;
    padding-bottom: 0px;
    padding-left: 0px;
    background-color: #bb173a;
    color: #ffffff;
    top: 0px;
    left: 0px;
    margin-left: -500px;
    margin-right: -500px;
}
.siteTitle {
    font-size: 21px;
    width: 360px;
    display: block;
    padding-top: 50px;
    padding-bottom: 50px;
    margin-left: auto;
    margin-right: auto;
}
.title {
    color: #bb173a;
}

.tiddler {
    // width: 768px;
    padding: 0px;
}
.tiddler h1,h2,h3 {
    margin-top: 0px;
    padding-top: 0px;
    clear: left;
    color: #bb173a;
    // background-color: #eee;
}

.logoLine {
    margin-left: auto;
    margin-right: auto;
    // width: 768px;
    // margin: 0px;
    padding-top: 13px;
}

.logoBar {
    height: 70px;
    // background-color: #f8f8f8;
}

a {
    font-weight: 600;
    font-family: "Raleway", "Helvetica Neue", Helvetica, Arial, sans-serif;
    font-size: 18px;
    color: #777777;
}
a:hover {
    color: #333333;
}

.logoBar-logo {
    float: left;
}
.logoBar-links {
    float: right;
    padding-top: 12px;
}

.logoBar ul {
    margin: 0px;
}
.logoBar li {
    display: block;
    float: left;
    list-style-type: none;
    padding-left: 10px;
    padding-right: 10px;
}

#displayArea {
    // margin-left: 20em;
    margin-left: auto;
    margin-right: auto;
}
#mainMenu {
        width:240px;
        padding-left: 30px;
        text-align: left;
}

.dcTOC {
	float: left; /* auto-width */
	margin: 0 2em 2em 0;
	border: 1px solid #aaa;
	background-color: #f8f8f8;
        // color: #777777;
	padding: 5px;
}

.dcTOC ul {
	margin: 0.5em;
        padding-left: 16px;
	// color: red;
	list-style-type: upper-alpha;
}

.dcTOC ul ul li {
	list-style-type: lower-alpha;
}

.dcTOC ul li {
	list-style-type: decimal;
}

.dcTOC a {
	border: none;
}

.dcTOC a:hover {
	// background: white;
	border: solid 1px;
}
.dcTOCTop {
	font-size: 2em;
}


/*}}}*/
/%
|Name|ToggleReadOnly|
|Source|http://www.TiddlyTools.com/#ToggleReadOnly|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.5|
|Type|transclusion|
|Description|enable/disable global read-only state without reloading your document|

Usage: 
	<<tiddler ToggleReadOnly>> OR
	<<tiddler ToggleReadOnly with: label tip>>

!show
<html><nowiki><span class='button' style='cursor:pointer'
	onclick="this.getElementsByTagName('input')[0].click();" title="$2">
<input type='checkbox' style="margin:0;padding:0;" onclick="
	window.readOnly=this.checked;
	window.showBackstage=!window.readOnly;
	config.macros.option.propagateOption('chkHttpReadOnly','checked',window.readOnly,'input');
	if(showBackstage && !backstage.area) backstage.init();
	backstage.button.style.display=showBackstage?'block':'none';
	backstage.hide();
	story.switchTheme(config.options.txtTheme);
	refreshAll(); story.refreshAllTiddlers(true); // FORCE RE-DISPLAY
	return false;
">$1</span></html><<tiddler {{
	var chk=place.lastChild.getElementsByTagName('input')[0];
	chk.checked=window.readOnly;
'';}}>>
!end

%/<<tiddler ToggleReadOnly##show with:
	{{"$1"=="$"+"1"?"read-only":"$1"}}
	{{"$2"=="$"+"2"?"enable/disable editing functions":"$2"}}
>>
|~ViewToolbar|closeTiddler closeOthers +editTiddler > fields syncing permalink references jump|
|~EditToolbar|+saveTiddler -cancelTiddler deleteTiddler|
|~EmptyToolbar||
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'>
<span macro='view modifier link'></span>,
<span macro='view modified date'></span> (
<span macro='message views.wikified.createdPrompt'></span>
<span macro='view created date'></span>)
</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>

var privilegedUser = "afxok";

if (config.options.txtUserName != privilegedUser) {
	showBackstage = false;
	readOnly = true;
        config.options.chkSinglePageMode=true;
}

config.macros.makepublic = {
    handler: function(place, macroName, params, wikifier, paramString, tiddler) {
        if (config.options.txtUserName != privilegedUser) {
            jQuery(".toolbar, .title, .subtitle, .tagging, .tagged, .tagClear").css("display","none");
        }
    }
};

config.macros.hidesidebar = {
    handler: function(place, macroName, params, wikifier, paramString, tiddler) {
    }
};

function stretchRow($container){
// alert(JSON.stringify(jQuery._data(document, "events")));
        var $el = $container;
        var $window = jQuery(window).width();
        var $parent = $el.parent().width();

        $window = $window - $parent;
        var margin = -1 * ($window/2);
        // alert("container=" + $container.width() + "; parent=" + $parent + "; window=" + $window + "; margin=" + margin);
        $el.css('margin-left', margin);
        $el.css('margin-right', margin);
}

jQuery(document).bind("startup", function(e) {
        var $cont = jQuery('.headerShadow')
        stretchRow($cont);

        if (config.options.txtUserName != privilegedUser) {
            // alert(config.options.txtUserName);
            jQuery("#sidebar").css("display","none");
        } else {
            jQuery("#displayArea").css("padding-right","270px");
        }
});

jQuery(window).resize(function() {
        var $cont = jQuery('.headerShadow')
        stretchRow($cont);
});