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>
<!--}}}-->
/***
|''Name''|RefreshTiddlerCommand|
|''Version''|0.3.0|
***/
//{{{
(function($) {

var cmd = config.commands.refreshTiddler = {
	text: "refresh",
	locale: {
		refreshing: "Refreshing tiddler..."
	},
	tooltip: "refresh this tiddler to be the one on the server",
	handler: function(ev, src, title) {
		var tiddler = store.getTiddler(title);
		if(!tiddler) {
			tiddler = new Tiddler(title);
			merge(tiddler.fields, config.defaultCustomFields);
		}
		$(story.getTiddler(title)).find(".viewer").
			empty().text(cmd.locale.refreshing);
		var dirtyStatus = store.isDirty();
		story.loadMissingTiddler(title, {
			"server.workspace": tiddler.fields["server.recipe"]  ? "recipes/" + tiddler.fields["server.recipe"] :
				tiddler.fields["server.workspace"] || "bags/"+tiddler.fields["server.bag"],
			"server.host": tiddler.fields["server.host"],
			"server.type": tiddler.fields["server.type"]
		}, function() {
			store.setDirty(dirtyStatus);
		});
	}
};

})(jQuery);
//}}}

<<view title>>
The point about the backstage is that it should be organised logically so that there are simple rules governing it's layout.

It's more important that it is logical and consistent than that it is efficient - it is the job of themes to adapt the TiddlySpace interface to maximise efficiency for any particular task or context. We don't want it to become a dumping ground like the system tray in Windows.

For consistency, spaces and themes should not mess with the backstage. But it would be reasonable to allow users to customise it themselves.
<<<
Front of house (abbreviated FOH) is primarily a theatrical term, referring to the portion of the building that is open to the public. In theatre and live music venues, it typically refers to the auditorium and foyer, as opposed to the stage and backstage areas.

http://en.wikipedia.org/wiki/Front_of_House
<<<
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="72 648 70 70" 
width="30" height="30">
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
	<g>
		<path d="M 77.59005 669.34003 C 71.532745 681.90424 73.714462 697.4441 84.135193 707.86475 
		C 97.315445 721.0451 118.684715 721.0451 131.8649 707.86475 
		C 145.04515 694.68457 145.04515 673.31537 131.8649 660.13513 
		C 121.4441 649.7141 105.90419 647.53253 93.339905 653.5899 L 102.047455 662.2976 
		C 109.58637 660.2373 117.987976 662.16803 123.90997 668.08997 
		C 132.69673 676.8767 132.69673 691.12317 123.90997 699.90985 
		C 115.12313 708.6966 100.87699 708.6966 92.09012 699.90985 
		C 86.168266 693.98804 84.23744 685.58643 86.297653 678.04755 Z M 72 648 L 72 668.25 L 78.75 661.49957 
		L 99.00019 681.7502 L 105.750175 675.00006 L 85.50013 654.75012 L 92.249985 648 Z" fill="black"
		class="glyph"/>
	</g>
</g>
</svg>
A [[SiteIcon|SiteIcon tiddler]]@glossary helps provide some identity to your space.  Ideally it'd be a square and a minimum of 48*48 pixels size.  You can upload your site icon using the uploader below.

<<binaryUploadPublic title:SiteIcon>>
TiddlyWiki can be thought of as a text processing system. The idea is to process tiddlers into their interactive representations through a pipeline:

''raw text'' is //transformed// into ''evaluated text'' which is //parsed// into a ''tree'' which is //rendered// to the ''output''

* ''raw text'' is always plain Unicode text but it can represent wiki markup, a CSS stylesheet, HTML, SVG, a base64 image, or plain text
* the //transformations// are textual transformations that look for patterns in the text and apply the associated processing. For example:
** transclusion of other tiddlers
** aliasing of references to other tiddlers
* //transformations// are applied repeatedly until none more can be applied, or an infinite loop is entered
* ''evaluated text'' is still plain Unicode text, and generally represents the same thing that it did when it was raw text
* the type of //parsing// performed depends on what the text represents:
** wiki markup is converted to a JSON tree representation
** CSS stylesheets are converted to a JSON representation of CSS3 stylesheets
** HTML text is converted to a JSON representation of HTML
** JavaScript is converted to a JSON representation of the source
** etc
* the ''tree'' is always a JSON compatible JavaScript object
* the //rendering// depends again on what the text represents:
** a wiki tree is rendered into the DOM with augmentations for dynamic content
** a stylesheet is rendered into CSS text and added to the DOM
** an HTML tree is rendered to the DOM
** a JavaScript tree is compiled back to JavaScript, if necessary with compile-time or run-time safety checks imposed

The separation between transformation and parsing is needed so that transformation can be used to stitch together material to be parsed.
It allows participants to build their own distinct universe of knowledge or understanding, a space that is entirely under their own control. Spaces can link to one another, and take feeds from each other, to discuss and share content and ideas. It allows people to listen to the people they trust, and be heard by everyone. The aggregate of these individual spaces is a rich ecosystem of knowledge and discussion.
<<tiddler test2>>
<svg width="640" height="480" xmlns="http://www.w3.org/2000/svg">
 <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
 <defs>
  <linearGradient y2="1" x2="1" y1="0" x1="0" id="svg_3">
   <stop stop-color="#bfbf00" offset="0"/>
   <stop stop-color="#ff56aa" offset="1"/>
  </linearGradient>
 </defs>
 <g display="inline">
  <title>Layer 1</title>
  <g id="svg_7">
   <circle fill="#c1e6fd" stroke="#7aa3be" stroke-width="8" stroke-dasharray="null" stroke-linejoin="null" stroke-linecap="null" cx="113" cy="116" r="81.90848" id="svg_1"/>
   <circle fill="#f4c4e2" stroke="#ce81b0" stroke-width="8" stroke-dasharray="null" stroke-linejoin="null" stroke-linecap="null" cx="113.00001" cy="116" r="35.27792" id="svg_2"/>
  </g>
  <g id="svg_8">
   <circle fill="#c1e6fd" stroke="#7aa3be" stroke-width="8" stroke-dasharray="null" stroke-linejoin="null" stroke-linecap="null" cx="433" cy="144" r="81.90848" id="svg_9"/>
   <circle fill="#f4c4e2" stroke="#ce81b0" stroke-width="8" stroke-dasharray="null" stroke-linejoin="null" stroke-linecap="null" cx="433.00001" cy="144" r="35.27792" id="svg_10"/>
  </g>
  <g id="svg_11">
   <circle fill="#c1e6fd" stroke="#7aa3be" stroke-width="8" stroke-dasharray="null" stroke-linejoin="null" stroke-linecap="null" cx="196" cy="338" r="81.90845" id="svg_12"/>
   <circle fill="#f4c4e2" stroke="#ce81b0" stroke-width="8" stroke-dasharray="null" stroke-linejoin="null" stroke-linecap="null" cx="196.00001" cy="338" r="35.27792" id="svg_13"/>
  </g>
  <g id="svg_14">
   <circle fill="#c1e6fd" stroke="#7aa3be" stroke-width="8" stroke-dasharray="null" stroke-linejoin="null" stroke-linecap="null" cx="465" cy="361" r="81.90845" id="svg_15"/>
   <circle fill="#f4c4e2" stroke="#ce81b0" stroke-width="8" stroke-dasharray="null" stroke-linejoin="null" stroke-linecap="null" cx="465.00001" cy="361" r="35.27792" id="svg_16"/>
  </g>
  <line fill="none" stroke="#ce81b0" stroke-width="8" stroke-dasharray="null" stroke-linejoin="null" stroke-linecap="null" x1="290" y1="332" x2="369" y2="355" id="svg_17"/>
  <text xml:space="preserve" text-anchor="middle" font-family="serif" font-size="24" id="svg_4" y="205" x="435" stroke-width="0" stroke="#000000" fill="#000000">National</text>
  <text xml:space="preserve" text-anchor="middle" font-family="serif" font-size="24" id="svg_5" y="174" x="112" stroke-width="0" stroke="#000000" fill="#000000">Regional</text>
  <text xml:space="preserve" text-anchor="middle" font-family="serif" font-size="24" id="svg_6" y="401" x="195" stroke-width="0" stroke="#000000" fill="#000000">City</text>
  <text xml:space="preserve" text-anchor="middle" font-family="serif" font-size="24" id="svg_18" y="422" x="466" stroke-width="0" stroke="#000000" fill="#000000">Office</text>
 </g>
</svg>
Type the text for '@steveellwood'

<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="223 512 57 56" width="57pt" height="56pt"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2010-11-07 21:27Z</dc:date><!-- Produced by OmniGraffle Professional 5.2.3 --></metadata><defs></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><g><title>Layer 1</title><path d="M 224.9045 547.61237 C 227.95692 558.08313 237.08899 566.19415 248.60027 567.38898 C 263.7781 568.96423 277.37598 557.9243 278.95282 542.74646 C 280.52808 527.5669 269.48822 513.969 254.30878 512.39398 C 240.56339 510.9673 228.11385 519.8869 224.71631 532.85657 L 237.40755 532.85742 L 237.40532 521.77753 L 246.1438 529.98645 C 247.72568 529.136 249.53432 528.65338 251.45496 528.65338 C 257.65775 528.65338 262.69275 533.68683 262.69275 539.8913 C 262.69275 546.094 257.65775 551.12915 251.45496 551.12915 C 249.72284 551.12915 248.08179 550.7365 246.61601 550.03546 L 237.40521 558.68793 L 237.40532 547.61462 Z M 224.27258 545.12677 L 240.04375 545.12946 L 240.04375 552.47467 L 252.28577 540.23285 L 240.04364 527.9911 L 240.04497 535.34064 L 224.14072 535.33936 C 224.05086 535.886 223.97665 536.43866 223.91873 536.9969 C 223.62938 539.7815 223.76485 542.513 224.27258 545.12677 Z" fill="black"/></g></g></svg>
Directory of bitmapped icons:

http://www.iconfinder.com/
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
//See also: SecurityHandling@tiddlyspace in @tiddlyspace//

TiddlySpace as it is currently arranged contains multiple vectors by which a mischievous person could inject executable code into another users browser session. This follows inevitably from the fact that TiddlySpace is explicitly a system designed to allow trusted decentralised groups to share JavaScript code.

In mitigation, TiddlySpace is equally clearly a publishing system to help people share information, and not a system designed to securely keep secrets. TiddlyWiki itself is anyway already uniquely placed to allow individuals to manage personal information as securely as they can manage any file.

The most important vectors for malicious code are consequences of intentional features of TiddlyWiki:
* Evaluated macro parameters
* Plugins
* MarkupPreHead, MarkupPostHead, MarkupPreBody, MarkupPostBody tiddlers
And some are unintentional consequences of browser behaviour or TiddlyWiki's design:
* {{{<HTML>}}} blocks containing JavaScript
* Stylesheets containing JavaScript
These vectors are all going to have filtering applied to them which will effectively disable the associated features for many useful applications. Particularly for the first category, restrictions may have a significant impact on the usefulness of TiddlySpace, especially to people who are used to TiddlyWiki.

In partial compensation for the removal of useful features, I propose that we add core support for [[Safe Scripted Transclusions|Safe Scripted Transclusions for TiddlySpace]].  We also need to take [[Social Measures for Information Security in TiddlySpace]].

Another potential defence would be to allow users to choose different degrees of being logged in. In the safe modes private tiddlers would be readable, but not modifiable. Modification attempts in safe mode should be logged on the server so that users can see the potential impact of trusting code.
Type the text for 'New Tiddler'
/***
|''Name''|TiddlyFileImporter|
|''Version''|0.3.8|
|''Author''|Ben Gillies|
|''Type''|plugin|
|''Description''|Upload a TiddlyWiki file to TiddlyWeb, and import the tiddlers.|
!Usage
Upload a TiddlyWiki file to TiddlyWeb, and import the tiddlers.
!Requires
tiddlyweb
tiddlywebplugins.reflector
!Code
***/
//{{{
(function($){
if(!version.extensions.TiddlyFileImporter)
{ //# ensure that the plugin is only installed once
	version.extensions.TiddlyFileImporter = { installed: true };
}

config.macros.fileImport = {
	reflectorURI: '/reflector?csrf_token=%0',
	incorrectTypeError: 'Incorrect File Type. You must upload a TiddlyWiki',
	uploadLabel: 'Upload',
	uploadLabelPrompt: 'Import tiddlers from this TiddlyWiki',
	step1FileText: 'File:',
	step1PostText: 'In the next screen you will select the tiddlers to import.',
	step1Title: 'Step 1: Pick a TiddlyWiki to import',
	step1TypeChooser: 'Import From:',
	step3Html: ['<input type="hidden" name="markList" />',
		'<input type="hidden" checked="true" name="chkSync" />',
		'<input type="hidden" name="chkSave" />',
		'<input type="hidden" name="txtSaveTiddler" />'].join(),

	handler: function(place, macroName, params, wikifier, paramString) {
		var wizard = new Wizard();
		wizard.createWizard(place, 'Import a TiddlyWiki');
		this.restart(wizard);
	},

	restart: function(wizard) {
		var me = config.macros.fileImport;
		wizard.addStep(me.step1Title, ['<input type="hidden" ',
			'name="markList" />'].join(""));
		var markList = wizard.getElement('markList');
		var uploadWrapper = document.createElement('div');
		markList.parentNode.insertBefore(uploadWrapper, markList);
		uploadWrapper.setAttribute('refresh', 'macro');
		uploadWrapper.getAttribute('macroName', 'fileImport');
		var iframeName = 'reflectorImporter' + Math.random().toString();
		me.createForm(uploadWrapper, wizard, iframeName);
		$(uploadWrapper).append('<p>' + me.step1PostText + '</p>');
		wizard.setValue('serverType', 'tiddlyweb');
		wizard.setValue('adaptor', new config.adaptors.file());
		wizard.setValue('host', config.defaultCustomFields['server.host']);
		wizard.setValue('context', {});
		var iframe = $(['<iframe name="' + iframeName + '" ',
			'style="display: none" />'].join("")).appendTo(uploadWrapper);
		var onSubmit = function(ev) {
			var uploadType = $('select[name=uploadtype]', wizard.formElem).val();
			if (uploadType == "file") {
				// set an onload ready to hijack the form
				me.setOnLoad(uploadWrapper, wizard, iframe[0]);
				wizard.importType = 'file';
				wizard.formElem.submit();
			} else {
				var csrf_token = config.extensions.tiddlyspace.getCSRFToken();
				$.ajax({
					url: "%0/reflector?csrf_token=%1".format(
						config.defaultCustomFields["server.host"], csrf_token),
					type: "POST",
					dataType: "text",
					data: {
						uri: $("input", ".importFrom", wizard.formElem).val()
					},
					success: function(data, txtStatus, xhr) {
						wizard.POSTResponse = data;
						me.importTiddlers(uploadWrapper, wizard);
					},
					error: function(xhr, txtStatus, error) {
						displayMessage(["There was an error fetching the ",
							'url: ', txtStatus].join(""));
						me.restart(wizard);
					}
				});
				return false;
			}
		};
		wizard.setButtons([{
			caption: me.uploadLabel,
			tooltip: me.uploadLabelPrompt,
			onClick: onSubmit
		}]);
		$(wizard.formElem).submit(function(ev) {
			onSubmit(ev);
			ev.preventDefault();
		});
	},

	createForm: function(place, wizard, iframeName) {
		var form = wizard.formElem;
		var me = config.macros.fileImport;
		form.action = me.reflectorURI.format(
			config.extensions.tiddlyspace.getCSRFToken());
		form.enctype = 'multipart/form-data';
		form.encoding = 'multipart/form-data';
		form.method = 'POST';
		form.target = iframeName;
		onSelectChange = function(e) {
			var changeTo = $(this).val();
			if (changeTo == "file") {
				$(".importFrom").html('%0 <input type="file" name="file" />'.
					format(me.step1FileText));
			} else {
				$(".importFrom").html('URL: <input type="text" name="uri" />'
					+ ' Do you want <a target="_blank" href="http://faq.tiddlyspace.com/How%20do%20I%20include%2Fexclude%20spaces%3F">inclusion</a> instead?');
			}
		};
		$(place).append('<span>%0</span>'.format(me.step1TypeChooser)).
			append($(['<select name="uploadtype"><option value="file" selected="selected">file',
				'<option value="uri">url</select>'].join("")).change(onSelectChange)).
			append('<div class="importFrom">%0<input type="file" name="file" /></div>'.
					format(me.step1FileText));
	},

	setOnLoad: function(place, wizard, iframe) {
		var me = config.macros.fileImport;
		var loadHandler = function() {
			me.importTiddlers.apply(this, [place, wizard, iframe]);
		};
		iframe.onload = loadHandler;
		completeReadyStateChanges = 0;
		iframe.onreadystatechange = function() {
			if (++(completeReadyStateChanges) == 5) {
				loadHandler();
			}
		};
	},

	importTiddlers: function(place, wizard, iframe) {
		var tmpStore = new TiddlyWiki();
		var POSTedWiki = "";
		if (wizard.importType == "file") {
			try {
				POSTedWiki= iframe.contentWindow
					.document.documentElement.innerHTML;
			} catch(e) {
				displayMessage(config.macros.fileImport.incorrectTypeError);
				config.macros.fileImport.restart(wizard);
				return;
			}
			// now we are done, so remove the iframe
			$(iframe).remove();
		} else {
			POSTedWiki = wizard.POSTResponse;
		}

		tmpStore.importTiddlyWiki(POSTedWiki);
		var newTiddlers = tmpStore.getTiddlers();
		var workspace = config.defaultCustomFields['server.workspace'];
		var context = {
			status: true,
			statusText: 'OK',
			httpStatus: 200,
			adaptor: wizard.getValue('adaptor'),
			tiddlers: newTiddlers
		};
		context.adaptor.store = tmpStore;
		wizard.setValue('context', context);
		wizard.setValue('workspace', workspace);
		wizard.setValue('inFileImport', true);
		config.macros.importTiddlers.onGetTiddlerList(context, wizard);
	}
};

var _onGetTiddler = config.macros.importTiddlers.onGetTiddler;
config.macros.importTiddlers.onGetTiddler = function(context, wizard) {
	if (wizard.getValue('inFileImport')) {
		var me = config.macros.importTiddlers;
		if(!context.status)
			displayMessage("Error in importTiddlers.onGetTiddler: " + context.statusText);
		var tiddler = context.tiddler;
		var fields = tiddler.fields;
		merge(fields, config.defaultCustomFields);
		fields["server.workspace"] = wizard.getValue('workspace');
		delete fields['server.permissions'];
		delete fields['server.bag'];
		fields['server.page.revision'] = 'false';
		delete fields['server.recipe'];
		fields.changecount = 1;
		store.suspendNotifications();
		store.saveTiddler(tiddler.title, tiddler.title, tiddler.text,
			tiddler.modifier, tiddler.modified, tiddler.tags, tiddler.fields,
			false, tiddler.created);
		store.resumeNotifications();
		var remainingImports = wizard.getValue("remainingImports")-1;
		wizard.setValue("remainingImports",remainingImports);
		if(remainingImports === 0) {
			if(context.isSynchronous) {
				store.notifyAll();
				refreshDisplay();
			}
			wizard.setButtons([
					{caption: me.doneLabel, tooltip: me.donePrompt, onClick: me.onClose}
				],me.statusDoneImport);
			autoSaveChanges();
		}
	} else {
		_onGetTiddler.apply(this, arguments);
	}
};

var _onCancel = config.macros.importTiddlers.onCancel;
config.macros.importTiddlers.onCancel = function(e)
{
	var wizard = new Wizard(this);
	if (!wizard.getValue('inFileImport')) {
		return _onCancel.apply(this, arguments);
	}
	var place = wizard.clear();
	config.macros.fileImport.restart(wizard);
	return false;
};

var _step3Html = config.macros.importTiddlers.step3Html;
var _onGetTiddlerList = config.macros.importTiddlers.onGetTiddlerList;
config.macros.importTiddlers.onGetTiddlerList = function(context, wizard) {
	var fileImport = config.macros.fileImport;
	var importTiddlers = config.macros.importTiddlers;
	if (wizard.getValue('inFileImport')) {
		importTiddlers.step3Html = fileImport.step3Html;
	} else {
		importTiddlers.step3Html = _step3Html;
	}
	_onGetTiddlerList.apply(this, arguments);
};
})(jQuery);
//}}}
In [[Why Pen.io Wins]]@colmjude @colmbritton says:
<<<
Pen.io is very interesting and looks like a simplified tiddlywiki.  However it knows what it is good at and sticks to it.  It sells the fact it is about content and the easy creation and authoring of content.
It does a very good job at separating the authoring and the viewing of content. Something I don;t think Tiddly... does very well and is a source of confusion for many non-technical users.  This separation is less important for tiddlywiki because by it's nature it is intended for single use or at least suits it better.  However tiddlyspace is suppose to be different. It is social and multi user. Multiuser authoring but also viewing. People have content online sp people can see it and engage with it. Otherwise it is useless and may as well be private.

Role separation
Currently, working with tiddlyspace is like having a 3 course meal all on one plate.  Mouthfuls of individual courses on their own are good but it does get mixed and that is not nice.
<<<
I think that pen.io is better compared with a vertical edition of TiddlyWiki, rather than TiddlyWiki itself. It would be interesting to try to clone pen.io with TiddlySpace.


I'd like to see the following degrees of control for space inclusion:
* filtering
** by title, tags, fields
* title mangling
** add a title prefix
** decorate the title
* retagging
** add a tag
** add a prefix to a tag
** decorate a tag


http://www.drawthedots.com/abcjs

A JavaScript library that generates reasonable looking sheet music from notation like this:

{{{
X: 1
T: Cooley's
M: 4/4
L: 1/8
R: reel
K: Emin
|:D2|EB{c}BA B2 EB|~B2 AB dBAG|FDAD BDAD|FDAD dAFD|
EBBA B2 EB|B2 AB defg|afe^c dBAF|DEFD E2:|
|:gf|eB B2 efge|eB B2 gedB|A2 FA DAFA|A2 FA defg|
eB B2 eBgB|eB B2 defg|afe^c dBAF|DEFD E2:|
}}}

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
	<title>Reply</title>
	<link rel="stylesheet" href="//tiddlyspace.com/bags/benspa_public/tiddlers/bootvelcro.css">
	<style>
		html,
		body {
			overflow: hidden;
			background-color: transparent;
		}

		#container {
			/* prevent a fouc if no images present */
			display: none;
		}

		.modal-header {
			border-bottom: none;
			padding: 5px 0 0;
			position: absolute;
			width: 100%;
			background-color: #e0e0e0;
			-webkit-border-radius: 6px 6px 0 0;
			-moz-border-radius: 6px 6px 0 0;
			border-radius: 6px 6px 0 0;
			cursor: move;
		}

		.form-actions {
			position: absolute;
			bottom: 0;
			box-sizing: border-box;
			-moz-box-sizing: border-box;
			width: 100%;
			margin: 0;
			border-radius: 0 0 6px 6px;
			background-color: #e0e0e0;
			border-top: 1px solid gray;
		}

		.form-actions input.btn {
			width: auto;
			float: right;
			margin: 0 0.2em;
		}

		.closeBtn {
			background-color: #DCE7F1 !important;
		}

		.primary {
			background-color: #09F !important;
		}

		h1 {
			margin-bottom: 9px;
			margin-top: 9px;
		}

		body {
			width: 100%;
			height: 100%;
			position: absolute;
		}

		.modal {
			margin: 10px;
			top: 0;
			left: 0;
			bottom: 0;
			width: 510px;
			position: absolute;
			box-shadow: #444 0px 0px 10px 2px;
			border-radius: 6px;
			background-color: white;
			border: 1px solid gray;
			background-color: #F0F4F8;
		}

		label em {
			cursor: pointer;
		}

		.modal-body {
			overflow: auto;
			position: absolute;
			top: 0;
			bottom: 0;
			left: 0;
			right: 0;
			margin: 65px 20px 67px;
			background-color: transparent;
		}

		.nav-tabs {
			padding-left: 1%;
			margin: 0;
			width: 99%;
			border-color: gray;
		}

		.nav-tabs > li {
			cursor: pointer;
		}

		.nav-tabs > li > a {
			line-height: 2.4em;
			font-weight: bold;
			font-size: 100%;
		}

		.nav-tabs > li.active > a{
			background-color: #F0F4F8;
			border-color: gray;
			border-bottom-color: #F0F4F8;
		}

		.active {
			display: block;
		}

		input,
		textarea,
		select,
		.uneditable-input {
			color: #606060;
		}

		.imagePicker {
			-moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
			-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
			box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
			border: 1px solid #CCC;
			height: 110px;
			overflow: auto;
			-webkit-border-radius: 3px;
			-moz-border-radius: 3px;
			border-radius: 3px;
			margin-left: 0;
		}

		.imagePicker img {
			margin: 5px;
			border: 2px solid transparent;
		}

		.imagePicker .current {
			border: 2px dotted #555;
		}

		label {
			font-weight: bold;
		}

		.form-actions label {
			float: left;
			margin-top: 0.75em;
		}

		fieldset input,
		fieldset textarea {
			width: 90%;
			border-color: gray;
		}

		@media all and (max-width: 550px) {
			.modal {
				width: 95%;
			}
		}

		#help {
			position: absolute;
			border: 0;
			right: 4px;
			top: 5px;
			text-indent: -9999px;
			color: transparent;
			height: 16px;
			width: 16px;
			background: none;
			background-image: url(/bags/common/tiddlers/help.png);
			background-repeat: no-repeat;
			background-color: white;
			z-index: 2;
			border-radius: 10px;
		}

		#help-info {
			padding: 0;
			border: 1px solid gray;
			width: 60%;
			height: 50px;
			color: #404040;
			background-color: white;
			position: absolute;
			top: 5px;
			right: 5px;
			z-index: 1;
			cursor: auto;
			border-radius: 5px;

		}

		#help-info p {
			padding: 10px 25px;
			margin-bottom: 0;
		}
	</style>
</head>
<body>
	<div id="container">
		<form action="#" class="modal">
			<div class="modal-header">
				<button id="help">help</button>
				<div id="help-info" style="display:none;"><p>
				Found something interesting? Write about it in your own space. <a href="//docs.tiddlyspace.com/Reply to this Tiddler" target="_blank">Find out more</a>
				</p></div>
				<ul class="nav nav-tabs" data-tabs="tabs">
					<li class="active" data-tab-name="post"><a href="#postForm">Reply</a></li>
				</ul>
			</div>


			<fieldset id="postForm" class="modal-body">
				<label>Title
					<input type="text" name="title">
				</label>
				<input type="hidden" name="url">
				<label>Post
					<textarea name="text" rows="8"></textarea>
				</label>
				<label>Tags
					<input type="text" name="tags" value="">
				</label>
			</fieldset>


			<div class="form-actions">
				<label class="checkbox">
					<input type="checkbox" name="private" val="private">
					keep private
				</label>
				<input type="submit" class="btn primary btn-large" value="Done">
				<input type="button" class="btn btn-large closeBtn" value="Cancel">
			</div>
		</form>
	</div>

	<script type="text/javascript"
            src="/bags/common/tiddlers/jquery.js"></script>
	<script type="text/javascript" src="/bags/tiddlyspace/tiddlers/chrjs"></script>
	<script type="text/javascript" src="/bags/common/tiddlers/_reply.js"></script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
	<title>Account</title>
	<link href="/bags/common/tiddlers/profile.css" type='text/css' rel='stylesheet' >
	<link href="/bags/common/tiddlers/admin.css" type='text/css' rel='stylesheet' >
	<link href="/bags/common/tiddlers/jquery-ui.custom.css" type='text/css' rel='stylesheet' >
</head>
<body>

<div id="container">
	<div class="main section">
		<a class="app" href="/">home</a>
		<div class="left">
		<div id="siteiconArea">
		<h2>User Icon</h2>
		<div>
			<img id="siteicon" class="siteicon">
			<form id="upload" method="POST" enctype="multipart/form-data">
				<input type="hidden" name="title" value="SiteIcon" />
				<input type="hidden" name="tags" value="excludeLists">
				<input type="hidden" name="csrf_token" class="csrf" />
				<input type="file" name="file" accept="image/*" />
				<input type="submit" value="upload" />
			</form>
			<div id="dropzone">Drop file here
				<img class="notloading" src="/bags/common/tiddlers/ajax-loader.gif" alt="submitting SiteIcon" />
			</div>
		</div>
		</div>
		<h2>Find Space</h2>
		<form class="spaceSearch">
			<input class="inputBox" type="text" placeholder="find space" />
			<a href="http://docs.tiddlyspace.com/What%20is%20a%20Space%3F" class="help"
				title="What is a space?">What is a space?</a>
			<button>view all</button>
		</form>
		<div class='list-container'>
			You are a member of the following spaces:
			<ul class='ts-space-search'>
			</ul>
		</div>
		<h2>Create New Space</h2>
		<form class="ts-spaces">
			<input class="inputBox" type="text" name="spacename" placeholder="space name"><span class="hostSuffix">.tiddlyspace.com</span>
			<input type="submit" value="Create Space" />
		</form>
		</div>
		<div class="right">
		<h2>Change Password</h2>
		<form class="ts-password">
			<input class="inputBox" placeholder="existing password" type="password" name="password">
			<input class="inputBox" placeholder="new password" type="password" name="new_password">
			<input class="inputBox" placeholder="new password"	type="password" name="new_password_confirm">
			<input type="submit" value="Change password">
		</form>
		<h2>OpenID</h2>
		<h3>Why OpenID?</h3>
		<a href="http://openid.net/"><img src="/bags/common/tiddlers/openid.png" alt="openid" ></a><br />
		Use just one username and password across hundreds of OpenID-enabled sites.<br />
		It's an open standard.<br />
		<a href="http://openid.net/what/">learn more</a>
		<ul class="ts-identities"></ul>
		<form class="ts-openid" target="_top">
			<div>
				Add an openid:
			</div>
			<input class="inputBox" type="text" name="openid" placeholder="your openid" />
			<input type="submit" value="Register" />
			<a href="http://openid.net/get-an-openid/" class="help"
			title="What is an open id?">What is an open id?</a>
		</form>
		</div>
		<div class="clear"></div>
	</div>
</div>
<script src="/bags/common/tiddlers/backstage.js"></script>
<script src='/bags/common/tiddlers/jquery.js'></script>
<script src='/bags/tiddlyspace/tiddlers/chrjs'></script>
<script src='/bags/common/tiddlers/chrjs.space'></script>
<script src='/bags/common/tiddlers/chrjs.users'></script>
<script src='/bags/common/tiddlers/chrjs.identities'></script>
<script src="/bags/common/tiddlers/jquery-ui.custom.js"></script>
<script src='/bags/common/tiddlers/jquery-form.js'></script>
<script src="/bags/common/tiddlers/siteiconupload.js"></script>
<script src='/bags/common/tiddlers/ts.js'></script>
<script src="/status.js"></script>
<script type="text/javascript">
/*
 * jQuery UI Autocomplete HTML Extension
 *
 * Copyright 2010, Scott González (http://scottgonzalez.com)
 * Dual licensed under the MIT or GPL Version 2 licenses.
 *
 * http://github.com/scottgonzalez/jquery-ui-extensions
 */
(function( $ ) {

var proto = $.ui.autocomplete.prototype,
	initSource = proto._initSource;

function filter( array, term ) {
	var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
	return $.grep( array, function(value) {
		return matcher.test( $( "<div>" ).html( value.label || value.value || value ).text() );
	});
}

$.extend( proto, {
	_initSource: function() {
		if ( this.options.html && $.isArray(this.options.source) ) {
			this.source = function( request, response ) {
				response( filter( this.options.source, request.term ) );
			};
		} else {
			initSource.call( this );
		}
	},

	_renderItem: function( ul, item) {
		return $( "<li></li>" )
			.data( "item.autocomplete", item )
			.append( $( "<a></a>" )[ this.options.html ? "html" : "text" ]( item.label ) )
			.appendTo( ul );
	}
});

})( jQuery );

/***
_accounts application specific javascript
***/
var link;
ts.init(function(ts) {
	if(ts.user.anon) { // redirect to homepage when user not logged in
		window.location = ts.getHost();
	} else if(ts.user.name === ts.currentSpace){
		initSiteIconUpload(ts.user.name);
	} else {
		link = $("<a />").attr("href", ts.getHost(ts.user.name) + "/_account").text("Change User Icon");
		$("#siteiconArea div").empty().append(link);
	}
	$(".hostSuffix").text("." + ts.getHost("").split("//")[1]);
	ts.getSpaces(function(spaces) {
		$("<div class='info' />").text("You have " + spaces.length + " spaces.").insertBefore($(".spaceSearch")[0]);
		$("form.spaceSearch input").autocomplete({
			html: true,
			source: function(req, response) {
				ts.getSpaces(function(spaces) {
					var selected = [];
					for(var i = 0; i < spaces.length; i++) {
						var space = spaces[i];
						if(space.name.indexOf(req.term) > -1) {
							var host = ts.getHost(space.name) ;
							var img = host + "/SiteIcon";
							selected.push({
								value: space.name,
								label: '<a href="' + host + '" target="_parent" class="autocompleteLink"><img src="' + img + '" style="height:24px;width:auto;max-height:24px;max-width:24px;"/>' + space.name + '</a>'
							});
						}
					}
					response(selected);
				});
			},
			select: function(event, ui) {
				window.top.location = ts.getHost(ui.item.value);
			}
		});

		var $ul = $('.ts-space-search');
		$.each(spaces, function(i, space) {
			$ul.append($('<li/>').html($('<a/>').attr('href', space.uri)
				.text(space.name)));
		});

		$('form.spaceSearch button').click(function(ev) {
			$('.list-container').slideToggle('fast');
			ev.preventDefault();
			return false;
		});
	});
});

if(window != window.top) {
	$("html").addClass("iframeMode");
	$("a").live("click",function(ev) {
		$(ev.target).attr("target", "_parent");
	});
}
</script>
<!--[if lt IE 8]>
<script type="text/javascript" src="/bags/common/tiddlers/json2.js"></script>
<![endif]-->
</body>
</html>

!Upload an icon
<<tiddler spaceIcon>>
!Describe your space
If you haven't already done so, you should provide a brief decscription of yourself and what you're using this space for. To do this, just edit the [[SiteInfo]] tiddler (keeping the title the same of course).

!Change the title
<<tiddler spaceTitle>>
!Change the theme
<<tiddler colorScheme>>
!Change the menu
If you'd like to change the menu items along the top, you can edit the [[MainMenu]] tiddler.

!Change the default tiddlers
<<tiddler setDefaultTiddlers>>
!More Advanced customisations
If you know HTML and CSS, you can edit some or all of the following tiddlers to customise your space further:
* PageTemplate
* EditTemplate
* ViewTemplate
* StyleSheet
As noted in UberInclusion, I believe that we need filtering, title mangling and retagging built into the inclusion mechanism. All of these features would be under the control of the space doing the inclusion, but it would be useful to have a convention for a space to declare it's preferred inclusion settings.
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0FGMDg5NTYwNDM1MTFFMzhENjZGNUNDMjNFMDcxQkQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0FGMDg5NTcwNDM1MTFFMzhENjZGNUNDMjNFMDcxQkQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0OUQ5NDM2MTA0MzUxMUUzOEQ2NkY1Q0MyM0UwNzFCRCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0OUQ5NDM2MjA0MzUxMUUzOEQ2NkY1Q0MyM0UwNzFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pgr+kcYAAAOmSURBVHjanFZdKGRhGH7NDprQaLLakrSssGwpPzVXW1ipSZryU1t74cIwRLnYKMrN5mJLdhpmEqFcrbjYyUoSSRliiobJ1jIobvy1/ibD+PZ9vz0zzXDOsbtvveec+c75nud7f77nmzDGGMhZbW2tBm/v0LXoKmH4F7odfaqvr88jNz9MigCBCdAYFRX1ISMjA5KTkyEiIoK/83g8sLOzAxsbG3B7e9uDQ1YkcokCEcFDNxgMXa2trcxutzM583q9bHZ2ljU3NzOc80kM6yFwNLplcHCQTxazxcVF1tvby3Z3dwNjl5eXrLu7m0jMTxFYxsbGJFe8v7/PiouLWVFREb+bzWYOTubz+djAwACRdIkS4Is2WpmctbW1MawNu76+ZpOTk6yyspLp9Xo2NzcXSFlnZyeRGEII8LemsbGRnZ2dSYIvLS3xlTudzpDUNDU1MZ1OxyPwR1lXV0ckzwhbIdTaWFhYCLGxsaKNcHd3BxaLBQoKCiArKyswjh0GKpUK0tLSQKH4A5WYmAj5+fn0+J4ufoKq3NxcyV5eXl6Gw8NDwAhge3sbtra2AuMOhwOqq6tDvhewqjgB5vRlXFzcm4SEBEmC1NRUUKvVgDmG9vZ2WFhYkIyKLD09HcLDw3WIraIIZMFpU2k0GhgZGeErv7m5gezsbGhpaQGsGdTU1Dyag+AQHx9Pj6+IIDoyMlIUnAArKioAu4WnCFuYp2NlZYXvYqPRCBi96FyqDZpaiRcvhStmVquVrwRDhaGhIUhKSgKtVgulpaVQX18vq2EoITwBFMHPo6OjRx+gBPAIsPd5/qmglA5sZxgdHYWn7Pj4mG5uisB5cHAAFxcXEBMTE8h7f38/YH9DSkoK/40bCHJycngN3G63LPje3h5cXV05UABPFXjx3d/f96yurgY+GB8f54T+9qN85uXl8ahwIpSXl8sSCFhfg/eBdXp6Gvy1oIjIXC5XSDcFRyVltID5+XmOGSLXuLW/2Gw2vt1PTk5YR0cHlwbSH1JOk8nEdef8/FxWr4aHh0OkO5jgOfq3tbW1wMfr6+tc3IiI3L8AKaOzgRRZTq5LGhoaGPZ5yEQMmU1MTMiCz8zMcHD018GYj45MXPFbEj8UrKqysjLJjeQ3qhc1xebmJuXchE3z42/P5I9KpfJzZmYmlwaSE9oP1AhUSDqTUboJ2CmcydZ/OvQFEjrlS9D1pFnoL2jno58K/yq+I/CUXIRKkgEZIzCb4P9lvwUYABkxe5fpK5cVAAAAAElFTkSuQmCC
/***
|''Name''|TiddlySpaceConfig|
|''Version''|0.7.7|
|''Description''|TiddlySpace configuration|
|''Status''|stable|
|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpaceConfig.js|
|''CoreVersion''|2.6.1|
|''Requires''|TiddlyWebConfig ServerSideSavingPlugin TiddlyFileImporter|
!Code
***/
//{{{
(function($) {

var tweb = config.extensions.tiddlyweb;

var recipe = config.defaultCustomFields["server.workspace"].split("recipes/")[1];
var currentSpace; // assigned later

var disabledTabs = [];

var coreBags = ["system", "tiddlyspace"];
var systemSpaces = ["plugins", "info", "images", "theme"];
systemSpaces = $.map(systemSpaces, function(item, i) {
	return "system-%0_public".format(item);
});

// hijack search macro to add custom attributes for mobile devices
var _search = config.macros.search.handler;
config.macros.search.handler = function(place, macroName, params) {
	_search.apply(this, arguments);
	$(".searchField:input", place).
		attr({ autocapitalize: "off", autocorrect: "off" });
};

// arg is either a container name or a tiddler object
// if fuzzy is truthy, space may be inferred from workspace (for new tiddlers)
// returns space object or false
var determineSpace = function(arg, fuzzy) {
	if(typeof arg == "string") { // container name
		var space = split(arg, "_", "r");
		return ["public", "private"].contains(space.type) ? space : false;
	} else if(arg) { // tiddler
		var container = determineContainer(arg, fuzzy);
		return container ? determineSpace(container.name, fuzzy) : false;
	} else {
		return false;
	}
};

// if fuzzy is truthy, container may be inferred from workspace for new tiddlers
// returns container object or false
var determineContainer = function(tiddler, fuzzy) { // TODO: expose?
	var bag = tiddler.fields["server.bag"];
	var recipe = tiddler.fields["server.recipe"]; // XXX: unused/irrelevant/redundant!?
	if(bag) {
		return { type: "bag", name: bag };
	} else if(recipe) {
		return { type: "recipe", name: recipe };
	} else if(fuzzy) { // new tiddler
		var workspace = tiddler.fields["server.workspace"];
		if(workspace) {
			var container = split(workspace, "/", "l");
			return ["bags", "recipes"].contains(container.type) ? container : false;
		} else {
			return false;
		}
	} else {
		return false;
	}
};

// hijack removeTiddlerCallback to restore tiddler from recipe cascade -- TODO: move into TiddlyWebWiki?
var sssp = config.extensions.ServerSideSavingPlugin;
var _removeTiddlerCallback = sssp.removeTiddlerCallback;
sssp.removeTiddlerCallback = function(context, userParams) {
	var title = context.tiddler.title;
	var recipe = context.tiddler.fields["server.recipe"];
	_removeTiddlerCallback.apply(this, arguments);
	if(recipe) {
		context.workspace = "recipes/" + recipe;
		var callback = function(context, userParams) {
			if(context.status) {
				var dirty = store.isDirty();
				store.saveTiddler(context.tiddler).clearChangeCount();
				store.setDirty(dirty);
			} else {
				store.notify(title, true);
			}
		};
		context.adaptor.getTiddler(title, context, null, callback);
	}
};

// splits a string once using delimiter
// mode "l" splits at the first, "r" at the last occurrence
// returns an object with members type and name
var split = function(str, sep, mode) {
	mode = mode == "r" ? "pop" : "shift"; // TODO: use +/-1 instead of "l"/"r"?
	var arr = str.split(sep);
	var type = arr.length > 1 ? arr[mode]() : null;
	return { type: type, name: arr.join(sep) };
};

var plugin = config.extensions.tiddlyspace = {
	currentSpace: determineSpace(recipe),
	coreBags: coreBags.concat(systemSpaces),

	determineSpace: determineSpace,
	isValidSpaceName: function(name) {
		return name.match(/^[a-z][0-9a-z\-]*[0-9a-z]$/) ? true : false;
	},
	getCurrentBag: function(type) {
		return "%0_%1".format(currentSpace, type);
	},
	getCurrentWorkspace: function(type) {
		return "bags/" + this.getCurrentBag(type);
	},
	// returns the URL for a space's avatar (SiteIcon) based on a server_host
	// object and an optional space name
	// optional nocors argument prevents cross-domain URLs from being generated
	getAvatar: function(host, space, nocors) {
		if(space && typeof space != "string") { // backwards compatibility -- XXX: deprecated
			space = space.name;
		}
		var subdomain = nocors ? currentSpace : space;
		host = host ? this.getHost(host, subdomain) : "";
		var bag = space ? "%0_public".format(space) : "tiddlyspace";
		return "%0/bags/%1/tiddlers/SiteIcon".format(host, bag);
	},
	// returns the URL based on a server_host object (scheme, host, port) and an
	// optional subdomain
	getHost: function(host, subdomain) {
		if(host === undefined) { // offline
			tweb.status.server_host = {}; // prevents exceptions further down the stack -- XXX: hacky workaround, breaks encapsulation
			return null;
		}
		subdomain = subdomain ? subdomain + "." : "";
		var url = "%0://%1%2".format(host.scheme, subdomain, host.host);
		var port = host.port;
		if(port && !["80", "443"].contains(port)) {
			url += ":" + port;
		}
		return url;
	},
	disableTab: function(tabTiddler) {
		if(typeof(tabTiddler) == "string") {
			disabledTabs.push(tabTiddler);
		} else {
			for(var i = 0; i < tabTiddler.length; i++) {
				plugin.disableTab(tabTiddler[i]);
			}
		}
	},
    checkSyncStatus: function(tiddler) {
		if(tiddler) {
			var title = typeof(tiddler) === "string" ? tiddler : tiddler.title;
			var el = story.getTiddler(title) || false;
			if(el) {
				refreshElements(el);
			}
		}
	},
	isDisabledTab: function(tabTitle) {
		var match = new RegExp("(?:\\[\\[([^\\]]+)\\]\\])", "mg").exec(tabTitle);
		var tabIdentifier = match ? match[1] : tabTitle;
		return disabledTabs.contains(tabIdentifier);
	},
	getCSRFToken: window.getCSRFToken || null // this may not have been processed yet
};

currentSpace = plugin.currentSpace.name;

tweb.serverPrefix = tweb.host.split("/")[3] || ""; // XXX: assumes root handler
tweb.getStatus(function(status) {
	var url = plugin.getHost(status.server_host);
	tweb.status.server_host.url = url;
	config.messages.tsVersion = status.version;
});

if(window.location.protocol == "file:") {
	// enable AutoSave by default
	config.options.chkAutoSave = config.options.chkAutoSave === undefined ?
		true : config.options.chkAutoSave;
} else {
	// set global read-only mode based on membership heuristics
	var indicator = store.getTiddler("SiteTitle") || tiddler;
	readOnly = !(recipe.split("_").pop() == "private" ||
		tweb.hasPermission("write", indicator));
	// replace TiddlyWiki's ImportTiddlers due to cross-domain restrictions
	if(config.macros.fileImport) {
		$.extend(config.macros.importTiddlers, config.macros.fileImport);
	}
}

// hijack saveChanges to ensure SystemSettings is private by default
var _saveChanges = saveChanges;
saveChanges = function(onlyIfDirty, tiddlers) {
	if(tiddlers && tiddlers.length == 1 &&
			tiddlers[0] && tiddlers[0].title == "SystemSettings") {
		var fields = tiddlers[0].fields;
		delete fields["server.recipe"];
		fields["server.bag"] = plugin.getCurrentBag("private");
		fields["server.workspace"] = plugin.getCurrentWorkspace("private");
	}
	return _saveChanges.apply(this, arguments);
};

// ensure backstage is always initialized
// required to circumvent TiddlyWiki's read-only based handling
config.macros.backstageInit = {
	init: function() {
		showBackstage = true;
	}
};

// disable evaluated macro parameters for security reasons
config.evaluateMacroParameters = "none";
var _parseParams = String.prototype.parseParams;
String.prototype.parseParams = function(defaultName, defaultValue, allowEval,
		noNames, cascadeDefaults) {
	if(config.evaluateMacroParameters == "none") {
		arguments[2] = false;
	}
	return _parseParams.apply(this, arguments);
};

var _tabsMacro = config.macros.tabs.handler;
config.macros.tabs.handler = function(place, macroName, params) {
	var newParams = [params[0]]; // keep cookie name
	for(var i = 1; i < params.length; i += 3) {
		var tabTitle = params[i + 2];
		if(!plugin.isDisabledTab(tabTitle)){
			newParams = newParams.concat(params[i], params[i + 1], tabTitle);
		}
	}
	_tabsMacro.apply(this, [place, macroName, newParams]);
};

// disable ControlView for XHRs by default
$.ajaxSetup({
	beforeSend: function(xhr) {
		xhr.setRequestHeader("X-ControlView", "false");
	}
});
// TiddlyWeb adaptor currently still uses httpReq, which needs extra magic -- XXX: obsolete this!
var _httpReq = httpReq;
httpReq = function(type, url, callback, params, headers, data, contentType,
		username, password, allowCache) {
	headers = headers || {};
	headers["X-ControlView"] = "false";
	_httpReq.apply(this, arguments);
};

// register style sheet for backstage separately (important)
store.addNotification("StyleSheetBackstage", refreshStyles);

// option for default privacy setting
config.optionsDesc.chkPrivateMode = "Set your default privacy mode to private";
config.optionsSource.chkPrivateMode = "setting";
config.options.chkPrivateMode = config.options.chkPrivateMode || false;
saveSystemSetting("chkPrivateMode", true);
config.defaultCustomFields["server.workspace"] = plugin.
	getCurrentWorkspace(config.options.chkPrivateMode ? "private" : "public");

config.paramifiers.follow = {
	onstart: function(v) {
		if(!readOnly) {
			var bag = "%0_public".format(currentSpace);
			story.displayTiddler(null, v, DEFAULT_EDIT_TEMPLATE, null, null,
				"server.bag:%0 server.workspace:bags/%0".format(bag));
			story.setTiddlerTag(v, "follow", 1);
			story.focusTiddler(v, "text");
		}
	}
};

var fImport = config.macros.fileImport;
if(fImport) {
	fImport.uploadTo = "Upload to: ";
	var _createForm = config.macros.fileImport.createForm;
	config.macros.fileImport.createForm = function(place, wizard, iframeName) {
		var container = $("<div />").text(fImport.uploadTo).appendTo(place);
		var select = $('<select name="mode" />').appendTo(container)[0];
		$('<option value="private" selected>private</a>').appendTo(select);
		$('<option value="public">public</a>').appendTo(select);
		wizard.setValue("importmode", select);
		_createForm.apply(this, [place, wizard, iframeName]);
	};

	var _onGet = config.macros.importTiddlers.onGetTiddler;
	config.macros.importTiddlers.onGetTiddler = function(context, wizard) {
		var type = $(wizard.getValue("importmode")).val();
		var ws =  plugin.getCurrentWorkspace(type);
		wizard.setValue("workspace", ws);
		_onGet.apply(this, [context, wizard]);
	};
}

config.extensions.ServerSideSavingPlugin.reportSuccess = function(msg, tiddler) {
	plugin.checkSyncStatus(tiddler);
	msg = config.extensions.ServerSideSavingPlugin.locale[msg];
	var link = "/" + encodeURIComponent(tiddler.title);
	displayMessage(msg.format([tiddler.title]), link);
};


})(jQuery);
//}}}
/***
|''Name''|TiddlyWebAdaptor|
|''Description''|adaptor for interacting with TiddlyWeb|
|''Author:''|FND|
|''Contributors''|Chris Dent, Martin Budden|
|''Version''|1.4.10|
|''Status''|stable|
|''Source''|http://svn.tiddlywiki.org/Trunk/association/adaptors/TiddlyWebAdaptor.js|
|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/association/|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
|''CoreVersion''|2.5|
|''Keywords''|serverSide TiddlyWeb|
!Notes
This plugin includes [[jQuery JSON|http://code.google.com/p/jquery-json/]].
!To Do
* createWorkspace
* document custom/optional context attributes (e.g. filters, query, revision) and tiddler fields (e.g. server.title, origin)
!Code
***/
//{{{
(function($) {

var adaptor = config.adaptors.tiddlyweb = function() {};

adaptor.prototype = new AdaptorBase();
adaptor.serverType = "tiddlyweb";
adaptor.serverLabel = "TiddlyWeb";
adaptor.mimeType = "application/json";

adaptor.parsingErrorMessage = "Error parsing result from server";
adaptor.noBagErrorMessage = "no bag specified for tiddler";
adaptor.locationIDErrorMessage = "no bag or recipe specified for tiddler"; // TODO: rename

// retrieve current status (requires TiddlyWeb status plugin)
adaptor.prototype.getStatus = function(context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	var uriTemplate = "%0/status";
	var uri = uriTemplate.format([context.host]);
	var req = httpReq("GET", uri, adaptor.getStatusCallback, context,
		null, null, null, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.getStatusCallback = function(status, context, responseText, uri, xhr) {
	context.status = responseText ? status : false;
	try {
		context.statusText = xhr.statusText;
	} catch(exc) { // offline (Firefox)
		context.status = false;
		context.statusText = null;
	}
	context.httpStatus = xhr.status;
	if(context.status) {
		context.serverStatus = $.evalJSON(responseText); // XXX: error handling!?
	}
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// retrieve a list of workspaces
adaptor.prototype.getWorkspaceList = function(context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	context.workspaces = [];
	var uriTemplate = "%0/recipes"; // XXX: bags?
	var uri = uriTemplate.format([context.host]);
	var req = httpReq("GET", uri, adaptor.getWorkspaceListCallback,
		context, { accept: adaptor.mimeType }, null, null, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.getWorkspaceListCallback = function(status, context, responseText, uri, xhr) {
	context.status = status;
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	if(status) {
		try {
			var workspaces = $.evalJSON(responseText);
		} catch(ex) {
			context.status = false; // XXX: correct?
			context.statusText = exceptionText(ex, adaptor.parsingErrorMessage);
			if(context.callback) {
				context.callback(context, context.userParams);
			}
			return;
		}
		context.workspaces = workspaces.map(function(itm) { return { title: itm }; });
	}
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// retrieve a list of tiddlers
adaptor.prototype.getTiddlerList = function(context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	var uriTemplate = "%0/%1/%2/tiddlers%3";
	var params = context.filters ? "?" + context.filters : "";
	if(context.format) {
		params = context.format + params;
	}
	var workspace = adaptor.resolveWorkspace(context.workspace);
	var uri = uriTemplate.format([context.host, workspace.type + "s",
		adaptor.normalizeTitle(workspace.name), params]);
	var req = httpReq("GET", uri, adaptor.getTiddlerListCallback,
		context, merge({ accept: adaptor.mimeType }, context.headers), null, null, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.getTiddlerListCallback = function(status, context, responseText, uri, xhr) {
	context.status = status;
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	if(status) {
		context.tiddlers = [];
		try {
			var tiddlers = $.evalJSON(responseText); //# NB: not actual tiddler instances
		} catch(ex) {
			context.status = false; // XXX: correct?
			context.statusText = exceptionText(ex, adaptor.parsingErrorMessage);
			if(context.callback) {
				context.callback(context, context.userParams);
			}
			return;
		}
		for(var i = 0; i < tiddlers.length; i++) {
			var tiddler = adaptor.toTiddler(tiddlers[i], context.host);
			context.tiddlers.push(tiddler);
		}
	}
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// perform global search
adaptor.prototype.getSearchResults = function(context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	var uriTemplate = "%0/search?q=%1%2";
	var filterString = context.filters ? ";" + context.filters : "";
	var uri = uriTemplate.format([context.host, context.query, filterString]); // XXX: parameters need escaping?
	var req = httpReq("GET", uri, adaptor.getSearchResultsCallback,
		context, { accept: adaptor.mimeType }, null, null, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.getSearchResultsCallback = function(status, context, responseText, uri, xhr) {
	adaptor.getTiddlerListCallback(status, context, responseText, uri, xhr); // XXX: use apply?
};

// retrieve a particular tiddler's revisions
adaptor.prototype.getTiddlerRevisionList = function(title, limit, context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	var uriTemplate = "%0/%1/%2/tiddlers/%3/revisions";
	var workspace = adaptor.resolveWorkspace(context.workspace);
	var uri = uriTemplate.format([context.host, workspace.type + "s",
		adaptor.normalizeTitle(workspace.name), adaptor.normalizeTitle(title)]);
	var req = httpReq("GET", uri, adaptor.getTiddlerRevisionListCallback,
		context, merge({ accept: adaptor.mimeType }, context.headers), null, null, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.getTiddlerRevisionListCallback = function(status, context, responseText, uri, xhr) {
	context.status = status;
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	if(status) {
		context.revisions = [];
		try {
			var tiddlers = $.evalJSON(responseText); //# NB: not actual tiddler instances
		} catch(ex) {
			context.status = false; // XXX: correct?
			context.statusText = exceptionText(ex, adaptor.parsingErrorMessage);
			if(context.callback) {
				context.callback(context, context.userParams);
			}
			return;
		}
		for(var i = 0; i < tiddlers.length; i++) {
			var tiddler = adaptor.toTiddler(tiddlers[i], context.host);
			context.revisions.push(tiddler);
		}
		var sortField = "server.page.revision";
		context.revisions.sort(function(a, b) {
			return a.fields[sortField] < b.fields[sortField] ? 1 :
				(a.fields[sortField] == b.fields[sortField] ? 0 : -1);
		});
	}
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// retrieve an individual tiddler revision -- XXX: breaks with standard arguments list -- XXX: convenience function; simply use getTiddler?
adaptor.prototype.getTiddlerRevision = function(title, revision, context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	context.revision = revision;
	return this.getTiddler(title, context, userParams, callback);
};

// retrieve an individual tiddler
//# context is an object with members host and workspace
//# callback is passed the new context and userParams
adaptor.prototype.getTiddler = function(title, context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	context.title = title;
	if(context.revision) {
		var uriTemplate = "%0/%1/%2/tiddlers/%3/revisions/%4";
	} else {
		uriTemplate = "%0/%1/%2/tiddlers/%3";
	}
	if(!context.tiddler) {
		context.tiddler = new Tiddler(title);
	}
	context.tiddler.fields["server.type"] = adaptor.serverType;
	context.tiddler.fields["server.host"] = AdaptorBase.minHostName(context.host);
	context.tiddler.fields["server.workspace"] = context.workspace;
	var workspace = adaptor.resolveWorkspace(context.workspace);
	var uri = uriTemplate.format([context.host, workspace.type + "s",
		adaptor.normalizeTitle(workspace.name), adaptor.normalizeTitle(title),
		context.revision]);
	var req = httpReq("GET", uri, adaptor.getTiddlerCallback, context,
		merge({ accept: adaptor.mimeType }, context.headers), null, null, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.getTiddlerCallback = function(status, context, responseText, uri, xhr) {
	context.status = status;
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	if(status) {
		try {
			var tid = $.evalJSON(responseText);
		} catch(ex) {
			context.status = false;
			context.statusText = exceptionText(ex, adaptor.parsingErrorMessage);
			if(context.callback) {
				context.callback(context, context.userParams);
			}
			return;
		}
		var tiddler = adaptor.toTiddler(tid, context.host);
		tiddler.title = context.tiddler.title;
		tiddler.fields["server.etag"] = xhr.getResponseHeader("Etag");
		// normally we'd assign context.tiddler = tiddler here - but we can't do
		// that because of IE, which triggers getTiddler in putTiddlerCallback,
		// and since ServerSideSavingPlugin foolishly relies on persistent
		// object references, we need to merge the data into the existing object
		$.extend(context.tiddler, tiddler);
	}
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// retrieve tiddler chronicle (all revisions)
adaptor.prototype.getTiddlerChronicle = function(title, context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	context.title = title;
	var uriTemplate = "%0/%1/%2/tiddlers/%3/revisions?fat=1";
	var workspace = adaptor.resolveWorkspace(context.workspace);
	var uri = uriTemplate.format([context.host, workspace.type + "s",
		adaptor.normalizeTitle(workspace.name), adaptor.normalizeTitle(title)]);
	var req = httpReq("GET", uri, adaptor.getTiddlerChronicleCallback,
		context, { accept: adaptor.mimeType }, null, null, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.getTiddlerChronicleCallback = function(status, context, responseText, uri, xhr) {
	context.status = status;
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	if(status) {
		context.responseText = responseText;
	}
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// store an individual tiddler
adaptor.prototype.putTiddler = function(tiddler, context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	context.title = tiddler.title;
	context.tiddler = tiddler;
	context.host = context.host || this.fullHostName(tiddler.fields["server.host"]);
	var uriTemplate = "%0/%1/%2/tiddlers/%3";
	try {
		context.workspace = context.workspace || tiddler.fields["server.workspace"];
		var workspace = adaptor.resolveWorkspace(context.workspace);
	} catch(ex) {
		return adaptor.locationIDErrorMessage;
	}
	var uri = uriTemplate.format([context.host, workspace.type + "s",
		adaptor.normalizeTitle(workspace.name),
		adaptor.normalizeTitle(tiddler.title)]);
	var etag = adaptor.generateETag(workspace, tiddler);
	var headers = etag ? { "If-Match": etag } : null;
	var payload = {
		type: tiddler.fields["server.content-type"] || null,
		text: tiddler.text,
		tags: tiddler.tags,
		fields: $.extend({}, tiddler.fields)
	};
	delete payload.fields.changecount;
	$.each(payload.fields, function(key, value) {
		if(key.indexOf("server.") == 0) {
			delete payload.fields[key];
		}
	});
	payload = $.toJSON(payload);
	var req = httpReq("PUT", uri, adaptor.putTiddlerCallback,
		context, headers, payload, adaptor.mimeType, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.putTiddlerCallback = function(status, context, responseText, uri, xhr) {
	context.status = [204, 1223].contains(xhr.status);
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	if(context.status) {
		var loc = xhr.getResponseHeader("Location");
		var etag = xhr.getResponseHeader("Etag");
		if(loc && etag) {
			var bag = loc.split("/bags/").pop().split("/")[0];
			context.tiddler.fields["server.bag"] = bag;
			context.tiddler.fields["server.workspace"] = "bags/" + bag;
			var rev = etag.split("/").pop().split(/;|:/)[0];
			context.tiddler.fields["server.page.revision"] = rev;
			context.tiddler.fields["server.etag"] = etag;
			if(context.callback) {
				context.callback(context, context.userParams);
			}
		} else { // IE
			context.adaptor.getTiddler(context.tiddler.title, context,
				context.userParams, context.callback);
		}
	} else if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// store a tiddler chronicle
adaptor.prototype.putTiddlerChronicle = function(revisions, context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	context.title = revisions[0].title;
	var headers = null;
	var uriTemplate = "%0/%1/%2/tiddlers/%3/revisions";
	var host = context.host || this.fullHostName(tiddler.fields["server.host"]);
	var workspace = adaptor.resolveWorkspace(context.workspace);
	var uri = uriTemplate.format([host, workspace.type + "s",
		adaptor.normalizeTitle(workspace.name),
		adaptor.normalizeTitle(context.title)]);
	if(workspace.type == "bag") { // generate ETag
		var etag = [adaptor.normalizeTitle(workspace.name),
			adaptor.normalizeTitle(context.title), 0].join("/"); //# zero-revision prevents overwriting existing contents
		headers = { "If-Match": '"' + etag + '"' };
	}
	var payload = $.toJSON(revisions);
	var req = httpReq("POST", uri, adaptor.putTiddlerChronicleCallback,
		context, headers, payload, adaptor.mimeType, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.putTiddlerChronicleCallback = function(status, context, responseText, uri, xhr) {
	context.status = [204, 1223].contains(xhr.status);
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// store a collection of tiddlers (import TiddlyWiki HTML store)
adaptor.prototype.putTiddlerStore = function(store, context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	var uriTemplate = "%0/%1/%2/tiddlers";
	var host = context.host;
	var workspace = adaptor.resolveWorkspace(context.workspace);
	var uri = uriTemplate.format([host, workspace.type + "s",
		adaptor.normalizeTitle(workspace.name)]);
	var req = httpReq("POST", uri, adaptor.putTiddlerStoreCallback,
		context, null, store, "text/x-tiddlywiki", null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.putTiddlerStoreCallback = function(status, context, responseText, uri, xhr) {
	context.status = [204, 1223].contains(xhr.status);
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// rename an individual tiddler or move it to a different workspace -- TODO: make {from|to}.title optional
//# from and to are objects with members title and workspace (bag; optional),
//# representing source and target tiddler, respectively
adaptor.prototype.moveTiddler = function(from, to, context, userParams, callback) { // XXX: rename parameters (old/new)?
	var self = this;
	var newTiddler = store.getTiddler(from.title) || store.getTiddler(to.title); //# local rename might already have occurred
	var oldTiddler = $.extend(true, {}, newTiddler); //# required for eventual deletion
	oldTiddler.title = from.title; //# required for original tiddler's ETag
	var _getTiddlerChronicle = function(title, context, userParams, callback) {
		return self.getTiddlerChronicle(title, context, userParams, callback);
	};
	var _putTiddlerChronicle = function(context, userParams) {
		if(!context.status) {
			return callback(context, userParams);
		}
		var revisions = $.evalJSON(context.responseText); // XXX: error handling?
		// change current title while retaining previous location
		for(var i = 0; i < revisions.length; i++) {
			delete revisions[i].revision;
			if(!revisions[i].fields.origin) { // NB: origin = "<workspace>/<title>"
				revisions[i].fields.origin = ["bags", revisions[i].bag, revisions[i].title].join("/");
			}
			revisions[i].title = to.title;
		}
		// add new revision
		var rev = $.extend({}, revisions[0]);
		$.each(newTiddler, function(i, item) {
			if(!$.isFunction(item)) {
				rev[i] = item;
			}
		});
		rev.title = to.title;
		rev.created = rev.created.convertToYYYYMMDDHHMM();
		rev.modified = new Date().convertToYYYYMMDDHHMM();
		delete rev.fields.changecount;
		revisions.unshift(rev);
		if(to.workspace) {
			context.workspace = to.workspace;
		} else if(context.workspace.substring(0, 4) != "bags") { // NB: target workspace must be a bag
			context.workspace = "bags/" + rev.bag;
		}
		var subCallback = function(context, userParams) {
			if(!context.status) {
				return callback(context, userParams);
			}
			context.adaptor.getTiddler(newTiddler.title, context, userParams, _deleteTiddler);
		};
		return self.putTiddlerChronicle(revisions, context, context.userParams, subCallback);
	};
	var _deleteTiddler = function(context, userParams) {
		if(!context.status) {
			return callback(context, userParams);
		}
		$.extend(true, newTiddler, context.tiddler);
		context.callback = null;
		return self.deleteTiddler(oldTiddler, context, context.userParams, callback);
	};
	callback = callback || function() {};
	context = this.setContext(context, userParams);
	context.host = context.host || oldTiddler.fields["server.host"];
	context.workspace = from.workspace || oldTiddler.fields["server.workspace"];
	return _getTiddlerChronicle(from.title, context, userParams, _putTiddlerChronicle);
};

// delete an individual tiddler
adaptor.prototype.deleteTiddler = function(tiddler, context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	context.title = tiddler.title; // XXX: not required!?
	var uriTemplate = "%0/bags/%1/tiddlers/%2";
	var host = context.host || this.fullHostName(tiddler.fields["server.host"]);
	var bag = tiddler.fields["server.bag"];
	if(!bag) {
		return adaptor.noBagErrorMessage;
	}
	var uri = uriTemplate.format([host, adaptor.normalizeTitle(bag),
		adaptor.normalizeTitle(tiddler.title)]);
	var etag = adaptor.generateETag({ type: "bag", name: bag }, tiddler);
	var headers = etag ? { "If-Match": etag } : null;
	var req = httpReq("DELETE", uri, adaptor.deleteTiddlerCallback, context, headers,
		null, null, null, null, true);
	return typeof req == "string" ? req : true;
};

adaptor.deleteTiddlerCallback = function(status, context, responseText, uri, xhr) {
	context.status = [204, 1223].contains(xhr.status);
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// compare two revisions of a tiddler (requires TiddlyWeb differ plugin)
//# if context.rev1 is not specified, the latest revision will be used for comparison
//# if context.rev2 is not specified, the local revision will be sent for comparison
//# context.format is a string as determined by the TiddlyWeb differ plugin
adaptor.prototype.getTiddlerDiff = function(title, context, userParams, callback) {
	context = this.setContext(context, userParams, callback);
	context.title = title;

	var tiddler = store.getTiddler(title);
	try {
		var workspace = adaptor.resolveWorkspace(tiddler.fields["server.workspace"]);
	} catch(ex) {
		return adaptor.locationIDErrorMessage;
	}
	var tiddlerRef = [workspace.type + "s", workspace.name, tiddler.title].join("/");

	var rev1 = context.rev1 ? [tiddlerRef, context.rev1].join("/") : tiddlerRef;
	var rev2 = context.rev2 ? [tiddlerRef, context.rev2].join("/") : null;

	var uriTemplate = "%0/diff?rev1=%1";
	if(rev2) {
		uriTemplate += "&rev2=%2";
	}
	if(context.format) {
		uriTemplate += "&format=%3";
	}
	var host = context.host || this.fullHostName(tiddler.fields["server.host"]);
	var uri = uriTemplate.format([host, adaptor.normalizeTitle(rev1),
		adaptor.normalizeTitle(rev2), context.format]);

	if(rev2) {
		var req = httpReq("GET", uri, adaptor.getTiddlerDiffCallback, context, null,
			null, null, null, null, true);
	} else {
		var payload = {
			title: tiddler.title,
			text: tiddler.text,
			modifier: tiddler.modifier,
			tags: tiddler.tags,
			fields: $.extend({}, tiddler.fields)
		}; // XXX: missing attributes!?
		payload = $.toJSON(payload);
		req = httpReq("POST", uri, adaptor.getTiddlerDiffCallback, context,
			null, payload, adaptor.mimeType, null, null, true);
	}
	return typeof req == "string" ? req : true;
};

adaptor.getTiddlerDiffCallback = function(status, context, responseText, uri, xhr) {
	context.status = status;
	context.statusText = xhr.statusText;
	context.httpStatus = xhr.status;
	context.uri = uri;
	if(status) {
		context.diff = responseText;
	}
	if(context.callback) {
		context.callback(context, context.userParams);
	}
};

// generate tiddler information
adaptor.prototype.generateTiddlerInfo = function(tiddler) {
	var info = {};
	var uriTemplate = "%0/%1/%2/tiddlers/%3";
	var host = this.host || tiddler.fields["server.host"]; // XXX: this.host obsolete?
	host = this.fullHostName(host);
	var workspace = adaptor.resolveWorkspace(tiddler.fields["server.workspace"]);
	info.uri = uriTemplate.format([host, workspace.type + "s",
		adaptor.normalizeTitle(workspace.name),
		adaptor.normalizeTitle(tiddler.title)]);
	return info;
};

// create Tiddler instance from TiddlyWeb tiddler JSON
adaptor.toTiddler = function(json, host) {
	var created = Date.convertFromYYYYMMDDHHMM(json.created);
	var modified = Date.convertFromYYYYMMDDHHMM(json.modified);
	var fields = json.fields;
	fields["server.type"] = adaptor.serverType;
	fields["server.host"] = AdaptorBase.minHostName(host);
	fields["server.bag"] = json.bag;
	fields["server.title"] = json.title;
	if(json.recipe) {
		fields["server.recipe"] = json.recipe;
	}
	if(json.type && json.type != "None") {
		fields["server.content-type"] = json.type;
	}
	fields["server.permissions"] = json.permissions.join(", ");
	fields["server.page.revision"] = json.revision;
	fields["server.workspace"] = "bags/" + json.bag;
	var tiddler = new Tiddler(json.title);
	tiddler.assign(tiddler.title, json.text, json.modifier, modified, json.tags,
		created, json.fields, json.creator);
	return tiddler;
};

adaptor.resolveWorkspace = function(workspace) {
	var components = workspace.split("/");
	return {
		type: components[0] == "bags" ? "bag" : "recipe",
		name: components[1] || components[0]
	};
};

adaptor.generateETag = function(workspace, tiddler) {
	var revision = tiddler.fields["server.page.revision"];
	var etag = revision == "false" ? null : tiddler.fields["server.etag"];
	if(!etag && workspace.type == "bag") {
		if(typeof revision == "undefined") {
			revision = "0";
		} else if(revision == "false") {
			return null;
		}
		etag = [adaptor.normalizeTitle(workspace.name),
			adaptor.normalizeTitle(tiddler.title), revision].join("/");
		etag = '"' + etag + '"';
	}
	return etag;
};

adaptor.normalizeTitle = function(title) {
	return encodeURIComponent(title);
};

})(jQuery);


/*
 * jQuery JSON Plugin
 * version: 1.3
 * source: http://code.google.com/p/jquery-json/
 * license: MIT (http://www.opensource.org/licenses/mit-license.php)
 */
(function($){function toIntegersAtLease(n)
{return n<10?'0'+n:n;}
Date.prototype.toJSON=function(date)
{return this.getUTCFullYear()+'-'+
toIntegersAtLease(this.getUTCMonth())+'-'+
toIntegersAtLease(this.getUTCDate());};var escapeable=/["\\\x00-\x1f\x7f-\x9f]/g;var meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};$.quoteString=function(string)
{if(escapeable.test(string))
{return'"'+string.replace(escapeable,function(a)
{var c=meta[a];if(typeof c==='string'){return c;}
c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16);})+'"';}
return'"'+string+'"';};$.toJSON=function(o,compact)
{var type=typeof(o);if(type=="undefined")
return"undefined";else if(type=="number"||type=="boolean")
return o+"";else if(o===null)
return"null";if(type=="string")
{return $.quoteString(o);}
if(type=="object"&&typeof o.toJSON=="function")
return o.toJSON(compact);if(type!="function"&&typeof(o.length)=="number")
{var ret=[];for(var i=0;i<o.length;i++){ret.push($.toJSON(o[i],compact));}
if(compact)
return"["+ret.join(",")+"]";else
return"["+ret.join(", ")+"]";}
if(type=="function"){throw new TypeError("Unable to convert object of type 'function' to json.");}
var ret=[];for(var k in o){var name;type=typeof(k);if(type=="number")
name='"'+k+'"';else if(type=="string")
name=$.quoteString(k);else
continue;var val=$.toJSON(o[k],compact);if(typeof(val)!="string"){continue;}
if(compact)
ret.push(name+":"+val);else
ret.push(name+": "+val);}
return"{"+ret.join(", ")+"}";};$.compactJSON=function(o)
{return $.toJSON(o,true);};$.evalJSON=function(src)
{return eval("("+src+")");};$.secureEvalJSON=function(src)
{var filtered=src;filtered=filtered.replace(/\\["\\\/bfnrtu]/g,'@');filtered=filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']');filtered=filtered.replace(/(?:^|:|,)(?:\s*\[)+/g,'');if(/^[\],:{}\s]*$/.test(filtered))
return eval("("+src+")");else
throw new SyntaxError("Error parsing JSON, source is not valid.");};})(jQuery);
//}}}
/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAEsASwDASIAAhEBAxEB/8QAHgAAAQUAAwEBAAAAAAAAAAAABgMEBQcIAAIJAQr/xABGEAABAwMCAwYEBAMGAwgCAwACAQMEAAURBhIHITEIEyJBUWEUMkJxFSNSgWKRoQkzcoKxwRYk0RdDkqLS4fDxJTQ1VLL/xAAcAQABBAMBAAAAAAAAAAAAAAAEAgMFBgABBwj/xAAzEQABAwMDAgQEBQUBAQAAAAABAAIDBBEhBRIxIkEGE1FhcYGRoRQyseHwByNSwdEzQv/aAAwDAQACEQMRAD8A8FG47hfT/SnDEQi+n6qkAhjnbtSnDDDQ9U5UncnE1jQc/TTsbUJAmactdynh9KesiyY9fKkkrFDu2jCchpu7aiSiYY7RjzwvpXVyA2viXzrA9bsUJu2wh6ZzSJQ3EL5elFL1tzTdy2Cn00oOWkOK1tXmNdUD1Wpt63c+Y01dt5D0Gt3C1YKOUcqtcQPF7U5cgEPQaScYJExW1rauiAidedfCH0H+tfckn/ppzarTNvMj4WC3vc25EPNa0enKUmRoaLhK+ADhHtAVohtXDjWF4vTNkj2CZ3754ATjEiL+6pirw4Q9jTUr0lqTqnT7Kd0feOtPPcyH0wlCTV0EDLlyJhpJ5nWAWeG2ZTP5jjfKnrD27HKtmat4J8Bnibi3rh4FryWyRIjOZMV8uSUF8ReyLw7jxW7hoG4TjB0cgZmjokvphOaUFHq8D3AOaRf6fUIyTSpmAlpBt9fos6RvF1zzqZtTKqSe9St54YatsExyDMtKqjaqvhZVFxUtovh3eNQKS25hT7vme8VRE/eipaqER7r4TdFTSPqQ0jKQs7BASbRolYKUTCCGC5fKqdadxtEuWw0bubQNknygJfP9qJNKaDZviujJe7ggLam1comfVfKqzVzF77tC63pU+n0lLtncL/p8UFPQXpCqLg/eo+dpveK7R6VcN74Jlpi1vSX7sEt5oe8MGRztTGaA4dws9ylFBYcw4P0mOM0wyonbdzAbBHxR+HtQIjdIA53AP85QSFgKM4pCOKIrLH2AO4udTL1oZLkrae9JhZiDBMEv+H1qRpK8zYKrHibwxFQM3xoh09DKU0Ag6irmpw7I4Ske3BVG6ZgSopNuEPLpmi7cKkucfLR7nO7Ln7W5sUN3Gwzm46utEqIiZ5c6GZ43gV3LnrgqsS498MUxb5j+mheYLykg9yq8+dPRP6cpmVnooGG7dmSJU8qRvE26nGMUbX+KiZgBYTCx1X9qY3pROOf5K/L+mnw4bkPtwhTTpXI5a7BVaIXHrwDS4FV5VzSbDQyVLuMr/h6URSNqtFmKvMf08qx7xdaa0kKvJcm6C4poPPNJSLncGzTc2uUqfmtCD5ETK9f003lBFVEQmf8Ay0suC1tcmMC+ymxUVEq7nqB8iz3Z/wAqew2IooXeCma7GFv3c0T/AMNYSLrADZZ9SQ3lclXQ5A7vmSotHSXodc74l+uitqbUgs4hXwlTmNcd2C3LUN3+f/elWXulbIutXCI49w/izTluf9O5KgI75ZTJU5SV6HnNIIW1LpNAk5rXwnmXFxyqJWUSc6+/El/8StWC3cqRcFs+iJSZw0JOQ5pBqQSrTll4kTmVbWk2eg4RfDUfKibc4qdIhLOcc6j5aNqXiHKLyrAVi66Q0DqDXd1S1adi98+vyghYq8OBHCprQmrY7ky1hMlKe0yUUIkX0DP+tNOzRbpdjOTeoNvRsZ0dW0ee5knqor5Ud29xnTmr0u0gRIGwwTm5SID98edRNZUPfujBwpWjgA2yHm60PI1zfo+jP+Gda6RtbzQ8/igiJ3rIeQio4wtVhfpN1shAVluXcQyPPeSJhbhbz1VeeE9qGmuNkhZD3/EDo91v/JTeoEuOmE6L+9Qt94u8WLpOC32GCTTElze1GaiNuk7jzzj+lQLKR7cGw7+gU06pj5FyfqVY910OPEOAgaY4o6fkPEiLsekkDiL581TC06sHYr4vH3VysWtoQPtqhC5Hm94Kf4kXklRdov8Axn0dYGdQa5i23T1u5d1+Iw9r8pzywiIvX9qsDS3F7U0KyFrXWWutjb4KsODD7ptSQfqVML3SJ75JV9KDmfXBtoSCOPX/AFZExtpHHdICDz6f7Unp3sxcRoYnJ1/rqwvEgoRB8F43PZUVcLTO9xNJ2S5f8M/h9hYRTw8Yd2wi/dc5zQU3x4vV34jGEdtl+FuQpNyurqvqKYzkfFhVROgp59a6cTtY6T0/aF4qDos7o9fYpJZIc9kcQ9vJX8CvMlTnz6ZpDaOrLx5hvfsMZSvx8DGnYLW+aOEe0Lq7Tsuxw3LIy7bY5uMshG3q+qcsKS4VefpVRaS0jfLPxpjtyLerdqmAgzZLP5bQZ55HPmnvQvB7Rc642aTYXbdE06aTAkw5jrQk+jiJ8u9fpVfJP50/HtWzNd6Xc0JrO1wJVwCWqtXTeogyOOSqg9V5VIw0FRDuFrg+/Hv7oCWvhnIu7P8AMZRFxP1Tp+FfZgztYNP2ZXvhYjEBgm3X3E6kR9Fx69KF9VWLhHrfTUq5aA1QDdytwfkw35ApJex1XCcsZ86ibbwV1lqm0zHNXaedO2xPEzcBcICLdzTuxT5s+lQ9k4W8Mze/4TYZucO9NmpfGbSBv18ZLyH7UVHHA0ABxJHpa3zCGdNUbtwAAPre/wAj+ihtK6sv0yS7Bu9vMhYLa47jmH3o2tkEZitk04mOvrlKG9MN27Td3ladujLwjId2vTieQkL33eaVZNn01p/QtkemXG5BMiEXeQ5CIoooL/FjFamiijl3MFr/AHU5BrtVUUZgqHbgO55Ht7hPrFbSRlALkm75qfXW3my0pNjnA/KlI2C6R7pB+MtPjjoeBPqg/enF2uRIBkBYwOKKa52FX3huSELPXecxls92M1GSb/sURMUX/LU+ZsugvfsouU+YkqHlw7cRZUUTxUY0hR7g4L5H1DHT5x5/amt5vsQYxhtFOWOlPkssEk9M1H3rT0NYxEjiKuKeG26HO6yY6Xv7bctSUU6dcUTualiowpLs5UKadskf4hdxVNv2SCQciLGKU4AuWmFwaoWVfY7sos4VFKusm4RDREXHWun4HFKUQbupeGuk7TwbOTifLSsLQJCWiTYJqonilSdtyLhMfzqKiWIlcXa4v/ipVyxyFNV79f2KlWatA+qzX9Xi/euKOEyqpXbYPpXEBPOi0hdKUa5fVXwmi6qtKNiv6axaG5OGiTlhaWQ1VMoVN20x4VpQeif4qxbSqFu8K0s15Uk2G7xKtOGwRETlSThqxKtBz50uC8sUgju1Ers24ThIILlVXkNJWJwHjXai81q/Ozf2W9C6ssw664takKLFJzbEgshknV9V9qrng/wm1Brq7DIi20ZTDBorzLUgUNf2q1tUaunaMvTNnubcwo0dpNkAHkBscp8qonn7qtRlbK9/9qM2Pe3KkKOJrf7kjbj7K0NR6Z4cXSENn0y8oJbSRtBjs5FtvyVVzhV/0p7B4JaauERuRHeUx7xEkyfiUbwuM8kXr1qhbHr2O/qtyZNZaiR22TxDCYTYLuXrjnuwlNpuq/8Ag7VrPwV4mnHeXc6ZySJrJc0Taq4x0yntUS6jn4a4hSkdXDyWhXhqnhx2d7BICPqCx6ouEtlxCcWMSIyCeu4UVPtU5ofUXZ7szp3nRekbjFWGu556a8449nyAd3IE88YRV+1RHDntJ6PtrAWorZJtbfcq5Llk7+W4aJ8wonNfYaBb92tLJJvzr0DTZuWdAd+FS48niJUwjhq3z5rklT7J61Hsp6mVxY5rjb3x9EY+aCKzmubn2z9VZOsu1Dwz1XGlW6/abuBR0jqrl2kyco2iJ+okQccsIIqqqq1R2uLLqXUmlmtSaEtbjNreaMu7kyNsgG8/MYr6+iYShHirxrsafAStJ2c3Ls22rk64XBrvG2XF6Awhqu3A8lLHnyXrRVwY436b13bV0fq61tQ+8BEOSy8SI6ueprnK1LQ0bqOHzGtx3HP2Ua+rFTL5b3fA8fdV/PiaguMdqTJ1Mod0KNxYcdV8Kp5qucKq+1cXUF2m2V+LcrlIN+MmGu+eVUFP4U9K02PA+0XGBAv1o0Szc2Hnu4hpGc2G4v2Vcc18/SgrWPZm1tKK66gubVgs0aKmw4YTN7xL+np4jT25JTseo0z8Owm5NPmbluf57rOU3U0y4sAV3f8Ai3SFRDnzFPLNfLZqFm0OjcAe70k2rsMepp0o50zwytsyS3Zii7X5shxhZUhtVFhVXwr7YTPWumoOEsrTrattTIT7LBuNlL5YXC81x5LR/wCIhI2qPNPMOpGMjtk8QoUe3asj3wGHbfCWNb7UbG5oXFTCvln5iTyzQTbuOd217qqO5qqVImqbybowGjLTzmeSuqnUcrlajNW6PulyixHHpLPwwltA2uaLlfJEqe1boXh7oewQtL6Ju0+7XyTGR+7vuMo3Fjn9LbS9XNqc1Xpnl9mWx0sdg1uT6Dj5pzzKh2XOwPv8lKNaG1lcv+KNS3luKljtpij8xp/DTbi80GOP1r06UfaZ40cIdS6E09wzmyLneZTT6IcAmu7U8r/d7k6JVaOcbr5buHTej7TESS5HBGvipjPeA0nnt8s58+a1B8KtXDYdWnLu4qrhZJuTGjoSNu45YT3pl9O+VpLhxxbHZPtqGRkBh55uL97q8bhxj0HpPiczw2gCxa7Q54JAtqhq04vQSL1oi1TpkmYZXCw3Bu4RyXwHHXcqJ7p5VQ1t0fbOPd0umrglR7U9Z+6W62zvUR1xFVUV4P1c85x6UY8KrjadDXS7IfEA3IMfCxjaPKveyivnTLovIALD1AZHNz8U82XzndY6TweLfL5IgG5OMJ3cyPhehCtNJUy2k5zNUVC+Wi/XmptB6p0xBv8Ap1SKYqIklO6QVx6qlA1wtLzziONkiIXpyoimmEzLkWKZqInRGwNx6qTaCHIHlIRF/wAVN7rFj9yW6QnIf1U3C0Tmg8GV/wA1M7vEuSMkIivMc0WGi4KBLjtX2xNR3JSj3ydPWph6HG7pUWQn23UKWGBcTlLtFcrU0/CugMqOS/zFS3NG5Ia5NUjMuSFFHOaF+qvs+3OI3yeyn3qKbYuiyiHnnOaWlrcm213CuaURwsa5dmmHldXY5j9qVOPNVcoXl6VDMzbk2/yFV/zU4K6XEVwqrWEXWByzeKbi50oI7vOuoqqplaWbHC8vKjU2uqtp8q192bKWUcJkc1wUHy/lWLF1EP0pSgfNyzXERETCV9Dr+1YsSwjt86URcDlaSQ8JzrhGmOS0nasXY3sqqIldm3cfVTdF3Ls5JS8VvvDQd2MrWOWK1dD3mXbNFx4ujb4saSTThzXgVBIT8kT2SmEXWV+ZbfLVqfFG6qmcl4NxmuMJzzXzhhpKVcZKxwntgABveFDTcqeiJTfWsY4sg47uRbZPwkvNcKv1en2oANYZiitz/KBS0fUrN6bVyfGXKBgUbZTAL5VGan1BKt8dpxqU28LZbSAuar/0qMeuUqIgfDzCVvr6ZX39aSuUg7yhd/IBCVEXaQon9aWI+q/ZJMnRbujGz8TrFL046rlpNJykDbINPlsFPNUTpTq76is96sMuKkGO+bTCDh1NpMrnPhx1qs4wuRp4OR5SqKFkhBUXaqf0xU3bZDciYx8XIbLvT/OPPJQ805edadTMabj4rYqHHBUZee7mj3gCjW1PHvyv8vWm9jKdCuLMi3bkBpUV4sZREzz/AKZqbmxrCL7rcOWrjQFuNx5FTHpjPl/0pm89CFhW7XKIVUvzHEzzRPX96eBu21kz/wDV1qPgJq+56legXnTt0RiZBD/9SQakiDnqifT/AKrmrR4kWfVVzN2Rpe2tS47Yr3zjKimV9SVOaIpKuE88c1rHPCS93jSF8bu0C4PJtAyPr+ZuTkn/AL+VaU4R8WLHdbWMG46iWTJcRG3mgYUFFPRFTr1XmtVjUqUxP8xmQrJplR5gDHcoa1Hw51RZLvGuciCwMlx0XzY+M3qpJywoonkmV5V8eh2fTNumTZWmTmW2Y9veZk5Jpkuu5c4VF9Kvy/aAlSrfDmWOUL4HseEgwJRkT1RV55/2rszctK2qU1MYejznn8tPQ4KbzJfNTAlRB9Mpn2qOZqJe0AC5UnLprWEuJtdZ1YvWkbhc2GrppWNHtz7PdxRt+NziLyXG3p91oK19o6y22cEwrdMCI6p9z8U+RLt8kReSElXJxXLgrNuYTLTq6ZDuRl44Bw9gIvNFFFUcinL/AO6B9KOsXa6yNN6vtMqVCA0KKbTimQoi9ATH9amaeVwZ5gBA9FCzRAv8skH3VfM2mO6yllZYkqbhIIDIRBRtPPKInX2qa4haHs8VyDZZopaJLUdBkSQa8AmqeBCx0VU5r51I8VLq9YtQhqCx2NsCYeQmgdPvDEOmVX9SJj7UE8StWFMiME8W+RJk9+e4lyu7rn396Kjc6VzXDCGkYyFpByh6+2VdOXyHeLW44JiHdpPZBdhu/UKF0z511v8AHmPxBlPThQmDwib8KvPOU9aS1XdpixEspSjWHHeSQkYiwiGqYVU98V0VPjrA61Hc39DaMi6eqUeGHaCVH7gSQEfcNtUtTbtFsM91GhNrKyDP+maMG9aWe93orFCbRpxpVHcRfNj0WqZ0+kwW22xkASo0q7lLmP2WpKDLeetgX60SkOQxJ2yVQua8+tDvpwJNwRLKgmPYVeqNzAaER54+r1phdPjCZLDary/VXLLd7hLtLMguaKCeJEr5cbhMFlV2r8v6aWxMOIsmmngko/gW+dTEgpaN8215/wAXKoXTtymDJ392vSpuddpCBghTKD+mlP8AzJDPyofb+IGUpo3zUlTrS8p9zu/zWV/8NM2bu+k9d7f1Lu5U+k3lO7UjAV/y0og4WmkKIaNtuV3hs/V+muzjzG7nGX90pEL5H+M8Qp81OluEUlz3CL7otLIutAtWXgFM/NS7aDSAn4sKNLNqiJz9KNTaWNVRMJ1rqPP5cLXF3cq+Iir0SsWLuKIq5GuwliuCKkuEpQR3edYsXPFt9q6Ol+lf5UqQltpMl6/+msWLjYKvipywJASEPVKRZFM4p3HbJPp5Ugm6xGXCxty76hbZMjFwehtFhV+9POI+lrxp3UDtoluIbklEcUXV6IvSjnsV8PmdU60O5TIpm3CDvSwnJVToi0XcXuHMjXXEmVcmNjZxmsqyY4QkReir71Cy1rI60xg8C5/0p2n02SahEoGSbD/azk9pm4Az3bTKkyA5Jznt/Zaj5EFiO2rrGEVwsIpFnnV33HRrKi45r1srZFQsstMtKZPD5IiJ09koPumlIs2Y6unNOLGt0X5JEscKa+WV/wBkoiKra92f2Q09A6NuP3/ZVq7GchCR94neD+rnTqwK42085JZRVEVXHonmqU+uNoEphM7lecXyDmI/yp5adCXSW7ujsuqocz3AqoufKi3TRhtyUC2CRzrNCbNjaLooDElt96aIp70UURaIrDwxv1/cxb7WDwqv92HzY9ftTSw6S+Fum52LtLftx7+fKtf9i+fwdsOlJsrWbzaXEBJsXHw5ICp0T0VVqJ1LUjSQ7427lM6VpTaybZI7as6wdKyrRIaZDShOGqbHNzpqqJn08kWiJ67Q9G6vhXbTceQyKo2k/vwQW1d5ZQUTntTHnWh7zwAncRgc1Nwvt5OgLvhAOXepnKYX6vXCe1CWvOGz0i5BBv2kSZfVr4eUJtEG5xeSKir0XrVfGtQzWDh8R6K0M8PSR3MZyMgq6JkC26s0dGcj2YkF2GI7lDCPgqZ9apbiJpQNPymLnbVWO624i7mT2EC+SoqdVT3ox4R8X5XBq1M8IeLFteSOh93abqYZJWvQ/snnX3i3bf8AtUJJWg4smXBANvfoz3ZPn5COeap5qWKgoZX01V1Hpvg9iFPS08VTSWt1dx3BVF63u96uTf45It6Xh2OKiT0s1VzC55iqJhFSq9t981JCkhfrXMfAYvN5rvV6Z5pnzq8JPCq9abH8N7l3cjWVBQRBz549cLQHqrSktqWfd21xXkD/AJgmWcoSeSYq20ldDILNIVMrNLniducCiPhzqEpcEdVDq60KDhqEi2XKMu5FVeuV5InvUvxp4a8NdZabclWwYZTo8dXDC2GigKLzyri+efJKpmVZJ0O3nPbeKM064idy+OENU6og/wC9Tek73doJja7tBQWEPLTDIbW1bxjJL5rzon8OfM81rsqPdMdnlvbg/wA+SqSHZfjznwXiAnUZNPzOf8lqM0vh23yLW/uZlt+JrfyE09KsbWVnsdtusm92wXzaJxUMBDCAq9MetATaR37cWI6q+jiq0e7p7LUwx+9t1CPZsdZJuoQ2FudbpJKe/ZsXkqeqU90x8dbScjqyqA6OTHouajIrm9HnWyRXGi3ON9Me9SD2oiUwJBxuVFXHTFOlt22SWkA3Wh+FVwt1x0w02HjJA8aL9K1P3C3W1WCVyPhVHw1Q+jeIVx0tqZiUwKrFfwhN9EX1rQ0W9WO8WlufHFFEwTHtUdIHxvzwixse1QlitdtCUqKymNvhqWm2i3k0WY6/+KuWR+1LNwY9c1MzDtKtL4sZHw0hzjdIY1trICZsFtWcu8OW5aUuWmba4yW3PSpdlLW7PUSJMZpzNt9vcAhCQPIac3vFklrWqt00vFW47ULlmnbmlIymq98tSoW2K5dNovJ/e/qqY/AGf/7Kf+KnHykJsRtcsQgSJ9lpdrJLzrki2y4Tii+2qY9q+sBhfWpUOachMEOGClkTI4WvtdhFMc0rgjz6otbWL60hEu1KXQPVa6sj509jxtw7lGkE3WJmQoPnSe3xbak3ITapyFKbPwupAPSsBssSTI8/F5VIQmxccES816rTJkVReec1L6fi/H3SPBQc964A/wA1puQ7WXTkQ3SWW0uxNowdLcLXL8jOH7g9kj2/SnJOdWoHCiPf5J3KDa2jcc8Tm4P/AJmorhZb2bBoq22WNjYxGBMD64q4+Gz8cT2vuYVRTGzmtcuqauQVj5L8n7dl2KhomMoY47cAfXuq/k8ArCA/HXW295MX63ms/sieSVm/tF8JdbR8WaBZWhaI8mdtRTcdyvy+SAiJXobddKXS9xEetc5h7lhe+TCp7Jiqw1PoC5Tb7+E3y1g1HEt2/ZkC/fz+1KptYMcm4/dM1Wksnbs4usGaF7Pt+1FcW7a5p91pjdl0wFVyKeSF0VfVc4StI6Q7JLkWwF+HMI068H5ykOdqdE5+if1q/LRwy0/b4gSHRGS5y2NbcCKJ0RETyozYj5t6C7FaBAHwoJdKD1HXp5iNpsAn9P0Omp2/lufdYog9jwIt6lOX+OvLJg4HgwqryJKt3hv2LOziFh/Fr9+JT5wkJfEjOLC/wo2iomfLp71et80PbNVxxmyI6b8IOW+SKlP+HvDO12S6Nym7cLwC4hbHncgip0XFRc2t1Ujdu8j4KVZpFEwXDRf4KzODfCjT9q0hb4rTZ263RwT4aC+0iGmOaLlOn3zUfxO4Lad1PNfJu2xnNo8iEETn6e1E1ulkLAC88qqI4EB6f/VOpbhPNbjwibs+DkiVGunc4YRDKctfe6zVe+yfMRwXkGC6jZqrISW0c2591549qfaL4JPWAnPxJ9gwM/E2xGQUVPv1q8p4NuIjqkqomVLw9aH557D2gqbs/ahZKibglSAY3YVT3FvgNapkIbtCjkbIHl1lATcKdFVMVRuvuA7FpYJyJIJdwf8ALuKPNE8kz51sNXXlNY8vHdFn7VXeu+Ho3SPIixiVG1JSjmKZ7tf+lGUNfNC8XOEDUU8czNpC88+OXBS6PWV+4ARobMhGxMi6j1Vc0LDeZ1uOBIuzqLCdwIEYYREwgqq+a86vbjrartZ9USbLcyEwaPJA78h8uS7aoTiKzdJFnbixo6I0JmjQAirj1x7V1jSao1EDdxuuUa3Sfhqp20fuovio+MeQEq2S1eaRE70GflXHnj2qt7k4jQDdGEVHO8VABE+YF55o6jMzNTWgSWU3GKEO1whDmae6UM6nFyLbGpkdsFi71FcB42zz5+y1PRHb0qtSjd1IOkTJTUoZ5D4Hl2mQ9a7tOSt5iAbxT6M8/vUhIjR5sIhguAYFzwnktQzD0y3yviDRdqeE+dFDPKGyCi/RepLLGcAdQWk5aiP5OD6VefCO+Qbmy9ZgbVtEDvGsFy59azFInCzJGRb3vCvMfarS4M6nuRagjdy8m4uTpeWKEqYuncETBJfoKv8AsVgEpe7vE8/FmpqZYJBx1w+nSmVjjqbg7XUyo5qcfiyFjqIki+X3qPc92E+1jcoJTTcr49RQsru+laXuFkuDbSiI58PhqSajSknYEs8/DTudHmCyvhXNOF/UE21osVXUe33D8X7vavI6Khtc/amWF6fpqLd+KC98kX56LAcuCgn5ZdP0Vqd2Atxt6iqN4l8AXIauEMfGP4KpjUOjbhZJJD3Jbc/pr0n4lcLI8rvFWKi/5Kz1xQ4JsopupFT7Yrnvhrxr5oDJjddt8V/05BvJSixWShAgXaXJUr4g+LKJzqwdccN3LUhOAzjH8NAbrBMvK2Q4VK6pSVcNXHvYcLiVbQT0EximFiu8ccrUvEayCL//AJqKj7VJOtTtsDeHLFPnhAjK4sTkhKNJPxfy1JMfNUkbO5PEKdKazEFB2Jj/AC0gOKUQocmsuL4aL+DFobufEO2RXS8PxIKv2TnQ03FJ1zKfqqx+zxbxPiJCJxtFUMkO71xTFY/bTOPsUZp7N9ZGD3I/VbY0zDecjtMxeqY/lVl6FeKFLFlByKlzIh5otA/CiN8Wafk42j+nrVt2HTMGRJGQjaga8uuK5HVzFryLLt9NHuaLKwdLzBNpsRLCpy2iPWpqTEt87LM2KB5HHMfKoiy2SZFaEYzyFywolyWp6NGJwl/J57etRpfvwEQYwHZCZS9C6RFoXFjuCW3G0DWot/R1vBdzT0lsf07uVE0tdhC2HNf0iOVptKccbyfckuP4cYoGV7ATdERxAcKLhJDtzSMiXeCnmJU6GbDYJCGQrfi+U6avOtl+WMMUJS8JbaTRskXCCJ48i8v50C54RzYW2uiW23SeJc8GOMoueeKkWL4RkjYuc0+YemaEYU9yO2rJuCJ7VXapdUp7Hu7Jqoq2iEPPvRLpWB9mpD2EPuiV19yUpNubVU/JOSYqKuEdUJUUsFt+kaTjXCOJI4rxKv6iGkr5dyUjEETI80KlEgtumhcn2UfMkZEYq813+lR8m4MxFVt4sJ/rTWRdU/EHXgfVUQcCW7klQGpb8rqbWnMKmU588rSYw7ctOF1n7tu2EXXQ1XFjqTQ+B4wXC56otZUvcsp1tQYMsWzbeyROO7FxnC5StkcVJEfUVik2KQSP95uPuccx9qx5xE0tLkX4FZIVCSKBsEeeR5Yx611Hw1K7yNjuy5x4ogtIJG90EagCRaJjsqDcG3G3BUTBlfC5/h9fvQnMuBPPyUSGvcuhux1wvnmii6vjaCK23KO40TRbSQm8qWOmKCNSSRtk45kIjFs+fdmWcZq7wjcqBN0uUcVoGMSyIT5N7lybeMp+1RyG6Uw4UhE2uluRdtSUZ55xn4hjxDnKgvWlEj2qfKaZecVp3r4un2RaKBshbXyoSVbfgy7xgeS/0ok4Zz3oupIzRjncac92FSmh2t5uabJoqInzCXnT+yMx4l1YlA5tEDTwl161qQ3YUpgs8LVWn/jnWWZACSbgT5anJM2Y3F5OGnh6VEcPJLz9hjuBlUVpNu4edET7p9zuJpPl/TzqFLmlyODOooTZulwaum7efzc6mZN3ldwu9xfl6F50zR4EuG4mx+epeQTJNeNgedLc5uE2wOygGdeJQ3rI8snn5aLIt7kdwPeLzx+laHr0kcL13iMpjNFEJ1j4UPyU6VuQtLQtRh24rWmqbJFlbl25qp9faGGSDg/DIqc6uJ9CcyS+dQepYTciMWRyvrtryHp9XLTSixXu98LJ2ZCxlxl4fNsR3SFn/wAtZi1Zavgbu43txgq3XxssYHBe2t/TWNOKFv7i9uIg891ejPA2ovqItrivNn9U9LjppmysCDgZ2lUhDIgREXnike5LbhacQ2yXwrz/AIa6QTdcXHKd/FEqcy+muKyRrn1pRmLuTkNOmIKmvPy+mm9yWm0aL4t23nV09jjh9K1bxFKcDf8Ay8CMpvGvRM8kqqmIGETdj+GjvQ/Gu5cL7CVr06Ksq8+hyXA+ZzH0/agdQbLNSuZHycKR02SGCsZJJ+Vuf+Lf+iLDDtkLvG3ENBFFHCUeaUlRwBuQbuCRfl9ErB+g+3tKtkc4uoI/hXkDiFnnV6cKO1pofVzTXcXhpt8wyYGaZqgVejVcTSXNuuo6frlFO8Bj8ntwtg2eW2SgYECCgotSDa96rhI8iKReEAGqc0NxIh3OOhMTBIl6LuyiUTN8RkiTmWZW3e6WB9sVWHRujeQrKXb2hWCbQNCmc7kWpC1b33VF5E2oPzZ5J7UGtanGaP8Ay7grj1PGalbNe8B3ZObSUty+f8loKZoL8BPwuaGZRLNtzO8GyZbVOS7VTNJS9LQbnHFDt4c18XLz9UptCuDau7nHCMlLl4elTrE4SYUmyUSx4fvTHkh2SnS9rLW5QzcNK25qOpE2veB4d+3/AGqAuEFyIiOt7iVV8SIOKO5MeQ4hOHgiVF+qhu7QXHHfzERMIqptodzHNWnO6lDhLcZbVt/eIF1MPKo6+zdwJ3EotnP6uSpT2QSg5tUev6i61C314X17nkO1cCA02DdKA6rdkO3i4zIwk9HcHu0NOqdftUBdr5HjF3zhEJEKrjqo1K6oaZeid0mPAufSq01nfnIUYyN0SEEVW3BPKj6pUpRw+Y4BM1DwxmEJa3vMmJcJcgHkFWhVWi/Wi1nbV2p4dwur7cJESU08ptbSwuetXDf7zD1CzJuzZAgNCYKqnlc49KzNxEclWzUxuw3E/MBUNfRfWulaLAGi3ewXNdfqCcjglPtY36Lqq3ktyh4NrwyXdniJPvVW32xG2IvQ5wPRkzsQy5ovotTrt2vk0Ti4PvERe8QlTxJ7VBSLe8bpSiA0Feo1boG7G2VGqXeY69kxjMzGF2yIqI1s+jmmK4MNnv8AdIJEROYEnNVWnUVyY8/sZIUTyZLqlJSxlRTUZIkyJFz286JuEIpt20jcraUoG1+IAMkW7oiUNiL10mhBBshcE02mNFzUkktjQ2dnvEMdru/qSU80Ro9ktYsMrHVWzVFNCLOKYD9oN08WXcLK8eFU6dD0tEZmHuIQQd1GDl0FWkI20/y0P2IYsFkY4YwP9KlCcjm1zPl9qjHDquiW91FuXVr8S5t9TSp5yRHdjo4jaJ/hoUnhFSepIWOdTSIJRU2O9RylLe3pBTbSd5Q7qeYy3cU2DjxUQ2mcwcBsu76p+mhTVLTazheNz6qmbIrX4a3lzy9aW5t2BNg2ecrbpNiS5WmN6iNnGLA9elPVcVEpleJArGVd3LateOo4/wC6F7vjmszKpPjLbWVhv+FFVUWsV8YLU6N9cIW1VN1bU4wyhOO4u9PlWslcSgF28Gi88rnxV3nwAHRi/suD/wBVJGSxNHuqpOC8H/crS0VhwfmbXCfw0RvQWyXk2vzV0G37l27cftXW/NaQuCbHKNit4RPDT5lsUTKj708Zgj5N0ukRlETKc/8ADWt7VgFk0bEEXavOuXbSsCdbDvUqSrbLXIi3YRftTwYYkqInLNEGrtDyLvpC3aejmQOyT3CjaZUs9KYlmDSM90XSwmXdYXsFTl9Kxt4CLdjHHRCVP6pTbTerblaLmEyBdFAhLkYFijq/cCdQaINq6Maa+NNjJkE5lSbM8ctycsp7ZoHZ0ncpl3fnX2OEd2RIJwwZa2AGVzhB8k8kT0SiI3wSt5umZIqiGT8titq9i3jVedQsLaJ05HXWhRR3F/KtX6oeed0WxcHmEGU1g0eTrj0/esGdgPScmbxNnM2p112JDgd4+QJyyq4FM/stem3D3hJJ1Vw+bC6sor5ImNq//PSuX+JIYYK+7PjZda8O1U8+mtMmbYv8FSszjlB0yoQ7lIRtUBVMzPpj/wC6iZnbx4c6eQYlx1E005tzlxeZfamnbN7Nuq2Ij900053S4VPm6f8AzFefXEuxyINwciXy4KLrJKhJu6U7pGmUGodT3G/oEjV9YraRt42C3qV6V6N/tCOE0l4XA1fEVVJUwrycqt3SXa34X6pDvLVemHNqJkReTr9q8Qhnx7TI75qUDvoJEqJUxYuIuuoLwlZ7u80CKi4ZPotS83g6BzbxOI+KgovGc7Xf3WA/Ar3esnGLSd9bEo90jrnqO9M1ISmotxT4iK8igo52ovKvHDhX2m9f6W1C1Kn3V1QFETmaki+6p0r0C7OXayg6lgRrbPlIZGCKYmeFRfZfOqdq+gVNAAT1D1Ct2k63BqN9uCOxV33eC3FTvCHcQ/KKFlVoTvToq8Tqom7qI+lFM/UVrvNvF5kc96iqIoSLj96DHmSbuKiryKji881WNtnKyxlrsoX1YzcHmcDhPPlVJ8VBmRFcZeJGwP5/L+taWn2mHOQW2eflyoR15wng36ITCpl0gyPoq+lSdBVNhkBdwmKuF0rCAsS2q/Fa73M0nOHu2pZH3bynlcYXFV5qKNGuDkiPdSQTHIoRdcpyRa0Vxk7NWpElrcWbQjMhkfA63zQse1U1rvTKPwCi3aKjc0eREIqm5fWukabWwSWcw/Fc21ainZdrhjt/xVY5aRRtCembHmPCo7ef7e1Ikjcp5Y4moHt+tOS+9S02M5Z3PxGU9v2eDYQ/MnnSTD5Bc23mopG0/javlVnZJ03VNkiAdZQFwssGG78RLkCpDz3NZpnIbeu73xEBlx5Gx+bYuKsRqwabKYsxXVAA5ug7zUl9ESpLTFv021ISRqGQMSGhKTTQhnK+9L86yHMF3WCrXTbjg3Btp1xWxDmqhzz90q2OGNmhrMOdEloYdd6pzT2oa1TbbJbWHrlbG2XVXPduxy6ovqlFXCmHKHTIPvIgqfPbjypuUl43BKYNmCikrg2w+oq5lVKngyCNpSEsJUMUMUk/3iki86fh8Q2O0OaUgjCTc7kxukoQleIuVTDNwE4okD30/L+1Dd2Fzvdx0rFlOCwhJlfKnC0FqaDnBy+aomNd4Jd5mnlquUf4EMn/ADod1G46fiXCc/09aUtrmIgplKeDRZNPLty9NL5we1LaxVwzzt9qrbXjlysjZNyRVETz21triHpZlqO4KMp0Wsm9ouLHtkOQSCnLK868twaPaoA5XpKl8bSkbZHYWWOLGou8ad3Odcp81Z01UvxdzPJKtWLxb1ajT77Iv88r4apybdpBSjcRzkpfUVdu8MacaWC9rLmXjHWxqU+1puEusLKZ866pEVEwnOmhXiQnJCSuw3UuW4UzVtG5UPpTpWCRPlzXO6NV50kV0+vbzzTy1suXFxPy1wvLw1sucMrVhuXIEfv5rbZByI0T+tXXCsDMJY13ZiEaRGhwZpyzigjSujWznMPPML/ep19c1qvhvoqzXfT4wnIqKhcjLbnnUBrFeKax5Vs8NUBqS8/BVRdO0FpmJaktV80u3ILZt3k1lap/iFbbPrZxJGjtFuiTrqIuB+ZVXkiVqDWfZj0qcj4vuXDUzyvolS3DngVbrTfIExYYgyjibAMcqSp51DN1eCJvmRk39FbnaRNPaOQC3rbKI+w92aovCXR8WPNhp+I3Q0fvBoHJOXJtF80Tp/OthMRYenreJgYtgDSbBBcZX3qv+HMWGxLb79rcLKIW7HhREoi1ffGXCRyK2pCI5QM43F6YqmVdXLVSulkNySrXSUUEELYoxZoUDxigQ75YXW521xHAx05Zry17bfZ11RbdRlqCBbCGO8Zr3y8hJM/616i3bdfo3wj/AMxhlUVc7fagbi7wsZ1BpF7T823g8JN7myMELK+lEaLrMlBVbuyB1fRY62lMZXivJ0vfPi1gwbW7IPdhVRM5+1TV80pa9IB8TNlXJtAtCuD8GAoTkpU8Ikp8kBF+ZU5+nOtcv6Qs/CfXkpu6aNb2Ou7X2ja54z1T2q2dCaN4B8TxH8dKMrKIgJDfZBRQU8ufv/pXSB4oY0Bxb0rnzvBUjmOs/q+C84tG8QbwwQlLhtShHw5IEX71f/CPiBD1HMiN2G8LAmtkiHH343J6jlea1tI+xr2arrHNyzafswmjW2OLduFMfy9aqLj7/Z26PtbEnV/DCY7b7pCjI7Gjw0RGzNOeMUHVa3ptcNp6Se/I+YRFDoGpad1BwcPTIPyPqrP4TcWb/aIzbOoJjjrY4TcfJP29auZu6W3U0Rm9W2SJoSY2iSdfesxdnq/SNQadZ0nr4HGLmyG0iKMm1zH2TKL96urRUC6Wj/lbRaXmWNyq4870L7IvSqBqcUQmNhY/ZdApJXOYPSyLoSuMXEGxcwoj4e88vdaeSTkigk0XeKhY8fKmLSxUuCPK8hEuE2+vrT6TO7pCEhH+EtvSoJxAOFLxNa7JUXr2OyVq/EpDQd4PLlzxWSe0DabS7OKfHioy+jnjROSLWtdWTWXdPv8Aft4FG1VSx1rKHHm0ypjqzG5SIhZQTHn9qtHh2V3mi5wq3rsTfJcAFm7VrbYSnbe22pkRruTHIV9aZ6clQ3LQsd1MvNEqIPQqU145tuBNuO7JAFyeDoXrmhlSvEe4gTG7eR/MHPNdThLRELlclla7zjYItltOIsebFt7very8a5Ul+1G9k7LPaG4l2Rq5aa0WRgaLtN8tg49qLuz9wuJ2bH1Vr0RkRo7SOtRtnU/f7VeWseLXFa4aeU+GUoILEQPCw0zncietVjUtflhlEVNYkck8fBXnRPCFPVwedVlwvwBa/wASsd8QeBHEbg/am7bxB025EfkuY7xPEH86NtK2MoGlozUhvbllNpp51fei+Klt7U+grjwv4mQ2vxyGCkw6o8yVOip6dKqibaXrWyVjlESLFNQwXlhcUdpOsvrQY5W7XtObcG/BCg/E3hyPRZGuicXMcMX5BHIKH1iNtyN27NOwJnGUJOlISI2x5Npf5a4+EhlEVlE5JU8HgtVOc0gqNv4gmC6r9VIQi2x1QBz/ALUnfDeM0F0VpSAhBF+XNEAt2pg/+ijNRCpB40x4s0jAdFI6J70rqNdzK88VFRVNGsIXnTzOE2eV+gTimcNiI84bgou1awX2zdaWm022U4/KBE2qgpnnWge0Rx6t9ntcl1y4gggi899eXHa/7Rz2tb47aocxSaEl3c+Vcg0LTzV1IIbgKx1dW6MYKqjiHq6PcZrrzZKqKa0Du3QSNSQqSu97+JNRUkWo0pbReSV1enhEUdrKAfI5zr3UoVyFF/vUrg3Qc7VLn+qodZLaqv8A6q53o/r/AK0/sSd7lONXIV+qrL4Y2pu4904o9cL61TTTv5ibT51d3A2WIo0BGiouE8VDVLdrMJcZu7KuCLpxu26fScjaIoqnPFXjwHgTnLQu7OFLO371Xku3xZegXnu8EdhCXze/Srg4NS4rVoBsG0Twpu9FqjamfNjsfUrpPhK7WOt7Izi2Fh+N/wA2SEg86ZRWX7tr632GA2ItstG6Q+mOSVLLcghx3Zfd5Taqj6LXOADZaz1Xc9UDHXu/BFYXyTnzVKqhj2sdZX823tKsm0TI9mbCKMcVXbhdqYWmNxuPxE0APmq8930inpR1qrT8PTqHajj73Nifm/dKD3YHhdMAAUH5FXonKox3QdhKKBuLgYTNYUWC6siP0ReqrT9/8NWEkxx0RJeQKfOoOV3jajDOShog7zPdzJfSmGobyLVpTCIhgHy021jS7KMDPMYMoW499nPTvFGzBfrfHYGeI4y1yUvutZwm9nXVNiuBFb+8Zca5GichVfWtUaW1wJNlFczky+TzzRcxp20XWIsmc0PeOCmcgirmjYK+eAbOyBmo9pJssv6Dg6stpiy4453g43oJ5RKtiDo6ZOZCRKvwkph4D6oPsVHUzhPpuU6jvd906JJ+YAc6cLwxs8UfioEhxtfMt2UX9qHmqC83smSwubZVBcOzurF5S9Wl6OJuFk0PKtufZUXKLUvE0Y3am1g3S33NhdvzN3IibX7Z6VYawQKGsUwICRfAadF+1JNJLjRTSe2riBy3LzylBGomk5Kcjbt5CBbTEi2+Sfw0dcCOBIyVaknF3sd4ZeIzwqUndpEdt115tpE3LlMUwcvsVhne49lRHJFSSxxypBtg26b63mNwbMgqaIm75V86ydxW1rBekT7LCEweR/cAY96t/jhxVj2kCt7TiK4aYDaucZWs3z25184rEUjJNCKbx3czWrpoFIWML38cqm6/UncGM5Jt9VXd10LqLVutWrHbLaZOyue0ee33rR/D/slWWwaet87UUdXZLeDLeP1+nulWf2QuzbOv2pXddamhNMtuBtaRBztH7/tV7ceOGsW16MXU2n4u1qAioDSJ8/L/AK1vVPELpJmwRGwGD8U3o2hwREyyi7nevYKvez3wt0fxLlXOxw5zCPQ0Rt5kMZHl6VbAcA9A6BsD8dmCi5aXvSNKwJ2TeI/ETSHaRu0pmc8x8bKUn21VcLz5V6E33UU/UOh0mSk8ZteLb5rVe1Pz6We264Nj9lcaIGSMXFhcj6FYcn8Orjw/7UDFysjStRZUlVDZ0VF6otQXGB5uPr25RVMR/PVdo+9aP1rZYbGp2b/PjpiIyTimQ/LhKxzxE10zfta3G5o5kXJZ7PF5ZwlWfw9JJVVBeOzQPuqr/UHyIaGJg5JJ+2Uu5tJ3k5nzWlDcJQ5CipQ3G1EKP+NzNEthebmOCSGKotXR73xDK5CGte5QN9QnvFtQf96bxZD7TC7OdW3Z9NW+a53b9vaPI+LemaLIHB7SMplCkafYNVHBFsx/pQMuuwU+HgouPR55jdtlmPUUh55rnlc0yisOm1u3+daI1twE0WYKDVqVkl+VWXVRP5VXsvg9DjPkyy64Ip0TdRlNrtLKy4JCFqNIqo35aoztK9vi4cQhctdlmELZKu4xLrWZ7zrd65PnIekKREWSVetBBTJX1OL/AJq+LJdXqVWCj0uloowyNtgoZ0skhu4olK8Ka7nHM10W6YVfzP8AzUPDLe+pa58U5nmXWjfLakIgC6Kq8ypUbjnHjocScS9CX+dd27gQru3c/as8tqxErU8ULKlzqzuFusRhvtCr2ETCVSQ3Jc8iqTsGqXrdIRxXFT7U1LAHtslNe4G63BZdeR7npN2CUrkgbtueuPWrg4N6vFyEy2sjwmCL4fKsD6Q4v90wkVyRyLl4irRHDLX7lq0rDugPKSEzg+fpVR1bTi2LHqrz4S1IRzuY7iy1jq/XcOBpp/unvF3SiGC6qvJKsHgVPg6I0dEtckiR2QjbhkI/0+9Y1j8YXtV9xHbjmQjMbI+WUVEXP+1aE0/xPtd1GHIV4BzhMbumKpNbSzQQEWyV1GCeCpkG03AWqdUXhzUYBeBdVVcFG0Zx0RERMqtDN0jzG2XG1Jemd2OS/ao2Bxg0jbtMMNzZGTFMiWearQlN7VXDFu8rabprK3tPESJ3JyRQh9sZqCFM+XqaCSpAyxxCz+FM3SxX4o5TIx7lEc7B5ZoJ1nPnBC7so7gkPzLu8/erPh8RdI6gir+C3Jp4dnzAec8qidX6RfvGkHLgy3gGsluEevrSdt+3COZKxtiFTOj79IbvbbkiWp4fRFQfSr+sUkpKNvCQoKJ8vVaz1ZYzcW/GrcNTwXLxVb1ilzGmGjaJUFQRSTPJF9KVIByEqcOJCOX3XnCVxrKL1L1JaaS7kUcDceeJOiqhDSNtuBNogmSEpJ4hQuS0neJMU4LguqKOFy9lobbuF0O8NAwk5d3EBVwyQUVPD/DQze9UuH3sNsiwX6SzmmOqL28DCsi5gm05B60Mt3wpRE8pqnL9xpBiu3CQLEXKlXJRuibJsqiCuNxF196E9a32DaobzvLAIqly5LX28azbhIbbpKgbM7qqziLrcbjvt6vYE/CgIXlRtHSPmeAmKidsEZcSqo4jannalvTMkxJBdl4DZ9IovVakuF/D+9as4lN/B5cYJxMnu51Guicy/PMNx2nG2kUWGgLqtXr2arH+C2org5F/MIvm8kT2q01lQKGiIZzayqtNTur6ve7i9/otU8NIELTOnI9thtiqoCISJ50X3gYutLX+AiIqIp4w28qrTh5q6G7KSOXNzHhD1ow4WvaqnXCZInWlYzTjy90RjzxVBa4bnOdyrZFEQ+wWf+K/ZhtGh+J0PWlhii25LX88ET361bsoXI2koFrVFQzx4aleJ1tFm+/impbg33DeFAc9KH5+r7O5HkazuhJHt0FlUZ7xcbsedOudLWPDRcngKW3xQw7icDKq3tR3iHYOHtxEHcTpwKxHRF5ii+dYFuugNSRHCcYe71V5lu/61qbiRxis/FTUEhWiEmGzVI4KXVPVKqLiC4Ond8z4Ylb69OVdf0DQqjTKIF463ZPt7LhHivxBBrWona7oZgf7KpqWxqK3HukQ3MD9SdKI9GaocYfAXXMIheIS8qm7XxE0Le0+GemMIfQkPCLmnz+htOX5vvrY8AmXyqC86lpWEt2uaqyxpvuY4FH+ib33yg8jiY5dFq5dNIL7AkOCRemKy/arDrTS6/8A425OEGfCK86OdJcXtdafD4aTKawvk6yi1VdR0WSoF43BTlHrP4bpkaVc+p4YyR293zxVf3SAyzNMVx6/LXeJxuukxtW5cWEqry3YVFWoW5a5kSJhOpGZ5/xrUfT6VVwtsf1Rk2s08zQQvOBYBr5rXQohIny0SHbhReY8kpNbYJfMKV124VBwAh74cupDXUo5ImcUQnac+nKkite76edZcLagVZLyr6LSf3fSpk7TjoNdBtXmIVtYozuVRNq5rnclU7btKzbo8jEVtVVfqxySjCx8LGYIDKuCbi/i/wBkpt0gZysaxzsAIQ0hoq+ahnNtxY5oCLlSrTuk4MeBw8YtMp8geb5bPRKj9AWbTul7StxuDYbhTO3zSkNQattyWKRObLastVFnyxUVXNdPGPipjTJW08xPsiWfxk0noPTowYbad82z4jDqp+WKENP9q24uGsfvH2TAt4GJclXPRfSqvvcvv0cedkoWMgBf7pSGl7Q1cJcWKchWgkOoKuLzVOeM00NOpXQkPF0fHrdayoDonW9lqxvtM3a86JWHPuD8d+QCAybWVMRXqo+i0M2zs46F48anb+GOJahaIRN+Y9/zD7ir1VevXK5VagoVgi6Q1OBA+6jYbG2u8Hdyx1X0ytGlvft1i2zF/JfeB1xRAFUydTkKp9sr/Oq+6nZRuIguLq5Rai+vaDUgG1hYha97PnY/vvBiBBK4cWFlW7CKDRnlUTzRFXrWqbk5o7/gr8FgEjm+PhC3cuaV576N7R2rLrHgabv2oFB1IbQMJuyqc8L+64rR+huKBRdOxrbPe2ubciamiqtU6thex7nPGSrtSyNlhaWnA49kD3m6RLTrKTbTkbSF5URBGjTS1+R2KrkmTt28g9KrLtI6fuCzG+I+kSQzZ/8A3owdSD9VN+H+v3JlsF4iUsj4wIeVRskLjGHBSrZ97Np5Vwt6vji+KBIXcnXxeVI6h15FebBgnlDqv3qrbrrZtyaG3wmBfTXSVqaTJkC6W1G8ZzuzmmW0zgtucA26I7lepDshxlyQiK4O4c9aFJ2unrVIOGTm7IrzUeeai7nrOIlzLupgoYfOuelCOsrs49IUYHeOERKpkPpRUNMXvsQgJahrGXT6468K7XCRb48hFVttVNTHklVXq3VMhu4rHYEHO/HwmfVV9KJLBartKhSpDTJC5KBfF+hPdaWtXDKwOWf8WuUhScH++Pbzz6JU3TGnpXG+VDVbKmqjaQbA5+S78J9PW+8D3ygKOtHtLZzyq9edaQ09boOm7A2wjYiAhkiql9A2+y23UcSBaV7qKgoTni6rRTxd4oOW12LYdNxjeVTRXlHyCojUfMqZw1vHKk9Njhgiyrb0Hp+4Tbs1dosomx35FB80q/Fvkhi3xmT2phMEQp1rOfB7i7pmZEYafngw62KIYGWFSnfaN7d/BzgRol6XetQsyJ3dqkaHHNCcM/slRMdBU1E4YxhJOLAKTrJaWkj82R4DRySbBWLxITSLEd/U+tLyARYwKSi65geVYW7V3bH/AO0+aeieHjysWSISibrZY7/H+1URxq7cHFrtJSytrk5y3WZDXZDZNcmn8S+f2oes6izB+bxJXU/C3hFtC4VFVl/Ydh+65B4r8bOrIzSUNww/mdwT7D0COtMahfCSjjchd3n4qN5d4jaktB2u5Khb2sCpJzzVKWm8/Dytwuf5SKjOzXxyQgF3vX0roJzhc2HCqjXHB7V0fUT8qy7kaU8jimNv1pxK4bOj3zrpNiXMSyqVoRbu444MZqOLrheWKJrBwFsfESOn4/AaRS/h5JULNUmOUte3CloaUSRh0bupVJw87W1tmKEPUDaCSKm5Vq1rdqjRuumR/D5Te8+viTNCfF3+zzxFO6aMcUXE5ojXSqLlaH42cHbp3z0GUTbRfOCL0ocR0lQLxusUsmpg6ZG3H87rS+pNK3a1xylW0zcFEztFaAZ+vJ0KUUaQ28Jj1TFL8HO1FHu7jVh1e34tyAveDgv/AHq8E4KaS1m2GoYbzPdvgij0oORjoDZ4TzIoqgXY63ssGk0JLyFMV8+FyvKuwlz2onOlmhVV5pVlUKkfhf4Er4sIUXmP9KkmW848PKlCjNKOVHrWLFClBFV2qmafWDSsq9TRix2cp9RbelL/AAhE53bYqSry2ilXHwd0MEGyuXy4NbUANykSe1NyyeWxLijMj9qFolls2hbZ8VcQANo559V/96g7Zebtra/oMRtWYoljdjmVNOJF8kay1mtvZNe5B3aADzRPei6yW2Hpa0J3LQ98Qelahjcep3K3LJbpbwumt7r8BACx2/muPzS6qvtQJrLU05i2txxbQBbLwe1G8WGF2lq6+WVIvmVaHOLelnYcMHix3alhBTzp2VjdoTcbnBxt3UHBjuaptTTjDf8AdNL3qolEOnRsMezC2jglOYkopeoonRP96kOFdjENPOttiikYZpGStntl2Vm5RPhniPxObORpUXJI4ktCsNLRF8bZLjPqpC2a2vU6+utuETkaS624Pf8AzEQLyx6J/wBKN7lqe/SLfP2iIyW2mkAnQy4ILzTGPNc5qvrskNHGpUJzebRITLY806+dT1q1HcjSVeJPdnNlgZGZl4RwmERE/wDnSo+cMeQbWUnTx1ULnNNzdWFwj1JHkSAvVzdTvorgnudBPCgjyyn8quKPxBlXo7fcrJcBVxsFdktovMkrNujJd4lT5jjDYCjsPuz/AEouKktK8QNT6eukl1YYOObNimZchFPT71BVdEyokLgcjsrNRahPTQNa4G1+bLUwcbCkRCmSQbJQVW5LOU2kKdV91qLfvtlsV2Yn2vcMC4GgughY7k1WsqXritqiL8Q+mxGnXMiiHlR5+XpRvw546x7pay0zfpREvI21MeaH6ItR0+ivjiL25CkqXxFG6cMdg+60Zq+0M2qOF4ZcIm8Z6daEbvrJk4wswSJHBXcqkXJMVZVslQdR8OIyPs5yyCOKPkmOtUfxedh2Wd3MKO20wOTR3PiLl6VCUDDLNsIyp6srPLhLgULN64Zumrn23HlXaWTQl9/9KJ9MzZF1kzrg5K/KbXwJ6pjpVL2pqZC1X8dciNtHEVSE/RauXQ1sG22s5DbREBChL9vep6rhjiZdvoq/Qz1FS+z/AFP7Kx7JBjlY4zbmAd+G3OD6J70yOO3LtrjzxoEQXV2J0x/EtOdPXG33KM24bndojSoZF5e1A/EHVEgpRtRXDWK0C5QOhKlQNPFI+YqfqJWRwAc2TrSNycY1Q4yKrtNFVovZKfzbqLb78lwkUlNdxF/pQ3p6eXcDeHIDgOvs4TkvJPanTzMh9lTVVQUXO6pCaFrJAhqCZ74XO7XNkB8cNc3PTunpV1tlycjOimANs9q5rHOodW3jVN3O4Xq7PynCP53nVJf61ePbB10LEUNNw3kyXM0Ss5soSluL1roGgUUcVKJC3J/Rcq8WajLUV5iDrtb9LqxdDuErYi0KJR4yrrcBXEJUwP6qr7h0W9hN/JEo3lXFqPb1bFF8X9asrelU8i6ZNTCSYqCfn+qjLSl3EW0UnOQjnxVW6TXAkqSZ50UaQlE805uJcqC4rY5WXCuXg/Lt9+muOGSEQFirhhahG1tp3JCCD821KzRwRuki0XmQIuLhVzVxwNUsyT2u/Kv6qhtQi3Pupagl2ssro0nxAhkwgy3UJMJlC5pU7L0zw513DNm5WtglMcbtqVRcK5C47+W5tHd4cUYWTVBWmArxPKuPKoWalsNzcFTEVRuweFW3aR7G2nYzZ6g0U2jbwluBGeS0c8EbZqaw8PIdsuaOm82q7iXz6VPwrtJvrfxExxdn6fKo6+64t1tnrDaUAEQTw7q0HTvYGuN7JDoYGneBa68+WmiLHh5rT6Hb5EhwW2m1IyXAp51pTh52NmZcUJFyjbiXruo6snZIsdsuDbzkMERCzlRqafqdM02uoZtBUuF7LMmmuCmsr22jzNvJAX6lSiG0dmnWNwnizIZVAUvIa2pY9F6T0/b24owwVRTxbRp4kLTsAe+WG2i9R5VHO1h5cQ1qOZpLALucs+aM7JdvtkIZVwiopJz3KPOucTbTF0pouRBtQoqoCpgei1dWttTRYFjdcaeEcDnFZ913qJq92x4ScVcqqclzSqeWao6nnulSxwQDawZss92a2HH1A5cpTfNTUizUnetQju/vOX+Kua1fYtzyix50FXe8EiF4uvy1ZI/yBQD8PIRC5rMYDam25zSkbVqwtaOOW24vISgiq2JdFWgSZcHHMiTlPdDTXmrttFtFQs8yrJRuYVuM2eCrc0AQ2ZoG33EBCXbt8qf6uscGcCJNbFxrdkFTr/OoXR9puN2tRPA+mQP5RRVWk73Pu8B5I7xESCSJuIcVX5QfMNjlW+gqRDAA5l2ldD4StznfibPenmzxlAF1UqWtHA3iM5H/ACr4oAK5FXiRV/rStk1GwzcGCbZTCone5XGKv/hnB0TeQYeusppUMU3CRLhFqJrq2enYCG3CuGjUukVzy57i0+lyFWehez/xAvccmbbdCIuriiCClE9o7JkyWiuawujzx78hFZXAp96veNqPR+mGgYt7jXdryyHSpWfcI7EUblE2uEY7hIE61VptVrXPx03VtGm6WGbWDdb1JKxbxw4ISdLq+5bmTjtxyTcAnlCzVf6NnuNXIIrr21U+v/rWnO0jq+yuQnxdBVcVrc6AhWXdPx5F21s2zaopCDjqKYr0REq2aZK+ooSZVzTXIIabU2iHueFr/RvE6dpPhYxNlTzeEg8Qr/tVZO3Z7X+t0ICNWWi3Hv6InWnWvb/LTRkW0q8AuqGGgFPk/anPBnh7dw0fK1FNAnHHjXu/Uvf2SoZsdPSxvkOHE2HzU+HT1dQyIZa0An5JjL069qDV7RRm8ssqiY8uS81WrL0rAvUgZFlBneLyqu/GEQUSo3gjom6XGbcJT24vzfER9Ex5VZ7ZMxoD0dhkEcFdqEA8yTz51H1Uu+QRjgBStMzy2F5GSVXmqBu1ohpZ7fFRUJpVNUOmztvbtekP+aZVyW4qeAueEotuEaPf2gixAVFEsOOoPMa+8L9ByNf8SI9uhCpxIS5e39CVPWkwljWdXAyVkxkLv7eS7ClND2K32rR53bWTIq44ziIBDjCUF6kmNtw3BjtoDaCq/tVk8dU+EvoWlnItMAgoAdKozj/qtvRfD6XcSLDhtqgZWmYD+Kqxt5cUfNsotNJJw0ZWNO0DqFy98RJSC8pC2aoPioQjtkSoqCuVKvl3uLl3vL1wddUicdVSWpLTFtWTKF4xyIlXXaaLyYWsHYLgVZM6eodIe5JRbpKM7DgipclVKmZ1wEWNqplfX0pkybaADSD0Sk7q6KN4TNGA2Qq406488hL0ow0kWBHcWM4T70H2hO8ESUev9aI7E+4lwaZbTpjNYOVo8I100hWy/EQjhHP61YtmfIAIkBFyvzedAEYhcuYm11wmaNrHIJpoW1FMF9VR9V+ZG0vdTYXMkfAQLGPmqc0pe0mPl37m9kP1edB97kM22Mgqvic5060rOcjgLPeLhzmvtUe9l2o9jrPVi3HW8GFANxhxEAB8IjVT3jVU253J2Y28uDLl1pHXmq22Zv4aDxKKfNtKoeNf7eDKCaFmtxwNAuAkyTuJsVrWDqIY6KLYKAiPIQSo28cTG4yL3gHy5c6rwOKTIZbV7H+1Rt71xbZQIRyOa/q9ajGUVjdwRzqm4wVY9t1wzOc3I8vL1JaTverty92L/LbhPFVXw9dRY5oCPCi/VzrpcuIEV9xcEKLj1p4UdjgJv8TjlL8U9YTPwl5kXlVNq/VVIua5EIjrZPfKapiifiNqkXoLpiSpkV+1UKd4ekXB5kSXBKvhqWpYmhllF1Eri/CltZX8bi7ubLOFoTnSCLxqS5p5Ic2qoqVRst36UqTaLCyBPKavuCvIipfTc1wLo0y1jJFhKjpLm7wj1Wrx7LnYI488f0j6usNhGHZlPc3PnKo98iL1AUTKp78k9M0xVVUFLEXyOAHuiKWkqayXZE0uPoEb8MLNHDTqdxby79P79BX5lXzraPY47IvC6NZGOIGurHGuVzneNoJYIYxxXyRF8/eqQvXALUnBewXBnUMdHGo8feZt5UiVE6eyU87PfbWisMNaIevTcV9kdsX4hcC4npn1qharLLVxl9Kbi+bei6b4dggpJmxVo2m3Tu9f+rZXFDsz8BrkzFnSdE2o0cLYTfwwoq5T2qrNU/2fvBm9tn/wlcLhYHi5ikKRkEX/AArlKd6c49wb3cG4s+6A84q4Re9yKZ9KsuJdpE5kXrc8BLjwlnrVIqKmsp5DtcQFfxQUb2Dc0En2WWtXdirjVoZknNPakC/wW8kKbNj6J9ui/wBKErhrjVGkYgR71Fkora928wbaiSeXRa33pHUEO4Cbd1ioJphBJE5Y6Ulr7gjwx4gQ1bvunWJCF9aAiEnvlOdZHqkjiPObuHtgpqSiZCC2IkfdeenF/hmOtNPt6iaUlbRpHFbVcrj3TzqhLNp24WrVD0yztoXdrhoBDCfvXonxR7EE6fGekcOtZPRtjai3EmJubX29ayFfOAHGrhfq2U5rbTquMb/BMieJhfTK+X71a9K1SB8Dow8X7A4P7qn6vpsn4pshjPu4Z+eOPmnehNJPXIfxLVbLY7x8ZbsrnHl6VbsRLDa9Ft2617U2gu4yXpmq6sMW2xrY+1IugmRNLtPmgivnha76S1rbLXb+7uMxHAB5cbi6pQtXDLO647HhSVFNDAwe45ujfTt/umlrG/HVuO2BAuw+hJnzpTRerLaceZKvsxjvBaVIyb+WV81qsOL3GWy/Drb7dcm+YbiwXKqIvnF29XeekCxE73SEqmqL89H0ekSTgvkwovUNbhgd5cZ3H2WppvE0ZN3h6D0I2D8+4OKjjjfNATpWt+zx2f2+GWlEuU8Sdmyw3POEnNFWscf2XPDt/V2sXdZXxd7iPYa73mqYWvTCXiPZkisCikgY+9VzWZm08roY+G/cqyaQHy0jZZB1OF/gFjzjrbY46mkPHzweedYp7e+pSj2lizsOYQvm2lW5u0LHea1DIF5lRIiyNed/bvuAydTMW5slJRHpR/hOMTVrCe1ygPF0zodFeB3sPus7wYjkl9G2xVVWjiywPgIgjt8VRWm7R8NiQ4PPrRMwIn4vOuvtC4aeUoBCLW7zpvKXe1tJOVKSE2N+AqRjKRqRHzRKUtJ9a1GNG7xeSDUxoZXJlz70i5KXWhidLcLbEaLG8vFRtoS3fBsC8ZIqpz+9bHK0eEc6egjIupiHi2jRJFdlIaxmkXIl1qD0MpOuuSh6L5VNS5xQWnZScuXzVHVbt0lkdTCzLpCbPK6XD4V5zKjyzUnKfGx2cpJ9VHAUK6ZCVNuZSCVVIz/pS2v7y8skLaTvIfIaY23Nk9usC5N3+5ll8c+WVIvqp6xDt4NIJN86hZUvu4wK15U0PULyF8y0rbdJ3WUpH1FIeJXxcypF/Kmk3U0h+WjPeKlMRIo0RBTlj5aZQGylT+9Uvq+ql7QkAuU4tzkC8q94vMvmzXSfeTbHkSqvSuSW202mBIv8K1GXAS3blLl1rOlayCmeprmUu2OCqrzGqkJ1yDdl7xeSlVo3VwXIpoQ+v01VmrT7uchDy8VPwhNPUrNDez3w89yVByXMKorUnb5RT7d3aFlRGoue2QOLRLUweUtouDbLprO12+8kiQ37lHalZ82idFC/8qqle5vC3iHwosGgrfZ9Jx2Y4x4LbTDIYRFwiYxivCOLGddntNsubTJxEAvRVWvQbRGtZXDnQ9seCQdycjRh710nFQhVETn71VPE9NJUMaWci+Por54KniidKH44yttXrh8zqhmRctVRm3m5QYICwqYXyrNPHH+zC4Y68VzUfDK4PWK8DkgRgvyy+49P5UacGe1dbdY2kINzuQtOJhCB4sYqzLVrSO/dQfjyNzaIm5Q6F7VzYyV+mSEscWn+crpMlPR6jFtkAcOx/wCHkLzg1tp/tQdkO6o7xD0hLuVmEv8A+WiKptIPqq9W/wDNy96tPg/22ot1Zb/CtSC7vBMxpDu0x+3r+1ehoxtL62s6wb7aY0lp0dptPNIQr+y1n3jX/ZG9nDis5Iv2kWX9K3R3JpKsp92JEvmTfyl+6VJDVNP1BmytZtd/k3j5j/n0UbHT6npb91K/ez/F3I+BSvD3tN2u9MtFcZyNuDhBDbjNXNpHiM3dgF6I8mMeHxZrAWuOwb23+zfvumg7lH1zaI2SWMKK3KQU9BVcEv2UftTvs+dui02i+lo7iIEvTt0bNG5EC6gragfTHPmn79aFm0dj4zJSPD2j05HxHI+ikIdbikeGVDDG88A8H4Hg/Veg43ori0XfblRVx+X5/emd/tOmbjGchsd0+qhhxt3Cpz+9VJY+M16gCl6sDzMyMooaCJoSKn+9FNm1dpvXrzcwm/hJIFuMUc+ZfTl5VW5GyxPU0wXbnhVtxo7Htv1pZZD3DiYNmnHncBNZaNfRU8vulYl49cPeLnAWIdv11p5+OjxqLc5kFKOSex4wn2XC16w2S2snAQTeVxf0+a1F6t0TpXUsR2w6ls7VwiSMo7GmNIQY9edTWma/PQOAkG9nvz8iq/qmhw14Jjdtd7cfMLxLcuN0uKq26RmTnLavnVp8IOFndxvxS8MpuMPACj0rbGv/AOy54S3W7f8AFXDI/wAJdJVL8OLxR1X+Efp/aqs1/wBnbiRwwJRuum3iiNcviY4bwT35VbHeJaOuYGRHaT2OPkqvSeGpaSbzJ824tx8UZ/2cEGHZr1MtwOIijLXA+1b4G3MvRhJEVdw15u9jvUL1g4py2BcwKuoW2vSbQ9zZvViacEUJdiLVQ1aMuqHX75V6oXAUzQOOPos29rDTHwly/EnNqATS/avKbtVPldeLD7ZFuBssDXsV25dPyj4XS75DZVTiNqXJM8sV4vcSLk5fdfS5jhZy6tWjwNFunc70CpXjuo2UDIvU3+iiY0QUa5Cv/SuwLtXai/VTmOm35B5V1NG9+/zrqa5IkXl2guR/96bC93AK5t5U4kD3gqI1FSjccfSK2W7JVomyxSFkZO5zPiXB5IvhqwtOwXG2kbElVS5UJ6Wjd0TbaN1YWmYJE6jnknRaxztjCStgbnWCMdLW4rfA/u8Z6likdWXGOludySKuMU6WS9Htjg9E2/vQtqaZmzud8XOoq7nvuVIizI7BPOHcl56XuDOxPq9a5qVpJF1N53mSF4sjUbwz1ADUsIuUwvzL6VMaw7uDPUiLk79VbOHrQN2KGuUpllvvPJA8qEJl+D4gsOr1qU1TOFmL3bPVU8ioZahK8COEvNacAsmS/bhG0xxsm9qFy20xtr+x8xX/AC1Js2v4lrdt6J+1IpaRjsk9yyPOtpWV9E3Oe4+S/wAVfTbFzOVx90pKOTjmMjS5ltVUQfprXbC0oa+Rhbhue41Umr1H4v18VXFqBFSCZDVMavMvjyH+JaeiTcnK7acl7HFYXzpxdW0IlwvSoyxEXxiYwlTFw/LdQSFedP3ymT6KHEXm3kdHOULI1qPs8cTbbrSA3bbpcRSYwAIcZz/vseaVmiWyTJIiqmC6UrZLxcLBObultmGy80e4DAsLQ1XTNqo7XseyP02vfp8++12nkeq25qXRG8vx2zi7EcdXcpNDhEp/oPtQaw4eXRqx3cfioqcgeLmuKC+APaxtPEPTzXDzWvdNTh5NPGHJ2rpt/ZWt+sogX7Tt8acU8qTK80T96odcyGJ5iq2fA/uun0NQ+eETUj+k8j09iFc/B3tK6Y1eDbLc1AcX6FXHOrqg64bZhI8j24l5IKF5153a44OcSuDl1/F7THdARPcg89h/ZfKrM4SdqS6T7Q3Bvqk3LjY3tO9V+3rVbqtLZt3wG7f0U3TV7nuDJRtd9j8Fty16nF4RbcPc4fQC6VWXaZ7FPAvtV2UmdfaUYZurYr8JercCNyY6+xJzVPVFyi+dD2huNlj12yTbU7uXw6Eh4IFo80rqu8FNBmVcQcRVwBl1L1VagPNqaOcPjJa4dxj7qWfRw1cNpGgg8g5Cwbrbs+dpbsJT8WnUUy86Y7z8uS8HeM7PQx/7pfty+3SjPhT2s4cqQ0N8Fu3uEqbuSbVX2WvQKQ7pvVNrOx6jtTUuO+Gw2XQQkJFrHHa0/srjvzrmsOztem4bikrjlhkn+Ua9cAScwX+ae1TUWoUepHZVgNd/kBz8R/tRbYazSs03Wz/Em9vgT+iuHhtxhttyZGQE4XN2F3b8596sSPerPeWk3Eu4vrEq8wYmpeP3ZhuSW3iXpm4RGW3du2UK7Cx+hzotaQ4Ldq606wgsyY04cdHQI/EC+6UDXaVJAPMjO5h4IyFJ0lfBXEt/K8cg4P7rXMe3i+CfBuchLHXr609WHDnMLFusUHAIdpg4iKi1XejOKkWQ22iSBUS+vdR1pvUdv1AZt96ImC+HcX9agT0OuUW5jzyqv1P2NtDSdYu8Q9Bf/iriX97Hb5NPft5L71Z3CCXc7NCK03UiB9gtuxS61MSYpxSF43kRdnJEKhG7XFxm9BKBxUweN4+dECqkfZrnXTYZ5XbCO+J1jj6y0DcLPJaQxkxiAkL3SvCfjroGVw64y33SM9lRKJPcQMj1BVyn+te7dkubdytYgr29FDxetea39r52eS0/rOJxkskPazN/Imq2P1eSr/pVx8E6gKfVDC84cMfEfwqleOKP8VpomYMsNz8DysTqfdogjzpIzJF8SV3BO6Vd+M/qpvOltRmyJxUytdlXHU2nP92Ko2XOuWO3uOvrIe/81M4hFPkZ8s0R29ltWtqDzStYIWKe0vb9zwjsyRLhKsaDbgtbbLOz5sKal5UM8Pbe2m2Y61lQ+Xw0XTjckx9rY7VTpQVS+52oqBmNydXOZFccSOz8qpjdQ7qWEMqA8LOMInJa5JlKSbRNVLP86UQ9kTu3V6pjC0OBZEE7kG6QuPwFzRDJfCf71YWqDbvFjGeHPuw8WKq64tuWbUxERYA15LVh6TvEOVait8nBIQchpb+xCbZ3aVXN9mk9IUd3Rf5UpDYP4cf+tdtZWSZbNQF+SqNGuUqRtsUPgx5rSiQWhNEWKnivkWOx3a4RV5V3blR5EFV3Jk/poYuDpqCoq+lP7ei92Iblxn1raWHEp9FAxd7tBTHlka7zTbDIl1/UlIJIdBMiXSkLi84Rcy8qxbuU1nOk/Hcb3Z8NU/rhgm7k51xu86td5wtqpmq14gAPxhJinIsFMyG6hrCiFKRal7g53skRSozS6IsjmnnT14lWfzWiEhSM2EL0IcDz21Bvp3Jd24WMUTHzYAPLFQ17iMoimg8/vWNKS71Ulwk1dB0hr633mcCK229g8+i8s1urh7xVvuizZv2m3HH7eSIcuPnIii+aV5wvKQPiQkud1bP7Imo7peuFQpcnRc2tk3lR5qKdEWoPW6aKVoLxfsrX4Yq5Wucxpt3W39D660jxm078LL7h4XGsGDmPDVY8U+yJdFF2/cOHRN3d4I+cF+y1TfDnWeotL8QCt9nnq2y4S721TKLWpeFuvNQTYCLIeAlFvchbVzn+dc4rGS6dMRG7BXSqbZVsBcMhZWuGotVcJb8LOvdOzoDwLhZ0cFQST+Ly/etCcEuPNl1BCaxemn1wm1SPn/OrUv2mdOa5hfBarsUWa283tcF5lFyi9axd2reGFg7PWqXLpwsmToCLM2/CrIQmkTPRExn+tDs8nVY9u2zh37KQbJJSYvcLd9g16SEhMOCqbfCec4oztGrXFFtxxwcEvhGsL8BOLmtrjb46zLgJ7wTdlF9vetLaFv8Ac5ctpH38og7kTHLNV6opfKeRdSLXFzQ5XDqbSmiOJNncsGvNLw7gw8CiYSWEJCRfvVOvf2ZXZtS5leNLW+bZXiyQHbphAgKvltzhU9sVcdheOQIq6iLz9KIobhJGXki/dKbhq5ohsa42PuhnwNLhJYXVDh2QtTaJhr+Da2Oa0HMPiGPF9lVKjtPP37Rt97u9EapvxnGM1o6FJee3MuFkfSqv482eA3GOS21tPPVFoaR5c/PdPsqHg7XZS73ESA5FRxHkdPGBTrQdc9SypNzSG0OdzqFuHpig21XOYzIVgHfDnpRPCZbOc0ZDz20lrbIyRoLEZ2XVMqwTW5A82y+cPLFQXa94b2vjxwOu1hABN4ohuRCxlUNEyn9aWui5jtqvpUjpSU+8TsB09zW1fCtE0s8tPMyaM2IIKiJ4o5I3QvFw4EFeIurYMywXSTa5+W3oz5NugvLBIuFoZkSJE59GEJcbqvn+0o0lZdG9pi7QbAwTLUkUkOt7sp3iquVSqTssRnuu+2+L716KoKn8ZSRy2sSB+i8/19P+Eq5I73AJH3T62W9uKA+LmVFOnrd36flhuJfpoeYAdwY86PuH8RhX96hzVKJcdrLoZovYIq0yzHgQBBWU3p9PvTmXMI9yBzJef2pvL/IkIDfJK72zxvlu/TUac9SPGMJpBBtonVeXmi4TdSMxQecwHkPiX0pW7Kra+AlTx0k8W2MoCKIhDz5VsHusIthDGrLcM9rvQ5mH1VGad1PItsxBdJdwL9VEsABcmmDniTHRaFtYwY8aUMhkVQjPxc+S043qwUyenIR5vg60goLu3vvpXzpk/aXrY58J3ZeFPShTS16uMeW13T6p4qtOAozojcmS2JGQ81xSC3anGdYuV//Z
@chris-dent the evil eye is better than the evil eccles cake
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WtK2IBUZ5HT61m2qfMOSD1yO4rRhJKgsfSvoJu5wdC9A2Ppz071ahIP/AAI45P8An1qpAwU8En+VWon9cdenr/8AWrBiLSHnn8e9TRnoeCAPzOagjHYYznuOtSK/GRk+5/rSLWq0LkTAgnp39MCp178j2/8A11VifdnOB9fpUyvgd/p/n8aB+ZOj7F44Oe3+frUiOR359MVAr7gMHOfTtS5OfcemaTV0LVFtH45I5pVfoc545Hr/AIVXSTkg/wA+lS+buJPOCccDrWTRpGXcnV+e/rx2pwPGBnHeoVbnKk8/pTw4bqfrWVjaMrkyvjkkinrJu44APTPf6VCCevX2pY5CeMHB4xUuJZaRx69acvHGT+VV1k9f17VIr9MZz34rNq4EyyZxjjnmnq3Jx9KgU7SMHBPFPVjgbjis3GwE24KRzjvToyAo3HJqINkZBJFKr7M4xz+tQBOHDHsec/SnKwJ5/wD11ErAA5Pfoeacrk+p9sUAShgR6555qSJ+3AqFXzz1579aep9O3WgCYOTwccU4P029egqAPjnnPX605Tu4ANAFhTyRTlbHWog237+f8acrAj+dAEqtk80tRgkffPenB+uaAHZopq8nJp3p1oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkYfj7UtI/3aAPne3AX72PqSM1oWz4UBcflg/Wsy0Ixk9SMdsfhWhbHGSD19BX0Ezg1WxeiA7flmrUTcj8eRxVOJsYIP4etWYj69axYNdy5EfXvUyZPH4jmqsLY/L16+tTqR/Dj1zjpUMcdCdG4yuamV/lzwM89aqiQfj796kVwMcD19hQmaFpJMc5yeePUU8MS+SRzVVJPmx6Drn2qRX3dMj9aYtGWAcjnnH6U9ZMA/Xj2qFW5yM565zinq/rj3+tS1cVrFhZe+e/Gf5VIrZbvn361VByOen9acr4OBnP06/jWcolKVi2GJXqOtPDg9Tk+v6/0qusuSOvI6mnh+eOec1k42NlJE6tgYGe/1p4cMO/oc1XD4A9/frUivkehzj/8AVUtFp3J1lzxwT29qerZ+p/Wq6se/OKejgcZPpUtDJyeMdD7dTUgk5z17VXD7euM9OfanpJnkDt1rNxAnDAj8KerAgg9P5VCj4Ixzjp7U5XyMc/nUNATxtuxzTg2Gwarh9rAk4wfWnq/HOakCYNg5GRn26VIj55TPpUKtnr1NKH2Z2fjQBOJMe+T1p6Nnvj3xVdWy3r7Zp6vtPGcfSgCwrYPJPpTwd2eciqwkyfcA9Kk8zjODx057UATA0u/oeP61Fvxk/lzThjvjI5+lAEobPSgtjrUYYZ4704Pz2oAfRTQwUcc04HIoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAPtTZDjHJ60pJwc8VETxyT+HagD52tG3HJY9zx2+lX7YlVJfOByRg8+9ZcD9Dnn8vyq9E+4YHQfjzX0clc4DTi6e571Zik5/mBjkVQt5MLk/nVqKQMMHv7dcd652ugehbjkxgZwfQjn8f0qZJe7DHoaqLJj3I6Z5qVW45yPeoEWw3HOc+wyf89acrkL169eP8+tVlk47c4NOD4PPX6UnqUpWLStyO+eM09ZMZyfxxVZZAwJHbrUiOCPnzkntSuy00yykuPc8DJ6g/5zUm/wBf584qmr/L8o+bv2qQS5J55zRcotpIV/8Ar1KrZHGemTVKOU9D16Z/z9KlWXPTkjnHtQK1yyrY6d+1SJJhfTg4I6ZqsHx1IPfFOWTdUtC1RaE2SAOv9KkV+evaqgPcdjUnm5yB1AxWTiWpMsiT19evepVfjGT9BVSOTr1H6f561IHzyOPoelQ0axlcsI+FOfwGeKeHCrk9e+Kqq/zevfmpRJgdQcc1FiyyH59jyfyp4cZ4A9+elVQ4JyeSM47U9ZdxySPXoKmwFhWwevSnpIMc4GfeoEk7DkeuKd5meeg6jPeocQJwQO5H0NSeaT14Occ1WByQOh9OtOWXgk9ahoCyr5bAIzTlYg856dc1XB3Dj+dSI+4HIAHqP50gJw4HFCvtBwf0qJTyMnH9KVDgkrkfTigCdX5yakWUZ4PGMj2qr5ufWpN4zyQPUUAWRIP4jzx+NOHzHjr9arCTpnpjHFSLMDjP4UATE+nWnKxHWog4JyMEds8U4EEY/CgCTzMj0p1RA9eQc0obj/PFAElFNBB75pwx2oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACigHI4pCeee/FAC00tgHHaml92fSkZ++ec0AKx3Z6UyV9q/hmlZwoPSoJ5McdffFAHznBOMcnHTtjH4evSrsEmMHPf25rJtZjhe/YZ7/AOeKuwzAfyB+n/66+m5Tz72eprQzlUOM8cdT/KrEUoOMnk9s5xWZFLt5O4deRnJ/H1q1HccEjkk4HpWEojNBJSwx78noSKlE4UjJ465IqgshDds85IqaOTB/Hg8GsrC31sXVfAPPFPRsH5QOtU1n5zjGRgf5/CpRNt6544IxUjS7FtXPGBx/P2p8cvTBz7etVBKSuGPbqDTllyeO3b8qBFxZc/SnK/pnr61TEvTbkc8fX/Ip4nx1OD9eam1yk7FxZFAHoPxpyzDj05wM1TNxt6ngdD/nrTJtRS3VmncIoPUnAHOB+tJrQtTNJZ8ZxyO9SrNu+Uj2zWNNrcVrt3sTv6Yxz+JwP8+tWo9QRl5dRjryOOOQfpUt2GpJmokx2559akSQMOeM1nQ3QI/dtnIB45BGPr0qYTcDPPU9P60irJl5Hxznp+tPWbBJbPr1zVOKbP3OD3+tSCbIySeopNDV0XFm5z68fWnCTofz74/Kqol3cZ6cccUnnBNpJwARjORzUOI1JoveZxkHvTvNJznJ71l6hqf2KAt95uNq4JLc44HU9aVdYGxwY5C8QBKKMkkjIAzjJ6fn7VLiWpGssmCCTkeg9ad5nucdck8is2e/8qHcCQTg4xk844IHucE//rqP+31heQTxyr5brGSFLbmIzgAZ49+R71PK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

2content
/*{{{*/
.tiddler .originButton div {
	display: inline-block;
}

.tiddler .spaceSiteIcon .siteIcon {
	_display: inline; /* IE doesn't like inline-block */
}

.tiddler .originButton {
	display: block;
}

.selected .tagging,
.selected .tagging:hover {
	border: none;
	background: none;
}

.tagging {
	float: none;
	background: none;
	border: none;
}

.tagging li.listTitle {
	margin-left: 0px;
}
.tagging li {
	margin: 0 8px;
}

.tagging .tiddlyLink {
	-webkit-border-radius: 3px;
	-moz-border-radius: 3px;
	-o-border-radius: 3px;
	border-radius: 3px;
	padding: 1px 2px;
	line-height: 1.2em;
}

/* for following */
#popup .siteIcon {
	float: left;
	height: 25px;
}

.content {
	width: 100%; /* IE */
	font-size: 0.9em;
}

.editorHeading {
	height: 48px;
}

.heading {
	left: 0;
	margin-bottom: 40px;
	position: relative;
	top: 32px;
}

.followButton a {
	display: block;
	margin-top: -20px;
}

.tiddler .followPlaceHolder {
	display: block;
	position: absolute;
	top: 16px;
	right: 64px;
	_right: 138px; // add width of modifierIcon
}

.tiddler .followButton {
	position: relative;
	height: 24px;
	text-align: left;
	color: #fff;
	background: [[ColorPalette::PrimaryMid]];
	padding: 10px 0px 0px 10px;
	width: 38px;
	margin: -16px -8px 24px 0;
}

/* creates the larger triangle */
.followButton:before {
	content: "\00a0";
	display: block; /* reduce the damage in FF3.0 */
	position: relative;
	bottom: -20px;
	right: 0;
	width: 0;
	height: 0;
	border-width: 0 0 20px 20px;
	border-style: solid;
	border-color: transparent [[ColorPalette::PrimaryMid]];
}

.toolbar svg {
	height: 16px;
	width: 16px;
}

.toolbar svg .glyph {
	fill: #ccc;
}

.toolbar a:hover .glyph {
	fill: black;
}

.toolbar a:active .glyph {
	fill: [[ColorPalette::Background]];
}

.originButton,
.followPlaceHolder,
.tiddler .subtitle {
	cursor: pointer;
}

.editSpaceSiteIcon .originButton {
	cursor: auto;
}

.tiddler .subtitle:hover {
	font-weight: bold;
	background: none;
}

.originButton img,
.originButton svg {
	margin-left: 0px;
}

.modifierIcon {
	position: absolute;
	width: 74px;
	top: 0px;
	right: 0px;
	_right: 74px; /* in IE6 positioning works incorrectly so use -width instead */
	text-align: right;
}

.modifierIcon img,
.modifierIcon svg {
	margin-right: 8px;
}

.tiddler .viewer {
	padding-bottom: 16px;
	margin: 0 0 0 56px;
	line-height: 1.4em;
}

.viewer pre {
	margin-left: 0;
}

.siteIcon .label {
	color: [[ColorPalette::TertiaryDark]];
}

.tiddler .spaceSiteIcon {
	float: left;
	margin-right: 0;
	margin-top: 0;
	position: relative;
	display: block;
}

.tiddler .titleBar {
	display: block;
	margin-right: 136px;
	margin-left: 56px;
}

.followButton a {
	color: [[ColorPalette::Background]];
}

.tiddler {
	position: relative;
	padding: 0;
	margin-bottom: 3em;
	border-top: 3px solid [[ColorPalette::PrimaryMid]];
	background: #fff;
}

.tiddler .editor {
	padding: 0px 8px;
}

.tiddler .heading .title {
	position: relative;
	display: block;
	word-wrap: break-word;
	font-size: 32px;
	line-height: 32px;
}
.tiddler .heading .editor.title {
	font-size: 1.7em;
	line-height: normal;
}

.tiddler .headingClear {
	clear: both;
}

.tiddler .subtitle {
	font-style: italic;
	font-size: 0.9em;
	color: #a6a59e;
	margin-top: 0;
}

.toolbar {
	position: absolute;
	padding: 0;
	top: 8px;
	right: -8px;
}

.toolbar .moreCommand.highlight {
	background: none;
}

.tiddler .toolbar .button {
	border: none;
	display: inline;
	padding: 0px;
	margin-right: 16px;
}

.tiddler .toolbar a:hover {
	background: none;
}

.tiddler .tagged .listTitle {
	display: none;
}

.revButton {
	float: right;
}

/*! EditTemplate specific*/
.tiddler .privacySettings {
	text-align: center;
}
.tiddler .privacySettings .originButton {
	display: inline;
}

.editSpaceSiteIcon, .privacyEdit {
	float: left;
}

.editSpaceSiteIcon svg,
.editSpaceSiteIcon img,
.editSpaceSiteIcon .roundelLabel {
	float: left;
}

.tagTitle {
	position: absolute;
	text-align: center;
	width: 48px;
	top: 0px;
	left: -56px;
}

.editSpaceSiteIcon .originButton img,
.editSpaceSiteIcon .originButton svg {
	height: 16px;
	margin-left: 24px;
	margin-right: 32px;
	width: 16px;
}

.tagAnnotation {
	margin-top: 8px;
	padding-bottom: 8px;
}
.annotationsBox {
	margin-top: 8px;
}

.editorFooter {
	position: relative;
	padding: 0;
	margin-top: 16px;
	margin-left: 64px;
}

.tiddler .editorFooter .editor {
	padding-left: 0px;
}

.heading .editor input {
	width: 100%;
	font-size: 1.5em;
}

.spaceSiteIcon .externalImage .image a:hover,
.modifierIcon .externalImage .image a:hover {
	background: none;
}

div.toolbar {
	visibility:hidden;
	right:-16px;
}

.selected div.toolbar {
	visibility: visible;
}

.followButton a:hover {
	background: [[ColorPalette::PrimaryMid]];
	text-decoration: underline;
}

a.image:hover {
	background: transparent;
}

@media all and (max-device-width: 480px) {
	div.toolbar {
		visibility:visible;
	}
}
@media only screen and (device-width: 768px) {
	div.toolbar {
		visibility:visible;
	}
}
@media all and (max-width: 960px) {
	.tiddler .titleBar {
		margin-left: 36px;
		margin-right: 80px;
	}

	.tiddler .heading {
		margin-bottom: 48px;
	}

	.tiddler .heading .title {
		font-size: 32px;
		line-height: 32px;
	}

	.tiddler .modifierIcon img,
	.tiddler .modifierIcon svg,
	.tiddler .spaceSiteIcon .originButton img,
	.originButton svg {
		width: 32px;
		height: 32px;
		margin-left: 0px;
		margin-right: 0px;
	}

	.tiddler .followPlaceHolder {
		right: 48px;
	}

	.tiddler .followButton {
		width: 24px;
	}

	.tiddler .viewer {
		margin: 0px 0px 0px 36px;
		padding-top: 0;
	}

	br {
		line-height: 0.5em;
	}
}
/*}}}*/
ColorPalette
StyleSheet
SiteSubtitle
GettingStarted
SiteTitle
MainMenu
SiteIcon
DefaultTiddlers
ViewTemplate
PageTemplate
SideBarOptions
EditTemplate
SiteInfo
SideBarTabs
ToolbarCommands
@youtubeplugin by @jon is a simple TiddlyWiki plugin for embedding YouTube videos in tiddlers. It uses Google's [[SWFObject library|http://code.google.com/p/swfobject/]] to do the heavy lifting and exposes a nice simple API that currently looks like this:
{{{
* url: <string>
* autoplay: <yes>|<no>
* start: <integer> (number of seconds)
* onEnd: <tiddler name> to open on end
* onPause: <tiddler name> to open on pause
}}}

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
http://graph.facebook.com/http://tiddlywiki.com/
returns:
{{{
{
   "id": "http://tiddlywiki.com/",
   "shares": 395
}
}}}

bt.com has been shared 643 times for comparison. And twitter.com has been shared 1,850,692 times.
Matt, I think it would be better to break those macros out into separate tiddlers, and let users recombine them when they reuse the documentation.

Type the text for '@eric'
http://lostandtaken.com/about-lost-and-taken/
The title and subtitle of your space are visible to visitors and are also displayed in your browser's tabs. Click on the SiteTitle and SiteSubtitle tiddler links below to make changes.
* [[SiteTitle]]
* [[SiteSubtitle]]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<script id="versionArea" type="text/javascript"> 
//<![CDATA[
var version = {title: "TiddlyWiki", major: 2, minor: 5, revision: 4, alpha: 1, date: new Date("Aug 18, 2009"), extensions: {}};
//]]>
</script> 
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 
<meta name="copyright" content=" 
TiddlyWiki created by Jeremy Ruston, (jeremy [at] osmosoft [dot] com)
 
Copyright (c) UnaMesa Association 2004-2009
 
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
 
Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
 
Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
 
Neither the name of the UnaMesa Association nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.
 
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
" /> 
<!--PRE-HEAD-START--> 
<!--{{{--> 
<meta name="viewport" content="width=device-width" /> 
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' /> 
<!--}}}--> 
 
<!--PRE-HEAD-END--> 
<title> Project Cecily - a zooming user interface for TiddlyWiki </title> 
<style id="styleArea" type="text/css"> 
#saveTest {display:none;}
#messageArea {display:none;}
#copyright {display:none;}
#storeArea {display:none;}
#storeArea div {padding:0.5em; margin:1em 0em 0em 0em; border-color:#fff #666 #444 #ddd; border-style:solid; border-width:2px; overflow:auto;}
#shadowArea {display:none;}
#javascriptWarning {width:100%; text-align:center; font-weight:bold; background-color:#dd1100; color:#fff; padding:1em 0em;}
</style> 
<!--POST-HEAD-START--> 
 
<!--POST-HEAD-END--> 
</head> 
<body onload="main();" onunload="if(window.unload) unload();"> 
<!--PRE-BODY-START--> 
 
<!--PRE-BODY-END--> 
<div id="copyright"> 
Welcome to TiddlyWiki created by Jeremy Ruston, Copyright &copy; 2007 UnaMesa Association
</div> 
<noscript> 
<div id="javascriptWarning">
This page requires JavaScript to function properly.<br /><br />If you are using Microsoft Internet Explorer you may need to click on the yellow bar above and select 'Allow Blocked Content'. You must then click 'Yes' on the following security warning.
</div>
</noscript> 
<div id="saveTest"></div> 
<div id="backstageCloak"></div> 
<div id="backstageButton"></div> 
<div id="backstageArea"><div id="backstageToolbar"></div></div> 
<div id="backstage"> 
	<div id="backstagePanel"></div> 
</div> 
<div id="contentWrapper"></div> 
<div id="contentStash"></div> 
<div id="shadowArea"> 
<div title="MarkupPreHead"> 
<pre>&lt;!--{{{--&gt;
&lt;link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' /&gt;
&lt;!--}}}--&gt;
</pre> 
</div> 
<div title="ColorPalette"> 
<pre>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
</pre> 
</div> 
<div title="StyleSheetColors"> 
<pre>/*{{{*/
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]];}
 
.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)';}
/*}}}*/</pre> 
</div> 
<div title="StyleSheetLayout"> 
<pre>/*{{{*/
* 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: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: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: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 0; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}
 
.fieldsetFix {border:0; padding:0; margin: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;}
#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;}
/*}}}*/
</pre> 
</div> 
<div title="StyleSheetLocale"> 
<pre>/***
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;}
/*}}}*/</pre> 
</div> 
<div title="StyleSheetPrint"> 
<pre>/*{{{*/
@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 */
}
/*}}}*/</pre> 
</div> 
<div title="PageTemplate"> 
<pre>&lt;!--{{{--&gt;
&lt;div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'&gt;
&lt;div class='headerShadow'&gt;
&lt;span class='siteTitle' refresh='content' tiddler='SiteTitle'&gt;&lt;/span&gt;&amp;nbsp;
&lt;span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;div class='headerForeground'&gt;
&lt;span class='siteTitle' refresh='content' tiddler='SiteTitle'&gt;&lt;/span&gt;&amp;nbsp;
&lt;span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id='mainMenu' refresh='content' tiddler='MainMenu'&gt;&lt;/div&gt;
&lt;div id='sidebar'&gt;
&lt;div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'&gt;&lt;/div&gt;
&lt;div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id='displayArea'&gt;
&lt;div id='messageArea'&gt;&lt;/div&gt;
&lt;div id='tiddlerDisplay'&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!--}}}--&gt;</pre> 
</div> 
<div title="ViewTemplate"> 
<pre>&lt;!--{{{--&gt;
&lt;div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'&gt;&lt;/div&gt;
&lt;div class='title' macro='view title'&gt;&lt;/div&gt;
&lt;div class='subtitle'&gt;&lt;span macro='view modifier link'&gt;&lt;/span&gt;, &lt;span macro='view modified date'&gt;&lt;/span&gt; (&lt;span macro='message views.wikified.createdPrompt'&gt;&lt;/span&gt; &lt;span macro='view created date'&gt;&lt;/span&gt;)&lt;/div&gt;
&lt;div class='tagging' macro='tagging'&gt;&lt;/div&gt;
&lt;div class='tagged' macro='tags'&gt;&lt;/div&gt;
&lt;div class='viewer' macro='view text wikified'&gt;&lt;/div&gt;
&lt;div class='tagClear'&gt;&lt;/div&gt;
&lt;!--}}}--&gt;</pre> 
</div> 
<div title="EditTemplate"> 
<pre>&lt;!--{{{--&gt;
&lt;div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'&gt;&lt;/div&gt;
&lt;div class='title' macro='view title'&gt;&lt;/div&gt;
&lt;div class='editor' macro='edit title'&gt;&lt;/div&gt;
&lt;div macro='annotations'&gt;&lt;/div&gt;
&lt;div class='editor' macro='edit text'&gt;&lt;/div&gt;
&lt;div class='editor' macro='edit tags'&gt;&lt;/div&gt;&lt;div class='editorFooter'&gt;&lt;span macro='message views.editor.tagPrompt'&gt;&lt;/span&gt;&lt;span macro='tagChooser excludeLists'&gt;&lt;/span&gt;&lt;/div&gt;
&lt;!--}}}--&gt;</pre> 
</div> 
<div title="GettingStarted"> 
<pre>To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] &amp; [[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: &lt;&lt;option txtUserName&gt;&gt;</pre> 
</div> 
<div title="OptionsPanel"> 
<pre>These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser
 
Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])
 
&lt;&lt;option txtUserName&gt;&gt;
&lt;&lt;option chkSaveBackups&gt;&gt; [[SaveBackups]]
&lt;&lt;option chkAutoSave&gt;&gt; [[AutoSave]]
&lt;&lt;option chkRegExpSearch&gt;&gt; [[RegExpSearch]]
&lt;&lt;option chkCaseSensitiveSearch&gt;&gt; [[CaseSensitiveSearch]]
&lt;&lt;option chkAnimate&gt;&gt; [[EnableAnimations]]
 
----
Also see [[AdvancedOptions]]</pre> 
</div> 
<div title="ImportTiddlers"> 
<pre>&lt;&lt;importTiddlers&gt;&gt;</pre> 
</div> 
</div> 
<!--POST-SHADOWAREA--> 
<div id="storeArea"> 
<div title="AnotherMap" modifier="JeremyRuston" created="200807181149" tags="cecilyMap"> 
<pre>DefaultTiddlers 2241 500 225 99
HelloThere 518 -1007 1100 568
JeremyRuston 1667 -742 381 163
MainMenu 2506 499 225 69
MyMap 2755 498 225 325
OverlayMenu 2997 506 225 110
PageTemplate 3235 511 225 139
Principles 2593 672 225 164
ProjectCecily 1636 -115 459 532
Seagully -266 1149 842 609
Serializer 100 150 50 100
SideBarTabs -1272 -619 225 321
SiteSubtitle 3643 850 225 69
SiteTitle 3649 963 225 69
Swampglade -1085 563 448 395
TODO 300 150 50 1000
Tenerife -1040 1039 716 627
Tiddlers 2000 250 450 1000
TiddlyWiki 1668 -896 388 132
ToDo -879 -1493 929 932
UrlMap 400 150 50 1000
ViewTemplate 3247 666 225 159
WebKit 1657 746 389 602
Weyflection -595 577 498 438
ZoomingUserInterface%20from%20Wikipedia 530 -396 1042 1443
ZoomingUserInterfaces -684 -502 1098 907</pre> 
</div> 
<div title="BlankMap" modifier="JeremyRuston" created="200810211149" tags="cecilyMap"> 
<pre></pre> 
</div> 
<div title="CecilyConfig" modifier="JeremyRuston" created="200909100000" modified="200809100000" tags="systemConfig"> 
<pre>// Cecily continuously modifies the current map tiddler as tiddlers are moved around and resized. This hack
// is to avoid warning the user of unsaved changes when they browse away from Cecily
 
if(window.location.protocol !== &quot;file:&quot;) {
	window.unload = function() {};
	window.confirmExit = function() {};
	config.options.chkAutoSave = false;
}
 
</pre> 
</div> 
<div title="CecilyPlugin" modifier="JeremyRuston" created="200806100000" tags="systemConfig"> 
<pre>/***
|''Name:''|CecilyPlugin|
|''Description:''|A zooming user interface for TiddlyWiki|
|''Author:''|Jeremy Ruston (jeremy (at) osmosoft (dot) com)|
|''Source:''|http://svn.tiddlywiki.org/Trunk/contributors/JeremyRuston/plugins/CecilyPlugin.js|
|''CodeRepository:''|http://svn.tiddlywiki.org/Trunk/contributors/JeremyRuston/plugins/CecilyPlugin.js|
|''Version:''|0.1.2|
|''Status:''|Under Development|
|''Date:''|July 20, 2009|
|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev|
|''License:''|BSD|
|''~CoreVersion:''|2.5.0|
***/
 
//{{{
// Ensure that the plugin is only installed once.
if(!version.extensions.CecilyPlugin) {
version.extensions.CecilyPlugin = {installed:true};
 
//-----------------------------------------------------------------------------------
// Geometry classes
//-----------------------------------------------------------------------------------
 
function interpolateLinear(t,a,b) {
	return a + (b - a) * t;
}
 
function interpolateQuad(t,a,b,c) {
	return Math.pow(1 - t,2) * a + 2 * t * (1 - t) * b + t * t * c;
}
 
// Point class {x:,y:}
function Point(x,y) {
	if(x instanceof Point) {
		this.x = x.x;
		this.y = x.y;
	} else {
		this.x = x;
		this.y = y;
	}
}
 
// Rectangle class {x:,y:,w:,h:} (w and h are both set to zero for empty rectangles)
function Rect(x,y,w,h) {
	if(x instanceof Rect) {
		this.x = x.x;
		this.y = x.y;
		this.w = x.w;
		this.h = x.h;
	} else {
		this.x = x ? x : 0;
		this.y = y ? y : 0;
		this.w = w ? w : 0;
		this.h = h ? h : 0;
	}
}
 
// Determines if this rectangle is empty
Rect.prototype.isEmpty = function() {
	return !this.w || !this.h;
}
 
// Returns the smallest rectangle that contains both this and the source rectangles
Rect.prototype.union = function(src) {
	if(this.isEmpty())
		return new Rect(src);
	if(src.isEmpty())
		return new Rect(this);
	var r = new Rect(Math.min(this.x,src.x),Math.min(this.y,src.y));
	r.w = Math.max(this.x+this.w-r.x,src.x+src.w-r.x);
	r.h = Math.max(this.y+this.h-r.y,src.y+src.h-r.y);
	return r;
}
 
// Determines if the source rectangle is completely contained within this rectangle
Rect.prototype.contains = function(src) {
	return (src.x &gt; this.x) &amp;&amp; ((this.x+this.w) &gt; (src.x+src.w))
		&amp;&amp; (src.y &gt; this.y) &amp;&amp; ((this.y+this.h) &gt; (src.y+src.h));
}
 
// Interpolates between this (t=0) and the source retangle (t=1)
Rect.prototype.interpolateLinear = function(t,src) {
	return new Rect(interpolateLinear(t,this.x,src.x), interpolateLinear(t,this.y,src.y),
		interpolateLinear(t,this.w,src.w), interpolateLinear(t,this.h,src.h));
}
 
// Interpolates between this (t=0) and the source rectangle (t=1) and a passing rectangle (t=0.5)
Rect.prototype.interpolateQuad = function(t,src,passing) {
	return new Rect(interpolateQuad(t,this.x,passing.x,src.x), interpolateQuad(t,this.y,passing.y,src.y),
					interpolateQuad(t,this.w,passing.w,src.w), interpolateQuad(t,this.h,passing.h,src.h));
}
 
// Scales a rectangle around it's centre
Rect.prototype.scale = function(scale) {
	var w = this.w * scale;
	var h = this.h * scale;
	return new Rect(this.x - (w-this.w)/2,this.y - (h-this.h)/2,w,h);
}
 
// Returns the midpoint of a rectangle
Rect.prototype.midPoint = function() {
	return new Point(this.x + this.w/2, this.y + this.h/2);
}
 
//-----------------------------------------------------------------------------------
// Generic DOM helper functions
//-----------------------------------------------------------------------------------
 
// Given a point in the coordinates of a target element, compute the coordinates relative to a specified base element
function normalisePoint(base,target,pt) {
	var e = target;
	var r = new Point(pt.x,pt.y);
	var parent = target.offsetParent;
	while(e &amp;&amp; e !== base) {
		if(e == parent) {
			r.x += parent.offsetLeft;
			r.y += parent.offsetTop;
			parent = parent.offsetParent;
		}
		e = e.parentNode;
	}
	if(e == base)
		return r;
	else
		return null;
}
 
// Checks which of an array of classes are applied to a given element. Returns an array of the classes that are found
function hasClasses(e,classNames)
{
	var classes = e.className ? e.className.split(&quot; &quot;) : [];
	var results = [];
	for(var t=0; t&lt;classNames.length; t++) {
		if(classes.indexOf(classNames[t]) != -1) {
			results.push(classNames[t]);
		}
	}
	return results;
}
 
//-----------------------------------------------------------------------------------
// Slider control
//-----------------------------------------------------------------------------------
 
// The slider control is constructed with a sliderInfo object that can contain the following keys:
//   place: DOM node to which the slider control is appended as a new child
//   min: Minimum value (integer)
//   max: Maximum value (integer)
//   getterTransform: function to convert internal slider values when reading them
//   setterTransform: function to convert to internal slider value when setting them
//   onChange: function(value) called when the slider moves
function SliderControl(sliderInfo) {
	merge(this,sliderInfo);
	if(!this.getterTransform)
		this.getterTransform = function(x) {return x;};
	if(!this.setterTransform)
		this.setterTransform = function(x) {return x;};
	this.slider = createTiddlyElement(this.place,&quot;input&quot;);
	this.slider.type = &quot;range&quot;;
	this.slider.min = this.min;
	this.slider.max = this.max;
	this.slider.style[&quot;-webkit-appearance&quot;] = &quot;slider-horizontal&quot;;
	var me = this;
	var handler = function (ev) {
		me.onChange(me.getterTransform(parseInt(me.slider.value,10)));
	};
	this.slider.oninput = handler;
	this.slider.onchange = handler;
}
 
SliderControl.prototype.set = function(value) {
	var n = this.setterTransform(value).toString();
	if(this.slider.value != n)
		this.slider.value = n;
};
 
//-----------------------------------------------------------------------------------
// cecilyTransform mechanism
//-----------------------------------------------------------------------------------
 
// Set up an element to be transformed
function cecilyTransform(element)
{
	addClass(element,&quot;cecilyTransform&quot;);
	element.cecilyTransform = this;
	this.element = element;
	this.originalWidth = element.offsetWidth;
	this.bounds = new Rect(0,0,this.originalWidth,element.offsetHeight);
	this.rotate = 0;
	this.enlarge = 1;
}
 
// Applies any of these transformations over the top of prevailing ones
//   transforms.bounds = Rect() of bounds of element
//   transforms.rotate = numeric radian rotation applied to element around centre
//   transforms.enlarge = numeric scale factor applied after sizing
cecilyTransform.prototype.transform = function(transforms) {
	if(transforms.bounds !== undefined)
		this.bounds = new Rect(transforms.bounds);
	if(transforms.rotate !== undefined)
		this.rotate = transforms.rotate;
	if(transforms.enlarge !== undefined)
		this.enlarge = transforms.enlarge;
	var s = this.bounds.w / this.originalWidth;
	this.element.style[Cecily.cssTransform] =
			&quot;translate(-50%,-50%) &quot; +
			&quot;scale(&quot; + s + &quot;,&quot; + s + &quot;) &quot; +
			&quot;translate(50%,50%) &quot; +
			&quot;translate(&quot; + this.bounds.x / s + &quot;px,&quot; + this.bounds.y / s + &quot;px) &quot; +
			&quot;rotate(&quot; + this.rotate + &quot;rad) &quot; +
			&quot;scale(&quot; + this.enlarge + &quot;)&quot;;
};
 
// Updates the bounds to account for text flow
cecilyTransform.prototype.getFlowedBounds = function() {
	this.bounds.h = this.element.offsetHeight * (this.bounds.w / this.element.offsetWidth);
	return new Rect(this.bounds);
};
 
//-----------------------------------------------------------------------------------
// cecilyViewer mechanism
//-----------------------------------------------------------------------------------
 
// Set up a zoomable viewer
//   frameElement - frame element that contains the zoomable sheet
//   sheetElement - child element of frame that is panned and zoomed within the frame
//	 backgroundName - name of background to use
function cecilyViewer(frameElement,sheetElement,backgroundName)
{
	addClass(frameElement,&quot;cecilyViewer&quot;);
	frameElement.cecilyViewer = this;
	this.frameElement = frameElement;
	this.sheetElement = sheetElement;
	this.viewBounds = new Rect(0,0,100,100);
	this.createBackground();
	this.setBackground(backgroundName);
	this.drawBackground(this.viewBounds);
}
 
// Moves the viewport to accommodate the specified rectangle
cecilyViewer.prototype.setView = function(newBounds) {
	this.viewBounds = newBounds;
	var w = this.frameElement.offsetWidth;
	var h = this.frameElement.offsetHeight;
	var centre = newBounds.midPoint();
	this.viewBounds = new Rect(newBounds);
	if((w/h) &gt; (newBounds.w/newBounds.h)) {
		this.viewBounds.w = newBounds.h * (w/h);
	} else {
		this.viewBounds.h = newBounds.w * (h/w);
	}
	this.viewBounds.x = centre.x - this.viewBounds.w/2;
	this.viewBounds.y = centre.y - this.viewBounds.h/2;
	var s = w/this.viewBounds.w;
	var transform = &quot;scale(&quot; + s + &quot;) translate(&quot; + -this.viewBounds.x + &quot;px,&quot; + -this.viewBounds.y + &quot;px)&quot;;
	this.sheetElement.style[Cecily.cssTransform] = transform;
	config.macros.cecilyZoom.propagate(s);
	this.drawBackground();
}
 
// Resize the viewer
cecilyViewer.prototype.onResize = function() {
	this.canvasElement.width = this.frameElement.offsetWidth;
	this.canvasElement.height = this.frameElement.offsetHeight;
}
 
// Set up a background canvas
cecilyViewer.prototype.createBackground = function()
{
	var w = this.frameElement.offsetWidth;
	var h = this.frameElement.offsetHeight;
	this.canvasElement = createTiddlyElement(null,&quot;canvas&quot;,null,&quot;cecilyCanvas&quot;);
	this.canvasElement.width = w;
	this.canvasElement.height = h;
	this.frameElement.insertBefore(this.canvasElement,this.frameElement.firstChild);
}
 
// Sets a new background
cecilyViewer.prototype.setBackground = function(backgroundName) {
	this.backgroundName = backgroundName;
	this.background = Cecily.backgrounds[backgroundName];
}
 
cecilyViewer.prototype.getBackground = function() {
	return this.backgroundName;
}
 
// Draws the current background
cecilyViewer.prototype.drawBackground = function() {
	if(this.background &amp;&amp; this.background.drawBackground) {
		this.background.drawBackground(this.canvasElement,this.viewBounds);
	} else {
		var ctx = this.canvasElement.getContext('2d');
		ctx.fillStyle = &quot;#eecccc&quot;;
		ctx.fillRect(0, 0, this.canvasElement.width, this.canvasElement.height);
	}
};
 
//-----------------------------------------------------------------------------------
// Zoom macro
//-----------------------------------------------------------------------------------
 
config.macros.cecilyZoom = {};
 
config.macros.cecilyZoom.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	var zoomElem = createTiddlyElement(place,&quot;span&quot;,null,&quot;cecilyLabel cecilyZoom&quot;,&quot;zoom &quot;);
	var me = this;
	zoomElem.sliderControl = new SliderControl({
		place: place,
		min: 0,
		max: 100,
		getterTransform: function(slider) {
			return Math.pow(Math.E,(slider/100)*12-6);
		},
		setterTransform: function(value) {
			var n = ((Math.log(value)+6)/12)*100;
			n = Math.min(100,Math.max(0,Math.floor(n + 0.5)));
			return n;
		},
		onChange: function(value) {
			if(cecily) {
				var w = cecily.frame.offsetWidth;
				var h = cecily.frame.offsetHeight;
				var cx = cecily.viewer.viewBounds.x + cecily.viewer.viewBounds.w/2;
				var cy = cecily.viewer.viewBounds.y + cecily.viewer.viewBounds.h/2;
				var newView = new Rect(0,0,w / value,h / value);
				newView.x = cx - newView.w/2;
				newView.y = cy - newView.h/2;
				cecily.viewer.setView(newView);
			}
		}
	});
}
 
config.macros.cecilyZoom.propagate = function(scale) {
	var zoomers = document.getElementsByClassName(&quot;cecilyZoom&quot;);
	for(var t = 0; t &lt; zoomers.length; t++) {
		zoomers[t].sliderControl.set(scale);
	}
}
 
//-----------------------------------------------------------------------------------
// Zoom All macro
//-----------------------------------------------------------------------------------
 
config.macros.cecilyZoomAll = {};
 
config.macros.cecilyZoomAll.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	createTiddlyButton(place,&quot;zoom everything&quot;,&quot;Zoom out to see everything&quot;,function(ev) {
		if(cecily)
			cecily.scrollToAllTiddlers();
	});
}
 
//-----------------------------------------------------------------------------------
// Switch background macro
//-----------------------------------------------------------------------------------
 
config.macros.cecilyBackground = {
};
 
config.macros.cecilyBackground.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	if(cecily) {
		createTiddlyElement(place,&quot;span&quot;,null,&quot;cecilyLabel&quot;,&quot;background &quot;);
		var onchange = function(ev) {
			var sel = this.options[this.selectedIndex].value;
			if(sel != cecily.viewer.getBackground()) {
				cecily.setBackground(sel);
			}
		};
		var options = [];
		for(var t in Cecily.backgrounds) {
			options.push({name: t, caption: Cecily.backgrounds[t].title});
		}
		var d = createTiddlyDropDown(place,onchange,options,cecily.viewer.getBackground());
		addClass(d,&quot;cecilyBackground&quot;);
	}
};
 
config.macros.cecilyBackground.propagate = function(background) {
	var backgrounders = document.getElementsByClassName(&quot;cecilyBackground&quot;);
	for(var k=0; k&lt;backgrounders.length; k++) {
		var b = backgrounders[k];
		for(var s=0; s&lt;b.options.length; s++) {
			if(b.options[s].value === background &amp;&amp; b.selectedIndex !== s)
				b.selectedIndex = s;
		}
	}
};
 
//-----------------------------------------------------------------------------------
// Switch map macro
//-----------------------------------------------------------------------------------
 
config.macros.cecilyMap = {
};
 
config.macros.cecilyMap.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	if(cecily) {
		createTiddlyElement(place,&quot;span&quot;,null,&quot;cecilyLabel&quot;,&quot;map &quot;);
		var onchange = function(ev) {
			var sel = this.options[this.selectedIndex].value;
			if(sel != cecily.mapTitle) {
				cecily.setMap(sel);
			}
			cecily.scrollToAllTiddlers();
		};
		var options = [];
		var mapTiddlers = store.getTaggedTiddlers(&quot;cecilyMap&quot;)
		for(var t=0; t&lt;mapTiddlers.length; t++) {
			options.push({name: mapTiddlers[t].title, caption: mapTiddlers[t].title});
		}
		var d = createTiddlyDropDown(place,onchange,options,cecily.mapTitle);
		addClass(d,&quot;cecilyMap&quot;);
	}
};
 
config.macros.cecilyMap.propagate = function(map) {
	var mappers = document.getElementsByClassName(&quot;cecilyMap&quot;);
	for(var k=0; k&lt;mappers.length; k++) {
		var m = mappers[k];
		for(var s=0; s&lt;m.options.length; s++) {
			if(m.options[s].value === map &amp;&amp; m.selectedIndex !== s)
				m.selectedIndex = s;
		}
	}
};
 
//-----------------------------------------------------------------------------------
// Cecily main class
//-----------------------------------------------------------------------------------
 
function Cecily()
{
	this.mapTitle = config.options.txtCecilyMap ? config.options.txtCecilyMap : &quot;MyMap&quot;;
	this.drag = null;
	this.map = null;
}
 
Cecily.prototype.createDisplay = function() {
	this.overlayMenu = document.getElementById(&quot;overlayMenu&quot;);
	jQuery(this.overlayMenu).bind(&quot;mouseleave&quot;,this,this.onMouseLeaveOverlay);
	this.loadMap(this.mapTitle);
	this.container = document.getElementById(story.containerId());
	this.frame = this.container.parentNode;
	addClass(this.frame,&quot;cecily&quot;);
	this.setViewSize();
	
	var background = config.options.txtCecilyBackground ? config.options.txtCecilyBackground : &quot;plain&quot;;
	this.viewer = new cecilyViewer(this.frame,this.container,background);
	
	this.viewer.setView(new Rect(0,0,250,120));
	
	this.initScroller();
	var me = this;
	this.addEventHandler(window,&quot;resize&quot;,this.onWindowResize,false);
	this.addEventHandler(window,&quot;mousewheel&quot;,this.onMouseWheel,true);
	this.addEventHandler(document,&quot;click&quot;,this.onMouseClickBubble,false);
	this.addEventHandler(document,&quot;dblclick&quot;,this.onMouseDoubleClickBubble,false);
	this.addEventHandler(document,&quot;mousedown&quot;,this.onMouseDownCapture,true);
	this.addEventHandler(document,&quot;mousemove&quot;,this.onMouseMoveCapture,true);
	this.addEventHandler(document,&quot;mouseup&quot;,this.onMouseUpCapture,true);
	this.defaultTiddler = null;
	window.setTimeout(function() {me.scrollToTiddler(me.defaultTiddler);},10);
}
 
Cecily.prototype.setViewSize = function() {
	var h = findWindowHeight();
	this.frame.style.height = h + &quot;px&quot;;
}
 
Cecily.prototype.addEventHandler = function(element,type,handler,capture) {
	var me = this;
	element.addEventListener(type,function (ev) {
		// Safari has offsetX/Y
		// Firefox has layerX/Y
		if(ev.offsetX === undefined)
			ev.offsetX = ev.layerX;
		if(ev.offsetY === undefined)
			ev.offsetY = ev.layerY;
		if(ev.toElement === undefined)
			ev.toElement = ev.relatedTarget;
		return handler.call(me,ev);
		},capture);
}
 
Cecily.prototype.onWindowResize = function(ev) {
	this.setViewSize();
	this.viewer.onResize();
	this.viewer.drawBackground();
	return false;
}
 
Cecily.prototype.onMouseWheel = function(ev) {
	var newView = new Rect(this.viewer.viewBounds);
	newView.x -= (ev.wheelDeltaX/120) * (this.viewer.viewBounds.w/16);
	newView.y -= (ev.wheelDeltaY/120) * (this.viewer.viewBounds.w/16);
	this.viewer.setView(newView);
	return false;
};
 
Cecily.prototype.onMouseClickBubble = function(ev) {
	var tiddler = story.findContainingTiddler(ev.target);
	if(tiddler &amp;&amp; this.drag === null &amp;&amp; hasClasses(ev.target,[&quot;tiddlyLink&quot;,&quot;toolbar&quot;,&quot;title&quot;,&quot;tagged&quot;]).length == 0) {
		// The next bit is equivalent to tiddler.parentNode.insertBefore(tiddler,null); but avoids moving
		// the element that was clicked on
		while(tiddler.nextSibling) {
			tiddler.parentNode.insertBefore(tiddler.nextSibling,tiddler);
		}
		this.scrollToTiddler(tiddler); 
	}
	return true;
};
 
Cecily.prototype.onMouseDoubleClickBubble = function(ev) {
	this.showOverlayMenu(new Point(ev.offsetX,ev.offsetY));
};
 
Cecily.prototype.onMouseDownCapture = function(ev) {
	for(var d=0; d&lt;Cecily.draggerList.length; d++) {
		var dragger = Cecily.draggers[Cecily.draggerList[d]];
		if(dragger.isDrag(this,ev.target,ev)) {
			this.drag = {dragger: dragger};
			dragger.dragDown(this,ev.target,ev);
			break;
		}
	}
	if(this.drag !== null) {
		ev.stopPropagation();
		ev.preventDefault();
		return false;
	}
};
 
Cecily.prototype.onMouseMoveCapture = function(ev) {
	if(this.drag) {
		this.drag.dragger.dragMove(this,ev.target,ev);
		ev.stopPropagation();
		ev.preventDefault();
		return false;
	}
};
 
Cecily.prototype.onMouseUpCapture = function(ev) {
	if(this.drag) {
		this.drag.dragger.dragUp(this,ev.target,ev);
		this.drag = null;
		ev.stopPropagation();
		ev.preventDefault();
		return false;
	}
};
 
Cecily.draggers = {};
Cecily.draggerList = [&quot;tiddlerDragger&quot;,&quot;tiddlerResizer&quot;,&quot;backgroundDragger&quot;];
 
Cecily.draggers.tiddlerDragger = {
	isDrag: function(cecily,target,ev) {
		return hasClass(target,&quot;toolbar&quot;) || hasClass(target,&quot;title&quot;);
	},
	dragDown: function(cecily,target,ev) {
		var tiddler = story.findContainingTiddler(target);
		tiddler.parentNode.insertBefore(tiddler,null);
		cecily.drag.tiddler = tiddler;
		cecily.drag.tiddlerTitle = tiddler.getAttribute(&quot;tiddler&quot;);
		cecily.drag.lastPoint = new Point(ev.pageX,ev.pageY);
		addClass(tiddler,&quot;drag&quot;);
	},
	dragMove: function(cecily,target,ev) {
		var dragThis = new Point(ev.pageX,ev.pageY);
		if(dragThis) {
			var s = cecily.frame.offsetWidth/cecily.viewer.viewBounds.w;
			var pos = new Rect(cecily.drag.tiddler.cecilyTransform.bounds.x + (dragThis.x - cecily.drag.lastPoint.x) / s,
								cecily.drag.tiddler.cecilyTransform.bounds.y + (dragThis.y - cecily.drag.lastPoint.y) / s,
								cecily.drag.tiddler.cecilyTransform.bounds.w, cecily.drag.tiddler.cecilyTransform.bounds.h);
			cecily.drag.tiddler.cecilyTransform.transform({bounds: pos});
			cecily.drag.lastPoint = dragThis;
		}
	},
	dragUp: function(cecily,target,ev) {
		removeClass(cecily.drag.tiddler,&quot;drag&quot;);
		cecily.updateTiddlerPosition(cecily.drag.tiddlerTitle,cecily.drag.tiddler);
	}
};
 
Cecily.draggers.tiddlerResizer = {
	isDrag: function(cecily,target,ev) {
		return findRelated(target,&quot;tagged&quot;,&quot;className&quot;,&quot;parentNode&quot;) !== null;
	},
	dragDown: function(cecily,target,ev) {
		var tiddler = story.findContainingTiddler(target);
		tiddler.parentNode.insertBefore(tiddler,null);
		cecily.drag.tiddler = tiddler;
		cecily.drag.tiddlerTitle = tiddler.getAttribute(&quot;tiddler&quot;);
		cecily.drag.startPoint = new Point(ev.pageX,ev.pageY);
		cecily.drag.startWidth = tiddler.cecilyTransform.bounds.w;
		addClass(tiddler,&quot;drag&quot;);
	},
	dragMove: function(cecily,target,ev) {
		var s = cecily.frame.offsetWidth/cecily.viewer.viewBounds.w;
		var dragThis = new Point(ev.pageX,ev.pageY);
		if(dragThis) {
			var pos = new Rect(cecily.drag.tiddler.cecilyTransform.bounds);
			pos.w = cecily.drag.startWidth + (dragThis.x - cecily.drag.startPoint.x) / s;
			if(pos.w &lt; 0.01)
				pos.w = 0.01;
			cecily.drag.tiddler.cecilyTransform.transform({bounds: pos});
		}
	},
	dragUp: function(cecily,target,ev) {
		removeClass(cecily.drag.tiddler,&quot;drag&quot;);
		cecily.updateTiddlerPosition(cecily.drag.tiddlerTitle,cecily.drag.tiddler);
	}
};
 
Cecily.draggers.backgroundDragger = {
	isDrag: function(cecily,target,ev) {
		return target === cecily.viewer.canvasElement;
	},
	dragDown: function(cecily,target,ev) {
		cecily.drag.lastPoint = {x: ev.pageX, y: ev.pageY};
	},
	dragMove: function(cecily,target,ev) {
		var s = cecily.frame.offsetWidth/cecily.viewer.viewBounds.w;
		var newView = new Rect(cecily.viewer.viewBounds);
		newView.x -= (ev.pageX - cecily.drag.lastPoint.x)/s;
		newView.y -= (ev.pageY - cecily.drag.lastPoint.y)/s;
		cecily.drag.lastPoint = {x: ev.pageX, y: ev.pageY};
		cecily.viewer.setView(newView);
	},
	dragUp: function(cecily,target,ev) {
	}
};
 
Cecily.prototype.showOverlayMenu = function(pos)
{
	this.overlayMenu.style.display = &quot;block&quot;;
	var overlayPos = new Rect(pos.x - this.overlayMenu.offsetWidth/2,pos.y - this.overlayMenu.offsetHeight/2,
							this.overlayMenu.offsetWidth,this.overlayMenu.offsetHeight);
	var w = this.frame.offsetWidth;
	var h = this.frame.offsetHeight;
	if(overlayPos.w &gt; w || overlayPos.h &gt; h) {
		overlayPos = overlayPos.scale(Math.min(w/overlayPos.w,h/overlayPos.h));
	}
	if(overlayPos.x &lt; 0)
		overlayPos.x = 0;
	if(overlayPos.y &lt; 0)
		overlayPos.y = 0;
	if(overlayPos.x + overlayPos.w &gt; w)
		overlayPos.x = w - overlayPos.w;
	if(overlayPos.y + overlayPos.h &gt; h)
		overlayPos.y = h - overlayPos.h;
	var scale = overlayPos.h / this.overlayMenu.offsetHeight;
	this.overlayMenu.style[Cecily.cssTransform] = &quot;scale(&quot; + scale + &quot;,&quot; + scale + &quot;)&quot;;
	this.overlayMenu.style.left = overlayPos.x + &quot;px&quot;;
	this.overlayMenu.style.top = overlayPos.y + &quot;px&quot;;
	this.overlayMenu.style.opacity = &quot;0.9&quot;;
};
 
Cecily.prototype.onMouseLeaveOverlay = function(ev)
{
	var cecily = ev.data;
	jQuery(cecily.overlayMenu).css({
		'opacity' : '0.0',
		'display' : 'none'});
};
 
// Display a given tiddler with a given template. If the tiddler is already displayed but with a different
// template, it is switched to the specified template. If the tiddler does not exist, and if server hosting
// custom fields were provided, then an attempt is made to retrieve the tiddler from the server
// srcElement - reference to element from which this one is being opened -or-
//              special positions &quot;top&quot;, &quot;bottom&quot;
// tiddler - tiddler or title of tiddler to display
// template - the name of the tiddler containing the template -or-
//            one of the constants DEFAULT_VIEW_TEMPLATE and DEFAULT_EDIT_TEMPLATE -or-
//            null or undefined to indicate the current template if there is one, DEFAULT_VIEW_TEMPLATE if not
// animate - whether to perform animations
// customFields - an optional list of name:&quot;value&quot; pairs to be assigned as tiddler fields (for edit templates)
// toggle - if true, causes the tiddler to be closed if it is already opened
Cecily.prototype.displayTiddler = function(superFunction,args) {
	var tiddler = args[1];
	var srcElement = args[0];
	args[0] = &quot;bottom&quot;; // srcElement to disable animation and scrolling
	var title = (tiddler instanceof Tiddler) ? tiddler.title : tiddler;
	var tiddlerElemBefore = story.getTiddler(title);
	superFunction.apply(story,args);
	var tiddlerElem = story.getTiddler(title);
	if(!tiddlerElem)
	 	return;
	var pos = this.getTiddlerPosition(title,srcElement);
	var transform = new cecilyTransform(tiddlerElem);
	transform.transform({bounds: pos});
	this.updateTiddlerPosition(title,tiddlerElem);
	if(!startingUp) {
		if(tiddlerElem.nextSibling) { // Move tiddler to the bottom of the Z-order if it's not already there
			tiddlerElem.parentNode.insertBefore(tiddlerElem,null);
		}
		this.scrollToTiddler(title);
	}
	this.defaultTiddler = tiddlerElem;
};
 
// Load the current map from a named tiddler
Cecily.prototype.loadMap = function(title) {
	this.map = {};
	var mapText = store.getTiddlerText(title,&quot;&quot;);
    var positionRE = /^(\S+)\s(-?[0-9\.E]+)\s(-?[0-9\.E]+)\s(-?[0-9\.E]+)\s(-?[0-9\.E]+)$/mg;
    do {
        var match = positionRE.exec(mapText);
		if(match) {
			var title = decodeURIComponent(match[1]);
			this.map[title] = {
				x: parseFloat(match[2]),
				y: parseFloat(match[3]),
				w: parseFloat(match[4]),
				h: parseFloat(match[5])
			};
		}
	} while(match);
}
 
// Save the current map into a named tiddler
Cecily.prototype.saveMap = function(title) {
	var mapTiddler = store.getTiddler(title);
	if((mapTiddler == null) || (mapTiddler.isTagged(&quot;cecilyMap&quot;))) {
		var text = [];
		for(var t in this.map) {
			var m = this.map[t];
			text.push(encodeURIComponent(t) + &quot; &quot; + Math.floor(m.x) + &quot; &quot; + Math.floor(m.y) + &quot; &quot; + Math.floor(m.w) + &quot; &quot; + Math.floor(m.h));
		}
		text.sort();
		store.saveTiddler(title,title,text.join(&quot;\n&quot;),&quot;Cecily&quot;);
		autoSaveChanges(null,[mapTiddler]);
	}
}
 
// Gets the Rect() position of a named tiddler
Cecily.prototype.getTiddlerPosition = function(title,srcElement) {
	var p = this.map[title];
	if(p)
		return new Rect(p.x,p.y,p.w,p.h);
	else {
		this.nextPos = this.nextPos ? this.nextPos + 250 : 250;
		return new Rect(this.nextPos,500,225,250);
	}
}
 
// Updates the position of a named tiddler into the current map
Cecily.prototype.updateTiddlerPosition = function(title,tiddlerElem) {
	this.map[title] = tiddlerElem.cecilyTransform.getFlowedBounds();
	this.saveMap(this.mapTitle);
}
 
// Switch to a new map
Cecily.prototype.setMap = function(title)
{
	this.mapTitle = title;
	config.options.txtCecilyMap = title;
	saveOptionCookie(&quot;txtCecilyMap&quot;);
	this.loadMap(title);
	var me = this;
	story.forEachTiddler(function(tiddler,elem) {
		var pos = me.getTiddlerPosition(tiddler);
		elem.cecilyTransform.transform({bounds: pos});
	});
	this.viewer.drawBackground();
	config.macros.cecilyMap.propagate(title);
}
 
Cecily.prototype.startHightlight = function(elem) {
	var me = this;
	var animationStart = new Date();
	var animationDuration = 3 * 1000;
	var highlight = {};
	var highlightElem = findRelated(elem.firstChild,&quot;viewer&quot;,&quot;className&quot;,&quot;nextSibling&quot;);
	highlight.tick = function() {
		if(!highlightElem.parentNode)
			return false;
		var now = new Date();
		var t = (now - animationStart) / animationDuration;
		if(t &lt; 1) {
			var p = (Math.sin(t*Math.PI*4 + Math.PI/2)+1)/2;
			highlightElem.style.backgroundColor = (new RGB(&quot;#ffff88&quot;)).mix(new RGB(&quot;#ffffff&quot;),(p+1)/2).toString();
			return true;
		} else {
			highlightElem.style.backgroundColor = &quot;&quot;;
			return false;
		}
	}
	if(highlightElem)
		anim.startAnimating(highlight);
};
 
Cecily.prototype.scrollToAllTiddlers = function() {
	var currRect = null;
	story.forEachTiddler(function (title,tiddlerElem) {
		var tiddlerRect = new Rect(tiddlerElem.cecilyTransform.getFlowedBounds());
		if(!currRect)
			currRect = tiddlerRect;
		else
			currRect = tiddlerRect.union(currRect);
	});
	if(currRect)
		this.startScroller([currRect.scale(1.2)]);
};
 
// Highlight a particular tiddler and scroll it into view
//  tiddler - title of tiddler or reference to tiddlers DOM element
Cecily.prototype.scrollToTiddler = function(tiddler) {
	var tiddlerElem = typeof tiddler == &quot;string&quot; ? story.getTiddler(tiddler) : tiddler;
	if(tiddlerElem) {
		this.startHightlight(tiddlerElem);
		var targetRect = new Rect(tiddlerElem.cecilyTransform.getFlowedBounds());
		if(this.viewer.viewBounds.contains(targetRect)) {
			this.startScroller([targetRect.scale(1.2)]);
		} else {
			var passingRect = this.viewer.viewBounds.union(targetRect);
			this.startScroller([passingRect.scale(1.1),targetRect.scale(1.2)]);
		}
	}
}
 
Cecily.prototype.initScroller = function() {
	var me = this;
	this.scroller = {
		scrolling: false
	};
	var s = this.scroller;
	me.scroller.tick = function() {
		var now = new Date();
		var t = (now - s.animationStart) / s.animationDuration;
		if(t &gt; 1)
			t = 1;
		switch(s.rectList.length) {
			case 2:
				me.viewer.setView(s.rectList[0].interpolateLinear(t,s.rectList[1]));
				break;
			case 3:
				me.viewer.setView(s.rectList[0].interpolateQuad(t,s.rectList[2],s.rectList[1]));
				break;
		}
		if(t == 1) {
			s.scrolling = false;
			return false;
		} else
			return true;
	};
};
 
Cecily.prototype.startScroller = function(rectList,duration) { // One or more rectangles to scroll to in turn
	var s = this.scroller;
	s.rectList = [this.viewer.viewBounds];
	for(var r = 0; r &lt; Math.min(rectList.length,2); r++)
		s.rectList.push(rectList[r]);
	s.animationStart = new Date();
	s.animationDuration = duration ? duration : 0.75 * 1000;
	s.currRect = 0;
	if(!s.scrolling) {
		s.scrolling = true;
		anim.startAnimating(s);
	}
};
 
Cecily.prototype.setBackground = function(background) {
	config.options.txtCecilyBackground = background;
	saveOptionCookie(&quot;txtCecilyBackground&quot;);
	this.viewer.setBackground(background);
	this.viewer.drawBackground();
	config.macros.cecilyBackground.propagate(background);
};
 
//-----------------------------------------------------------------------------------
// Background plumbing and generators
//-----------------------------------------------------------------------------------
 
Cecily.backgrounds = {};
 
Cecily.backgrounds.plain = {
		title: &quot;Plain&quot;,
		description: &quot;Plain&quot;,
		drawBackground: function(canvas,view) {
			var w = canvas.width;
			var h = canvas.height;
			var ctx = canvas.getContext('2d');
			ctx.fillStyle = &quot;#aaaacc&quot;;
			ctx.fillRect(0, 0, w, h);
		}
};
 
Cecily.backgrounds.fractal = {
		title: &quot;Fractal&quot;,
		description: &quot;Fractal cracks&quot;,
		drawBackground: function(canvas,view) {
			var w = canvas.width;
			var h = canvas.height;
			var scale = w/view.w;
			var ctx = canvas.getContext('2d');
			ctx.fillStyle = &quot;#cc8888&quot;;
			ctx.fillRect(0, 0, w, h);
			var Turtle = function Turtle(x,y,direction) {
				this.x = x ? x : 0;
				this.y = y ? y : 0;
				this.direction = direction ? direction : 0;
			};
			Turtle.prototype.line = function(d) {
					this.x += Math.sin(this.direction) * d;
					this.y -= Math.cos(this.direction) * d;
				};
			Turtle.prototype.turn = function(a) {
					this.direction += a;
				};
			// Gosper curve as a series of angles to turn (in degrees anti clockwise, for humans)
			var fractalPath =  [0,300,240,60,120,0,60]; // [0,-60,60,-240,240];
			// Work out the overall angle and length of the curve
			var turtle = new Turtle(0,0,0);
			for(var t=0; t&lt;fractalPath.length; t++) {
				turtle.turn(fractalPath[t] / 180 * Math.PI);
				turtle.line(1);
			}
			var fractalAngle = Math.atan2(turtle.y,turtle.x);
			var fractalLength = Math.sqrt(Math.pow(turtle.x,2)+Math.pow(turtle.y,2));
			// Recursive function to draw a generation of the curve
			var drawLeg = function drawLeg(p1,p2,depth) {
				// Work out the angle and length required
				var legLength = Math.sqrt(Math.pow(p2.x-p1.x,2)+Math.pow(p2.y-p1.y,2));
				var legAngle = Math.atan2(p2.y-p1.y,p2.x-p1.x);
				// Initialise the turtle
				var legScale = legLength / fractalLength;
				var turtle = new Turtle(p1.x,p1.y,legAngle);
				turtle.turn(-fractalAngle);
				// Step through the curve
				for(var t=0; t&lt;fractalPath.length; t++) {
					var prevX = turtle.x;
					var prevY = turtle.y;
					turtle.turn(fractalPath[t] / 180 * Math.PI);
					turtle.line(legScale);
					if(depth &gt; 0)
						drawLeg(new Point(prevX,prevY),new Point(turtle.x,turtle.y),depth - 1);
					ctx.lineTo(turtle.x,turtle.y);
				}
			}
			var drawCircle = function(x,y,r) {
				var radgrad = ctx.createRadialGradient(x,y,r,x-r/3,y-r/3,1);
				radgrad.addColorStop(0, '#8888cc');
				radgrad.addColorStop(0.9, '#f0f0ff');
				radgrad.addColorStop(1, '#ffffff');
				ctx.fillStyle = radgrad;
				ctx.beginPath();
				ctx.arc(x,y,r,0,2*Math.PI,0);
				ctx.fill();
			}
			var scale = w/view.w;
			// Get the position of the canvas on the plane
			var px = view.x + view.w/2 - (w/2) / scale;
			var py = view.y + view.h/2 - (h/2) / scale;
			var pw = w / scale;
			var ph = h / scale;
			// Map coordinates
			var p1 = new Point(-430,11);
			var p2 = new Point(1530,674);
			var x = 100;
			var y = 100;
			var r = 500;
			// To 0..1,0..1 for viewport
			p1.x = (p1.x - px)/pw;
			p1.y = (p1.y - py)/ph;
			p2.x = (p2.x - px)/pw;
			p2.y = (p2.y - py)/ph;
			
			x = (x - px)/pw;
			y = (y - py)/ph;
			r = r / pw;
			// To x,y for canvas
			x = x * w;
			y = y * h;
			r = r * w;
			
			p1.x = p1.x * w;
			p1.y = p1.y * h;
			p2.x = p2.x * w;
			p2.y = p2.y * h;
			
			// Draw the circle
			drawCircle(x,y,r);
			// Draw the curve
			ctx.strokeStyle = &quot;#0ff&quot;;
			ctx.lineWidth = 1;
			ctx.beginPath();
			ctx.moveTo(p1.x,p1.y);
			drawLeg(p1,p2,3);
			ctx.stroke();
			// Draw the curve
			ctx.strokeStyle = &quot;#F00&quot;;
			ctx.lineWidth = 1;
			ctx.beginPath();
			ctx.moveTo(p1.x,p1.y);
			drawLeg(p1,p2,2);
			ctx.stroke();
			// Draw the curve
			ctx.strokeStyle = &quot;#Ff0&quot;;
			ctx.lineWidth = 1;
			ctx.beginPath();
			ctx.moveTo(p1.x,p1.y);
			drawLeg(p1,p2,1);
			ctx.stroke();
			// Draw the curve
			ctx.strokeStyle = &quot;#F0f&quot;;
			ctx.lineWidth = 1;
			ctx.beginPath();
			ctx.moveTo(p1.x,p1.y);
			drawLeg(p1,p2,0);
			ctx.stroke();
		}
};
 
Cecily.backgrounds.experimental = {
		title: &quot;Experimental&quot;,
		description: &quot;Experimental scratchpad&quot;,
		drawBackground: function(canvas,view) {
			var w = canvas.width;
			var h = canvas.height;
			var ctx = canvas.getContext('2d');
			ctx.fillStyle = &quot;#cccccc&quot;;
			ctx.fillRect(0, 0, w, h);
			var drawCircle = function(x,y,r) {
				var radgrad = ctx.createRadialGradient(x,y,r,x-r/3,y-r/3,1);
				radgrad.addColorStop(0, '#8888cc');
				radgrad.addColorStop(0.9, '#f0f0ff');
				radgrad.addColorStop(1, '#ffffff');
				ctx.fillStyle = radgrad;
				ctx.beginPath();
				ctx.arc(x,y,r,0,2*Math.PI,0);
				ctx.fill();
			}
			var scale = w/view.w;
			var px = view.x + view.w/2 - (w/2) / scale;
			var py = view.y + view.h/2 - (h/2) / scale;
			var pw = w / scale;
			var ph = h / scale;
			// Map coordinates
			var x = 100;
			var y = 100;
			var r = 500;
			// To 0..1,0..1 for viewport
			x = (x - px)/pw;
			y = (y - py)/ph;
			r = r / pw;
			// To x,y for canvas
			x = x * w;
			y = y * h;
			r = r * w;
			drawCircle(x,y,r);
		}
};
 
Cecily.backgrounds.honeycomb = {
		title: &quot;Honeycomb&quot;,
		description: &quot;Honeycomb balls&quot;,
		drawBackground: function(canvas,view) {
			var w = canvas.width;
			var h = canvas.height;
			var scale = w/view.w;
			var t = ((Math.log(scale)+6)/12);
			t = Math.max(t,0);
			t = Math.min(t,1);
			var ctx = canvas.getContext('2d');
			ctx.fillStyle = &quot;#eeeecc&quot;;
			ctx.fillRect(0, 0, w, h);
			var drawCircle = function(x,y,r,c) {
				ctx.fillStyle = c ? c : '#88ff88';
				ctx.beginPath();
				ctx.arc(x,y,r,0,2*Math.PI,0);
				ctx.fill();
			}
			var modulo = function(num,denom) {
				return num-Math.floor(num/denom)*denom;
			}
			var gapX = 200 * scale;
			var yscale = Math.sin(Math.PI/3)*2;
			var gapY = gapX * yscale;
			var radius = 60 * scale;
			if(gapX &lt; 15) {
				gapX = 15;
				gapY = 15;
			}
			if(radius &lt; 7) {
				radius = 7;
			}
			
			for(var y = -modulo(view.y * scale,gapY) - gapY; y &lt; h + gapY; y += gapY) {
				for(var x = -modulo(view.x * scale,gapX) - gapX; x &lt; w + gapX; x += gapX) {
					drawCircle(x,y,radius,&quot;#ddddbb&quot;);
					drawCircle(x + gapX/2,y + gapY/2,radius,&quot;#ddddbb&quot;);
					/*
					drawCircle(x,y,radius/2,&quot;#555577&quot;);
					drawCircle(x + gapX/4,y + gapY/4,radius/2,&quot;#555577&quot;);
					drawCircle(x + gapX/2,y,radius/2,&quot;#555577&quot;);
					drawCircle(x + gapX/4,y - gapY/4,radius/2,&quot;#555577&quot;);
					drawCircle(x - gapX/4,y + gapY/4,radius/2,&quot;#555577&quot;);
					drawCircle(x - gapX/2,y,radius/2,&quot;#555577&quot;);
					drawCircle(x - gapX/4,y - gapY/4,radius/2,&quot;#555577&quot;);
					drawCircle(x + gapX/2,y + gapY/2,radius/2,&quot;#555577&quot;);
					drawCircle(x + gapX,y + gapY/2,radius/2,&quot;#555577&quot;);
					*/
				}
			}
		}
};
 
//-----------------------------------------------------------------------------------
// Utilities for class substitution
//-----------------------------------------------------------------------------------
 
function overrideMethod(instance,method,override)
{
	var oldFunction = instance[method];
	instance[method] = function () {return override(oldFunction,arguments);};
}
 
//-----------------------------------------------------------------------------------
// Initialisation code (executed during loading of plugin)
//-----------------------------------------------------------------------------------
 
function runCecily()
{
	setStylesheet(store.getRecursiveTiddlerText(tiddler.title + &quot;##StyleSheet&quot;),&quot;cecily&quot;);
	window.cecily = new Cecily();
	overrideMethod(story,&quot;displayTiddler&quot;,function(superFunction,arguments) {cecily.displayTiddler(superFunction,arguments);});
	store.addNotification(&quot;PageTemplate&quot;,function () {cecily.createDisplay();});
}
 
Cecily.cssTransform = null;
if(document.body.style['-webkit-transform'] !== undefined)
	Cecily.cssTransform = '-webkit-transform';
if(document.body.style['MozTransform'] !== undefined)
	Cecily.cssTransform = 'MozTransform';
 
if(Cecily.cssTransform) {
	runCecily();
} else {
	alert(&quot;ProjectCecily currently only works on Safari 3.1, Firefox 3.1 and Google Chrome. Use the WebKit nightly build from http://webkit.org/ for the best experience&quot;);
}
 
} // if(!version.extensions.CecilyPlugin)
 
/***
!StyleSheet
 
body {
	font-family: helvetica,arial;
}
 
#displayArea.cecily {
	float: none;
	margin: 0em 0em 0em 0em;
	position: relative;
	background-color: #ffff88;
	overflow: hidden;
}
 
div#messageArea {
	-webkit-transition: opacity 0.3s ease-in-out;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border: 1px solid #222;
	background-color: [[ColorPalette::SecondaryLight]];
	background-image: -webkit-gradient(linear, left top, left bottom, from([[ColorPalette::SecondaryPale]]), to([[ColorPalette::SecondaryDark]]), color-stop(0.1,[[ColorPalette::SecondaryLight]]), color-stop(0.6,[[ColorPalette::SecondaryMid]]));
	opacity: 0.8;
}
 
div#messageArea:hover {
	opacity: 1.0;
}
 
div#messageArea .button {
	padding: 0 0.25em 0 0.25em;
	text-decoration: none;
	-webkit-transition: opacity 0.3s ease-in-out;
	opacity: 0;
	-webkit-border-radius: 3px;
	-moz-border-radius: 3px;
	background-color: #aaa;
	background: -webkit-gradient(linear, left top, left bottom, from([[ColorPalette::PrimaryLight]]), to([[ColorPalette::PrimaryDark]]), color-stop(0.5,[[ColorPalette::PrimaryMid]]));
	color: [[ColorPalette::TertiaryPale]];
}
 
div#messageArea:hover .button {
	opacity: 1;
}
 
div#messageArea:hover .button:active {
	background-color: [[ColorPalette::Foreground]];
	color: [[ColorPalette::Background]];
}
 
#overlayMenu {
	-webkit-box-shadow: 2px 2px 13px #000;
	-moz-box-shadow: 2px 2px 13px #000;
	-webkit-transition: opacity 0.2s ease-in-out;
	z-index: 100;
	position: absolute;
	padding: 0.1em 0.1em 0.1em 0.1em;
	font-size: 0.8em;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border: 1px solid #666;
	background-color: #bbb;
	background-image: -webkit-gradient(linear, left top, left bottom, from(#999), to(#ddd), color-stop(0.3,#bbb));
	opacity: 0;
	display: none;
}
 
#overlayMenu table.twtable {
	border: none;
}
 
#overlayMenu .twtable th{
	border: none;
}
 
#overlayMenu .twtable td {
	border: none;
}
 
#overlayMenu .twtable tr {
	border: none;
	border-bottom: 1px solid #ccc;
}
 
#overlayMenu a {
	-webkit-transition: color 0.3s ease-in-out;
	text-decoration: none;
	font-weight: bold;
	font-style: normal;
	color: #000;
	background-color: #999;
	border: none;
	margin: 0 0.25em 0 0.25em;
	padding: 3px 3px 3px 3px;
	-webkit-border-radius: 3px;
	-moz-border-radius: 3px;
}
 
#overlayMenu a:hover {
	text-decoration: none;
	font-weight: bold;
	font-style: normal;
	color: #000;
	background-color: #ff0;
	border: none;
}
 
#overlayMenu .overlayCommand {
	font-size: 2em;
	color: #fff;
	text-shadow: #000 2px 2px 3px;
}
 
div#backstageArea {
	position: absolute;
}
 
.cecilyCanvas {
	position: absolute;
	left: 0px;
	top: 0px;
	background-color: #eee;
}
 
#tiddlerDisplay {
	position: relative;
	-webkit-transform-origin: 0% 0%;
	-moz-transform-origin: 0% 0%;
}
 
.cecily .tiddler {
	position: absolute;
	top: 0px;
	left: 0px;
	width: 360px;
	padding: 0;
	background-color: #fff;
	overflow: hidden;
	border: 1px solid black;
}
 
.cecily .tiddler.drag {
	-webkit-box-shadow: 2px 2px 13px #000;
	-moz-box-shadow: 2px 2px 13px #000;
}
 
.cecily .tiddler .heading {
	background-color: #bbb;
	background-image: -webkit-gradient(linear, left top, left bottom,
		from(#fff), color-stop(0.5,#bbb), color-stop(0.51,#aaa), to(#999));
}
 
.cecily .tiddler .toolbar {
	cursor: all-scroll;
	padding: 4pt 2pt 4pt 4pt;
	color: #aaa;
}
 
.cecily .tiddler.selected .toolbar {
	color: #fff;
}
 
.cecily .tiddler .toolbar a {
	-webkit-transition: opacity 0.3s ease-in-out;
	opacity: 0;
	margin: 0 0.25em 0 0.25em;
	border: none;
	-webkit-border-radius: 3px;
	-moz-border-radius: 3px;
}
 
.cecily .tiddler.selected .toolbar a {
	opacity: 1;
	background-color: #aaa;
	background: -webkit-gradient(linear, left top, left bottom, from(#888), to(#ccc), color-stop(0.5,#aaa), color-stop(0.7,#bbb));
	color: #fff;
}
 
.cecily .tiddler.selected .toolbar a:hover {
	background-color: #c80;
	background-image: -webkit-gradient(linear, left top, left bottom, from(#c80), to(#fc1), color-stop(0.5,#c80));
	color: #000;
}
 
.cecily .tiddler.selected .toolbar a:active {
	background-color: [[ColorPalette::Foreground]];
	background-image: none;
	color: [[ColorPalette::Background]];
}
 
.cecily .tiddler .title {
	cursor: all-scroll;
	padding: 2pt 8pt 2pt 8pt;
	color: #000;
	background-color: transparent;
	text-shadow: #fff 1px 1px 2px;
}
 
.cecily .tiddler .subtitle {
	padding: 2pt 8pt 4pt 8pt;
	color: #444;
	font-size: 0.6em;
}
 
.cecily .tiddler .viewer {
	padding: 4pt 8pt 4pt 8pt;
	background-color: #fff;
}
 
.cecily .tiddler .tagging, .cecily .tiddler .tagged {
	float: none;
	border: none;
	padding: 2pt 8pt 2pt 8pt;
	background-image: -webkit-gradient(linear, left bottom, left top, from(#888), to(#ccc), color-stop(0.5,#ccc), color-stop(0.95,#fff));
	margin: auto;
}
 
.cecily .tiddler .tagged {
	cursor: nwse-resize;
}
 
.cecily .tiddler.selected .tagging, .cecily .tiddler.selected .tagged {
	background-color: auto;
	border: auto;
}
 
.cecilyButton {
	-webkit-appearance: push-button;
}
 
!(end of StyleSheet)
 
***/
 
</pre> 
</div> 
<div title="DefaultTiddlers" modifier="JeremyRuston" created="200801221853" modified="200801221916"> 
<pre>HelloThere [[ZoomingUserInterface from Wikipedia]] WebKit ZoomingUserInterfaces ProjectCecily JefRaskin JeremyRuston AzaRaskin [[Tiddlers]] TiddlyWiki Serializer [[Feature Requests]] [[TODO]] UrlMap</pre> 
</div> 
<div title="Firefox" modifier="JeremyRuston" created="200810192350"> 
<pre>Like Webkit, Firefox is an awesome piece of work, as evidenced by the way that this embedded video plays smoothly even with lots of zooming and scaling going on:
{{{
&lt;html&gt;
&lt;video src=&quot;http://lorem-ipsum.tiddlyspace.com/Ecl1-11-08-1999.ogg&quot; controls=&quot;true&quot; width=&quot;320&quot; height=&quot;240&quot; autoplay playcount=&quot;999&quot;&gt;
&lt;/video&gt;
&lt;/html&gt;
}}}
&lt;html&gt;&lt;video src=&quot;http://http://lorem-ipsum.tiddlyspace.com/Ecl1-11-08-1999.ogg&quot; controls=&quot;true&quot; width=&quot;320&quot; height=&quot;240&quot; autoplay playcount=&quot;999&quot;&gt;&lt;/video&gt;&lt;/html&gt;</pre> 
</div> 
<div title="HelloThere" modifier="JeremyRuston" created="200806051200"> 
<pre>Welcome to ProjectCecily, an experimental [[ZoomingUserInterface|ZoomingUserInterfaces]] for TiddlyWiki created by JeremyRuston. It runs on WebKit 3.1 (and above) and [[Firefox]] 3.1 (and above).
 
Have a look at these pictures: [[Swampglade]], [[Tenerife]], [[Weyflection]] and [[Seagully]]</pre> 
</div> 
<div title="JeremyRuston" modifier="JeremyRuston" created="200806120017" modified="200806120828"> 
<pre>JeremyRuston is the Head of Open Source Innovation at BT. He runs [[Osmosoft|http://www.osmosoft/]], a small team of developers dedicated to exploring the innovation potential of open source. Jeremy created TiddlyWiki and ProjectCecily.</pre> 
</div> 
<div title="MainMenu" modifier="JeremyRuston" created="200806152349"> 
<pre>HelloThere</pre> 
</div> 
<div title="MarkupPreHead"> 
<pre>&lt;!--{{{--&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width&quot; /&gt;
&lt;link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' /&gt;
&lt;!--}}}--&gt;
</pre> 
</div> 
<div title="MyMap" modifier="Cecily" created="200807181149" tags="cecilyMap" changecount="14"> 
<pre>AzaRaskin 500 500 225 69
DefaultTiddlers 2241 500 225 99
Feature%20Requests 250 500 225 69
HelloThere -387 -463 945 545
JefRaskin 750 500 225 69
JeremyRuston 1319 -417 269 119
MainMenu 2506 499 225 69
MyMap 2755 498 225 325
OverlayMenu 2997 506 225 110
PageTemplate 3235 511 225 139
Principles 2593 672 225 164
ProjectCecily 825 159 996 1169
Seagully 127 1159 225 165
Serializer 100 150 50 13
SideBarTabs 604 -500 415 593
SiteSubtitle 3643 850 225 69
SiteTitle 3649 963 225 69
Swampglade -179 855 225 201
TODO 300 150 50 13
Tenerife 122 883 225 200
Tiddlers 2000 250 450 119
TiddlyWiki 1103 -260 460 163
ToDo 1624 -592 408 410
UrlMap 400 150 50 13
ViewTemplate 3247 666 225 159
WebKit 1915 -46 424 698
Weyflection -425 1105 498 445
ZoomingUserInterface%20from%20Wikipedia 379 778 399 558
ZoomingUserInterfaces 168 161 618 520</pre> 
</div> 
<div title="OverlayMenu" modifier="JeremyRuston" created="200806161841" modified="200807201854"> 
<pre>|{{overlayCommand{go}}} |[[home|ProjectCecily]][[a-z|SideBarTabs]]&lt;&lt;search&gt;&gt; |
|{{overlayCommand{zoom}}} |&lt;&lt;cecilyZoomAll&gt;&gt;&lt;&lt;cecilyZoom&gt;&gt; |
|{{overlayCommand{map}}} |&lt;&lt;cecilyMap&gt;&gt;&lt;&lt;closeAll&gt;&gt; |
|{{overlayCommand{share}}} |&lt;&lt;permaview&gt;&gt; |
|{{overlayCommand{create}}} |&lt;&lt;saveChanges&gt;&gt;&lt;&lt;newTiddler&gt;&gt;&lt;&lt;newJournal &quot;DD MMM YYYY&quot; &quot;journal&quot;&gt;&gt; |
|{{overlayCommand{tweak}}} |&lt;&lt;cecilyBackground&gt;&gt;[[options|OptionsPanel]] |</pre> 
</div> 
<div title="PageTemplate" modifier="JeremyRuston" modified="200806162219"> 
<pre>&lt;!--{{{--&gt;
&lt;div id='displayArea'&gt;
&lt;div id='overlayMenu' refresh='content' tiddler='OverlayMenu'&gt;&lt;/div&gt;
&lt;div id='messageArea'&gt;&lt;/div&gt;
&lt;div id='tiddlerDisplay'&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!--}}}--&gt;</pre> 
</div> 
<div title="ProjectCecily" modifier="JeremyRuston" created="200806112349"> 
<pre>ProjectCecily is a user interface concept that combines the functionality of a wiki with a ZoomingUserInterface.
 
I've been working on ProjectCecily for many years (it actually pre-dates TiddlyWiki). This latest implementation was built in pure HTML, JavaScript and CSS. It only works on recent versions of WebKit (Safari version 3.1 and above, and [[iPhone]] 2.0+). It's still very experimental, and lots of things don't work as expected. Some of that is due to WebKitBugs, but it's mostly down to incompleteness.
 
ProjectCecily is based on some simple [[Principles]], mostly stolen from [[Wikis]] and ZoomingUserInterfaces, many of which have already been seen in TiddlyWiki.  There are also some AntiPrinciples, approaches that have been consciously avoided.
 
More information:
* ImplementationDetails
</pre> 
</div> 
<div title="Seagully" modifier="JeremyRuston" created="200806282349"> 
<pre>http://www.flickr.com/photos/jermy/216409952/
See also [[Swampglade]], [[Tenerife]] and [[Weyflection]]
&lt;html&gt;
&lt;img src=&quot;Seagully.jpg&quot; width=&quot;256&quot; height=&quot;135&quot; /&gt;
&lt;/html&gt;</pre> 
</div> 
<div title="SiteSubtitle" modifier="JeremyRuston" created="200801221841" modified="200801221854"> 
<pre>a zooming user interface for TiddlyWiki</pre> 
</div> 
<div title="SiteTitle" modifier="JeremyRuston" created="200801221841" modified="200801221854"> 
<pre>Project Cecily</pre> 
</div> 
<div title="Swampglade" modifier="JeremyRuston" created="200806282349"> 
<pre>http://www.flickr.com/photos/jermy/65637412/
See also [[Tenerife]], [[Weyflection]] and [[Seagully]]
&lt;html&gt;
&lt;img src=&quot;Swampglade.jpg&quot; width=&quot;256&quot; height=&quot;192&quot; /&gt;
&lt;/html&gt;</pre> 
</div> 
<div title="Tenerife" modifier="JeremyRuston" created="200806282349"> 
<pre>http://www.flickr.com/photos/jermy/94035340/
See also [[Swampglade]], [[Weyflection]] and [[Seagully]]
&lt;html&gt;
&lt;img src=&quot;Tenerife.jpg&quot; width=&quot;256&quot; height=&quot;190&quot; /&gt;
&lt;/html&gt;</pre> 
</div> 
<div title="TiddlyWiki" modifier="JeremyRuston" created="200806152350" modified="200807031615"> 
<pre>TiddlyWiki is a wiki that runs entirely in the browser, without needing a server. It was originally created by JeremyRuston.</pre> 
</div> 
<div title="ToDo" modifier="JeremyRuston" created="200806152349"> 
<pre>Things to do:
* Make the overlay menu popup at the mouse position
* Add keyboard shortcuts, and awesome/omni bar
* Do semantic zooming in CSS by progressively adding classNames like &quot;lessThan20px&quot;, &quot;lessThan10px&quot;
* Improve zooming to use smoother bezier splines
* Animate map transitions
* A background based on gradient fills
 
Problems:
* Zooming could be smoother
* Dragging tiddlers sometimes judders
* Some tiddlers don't like being opened in edit mode (I think that this is a WebKit problem)</pre> 
</div> 
<div title="ViewTemplate" modifier="JeremyRuston" modified="200807200019"> 
<pre>&lt;!--{{{--&gt;
&lt;div class='heading'&gt;
&lt;div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'&gt;&lt;/div&gt;
&lt;div class='title' macro='view title'&gt;&lt;/div&gt;
&lt;div class='subtitle'&gt;&lt;span macro='view modifier link'&gt;&lt;/span&gt;, &lt;span macro='view modified date'&gt;&lt;/span&gt; (&lt;span macro='message views.wikified.createdPrompt'&gt;&lt;/span&gt; &lt;span macro='view created date'&gt;&lt;/span&gt;)&lt;/div&gt;
&lt;div class='tagging' macro='tagging'&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class='viewer' macro='view text wikified'&gt;&lt;/div&gt;
&lt;div class='tagged' macro='tags'&gt;&lt;/div&gt;
&lt;div class='tagClear'&gt;&lt;/div&gt;
&lt;!--}}}--&gt;</pre> 
</div> 
<div title="WebKit" modifier="JeremyRuston" created="200806112350"> 
<pre>WebKit is an open source web browser begun by Apple, forked off the KHTML codebase. See http://www.webkit.org/
 
This implementation of ProjectCecily exploits several features of recent versions of WebKit:
* [[Canvas]]
* [[CSS Transforms|http://webkit.org/blog/130/css-transforms/]]
* [[CSS Gradients|http://webkit.org/blog/175/introducing-css-gradients/]]
* [[CSS Animation|http://webkit.org/blog/138/css-animation/]]
 
WebKit is an awesome piece of work, as evidenced by the way that this embedded video plays smoothly even with lots of zooming and scaling going on:
{{{
&lt;html&gt;
&lt;video src=&quot;http://lorem-ipsum.tiddlyspace.com/jumps.mov&quot; autoplay playcount=&quot;999&quot;&gt;
&lt;/video&gt;
&lt;/html&gt;
}}}
&lt;html&gt;&lt;video src=&quot;http://lorem-ipsum.tiddlyspace.com/jumps.mov&quot; autoplay playcount=&quot;999&quot;&gt;&lt;/video&gt;&lt;/html&gt;</pre> 
</div> 
<div title="Weyflection" modifier="JeremyRuston" created="200806282349"> 
<pre>http://www.flickr.com/photos/jermy/65625750/
See also [[Swampglade]], [[Tenerife]] and [[Seagully]]
&lt;html&gt;
&lt;img src=&quot;Weyflection.jpg&quot; width=&quot;256&quot; height=&quot;192&quot; /&gt;
&lt;/html&gt;</pre> 
</div> 
<div title="YouTubeDemo" modifier="JeremyRuston" created="200810212349"> 
<pre>&lt;html&gt;&lt;object width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/_M9qMkcL-sY&amp;hl=en&amp;fs=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/_M9qMkcL-sY&amp;hl=en&amp;fs=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;344&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/html&gt;</pre> 
</div> 
<div title="ZoomingUserInterface from Wikipedia" modifier="JeremyRuston" created="200806112328" modified="200806112344"> 
<pre>&lt;html&gt;
&lt;img alt=&quot;Example of a ZUI&quot; src=&quot;http://lorem-ipsum.tiddlyspace.com/ZUI_example.png&quot; width=&quot;194&quot; height=&quot;82&quot; border=&quot;0&quot; style=&quot;float:right;&quot; /&gt;
&lt;p&gt;In &lt;a href=&quot;http://en.wikipedia.org/wiki/Computing&quot; title=&quot;Computing&quot; target=&quot;_blank&quot;&gt;computing&lt;/a&gt;, a &lt;b&gt;Zooming User Interface&lt;/b&gt; or &lt;b&gt;Zoomable User Interface&lt;/b&gt; (&lt;b&gt;ZUI&lt;/b&gt;, pronounced Zoo-ee) is a graphical environment where users can change the scale of the viewed area in to see more detail or less. A ZUI is a type of &lt;a href=&quot;http://en.wikipedia.org/wiki/Graphical_user_interface&quot; title=&quot;Graphical user interface&quot; target=&quot;_blank&quot;&gt;graphical user interface&lt;/a&gt; (GUI). Information elements appear directly on an infinite &lt;a href=&quot;http://en.wikipedia.org/wiki/Virtual_desktop&quot; title=&quot;Virtual desktop&quot; target=&quot;_blank&quot;&gt;virtual desktop&lt;/a&gt; (usually created using &lt;a href=&quot;http://en.wikipedia.org/wiki/Vector_graphics&quot; title=&quot;Vector graphics&quot; target=&quot;_blank&quot;&gt;vector graphics&lt;/a&gt;), instead of in windows. Users can pan across the virtual surface in two dimensions and zoom into objects of interest. For example, as you zoom into a text object it may be represented as a small dot, then a thumbnail of a page of text, then a full-sized page and finally a magnified view of the page.&lt;/p&gt; 
&lt;p&gt;Some experts consider the ZUI interface paradigm as a flexible and realistic successor to the traditional windowing GUI. But little effort is currently spent developing ZUIs, while there are ongoing efforts for developing GUIs.&lt;/p&gt; 
 
&lt;/html&gt;
 
See the rest of the article [[&quot;Zooming User Interface&quot; on Wikipedia|http://en.wikipedia.org/wiki/Zooming_user_interface]]</pre> 
</div> 
<div title="ZoomingUserInterfaces" modifier="JeremyRuston" created="200806112354" modified="200807031620"> 
<pre>ZoomingUserInterfaces (ZUIs) feature entities of different sizes laid out on an (almost) infinite wall. Navigation is accomplished by panning and zooming a virtual camera around the wall. See [[the Wikipedia article|ZoomingUserInterface from Wikipedia]].
 
ZUIs have been studied in industry and academia for several years (see BenBederson, JefRaskin and AzaRaskin). Although a few concepts first developed in the field have subsequently been adopted, there aren't yet any mainstream products that try to exploit the capabilities of ZUIs.
 
There's a [[good paper at Advogato.com|http://www.advogato.org/article/788.html]] that covers some practical design issues with ZUIs.</pre> 
</div> 
</div> 
<!--POST-STOREAREA--> 
<!--POST-BODY-START--> 
<!--POST-BODY-END--> 
<script id="jsArea" type="text/javascript"> 
//<![CDATA[
//
// Please note:
//
// * This code is designed to be readable but for compactness it only includes brief comments. You can see fuller comments
//   in the project Subversion repository at http://svn.tiddlywiki.org/Trunk/core/
//
// * You should never need to modify this source code directly. TiddlyWiki is carefully designed to allow deep customisation
//   without changing the core code. Please consult the development group at http://groups.google.com/group/TiddlyWikiDev
//
 
//--
//-- Configuration repository
//--
 
// Miscellaneous options
var config = {
	numRssItems: 20, // Number of items in the RSS feed
	animDuration: 400, // Duration of UI animations in milliseconds
	cascadeFast: 20, // Speed for cascade animations (higher == slower)
	cascadeSlow: 60, // Speed for EasterEgg cascade animations
	cascadeDepth: 5, // Depth of cascade animation
	locale: "en" // W3C language tag
};
 
// Hashmap of alternative parsers for the wikifier
config.parsers = {};
 
// Adaptors
config.adaptors = {};
config.defaultAdaptor = null;
 
// Backstage tasks
config.tasks = {};
 
// Annotations
config.annotations = {};
 
// Custom fields to be automatically added to new tiddlers
config.defaultCustomFields = {};
 
// Messages
config.messages = {
	messageClose: {},
	dates: {},
	tiddlerPopup: {}
};
 
// Options that can be set in the options panel and/or cookies
config.options = {
	chkRegExpSearch: false,
	chkCaseSensitiveSearch: false,
	chkIncrementalSearch: true,
	chkAnimate: true,
	chkSaveBackups: true,
	chkAutoSave: false,
	chkGenerateAnRssFeed: false,
	chkSaveEmptyTemplate: false,
	chkOpenInNewWindow: true,
	chkToggleLinks: false,
	chkHttpReadOnly: true,
	chkForceMinorUpdate: false,
	chkConfirmDelete: true,
	chkInsertTabs: false,
	chkUsePreForStorage: true, // Whether to use <pre> format for storage
	chkDisplayInstrumentation: false,
	txtBackupFolder: "",
	txtEditorFocus: "text",
	txtMainTab: "tabTimeline",
	txtMoreTab: "moreTabAll",
	txtMaxEditRows: "30",
	txtFileSystemCharSet: "UTF-8",
	txtTheme: ""
	};
config.optionsDesc = {};
 
// Default tiddler templates
var DEFAULT_VIEW_TEMPLATE = 1;
var DEFAULT_EDIT_TEMPLATE = 2;
config.tiddlerTemplates = {
	1: "ViewTemplate",
	2: "EditTemplate"
};
 
// More messages (rather a legacy layout that should not really be like this)
config.views = {
	wikified: {
		tag: {}
	},
	editor: {
		tagChooser: {}
	}
};
 
// Backstage tasks
config.backstageTasks = ["save","sync","importTask","tweak","upgrade","plugins"];
 
// Extensions
config.extensions = {};
 
// Macros; each has a 'handler' member that is inserted later
config.macros = {
	today: {},
	version: {},
	search: {sizeTextbox: 15},
	tiddler: {},
	tag: {},
	tags: {},
	tagging: {},
	timeline: {},
	allTags: {},
	list: {
		all: {},
		missing: {},
		orphans: {},
		shadowed: {},
		touched: {},
		filter: {}
	},
	closeAll: {},
	permaview: {},
	saveChanges: {},
	slider: {},
	option: {},
	options: {},
	newTiddler: {},
	newJournal: {},
	tabs: {},
	gradient: {},
	message: {},
	view: {defaultView: "text"},
	edit: {},
	tagChooser: {},
	toolbar: {},
	plugins: {},
	refreshDisplay: {},
	importTiddlers: {},
	upgrade: {
		source: "http://www.tiddlywiki.com/upgrade/",
		backupExtension: "pre.core.upgrade"
	},
	sync: {},
	annotations: {}
};
 
// Commands supported by the toolbar macro
config.commands = {
	closeTiddler: {},
	closeOthers: {},
	editTiddler: {},
	saveTiddler: {hideReadOnly: true},
	cancelTiddler: {},
	deleteTiddler: {hideReadOnly: true},
	permalink: {},
	references: {type: "popup"},
	jump: {type: "popup"},
	syncing: {type: "popup"},
	fields: {type: "popup"}
};
 
// Browser detection... In a very few places, there's nothing else for it but to know what browser we're using.
config.userAgent = navigator.userAgent.toLowerCase();
config.browser = {
	isIE: config.userAgent.indexOf("msie") != -1 && config.userAgent.indexOf("opera") == -1,
	isGecko: config.userAgent.indexOf("gecko") != -1,
	ieVersion: /MSIE (\d.\d)/i.exec(config.userAgent), // config.browser.ieVersion[1], if it exists, will be the IE version string, eg "6.0"
	isSafari: config.userAgent.indexOf("applewebkit") != -1,
	isBadSafari: !((new RegExp("[\u0150\u0170]","g")).test("\u0150")),
	firefoxDate: /gecko\/(\d{8})/i.exec(config.userAgent), // config.browser.firefoxDate[1], if it exists, will be Firefox release date as "YYYYMMDD"
	isOpera: config.userAgent.indexOf("opera") != -1,
	isLinux: config.userAgent.indexOf("linux") != -1,
	isUnix: config.userAgent.indexOf("x11") != -1,
	isMac: config.userAgent.indexOf("mac") != -1,
	isWindows: config.userAgent.indexOf("win") != -1
};
 
// Basic regular expressions
config.textPrimitives = {
	upperLetter: "[A-Z\u00c0-\u00de\u0150\u0170]",
	lowerLetter: "[a-z0-9_\\-\u00df-\u00ff\u0151\u0171]",
	anyLetter:   "[A-Za-z0-9_\\-\u00c0-\u00de\u00df-\u00ff\u0150\u0170\u0151\u0171]",
	anyLetterStrict: "[A-Za-z0-9\u00c0-\u00de\u00df-\u00ff\u0150\u0170\u0151\u0171]"
};
if(config.browser.isBadSafari) {
	config.textPrimitives = {
		upperLetter: "[A-Z\u00c0-\u00de]",
		lowerLetter: "[a-z0-9_\\-\u00df-\u00ff]",
		anyLetter:   "[A-Za-z0-9_\\-\u00c0-\u00de\u00df-\u00ff]",
		anyLetterStrict: "[A-Za-z0-9\u00c0-\u00de\u00df-\u00ff]"
	};
}
config.textPrimitives.sliceSeparator = "::";
config.textPrimitives.sectionSeparator = "##";
config.textPrimitives.urlPattern = "(?:file|http|https|mailto|ftp|irc|news|data):[^\\s'\"]+(?:/|\\b)";
config.textPrimitives.unWikiLink = "~";
config.textPrimitives.wikiLink = "(?:(?:" + config.textPrimitives.upperLetter + "+" +
	config.textPrimitives.lowerLetter + "+" +
	config.textPrimitives.upperLetter +
	config.textPrimitives.anyLetter + "*)|(?:" +
	config.textPrimitives.upperLetter + "{2,}" +
	config.textPrimitives.lowerLetter + "+))";
 
config.textPrimitives.cssLookahead = "(?:(" + config.textPrimitives.anyLetter + "+)\\(([^\\)\\|\\n]+)(?:\\):))|(?:(" + config.textPrimitives.anyLetter + "+):([^;\\|\\n]+);)";
config.textPrimitives.cssLookaheadRegExp = new RegExp(config.textPrimitives.cssLookahead,"mg");
 
config.textPrimitives.brackettedLink = "\\[\\[([^\\]]+)\\]\\]";
config.textPrimitives.titledBrackettedLink = "\\[\\[([^\\[\\]\\|]+)\\|([^\\[\\]\\|]+)\\]\\]";
config.textPrimitives.tiddlerForcedLinkRegExp = new RegExp("(?:" + config.textPrimitives.titledBrackettedLink + ")|(?:" +
	config.textPrimitives.brackettedLink + ")|(?:" +
	config.textPrimitives.urlPattern + ")","mg");
config.textPrimitives.tiddlerAnyLinkRegExp = new RegExp("("+ config.textPrimitives.wikiLink + ")|(?:" +
	config.textPrimitives.titledBrackettedLink + ")|(?:" +
	config.textPrimitives.brackettedLink + ")|(?:" +
	config.textPrimitives.urlPattern + ")","mg");
 
config.glyphs = {
	browsers: [
		function() {return config.browser.isIE;},
		function() {return true;}
	],
	currBrowser: null,
	codes: {
		downTriangle: ["\u25BC","\u25BE"],
		downArrow: ["\u2193","\u2193"],
		bentArrowLeft: ["\u2190","\u21A9"],
		bentArrowRight: ["\u2192","\u21AA"]
	}
};
 
//--
//-- Shadow tiddlers
//--
 
config.shadowTiddlers = {
	StyleSheet: "",
	MarkupPreHead: "",
	MarkupPostHead: "",
	MarkupPreBody: "",
	MarkupPostBody: "",
	TabTimeline: '<<timeline>>',
	TabAll: '<<list all>>',
	TabTags: '<<allTags excludeLists>>',
	TabMoreMissing: '<<list missing>>',
	TabMoreOrphans: '<<list orphans>>',
	TabMoreShadowed: '<<list shadowed>>',
	AdvancedOptions: '<<options>>',
	PluginManager: '<<plugins>>',
	ToolbarCommands: '|~ViewToolbar|closeTiddler closeOthers +editTiddler > fields syncing permalink references jump|\n|~EditToolbar|+saveTiddler -cancelTiddler deleteTiddler|'
};
 
//--
//-- Translateable strings
//--
 
// Strings in "double quotes" should be translated; strings in 'single quotes' should be left alone
 
merge(config.options,{
	txtUserName: "YourName"});
 
merge(config.tasks,{
	save: {text: "save", tooltip: "Save your changes to this TiddlyWiki", action: saveChanges},
	sync: {text: "sync", tooltip: "Synchronise changes with other TiddlyWiki files and servers", content: '<<sync>>'},
	importTask: {text: "import", tooltip: "Import tiddlers and plugins from other TiddlyWiki files and servers", content: '<<importTiddlers>>'},
	tweak: {text: "tweak", tooltip: "Tweak the appearance and behaviour of TiddlyWiki", content: '<<options>>'},
	upgrade: {text: "upgrade", tooltip: "Upgrade TiddlyWiki core code", content: '<<upgrade>>'},
	plugins: {text: "plugins", tooltip: "Manage installed plugins", content: '<<plugins>>'}
});
 
// Options that can be set in the options panel and/or cookies
merge(config.optionsDesc,{
	txtUserName: "Username for signing your edits",
	chkRegExpSearch: "Enable regular expressions for searches",
	chkCaseSensitiveSearch: "Case-sensitive searching",
	chkIncrementalSearch: "Incremental key-by-key searching",
	chkAnimate: "Enable animations",
	chkSaveBackups: "Keep backup file when saving changes",
	chkAutoSave: "Automatically save changes",
	chkGenerateAnRssFeed: "Generate an RSS feed when saving changes",
	chkSaveEmptyTemplate: "Generate an empty template when saving changes",
	chkOpenInNewWindow: "Open external links in a new window",
	chkToggleLinks: "Clicking on links to open tiddlers causes them to close",
	chkHttpReadOnly: "Hide editing features when viewed over HTTP",
	chkForceMinorUpdate: "Don't update modifier username and date when editing tiddlers",
	chkConfirmDelete: "Require confirmation before deleting tiddlers",
	chkInsertTabs: "Use the tab key to insert tab characters instead of moving between fields",
	txtBackupFolder: "Name of folder to use for backups",
	txtMaxEditRows: "Maximum number of rows in edit boxes",
	txtTheme: "Name of the theme to use",
	txtFileSystemCharSet: "Default character set for saving changes (Firefox/Mozilla only)"});
 
merge(config.messages,{
	customConfigError: "Problems were encountered loading plugins. See PluginManager for details",
	pluginError: "Error: %0",
	pluginDisabled: "Not executed because disabled via 'systemConfigDisable' tag",
	pluginForced: "Executed because forced via 'systemConfigForce' tag",
	pluginVersionError: "Not executed because this plugin needs a newer version of TiddlyWiki",
	nothingSelected: "Nothing is selected. You must select one or more items first",
	savedSnapshotError: "It appears that this TiddlyWiki has been incorrectly saved. Please see http://www.tiddlywiki.com/#Download for details",
	subtitleUnknown: "(unknown)",
	undefinedTiddlerToolTip: "The tiddler '%0' doesn't yet exist",
	shadowedTiddlerToolTip: "The tiddler '%0' doesn't yet exist, but has a pre-defined shadow value",
	tiddlerLinkTooltip: "%0 - %1, %2",
	externalLinkTooltip: "External link to %0",
	noTags: "There are no tagged tiddlers",
	notFileUrlError: "You need to save this TiddlyWiki to a file before you can save changes",
	cantSaveError: "It's not possible to save changes. Possible reasons include:\n- your browser doesn't support saving (Firefox, Internet Explorer, Safari and Opera all work if properly configured)\n- the pathname to your TiddlyWiki file contains illegal characters\n- the TiddlyWiki HTML file has been moved or renamed",
	invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
	backupSaved: "Backup saved",
	backupFailed: "Failed to save backup file",
	rssSaved: "RSS feed saved",
	rssFailed: "Failed to save RSS feed file",
	emptySaved: "Empty template saved",
	emptyFailed: "Failed to save empty template file",
	mainSaved: "Main TiddlyWiki file saved",
	mainFailed: "Failed to save main TiddlyWiki file. Your changes have not been saved",
	macroError: "Error in macro <<\%0>>",
	macroErrorDetails: "Error while executing macro <<\%0>>:\n%1",
	missingMacro: "No such macro",
	overwriteWarning: "A tiddler named '%0' already exists. Choose OK to overwrite it",
	unsavedChangesWarning: "WARNING! There are unsaved changes in TiddlyWiki\n\nChoose OK to save\nChoose CANCEL to discard",
	confirmExit: "--------------------------------\n\nThere are unsaved changes in TiddlyWiki. If you continue you will lose those changes\n\n--------------------------------",
	saveInstructions: "SaveChanges",
	unsupportedTWFormat: "Unsupported TiddlyWiki format '%0'",
	tiddlerSaveError: "Error when saving tiddler '%0'",
	tiddlerLoadError: "Error when loading tiddler '%0'",
	wrongSaveFormat: "Cannot save with storage format '%0'. Using standard format for save.",
	invalidFieldName: "Invalid field name %0",
	fieldCannotBeChanged: "Field '%0' cannot be changed",
	loadingMissingTiddler: "Attempting to retrieve the tiddler '%0' from the '%1' server at:\n\n'%2' in the workspace '%3'",
	upgradeDone: "The upgrade to version %0 is now complete\n\nClick 'OK' to reload the newly upgraded TiddlyWiki"});
 
merge(config.messages.messageClose,{
	text: "close",
	tooltip: "close this message area"});
 
config.messages.backstage = {
	open: {text: "backstage", tooltip: "Open the backstage area to perform authoring and editing tasks"},
	close: {text: "close", tooltip: "Close the backstage area"},
	prompt: "backstage: ",
	decal: {
		edit: {text: "edit", tooltip: "Edit the tiddler '%0'"}
	}
};
 
config.messages.listView = {
	tiddlerTooltip: "Click for the full text of this tiddler",
	previewUnavailable: "(preview not available)"
};
 
config.messages.dates.months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November","December"];
config.messages.dates.days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
config.messages.dates.shortMonths = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
config.messages.dates.shortDays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
// suffixes for dates, eg "1st","2nd","3rd"..."30th","31st"
config.messages.dates.daySuffixes = ["st","nd","rd","th","th","th","th","th","th","th",
		"th","th","th","th","th","th","th","th","th","th",
		"st","nd","rd","th","th","th","th","th","th","th",
		"st"];
config.messages.dates.am = "am";
config.messages.dates.pm = "pm";
 
merge(config.messages.tiddlerPopup,{
	});
 
merge(config.views.wikified.tag,{
	labelNoTags: "no tags",
	labelTags: "tags: ",
	openTag: "Open tag '%0'",
	tooltip: "Show tiddlers tagged with '%0'",
	openAllText: "Open all",
	openAllTooltip: "Open all of these tiddlers",
	popupNone: "No other tiddlers tagged with '%0'"});
 
merge(config.views.wikified,{
	defaultText: "The tiddler '%0' doesn't yet exist. Double-click to create it",
	defaultModifier: "(missing)",
	shadowModifier: "(built-in shadow tiddler)",
	dateFormat: "DD MMM YYYY",
	createdPrompt: "created"});
 
merge(config.views.editor,{
	tagPrompt: "Type tags separated with spaces, [[use double square brackets]] if necessary, or add existing",
	defaultText: "Type the text for '%0'"});
 
merge(config.views.editor.tagChooser,{
	text: "tags",
	tooltip: "Choose existing tags to add to this tiddler",
	popupNone: "There are no tags defined",
	tagTooltip: "Add the tag '%0'"});
 
merge(config.messages,{
	sizeTemplates:
		[
		{unit: 1024*1024*1024, template: "%0\u00a0GB"},
		{unit: 1024*1024, template: "%0\u00a0MB"},
		{unit: 1024, template: "%0\u00a0KB"},
		{unit: 1, template: "%0\u00a0B"}
		]});
 
merge(config.macros.search,{
	label: "search",
	prompt: "Search this TiddlyWiki",
	accessKey: "F",
	successMsg: "%0 tiddlers found matching %1",
	failureMsg: "No tiddlers found matching %0"});
 
merge(config.macros.tagging,{
	label: "tagging: ",
	labelNotTag: "not tagging",
	tooltip: "List of tiddlers tagged with '%0'"});
 
merge(config.macros.timeline,{
	dateFormat: "DD MMM YYYY"});
 
merge(config.macros.allTags,{
	tooltip: "Show tiddlers tagged with '%0'",
	noTags: "There are no tagged tiddlers"});
 
config.macros.list.all.prompt = "All tiddlers in alphabetical order";
config.macros.list.missing.prompt = "Tiddlers that have links to them but are not defined";
config.macros.list.orphans.prompt = "Tiddlers that are not linked to from any other tiddlers";
config.macros.list.shadowed.prompt = "Tiddlers shadowed with default contents";
config.macros.list.touched.prompt = "Tiddlers that have been modified locally";
 
merge(config.macros.closeAll,{
	label: "close all",
	prompt: "Close all displayed tiddlers (except any that are being edited)"});
 
merge(config.macros.permaview,{
	label: "permaview",
	prompt: "Link to an URL that retrieves all the currently displayed tiddlers"});
 
merge(config.macros.saveChanges,{
	label: "save changes",
	prompt: "Save all tiddlers to create a new TiddlyWiki",
	accessKey: "S"});
 
merge(config.macros.newTiddler,{
	label: "new tiddler",
	prompt: "Create a new tiddler",
	title: "New Tiddler",
	accessKey: "N"});
 
merge(config.macros.newJournal,{
	label: "new journal",
	prompt: "Create a new tiddler from the current date and time",
	accessKey: "J"});
 
merge(config.macros.options,{
	wizardTitle: "Tweak advanced options",
	step1Title: "These options are saved in cookies in your browser",
	step1Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='false' name='chkUnknown'>Show unknown options</input>",
	unknownDescription: "//(unknown)//",
	listViewTemplate: {
		columns: [
			{name: 'Option', field: 'option', title: "Option", type: 'String'},
			{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
			{name: 'Name', field: 'name', title: "Name", type: 'String'}
			],
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'}
			]}
	});
 
merge(config.macros.plugins,{
	wizardTitle: "Manage plugins",
	step1Title: "Currently loaded plugins",
	step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
	skippedText: "(This plugin has not been executed because it was added since startup)",
	noPluginText: "There are no plugins installed",
	confirmDeleteText: "Are you sure you want to delete these plugins:\n\n%0",
	removeLabel: "remove systemConfig tag",
	removePrompt: "Remove systemConfig tag",
	deleteLabel: "delete",
	deletePrompt: "Delete these tiddlers forever",
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
			{name: 'Description', field: 'Description', title: "Description", type: 'String'},
			{name: 'Version', field: 'Version', title: "Version", type: 'String'},
			{name: 'Size', field: 'size', tiddlerLink: 'size', title: "Size", type: 'Size'},
			{name: 'Forced', field: 'forced', title: "Forced", tag: 'systemConfigForce', type: 'TagCheckbox'},
			{name: 'Disabled', field: 'disabled', title: "Disabled", tag: 'systemConfigDisable', type: 'TagCheckbox'},
			{name: 'Executed', field: 'executed', title: "Loaded", type: 'Boolean', trueText: "Yes", falseText: "No"},
			{name: 'Startup Time', field: 'startupTime', title: "Startup Time", type: 'String'},
			{name: 'Error', field: 'error', title: "Status", type: 'Boolean', trueText: "Error", falseText: "OK"},
			{name: 'Log', field: 'log', title: "Log", type: 'StringList'}
			],
		rowClasses: [
			{className: 'error', field: 'error'},
			{className: 'warning', field: 'warning'}
			]}
	});
 
merge(config.macros.toolbar,{
	moreLabel: "more",
	morePrompt: "Show additional commands",
	lessLabel: "less",
	lessPrompt: "Hide additional commands",
	separator: "|"
	});
 
merge(config.macros.refreshDisplay,{
	label: "refresh",
	prompt: "Redraw the entire TiddlyWiki display"
	});
 
merge(config.macros.importTiddlers,{
	readOnlyWarning: "You cannot import into a read-only TiddlyWiki file. Try opening it from a file:// URL",
	wizardTitle: "Import tiddlers from another file or server",
	step1Title: "Step 1: Locate the server or TiddlyWiki file",
	step1Html: "Specify the type of the server: <select name='selTypes'><option value=''>Choose...</option></select><br>Enter the URL or pathname here: <input type='text' size=50 name='txtPath'><br>...or browse for a file: <input type='file' size=50 name='txtBrowse'><br><hr>...or select a pre-defined feed: <select name='selFeeds'><option value=''>Choose...</option></select>",
	openLabel: "open",
	openPrompt: "Open the connection to this file or server",
	openError: "There were problems fetching the tiddlywiki file",
	statusOpenHost: "Opening the host",
	statusGetWorkspaceList: "Getting the list of available workspaces",
	step2Title: "Step 2: Choose the workspace",
	step2Html: "Enter a workspace name: <input type='text' size=50 name='txtWorkspace'><br>...or select a workspace: <select name='selWorkspace'><option value=''>Choose...</option></select>",
	cancelLabel: "cancel",
	cancelPrompt: "Cancel this import",
	statusOpenWorkspace: "Opening the workspace",
	statusGetTiddlerList: "Getting the list of available tiddlers",
	errorGettingTiddlerList: "Error getting list of tiddlers, click Cancel to try again",
	step3Title: "Step 3: Choose the tiddlers to import",
	step3Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='true' name='chkSync'>Keep these tiddlers linked to this server so that you can synchronise subsequent changes</input><br><input type='checkbox' name='chkSave'>Save the details of this server in a 'systemServer' tiddler called:</input> <input type='text' size=25 name='txtSaveTiddler'>",
	importLabel: "import",
	importPrompt: "Import these tiddlers",
	confirmOverwriteText: "Are you sure you want to overwrite these tiddlers:\n\n%0",
	step4Title: "Step 4: Importing %0 tiddler(s)",
	step4Html: "<input type='hidden' name='markReport'></input>", // DO NOT TRANSLATE
	doneLabel: "done",
	donePrompt: "Close this wizard",
	statusDoingImport: "Importing tiddlers",
	statusDoneImport: "All tiddlers imported",
	systemServerNamePattern: "%2 on %1",
	systemServerNamePatternNoWorkspace: "%1",
	confirmOverwriteSaveTiddler: "The tiddler '%0' already exists. Click 'OK' to overwrite it with the details of this server, or 'Cancel' to leave it unchanged",
	serverSaveTemplate: "|''Type:''|%0|\n|''URL:''|%1|\n|''Workspace:''|%2|\n\nThis tiddler was automatically created to record the details of this server",
	serverSaveModifier: "(System)",
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
			{name: 'Size', field: 'size', tiddlerLink: 'size', title: "Size", type: 'Size'},
			{name: 'Tags', field: 'tags', title: "Tags", type: 'Tags'}
			],
		rowClasses: [
			]}
	});
 
merge(config.macros.upgrade,{
	wizardTitle: "Upgrade TiddlyWiki core code",
	step1Title: "Update or repair this TiddlyWiki to the latest release",
	step1Html: "You are about to upgrade to the latest release of the TiddlyWiki core code (from <a href='%0' class='externalLink' target='_blank'>%1</a>). Your content will be preserved across the upgrade.<br><br>Note that core upgrades have been known to interfere with older plugins. If you run into problems with the upgraded file, see <a href='http://www.tiddlywiki.org/wiki/CoreUpgrades' class='externalLink' target='_blank'>http://www.tiddlywiki.org/wiki/CoreUpgrades</a>",
	errorCantUpgrade: "Unable to upgrade this TiddlyWiki. You can only perform upgrades on TiddlyWiki files stored locally",
	errorNotSaved: "You must save changes before you can perform an upgrade",
	step2Title: "Confirm the upgrade details",
	step2Html_downgrade: "You are about to downgrade to TiddlyWiki version %0 from %1.<br><br>Downgrading to an earlier version of the core code is not recommended",
	step2Html_restore: "This TiddlyWiki appears to be already using the latest version of the core code (%0).<br><br>You can continue to upgrade anyway to ensure that the core code hasn't been corrupted or damaged",
	step2Html_upgrade: "You are about to upgrade to TiddlyWiki version %0 from %1",
	upgradeLabel: "upgrade",
	upgradePrompt: "Prepare for the upgrade process",
	statusPreparingBackup: "Preparing backup",
	statusSavingBackup: "Saving backup file",
	errorSavingBackup: "There was a problem saving the backup file",
	statusLoadingCore: "Loading core code",
	errorLoadingCore: "Error loading the core code",
	errorCoreFormat: "Error with the new core code",
	statusSavingCore: "Saving the new core code",
	statusReloadingCore: "Reloading the new core code",
	startLabel: "start",
	startPrompt: "Start the upgrade process",
	cancelLabel: "cancel",
	cancelPrompt: "Cancel the upgrade process",
	step3Title: "Upgrade cancelled",
	step3Html: "You have cancelled the upgrade process"
	});
 
merge(config.macros.sync,{
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
			{name: 'Server Type', field: 'serverType', title: "Server type", type: 'String'},
			{name: 'Server Host', field: 'serverHost', title: "Server host", type: 'String'},
			{name: 'Server Workspace', field: 'serverWorkspace', title: "Server workspace", type: 'String'},
			{name: 'Status', field: 'status', title: "Synchronisation status", type: 'String'},
			{name: 'Server URL', field: 'serverUrl', title: "Server URL", text: "View", type: 'Link'}
			],
		rowClasses: [
			],
		buttons: [
			{caption: "Sync these tiddlers", name: 'sync'}
			]},
	wizardTitle: "Synchronize with external servers and files",
	step1Title: "Choose the tiddlers you want to synchronize",
	step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
	syncLabel: "sync",
	syncPrompt: "Sync these tiddlers",
	hasChanged: "Changed while unplugged",
	hasNotChanged: "Unchanged while unplugged",
	syncStatusList: {
		none: {text: "...", display:null, className:'notChanged'},
		changedServer: {text: "Changed on server", display:null, className:'changedServer'},
		changedLocally: {text: "Changed while unplugged", display:null, className:'changedLocally'},
		changedBoth: {text: "Changed while unplugged and on server", display:null, className:'changedBoth'},
		notFound: {text: "Not found on server", display:null, className:'notFound'},
		putToServer: {text: "Saved update on server", display:null, className:'putToServer'},
		gotFromServer: {text: "Retrieved update from server", display:null, className:'gotFromServer'}
		}
	});
 
merge(config.macros.annotations,{
	});
 
merge(config.commands.closeTiddler,{
	text: "close",
	tooltip: "Close this tiddler"});
 
merge(config.commands.closeOthers,{
	text: "close others",
	tooltip: "Close all other tiddlers"});
 
merge(config.commands.editTiddler,{
	text: "edit",
	tooltip: "Edit this tiddler",
	readOnlyText: "view",
	readOnlyTooltip: "View the source of this tiddler"});
 
merge(config.commands.saveTiddler,{
	text: "done",
	tooltip: "Save changes to this tiddler"});
 
merge(config.commands.cancelTiddler,{
	text: "cancel",
	tooltip: "Undo changes to this tiddler",
	warning: "Are you sure you want to abandon your changes to '%0'?",
	readOnlyText: "done",
	readOnlyTooltip: "View this tiddler normally"});
 
merge(config.commands.deleteTiddler,{
	text: "delete",
	tooltip: "Delete this tiddler",
	warning: "Are you sure you want to delete '%0'?"});
 
merge(config.commands.permalink,{
	text: "permalink",
	tooltip: "Permalink for this tiddler"});
 
merge(config.commands.references,{
	text: "references",
	tooltip: "Show tiddlers that link to this one",
	popupNone: "No references"});
 
merge(config.commands.jump,{
	text: "jump",
	tooltip: "Jump to another open tiddler"});
 
merge(config.commands.syncing,{
	text: "syncing",
	tooltip: "Control synchronisation of this tiddler with a server or external file",
	currentlySyncing: "<div>Currently syncing via <span class='popupHighlight'>'%0'</span> to:</"+"div><div>host: <span class='popupHighlight'>%1</span></"+"div><div>workspace: <span class='popupHighlight'>%2</span></"+"div>", // Note escaping of closing <div> tag
	notCurrentlySyncing: "Not currently syncing",
	captionUnSync: "Stop synchronising this tiddler",
	chooseServer: "Synchronise this tiddler with another server:",
	currServerMarker: "\u25cf ",
	notCurrServerMarker: "  "});
 
merge(config.commands.fields,{
	text: "fields",
	tooltip: "Show the extended fields of this tiddler",
	emptyText: "There are no extended fields for this tiddler",
	listViewTemplate: {
		columns: [
			{name: 'Field', field: 'field', title: "Field", type: 'String'},
			{name: 'Value', field: 'value', title: "Value", type: 'String'}
			],
		rowClasses: [
			],
		buttons: [
			]}});
 
merge(config.shadowTiddlers,{
	DefaultTiddlers: "[[GettingStarted]]",
	MainMenu: "[[GettingStarted]]",
	SiteTitle: "My TiddlyWiki",
	SiteSubtitle: "a reusable non-linear personal web notebook",
	SiteUrl: "http://www.tiddlywiki.com/",
	SideBarOptions: '<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options \u00bb" "Change TiddlyWiki advanced options">>',
	SideBarTabs: '<<tabs txtMainTab "Timeline" "Timeline" TabTimeline "All" "All tiddlers" TabAll "Tags" "All tags" TabTags "More" "More lists" TabMore>>',
	TabMore: '<<tabs txtMoreTab "Missing" "Missing tiddlers" TabMoreMissing "Orphans" "Orphaned tiddlers" TabMoreOrphans "Shadowed" "Shadowed tiddlers" TabMoreShadowed>>'
	});
 
merge(config.annotations,{
	AdvancedOptions: "This shadow tiddler provides access to several advanced options",
	ColorPalette: "These values in this shadow tiddler determine the colour scheme of the ~TiddlyWiki user interface",
	DefaultTiddlers: "The tiddlers listed in this shadow tiddler will be automatically displayed when ~TiddlyWiki starts up",
	EditTemplate: "The HTML template in this shadow tiddler determines how tiddlers look while they are being edited",
	GettingStarted: "This shadow tiddler provides basic usage instructions",
	ImportTiddlers: "This shadow tiddler provides access to importing tiddlers",
	MainMenu: "This shadow tiddler is used as the contents of the main menu in the left-hand column of the screen",
	MarkupPreHead: "This tiddler is inserted at the top of the <head> section of the TiddlyWiki HTML file",
	MarkupPostHead: "This tiddler is inserted at the bottom of the <head> section of the TiddlyWiki HTML file",
	MarkupPreBody: "This tiddler is inserted at the top of the <body> section of the TiddlyWiki HTML file",
	MarkupPostBody: "This tiddler is inserted at the end of the <body> section of the TiddlyWiki HTML file immediately after the script block",
	OptionsPanel: "This shadow tiddler is used as the contents of the options panel slider in the right-hand sidebar",
	PageTemplate: "The HTML template in this shadow tiddler determines the overall ~TiddlyWiki layout",
	PluginManager: "This shadow tiddler provides access to the plugin manager",
	SideBarOptions: "This shadow tiddler is used as the contents of the option panel in the right-hand sidebar",
	SideBarTabs: "This shadow tiddler is used as the contents of the tabs panel in the right-hand sidebar",
	SiteSubtitle: "This shadow tiddler is used as the second part of the page title",
	SiteTitle: "This shadow tiddler is used as the first part of the page title",
	SiteUrl: "This shadow tiddler should be set to the full target URL for publication",
	StyleSheetColors: "This shadow tiddler contains CSS definitions related to the color of page elements. ''DO NOT EDIT THIS TIDDLER'', instead make your changes in the StyleSheet shadow tiddler",
	StyleSheet: "This tiddler can contain custom CSS definitions",
	StyleSheetLayout: "This shadow tiddler contains CSS definitions related to the layout of page elements. ''DO NOT EDIT THIS TIDDLER'', instead make your changes in the StyleSheet shadow tiddler",
	StyleSheetLocale: "This shadow tiddler contains CSS definitions related to the translation locale",
	StyleSheetPrint: "This shadow tiddler contains CSS definitions for printing",
	TabAll: "This shadow tiddler contains the contents of the 'All' tab in the right-hand sidebar",
	TabMore: "This shadow tiddler contains the contents of the 'More' tab in the right-hand sidebar",
	TabMoreMissing: "This shadow tiddler contains the contents of the 'Missing' tab in the right-hand sidebar",
	TabMoreOrphans: "This shadow tiddler contains the contents of the 'Orphans' tab in the right-hand sidebar",
	TabMoreShadowed: "This shadow tiddler contains the contents of the 'Shadowed' tab in the right-hand sidebar",
	TabTags: "This shadow tiddler contains the contents of the 'Tags' tab in the right-hand sidebar",
	TabTimeline: "This shadow tiddler contains the contents of the 'Timeline' tab in the right-hand sidebar",
	ToolbarCommands: "This shadow tiddler determines which commands are shown in tiddler toolbars",
	ViewTemplate: "The HTML template in this shadow tiddler determines how tiddlers look"
	});
 
//--
//-- Main
//--
 
var params = null; // Command line parameters
var store = null; // TiddlyWiki storage
var story = null; // Main story
var formatter = null; // Default formatters for the wikifier
var anim = typeof Animator == "function" ? new Animator() : null; // Animation engine
var readOnly = false; // Whether we're in readonly mode
var highlightHack = null; // Embarrassing hack department...
var hadConfirmExit = false; // Don't warn more than once
var safeMode = false; // Disable all plugins and cookies
var showBackstage; // Whether to include the backstage area
var installedPlugins = []; // Information filled in when plugins are executed
var startingUp = false; // Whether we're in the process of starting up
var pluginInfo,tiddler; // Used to pass information to plugins in loadPlugins()
 
// Whether to use the JavaSaver applet
var useJavaSaver = (config.browser.isSafari || config.browser.isOpera) && (document.location.toString().substr(0,4) != "http");
 
// Starting up
function main()
{
	var t10,t9,t8,t7,t6,t5,t4,t3,t2,t1,t0 = new Date();
	startingUp = true;
	jQuery.noConflict();
	window.onbeforeunload = function(e) {if(window.confirmExit) return confirmExit();};
	params = getParameters();
	if(params)
		params = params.parseParams("open",null,false);
	store = new TiddlyWiki();
	invokeParamifier(params,"oninit");
	story = new Story("tiddlerDisplay","tiddler");
	addEvent(document,"click",Popup.onDocumentClick);
	saveTest();
	loadOptionsCookie();
	for(var s=0; s<config.notifyTiddlers.length; s++)
		store.addNotification(config.notifyTiddlers[s].name,config.notifyTiddlers[s].notify);
	t1 = new Date();
	loadShadowTiddlers();
	jQuery().trigger("loadShadows");
	t2 = new Date();
	store.loadFromDiv("storeArea","store",true);
	jQuery().trigger("loadTiddlers");
	t3 = new Date();
	invokeParamifier(params,"onload");
	t4 = new Date();
	readOnly = (window.location.protocol == "file:") ? false : config.options.chkHttpReadOnly;
	var pluginProblem = loadPlugins();
	jQuery().trigger("loadPlugins");
	t5 = new Date();
	formatter = new Formatter(config.formatters);
	invokeParamifier(params,"onconfig");
	story.switchTheme(config.options.txtTheme);
	showBackstage = !readOnly;
	t6 = new Date();
	for(var m in config.macros) {
		if(config.macros[m].init)
			config.macros[m].init();
	}
	t7 = new Date();
	store.notifyAll();
	t8 = new Date();
	restart();
	refreshDisplay();
	t9 = new Date();
	if(pluginProblem) {
		story.displayTiddler(null,"PluginManager");
		displayMessage(config.messages.customConfigError);
	}
	if(showBackstage)
		backstage.init();
	t10 = new Date();
	if(config.options.chkDisplayInstrumentation) {
		displayMessage("LoadShadows " + (t2-t1) + " ms");
		displayMessage("LoadFromDiv " + (t3-t2) + " ms");
		displayMessage("LoadPlugins " + (t5-t4) + " ms");
		displayMessage("Macro init " + (t7-t6) + " ms");
		displayMessage("Notify " + (t8-t7) + " ms");
		displayMessage("Restart " + (t9-t8) + " ms");
		displayMessage("Total: " + (t10-t0) + " ms");
	}
	startingUp = false;
	jQuery().trigger("startup");
}
 
// Called on unload. All functions called conditionally since they themselves may have been unloaded.
function unload()
{
	if(window.checkUnsavedChanges)
		checkUnsavedChanges();
	if(window.scrubNodes)
		scrubNodes(document.body);
}
 
// Restarting
function restart()
{
	invokeParamifier(params,"onstart");
	if(story.isEmpty()) {
		story.displayDefaultTiddlers();
	}
	window.scrollTo(0,0);
}
 
function saveTest()
{
	var s = document.getElementById("saveTest");
	if(s.hasChildNodes())
		alert(config.messages.savedSnapshotError);
	s.appendChild(document.createTextNode("savetest"));
}
 
function loadShadowTiddlers()
{
	var shadows = new TiddlyWiki();
	shadows.loadFromDiv("shadowArea","shadows",true);
	shadows.forEachTiddler(function(title,tiddler){config.shadowTiddlers[title] = tiddler.text;});
	delete shadows;
}
 
function loadPlugins()
{
	if(safeMode)
		return false;
	var tiddlers = store.getTaggedTiddlers("systemConfig");
	var toLoad = [];
	var nLoaded = 0;
	var map = {};
	var nPlugins = tiddlers.length;
	installedPlugins = [];
	for(var i=0; i<nPlugins; i++) {
		var p = getPluginInfo(tiddlers[i]);
		installedPlugins[i] = p;
		var n = p.Name;
		if(n)
			map[n] = p;
		n = p.Source;
		if(n)
			map[n] = p;
	}
	var visit = function(p) {
		if(!p || p.done)
			return;
		p.done = 1;
		var reqs = p.Requires;
		if(reqs) {
			reqs = reqs.readBracketedList();
			for(var i=0; i<reqs.length; i++)
				visit(map[reqs[i]]);
		}
		toLoad.push(p);
	};
	for(i=0; i<nPlugins; i++)
		visit(installedPlugins[i]);
	for(i=0; i<toLoad.length; i++) {
		p = toLoad[i];
		pluginInfo = p;
		tiddler = p.tiddler;
		if(isPluginExecutable(p)) {
			if(isPluginEnabled(p)) {
				p.executed = true;
				var startTime = new Date();
				try {
					if(tiddler.text)
						window.eval(tiddler.text);
					nLoaded++;
				} catch(ex) {
					p.log.push(config.messages.pluginError.format([exceptionText(ex)]));
					p.error = true;
				}
				pluginInfo.startupTime = String((new Date()) - startTime) + "ms";
			} else {
				nPlugins--;
			}
		} else {
			p.warning = true;
		}
	}
	return nLoaded != nPlugins;
}
 
function getPluginInfo(tiddler)
{
	var p = store.getTiddlerSlices(tiddler.title,["Name","Description","Version","Requires","CoreVersion","Date","Source","Author","License","Browsers"]);
	p.tiddler = tiddler;
	p.title = tiddler.title;
	p.log = [];
	return p;
}
 
// Check that a particular plugin is valid for execution
function isPluginExecutable(plugin)
{
	if(plugin.tiddler.isTagged("systemConfigForce")) {
		plugin.log.push(config.messages.pluginForced);
		return true;
	}
	if(plugin["CoreVersion"]) {
		var coreVersion = plugin["CoreVersion"].split(".");
		var w = parseInt(coreVersion[0],10) - version.major;
		if(w == 0 && coreVersion[1])
			w = parseInt(coreVersion[1],10) - version.minor;
		if(w == 0 && coreVersion[2])
			w = parseInt(coreVersion[2],10) - version.revision;
		if(w > 0) {
			plugin.log.push(config.messages.pluginVersionError);
			return false;
		}
	}
	return true;
}
 
function isPluginEnabled(plugin)
{
	if(plugin.tiddler.isTagged("systemConfigDisable")) {
		plugin.log.push(config.messages.pluginDisabled);
		return false;
	}
	return true;
}
 
function invokeMacro(place,macro,params,wikifier,tiddler)
{
	try {
		var m = config.macros[macro];
		if(m && m.handler) {
			var tiddlerElem = story.findContainingTiddler(place);
			window.tiddler = tiddlerElem ? store.getTiddler(tiddlerElem.getAttribute("tiddler")) : null;
			window.place = place;
			m.handler(place,macro,params.readMacroParams(),wikifier,params,tiddler);
		} else {
			createTiddlyError(place,config.messages.macroError.format([macro]),config.messages.macroErrorDetails.format([macro,config.messages.missingMacro]));
		}
	} catch(ex) {
		createTiddlyError(place,config.messages.macroError.format([macro]),config.messages.macroErrorDetails.format([macro,ex.toString()]));
	}
}
 
//--
//-- Paramifiers
//--
 
function getParameters()
{
	var p = null;
	if(window.location.hash) {
		p = decodeURIComponent(window.location.hash.substr(1));
		if(config.browser.firefoxDate != null && config.browser.firefoxDate[1] < "20051111")
			p = convertUTF8ToUnicode(p);
	}
	return p;
}
 
function invokeParamifier(params,handler)
{
	if(!params || params.length == undefined || params.length <= 1)
		return;
	for(var i=1; i<params.length; i++) {
		var p = config.paramifiers[params[i].name];
		if(p && p[handler] instanceof Function)
			p[handler](params[i].value);
		else {
			var h = config.optionHandlers[params[i].name.substr(0,3)];
			if(h && h.set instanceof Function)
				h.set(params[i].name,params[i].value);
		}
	}
}
 
config.paramifiers = {};
 
config.paramifiers.start = {
	oninit: function(v) {
		safeMode = v.toLowerCase() == "safe";
	}
};
 
config.paramifiers.open = {
	onstart: function(v) {
		if(!readOnly || store.tiddlerExists(v) || store.isShadowTiddler(v))
			story.displayTiddler("bottom",v,null,false,null);
	}
};
 
config.paramifiers.story = {
	onstart: function(v) {
		var list = store.getTiddlerText(v,"").parseParams("open",null,false);
		invokeParamifier(list,"onstart");
	}
};
 
config.paramifiers.search = {
	onstart: function(v) {
		story.search(v,false,false);
	}
};
 
config.paramifiers.searchRegExp = {
	onstart: function(v) {
		story.prototype.search(v,false,true);
	}
};
 
config.paramifiers.tag = {
	onstart: function(v) {
		story.displayTiddlers(null,store.filterTiddlers("[tag["+v+"]]"),null,false,null);
	}
};
 
config.paramifiers.newTiddler = {
	onstart: function(v) {
		if(!readOnly) {
			story.displayTiddler(null,v,DEFAULT_EDIT_TEMPLATE);
			story.focusTiddler(v,"text");
		}
	}
};
 
config.paramifiers.newJournal = {
	onstart: function(v) {
		if(!readOnly) {
			var now = new Date();
			var title = now.formatString(v.trim());
			story.displayTiddler(null,title,DEFAULT_EDIT_TEMPLATE);
			story.focusTiddler(title,"text");
		}
	}
};
 
config.paramifiers.readOnly = {
	onconfig: function(v) {
		var p = v.toLowerCase();
		readOnly = p == "yes" ? true : (p == "no" ? false : readOnly);
	}
};
 
config.paramifiers.theme = {
	onconfig: function(v) {
		story.switchTheme(v);
	}
};
 
config.paramifiers.upgrade = {
	onstart: function(v) {
		upgradeFrom(v);
	}
};
 
config.paramifiers.recent= {
	onstart: function(v) {
		var titles=[];
		var tiddlers=store.getTiddlers("modified","excludeLists").reverse();
		for(var i=0; i<v && i<tiddlers.length; i++)
			titles.push(tiddlers[i].title);
		story.displayTiddlers(null,titles);
	}
};
 
config.paramifiers.filter = {
	onstart: function(v) {
		story.displayTiddlers(null,store.filterTiddlers(v),null,false);
	}
};
 
//--
//-- Formatter helpers
//--
 
function Formatter(formatters)
{
	this.formatters = [];
	var pattern = [];
	for(var n=0; n<formatters.length; n++) {
		pattern.push("(" + formatters[n].match + ")");
		this.formatters.push(formatters[n]);
	}
	this.formatterRegExp = new RegExp(pattern.join("|"),"mg");
}
 
config.formatterHelpers = {
 
	createElementAndWikify: function(w)
	{
		w.subWikifyTerm(createTiddlyElement(w.output,this.element),this.termRegExp);
	},
 
	inlineCssHelper: function(w)
	{
		var styles = [];
		config.textPrimitives.cssLookaheadRegExp.lastIndex = w.nextMatch;
		var lookaheadMatch = config.textPrimitives.cssLookaheadRegExp.exec(w.source);
		while(lookaheadMatch && lookaheadMatch.index == w.nextMatch) {
			var s,v;
			if(lookaheadMatch[1]) {
				s = lookaheadMatch[1].unDash();
				v = lookaheadMatch[2];
			} else {
				s = lookaheadMatch[3].unDash();
				v = lookaheadMatch[4];
			}
			if(s=="bgcolor")
				s = "backgroundColor";
			styles.push({style: s, value: v});
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
			config.textPrimitives.cssLookaheadRegExp.lastIndex = w.nextMatch;
			lookaheadMatch = config.textPrimitives.cssLookaheadRegExp.exec(w.source);
		}
		return styles;
	},
 
	applyCssHelper: function(e,styles)
	{
		for(var t=0; t< styles.length; t++) {
			try {
				e.style[styles[t].style] = styles[t].value;
			} catch (ex) {
			}
		}
	},
 
	enclosedTextHelper: function(w)
	{
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			var text = lookaheadMatch[1];
			if(config.browser.isIE)
				text = text.replace(/\n/g,"\r");
			createTiddlyElement(w.output,this.element,null,null,text);
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
		}
	},
 
	isExternalLink: function(link)
	{
		if(store.tiddlerExists(link) || store.isShadowTiddler(link)) {
			return false;
		}
		var urlRegExp = new RegExp(config.textPrimitives.urlPattern,"mg");
		if(urlRegExp.exec(link)) {
			return true;
		}
		if(link.indexOf(".")!=-1 || link.indexOf("\\")!=-1 || link.indexOf("/")!=-1 || link.indexOf("#")!=-1) {
			return true;
		}
		return false;
	}
 
};
 
//--
//-- Standard formatters
//--
 
config.formatters = [
{
	name: "table",
	match: "^\\|(?:[^\\n]*)\\|(?:[fhck]?)$",
	lookaheadRegExp: /^\|([^\n]*)\|([fhck]?)$/mg,
	rowTermRegExp: /(\|(?:[fhck]?)$\n?)/mg,
	cellRegExp: /(?:\|([^\n\|]*)\|)|(\|[fhck]?$\n?)/mg,
	cellTermRegExp: /((?:\x20*)\|)/mg,
	rowTypes: {"c":"caption", "h":"thead", "":"tbody", "f":"tfoot"},
	handler: function(w)
	{
		var table = createTiddlyElement(w.output,"table",null,"twtable");
		var prevColumns = [];
		var currRowType = null;
		var rowContainer;
		var rowCount = 0;
		w.nextMatch = w.matchStart;
		this.lookaheadRegExp.lastIndex = w.nextMatch;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
		while(lookaheadMatch && lookaheadMatch.index == w.nextMatch) {
			var nextRowType = lookaheadMatch[2];
			if(nextRowType == "k") {
				table.className = lookaheadMatch[1];
				w.nextMatch += lookaheadMatch[0].length+1;
			} else {
				if(nextRowType != currRowType) {
					rowContainer = createTiddlyElement(table,this.rowTypes[nextRowType]);
					currRowType = nextRowType;
				}
				if(currRowType == "c") {
					// Caption
					w.nextMatch++;
					if(rowContainer != table.firstChild)
						table.insertBefore(rowContainer,table.firstChild);
					rowContainer.setAttribute("align",rowCount == 0?"top":"bottom");
					w.subWikifyTerm(rowContainer,this.rowTermRegExp);
				} else {
					var theRow = createTiddlyElement(rowContainer,"tr",null,(rowCount&1)?"oddRow":"evenRow");
					theRow.onmouseover = function() {addClass(this,"hoverRow");};
					theRow.onmouseout = function() {removeClass(this,"hoverRow");};
					this.rowHandler(w,theRow,prevColumns);
					rowCount++;
				}
			}
			this.lookaheadRegExp.lastIndex = w.nextMatch;
			lookaheadMatch = this.lookaheadRegExp.exec(w.source);
		}
	},
	rowHandler: function(w,e,prevColumns)
	{
		var col = 0;
		var colSpanCount = 1;
		var prevCell = null;
		this.cellRegExp.lastIndex = w.nextMatch;
		var cellMatch = this.cellRegExp.exec(w.source);
		while(cellMatch && cellMatch.index == w.nextMatch) {
			if(cellMatch[1] == "~") {
				// Rowspan
				var last = prevColumns[col];
				if(last) {
					last.rowSpanCount++;
					last.element.setAttribute("rowspan",last.rowSpanCount);
					last.element.setAttribute("rowSpan",last.rowSpanCount); // Needed for IE
					last.element.valign = "center";
				}
				w.nextMatch = this.cellRegExp.lastIndex-1;
			} else if(cellMatch[1] == ">") {
				// Colspan
				colSpanCount++;
				w.nextMatch = this.cellRegExp.lastIndex-1;
			} else if(cellMatch[2]) {
				// End of row
				if(prevCell && colSpanCount > 1) {
					prevCell.setAttribute("colspan",colSpanCount);
					prevCell.setAttribute("colSpan",colSpanCount); // Needed for IE
				}
				w.nextMatch = this.cellRegExp.lastIndex;
				break;
			} else {
				// Cell
				w.nextMatch++;
				var styles = config.formatterHelpers.inlineCssHelper(w);
				var spaceLeft = false;
				var chr = w.source.substr(w.nextMatch,1);
				while(chr == " ") {
					spaceLeft = true;
					w.nextMatch++;
					chr = w.source.substr(w.nextMatch,1);
				}
				var cell;
				if(chr == "!") {
					cell = createTiddlyElement(e,"th");
					w.nextMatch++;
				} else {
					cell = createTiddlyElement(e,"td");
				}
				prevCell = cell;
				prevColumns[col] = {rowSpanCount:1,element:cell};
				if(colSpanCount > 1) {
					cell.setAttribute("colspan",colSpanCount);
					cell.setAttribute("colSpan",colSpanCount); // Needed for IE
					colSpanCount = 1;
				}
				config.formatterHelpers.applyCssHelper(cell,styles);
				w.subWikifyTerm(cell,this.cellTermRegExp);
				if(w.matchText.substr(w.matchText.length-2,1) == " ") // spaceRight
					cell.align = spaceLeft ? "center" : "left";
				else if(spaceLeft)
					cell.align = "right";
				w.nextMatch--;
			}
			col++;
			this.cellRegExp.lastIndex = w.nextMatch;
			cellMatch = this.cellRegExp.exec(w.source);
		}
	}
},
 
{
	name: "heading",
	match: "^!{1,6}",
	termRegExp: /(\n)/mg,
	handler: function(w)
	{
		w.subWikifyTerm(createTiddlyElement(w.output,"h" + w.matchLength),this.termRegExp);
	}
},
 
{
	name: "list",
	match: "^(?:[\\*#;:]+)",
	lookaheadRegExp: /^(?:(?:(\*)|(#)|(;)|(:))+)/mg,
	termRegExp: /(\n)/mg,
	handler: function(w)
	{
		var stack = [w.output];
		var currLevel = 0, currType = null;
		var listLevel, listType, itemType, baseType;
		w.nextMatch = w.matchStart;
		this.lookaheadRegExp.lastIndex = w.nextMatch;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
		while(lookaheadMatch && lookaheadMatch.index == w.nextMatch) {
			if(lookaheadMatch[1]) {
				listType = "ul";
				itemType = "li";
			} else if(lookaheadMatch[2]) {
				listType = "ol";
				itemType = "li";
			} else if(lookaheadMatch[3]) {
				listType = "dl";
				itemType = "dt";
			} else if(lookaheadMatch[4]) {
				listType = "dl";
				itemType = "dd";
			}
			if(!baseType)
				baseType = listType;
			listLevel = lookaheadMatch[0].length;
			w.nextMatch += lookaheadMatch[0].length;
			var t;
			if(listLevel > currLevel) {
				for(t=currLevel; t<listLevel; t++) {
					var target = (currLevel == 0) ? stack[stack.length-1] : stack[stack.length-1].lastChild;
					stack.push(createTiddlyElement(target,listType));
				}
			} else if(listType!=baseType && listLevel==1) {
				w.nextMatch -= lookaheadMatch[0].length;
				return;
			} else if(listLevel < currLevel) {
				for(t=currLevel; t>listLevel; t--)
					stack.pop();
			} else if(listLevel == currLevel && listType != currType) {
				stack.pop();
				stack.push(createTiddlyElement(stack[stack.length-1].lastChild,listType));
			}
			currLevel = listLevel;
			currType = listType;
			var e = createTiddlyElement(stack[stack.length-1],itemType);
			w.subWikifyTerm(e,this.termRegExp);
			this.lookaheadRegExp.lastIndex = w.nextMatch;
			lookaheadMatch = this.lookaheadRegExp.exec(w.source);
		}
	}
},
 
{
	name: "quoteByBlock",
	match: "^<<<\\n",
	termRegExp: /(^<<<(\n|$))/mg,
	element: "blockquote",
	handler: config.formatterHelpers.createElementAndWikify
},
 
{
	name: "quoteByLine",
	match: "^>+",
	lookaheadRegExp: /^>+/mg,
	termRegExp: /(\n)/mg,
	element: "blockquote",
	handler: function(w)
	{
		var stack = [w.output];
		var currLevel = 0;
		var newLevel = w.matchLength;
		var t;
		do {
			if(newLevel > currLevel) {
				for(t=currLevel; t<newLevel; t++)
					stack.push(createTiddlyElement(stack[stack.length-1],this.element));
			} else if(newLevel < currLevel) {
				for(t=currLevel; t>newLevel; t--)
					stack.pop();
			}
			currLevel = newLevel;
			w.subWikifyTerm(stack[stack.length-1],this.termRegExp);
			createTiddlyElement(stack[stack.length-1],"br");
			this.lookaheadRegExp.lastIndex = w.nextMatch;
			var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
			var matched = lookaheadMatch && lookaheadMatch.index == w.nextMatch;
			if(matched) {
				newLevel = lookaheadMatch[0].length;
				w.nextMatch += lookaheadMatch[0].length;
			}
		} while(matched);
	}
},
 
{
	name: "rule",
	match: "^----+$\\n?|<hr ?/?>\\n?",
	handler: function(w)
	{
		createTiddlyElement(w.output,"hr");
	}
},
 
{
	name: "monospacedByLine",
	match: "^(?:/\\*\\{\\{\\{\\*/|\\{\\{\\{|//\\{\\{\\{|<!--\\{\\{\\{-->)\\n",
	element: "pre",
	handler: function(w)
	{
		switch(w.matchText) {
		case "/*{{{*/\n": // CSS
			this.lookaheadRegExp = /\/\*\{\{\{\*\/\n*((?:^[^\n]*\n)+?)(\n*^\/\*\}\}\}\*\/$\n?)/mg;
			break;
		case "{{{\n": // monospaced block
			this.lookaheadRegExp = /^\{\{\{\n((?:^[^\n]*\n)+?)(^\}\}\}$\n?)/mg;
			break;
		case "//{{{\n": // plugin
			this.lookaheadRegExp = /^\/\/\{\{\{\n\n*((?:^[^\n]*\n)+?)(\n*^\/\/\}\}\}$\n?)/mg;
			break;
		case "<!--{{{-->\n": //template
			this.lookaheadRegExp = /<!--\{\{\{-->\n*((?:^[^\n]*\n)+?)(\n*^<!--\}\}\}-->$\n?)/mg;
			break;
		default:
			break;
		}
		config.formatterHelpers.enclosedTextHelper.call(this,w);
	}
},
 
{
	name: "wikifyComment",
	match: "^(?:/\\*\\*\\*|<!---)\\n",
	handler: function(w)
	{
		var termRegExp = (w.matchText == "/***\n") ? (/(^\*\*\*\/\n)/mg) : (/(^--->\n)/mg);
		w.subWikifyTerm(w.output,termRegExp);
	}
},
 
{
	name: "macro",
	match: "<<",
	lookaheadRegExp: /<<([^>\s]+)(?:\s*)((?:[^>]|(?:>(?!>)))*)>>/mg,
	handler: function(w)
	{
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart && lookaheadMatch[1]) {
			w.nextMatch = this.lookaheadRegExp.lastIndex;
			invokeMacro(w.output,lookaheadMatch[1],lookaheadMatch[2],w,w.tiddler);
		}
	}
},
 
{
	name: "prettyLink",
	match: "\\[\\[",
	lookaheadRegExp: /\[\[(.*?)(?:\|(~)?(.*?))?\]\]/mg,
	handler: function(w)
	{
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			var e;
			var text = lookaheadMatch[1];
			if(lookaheadMatch[3]) {
				// Pretty bracketted link
				var link = lookaheadMatch[3];
				e = (!lookaheadMatch[2] && config.formatterHelpers.isExternalLink(link)) ?
						createExternalLink(w.output,link) : createTiddlyLink(w.output,decodeURIComponent(link),false,null,w.isStatic,w.tiddler);
			} else {
				// Simple bracketted link
				e = createTiddlyLink(w.output,decodeURIComponent(text),false,null,w.isStatic,w.tiddler);
			}
			createTiddlyText(e,text);
			w.nextMatch = this.lookaheadRegExp.lastIndex;
		}
	}
},
 
{
	name: "wikiLink",
	match: config.textPrimitives.unWikiLink+"?"+config.textPrimitives.wikiLink,
	handler: function(w)
	{
		if(w.matchText.substr(0,1) == config.textPrimitives.unWikiLink) {
			w.outputText(w.output,w.matchStart+1,w.nextMatch);
			return;
		}
		if(w.matchStart > 0) {
			var preRegExp = new RegExp(config.textPrimitives.anyLetterStrict,"mg");
			preRegExp.lastIndex = w.matchStart-1;
			var preMatch = preRegExp.exec(w.source);
			if(preMatch.index == w.matchStart-1) {
				w.outputText(w.output,w.matchStart,w.nextMatch);
				return;
			}
		}
		if(w.autoLinkWikiWords || store.isShadowTiddler(w.matchText)) {
			var link = createTiddlyLink(w.output,w.matchText,false,null,w.isStatic,w.tiddler);
			w.outputText(link,w.matchStart,w.nextMatch);
		} else {
			w.outputText(w.output,w.matchStart,w.nextMatch);
		}
	}
},
 
{
	name: "urlLink",
	match: config.textPrimitives.urlPattern,
	handler: function(w)
	{
		w.outputText(createExternalLink(w.output,w.matchText),w.matchStart,w.nextMatch);
	}
},
 
{
	name: "image",
	match: "\\[[<>]?[Ii][Mm][Gg]\\[",
	lookaheadRegExp: /\[([<]?)(>?)[Ii][Mm][Gg]\[(?:([^\|\]]+)\|)?([^\[\]\|]+)\](?:\[([^\]]*)\])?\]/mg,
	handler: function(w)
	{
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			var e = w.output;
			if(lookaheadMatch[5]) {
				var link = lookaheadMatch[5];
				e = config.formatterHelpers.isExternalLink(link) ? createExternalLink(w.output,link) : createTiddlyLink(w.output,link,false,null,w.isStatic,w.tiddler);
				addClass(e,"imageLink");
			}
			var img = createTiddlyElement(e,"img");
			if(lookaheadMatch[1])
				img.align = "left";
			else if(lookaheadMatch[2])
				img.align = "right";
			if(lookaheadMatch[3]) {
				img.title = lookaheadMatch[3];
				img.setAttribute("alt",lookaheadMatch[3]);
			}
			img.src = lookaheadMatch[4];
			w.nextMatch = this.lookaheadRegExp.lastIndex;
		}
	}
},
 
{
	name: "html",
	match: "<[Hh][Tt][Mm][Ll]>",
	lookaheadRegExp: /<[Hh][Tt][Mm][Ll]>((?:.|\n)*?)<\/[Hh][Tt][Mm][Ll]>/mg,
	handler: function(w)
	{
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			createTiddlyElement(w.output,"span").innerHTML = lookaheadMatch[1];
			w.nextMatch = this.lookaheadRegExp.lastIndex;
		}
	}
},
 
{
	name: "commentByBlock",
	match: "/%",
	lookaheadRegExp: /\/%((?:.|\n)*?)%\//mg,
	handler: function(w)
	{
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
			w.nextMatch = this.lookaheadRegExp.lastIndex;
	}
},
 
{
	name: "characterFormat",
	match: "''|//|__|\\^\\^|~~|--(?!\\s|$)|\\{\\{\\{",
	handler: function(w)
	{
		switch(w.matchText) {
		case "''":
			w.subWikifyTerm(w.output.appendChild(document.createElement("strong")),/('')/mg);
			break;
		case "//":
			w.subWikifyTerm(createTiddlyElement(w.output,"em"),/(\/\/)/mg);
			break;
		case "__":
			w.subWikifyTerm(createTiddlyElement(w.output,"u"),/(__)/mg);
			break;
		case "^^":
			w.subWikifyTerm(createTiddlyElement(w.output,"sup"),/(\^\^)/mg);
			break;
		case "~~":
			w.subWikifyTerm(createTiddlyElement(w.output,"sub"),/(~~)/mg);
			break;
		case "--":
			w.subWikifyTerm(createTiddlyElement(w.output,"strike"),/(--)/mg);
			break;
		case "{{{":
			var lookaheadRegExp = /\{\{\{((?:.|\n)*?)\}\}\}/mg;
			lookaheadRegExp.lastIndex = w.matchStart;
			var lookaheadMatch = lookaheadRegExp.exec(w.source);
			if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
				createTiddlyElement(w.output,"code",null,null,lookaheadMatch[1]);
				w.nextMatch = lookaheadRegExp.lastIndex;
			}
			break;
		}
	}
},
 
{
	name: "customFormat",
	match: "@@|\\{\\{",
	handler: function(w)
	{
		switch(w.matchText) {
		case "@@":
			var e = createTiddlyElement(w.output,"span");
			var styles = config.formatterHelpers.inlineCssHelper(w);
			if(styles.length == 0)
				e.className = "marked";
			else
				config.formatterHelpers.applyCssHelper(e,styles);
			w.subWikifyTerm(e,/(@@)/mg);
			break;
		case "{{":
			var lookaheadRegExp = /\{\{[\s]*([\w]+[\s\w]*)[\s]*\{(\n?)/mg;
			lookaheadRegExp.lastIndex = w.matchStart;
			var lookaheadMatch = lookaheadRegExp.exec(w.source);
			if(lookaheadMatch) {
				w.nextMatch = lookaheadRegExp.lastIndex;
				e = createTiddlyElement(w.output,lookaheadMatch[2] == "\n" ? "div" : "span",null,lookaheadMatch[1]);
				w.subWikifyTerm(e,/(\}\}\})/mg);
			}
			break;
		}
	}
},
 
{
	name: "mdash",
	match: "--",
	handler: function(w)
	{
		createTiddlyElement(w.output,"span").innerHTML = "&mdash;";
	}
},
 
{
	name: "lineBreak",
	match: "\\n|<br ?/?>",
	handler: function(w)
	{
		createTiddlyElement(w.output,"br");
	}
},
 
{
	name: "rawText",
	match: "\"{3}|<nowiki>",
	lookaheadRegExp: /(?:\"{3}|<nowiki>)((?:.|\n)*?)(?:\"{3}|<\/nowiki>)/mg,
	handler: function(w)
	{
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			createTiddlyElement(w.output,"span",null,null,lookaheadMatch[1]);
			w.nextMatch = this.lookaheadRegExp.lastIndex;
		}
	}
},
 
{
	name: "htmlEntitiesEncoding",
	match: "(?:(?:&#?[a-zA-Z0-9]{2,8};|.)(?:&#?(?:x0*(?:3[0-6][0-9a-fA-F]|1D[c-fC-F][0-9a-fA-F]|20[d-fD-F][0-9a-fA-F]|FE2[0-9a-fA-F])|0*(?:76[89]|7[7-9][0-9]|8[0-7][0-9]|761[6-9]|76[2-7][0-9]|84[0-3][0-9]|844[0-7]|6505[6-9]|6506[0-9]|6507[0-1]));)+|&#?[a-zA-Z0-9]{2,8};)",
	handler: function(w)
	{
		createTiddlyElement(w.output,"span").innerHTML = w.matchText;
	}
}
 
];
 
//--
//-- Wikifier
//--
 
function getParser(tiddler,format)
{
	if(tiddler) {
		if(!format)
			format = tiddler.fields["wikiformat"];
		var i;
		if(format) {
			for(i in config.parsers) {
				if(format == config.parsers[i].format)
					return config.parsers[i];
			}
		} else {
			for(i in config.parsers) {
				if(tiddler.isTagged(config.parsers[i].formatTag))
					return config.parsers[i];
			}
		}
	}
	return formatter;
}
 
function wikify(source,output,highlightRegExp,tiddler)
{
	if(source) {
		var wikifier = new Wikifier(source,getParser(tiddler),highlightRegExp,tiddler);
		var t0 = new Date();
		wikifier.subWikify(output);
		if(tiddler && config.options.chkDisplayInstrumentation)
			displayMessage("wikify:" +tiddler.title+ " in " + (new Date()-t0) + " ms");
	}
}
 
function wikifyStatic(source,highlightRegExp,tiddler,format)
{
	var e = createTiddlyElement(document.body,"pre");
	e.style.display = "none";
	var html = "";
	if(source && source != "") {
		if(!tiddler)
			tiddler = new Tiddler("temp");
		var wikifier = new Wikifier(source,getParser(tiddler,format),highlightRegExp,tiddler);
		wikifier.isStatic = true;
		wikifier.subWikify(e);
		html = e.innerHTML;
		removeNode(e);
	}
	return html;
}
 
function wikifyPlain(title,theStore,limit)
{
	if(!theStore)
		theStore = store;
	if(theStore.tiddlerExists(title) || theStore.isShadowTiddler(title)) {
		return wikifyPlainText(theStore.getTiddlerText(title),limit,tiddler);
	} else {
		return "";
	}
}
 
function wikifyPlainText(text,limit,tiddler)
{
	if(limit > 0)
		text = text.substr(0,limit);
	var wikifier = new Wikifier(text,formatter,null,tiddler);
	return wikifier.wikifyPlain();
}
 
function highlightify(source,output,highlightRegExp,tiddler)
{
	if(source) {
		var wikifier = new Wikifier(source,formatter,highlightRegExp,tiddler);
		wikifier.outputText(output,0,source.length);
	}
}
 
function Wikifier(source,formatter,highlightRegExp,tiddler)
{
	this.source = source;
	this.output = null;
	this.formatter = formatter;
	this.nextMatch = 0;
	this.autoLinkWikiWords = tiddler && tiddler.autoLinkWikiWords() == false ? false : true;
	this.highlightRegExp = highlightRegExp;
	this.highlightMatch = null;
	this.isStatic = false;
	if(highlightRegExp) {
		highlightRegExp.lastIndex = 0;
		this.highlightMatch = highlightRegExp.exec(source);
	}
	this.tiddler = tiddler;
}
 
Wikifier.prototype.wikifyPlain = function()
{
	var e = createTiddlyElement(document.body,"div");
	e.style.display = "none";
	this.subWikify(e);
	var text = getPlainText(e);
	removeNode(e);
	return text;
};
 
Wikifier.prototype.subWikify = function(output,terminator)
{
	try {
		if(terminator)
			this.subWikifyTerm(output,new RegExp("(" + terminator + ")","mg"));
		else
			this.subWikifyUnterm(output);
	} catch(ex) {
		showException(ex);
	}
};
 
Wikifier.prototype.subWikifyUnterm = function(output)
{
	var oldOutput = this.output;
	this.output = output;
	this.formatter.formatterRegExp.lastIndex = this.nextMatch;
	var formatterMatch = this.formatter.formatterRegExp.exec(this.source);
	while(formatterMatch) {
		// Output any text before the match
		if(formatterMatch.index > this.nextMatch)
			this.outputText(this.output,this.nextMatch,formatterMatch.index);
		// Set the match parameters for the handler
		this.matchStart = formatterMatch.index;
		this.matchLength = formatterMatch[0].length;
		this.matchText = formatterMatch[0];
		this.nextMatch = this.formatter.formatterRegExp.lastIndex;
		for(var t=1; t<formatterMatch.length; t++) {
			if(formatterMatch[t]) {
				this.formatter.formatters[t-1].handler(this);
				this.formatter.formatterRegExp.lastIndex = this.nextMatch;
				break;
			}
		}
		formatterMatch = this.formatter.formatterRegExp.exec(this.source);
	}
	if(this.nextMatch < this.source.length) {
		this.outputText(this.output,this.nextMatch,this.source.length);
		this.nextMatch = this.source.length;
	}
	this.output = oldOutput;
};
 
Wikifier.prototype.subWikifyTerm = function(output,terminatorRegExp)
{
	var oldOutput = this.output;
	this.output = output;
	terminatorRegExp.lastIndex = this.nextMatch;
	var terminatorMatch = terminatorRegExp.exec(this.source);
	this.formatter.formatterRegExp.lastIndex = this.nextMatch;
	var formatterMatch = this.formatter.formatterRegExp.exec(terminatorMatch ? this.source.substr(0,terminatorMatch.index) : this.source);
	while(terminatorMatch || formatterMatch) {
		if(terminatorMatch && (!formatterMatch || terminatorMatch.index <= formatterMatch.index)) {
			if(terminatorMatch.index > this.nextMatch)
				this.outputText(this.output,this.nextMatch,terminatorMatch.index);
			this.matchText = terminatorMatch[1];
			this.matchLength = terminatorMatch[1].length;
			this.matchStart = terminatorMatch.index;
			this.nextMatch = this.matchStart + this.matchLength;
			this.output = oldOutput;
			return;
		}
		if(formatterMatch.index > this.nextMatch)
			this.outputText(this.output,this.nextMatch,formatterMatch.index);
		this.matchStart = formatterMatch.index;
		this.matchLength = formatterMatch[0].length;
		this.matchText = formatterMatch[0];
		this.nextMatch = this.formatter.formatterRegExp.lastIndex;
		for(var t=1; t<formatterMatch.length; t++) {
			if(formatterMatch[t]) {
				this.formatter.formatters[t-1].handler(this);
				this.formatter.formatterRegExp.lastIndex = this.nextMatch;
				break;
			}
		}
		terminatorRegExp.lastIndex = this.nextMatch;
		terminatorMatch = terminatorRegExp.exec(this.source);
		formatterMatch = this.formatter.formatterRegExp.exec(terminatorMatch ? this.source.substr(0,terminatorMatch.index) : this.source);
	}
	if(this.nextMatch < this.source.length) {
		this.outputText(this.output,this.nextMatch,this.source.length);
		this.nextMatch = this.source.length;
	}
	this.output = oldOutput;
};
 
Wikifier.prototype.outputText = function(place,startPos,endPos)
{
	while(this.highlightMatch && (this.highlightRegExp.lastIndex > startPos) && (this.highlightMatch.index < endPos) && (startPos < endPos)) {
		if(this.highlightMatch.index > startPos) {
			createTiddlyText(place,this.source.substring(startPos,this.highlightMatch.index));
			startPos = this.highlightMatch.index;
		}
		var highlightEnd = Math.min(this.highlightRegExp.lastIndex,endPos);
		var theHighlight = createTiddlyElement(place,"span",null,"highlight",this.source.substring(startPos,highlightEnd));
		startPos = highlightEnd;
		if(startPos >= this.highlightRegExp.lastIndex)
			this.highlightMatch = this.highlightRegExp.exec(this.source);
	}
	if(startPos < endPos) {
		createTiddlyText(place,this.source.substring(startPos,endPos));
	}
};
 
//--
//-- Macro definitions
//--
 
config.macros.today.handler = function(place,macroName,params)
{
	var now = new Date();
	var text = params[0] ? now.formatString(params[0].trim()) : now.toLocaleString();
	jQuery("<span/>").text(text).appendTo(place);
};
 
config.macros.version.handler = function(place)
{
	jQuery("<span/>").text(formatVersion()).appendTo(place);
};
 
config.macros.list.handler = function(place,macroName,params)
{
	var type = params[0] || "all";
	var list = document.createElement("ul");
	place.appendChild(list);
	if(this[type].prompt)
		createTiddlyElement(list,"li",null,"listTitle",this[type].prompt);
	var results;
	if(this[type].handler)
		results = this[type].handler(params);
	for(var t = 0; t < results.length; t++) {
		var li = document.createElement("li");
		list.appendChild(li);
		createTiddlyLink(li,typeof results[t] == "string" ? results[t] : results[t].title,true);
	}
};
 
config.macros.list.all.handler = function(params)
{
	return store.reverseLookup("tags","excludeLists",false,"title");
};
 
config.macros.list.missing.handler = function(params)
{
	return store.getMissingLinks();
};
 
config.macros.list.orphans.handler = function(params)
{
	return store.getOrphans();
};
 
config.macros.list.shadowed.handler = function(params)
{
	return store.getShadowed();
};
 
config.macros.list.touched.handler = function(params)
{
	return store.getTouched();
};
 
config.macros.list.filter.handler = function(params)
{
	var filter = params[1];
	var results = [];
	if(filter) {
		var tiddlers = store.filterTiddlers(filter);
		for(var t=0; t<tiddlers.length; t++)
			results.push(tiddlers[t].title);
	}
	return results;
};
 
config.macros.allTags.handler = function(place,macroName,params)
{
	var tags = store.getTags(params[0]);
	var ul = createTiddlyElement(place,"ul");
	if(tags.length == 0)
		createTiddlyElement(ul,"li",null,"listTitle",this.noTags);
	for(var t=0; t<tags.length; t++) {
		var title = tags[t][0];
		var info = getTiddlyLinkInfo(title);
		var li = createTiddlyElement(ul,"li");
		var btn = createTiddlyButton(li,title + " (" + tags[t][1] + ")",this.tooltip.format([title]),onClickTag,info.classes);
		btn.setAttribute("tag",title);
		btn.setAttribute("refresh","link");
		btn.setAttribute("tiddlyLink",title);
	}
};
 
config.macros.timeline.handler = function(place,macroName,params)
{
	var field = params[0] || "modified";
	var tiddlers = store.reverseLookup("tags","excludeLists",false,field);
	var lastDay = "";
	var last = params[1] ? tiddlers.length-Math.min(tiddlers.length,parseInt(params[1])) : 0;
	var dateFormat = params[2] || this.dateFormat;
	for(var t=tiddlers.length-1; t>=last; t--) {
		var tiddler = tiddlers[t];
		var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);
		if(theDay != lastDay) {
			var ul = document.createElement("ul");
			place.appendChild(ul);
			createTiddlyElement(ul,"li",null,"listTitle",tiddler[field].formatString(dateFormat));
			lastDay = theDay;
		}
		createTiddlyElement(ul,"li",null,"listLink").appendChild(createTiddlyLink(place,tiddler.title,true));
	}
};
 
config.macros.tiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	params = paramString.parseParams("name",null,true,false,true);
	var names = params[0]["name"];
	var tiddlerName = names[0];
	var className = names[1] || null;
	var args = params[0]["with"];
	var wrapper = createTiddlyElement(place,"span",null,className);
	if(!args) {
		wrapper.setAttribute("refresh","content");
		wrapper.setAttribute("tiddler",tiddlerName);
	}
	var text = store.getTiddlerText(tiddlerName);
	if(text) {
		var stack = config.macros.tiddler.tiddlerStack;
		if(stack.indexOf(tiddlerName) !== -1)
			return;
		stack.push(tiddlerName);
		try {
			var n = args ? Math.min(args.length,9) : 0;
			for(var i=0; i<n; i++) {
				var placeholderRE = new RegExp("\\$" + (i + 1),"mg");
				text = text.replace(placeholderRE,args[i]);
			}
			config.macros.tiddler.renderText(wrapper,text,tiddlerName,params);
		} finally {
			stack.pop();
		}
	}
};
 
config.macros.tiddler.renderText = function(place,text,tiddlerName,params)
{
	wikify(text,place,null,store.getTiddler(tiddlerName));
};
 
config.macros.tiddler.tiddlerStack = [];
 
config.macros.tag.handler = function(place,macroName,params)
{
	createTagButton(place,params[0],null,params[1],params[2]);
};
 
config.macros.tags.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	params = paramString.parseParams("anon",null,true,false,false);
	var ul = createTiddlyElement(place,"ul");
	var title = getParam(params,"anon","");
	if(title && store.tiddlerExists(title))
		tiddler = store.getTiddler(title);
	var sep = getParam(params,"sep"," ");
	var lingo = config.views.wikified.tag;
	var prompt = tiddler.tags.length == 0 ? lingo.labelNoTags : lingo.labelTags;
	createTiddlyElement(ul,"li",null,"listTitle",prompt.format([tiddler.title]));
	for(var t=0; t<tiddler.tags.length; t++) {
		var tag = store.getTiddler(tiddler.tags[t]); 
		if(!tag || !tag.tags.contains("excludeLists")) { 
			createTagButton(createTiddlyElement(ul,"li"),tiddler.tags[t],tiddler.title);
			if(t<tiddler.tags.length-1)
				createTiddlyText(ul,sep);
		}
	}
};
 
config.macros.tagging.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	params = paramString.parseParams("anon",null,true,false,false);
	var ul = createTiddlyElement(place,"ul");
	var title = getParam(params,"anon","");
	if(title == "" && tiddler instanceof Tiddler)
		title = tiddler.title;
	var sep = getParam(params,"sep"," ");
	ul.setAttribute("title",this.tooltip.format([title]));
	var tagged = store.getTaggedTiddlers(title);
	var prompt = tagged.length == 0 ? this.labelNotTag : this.label;
	createTiddlyElement(ul,"li",null,"listTitle",prompt.format([title,tagged.length]));
	for(var t=0; t<tagged.length; t++) {
		createTiddlyLink(createTiddlyElement(ul,"li"),tagged[t].title,true);
		if(t<tagged.length-1)
			createTiddlyText(ul,sep);
	}
};
 
config.macros.closeAll.handler = function(place)
{
	createTiddlyButton(place,this.label,this.prompt,this.onClick);
};
 
config.macros.closeAll.onClick = function(e)
{
	story.closeAllTiddlers();
	return false;
};
 
config.macros.permaview.handler = function(place)
{
	createTiddlyButton(place,this.label,this.prompt,this.onClick);
};
 
config.macros.permaview.onClick = function(e)
{
	story.permaView();
	return false;
};
 
config.macros.saveChanges.handler = function(place,macroName,params)
{
	if(!readOnly)
		createTiddlyButton(place,params[0] || this.label,params[1] || this.prompt,this.onClick,null,null,this.accessKey);
};
 
config.macros.saveChanges.onClick = function(e)
{
	saveChanges();
	return false;
};
 
config.macros.slider.onClickSlider = function(ev)
{
	var e = ev || window.event;
	var n = this.nextSibling;
	var cookie = n.getAttribute("cookie");
	var isOpen = n.style.display != "none";
	if(config.options.chkAnimate && anim && typeof Slider == "function")
		anim.startAnimating(new Slider(n,!isOpen,null,"none"));
	else
		n.style.display = isOpen ? "none" : "block";
	config.options[cookie] = !isOpen;
	saveOptionCookie(cookie);
	return false;
};
 
config.macros.slider.createSlider = function(place,cookie,title,tooltip)
{
	var c = cookie || "";
	var btn = createTiddlyButton(place,title,tooltip,this.onClickSlider);
	var panel = createTiddlyElement(null,"div",null,"sliderPanel");
	panel.setAttribute("cookie",c);
	panel.style.display = config.options[c] ? "block" : "none";
	place.appendChild(panel);
	return panel;
};
 
config.macros.slider.handler = function(place,macroName,params)
{
	var panel = this.createSlider(place,params[0],params[2],params[3]);
	var text = store.getTiddlerText(params[1]);
	panel.setAttribute("refresh","content");
	panel.setAttribute("tiddler",params[1]);
	if(text)
		wikify(text,panel,null,store.getTiddler(params[1]));
};
 
// <<gradient [[tiddler name]] vert|horiz rgb rgb rgb rgb... >>
config.macros.gradient.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	var panel = wikifier ? createTiddlyElement(place,"div",null,"gradient") : place;
	panel.style.position = "relative";
	panel.style.overflow = "hidden";
	panel.style.zIndex = "0";
	if(wikifier) {
		var styles = config.formatterHelpers.inlineCssHelper(wikifier);
		config.formatterHelpers.applyCssHelper(panel,styles);
	}
	params = paramString.parseParams("color");
	var locolors = [], hicolors = [];
	for(var t=2; t<params.length; t++) {
		var c = params[t].value;
		if(params[t].name == "snap") {
			hicolors[hicolors.length-1] = c;
		} else {
			locolors.push(c);
			hicolors.push(c);
		}
	}
	drawGradient(panel,params[1].value != "vert",locolors,hicolors);
	if(wikifier)
		wikifier.subWikify(panel,">>");
	if(document.all) {
		panel.style.height = "100%";
		panel.style.width = "100%";
	}
};
 
config.macros.message.handler = function(place,macroName,params)
{
	if(params[0]) {
		var names = params[0].split(".");
		var lookupMessage = function(root,nameIndex) {
				if(names[nameIndex] in root) {
					if(nameIndex < names.length-1)
						return (lookupMessage(root[names[nameIndex]],nameIndex+1));
					else
						return root[names[nameIndex]];
				} else
					return null;
			};
		var m = lookupMessage(config,0);
		if(m == null)
			m = lookupMessage(window,0);
		createTiddlyText(place,m.toString().format(params.splice(1)));
	}
};
 
 
config.macros.view.views = {
	text: function(value,place,params,wikifier,paramString,tiddler) {
		highlightify(value,place,highlightHack,tiddler);
	},
	link: function(value,place,params,wikifier,paramString,tiddler) {
		createTiddlyLink(place,value,true);
	},
	wikified: function(value,place,params,wikifier,paramString,tiddler) {
		if(params[2])
			value=params[2].unescapeLineBreaks().format([value]);
		wikify(value,place,highlightHack,tiddler);
	},
	date: function(value,place,params,wikifier,paramString,tiddler) {
		value = Date.convertFromYYYYMMDDHHMM(value);
		createTiddlyText(place,value.formatString(params[2] ? params[2] : config.views.wikified.dateFormat));
	}
};
 
config.macros.view.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	if((tiddler instanceof Tiddler) && params[0]) {
		var value = store.getValue(tiddler,params[0]);
		if(value) {
			var type = params[1] || config.macros.view.defaultView;
			var handler = config.macros.view.views[type];
			if(handler)
				handler(value,place,params,wikifier,paramString,tiddler);
		}
	}
};
 
config.macros.edit.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	var field = params[0];
	var rows = params[1] || 0;
	var defVal = params[2] || '';
	if((tiddler instanceof Tiddler) && field) {
		story.setDirty(tiddler.title,true);
		var e,v;
		if(field != "text" && !rows) {
			e = createTiddlyElement(null,"input");
			if(tiddler.isReadOnly())
				e.setAttribute("readOnly","readOnly");
			e.setAttribute("edit",field);
			e.setAttribute("type","text");
			e.value = store.getValue(tiddler,field) || defVal;
			e.setAttribute("size","40");
			e.setAttribute("autocomplete","off");
			place.appendChild(e);
		} else {
			var wrapper1 = createTiddlyElement(null,"fieldset",null,"fieldsetFix");
			var wrapper2 = createTiddlyElement(wrapper1,"div");
			e = createTiddlyElement(wrapper2,"textarea");
			if(tiddler.isReadOnly())
				e.setAttribute("readOnly","readOnly");
			e.value = v = store.getValue(tiddler,field) || defVal;
			rows = rows || 10;
			var lines = v.match(/\n/mg);
			var maxLines = Math.max(parseInt(config.options.txtMaxEditRows),5);
			if(lines != null && lines.length > rows)
				rows = lines.length + 5;
			rows = Math.min(rows,maxLines);
			e.setAttribute("rows",rows);
			e.setAttribute("edit",field);
			place.appendChild(wrapper1);
		}
		return e;
	}
};
 
config.macros.tagChooser.onClick = function(ev)
{
	var e = ev || window.event;
	var lingo = config.views.editor.tagChooser;
	var popup = Popup.create(this);
	var tags = store.getTags(this.getAttribute("tags"));
	if(tags.length == 0)
		jQuery("<li/>").text(lingo.popupNone).appendTo(jQuery(popup));
	for(var t=0; t<tags.length; t++) {
		var tag = createTiddlyButton(createTiddlyElement(popup,"li"),tags[t][0],lingo.tagTooltip.format([tags[t][0]]),config.macros.tagChooser.onTagClick);
		tag.setAttribute("tag",tags[t][0]);
		tag.setAttribute("tiddler",this.getAttribute("tiddler"));
	}
	Popup.show();
	e.cancelBubble = true;
	if(e.stopPropagation) e.stopPropagation();
	return false;
};
 
config.macros.tagChooser.onTagClick = function(ev)
{
	var e = ev || window.event;
	if(e.metaKey || e.ctrlKey) stopEvent(e); //# keep popup open on CTRL-click
	var tag = this.getAttribute("tag");
	var title = this.getAttribute("tiddler");
	if(!readOnly)
		story.setTiddlerTag(title,tag,0);
	return false;
};
 
config.macros.tagChooser.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	if(tiddler instanceof Tiddler) {
		var lingo = config.views.editor.tagChooser;
		var btn = createTiddlyButton(place,lingo.text,lingo.tooltip,this.onClick);
		btn.setAttribute("tiddler",tiddler.title);
		btn.setAttribute("tags",params[0]);
	}
};
 
config.macros.refreshDisplay.handler = function(place)
{
	createTiddlyButton(place,this.label,this.prompt,this.onClick);
};
 
config.macros.refreshDisplay.onClick = function(e)
{
	refreshAll();
	return false;
};
 
config.macros.annotations.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	var title = tiddler ? tiddler.title : null;
	var a = title ? config.annotations[title] : null;
	if(!tiddler || !title || !a)
		return;
	var text = a.format([title]);
	wikify(text,createTiddlyElement(place,"div",null,"annotation"),null,tiddler);
};
 
//--
//-- NewTiddler and NewJournal macros
//--
 
config.macros.newTiddler.createNewTiddlerButton = function(place,title,params,label,prompt,accessKey,newFocus,isJournal)
{
	var tags = [];
	for(var t=1; t<params.length; t++) {
		if((params[t].name == "anon" && t != 1) || (params[t].name == "tag"))
			tags.push(params[t].value);
	}
	label = getParam(params,"label",label);
	prompt = getParam(params,"prompt",prompt);
	accessKey = getParam(params,"accessKey",accessKey);
	newFocus = getParam(params,"focus",newFocus);
	var customFields = getParam(params,"fields","");
	if(!customFields && !store.isShadowTiddler(title))
		customFields = String.encodeHashMap(config.defaultCustomFields);
	var btn = createTiddlyButton(place,label,prompt,this.onClickNewTiddler,null,null,accessKey);
	btn.setAttribute("newTitle",title);
	btn.setAttribute("isJournal",isJournal ? "true" : "false");
	if(tags.length > 0)
		btn.setAttribute("params",tags.join("|"));
	btn.setAttribute("newFocus",newFocus);
	btn.setAttribute("newTemplate",getParam(params,"template",DEFAULT_EDIT_TEMPLATE));
	if(customFields !== "")
		btn.setAttribute("customFields",customFields);
	var text = getParam(params,"text");
	if(text !== undefined)
		btn.setAttribute("newText",text);
	return btn;
};
 
config.macros.newTiddler.onClickNewTiddler = function()
{
	var title = this.getAttribute("newTitle");
	if(this.getAttribute("isJournal") == "true") {
		title = new Date().formatString(title.trim());
	}
	var params = this.getAttribute("params");
	var tags = params ? params.split("|") : [];
	var focus = this.getAttribute("newFocus");
	var template = this.getAttribute("newTemplate");
	var customFields = this.getAttribute("customFields");
	if(!customFields && !store.isShadowTiddler(title))
		customFields = String.encodeHashMap(config.defaultCustomFields);
	story.displayTiddler(null,title,template,false,null,null);
	var tiddlerElem = story.getTiddler(title);
	if(customFields)
		story.addCustomFields(tiddlerElem,customFields);
	var text = this.getAttribute("newText");
	if(typeof text == "string" && story.getTiddlerField(title,"text"))
		story.getTiddlerField(title,"text").value = text.format([title]);
	for(var t=0;t<tags.length;t++)
		story.setTiddlerTag(title,tags[t],+1);
	story.focusTiddler(title,focus);
	return false;
};
 
config.macros.newTiddler.handler = function(place,macroName,params,wikifier,paramString)
{
	if(!readOnly) {
		params = paramString.parseParams("anon",null,true,false,false);
		var title = params[1] && params[1].name == "anon" ? params[1].value : this.title;
		title = getParam(params,"title",title);
		this.createNewTiddlerButton(place,title,params,this.label,this.prompt,this.accessKey,"title",false);
	}
};
 
config.macros.newJournal.handler = function(place,macroName,params,wikifier,paramString)
{
	if(!readOnly) {
		params = paramString.parseParams("anon",null,true,false,false);
		var title = params[1] && params[1].name == "anon" ? params[1].value : config.macros.timeline.dateFormat;
		title = getParam(params,"title",title);
		config.macros.newTiddler.createNewTiddlerButton(place,title,params,this.label,this.prompt,this.accessKey,"text",true);
	}
};
 
//--
//-- Search macro
//--
 
config.macros.search.handler = function(place,macroName,params)
{
	var searchTimeout = null;
	var btn = createTiddlyButton(place,this.label,this.prompt,this.onClick,"searchButton");
	var txt = createTiddlyElement(null,"input",null,"txtOptionInput searchField");
	if(params[0])
		txt.value = params[0];
	if(config.browser.isSafari) {
		txt.setAttribute("type","search");
		txt.setAttribute("results","5");
	} else {
		txt.setAttribute("type","text");
	}
	place.appendChild(txt);
	txt.onkeyup = this.onKeyPress;
	txt.onfocus = this.onFocus;
	txt.setAttribute("size",this.sizeTextbox);
	txt.setAttribute("accessKey",params[1] || this.accessKey);
	txt.setAttribute("autocomplete","off");
	txt.setAttribute("lastSearchText","");
};
 
// Global because there's only ever one outstanding incremental search timer
config.macros.search.timeout = null;
 
config.macros.search.doSearch = function(txt)
{
	if(txt.value.length > 0) {
		story.search(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);
		txt.setAttribute("lastSearchText",txt.value);
	}
};
 
config.macros.search.onClick = function(e)
{
	config.macros.search.doSearch(this.nextSibling);
	return false;
};
 
config.macros.search.onKeyPress = function(ev)
{
	var e = ev || window.event;
	switch(e.keyCode) {
		case 13: // Ctrl-Enter
		case 10: // Ctrl-Enter on IE PC
			config.macros.search.doSearch(this);
			break;
		case 27: // Escape
			this.value = "";
			clearMessage();
			break;
	}
	if(config.options.chkIncrementalSearch) {
		if(this.value.length > 2) {
			if(this.value != this.getAttribute("lastSearchText")) {
				if(config.macros.search.timeout)
					clearTimeout(config.macros.search.timeout);
				var txt = this;
				config.macros.search.timeout = setTimeout(function() {config.macros.search.doSearch(txt);},500);
			}
		} else {
			if(config.macros.search.timeout)
				clearTimeout(config.macros.search.timeout);
		}
	}
};
 
config.macros.search.onFocus = function(e)
{
	this.select();
};
 
//--
//-- Tabs macro
//--
 
config.macros.tabs.handler = function(place,macroName,params)
{
	var cookie = params[0];
	var numTabs = (params.length-1)/3;
	var wrapper = createTiddlyElement(null,"div",null,"tabsetWrapper " + cookie);
	var tabset = createTiddlyElement(wrapper,"div",null,"tabset");
	tabset.setAttribute("cookie",cookie);
	var validTab = false;
	for(var t=0; t<numTabs; t++) {
		var label = params[t*3+1];
		var prompt = params[t*3+2];
		var content = params[t*3+3];
		var tab = createTiddlyButton(tabset,label,prompt,this.onClickTab,"tab tabUnselected");
		tab.setAttribute("tab",label);
		tab.setAttribute("content",content);
		tab.title = prompt;
		if(config.options[cookie] == label)
			validTab = true;
	}
	if(!validTab)
		config.options[cookie] = params[1];
	place.appendChild(wrapper);
	this.switchTab(tabset,config.options[cookie]);
};
 
config.macros.tabs.onClickTab = function(e)
{
	config.macros.tabs.switchTab(this.parentNode,this.getAttribute("tab"));
	return false;
};
 
config.macros.tabs.switchTab = function(tabset,tab)
{
	var cookie = tabset.getAttribute("cookie");
	var theTab = null;
	var nodes = tabset.childNodes;
	for(var t=0; t<nodes.length; t++) {
		if(nodes[t].getAttribute && nodes[t].getAttribute("tab") == tab) {
			theTab = nodes[t];
			theTab.className = "tab tabSelected";
		} else {
			nodes[t].className = "tab tabUnselected";
		}
	}
	if(theTab) {
		if(tabset.nextSibling && tabset.nextSibling.className == "tabContents")
			removeNode(tabset.nextSibling);
		var tabContent = createTiddlyElement(null,"div",null,"tabContents");
		tabset.parentNode.insertBefore(tabContent,tabset.nextSibling);
		var contentTitle = theTab.getAttribute("content");
		wikify(store.getTiddlerText(contentTitle),tabContent,null,store.getTiddler(contentTitle));
		if(cookie) {
			config.options[cookie] = tab;
			saveOptionCookie(cookie);
		}
	}
};
 
//--
//-- Tiddler toolbar
//--
 
// Create a toolbar command button
config.macros.toolbar.createCommand = function(place,commandName,tiddler,className)
{
	if(typeof commandName != "string") {
		var c = null;
		for(var t in config.commands) {
			if(config.commands[t] == commandName)
				c = t;
		}
		commandName = c;
	}
	if((tiddler instanceof Tiddler) && (typeof commandName == "string")) {
		var command = config.commands[commandName];
		if(command.isEnabled ? command.isEnabled(tiddler) : this.isCommandEnabled(command,tiddler)) {
			var text = command.getText ? command.getText(tiddler) : this.getCommandText(command,tiddler);
			var tooltip = command.getTooltip ? command.getTooltip(tiddler) : this.getCommandTooltip(command,tiddler);
			var cmd;
			switch(command.type) {
			case "popup":
				cmd = this.onClickPopup;
				break;
			case "command":
			default:
				cmd = this.onClickCommand;
				break;
			}
			var btn = createTiddlyButton(null,text,tooltip,cmd);
			btn.setAttribute("commandName",commandName);
			btn.setAttribute("tiddler",tiddler.title);
			addClass(btn,"command_" + commandName);
			if(className)
				addClass(btn,className);
			place.appendChild(btn);
		}
	}
};
 
config.macros.toolbar.isCommandEnabled = function(command,tiddler)
{
	var title = tiddler.title;
	var ro = tiddler.isReadOnly();
	var shadow = store.isShadowTiddler(title) && !store.tiddlerExists(title);
	return (!ro || (ro && !command.hideReadOnly)) && !(shadow && command.hideShadow);
};
 
config.macros.toolbar.getCommandText = function(command,tiddler)
{
	return tiddler.isReadOnly() && command.readOnlyText || command.text;
};
 
config.macros.toolbar.getCommandTooltip = function(command,tiddler)
{
	return tiddler.isReadOnly() && command.readOnlyTooltip || command.tooltip;
};
 
config.macros.toolbar.onClickCommand = function(ev)
{
	var e = ev || window.event;
	e.cancelBubble = true;
	if(e.stopPropagation) e.stopPropagation();
	var command = config.commands[this.getAttribute("commandName")];
	return command.handler(e,this,this.getAttribute("tiddler"));
};
 
config.macros.toolbar.onClickPopup = function(ev)
{
	var e = ev || window.event;
	e.cancelBubble = true;
	if(e.stopPropagation) e.stopPropagation();
	var popup = Popup.create(this);
	var command = config.commands[this.getAttribute("commandName")];
	var title = this.getAttribute("tiddler");
	var tiddler = store.fetchTiddler(title);
	popup.setAttribute("tiddler",title);
	command.handlePopup(popup,title);
	Popup.show();
	return false;
};
 
// Invoke the first command encountered from a given place that is tagged with a specified class
config.macros.toolbar.invokeCommand = function(place,className,event)
{
	var children = place.getElementsByTagName("a");
	for(var t=0; t<children.length; t++) {
		var c = children[t];
		if(hasClass(c,className) && c.getAttribute && c.getAttribute("commandName")) {
			if(c.onclick instanceof Function)
				c.onclick.call(c,event);
			break;
		}
	}
};
 
config.macros.toolbar.onClickMore = function(ev)
{
	var e = this.nextSibling;
	e.style.display = "inline";
	this.style.display = "none";
	return false;
};
 
config.macros.toolbar.onClickLess = function(ev)
{
	var e = this.parentNode;
	var m = e.previousSibling;
	e.style.display = "none";
	m.style.display = "inline";
	return false;
};
 
config.macros.toolbar.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	for(var t=0; t<params.length; t++) {
		var c = params[t];
		switch(c) {
		case "!":
			createTiddlyText(place,this.separator);
			break;
		case "*":
			createTiddlyElement(place,"br");
			break;
		case "<":
			var btn = createTiddlyButton(place,this.lessLabel,this.lessPrompt,config.macros.toolbar.onClickLess);
			addClass(btn,"lessCommand");
			break;
		case ">":
			var btn = createTiddlyButton(place,this.moreLabel,this.morePrompt,config.macros.toolbar.onClickMore);
			addClass(btn,"moreCommand");
			var e = createTiddlyElement(place,"span",null,"moreCommand");
			e.style.display = "none";
			place = e;
			break;
		default:
			var className = "";
			switch(c.substr(0,1)) {
			case "+":
				className = "defaultCommand";
				c = c.substr(1);
				break;
			case "-":
				className = "cancelCommand";
				c = c.substr(1);
				break;
			}
			if(c in config.commands)
				this.createCommand(place,c,tiddler,className);
			break;
		}
	}
};
 
//--
//-- Menu and toolbar commands
//--
 
config.commands.closeTiddler.handler = function(event,src,title)
{
	if(story.isDirty(title) && !readOnly) {
		if(!confirm(config.commands.cancelTiddler.warning.format([title])))
			return false;
	}
	story.setDirty(title,false);
	story.closeTiddler(title,true);
	return false;
};
 
config.commands.closeOthers.handler = function(event,src,title)
{
	story.closeAllTiddlers(title);
	return false;
};
 
config.commands.editTiddler.handler = function(event,src,title)
{
	clearMessage();
	var tiddlerElem = story.getTiddler(title);
	var fields = tiddlerElem.getAttribute("tiddlyFields");
	story.displayTiddler(null,title,DEFAULT_EDIT_TEMPLATE,false,null,fields);
	story.focusTiddler(title,config.options.txtEditorFocus||"text");
	return false;
};
 
config.commands.saveTiddler.handler = function(event,src,title)
{
	var newTitle = story.saveTiddler(title,event.shiftKey);
	if(newTitle)
		story.displayTiddler(null,newTitle);
	return false;
};
 
config.commands.cancelTiddler.handler = function(event,src,title)
{
	if(story.hasChanges(title) && !readOnly) {
		if(!confirm(this.warning.format([title])))
			return false;
	}
	story.setDirty(title,false);
	story.displayTiddler(null,title);
	return false;
};
 
config.commands.deleteTiddler.handler = function(event,src,title)
{
	var deleteIt = true;
	if(config.options.chkConfirmDelete)
		deleteIt = confirm(this.warning.format([title]));
	if(deleteIt) {
		store.removeTiddler(title);
		story.closeTiddler(title,true);
		autoSaveChanges();
	}
	return false;
};
 
config.commands.permalink.handler = function(event,src,title)
{
	var t = encodeURIComponent(String.encodeTiddlyLink(title));
	if(window.location.hash != t)
		window.location.hash = t;
	return false;
};
 
config.commands.references.handlePopup = function(popup,title)
{
	var references = store.getReferringTiddlers(title);
	var c = false;
	for(var r=0; r<references.length; r++) {
		if(references[r].title != title && !references[r].isTagged("excludeLists")) {
			createTiddlyLink(createTiddlyElement(popup,"li"),references[r].title,true);
			c = true;
		}
	}
	if(!c)
		createTiddlyElement(popup,"li",null,"disabled",this.popupNone);
};
 
config.commands.jump.handlePopup = function(popup,title)
{
	story.forEachTiddler(function(title,element) {
		createTiddlyLink(createTiddlyElement(popup,"li"),title,true,null,false,null,true);
		});
};
 
config.commands.syncing.handlePopup = function(popup,title)
{
	var tiddler = store.fetchTiddler(title);
	if(!tiddler)
		return;
	var serverType = tiddler.getServerType();
	var serverHost = tiddler.fields["server.host"];
	var serverWorkspace = tiddler.fields["server.workspace"];
	if(!serverWorkspace)
		serverWorkspace = "";
	if(serverType) {
		var e = createTiddlyElement(popup,"li",null,"popupMessage");
		e.innerHTML = config.commands.syncing.currentlySyncing.format([serverType,serverHost,serverWorkspace]);
	} else {
		createTiddlyElement(popup,"li",null,"popupMessage",config.commands.syncing.notCurrentlySyncing);
	}
	if(serverType) {
		createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");
		var btn = createTiddlyButton(createTiddlyElement(popup,"li"),this.captionUnSync,null,config.commands.syncing.onChooseServer);
		btn.setAttribute("tiddler",title);
		btn.setAttribute("server.type","");
	}
	createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");
	createTiddlyElement(popup,"li",null,"popupMessage",config.commands.syncing.chooseServer);
	var feeds = store.getTaggedTiddlers("systemServer","title");
	for(var t=0; t<feeds.length; t++) {
		var f = feeds[t];
		var feedServerType = store.getTiddlerSlice(f.title,"Type");
		if(!feedServerType)
			feedServerType = "file";
		var feedServerHost = store.getTiddlerSlice(f.title,"URL");
		if(!feedServerHost)
			feedServerHost = "";
		var feedServerWorkspace = store.getTiddlerSlice(f.title,"Workspace");
		if(!feedServerWorkspace)
			feedServerWorkspace = "";
		var caption = f.title;
		if(serverType == feedServerType && serverHost == feedServerHost && serverWorkspace == feedServerWorkspace) {
			caption = config.commands.syncing.currServerMarker + caption;
		} else {
			caption = config.commands.syncing.notCurrServerMarker + caption;
		}
		btn = createTiddlyButton(createTiddlyElement(popup,"li"),caption,null,config.commands.syncing.onChooseServer);
		btn.setAttribute("tiddler",title);
		btn.setAttribute("server.type",feedServerType);
		btn.setAttribute("server.host",feedServerHost);
		btn.setAttribute("server.workspace",feedServerWorkspace);
	}
};
 
config.commands.syncing.onChooseServer = function(e)
{
	var tiddler = this.getAttribute("tiddler");
	var serverType = this.getAttribute("server.type");
	if(serverType) {
		store.addTiddlerFields(tiddler,{
			"server.type": serverType,
			"server.host": this.getAttribute("server.host"),
			"server.workspace": this.getAttribute("server.workspace")
			});
	} else {
		store.setValue(tiddler,"server",null);
	}
	return false;
};
 
config.commands.fields.handlePopup = function(popup,title)
{
	var tiddler = store.fetchTiddler(title);
	if(!tiddler)
		return;
	var items = [];
	store.forEachField(tiddler,function(tiddler,fieldName,value){items.push({field:fieldName,value:value});},true);
	items.sort(function(a,b) {return a.field < b.field ? -1 : (a.field == b.field ? 0 : +1);});
	if(items.length > 0)
		ListView.create(popup,items,this.listViewTemplate);
	else
		createTiddlyElement(popup,"div",null,null,this.emptyText);
};
 
//--
//-- Tiddler() object
//--
 
function Tiddler(title)
{
	this.title = title;
	this.text = "";
	this.modifier = null;
	this.created = new Date();
	this.modified = this.created;
	this.links = [];
	this.linksUpdated = false;
	this.tags = [];
	this.fields = {};
	return this;
}
 
Tiddler.prototype.getLinks = function()
{
	if(this.linksUpdated==false)
		this.changed();
	return this.links;
};
 
// Returns the fields that are inherited in string field:"value" field2:"value2" format
Tiddler.prototype.getInheritedFields = function()
{
	var f = {};
	for(var i in this.fields) {
		if(i=="server.host" || i=="server.workspace" || i=="wikiformat"|| i=="server.type") {
			f[i] = this.fields[i];
		}
	}
	return String.encodeHashMap(f);
};
 
// Increment the changeCount of a tiddler
Tiddler.prototype.incChangeCount = function()
{
	var c = this.fields['changecount'];
	c = c ? parseInt(c,10) : 0;
	this.fields['changecount'] = String(c+1);
};
 
// Clear the changeCount of a tiddler
Tiddler.prototype.clearChangeCount = function()
{
	if(this.fields['changecount']) {
		delete this.fields['changecount'];
	}
};
 
Tiddler.prototype.doNotSave = function()
{
	return this.fields['doNotSave'];
};
 
// Returns true if the tiddler has been updated since the tiddler was created or downloaded
Tiddler.prototype.isTouched = function()
{
	var changeCount = this.fields['changecount'];
	if(changeCount === undefined)
		changeCount = 0;
	return changeCount > 0;
};
 
// Change the text and other attributes of a tiddler
Tiddler.prototype.set = function(title,text,modifier,modified,tags,created,fields)
{
	this.assign(title,text,modifier,modified,tags,created,fields);
	this.changed();
	return this;
};
 
// Change the text and other attributes of a tiddler without triggered a tiddler.changed() call
Tiddler.prototype.assign = function(title,text,modifier,modified,tags,created,fields)
{
	if(title != undefined)
		this.title = title;
	if(text != undefined)
		this.text = text;
	if(modifier != undefined)
		this.modifier = modifier;
	if(modified != undefined)
		this.modified = modified;
	if(created != undefined)
		this.created = created;
	if(fields != undefined)
		this.fields = fields;
	if(tags != undefined)
		this.tags = (typeof tags == "string") ? tags.readBracketedList() : tags;
	else if(this.tags == undefined)
		this.tags = [];
	return this;
};
 
// Get the tags for a tiddler as a string (space delimited, using [[brackets]] for tags containing spaces)
Tiddler.prototype.getTags = function()
{
	return String.encodeTiddlyLinkList(this.tags);
};
 
// Test if a tiddler carries a tag
Tiddler.prototype.isTagged = function(tag)
{
	return this.tags.indexOf(tag) != -1;
};
 
// Static method to convert "\n" to newlines, "\s" to "\"
Tiddler.unescapeLineBreaks = function(text)
{
	return text ? text.unescapeLineBreaks() : "";
};
 
// Convert newlines to "\n", "\" to "\s"
Tiddler.prototype.escapeLineBreaks = function()
{
	return this.text.escapeLineBreaks();
};
 
// Updates the secondary information (like links[] array) after a change to a tiddler
Tiddler.prototype.changed = function()
{
	this.links = [];
	var text = this.text;
	// remove 'quoted' text before scanning tiddler source
	text = text.replace(/\/%((?:.|\n)*?)%\//g,"").
		replace(/\{{3}((?:.|\n)*?)\}{3}/g,"").
		replace(/"""((?:.|\n)*?)"""/g,"").
		replace(/\<nowiki\>((?:.|\n)*?)\<\/nowiki\>/g,"").
		replace(/\<html\>((?:.|\n)*?)\<\/html\>/g,"").
		replace(/\<script((?:.|\n)*?)\<\/script\>/g,"");
	var t = this.autoLinkWikiWords() ? 0 : 1;
	var tiddlerLinkRegExp = t==0 ? config.textPrimitives.tiddlerAnyLinkRegExp : config.textPrimitives.tiddlerForcedLinkRegExp;
	tiddlerLinkRegExp.lastIndex = 0;
	var formatMatch = tiddlerLinkRegExp.exec(text);
	while(formatMatch) {
		var lastIndex = tiddlerLinkRegExp.lastIndex;
		if(t==0 && formatMatch[1] && formatMatch[1] != this.title) {
			// wikiWordLink
			if(formatMatch.index > 0) {
				var preRegExp = new RegExp(config.textPrimitives.unWikiLink+"|"+config.textPrimitives.anyLetter,"mg");
				preRegExp.lastIndex = formatMatch.index-1;
				var preMatch = preRegExp.exec(text);
				if(preMatch.index != formatMatch.index-1)
					this.links.pushUnique(formatMatch[1]);
			} else {
				this.links.pushUnique(formatMatch[1]);
			}
		}
		else if(formatMatch[2-t] && !config.formatterHelpers.isExternalLink(formatMatch[3-t])) // titledBrackettedLink
			this.links.pushUnique(formatMatch[3-t]);
		else if(formatMatch[4-t] && formatMatch[4-t] != this.title) // brackettedLink
			this.links.pushUnique(formatMatch[4-t]);
		tiddlerLinkRegExp.lastIndex = lastIndex;
		formatMatch = tiddlerLinkRegExp.exec(text);
	}
	this.linksUpdated = true;
};
 
Tiddler.prototype.getSubtitle = function()
{
	var modifier = this.modifier;
	if(!modifier)
		modifier = config.messages.subtitleUnknown;
	var modified = this.modified;
	if(modified)
		modified = modified.toLocaleString();
	else
		modified = config.messages.subtitleUnknown;
	return config.messages.tiddlerLinkTooltip.format([this.title,modifier,modified]);
};
 
Tiddler.prototype.isReadOnly = function()
{
	return readOnly;
};
 
Tiddler.prototype.autoLinkWikiWords = function()
{
	return !(this.isTagged("systemConfig") || this.isTagged("excludeMissing"));
};
 
Tiddler.prototype.getServerType = function()
{
	var serverType = null;
	if(this.fields['server.type'])
		serverType = this.fields['server.type'];
	if(!serverType)
		serverType = this.fields['wikiformat'];
	if(serverType && !config.adaptors[serverType])
		serverType = null;
	return serverType;
};
 
Tiddler.prototype.getAdaptor = function()
{
	var serverType = this.getServerType();
	return serverType ? new config.adaptors[serverType]() : null;
};
 
//--
//-- TiddlyWiki() object contains Tiddler()s
//--
 
function TiddlyWiki()
{
	var tiddlers = {}; // Hashmap by name of tiddlers
	this.tiddlersUpdated = false;
	this.namedNotifications = []; // Array of {name:,notify:} of notification functions
	this.notificationLevel = 0;
	this.slices = {}; // map tiddlerName->(map sliceName->sliceValue). Lazy.
	this.clear = function() {
		tiddlers = {};
		this.setDirty(false);
	};
	this.fetchTiddler = function(title) {
		var t = tiddlers[title];
		return t instanceof Tiddler ? t : null;
	};
	this.deleteTiddler = function(title) {
		delete this.slices[title];
		delete tiddlers[title];
	};
	this.addTiddler = function(tiddler) {
		delete this.slices[tiddler.title];
		tiddlers[tiddler.title] = tiddler;
	};
	this.forEachTiddler = function(callback) {
		for(var t in tiddlers) {
			var tiddler = tiddlers[t];
			if(tiddler instanceof Tiddler)
				callback.call(this,t,tiddler);
		}
	};
}
 
TiddlyWiki.prototype.setDirty = function(dirty)
{
	this.dirty = dirty;
};
 
TiddlyWiki.prototype.isDirty = function()
{
	return this.dirty;
};
 
TiddlyWiki.prototype.tiddlerExists = function(title)
{
	var t = this.fetchTiddler(title);
	return t != undefined;
};
 
TiddlyWiki.prototype.isShadowTiddler = function(title)
{
	return config.shadowTiddlers[title] === undefined ? false : true;
};
 
TiddlyWiki.prototype.createTiddler = function(title)
{
	var tiddler = this.fetchTiddler(title);
	if(!tiddler) {
		tiddler = new Tiddler(title);
		this.addTiddler(tiddler);
		this.setDirty(true);
	}
	return tiddler;
};
 
TiddlyWiki.prototype.getTiddler = function(title)
{
	var t = this.fetchTiddler(title);
	if(t != undefined)
		return t;
	else
		return null;
};
 
TiddlyWiki.prototype.getShadowTiddlerText = function(title)
{
	if(typeof config.shadowTiddlers[title] == "string")
		return config.shadowTiddlers[title];
	else
		return "";
};
 
// Retrieve tiddler contents
TiddlyWiki.prototype.getTiddlerText = function(title,defaultText)
{
	if(!title)
		return defaultText;
	var pos = title.indexOf(config.textPrimitives.sectionSeparator);
	var section = null;
	if(pos != -1) {
		section = title.substr(pos + config.textPrimitives.sectionSeparator.length);
		title = title.substr(0,pos);
	}
	pos = title.indexOf(config.textPrimitives.sliceSeparator);
	if(pos != -1) {
		var slice = this.getTiddlerSlice(title.substr(0,pos),title.substr(pos + config.textPrimitives.sliceSeparator.length));
		if(slice)
			return slice;
	}
	var tiddler = this.fetchTiddler(title);
	if(tiddler) {
		if(!section)
			return tiddler.text;
		var re = new RegExp("(^!{1,6}" + section.escapeRegExp() + "[ \t]*\n)","mg");
		re.lastIndex = 0;
		var match = re.exec(tiddler.text);
		if(match) {
			var t = tiddler.text.substr(match.index+match[1].length);
			var re2 = /^!/mg;
			re2.lastIndex = 0;
			match = re2.exec(t); //# search for the next heading
			if(match)
				t = t.substr(0,match.index-1);//# don't include final \n
			return t;
		}
		return defaultText;
	}
	if(this.isShadowTiddler(title))
		return this.getShadowTiddlerText(title);
	if(defaultText != undefined)
		return defaultText;
	return null;
};
 
TiddlyWiki.prototype.getRecursiveTiddlerText = function(title,defaultText,depth)
{
	var bracketRegExp = new RegExp("(?:\\[\\[([^\\]]+)\\]\\])","mg");
	var text = this.getTiddlerText(title,null);
	if(text == null)
		return defaultText;
	var textOut = [];
	var lastPos = 0;
	do {
		var match = bracketRegExp.exec(text);
		if(match) {
			textOut.push(text.substr(lastPos,match.index-lastPos));
			if(match[1]) {
				if(depth <= 0)
					textOut.push(match[1]);
				else
					textOut.push(this.getRecursiveTiddlerText(match[1],"[[" + match[1] + "]]",depth-1));
			}
			lastPos = match.index + match[0].length;
		} else {
			textOut.push(text.substr(lastPos));
		}
	} while(match);
	return textOut.join("");
};
 
TiddlyWiki.prototype.slicesRE = /(?:^([\'\/]{0,2})~?([\.\w]+)\:\1[\t\x20]*([^\n]+)[\t\x20]*$)|(?:^\|([\'\/]{0,2})~?([\.\w]+)\:?\4\|[\t\x20]*([^\n]+)[\t\x20]*\|$)/gm;
 
// @internal
TiddlyWiki.prototype.calcAllSlices = function(title)
{
	var slices = {};
	var text = this.getTiddlerText(title,"");
	this.slicesRE.lastIndex = 0;
	var m = this.slicesRE.exec(text);
	while(m) {
		if(m[2])
			slices[m[2]] = m[3];
		else
			slices[m[5]] = m[6];
		m = this.slicesRE.exec(text);
	}
	return slices;
};
 
// Returns the slice of text of the given name
TiddlyWiki.prototype.getTiddlerSlice = function(title,sliceName)
{
	var slices = this.slices[title];
	if(!slices) {
		slices = this.calcAllSlices(title);
		this.slices[title] = slices;
	}
	return slices[sliceName];
};
 
// Build an hashmap of the specified named slices of a tiddler
TiddlyWiki.prototype.getTiddlerSlices = function(title,sliceNames)
{
	var r = {};
	for(var t=0; t<sliceNames.length; t++) {
		var slice = this.getTiddlerSlice(title,sliceNames[t]);
		if(slice)
			r[sliceNames[t]] = slice;
	}
	return r;
};
 
TiddlyWiki.prototype.suspendNotifications = function()
{
	this.notificationLevel--;
};
 
TiddlyWiki.prototype.resumeNotifications = function()
{
	this.notificationLevel++;
};
 
// Invoke the notification handlers for a particular tiddler
TiddlyWiki.prototype.notify = function(title,doBlanket)
{
	if(!this.notificationLevel) {
		for(var t=0; t<this.namedNotifications.length; t++) {
			var n = this.namedNotifications[t];
			if((n.name == null && doBlanket) || (n.name == title))
				n.notify(title);
		}
	}
};
 
// Invoke the notification handlers for all tiddlers
TiddlyWiki.prototype.notifyAll = function()
{
	if(!this.notificationLevel) {
		for(var t=0; t<this.namedNotifications.length; t++) {
			var n = this.namedNotifications[t];
			if(n.name)
				n.notify(n.name);
		}
	}
};
 
// Add a notification handler to a tiddler
TiddlyWiki.prototype.addNotification = function(title,fn)
{
	for(var i=0; i<this.namedNotifications.length; i++) {
		if((this.namedNotifications[i].name == title) && (this.namedNotifications[i].notify == fn))
			return this;
	}
	this.namedNotifications.push({name: title, notify: fn});
	return this;
};
 
TiddlyWiki.prototype.removeTiddler = function(title)
{
	var tiddler = this.fetchTiddler(title);
	if(tiddler) {
		this.deleteTiddler(title);
		this.notify(title,true);
		this.setDirty(true);
	}
};
 
// Reset the sync status of a freshly synced tiddler
TiddlyWiki.prototype.resetTiddler = function(title)
{
	var tiddler = this.fetchTiddler(title);
	if(tiddler) {
		tiddler.clearChangeCount();
		this.notify(title,true);
		this.setDirty(true);
	}
};
 
TiddlyWiki.prototype.setTiddlerTag = function(title,status,tag)
{
	var tiddler = this.fetchTiddler(title);
	if(tiddler) {
		var t = tiddler.tags.indexOf(tag);
		if(t != -1)
			tiddler.tags.splice(t,1);
		if(status)
			tiddler.tags.push(tag);
		tiddler.changed();
		tiddler.incChangeCount();
		this.notify(title,true);
		this.setDirty(true);
	}
};
 
TiddlyWiki.prototype.addTiddlerFields = function(title,fields)
{
	var tiddler = this.fetchTiddler(title);
	if(!tiddler)
		return;
	merge(tiddler.fields,fields);
	tiddler.changed();
	tiddler.incChangeCount();
	this.notify(title,true);
	this.setDirty(true);
};
 
// Store tiddler in TiddlyWiki instance
TiddlyWiki.prototype.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created)
{
	var tiddler = this.fetchTiddler(title);
	if(tiddler) {
		created = created || tiddler.created; // Preserve created date
		this.deleteTiddler(title);
	} else {
		created = created || modified;
		tiddler = new Tiddler();
	}
	tiddler.set(newTitle,newBody,modifier,modified,tags,created,fields);
	this.addTiddler(tiddler);
	if(clearChangeCount)
		tiddler.clearChangeCount();
	else
		tiddler.incChangeCount();
	if(title != newTitle)
		this.notify(title,true);
	this.notify(newTitle,true);
	this.setDirty(true);
	return tiddler;
};
 
TiddlyWiki.prototype.incChangeCount = function(title)
{
	var tiddler = this.fetchTiddler(title);
	if(tiddler)
		tiddler.incChangeCount();
};
 
TiddlyWiki.prototype.getLoader = function()
{
	if(!this.loader)
		this.loader = new TW21Loader();
	return this.loader;
};
 
TiddlyWiki.prototype.getSaver = function()
{
	if(!this.saver)
		this.saver = new TW21Saver();
	return this.saver;
};
 
// Return all tiddlers formatted as an HTML string
TiddlyWiki.prototype.allTiddlersAsHtml = function()
{
	return this.getSaver().externalize(store);
};
 
// Load contents of a TiddlyWiki from an HTML DIV
TiddlyWiki.prototype.loadFromDiv = function(src,idPrefix,noUpdate)
{
	this.idPrefix = idPrefix;
	var storeElem = (typeof src == "string") ? document.getElementById(src) : src;
	if(!storeElem)
		return;
	var tiddlers = this.getLoader().loadTiddlers(this,storeElem.childNodes);
	this.setDirty(false);
	if(!noUpdate) {
		for(var i = 0;i<tiddlers.length; i++)
			tiddlers[i].changed();
	}
	jQuery().trigger("loadTiddlers");
};
 
// Load contents of a TiddlyWiki from a string
// Returns null if there's an error
TiddlyWiki.prototype.importTiddlyWiki = function(text)
{
	var posDiv = locateStoreArea(text);
	if(!posDiv)
		return null;
	var content = "<" + "html><" + "body>" + text.substring(posDiv[0],posDiv[1] + endSaveArea.length) + "<" + "/body><" + "/html>";
	// Create the iframe
	var iframe = document.createElement("iframe");
	iframe.style.display = "none";
	document.body.appendChild(iframe);
	var doc = iframe.document;
	if(iframe.contentDocument)
		doc = iframe.contentDocument; // For NS6
	else if(iframe.contentWindow)
		doc = iframe.contentWindow.document; // For IE5.5 and IE6
	// Put the content in the iframe
	doc.open();
	doc.writeln(content);
	doc.close();
	// Load the content into a TiddlyWiki() object
	var storeArea = doc.getElementById("storeArea");
	this.loadFromDiv(storeArea,"store");
	// Get rid of the iframe
	iframe.parentNode.removeChild(iframe);
	return this;
};
 
TiddlyWiki.prototype.updateTiddlers = function()
{
	this.tiddlersUpdated = true;
	this.forEachTiddler(function(title,tiddler) {
		tiddler.changed();
	});
};
 
// Return an array of tiddlers matching a search regular expression
TiddlyWiki.prototype.search = function(searchRegExp,sortField,excludeTag,match)
{
	var candidates = this.reverseLookup("tags",excludeTag,!!match);
	var results = [];
	for(var t=0; t<candidates.length; t++) {
		if((candidates[t].title.search(searchRegExp) != -1) || (candidates[t].text.search(searchRegExp) != -1))
			results.push(candidates[t]);
	}
	if(!sortField)
		sortField = "title";
	results.sort(function(a,b) {return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);});
	return results;
};
 
// Returns a list of all tags in use
//   excludeTag - if present, excludes tags that are themselves tagged with excludeTag
// Returns an array of arrays where [tag][0] is the name of the tag and [tag][1] is the number of occurances
TiddlyWiki.prototype.getTags = function(excludeTag)
{
	var results = [];
	this.forEachTiddler(function(title,tiddler) {
		for(var g=0; g<tiddler.tags.length; g++) {
			var tag = tiddler.tags[g];
			var n = true;
			for(var c=0; c<results.length; c++) {
				if(results[c][0] == tag) {
					n = false;
					results[c][1]++;
				}
			}
			if(n && excludeTag) {
				var t = this.fetchTiddler(tag);
				if(t && t.isTagged(excludeTag))
					n = false;
			}
			if(n)
				results.push([tag,1]);
		}
	});
	results.sort(function(a,b) {return a[0].toLowerCase() < b[0].toLowerCase() ? -1 : (a[0].toLowerCase() == b[0].toLowerCase() ? 0 : +1);});
	return results;
};
 
// Return an array of the tiddlers that are tagged with a given tag
TiddlyWiki.prototype.getTaggedTiddlers = function(tag,sortField)
{
	return this.reverseLookup("tags",tag,true,sortField);
};
 
// Return an array of the tiddlers that link to a given tiddler
TiddlyWiki.prototype.getReferringTiddlers = function(title,unusedParameter,sortField)
{
	if(!this.tiddlersUpdated)
		this.updateTiddlers();
	return this.reverseLookup("links",title,true,sortField);
};
 
// Return an array of the tiddlers that do or do not have a specified entry in the specified storage array (ie, "links" or "tags")
// lookupMatch == true to match tiddlers, false to exclude tiddlers
TiddlyWiki.prototype.reverseLookup = function(lookupField,lookupValue,lookupMatch,sortField)
{
	var results = [];
	this.forEachTiddler(function(title,tiddler) {
		var f = !lookupMatch;
		for(var lookup=0; lookup<tiddler[lookupField].length; lookup++) {
			if(tiddler[lookupField][lookup] == lookupValue)
				f = lookupMatch;
		}
		if(f)
			results.push(tiddler);
	});
	if(!sortField)
		sortField = "title";
	results.sort(function(a,b) {return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);});
	return results;
};
 
// Return the tiddlers as a sorted array
TiddlyWiki.prototype.getTiddlers = function(field,excludeTag)
{
	var results = [];
	this.forEachTiddler(function(title,tiddler) {
		if(excludeTag == undefined || !tiddler.isTagged(excludeTag))
			results.push(tiddler);
	});
	if(field)
		results.sort(function(a,b) {return a[field] < b[field] ? -1 : (a[field] == b[field] ? 0 : +1);});
	return results;
};
 
// Return array of names of tiddlers that are referred to but not defined
TiddlyWiki.prototype.getMissingLinks = function(sortField)
{
	if(!this.tiddlersUpdated)
		this.updateTiddlers();
	var results = [];
	this.forEachTiddler(function (title,tiddler) {
		if(tiddler.isTagged("excludeMissing") || tiddler.isTagged("systemConfig"))
			return;
		for(var n=0; n<tiddler.links.length;n++) {
			var link = tiddler.links[n];
			if(this.fetchTiddler(link) == null && !this.isShadowTiddler(link))
				results.pushUnique(link);
		}
	});
	results.sort();
	return results;
};
 
// Return an array of names of tiddlers that are defined but not referred to
TiddlyWiki.prototype.getOrphans = function()
{
	var results = [];
	this.forEachTiddler(function (title,tiddler) {
		if(this.getReferringTiddlers(title).length == 0 && !tiddler.isTagged("excludeLists"))
			results.push(title);
	});
	results.sort();
	return results;
};
 
// Return an array of names of all the shadow tiddlers
TiddlyWiki.prototype.getShadowed = function()
{
	var results = [];
	for(var t in config.shadowTiddlers) {
		if(this.isShadowTiddler(t))
			results.push(t);
	}
	results.sort();
	return results;
};
 
// Return an array of tiddlers that have been touched since they were downloaded or created
TiddlyWiki.prototype.getTouched = function()
{
	var results = [];
	this.forEachTiddler(function(title,tiddler) {
		if(tiddler.isTouched())
			results.push(tiddler);
		});
	results.sort();
	return results;
};
 
// Resolves a Tiddler reference or tiddler title into a Tiddler object, or null if it doesn't exist
TiddlyWiki.prototype.resolveTiddler = function(tiddler)
{
	var t = (typeof tiddler == "string") ? this.getTiddler(tiddler) : tiddler;
	return t instanceof Tiddler ? t : null;
};
 
// Filter a list of tiddlers
TiddlyWiki.prototype.filterTiddlers = function(filter)
{
	var results = [];
	if(filter) {
		var tiddler;
		var re = /([^\s\[\]]+)|(?:\[([ \w]+)\[([^\]]+)\]\])|(?:\[\[([^\]]+)\]\])/mg;
		var match = re.exec(filter);
		while(match) {
			if(match[1] || match[4]) {
				var title = match[1] || match[4];
				tiddler = this.fetchTiddler(title);
				if(tiddler) {
					results.pushUnique(tiddler);
				} else if(this.isShadowTiddler(title)) {
					tiddler = new Tiddler();
					tiddler.set(title,this.getTiddlerText(title));
					results.pushUnique(tiddler);
				} else {
					results.pushUnique(new Tiddler(title));
				}
			} else if(match[2]) {
				switch(match[2]) {
					case "tag":
						var matched = this.getTaggedTiddlers(match[3]);
						for(var m = 0; m < matched.length; m++)
							results.pushUnique(matched[m]);
						break;
					case "sort":
						results = this.sortTiddlers(results,match[3]);
						break;
				}
			}
			match = re.exec(filter);
		}
	}
	return results;
};
 
// Sort a list of tiddlers
TiddlyWiki.prototype.sortTiddlers = function(tiddlers,field)
{
	var asc = +1;
	switch(field.substr(0,1)) {
	case "-":
		asc = -1;
		// Note: this fall-through is intentional
		/*jsl:fallthru*/
	case "+":
		field = field.substr(1);
		break;
	}
	if(TiddlyWiki.standardFieldAccess[field])
		tiddlers.sort(function(a,b) {return a[field] < b[field] ? -asc : (a[field] == b[field] ? 0 : asc);});
	else
		tiddlers.sort(function(a,b) {return a.fields[field] < b.fields[field] ? -asc : (a.fields[field] == b.fields[field] ? 0 : +asc);});
	return tiddlers;
};
 
// Returns true if path is a valid field name (path),
// i.e. a sequence of identifiers, separated by "."
TiddlyWiki.isValidFieldName = function(name)
{
	var match = /[a-zA-Z_]\w*(\.[a-zA-Z_]\w*)*/.exec(name);
	return match && (match[0] == name);
};
 
// Throws an exception when name is not a valid field name.
TiddlyWiki.checkFieldName = function(name)
{
	if(!TiddlyWiki.isValidFieldName(name))
		throw config.messages.invalidFieldName.format([name]);
};
 
function StringFieldAccess(n,readOnly)
{
	this.set = readOnly ?
			function(t,v) {if(v != t[n]) throw config.messages.fieldCannotBeChanged.format([n]);} :
			function(t,v) {if(v != t[n]) {t[n] = v; return true;}};
	this.get = function(t) {return t[n];};
}
 
function DateFieldAccess(n)
{
	this.set = function(t,v) {
		var d = v instanceof Date ? v : Date.convertFromYYYYMMDDHHMM(v);
		if(d != t[n]) {
			t[n] = d; return true;
		}
	};
	this.get = function(t) {return t[n].convertToYYYYMMDDHHMM();};
}
 
function LinksFieldAccess(n)
{
	this.set = function(t,v) {
		var s = (typeof v == "string") ? v.readBracketedList() : v;
		if(s.toString() != t[n].toString()) {
			t[n] = s; return true;
		}
	};
	this.get = function(t) {return String.encodeTiddlyLinkList(t[n]);};
}
 
TiddlyWiki.standardFieldAccess = {
	// The set functions return true when setting the data has changed the value.
	"title":    new StringFieldAccess("title",true),
	// Handle the "tiddler" field name as the title
	"tiddler":  new StringFieldAccess("title",true),
	"text":     new StringFieldAccess("text"),
	"modifier": new StringFieldAccess("modifier"),
	"modified": new DateFieldAccess("modified"),
	"created":  new DateFieldAccess("created"),
	"tags":     new LinksFieldAccess("tags")
};
 
TiddlyWiki.isStandardField = function(name)
{
	return TiddlyWiki.standardFieldAccess[name] != undefined;
};
 
// Sets the value of the given field of the tiddler to the value.
// Setting an ExtendedField's value to null or undefined removes the field.
// Setting a namespace to undefined removes all fields of that namespace.
// The fieldName is case-insensitive.
// All values will be converted to a string value.
TiddlyWiki.prototype.setValue = function(tiddler,fieldName,value)
{
	TiddlyWiki.checkFieldName(fieldName);
	var t = this.resolveTiddler(tiddler);
	if(!t)
		return;
	fieldName = fieldName.toLowerCase();
	var isRemove = (value === undefined) || (value === null);
	var accessor = TiddlyWiki.standardFieldAccess[fieldName];
	if(accessor) {
		if(isRemove)
			// don't remove StandardFields
			return;
		var h = TiddlyWiki.standardFieldAccess[fieldName];
		if(!h.set(t,value))
			return;
	} else {
		var oldValue = t.fields[fieldName];
		if(isRemove) {
			if(oldValue !== undefined) {
				// deletes a single field
				delete t.fields[fieldName];
			} else {
				// no concrete value is defined for the fieldName
				// so we guess this is a namespace path.
				// delete all fields in a namespace
				var re = new RegExp("^"+fieldName+"\\.");
				var dirty = false;
				for(var n in t.fields) {
					if(n.match(re)) {
						delete t.fields[n];
						dirty = true;
					}
				}
				if(!dirty)
					return;
			}
		} else {
			// the "normal" set case. value is defined (not null/undefined)
			// For convenience provide a nicer conversion Date->String
			value = value instanceof Date ? value.convertToYYYYMMDDHHMMSSMMM() : String(value);
			if(oldValue == value)
				return;
			t.fields[fieldName] = value;
		}
	}
	// When we are here the tiddler/store really was changed.
	this.notify(t.title,true);
	if(!fieldName.match(/^temp\./))
		this.setDirty(true);
};
 
// Returns the value of the given field of the tiddler.
// The fieldName is case-insensitive.
// Will only return String values (or undefined).
TiddlyWiki.prototype.getValue = function(tiddler,fieldName)
{
	var t = this.resolveTiddler(tiddler);
	if(!t)
		return undefined;
	fieldName = fieldName.toLowerCase();
	var accessor = TiddlyWiki.standardFieldAccess[fieldName];
	if(accessor) {
		return accessor.get(t);
	}
	return t.fields[fieldName];
};
 
// Calls the callback function for every field in the tiddler.
// When callback function returns a non-false value the iteration stops
// and that value is returned.
// The order of the fields is not defined.
// @param callback a function(tiddler,fieldName,value).
TiddlyWiki.prototype.forEachField = function(tiddler,callback,onlyExtendedFields)
{
	var t = this.resolveTiddler(tiddler);
	if(!t)
		return undefined;
	var n,result;
	for(n in t.fields) {
		result = callback(t,n,t.fields[n]);
		if(result)
			return result;
		}
	if(onlyExtendedFields)
		return undefined;
	for(n in TiddlyWiki.standardFieldAccess) {
		if(n == "tiddler")
			// even though the "title" field can also be referenced through the name "tiddler"
			// we only visit this field once.
			continue;
		result = callback(t,n,TiddlyWiki.standardFieldAccess[n].get(t));
		if(result)
			return result;
	}
	return undefined;
};
 
//--
//-- Story functions
//--
 
function Story(containerId,idPrefix)
{
	this.container = containerId;
	this.idPrefix = idPrefix;
	this.highlightRegExp = null;
	this.tiddlerId = function(title) {
		var id = this.idPrefix + title;
		return id==this.container ? this.idPrefix + "_" + title : id;
	};
	this.containerId = function() {
		return this.container;
	};
}
 
Story.prototype.getTiddler = function(title)
{
	return document.getElementById(this.tiddlerId(title));
};
 
Story.prototype.getContainer = function()
{
	return document.getElementById(this.containerId());
};
 
Story.prototype.forEachTiddler = function(fn)
{
	var place = this.getContainer();
	if(!place)
		return;
	var e = place.firstChild;
	while(e) {
		var n = e.nextSibling;
		var title = e.getAttribute("tiddler");
		fn.call(this,title,e);
		e = n;
	}
};
 
Story.prototype.displayDefaultTiddlers = function()
{
	this.displayTiddlers(null,store.filterTiddlers(store.getTiddlerText("DefaultTiddlers")));
};
 
Story.prototype.displayTiddlers = function(srcElement,titles,template,animate,unused,customFields,toggle)
{
	for(var t = titles.length-1;t>=0;t--)
		this.displayTiddler(srcElement,titles[t],template,animate,unused,customFields);
};
 
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,unused,customFields,toggle,animationSrc)
{
	var title = (tiddler instanceof Tiddler) ? tiddler.title : tiddler;
	var tiddlerElem = this.getTiddler(title);
	if(tiddlerElem) {
		if(toggle)
			this.closeTiddler(title,true);
		else
			this.refreshTiddler(title,template,false,customFields);
	} else {
		var place = this.getContainer();
		var before = this.positionTiddler(srcElement);
		tiddlerElem = this.createTiddler(place,before,title,template,customFields);
	}
	if(animationSrc && typeof animationSrc !== "string") {
		srcElement = animationSrc;
	}
	if(srcElement && typeof srcElement !== "string") {
		if(config.options.chkAnimate && (animate == undefined || animate == true) && anim && typeof Zoomer == "function" && typeof Scroller == "function")
			anim.startAnimating(new Zoomer(title,srcElement,tiddlerElem),new Scroller(tiddlerElem));
		else
			window.scrollTo(0,ensureVisible(tiddlerElem));
	}
};
 
Story.prototype.positionTiddler = function(srcElement)
{
	var place = this.getContainer();
	var before = null;
	if(typeof srcElement == "string") {
		switch(srcElement) {
		case "top":
			before = place.firstChild;
			break;
		case "bottom":
			before = null;
			break;
		}
	} else {
		var after = this.findContainingTiddler(srcElement);
		if(after == null) {
			before = place.firstChild;
		} else if(after.nextSibling) {
			before = after.nextSibling;
			if(before.nodeType != 1)
				before = null;
		}
	}
	return before;
};
 
Story.prototype.createTiddler = function(place,before,title,template,customFields)
{
	var tiddlerElem = createTiddlyElement(null,"div",this.tiddlerId(title),"tiddler");
	tiddlerElem.setAttribute("refresh","tiddler");
	if(customFields)
		tiddlerElem.setAttribute("tiddlyFields",customFields);
	place.insertBefore(tiddlerElem,before);
	var defaultText = null;
	if(!store.tiddlerExists(title) && !store.isShadowTiddler(title))
		defaultText = this.loadMissingTiddler(title,customFields,tiddlerElem);
	this.refreshTiddler(title,template,false,customFields,defaultText);
	return tiddlerElem;
};
 
Story.prototype.loadMissingTiddler = function(title,fields,tiddlerElem)
{
	var getTiddlerCallback = function(context)
	{
		if(context.status) {
			var t = context.tiddler;
			if(!t.created)
				t.created = new Date();
			if(!t.modified)
				t.modified = t.created;
			store.saveTiddler(t.title,t.title,t.text,t.modifier,t.modified,t.tags,t.fields,true,t.created);
			autoSaveChanges();
		} else {
			story.refreshTiddler(context.title,null,true);
		}
		context.adaptor.close();
		delete context.adaptor;
	};
	var tiddler = new Tiddler(title);
	tiddler.fields = typeof fields == "string" ? fields.decodeHashMap() : fields||{};
	var context = {serverType:tiddler.getServerType()};
	if(!context.serverType)
		return;
	context.host = tiddler.fields['server.host'];
	context.workspace = tiddler.fields['server.workspace'];
	var adaptor = new config.adaptors[context.serverType];
	adaptor.getTiddler(title,context,null,getTiddlerCallback);
	return config.messages.loadingMissingTiddler.format([title,context.serverType,context.host,context.workspace]);
};
 
Story.prototype.chooseTemplateForTiddler = function(title,template)
{
	if(!template)
		template = DEFAULT_VIEW_TEMPLATE;
	if(template == DEFAULT_VIEW_TEMPLATE || template == DEFAULT_EDIT_TEMPLATE)
		template = config.tiddlerTemplates[template];
	return template;
};
 
Story.prototype.getTemplateForTiddler = function(title,template,tiddler)
{
	return store.getRecursiveTiddlerText(template,null,10);
};
 
Story.prototype.refreshTiddler = function(title,template,force,customFields,defaultText)
{
	var tiddlerElem = this.getTiddler(title);
	if(tiddlerElem) {
		if(tiddlerElem.getAttribute("dirty") == "true" && !force)
			return tiddlerElem;
		template = this.chooseTemplateForTiddler(title,template);
		var currTemplate = tiddlerElem.getAttribute("template");
		if((template != currTemplate) || force) {
			var tiddler = store.getTiddler(title);
			if(!tiddler) {
				tiddler = new Tiddler();
				if(store.isShadowTiddler(title)) {
					var tags = [];
					tiddler.set(title,store.getTiddlerText(title),config.views.wikified.shadowModifier,version.date,tags,version.date);
				} else {
					var text = template=="EditTemplate" ?
								config.views.editor.defaultText.format([title]) :
								config.views.wikified.defaultText.format([title]);
					text = defaultText || text;
					var fields = customFields ? customFields.decodeHashMap() : null;
					tiddler.set(title,text,config.views.wikified.defaultModifier,version.date,[],version.date,fields);
				}
			}
			tiddlerElem.setAttribute("tags",tiddler.tags.join(" "));
			tiddlerElem.setAttribute("tiddler",title);
			tiddlerElem.setAttribute("template",template);
			tiddlerElem.onmouseover = this.onTiddlerMouseOver;
			tiddlerElem.onmouseout = this.onTiddlerMouseOut;
			tiddlerElem.ondblclick = this.onTiddlerDblClick;
			tiddlerElem[window.event?"onkeydown":"onkeypress"] = this.onTiddlerKeyPress;
			tiddlerElem.innerHTML = this.getTemplateForTiddler(title,template,tiddler);
			applyHtmlMacros(tiddlerElem,tiddler);
			if(store.getTaggedTiddlers(title).length > 0)
				addClass(tiddlerElem,"isTag");
			else
				removeClass(tiddlerElem,"isTag");
			if(store.tiddlerExists(title)) {
				removeClass(tiddlerElem,"shadow");
				removeClass(tiddlerElem,"missing");
			} else {
				addClass(tiddlerElem, store.isShadowTiddler(title) ? "shadow" : "missing");
			}
			if(customFields)
				this.addCustomFields(tiddlerElem,customFields);
			forceReflow();
		}
	}
	return tiddlerElem;
};
 
Story.prototype.addCustomFields = function(place,customFields)
{
	var fields = customFields.decodeHashMap();
	var w = createTiddlyElement(place,"div",null,"customFields");
	w.style.display = "none";
	for(var t in fields) {
		var e = document.createElement("input");
		e.setAttribute("type","text");
		e.setAttribute("value",fields[t]);
		w.appendChild(e);
		e.setAttribute("edit",t);
	}
};
 
Story.prototype.refreshAllTiddlers = function(force)
{
	var e = this.getContainer().firstChild;
	while(e) {
		var template = e.getAttribute("template");
		if(template && e.getAttribute("dirty") != "true") {
			this.refreshTiddler(e.getAttribute("tiddler"),force ? null : template,true);
		}
		e = e.nextSibling;
	}
};
 
Story.prototype.onTiddlerMouseOver = function(e)
{
	addClass(this, "selected");
};
 
Story.prototype.onTiddlerMouseOut = function(e)
{
	removeClass(this,"selected");
};
 
Story.prototype.onTiddlerDblClick = function(ev)
{
	var e = ev || window.event;
	var target = resolveTarget(e);
	if(target && target.nodeName.toLowerCase() != "input" && target.nodeName.toLowerCase() != "textarea") {
		if(document.selection && document.selection.empty)
			document.selection.empty();
		config.macros.toolbar.invokeCommand(this,"defaultCommand",e);
		e.cancelBubble = true;
		if(e.stopPropagation) e.stopPropagation();
		return true;
	}
	return false;
};
 
Story.prototype.onTiddlerKeyPress = function(ev)
{
	var e = ev || window.event;
	clearMessage();
	var consume = false;
	var title = this.getAttribute("tiddler");
	var target = resolveTarget(e);
	switch(e.keyCode) {
	case 9: // Tab
		if(config.options.chkInsertTabs && target.tagName.toLowerCase() == "textarea") {
			replaceSelection(target,String.fromCharCode(9));
			consume = true;
		}
		if(config.isOpera) {
			target.onblur = function() {
				this.focus();
				this.onblur = null;
			};
		}
		break;
	case 13: // Ctrl-Enter
	case 10: // Ctrl-Enter on IE PC
	case 77: // Ctrl-Enter is "M" on some platforms
		if(e.ctrlKey) {
			blurElement(this);
			config.macros.toolbar.invokeCommand(this,"defaultCommand",e);
			consume = true;
		}
		break;
	case 27: // Escape
		blurElement(this);
		config.macros.toolbar.invokeCommand(this,"cancelCommand",e);
		consume = true;
		break;
	}
	e.cancelBubble = consume;
	if(consume) {
		if(e.stopPropagation) e.stopPropagation(); // Stop Propagation
		e.returnValue = true; // Cancel The Event in IE
		if(e.preventDefault ) e.preventDefault(); // Cancel The Event in Moz
	}
	return !consume;
};
 
Story.prototype.getTiddlerField = function(title,field)
{
	var tiddlerElem = this.getTiddler(title);
	var e = null;
	if(tiddlerElem ) {
		var children = tiddlerElem.getElementsByTagName("*");
		for(var t=0; t<children.length; t++) {
			var c = children[t];
			if(c.tagName.toLowerCase() == "input" || c.tagName.toLowerCase() == "textarea") {
				if(!e)
					e = c;
				if(c.getAttribute("edit") == field)
					e = c;
			}
		}
	}
	return e;
};
 
Story.prototype.focusTiddler = function(title,field)
{
	var e = this.getTiddlerField(title,field);
	if(e) {
		e.focus();
		e.select();
	}
};
 
Story.prototype.blurTiddler = function(title)
{
	var tiddlerElem = this.getTiddler(title);
	if(tiddlerElem && tiddlerElem.focus && tiddlerElem.blur) {
		tiddlerElem.focus();
		tiddlerElem.blur();
	}
};
 
Story.prototype.setTiddlerField = function(title,tag,mode,field)
{
	var c = this.getTiddlerField(title,field);
	var tags = c.value.readBracketedList();
	tags.setItem(tag,mode);
	c.value = String.encodeTiddlyLinkList(tags);
};
 
Story.prototype.setTiddlerTag = function(title,tag,mode)
{
	this.setTiddlerField(title,tag,mode,"tags");
};
 
Story.prototype.closeTiddler = function(title,animate,unused)
{
	var tiddlerElem = this.getTiddler(title);
	if(tiddlerElem) {
		clearMessage();
		this.scrubTiddler(tiddlerElem);
		if(config.options.chkAnimate && animate && anim && typeof Slider == "function")
			anim.startAnimating(new Slider(tiddlerElem,false,null,"all"));
		else {
			removeNode(tiddlerElem);
			forceReflow();
		}
	}
};
 
Story.prototype.scrubTiddler = function(tiddlerElem)
{
	tiddlerElem.id = null;
};
 
Story.prototype.setDirty = function(title,dirty)
{
	var tiddlerElem = this.getTiddler(title);
	if(tiddlerElem)
		tiddlerElem.setAttribute("dirty",dirty ? "true" : "false");
};
 
Story.prototype.isDirty = function(title)
{
	var tiddlerElem = this.getTiddler(title);
	if(tiddlerElem)
		return tiddlerElem.getAttribute("dirty") == "true";
	return null;
};
 
Story.prototype.areAnyDirty = function()
{
	var r = false;
	this.forEachTiddler(function(title,element) {
		if(this.isDirty(title))
			r = true;
	});
	return r;
};
 
Story.prototype.closeAllTiddlers = function(exclude)
{
	clearMessage();
	this.forEachTiddler(function(title,element) {
		if((title != exclude) && element.getAttribute("dirty") != "true")
			this.closeTiddler(title);
	});
	window.scrollTo(0,ensureVisible(this.container));
};
 
Story.prototype.isEmpty = function()
{
	var place = this.getContainer();
	return place && place.firstChild == null;
};
 
Story.prototype.search = function(text,useCaseSensitive,useRegExp)
{
	this.closeAllTiddlers();
	highlightHack = new RegExp(useRegExp ? text : text.escapeRegExp(),useCaseSensitive ? "mg" : "img");
	var matches = store.search(highlightHack,"title","excludeSearch");
	this.displayTiddlers(null,matches);
	highlightHack = null;
	var q = useRegExp ? "/" : "'";
	if(matches.length > 0)
		displayMessage(config.macros.search.successMsg.format([matches.length.toString(),q + text + q]));
	else
		displayMessage(config.macros.search.failureMsg.format([q + text + q]));
};
 
Story.prototype.findContainingTiddler = function(e)
{
	while(e && !hasClass(e,"tiddler"))
		e = e.parentNode;
	return e;
};
 
Story.prototype.gatherSaveFields = function(e,fields)
{
	if(e && e.getAttribute) {
		var f = e.getAttribute("edit");
		if(f)
			fields[f] = e.value.replace(/\r/mg,"");
		if(e.hasChildNodes()) {
			var c = e.childNodes;
			for(var t=0; t<c.length; t++)
				this.gatherSaveFields(c[t],fields);
		}
	}
};
 
Story.prototype.hasChanges = function(title)
{
	var e = this.getTiddler(title);
	if(e) {
		var fields = {};
		this.gatherSaveFields(e,fields);
		if(store.fetchTiddler(title)) {
			for(var n in fields) {
				if(store.getValue(title,n) != fields[n]) //# tiddler changed
					return true;
			}
		} else {
			if(store.isShadowTiddler(title) && store.getShadowTiddlerText(title) == fields.text) { //# not checking for title or tags
				return false;
			} else { //# changed shadow or new tiddler
				return true;
			}
		}
	}
	return false;
};
 
Story.prototype.saveTiddler = function(title,minorUpdate)
{
	var tiddlerElem = this.getTiddler(title);
	if(tiddlerElem) {
		var fields = {};
		this.gatherSaveFields(tiddlerElem,fields);
		var newTitle = fields.title || title;
		if(!store.tiddlerExists(newTitle))
			newTitle = newTitle.trim();
		if(store.tiddlerExists(newTitle) && newTitle != title) {
			if(!confirm(config.messages.overwriteWarning.format([newTitle.toString()])))
				return null;
		}
		if(newTitle != title)
			this.closeTiddler(newTitle,false);
		tiddlerElem.id = this.tiddlerId(newTitle);
		tiddlerElem.setAttribute("tiddler",newTitle);
		tiddlerElem.setAttribute("template",DEFAULT_VIEW_TEMPLATE);
		tiddlerElem.setAttribute("dirty","false");
		if(config.options.chkForceMinorUpdate)
			minorUpdate = !minorUpdate;
		if(!store.tiddlerExists(newTitle))
			minorUpdate = false;
		var newDate = new Date();
		if(store.tiddlerExists(title)) {
			var extendedFields = store.fetchTiddler(title).fields;
		} else {
			extendedFields = merge({},config.defaultCustomFields);
		}
		for(var n in fields) {
			if(!TiddlyWiki.isStandardField(n))
				extendedFields[n] = fields[n];
		}
		var tiddler = store.saveTiddler(title,newTitle,fields.text,minorUpdate ? undefined : config.options.txtUserName,minorUpdate ? undefined : newDate,fields.tags,extendedFields);
		autoSaveChanges(null,[tiddler]);
		return newTitle;
	}
	return null;
};
 
Story.prototype.permaView = function()
{
	var links = [];
	this.forEachTiddler(function(title,element) {
		links.push(String.encodeTiddlyLink(title));
	});
	var t = encodeURIComponent(links.join(" "));
	if(t == "")
		t = "#";
	if(window.location.hash != t)
		window.location.hash = t;
};
 
Story.prototype.switchTheme = function(theme)
{
	if(safeMode)
		return;
 
	var isAvailable = function(title) {
		var s = title ? title.indexOf(config.textPrimitives.sectionSeparator) : -1;
		if(s!=-1)
			title = title.substr(0,s);
		return store.tiddlerExists(title) || store.isShadowTiddler(title);
	};
 
	var getSlice = function(theme,slice) {
		var r;
		if(readOnly)
			r = store.getTiddlerSlice(theme,slice+"ReadOnly") || store.getTiddlerSlice(theme,"Web"+slice);
		r = r || store.getTiddlerSlice(theme,slice);
		if(r && r.indexOf(config.textPrimitives.sectionSeparator)==0)
			r = theme + r;
		return isAvailable(r) ? r : slice;
	};
 
	var replaceNotification = function(i,name,theme,slice) {
		var newName = getSlice(theme,slice);
		if(name!=newName && store.namedNotifications[i].name==name) {
			store.namedNotifications[i].name = newName;
			return newName;
		}
		return name;
	};
 
	var pt = config.refresherData.pageTemplate;
	var vi = DEFAULT_VIEW_TEMPLATE;
	var vt = config.tiddlerTemplates[vi];
	var ei = DEFAULT_EDIT_TEMPLATE;
	var et = config.tiddlerTemplates[ei];
 
	for(var i=0; i<config.notifyTiddlers.length; i++) {
		var name = config.notifyTiddlers[i].name;
		switch(name) {
		case "PageTemplate":
			config.refresherData.pageTemplate = replaceNotification(i,config.refresherData.pageTemplate,theme,name);
			break;
		case "StyleSheet":
			removeStyleSheet(config.refresherData.styleSheet);
			config.refresherData.styleSheet = replaceNotification(i,config.refresherData.styleSheet,theme,name);
			break;
		case "ColorPalette":
			config.refresherData.colorPalette = replaceNotification(i,config.refresherData.colorPalette,theme,name);
			break;
		default:
			break;
		}
	}
	config.tiddlerTemplates[vi] = getSlice(theme,"ViewTemplate");
	config.tiddlerTemplates[ei] = getSlice(theme,"EditTemplate");
	if(!startingUp) {
		if(config.refresherData.pageTemplate!=pt || config.tiddlerTemplates[vi]!=vt || config.tiddlerTemplates[ei]!=et) {
			refreshAll();
			this.refreshAllTiddlers(true);
		} else {
			setStylesheet(store.getRecursiveTiddlerText(config.refresherData.styleSheet,"",10),config.refreshers.styleSheet);
		}
		config.options.txtTheme = theme;
		saveOptionCookie("txtTheme");
	}
};
 
//--
//-- Backstage
//--
 
var backstage = {
	area: null,
	toolbar: null,
	button: null,
	showButton: null,
	hideButton: null,
	cloak: null,
	panel: null,
	panelBody: null,
	panelFooter: null,
	currTabName: null,
	currTabElem: null,
	content: null,
 
	init: function() {
		var cmb = config.messages.backstage;
		this.area = document.getElementById("backstageArea");
		this.toolbar = document.getElementById("backstageToolbar");
		this.button = document.getElementById("backstageButton");
		this.button.style.display = "block";
		var t = cmb.open.text + " " + glyph("bentArrowLeft");
		this.showButton = createTiddlyButton(this.button,t,cmb.open.tooltip,
						function(e) {backstage.show(); return false;},null,"backstageShow");
		t = glyph("bentArrowRight") + " " + cmb.close.text;
		this.hideButton = createTiddlyButton(this.button,t,cmb.close.tooltip,
						function(e) {backstage.hide(); return false;},null,"backstageHide");
		this.cloak = document.getElementById("backstageCloak");
		this.panel = document.getElementById("backstagePanel");
		this.panelFooter = createTiddlyElement(this.panel,"div",null,"backstagePanelFooter");
		this.panelBody = createTiddlyElement(this.panel,"div",null,"backstagePanelBody");
		this.cloak.onmousedown = function(e) {backstage.switchTab(null);};
		createTiddlyText(this.toolbar,cmb.prompt);
		for(t=0; t<config.backstageTasks.length; t++) {
			var taskName = config.backstageTasks[t];
			var task = config.tasks[taskName];
			var handler = task.action ? this.onClickCommand : this.onClickTab;
			var text = task.text + (task.action ? "" : glyph("downTriangle"));
			var btn = createTiddlyButton(this.toolbar,text,task.tooltip,handler,"backstageTab");
			addClass(btn,task.action ? "backstageAction" : "backstageTask");
			btn.setAttribute("task", taskName);
			}
		this.content = document.getElementById("contentWrapper");
		if(config.options.chkBackstage)
			this.show();
		else
			this.hide();
	},
 
	isVisible: function() {
		return this.area ? this.area.style.display == "block" : false;
	},
 
	show: function() {
		this.area.style.display = "block";
		if(anim && config.options.chkAnimate) {
			backstage.toolbar.style.left = findWindowWidth() + "px";
			var p = [{style: "left", start: findWindowWidth(), end: 0, template: "%0px"}];
			anim.startAnimating(new Morpher(backstage.toolbar,config.animDuration,p));
		} else {
			backstage.area.style.left = "0px";
		}
		jQuery(this.showButton).hide();
		jQuery(this.hideButton).show();
		config.options.chkBackstage = true;
		saveOptionCookie("chkBackstage");
		addClass(this.content,"backstageVisible");
	},
 
	hide: function() {
		if(this.currTabElem) {
			this.switchTab(null);
		} else {
			backstage.toolbar.style.left = "0px";
			if(anim && config.options.chkAnimate) {
				var p = [{style: "left", start: 0, end: findWindowWidth(), template: "%0px"}];
				var c = function(element,properties) {backstage.area.style.display = "none";};
				anim.startAnimating(new Morpher(backstage.toolbar,config.animDuration,p,c));
			} else {
				this.area.style.display = "none";
			}
			this.showButton.style.display = "block";
			this.hideButton.style.display = "none";
			config.options.chkBackstage = false;
			saveOptionCookie("chkBackstage");
			removeClass(this.content, "backstageVisible");
		}
	},
 
	onClickCommand: function(e) {
		var task = config.tasks[this.getAttribute("task")];
		displayMessage(task);
		if(task.action) {
			backstage.switchTab(null);
			task.action();
		}
		return false;
	},
 
	onClickTab: function(e) {
		backstage.switchTab(this.getAttribute("task"));
		return false;
	},
 
	// Switch to a given tab, or none if null is passed
	switchTab: function(tabName) {
		var tabElem = null;
		var e = this.toolbar.firstChild;
		while(e)
			{
			if(e.getAttribute && e.getAttribute("task") == tabName)
				tabElem = e;
			e = e.nextSibling;
			}
		if(tabName == backstage.currTabName) {
			backstage.hidePanel();
			return;
		}
		if(backstage.currTabElem) {
			removeClass(this.currTabElem, "backstageSelTab");
		}
		if(tabElem && tabName) {
			backstage.preparePanel();
			addClass(tabElem,"backstageSelTab");
			var task = config.tasks[tabName];
			wikify(task.content,backstage.panelBody,null,null);
			backstage.showPanel();
		} else if(backstage.currTabElem) {
			backstage.hidePanel();
		}
		backstage.currTabName = tabName;
		backstage.currTabElem = tabElem;
	},
 
	isPanelVisible: function() {
		return backstage.panel ? backstage.panel.style.display == "block" : false;
	},
 
	preparePanel: function() {
		backstage.cloak.style.height = findWindowHeight() + "px";
		backstage.cloak.style.display = "block";
		removeChildren(backstage.panelBody);
		return backstage.panelBody;
	},
 
	showPanel: function() {
		backstage.panel.style.display = "block";
		if(anim && config.options.chkAnimate) {
			backstage.panel.style.top = (-backstage.panel.offsetHeight) + "px";
			var p = [{style: "top", start: -backstage.panel.offsetHeight, end: 0, template: "%0px"}];
			anim.startAnimating(new Morpher(backstage.panel,config.animDuration,p),new Scroller(backstage.panel,false));
		} else {
			backstage.panel.style.top = "0px";
		}
		return backstage.panelBody;
	},
 
	hidePanel: function() {
		if(backstage.currTabElem)
			removeClass(backstage.currTabElem, "backstageSelTab");
		backstage.currTabElem = null;
		backstage.currTabName = null;
		if(anim && config.options.chkAnimate) {
			var p = [
				{style: "top", start: 0, end: -(backstage.panel.offsetHeight), template: "%0px"},
				{style: "display", atEnd: "none"}
			];
			var c = function(element,properties) {backstage.cloak.style.display = "none";};
			anim.startAnimating(new Morpher(backstage.panel,config.animDuration,p,c));
		} else {
			jQuery([backstage.panel,backstage.cloak]).hide();
		}
	}
};
 
config.macros.backstage = {};
 
config.macros.backstage.handler = function(place,macroName,params)
{
	var backstageTask = config.tasks[params[0]];
	if(backstageTask)
		createTiddlyButton(place,backstageTask.text,backstageTask.tooltip,function(e) {backstage.switchTab(params[0]); return false;});
};
 
//--
//-- ImportTiddlers macro
//--
 
config.macros.importTiddlers.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	if(readOnly) {
		createTiddlyElement(place,"div",null,"marked",this.readOnlyWarning);
		return;
	}
	var w = new Wizard(); 
	w.createWizard(place,this.wizardTitle);
	this.restart(w);
};
 
config.macros.importTiddlers.onCancel = function(e)
{
	var wizard = new Wizard(this);
	var place = wizard.clear();
	config.macros.importTiddlers.restart(wizard);
	return false;
};
 
config.macros.importTiddlers.onClose = function(e)
{
	backstage.hidePanel();
	return false;
};
 
config.macros.importTiddlers.restart = function(wizard)
{
	wizard.addStep(this.step1Title,this.step1Html);
	var s = wizard.getElement("selTypes");
	for(var t in config.adaptors) {
		var e = createTiddlyElement(s,"option",null,null,config.adaptors[t].serverLabel ? config.adaptors[t].serverLabel : t);
		e.value = t;
	}
	if(config.defaultAdaptor)
		s.value = config.defaultAdaptor;
	s = wizard.getElement("selFeeds");
	var feeds = this.getFeeds();
	for(t in feeds) {
		e = createTiddlyElement(s,"option",null,null,t);
		e.value = t;
	}
	wizard.setValue("feeds",feeds);
	s.onchange = config.macros.importTiddlers.onFeedChange;
	var fileInput = wizard.getElement("txtBrowse");
	fileInput.onchange = config.macros.importTiddlers.onBrowseChange;
	fileInput.onkeyup = config.macros.importTiddlers.onBrowseChange;
	wizard.setButtons([{caption: this.openLabel, tooltip: this.openPrompt, onClick: config.macros.importTiddlers.onOpen}]);
	wizard.formElem.action = "javascript:;";
	wizard.formElem.onsubmit = function() {
		if(!this.txtPath || this.txtPath.value.length) //# check for manually entered path in first step
			this.lastChild.firstChild.onclick();
	};
};
 
config.macros.importTiddlers.getFeeds = function()
{
	var feeds = {};
	var tagged = store.getTaggedTiddlers("systemServer","title");
	for(var t=0; t<tagged.length; t++) {
		var title = tagged[t].title;
		var serverType = store.getTiddlerSlice(title,"Type");
		if(!serverType)
			serverType = "file";
		feeds[title] = {title: title,
						url: store.getTiddlerSlice(title,"URL"),
						workspace: store.getTiddlerSlice(title,"Workspace"),
						workspaceList: store.getTiddlerSlice(title,"WorkspaceList"),
						tiddlerFilter: store.getTiddlerSlice(title,"TiddlerFilter"),
						serverType: serverType,
						description: store.getTiddlerSlice(title,"Description")};
	}
	return feeds;
};
 
config.macros.importTiddlers.onFeedChange = function(e)
{
	var wizard = new Wizard(this);
	var selTypes = wizard.getElement("selTypes");
	var fileInput = wizard.getElement("txtPath");
	var feeds = wizard.getValue("feeds");
	var f = feeds[this.value];
	if(f) {
		selTypes.value = f.serverType;
		fileInput.value = f.url;
		wizard.setValue("feedName",f.serverType);
		wizard.setValue("feedHost",f.url);
		wizard.setValue("feedWorkspace",f.workspace);
		wizard.setValue("feedWorkspaceList",f.workspaceList);
		wizard.setValue("feedTiddlerFilter",f.tiddlerFilter);
	}
	return false;
};
 
config.macros.importTiddlers.onBrowseChange = function(e)
{
	var wizard = new Wizard(this);
	var fileInput = wizard.getElement("txtPath");
	fileInput.value = config.macros.importTiddlers.getURLFromLocalPath(this.value);
	var serverType = wizard.getElement("selTypes");
	serverType.value = "file";
	return true;
};
 
config.macros.importTiddlers.getURLFromLocalPath = function(v)
{
	if(!v||!v.length)
		return v;
	v = v.replace(/\\/g,"/"); // use "/" for cross-platform consistency
	var u;
	var t = v.split(":");
	var p = t[1]||t[0]; // remove drive letter (if any)
	if (t[1] && (t[0]=="http"||t[0]=="https"||t[0]=="file")) {
		u = v;
	} else if(p.substr(0,1)=="/") {
		u = document.location.protocol + "//" + document.location.hostname + (t[1] ? "/" : "") + v;
	} else {
		var c = document.location.href.replace(/\\/g,"/");
		var pos = c.lastIndexOf("/");
		if (pos!=-1)
			c = c.substr(0,pos); // remove filename
		u = c + "/" + p;
	}
	return u;
};
 
config.macros.importTiddlers.onOpen = function(e)
{
	var wizard = new Wizard(this);
	var fileInput = wizard.getElement("txtPath");
	var url = fileInput.value;
	var serverType = wizard.getElement("selTypes").value || config.defaultAdaptor;
	var adaptor = new config.adaptors[serverType]();
	wizard.setValue("adaptor",adaptor);
	wizard.setValue("serverType",serverType);
	wizard.setValue("host",url);
	var ret = adaptor.openHost(url,null,wizard,config.macros.importTiddlers.onOpenHost);
	if(ret !== true)
		displayMessage(ret);
	wizard.setButtons([{caption: config.macros.importTiddlers.cancelLabel, tooltip: config.macros.importTiddlers.cancelPrompt, onClick: config.macros.importTiddlers.onCancel}],config.macros.importTiddlers.statusOpenHost);
	return false;
};
 
config.macros.importTiddlers.onOpenHost = function(context,wizard)
{
	var adaptor = wizard.getValue("adaptor");
	if(context.status !== true)
		displayMessage("Error in importTiddlers.onOpenHost: " + context.statusText);
	var ret = adaptor.getWorkspaceList(context,wizard,config.macros.importTiddlers.onGetWorkspaceList);
	if(ret !== true)
		displayMessage(ret);
	wizard.setButtons([{caption: config.macros.importTiddlers.cancelLabel, tooltip: config.macros.importTiddlers.cancelPrompt, onClick: config.macros.importTiddlers.onCancel}],config.macros.importTiddlers.statusGetWorkspaceList);
};
 
config.macros.importTiddlers.onGetWorkspaceList = function(context,wizard)
{
	if(context.status !== true)
		displayMessage("Error in importTiddlers.onGetWorkspaceList: " + context.statusText);
	wizard.setValue("context",context);
	var workspace = wizard.getValue("feedWorkspace");
	if(!workspace && context.workspaces.length==1)
		workspace = context.workspaces[0].title;
	if(workspace) {
		var ret = context.adaptor.openWorkspace(workspace,context,wizard,config.macros.importTiddlers.onOpenWorkspace);
		if(ret !== true)
			displayMessage(ret);
		wizard.setValue("workspace",workspace);
		wizard.setButtons([{caption: config.macros.importTiddlers.cancelLabel, tooltip: config.macros.importTiddlers.cancelPrompt, onClick: config.macros.importTiddlers.onCancel}],config.macros.importTiddlers.statusOpenWorkspace);
		return;
	}
	wizard.addStep(config.macros.importTiddlers.step2Title,config.macros.importTiddlers.step2Html);
	var s = wizard.getElement("selWorkspace");
	s.onchange = config.macros.importTiddlers.onWorkspaceChange;
	for(var t=0; t<context.workspaces.length; t++) {
		var e = createTiddlyElement(s,"option",null,null,context.workspaces[t].title);
		e.value = context.workspaces[t].title;
	}
	var workspaceList = wizard.getValue("feedWorkspaceList");
	if(workspaceList) {
		var list = workspaceList.parseParams("workspace",null,false,true);
		for(var n=1; n<list.length; n++) {
			if(context.workspaces.findByField("title",list[n].value) == null) {
				e = createTiddlyElement(s,"option",null,null,list[n].value);
				e.value = list[n].value;
			}
		}
	}
	if(workspace) {
		t = wizard.getElement("txtWorkspace");
		t.value = workspace;
	}
	wizard.setButtons([{caption: config.macros.importTiddlers.openLabel, tooltip: config.macros.importTiddlers.openPrompt, onClick: config.macros.importTiddlers.onChooseWorkspace}]);
};
 
config.macros.importTiddlers.onWorkspaceChange = function(e)
{
	var wizard = new Wizard(this);
	var t = wizard.getElement("txtWorkspace");
	t.value = this.value;
	this.selectedIndex = 0;
	return false;
};
 
config.macros.importTiddlers.onChooseWorkspace = function(e)
{
	var wizard = new Wizard(this);
	var adaptor = wizard.getValue("adaptor");
	var workspace = wizard.getElement("txtWorkspace").value;
	wizard.setValue("workspace",workspace);
	var context = wizard.getValue("context");
	var ret = adaptor.openWorkspace(workspace,context,wizard,config.macros.importTiddlers.onOpenWorkspace);
	if(ret !== true)
		displayMessage(ret);
	wizard.setButtons([{caption: config.macros.importTiddlers.cancelLabel, tooltip: config.macros.importTiddlers.cancelPrompt, onClick: config.macros.importTiddlers.onCancel}],config.macros.importTiddlers.statusOpenWorkspace);
	return false;
};
 
config.macros.importTiddlers.onOpenWorkspace = function(context,wizard)
{
	if(context.status !== true)
		displayMessage("Error in importTiddlers.onOpenWorkspace: " + context.statusText);
	var adaptor = wizard.getValue("adaptor");
	var ret = adaptor.getTiddlerList(context,wizard,config.macros.importTiddlers.onGetTiddlerList,wizard.getValue("feedTiddlerFilter"));
	if(ret !== true)
		displayMessage(ret);
	wizard.setButtons([{caption: config.macros.importTiddlers.cancelLabel, tooltip: config.macros.importTiddlers.cancelPrompt, onClick: config.macros.importTiddlers.onCancel}],config.macros.importTiddlers.statusGetTiddlerList);
};
 
config.macros.importTiddlers.onGetTiddlerList = function(context,wizard)
{
	if(context.status !== true) {
		wizard.setButtons([{caption: config.macros.importTiddlers.cancelLabel, tooltip: config.macros.importTiddlers.cancelPrompt, onClick: config.macros.importTiddlers.onCancel}],config.macros.importTiddlers.errorGettingTiddlerList);
		return;
	}
	// Extract data for the listview
	var listedTiddlers = [];
	if(context.tiddlers) {
		for(var n=0; n<context.tiddlers.length; n++) {
			var tiddler = context.tiddlers[n];
			listedTiddlers.push({
				title: tiddler.title,
				modified: tiddler.modified,
				modifier: tiddler.modifier,
				text: tiddler.text ? wikifyPlainText(tiddler.text,100) : "",
				tags: tiddler.tags,
				size: tiddler.text ? tiddler.text.length : 0,
				tiddler: tiddler
			});
		}
	}
	listedTiddlers.sort(function(a,b) {return a.title < b.title ? -1 : (a.title == b.title ? 0 : +1);});
	// Display the listview
	wizard.addStep(config.macros.importTiddlers.step3Title,config.macros.importTiddlers.step3Html);
	var markList = wizard.getElement("markList");
	var listWrapper = document.createElement("div");
	markList.parentNode.insertBefore(listWrapper,markList);
	var listView = ListView.create(listWrapper,listedTiddlers,config.macros.importTiddlers.listViewTemplate);
	wizard.setValue("listView",listView);
	wizard.setValue("context",context);
	var txtSaveTiddler = wizard.getElement("txtSaveTiddler");
	txtSaveTiddler.value = config.macros.importTiddlers.generateSystemServerName(wizard);
	wizard.setButtons([
			{caption: config.macros.importTiddlers.cancelLabel, tooltip: config.macros.importTiddlers.cancelPrompt, onClick: config.macros.importTiddlers.onCancel},
			{caption: config.macros.importTiddlers.importLabel, tooltip: config.macros.importTiddlers.importPrompt, onClick: config.macros.importTiddlers.doImport}
		]);
};
 
config.macros.importTiddlers.generateSystemServerName = function(wizard)
{
	var serverType = wizard.getValue("serverType");
	var host = wizard.getValue("host");
	var workspace = wizard.getValue("workspace");
	var pattern = config.macros.importTiddlers[workspace ? "systemServerNamePattern" : "systemServerNamePatternNoWorkspace"];
	return pattern.format([serverType,host,workspace]);
};
 
config.macros.importTiddlers.saveServerTiddler = function(wizard)
{
	var txtSaveTiddler = wizard.getElement("txtSaveTiddler").value;
	if(store.tiddlerExists(txtSaveTiddler)) {
		if(!confirm(config.macros.importTiddlers.confirmOverwriteSaveTiddler.format([txtSaveTiddler])))
			return;
		store.suspendNotifications();
		store.removeTiddler(txtSaveTiddler);
		store.resumeNotifications();
	}
	var serverType = wizard.getValue("serverType");
	var host = wizard.getValue("host");
	var workspace = wizard.getValue("workspace");
	var text = config.macros.importTiddlers.serverSaveTemplate.format([serverType,host,workspace]);
	store.saveTiddler(txtSaveTiddler,txtSaveTiddler,text,config.macros.importTiddlers.serverSaveModifier,new Date(),["systemServer"]);
};
 
config.macros.importTiddlers.doImport = function(e)
{
	var wizard = new Wizard(this);
	if(wizard.getElement("chkSave").checked)
		config.macros.importTiddlers.saveServerTiddler(wizard);
	var chkSync = wizard.getElement("chkSync").checked;
	wizard.setValue("sync",chkSync);
	var listView = wizard.getValue("listView");
	var rowNames = ListView.getSelectedRows(listView);
	var adaptor = wizard.getValue("adaptor");
	var overwrite = [];
	var t;
	for(t=0; t<rowNames.length; t++) {
		if(store.tiddlerExists(rowNames[t]))
			overwrite.push(rowNames[t]);
	}
	if(overwrite.length > 0) {
		if(!confirm(config.macros.importTiddlers.confirmOverwriteText.format([overwrite.join(", ")])))
			return false;
	}
	wizard.addStep(config.macros.importTiddlers.step4Title.format([rowNames.length]),config.macros.importTiddlers.step4Html);
	for(t=0; t<rowNames.length; t++) {
		var link = document.createElement("div");
		createTiddlyLink(link,rowNames[t],true);
		var place = wizard.getElement("markReport");
		place.parentNode.insertBefore(link,place);
	}
	wizard.setValue("remainingImports",rowNames.length);
	wizard.setButtons([
			{caption: config.macros.importTiddlers.cancelLabel, tooltip: config.macros.importTiddlers.cancelPrompt, onClick: config.macros.importTiddlers.onCancel}
		],config.macros.importTiddlers.statusDoingImport);
	var wizardContext = wizard.getValue("context");
	var tiddlers = wizardContext ? wizardContext.tiddlers : [];
	for(t=0; t<rowNames.length; t++) {
		var context = {
			allowSynchronous:true,
			tiddler:tiddlers[tiddlers.findByField("title",rowNames[t])]
		};
		adaptor.getTiddler(rowNames[t],context,wizard,config.macros.importTiddlers.onGetTiddler);
	}
	return false;
};
 
config.macros.importTiddlers.onGetTiddler = function(context,wizard)
{
	if(!context.status)
		displayMessage("Error in importTiddlers.onGetTiddler: " + context.statusText);
	var tiddler = context.tiddler;
	store.suspendNotifications();
	store.saveTiddler(tiddler.title, tiddler.title, tiddler.text, tiddler.modifier, tiddler.modified, tiddler.tags, tiddler.fields, true, tiddler.created);
	if(!wizard.getValue("sync")) {
		store.setValue(tiddler.title,'server',null);
	}
	store.resumeNotifications();
	if(!context.isSynchronous)
		store.notify(tiddler.title,true);
	var remainingImports = wizard.getValue("remainingImports")-1;
	wizard.setValue("remainingImports",remainingImports);
	if(remainingImports == 0) {
		if(context.isSynchronous) {
			store.notifyAll();
			refreshDisplay();
		}
		wizard.setButtons([
				{caption: config.macros.importTiddlers.doneLabel, tooltip: config.macros.importTiddlers.donePrompt, onClick: config.macros.importTiddlers.onClose}
			],config.macros.importTiddlers.statusDoneImport);
		autoSaveChanges();
	}
};
 
//--
//-- Upgrade macro
//--
 
config.macros.upgrade.handler = function(place)
{
	var w = new Wizard();
	w.createWizard(place,this.wizardTitle);
	w.addStep(this.step1Title,this.step1Html.format([this.source,this.source]));
	w.setButtons([{caption: this.upgradeLabel, tooltip: this.upgradePrompt, onClick: this.onClickUpgrade}]);
};
 
config.macros.upgrade.onClickUpgrade = function(e)
{
	var me = config.macros.upgrade;
	var w = new Wizard(this);
	if(window.location.protocol != "file:") {
		alert(me.errorCantUpgrade);
		return false;
	}
	if(story.areAnyDirty() || store.isDirty()) {
		alert(me.errorNotSaved);
		return false;
	}
	var localPath = getLocalPath(document.location.toString());
	var backupPath = getBackupPath(localPath,me.backupExtension);
	w.setValue("backupPath",backupPath);
	w.setButtons([],me.statusPreparingBackup);
	var original = loadOriginal(localPath);
	w.setButtons([],me.statusSavingBackup);
	var backup = copyFile(backupPath,localPath);
	if(!backup)
		backup = saveFile(backupPath,original);
	if(!backup) {
		w.setButtons([],me.errorSavingBackup);
		alert(me.errorSavingBackup);
		return false;
	}
	w.setButtons([],me.statusLoadingCore);
	var load = loadRemoteFile(me.source,me.onLoadCore,w);
	if(typeof load == "string") {
		w.setButtons([],me.errorLoadingCore);
		alert(me.errorLoadingCore);
		return false;
	}
	return false;
};
 
config.macros.upgrade.onLoadCore = function(status,params,responseText,url,xhr)
{
	var me = config.macros.upgrade;
	var w = params;
	var errMsg;
	if(!status)
		errMsg = me.errorLoadingCore;
	var newVer = me.extractVersion(responseText);
	if(!newVer)
		errMsg = me.errorCoreFormat;
	if(errMsg) {
		w.setButtons([],errMsg);
		alert(errMsg);
		return;
	}
	var onStartUpgrade = function(e) {
		w.setButtons([],me.statusSavingCore);
		var localPath = getLocalPath(document.location.toString());
		saveFile(localPath,responseText);
		w.setButtons([],me.statusReloadingCore);
		var backupPath = w.getValue("backupPath");
		var newLoc = document.location.toString() + "?time=" + new Date().convertToYYYYMMDDHHMM() + "#upgrade:[[" + encodeURI(backupPath) + "]]";
		window.setTimeout(function () {window.location = newLoc;},10);
	};
	var step2 = [me.step2Html_downgrade,me.step2Html_restore,me.step2Html_upgrade][compareVersions(version,newVer) + 1];
	w.addStep(me.step2Title,step2.format([formatVersion(newVer),formatVersion(version)]));
	w.setButtons([{caption: me.startLabel, tooltip: me.startPrompt, onClick: onStartUpgrade},{caption: me.cancelLabel, tooltip: me.cancelPrompt, onClick: me.onCancel}]);
};
 
config.macros.upgrade.onCancel = function(e)
{
	var me = config.macros.upgrade;
	var w = new Wizard(this);
	w.addStep(me.step3Title,me.step3Html);
	w.setButtons([]);
	return false;
};
 
config.macros.upgrade.extractVersion = function(upgradeFile)
{
	var re = /^var version = \{title: "([^"]+)", major: (\d+), minor: (\d+), revision: (\d+)(, beta: (\d+)){0,1}, date: new Date\("([^"]+)"\)/mg;
	var m = re.exec(upgradeFile);
	return  m ? {title: m[1], major: m[2], minor: m[3], revision: m[4], beta: m[6], date: new Date(m[7])} : null;
};
 
function upgradeFrom(path)
{
	var importStore = new TiddlyWiki();
	var tw = loadFile(path);
	if(window.netscape !== undefined)
		tw = convertUTF8ToUnicode(tw);
	importStore.importTiddlyWiki(tw);
	importStore.forEachTiddler(function(title,tiddler) {
		if(!store.getTiddler(title)) {
			store.addTiddler(tiddler);
		}
	});
	refreshDisplay();
	saveChanges(); //# To create appropriate Markup* sections
	alert(config.messages.upgradeDone.format([formatVersion()]));
	window.location = window.location.toString().substr(0,window.location.toString().lastIndexOf("?"));
}
 
//--
//-- Sync macro
//--
 
// Synchronisation handlers
config.syncers = {};
 
// Sync state.
var currSync = null;
 
// sync macro
config.macros.sync.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	if(!wikifier.isStatic)
		this.startSync(place);
};
 
config.macros.sync.cancelSync = function()
{
	currSync = null;
};
 
config.macros.sync.startSync = function(place)
{
	if(currSync)
		config.macros.sync.cancelSync();
	currSync = {};
	currSync.syncList = this.getSyncableTiddlers();
	currSync.syncTasks = this.createSyncTasks(currSync.syncList);
	this.preProcessSyncableTiddlers(currSync.syncList);
	var wizard = new Wizard();
	currSync.wizard = wizard;
	wizard.createWizard(place,this.wizardTitle);
	wizard.addStep(this.step1Title,this.step1Html);
	var markList = wizard.getElement("markList");
	var listWrapper = document.createElement("div");
	markList.parentNode.insertBefore(listWrapper,markList);
	currSync.listView = ListView.create(listWrapper,currSync.syncList,this.listViewTemplate);
	this.processSyncableTiddlers(currSync.syncList);
	wizard.setButtons([{caption: this.syncLabel, tooltip: this.syncPrompt, onClick: this.doSync}]);
};
 
config.macros.sync.getSyncableTiddlers = function()
{
	var list = [];
	store.forEachTiddler(function(title,tiddler) {
		var syncItem = {};
		syncItem.serverType = tiddler.getServerType();
		syncItem.serverHost = tiddler.fields['server.host'];
		if(syncItem.serverType && syncItem.serverHost) {
			syncItem.adaptor = new config.adaptors[syncItem.serverType];
			syncItem.serverWorkspace = tiddler.fields['server.workspace'];
			syncItem.tiddler = tiddler;
			syncItem.title = tiddler.title;
			syncItem.isTouched = tiddler.isTouched();
			syncItem.selected = syncItem.isTouched;
			syncItem.syncStatus = config.macros.sync.syncStatusList[syncItem.isTouched ? "changedLocally" : "none"];
			syncItem.status = syncItem.syncStatus.text;
			list.push(syncItem);
		}
		});
	list.sort(function(a,b) {return a.title < b.title ? -1 : (a.title == b.title ? 0 : +1);});
	return list;
};
 
config.macros.sync.preProcessSyncableTiddlers = function(syncList)
{
	for(var i=0; i<syncList.length; i++) {
		var si = syncList[i];
		si.serverUrl = si.adaptor.generateTiddlerInfo(si.tiddler).uri;
	}
};
 
config.macros.sync.processSyncableTiddlers = function(syncList)
{
	for(var i=0; i<syncList.length; i++) {
		var si = syncList[i];
		if(si.syncStatus.display)
			si.rowElement.style.display = si.syncStatus.display;
		if(si.syncStatus.className)
			si.rowElement.className = si.syncStatus.className;
	}
};
 
config.macros.sync.createSyncTasks = function(syncList)
{
	var syncTasks = [];
	for(var i=0; i<syncList.length; i++) {
		var si = syncList[i];
		var r = null;
		for(var j=0; j<syncTasks.length; j++) {
			var cst = syncTasks[j];
			if(si.serverType == cst.serverType && si.serverHost == cst.serverHost && si.serverWorkspace == cst.serverWorkspace)
				r = cst;
		}
		if(r) {
			si.syncTask = r;
			r.syncItems.push(si);
		} else {
			si.syncTask = this.createSyncTask(si);
			syncTasks.push(si.syncTask);
		}
	}
	return syncTasks;
};
 
config.macros.sync.createSyncTask = function(syncItem)
{
	var st = {};
	st.serverType = syncItem.serverType;
	st.serverHost = syncItem.serverHost;
	st.serverWorkspace = syncItem.serverWorkspace;
	st.syncItems = [syncItem];
 
	var openWorkspaceCallback = function(context,syncItems) {
		if(context.status) {
			context.adaptor.getTiddlerList(context,syncItems,getTiddlerListCallback);
			return true;
		}
		displayMessage(context.statusText);
		return false;
	};
 
	var getTiddlerListCallback = function(context,sycnItems) {
		if(!context.status) {
			displayMessage(context.statusText);
			return false;
		}
		syncItems = context.userParams;
		var tiddlers = context.tiddlers;
		for(var i=0; i<syncItems.length; i++) {
			var si = syncItems[i];
			var f = tiddlers.findByField("title",si.title);
			if(f !== null) {
				if(tiddlers[f].fields['server.page.revision'] > si.tiddler.fields['server.page.revision']) {
					si.syncStatus = config.macros.sync.syncStatusList[si.isTouched ? 'changedBoth' : 'changedServer'];
				}
			} else {
				si.syncStatus = config.macros.sync.syncStatusList.notFound;
			}
			config.macros.sync.updateSyncStatus(si);
		}
		return true;
	};
	var context = {host:st.serverHost,workspace:st.serverWorkspace};
	syncItem.adaptor.openHost(st.serverHost);
	syncItem.adaptor.openWorkspace(st.serverWorkspace,context,st.syncItems,openWorkspaceCallback);
	return st;
};
 
config.macros.sync.updateSyncStatus = function(syncItem)
{
	var e = syncItem.colElements["status"];
	removeChildren(e);
	createTiddlyText(e,syncItem.syncStatus.text);
	if(syncItem.syncStatus.display)
		syncItem.rowElement.style.display = syncItem.syncStatus.display;
	if(syncItem.syncStatus.className)
		syncItem.rowElement.className = syncItem.syncStatus.className;
};
 
config.macros.sync.doSync = function(e)
{
	var getTiddlerCallback = function(context,syncItem) {
		if(syncItem) {
			var tiddler = context.tiddler;
			store.saveTiddler(tiddler.title,tiddler.title,tiddler.text,tiddler.modifier,tiddler.modified,tiddler.tags,tiddler.fields,true,tiddler.created);
			syncItem.syncStatus = config.macros.sync.syncStatusList.gotFromServer;
			config.macros.sync.updateSyncStatus(syncItem);
		}
	};
	var putTiddlerCallback = function(context,syncItem) {
		if(syncItem) {
			store.resetTiddler(context.title);
			syncItem.syncStatus = config.macros.sync.syncStatusList.putToServer;
			config.macros.sync.updateSyncStatus(syncItem);
		}
	};
 
	var rowNames = ListView.getSelectedRows(currSync.listView);
	var sl = config.macros.sync.syncStatusList;
	for(var i=0; i<currSync.syncList.length; i++) {
		var si = currSync.syncList[i];
		if(rowNames.indexOf(si.title) != -1) {
			var errorMsg = "Error in doSync: ";
			try {
				var r = true;
				switch(si.syncStatus) {
				case sl.changedServer:
					r = si.adaptor.getTiddler(si.title,null,si,getTiddlerCallback);
					break;
				case sl.notFound:
				case sl.changedLocally:
				case sl.changedBoth:
					r = si.adaptor.putTiddler(si.tiddler,null,si,putTiddlerCallback);
					break;
				default:
					break;
				}
				if(!r)
					displayMessage(errorMsg + r);
			} catch(ex) {
				if(ex.name == "TypeError")
					displayMessage("sync operation unsupported: " + ex.message);
				else
					displayMessage(errorMsg + ex.message);
			}
		}
	}
	return false;
};
 
//--
//-- Manager UI for groups of tiddlers
//--
 
config.macros.plugins.handler = function(place,macroName,params,wikifier,paramString)
{
	var wizard = new Wizard();
	wizard.createWizard(place,this.wizardTitle);
	wizard.addStep(this.step1Title,this.step1Html);
	var markList = wizard.getElement("markList");
	var listWrapper = document.createElement("div");
	markList.parentNode.insertBefore(listWrapper,markList);
	listWrapper.setAttribute("refresh","macro");
	listWrapper.setAttribute("macroName","plugins");
	listWrapper.setAttribute("params",paramString);
	this.refresh(listWrapper,paramString);
};
 
config.macros.plugins.refresh = function(listWrapper,params)
{
	var wizard = new Wizard(listWrapper);
	var selectedRows = [];
	ListView.forEachSelector(listWrapper,function(e,rowName) {
			if(e.checked)
				selectedRows.push(e.getAttribute("rowName"));
		});
	removeChildren(listWrapper);
	params = params.parseParams("anon");
	var plugins = installedPlugins.slice(0);
	var t,tiddler,p;
	var configTiddlers = store.getTaggedTiddlers("systemConfig");
	for(t=0; t<configTiddlers.length; t++) {
		tiddler = configTiddlers[t];
		if(plugins.findByField("title",tiddler.title) == null) {
			p = getPluginInfo(tiddler);
			p.executed = false;
			p.log.splice(0,0,this.skippedText);
			plugins.push(p);
		}
	}
	for(t=0; t<plugins.length; t++) {
		p = plugins[t];
		p.size = p.tiddler.text ? p.tiddler.text.length : 0;
		p.forced = p.tiddler.isTagged("systemConfigForce");
		p.disabled = p.tiddler.isTagged("systemConfigDisable");
		p.Selected = selectedRows.indexOf(plugins[t].title) != -1;
	}
	if(plugins.length == 0) {
		createTiddlyElement(listWrapper,"em",null,null,this.noPluginText);
		wizard.setButtons([]);
	} else {
		var listView = ListView.create(listWrapper,plugins,this.listViewTemplate,this.onSelectCommand);
		wizard.setValue("listView",listView);
		wizard.setButtons([
				{caption: config.macros.plugins.removeLabel, tooltip: config.macros.plugins.removePrompt, onClick: config.macros.plugins.doRemoveTag},
				{caption: config.macros.plugins.deleteLabel, tooltip: config.macros.plugins.deletePrompt, onClick: config.macros.plugins.doDelete}
			]);
	}
};
 
config.macros.plugins.doRemoveTag = function(e)
{
	var wizard = new Wizard(this);
	var listView = wizard.getValue("listView");
	var rowNames = ListView.getSelectedRows(listView);
	if(rowNames.length == 0) {
		alert(config.messages.nothingSelected);
	} else {
		for(var t=0; t<rowNames.length; t++)
			store.setTiddlerTag(rowNames[t],false,"systemConfig");
	}
};
 
config.macros.plugins.doDelete = function(e)
{
	var wizard = new Wizard(this);
	var listView = wizard.getValue("listView");
	var rowNames = ListView.getSelectedRows(listView);
	if(rowNames.length == 0) {
		alert(config.messages.nothingSelected);
	} else {
		if(confirm(config.macros.plugins.confirmDeleteText.format([rowNames.join(", ")]))) {
			for(var t=0; t<rowNames.length; t++) {
				store.removeTiddler(rowNames[t]);
				story.closeTiddler(rowNames[t],true);
			}
		}
	}
};
 
//--
//-- Message area
//--
 
function getMessageDiv()
{
	var msgArea = document.getElementById("messageArea");
	if(!msgArea)
		return null;
	if(!msgArea.hasChildNodes())
		createTiddlyButton(createTiddlyElement(msgArea,"div",null,"messageToolbar"),
			config.messages.messageClose.text,
			config.messages.messageClose.tooltip,
			clearMessage);
	msgArea.style.display = "block";
	return createTiddlyElement(msgArea,"div");
}
 
function displayMessage(text,linkText)
{
	var e = getMessageDiv();
	if(!e) {
		alert(text);
		return;
	}
	if(linkText) {
		var link = createTiddlyElement(e,"a",null,null,text);
		link.href = linkText;
		link.target = "_blank";
	} else {
		e.appendChild(document.createTextNode(text));
	}
}
 
function clearMessage()
{
	var msgArea = document.getElementById("messageArea");
	if(msgArea) {
		removeChildren(msgArea);
		msgArea.style.display = "none";
	}
	return false;
}
 
//--
//-- Refresh mechanism
//--
 
config.notifyTiddlers = [
	{name: "StyleSheetLayout", notify: refreshStyles},
	{name: "StyleSheetColors", notify: refreshStyles},
	{name: "StyleSheet", notify: refreshStyles},
	{name: "StyleSheetPrint", notify: refreshStyles},
	{name: "PageTemplate", notify: refreshPageTemplate},
	{name: "SiteTitle", notify: refreshPageTitle},
	{name: "SiteSubtitle", notify: refreshPageTitle},
	{name: "ColorPalette", notify: refreshColorPalette},
	{name: null, notify: refreshDisplay}
];
 
config.refreshers = {
	link: function(e,changeList)
		{
		var title = e.getAttribute("tiddlyLink");
		refreshTiddlyLink(e,title);
		return true;
		},
 
	tiddler: function(e,changeList)
		{
		var title = e.getAttribute("tiddler");
		var template = e.getAttribute("template");
		if(changeList && changeList.indexOf(title) != -1 && !story.isDirty(title))
			story.refreshTiddler(title,template,true);
		else
			refreshElements(e,changeList);
		return true;
		},
 
	content: function(e,changeList)
		{
		var title = e.getAttribute("tiddler");
		var force = e.getAttribute("force");
		if(force != null || changeList == null || changeList.indexOf(title) != -1) {
			removeChildren(e);
			wikify(store.getTiddlerText(title,""),e,null,store.fetchTiddler(title));
			return true;
		} else
			return false;
		},
 
	macro: function(e,changeList)
		{
		var macro = e.getAttribute("macroName");
		var params = e.getAttribute("params");
		if(macro)
			macro = config.macros[macro];
		if(macro && macro.refresh)
			macro.refresh(e,params);
		return true;
		}
};
 
config.refresherData = {
	styleSheet: "StyleSheet",
	defaultStyleSheet: "StyleSheet",
	pageTemplate: "PageTemplate",
	defaultPageTemplate: "PageTemplate",
	colorPalette: "ColorPalette",
	defaultColorPalette: "ColorPalette"
};
 
function refreshElements(root,changeList)
{
	var nodes = root.childNodes;
	for(var c=0; c<nodes.length; c++) {
		var e = nodes[c], type = null;
		if(e.getAttribute && (e.tagName ? e.tagName != "IFRAME" : true))
			type = e.getAttribute("refresh");
		var refresher = config.refreshers[type];
		var refreshed = false;
		if(refresher != undefined)
			refreshed = refresher(e,changeList);
		if(e.hasChildNodes() && !refreshed)
			refreshElements(e,changeList);
	}
}
 
function applyHtmlMacros(root,tiddler)
{
	var e = root.firstChild;
	while(e) {
		var nextChild = e.nextSibling;
		if(e.getAttribute) {
			var macro = e.getAttribute("macro");
			if(macro) {
				e.removeAttribute("macro");
				var params = "";
				var p = macro.indexOf(" ");
				if(p != -1) {
					params = macro.substr(p+1);
					macro = macro.substr(0,p);
				}
				invokeMacro(e,macro,params,null,tiddler);
			}
		}
		if(e.hasChildNodes())
			applyHtmlMacros(e,tiddler);
		e = nextChild;
	}
}
 
function refreshPageTemplate(title)
{
	var stash = jQuery("<div/>").appendTo("body").hide()[0];
	var display = story.getContainer();
	var nodes,t;
	if(display) {
		nodes = display.childNodes;
		for(t=nodes.length-1; t>=0; t--)
			stash.appendChild(nodes[t]);
	}
	var wrapper = document.getElementById("contentWrapper");
 
	var isAvailable = function(title) {
		var s = title ? title.indexOf(config.textPrimitives.sectionSeparator) : -1;
		if(s!=-1)
			title = title.substr(0,s);
		return store.tiddlerExists(title) || store.isShadowTiddler(title);
	};
	if(!title || !isAvailable(title))
		title = config.refresherData.pageTemplate;
	if(!isAvailable(title))
		title = config.refresherData.defaultPageTemplate; //# this one is always avaialable
	wrapper.innerHTML = store.getRecursiveTiddlerText(title,null,10);
	applyHtmlMacros(wrapper);
	refreshElements(wrapper);
	display = story.getContainer();
	removeChildren(display);
	if(!display)
		display = createTiddlyElement(wrapper,"div",story.containerId());
	nodes = stash.childNodes;
	for(t=nodes.length-1; t>=0; t--)
		display.appendChild(nodes[t]);
	removeNode(stash);
}
 
function refreshDisplay(hint)
{
	if(typeof hint == "string")
		hint = [hint];
	var e = document.getElementById("contentWrapper");
	refreshElements(e,hint);
	if(backstage.isPanelVisible()) {
		e = document.getElementById("backstage");
		refreshElements(e,hint);
	}
}
 
function refreshPageTitle()
{
	document.title = getPageTitle();
}
 
function getPageTitle()
{
	var st = wikifyPlain("SiteTitle");
	var ss = wikifyPlain("SiteSubtitle");
	return st + ((st == "" || ss == "") ? "" : " - ") + ss;
}
 
function refreshStyles(title,doc)
{
	setStylesheet(title == null ? "" : store.getRecursiveTiddlerText(title,"",10),title,doc || document);
}
 
function refreshColorPalette(title)
{
	if(!startingUp)
		refreshAll();
}
 
function refreshAll()
{
	refreshPageTemplate();
	refreshDisplay();
	refreshStyles("StyleSheetLayout");
	refreshStyles("StyleSheetColors");
	refreshStyles(config.refresherData.styleSheet);
	refreshStyles("StyleSheetPrint");
}
 
//--
//-- Options stuff
//--
 
config.optionHandlers = {
	'txt': {
		get: function(name) {return encodeCookie(config.options[name].toString());},
		set: function(name,value) {config.options[name] = decodeCookie(value);}
	},
	'chk': {
		get: function(name) {return config.options[name] ? "true" : "false";},
		set: function(name,value) {config.options[name] = value == "true";}
	}
};
 
function loadOptionsCookie()
{
	if(safeMode)
		return;
	var cookies = document.cookie.split(";");
	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();
			var optType = name.substr(0,3);
			if(config.optionHandlers[optType] && config.optionHandlers[optType].set)
				config.optionHandlers[optType].set(name,value);
		}
	}
}
 
function saveOptionCookie(name)
{
	if(safeMode)
		return;
	var c = name + "=";
	var optType = name.substr(0,3);
	if(config.optionHandlers[optType] && config.optionHandlers[optType].get)
		c += config.optionHandlers[optType].get(name);
	c += "; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";
	document.cookie = c;
}
 
function removeCookie(name)
{
	document.cookie = name + "=; expires=Thu, 01-Jan-1970 00:00:01 UTC; path=/;";
}
 
function encodeCookie(s)
{
	return escape(convertUnicodeToHtmlEntities(s));
}
 
function decodeCookie(s)
{
	s = unescape(s);
	var re = /&#[0-9]{1,5};/g;
	return s.replace(re,function($0) {return String.fromCharCode(eval($0.replace(/[&#;]/g,"")));});
}
 
 
config.macros.option.genericCreate = function(place,type,opt,className,desc)
{
	var typeInfo = config.macros.option.types[type];
	var c = document.createElement(typeInfo.elementType);
	if(typeInfo.typeValue)
		c.setAttribute("type",typeInfo.typeValue);
	c[typeInfo.eventName] = typeInfo.onChange;
	c.setAttribute("option",opt);
	c.className = className || typeInfo.className;
	if(config.optionsDesc[opt])
		c.setAttribute("title",config.optionsDesc[opt]);
	place.appendChild(c);
	if(desc != "no")
		createTiddlyText(place,config.optionsDesc[opt] || opt);
	c[typeInfo.valueField] = config.options[opt];
	return c;
};
 
config.macros.option.genericOnChange = function(e)
{
	var opt = this.getAttribute("option");
	if(opt) {
		var optType = opt.substr(0,3);
		var handler = config.macros.option.types[optType];
		if(handler.elementType && handler.valueField)
			config.macros.option.propagateOption(opt,handler.valueField,this[handler.valueField],handler.elementType,this);
	}
	return true;
};
 
config.macros.option.types = {
	'txt': {
		elementType: "input",
		valueField: "value",
		eventName: "onchange",
		className: "txtOptionInput",
		create: config.macros.option.genericCreate,
		onChange: config.macros.option.genericOnChange
	},
	'chk': {
		elementType: "input",
		valueField: "checked",
		eventName: "onclick",
		className: "chkOptionInput",
		typeValue: "checkbox",
		create: config.macros.option.genericCreate,
		onChange: config.macros.option.genericOnChange
	}
};
 
config.macros.option.propagateOption = function(opt,valueField,value,elementType,elem)
{
	config.options[opt] = value;
	saveOptionCookie(opt);
	var nodes = document.getElementsByTagName(elementType);
	for(var t=0; t<nodes.length; t++) {
		var optNode = nodes[t].getAttribute("option");
		if(opt == optNode && nodes[t]!=elem)
			nodes[t][valueField] = value;
	}
};
 
config.macros.option.handler = function(place,macroName,params,wikifier,paramString)
{
	params = paramString.parseParams("anon",null,true,false,false);
	var opt = (params[1] && params[1].name == "anon") ? params[1].value : getParam(params,"name",null);
	var className = (params[2] && params[2].name == "anon") ? params[2].value : getParam(params,"class",null);
	var desc = getParam(params,"desc","no");
	var type = opt.substr(0,3);
	var h = config.macros.option.types[type];
	if(h && h.create)
		h.create(place,type,opt,className,desc);
};
 
config.macros.options.handler = function(place,macroName,params,wikifier,paramString)
{
	params = paramString.parseParams("anon",null,true,false,false);
	var showUnknown = getParam(params,"showUnknown","no");
	var wizard = new Wizard();
	wizard.createWizard(place,this.wizardTitle);
	wizard.addStep(this.step1Title,this.step1Html);
	var markList = wizard.getElement("markList");
	var chkUnknown = wizard.getElement("chkUnknown");
	chkUnknown.checked = showUnknown == "yes";
	chkUnknown.onchange = this.onChangeUnknown;
	var listWrapper = document.createElement("div");
	markList.parentNode.insertBefore(listWrapper,markList);
	wizard.setValue("listWrapper",listWrapper);
	this.refreshOptions(listWrapper,showUnknown == "yes");
};
 
config.macros.options.refreshOptions = function(listWrapper,showUnknown)
{
	var opts = [];
	for(var n in config.options) {
		var opt = {};
		opt.option = "";
		opt.name = n;
		opt.lowlight = !config.optionsDesc[n];
		opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
		if(!opt.lowlight || showUnknown)
			opts.push(opt);
	}
	opts.sort(function(a,b) {return a.name.substr(3) < b.name.substr(3) ? -1 : (a.name.substr(3) == b.name.substr(3) ? 0 : +1);});
	var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
	for(n=0; n<opts.length; n++) {
		var type = opts[n].name.substr(0,3);
		var h = config.macros.option.types[type];
		if(h && h.create) {
			h.create(opts[n].colElements['option'],type,opts[n].name,null,"no");
		}
	}
};
 
config.macros.options.onChangeUnknown = function(e)
{
	var wizard = new Wizard(this);
	var listWrapper = wizard.getValue("listWrapper");
	removeChildren(listWrapper);
	config.macros.options.refreshOptions(listWrapper,this.checked);
	return false;
};
 
//--
//-- Saving
//--
 
var saveUsingSafari = false;
 
var startSaveArea = '<div id="' + 'storeArea">'; // Split up into two so that indexOf() of this source doesn't find it
var endSaveArea = '</d' + 'iv>';
 
// If there are unsaved changes, force the user to confirm before exitting
function confirmExit()
{
	hadConfirmExit = true;
	if((store && store.isDirty && store.isDirty()) || (story && story.areAnyDirty && story.areAnyDirty()))
		return config.messages.confirmExit;
}
 
// Give the user a chance to save changes before exitting
function checkUnsavedChanges()
{
	if(store && store.isDirty && store.isDirty() && window.hadConfirmExit === false) {
		if(confirm(config.messages.unsavedChangesWarning))
			saveChanges();
	}
}
 
function updateLanguageAttribute(s)
{
	if(config.locale) {
		var mRE = /(<html(?:.*?)?)(?: xml:lang\="([a-z]+)")?(?: lang\="([a-z]+)")?>/;
		var m = mRE.exec(s);
		if(m) {
			var t = m[1];
			if(m[2])
				t += ' xml:lang="' + config.locale + '"';
			if(m[3])
				t += ' lang="' + config.locale + '"';
			t += ">";
			s = s.substr(0,m.index) + t + s.substr(m.index+m[0].length);
		}
	}
	return s;
}
 
function updateMarkupBlock(s,blockName,tiddlerName)
{
	return s.replaceChunk(
			"<!--%0-START-->".format([blockName]),
			"<!--%0-END-->".format([blockName]),
			"\n" + convertUnicodeToFileFormat(store.getRecursiveTiddlerText(tiddlerName,"")) + "\n");
}
 
function updateOriginal(original,posDiv,localPath)
{
	if(!posDiv)
		posDiv = locateStoreArea(original);
	if(!posDiv) {
		alert(config.messages.invalidFileError.format([localPath]));
		return null;
	}
	var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
				convertUnicodeToFileFormat(store.allTiddlersAsHtml()) + "\n" +
				original.substr(posDiv[1]);
	var newSiteTitle = convertUnicodeToFileFormat(getPageTitle()).htmlEncode();
	revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
	revised = updateLanguageAttribute(revised);
	revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
	revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
	revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
	revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
	return revised;
}
 
function locateStoreArea(original)
{
	// Locate the storeArea div's
	var posOpeningDiv = original.indexOf(startSaveArea);
	var limitClosingDiv = original.indexOf("<"+"!--POST-STOREAREA--"+">");
	if(limitClosingDiv == -1)
		limitClosingDiv = original.indexOf("<"+"!--POST-BODY-START--"+">");
	var posClosingDiv = original.lastIndexOf(endSaveArea,limitClosingDiv == -1 ? original.length : limitClosingDiv);
	return (posOpeningDiv != -1 && posClosingDiv != -1) ? [posOpeningDiv,posClosingDiv] : null;
}
 
function autoSaveChanges(onlyIfDirty,tiddlers)
{
	if(config.options.chkAutoSave)
		saveChanges(onlyIfDirty,tiddlers);
}
 
function loadOriginal(localPath)
{
	return loadFile(localPath);
}
 
// Save this tiddlywiki with the pending changes
function saveChanges(onlyIfDirty,tiddlers)
{
	if(onlyIfDirty && !store.isDirty())
		return;
	clearMessage();
	var t0 = new Date();
	var originalPath = document.location.toString();
	if(originalPath.substr(0,5) != "file:") {
		alert(config.messages.notFileUrlError);
		if(store.tiddlerExists(config.messages.saveInstructions))
			story.displayTiddler(null,config.messages.saveInstructions);
		return;
	}
	var localPath = getLocalPath(originalPath);
	var original = loadOriginal(localPath);
	if(original == null) {
		alert(config.messages.cantSaveError);
		if(store.tiddlerExists(config.messages.saveInstructions))
			story.displayTiddler(null,config.messages.saveInstructions);
		return;
	}
	var posDiv = locateStoreArea(original);
	if(!posDiv) {
		alert(config.messages.invalidFileError.format([localPath]));
		return;
	}
	saveMain(localPath,original,posDiv);
	if(config.options.chkSaveBackups)
		saveBackup(localPath,original);
	if(config.options.chkSaveEmptyTemplate)
		saveEmpty(localPath,original,posDiv);
	if(config.options.chkGenerateAnRssFeed && saveRss instanceof Function)
		saveRss(localPath);
	if(config.options.chkDisplayInstrumentation)
		displayMessage("saveChanges " + (new Date()-t0) + " ms");
}
 
function saveMain(localPath,original,posDiv)
{
	var save;
	try {
		var revised = updateOriginal(original,posDiv,localPath);
		save = saveFile(localPath,revised);
	} catch (ex) {
		showException(ex);
	}
	if(save) {
		displayMessage(config.messages.mainSaved,"file://" + localPath);
		store.setDirty(false);
	} else {
		alert(config.messages.mainFailed);
	}
}
 
function saveBackup(localPath,original)
{
	var backupPath = getBackupPath(localPath);
	var backup = copyFile(backupPath,localPath);
	if(!backup)
		backup = saveFile(backupPath,original);
	if(backup)
		displayMessage(config.messages.backupSaved,"file://" + backupPath);
	else
		alert(config.messages.backupFailed);
}
 
function saveEmpty(localPath,original,posDiv)
{
	var emptyPath,p;
	if((p = localPath.lastIndexOf("/")) != -1)
		emptyPath = localPath.substr(0,p) + "/";
	else if((p = localPath.lastIndexOf("\\")) != -1)
		emptyPath = localPath.substr(0,p) + "\\";
	else
		emptyPath = localPath + ".";
	emptyPath += "empty.html";
	var empty = original.substr(0,posDiv[0] + startSaveArea.length) + original.substr(posDiv[1]);
	var emptySave = saveFile(emptyPath,empty);
	if(emptySave)
		displayMessage(config.messages.emptySaved,"file://" + emptyPath);
	else
		alert(config.messages.emptyFailed);
}
 
function getLocalPath(origPath)
{
	var originalPath = convertUriToUTF8(origPath,config.options.txtFileSystemCharSet);
	// Remove any location or query part of the URL
	var argPos = originalPath.indexOf("?");
	if(argPos != -1)
		originalPath = originalPath.substr(0,argPos);
	var hashPos = originalPath.indexOf("#");
	if(hashPos != -1)
		originalPath = originalPath.substr(0,hashPos);
	// Convert file://localhost/ to file:///
	if(originalPath.indexOf("file://localhost/") == 0)
		originalPath = "file://" + originalPath.substr(16);
	// Convert to a native file format
	var localPath;
	if(originalPath.charAt(9) == ":") // pc local file
		localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\\");
	else if(originalPath.indexOf("file://///") == 0) // FireFox pc network file
		localPath = "\\\\" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\\");
	else if(originalPath.indexOf("file:///") == 0) // mac/unix local file
		localPath = unescape(originalPath.substr(7));
	else if(originalPath.indexOf("file:/") == 0) // mac/unix local file
		localPath = unescape(originalPath.substr(5));
	else // pc network file
		localPath = "\\\\" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\\");
	return localPath;
}
 
function getBackupPath(localPath,title,extension)
{
	var slash = "\\";
	var dirPathPos = localPath.lastIndexOf("\\");
	if(dirPathPos == -1) {
		dirPathPos = localPath.lastIndexOf("/");
		slash = "/";
	}
	var backupFolder = config.options.txtBackupFolder;
	if(!backupFolder || backupFolder == "")
		backupFolder = ".";
	var backupPath = localPath.substr(0,dirPathPos) + slash + backupFolder + localPath.substr(dirPathPos);
	backupPath = backupPath.substr(0,backupPath.lastIndexOf(".")) + ".";
	if(title)
		backupPath += title.replace(/[\\\/\*\?\":<> ]/g,"_") + ".";
	backupPath += (new Date()).convertToYYYYMMDDHHMMSSMMM() + "." + (extension || "html");
	return backupPath;
}
 
//--
//-- RSS Saving
//--
 
function saveRss(localPath)
{
	var rssPath = localPath.substr(0,localPath.lastIndexOf(".")) + ".xml";
	if(saveFile(rssPath,convertUnicodeToFileFormat(generateRss())))
		displayMessage(config.messages.rssSaved,"file://" + rssPath);
	else
		alert(config.messages.rssFailed);
}
 
tiddlerToRssItem = function(tiddler,uri)
{
	var s = "<title" + ">" + tiddler.title.htmlEncode() + "</title" + ">\n";
	s += "<description>" + wikifyStatic(tiddler.text,null,tiddler).htmlEncode() + "</description>\n";
	for(var i=0; i<tiddler.tags.length; i++)
		s += "<category>" + tiddler.tags[i] + "</category>\n";
	s += "<link>" + uri + "#" + encodeURIComponent(String.encodeTiddlyLink(tiddler.title)) + "</link>\n";
	s +="<pubDate>" + tiddler.modified.toGMTString() + "</pubDate>\n";
	return s;
};
 
function generateRss()
{
	var s = [];
	var d = new Date();
	var u = store.getTiddlerText("SiteUrl");
	// Assemble the header
	s.push("<" + "?xml version=\"1.0\"?" + ">");
	s.push("<rss version=\"2.0\">");
	s.push("<channel>");
	s.push("<title" + ">" + wikifyPlain("SiteTitle").htmlEncode() + "</title" + ">");
	if(u)
		s.push("<link>" + u.htmlEncode() + "</link>");
	s.push("<description>" + wikifyPlain("SiteSubtitle").htmlEncode() + "</description>");
	s.push("<language>" + config.locale + "</language>");
	s.push("<copyright>Copyright " + d.getFullYear() + " " + config.options.txtUserName.htmlEncode() + "</copyright>");
	s.push("<pubDate>" + d.toGMTString() + "</pubDate>");
	s.push("<lastBuildDate>" + d.toGMTString() + "</lastBuildDate>");
	s.push("<docs>http://blogs.law.harvard.edu/tech/rss</docs>");
	s.push("<generator>TiddlyWiki " + formatVersion() + "</generator>");
	// The body
	var tiddlers = store.getTiddlers("modified","excludeLists");
	var n = config.numRssItems > tiddlers.length ? 0 : tiddlers.length-config.numRssItems;
	for(var i=tiddlers.length-1; i>=n; i--) {
		s.push("<item>\n" + tiddlerToRssItem(tiddlers[i],u) + "\n</item>");
	}
	// And footer
	s.push("</channel>");
	s.push("</rss>");
	// Save it all
	return s.join("\n");
}
 
//--
//-- Filesystem code
//--
 
function convertUTF8ToUnicode(u)
{
	return config.browser.isOpera || !window.netscape ? manualConvertUTF8ToUnicode(u) : mozConvertUTF8ToUnicode(u);
}
 
function manualConvertUTF8ToUnicode(utf)
{
	var uni = utf;
	var src = 0;
	var dst = 0;
	var b1, b2, b3;
	var c;
	while(src < utf.length) {
		b1 = utf.charCodeAt(src++);
		if(b1 < 0x80) {
			dst++;
		} else if(b1 < 0xE0) {
			b2 = utf.charCodeAt(src++);
			c = String.fromCharCode(((b1 & 0x1F) << 6) | (b2 & 0x3F));
			uni = uni.substring(0,dst++).concat(c,utf.substr(src));
		} else {
			b2 = utf.charCodeAt(src++);
			b3 = utf.charCodeAt(src++);
			c = String.fromCharCode(((b1 & 0xF) << 12) | ((b2 & 0x3F) << 6) | (b3 & 0x3F));
			uni = uni.substring(0,dst++).concat(c,utf.substr(src));
		}
	}
	return uni;
}
 
function mozConvertUTF8ToUnicode(u)
{
	try {
		netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
		var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
		converter.charset = "UTF-8";
	} catch(ex) {
		return manualConvertUTF8ToUnicode(u);
	} // fallback
	var s = converter.ConvertToUnicode(u);
	var fin = converter.Finish();
	return fin.length > 0 ? s+fin : s;
}
 
function convertUnicodeToFileFormat(s)
{
	return config.browser.isOpera || !window.netscape ? convertUnicodeToHtmlEntities(s) : mozConvertUnicodeToUTF8(s);
}
 
function convertUnicodeToHtmlEntities(s)
{
	var re = /[^\u0000-\u007F]/g;
	return s.replace(re,function($0) {return "&#" + $0.charCodeAt(0).toString() + ";";});
}
 
function convertUnicodeToUTF8(s)
{
// return convertUnicodeToFileFormat to allow plugin migration
	return convertUnicodeToFileFormat(s);
}
 
function manualConvertUnicodeToUTF8(s)
{
	return unescape(encodeURIComponent(s));
}
 
function mozConvertUnicodeToUTF8(s)
{
	try {
		netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
		var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"].createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
		converter.charset = "UTF-8";
	} catch(ex) {
		return manualConvertUnicodeToUTF8(s);
	} // fallback
	var u = converter.ConvertFromUnicode(s);
	var fin = converter.Finish();
	return fin.length > 0 ? u + fin : u;
}
 
function convertUriToUTF8(uri,charSet)
{
	if(window.netscape == undefined || charSet == undefined || charSet == "")
		return uri;
	try {
		netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
		var converter = Components.classes["@mozilla.org/intl/utf8converterservice;1"].getService(Components.interfaces.nsIUTF8ConverterService);
	} catch(ex) {
		return uri;
	}
	return converter.convertURISpecToUTF8(uri,charSet);
}
 
function copyFile(dest,source)
{
	return config.browser.isIE ? ieCopyFile(dest,source) : false;
}
 
function saveFile(fileUrl,content)
{
	var r = mozillaSaveFile(fileUrl,content);
	if(!r)
		r = ieSaveFile(fileUrl,content);
	if(!r)
		r = javaSaveFile(fileUrl,content);
	return r;
}
 
function loadFile(fileUrl)
{
	var r = mozillaLoadFile(fileUrl);
	if((r == null) || (r == false))
		r = ieLoadFile(fileUrl);
	if((r == null) || (r == false))
		r = javaLoadFile(fileUrl);
	return r;
}
 
function ieCreatePath(path)
{
	try {
		var fso = new ActiveXObject("Scripting.FileSystemObject");
	} catch(ex) {
		return null;
	}
 
	var pos = path.lastIndexOf("\\");
	if(pos==-1)
		pos = path.lastIndexOf("/");
	if(pos!=-1)
		path = path.substring(0,pos+1);
 
	var scan = [path];
	var parent = fso.GetParentFolderName(path);
	while(parent && !fso.FolderExists(parent)) {
		scan.push(parent);
		parent = fso.GetParentFolderName(parent);
	}
 
	for(i=scan.length-1;i>=0;i--) {
		if(!fso.FolderExists(scan[i])) {
			fso.CreateFolder(scan[i]);
		}
	}
	return true;
}
 
// Returns null if it can't do it, false if there's an error, true if it saved OK
function ieSaveFile(filePath,content)
{
	ieCreatePath(filePath);
	try {
		var fso = new ActiveXObject("Scripting.FileSystemObject");
	} catch(ex) {
		return null;
	}
	var file = fso.OpenTextFile(filePath,2,-1,0);
	file.Write(content);
	file.Close();
	return true;
}
 
// Returns null if it can't do it, false if there's an error, or a string of the content if successful
function ieLoadFile(filePath)
{
	try {
		var fso = new ActiveXObject("Scripting.FileSystemObject");
		var file = fso.OpenTextFile(filePath,1);
		var content = file.ReadAll();
		file.Close();
	} catch(ex) {
		return null;
	}
	return content;
}
 
function ieCopyFile(dest,source)
{
	ieCreatePath(dest);
	try {
		var fso = new ActiveXObject("Scripting.FileSystemObject");
		fso.GetFile(source).Copy(dest);
	} catch(ex) {
		return false;
	}
	return true;
}
 
// Returns null if it can't do it, false if there's an error, true if it saved OK
function mozillaSaveFile(filePath,content)
{
	if(window.Components) {
		try {
			netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
			var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
			file.initWithPath(filePath);
			if(!file.exists())
				file.create(0,0664);
			var out = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
			out.init(file,0x20|0x02,00004,null);
			out.write(content,content.length);
			out.flush();
			out.close();
			return true;
		} catch(ex) {
			return false;
		}
	}
	return null;
}
 
// Returns null if it can't do it, false if there's an error, or a string of the content if successful
function mozillaLoadFile(filePath)
{
	if(window.Components) {
		try {
			netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
			var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
			file.initWithPath(filePath);
			if(!file.exists())
				return null;
			var inputStream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
			inputStream.init(file,0x01,00004,null);
			var sInputStream = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream);
			sInputStream.init(inputStream);
			var contents = sInputStream.read(sInputStream.available());
			sInputStream.close();
			inputStream.close();
			return contents;
		} catch(ex) {
			return false;
		}
	}
	return null;
}
 
function javaUrlToFilename(url)
{
	var f = "//localhost";
	if(url.indexOf(f) == 0)
		return url.substring(f.length);
	var i = url.indexOf(":");
	return i > 0 ? url.substring(i-1) : url;
}
 
function javaSaveFile(filePath,content)
{
	try {
		if(document.applets["TiddlySaver"])
			return document.applets["TiddlySaver"].saveFile(javaUrlToFilename(filePath),"UTF-8",content);
	} catch(ex) {
	}
	try {
		var s = new java.io.PrintStream(new java.io.FileOutputStream(javaUrlToFilename(filePath)));
		s.print(content);
		s.close();
	} catch(ex) {
		return null;
	}
	return true;
}
 
function javaLoadFile(filePath)
{
	try {
		if(document.applets["TiddlySaver"])
			return String(document.applets["TiddlySaver"].loadFile(javaUrlToFilename(filePath),"UTF-8"));
	} catch(ex) {
	}
	var content = [];
	try {
		var r = new java.io.BufferedReader(new java.io.FileReader(javaUrlToFilename(filePath)));
		var line;
		while((line = r.readLine()) != null)
			content.push(new String(line));
		r.close();
	} catch(ex) {
		return null;
	}
	return content.join("\n");
}
 
//--
//-- Server adaptor base class
//--
 
function AdaptorBase()
{
	this.host = null;
	this.store = null;
	return this;
}
 
AdaptorBase.prototype.close = function()
{
	return true;
};
 
AdaptorBase.prototype.fullHostName = function(host)
{
	if(!host)
		return '';
	host = host.trim();
	if(!host.match(/:\/\//))
		host = 'http://' + host;
	if(host.substr(host.length-1) == '/')
		host = host.substr(0,host.length-1);
	return host;
};
 
AdaptorBase.minHostName = function(host)
{
	return host ? host.replace(/^http:\/\//,'').replace(/\/$/,'') : '';
};
 
AdaptorBase.prototype.setContext = function(context,userParams,callback)
{
	if(!context) context = {};
	context.userParams = userParams;
	if(callback) context.callback = callback;
	context.adaptor = this;
	if(!context.host)
		context.host = this.host;
	context.host = this.fullHostName(context.host);
	if(!context.workspace)
		context.workspace = this.workspace;
	return context;
};
 
// Open the specified host
AdaptorBase.prototype.openHost = function(host,context,userParams,callback)
{
	this.host = host;
	context = this.setContext(context,userParams,callback);
	context.status = true;
	if(callback)
		window.setTimeout(function() {context.callback(context,userParams);},10);
	return true;
};
 
// Open the specified workspace
AdaptorBase.prototype.openWorkspace = function(workspace,context,userParams,callback)
{
	this.workspace = workspace;
	context = this.setContext(context,userParams,callback);
	context.status = true;
	if(callback)
		window.setTimeout(function() {callback(context,userParams);},10);
	return true;
};
 
//--
//-- Server adaptor for talking to static TiddlyWiki files
//--
 
function FileAdaptor()
{
}
 
FileAdaptor.prototype = new AdaptorBase();
 
FileAdaptor.serverType = 'file';
FileAdaptor.serverLabel = 'TiddlyWiki';
 
FileAdaptor.loadTiddlyWikiCallback = function(status,context,responseText,url,xhr)
{
	context.status = status;
	if(!status) {
		context.statusText = "Error reading file";
	} else {
		context.adaptor.store = new TiddlyWiki();
		if(!context.adaptor.store.importTiddlyWiki(responseText)) {
			context.statusText = config.messages.invalidFileError.format([url]);
			context.status = false;
		}
	}
	context.complete(context,context.userParams);
};
 
// Get the list of workspaces on a given server
FileAdaptor.prototype.getWorkspaceList = function(context,userParams,callback)
{
	context = this.setContext(context,userParams,callback);
	context.workspaces = [{title:"(default)"}];
	context.status = true;
	if(callback)
		window.setTimeout(function() {callback(context,userParams);},10);
	return true;
};
 
// Gets the list of tiddlers within a given workspace
FileAdaptor.prototype.getTiddlerList = function(context,userParams,callback,filter)
{
	context = this.setContext(context,userParams,callback);
	if(!context.filter)
		context.filter = filter;
	context.complete = FileAdaptor.getTiddlerListComplete;
	if(this.store) {
		var ret = context.complete(context,context.userParams);
	} else {
		ret = loadRemoteFile(context.host,FileAdaptor.loadTiddlyWikiCallback,context);
		if(typeof ret != "string")
			ret = true;
	}
	return ret;
};
 
FileAdaptor.getTiddlerListComplete = function(context,userParams)
{
	if(context.status) {
		if(context.filter) {
			context.tiddlers = context.adaptor.store.filterTiddlers(context.filter);
		} else {
			context.tiddlers = [];
			context.adaptor.store.forEachTiddler(function(title,tiddler) {context.tiddlers.push(tiddler);});
		}
		for(var i=0; i<context.tiddlers.length; i++) {
			context.tiddlers[i].fields['server.type'] = FileAdaptor.serverType;
			context.tiddlers[i].fields['server.host'] = AdaptorBase.minHostName(context.host);
			context.tiddlers[i].fields['server.page.revision'] = context.tiddlers[i].modified.convertToYYYYMMDDHHMM();
		}
		context.status = true;
	}
	if(context.callback) {
		window.setTimeout(function() {context.callback(context,userParams);},10);
	}
	return true;
};
 
FileAdaptor.prototype.generateTiddlerInfo = function(tiddler)
{
	var info = {};
	info.uri = tiddler.fields['server.host'] + "#" + tiddler.title;
	return info;
};
 
// Retrieve a tiddler from a given workspace on a given server
FileAdaptor.prototype.getTiddler = function(title,context,userParams,callback)
{
	context = this.setContext(context,userParams,callback);
	context.title = title;
	context.complete = FileAdaptor.getTiddlerComplete;
	return context.adaptor.store ?
		context.complete(context,context.userParams) :
		loadRemoteFile(context.host,FileAdaptor.loadTiddlyWikiCallback,context);
};
 
FileAdaptor.getTiddlerComplete = function(context,userParams)
{
	var t = context.adaptor.store.fetchTiddler(context.title);
	if(t) {
		t.fields['server.type'] = FileAdaptor.serverType;
		t.fields['server.host'] = AdaptorBase.minHostName(context.host);
		t.fields['server.page.revision'] = t.modified.convertToYYYYMMDDHHMM();
		context.tiddler = t;
		context.status = true;
	} else { //# tiddler does not exist in document
		context.status = false;
	}
	if(context.allowSynchronous) {
		context.isSynchronous = true;
		context.callback(context,userParams);
	} else {
		window.setTimeout(function() {context.callback(context,userParams);},10);
	}
	return true;
};
 
FileAdaptor.prototype.close = function()
{
	delete this.store;
	this.store = null;
};
 
config.adaptors[FileAdaptor.serverType] = FileAdaptor;
 
config.defaultAdaptor = FileAdaptor.serverType;
 
//--
//-- HTTP request code
//--
 
function ajaxReq(args)
{
	if(window.Components && window.netscape && window.netscape.security && document.location.protocol.indexOf("http") == -1)
		window.netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
	return jQuery.ajax(args);
}
 
//--
//-- TiddlyWiki-specific utility functions
//--
 
// Returns TiddlyWiki version string
function formatVersion(v)
{
	v = v || version;
	return v.major + "." + v.minor + "." + v.revision +
		(v.alpha ? " (alpha " + v.alpha + ")" : "") +
		(v.beta ? " (beta " + v.beta + ")" : "");
}
 
function compareVersions(v1,v2)
{
	var a = ["major","minor","revision"];
	for(var i = 0; i<a.length; i++) {
		var x1 = v1[a[i]] || 0;
		var x2 = v2[a[i]] || 0;
		if(x1<x2)
			return 1;
		if(x1>x2)
			return -1;
	}
	x1 = v1.beta || 9999;
	x2 = v2.beta || 9999;
	if(x1<x2)
		return 1;
	return x1 > x2 ? -1 : 0;
}
 
function createTiddlyButton(parent,text,tooltip,action,className,id,accessKey,attribs)
{
	var btn = document.createElement("a");
	if(action) {
		btn.onclick = action;
		btn.setAttribute("href","javascript:;");
	}
	if(tooltip)
		btn.setAttribute("title",tooltip);
	if(text)
		btn.appendChild(document.createTextNode(text));
	btn.className = className || "button";
	if(id)
		btn.id = id;
	if(attribs) {
		for(var i in attribs) {
			btn.setAttribute(i,attribs[i]);
		}
	}
	if(parent)
		parent.appendChild(btn);
	if(accessKey)
		btn.setAttribute("accessKey",accessKey);
	return btn;
}
 
function createTiddlyLink(place,title,includeText,className,isStatic,linkedFromTiddler,noToggle)
{
	var text = includeText ? title : null;
	var i = getTiddlyLinkInfo(title,className);
	var btn = isStatic ? createExternalLink(place,store.getTiddlerText("SiteUrl",null) + "#" + title) : createTiddlyButton(place,text,i.subTitle,onClickTiddlerLink,i.classes);
	if(isStatic)
		btn.className += ' ' + className;
	btn.setAttribute("refresh","link");
	btn.setAttribute("tiddlyLink",title);
	if(noToggle)
		btn.setAttribute("noToggle","true");
	if(linkedFromTiddler) {
		var fields = linkedFromTiddler.getInheritedFields();
		if(fields)
			btn.setAttribute("tiddlyFields",fields);
	}
	return btn;
}
 
function refreshTiddlyLink(e,title)
{
	var i = getTiddlyLinkInfo(title,e.className);
	e.className = i.classes;
	e.title = i.subTitle;
}
 
function getTiddlyLinkInfo(title,currClasses)
{
	var classes = currClasses ? currClasses.split(" ") : [];
	classes.pushUnique("tiddlyLink");
	var tiddler = store.fetchTiddler(title);
	var subTitle;
	if(tiddler) {
		subTitle = tiddler.getSubtitle();
		classes.pushUnique("tiddlyLinkExisting");
		classes.remove("tiddlyLinkNonExisting");
		classes.remove("shadow");
	} else {
		classes.remove("tiddlyLinkExisting");
		classes.pushUnique("tiddlyLinkNonExisting");
		if(store.isShadowTiddler(title)) {
			subTitle = config.messages.shadowedTiddlerToolTip.format([title]);
			classes.pushUnique("shadow");
		} else {
			subTitle = config.messages.undefinedTiddlerToolTip.format([title]);
			classes.remove("shadow");
		}
	}
	if(typeof config.annotations[title]=="string")
		subTitle = config.annotations[title];
	return {classes: classes.join(" "),subTitle: subTitle};
}
 
function createExternalLink(place,url,label)
{
	var link = document.createElement("a");
	link.className = "externalLink";
	link.href = url;
	link.title = config.messages.externalLinkTooltip.format([url]);
	if(config.options.chkOpenInNewWindow)
		link.target = "_blank";
	place.appendChild(link);
	if(label)
		createTiddlyText(link, label);
	return link;
}
 
// Event handler for clicking on a tiddly link
function onClickTiddlerLink(ev)
{
	var e = ev || window.event;
	var target = resolveTarget(e);
	var link = target;
	var title = null;
	var fields = null;
	var noToggle = null;
	do {
		title = link.getAttribute("tiddlyLink");
		fields = link.getAttribute("tiddlyFields");
		noToggle = link.getAttribute("noToggle");
		link = link.parentNode;
	} while(title == null && link != null);
	if(!store.isShadowTiddler(title)) {
		var f = fields ? fields.decodeHashMap() : {};
		fields = String.encodeHashMap(merge(f,config.defaultCustomFields,true));
	}
	if(title) {
		var toggling = e.metaKey || e.ctrlKey;
		if(config.options.chkToggleLinks)
			toggling = !toggling;
		if(noToggle)
			toggling = false;
		if(store.getTiddler(title))
			fields = null;
		story.displayTiddler(target,title,null,true,null,fields,toggling);
	}
	clearMessage();
	return false;
}
 
// Create a button for a tag with a popup listing all the tiddlers that it tags
function createTagButton(place,tag,excludeTiddler,title,tooltip)
{
	var btn = createTiddlyButton(place,title||tag,(tooltip||config.views.wikified.tag.tooltip).format([tag]),onClickTag);
	btn.setAttribute("tag",tag);
	if(excludeTiddler)
		btn.setAttribute("tiddler",excludeTiddler);
	return btn;
}
 
// Event handler for clicking on a tiddler tag
function onClickTag(ev)
{
	var e = ev || window.event;
	var popup = Popup.create(this);
	addClass(popup,"taggedTiddlerList");
	var tag = this.getAttribute("tag");
	var title = this.getAttribute("tiddler");
	if(popup && tag) {
		var tagged = store.getTaggedTiddlers(tag);
		var titles = [];
		var li,r;
		for(r=0;r<tagged.length;r++) {
			if(tagged[r].title != title)
				titles.push(tagged[r].title);
		}
		var lingo = config.views.wikified.tag;
		if(titles.length > 0) {
			var openAll = createTiddlyButton(createTiddlyElement(popup,"li"),lingo.openAllText.format([tag]),lingo.openAllTooltip,onClickTagOpenAll);
			openAll.setAttribute("tag",tag);
			createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");
			for(r=0; r<titles.length; r++) {
				createTiddlyLink(createTiddlyElement(popup,"li"),titles[r],true);
			}
		} else {
			createTiddlyElement(popup,"li",null,"disabled",lingo.popupNone.format([tag]));
		}
		createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");
		var h = createTiddlyLink(createTiddlyElement(popup,"li"),tag,false);
		createTiddlyText(h,lingo.openTag.format([tag]));
	}
	Popup.show();
	e.cancelBubble = true;
	if(e.stopPropagation) e.stopPropagation();
	return false;
}
 
// Event handler for 'open all' on a tiddler popup
function onClickTagOpenAll(ev)
{
	var tiddlers = store.getTaggedTiddlers(this.getAttribute("tag"));
	story.displayTiddlers(this,tiddlers);
	return false;
}
 
function onClickError(ev)
{
	var e = ev || window.event;
	var popup = Popup.create(this);
	var lines = this.getAttribute("errorText").split("\n");
	for(var t=0; t<lines.length; t++)
		createTiddlyElement(popup,"li",null,null,lines[t]);
	Popup.show();
	e.cancelBubble = true;
	if(e.stopPropagation) e.stopPropagation();
	return false;
}
 
function createTiddlyDropDown(place,onchange,options,defaultValue)
{
	var sel = createTiddlyElement(place,"select");
	sel.onchange = onchange;
	for(var t=0; t<options.length; t++) {
		var e = createTiddlyElement(sel,"option",null,null,options[t].caption);
		e.value = options[t].name;
		if(options[t].name == defaultValue)
			e.selected = true;
	}
	return sel;
}
 
function createTiddlyPopup(place,caption,tooltip,tiddler)
{
	if(tiddler.text) {
		createTiddlyLink(place,caption,true);
		var btn = createTiddlyButton(place,glyph("downArrow"),tooltip,onClickTiddlyPopup,"tiddlerPopupButton");
		btn.tiddler = tiddler;
	} else {
		createTiddlyText(place,caption);
	}
}
 
function onClickTiddlyPopup(ev)
{
	var e = ev || window.event;
	var tiddler = this.tiddler;
	if(tiddler.text) {
		var popup = Popup.create(this,"div","popupTiddler");
		wikify(tiddler.text,popup,null,tiddler);
		Popup.show();
	}
	if(e) e.cancelBubble = true;
	if(e && e.stopPropagation) e.stopPropagation();
	return false;
}
 
function createTiddlyError(place,title,text)
{
	var btn = createTiddlyButton(place,title,null,onClickError,"errorButton");
	if(text) btn.setAttribute("errorText",text);
}
 
function merge(dst,src,preserveExisting)
{
	for(var i in src) {
		if(!preserveExisting || dst[i] === undefined)
			dst[i] = src[i];
	}
	return dst;
}
 
// Returns a string containing the description of an exception, optionally prepended by a message
function exceptionText(e,message)
{
	var s = e.description || e.toString();
	return message ? "%0:\n%1".format([message,s]) : s;
}
 
// Displays an alert of an exception description with optional message
function showException(e,message)
{
	alert(exceptionText(e,message));
}
 
function alertAndThrow(m)
{
	alert(m);
	throw(m);
}
 
function glyph(name)
{
	var g = config.glyphs;
	var b = g.currBrowser;
	if(b == null) {
		b = 0;
		while(!g.browsers[b]() && b < g.browsers.length-1)
			b++;
		g.currBrowser = b;
	}
	if(!g.codes[name])
		return "";
	return g.codes[name][b];
}
 
if(!window.console) {
	console = {tiddlywiki:true,log:function(message) {displayMessage(message);}};
}
 
//-
//- Animation engine
//-
 
function Animator()
{
	this.running = 0; // Incremented at start of each animation, decremented afterwards. If zero, the interval timer is disabled
	this.timerID = 0; // ID of the timer used for animating
	this.animations = []; // List of animations in progress
	return this;
}
 
// Start animation engine
Animator.prototype.startAnimating = function() //# Variable number of arguments
{
	for(var t=0; t<arguments.length; t++)
		this.animations.push(arguments[t]);
	if(this.running == 0) {
		var me = this;
		this.timerID = window.setInterval(function() {me.doAnimate(me);},10);
	}
	this.running += arguments.length;
};
 
// Perform an animation engine tick, calling each of the known animation modules
Animator.prototype.doAnimate = function(me)
{
	var a = 0;
	while(a < me.animations.length) {
		var animation = me.animations[a];
		if(animation.tick()) {
			a++;
		} else {
			me.animations.splice(a,1);
			if(--me.running == 0)
				window.clearInterval(me.timerID);
		}
	}
};
 
Animator.slowInSlowOut = function(progress)
{
	return(1-((Math.cos(progress * Math.PI)+1)/2));
};
 
//--
//-- Morpher animation
//--
 
// Animate a set of properties of an element
function Morpher(element,duration,properties,callback)
{
	this.element = element;
	this.duration = duration;
	this.properties = properties;
	this.startTime = new Date();
	this.endTime = Number(this.startTime) + duration;
	this.callback = callback;
	this.tick();
	return this;
}
 
Morpher.prototype.assignStyle = function(element,style,value)
{
	switch(style) {
	case "-tw-vertScroll":
		window.scrollTo(findScrollX(),value);
		break;
	case "-tw-horizScroll":
		window.scrollTo(value,findScrollY());
		break;
	default:
		element.style[style] = value;
		break;
	}
};
 
Morpher.prototype.stop = function()
{
	for(var t=0; t<this.properties.length; t++) {
		var p = this.properties[t];
		if(p.atEnd !== undefined) {
			this.assignStyle(this.element,p.style,p.atEnd);
		}
	}
	if(this.callback)
		this.callback(this.element,this.properties);
};
 
Morpher.prototype.tick = function()
{
	var currTime = Number(new Date());
	var progress = Animator.slowInSlowOut(Math.min(1,(currTime-this.startTime)/this.duration));
	for(var t=0; t<this.properties.length; t++) {
		var p = this.properties[t];
		if(p.start !== undefined && p.end !== undefined) {
			var template = p.template || "%0";
			switch(p.format) {
			case undefined:
			case "style":
				var v = p.start + (p.end-p.start) * progress;
				this.assignStyle(this.element,p.style,template.format([v]));
				break;
			case "color":
				break;
			}
		}
	}
	if(currTime >= this.endTime) {
		this.stop();
		return false;
	}
	return true;
};
 
//--
//-- Zoomer animation
//--
 
function Zoomer(text,startElement,targetElement,unused)
{
	var e = createTiddlyElement(document.body,"div",null,"zoomer");
	createTiddlyElement(e,"div",null,null,text);
	var winWidth = findWindowWidth();
	var winHeight = findWindowHeight();
	var p = [
		{style: 'left', start: findPosX(startElement), end: findPosX(targetElement), template: '%0px'},
		{style: 'top', start: findPosY(startElement), end: findPosY(targetElement), template: '%0px'},
		{style: 'width', start: Math.min(startElement.scrollWidth,winWidth), end: Math.min(targetElement.scrollWidth,winWidth), template: '%0px', atEnd: 'auto'},
		{style: 'height', start: Math.min(startElement.scrollHeight,winHeight), end: Math.min(targetElement.scrollHeight,winHeight), template: '%0px', atEnd: 'auto'},
		{style: 'fontSize', start: 8, end: 24, template: '%0pt'}
	];
	var c = function(element,properties) {removeNode(element);};
	return new Morpher(e,config.animDuration,p,c);
}
 
//--
//-- Scroller animation
//--
 
function Scroller(targetElement)
{
	var p = [{style: '-tw-vertScroll', start: findScrollY(), end: ensureVisible(targetElement)}];
	return new Morpher(targetElement,config.animDuration,p);
}
 
//--
//-- Slider animation
//--
 
// deleteMode - "none", "all" [delete target element and it's children], [only] "children" [but not the target element]
function Slider(element,opening,unused,deleteMode)
{
	element.style.overflow = 'hidden';
	if(opening)
		element.style.height = '0px'; // Resolves a Firefox flashing bug
	element.style.display = 'block';
	var left = findPosX(element);
	var width = element.scrollWidth;
	var height = element.scrollHeight;
	var winWidth = findWindowWidth();
	var p = [];
	var c = null;
	if(opening) {
		p.push({style: 'height', start: 0, end: height, template: '%0px', atEnd: 'auto'});
		p.push({style: 'opacity', start: 0, end: 1, template: '%0'});
		p.push({style: 'filter', start: 0, end: 100, template: 'alpha(opacity:%0)'});
	} else {
		p.push({style: 'height', start: height, end: 0, template: '%0px'});
		p.push({style: 'display', atEnd: 'none'});
		p.push({style: 'opacity', start: 1, end: 0, template: '%0'});
		p.push({style: 'filter', start: 100, end: 0, template: 'alpha(opacity:%0)'});
		switch(deleteMode) {
		case "all":
			c = function(element,properties) {removeNode(element);};
			break;
		case "children":
			c = function(element,properties) {removeChildren(element);};
			break;
		}
	}
	return new Morpher(element,config.animDuration,p,c);
}
 
//--
//-- Popup menu
//--
 
var Popup = {
	stack: [] // Array of objects with members root: and popup:
	};
 
Popup.create = function(root,elem,className)
{
	var stackPosition = this.find(root,"popup");
	Popup.remove(stackPosition+1);
	var popup = createTiddlyElement(document.body,elem || "ol","popup",className || "popup");
	popup.stackPosition = stackPosition;
	Popup.stack.push({root: root, popup: popup});
	return popup;
};
 
Popup.onDocumentClick = function(ev)
{
	var e = ev || window.event;
	if(e.eventPhase == undefined)
		Popup.remove();
	else if(e.eventPhase == Event.BUBBLING_PHASE || e.eventPhase == Event.AT_TARGET)
		Popup.remove();
	return true;
};
 
Popup.show = function(valign,halign,offset)
{
	var curr = Popup.stack[Popup.stack.length-1];
	this.place(curr.root,curr.popup,valign,halign,offset);
	addClass(curr.root,"highlight");
	if(config.options.chkAnimate && anim && typeof Scroller == "function")
		anim.startAnimating(new Scroller(curr.popup));
	else
		window.scrollTo(0,ensureVisible(curr.popup));
};
 
Popup.place = function(root,popup,valign,halign,offset)
{
	if(!offset)
		var offset = {x:0,y:0};
	if(popup.stackPosition >= 0 && !valign && !halign) {
		offset.x = offset.x + root.offsetWidth;
	} else {
		offset.x = (halign == "right") ? offset.x + root.offsetWidth : offset.x;
		offset.y = (valign == "top") ? offset.y : offset.y + root.offsetHeight;
	}
	var rootLeft = findPosX(root);
	var rootTop = findPosY(root);
	var popupLeft = rootLeft + offset.x;
	var popupTop = rootTop + offset.y;
	var winWidth = findWindowWidth();
	if(popup.offsetWidth > winWidth*0.75)
		popup.style.width = winWidth*0.75 + "px";
	var popupWidth = popup.offsetWidth;
	var scrollWidth = winWidth - document.body.offsetWidth;
	if(popupLeft + popupWidth > winWidth - scrollWidth - 1) {
		if(halign == "right")
			popupLeft = popupLeft - root.offsetWidth - popupWidth;
		else
			popupLeft = winWidth - popupWidth - scrollWidth - 1;
	}
	popup.style.left = popupLeft + "px";
	popup.style.top = popupTop + "px";
	popup.style.display = "block";
};
 
Popup.find = function(e)
{
	var pos = -1;
	for (var t=this.stack.length-1; t>=0; t--) {
		if(isDescendant(e,this.stack[t].popup))
			pos = t;
	}
	return pos;
};
 
Popup.remove = function(pos)
{
	if(!pos) var pos = 0;
	if(Popup.stack.length > pos) {
		Popup.removeFrom(pos);
	}
};
 
Popup.removeFrom = function(from)
{
	for(var t=Popup.stack.length-1; t>=from; t--) {
		var p = Popup.stack[t];
		removeClass(p.root,"highlight");
		removeNode(p.popup);
	}
	Popup.stack = Popup.stack.slice(0,from);
};
 
//--
//-- Wizard support
//--
 
function Wizard(elem)
{
	if(elem) {
		this.formElem = findRelated(elem,"wizard","className");
		this.bodyElem = findRelated(this.formElem.firstChild,"wizardBody","className","nextSibling");
		this.footElem = findRelated(this.formElem.firstChild,"wizardFooter","className","nextSibling");
	} else {
		this.formElem = null;
		this.bodyElem = null;
		this.footElem = null;
	}
}
 
Wizard.prototype.setValue = function(name,value)
{
	if(this.formElem)
		this.formElem[name] = value;
};
 
Wizard.prototype.getValue = function(name)
{
	return this.formElem ? this.formElem[name] : null;
};
 
Wizard.prototype.createWizard = function(place,title)
{
	this.formElem = createTiddlyElement(place,"form",null,"wizard");
	createTiddlyElement(this.formElem,"h1",null,null,title);
	this.bodyElem = createTiddlyElement(this.formElem,"div",null,"wizardBody");
	this.footElem = createTiddlyElement(this.formElem,"div",null,"wizardFooter");
};
 
Wizard.prototype.clear = function()
{
	removeChildren(this.bodyElem);
};
 
Wizard.prototype.setButtons = function(buttonInfo,status)
{
	removeChildren(this.footElem);
	for(var t=0; t<buttonInfo.length; t++) {
		createTiddlyButton(this.footElem,buttonInfo[t].caption,buttonInfo[t].tooltip,buttonInfo[t].onClick);
		insertSpacer(this.footElem);
		}
	if(typeof status == "string") {
		createTiddlyElement(this.footElem,"span",null,"status",status);
	}
};
 
Wizard.prototype.addStep = function(stepTitle,html)
{
	removeChildren(this.bodyElem);
	var w = createTiddlyElement(this.bodyElem,"div");
	createTiddlyElement(w,"h2",null,null,stepTitle);
	var step = createTiddlyElement(w,"div",null,"wizardStep");
	step.innerHTML = html;
	applyHtmlMacros(step,tiddler);
};
 
Wizard.prototype.getElement = function(name)
{
	return this.formElem.elements[name];
};
 
//--
//-- ListView gadget
//--
 
var ListView = {};
 
// Create a listview
ListView.create = function(place,listObject,listTemplate,callback,className)
{
	var table = createTiddlyElement(place,"table",null,className || "listView twtable");
	var thead = createTiddlyElement(table,"thead");
	var r = createTiddlyElement(thead,"tr");
	for(var t=0; t<listTemplate.columns.length; t++) {
		var columnTemplate = listTemplate.columns[t];
		var c = createTiddlyElement(r,"th");
		var colType = ListView.columnTypes[columnTemplate.type];
		if(colType && colType.createHeader) {
			colType.createHeader(c,columnTemplate,t);
			if(columnTemplate.className)
				addClass(c,columnTemplate.className);
		}
	}
	var tbody = createTiddlyElement(table,"tbody");
	for(var rc=0; rc<listObject.length; rc++) {
		var rowObject = listObject[rc];
		r = createTiddlyElement(tbody,"tr");
		for(c=0; c<listTemplate.rowClasses.length; c++) {
			if(rowObject[listTemplate.rowClasses[c].field])
				addClass(r,listTemplate.rowClasses[c].className);
		}
		rowObject.rowElement = r;
		rowObject.colElements = {};
		for(var cc=0; cc<listTemplate.columns.length; cc++) {
			c = createTiddlyElement(r,"td");
			columnTemplate = listTemplate.columns[cc];
			var field = columnTemplate.field;
			colType = ListView.columnTypes[columnTemplate.type];
			if(colType && colType.createItem) {
				colType.createItem(c,rowObject,field,columnTemplate,cc,rc);
				if(columnTemplate.className)
					addClass(c,columnTemplate.className);
			}
			rowObject.colElements[field] = c;
		}
	}
	if(callback && listTemplate.actions)
		createTiddlyDropDown(place,ListView.getCommandHandler(callback),listTemplate.actions);
	if(callback && listTemplate.buttons) {
		for(t=0; t<listTemplate.buttons.length; t++) {
			var a = listTemplate.buttons[t];
			if(a && a.name != "")
				createTiddlyButton(place,a.caption,null,ListView.getCommandHandler(callback,a.name,a.allowEmptySelection));
		}
	}
	return table;
};
 
ListView.getCommandHandler = function(callback,name,allowEmptySelection)
{
	return function(e) {
		var view = findRelated(this,"TABLE",null,"previousSibling");
		var tiddlers = [];
		ListView.forEachSelector(view,function(e,rowName) {
					if(e.checked)
						tiddlers.push(rowName);
					});
		if(tiddlers.length == 0 && !allowEmptySelection) {
			alert(config.messages.nothingSelected);
		} else {
			if(this.nodeName.toLowerCase() == "select") {
				callback(view,this.value,tiddlers);
				this.selectedIndex = 0;
			} else {
				callback(view,name,tiddlers);
			}
		}
	};
};
 
// Invoke a callback for each selector checkbox in the listview
ListView.forEachSelector = function(view,callback)
{
	var checkboxes = view.getElementsByTagName("input");
	var hadOne = false;
	for(var t=0; t<checkboxes.length; t++) {
		var cb = checkboxes[t];
		if(cb.getAttribute("type") == "checkbox") {
			var rn = cb.getAttribute("rowName");
			if(rn) {
				callback(cb,rn);
				hadOne = true;
			}
		}
	}
	return hadOne;
};
 
ListView.getSelectedRows = function(view)
{
	var rowNames = [];
	ListView.forEachSelector(view,function(e,rowName) {
				if(e.checked)
					rowNames.push(rowName);
				});
	return rowNames;
};
 
ListView.columnTypes = {};
 
ListView.columnTypes.String = {
	createHeader: function(place,columnTemplate,col)
		{
			createTiddlyText(place,columnTemplate.title);
		},
	createItem: function(place,listObject,field,columnTemplate,col,row)
		{
			var v = listObject[field];
			if(v != undefined)
				createTiddlyText(place,v);
		}
};
 
ListView.columnTypes.WikiText = {
	createHeader: ListView.columnTypes.String.createHeader,
	createItem: function(place,listObject,field,columnTemplate,col,row)
		{
			var v = listObject[field];
			if(v != undefined)
				wikify(v,place,null,null);
		}
};
 
ListView.columnTypes.Tiddler = {
	createHeader: ListView.columnTypes.String.createHeader,
	createItem: function(place,listObject,field,columnTemplate,col,row)
		{
			var v = listObject[field];
			if(v != undefined && v.title)
				createTiddlyPopup(place,v.title,config.messages.listView.tiddlerTooltip,v);
		}
};
 
ListView.columnTypes.Size = {
	createHeader: ListView.columnTypes.String.createHeader,
	createItem: function(place,listObject,field,columnTemplate,col,row)
		{
			var v = listObject[field];
			if(v != undefined) {
				var t = 0;
				while(t<config.messages.sizeTemplates.length-1 && v<config.messages.sizeTemplates[t].unit)
					t++;
				createTiddlyText(place,config.messages.sizeTemplates[t].template.format([Math.round(v/config.messages.sizeTemplates[t].unit)]));
			}
		}
};
 
ListView.columnTypes.Link = {
	createHeader: ListView.columnTypes.String.createHeader,
	createItem: function(place,listObject,field,columnTemplate,col,row)
		{
			var v = listObject[field];
			var c = columnTemplate.text;
			if(v != undefined)
				createExternalLink(place,v,c || v);
		}
};
 
ListView.columnTypes.Date = {
	createHeader: ListView.columnTypes.String.createHeader,
	createItem: function(place,listObject,field,columnTemplate,col,row)
		{
			var v = listObject[field];
			if(v != undefined)
				createTiddlyText(place,v.formatString(columnTemplate.dateFormat));
		}
};
 
ListView.columnTypes.StringList = {
	createHeader: ListView.columnTypes.String.createHeader,
	createItem: function(place,listObject,field,columnTemplate,col,row)
		{
			var v = listObject[field];
			if(v != undefined) {
				for(var t=0; t<v.length; t++) {
					createTiddlyText(place,v[t]);
					createTiddlyElement(place,"br");
				}
			}
		}
};
 
ListView.columnTypes.Selector = {
	createHeader: function(place,columnTemplate,col)
		{
			createTiddlyCheckbox(place,null,false,this.onHeaderChange);
		},
	createItem: function(place,listObject,field,columnTemplate,col,row)
		{
			var e = createTiddlyCheckbox(place,null,listObject[field],null);
			e.setAttribute("rowName",listObject[columnTemplate.rowName]);
		},
	onHeaderChange: function(e)
		{
			var state = this.checked;
			var view = findRelated(this,"TABLE");
			if(!view)
				return;
			ListView.forEachSelector(view,function(e,rowName) {
								e.checked = state;
							});
		}
};
 
ListView.columnTypes.Tags = {
	createHeader: ListView.columnTypes.String.createHeader,
	createItem: function(place,listObject,field,columnTemplate,col,row)
		{
			var tags = listObject[field];
			createTiddlyText(place,String.encodeTiddlyLinkList(tags));
		}
};
 
ListView.columnTypes.Boolean = {
	createHeader: ListView.columnTypes.String.createHeader,
	createItem: function(place,listObject,field,columnTemplate,col,row)
		{
			if(listObject[field] == true)
				createTiddlyText(place,columnTemplate.trueText);
			if(listObject[field] == false)
				createTiddlyText(place,columnTemplate.falseText);
		}
};
 
ListView.columnTypes.TagCheckbox = {
	createHeader: ListView.columnTypes.String.createHeader,
	createItem: function(place,listObject,field,columnTemplate,col,row)
		{
			var e = createTiddlyCheckbox(place,null,listObject[field],this.onChange);
			e.setAttribute("tiddler",listObject.title);
			e.setAttribute("tag",columnTemplate.tag);
		},
	onChange : function(e)
		{
			var tag = this.getAttribute("tag");
			var tiddler = this.getAttribute("tiddler");
			store.setTiddlerTag(tiddler,this.checked,tag);
		}
};
 
ListView.columnTypes.TiddlerLink = {
	createHeader: ListView.columnTypes.String.createHeader,
	createItem: function(place,listObject,field,columnTemplate,col,row)
		{
			var v = listObject[field];
			if(v != undefined) {
				var link = createTiddlyLink(place,listObject[columnTemplate.tiddlerLink],false,null);
				createTiddlyText(link,listObject[field]);
			}
		}
};
 
//--
//-- Augmented methods for the JavaScript Number(), Array(), String() and Date() objects
//--
 
// Clamp a number to a range
Number.prototype.clamp = function(min,max)
{
	var c = this;
	if(c < min)
		c = min;
	if(c > max)
		c = max;
	return Number(c);
};
 
// Add indexOf function if browser does not support it
if(!Array.indexOf) {
Array.prototype.indexOf = function(item,from)
{
	if(!from)
		from = 0;
	for(var i=from; i<this.length; i++) {
		if(this[i] === item)
			return i;
	}
	return -1;
};}
 
// Find an entry in a given field of the members of an array
Array.prototype.findByField = function(field,value)
{
	for(var t=0; t<this.length; t++) {
		if(this[t][field] === value)
			return t;
	}
	return null;
};
 
// Return whether an entry exists in an array
Array.prototype.contains = function(item)
{
	return this.indexOf(item) != -1;
};
 
// Adds, removes or toggles a particular value within an array
//  value - value to add
//  mode - +1 to add value, -1 to remove value, 0 to toggle it
Array.prototype.setItem = function(value,mode)
{
	var p = this.indexOf(value);
	if(mode == 0)
		mode = (p == -1) ? +1 : -1;
	if(mode == +1) {
		if(p == -1)
			this.push(value);
	} else if(mode == -1) {
		if(p != -1)
			this.splice(p,1);
	}
};
 
// Return whether one of a list of values exists in an array
Array.prototype.containsAny = function(items)
{
	for(var i=0; i<items.length; i++) {
		if(this.indexOf(items[i]) != -1)
			return true;
	}
	return false;
};
 
// Return whether all of a list of values exists in an array
Array.prototype.containsAll = function(items)
{
	for(var i = 0; i<items.length; i++) {
		if(this.indexOf(items[i]) == -1)
			return false;
	}
	return true;
};
 
// Push a new value into an array only if it is not already present in the array. If the optional unique parameter is false, it reverts to a normal push
Array.prototype.pushUnique = function(item,unique)
{
	if(unique === false) {
		this.push(item);
	} else {
		if(this.indexOf(item) == -1)
			this.push(item);
	}
};
 
Array.prototype.remove = function(item)
{
	var p = this.indexOf(item);
	if(p != -1)
		this.splice(p,1);
};
 
if(!Array.prototype.map) {
Array.prototype.map = function(fn,thisObj)
{
	var scope = thisObj || window;
	var a = [];
	for(var i=0, j=this.length; i < j; ++i) {
		a.push(fn.call(scope,this[i],i,this));
	}
	return a;
};}
 
// Get characters from the right end of a string
String.prototype.right = function(n)
{
	return n < this.length ? this.slice(this.length-n) : this;
};
 
// Trim whitespace from both ends of a string
String.prototype.trim = function()
{
	return this.replace(/^\s*|\s*$/g,"");
};
 
// Convert a string from a CSS style property name to a JavaScript style name ("background-color" -> "backgroundColor")
String.prototype.unDash = function()
{
	var s = this.split("-");
	if(s.length > 1) {
		for(var t=1; t<s.length; t++)
			s[t] = s[t].substr(0,1).toUpperCase() + s[t].substr(1);
	}
	return s.join("");
};
 
// Substitute substrings from an array into a format string that includes '%1'-type specifiers
String.prototype.format = function(substrings)
{
	var subRegExp = /(?:%(\d+))/mg;
	var currPos = 0;
	var r = [];
	do {
		var match = subRegExp.exec(this);
		if(match && match[1]) {
			if(match.index > currPos)
				r.push(this.substring(currPos,match.index));
			r.push(substrings[parseInt(match[1])]);
			currPos = subRegExp.lastIndex;
		}
	} while(match);
	if(currPos < this.length)
		r.push(this.substring(currPos,this.length));
	return r.join("");
};
 
// Escape any special RegExp characters with that character preceded by a backslash
String.prototype.escapeRegExp = function()
{
	var s = "\\^$*+?()=!|,{}[].";
	var c = this;
	for(var t=0; t<s.length; t++)
		c = c.replace(new RegExp("\\" + s.substr(t,1),"g"),"\\" + s.substr(t,1));
	return c;
};
 
// Convert "\" to "\s", newlines to "\n" (and remove carriage returns)
String.prototype.escapeLineBreaks = function()
{
	return this.replace(/\\/mg,"\\s").replace(/\n/mg,"\\n").replace(/\r/mg,"");
};
 
// Convert "\n" to newlines, "\b" to " ", "\s" to "\" (and remove carriage returns)
String.prototype.unescapeLineBreaks = function()
{
	return this.replace(/\\n/mg,"\n").replace(/\\b/mg," ").replace(/\\s/mg,"\\").replace(/\r/mg,"");
};
 
// Convert & to "&amp;", < to "&lt;", > to "&gt;" and " to "&quot;"
String.prototype.htmlEncode = function()
{
	return this.replace(/&/mg,"&amp;").replace(/</mg,"&lt;").replace(/>/mg,"&gt;").replace(/\"/mg,"&quot;");
};
 
// Convert "&amp;" to &, "&lt;" to <, "&gt;" to > and "&quot;" to "
String.prototype.htmlDecode = function()
{
	return this.replace(/&lt;/mg,"<").replace(/&gt;/mg,">").replace(/&quot;/mg,"\"").replace(/&amp;/mg,"&");
};
 
// Parse a space-separated string of name:value parameters
// The result is an array of objects:
//   result[0] = object with a member for each parameter name, value of that member being an array of values
//   result[1..n] = one object for each parameter, with 'name' and 'value' members
String.prototype.parseParams = function(defaultName,defaultValue,allowEval,noNames,cascadeDefaults)
{
	var parseToken = function(match,p) {
		var n;
		if(match[p]) // Double quoted
			n = match[p];
		else if(match[p+1]) // Single quoted
			n = match[p+1];
		else if(match[p+2]) // Double-square-bracket quoted
			n = match[p+2];
		else if(match[p+3]) // Double-brace quoted
			try {
				n = match[p+3];
				if(allowEval)
					n = window.eval(n);
			} catch(ex) {
				throw "Unable to evaluate {{" + match[p+3] + "}}: " + exceptionText(ex);
			}
		else if(match[p+4]) // Unquoted
			n = match[p+4];
		else if(match[p+5]) // empty quote
			n = "";
		return n;
	};
	var r = [{}];
	var dblQuote = "(?:\"((?:(?:\\\\\")|[^\"])+)\")";
	var sngQuote = "(?:'((?:(?:\\\\\')|[^'])+)')";
	var dblSquare = "(?:\\[\\[((?:\\s|\\S)*?)\\]\\])";
	var dblBrace = "(?:\\{\\{((?:\\s|\\S)*?)\\}\\})";
	var unQuoted = noNames ? "([^\"'\\s]\\S*)" : "([^\"':\\s][^\\s:]*)";
	var emptyQuote = "((?:\"\")|(?:''))";
	var skipSpace = "(?:\\s*)";
	var token = "(?:" + dblQuote + "|" + sngQuote + "|" + dblSquare + "|" + dblBrace + "|" + unQuoted + "|" + emptyQuote + ")";
	var re = noNames ? new RegExp(token,"mg") : new RegExp(skipSpace + token + skipSpace + "(?:(\\:)" + skipSpace + token + ")?","mg");
	var params = [];
	do {
		var match = re.exec(this);
		if(match) {
			var n = parseToken(match,1);
			if(noNames) {
				r.push({name:"",value:n});
			} else {
				var v = parseToken(match,8);
				if(v == null && defaultName) {
					v = n;
					n = defaultName;
				} else if(v == null && defaultValue) {
					v = defaultValue;
				}
				r.push({name:n,value:v});
				if(cascadeDefaults) {
					defaultName = n;
					defaultValue = v;
				}
			}
		}
	} while(match);
	// Summarise parameters into first element
	for(var t=1; t<r.length; t++) {
		if(r[0][r[t].name])
			r[0][r[t].name].push(r[t].value);
		else
			r[0][r[t].name] = [r[t].value];
	}
	return r;
};
 
// Process a string list of macro parameters into an array. Parameters can be quoted with "", '',
// [[]], {{ }} or left unquoted (and therefore space-separated). Double-braces {{}} results in
// an *evaluated* parameter: e.g. {{config.options.txtUserName}} results in the current user's name.
String.prototype.readMacroParams = function()
{
	var p = this.parseParams("list",null,true,true);
	var n = [];
	for(var t=1; t<p.length; t++)
		n.push(p[t].value);
	return n;
};
 
// Process a string list of unique tiddler names into an array. Tiddler names that have spaces in them must be [[bracketed]]
String.prototype.readBracketedList = function(unique)
{
	var p = this.parseParams("list",null,false,true);
	var n = [];
	for(var t=1; t<p.length; t++) {
		if(p[t].value)
			n.pushUnique(p[t].value,unique);
	}
	return n;
};
 
// Returns array with start and end index of chunk between given start and end marker, or undefined.
String.prototype.getChunkRange = function(start,end)
{
	var s = this.indexOf(start);
	if(s != -1) {
		s += start.length;
		var e = this.indexOf(end,s);
		if(e != -1)
			return [s,e];
	}
};
 
// Replace a chunk of a string given start and end markers
String.prototype.replaceChunk = function(start,end,sub)
{
	var r = this.getChunkRange(start,end);
	return r ? this.substring(0,r[0]) + sub + this.substring(r[1]) : this;
};
 
// Returns a chunk of a string between start and end markers, or undefined
String.prototype.getChunk = function(start,end)
{
	var r = this.getChunkRange(start,end);
	if(r)
		return this.substring(r[0],r[1]);
};
 
 
// Static method to bracket a string with double square brackets if it contains a space
String.encodeTiddlyLink = function(title)
{
	return title.indexOf(" ") == -1 ? title : "[[" + title + "]]";
};
 
// Static method to encodeTiddlyLink for every item in an array and join them with spaces
String.encodeTiddlyLinkList = function(list)
{
	if(list) {
		var results = [];
		for(var t=0; t<list.length; t++)
			results.push(String.encodeTiddlyLink(list[t]));
		return results.join(" ");
	} else {
		return "";
	}
};
 
// Convert a string as a sequence of name:"value" pairs into a hashmap
String.prototype.decodeHashMap = function()
{
	var fields = this.parseParams("anon","",false);
	var r = {};
	for(var t=1; t<fields.length; t++)
		r[fields[t].name] = fields[t].value;
	return r;
};
 
// Static method to encode a hashmap into a name:"value"... string
String.encodeHashMap = function(hashmap)
{
	var r = [];
	for(var t in hashmap)
		r.push(t + ':"' + hashmap[t] + '"');
	return r.join(" ");
};
 
// Static method to left-pad a string with 0s to a certain width
String.zeroPad = function(n,d)
{
	var s = n.toString();
	if(s.length < d)
		s = "000000000000000000000000000".substr(0,d-s.length) + s;
	return s;
};
 
String.prototype.startsWith = function(prefix)
{
	return !prefix || this.substring(0,prefix.length) == prefix;
};
 
// Returns the first value of the given named parameter.
function getParam(params,name,defaultValue)
{
	if(!params)
		return defaultValue;
	var p = params[0][name];
	return p ? p[0] : defaultValue;
}
 
// Returns the first value of the given boolean named parameter.
function getFlag(params,name,defaultValue)
{
	return !!getParam(params,name,defaultValue);
}
 
// Substitute date components into a string
Date.prototype.formatString = function(template)
{
	var t = template.replace(/0hh12/g,String.zeroPad(this.getHours12(),2));
	t = t.replace(/hh12/g,this.getHours12());
	t = t.replace(/0hh/g,String.zeroPad(this.getHours(),2));
	t = t.replace(/hh/g,this.getHours());
	t = t.replace(/mmm/g,config.messages.dates.shortMonths[this.getMonth()]);
	t = t.replace(/0mm/g,String.zeroPad(this.getMinutes(),2));
	t = t.replace(/mm/g,this.getMinutes());
	t = t.replace(/0ss/g,String.zeroPad(this.getSeconds(),2));
	t = t.replace(/ss/g,this.getSeconds());
	t = t.replace(/[ap]m/g,this.getAmPm().toLowerCase());
	t = t.replace(/[AP]M/g,this.getAmPm().toUpperCase());
	t = t.replace(/wYYYY/g,this.getYearForWeekNo());
	t = t.replace(/wYY/g,String.zeroPad(this.getYearForWeekNo()-2000,2));
	t = t.replace(/YYYY/g,this.getFullYear());
	t = t.replace(/YY/g,String.zeroPad(this.getFullYear()-2000,2));
	t = t.replace(/MMM/g,config.messages.dates.months[this.getMonth()]);
	t = t.replace(/0MM/g,String.zeroPad(this.getMonth()+1,2));
	t = t.replace(/MM/g,this.getMonth()+1);
	t = t.replace(/0WW/g,String.zeroPad(this.getWeek(),2));
	t = t.replace(/WW/g,this.getWeek());
	t = t.replace(/DDD/g,config.messages.dates.days[this.getDay()]);
	t = t.replace(/ddd/g,config.messages.dates.shortDays[this.getDay()]);
	t = t.replace(/0DD/g,String.zeroPad(this.getDate(),2));
	t = t.replace(/DDth/g,this.getDate()+this.daySuffix());
	t = t.replace(/DD/g,this.getDate());
	var tz = this.getTimezoneOffset();
	var atz = Math.abs(tz);
	t = t.replace(/TZD/g,(tz < 0 ? '+' : '-') + String.zeroPad(Math.floor(atz / 60),2) + ':' + String.zeroPad(atz % 60,2));
	t = t.replace(/\\/g,"");
	return t;
};
 
Date.prototype.getWeek = function()
{
	var dt = new Date(this.getTime());
	var d = dt.getDay();
	if(d==0) d=7;// JavaScript Sun=0, ISO Sun=7
	dt.setTime(dt.getTime()+(4-d)*86400000);// shift day to Thurs of same week to calculate weekNo
	var n = Math.floor((dt.getTime()-new Date(dt.getFullYear(),0,1)+3600000)/86400000);
	return Math.floor(n/7)+1;
};
 
Date.prototype.getYearForWeekNo = function()
{
	var dt = new Date(this.getTime());
	var d = dt.getDay();
	if(d==0) d=7;// JavaScript Sun=0, ISO Sun=7
	dt.setTime(dt.getTime()+(4-d)*86400000);// shift day to Thurs of same week
	return dt.getFullYear();
};
 
Date.prototype.getHours12 = function()
{
	var h = this.getHours();
	return h > 12 ? h-12 : ( h > 0 ? h : 12 );
};
 
Date.prototype.getAmPm = function()
{
	return this.getHours() >= 12 ? config.messages.dates.pm : config.messages.dates.am;
};
 
Date.prototype.daySuffix = function()
{
	return config.messages.dates.daySuffixes[this.getDate()-1];
};
 
// Convert a date to local YYYYMMDDHHMM string format
Date.prototype.convertToLocalYYYYMMDDHHMM = function()
{
	return this.getFullYear() + String.zeroPad(this.getMonth()+1,2) + String.zeroPad(this.getDate(),2) + String.zeroPad(this.getHours(),2) + String.zeroPad(this.getMinutes(),2);
};
 
// Convert a date to UTC YYYYMMDDHHMM string format
Date.prototype.convertToYYYYMMDDHHMM = function()
{
	return this.getUTCFullYear() + String.zeroPad(this.getUTCMonth()+1,2) + String.zeroPad(this.getUTCDate(),2) + String.zeroPad(this.getUTCHours(),2) + String.zeroPad(this.getUTCMinutes(),2);
};
 
// Convert a date to UTC YYYYMMDD.HHMMSSMMM string format
Date.prototype.convertToYYYYMMDDHHMMSSMMM = function()
{
	return this.getUTCFullYear() + String.zeroPad(this.getUTCMonth()+1,2) + String.zeroPad(this.getUTCDate(),2) + "." + String.zeroPad(this.getUTCHours(),2) + String.zeroPad(this.getUTCMinutes(),2) + String.zeroPad(this.getUTCSeconds(),2) + String.zeroPad(this.getUTCMilliseconds(),4);
};
 
// Static method to create a date from a UTC YYYYMMDDHHMM format string
Date.convertFromYYYYMMDDHHMM = function(d)
{
	var hh = d.substr(8,2) || "00";
	var mm = d.substr(10,2) || "00";
	return new Date(Date.UTC(parseInt(d.substr(0,4),10),
			parseInt(d.substr(4,2),10)-1,
			parseInt(d.substr(6,2),10),
			parseInt(hh,10),
			parseInt(mm,10),0,0));
};
 
//--
//-- RGB colour object
//--
 
// Construct an RGB colour object from a '#rrggbb', '#rgb' or 'rgb(n,n,n)' string or from separate r,g,b values
function RGB(r,g,b)
{
	this.r = 0;
	this.g = 0;
	this.b = 0;
	if(typeof r == "string") {
		if(r.substr(0,1) == "#") {
			if(r.length == 7) {
				this.r = parseInt(r.substr(1,2),16)/255;
				this.g = parseInt(r.substr(3,2),16)/255;
				this.b = parseInt(r.substr(5,2),16)/255;
			} else {
				this.r = parseInt(r.substr(1,1),16)/15;
				this.g = parseInt(r.substr(2,1),16)/15;
				this.b = parseInt(r.substr(3,1),16)/15;
			}
		} else {
			var rgbPattern = /rgb\s*\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)/;
			var c = r.match(rgbPattern);
			if(c) {
				this.r = parseInt(c[1],10)/255;
				this.g = parseInt(c[2],10)/255;
				this.b = parseInt(c[3],10)/255;
			}
		}
	} else {
		this.r = r;
		this.g = g;
		this.b = b;
	}
	return this;
}
 
// Mixes this colour with another in a specified proportion
// c = other colour to mix
// f = 0..1 where 0 is this colour and 1 is the new colour
// Returns an RGB object
RGB.prototype.mix = function(c,f)
{
	return new RGB(this.r + (c.r-this.r) * f,this.g + (c.g-this.g) * f,this.b + (c.b-this.b) * f);
};
 
// Return an rgb colour as a #rrggbb format hex string
RGB.prototype.toString = function()
{
	return "#" + ("0" + Math.floor(this.r.clamp(0,1) * 255).toString(16)).right(2) +
				 ("0" + Math.floor(this.g.clamp(0,1) * 255).toString(16)).right(2) +
				 ("0" + Math.floor(this.b.clamp(0,1) * 255).toString(16)).right(2);
};
 
//--
//-- DOM utilities - many derived from www.quirksmode.org
//--
 
// Resolve the target object of an event
function resolveTarget(e)
{
	var obj;
	if(e.target)
		obj = e.target;
	else if(e.srcElement)
		obj = e.srcElement;
	if(obj.nodeType == 3) // defeat Safari bug
		obj = obj.parentNode;
	return obj;
}
 
function drawGradient(place,horiz,locolors,hicolors)
{
	if(!hicolors)
		hicolors = locolors;
	for(var t=0; t<= 100; t+=2) {
		var bar = document.createElement("div");
		place.appendChild(bar);
		bar.style.position = "absolute";
		bar.style.left = horiz ? t + "%" : 0;
		bar.style.top = horiz ? 0 : t + "%";
		bar.style.width = horiz ? (101-t) + "%" : "100%";
		bar.style.height = horiz ? "100%" : (101-t) + "%";
		bar.style.zIndex = -1;
		var p = t/100*(locolors.length-1);
		var hc = hicolors[Math.floor(p)];
		if(typeof hc == "string")
			hc = new RGB(hc);
		var lc = locolors[Math.ceil(p)];
		if(typeof lc == "string")
			lc = new RGB(lc);
		bar.style.backgroundColor = hc.mix(lc,p-Math.floor(p)).toString();
	}
}
 
function createTiddlyText(parent,text)
{
	return parent.appendChild(document.createTextNode(text));
}
 
function createTiddlyCheckbox(parent,caption,checked,onChange)
{
	var cb = document.createElement("input");
	cb.setAttribute("type","checkbox");
	cb.onclick = onChange;
	parent.appendChild(cb);
	cb.checked = checked;
	cb.className = "chkOptionInput";
	if(caption)
		wikify(caption,parent);
	return cb;
}
 
function createTiddlyElement(parent,element,id,className,text,attribs)
{
	var e = document.createElement(element);
	if(className != null)
		e.className = className;
	if(id != null)
		e.setAttribute("id",id);
	if(text != null)
		e.appendChild(document.createTextNode(text));
	if(attribs) {
		for(var n in attribs) {
			e.setAttribute(n,attribs[n]);
		}
	}
	if(parent != null)
		parent.appendChild(e);
	return e;
}
 
function addEvent(obj,type,fn)
{
	if(obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function(){obj["e"+type+fn](window.event);};
		obj.attachEvent("on"+type,obj[type+fn]);
	} else {
		obj.addEventListener(type,fn,false);
	}
}
 
function removeEvent(obj,type,fn)
{
	if(obj.detachEvent) {
		obj.detachEvent("on"+type,obj[type+fn]);
		obj[type+fn] = null;
	} else {
		obj.removeEventListener(type,fn,false);
	}
}
 
 
// Find the closest relative with a given property value (property defaults to tagName, relative defaults to parentNode)
function findRelated(e,value,name,relative)
{
	name = name || "tagName";
	relative = relative || "parentNode";
	if(name == "className") {
		while(e && !hasClass(e,value)) {
			e = e[relative];
		}
	} else {
		while(e && e[name] != value) {
			e = e[relative];
		}
	}
	return e;
}
 
// Get the scroll position for window.scrollTo necessary to scroll a given element into view
function ensureVisible(e)
{
	var posTop = findPosY(e);
	var posBot = posTop + e.offsetHeight;
	var winTop = findScrollY();
	var winHeight = findWindowHeight();
	var winBot = winTop + winHeight;
	if(posTop < winTop) {
		return posTop;
	} else if(posBot > winBot) {
		if(e.offsetHeight < winHeight)
			return posTop - (winHeight - e.offsetHeight);
		else
			return posTop;
	} else {
		return winTop;
	}
}
 
// Get the current width of the display window
function findWindowWidth()
{
	return window.innerWidth || document.documentElement.clientWidth;
}
 
// Get the current height of the display window
function findWindowHeight()
{
	return window.innerHeight || document.documentElement.clientHeight;
}
 
// Get the current horizontal page scroll position
function findScrollX()
{
	return window.scrollX || document.documentElement.scrollLeft;
}
 
// Get the current vertical page scroll position
function findScrollY()
{
	return window.scrollY || document.documentElement.scrollTop;
}
 
function findPosX(obj)
{
	var curleft = 0;
	while(obj.offsetParent) {
		curleft += obj.offsetLeft;
		obj = obj.offsetParent;
	}
	return curleft;
}
 
function findPosY(obj)
{
	var curtop = 0;
	while(obj.offsetParent) {
		curtop += obj.offsetTop;
		obj = obj.offsetParent;
	}
	return curtop;
}
 
// Blur a particular element
function blurElement(e)
{
	if(e && e.focus && e.blur) {
		e.focus();
		e.blur();
	}
}
 
// Create a non-breaking space
function insertSpacer(place)
{
	var e = document.createTextNode(String.fromCharCode(160));
	if(place)
		place.appendChild(e);
	return e;
}
 
// Force the browser to do a document reflow when needed to workaround browser bugs
function forceReflow()
{
	if(config.browser.isGecko) {
		setStylesheet("body {top:0px;margin-top:0px;}","forceReflow");
		setTimeout(function() {setStylesheet("","forceReflow");},1);
	}
}
 
// Replace the current selection of a textarea or text input and scroll it into view
function replaceSelection(e,text)
{
	if(e.setSelectionRange) {
		var oldpos = e.selectionStart;
		var isRange = e.selectionEnd > e.selectionStart;
		e.value = e.value.substr(0,e.selectionStart) + text + e.value.substr(e.selectionEnd);
		e.setSelectionRange(isRange ? oldpos : oldpos + text.length,oldpos + text.length);
		var linecount = e.value.split("\n").length;
		var thisline = e.value.substr(0,e.selectionStart).split("\n").length-1;
		e.scrollTop = Math.floor((thisline - e.rows / 2) * e.scrollHeight / linecount);
	} else if(document.selection) {
		var range = document.selection.createRange();
		if(range.parentElement() == e) {
			var isCollapsed = range.text == "";
			range.text = text;
			if(!isCollapsed) {
				range.moveStart("character", -text.length);
				range.select();
			}
		}
	}
}
 
// Returns the text of the given (text) node, possibly merging subsequent text nodes
function getNodeText(e)
{
	var t = "";
	while(e && e.nodeName == "#text") {
		t += e.nodeValue;
		e = e.nextSibling;
	}
	return t;
}
 
// Returns true if the element e has a given ancestor element
function isDescendant(e,ancestor)
{
	while(e) {
		if(e === ancestor)
			return true;
		e = e.parentNode;
	}
	return false;
}
 
 
// deprecate the following...
 
// Prevent an event from bubbling
function stopEvent(e)
{
	var ev = e || window.event;
	ev.cancelBubble = true;
	if(ev.stopPropagation) ev.stopPropagation();
	return false;
}
 
// Remove any event handlers or non-primitve custom attributes
function scrubNode(e)
{
	if(!config.browser.isIE)
		return;
	var att = e.attributes;
	if(att) {
		for(var t=0; t<att.length; t++) {
			var n = att[t].name;
			if(n !== "style" && (typeof e[n] === "function" || (typeof e[n] === "object" && e[n] != null))) {
				try {
					e[n] = null;
				} catch(ex) {
				}
			}
		}
	}
	var c = e.firstChild;
	while(c) {
		scrubNode(c);
		c = c.nextSibling;
	}
}
 
function addClass(e,className)
{
	jQuery(e).addClass(className);
}
 
function removeClass(e,className)
{
	jQuery(e).removeClass(className);
}
 
function hasClass(e,className)
{
	return jQuery(e).hasClass(className);
}
 
// Remove all children of a node
function removeChildren(e)
{
	jQuery(e).empty();
}
 
// Return the content of an element as plain text with no formatting
function getPlainText(e)
{
	return jQuery(e).text();
}
 
// Remove a node and all it's children
function removeNode(e)
{
	jQuery(e).remove();
}
 
//--
//-- LoaderBase and SaverBase
//--
 
function LoaderBase() {}
 
LoaderBase.prototype.loadTiddler = function(store,node,tiddlers)
{
	var title = this.getTitle(store,node);
	if(safeMode && store.isShadowTiddler(title))
		return;
	if(title) {
		var tiddler = store.createTiddler(title);
		this.internalizeTiddler(store,tiddler,title,node);
		tiddlers.push(tiddler);
	}
};
 
LoaderBase.prototype.loadTiddlers = function(store,nodes)
{
	var tiddlers = [];
	for(var t = 0; t < nodes.length; t++) {
		try {
			this.loadTiddler(store,nodes[t],tiddlers);
		} catch(ex) {
			showException(ex,config.messages.tiddlerLoadError.format([this.getTitle(store,nodes[t])]));
		}
	}
	return tiddlers;
};
 
function SaverBase() {}
 
SaverBase.prototype.externalize = function(store)
{
	var results = [];
	var tiddlers = store.getTiddlers("title");
	for(var t = 0; t < tiddlers.length; t++) {
		if(!tiddlers[t].doNotSave())
			results.push(this.externalizeTiddler(store, tiddlers[t]));
	}
	return results.join("\n");
};
 
//--
//-- TW21Loader (inherits from LoaderBase)
//--
 
function TW21Loader() {}
 
TW21Loader.prototype = new LoaderBase();
 
TW21Loader.prototype.getTitle = function(store,node)
{
	var title = null;
	if(node.getAttribute) {
		title = node.getAttribute("title");
		if(!title)
			title = node.getAttribute("tiddler");
	}
	if(!title && node.id) {
		var lenPrefix = store.idPrefix.length;
		if(node.id.substr(0,lenPrefix) == store.idPrefix)
			title = node.id.substr(lenPrefix);
	}
	return title;
};
 
TW21Loader.prototype.internalizeTiddler = function(store,tiddler,title,node)
{
	var e = node.firstChild;
	var text = null;
	if(node.getAttribute("tiddler")) {
		text = getNodeText(e).unescapeLineBreaks();
	} else {
		while(e.nodeName!="PRE" && e.nodeName!="pre") {
			e = e.nextSibling;
		}
		text = e.innerHTML.replace(/\r/mg,"").htmlDecode();
	}
	var modifier = node.getAttribute("modifier");
	var c = node.getAttribute("created");
	var m = node.getAttribute("modified");
	var created = c ? Date.convertFromYYYYMMDDHHMM(c) : version.date;
	var modified = m ? Date.convertFromYYYYMMDDHHMM(m) : created;
	var tags = node.getAttribute("tags");
	var fields = {};
	var attrs = node.attributes;
	for(var i = attrs.length-1; i >= 0; i--) {
		var name = attrs[i].name;
		if(attrs[i].specified && !TiddlyWiki.isStandardField(name)) {
			fields[name] = attrs[i].value.unescapeLineBreaks();
		}
	}
	tiddler.assign(title,text,modifier,modified,tags,created,fields);
	return tiddler;
};
 
//--
//-- TW21Saver (inherits from SaverBase)
//--
 
function TW21Saver() {}
 
TW21Saver.prototype = new SaverBase();
 
TW21Saver.prototype.externalizeTiddler = function(store,tiddler)
{
	try {
		var extendedAttributes = "";
		var usePre = config.options.chkUsePreForStorage;
		store.forEachField(tiddler,
			function(tiddler,fieldName,value) {
				// don't store stuff from the temp namespace
				if(typeof value != "string")
					value = "";
				if(!fieldName.match(/^temp\./))
					extendedAttributes += ' %0="%1"'.format([fieldName,value.escapeLineBreaks().htmlEncode()]);
			},true);
		var created = tiddler.created;
		var modified = tiddler.modified;
		var attributes = tiddler.modifier ? ' modifier="' + tiddler.modifier.htmlEncode() + '"' : "";
		attributes += (usePre && created == version.date) ? "" :' created="' + created.convertToYYYYMMDDHHMM() + '"';
		attributes += (usePre && modified == created) ? "" : ' modified="' + modified.convertToYYYYMMDDHHMM() +'"';
		var tags = tiddler.getTags();
		if(!usePre || tags)
			attributes += ' tags="' + tags.htmlEncode() + '"';
		return ('<div %0="%1"%2%3>%4</'+'div>').format([
				usePre ? "title" : "tiddler",
				tiddler.title.htmlEncode(),
				attributes,
				extendedAttributes,
				usePre ? "\n<pre>" + tiddler.text.htmlEncode() + "</pre>\n" : tiddler.text.escapeLineBreaks().htmlEncode()
			]);
	} catch (ex) {
		throw exceptionText(ex,config.messages.tiddlerSaveError.format([tiddler.title]));
	}
};
 
//]]>
</script> 
<script id="jsdeprecatedArea" type="text/javascript"> 
//<![CDATA[
//--
//-- Deprecated Crypto functions and associated conversion routines.
//-- Use the jQuery.encoding functions directly instead.
//--
 
// Crypto 'namespace'
function Crypto() {}
 
// Convert a string to an array of big-endian 32-bit words
Crypto.strToBe32s = function(str)
{
	return jQuery.encoding.strToBe32s(str);
};
 
// Convert an array of big-endian 32-bit words to a string
Crypto.be32sToStr = function(be)
{
	return jQuery.encoding.be32sToStr(be);
};
 
// Convert an array of big-endian 32-bit words to a hex string
Crypto.be32sToHex = function(be)
{
	return jQuery.encoding.be32sToHex(be);
};
 
// Return, in hex, the SHA-1 hash of a string
Crypto.hexSha1Str = function(str)
{
	return jQuery.encoding.digests.hexSha1Str(str);
};
 
// Return the SHA-1 hash of a string
Crypto.sha1Str = function(str)
{
	return jQuery.encoding.digests.sha1Str(str);
};
 
// Calculate the SHA-1 hash of an array of blen bytes of big-endian 32-bit words
Crypto.sha1 = function(x,blen)
{
	return jQuery.encoding.digests.sha1(x,blen);
};
 
//--
//-- Deprecated DOM utilities
//--
 
// @Deprecated: Use jQuery.stylesheet instead
function setStylesheet(s,id,doc)
{
	jQuery.twStylesheet(s,{ id: id, doc: doc });
}
 
// @Deprecated: Use jQuery.stylesheet.remove instead
function removeStyleSheet(id)
{
	jQuery.twStylesheet.remove({ id: id });
}
//--
//-- Deprecated HTTP request code
//-- Use the jQuery ajax functions directly instead
//--
 
function loadRemoteFile(url,callback,params)
{
	return httpReq("GET",url,callback,params);
}
 
function doHttp(type,url,data,contentType,username,password,callback,params,headers,allowCache)
{
	return httpReq(type,url,callback,params,headers,data,contentType,username,password,allowCache);
}
 
function httpReq(type,url,callback,params,headers,data,contentType,username,password,allowCache)
{
	var options = {
		type:type,
		url:url,
		processData:false,
		data:data,
		cache:!!allowCache,
		beforeSend: function(xhr) {
			for(var i in headers)
				xhr.setRequestHeader(i,headers[i]);
			xhr.setRequestHeader("X-Requested-With", "TiddlyWiki " + formatVersion());
		}
	};
 
	if(callback) {
		options.complete = function(xhr,textStatus) {
			if(jQuery.httpSuccess(xhr))
				callback(true,params,xhr.responseText,url,xhr);
			else
				callback(false,params,null,url,xhr);
		};
	}
	if(contentType)
		options.contentType = contentType;
	if(username)
		options.username = username;
	if(password)
		options.password = password;
	if(window.Components && window.netscape && window.netscape.security && document.location.protocol.indexOf("http") == -1)
		window.netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
	return jQuery.ajax(options);
}
 
//--
//-- Deprecated String functions
//--
 
// @Deprecated: no direct replacement, since not used in core code
String.prototype.toJSONString = function()
{
	// Convert a string to it's JSON representation by encoding control characters, double quotes and backslash. See json.org
	var m = {
		'\b': '\\b',
		'\f': '\\f',
		'\n': '\\n',
		'\r': '\\r',
		'\t': '\\t',
		'"' : '\\"',
		'\\': '\\\\'
		};
	var replaceFn = function(a,b) {
		var c = m[b];
		if(c)
			return c;
		c = b.charCodeAt();
		return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16);
		};
	if(/["\\\x00-\x1f]/.test(this))
		return '"' + this.replace(/([\x00-\x1f\\"])/g,replaceFn) + '"';
	return '"' + this + '"';
};
 
//--
//-- Deprecated Tiddler code
//--
 
// @Deprecated: Use tiddlerToRssItem(tiddler,uri) instead
Tiddler.prototype.toRssItem = function(uri)
{
	return tiddlerToRssItem(this,uri);
};
 
// @Deprecated: Use "<item>\n" + tiddlerToRssItem(tiddler,uri)  + "\n</item>" instead
Tiddler.prototype.saveToRss = function(uri)
{
	return "<item>\n" + tiddlerToRssItem(this,uri) + "\n</item>";
};
 
// @Deprecated: Use jQuery.encoding.digests.hexSha1Str instead
Tiddler.prototype.generateFingerprint = function()
{
	return "0x" + Crypto.hexSha1Str(this.text);
};
 
//]]>
</script> 
<script id="jslibArea" type="text/javascript"> 
//<![CDATA[
/*
 * jQuery JavaScript Library v1.3.2
 * http://jquery.com/
 *
 * Copyright (c) 2009 John Resig
 * Dual licensed under the MIT and GPL licenses.
 * http://docs.jquery.com/License
 *
 * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
 * Revision: 6246
 */
(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
/*
 * Sizzle CSS Selector Engine - v0.9.3
 *  Copyright 2009, The Dojo Foundation
 *  Released under the MIT, BSD, and GPL Licenses.
 *  More information: http://sizzlejs.com/
 */
(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML='   <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})();
//]]>
</script> 
<script id="jqueryArea" type="text/javascript"> 
//<![CDATA[
/*
jQuery.encoding.digests.sha1.js
 
SHA-1 digest and associated utility functions
 
Copyright (c) UnaMesa Association 2009
 
Dual licensed under the MIT and GPL licenses:
  http://www.opensource.org/licenses/mit-license.php
  http://www.gnu.org/licenses/gpl.html
*/
 
(function($) {
 
if(!$.encoding)
	$.encoding = {};
	$.extend($.encoding,{
		strToBe32s: function(str) {
			// Convert a string to an array of big-endian 32-bit words
			var be=[];
			var len=Math.floor(str.length/4);
			var i, j;
			for(i=0, j=0; i<len; i++, j+=4) {
				be[i]=((str.charCodeAt(j)&0xff) << 24)|((str.charCodeAt(j+1)&0xff) << 16)|((str.charCodeAt(j+2)&0xff) << 8)|(str.charCodeAt(j+3)&0xff);
			}
			while(j<str.length) {
				be[j>>2] |= (str.charCodeAt(j)&0xff)<<(24-(j*8)%32);
				j++;
			}
			return be;
		},
		be32sToStr: function(be) {
			// Convert an array of big-endian 32-bit words to a string
			var str='';
			for(var i=0;i<be.length*32;i+=8) {
				str += String.fromCharCode((be[i>>5]>>>(24-i%32)) & 0xff);
			}
			return str;
		},
		be32sToHex: function(be) {
			// Convert an array of big-endian 32-bit words to a hex string
			var hex='0123456789ABCDEF';
			var str='';
			for(var i=0;i<be.length*4;i++) {
				str += hex.charAt((be[i>>2]>>((3-i%4)*8+4))&0xF) + hex.charAt((be[i>>2]>>((3-i%4)*8))&0xF);
			}
			return str;
		}
	});
})(jQuery);
 
 
(function($) {
 
if(!$.encoding.digests)
	$.encoding.digests = {};
	$.extend($.encoding.digests,{
		hexSha1Str: function(str) {
			// Return, in hex, the SHA-1 hash of a string
			return $.encoding.be32sToHex($.encoding.digests.sha1Str(str));
		},
		sha1Str: function(str) {
			// Return the SHA-1 hash of a string
			return sha1($.encoding.strToBe32s(str),str.length);
		},
		sha1: function(x,blen) {
			// Calculate the SHA-1 hash of an array of blen bytes of big-endian 32-bit words
			return sha1($.encoding.strToBe32s(str),str.length);
		}
	});
 
	// Private functions.
	function sha1(x,blen) {
		// Calculate the SHA-1 hash of an array of blen bytes of big-endian 32-bit words
		function add32(a,b) {
			// Add 32-bit integers, wrapping at 32 bits
			// Uses 16-bit operations internally to work around bugs in some JavaScript interpreters.
			var lsw=(a&0xFFFF)+(b&0xFFFF);
			var msw=(a>>16)+(b>>16)+(lsw>>16);
			return (msw<<16)|(lsw&0xFFFF);
		}
		function AA(a,b,c,d,e) {
			// Cryptographic round helper function. Add five 32-bit integers, wrapping at 32 bits, second parameter is rotated left 5 bits before the addition
			// Uses 16-bit operations internally to work around bugs in some JavaScript interpreters.
			b=(b>>>27)|(b<<5);
			var lsw=(a&0xFFFF)+(b&0xFFFF)+(c&0xFFFF)+(d&0xFFFF)+(e&0xFFFF);
			var msw=(a>>16)+(b>>16)+(c>>16)+(d>>16)+(e>>16)+(lsw>>16);
			return (msw<<16)|(lsw&0xFFFF);
		}
		function RR(w,j) {
			// Cryptographic round helper function.
			var n=w[j-3]^w[j-8]^w[j-14]^w[j-16];
			return (n>>>31)|(n<<1);
		}
 
		var len=blen*8;
		x[len>>5] |= 0x80 << (24-len%32);
		x[((len+64>>9)<<4)+15]=len;
		var w=new Array(80);
 
		var k1=0x5A827999;
		var k2=0x6ED9EBA1;
		var k3=0x8F1BBCDC;
		var k4=0xCA62C1D6;
 
		var h0=0x67452301;
		var h1=0xEFCDAB89;
		var h2=0x98BADCFE;
		var h3=0x10325476;
		var h4=0xC3D2E1F0;
 
		for(var i=0;i<x.length;i+=16) {
			var j=0;
			var t;
			var a=h0;
			var b=h1;
			var c=h2;
			var d=h3;
			var e=h4;
			while(j<16) {
				w[j]=x[i+j];
				t=AA(e,a,d^(b&(c^d)),w[j],k1);
				e=d; d=c; c=(b>>>2)|(b<<30); b=a; a=t; j++;
			}
			while(j<20) {
				w[j]=RR(w,j);
				t=AA(e,a,d^(b&(c^d)),w[j],k1);
				e=d; d=c; c=(b>>>2)|(b<<30); b=a; a=t; j++;
			}
			while(j<40) {
				w[j]=RR(w,j);
				t=AA(e,a,b^c^d,w[j],k2);
				e=d; d=c; c=(b>>>2)|(b<<30); b=a; a=t; j++;
			}
			while(j<60) {
				w[j]=RR(w,j);
				t=AA(e,a,(b&c)|(d&(b|c)),w[j],k3);
				e=d; d=c; c=(b>>>2)|(b<<30); b=a; a=t; j++;
			}
			while(j<80) {
				w[j]=RR(w,j);
				t=AA(e,a,b^c^d,w[j],k4);
				e=d; d=c; c=(b>>>2)|(b<<30); b=a; a=t; j++;
			}
			h0=add32(h0,a);
			h1=add32(h1,b);
			h2=add32(h2,c);
			h3=add32(h3,d);
			h4=add32(h4,e);
		}
		return [h0,h1,h2,h3,h4];
	}
})(jQuery);
/*
jQuery.twStylesheet.js
 
jQuery plugin to dynamically insert CSS rules into a document
 
Usage:
  jQuery.twStylesheet applies style definitions
  jQuery.twStylesheet.remove neutralizes style definitions
 
Copyright (c) UnaMesa Association 2009
 
Triple licensed under the BSD, MIT and GPL licenses:
  http://www.opensource.org/licenses/bsd-license.php
  http://www.opensource.org/licenses/mit-license.php
  http://www.gnu.org/licenses/gpl.html
*/
 
(function($) {
 
var defaultId = "customStyleSheet"; // XXX: rename to dynamicStyleSheet?
 
// Add or replace a style sheet
// css argument is a string of CSS rule sets
// options.id is an optional name identifying the style sheet
// options.doc is an optional document reference
// N.B.: Uses DOM methods instead of jQuery to ensure cross-browser comaptibility.
$.twStylesheet = function(css, options) {
	options = options || {};
	var id = options.id || defaultId;
	var doc = options.doc || document;
	var el = doc.getElementById(id);
	if(doc.createStyleSheet) { // IE-specific handling
		if(el) {
			el.parentNode.removeChild(el);
		}
		doc.getElementsByTagName("head")[0].insertAdjacentHTML("beforeEnd",
			"&nbsp;<style id='" + id + "'>" + css + "</style>"); // fails without &nbsp;
	} else { // modern browsers
		if(el) {
			el.replaceChild(doc.createTextNode(css), el.firstChild);
		} else {
			el = doc.createElement("style");
			el.type = "text/css";
			el.id = id;
			el.appendChild(doc.createTextNode(css));
			doc.getElementsByTagName("head")[0].appendChild(el);
		}
	}
};
 
// Remove existing style sheet
// options.id is an optional name identifying the style sheet
// options.doc is an optional document reference
$.twStylesheet.remove = function(options) {
	options = options || {};
	var id = options.id || defaultId;
	var doc = options.doc || document;
	var el = doc.getElementById(id);
	if(el) {
		el.parentNode.removeChild(el);
	}
};
 
})(jQuery);
//]]>
</script> 
<script type="text/javascript"> 
//<![CDATA[
if(useJavaSaver)
	document.write("<applet style='position:absolute;left:-1px' name='TiddlySaver' code='TiddlySaver.class' archive='TiddlySaver.jar' width='1' height='1'></applet>");
//]]>
</script> 
<!--POST-SCRIPT-START--> 
 
<!--POST-SCRIPT-END--> 
</body> 
</html> 
I use TiddlySpace as an outboard brain. But far too much of my corporate and community life is spent in email, which I hate.
This is Jeremy Ruston's personal space
<<closeAll>> <<permaview>> <<newTiddler>> <<newJournal "DD MMM YYYY" "journal">> <<search>>
<!DOCTYPE HTML>
<html>
<body style="display:none">
topics: <ul id="topics"></ul>
<button id='addtopic'>add topic</button>
stream:
<ul id="stream"></ul>
<script type='text/javascript' src='/bags/common/tiddlers/jquery.js'></script>
<script type='text/javascript' src='/bags/tiddlyspace/tiddlers/chrjs'></script>
<script src="/twikifier.js" type="text/javascript" charset="utf-8"></script>
<script type='text/javascript'>
	$.ajaxSetup({
		beforeSend: function(xhr) {
			xhr.setRequestHeader("X-ControlView", "false");
		}
	});
	function renderTopic(topic) {
		var item = $("<li />").appendTo("#topics");
		$("<button class='show' />").text(topic).appendTo(item);
		$("<button class='delete'>x</button>").appendTo(item);
		return item[0];
	}
	var host =  '/';
	var space = "jon";
	var active_topics = [];
	var current_topic, offset;
	function renderTopics() {
		var topics = active_topics;
		$("#topics").empty();
		for(var i = 0; i < topics.length; i++) {
			var topic = topics[i];
			if(topic) {
				renderTopic(topic);
			}
		}
		$("body").show();
	}
	// Array Remove - By John Resig (MIT Licensed)
	Array.prototype.remove = function(from, to) {
		var rest = this.slice((to || from) + 1 || this.length);
		this.length = from < 0 ? this.length + from : from;
		return this.push.apply(this, rest);
	};

	var topicList = new tiddlyweb.Tiddler("Topics", new tiddlyweb.Bag(space + "_public", host));
	topicList.get(function(tid) {
			active_topics = tid.text.split("\n");
			renderTopics(active_topics);
			$("#topics .show:first").trigger("click");
		},
		function() {
			active_topics = ["tiddlyspace"];
			renderTopics(active_topics)
		}
	);
	$("#addtopic").click(function(ev) {
		var text = prompt("What topic would you like to watch?");
		if(active_topics.indexOf(text) === -1) {
			active_topics.push(text);
		}
		var el = renderTopic(text);
		topicList.text = active_topics.join("\n");
		topicList.put(function() {
			$("button.show", el).trigger("click");
		}, function() {
			alert("eek!")
		});
	});
	$("#topics .delete").live("click",function(ev) {
		var topic = $(".show", this.parentNode).text();
		active_topics.remove(active_topics.indexOf(topic));
		renderTopics();
		topicList.text = active_topics.join("\n");
		topicList.put(function() {}, function() {
			alert("eek!")
		});
	});
	w = createWikifier(window, jQuery, { host: host, container: "recipes/" + space + "_public" });
	$("#topics .show").live("click",function(ev) {
		var tag = $(this).text();
		current_topic = tag;
		offset = 0;
		$("#stream").empty();
		var search = new tiddlyweb.Search('tag:"' + tag + '" &fat=y', host);
		search.get(function(tiddlers) {
			for(var i = 0; i < tiddlers.length; i++) {
				var tiddler = tiddlers[i];
				var item = $("<li />").appendTo("#stream")[0];
				$("<h2 />").text(tiddler.title + ": ").appendTo(item);
				
				$("<div class='text' />").text(tiddler.text).appendTo(item);
				$("<div class='author' />").text(tiddler.modifier).appendTo(item);
			}
		}, function() {
			$("<li>no topics :-(</li>").appendTo("#stream");
		});
	});
	$(window).scroll(function(){
		if($(window).scrollTop() == $(document).height() - $(window).height()) {
			offset += 10;
			// find a way to get all tiddlers created before the ones above
			console.log("loadMore();");
		}
	});
</script>
</body>
</html>
BT’s Head of Open Source Innovation Jeremy Ruston is leading the open source development of TiddlySpace, a new social model for working with information on the web. 

It is based on the popular TiddlyWiki project that first introduced the idea of "tiddlers": breaking information up into the smallest semantic units consisting of human readable content, binary data, or JavaScript code. TiddlySpace extends this model to put tiddlers on the web and give them a robust API. 

Users can collaborate with others, assemble content by including spaces, add features using plugins and mix content with other services using the API.

TiddlySpace is open source software from Osmosoft (the open source innovation arm of BT) and users are free to host their own instance on their own domain and are encouraged to contribute to the project.

Jeremy notes, "In many organisations Word/Excel/Powerpoint and Outlook are still the dominant general purpose information processing tools. BT is using TiddlySpace to explore new ways of working that are more efficient and more cost effective, learning from the best of the many successful web services around us."

You can view a quick demo and description of TiddlySpace below.

TiddlyWiki was developed as a [[standalone HTML file|http://en.wikipedia.org/wiki/Single-page_application]] that contains both the JavaScript and CSS necessary for its operation and the payload data of the tiddlers comprising the wiki document. It exploits some specific browser tricks to be able to modify itself directly on the users hard drive, and hence provides a complete single-user productivity environment without needing a server. This arrangement allows for some unusual use cases, such as keeping a truly private personal wiki, and lowers the barriers to working with TiddlyWiki to the ability to download and open an HTML file.

Since its introduction, several different serversides have been independently created for TiddlyWiki. They lift the limitations of working on a local file by putting the tiddler content on a server, allowing multiple users to work together at the same time on much bigger datasets than would fit into a single HTML file.

Superficially, the end result resembles a traditional web application built from stacks such as J2EE, .Net, Ruby in Rails or PHP. However, behind the scenes, the architecture of TiddlyWiki permits a radically different approach to the design of the server component, leading to significant performance and scalability advantages over conventional approaches.

Traditional web development stacks evolved in the mid-'90s, replacing the first wave of CGI-based web applications. The characteristics of these stacks have stayed fairly consistent over the years:
* User experiences are modelled as the browser requesting a page from the server, rendering it for the user, and then processing user interactions within the page to trigger the loading of the next page. To the user, the experience is that they are moving through a sequence of distinct pages, with the jumps between pages
* When the server generates a new page, it has access to a "session" object that is specific to each current user of the system. This compensates for HTTP's stateless nature by letting the programmer store any required information that needs to be available across page requests. The canonical example of using the session object is to use it to keep track of the items in a users checkout basket.
This model has been very successful (in the sense of widely used) because it is simple for programmers to understand, and works well on simple server configurations. It doesn't work quite as well for complex, high traffic sites. In these situations, the standard approach is to have a pool of web servers, each handling independent client requests in parallel. Then, by buying more servers, and distributing the incoming requests evenly, any desired level of responsiveness can be achieved.

The problem is those session objects: the system needs to ensure that the right session object is available to a server for a particular request. This can be done by taking special steps to route traffic so that consecutive requests from the same client end up at the same server, or by transporting the session data between servers. In either case, these considerations add a lot of complexity, meaning that the illusion of session state is very expensive.

In TiddlyWiki, the user experience model differs because all interactions take place within the same HTML file. Users don't navigate between pages, they interact with a single dynamic page. This allows any required session state information to be maintained in the client. Once all the session state information is managed in the client, it becomes possible for the server to be stateless: to be designed to get all the session state information directly from the client with each request. The beauty of making the server stateless in this way is that it allows the site to be scaled with the addition of more servers without running into the issue of managing session state information between servers.








HelloThere

Google published their proposal for making ajax applications crawlable early in 2010:

http://code.google.com/intl/de/web/ajaxcrawling/docs/getting-started.html

It doesn't seem to be yet supported by Microsoft or Yahoo or anyone else but looks like it might be reasonably simple to use it for TiddlySpace.

It basically assumes that you're going to use hash fragments as the primary way of navigating your application (actually {{{#!}}}), and defines a dirt simple way for search engines to request static representations of particular URIs. It defines a way for search engines to map "pretty" hash fragment URIs  to ugly URIs that only rely on a query string:
{{{
www.example.com/ajax.html#!key=value
}}}
becomes
{{{
www.example.com/ajax.html?_escaped_fragment_=key=value
}}}
The examples in their guides seem to use {{{key=value}}} sequences, and they are the only supported syntax.
<!--{{{-->
<div macro='slideRevision'></div>
<div class='heading'>
	<span class="titleBar">
		<div class='title' macro='view title text'></div>
	</span>
	<span class='modifierIcon'
		macro='view modifier SiteIcon label:no height:48 width:48 preserveAspectRatio:yes'>
	</span>
	<div class='toolbar'
		macro='toolbar [[ToolbarCommands::RevisionToolbar]] icons:yes height:48 width:48 more:popup'>
	</div>
	<div class='tagClear'></div>
</div>
<div class='content'>
	<div class='viewer' macro='view text wikified'></div>
</div>
<div class='tagInfo'>
	<div class='tidTags' macro='tags'></div>
	<div class='tagging' macro='tagging'></div>
</div>
<!--}}}-->
iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDlEOTQzNUYwNDM1MTFFMzhENjZGNUNDMjNFMDcxQkQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDlEOTQzNjAwNDM1MTFFMzhENjZGNUNDMjNFMDcxQkQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0OUQ5NDM1RDA0MzUxMUUzOEQ2NkY1Q0MyM0UwNzFCRCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0OUQ5NDM1RTA0MzUxMUUzOEQ2NkY1Q0MyM0UwNzFCRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrYOUjUAAAPaSURBVHjalFZbSJNxFP/tc5u6rbk2L2NrEUUPaeXQEoJ1oQddCT0WJL1O1+VFCeop6CVIEgRJHPSUhO/RhS5mWBki0Q3yoYss7+G8NG1epp1zvm0p7pt24Nv37X/5/c7tf85f19cXwEYSCuEQvfbRU54Y+kHPV3qetrW1TWfaq9MiIFALverpCRYVwWm3A/n56tzv38DMDDA4CCws4B4NtRLRq00TEPhlvR43S0pIbdLbZEqv3coK8O0b0NcnhC00dJWIohkJCPwWaVtfVQVs2bIedGpqCe/eRbF7dy48nuwUUW8v8OEDQglr3qclIPAbLheu+P0AWbBOlpeBlpZBDA8vyP+yMgtOnHCQIlny/8sXoLtbSBqSliirwM9arbhSWZkenKW3dwajowsIBFw4fboQ37/H0Nj4E11dUzK/Zw9QWgrW+EZyj7Jqf/DYMcBoTA8+N7eMJ08iqKiwYufOHNG+ocFDMTLj8eMIPn2alXUVFYDDgYu1tbXVKQLS3u/xwOd0aqfbixeT8q6stKfGDAYddu3KlW+7XTVbpwMOHlQVXm1BsLhYG5y1f/NmBgcOWAU0GYN4fEWsKi42we3OTq0nZZGdjWqywq6Q9kZFwSm3W5uAQU0mBX/+xPHgwQTa20dlvLt7ms5EHNXVjrW5r1NJSPxswXaLRTuwSYILF9zibw60z2fD69fT6OycwuHDeeRzw7o9DpXTywRuszk9MKdlR8c4mpoGEYstC6DTaUROjoL79ydgsSg4ftyWdm/icDr1meoIa/vxY5TSz4yJiUUMDMRQV+fCjh05QmSz6SnrFM1TzmHi2XA0qp2WR47YUFNThIcPI/B6Lejvn5O0dLmMEhctmVWzdihFMD+/dgGD6/X/XFBSYpZgDg3NS0ZtJOPjqhOUQABxMuduOPxvktOQ3VNVtVVcQFmGkyftlHo6jI0tYu9eU0bwpSXGkM/OpI2tVKiSfqOaMisBLixce6xfvpyWYPv99owEnz8Di4to4nokBGRFTySCUH+/umD/fosEMBQaxvPnk7R4hcrxkuQ9u8xq1c6NWEyqKksz/6xe2drTgwA1FxQUGKTOMCAXsrdvVZ9z1eS81xK2+tkzied10j68ptiRFe/Jd+cfPQLIGjlcrG19/Tap/az1mTMFyMrSafq9q0t830zg1zI1nKDBgNs+HwgYm5LJSY6PZA77vWEzLZObfJCO+zmvV60r6cr4yAh1fmr9HDtKkEsE3rLppp8gOpoou35q+HlkGXJz1YbPZ4cCSnpL079D4PH/ulWkIeMrC980ChLXljDF7Vd5eVvGfX8FGACGaIYspx1ohgAAAABJRU5ErkJggg==
I accept that the TiddlySpace privilege model is very simplistic. I like the idea that we use it as a starting convention for spaces, but that we allow for people to "go under the floorboards" when necessary to get at the full functionality of TiddlyWeb. To make this stuff easier, I'd like to see something like the Hoster user interface exposed through the TiddlySpace backstage.
Welcome to JermoSpace where I keep my writings, jottings and other bits and pieces of digital ephemera.
/***
|''Name''|ActivityStreamPlugin|
|''Version''|0.5.4|
|''Description''|Provides a following macro|
|''Author''|Jon Robson|
|''Requires''|TiddlySpaceFollowingPlugin|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
|''Source''|https://github.com/jdlrobson/TiddlyWiki/raw/master/plugins/TiddlySpaceInstaller/ActivityStreamPlugin.js|
!Usage
{{{<<activity>>}}}
!!Supressing activity
You can supress notifications by  id:
"plugin", "shadow", "standard", "follow", "followYou", "siteInfo", "siteIcon", "ownSiteIcon", "notify", "reply"
e.g. {{{ <<activity supress:siteIcon>> }}} will hide siteIcon activity from you.

!!Supressing people
{{{<<activity ignore:person}}} will ignore all activity where person is the subject of the activity. eg. person followed other-person will not appear in the feed.
!!Controlling displayed dates.
{{{<<activity timestampFormat:"<0hh o' clock>" headingFormat:"0DD/0MM" >>}}} will display date headings as date/month eg.
3rd of January would be displayed as 03/01. This particular timestamp example gives you the hour of the activity.

!!Even more content
{{{<<activity limit:no>>}}} will show you all possible activity in the last X days where X is set at a macro level (advanced developers should see config.macros.activity.RECENTNESS).
!StyleSheet

.activityStream .externalImage, .activityStream .image {
	display: inline;
}

.feedItem .siteIcon {
	display: inline;
}

.activityStream .error {
	background-color: red;
	color: white;
	font-weight: bold;
}

.activityStream .feedItem {
list-style: none;
}

.activityStream .notification {
	background-color: yellow;
	color: black;
}

.activityStream .activityGroupTitle {
	font-weight: bold;
	margin-top: 8px;
}
.activityStream .feedItem {
	margin-left: 8px;
}
!Code
***/
//{{{
(function($) {
var name = "StyleSheetActivityStream";
config.shadowTiddlers[name] = store.getTiddlerText(tiddler.title +
     "##StyleSheet");
store.addNotification(name, refreshStyles);

var followMacro = config.macros.followTiddlers;
var tweb = config.extensions.tiddlyweb;
var tiddlyspace = config.extensions.tiddlyspace;
var scanMacro = config.macros.tsScan;

var modifierSpaceLink = "<<view modifier spaceLink>>";
var spaceTiddlyLink = "<<view server.bag spaceLink server.title>>";
var bagSpaceLink = "<<view server.bag spaceLink>>";
var bagSiteIcon = "<<view server.bag SiteIcon width:24 height:24 label:no preserveAspectRatio:yes>>";
var modifierSiteIcon = "<<view modifier SiteIcon width:24 height:24 label:no preserveAspectRatio:yes>>";
var timestamp = "[<<view modified date '0hh:0mm'>>]";
var replyLink = "<<view server.title replyLink>>";
config.shadowTiddlers.ActivityStreamTemplates = [
	"!notify\n%3 {{notification{%0 %1 has modified %2 in %0 %1 and flagged it for your attention!}}} %8\n",
	"!reply\n%3 {{notification{%0 %1 replied with %2 to your %4 %5 post.}}} %8\n",
	"!userSiteIcon\n%3 %6 %7 has a new ~SiteIcon.\n",
	"!spaceSiteIcon\n%3 %6 %7 updated the SiteIcon for the %0 %1 space.\n",
	"!image\n%3 %6 %7 drew the image %2 in the %1 space.\n",
	"!plugin\n%3 %6 %7 modified a plugin called %2 in the %0 %1 space.\n",
	"!shadow\n%3 %6 %7 modified a shadow tiddler %2 in the %0 %1 space.\n",
	"!geo\n%3 %6 %7 modified a geo tiddler called %2 in the %0 %1 space <<view title maplink 'view on map'>>. %8\n",
	"!followYou\n%3 %0 %1 is now following you.\n",
	"!follow\n%3 %0 %1 is now following %4 %5 <<view server.title link follow>>\n",
	"!siteInfo\n%3 %6 %7 <<view server.bag spaceLink server.title label:described>> the %0 %1 space.\n",
	"!video\n%3 %6 %7 modified a video entitled %2 in the %0 %1 space. %8\n",
	"!standard\n%3 %6 %7 modified %2 in the %0 %1 space. %8\n"
	].join("").format(bagSiteIcon, bagSpaceLink, spaceTiddlyLink, timestamp,
		"<<view server.title SiteIcon width:24 height:24 label:no preserveAspectRatio:yes>>", "<<view server.title spaceLink>>",
		modifierSiteIcon, modifierSpaceLink, replyLink);
story.refreshTiddler("ActivityStreamTemplates", null, true);
config.annotations.ActivityStreamTemplates = "This is a special tiddler used by the ActivityStreamPlugin. It is used for templating notifications. Templates at the top have preference over templates at the bottom.";

var macro = config.macros.activity = {
	default_limit: 50,
	templates: [],
	init: function() {
		var templates = [];
		var regex = new RegExp(/^!(.*)\n/gm);
		var text = store.getTiddlerText("ActivityStreamTemplates");
		var match = regex.exec(text);
		while(match) {
			templates.push(match[1]);
			match = regex.exec(text);
		}
		macro.templates = templates;
	},
	// order matters - earlier templates override older ones
	RECENTNESS: 2, // in days
	TIMESTAMP_FORMAT: "<0hh:0mm>",
	info: {},
	locale: {
		pleaseWait: "please wait while we load your stream...",
		errorLoading: "The activity stream failed to load. Please make sure you have an internet connection and try again.",
		userHeading: "Below is the activity stream for spaces that this space follows with the follow tag. (%0/%1 spaces have been loaded)",
		emptyStream: "Activity stream currently empty. (%0/%1 loaded)"
	},
	getTimeStamp: function() {
		var today = new Date();
		macro._lastRun = today.getTime();
		var previous = new Date(today.setDate(today.getDate() - macro.RECENTNESS));
		return previous.convertToYYYYMMDDHHMM();
	},
	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
		var container = $("<div />").text(macro.locale.pleaseWait).appendTo(place).
			attr("refresh", "macro").attr("macroName", macroName).attr("paramString", paramString);
		var space = tiddlyspace.currentSpace.name;
		var options = macro.getOptions(paramString);
		$(container).attr("activity-limit", options.limit);
		macro._session = Math.random();
		var activityType;
		var sourceActivity = function(user) {
			macro.CURRENT_USER = user.name;
			macro.USER_AT_TAG = "@%0".format(user.name);
			followMacro.getFollowers(function(users) {
				macro.getActivity(container, users, activityType, options);
			}, macro.CURRENT_USER);
			container.attr("activity-type", activityType);
			macro._renderStream(container, activityType, options);
		};

		if(options.user) {
			sourceActivity({name: options.user});
		} else {
			sourceActivity({ name: tiddlyspace.currentSpace.name });
		}
	},
	getOptions: function(paramString) {
		var options = {};
		var args = paramString.parseParams("name")[0];
		var toMap = ["timestampFormat", "headingFormat", "limit", "user"];
		var i;
		for(i = 0; i < toMap.length; i++) {
			var map = toMap[i];
			options[map] = args[map] ? args[map][0] : false;
		}
		var supress = args.supress || [];
		var templates = [];
		var show = args.show ? args.show : macro.templates;
		for(i = 0; i < show.length; i++) {
			var template = show[i];
			if(supress.indexOf(template) === -1) {
				templates.push(template);
			}
		}
		options.ignore = args.ignore || [];
		options.templates = templates;
		return options;
	},
	_getActivityQuery: function(user, timestamp) {
		timestamp = timestamp || macro.getTimeStamp();
		if(user) {
			return "/bags/%0_public/tiddlers?select=modified:>%1".format(user, timestamp);
		} else {
			return false;
		}
	},
	refresh: function(container) {
		var type = $(container).attr("activity-type");
		var limit = $(container).attr("activity-limit");
		var options = macro.getOptions($(container).attr("paramString"));
		options.limit = parseInt(limit, 10);
		macro.renderStream(container, type, options);
	},
	getActivity: function(place, users, type, options) {
		var i;
		var timestamp = macro.activityTimestamp;
		var firstRun =  timestamp ? false : true;
		macro.info.loaded = firstRun ? 0 : macro.info.loaded;
		var afterAjax = function(tiddlers) {
			if(firstRun) {
				macro.info.loaded += 1;
			}
			macro.updateStream(tiddlers, type, options);
			macro.renderStream(place, type, options);
		};
		var success = function(tiddlers) {
			afterAjax(tiddlers);
		};
		var error = function() {
			afterAjax([]);
		};
		if(macro._lastRun > new Date().getTime() - 300000) { // leave 5 minutes between calls
			afterAjax([]);
			return;
		}
		macro.info.queries = users.length;
		for(i = 0; i < users.length; i++) {
			var user = users[i];
			ajaxReq({
				url: macro._getActivityQuery(user, timestamp),
				dataType: "json", success: success, error: error
			});
		}
		macro.activityTimestamp = new Date().convertToYYYYMMDDHHMM();
	},
	reportError: function(place) {
		var error = $("<div />").addClass("error").text(locale.errorLoading);
		$(place).empty().append(error);
	},
	createFeedEntry: function(container, tiddler, options) {
		var item = $("<li />").addClass("feedItem");
		var content = $("<div />").appendTo(item);
		var wikifyPlace = $("<span />").appendTo(content)[0];
		var author = tiddler.modifier;
		if(author && !options.ignore.contains(author)) {
			$(container).append(item);
			config.macros.view.views.activityItem(null, wikifyPlace, null, null, null, tiddler);
			return item;
		}
		return false;
	},
	renderStream: function(place, type, options) {
		window.clearTimeout(macro._renderTimeout);
		macro._renderTimeout = window.setTimeout(function() {
			macro._renderStream(place, type, options);
		}, 100);
	},
	_renderStream: function(place, type, options) {
		$(place).empty();
		var limit = options.limit;
		var container = $("<ul />").addClass("activityStream").appendTo(place);
		var textHeading = macro.locale.userHeading.format(macro.info.loaded, macro.info.queries);
		$("<li />").addClass("listTitle").text(textHeading).appendTo(container);
		var tiddlers = store.sortTiddlers(store.filterTiddlers("[server.activity[true]]"), "-modified"); // TODO: sort headings instead if possible (conflicts with limit)
		var headings = [];
		var groups = {};
		var processed = 0, i, j;
		var atEndOfActivityFeed = true;
		for(i = 0; i < tiddlers.length; i++) {
			var tiddler = tiddlers[i];
			if(options.templates.contains(tiddler.fields["server.activity.type"])) {
				if(!limit || processed < limit) {
					var modified = tiddler.modified;
					if(modified) {
						// format date.
						var modifiedString = modified.formatString(options.headingFormat || config.macros.timeline.dateFormat);
						if(headings.contains(modifiedString)) {
							groups[modifiedString].push(tiddler);
						} else {
							headings.push(modifiedString);
							groups[modifiedString] = [ tiddler ];
						}
					}
					processed += 1;
				} else {
					atEndOfActivityFeed = false;
				}
			}
		}
		var somethingRendered;
		for(i = 0; i < headings.length; i++) {
			var heading = headings[i];
			var _tiddlers = store.sortTiddlers(groups[heading], "-modified");
			var headingEl;
			if(_tiddlers.length > 0) {
				headingEl = $("<li />").addClass("listTitle activityGroupTitle").text(heading).appendTo(container);
			}
			var rendered = [];
			for(j = 0; j < _tiddlers.length; j++) {
				var item = macro.createFeedEntry(container, _tiddlers[j], options);
				if(item) {
					rendered.push(item);
				}
			}
			if(rendered.length === 0) {
				headingEl.remove();
			} else {
				somethingRendered = true;
			}
		}
		if(!somethingRendered) {
			var msg;
			if(macro.gotActivity) { // it has been run before
				msg = macro.locale.emptyStream.format(macro.info.loaded, macro.info.queries);
			} else {
				msg = macro.locale.pleaseWait;
			}
			$(container).text(msg);
		}
		if(!atEndOfActivityFeed) { // show more button
			$("<input />").attr("type", "button").val("more").click(function(ev) {
				var currentLimit = $(place).attr("activity-limit");
				var newLimit = parseInt(currentLimit, 10) + 50;
				macro.default_limit = newLimit;
				$(place).attr("activity-limit", newLimit);
				macro.refresh(place);
			}).appendTo(place);
		}
		this.gotActivity = true;
	},
	updateStream: function(jstiddlers, type, options) {
		// assume already sorted.
		var tiddlers = scanMacro._tiddlerfy(jstiddlers, options);
		var _dirty = store.isDirty();
		$.each(tiddlers, function(i, tid) {
			var info = config.macros.view.activity.getActivityInfo(tid, options);
			tid.fields["server.activity.type"] = info.type;
			tid.fields["server.activity"] = "true";
			if(!tid.tags.contains("excludeLists")) {
				tid.title = tiddlyspace.getLocalTitle(tid.title, tid.fields["server.workspace"]);
				tid.tags = tid.tags.concat(["excludeLists", "excludeMissing", "excludeSearch"]);
				tid.fields.doNotSave = "true";
				store.addTiddler(tid); // save caused unsaved changes alert and slowdown
			}
		});
		store.setDirty(_dirty);
	}
};

config.macros.view.views.activityItem = function(value, place, params, wikifier,
	paramString, tiddler) {
	var info = config.macros.view.activity.getActivityInfo(tiddler, {});
	wikify(info.template, place, null, tiddler);
};

var helper = config.macros.view.activity = {
	_isNotification: function(tiddler) {
		return tiddler.tags.contains(macro.USER_AT_TAG) || tiddler.tags.contains("@all");
	},
	_repliesOn: function() {
		return tiddlyspace.currentSpace.name === macro.CURRENT_USER;
	},
	types: {
		video: function(tiddler) {
			return tiddler.tags.contains("video");
		},
		geo: function(tiddler) {
			return tiddler.fields["geo.lat"] && tiddler.fields["geo.long"];
		},
		siteInfo: function(tiddler) {
			var title = tiddler.fields["server.title"];
			return title === "SiteInfo";
		},
		userSiteIcon: function(tiddler) {
			var modifierBag = "%0_public".format(tiddler.modifier);
			var title = tiddler.fields["server.title"];
			return title === "SiteIcon" && modifierBag === tiddler.fields["server.bag"];
		},
		spaceSiteIcon: function(tiddler) {
			var title = tiddler.fields["server.title"];
			return title === "SiteIcon"; // note userSiteIcon above does the bag check
		},
		shadow: function(tiddler) {
			var title = tiddler.fields["server.title"];
			return title in config.shadowTiddlers;
		},
		plugin: function(tiddler) {
			return tiddler.tags.contains("systemConfig");
		},
		followYou: function(tiddler) {
			var title = tiddler.fields["server.title"];
			title = title.indexOf("@") === 0 ? title.substr(1) : title;
			return tiddler.tags.contains("follow") && title === macro.USER_AT_TAG;
		},
		follow: function(tiddler) {
			return tiddler.tags.contains("follow");
		},
		reply: function(tiddler) {
			var title = tiddler.fields["server.title"];
			var myTiddler = store.getTiddler(tiddler.title);
			var myTiddlerIsOlder = myTiddler && myTiddler.modified < tiddler.modified;
			return store.tiddlerExists(title) && myTiddlerIsOlder && helper._repliesOn(tiddler);
		},
		notify: function(tiddler) {
			var title = tiddler.fields["server.title"];
			var myTiddler = store.getTiddler(title);
			var myTiddlerIsNewer = myTiddler && myTiddler.modified > tiddler.modified;
			return helper._isNotification(tiddler) && helper._repliesOn(tiddler) && !myTiddlerIsNewer;
		},
		standard: function(tiddler) {
			return true;
		},
		image: function(tiddler) {
			return config.macros.image.isImageTiddler(tiddler);
		}
	},
	// each type should point to a slice in ActivityStreamTemplates tiddler
	getActivityInfo: function(tiddler, options) {
		var repliesOn = tiddlyspace.currentSpace.name === macro.CURRENT_USER;
		var activityType, i;
		if(tiddler) {
			for(i = 0; i < macro.templates.length; i++) {
				var type = macro.templates[i];
				if(!activityType && helper.types[type]) {
					if(helper.types[type](tiddler)) {
						activityType = type;
					}
				}
			}
		}
		template = store.getTiddlerText("ActivityStreamTemplates##" + activityType) || locale.standardTemplate;
		return activityType ? { template: template, type: activityType } : false;
	}
};

config.macros.view.views.link = function(value, place, params, wikifier,
		paramString, tiddler) {
		var el = createTiddlyLink(place,value,true);
		if(params[2]) {
			$(el).text(params[2]);
		}
};

config.macros.view.views.maplink = function(value, place, params, wikifier,
		paramString, tiddler) {
		var lat = tiddler.fields["geo.lat"];
		var lng = tiddler.fields["geo.long"];
		var label  = params[2] || value;
		if(lat && lng) {
			$("<a />").attr("href", "http://maps.google.com/maps?saddr=%0,%1".format(lat, lng)).text(label).appendTo(place);
		}
};

var _displayS = tiddlyspace.displayServerTiddler;
tiddlyspace.displayServerTiddler = function(src, title, workspace, callback) {
	var localTitle = tiddlyspace.getLocalTitle(title, workspace);
	var localTiddler = store.getTiddler(localTitle);

	var _callback = function(src, tiddler) {
		if(callback) {
			callback(src, tiddler);
		}
		if(localTiddler) {
			tiddler.fields["server.activity"] = "true";
			tiddler.fields["server.activity.type"] = localTiddler.fields["server.activity.type"];
		}
	};
	return _displayS.apply(this, [ src, title, workspace, _callback ]);
};
}(jQuery));
//}}}
I agree with @cdent that [[ServerSide Wikification]] is less important right now than overall user experience and security concerns.
/***
|''Name''|TiddlySpacePublishingCommands|
|''Version''|0.8.5|
|''Status''|@@beta@@|
|''Description''|toolbar commands for drafting and publishing|
|''Author''|Jon Robson|
|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpacePublishingCommands.js|
|''CoreVersion''|2.6.1|
|''Requires''|TiddlySpaceConfig TiddlySpaceFilters|
!Usage
Provides changeToPrivate, changeToPublic and saveDraft commands
Provides TiddlySpacePublisher macro.
{{{<<TiddlySpacePublisher type:private>>}}} make lots of private tiddlers public.
{{{<<TiddlySpacePublisher type:public>>}}} make lots of public tiddlers public.
!TODO
* add public argument?
!Code
***/
//{{{
(function($) {

var tiddlyspace = config.extensions.tiddlyspace;
var originMacro = config.macros.tiddlerOrigin;

tiddlyspace.getTiddlerStatusType = function(tiddler) {
	var isShadow = store.isShadowTiddler(tiddler.title);
	var exists = store.tiddlerExists(tiddler.title);
	if(isShadow && !exists) {
		return "shadow";
	} else if(!exists) {
		return "missing";
	} else {
		var types = ["private", "public"];
		var type = "external";
		for(var i = 0; i < types.length; i++) {
			var t = types[i];
			type = config.filterHelpers.is[t](tiddler) ? t : type;
		}
		if(config.filterHelpers.is.unsynced(tiddler)) {
			type = type == "private" ? "unsyncedPrivate" : "unsyncedPublic";
		}
		return type;
	}
};

var cmd = config.commands.publishTiddler = {
	text: "make public",
	tooltip: "Change this private tiddler into a public tiddler",
	errorMsg: "Error publishing %0: %1",

	isEnabled: function(tiddler) {
		return !readOnly && config.filterHelpers.is["private"](tiddler);
	},
	handler: function(ev, src, title) {
		var tiddler = store.getTiddler(title);
		if(tiddler) {
			var newBag = cmd.toggleBag(tiddler.fields["server.bag"]);
			this.moveTiddler(tiddler, {
				title: tiddler.fields["publish.name"] || tiddler.title,
				fields: { "server.bag": newBag }
			});
		}
	},
	toggleBag: function(bag, to) {
		var newBag;
		if(typeof bag != typeof "") {
			var tiddler = bag;
			bag = tiddler.fields["server.bag"];
		}
		if(bag.indexOf("_private") > -1) { // should make use of endsWith
			to = to ? to : "public";
			newBag = bag.replace("_private", "_" + to);
		} else {
			to = to ? to : "private";
			newBag = bag.replace("_public", "_" + to);
		}
		return newBag;
	},
	copyTiddler: function(title, newTitle, newBag, callback) {
		var original = store.getTiddler(title);
		newTitle = newTitle ? newTitle : title;
		var adaptor = original.getAdaptor();
		var publish = function(original, callback) {
			var tiddler = $.extend(new Tiddler(newTitle), original);
			tiddler.fields = $.extend({}, original.fields, {
				"server.bag": newBag,
				"server.workspace": "bags/%0".format(newBag),
				"server.page.revision": "false"
			});
			delete tiddler.fields["server.title"];
			tiddler.title = newTitle;
			adaptor.putTiddler(tiddler, null, null, callback);
		};
		publish(original, callback);
	},
	moveTiddler: function(tiddler, newTiddler, callback) {
			var info = {
			copyContext: {},
			deleteContext: {}
		};
		var _dirty = store.isDirty();
		var adaptor = tiddler.getAdaptor();
		var newTitle = newTiddler.title;
		var oldTitle = tiddler.title;
		delete tiddler.fields["server.workspace"];
		var oldBag = tiddler.fields["server.bag"];
		var newBag = newTiddler.fields["server.bag"];
		var newWorkspace = "bags/%0".format(newBag);
		cmd.copyTiddler(oldTitle, newTitle, newBag, function(ctx) {
				info.copyContext = ctx;
				var context = {
					tiddler: tiddler,
					workspace: newWorkspace
				};
				store.addTiddler(ctx.tiddler);
				tiddler.title = oldTitle; // for cases where a rename occurs
				if(ctx.status) { // only do if a success
					if(oldBag != newBag) {
						adaptor.deleteTiddler(tiddler, context, {}, function(ctx) {
							info.deleteContext = ctx;
							var el;
							if(tiddler) {
								tiddler.fields["server.workspace"] = newWorkspace;
								tiddler.fields["server.bag"] = newBag;
							}
							el = el ? el : story.refreshTiddler(oldTitle, null, true);
							if(oldTitle != newTitle) {
								store.deleteTiddler(oldTitle);
								store.notify(oldTitle, true);
							}
							if(el) {
								story.displayTiddler(el, newTitle);
							}
							if(oldTitle != newTitle) {
								story.closeTiddler(oldTitle);
							}
							if(callback) {
								callback(info);
							}
							store.setDirty(_dirty);
						});
					} else {
						if(callback) {
							callback(info);
						}
					}
					refreshDisplay();
				}
		});
	}
};

var changeToPrivate = config.commands.changeToPrivate = {
	text: "make private",
	tooltip: "turn this public tiddler into a private tiddler",
	isEnabled: function(tiddler) {
		return !readOnly && config.filterHelpers.is["public"](tiddler);
	},
	handler: function(event, src, title) {
		var tiddler = store.getTiddler(title);
		var newBag = cmd.toggleBag(tiddler, "private");
		var newTiddler = { title: title, fields: { "server.bag": newBag }};
		cmd.moveTiddler(tiddler, newTiddler);
	}
};
config.commands.changeToPublic = cmd;

/* Save as draft command */
var saveDraftCmd = config.commands.saveDraft = {
	text: "save draft",
	tooltip: "Save as a private draft",
	isEnabled: function(tiddler) {
		return changeToPrivate.isEnabled(tiddler);
	},
	getDraftTitle: function(title) {
		var draftTitle;
		var draftNum = "";
		while(!draftTitle) {
			var suggestedTitle = "%0 [draft%1]".format(title, draftNum);
			if(store.getTiddler(suggestedTitle)) {
				draftNum = !draftNum ? 2 : draftNum + 1;
			} else {
				draftTitle = suggestedTitle;
			}
		}
		return draftTitle;
	},
	createDraftTiddler: function(title, gatheredFields) {
		var tiddler = store.getTiddler(title);
		var draftTitle = saveDraftCmd.getDraftTitle(title);
		var draftTiddler = new Tiddler(draftTitle);
		if(tiddler) {
			$.extend(true, draftTiddler, tiddler);
		} else {
			$.extend(draftTiddler.fields, config.defaultCustomFields);
		}
		for(var fieldName in gatheredFields) {
			if(TiddlyWiki.isStandardField(fieldName)) {
				draftTiddler[fieldName] = gatheredFields[fieldName];
			} else {
				draftTiddler.fields[fieldName] = gatheredFields[fieldName];
			}
		}
		var privateBag = tiddlyspace.getCurrentBag("private");
		var privateWorkspace = tiddlyspace.getCurrentWorkspace("private");
		draftTiddler.title = draftTitle;
		draftTiddler.fields["publish.name"] = title;
		draftTiddler.fields["server.workspace"] = privateWorkspace;
		draftTiddler.fields["server.bag"] = privateBag;
		draftTiddler.fields["server.title"] = draftTitle;
		draftTiddler.fields["server.page.revision"] = "false";
		delete draftTiddler.fields["server.etag"];
		return draftTiddler;
	},
	handler: function(ev, src, title) {
		var tiddler = store.getTiddler(title); // original tiddler
		var tidEl = story.getTiddler(title);
		var uiFields = {};
		story.gatherSaveFields(tidEl, uiFields);
		var tid = saveDraftCmd.createDraftTiddler(title, uiFields);
		tid = store.saveTiddler(tid.title, tid.title, tid.text, tid.modifier,
			new Date(), tid.tags, tid.fields);
		autoSaveChanges(null, [tid]);
		story.closeTiddler(title);
		story.displayTiddler(src, title);
		story.displayTiddler(src, tid.title);
	}
};

var macro = config.macros.TiddlySpacePublisher = {
	locale: {
		title: "Batch Publisher",
		changeStatusLabel: "Make %0",
		noTiddlersText: "No tiddlers to publish",
		changeStatusPrompt: "Make all the selected tiddlers %0.",
		description: "Change tiddlers from %0 to %1 in this space"
	},

	listViewTemplate: {
		columns: [
			{ name: "Selected", field: "Selected", rowName: "title", type: "Selector" },
			{ name: "Tiddler", field: "tiddler", title: "Tiddler", type: "Tiddler" },
			{ name: "Status", field: "status", title: "Status", type: "WikiText" }
		],
		rowClasses: []
	},

	changeStatus: function(tiddlers, status, callback) { // this is what is called when you click the publish button
		var publicBag;
		for(var i = 0; i < tiddlers.length; i++) {
			var tiddler = tiddlers[i];
			var newTiddler = {
				title: tiddler.title,
				fields: { "server.bag": cmd.toggleBag(tiddler, status) }
			};
			cmd.moveTiddler(tiddler, newTiddler, callback);
		}
	},
	getMode: function(paramString) {
		var params = paramString.parseParams("anon")[0];
		var status = params.type ?
			(["public", "private"].contains(params.type[0]) ? params.type[0] : "private") :
			"private";
		var newStatus = status == "public" ? "private" : "public";
		return [status, newStatus];
	},
	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
		var wizard = new Wizard();
		var locale = macro.locale;
		var status = macro.getMode(paramString);
		wizard.createWizard(place, locale.title);
		wizard.addStep(macro.locale.description.format(status[0], status[1]),
			'<input type="hidden" name="markList" />');
		var markList = wizard.getElement("markList");
		var listWrapper = $("<div />").addClass("batchPublisher").
			attr("refresh", "macro").attr("macroName", macroName).
			attr("params", paramString)[0];
		markList.parentNode.insertBefore(listWrapper, markList);
		$.data(listWrapper, "wizard", wizard);
		macro.refresh(listWrapper);
	},
	getCheckedTiddlers: function(listWrapper, titlesOnly) {
		var tiddlers = [];
		$(".chkOptionInput[rowName]:checked", listWrapper).each(function(i, el) {
			var title = $(el).attr("rowName");
			if(titlesOnly) {
				tiddlers.push(title);
			} else {
				tiddlers.push(store.getTiddler(title));
			}
		});
		return tiddlers;
	},
	refresh: function(listWrapper) {
		var checked = macro.getCheckedTiddlers(listWrapper, true);
		var paramString = $(listWrapper).empty().attr("params");
		var wizard = $.data(listWrapper, "wizard");
		var locale = macro.locale;
		var params = paramString.parseParams("anon")[0];
		var publishCandidates = [];
		var status = macro.getMode(paramString);
		var pubType = status[0];
		var newPubType = status[1];
		var tiddlers = params.filter ? store.filterTiddlers(params.filter[0]) :
			store.filterTiddlers("[is[%0]]".format(pubType));
		var enabled = [];
		for(var i = 0; i < tiddlers.length; i++) {
			var tiddler = tiddlers[i];
			var title = tiddler.title;
			if(!tiddler.tags.contains("excludePublisher") && title !== "SystemSettings") {
				publishCandidates.push({ title: title, tiddler: tiddler, status: pubType});
			}
			if(checked.contains(title)) {
				enabled.push("[rowname=%0]".format(title));
			}
		}

		if(publishCandidates.length === 0) {
			createTiddlyElement(listWrapper, "em", null, null, locale.noTiddlersText);
		} else {
			var listView = ListView.create(listWrapper, publishCandidates, macro.listViewTemplate);
			wizard.setValue("listView", listView);
			var btnHandler = function(ev) {
				var tiddlers = macro.getCheckedTiddlers(listWrapper);
				var callback = function(status) {
					$(".batchPublisher").each(function(i, el) {
						macro.refresh(el);
					});
				};
				macro.changeStatus(tiddlers, newPubType, callback);
			};
			wizard.setButtons([{
				caption: locale.changeStatusLabel.format(newPubType),
				tooltip: locale.changeStatusPrompt.format(newPubType),
				onClick: btnHandler
			}]);
			$(enabled.join(",")).attr("checked", true); // retain what was checked before
		}
	}
};

})(jQuery);
//}}}

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>edit</title>
    <link rel="stylesheet"
          type="text/css"
          href="/bags/common/tiddlers/reset.css">
    <link rel="stylesheet"
           type="text/css"
           href="/edit.css">
</head>
<body>
    <div id="container">
        <div class="cleancol" id="recents">
            <h1>Changes</h1>
            <ul>
            </ul>
        </div>
        <div class="cleancol" id="info">
            <ul id="actions">
                <li><button id="saver">Save & Return</button></li>
                <li><button id="save">Save</button></li>
                <li><button id="revert">Revert</button></li>
                <li><button id="delete">Delete</button></li>
            </ul>
            <div id="type">
                <ul>
                    <li><label><input name="type" type="radio"
                        value="text/x-tiddlywiki">TiddlyWikiText</label></li>
                    <li><label><input name="type" type="radio"
                        value="text/x-markdown">Markdown</label></li>
                    <li><label><input name="type" type="radio"
                        value="text/css">CSS</label></li>
                    <li><label><input name="type" type="radio"
                        value="text/javascript">JavaScript</label></li>
                    <li><label><input name="type" type="radio"
                        value="text/html">HTML</label></li>
                    <li><label><input name="type" type="radio"
                        value="text/plain">Plain Text</label></li>
                    <li><label><input name="type" type="radio"
                        value="other">Other</label></li>
                </ul>
            </div>
            <div id="message"></div>
            <div id="tags">
            </div>
        </div>
        <div class="cleancol" id="editor">
            <h1></h1>
            <textarea class="inputs" name="text"></textarea><br/>
            <input class="inputs" name="tags" value="">
        </div>
    </div>

    <script src="/bags/common/tiddlers/jquery.js"></script>
    <script src="/bags/edit_public/tiddlers/edit.js"></script>
    <script src="/status.js"></script>
    <script src="/bags/common/tiddlers/backstage.js"></script>
</body>
</html>
!Spaces
<<groupBy server.bag>>

!Private
<<list filter [is[private]]>>

!Public
<<list filter [is[public]]>>

!Drafts
<<list filter [is[draft]]>>
It would be desirable for the various system tiddlers comprising TiddlySpace to be delivered via ordinary space inclusion, so that users can control the recipe cascade in the ordinary way.

We need to minimise the number of system tiddlers, too, using techniques such as the following:
* There are several tiddlers that define text for the {{{<<tab>>}}} macro, like TabUnpublished, BackstageOptions, BackstageSpaceInclusion etc. These could be combined into a single TiddlySpaceConfiguration tiddler, divided into sections that would then be referenced from the {{{<<tab>>}}} macro using the {{{TiddlySpaceConfiguration##Options}}} syntax
* Plugins that cannot plausibly be used on their own might be combined into a single TiddlySpace megaplugin
/***
|''Name''|TiddlySpaceBackstage|
|''Version''|0.8.0|
|''Description''|Provides a TiddlySpace version of the backstage and a homeLink macro|
|''Status''|@@beta@@|
|''Contributors''|Jon Lister, Jon Robson, Colm Britton|
|''Source''|http://github.com/TiddlySpace/tiddlyspace/raw/master/src/plugins/TiddlySpaceBackstage.js|
|''Requires''|TiddlySpaceConfig ImageMacroPlugin TiddlySpaceViewTypes|
!StyleSheet
.tiddler .error.annotation .button{
	display: inline-block;
}

#backstageArea {
	z-index: 49;
	color: white;
	background-color: black;
	background: -webkit-gradient(linear,left bottom,left top,color-stop(0, #222),color-stop(0.5, #333),color-stop(1, #555));
	background: -moz-linear-gradient(center bottom,#222 0%, #333 50%, #555 100%);
	filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff555555, endColorstr=#ff222222);
	-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#ff555555, endColorstr=#ff222222)";
	height: 25px;
	padding: 0;
}

#backstageButton {
	overflow: hidden;
}

#backstageButton #backstageShow,
#backstageButton #backstageHide {
	margin: 0px;
	padding: 0px;
}

#backstageButton #backstageShow:hover,
#backstageButton #backstageHide:hover {
	background: none;
	color: none;
}

#backstageButton img,
#backstageButton svg {
	width: 24px;
	height: 24px;
}

#messageArea {
	top: 50px;
}

#backstageToolbar {
	position: relative;
}

#backstageArea a {
	padding: 0px;
	margin-left: 0px;
	color: white;
	background: none;
}

#backstageArea a:hover {
	background-color: white;
}

#backstage ol,
#backstage ul {
	padding: auto;
}

#backstageButton a {
	margin: 0;
}

.backstagePanelBody ul {
	padding: 5px;
	margin: 5px;
}

#backstage #backstagePanel {
	margin-left: 5%;
	padding: 0em;
	margin-right: 5%;
}

#backstageToolbar a {
	position: relative;
}

#backstageArea a.backstageSelTab,
#backstageToolbar .backstageTask {
	line-height: 25px;
	color: #767676;
}

.backstageTask .externalImage,
.backstageTask .image {
	display: inline;
}

#backstageToolbar a span {
	z-index: 2;
}

a.backstageTask {
	display: inline;
        margin-left: 1em !important;
}

.backstagePanelBody .button {
	display: inline-block;
	margin-right: 10px;
}

.backstagePanelBody {
	margin: 0 0 0 0.6em;
	padding: 0.4em 0.5em 1px 0.5em;
}

#backstage table {
	margin: auto;
}

#backstage .wizard table {
	border: 0px;
	margin: 0;
}

#backstage div  li.listLink {
	border: 0px;
	width: 78%;
	font-size: 0.7em;
}

#backstage div li.listTitle {
	font-weight: bold;
	text-decoration: underline;
	font-size: 1em;
	background: #ccc;
	width: 100%;
}

#backstage fieldset {
	border: solid 1px [[ColorPalette::Background]];
}

#backstage .viewer table,#backstage table.twtable {
	border: 0px;
}

#backstageToolbar img {
	padding: 0;
}

#backstage .wizard,
#backstage .wizardFooter {
	background: none;
}

.viewer td, .viewer tr, .twtable td, .twtable tr {
	border: 1px solid #eee;
}

#backstage .inlineList ul li {
	background-color: [[ColorPalette::Background]];
	border: solid 1px [[ColorPalette::TertiaryMid]];
	display: block;
	float: left;
	list-style: none;
	margin-right: 1em;
	padding: 0.5em;
}

.backstageClear, .inlineList form {
	clear: both;
	display: block;
	margin-top: 3em;
}

.tiddlyspaceMenu {
	text-align: center;
}

span.chunkyButton {
	display: inline-block;
	padding: 0;
	margin: 0;
	border: solid 2px #000;
	background-color: #04b;
}

span.chunkyButton a.button, span.chunkyButton a:active.button {
	white-space: nowrap;
	font-weight: bold;
	font-size: 1.8em;
	color: #fff;
	text-align: center;
	padding: 0.5em 0.5em;
	margin: 0;
	border-style: none;
	display: block;
}

span.chunkyButton:hover {
	background-color: #014;
}

span.chunkyButton a.button:hover {
	border-style: none;
	background: none;
	color: #fff;
}

#backstage .unpluggedSpaceTab .wizard,
.unpluggedSpaceTab .wizard {
	background: white;
	border: 2px solid #CCC;
	padding: 5px;
}

.syncKey .keyItem {
	border: 1px solid black;
	display: inline-block;
	margin: 0.2em;
	padding: 0.1em 0.1em 0.1em 0.1em;
}

.keyHeading {
	font-size: 2em;
	font-weight: bold;
	margin: 0.4em 0em -0.2em;
}

.unpluggedSpaceTab .putToServer,
.unpluggedSpaceTab .notChanged {
	display: none;
}

.tiddlyspaceMenu ul {
	margin: 0;
	padding: 0;
}

.tiddlyspaceMenu ul li {
	list-style: none;
}

.unsyncedChanges .unsyncedList {
	display: block;
}

.unsyncedList {
	display: none;
}
!Code
***/
//{{{
(function ($) {
    var name = "StyleSheet" + tiddler.title;
    config.shadowTiddlers[name] = "/*{{{*/\n%0\n/*}}}*/".
        format(store.getTiddlerText(tiddler.title + "##StyleSheet")); // this accesses the StyleSheet section of the current tiddler (the plugin that contains it)
    store.addNotification(name, refreshStyles);

    if (!config.extensions.tiddlyweb.status.tiddlyspace_version) { // unplugged
        config.extensions.tiddlyweb.status.tiddlyspace_version = "<unknown>";
        config.extensions.tiddlyweb.status.server_host = {
            url:config.extensions.tiddlyweb.host }; // TiddlySpaceLinkPlugin expects this
    }
    var disabled_tasks_for_nonmembers = ["tiddlers", "plugins", "batch", "sync"];

    var tweb = config.extensions.tiddlyweb;
    var tiddlyspace = config.extensions.tiddlyspace;
    var currentSpace = tiddlyspace.currentSpace.name;
    var imageMacro = config.macros.image;

    if (config.options.chkBackstage === undefined) {
        config.options.chkBackstage = false;
    }

// Set up Backstage
    config.tasks = {};
    config.tasks.status = {
        text:"status",
        tooltip:"TiddlySpace Info",
        content:"<<tiddler Backstage##Menu>>"
    };
    config.tasks.tiddlers = {
        text:"tiddlers",
        tooltip:"tiddlers control panel",
        content:"<<tiddler Backstage##BackstageTiddlers>>"
    };
    config.tasks.plugins = {
        text:"plugins",
        tooltip:"Manage installed plugins",
        content:"<<tiddler Backstage##Plugins>>"
    };
    config.tasks.batch = {
        text:"batch",
        tooltip:"Batch manage public/private tiddlers",
        content:"<<tiddler Backstage##BatchOps>>"
    };
    config.tasks.tweaks = {
        text:"tweaks",
        tooltip:"Tweak TiddlyWiki behaviors",
        content:"<<tiddler Backstage##Tweaks>>"
    };
    config.tasks.exportTiddlers = {
        text:"import/export",
        tooltip:"Import/export tiddlers from/to a TiddlyWiki",
        content:"<<tiddler Backstage##ImportExport>>"
    };
    config.tasks.sync = {
        text:"sync",
        tooltip:"Check Sync status",
        content:"<<tiddler Backstage##SpaceUnplugged>>"
    };

    if (window.location.protocol === "file:") {
        config.unplugged = true;
    }

    config.backstageTasks = ["status", "tiddlers", "plugins",
        "batch", "tweaks", "exportTiddlers", "sync"];

    config.messages.backstage.prompt = "";
// initialize state
    var _show = backstage.show;
    backstage.show = function () {
        // selectively hide backstage tasks and tabs based on user status
        var tasks = $("#backstageToolbar .backstageTask").show();
        var bs = backstage.tiddlyspace;
        if (!config.unplugged) {
            tweb.getUserInfo(function (user) {
                if (user.anon) {
                    jQuery.each(disabled_tasks_for_nonmembers, function (i, task) {
                        var taskIndex = config.backstageTasks.indexOf(task);
                        if (taskIndex !== -1) {
                            config.backstageTasks.splice(taskIndex, 1);
                        }
                    });
                    config.messages.memberStatus = bs.locale.loggedout;
                } else {
                    config.messages.memberStatus = readOnly ?
                        bs.locale.nonmember : bs.locale.member;
                }
            });
        } else {
            config.messages.memberStatus = bs.locale.unplugged;
        }

        // display backstage
        return _show.apply(this, arguments);
    };
    if (readOnly) {
        jQuery.each(disabled_tasks_for_nonmembers, function (i, task) {
            var taskIndex = config.backstageTasks.indexOf(task);
            if (taskIndex !== -1) {
                config.backstageTasks.splice(taskIndex, 1);
            }
        });
    }

    var tasks = config.tasks;
    var commonUrl = "/bags/common/tiddlers/%0";

    backstage.tiddlyspace = {
        locale:{
            member:"You are a member of this space.",
            nonmember:"You are not a member of this space.",
            loggedout:"You are currently logged out of TiddlySpace.",
            unplugged:"You are unplugged."
        },
        showButton:function () {
            var showBtn = $("#backstageShow")[0];
            var altText = $(showBtn).text();
            $(showBtn).empty();
            imageMacro.renderImage(showBtn, "backstage.svg",
                { altImage:commonUrl.format("backstage.png"), alt:altText});
        },
        hideButton:function () {
            var hideBtn = $("#backstageHide")[0];
            var altText = $(hideBtn).text();
            $(hideBtn).empty();
            imageMacro.renderImage(hideBtn, "close.svg",
                { altImage:commonUrl.format("close.png"), alt:altText, width:24, height:24 });
        }
    };

    var _init = backstage.init;
    backstage.init = function () {
        _init.apply(this, arguments);
        var init = function (user) {
            var bs = backstage.tiddlyspace;
            bs.showButton();
            bs.hideButton();
        };
        tweb.getUserInfo(init);
    };

    var home = config.macros.homeLink = {
        locale:{
            linkText:"your home space"
        },
        handler:function (place) {
            var container = $("<span />").appendTo(place)[0];
            tweb.getUserInfo(function (user) {
                if (!user.anon && user.name !== currentSpace) {
                    createSpaceLink(container, user.name, null, home.locale.linkText);
                }
            });
        }
    };

    config.macros.exportSpace = {
        handler:function (place, macroName, params) {
            var filename = params[0] ||
                "/tiddlers.wiki?download=%0.html".format(currentSpace);
            $('<a class="button">download</a>').// XXX: i18n
                attr("href", filename).appendTo(place);
        }
    };

}(jQuery));
//}}}
/***
|''Name''|RevisionsCommandPlugin|
|''Description''|provides access to tiddler revisions|
|''Author''|FND|
|''Contributors''|Martin Budden|
|''Version''|0.3.3|
|''Status''|@@beta@@|
|''Source''|http://svn.tiddlywiki.org/Trunk/association/plugins/RevisionsCommandPlugin.js|
|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/association/plugins/|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
|''CoreVersion''|2.6.0|
|''Keywords''|serverSide|
!Usage
Extend [[ToolbarCommands]] with {{{revisions}}}.
!Revision History
!!v0.1 (2009-07-23)
* initial release (renamed from experimental ServerCommandsPlugin)
!!v0.2 (2010-03-04)
* suppressed wikification in diff view
!!v0.3 (2010-04-07)
* restored wikification in diff view
* added link to side-by-side diff view
!To Do
* strip server.* fields from revision tiddlers
* resolve naming conflicts
* i18n, l10n
* code sanitizing
* documentation
!Code
***/
//{{{
(function($) {

jQuery.twStylesheet(".diff { white-space: pre, font-family: monospace }",
	{ id: "diff" });

var cmd = config.commands.revisions = {
	type: "popup",
	hideShadow: true,
	text: "revisions",
	tooltip: "display tiddler revisions",
	revTooltip: "", // TODO: populate dynamically?
	loadLabel: "loading...",
	loadTooltip: "loading revision list",
	selectLabel: "select",
	selectTooltip: "select revision for comparison",
	selectedLabel: "selected",
	compareLabel: "compare",
	linkLabel: "side-by-side view",
	revSuffix: " [rev. #%0]",
	diffSuffix: " [diff: #%0 #%1]",
	dateFormat: "YYYY-0MM-0DD 0hh:0mm",
	listError: "revisions could not be retrieved",

	handlePopup: function(popup, title) {
		title = this.stripSuffix("rev", title);
		title = this.stripSuffix("diff", title);
		var tiddler = store.getTiddler(title);
		var type = _getField("server.type", tiddler);
		var adaptor = new config.adaptors[type]();
		var limit = null; // TODO: customizable
		var context = {
			host: _getField("server.host", tiddler),
			workspace: _getField("server.workspace", tiddler)
		};
		var loading = createTiddlyButton(popup, cmd.loadLabel, cmd.loadTooltip);
		var params = { popup: popup, loading: loading, origin: title };
		adaptor.getTiddlerRevisionList(title, limit, context, params, this.displayRevisions);
	},

	displayRevisions: function(context, userParams) {
		removeNode(userParams.loading);
		if(context.status) {
			var callback = function(ev) {
				var e = ev || window.event;
				var revision = resolveTarget(e).getAttribute("revision");
				context.adaptor.getTiddlerRevision(tiddler.title, revision, context,
					userParams, cmd.displayTiddlerRevision);
			};
			var table = createTiddlyElement(userParams.popup, "table");
			for(var i = 0; i < context.revisions.length; i++) {
				var tiddler = context.revisions[i];
				var row = createTiddlyElement(table, "tr");
				var timestamp = tiddler.modified.formatString(cmd.dateFormat);
				var revision = tiddler.fields["server.page.revision"];
				var cell = createTiddlyElement(row, "td");
				createTiddlyButton(cell, timestamp, cmd.revTooltip, callback, null,
					null, null, { revision: revision });
				cell = createTiddlyElement(row, "td", null, null, tiddler.modifier);
				cell = createTiddlyElement(row, "td");
				createTiddlyButton(cell, cmd.selectLabel, cmd.selectTooltip,
					cmd.revisionSelected, null, null, null,
					{ index:i, revision: revision, col: 2 });
				cmd.context = context; // XXX: unsafe (singleton)!?
			}
		} else {
			$("<li />").text(cmd.listError).appendTo(userParams.popup);
		}
	},

	revisionSelected: function(ev) {
		var e = ev || window.event;
		e.cancelBubble = true;
		if(e.stopPropagation) {
			e.stopPropagation();
		}
		var n = resolveTarget(e);
		var index = n.getAttribute("index");
		var col = n.getAttribute("col");
		while(!index || !col) {
			n = n.parentNode;
			index = n.getAttribute("index");
			col = n.getAttribute("col");
		}
		cmd.revision = n.getAttribute("revision");
		var table = n.parentNode.parentNode.parentNode;
		var rows = table.childNodes;
		for(var i = 0; i < rows.length; i++) {
			var c = rows[i].childNodes[col].firstChild;
			if(i == index) {
				if(c.textContent) {
					c.textContent = cmd.selectedLabel;
				} else {
					c.text = cmd.selectedLabel;
				}
			} else {
				if(c.textContent) {
					c.textContent = cmd.compareLabel;
				} else {
					c.text = cmd.compareLabel;
				}
				c.onclick = cmd.compareSelected;
			}
		}
	},

	compareSelected: function(ev) {
		var e = ev || window.event;
		var n = resolveTarget(e);
		var context = cmd.context;
		context.rev1 = n.getAttribute("revision");
		context.rev2 = cmd.revision;
		context.tiddler = context.revisions[n.getAttribute("index")];
		context.format = "unified";
		context.adaptor.getTiddlerDiff(context.tiddler.title, context,
			context.userParams, cmd.displayTiddlerDiffs);
	},

	displayTiddlerDiffs: function(context, userParams) {
		var tiddler = context.tiddler;
		tiddler.title += cmd.diffSuffix.format([context.rev1, context.rev2]);
		tiddler.text = "{{diff{\n" + context.diff + "\n}}}";
		tiddler.tags = ["diff"];
		tiddler.fields.doNotSave = "true"; // XXX: correct?
		if(!store.getTiddler(tiddler.title)) {
			store.addTiddler(tiddler);
		}
		var src = story.getTiddler(userParams.origin);
		var tiddlerEl = story.displayTiddler(src, tiddler);
		var uri = context.uri.replace("format=unified", "format=horizontal");
		var link = $('<a target="_blank" />').attr("href", uri).text(cmd.linkLabel);
		$(".viewer", tiddlerEl).prepend(link);
	},

	displayTiddlerRevision: function(context, userParams) {
		var tiddler = context.tiddler;
		tiddler.title += cmd.revSuffix.format([tiddler.fields["server.page.revision"]]);
		tiddler.fields.doNotSave = "true"; // XXX: correct?
		if(!store.getTiddler(tiddler.title)) {
			store.addTiddler(tiddler);
		}
		var src = story.getTiddler(userParams.origin);
		story.displayTiddler(src, tiddler);
	},

	stripSuffix: function(type, title) {
		var str = cmd[type + "Suffix"];
		var i = str.indexOf("%0");
		i = title.indexOf(str.substr(0, i));
		if(i != -1) {
			title = title.substr(0, i);
		}
		return title;
	}
};

var _getField = function(name, tiddler) {
	return tiddler.fields[name] || config.defaultCustomFields[name];
};

})(jQuery);
//}}}