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>>
!Overview
JODA is a powerful platform for automating JIRA Cloud instances without the need for a separate hosted infrastructure or complicated CLI instructions. It uses the Atlassian Connect API to provide an execution environment between the customer's own Amazon Web Services (AWS) account and their JIRA Cloud instance. JODA must be linked with the customer's AWS account using an AWS access key and secret. 

!Data Storage
The JODA environment uses no data storage other than what is required for the JODA application itself. All access to customer tasks is performed using the Amazon S3 API.

!Persisted Data
JODA only persists AWS and JIRA access tokens and the following customer details as required by the Atlassian Connect API:
* description
* eventType
* productType
* baseUrl
* pluginsVersion
* serverVersion
* sharedSecret
* publicKey
* clientKey
JODA never accesses, reads, extracts or stores any information from the customer's JIRA instance externally on our backend resources. Additionally, all JIRA Cloud access occurs only within the execution context of the customer's own AWS resources at all times.

!Privacy
JODA stores no personally identifiable information. Customer AWS and JIRA access tokens are stored encrypted at rest.

!Data Retention
Upon termination of the customer's subscription all customer AWS and JIRA access tokens will be removed. All customer data stored under the customer's own AWS account will be unaffected. Subscription renewals must re-establish access to their AWS account to access existing customer data, if any, used for JODA.

!People and Access
The JODA support team maintains an account on all cloud systems and applications for the purposes of maintenance and support. The hosted application data can be accessed by our support team only for reasons related with performing system or application maintenance and data recovery. Only the application data is authorized to be accessed by the support team. JODA was developed to be accessible only with appropriate credentials. This means that one customer cannot access another customer's data without the other customer's authentication credentials.

!Backups
JODA provides no backups of any customer data stored on AWS resources.
/***
|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 Security and Privacy Statement
/*{{{*/
@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;
}
.tiddler {
    // width: 768px;
    padding: 0px;
}
.tiddler h1,h2,h3 {
    margin-top: 0px;
    padding-top: 0px;
}
.tiddler h1 {
    clear: left;
    // padding: 0.1em 0.1em 0.1em 0.0em;
    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","250px");
        }
});

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