<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
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
/*{{{*/
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]];}
.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: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;}
/*}}}*/
/***
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='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<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>>
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]]
<<importTiddlers>>
<<AgendaTrackTabs>>
{{vevent{{{time{<<dtstart rr_session_starttime '0hh:0mm'>> - <<dtend rr_session_endtime '0hh:0mm'>> }}} {{title summary{<<LinkMaker type:text display:rr_session_title linkto:title>>}}}}}}
<<LinkMaker type:text display:modifier linkto:title >>
/***
|''Name:''|AgendaTrackPlugin|
|''Description:''|Helpers for Agenda Track Items|
|''Author:''|PaulDowney (psd (at) osmosoft (dot) com)|
|''CodeRepository:''|http://svn.tiddlywiki.org/Trunk/verticals/ripplerap/plugins/AgendaTrackPlugin.js |
|''Version:''|0.1|
|''License:''|[[BSD open source license]]|
|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
|''~CoreVersion:''|2.2|

List related sessions for a track:
&lt;&lt;AgendaTrackSessions&gt;&gt;
<<AgendaTrackSessions>>

List tracks as tabs:
&lt;&lt;AgendaTrackTabs&gt;&gt;
<<AgendaTrackTabs>>

***/

//{{{
if(!version.extensions.AgendaTrackPlugin) {
version.extensions.AgendaTrackPlugin = {installed:true};

	config.macros.AgendaTrack = {};

	config.macros.AgendaTrack.getAgenda = function() {
		var me = config.macros.AgendaTrack;
		config.macros.importWorkspace.getTiddlers(me.uri, me.adaptor);
		return false;
	};

	config.macros.RefreshAgenda = {};
	config.macros.RefreshAgenda.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
                var me = config.macros.AgendaTrack;
                var button = createTiddlyButton(place,'Download the conference agenda','Click here to download the Agenda',me.getAgenda);
	};

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

		var text = '<<tabs txtMainTab';
		var tracks = store.getTaggedTiddlers("track");
		for (var i=0;i<tracks.length;i++) {
			s = ' "' + tracks[i].title + '"';
			text = text  + s + s + s;
		}
			
		text = text + '>>';
		wikify(text,place);
	};

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

		var track = store.getValue(tiddler,'rr_session_tag');
		var text = "<<listRelated tag:" + track 
			+ " filter:[tag[" + track + "]][sort[+rr_session_starttime]]"
			+ " hrel:raps template:AgendaItemsTemplate"
			+ " subtemplate:AgendaSubItemsTemplate>>";

		wikify(text,place);
	};

	config.macros.Speaker = {};
	config.macros.Speaker.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
		var co = store.getValue(tiddler,'speaker_co');
		var text = "[img["+ store.getValue(tiddler,'speaker_img') + "]]"
			+ "<html><a class='fn url' href='" + store.getValue(tiddler,'speaker_uri') + "'>" 
			    +  tiddler.title 
			    + "</a></html>" 
			+ " " + (co?co:"");
		wikify(text,place);
	};

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

		var tagged = store.getTaggedTiddlers("session");

		// search for sessions where speaker list contains speaker
		var sess = [];
		for(var t=0; t<tagged.length; t++) {
		    var speakers = store.getValue(tagged[t],'rr_session_speakers');
		    if (speakers) {
			var slist = speakers.split(/\s*,\s*/);
			for(var s=0; s<slist.length; s++) {
			    if (slist[s].trim() == tiddler.title) {
				sess.push("[[" + store.getValue(tagged[t],'rr_session_title') + "|" + tagged[t].title + "]]");
			    }
			}
		    }
		}

		// var text = sess.length ? "*" + sess.join("\n*") + "" : "";
		var text = sess.length ? sess.join(", ") : "";
		wikify(text,place);
	};

} //# end of 'install only once'
//}}}
/***
|''Name:''|MicroformatDatePlugin|
|''Description:''|Assist constructing Microformat dates in a TiddlyWiki|
|''Author:''|PaulDowney (psd (at) osmosoft (dot) com) |
|''Source:''|http://whatfettle.com/2008/07/MicroformatDatePlugin/ |
|''CodeRepository:''|http://svn.tiddlywiki.org/Trunk/contributors/PaulDowney/plugins/MicroformatDatePlugin/ |
|''Version:''|0.1|
|''License:''|[[BSD License|http://www.opensource.org/licenses/bsd-license.php]] |
|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
|''~CoreVersion:''|2.4|
!!Documentation
Create hCalendar abbr:
&lt;&lt;dtstart [storeName|'YYYYMMDDHHMM'] [dateFormatString]&gt;&gt;
<<dtstart '200902211230'>>

&lt;&lt;dtend [storeName|'YYYYMMDDHHMM'] [dateFormatSting]&gt;&gt;

Options:
|<<option txtDisplayTimeFormat>>|<<message config.optionsDesc.txtDisplayTimeFormat>>|
|<<option txtDisplayTimezone>>|<<message config.optionsDesc.txtDisplayTimezone>>|
!!Code
***/
//{{{
/*jslint onevar: false nomen: false plusplus: false */
/*global config */
if (!version.extensions.MicroformatDatePlugin) {
    version.extensions.MicroformatDatePlugin = {installed: true};

	config.options.txtDisplayTimeFormat = "0hh:0mm";
	config.optionsDesc.txtDisplayTimeFormat = "format to display time fields";
	config.options.txtDisplayTimezone = "";
	config.optionsDesc.txtDisplayTimezone= "timezone to display time fields: UTC, etc. Blank for localtime";
	
	config.macros.dtstart = {};
	config.macros.dtstart.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
		Microformat_abbr(place,macroName,params,wikifier,paramString,tiddler);
	}

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

	Microformat_abbr = function(place,macroName,params,wikifier,paramString,tiddler) {

		className = macroName;
		var format = config.options.txtDisplayTimeFormat;
		var formatTz = config.options.txtDisplayTimezone;

		// date is in TiddlyWiki YYYYMMMDDHHMM format
		if(params[0]) {
		    if(params[0].match(/^\d/)) {
			value = params[0];
		    }else{
			value = store.getValue(tiddler,params[0]);
		    }
		}

		// formatDateString
		if(params[1]) {
			format = params[1];
		}

		d = Date.convertFromYYYYMMDDHHMM(value);

		var text;
		if(!formatTz){
			text = d.formatString(format);
		}else{
			//TBD - handle alternative timezones
			text = d.formatUTCString(format)
		}

		// microformats is ISO YYYY-MM-DDTHH:MM:SS format
		var iso = value.substr(0,4) + "-" + value.substr(4,2) + "-" + value.substr(6,2) 
			+ "T" + value.substr(8,2) + ":" + value.substr(10,2) + ":00";

		var e = createTiddlyElement(place,'abbr',null,null);
		e.setAttribute('title',iso);
		e.setAttribute('class',className);
		createTiddlyText(e,text);
	};
}
//}}}
/***
|''Name:''|FormatUTCStringPlugin|
|''Description:''|UTC version of core formatString|
|''Author:''|PaulDowney (psd (at) osmosoft (dot) com)|
|''CodeRepository:''|http://svn.tiddlywiki.org/Trunk/contributors/PaulDowney/plugins/FormatUTCStringPlugin.js |
|''Version:''|0.1|
|''License:''|[[BSD open source license]]|
|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
|''~CoreVersion:''|2.2|

***/

//{{{

// Substitute UTC date components into a string
// might be neater to parse the timezone from the formatString, e.g. "0hh:0mm UTC"
Date.prototype.formatUTCString = function(template)
{
        var t = template.replace(/0hh12/g,String.zeroPad(this.getUTCHours12(),2));
        t = t.replace(/hh12/g,this.getUTCHours12());
        t = t.replace(/0hh/g,String.zeroPad(this.getUTCHours(),2));
        t = t.replace(/hh/g,this.getUTCHours());
        t = t.replace(/mmm/g,config.messages.dates.shortMonths[this.getUTCMonth()]);
        t = t.replace(/0mm/g,String.zeroPad(this.getUTCMinutes(),2));
        t = t.replace(/mm/g,this.getUTCMinutes());
        t = t.replace(/0ss/g,String.zeroPad(this.getUTCSeconds(),2));
        t = t.replace(/ss/g,this.getUTCSeconds());
        t = t.replace(/[ap]m/g,this.getUTCAmPm().toLowerCase());
        t = t.replace(/[AP]M/g,this.getUTCAmPm().toUpperCase());
        t = t.replace(/wYYYY/g,this.getUTCYearForWeekNo());
        t = t.replace(/wYY/g,String.zeroPad(this.getUTCYearForWeekNo()-2000,2));
        t = t.replace(/YYYY/g,this.getUTCFullYear());
        t = t.replace(/YY/g,String.zeroPad(this.getUTCFullYear()-2000,2));
        t = t.replace(/MMM/g,config.messages.dates.months[this.getUTCMonth()]);
        t = t.replace(/0MM/g,String.zeroPad(this.getUTCMonth()+1,2));
        t = t.replace(/MM/g,this.getUTCMonth()+1);
        t = t.replace(/0WW/g,String.zeroPad(this.getUTCWeek(),2));
        t = t.replace(/WW/g,this.getUTCWeek());
        t = t.replace(/DDD/g,config.messages.dates.days[this.getUTCDay()]);
        t = t.replace(/ddd/g,config.messages.dates.shortDays[this.getUTCDay()]);
        t = t.replace(/0DD/g,String.zeroPad(this.getUTCDate(),2));
        t = t.replace(/DDth/g,this.getUTCDate()+this.dayUTCSuffix());
        t = t.replace(/DD/g,this.getUTCDate());
        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.getUTCWeek = 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.getUTCYearForWeekNo = function()
{
        var dt = new Date(this.getTime());
        var d = dt.getUTCDay();
        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.getUTCFullYear();
};

Date.prototype.getUTCHours12 = function()
{
        var h = this.getUTCHours();
        return h > 12 ? h-12 : ( h > 0 ? h : 12 );
};

Date.prototype.getUTCAmPm = function()
{
        return this.getUTCHours() >= 12 ? config.messages.dates.pm : config.messages.dates.am;
};

Date.prototype.dayUTCSuffix = function()
{
        return config.messages.dates.daySuffixes[this.getUTCDate()-1];
};

//}}}
/***
|''Name:''|TiddlifyListPlugin|
|''Description:''|Convert a comma separated list into Tiddler references |
|''Author:''|PaulDowney (psd (at) osmosoft (dot) com) |
|''Source:''|http://whatfettle.com/2008/07/TiddlifyListPlugin/ |
|''CodeRepository:''|http://svn.tiddlywiki.org/Trunk/contributors/PaulDowney/plugins/TiddlifyListPlugin/ |
|''Version:''|0.1|
|''License:''|[[BSD License|http://www.opensource.org/licenses/bsd-license.php]] |
|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
|''~CoreVersion:''|2.4|
!!Documentation
Originally developed for [[RippleRap|http://ripplerap.com]], the tiddlifyList macro turns a field containing comma-separated list into a series of links to tiddlers, for example:

&lt;&lt;TiddlifyList members&gt;&gt;
<<TiddlifyList members>>

where {{{members}}} is an extended field on the current tiddler.

!!Code
***/
//{{{
/*jslint onevar: false nomen: false plusplus: false */
/*global config store wikify */
if (!version.extensions.TiddlifyListPlugin) {
    version.extensions.TiddlifyListPlugin = {installed: true};

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

		var value = store.getValue(tiddler, params[0]);
		var tokens = value.split(/\s*,\s*/);
		var text = "[[" + tokens.join("]], [[") + "]]";
		wikify(text, place);
	};
}
//}}}

/***
|''Name:''|ImportWorkspacePlugin|
|''Description:''|Commands to access hosted TiddlyWiki data|
|''Author:''|Martin Budden (mjbudden (at) gmail (dot) com)|
|''CodeRepository:''|http://svn.tiddlywiki.org/Trunk/contributors/MartinBudden/adaptors/ImportWorkspacePlugin.js |
|''Version:''|0.0.17|
|''Date:''|Aug 23, 2007|
|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]] |
|''~CoreVersion:''|2.2.0|

|''Feed for import''|<<option txtImportFeed>>|
|''Import workspace on startup''|<<option chkImportWorkspaceOnStartup>>|

***/

//{{{
if(!version.extensions.ImportWorkspacePlugin) {
version.extensions.ImportWorkspacePlugin = {installed:true};

if(config.options.txtImportFeed == undefined)
	{config.options.txtImportFeed = '';}
if(config.options.chkImportWorkspaceOnStartup == undefined)
	{config.options.chkImportWorkspaceOnStartup = false;}

config.messages.hostOpened = "Host '%0' opened";
config.messages.workspaceOpened = "Workspace '%0' opened";
config.messages.nothingToImport = "Nothing to import";
config.messages.workspaceTiddlers = "%0 tiddlers on host, importing...";
config.messages.tiddlerImported = "Tiddler: \"%0\" imported";
config.messages.importComplete = "Import complete";


// import all the tiddlers from a given workspace on a given host
config.macros.importWorkspace = {};
merge(config.macros.importWorkspace,{
	label: "import workspace",
	prompt: "Import tiddlers in workspace",
	done: "Tiddlers imported",
	usernamePrompt: "Username",
	passwordPrompt: "Password"
	});


config.macros.importWorkspace.init = function()
{
	var customFields = config.defaultCustomFields;
	//config.macros.importWorkspace.getCustomFieldsFromTiddler(config.options.txtImportFeed);
	if(!customFields['server.type']) {
		var title = config.options.txtImportFeed;
		if(title=='') {
			var tiddlers = store.getTaggedTiddlers('systemServer');
			if(tiddlers.length>0)
				title = tiddlers[0].title;
		}
		if(title) {
			config.defaultCustomFields['server.type'] = store.getTiddlerSlice(title,'Type');
			config.defaultCustomFields['server.host'] = store.getTiddlerSlice(title,'URL');
			config.defaultCustomFields['server.workspace'] = store.getTiddlerSlice(title,'Workspace');
			//config.defaultCustomFields.wikiformat = store.getTiddlerSlice(title,'WikiFormat');
		}
	}
	if(config.options.chkImportWorkspaceOnStartup)
		this.getTiddlersForAllFeeds();
};

config.macros.importWorkspace.getCustomFieldsFromTiddler = function(title)
{
	if(!title) {
		customFields = config.defaultCustomFields;
		if(!customFields['server.type']) {
			var tiddlers = store.getTaggedTiddlers('systemServer');
			if(tiddlers.length>0)
				title = tiddlers[0].title;
		}
	}
	if(title) {
		customFields = {};
		customFields['server.type'] = store.getTiddlerSlice(title,'Type');
		customFields['server.host'] = store.getTiddlerSlice(title,'URL');
		customFields['server.workspace'] = store.getTiddlerSlice(title,'Workspace');
		//config.defaultCustomFields.wikiformat = store.getTiddlerSlice(title,'WikiFormat');
	}
	return customFields;
};

config.macros.importWorkspace.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	params = paramString.parseParams('anon',null,false,false,false);
	var customFields = getParam(params,'fields',false);
	if(!customFields['server.type']) {
		var title = getParam(params,'anon');
		customFields = config.macros.importWorkspace.getCustomFieldsFromTiddler(title);
	}
	customFields = String.encodeHashMap(customFields);
	var label = getParam(params,'label',this.label);
	var btn = createTiddlyButton(place,label,this.prompt,this.onClick);
	btn.setAttribute('customFields',customFields);
};

config.macros.importWorkspace.onClick = function(e)
{
	clearMessage();
	var customFields = this.getAttribute('customFields');
	var fields = customFields ? customFields.decodeHashMap() : config.defaultCustomFields;
	config.macros.importWorkspace.getTiddlersForContext(config.macros.importWorkspace.createContext(fields));
};

config.macros.importWorkspace.getTiddlersForAllFeeds = function()
{
	var tiddlers = store.getTaggedTiddlers('systemServer');
	for(var i=0;i<tiddlers.length;i++) {
		config.macros.importWorkspace.getTiddlersForFeed(tiddlers[i].title);
	}
};

config.macros.importWorkspace.getTiddlersForFeed = function(feed,userCallback,userCallbackParams)
{
	config.macros.importWorkspace.getTiddlers(store.getTiddlerSlice(feed,'URL'),store.getTiddlerSlice(feed,'Type'),store.getTiddlerSlice(feed,'Workspace'),store.getTiddlerSlice(feed,'TiddlerFilter'),userCallback,userCallbackParams);
};

config.macros.importWorkspace.getTiddlers = function(uri,type,workspace,filter,userCallback,userCallbackParams)
{
	var fields = {};
	fields['server.host'] = uri;
	fields['server.type'] = type;
	fields['server.workspace'] = workspace;
	config.macros.importWorkspace.getTiddlersForContext(config.macros.importWorkspace.createContext(fields,filter,userCallback,userCallbackParams));
};

config.macros.importWorkspace.getTiddlersForContext = function(context)
{
	if(context) {
		context.loginPromptFn = config.macros.importWorkspace.loginPromptFn;
		context.adaptor.openHost(context.host,context);
		context.adaptor.openWorkspace(context.workspace,context,context.userParams,config.macros.importWorkspace.openWorkspaceCallback);
		return true;
	}
	return false;
};

config.macros.importWorkspace.createContext = function(fields,filter,userCallback,userCallbackParams)
{
	var serverType = fields['server.type'];
	if(!serverType)
		serverType = fields['wikiformat'];
	if(!serverType)
		return false;
	var adaptor = new config.adaptors[serverType]();
	if(!adaptor)
		return false;
	if(adaptor) {
		var context = {};
		context.host = fields['server.host'];
		context.workspace = fields['server.workspace'];
		context.filter = filter;
		context.userCallback = userCallback;
		context.userCallbackParams = userCallbackParams;
		context.adaptor = adaptor;
		return context;
	}
	return false;
};

config.macros.importWorkspace.loginPromptFn = function(context)
{
	if(typeof PasswordPrompt != 'undefined') {
		if(context.loginPromptCallback)
			PasswordPrompt.prompt(context.loginPromptCallback,context);
	} else {
		context.username = prompt(config.macros.importWorkspace.usernamePrompt,'');
		context.password = prompt(config.macros.importWorkspace.passwordPrompt,'');
		if(context.loginPromptCallback) {
			context.loginPromptCallback(context);
		}
	}
};

config.macros.importWorkspace.openWorkspaceCallback = function(context,userParams)
{
	if(context.status) {
		context.adaptor.getTiddlerList(context,userParams,config.macros.importWorkspace.getTiddlerListCallback);
		return true;
	}
	displayMessage(context.statusText);
	return false;
};

config.macros.importWorkspace.getTiddlerListCallback = function(context,userParams)
{
	if(context.status) {
		var tiddlers = context.tiddlers;
		var length = tiddlers.length;
		if(userParams && userParams.maxCount && length > userParams.maxCount) {
			length = userParams.maxCount;
			var sortField = 'modified';
			tiddlers.sort(function(a,b) {return a[sortField] < b[sortField] ? +1 : (a[sortField] == b[sortField] ? 0 : -1);});
		}
		context.adaptor.getTiddlerLength = 0;
		for(var i=0; i<length; i++) {
			if(!store.fetchTiddler(tiddlers[i].title)) {
				++context.adaptor.getTiddlerLength;
			}
		}
		if(config.messages.workspaceTiddlers)
			displayMessage(context.adaptor.getTiddlerLength ? config.messages.workspaceTiddlers.format([tiddlers.length]) : config.messages.nothingToImport);
		for(i=0; i<length; i++) {
			tiddler = tiddlers[i];
			var t = store.fetchTiddler(tiddler.title);
			if(!t) {
				var c = null;
				if(context && context.userCallback)
					c = {userCallback:context.userCallback,userCallbackParams:context.userCallbackParams};
				context.adaptor.getTiddler(tiddler.title,c,null,config.macros.importWorkspace.getTiddlerCallback);
			}
		}
	}
};

config.macros.importWorkspace.getTiddlerCallback = function(context,userParams)
{
	if(context.status) {
		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);
		store.resumeNotifications();
	} else {
		displayMessage(context.statusText);
	}
	--context.adaptor.getTiddlerLength;
	if(context.adaptor.getTiddlerLength==0) {
		// have completed import of all tiddlers requested
		store.notifyAll();
		story.refreshAllTiddlers();
		if(config.messages.importComplete && !context.userCallback) {
			clearMessage();
			displayMessage(config.messages.importComplete.format([tiddlers.length]));
		}
	}
	if(context.userCallback)
		context.userCallback(context,context.userCallbackParams);
};

} //# end of 'install only once'
//}}}
/***
|''Name:''|ListRelatedPlugin|
|''Description:''|Displays a filtered list of tiddlers along with links to related tiddlers|
|''Author:''|JeremyRuston|
|''Source:''|http://www.osmosoft.com/#ListRelatedPlugin |
|''CodeRepository:''|http://svn.tiddlywiki.org/Trunk/contributors/JeremyRuston/plugins/ListRelatedPlugin.js |
|''Version:''|0.0.5|
|''Date:''|Feb 19, 2006|
|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
|''License:''|[[BSD License|http://www.opensource.org/licenses/bsd-license.php]] |
|''~CoreVersion:''|2.2|


ListRelatedPlugin displays a list of tiddlers, each of which is followed by a sublist of related tiddlers. What
constitutes a "related tiddler" is customisable, as is the template used to display the list and sublist items.

This version ships with handlers for relationships to support RippleRap's convention that a tiddler called
"<title> from <author>" is taken to be a comment by "<author>" on a tiddler called "<title>".

- "raps": returns all tiddlers that are comments on the specified one
- "rapped": if the specified tiddler is a comment, returns the tiddler that it applies to

Usage:

{{{
<<listRelated filter:"[tag[note]]" rel:"raps" template:"MyTemplate" subtemplate:"MySubTemplate">>>
}}}

The parameters are as follows:

|Parameter |Description |Default |
|filter |A tiddler filter expression that filters and sorts the tiddlers to be listed |(none) |
|rel |The relationship of the sublist |raps |
|template |A template to determine how each tiddler in the list is laid out |"<<view title>>" |
|subtemplate |A template to determine how each tiddler in the sublist is laid out |"<<view title>> by <<view modifier>>" |

The optional template parameters specify the name of a tiddler that contains the template to be used. The template is specified
in TiddlyWiki format (not HTML), and can use the <<view>> macro to extract particular fields. For example:

{{{
Item ''<<view title>>'' by <<view modifier>>
^^last saved on <<view modified date>>^^
}}}

***/

//{{{
if(!version.extensions.ListRelatedPlugin) {
version.extensions.ListRelatedPlugin = {installed:true};

config.relationships = {
	raps: {
		text: "raps",
		prompt: "Tiddlers that are comments on this one",
		getRelatedTiddlers: function(store,title) {
			var match = title.trim() + " from ";
			var matchLen = match.length;
			var tiddlers = [];
			store.forEachTiddler(function(title,tiddler) {
				if(title.trim().substr(0,matchLen) === match)
					tiddlers.push(title);
			});
			return tiddlers;
		}
	},
	rapped: {
		text: "rapped",
		prompt: "Tiddlers that are commented on by this one",
		getRelatedTiddlers: function(store,title) {
			var tiddlers = [];
			var re = "^(.+) from (.+)$";
			var regexp = new RegExp(re,"mg");
			regexp.lastIndex = 0;
			var match = regexp.exec(title);
			if(match)
				tiddlers.push(match[1]);
			return tiddlers;
		}
		
	}
};

config.macros.listRelated = {
	defaultRelationship: "raps",
	defaultTemplate: "<<view title>>",
	defaultSubTemplate: "<<view title>> by <<view modifier>>"
};

config.macros.listRelated.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	params = paramString.parseParams("anon",null,true,false,false);
	var filter = getParam(params,"filter","");
	var relationship = getParam(params,"rel",this.defaultRelationship);
	var template = getParam(params,"template",null);
	if(template)
		template = store.getTiddlerText(template,this.defaultTemplate);
	else
		template = this.defaultTemplate;
	var subTemplate = getParam(params,"subtemplate",null);
	if(subTemplate)
		subTemplate = store.getTiddlerText(subTemplate,this.defaultSubTemplate);
	else
		subTemplate = this.defaultSubTemplate;
	var tiddlers = store.filterTiddlers(filter);
	for(var t=0; t<tiddlers.length; t++) {
		var tiddler = tiddlers[t];
		var wrapper = createTiddlyElement(place,"div",null,"listRelatedTiddler");
		var wikifier = new Wikifier(template,formatter,null,tiddler);
		wikifier.subWikifyUnterm(wrapper);
		var rel = config.relationships[relationship].getRelatedTiddlers(store,tiddler.title);
		for(var r=0; r<rel.length; r++) {
			var sub = createTiddlyElement(wrapper,"div",null,"listRelatedSubTiddler");
			wikifier = new Wikifier(subTemplate,formatter,null,store.fetchTiddler(rel[r]));
			wikifier.subWikifyUnterm(sub);
		}
	}
};

} //# end of 'install only once'
//}}}
[[AgendaTrackPlugin]]
[[AgendaTrackPlugin]]
TiddlyWiki
AgendaTrackPlugin
http://whatfettle.com/2008/07/AgendaTrackPlugin/
//{{{

//}}}