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'></span></div>
<!--}}}-->
<!--{{{-->
<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>
<!--}}}-->


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' 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' 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>
<!--}}}-->
/*{{{*/
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]];}

#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]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.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]];}

#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 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.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:0em 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 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

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

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

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 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 0em;}
.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 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 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 0em 14em;}

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

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

.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:0em 0.25em; padding:0em 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:0px 3px 0px 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 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

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

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.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 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 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 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
/*{{{*/
	
window.ccTiddlyVersion = '1.6';
window.workspacePermission= {};
window.url = "http://wiki.osmosoft.com/alpha";
window.workspace = "pardelib";

workspacePermission.create = 1;
workspacePermission.upload = 1;workspacePermission.owner = 1;window.loggedIn = "1";
workspacePermission.anonC = 0 ;
workspacePermission.anonR = 1; 
workspacePermission.anonU = 0;
workspacePermission.anonD = 0;


// PHP TO JAVASCRIPT VARIABLE ASSIGNMENT --- 
window.workspace_delete = "A";
window.workspace_udate = "";
window.can_create_account = "1";
window.openid_enabled = "0";

setStylesheet(store.getRecursiveTiddlerText("ccStyleSheet",10),"ccStyleSheet");

/*}}}*/
/*{{{*/

.input {
	display: block;
	float: left;
	margin-bottom: 4px;
	font-size:0.9em;
	width: 150px;
	margin-bottom: 4px;
	padding:4px;
}

.inputError {
	display: block;
	float: left;
}
.submit {
	padding-left:122px;
	align:right;
}

.label {
	text-align: right;
	display: block;
	float: left;
}
.checkContainer {
	text-align: right;
	display: block;
	float: left;
}

.inlineError{
	color:red;
}


.inlineOk{
	color:green;
}

.checkLabel {
	text-align:left;
	display: block;
	float:left;
}
br {
	clear: left;
}

.checkContainer {
	padding-right: 2px;
	width: 120px;
	margin-bottom:5px;
}

.label {
	padding-top:2px;
	padding-right: 5px;
	width: 190px;
	margin-bottom: 10px;
}

/*BELOW THIS POINT WILLBE SPLIT OFF INTO A THEME*/
/*

.input {
	border:solid 1px #B3B3B3; 
}
.checkTitle {
	font-size:0.9em;
	font-weight:bold;
}

.inlineOk{
	padding-left:10px;
	padding-top:8px;
	font-size:0.9em;
}

.inlineError{
	padding-left:10px;
	padding-top:8px;
	font-size:0.9em;
}

.checkInput{
	border:solid 1px #B3B3B3;
}
.wizardStep{
	border:solid 1px #9399AB;
}

.backButton{
	background-color:green;
}

.wizard{
	border:solid 1px #9399AB;
	margin:10px;
	padding:10px;
}

.wizard .button {
	padding : 4px 14px 4px 14px;
	font-weight:bold;
	color:#292929;
	border:solid 1px #292929; 
	font-size:0.9em;
	margin-top:1px;
}

.inputError {
	font-size:0.9em;
	width: 150px;
	margin-bottom: 4px;
	border:solid 1px #B3B3B3; 
	padding:4px;
}


label{
	font-size:0.9em;
	font-face:arial;
	color:#292929;
}

.wizard{
	background-color:#E1E7F8;
	border:solid 1px #9399AB;
}

.checkInput{
	border:solid 1px #B3B3B3;
	color: #5B5C56;
	background-color: #FFFFFF;
	border:none;
}

.wizardStep{
	border:solid 1px #9399AB;
}

.wizardFooter{
	background-color:#E1E7F8;
}
*/

/*}}}*/
/***
|''Name''|ccWorkspace|
|''Description''|Allows users to create Workspaces|
|''Author''|[[Simon McManus | http://simonmcmanus.com]]
|''Version''|1.0.1|
|''Date''|12/05/08|
|''Status''|@@alpha@@|
|''Source''|http://svn.tiddlywiki.org/Trunk/association/serversides/cctiddly/ccPlugins/ccWorkspace.js|
|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/association/serversides/cctiddly/ccPlugins/ccWorkspace.js|
|''License''|BSD|
|''Feedback''|http://groups.google.com/group/ccTiddly|
|''Keywords''|ccTiddly, ccWorkspace|

!Description

Allows users to create their own workspace. 

!Usage
{{{
<>
}}}

!Code
***/
//{{{

config.backstageTasks.push('create');
merge(config.tasks,{create: {text: 'create', tooltip: 'Create new workspace', content:'<<ccCreateWorkspace>>'}});

config.macros.ccCreateWorkspace = {}
config.macros.ccCreateWorkspace.handler =  function(place,macroName,params,wikifier,paramString,tiddler, errorMsg){
	// When we server this tiddler it need to know the URL of the server to post back to
	//this value is currently set in index.php, should be index.php?action=createWorkspace to prepare for modulation
	//form heading
	if (workspacePermission.create!=1)
	{
		createTiddlyElement(place,'div', null, "annotation",  'You do not have permissions to create a workspace.  You may need to log in.');
		return null;
	}
	var frm = createTiddlyElement(place,'form',null,"wizard");
	frm.onsubmit = this.createWorkspaceOnSubmit;

	createTiddlyElement(frm,'h1', null, null,  'Create Workspace ');
	createTiddlyElement(frm, 'h2', null, null,  "Get your own TiddlyWiki workspace below");
	createTiddlyElement(frm,'br');

	var body = createTiddlyElement(frm,'div',null, "wizardBody");

	//form content
	var step = createTiddlyElement(body,'div',null, "wizardStep");
	//createTiddlyElement(step, "br");
	//form workspace name/url
	var url_label = createTiddlyElement(step, "label", null, "label", url);
	url_label.setAttribute("for","ccWorkspaceName");
	var workspaceName = createTiddlyElement(step,'input','ccWorkspaceName', 'input')				
	workspaceName.value = workspace;
	workspaceName.size = 15;
	workspaceName.name = 'ccWorkspaceName';
	workspaceName.onkeyup=function() {
		config.macros.ccRegister.workspaceNameKeyPress(this.value);
	};
	step.appendChild(workspaceName);
	createTiddlyElement(step,"span",'workspaceName_error','inlineError',null);

	createTiddlyElement(step,'br');

	//privilege form
	anonTitle = createTiddlyElement(step,'div', null, "checkTitle",  'Anonymous Users Can');
	//var anC = createTiddlyCheckbox(null, 'Create Tiddlers', 0);
	var span = createTiddlyElement(step, 'span', null, "checkContainer")
	var anC = createTiddlyElement(null,'input', 'anC','checkInput');
	anC.setAttribute('type','checkbox');
	if (workspacePermission.anonC==1)
	anC.setAttribute('checked','checked');    
	span.appendChild(anC);
	var anC_label = createTiddlyElement(step, "label", null, "checkLabel", "Create Tiddlers");
	anC_label.setAttribute("for","anC");
	createTiddlyElement(step,'br');

	var span = createTiddlyElement(step, 'span', null, "checkContainer")
	var anR = createTiddlyElement(null,'input', 'anR','checkInput');
	anR.setAttribute('type','checkbox');
	if (workspacePermission.anonR  == 1)
	anR.setAttribute('checked','checked');
	span.appendChild(anR);
	var anR_label = createTiddlyElement(step, "label", null, "checkLabel", "Read Tiddlers");
	anR_label.setAttribute("for","anR");
	createTiddlyElement(step,'br');

	var span = createTiddlyElement(step, 'span', null, "checkContainer")
	var anU = createTiddlyElement(null,'input', 'anU','checkInput');
	anU.setAttribute('type','checkbox');
	if (workspacePermission.anonU  == 1)
	anU.setAttribute('checked','checked');
	span.appendChild(anU);
	var anU_label = createTiddlyElement(step, "label", null, "checkLabel", "Update Tiddlers");
	anU_label.setAttribute("for","anU");
	createTiddlyElement(step,'br');

	var span = createTiddlyElement(step, 'span', null, "checkContainer")
	var anD = createTiddlyElement(null,'input', 'anD','checkInput');
	anD.setAttribute('type','checkbox');
	if (workspacePermission.anonD  == 1)
	anD.setAttribute('checked','checked');
	span.appendChild(anD);
	var anD_label = createTiddlyElement(step, "label", null, "checkLabel", "Delete Tiddlers");
	anD_label.setAttribute("for","anD");
	createTiddlyElement(step,'br');

	var a=createTiddlyElement(step, "div", "createWorkspaceButton", "submit")
	var btn=createTiddlyElement(null,'input',this.prompt,'button');
	btn.setAttribute('type','submit');
	btn.value="Create Workspace";
	a.appendChild(btn);
	createTiddlyElement(a,"span",'workspaceStatus','',null);
	
};
config.macros.ccCreateWorkspace.createWorkspaceOnSubmit = function() {
	var trueStr = "A";
	var falseStr = "D";
	// build up string with permissions values
	var anon=(this.anR.checked?trueStr:falseStr);
	anon+=(this.anC.checked?trueStr:falseStr);
	anon+=(this.anU.checked?trueStr:falseStr);
	anon+=(this.anD.checked?trueStr:falseStr);
	var params = {}; 
	params.url = url+'/'+this.ccWorkspaceName.value;
	
	// disable create workspace button 
	var submit=document.getElementById('createWorkspaceButton');
	submit.disabled=true;
	submit.setAttribute("class","buttonDisabled");
	document.getElementById('workspaceStatus').innerHTML='Please wait, your workspace is being created.';
	
	
	

	var loginResp = doHttp('POST',url+'/'+this.ccWorkspaceName.value,'ccCreateWorkspace=' + encodeURIComponent(this.ccWorkspaceName.value)+'&ccAnonPerm='+encodeURIComponent(anon),null,null,null,config.macros.ccCreateWorkspace.createWorkspaceCallback,params);
	return false; 
};
config.macros.ccCreateWorkspace.createWorkspaceCallback = function(status,params,responseText,uri,xhr) {
	//displayMessage(xhr.status);
	if(xhr.status==201) {
		window.location = params.url;
		//displayMessage('workspace crated');				
	} else if (xhr.status == 200) {
		displayMessage(responseText+"Workspace name is already in use.");
	} else if (xhr.status == 403) {
		displayMessage("Permission denied,the ability to create new workspaces may have been disabled by you systems administrator.");	
	} else {
		displayMessage(responseText);	
	}
};

config.macros.ccRegister.workspaceNameKeyPress=function(str){

	doHttp('POST',url+'/handle/lookupWorkspaceName.php',"ccWorkspaceLookup="+str+"&free=1",null,null,null,config.macros.ccRegister.workspaceNameCallback,null);
	return false;
};

config.macros.ccRegister.workspaceNameCallback=function(status,params,responseText,uri,xhr){
	var field = "";
	if(responseText>0){{
		workspaceName_space=document.getElementById('workspaceName_error');
		workspaceName_space.innerHTML='Workspace name has already been taken';
		workspaceName_space.setAttribute("class","inlineError");
	}
	}else{
		workspaceName_space=document.getElementById('workspaceName_error');
		workspaceName_space.innerHTML="Workspace name is available";
		workspaceName_space.setAttribute("class","inlineOk");
	}
};



config.macros.ccEditWorkspace = {};
config.macros.ccEditWorkspace.handler = function(place,macroName,params,wikifier,paramString,tiddler,errorMsg) {
		
	if (workspacePermission.owner != 1)
	{
		createTiddlyElement(place,'div',null,"annotation", 'You do not have permissions to edit this workspaces permission. ');
		return null;
	}
	// When we server this tiddler it need to know the URL of the server to post back to, this value is currently set in index.php
	var frm = createTiddlyElement(place,'form',null,"wizard");
	frm.onsubmit = this.editWorkspaceOnSubmit;
	createTiddlyElement(frm,"br");
	createTiddlyElement(frm,'h1',null,null,'Edit Workspace Permissions');
	createTiddlyElement(frm,"br");
	var body = createTiddlyElement(frm,'div',null,"wizardBody");
	var step = createTiddlyElement(body,'div',null,"wizardStep");
	createTiddlyElement(step,'h5	',null,null,'Anonymous Users Can :  ');
	
	var span = createTiddlyElement(step,'span',null,"checkContainer")
	var anC = createTiddlyCheckbox(span,null,workspacePermission.anonC);
	anC.id='anC';
	anC.setAttribute("class","checkInput");
	var anC_label = createTiddlyElement(step,"label",null,"checkLabel","Create Tiddlers");
 	anC_label.setAttribute("for","anC");
	createTiddlyElement(step,'br');
	
	
	var span = createTiddlyElement(step,'span',null,"checkContainer")
	var  anR = createTiddlyCheckbox(span,null ,workspacePermission.anonR);
	anR.id = 'anR';
	anR.setAttribute("class","checkInput");
	var anR_label = createTiddlyElement(step,"label",null,"checkLabel","Read Tiddlers");
 	anR_label.setAttribute("for","anR");

	createTiddlyElement(step,'br');
			var span = createTiddlyElement(step,'span',null,"checkContainer")
	var anU = createTiddlyCheckbox(span,null,workspacePermission.anonU);
	anU.id = 'anU';
	anU.setAttribute("class","checkInput");
	var anU_label = createTiddlyElement(step,"label",null,"checkLabel","Update Tiddlers");
 	anU_label.setAttribute("for","anU");

	createTiddlyElement(step,'br');
	
				var span = createTiddlyElement(step,'span',null,"checkContainer")
	var anD = createTiddlyCheckbox(span,null,workspacePermission.anonD);
	anD.id = 'anD';
	anD.setAttribute("class","checkInput");
	var anD_label = createTiddlyElement(step,"label",null,"checkLabel","Delete Tiddlers");
 	anD_label.setAttribute("for","anD");

	createTiddlyElement(step,'br');
	createTiddlyElement(frm,'br');
	var btn = createTiddlyElement(frm,'input',this.prompt,"button","button");
	 btn.setAttribute('type','submit');
	 btn.value = 'Edit Workspace Permissions'
	createTiddlyElement(frm,'br');
	createTiddlyElement(frm,'br');
};
	
config.macros.ccEditWorkspace.editWorkspaceOnSubmit = function() {
	var trueStr = "A";
	var falseStr = "D";
	// build up string with permissions values
	var anon=(this.anR.checked?trueStr:falseStr);
	anon+=(this.anC.checked?trueStr:falseStr);
	anon+=(this.anU.checked?trueStr:falseStr);
	anon+=(this.anD.checked?trueStr:falseStr);
	doHttp('POST',url+'handle/updateWorkspace.php','ccCreateWorkspace=' + encodeURIComponent(workspace)+'&ccAnonPerm='+encodeURIComponent(anon),null,null,null,config.macros.ccEditWorkspace.editWorkspaceCallback,params);
	return false;
};

config.macros.ccEditWorkspace.editWorkspaceCallback = function(status,params,responseText,uri,xhr) {
	if (xhr.status == 200) {
		displayMessage(responseText);	
	}
	return false;
};

//}}}
/***
|''Name''|ccSave|
|''Description''|Currently only being used to stop the upgrade option |
|''Author''|[[Simon McManus|http://simonmcmanus.com]] |
|''Version''|1.0.1|
|''Date''|12/05/2008|

!Code

***/
//{{{

// GENERAL ccTiddly Bits 

config.backstageTasks.remove("upgrade");
config.backstageTasks.remove("save");

//}}}
/***
|''Name''|ccLoginStatus|
|''Description''|Allows users to see their login status and displays the options to login or logout. This Macro will later be added to ccLogin|
|''Author''|[[Simon McManus|http://simonmcmanus.com]] |
|''Version''|1.0.1|
|''Date''|12/05/2008|
|''Status''|@@alpha@@|
|''Source''|http://svn.tiddlywiki.org/Trunk/association/serversides/cctiddly/ccPlugins/ccLoginStatus.js|
|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/association/serversides/cctiddly/ccPlugins/ccLoginStatus.js|
|''License''|BSD|
|''Requires''|ccRegister, ccLogin|
|''Feedback''|http://groups.google.com/group/ccTiddly|
|''Keywords''|ccTiddly ccLoginStatus|

!Description

Show the current user their login status. 

!Usage
{{{
<>
}}}

!Code

***/
//{{{
	
config.macros.ccLoginStatus={};
config.macros.ccLoginStatus.handler=function(place,macroName,params,wikifier,paramString,tiddler){
	var loginDiv=createTiddlyElement(place,"div",null,"loginDiv",null);
	this.refresh(loginDiv);
};
	
config.macros.ccLoginStatus.refresh=function(place,errorMsg){
	var loginDivRef=document.getElementById ("LoginDiv");
	removeChildren(loginDivRef);
	var wrapper=createTiddlyElement(place,"div");
	if (isLoggedIn()){
		createTiddlyElement(wrapper,"br");
		name = cookieString(document.cookie).txtUserName;
		var str=wikify("You are viewing the workspace "+workspace +" and  are logged in as: "+decodeURIComponent(name),wrapper);
		var btn=createTiddlyElement(null,"input",null,"button");
		btn.setAttribute("type", "button");
		btn.onclick=function() {
		window.location = window.location+"?&logout=1"
		};
		
	//	btn.setAttribute("type","submit");d
		btn.value="Logout";   
		wrapper.appendChild(btn);	
	}else{
		wikify("[[Login]]",wrapper);
	}
};

//}}}
/***
|''Name''|ccLogin|
|''Description''|Allows users to login to ccTiddly, In future, this will include the ccRegister and  ccLoginStatus Status Macro|
|''Author''|[[Simon McManus|http://simonmcmanus.com]] |
|''Version''|1.0.1|
|''Date''|12/05/2008|
|''Status''|@@alpha@@|
|''Source''|http://svn.tiddlywiki.org/Trunk/association/serversides/cctiddly/ccPlugins/ccLogin.js|
|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/association/serversides/cctiddly/ccPlugins/ccLogin.js|
|''License''|BSD|
|''Requires''|ccRegister, ccLogin|
|''Overrides''|restart|
|''Feedback''|http://groups.google.com/group/ccTiddly|
|''Keywords''|ccTiddly ccLogin|

!Description

To display a login prompt for your user simple type the following text into a tiddler function tiddler :

!Usage
{{{
<>
}}}

!Code

***/
//{{{
	
	
config.backstageTasks.push("login");
merge(config.tasks,{login:{text: "login",tooltip: "Login to your TiddlyWiki",content: '<<ccLogin>>'}});

config.macros.saveChanges.handler=function(place,macroName,params,wikifier,paramString,tiddler){};
var loginState=null;
var registerState=null;

config.macros.toolbar.isCommandEnabled=function(command,tiddler){	
	var title=tiddler.title;
	if (workspace_delete=="D"){
		// REMOVE OPTION TO DELETE TIDDLERS 
		if (command.text=='delete'){
			return false;
		}
	}
	if (workspace_udate=="D"){
		// REMOVE EDIT LINK FROM TIDDLERS 
		if (command.text=='edit'){
			return false;
		}
	}
	var ro=tiddler.isReadOnly();
	var shadow=store.isShadowTiddler(title) && !store.tiddlerExists(title);
	return (!ro || (ro && !command.hideReadOnly)) && !(shadow && command.hideShadow);
};

// Returns output var with output.txtUsername and output.sessionToken
function findToken(cookieStash){
	var output={};
	if (!cookieStash){
		return false;
	}	
	//  THIS IS VERY HACKY AND SHOULD BE REFACTORED WHEN TESTS ARE IN PLACE
	var cookies=cookieStash.split('path=/');
	for(var c=0; c < cookies.length ; c++){
		var cl =cookies[c].split(";");
		for(var e=0; e < cl.length; e++){ 
			var p=cl[e].indexOf("=");
			if(p!=-1){
				var name=cl[e].substr(0,p).trim();
				var value=cl[e].substr(p+1).trim();       
				if (name=='txtUserName'){
					output.txtUserName=value;
				}
				if (name=='sessionToken'){
					output.sessionToken=value;
				}
			}
		}
	}	
	return output;
}

function cookieString(str){
	var cookies = str.split(";");
	var output = {};
	for(var c=0; c < cookies.length; c++){
		var p = cookies[c].indexOf("=");
		if(p != -1) {
			var name = cookies[c].substr(0,p).trim();
			var value = cookies[c].substr(p+1).trim();
			if (name=='txtUserName'){
				output.txtUserName=value;
			}
			if (name=='sessionToken'){
				output.sessionToken=value;
			}
		}
	}
	return output;
}

function isLoggedIn(){
	if(window.loggedIn == '1'){
		return true;
	}else{
		return false;
	}
}

config.macros.ccLogin={};
config.macros.ccLogin.handler=function(place,macroName,params,wikifier,paramString,tiddler){
	var loginDiv=createTiddlyElement(place,"div",null,"loginDiv",null);
	this.refresh(loginDiv);
};

config.macros.ccLogin.refresh=function(place,errorMsg){
	var loginDivRef=document.getElementById("LoginDiv");
	removeChildren(loginDivRef);
	var wrapper=createTiddlyElement(place,"div");
	var cookieValues=findToken(document.cookie);
	var frm="";
	if (isLoggedIn()){
		// user is logged in
		var msg=createTiddlyElement(wrapper,"div");
		// display the logout button
		config.macros.ccLoginStatus.handler(msg);		
	}else{
		//user not logged in.	
		frm=createTiddlyElement(wrapper,"form",null,"wizard");
		frm.onsubmit=this.loginOnSubmit;
		createTiddlyElement(frm,"h1",null,null,"Login");
		createTiddlyElement(frm,"h2",null,null,"Login to ccTiddly");	
		createTiddlyElement(frm,"br");
		var body=createTiddlyElement(frm,"div",null,"wizardBody");
		var step=createTiddlyElement(body,"div",null,"wizardStep");

		if(errorMsg!==null){  
			createTiddlyElement(step,"span",null,null,errorMsg);
			createTiddlyElement(step,"br");
		}
		createTiddlyElement(step,"br");
		var oidfrm=createTiddlyElement(step,"form",null,null);
		oidfrm.method='get';
		oidfrm.action='includes/openid/try_auth.php';

		if (openid_enabled==1){
			createTiddlyElement(oidfrm,"br");
			createTiddlyText(oidfrm,"You can get an openID from ");
			var link=createExternalLink(oidfrm,'http://myopenid.com');
			link.textContent='http://myopenid.com';
			createTiddlyElement(oidfrm,"br");
			createTiddlyElement(oidfrm,"br");
			createTiddlyText(oidfrm,'OpenID:');
	
			var oidaction=createTiddlyElement(null,"input",null);
			oidaction.setAttribute("type","hidden");
			oidaction.setAttribute("value","verify");
			oidfrm.appendChild(oidaction);
	
			var oidid=createTiddlyElement(null,"input",null);
			oidid.setAttribute("type","text");
			oidid.setAttribute("name","openid_identifier");
			oidfrm.appendChild(oidid);
	
			var oidsub=createTiddlyElement(null,"input",null);
			oidsub.setAttribute("type","submit");
			oidsub.setAttribute("value","Verify");
			oidfrm.appendChild(oidsub);
		}else{ 
			var user_label=createTiddlyElement(step,"label",null,"label","Username");
			user_label.setAttribute("for","cctuser");
			var txtuser=createTiddlyElement(step,"input","cctuser","input");
			if (cookieValues.txtUserName!==undefined){
				txtuser.value=cookieValues.txtUserName ;
			}
			createTiddlyElement(step,"br");
			var pass_label=createTiddlyElement(step,"label",null,"label","Password");
			pass_label.setAttribute("for","cctpass");

			var txtpass=createTiddlyElement(null,"input","cctpass","input",null,{"type":"password"});
			//  var txtpass=createTiddlyElement(step,"input","cctpass","cctpass");
			txtpass.setAttribute("type","password");
			step.appendChild(txtpass);
			createTiddlyElement(step,"br");

			var submitSpan=createTiddlyElement(step,"div");
			submitSpan.setAttribute("class","submit");

			var btn1=createTiddlyElement(null,"input",this.prompt,"button");
			btn1.setAttribute("type","submit");
			btn1.setAttribute("id","loginButton");
			btn1.value="Login";
			submitSpan.appendChild(btn1);

			createTiddlyElement(submitSpan,'p');	
			var li=createTiddlyElement(submitSpan,'li');
			createTiddlyLink(li,'Register','Register');
			var li1=createTiddlyElement(submitSpan,'li');
			createTiddlyLink(li1,'Forgotten Details','Forgotten Details');
		}
	}
};

config.macros.killLoginCookie=function(){
	var c='sessionToken=invalid';
	c+="; expires=Fri, 1 Jan 1811 12:00:00 UTC; path=/";
	document.cookie=c;
};

config.macros.ccLogin.logoutOnSubmit=function(){

	var loginDivRef=findRelated(this,"loginDiv","className","parentNode");
	removeChildren(loginDivRef);

	document.cookie="sessionToken=invalid;   expires=15/02/2009 00:00:00";
	document.cookie = '';
	config.macros.killLoginCookie();
	//config.macros.ccLogin.refresh(loginDivRef);
	doHttp('POST',url+'msghandle.php',"logout=1");
	window.location=window.location;      
	return false;
};

config.macros.ccLogin.logoutCallback=function(status,params,responseText,uri,xhr){
//	displayMessage(status);
	//return true;
};
	
config.macros.ccLogin.loginCheckResp=function(){
		alert("Your Login has timed out. ");
		var but1=document.getElementById('loginButton');
		but1.disabled=false;
		but1.setAttribute("class","button");		
};

config.macros.ccLogin.loginOnSubmit=function(){
	var user1=document.getElementById('cctuser').value;
	var pass=document.getElementById('cctpass').value;
	var but1=document.getElementById('loginButton');
	but1.disabled=true;
	but1.setAttribute("class","buttonDisabled");
	var params={}; 
	loginState ='';
	params.origin=this; 
	//setTimeout(config.macros.ccLogin.loginCheckResp,3000);

	var loginResp=doHttp('POST',url+'/handle/login.php',"cctuser=" + encodeURIComponent(user1)+"&cctpass="+Crypto.hexSha1Str(pass).toLowerCase(),null,null,null,config.macros.ccLogin.loginCallback,params);
	return false;
};


config.macros.ccLogin.loginCallback=function(status,params,responseText,uri,xhr){
//	var cookie;
	var cookieValues=findToken(document.cookie);
	config.macros.ccLogin.saveCookie(cookieValues);
	if(xhr.status!==401){
		window.location.reload();
	} else{
		if (xhr.responseText!==""){
			displayMessage(xhr.responseText);
		}
		var loginDivRef=findRelated(params.origin,"loginDiv","className","parentNode");
		removeChildren(loginDivRef);
		config.macros.ccLogin.refresh(loginDivRef,'Login Failed ');
		loginState='fail';
	}
	return true;
};

config.macros.ccLogin.saveCookie=function(cookieValues){
	// Save the session token in cookie.
	var c='sessionToken'+"="+cookieValues.sessionToken;

	c+="; expires=Fri, 1 Jan 2811 12:00:00 UTC; path=";
	document.cookie=c;
	// Save the txtUserName in the normal tiddlywiki format
   if (cookieValues.txtUserName!==null){
		 config.options.txtUserName=cookieValues.txtUserName;
		saveOptionCookie("txtUserName");
	}
};


window.restart = function (){
	var tiddlers="";
 	tiddlers=store.filterTiddlers(store.getTiddlerText("AnonDefaultTiddlers"));
	if (isLoggedIn()){
		tiddlers=store.filterTiddlers(store.getTiddlerText("DefaultTiddlers"));
	}
	story.displayTiddlers(null,tiddlers);	
	invokeParamifier(params,"onstart");
	window.scrollTo(0,0);
}
//}}}
/***
|''Name:''|ccLoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy={
major:1,minor:1,revision: 0, 
date:new Date("mar 17, 2007"), 
source:"http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};

if(!window.bidix)window.bidix={}; // bidix namespace
if(!bidix.core)bidix.core={};

bidix.core.loadRemoteFile=loadRemoteFile;
loadRemoteFile=function(url,callback,params){
	var urlStart = window.url;
	if((document.location.toString().substr(0,4)=="http")&&(url.substr(0,4)=="http")){ 
		url=urlStart+"/"+store.getTiddlerText("SiteProxy","/proxy")+url;
	}
	var a = bidix.core.loadRemoteFile(url,callback,params);
	return a;
}
//}}}
If you've forgotten your username and / or password, please contact the administrator:

simon@osmosoft.com
[[Login]] [[GettingStarted]]
/***
|''Name''|ccAbout|
|''Description''|The ccAbout macro lets you find the current version number in ccTiddly|
|''Author''|Simon McManus|
|''Contributors''|Simon McManus|
|''Version''|2.3|
|''Date''|12/05/08|
|''Status''|@@alpha@@;|
|''Source''|http://svn.tiddlywiki.org/Trunk/association/serversides/cctiddly/ccPlugins/ccAbout.js|
|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/association/serversides/cctiddly/ccPlugins/ccAbout.js|
|''License''|BSD|
|''Feedback''|http://groups.google.com/group/ccTiddly|
|''Keywords''|ccTiddly ccAbout|


!Usage
{{{
<>
}}}

***/
//{{{
config.backstageTasks.push("about");

		
merge(config.tasks,{about:{text: "about",tooltip: "Find out more about ccTiddly ",content: '<<ccAbout>>'}});

config.macros.ccAbout={};
config.macros.ccAbout.handler=function(place,macroName,params,wikifier,paramString,tiddler,errorMsg){
	createTiddlyElement(place,"h1","","","About ccTiddly");
	createTiddlyElement(place,"br");
	var str="You are running ccTiddly " + window.ccTiddlyVersion;
	createTiddlyText(place,str);
	createTiddlyElement(place,"br");
	createTiddlyElement(place,"br");
	var str="more info about ccTiddly can be found  at " ;
	createTiddlyText(place,str);
	var link=createExternalLink(place,'http://tiddlywiki.org/wiki/CcTiddly');
	link.textContent='http://tiddlywiki.org/wiki/CcTiddly';
};
//}}}
<<ccCreateWorkspace>>
handle/proxy.php?feed=
<<ccLogin>>
<<ccLoginStatus>>
/***
|''Name:''|simpleTheme|

|''~StyleSheet:''|##StyleSheet|

***/

!StyleSheet

#mainMenu {display:none}
#sidebarOptions{display:none}
#sidebarTabs {display:none}

/*}}}*/

/***
|''Name''|ccUpload|
|''Description''|Allows users to upload files onto a ccTiddly server|
|''Author''|[[Simon McManus | http://simonmcmanus.com]]|
|''Version''|1.0.1|
|''Date''|12/05/2008|
|''Status''|@@alpha@@|
|''Source''|http://svn.tiddlywiki.org/Trunk/association/serversides/cctiddly/ccPlugins/ccUpload.js|
|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/association/serversides/cctiddly/ccPlugins/ccUpload.js|
|''License''|BSD|
|''Feedback''|http://groups.google.com/group/ccTiddly|
|''Documentation''|<...>|
|''Keywords''|ccTiddly, ccUpload|

!Description

Allows users to upload files to a ccTiddly serevr. 

!Usage
{{{
<>
}}}

!Code
***/
//{{{

var iFrameLoad=function(){
	var uploadIframe= document.getElementById('uploadIframe');
	var statusArea=document.getElementById("uploadStatus");
	document.getElementById("ccfile").value=""; 
	statusArea.innerHTML=uploadIframe.contentDocument.body.innerHTML;
};

config.macros.ccUpload={};
config.macros.ccUpload.handler=function(place,macroName,params,wikifier,paramString,tiddler,errorMsg){
	if (workspacePermission.upload!=1){
		createTiddlyElement(place,'div',null,"annotation",'You do not have permissions to create a file on this server. ');
		return null;
	}

	// When we server this tiddler it need to know the URL of the server to post back to,this value is currently set in index.php
	var frm=createTiddlyElement(place,'form',null,"wizard");
	frm.action=window.url+"/handle/upload.php"; ; 
	frm.id="ccUpload";
	frm.enctype="multipart/form-data";
	frm.method="POST";	
	frm.target="uploadIframe";

	var body=createTiddlyElement(frm,'div',null,"wizardBody");
	createTiddlyElement(body,"h1",null,null,"Upload File");
	createTiddlyElement(body,"h2",null,null,"Upload Files to your workspace");
	createTiddlyElement(body,"br");
	//form content
	var step=createTiddlyElement(body,'div',null,"wizardStep");
	
	var username=createTiddlyElement(step,'input','username','username');				
	username.name='username';
	username.type="HIDDEN";
	username.value=config.options.txtUserName;		
	
	var label=createTiddlyElement(step,"label",null,"label","Upload your file ");
	label.setAttribute("for","ccfile");
	
	var file=createTiddlyElement(step,'input','ccfile','input');				
	file.type="file";
	file.name="userFile";
	var workspaceName=createTiddlyElement(step,'input','workspaceName','workspaceName');				
	workspaceName.name='workspaceName';
	workspaceName.type="HIDDEN";
	workspaceName.value=workspace;
	createTiddlyElement(step,'br');

	var saveTo=createTiddlyElement(step,'input','saveTo','saveTo',"workspace");				
	saveTo.type="HIDDEN";
	saveTo.name='saveTo';
	saveTo.value='workspace';
	
	var submitDiv=createTiddlyElement(step,"div",null,'submit');
	var btn=createTiddlyElement(frm,"input",null,'button');
	btn.setAttribute("type","submit");
	btn.setAttribute("onClick","config.macros.ccUpload.submitiframe()");
	btn.value='Upload File';
	submitDiv.appendChild(btn);	

	// Create the iframe
	var iframe=document.createElement("iframe");
	iframe.style.display="none";
	iframe.id='uploadIframe';
	iframe.name='uploadIframe';
	frm.appendChild(iframe);
	createTiddlyElement(step,"div",'uploadStatus');

	iframe.onload=iFrameLoad;
};

config.macros.ccUpload.submitiframe=function(){

	var statusArea=document.getElementById("uploadStatus");
	statusArea.innerHTML="uploading...  <img src=loading.gif /> ";	
	return true;
};
 
config.macros.ccCreate={};

config.macros.ccCreate.handler=function(place,macroName,params,wikifier,paramString,tiddler,errorMsg){
	if (workspacePermission.upload !=1){
		createTiddlyElement(place,'div',null,"annotation",'You do not have permissions to create a new file on this server. ');
return null;
	}
	// When we server this tiddler it need to know the URL of the server to post back to,this value is currently set in index.php
	var frm=createTiddlyElement(place,'form',null,"wizard");

displayMessage(url);
	frm.action="hdfdandle/upload.php";
	frm.method="POST";
	createTiddlyElement(frm,"br");
	var body=createTiddlyElement(frm,'div',null,"wizardBody");
	createTiddlyElement(frm,"br");
	createTiddlyElement(body,"h1",null,null,"Create HTML file ");
	createTiddlyElement(body,"br");
	//form content
	var step=createTiddlyElement(body,'div',null,"wizardStep");

	createTiddlyText(step,'Filename : ');
	var htmlfile=createTiddlyElement(step,'input','ccHTMLName','ccHMLname');				
	htmlfile.name='ccHTMLName';
	createTiddlyElement(step,'br');
	createTiddlyElement(step,'br');

	createTiddlyText(step,"add your HTML code to the textbox below :");
	createTiddlyElement(step,'br');
	var htmlbox=createTiddlyElement(step,'textarea','ccHTML','ccHML');				
	htmlbox.name='ccHTML';
	htmlbox.rows='20';
	htmlbox.cols='100';

	createTiddlyElement(step,'br');
	var username=createTiddlyElement(step,'input','username','username');				
	username.name='username';
	username.type="HIDDEN";
	username.value=config.options.txtUserName;		
	createTiddlyElement(step,'br');

	var workspaceName=createTiddlyElement(step,'input','workspaceName','workspaceName');				
	workspaceName.name='workspaceName';
	workspaceName.type="HIDDEN";
	workspaceName.value=workspace;
	
	createTiddlyText(step,"Create the file in :");
	createTiddlyElement(step,'br');
	var RDuser=createTiddlyElement(step,'input','user','user');
	RDuser.type="radio";
	RDuser.name="saveTo";

	RDuser.value="user";
	createTiddlyText(step,"My User Area");

	createTiddlyElement(step,'br');
	var RDworkspace=createTiddlyElement(step,'input','workspace','workspace');		
	RDworkspace.type="radio";
	RDworkspace.name="saveTo";
	RDworkspace.value="workspace";
	RDworkspace.checked="1";

	createTiddlyText(step,"Workspace Area ");
	createTiddlyElement(step,'br');

	createTiddlyElement(frm,'br');
	var btn=createTiddlyElement(frm,'input',this.prompt,'button');
	btn.setAttribute('type','submit');
	btn.value='Create File ';
	createTiddlyElement(frm,'br');
	createTiddlyElement(frm,'br');
};
//}}}
/***
|''Name''|ccRegister|
|''Description''|Allows users to Register for a user account. If the user is logged in there are informed of their username This Macro will later be added to ccLogin Status|
|''Author''|[[Simon McManus|http://simonmcmanus.com]] |
|''Version''|1.0.1|
|''Date''|12/05/2008|
|''Status''|@@alpha@@|
|''Source''|http://svn.tiddlywiki.org/Trunk/association/serversides/cctiddly/ccPlugins/ccRegister.js|
|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/association/serversides/cctiddly/ccPlugins/ccRegister.js|
|''License''|BSD|
|''Requires''|ccLogin, ccLoginStatus|
|''Feedback''|http://groups.google.com/group/ccTiddly|
|''Keywords''|ccTiddly ccRegister|

!Description

Show the current user their login status. 

!Usage
{{{
<>
}}}

!Code

***/
//{{{
	
config.macros.ccRegister ={};
config.macros.ccRegister.handler=function(place,macroName,params,wikifier,paramString,tiddler){
	var registerDiv = createTiddlyElement(place,"div",null,"loginDiv",null);
	this.refresh(registerDiv);
};

config.macros.ccRegister.refresh=function(place,errorMsg){
	var loginDivRef = document.getElementById("LoginDiv");
	removeChildren(loginDivRef);
	var wrapper = createTiddlyElement(place,"div");
	if (can_create_account != 1){
		createTiddlyElement(place,'div',null,"annotation",'You do not have permissions to register for an account ');
		return null;
	}
	if (errorMsg=='201'){
		return false;
	}
	var frm=createTiddlyElement(place,"form",null,"wizard");
	frm.onsubmit= config.macros.ccRegister.registerOnSubmit;
	createTiddlyElement(frm,"h1",null,null,"Register");
	createTiddlyElement(frm,"h2",null,null,"Sign up for an account");
	createTiddlyElement(frm,"br");
	var body=createTiddlyElement(frm,"div",null,"wizardBody");
	var step=createTiddlyElement(body,"div",null,"wizardStep");

	var user_label = createTiddlyElement(step,"label",null,"label","Username");
	user_label.setAttribute("for","username");
	
	
	var username=createTiddlyElement(null,"input","username" ,"input");		
	username.onkeyup=function() {
		config.macros.ccRegister.usernameKeyPress(this.value);
	};
	step.appendChild(username);
	username.setAttribute("tabindex","1");
	createTiddlyElement(step,"span",'username_error','inlineError',null);
	createTiddlyElement(step,"br");	
	var mail_label = createTiddlyElement(step,"label",null,"label","E-Mail Address");
	mail_label.setAttribute("for","username");	
	var mail=createTiddlyElement(null,"input","mail" ,"input");		
	mail.onkeyup=function() {
		config.macros.ccRegister.mailKeyUp(this.value);
	};
	step.appendChild(mail);

	mail.setAttribute("tabindex","2");
	createTiddlyElement(step,"span",'mail_error','inlineError','');
	createTiddlyElement(step,"br");
	
	var pw1_label = createTiddlyElement(step,"label",null,"label","Password");
	pw1_label.setAttribute("for","password1");
	var password1 = createTiddlyElement(null,"input","password1","input");
	password1.setAttribute("type","password");
	password1.setAttribute("tabindex","3");
	step.appendChild(password1);
	
	createTiddlyElement(step,"span",'mail_error','inlineError','');
	
	createTiddlyElement(step,"span",'pass1_error','inlineError');
	createTiddlyElement(step,"br");
	
	var pw2_label = createTiddlyElement(step,"label",null,"label","Password Confirmation");
	pw2_label.setAttribute("for","password2");
	var password2 = createTiddlyElement(null,"input","password2","input");
	password2.setAttribute("type","password");
	password2.setAttribute("tabindex","4");
	step.appendChild(password2);
	
	createTiddlyElement(step,"span",'pass2_error','inlineError');
	createTiddlyElement(step,"br");

	var a = createTiddlyElement(step,"div",null,"submit");
	var btn = createTiddlyElement(null,"input",this.prompt,"button");
	btn.setAttribute("type","submit");
	btn.setAttribute("value","Register Account");	 
	btn.setAttribute("tabindex","5");
	
	btn.setAttribute("id","registerAccountSubmit");
	a.appendChild(btn);
	createTiddlyElement(a,"span","submitStatus",null,"");
};

config.macros.ccRegister.emailValid=function(str){
	if((str.indexOf(".") > 0) && (str.indexOf("@") > 0)){	
		return true;
	}else{
		return false;
	}
}; 

config.macros.ccRegister.mailKeyUp=function(mail){
	if(config.macros.ccRegister.emailValid(mail)){
		var a=document.getElementById('mail_error');
		var field=document.getElementById('mail');
		a.innerHTML='The email address is valid ';
		a.setAttribute("class","inlineOk");
		a.setAttribute("className", "inlineOk");
		field.setAttribute("class","input");
	}
};


config.macros.ccRegister.registerOnSubmit=function(){
	if(this.username.value==''){
		document.getElementById('username_error').innerHTML='Please enter a username';
		this.username.setAttribute("class","inputError");
		return false;
	}else{
		document.getElementById('username_error').innerHTML='Please enter a username';
		this.username.setAttribute("class","input");
	}
	var mail_space="";
	if(this.username.value===''){
		displayMessage('no username entered');
	}
	if(config.macros.ccRegister.emailValid(this.mail.value)){
		mail_space=document.getElementById('mail_error');
		mail_space.innerHTML="email ok";
		mail_space.setAttribute("class","inlineOk");
	}else{
		mail_space=document.getElementById('mail_error');
		mail_space.innerHTML='not a valid email address ';
		mail_space.setAttribute("class","inlineError");
		return false;
	}
	if(this.password1.value===''){
		document.getElementById('pass1_error').innerHTML='Please enter a password';
		this.password1.setAttribute("class","inputError");
		return false;
	}else{
			document.getElementById('pass1_error').innerHTML='';
			this.password1.setAttribute("class","input");
	}
	if(this.password2.value===''){
		document.getElementById('pass2_error').innerHTML='Please enter a password';
		this.password2.setAttribute("class","inputError");
		return false;
	}else{
		document.getElementById('pass2_error').innerHTML='';
		this.password2.setAttribute("class","input");
	}
	if(this.password1.value != this.password2.value ){			
		this.password1.setAttribute("class","inputError");
		document.getElementById('pass2_error').innerHTML='Please ensure both passwords match';
		this.password2.setAttribute("class","inputError");
		return false;
	}
	var submit=document.getElementById('registerAccountSubmit');
	submit.disabled=true;
	submit.setAttribute("class","buttonDisabled");
	document.getElementById('submitStatus').innerHTML='Please wait, your account is being created.';
	setTimeout(config.macros.ccRegister.registerCheckResp,3000);
	displayMessage(this.username.value);
	doHttp('POST',url+'/handle/register.php',"username=" + encodeURIComponent(this.username.value)+ "&password="+Crypto.hexSha1Str(this.password1.value).toLowerCase(),null,null,null,config.macros.ccRegister.registerCallback,null);
	return false;
};

config.macros.ccRegister.registerCheckResp=function(){
	if (registerState !="Fail" && registerState !="ok"){
		alert("Your registration has timed out. ");
	}
};

config.macros.ccRegister.registerCallback=function(status,params,responseText,uri,xhr){
	if(xhr.status=='201'){
		registerState="ok";
		var loginDiv=document.getElementById("LoginDiv");
		document.getElementById('submitStatus').innerHTML='Your account has been created ';
		document.getElementById('username').value='';
		document.getElementById('mail').value='';
		document.getElementById('password1').value='';
		document.getElementById('password2').value='';
		document.getElementById('username_error').innerHTML='';
		document.getElementById('mail_error').innerHTML='';
		document.getElementById('pass1_error').innerHTML=''; 	
		document.getElementById('pass2_error').innerHTML=''; 
		var but=document.getElementById('registerAccountSubmit');
		but.disabled=false;
		but.setAttribute("class","button");
		document.getElementById('registerAccountSubmit').setAttribute('class','button');
	}else{
		registerState ="Fail";
	}
};


config.macros.ccRegister.usernameKeyPress=function(){
	doHttp('POST',url+'/handle/register.php',"username="+document.getElementById("username").value+"&free=1",null,null,null,config.macros.ccRegister.usernameCallback,null);
	return false;
};

config.macros.ccRegister.usernameCallback=function(status,params,responseText,uri,xhr){
	var field = "";
	if(responseText > 0){
		var error=document.getElementById('username_error');
		field=document.getElementById('username');
		error.innerHTML='The username has already been taken. ';
		error.setAttribute("class","inlineError");
		// For IE 
		error.setAttribute("className", "inlineError");
		field.setAttribute("class","inputError");
	}else{
		var a = document.getElementById('username_error');
		field = document.getElementById('username');
		a.innerHTML='The username is available ';
		// For IE
		a.setAttribute("className", "inlineOk");
		a.setAttribute("class","inlineOk");
		field.setAttribute("class","input");
	}
};
//}}}

/***
|Name|TaggedTemplateTweak|
|Source|http://www.TiddlyTools.com/#TaggedTemplateTweak|
|Documentation|http://www.TiddlyTools.com/#TaggedTemplateTweakInfo|
|Version|1.2.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.chooseTemplateForTiddler()|
|Description|use alternative ViewTemplate/EditTemplate for tiddler's tagged with specific tag values|
This tweak extends story.chooseTemplateForTiddler() so that ''whenever a tiddler is marked with a specific tag value, it can be viewed and/or edited using alternatives to the standard tiddler templates.'' 
!!!!!Documentation
>see [[TaggedTemplateTweakInfo]]
!!!!!Revisions
<<<
2008.04.01 [1.2.0] added support for using systemTheme section-based template definitions (requested by Phil Hawksworth)
2008.01.22 [*.*.*] plugin size reduction - documentation moved to [[TaggedTemplateTweakInfo]]
2007.06.23 [1.1.0] re-written to use automatic 'tag prefix' search instead of hard coded check for each tag.  Allows new custom tags to be used without requiring code changes to this plugin.
| please see [[TaggedTemplateTweakInfo]] for previous revision details |
2007.06.11 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.taggedTemplate= {major: 1, minor: 2, revision: 0, date: new Date(2008,4,1)};
Story.prototype.taggedTemplate_chooseTemplateForTiddler = Story.prototype.chooseTemplateForTiddler
Story.prototype.chooseTemplateForTiddler = function(title,template)
{
	// get default template from core
	var template=this.taggedTemplate_chooseTemplateForTiddler.apply(this,arguments);

	// if the tiddler to be rendered doesn't exist yet, just return core result
	var tiddler=store.getTiddler(title); if (!tiddler) return template;

	// look for template whose prefix matches a tag on this tiddler
	for (i=0; i<tiddler.tags.length; i++) {
		var t=tiddler.tags[i]+template; // add tag prefix
		var c=t.substr(0,1).toUpperCase()+t.substr(1); // capitalized for WikiWord title
		var s=config.options.txtTheme+"##"; // systemTheme section prefix
		if (store.tiddlerExists(t)) { template=t; break; }
		if (store.tiddlerExists(c)) { template=c; break; }
		if (store.getTiddlerText(s+t)) { template=s+t; break; }
		if (store.getTiddlerText(s+c)) { template=s+c; break; }
	}
	return template;
}
//}}}
<<ccRegister>>
<<ccUpload>>

!ccTiddly Macros 
{{{<>}}}
!!!{{{<>}}}
!!!{{{<>}}}
!!!{{{<>}}}
!!!{{{<>}}}
!!!{{{<>}}}

!TiddlyWiki Macros
!!!{{{<>}}}
Shows current date.
!!!{{{<>}}} 
This macro shows the version number of the current TiddlyWiki document.
!!!{{{<>}}}
Lists all tags. Clicking on a tag lists all the tiddlers assigned that tag. 
!!!{{{<>}}} 
Parameters : (all (default), missing, orphans, shadowed, touched, filter)
!!!{{{<>}}} 
 The timeline macro creates a list of tiddlers sorted by a date specified.

Example : 
{{{<>}}}

Produces : 

<>
!!!{{{<>}}}
The slider macro allows embedding tiddlers within another tiddler, with the option to toggle the visibility of the transcluded contents.

    * cookie: variable to save the state of the slider
    * tiddler: name of the tiddler to include in the slider
    * label: title text of the slider
    * tooltip: tooltip text of the slider 

 Example
{{{<>}}}

Produces : 

<>
!!!{{{<>}}}
The tabs macro creates an area where it displays one of several tiddlers alternately, as the user clicks on the tab labels at the top.

It is used like this:

{{{<>}}}

produces :
<>

    * ID: specifies the name of a cookie used to save the information about which tab was displayed last.
    * Label1, Label2, ... define the labels that are displayed at the top of the area for each tab
    * Tip1, Tip2, ... define tooltips that explain, somewhat more verbosely than the labels, what you can expect to find on each tab.
    * Tiddler1, Tiddler2, ... name the tiddlers that are displayed on each tab. 

Obviously, there must be exactly three strings for each tab.

The syntax for the tabs macro looks like this:

{{{<>}}}

produces :

<>

!!!{{{<>}}}
This macro generates a list of tiddlers that carry the specified tag.

<>

If the tag parameter is not specified, the current tiddler's name will be used instead.
!!!{{{<>}}}
!!!{{{<>}}}
This macro generates a button to create a journal tiddler, using the current time and date as title.

It is otherwise identical to the NewTiddler macro.

Example : 
{{{<>}}}

Produces : 
<>

The optional parameter can be used to specify a custom date format.

In addition, all of the NewTiddler macro's parameters are valid.

!!!{{{<>}}}

 Usage

<>

Parameters

This macro uses named parameters. All parameters are optional.
|Parameter|Description|
|label |button label|
|prompt|button tooltip|
|title|title for the new tiddler (defaults to "New Tiddler")|
|text|contents for the new tiddler|
|tag|tag to be applied to the new tiddler (parameter can be used repeatedly to specify multiple tags)|
|accessKey|single letter to use as access key to trigger the button|
|focus|which of the editable fields to default the focus to (e.g. "title", "text", "tags")|
|template|template tiddler to use to display the new tiddler (defaults to EditTemplate)|
|fields|custom fields to be assigned to the new tiddler, in name:value;name:value; format|

Only fields contained as input fields in the specified template can be primed with an initial value.
[edit] Example

<>



!!!{{{<>}}}



!!!{{{<>}}}

This macro creates an input field to perform full-text searches on a TiddlyWiki document's tiddler contents.
[edit] Usage

Example : 
{{{<>}}}

Produces : 

<>

By specifiying the value parameter, the search form can be "preloaded" with the desired term.
[edit] Options
This section is still incomplete. You can help by contributing to its expansion.
Please improve the article, or discuss the issue on the talk page.

    * case-sensitive
    * regular expressions 


!!!{{{<>}}}

The Gradient macro allows simple horizontal and vertical coloured gradients. They are constructed from coloured HTML elements, and don't require any images to work.
The Gradient macro is an extended macro that processes the text after it up until the next '

>>

' sequence. It looks like this:
Example : 
{{{<>gradient fill>>}}}

Produces : 
<>gradient fill>>

The first parameter can be vert or horiz to indicate the direction of the gradient. The following parameters are two or more colours (CSS RGB(r,g,b) format is also acceptable). The macro constructs a smooth linear gradient between each of the colours in turn.

Inline CSS definitions can be added to gradient fills like this:


Example : 
{{{<>color:#ffffff;font-size:12pt;Darkness>>}}}

Produces : 
<>color:#ffffff;font-size:12pt;Darkness>>


!!!{{{<>}}}

Sparklines were invented by Edward Tufte, author of a number of thoughtful and inspiring books on the presentation of visual information. They are described by Tufte as "small, intense, word-like graphics", and are designed to be used inline with ordinary text.

TiddlyWiki's Sparklines macro creates these graphics inline without requiring any image files or server-side processing.

As of TiddlyWiki v2.3.0, this macro's code has been moved into the optional SparklinePlugin (included in the default distribution).
[edit] Usage
Example :
{{{<>}}}
Produces : 
<>

The macro accepts space-separated numeric values as parameter.
[edit] Example

Example : 
{{{<>}}}

Produces : 
<>

!!!{{{<>}}}
!!!{{{<>}}}
Changes the browser address bar to a permalink to the current Tiddler or the set of open tiddlers. It is used with the ToolbarMacro like this:

Example : 
{{{<>}}}
Produces : 
<>

!!!{{{<>}}}
The ToolbarMacro is used in the TemplateMechanism to define the toolbar that appearthat appear either in EditMode or in ViewMode. The arguments to the ToolbarMacro is a list of command names, as discussed in the CommandMechanism..

You can precede a command name with a "+" to specify a default command that is automatically chosen when a tiddler is double-clicked, or the ctrl-Enter key combination pressed. Similarly, precede it with "-" to specify a command to be chosen when the Escape key is pressed.
!!!{{{<>}}}

!!!{{{<>}}}
The command <> switches from ViewMode to EditMode. The EditMacro is either a double mouse click inside the tiddler or the entry 'edit' in the tiddler's Toolbar. It is used in ViewTemplate as ToolbarMacro like this:
Example : 
{{{<>}}}
Produces : 
<>

!!!{{{<>}}}
!!!{{{<>}}}
!!!{{{<>}}}
Retrieves a specified field (given by fieldname) from the tiddler to be displayed and outputs its value in one of the following ways (the optional //how// parameter):

    * (unspecified): render as is (without formatting)
    * link: format as a link (using createTiddlyLink)
    * wikified: format using all the normal rendering rules
    * date: expects a value of the form YYYYMMDDHHMM and outputs it using either a specified format (...) or config.views.wikified.dateFormat 

The standard field names are:

    * title - the tiddler title
    * tiddler - the tiddler title (as well)
    * text - the text of the tiddler
    * modifier - the person who last modified it
    * modified - date&time of last modification
    * created - when it was created
    * tags - the tiddler tags 

If your tiddlers contain custom fields, they could be specified as well.

The view macro is used extensively in the standard tiddler rendering templates (ViewTemplate and EditTemplate).

!!!ccTiddly Tiddlers 





!!! Predefined ccTiddly Tags 

simple - displays the tiddler without showing the date editor and tags. 

private - Only you will be able to read the tiddlers tagged private.


!!! ccTiddly Tiddlers  

[[anonDefaultTiddlers]]
[[ccVariables]]

== Headings

== Heading2
=== Heading3
==== Heading4
===== Heading5

==Heading2
===Heading3
====Heading4
=====Heading5

== Heading2 =
=== Heading3 =
==== Heading4 =====
===== Heading5 ==



== Bold and Italic

**bold**
//italic//
**//bolditalic//**

A normal sentence. **A bold sentence
that continues in bold over a line break.** And another normal sentence.

A normal sentence. **A bold sentence that is not terminated by star-star, but is instead is terminated by a paragraph break.

A normal sentence.

A normal sentence. //An italic sentence
that continues in italic over a line break.// And another normal sentence.

A normal sentence. //An italic sentence that is not terminated by slash-slash, but is instead is terminated by a paragraph break.

A normal sentence.

== Preformatted text

Normal text {{{preformatted text}}} Normal text.

{{{
A block
of preformatted text
}}}

== Links
[[explicitlink]]

[[link|explicitlinkTitle]]

http://www.wikicreole.org

[[http://www.wikicreole.org|Wiki Creole Site]]

== Misc

A horizontal rule follows
----

== Lists
* bulleted list
* bullet 2
** bullet level 2
*** bullet level 3

# numbered list
# item 2
## item 2.1
### item 2.1.1
#### item 2.1.1.1
##### item 2.1.1.1.1
# item 3
# item 4
Participatory Deliberation -
http://osmosoft.com/ More info about osmosoft can be found here
Well, with help from a number of sources I've nailed the basics ... even discovered how to do --strikeout--!
It's about discourse! (Provided by [[Osmosoft]] using TiddlyWiki.)
This is paradigmatically different in many, many ways. 1st, no evidence of markup ... or help on the subject. 2nd failure at an intuitive level e.g. I add an item to DefaultTiddlers but don't see how I can add that to the menu alongside GettingStarted. 3rd, just plain weirdness: "Help" is located under "Options" ... HeyHo.\n\nbummer
MoralProvocation\n23June08\n23June08-2
"''Even if you don't care, it still matters!''"\n\nIf there's something you don't care about, that "something" may still matter, it may be quite important. \n\nIf there's something that's important that you don't care about, the fact that you don't care about it may be important! You not caring may matter a lot.\n\nLiving as though we're contented cows is no way to live ... we're human beings, we're sentient. When we don't respond to moral provocation it's exactly as though we'd been lobotomized.
Since "New Journal" doesn't create a CamelCase tiddler, I wasn't able to add that item to DefaultTiddlers. So I created this one. Which doesn't show up as a link in DefaultTiddlers. *sigh*\n\nThis is paradigmatically different in many, many ways. 1st, no evidence of markup ... or help on the subject. 2nd failure at an intuitive level e.g. I add an item to DefaultTiddlers but don't see how I can add that to the menu alongside GettingStarted. 3rd, just plain weirdness: "Help" is located under "Options" ... HeyHo.\n\nbummer
MoralProvocation\n----\nJournals:\n- [[23June08]]\n- [[23June08-2]]\n----\nGettingStarted \n[[Customization]] \n
MainMenu | DefaultTiddlers | SiteTitle & SiteSubtitle\n\nThe following block was ripped off from [[the tiddlywiki homepage|http://tiddlywiki.com/]]\n----\nYou can customise the appearance and behaviour of TiddlyWiki to almost any degree you want:\n* Use the ColorPalette to change the basic colour scheme\n* Create a CustomStyleSheet for finer grained control over the appearance\n* Customise the PageTemplate, ViewTemplate or EditTemplate to change the composition of the page and the layout of individual tiddlers\n* Use off-the-shelf themes from [[TiddlyThemes|http://tiddlythemes.com/]]\n* Visit the [[Configuration]] summary to see all the special configuration tiddlers\n* Install [[Plugins]] to extend the core functionality (find them at [[TiddlyVault|http://tiddlyvault.tiddlyspot.com/]] or you can try [[writing or adapting your own|http://gimcrackd.com/etc/src/codex/]])\n* Use TiddlyBookmarklets for low level hacking of TiddlyWiki documents\nThere are also a bunch of TiddlyWikiTools that you can use to enhance TiddlyWiki.\n----\n\n\n
I'm up and running!\n\ncheers\n[[bentrem on twitter|http://twitter.com/bentrem/]]