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>
<!--}}}-->
//(Guitar solo arrangement. 4 voices - 1 hidden - to get stems right)//<<tiddler Bop with:"guitar tabs unaccompanied | Am E7/d Am/c E7/b | Amadd9 Am E7b9 E7b9  | Am G9 | Cadd9 C Cmaj7/g Gb7b5 | Bm7b5/f E7b9 | Am Am/g# Em/g D/f# | Bm7b5/f E7#5 Am Am |{ e4:4 | a4.:3 b8 c4 d:3 | e2:1 g#4 b | b4 a a g | e2. e4 | d4:2 d f:1 e | c:2 c e:1 d:2 | b4.:2 c8 a2:3 | }{ | s2 s4  g#+:4  | (b4:2 c:4) a:5 (d2:3 f:2) | (c2:3 e:2) (b:3 d:2) | d4:2 c b bb:3 | a2:3 g# | a2:3 s4 a4~:3 | a2:3 s2 | }{ | s1 }{ | a4:5 d c b:6 | a4:5 s e2:6 | a2:5 g | (c2:5 g+:3) g4:6 gb | f2:6 e | a4:5 ab:6 g f# | f4:6 e a2:5 | }">>
/%
!Billede
http://www.selskabslegeogindslag.dk/wp-content/uploads/2012/06/agurk1-e1343911004254.jpg
!Botanisk navn
Cucumis sativus
!Dansk navn
Agurk
!Type

!Højde

!Bredde

!Blomstringstid

!Bladtype

!Bladstilling

!Løvfældende

!Stedsegrøn

!Beskrivelse


!Krav


! %/{{hidden{
!Spørgsmål
Hvilken farve har en agurk?

Andre særlige kendetegn?
!end
}}}{{hidden{
!Svar
Den er grøn!
Nææh
!end
}}}
/%
!info
|Name|AllThumbs|
|Source|http://www.TiddlyTools.com/#AllThumbs|
|Version|1.2.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Requires|ThumbThing|
|Description|display a set of thumbnails with full-sized popup images|
Usage:
<<<
{{{
<<tiddler AllThumbs with: TiddlerName thumbsPerRow thumbWidth>>
}}}
*{{{TiddlerName}}} is the title of a tiddler containing a space-separated list of images
*{{{thumbsPerRow}}} is the number of images to show on each row of output.  Omit or use 'auto' for a single row
*{{{thumbWidth, thumbHeight, fullHeight, fullWidth}}} applies CSS to scale thumbnails and popup images.  Omit or use 'auto' for stretch-to-fit/full-size images
See [[ThumbThing]] for additional details
<<<
Examples:
<<<
{{{
<<tiddler AllThumbs with: [[AllThumbs##SampleList]]>>
}}}
Sample List:
<<tiddler AllThumbs##show with:	{{
	'{{{\n'+store.getTiddlerText('AllThumbs##SampleList')+'\n}\}\}\n';
}}>>
<<tiddler AllThumbs with: [[AllThumbs##SampleList]]>>
<<<
!end info

!SampleList
images/california.gif
images/cool_illusion.gif
AttachFileSample2
images/fish.jpg
images/sunset.jpg
!end SampleList

!show
$1
!end show

%/<<tiddler {{'$1'=='$'+'1'?'AllThumbs##info':'AllThumbs##show'}} with: {{
	var list=store.getTiddlerText('$1','').readBracketedList(false);
	var rowsize='$2'; if (rowsize=='$'+'2' || rowsize=='auto') rowsize=list.length;
	var width='$3';	  if (  width=='$'+'3' || width=='auto')   width=95/rowsize+'%';
	var out=[];
	var thumb='<<tiddler ThumbThing with: [[%0]] [[%1]] [[%2] [[%3]] [[%4]]>\>';
	for (var i=0; i<list.length; i++) {
		if (i && i%rowsize==0) out.push('\n');
		out.push(thumb.format([list[i],width,'$4','$5','$6']));
	}
	!out.length||!store.tiddlerExists('ThumbThing')?'<<tiddler AllThumbs##info>\>':out.join('');
}}>>
Herbacea
Forklaring
----
Art2
Forklaring
----
{{hidden{
!Billede
Ask.jpg
!Botanisk navn
Fraxinus excelsior
!Dansk navn
Ask
!Type
Træ
!Højde

!Bredde

!Blomstringstid

!Bladtype

!Bladstilling

!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse

!Anvendelse

!Krav

!Pleje

! 
}}}
/%
!info
|Name|AutoRefresh|
|Source|http://www.TiddlyTools.com/#AutoRefresh|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|set/clear tiddler refresh flags to force/prevent re-rendering when changes occur|
Usage:
<<<
{{{
<<tiddler AutoRefresh>>
<<tiddler AutoRefresh with: mode id>>
}}}
*''mode'' (optional), one of:
**''off'' or ''disable'' - prevents refresh of rendered content (except when PageTemplate is changed!)
**''on'' or ''enable'' - re-render content whenever corresponding tiddler source is changed (default)
**''force'' - re-render content whenever //''ANY''// tiddler is changed
*''id'' (optional), is a unique DOM element identifier on which to operate (e.g., 'mainMenu').  If omitted, the current tiddler (if any) is implied.
<<<
!end
!show
<<tiddler {{
	var here=story.findContainingTiddler(place);
	var target=document.getElementById('$2')||here||place.parentNode;
	if (target==here) { // in a tiddler, get viewer element
		var elems=target.getElementsByTagName('*');
		for (var i=0;i<elems.length;i++)
			if (hasClass(elems[i],'viewer')) { target=elems[i]; break; }
	}
	if (target) {
		var mode='$1'; if (mode=='$'+'1') mode='on';
		if (['on','enable','force'].contains(mode.toLowerCase())) {
			var title=target.getAttribute('tiddler');
			if (!title&&here) title=here.getAttribute('tiddler');
			if (title) target.setAttribute('tiddler',title);
			target.setAttribute('refresh','content');
			target.setAttribute('force',(mode=='force')?'true':'');
		} else if (['off','disable'].contains(mode.toLowerCase())) {
			target.setAttribute('refresh','');
			target.setAttribute('force','');
		}
	}
'';}}>>
!end
%/<<tiddler {{var src='AutoRefresh'; src+(tiddler&&tiddler.title==src?'##info':'##show');}}
	with: [[$1]] [[$2]]>>
{{hidden{
!Billede
AvnBøg.jpg
!Botanisk navn
Carpinus Betulus
!Dansk navn
Avnbøg
!Type
Træ
!Højde

!Bredde

!Blomstringstid

!Bladtype

!Bladstilling

!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse
Har karakteristisk grå bark med lysere længdestriber
!Anvendelse

!Krav

!Pleje

! 
}}}
{{toolbar center{<<editSection Billeder##Liste "redigér liste over billeder">>
<html><div align="center"><iframe src="./Billeder" frameborder="0" style="width:100%;height:40em"></iframe></div></html>}}}

/%
!Liste
Agurk.jpg
Beskrivelse: ...
----
Agurk-1.jpg
Beskrivelse: ...
----
Agurk-2.jpg
Beskrivelse: ...
----
Agurk-3.jpg
Beskrivelse: ...
----
Agurk-4.jpg
Beskrivelse: ...
----
Vårlyng.jpg
Beskrivelse: ...
----
Vårlyng-2.jpg
Beskrivelse: ...
----
!end %/
Modsatstillet
beskrivelse...
----
Kransstillet
beskrivelse...
----
Endnu en bladstilling
beskrivelse...
----
Håndlappet
beskrivelse...
----
Ægkantede
beskrivelse...
----
Savtakket
beskrivelse...
----
uligefinnede
beskrivelse...
----
Nåleagtige
beskrivelse...
----
<html><div class=bopland>$1</div></html> 
~BopLand.org is a free knowledge database for improvising musicians. It contains thousands of jazz licks over most common chord progressions. While not only oriented towards jazz musicians, but towards other musicians as well, the majority of patterns present in the database were composed during the bebop era. Hence comes the name.
From the technical point of view the project is based on the lick rendering web service provided by [[my.BopLand.org|http://my.bopland.org/]].
Kilde: http://www.bopland.org/about
----
For at anvende Bopland's service i denne ~TiddlyWiki skal du skrive:
{{{
<<tiddler Bop with:"
Din musikkode her
">>
}}}
<<tag eksempel "se eksempler">> (Klik på nodeeksemplerne for at kunne afspille og transponere noderne.)
{{hidden{
!Billede
BuskPotentil.jpg
!Botanisk navn
Potentilla fruticosa 'Goldfinger'
!Dansk navn
Buskpotentil
!Type
Busk
!Højde
0,8 – 1,1
!Bredde
0,8 – 1,1
!Blomstringstid
Juni - aug
!Bladtype
uligefinnede
!Bladstilling

!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse
Grenene har afskallende bark blomsterne ligner jordbærblomster de har 5 bægerblade og 5 kronblade frugterne er små nødder
!Anvendelse
Hæk, prydbusk
!Krav
Udvikles bedst på let og tør jord.
!Pleje
Ubeskåret
! 
}}}
{{hidden{
!Billede
BuxBum.jpg
!Botanisk navn
Buxus sempervirens
!Dansk navn
Buxbum
!Type

!Højde

!Bredde

!Blomstringstid

!Bladtype

!Bladstilling

!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse

!Anvendelse

!Krav

!Pleje

! 
}}}
{{hidden{
!Billede
Bøg.jpg
!Botanisk navn
Fagus sylvatica
!Dansk navn
Bøg
!Type
Træ
!Højde

!Bredde

!Blomstringstid

!Bladtype

!Bladstilling

!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse

!Anvendelse

!Krav

!Pleje

! 
}}}
/%
!info
|Name|CheckboxToggleTag|
|Source|http://www.TiddlyTools.com/#CheckboxToggleTag|
|Version|1.3.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|toggle between two tag values using an HTML checkbox (no plugins)|
Usage:
<<<
{{{
in tiddler content:
   <<tiddler CheckboxToggleTag with: tag1 tag2 TiddlerName>> label
in ViewTemplate or EditTemplate:
   <span macro='CheckboxToggleTag with: tag1 tag2 TiddlerName'></span> label
}}}
where:
*''tag1'' is the tag to use when the checkbox is set
*''tag2'' //(optional)// is the tag to use when the checkbox is cleared (default=remove ''tag1'')
*''~TiddlerName'' //(optional)// is the tiddler to be tagged (default=current tiddler)
*''label'' //(optional)// is any text you want to display next to the checkbox
//note: to specify a ''~TiddlerName'' while omitting ''tag2'', use {{{""}}} (empty quotes) as a placeholder for ''tag2''//
<<<
Examples:
<<<
{{{
<<tiddler CheckboxToggleTag with: sometag>> set/clear 'sometag'
<<tiddler CheckboxToggleTag with: tagA tagB>> toggle tagA (checked) and tagB (unchecked)
}}}
<<tiddler CheckboxToggleTag with: sometag>> set/clear 'sometag'
<<tiddler CheckboxToggleTag with: tagA tagB>> toggle tagA (checked) and tagB (unchecked)
<<<
Notes:
<<<
*Clicking a checkbox immediately changes the corresponding tag value in the tiddler. This can, in some cases, trigger additional 'side-effect' processing, such as refreshing of page elements, or autosaving of the document (if that option is enabled).
*If you are currently editing the tiddler being tagged, any //unsaved// changes you have made to the contents of the ''tags'' input field will be discarded when the checkbox is clicked.
<<<
!end info
!show
<html><input type="checkbox" onclick="
	store.suspendNotifications();
	var tid=this.getAttribute('tid');
	var ontag=this.getAttribute('onTag');
	var offtag=this.getAttribute('offTag');
	if (ontag && ontag.length)  store.setTiddlerTag(tid,this.checked,ontag);
	if (offtag && offtag.length) store.setTiddlerTag(tid,!this.checked,offtag);
	store.resumeNotifications();
	store.notify(tid,true);
	var here=story.findContainingTiddler(this);
	if (here) { /* refresh current tiddler */
		var title=here.getAttribute('tiddler');
		var template=story.chooseTemplateForTiddler(title,story.isDirty(title)?2:1);
		story.refreshTiddler(title,template,true);
	}
	return false;
"><nowiki></html><<tiddler {{
	var tid="$3";
	if (tid=="$"+"3") {
		var here=story.findContainingTiddler(place);
		if (here) tid=here.getAttribute('tiddler');
	}
	if (store.tiddlerExists(tid)) {
		var c=place.lastChild.firstChild;
		c.setAttribute('onTag','$1');
		c.setAttribute('offTag','$2'!='$'+'2'&&'$2'!='undefined'?'$2':'');
		c.setAttribute('tid',tid);
		c.checked=store.getTiddler(tid).isTagged(c.getAttribute('onTag'));
	}
'';}}>>
!end show

%/<<tiddler {{'CheckboxToggleTag##'+('$1'=='$'+'1'?'info':'show')}} with: [[$1]] [[$2]] [[$3]]>>
{{{
Background:#FFF
Foreground:#333
PrimaryPale:#999
PrimaryLight:#777
PrimaryMid:#111
PrimaryDark:#000
SecondaryPale:#DDF
SecondaryLight:#CDF
SecondaryMid:#9AF
SecondaryDark:#05A
TertiaryPale:#EEE
TertiaryLight:#CCC
TertiaryMid:#999
TertiaryDark:#333
Error:#F88

PageBackground:#F9F9F9
Dim:#FDFDFF
}}}
/***
|Name|ColumnCalculatorPlugin|
|Source|http://www.TiddlyTools.com/#ColumnCalculatorPlugin|
|Version|0.6.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|calculate values from table cells in a column|
|Status| ALPHA - USE AT YOUR OWN RISK |
!!!Usage
<<<
{{{<<columncalc function startrow endrow>>}}}
where:
*''function'' is a keyword that specifies the type of calculation to perform:
** ''total'' or ''sum'' or //no param//<br>adds up values for cells above it in the column
** ''count''<br>number of non-empty cells in column
** ''average'' or ''avg''<br>average of cells in column (i.e., total/count)
* ''all'' (optional)<br>normally, only cells containing numbers or timestamps (hh:mm:ss) are included in the calculations.  The ''all'' keyword allows text or empty cells to be processed as if they contained a "0".
* ''startrow'',''endrow'' (optional)<br>specifies a ONE-based range of rows for limiting the calculation.  Use negative numbers to specify an offset from the current row (e.g., {{{<<calc sum 3 5>>}}} adds up rows 3, 4 and 5, while {{{<<calc sum 1 -1>>}}} adds up all numbers in the column excluding the current row (i.e., the same as the default if no startrow/endrow params are specified)
<<<
!!!Examples
<<<
''with numeric values...''
{{{
| foo| 3.2 |
| bar| 1.1 |
| baz| 2.9 |
| gronk| 4.3 |
| snork| non-number |
| count| <<columncalc count all 1 -1>> |
| total| <<columncalc sum all 1 -2>> |
| avg| <<columncalc average all 1 -3>> |
}}}
| foo| 3.2 |
| bar| 1.1 |
| baz| 2.9 |
| gronk| 4.3 |
| snork| non-number |
| count| <<columncalc count all 1 -1>> |
| total| <<columncalc sum all 1 -2>> |
| avg| <<columncalc average all 1 -3>> |

''with time-formatted values (hh:mm:ss)...''
{{{
| foo| 00:22:15 |
| bar| 00:03:30 |
| baz| 00:01:45 |
| count| <<columncalc count 1 -1>> |
| total| <<columncalc sum 1 -2>> |
| avg| <<columncalc average 1 -3>> |
}}}
| foo| 00:22:15 |
| bar| 00:03:30 |
| baz| 00:01:45 |
| count| <<columncalc count 1 -1>> |
| total| <<columncalc sum 1 -2>> |
| avg| <<columncalc average 1 -3>> |
<<<
!!!Revisions
<<<
2009.02.05 [0.6.2] added 'all' param to include empty/text rows in calculations.
2007.10.26 [0.6.1] in handler(), using '.textContent' instead of '.innerHTML' when reading values from table cells.  This allows use of values that are transcluded from slices in other tiddlers using the {{{<<tiddler 'TiddlerName::slicename'>>}}} syntax.
2007.06.29 [0.6.0] added support for handling values in hh:mm:ss format
2007.04.02 [0.5.0] started
<<<
!!!!!Code
***/
//{{{
version.extensions.ColumnCalculatorPlugin= {major: 0, minor: 6, revision: 1, date: new Date(2007,10,26)};
config.macros.columncalc= {
	handler:
	function(place,macroName,params,wikifier,paramString,tiddler) {

		if (place.parentNode.nodeName.toLowerCase()!='tr') return false; // not in a table
		var tbody=place.parentNode.parentNode;
		var row=tbody.childNodes.length-1; // current row #
		var col=place.parentNode.childNodes.length-1; // current column #

		var fn=params.shift();
		var allCells=(params[0]&&params[0].toLowerCase()=='all');
		if (allCells) params.shift();
		var startrow=0; var endrow=row-1;
		if (params[0]) var startrow=params.shift();
		if (startrow<0) startrow=1*startrow+row; else startrow=startrow-1;
		if (params[0]) var endrow=params.shift();
		if (endrow<0) endrow=1*endrow+row; else endrow=endrow-1;

		var count=total=0;
		for (r=startrow; r<=endrow; r++) {
			var cell=tbody.childNodes[r].childNodes[col].textContent;
			if (!cell) cell=tbody.childNodes[r].childNodes[col].innerHTML; // fallback for older browsers
			var val=cell; var hms=cell.split(':');
			if (hms.length==3) { // an hh:mm:ss time value
				var val=(hms[0]||0)*3600+(hms[1]||0)*60+(hms[2]||0)*1;
				var showTime=true; // use time formatting for results...
			}
			else if (cell.length && !isNaN(cell)) // a numeric value
				var val=eval(cell);
			else if (allCells) // an non-numeric cell (when 'all' is used)
				var val=0;
			if (!isNaN(val)) { total+=val; count++; }
		}
		switch (fn) {
			case 'count':
				var result=count;
				break;
			case 'average':
			case 'avg':
				var result=Math.floor(total/count*100)/100; // truncate to two decimal places
				break;
			case 'total':
			case 'sum':
			default:
				var result=total;
				break;
		}
		if (showTime && fn!='count') {
			var h=Math.floor(result/3600);
			var m=Math.floor((result-h*3600)/60);
			var s=Math.floor((result-h*3600-m*60)*100)/100; // truncate to two decimal places
			result=(h<10?'0':'')+h+':'+(m<10?'0':'')+m+':'+(s<10?'0':'')+s;
		}
		createTiddlyText(place,result);
	}
}
//}}}
Create a tiddler "[[Template]]"
{{nobullets{<<list filter [tag[Template]] template:[[Create your own tagglytagging style template with the list filter macro##wikified]]>>}}}/%
!wikified
<<view text wikified "{{{
%0
}}}">>
! %/
Now use it like this: {{{
<<tiddler Template with: MyTag>>
}}}
Result:
<<tiddler Template with: MyTag>>

!!How it looks when the TW is editable:
Click <<tiddler ToggleEdit with: EDITABLE>> to see it - or watch the image below:
{{groupbox{
[img(40%,auto)[tagglylist.png]]
}}}
/%
!INFO
|''Name''|CycleTags|
|''Version''|1.0.0|
|''Author''|Tobias Beer|
|''~CoreVersion''|2.5|
|''Type''|transclusion|
|''Source''|http://coloredlinks.tiddlyspot.com/#CycleTags|
|''Documentation''|http://coloredlinks.tiddlyspot.com/#CycleTagsInfo|
|''License''|[[Creative Commons Attribution-Share Alike 3.0|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''Description''|allows to cycle through a defined list of tags|

''Usage:'' {{{<<tiddler CycleTags with: TagList Tiddler>>}}}
| !Parameter | !Required | !Info h|
|~TagList|yes|refers to a tiddler with a defined list of tags see [[CycleTagsInfo]]|
|Tiddler|no|when defined, sets the tags on the specified tiddler instead of the one calling the script|

!END%/<<tiddler {{

var cfg={
	refreshTids:'TaskOverview CycleTagsInfo',
	txtSet:"set '%0'",
	txtTip:"assign '%0' to this tiddler",
	txtRemove:"remove tag '%0'",
	errTid:'@@color:red;invalid tiddler reference for [[cycleTags]]@@',
	errList:'@@color:red;invalid taglist@@'
}

var btn,d,cls,cTid,def='$1',e=place,fresh,i,l,lns,nuBtn,nxt,out='',rBtn,tid='$2',tag,tip,txt;
if('$1'=='$'+'1')out='CycleTags##INFO';
window.runOnce=!window.runOnce;
if(window.runOnce){

do{
		cTid=e&&e.getAttribute?e.getAttribute('tiddler'):null;
		l=cTid?e:l;
		e=e.parentNode;
}while(e);
cTid=l?store.getTiddler(l.getAttribute('tiddler')):null;
if(tid=='$'+'2')tid=cTid;
else{
	if(tid=='')tid=cTid;else tid=store.getTiddler(tid);
	if(!tid)out=cfg.errTid;
}
fresh='$3'=='$'+'3'?'':'$3 ';
if(!store.getTiddler(def))out=cfg.errList;

if(!out&&tid){
	lns=store.getTiddlerText(def).split("\n");
	nxt=-1;i=0;rmv="";
	while (nxt<0 && i<lns.length){ //find current
		var d=lns[i].split('###');
		if(tid.tags.contains(d[0])){ //found
			nxt=i+1;rmv=d[0];
			}
		i++;
	}

	i>=lns.length?nxt=0:nxt=i;
	d=lns[nxt].split('###');

	tag=d[0];
	txt=d[1]?d[1]:cfg.txtSet.format([tag]);
	tip=d[2]?d[2]:cfg.txtTip.format([tag]);
	cls=d[3]?d[3]:'';
	rBtn=d[4]?d[4]:'';
	
	nuBtn=function(txt,tip,cls,add){
		var t,tg;
		btn=createTiddlyButton(place,txt,tip,
			function(){
				var ti=this.getAttribute('tid'),
					rmv=this.getAttribute('rmv'),
					add=this.getAttribute('add'),
					r,rs=this.getAttribute('refresh').readBracketedList();
				rs.pushUnique(ti);
				if(add){
					//replace tag, instead of adding it to the end
					t=store.fetchTiddler(ti);
					if(t){
						var tg = t.tags.indexOf(rmv);
						if(tg!=-1)t.tags[tg]=add;
						else t.tags.unshift(add); //add to beginning
						t.changed();
						t.incChangeCount();
						store.notify(ti,true);
						store.setDirty(true);
					}
				}else store.setTiddlerTag(ti,0,rmv);
				for(r=0;r<rs.length;r++)story.refreshTiddler(rs[r],null,false);
			},cls);
		if(add)btn.setAttribute('add',add);
		btn.setAttribute('rmv',rmv);
		btn.setAttribute('tid',tid.title);
		btn.setAttribute('refresh',fresh+cfg.refreshTids+' [['+cTid.title+']]');
	}
	if(rmv&&rBtn)nuBtn(rBtn,cfg.txtRemove.format([rmv]),cls,false);
	nuBtn(txt,tip,cls,tag);
}
}
out;}}>>
/%
!info
|Name|CycleThemes|
|Source|http://www.TiddlyTools.com/#CycleThemes|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|creates command link to cycle through systemThemes|
Usage
<<<
{{{
<<tiddler CycleThemes>>
<<tiddler CycleThemes with: label "theme theme theme">>
}}}
*''label'' (optional)<br>text of command link. default='next theme'
*''"theme theme theme"'' (optional)<br>list of theme tiddlers to cycle through.   default=[[StyleSheet]] plus all tiddlers tagged with<<tag systemTheme>>, except those tagged with<<tag excludeTheme>>or<<tag excludeLists>>
<<<
Examples
<<<
*Cycle through all themes:<br>{{{<<tiddler CycleThemes>>}}}<br><<tiddler CycleThemes##show with: 'next theme' >>
*Toggle between two themes:<br>{{{<<tiddler CycleThemes with: "toggle" "StyleSheet Plain">>}}}<br><<tiddler CycleThemes##show with: "toggle" "StyleSheet Plain">>
*Apply a theme:<br>{{{<<tiddler CycleThemes with: "default" StyleSheet>>}}}<br><<tiddler CycleThemes##show with: "use default StyleSheet" StyleSheet>>
<<<
!end
!show
<html><nowiki><a href="javascript:;"
onmouseover="
	this.title='nuværende tema: '+config.options.txtTheme;
	this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
	+encodeURIComponent(encodeURIComponent(this.onclick))
	+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
	var titles='$2'.readBracketedList();
	if ('$2'=='$'+'2') {
		var tids=store.getTaggedTiddlers('systemTheme');
		titles=tids.map(function(t){return t.tags.contains('excludeTheme','excludeLists')?null:t.title;});
		titles.pushUnique('StyleSheet');
	}
	var curr=titles.indexOf(config.options.txtTheme);
	var next=curr+1>=titles.length?0:curr+1;
	while(!titles[next] && next!=curr) next=next+1>=titles.length?0:next+1;
	story.switchTheme(titles[next]);
	return false;"
>$1</a></html>
!end
%/<<tiddler {{var src='CycleThemes'; src+(tiddler&&tiddler.title==src?'##info':'##show')}}
	with: {{'$1'=='$'+'1'?'next theme':'$1'}} "$2">>
Magnoliophyta
beskrivelse...
----
Division 2
beskrivelse...
----
/***
|Name|[[EditFieldPlugin]]|
|Source|http://www.TiddlyTools.com/#EditFieldPlugin|
|Version|1.6.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|extend core edit macro for use in ViewTemplates or direct embedding in tiddler content|
!!!!!Documentation
>see [[EditFieldPluginInfo]]
!!!!!Revisions
<<<
2011.04.10 1.6.2 fixed 'null' fieldname handling in Chrome
| Please see [[EditFieldPluginInfo]] for previous revision details |
2007.08.22 1.0.0 initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.EditFieldPlugin= {major: 1, minor: 6, revision: 2, date: new Date(2011,4,10)};

config.macros.edit.editFieldPlugin_savedHandler=config.macros.edit.handler;
config.macros.edit.cancelMsg = "Abandon changes to %0@%1?";
config.macros.edit.saveMsg = "Save changes to %0@%1?";
config.macros.edit.handler = function(place,macroName,params,wikifier,paramString,tiddler) {

	// let core render input/textarea, then get resulting element
	config.macros.edit.editFieldPlugin_savedHandler.apply(this,arguments);
	var fieldType=params[0]=="text"||params[1]?'textarea':'input';
	var elems=place.getElementsByTagName(fieldType); var e=elems[elems.length-1];

	// extended fieldname@tiddlername handling
	var parts=e.getAttribute("edit").split('@');
	var field=parts[0];
	var title=parts[1]||tiddler.title;
	if (title=='here') title=tiddler.title;
	// stop field from being saved with 'done' button
	if (parts[1]) { e.removeAttribute("edit"); e.setAttribute("field",field); }

	// save starting value and target tiddler
	e.value=store.getValue(title,field)||e.value; // get field value
	e.setAttribute("currval",e.value); // save starting value
	e.setAttribute("tiddler",title);

	// force height for textarea field
	if (fieldType=="textarea" && params[1]) e.style.height=params[1]+"em";

	// if viewing tiddler, add autosave handlers
	var here=story.findContainingTiddler(place);
	var isViewed=here&&here.getAttribute("template").indexOf("ViewTemplate")!=-1;
	if (parts[1]||isViewed) { // remote reference or view mode editing...
		story.setDirty(tiddler.title,false); // clear tiddler ("dirty") flag (set by core)
		e.onkeydown=function(ev) { // ENTER key=save (for single-line input)
			var event=ev?ev:window.event;
			this.setAttribute("keyCode",event.keyCode); // save last keyCode (for blur)
			if (event.keyCode==13 && this.nodeName.toUpperCase()!="TEXTAREA")
				this.saveField(); // save input to tiddler field
		}
		e.onblur=function(ev) { // confirm input when focus moves away
			var event=ev?ev:window.event;
			var tid=this.getAttribute("tiddler"); if (!tid || !tid.length) return;
			var field=this.getAttribute("edit")||this.getAttribute("field");
			if (this.value==this.getAttribute("currval")) return; // no change
			if (this.getAttribute("keyCode")=="27") { // if user pressed ESC
				var msg=config.macros.edit.cancelMsg.format([field,tid]);
				if (!msg.length || confirm(msg))
					this.value=this.getAttribute("currval"); // reset value
				this.id=new Date().getTime(); // unique ID for re-focus after blur
				setTimeout("document.getElementById('"+this.id+"').focus()",1);
			} else { // other focus change events
				var msg=config.macros.edit.saveMsg.format([field,tid]);
				if (!msg.length || confirm(msg)) this.saveField(); // save value
				else this.value=this.getAttribute("currval");
			}
		};
		e.saveField=function() { // unpack/validate attribs and then save the field
			var tid=this.getAttribute("tiddler"); if (!tid || !tid.length) return;
			var field=this.getAttribute("edit")||this.getAttribute("field");
			var title=(field=="title")?this.value:tid;
			if (!title.length) { // error: blank tiddler title
				this.value=this.getAttribute("currval"); // reset value
				this.id=new Date().getTime(); // unique ID for delayed messages/refocus
				setTimeout("displayMessage('Please enter a non-blank value')",1);
				setTimeout("document.getElementById('"+this.id+"').focus()",2);
				return;
			}
			config.macros.edit.saveField(tid,title,field,this.value);
			this.setAttribute("currval",this.value); // remember new starting value
		};
	}
}
//}}}
//{{{
// save input value to tiddler field (create/touch/rename tiddler as needed)
config.macros.edit.saveField = function(tid,title,field,val) {
	var t=store.getTiddler(tid);
	store.suspendNotifications();
	var anim=config.options.chkAnimate; config.options.chkAnimate=false; // suspend animation
	var who=t&&config.options.chkForceMinorUpdate?t.modifier:config.options.txtUserName;
	var when=t&&config.options.chkForceMinorUpdate?t.modified:new Date();
	store.saveTiddler(t?tid:title,title,t?t.text:"",who,when,t?t.tags:[],t?t.fields:null);
	store.setValue(title,field,val); // save field
	if (tid!=title) // new title... show renamed tiddler in place of current one
		{ story.displayTiddler(story.getTiddler(tid),title); story.closeTiddler(tid); }
	if (field=="text") // content changed, refresh tiddler display
		{ story.refreshTiddler(title,null,true); }
	config.options.chkAnimate=anim; // resume animation
	store.resumeNotifications();
	store.notify(title,true);
}
//}}}
/***
|Name|[[EditSectionPlugin]]|
|Source|http://www.TiddlyTools.com/#EditSectionPlugin|
|Documentation|http://www.TiddlyTools.com/#EditSectionPlugin|
|Version|1.8.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|invoke popup 'section editor' for specified section of a tiddler|
!!!!!Usage
<<<
{{{
<<editSection TiddlerName##sectionname label tooltip>>
}}}
This macro adds a command link that invokes a popup editor for a specific section, where:
*''~TiddlerName##sectionname'' specifies the tiddler and section you want to edit.
**If you omit the "##sectionname" portion (i.e., only enter "~TiddlerName"), the entire content of the indicated tiddler is edited.
**If you omit the "~TiddlerName" portion (i.e., only enter "##sectionname"), the current containing tiddler (if any) is assumed.
**Changing the section name in the popup editor //renames// that section within the tiddler.
**Changing the tiddler title in the popup editor //copies// that section to another tiddler.
**If the indicated tiddler and/or section does not yet exist, it will be created when you press 'save'.
*''label'' and ''tooltip'' (both //optional//) specify the link label and mouseover help text for the 'edit section' command link.
You can also add the following macro, //at the end of a tiddler//, to automatically add an 'edit section' command link for each section shown in the tiddler.
{{{
<<editSections label tooltip>>
}}}
*''label'' and ''tooltip'' (both //optional//) specify the link label and mouseover help text for the 'edit section' command link.
>//Note: when a document is viewed in 'readOnly' mode, both of these macros are bypassed and no output is produced.//
<<<
!!!!!Sample
<<<
This is an example section for you to try
<<<
!!!!!Example
<<<
{{{
<<editSection ##Sample>>
}}}
<<editSection ##Sample>>
<<<
!!!!!Configuration
<<<
To customize and/or translate the HTML form layout used to render the section editor, edit the [[EditSectionTemplate]] shadow tiddler.
<<<
!!!!!Revisions
<<<
2012.01.29 1.8.1 invoke autoSaveChanges() when tiddlers are modified.
2011.12.22 1.8.0 added {{{<<editSections>>}}} macro for automatic adding of 'edit section...' links to headings
2011.12.20 1.7.0 added drag handling for editor panels
2011.10.28 1.6.8 fixed getMX()/getMY() for Chrome scroll offset handling
2011.09.02 1.6.7 more refactoring and cleanup of default form init/save handlers
2011.08.02 1.6.6 major code refactor to allow customization of form handling for type-specific [[PasteUpHelperPlugin]] extensions
2011.07.30 1.6.5 in removePanel(), call Popup.remove() so 'child' popups are closed when panel is closed
2011.07.24 1.6.4 refactored save() to provide updateTiddler() entry point for use with PasteUpHelperPlugin 'quickmenu' commands. Added getMX() and getMY() for cross-browser mouse coordinates
2011.06.05 1.6.3 added TiddlySpace cloneFields() to delete and save handlers so editing sections automatically copies/owns an included tiddler
2011.05.05 1.6.2 renamed delete() to deleteSection() to avoid javascript keyword errors
2011.05.04 1.6.1 in delete(), use removeTiddler() for proper notification handling
2011.05.01 1.6.0 added delete() functionality
2011.01.09 1.5.1 in handler(), don't render command link if document is readOnly
2010.12.24 1.5.0 replace use of core Popups with custom panel handling (bypass core interactions and errors)
2010.11.07 1.4.0 in popup(), render HTML form from EditSectionTemplate, and then applyHtmlMacros() to render wiki-syntax macro-generated form elements (e.g., {{{<<option>>, <<select>>}}}, etc.).  Also, refactored form init/save handling to add customization 'hooks'
2010.10.25 1.3.0 added support for editing complete tiddlers using "~TiddlerName" syntax (omit "##sectionname")
2010.07.15 1.2.0 added confirmation when section rename will overwrite other section
2010.07.13 1.1.1 added 'dirty flag' confirmation to popup handling to avoid discarding unsaved changes
2010.07.11 1.1.0 fixed handling for creating new sections in existing tiddlers. Copied StickyPopupPlugin to eliminate dependency. Added Popup.showHere()
2010.05.24 1.0.2 in save(), escape regexp chars in section titles (e.g. "!SectionNameWith?InIt")
2009.09.07 1.0.1 documentation/code cleanup
2009.09.01 1.0.0 initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.EditSectionPlugin= {major: 1, minor: 8, revision: 1, date: new Date(2012,1,29)};

config.macros.editSection = {
	label: 'redigér sektion...',
	tip: 'redigér %0',
	sectionfmt: '{{hidden{\n!%0\n%1\n!end\n}}}',
	sectionerr: 'ugyldigt tiddler/sektionsnavn: %0',
	newtiddlertxt: '',
	discardmsg: 'Fortryd ugemte ændringer for %0?',
	deletemsg: 'Er du sikker på du vil slette %0?',
	overwritemsg: '%0##%2 findes allerede. Vælg OK for at overskrive den',
	template: 'EditSectionTemplate', // DEFAULT FORM TEMPLATE
//}}}
// // PLUGIN INITIALIZATION
//{{{
	init: function() {
		// SHADOW PAYLOAD FOR DEFAULT EditSectionTemplate FORM DEFINITION
		config.shadowTiddlers[this.template]
			=store.getTiddlerText('EditSectionPlugin##HTML','');

		// CLOSE PANELS IF CLICK on other than POPUP OR EDITOR PANEL
		addEvent(document,'click',function(ev) {
			var p=resolveTarget(ev||window.event);
			while (p) {
				if (hasClass(p,'editSectionPanel')) break;
				if (hasClass(p,'popup')) break;
				p=p.parentNode;
			}
			if (!p) config.macros.editSection.removeAllPanels();
			return true;
		});

		// HIJACK QuickEditPlugin's getField() to support use with editSectionPanel
		if (config.quickEdit) {
			config.quickEdit.getTiddlerField=config.quickEdit.getField;
			config.quickEdit.getField=function(where) {
				var e=where; while(e) {	if (hasClass(e,'editSectionPanel')) break; e=e.parentNode; }
				return e?e.getElementsByTagName('textarea')[0]:this.getTiddlerField(where);
			}

		}
	},
//}}}
// // GENERAL UTILITIES
//{{{
	ok: function(ev) { var ev=ev||window.event;
		ev.cancelBubble=true;
		if(ev.stopPropagation)ev.stopPropagation();
		return false;
	},
	getMX: function(ev) { var ev=ev||window.event; // GET MOUSE X
		if (config.browser.isIE)	return ev.clientX+findScrollX();// IE
		if (config.userAgent.indexOf('chrome')!=-1) return ev.pageX;	// Chrome
		if (config.browser.isSafari) 	return ev.pageX+findScrollX(); 	// Webkit
		else				return ev.pageX;		// Firefox/other
	},
	getMY: function(ev) { var ev=ev||window.event; // GET MOUSE Y
		if (config.browser.isIE)	return ev.clientY+findScrollY();// IE
		if (config.userAgent.indexOf('chrome')!=-1) return ev.pageY;	// Chrome
		if (config.browser.isSafari) 	return ev.pageY+findScrollY();	// Webkit
		else				return ev.pageY;		// Firefox/other
	},
	cloneFields: function(fields) { // for TIDDLYSPACE compatibility
		var f=merge({},fields); // copy object
		if (f["server.workspace"]!=config.defaultCustomFields["server.workspace"]) {
			f=merge(f,config.defaultCustomFields); // overwrite with defaults
			f["server.permissions"] = "read, write, create, delete";
			delete f["server.page.revision"];
			delete f["server.title"];
			delete f["server.etag"];
		}
		return f;
	},
//}}}
// // MACRO/CLICK HANDLER
//{{{
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		if (readOnly) return;
		var here=story.findContainingTiddler(place);
		var tid=params[0];
		var label=params[1]||this.label.format([tid]);
		var tip=params[2]||this.tip.format([tid]);
		var btn=createTiddlyButton(place,label,tip,this.click);
		btn.setAttribute('tid',tid);
	},
	click: function(ev,type) { // note: optional 'type' is passed in from PasteUpPluginHelper
		var parts=this.getAttribute('tid').split('##');
		var title=parts[0]; var section=parts[1];
		var here=story.findContainingTiddler(this);
		if (!title&&here) title=here.getAttribute('tiddler');
		if (!title) return false;
		var tid=title; if (section&&section.length) tid=[title,section].join('##');
		return config.macros.editSection.createPanel(this,ev,tid,title,section,type);
	},
//}}}
// // EDITOR PANEL HANDLER
//{{{
	createPanel: function(here,ev,tid,title,section,type) {
		if (!this.removeAllPanels()) return this.ok(ev);
		var p=createTiddlyElement(document.body,"ol",
			"editSectionPanel","popup smallform editSectionPanel");
		p.root=here; 
		p.setAttribute('dirty',null);
		p.setAttribute('message',this.discardmsg.format([tid]));
		p.onmousedown=this.mousedown; p.style.cursor='move'; // for panel dragging
		p.innerHTML=store.getRecursiveTiddlerText(this.getForm(tid,type),'',10);
		applyHtmlMacros(p,store.getTiddler(title));
		var f=p.getElementsByTagName('form')[0];
		f.panel=p;
		f.title.value=title;
		f.section.value=section||'';
		f.init=this.getInitForm(tid,type);
		f.save=this.getSaveForm(tid,type);
		f.init(here,f,title,section,type);
		this.showPanel(p,here,ev);
		return this.ok(ev);
	},
	showPanel: function(p,here,ev) {
		var x=this.getMX(ev); var y=this.getMY(ev);
		var winw=findWindowWidth();
		var scrollw=winw-document.body.offsetWidth;
		if(p.offsetWidth>winw*0.75) p.style.width=winw*0.75 + "px";
		if(x+p.offsetWidth>winw-scrollw-1) x=winw-p.offsetWidth-scrollw-1;
		var s=p.style; s.left=x+'px'; s.top=y+'px'; s.display='block';
		if(config.options.chkAnimate && anim)	anim.startAnimating(new Scroller(p));
		else					window.scrollTo(0,ensureVisible(p));
	},
	removePanel: function(p) {
		Popup.remove(); // child popup (if any) is closed when panel is closed
		if (!p || p.getAttribute('dirty')!='true' || confirm(p.getAttribute('message')))
			{ if (p) removeNode(p); return true; }
		return false;
	},
	removeAllPanels: function() {
		var ok=true;
		jQuery('.editSectionPanel').each(function(index){
			var f=this.getElementsByTagName('form')[0];
			if (f.content) f.content.blur(); // force onchange (sets 'dirty' flag as needed)
			ok=config.macros.editSection.removePanel(this);
			return true;
		});
		return ok; // FALSE if panels remain
	},
//}}}
// // PANEL DRAG HANDLER
//{{{
	mousedown: function(ev) { ev=ev||window.event; // MOVE PANEL
		var cme=config.macros.editSection; // abbrev

		// ignore clickthrough from form fields, links, and images
		var target=resolveTarget(ev);
		if (['TEXTAREA','SELECT','INPUT','A','IMG'].contains(target.nodeName.toUpperCase()))
			return true;

		// GET TRACKING ELEMENT
		var track=this; // if 'capture' not supported, track in element only
		if (document.body.setCapture) var track=document.body; // IE
		if (window.captureEvents) var track=window; // moz
		if (!track.save_onmousemove) track.save_onmousemove=track.onmousemove;
		if (!track.save_onmouseup)   track.save_onmouseup  =track.onmouseup;
		if (!track.save_onkeyup)     track.save_onkeyup    =track.onkeyup;
		track.onmousemove=cme.dragmove;
		track.onmouseup	 =cme.dragup;
		track.onkeyup	 =cme.dragkeyup;
		// SAVE INITIAL POSITION
		track.elem=this;		// panel element
		track.start={
			X: cme.getMX(ev),  Y: cme.getMY(ev),	// mouse position
			T: this.offsetTop, L: this.offsetLeft,	// panel position
		}
		return cme.ok(ev);
	},
	dragmove: function(ev) { ev=ev||window.event; // MOVE PANEL
		var cme=config.macros.editSection; // abbrev
		// CAPTURE MOUSE EVENTS DURING DRAG
		if (document.body.setCapture) document.body.setCapture(); // IE
		if (window.captureEvents) window.captureEvents(Event.MouseMove|Event.MouseUp,true); // moz
		var e=this.elem; var s=e.style;
		var dX=cme.getMX(ev)-this.start.X;
		var dY=cme.getMY(ev)-this.start.Y;
		e.changed=e.changed||(Math.abs(dX)>1)||(Math.abs(dY)>1); // MINIMUM 2px MOVEMENT
		if (!e.changed) return cme.ok(ev);
		s.top =this.start.T+dY+'px';
		s.left=this.start.L+dX+'px';
		return cme.ok(ev);
	},
	dragkeyup: function(ev) { ev=ev||window.event; // STOP DRAG (ESC key)
		if (ev.keyCode==27) {
			var s=this.elem.style;
			s.top=this.start.T+'px';
			s.left=this.start.L+'px';
			return this.onmouseup(ev);
		}
	},
	dragup: function(ev) { ev=ev||window.event; // RELEASE MOUSE
		var cme=config.macros.editSection; // abbrev
		if (document.body.releaseCapture) document.body.releaseCapture(); // IE
		if (window.releaseEvents) window.releaseEvents(Event.MouseMove|Event.MouseUp); // moz
		this.onmousemove=this.save_onmousemove;
		this.onmouseup  =this.save_onmouseup;
		this.onkeyup    =this.save_onkeyup;
		return cme.ok(ev);
	},
//}}}
// // EDITOR FORM HANDLER
//{{{
	getForm:	function(tid,type) { return this.template; }, // see PasteUpHelperPlugin
	getInitForm:	function(tid,type) { return this.initForm; }, // see PasteUpHelperPlugin
	getSaveForm:	function(tid,type) { return this.saveForm; }, // see PasteUpHelperPlugin
	initForm: function(here,form,title,section,type) { // SET FORM CONTENT FROM TIDDLER SECTION
		var tid=title; if (section) tid=[title,section].join('##');
		form.newsection.value=tid; // target for output
		form.content.value=store.getTiddlerText(tid,'');
		if (version.extensions.TextAreaPlugin) new window.TextAreaResizer(form.content);
	},
	saveForm: function(here,ev) { // GET SECTION CONTENT FROM FORM (DEFAULT=TEXT CONTENT ONLY)
		var f=here.form;

		// GET TARGET TITLE/SECTION
		var tid=f.newsection.value;
		var parts=tid.split('##');
		var title=parts[0];
		var section=parts[1];
		var oldsection=f.section.value;
		var where=f.panel.root;
		if (!title) title=story.findContainingTiddler(where).getAttribute('tiddler');
		if (!title) {
			displayMessage(this.sectionerr.format([f.newsection.value]));
			f.newsection.focus(); f.newsection.select(); return false;
		}
		// CHECK FOR TIDDLER OVERWRITE
		if (!section && title!=f.title.value && store.tiddlerExists(title)) {
			if (!confirm(config.messages.overwriteWarning.format([title])))
				{ f.newsection.focus(); f.newsection.select(); return this.ok(ev); }

		}
		// WRITE TIDDLER CONTENT and CLOSE PANEL
		this.updateTiddler(f.content.value,title,section,oldsection);
		f.panel.setAttribute('dirty',null); this.removePanel(f.panel);
		return this.ok(ev);
	},
	changed: function(here,ev) {
		here.form.panel.setAttribute('dirty','true');
		return this.ok(ev);
	},
	cancel: function(here,ev) {
		this.removePanel(here.form.panel);
		return this.ok(ev);
	},
	remove: function(here,ev) {
		var f=here.form;
		var title=f.title.value;
		var section=f.section.value;
		var tid=title; if (section.length) tid=[title,section].join('##');
		var msg=this.deletemsg.format([tid]);
		if (!confirm(msg)) return this.ok(ev);
		this.deleteSection(title,section);
		f.panel.setAttribute('dirty',null);
		this.removePanel(f.panel);
		return this.ok(ev);
	},
//}}}
// // TIDDLER I/O
//{{{
	updateTiddler: function(txt,title,section,oldsection) {
		// GET (or CREATE) TIDDLER
		var t=store.getTiddler(title);
		var who =t&&config.options.chkForceMinorUpdate?t.modifier:config.options.txtUserName;
		var when=t&&config.options.chkForceMinorUpdate?t.modified:new Date();
		if (!t) {
			t=new Tiddler(); t.text=store.getTiddlerText(title,'');
			if (section&&!t.text.length) t.text=this.newtiddlertxt.format([title,section]);
		}
		// ADD/REVISE/RENAME SECTION CONTENT (if any)
		if (section) {
			// GET SECTION VALUES
			if (!oldsection) var oldsection=section;
			var oldval=store.getTiddlerText(title+'##'+oldsection); // previous section value
			var newval=txt; // revised section value
			var existingval=store.getTiddlerText(title+'##'+section); // existing section value
			// REVISE TIDDLER TEXT
			var txt=t.text; // default tiddler text = unchanged
			var pattern=new RegExp('(.*!{1,6})'+oldsection.escapeRegExp()+'\\n'
				+(oldval||'').escapeRegExp()+'((?:\\n!{1,6}|$).*)');
			var altpattern=this.sectionfmt.format([oldsection,oldval||'']);
			if (section!=oldsection && existingval) { // rename overwrites another section...
				if (!confirm(this.overwritemsg.format([title,section])))
					return this.ok(ev);
				txt=txt.replace(altpattern,''); // REMOVE old section (auto-generated)
				txt=txt.replace(pattern,'$2');  // REMOVE old section (generic format)
				// TARGET new section name and value
				pattern=new RegExp('(.*!{1,6})'+section.escapeRegExp()+'\\n'
					+existingval.escapeRegExp()+'((?:\\n!{1,6}|$).*)');
				oldval=existingval;
			}
			if (typeof oldval=="string") // section exists... update/rename it
				txt=txt.replace(pattern,'$1'+section+'\n'+newval+'$2');
			else // otherwise, append a new section to end of tiddler
				txt=txt+this.sectionfmt.format([section,newval]);
		}
		// SAVE TIDDLER
		var fields=this.cloneFields(t.fields);
		store.saveTiddler(title,title,txt,who,when,t.tags,fields);
		story.refreshTiddler(title,null,true);
		autoSaveChanges();
	},
	deleteSection: function(title,section) {
		// GET TIDDLER
		var t=store.getTiddler(title); if (!t) return;
		var who =t&&config.options.chkForceMinorUpdate?t.modifier:config.options.txtUserName;
		var when=t&&config.options.chkForceMinorUpdate?t.modified:new Date();
		if (!section) { // REMOVE TIDDLER
			store.removeTiddler(title);
		} else { // REMOVE SECTION FROM TIDDLER
			var val=store.getTiddlerText(title+'##'+section); // CURRENT SECTION VALUE
			if (typeof val=="string") { // section exists
				var txt=t.text; // default tiddler text = unchanged
				var pattern=new RegExp('(.*!{1,6})'+section.escapeRegExp()+'\\n'
					+(val||'').escapeRegExp()+'((?:\\n!{1,6}|$).*)');
				var altpattern=this.sectionfmt.format([section,val||'']);
				txt=txt.replace(altpattern,''); // REMOVE old section (auto-generated)
				txt=txt.replace(pattern,'$2');  // REMOVE old section (generic format)
				var fields=this.cloneFields(t.fields);
				store.saveTiddler(title,title,txt,who,when,t.tags,fields);
				story.refreshTiddler(title,null,true);
				autoSaveChanges();
			}
		}
	}
}
//}}}
// // EDIT SECTIONS MACRO
//{{{
config.macros.editSections = {
	label: 'edit...',
	tip: 'edit this section',
	command: '~~<<editSection [[##%0]] "%1" "%2">>~~',
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		if (readOnly) return;
		var elems=place.parentNode.getElementsByTagName("*");
		for (var i=0; i<elems.length; i++) { var e=elems[i]; // for each heading element
			if (!['H1','H2','H3','H4','H5'].contains(e.nodeName)) continue;
			var section=e.textContent;
			var label=(params[0]||this.label).format([section]);
			var tip  =(params[1]||this.tip  ).format([section]);
			wikify(this.command.format([section,label,tip]),e);
		}		
	}
}
//}}}
/***
//{{{
!HTML
<!--{{{-->
<!--
|Name|EditSectionTemplate|
|Source||
|Version||
|Author||
|License|http://www.TiddlyTools.com/#LegalStatements|
|Type|template|
|Requires|EditSectionPlugin|
|Description|popup editor form template used by EditSectionPlugin|
-->
<form action='javascript:;' style="white-space:nowrap">
<input type="hidden" name="title" value="">
<input type="hidden" name="section" value="">
<input type="text" name="newsection" value="" autocomplete="off" style="width:61%"
	onchange="return config.macros.editSection.changed(this,event);">
<input type=button value="save" style="width:12%"
	onclick="return config.macros.editSection.saveForm(this,event)">
<input type=button value="cancel" style="width:12%"
	onclick="return config.macros.editSection.cancel(this,event)">
<input type=button value="delete" style="width:12%"
	onclick="return config.macros.editSection.remove(this,event)">
<div macro="tiddler QuickEditToolbar"></div>
<textarea name="content" rows="15" cols="80" autocomplete="off"
	onchange="return config.macros.editSection.changed(this,event)"></textarea>
</form>
<!--}}}-->
!end
//}}}
***/
// //<<editSections "edit">> 
<!--{{{-->
<!--
|Name|EditSectionTemplate|
|Source||
|Version||
|Author||
|License|http://www.TiddlyTools.com/#LegalStatements|
|Type|template|
|Requires|EditSectionPlugin|
|Description|popup editor form template used by EditSectionPlugin|
-->
<form action='javascript:;' style="white-space:nowrap">
<input type="hidden" name="title" value="">
<input type="hidden" name="section" value="">
<input type="text" name="newsection" value="" autocomplete="off" style="width:61%"
	onchange="return config.macros.editSection.changed(this,event);">
<input type=button value="gem" style="width:12%"
	onclick="return config.macros.editSection.saveForm(this,event)">
<input type=button value="fortryd" style="width:12%"
	onclick="return config.macros.editSection.cancel(this,event)">
<input type=button value="slet" style="width:12%"
	onclick="return config.macros.editSection.remove(this,event)">
<div macro="tiddler QuickEditToolbar with:show"></div>
<textarea name="content" rows="15" cols="80" autocomplete="off"
	onchange="return config.macros.editSection.changed(this,event)"></textarea>
</form>
<!--}}}-->
<!--{{{-->
<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 macro=""showWhen !readOnly">
<div macro='tiddler QuickEditToolbar with:show'></div></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>
<!--}}}-->
cm
centimeter
----
m
meter
----
cm i diameter
----
/***
|''Name:''|FE2|
|''Description:''|create, edit, view and delete commands in the toolbar fields popup|
|''Version:''|1.0.5|
|''Date:''|2011.07.21|
|''Source:''|http://tbGTD.tiddlyspot.com|
|''Author:''|Tobias Beer|
|''License:''|[[BSD open source license|License]]|
|''~CoreVersion:''|2.5.3|
|''Browser:''|Firefox 2.0; InternetExplorer 6.0, others|
!Note
This is a refactored version of [[FieldsEditorPlugin|http://visualtw.ouvaton.org/VisualTW.html#FieldsEditorPlugin]] by Pascal Collin
!Installation:
*import this tiddler, keep tagged as systemConfig, save and reload
!Inline use
Allows to edit fields on a remote tiddler...
{{{<<FE2 tidName btnText btnTooltip>>}}}
*{{{tidName}}} is required 
*{{{btnText}}} and {{{btnTooltip}}} are optional
!Options
*add {{{config.options.chkHideServerFieldsFromFE2 = false;}}} to your zzConfig to also show TiddlySpace fields
!Code
***/
//{{{
(function($){
//general options
config.options.chkHideServerFieldsFromFE2='true';
//language options
config.commands.fields.lang={
	field:"felt",
	actions:"handlinger",
	value:"værdi",
	'delete':'slet',
	rename:'omdøb',
	create:'tilføj et nyt felt...',
	edit:'redigér',
	inline:'felter',
	thisfield:' dette felt',
	lineBreaks:"Feltværdien indeholder linieskift.\nHvis du redigerer her vil det ændres til en enkelt linie!\nFortsæt?",
	enterName:"Skriv et nyt feltnavn...",
	enterNewName:"Skriv en ny titel til '%1'...",
	enterVal:"Angiv en feltværdi til '%1'...", 
	enterNewVal:"Angiv en ny værdi til '%1'..",
	doDelete:"Slet feltet '%1' fra tiddleren '%2' ?",
	existing:"Dette felt findes allerede! ",
	btnInline:'redigér felter',
	btnInlineTooltip:'Klik for at redigere felterne i tiddleren "%0"...'
};
config.commands.fields.handlePopup=function(popup,title){
	var f,action,
		ls=[],
		fields={},
		pre='<<FE2 [['+title+']] POPUPMODE ',
		tid=store.fetchTiddler(title);
	$(popup).addClass('FE2');
	if(!tid)return;
	store.forEachField(
		tid,
		function(tid,f,v){fields[f]=v;},
		true
	);
	for(f in fields){
		if(config.options.chkHideServerFieldsFromFE2&&(f.substr(0,7)=='server.'||f=='_hash'))continue;
		action=pre+'[['+f+']] ';
		ls.push({
			field:f,
			value:fields[f],
			actions:action+"edit>> "+action+"rename>> "+action+"delete>>"
		});
	}
	ls.sort(
		function(a,b){return a.field<b.field?-1:(a.field==b.field?0:+1);}
	);
	ls.push({field:'',value:"",actions:pre+"[[]] create>>"});
	ListView.create(popup,ls,{
		columns:[
			{
				name:'Field',
				field:'field',
				title:this.lang.field,
				type:'String'
			},{
				name:'Value',
				field:'value',
				title:this.lang.value,
				type:'WikiText'
			},{
				name:'Actions',
				field:'actions',
				title:this.lang.actions,
				type: 'WikiText'
			}
		],
		rowClasses:[
				{field:'actions'}
		],
		buttons:[
			//can't use button for selected then delete
			//because click on checkbox will hide the popup
		]
	});
}
config.macros.FE2={
	handler:function(place,macroName,params,wikifier,paramString,tiddler){
		if(!readOnly){
			var mode,field,
				tid = params[0],
				lang=config.commands.fields.lang;
			if(!store.getTiddler(tid))return;
			if(params[1]=='POPUPMODE'){
				field=params[2];
				mode=params[3];
				$(createTiddlyButton(
					place,
					lang[mode],
					lang[mode]+lang['thisfield'],
					this.clicked
				)).attr({
					'tiddler':tid,
					'field':field,
					'mode':mode
				});
			} else {
				$(createTiddlyButton(
					place,
					params[1]?params[1]:lang['btnInline'],
					(params[2]?params[2]:lang['btnInlineTooltip']).format([tid]),
					config.macros.toolbar.onClickPopup
				)).attr({
					'commandName':'fields',
					'tiddler':tid
				}).addClass('command_fields');
			}
		}
	},
	clicked:function(){
		var btn=$(this),
			mode=btn.attr('mode'),
			field=btn.attr('field'),
			title=btn.attr('tiddler'),
			tid=store.getTiddler(title),
			lang=config.commands.fields.lang;
		if(!tid)return;
		switch(mode){
			case'create':
				var first="";
				do{
					field=prompt(first+ lang.enterName,"");
					first=lang.existing;
				}while(store.getValue(tid,field));
				if(field){
					var v=prompt(lang.enterVal.replace(/%1/,field),"");
					if(v)tid.fields[field]=v;else return;
				}else return;
				break;
			case'delete':
				if(confirm(lang.doDelete.replace(/%1/,field).replace(/%2/,title))){
					delete tid.fields[field];
				}else return;
				break;
			case'edit':
				var v=tid.fields[field]||'';
				if(!v.match(/\n/mg)||confirm(lang.lineBreaks)){
					var v=prompt(lang.enterNewVal.replace(/%1/,field),v);
					if(v||v=='')tid.fields[field]=v;else return;
				}else return;
				break;
			case'rename':
				var name=prompt(lang.enterNewName.replace(/%1/,field),field);
				if(name){
					tid.fields[name]=tid.fields[field];
					delete tid.fields[field];
				}else return;
				break;
			default:return;
		}
		store.saveTiddler(
			tid.title,
			tid.title,
			tid.text,
			tid.modifier,
			tid.modified,
			tid.tags,
			tid.fields
		);
		autoSaveChanges();
		story.refreshTiddler(title,null,true);
		return false;
	}
}

config.shadowTiddlers.StyleSheetFE2=
	".FE2 td br{display:block;}\n"+
	".FE2 td {font-size:12px;padding:1px 3px}\n"+
	".FE2 .button {border:0;padding:0 0.2em;color:#999;}\n"+
	".FE2 .button:hover {color:#CCC;background:transparent;}\n"+
	".FE2 .twtable,.FE2 .twtable thead, .FE2 .twtable tr{border:0}\n"+
	".FE2 .twtable tr:hover{color:"+store.getTiddlerSlice('ColorPalette','TertiaryPale')+";background:"+store.getTiddlerSlice('ColorPalette','TertiaryDark')+"}\n"+
	".FE2 .twtable thead{font-size:13px;}";
store.addNotification("StyleSheetFE2",refreshStyles);
})(jQuery);
//}}}
Ericaceae
forklaring
----
Latinsk ord 2
forklaring
----
Latinsk ord 3
forklaring
----
Latinsk ord 4
forklaring
----
/***
|''Name''|FindrPlugin|
|''Description''|display search results in a list with more flexibility|
|''Documentation''|http://findr.tiddlyspace.com|
|''Authors''|Tobias Beer|
|''Version''|1.1.0 (2013-10-11)|
|''CoreVersion''|2.5.2|
|''Source''|https://raw.github.com/tobibeer/TiddlyWikiPlugins/master/plugins/FindrPlugin.min.js|
|''License''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
***/
///%
(function(e){var t=config.macros.findr={config:{where:"",fallback:"#displayArea",how:"prependTo",hide:"",empty:false,listfiltr:true,fields:"",exclude:"excludeSearch",categories:"title tags text fields",sort:"title",id:"searchResults",idClose:"search_close",idOpenAll:"search_open",fmtHeader:"\n!Search Results",fmtMessage:"\n''%0''",fmtItems:"\n{{search_list{%0\n}}}\n",fmtItem:"\n* [[%0]]",fmtCategory:"\n;%0",fmtItemByCat:"\n:[[%0]]%1",fmtDetails:" {{search_details{(%0)}}}",fmtQuery:"'%0'",fmtRegExp:"/%0/",btnCloseLabel:"close",btnCloseTooltip:"dismiss search results",btnOpenLabel:"open all",btnOpenTooltip:"open all search results",cattitle:"i titlen på...",cattags:"i tags...",cattext:"i teksten på...",catfields:"in fields...",catfieldsField:"''%0'' ",cattagsTag:"<<tag [[%0]]>> "}};merge(config.macros.findr,{handler:function(e,t,n,r,i,s){wikify("<<search>>",e)},displayResults:function(n,r,i,s){var o,u,a,f="",l=s.categories||"",c=e(s.where).first(),h=0,p=[],d=[];e.each(n,function(e,t){h+=t.length;if(!l)d.concat(t)});e("#"+s.id).remove();story.refreshAllTiddlers(true);r='"""%0"""'.format(s[i?"fmtQuery":"fmtRegExp"].format(i?s.fmtRegExp.format(r):r));e(s.hide).hide();if(!c.length)c=e(s.fallback);if(s.empty)c.empty();el=e("<div/>").attr("id",s.id);switch(s.how){case"insertAfter":el.insertAfter(c);break;case"insertBefore":el.insertBefore(c);break;case"appendTo":el.appendTo(c);break;default:el.prependTo(c)}el=e('<div class="findr"/>').appendTo(el);el=el[0];if(h){u=s.fmtMessage.format(config.macros.search.successMsg.format([h,r]));s.results=[];(l?l:"tids").readBracketedList().map(function(t){var r=t=="tids"?d:n[t]||[],i=s.sort,o=i.substr(0,1)=="-";if(o)i=i.substr(1);r.sort(function(e,t){var n=e[0][i].toLowerCase()<t[0][i].toLowerCase()?o?+1:-1:e[0][i].toLowerCase()==t[0][i].toLowerCase()?0:o?-1:+1;return n});if(l&&r.length){f+=s.fmtCategory.format(s["cat"+t])}r.map(function(n){var r="",i=n[0];(n[1]||[]).map(function(e){r+=s[t=="tags"?"cattagsTag":"catfieldsField"].format(e)});p.push(i.title);f+=s[l?"fmtItemByCat":"fmtItem"].format(i.title,r?s.fmtDetails.format(e.trim(r)):"")})})}else{u=s.fmtMessage.format(config.macros.search.failureMsg.format([r]))}o=createTiddlyElement(el,"div","findr-buttons");createTiddlyButton(o,s.btnCloseLabel,s.btnCloseTooltip,t.closeResults,"button",s.idClose);if(h){createTiddlyButton(o,s.btnOpenLabel,s.btnOpenTooltip,t.openAll,"button",s.idOpenAll)}a=s.fmtHeader+u+s.fmtItems.format(f)+(s.listfiltr&&config.macros.listfiltr?"<<listfiltr>>":"");wikify(a,el);e(el).data({tids:p,options:s})},closeResults:function(t){var n=e(this).closest(".findr").data("options"),r=e("#"+n.id),i=r.closest('[refresh="content"]')[0];e(n.hide).show();if(i)config.refreshers.content(i);r.remove();highlightHack=null},openAll:function(t){tids=e(this).closest(".findr").data("tids");story.displayTiddlers(null,tids);return false},search:function(t,n,r){var i={title:[],tags:[],text:[],fields:[]},s=r.exclude.readBracketedList(),o=r.fields.readBracketedList(),u=function(e,t,n){i[t].push([e,n])};store.forEachTiddler(function(n,r){if(s.contains(r.title)||s.containsAny(r.tags))return true;if(-1!=r.title.search(t)){u(r,"title")}else if(-1!=r.tags.join(", ").search(t)){u(r,"tags",r.tags)}else if(-1!=r.text.search(t)){u(r,"text")}else if(o.length&&r.fields){var i=[];e.each(r.fields||{},function(e,n){if(o.contains(e)&&-1!=(n||"").search(t)){i.push(e)}});if(i.length)u(r,"fields",i)}});return i}});Story.prototype.search=function(e,n,r){highlightHack=new RegExp(r?e:e.escapeRegExp(),n?"mg":"img");t.displayResults(t.search(highlightHack,"text",t.config),e,r,t.config)};config.macros.search.onKeyPressFINDR=config.macros.search.onKeyPress;config.macros.search.onKeyPress=function(n){e(this).off("search").on("search",config.macros.search.onKeyPress);if(this.value.length<3){var r=e("#"+t.config.id);if(r.length){e("#"+t.config.idClose).click()}}else{config.macros.search.onKeyPressFINDR.apply(this,arguments)}}})(jQuery)
//%/
/***
|''Name:''|ForEachTiddlerPlugin|
|''Version:''|1.0.8 (2007-04-12)|
|''Source:''|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|&copy; 2005-2007 [[abego Software|http://www.abego-software.de]]|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
!Description

Create customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.

''Syntax:'' 
|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|
|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|
|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and  {{{context}}}.|
|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and  {{{context}}}.|
|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|
|//action//|The action that should be performed on every selected tiddler, in the given order. By default the actions [[addToList|AddToListAction]] and [[write|WriteAction]] are supported. When no action is specified [[addToList|AddToListAction]]  is used.|
|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|

See details see [[ForEachTiddlerMacro]] and [[ForEachTiddlerExamples]].

!Revision history
* v1.0.8 (2007-04-12)
** Adapted to latest TiddlyWiki 2.2 Beta importTiddlyWiki API (introduced with changeset 2004). TiddlyWiki 2.2 Beta builds prior to changeset 2004 are no longer supported (but TiddlyWiki 2.1 and earlier, of cause)
* v1.0.7 (2007-03-28)
** Also support "pre" formatted TiddlyWikis (introduced with TW 2.2) (when using "in" clause to work on external tiddlers)
* v1.0.6 (2006-09-16)
** Context provides "viewerTiddler", i.e. the tiddler used to view the macro. Most times this is equal to the "inTiddler", but when using the "tiddler" macro both may be different.
** Support "begin", "end" and "none" expressions in "write" action
* v1.0.5 (2006-02-05)
** Pass tiddler containing the macro with wikify, context object also holds reference to tiddler containing the macro ("inTiddler"). Thanks to SimonBaird.
** Support Firefox 1.5.0.1
** Internal
*** Make "JSLint" conform
*** "Only install once"
* v1.0.4 (2006-01-06)
** Support TiddlyWiki 2.0
* v1.0.3 (2005-12-22)
** Features: 
*** Write output to a file supports multi-byte environments (Thanks to Bram Chen) 
*** Provide API to access the forEachTiddler functionality directly through JavaScript (see getTiddlers and performMacro)
** Enhancements:
*** Improved error messages on InternetExplorer.
* v1.0.2 (2005-12-10)
** Features: 
*** context object also holds reference to store (TiddlyWiki)
** Fixed Bugs: 
*** ForEachTiddler 1.0.1 has broken support on win32 Opera 8.51 (Thanks to BrunoSabin for reporting)
* v1.0.1 (2005-12-08)
** Features: 
*** Access tiddlers stored in separated TiddlyWikis through the "in" option. I.e. you are no longer limited to only work on the "current TiddlyWiki".
*** Write output to an external file using the "toFile" option of the "write" action. With this option you may write your customized tiddler exports.
*** Use the "script" section to define "helper" JavaScript functions etc. to be used in the various JavaScript expressions (whereClause, sortClause, action arguments,...).
*** Access and store context information for the current forEachTiddler invocation (through the build-in "context" object) .
*** Improved script evaluation (for where/sort clause and write scripts).
* v1.0.0 (2005-11-20)
** initial version

!Code
***/
//{{{

	
//============================================================================
//============================================================================
//		   ForEachTiddlerPlugin
//============================================================================
//============================================================================

// Only install once
if (!version.extensions.ForEachTiddlerPlugin) {

if (!window.abego) window.abego = {};

version.extensions.ForEachTiddlerPlugin = {
	major: 1, minor: 0, revision: 8, 
	date: new Date(2007,3,12), 
	source: "http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin",
	licence: "[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",
	copyright: "Copyright (c) abego Software GmbH, 2005-2007 (www.abego-software.de)"
};

// For backward compatibility with TW 1.2.x
//
if (!TiddlyWiki.prototype.forEachTiddler) {
	TiddlyWiki.prototype.forEachTiddler = function(callback) {
		for(var t in this.tiddlers) {
			callback.call(this,t,this.tiddlers[t]);
		}
	};
}

//============================================================================
// forEachTiddler Macro
//============================================================================

version.extensions.forEachTiddler = {
	major: 1, minor: 0, revision: 8, date: new Date(2007,3,12), provider: "http://tiddlywiki.abego-software.de"};

// ---------------------------------------------------------------------------
// Configurations and constants 
// ---------------------------------------------------------------------------

config.macros.forEachTiddler = {
	 // Standard Properties
	 label: "forEachTiddler",
	 prompt: "Perform actions on a (sorted) selection of tiddlers",

	 // actions
	 actions: {
		 addToList: {},
		 write: {}
	 }
};

// ---------------------------------------------------------------------------
//  The forEachTiddler Macro Handler 
// ---------------------------------------------------------------------------

config.macros.forEachTiddler.getContainingTiddler = function(e) {
	while(e && !hasClass(e,"tiddler"))
		e = e.parentNode;
	var title = e ? e.getAttribute("tiddler") : null; 
	return title ? store.getTiddler(title) : null;
};

config.macros.forEachTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	// config.macros.forEachTiddler.traceMacroCall(place,macroName,params,wikifier,paramString,tiddler);

	if (!tiddler) tiddler = config.macros.forEachTiddler.getContainingTiddler(place);
	// --- Parsing ------------------------------------------

	var i = 0; // index running over the params
	// Parse the "in" clause
	var tiddlyWikiPath = undefined;
	if ((i < params.length) && params[i] == "in") {
		i++;
		if (i >= params.length) {
			this.handleError(place, "TiddlyWiki path expected behind 'in'.");
			return;
		}
		tiddlyWikiPath = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the where clause
	var whereClause ="true";
	if ((i < params.length) && params[i] == "where") {
		i++;
		whereClause = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the sort stuff
	var sortClause = null;
	var sortAscending = true; 
	if ((i < params.length) && params[i] == "sortBy") {
		i++;
		if (i >= params.length) {
			this.handleError(place, "sortClause missing behind 'sortBy'.");
			return;
		}
		sortClause = this.paramEncode(params[i]);
		i++;

		if ((i < params.length) && (params[i] == "ascending" || params[i] == "descending")) {
			 sortAscending = params[i] == "ascending";
			 i++;
		}
	}

	// Parse the script
	var scriptText = null;
	if ((i < params.length) && params[i] == "script") {
		i++;
		scriptText = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the action. 
	// When we are already at the end use the default action
	var actionName = "addToList";
	if (i < params.length) {
	   if (!config.macros.forEachTiddler.actions[params[i]]) {
			this.handleError(place, "Unknown action '"+params[i]+"'.");
			return;
		} else {
			actionName = params[i]; 
			i++;
		}
	} 
	
	// Get the action parameter
	// (the parsing is done inside the individual action implementation.)
	var actionParameter = params.slice(i);


	// --- Processing ------------------------------------------
	try {
		this.performMacro({
				place: place, 
				inTiddler: tiddler,
				whereClause: whereClause, 
				sortClause: sortClause, 
				sortAscending: sortAscending, 
				actionName: actionName, 
				actionParameter: actionParameter, 
				scriptText: scriptText, 
				tiddlyWikiPath: tiddlyWikiPath});

	} catch (e) {
		this.handleError(place, e);
	}
};

// Returns an object with properties "tiddlers" and "context".
// tiddlers holds the (sorted) tiddlers selected by the parameter,
// context the context of the execution of the macro.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlersAndContext = function(parameter) {

	var context = config.macros.forEachTiddler.createContext(parameter.place, parameter.whereClause, parameter.sortClause, parameter.sortAscending, parameter.actionName, parameter.actionParameter, parameter.scriptText, parameter.tiddlyWikiPath, parameter.inTiddler);

	var tiddlyWiki = parameter.tiddlyWikiPath ? this.loadTiddlyWiki(parameter.tiddlyWikiPath) : store;
	context["tiddlyWiki"] = tiddlyWiki;
	
	// Get the tiddlers, as defined by the whereClause
	var tiddlers = this.findTiddlers(parameter.whereClause, context, tiddlyWiki);
	context["tiddlers"] = tiddlers;

	// Sort the tiddlers, when sorting is required.
	if (parameter.sortClause) {
		this.sortTiddlers(tiddlers, parameter.sortClause, parameter.sortAscending, context);
	}

	return {tiddlers: tiddlers, context: context};
};

// Returns the (sorted) tiddlers selected by the parameter.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlers = function(parameter) {
	return this.getTiddlersAndContext(parameter).tiddlers;
};

// Performs the macros with the given parameter.
//
// @param parameter holds the parameter of the macro as separate properties.
//				  The following properties are supported:
//
//						place
//						whereClause
//						sortClause
//						sortAscending
//						actionName
//						actionParameter
//						scriptText
//						tiddlyWikiPath
//
//					All properties are optional. 
//					For most actions the place property must be defined.
//
config.macros.forEachTiddler.performMacro = function(parameter) {
	var tiddlersAndContext = this.getTiddlersAndContext(parameter);

	// Perform the action
	var actionName = parameter.actionName ? parameter.actionName : "addToList";
	var action = config.macros.forEachTiddler.actions[actionName];
	if (!action) {
		this.handleError(parameter.place, "Unknown action '"+actionName+"'.");
		return;
	}

	var actionHandler = action.handler;
	actionHandler(parameter.place, tiddlersAndContext.tiddlers, parameter.actionParameter, tiddlersAndContext.context);
};

// ---------------------------------------------------------------------------
//  The actions 
// ---------------------------------------------------------------------------

// Internal.
//
// --- The addToList Action -----------------------------------------------
//
config.macros.forEachTiddler.actions.addToList.handler = function(place, tiddlers, parameter, context) {
	// Parse the parameter
	var p = 0;

	// Check for extra parameters
	if (parameter.length > p) {
		config.macros.forEachTiddler.createExtraParameterErrorElement(place, "addToList", parameter, p);
		return;
	}

	// Perform the action.
	var list = document.createElement("ul");
	place.appendChild(list);
	for (var i = 0; i < tiddlers.length; i++) {
		var tiddler = tiddlers[i];
		var listItem = document.createElement("li");
		list.appendChild(listItem);
		createTiddlyLink(listItem, tiddler.title, true);
	}
};

abego.parseNamedParameter = function(name, parameter, i) {
	var beginExpression = null;
	if ((i < parameter.length) && parameter[i] == name) {
		i++;
		if (i >= parameter.length) {
			throw "Missing text behind '%0'".format([name]);
		}
		
		return config.macros.forEachTiddler.paramEncode(parameter[i]);
	}
	return null;
}

// Internal.
//
// --- The write Action ---------------------------------------------------
//
config.macros.forEachTiddler.actions.write.handler = function(place, tiddlers, parameter, context) {
	// Parse the parameter
	var p = 0;
	if (p >= parameter.length) {
		this.handleError(place, "Missing expression behind 'write'.");
		return;
	}

	var textExpression = config.macros.forEachTiddler.paramEncode(parameter[p]);
	p++;

	// Parse the "begin" option
	var beginExpression = abego.parseNamedParameter("begin", parameter, p);
	if (beginExpression !== null) 
		p += 2;
	var endExpression = abego.parseNamedParameter("end", parameter, p);
	if (endExpression !== null) 
		p += 2;
	var noneExpression = abego.parseNamedParameter("none", parameter, p);
	if (noneExpression !== null) 
		p += 2;

	// Parse the "toFile" option
	var filename = null;
	var lineSeparator = undefined;
	if ((p < parameter.length) && parameter[p] == "toFile") {
		p++;
		if (p >= parameter.length) {
			this.handleError(place, "Filename expected behind 'toFile' of 'write' action.");
			return;
		}
		
		filename = config.macros.forEachTiddler.getLocalPath(config.macros.forEachTiddler.paramEncode(parameter[p]));
		p++;
		if ((p < parameter.length) && parameter[p] == "withLineSeparator") {
			p++;
			if (p >= parameter.length) {
				this.handleError(place, "Line separator text expected behind 'withLineSeparator' of 'write' action.");
				return;
			}
			lineSeparator = config.macros.forEachTiddler.paramEncode(parameter[p]);
			p++;
		}
	}
	
	// Check for extra parameters
	if (parameter.length > p) {
		config.macros.forEachTiddler.createExtraParameterErrorElement(place, "write", parameter, p);
		return;
	}

	// Perform the action.
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(textExpression, context);
	var count = tiddlers.length;
	var text = "";
	if (count > 0 && beginExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(beginExpression, context)(undefined, context, count, undefined);
	
	for (var i = 0; i < count; i++) {
		var tiddler = tiddlers[i];
		text += func(tiddler, context, count, i);
	}
	
	if (count > 0 && endExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(endExpression, context)(undefined, context, count, undefined);

	if (count == 0 && noneExpression) 
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(noneExpression, context)(undefined, context, count, undefined);
		

	if (filename) {
		if (lineSeparator !== undefined) {
			lineSeparator = lineSeparator.replace(/\\n/mg, "\n").replace(/\\r/mg, "\r");
			text = text.replace(/\n/mg,lineSeparator);
		}
		saveFile(filename, convertUnicodeToUTF8(text));
	} else {
		var wrapper = createTiddlyElement(place, "span");
		wikify(text, wrapper, null/* highlightRegExp */, context.inTiddler);
	}
};


// ---------------------------------------------------------------------------
//  Helpers
// ---------------------------------------------------------------------------

// Internal.
//
config.macros.forEachTiddler.createContext = function(placeParam, whereClauseParam, sortClauseParam, sortAscendingParam, actionNameParam, actionParameterParam, scriptText, tiddlyWikiPathParam, inTiddlerParam) {
	return {
		place : placeParam, 
		whereClause : whereClauseParam, 
		sortClause : sortClauseParam, 
		sortAscending : sortAscendingParam, 
		script : scriptText,
		actionName : actionNameParam, 
		actionParameter : actionParameterParam,
		tiddlyWikiPath : tiddlyWikiPathParam,
		inTiddler : inTiddlerParam, // the tiddler containing the <<forEachTiddler ...>> macro call.
		viewerTiddler : config.macros.forEachTiddler.getContainingTiddler(placeParam) // the tiddler showing the forEachTiddler result
	};
};

// Internal.
//
// Returns a TiddlyWiki with the tiddlers loaded from the TiddlyWiki of 
// the given path.
//
config.macros.forEachTiddler.loadTiddlyWiki = function(path, idPrefix) {
	if (!idPrefix) {
		idPrefix = "store";
	}
	var lenPrefix = idPrefix.length;
	
	// Read the content of the given file
	var content = loadFile(this.getLocalPath(path));
	if(content === null) {
		throw "TiddlyWiki '"+path+"' not found.";
	}
	
	var tiddlyWiki = new TiddlyWiki();

	// Starting with TW 2.2 there is a helper function to import the tiddlers
	if (tiddlyWiki.importTiddlyWiki) {
		if (!tiddlyWiki.importTiddlyWiki(content))
			throw "File '"+path+"' is not a TiddlyWiki.";
		tiddlyWiki.dirty = false;
		return tiddlyWiki;
	}
	
	// The legacy code, for TW < 2.2
	
	// Locate the storeArea div's
	var posOpeningDiv = content.indexOf(startSaveArea);
	var posClosingDiv = content.lastIndexOf(endSaveArea);
	if((posOpeningDiv == -1) || (posClosingDiv == -1)) {
		throw "File '"+path+"' is not a TiddlyWiki.";
	}
	var storageText = content.substr(posOpeningDiv + startSaveArea.length, posClosingDiv);
	
	// Create a "div" element that contains the storage text
	var myStorageDiv = document.createElement("div");
	myStorageDiv.innerHTML = storageText;
	myStorageDiv.normalize();
	
	// Create all tiddlers in a new TiddlyWiki
	// (following code is modified copy of TiddlyWiki.prototype.loadFromDiv)
	var store = myStorageDiv.childNodes;
	for(var t = 0; t < store.length; t++) {
		var e = store[t];
		var title = null;
		if(e.getAttribute)
			title = e.getAttribute("tiddler");
		if(!title && e.id && e.id.substr(0,lenPrefix) == idPrefix)
			title = e.id.substr(lenPrefix);
		if(title && title !== "") {
			var tiddler = tiddlyWiki.createTiddler(title);
			tiddler.loadFromDiv(e,title);
		}
	}
	tiddlyWiki.dirty = false;

	return tiddlyWiki;
};


	
// Internal.
//
// Returns a function that has a function body returning the given javaScriptExpression.
// The function has the parameters:
// 
//	 (tiddler, context, count, index)
//
config.macros.forEachTiddler.getEvalTiddlerFunction = function (javaScriptExpression, context) {
	var script = context["script"];
	var functionText = "var theFunction = function(tiddler, context, count, index) { return "+javaScriptExpression+"}";
	var fullText = (script ? script+";" : "")+functionText+";theFunction;";
	return eval(fullText);
};

// Internal.
//
config.macros.forEachTiddler.findTiddlers = function(whereClause, context, tiddlyWiki) {
	var result = [];
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(whereClause, context);
	tiddlyWiki.forEachTiddler(function(title,tiddler) {
		if (func(tiddler, context, undefined, undefined)) {
			result.push(tiddler);
		}
	});
	return result;
};

// Internal.
//
config.macros.forEachTiddler.createExtraParameterErrorElement = function(place, actionName, parameter, firstUnusedIndex) {
	var message = "Extra parameter behind '"+actionName+"':";
	for (var i = firstUnusedIndex; i < parameter.length; i++) {
		message += " "+parameter[i];
	}
	this.handleError(place, message);
};

// Internal.
//
config.macros.forEachTiddler.sortAscending = function(tiddlerA, tiddlerB) {
	var result = 
		(tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue) 
			? 0
			: (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
			   ? -1 
			   : +1; 
	return result;
};

// Internal.
//
config.macros.forEachTiddler.sortDescending = function(tiddlerA, tiddlerB) {
	var result = 
		(tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue) 
			? 0
			: (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
			   ? +1 
			   : -1; 
	return result;
};

// Internal.
//
config.macros.forEachTiddler.sortTiddlers = function(tiddlers, sortClause, ascending, context) {
	// To avoid evaluating the sortClause whenever two items are compared 
	// we pre-calculate the sortValue for every item in the array and store it in a 
	// temporary property ("forEachTiddlerSortValue") of the tiddlers.
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(sortClause, context);
	var count = tiddlers.length;
	var i;
	for (i = 0; i < count; i++) {
		var tiddler = tiddlers[i];
		tiddler.forEachTiddlerSortValue = func(tiddler,context, undefined, undefined);
	}

	// Do the sorting
	tiddlers.sort(ascending ? this.sortAscending : this.sortDescending);

	// Delete the temporary property that holds the sortValue.	
	for (i = 0; i < tiddlers.length; i++) {
		delete tiddlers[i].forEachTiddlerSortValue;
	}
};


// Internal.
//
config.macros.forEachTiddler.trace = function(message) {
	displayMessage(message);
};

// Internal.
//
config.macros.forEachTiddler.traceMacroCall = function(place,macroName,params) {
	var message ="<<"+macroName;
	for (var i = 0; i < params.length; i++) {
		message += " "+params[i];
	}
	message += ">>";
	displayMessage(message);
};


// Internal.
//
// Creates an element that holds an error message
// 
config.macros.forEachTiddler.createErrorElement = function(place, exception) {
	var message = (exception.description) ? exception.description : exception.toString();
	return createTiddlyElement(place,"span",null,"forEachTiddlerError","<<forEachTiddler ...>>: "+message);
};

// Internal.
//
// @param place [may be null]
//
config.macros.forEachTiddler.handleError = function(place, exception) {
	if (place) {
		this.createErrorElement(place, exception);
	} else {
		throw exception;
	}
};

// Internal.
//
// Encodes the given string.
//
// Replaces 
//	 "$))" to ">>"
//	 "$)" to ">"
//
config.macros.forEachTiddler.paramEncode = function(s) {
	var reGTGT = new RegExp("\\$\\)\\)","mg");
	var reGT = new RegExp("\\$\\)","mg");
	return s.replace(reGTGT, ">>").replace(reGT, ">");
};

// Internal.
//
// Returns the given original path (that is a file path, starting with "file:")
// as a path to a local file, in the systems native file format.
//
// Location information in the originalPath (i.e. the "#" and stuff following)
// is stripped.
// 
config.macros.forEachTiddler.getLocalPath = function(originalPath) {
	// Remove any location part of the URL
	var hashPos = originalPath.indexOf("#");
	if(hashPos != -1)
		originalPath = originalPath.substr(0,hashPos);
	// Convert to a native file format assuming
	// "file:///x:/path/path/path..." - pc local file --> "x:\path\path\path..."
	// "file://///server/share/path/path/path..." - FireFox pc network file --> "\\server\share\path\path\path..."
	// "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."
	// "file://server/share/path/path/path..." - pc network file --> "\\server\share\path\path\path..."
	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;
};

// ---------------------------------------------------------------------------
// Stylesheet Extensions (may be overridden by local StyleSheet)
// ---------------------------------------------------------------------------
//
setStylesheet(
	".forEachTiddlerError{color: #ffffff;background-color: #880000;}",
	"forEachTiddler");

//============================================================================
// End of forEachTiddler Macro
//============================================================================


//============================================================================
// String.startsWith Function
//============================================================================
//
// Returns true if the string starts with the given prefix, false otherwise.
//
version.extensions["String.startsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.startsWith = function(prefix) {
	var n =  prefix.length;
	return (this.length >= n) && (this.slice(0, n) == prefix);
};



//============================================================================
// String.endsWith Function
//============================================================================
//
// Returns true if the string ends with the given suffix, false otherwise.
//
version.extensions["String.endsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.endsWith = function(suffix) {
	var n = suffix.length;
	return (this.length >= n) && (this.right(n) == suffix);
};


//============================================================================
// String.contains Function
//============================================================================
//
// Returns true when the string contains the given substring, false otherwise.
//
version.extensions["String.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.contains = function(substring) {
	return this.indexOf(substring) >= 0;
};

//============================================================================
// Array.indexOf Function
//============================================================================
//
// Returns the index of the first occurance of the given item in the array or 
// -1 when no such item exists.
//
// @param item [may be null]
//
version.extensions["Array.indexOf"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.indexOf = function(item) {
	for (var i = 0; i < this.length; i++) {
		if (this[i] == item) {
			return i;
		}
	}
	return -1;
};

//============================================================================
// Array.contains Function
//============================================================================
//
// Returns true when the array contains the given item, otherwise false. 
//
// @param item [may be null]
//
version.extensions["Array.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.contains = function(item) {
	return (this.indexOf(item) >= 0);
};

//============================================================================
// Array.containsAny Function
//============================================================================
//
// Returns true when the array contains at least one of the elements 
// of the item. Otherwise (or when items contains no elements) false is returned.
//
version.extensions["Array.containsAny"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAny = function(items) {
	for(var i = 0; i < items.length; i++) {
		if (this.contains(items[i])) {
			return true;
		}
	}
	return false;
};


//============================================================================
// Array.containsAll Function
//============================================================================
//
// Returns true when the array contains all the items, otherwise false.
// 
// When items is null false is returned (even if the array contains a null).
//
// @param items [may be null] 
//
version.extensions["Array.containsAll"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAll = function(items) {
	for(var i = 0; i < items.length; i++) {
		if (!this.contains(items[i])) {
			return false;
		}
	}
	return true;
};


} // of "install only once"

// Used Globals (for JSLint) ==============
// ... DOM
/*global 	document */
// ... TiddlyWiki Core
/*global 	convertUnicodeToUTF8, createTiddlyElement, createTiddlyLink, 
			displayMessage, endSaveArea, hasClass, loadFile, saveFile, 
			startSaveArea, store, wikify */
//}}}


/***
!Licence and Copyright
Copyright (c) abego Software ~GmbH, 2005 ([[www.abego-software.de|http://www.abego-software.de]])

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 abego Software 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.
***/
<<tiddler Fotos##Url2 with:{{store.getTiddlerText("ImagePathList","")}} Agurk>>/%
<<tiddler Fotos##Url2 with:{{store.getTiddlerText("ImagePathList","")}} Agurk>>
<<tiddler Fotos##Fet with: Plante>>
!Fet
<<forEachTiddler
    where
        'tiddler.tags.contains("$1")'
    sortBy
        tiddler.modified
    descending
write
 '((index == 0) ? "" : " ")+"<<tiddler Fotos##Galleri with:[["+store.getTiddlerText("ImagePathList","")+""+tiddler.title+".jpg]]>\>"'
>>
!Mellem
<<tiddler Fotos##Galleri with:$1>>
!Galleri
<<photoGallery sequence:"!" height:200 time:2000 labels:SubTitles numbers start:5000
$1
>>
!Url
<<photoGallery url:$2-*.jpeg sequence:'1-4' height:200 time:2000 labels:SubTitles numbers start:5000>>
!Url2
<<photoGallery url:"billder/$2-*.jpeg" sequence:"!" height:200 time:2000 labels:SubTitles numbers start:5000
3
4
1
2
>> 
! %/
{{hidden{
!Billede
GuldRegn.jpg
!Botanisk navn
Laburnum x watereri
!Dansk navn
Guldregn
!Type
Stor busk eller lille træ
!Højde

!Bredde

!Blomstringstid

!Bladtype

!Bladstilling

!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse

!Anvendelse

!Krav

!Pleje

! 
}}}
{{hidden{
!Billede
HedeLyng.jpg
!Botanisk navn
Calluna vulgaris
!Dansk navn
Hedelyng
!Type
Dværgbusk
!Højde

!Bredde

!Blomstringstid

!Bladtype

!Bladstilling

!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse

!Anvendelse

!Krav

!Pleje

! 
}}}
/***
|Name:|HideWhenPlugin|
|Description:|Allows conditional inclusion/exclusion in templates|
|Version:|3.2a|
|Date:|27-Jun-2011|
|Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
For use in ViewTemplate and EditTemplate. Example usage:
{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}
{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}

Warning: the showWhen and hideWhen macros will blindly eval paramString.
This could be used to execute harmful javascript from a tiddler.

(TODO: Make some effort to sanitize paramString. Perhaps disallow the equals sign?)
***/
//{{{

window.hideWhenLastTest = false;

window.removeElementWhen = function(test,place) {
  window.hideWhenLastTest = test;
  if (test) {
    jQuery(place).empty()
    place.parentNode.removeChild(place);
  }
};

merge(config.macros,{

  hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( eval(paramString), place );
  }},

  showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !eval(paramString), place );
  }},

  hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.tags.containsAll(params), place );
  }},

  showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !tiddler.tags.containsAll(params), place );
  }},

  hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.tags.containsAny(params), place );
  }},

  showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !tiddler.tags.containsAny(params), place );
  }},

  hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.tags.containsAll(params), place );
  }},

  showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !tiddler.tags.containsAll(params), place );
  }},

  hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place );
  }},

  showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place );
  }},

  hideWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.title == params[0], place );
  }},

  showWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( tiddler.title != params[0], place );
  }},

  'else': { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
    removeElementWhen( !window.hideWhenLastTest, place );
  }}

});

//}}}
<html><a href="javascript:void(0)" onclick="story.closeAllTiddlers();story.displayTiddlers(null,store.filterTiddlers(store.getTiddlerText('DefaultTiddlers'))) "
><span title="Luk alle tiddlere og åben velkomstsiden" style="cursor:pointer">Hjem</span></a></li></html>
{{hidden{
!Billede
HvidKornel.jpg
!Botanisk navn
Cornus alba 'Sibirica'
!Dansk navn
Hvid Kornel
!Type
Busk
!Højde
2 – 3 m
!Bredde
3 – 4 m
!Blomstringstid
Maj - juni
!Bladtype
Elipseformet
!Bladstilling
Modsat
!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse
Har røde grene, får hvide bær, navnet cornu betyder horn navnet hentyder til, at veddet er hårdt.
!Anvendelse
Prydbusk
!Krav
Trives i alm. havejord hvad endten den er sandet eller leret. Kraftig jævn fugtig jord giver de bedste vækstbittingelser. Fuld sol og fuld skygge.
!Pleje
Det er nødvendigt at skære gamle grene tilbage da farven vil forsvinde ellers
! 
}}}
/***
|''Name''|ImageMacroPlugin|
|''Version''|0.9.4|
|''Description''|Allows the rendering of svg images in a TiddlyWiki|
|''Author''|Osmosoft|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
|''Notes''|Currently only works in modern browsers (not IE)|
|''Requires''|BinaryTiddlersPlugin|
!Usage
{{{<<image SVG>>}}} will render the text of the tiddler with title SVG as an SVG image (but not in ie where it will fail silently)
!!Parameters
width/height: specify width/height parameters
link: make the image link to a given location
tiddlyLink: link to a tiddler

!Notes
Binary tiddlers in TiddlyWeb when passed through the wikifier will be shown as images.
eg. {{{<<view text wikified>>}}} on a binary tiddler will show the image.
{{{<<view fieldname image>>}}}
will render the value of the tiddler field 'fieldname' as an image. This field can contain a tid
{{{<<image SiteIcon>>}}}
will create an image tag where the tiddler has content type beginning image and not ending +xml
will attempt to create svg object in other scenarios
{{{<<image /photos/x.jpg>>}}}
will create an image tag with src /photos/x.jpg as long as there is not a tiddler called /photos/x.jpg in 
which case it will render that tiddler as an image. Note for the case of svg files it will attempt to render as an svg if possible via the image
tag. It doesn't embed the svg in the dom for security reasons as svg code can contain javascript.
!Code
***/
//{{{
(function($) {

var macro = config.macros.image = {
	shim: "/bags/common/tiddlers/shim",
	ieVersion: config.browser.isIE ? parseInt(config.browser.ieVersion[1], 10) : false,
	svgns: "http://www.w3.org/2000/svg",
	xlinkns: "http://www.w3.org/1999/xlink", 
	svgAvailable: document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1"),
	_fixPrefix: 1,
	_external_cache: {},
	_image_tag_cache: {},
	_image_dimensions: {},
	locale: {
		badImage: "This image cannot be displayed."
	},
	handler: function(place, macroName, params, wikifier, paramString, tiddler){
		var imageSource = params[0];
		// collect named arguments
		var args = macro.getArguments(paramString, params);
		this.renderImage(place, imageSource, args);
	},
	init: function() {
		var startupImages = store.getTaggedTiddlers("systemImage");
		var place = $("<div />").attr("id", "systemImageArea").appendTo("body").hide()[0];
		for(var i = 0; i < startupImages.length; i++) {
			var image = startupImages[i];
			macro.renderImage(place, image.title, { idPrefix: "" });
		}
		var data = new Image();
		data.onload = function() {
			// note ie 8 only supports data uris up to 32k so cannot be relied on
			macro.supportsDataUris = this.width != 1 || this.height != 1 ? false : true;
			macro.supportsDataUris = macro.ieVersion && macro.ieVersion < 9 ? false : macro.supportsDataUris;
		};
		data.onerror = data.onload;
		data.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
	},
	refreshImage: function(src) {
		var elements = macro._image_tag_cache[src] ? macro._image_tag_cache[src] : [];
		if(macro._image_dimensions[src]) {
			macro._image_dimensions[src] = false;
		}
		for(var i = 0; i < elements.length; i++) {
			var el = $(elements[i]);
			var newSrc = "%0?nocache=%1".format(src, Math.random());
			el.attr("src", newSrc); // force reload
		}
	},
	isBinaryImageType: function(contentType) {
		return (contentType && contentType.indexOf("image") === 0 &&
			contentType.indexOf("+xml") != contentType.length - 4) ? true : false;
	},
	isImageTiddler: function(tiddler) {
		return macro.isSVGTiddler(tiddler) || macro.isBinaryImageTiddler(tiddler);
	},
	isSVGTiddler: function(tiddler) {
		var type = tiddler ? tiddler.fields['server.content-type'] : false;
		return type == "image/svg+xml";
	},
	isBinaryImageTiddler: function(tiddler) {
		return macro.isBinaryImageType(tiddler.fields['server.content-type']);
	},
	renderImage: function(place, imageSource, options) {
		var imageTiddler = store.getTiddler(imageSource);
		var container;
		var classes = ["image"];
		if(options.link) {
			classes = classes.concat(["imageLink", "externalLink"]);
			container = $("<a />").attr("href", options.link).appendTo(place)[0];
		} else if(options.tiddlyLink) {
			classes.push("imageLink");
			container = createTiddlyLink(place, options.tiddlyLink, false);
		} else {
			container = $("<span />").appendTo(place)[0];
		}
		$(container).addClass(classes.join(" "));

		options = options ? options : {};
		if(imageTiddler && macro.isBinaryImageTiddler(imageTiddler)) { // handle the case where we have an image url
			return macro._renderBinaryImageTiddler(container, imageTiddler, options);
		} else if(imageTiddler){ // handle the case where we have a tiddler
			return macro._renderSVGTiddler(container, imageTiddler, options);
		} else { // we have a string representing a url
			return macro._renderBinaryImageUrl(container, imageSource, options);
		}
	},
	_renderAlternateText: function(container, options) {
		var img;
		var src = options.src || "";
		if(options.width && options.height) {
			img = $("<img />").attr("src", src).addClass("svgImageText").attr("width", options.width).
				attr("height", options.height).appendTo(container);
		}
		var alt = options.alt;
		if(img && alt) {
			img.attr("alt", alt).attr("title", alt);
		} else if(alt) {
			$(container).addClass("svgImageText").text(alt);
		}
		macro._image_tag_cache[src] = img;
	},
	_renderSVGTiddler: function(place, tiddler, options) {
		if(!options) {
			options = {};
		}
		merge(options, { tiddler: tiddler, fix: true});

		if(macro.svgAvailable) {
			this._importSVG(place, options); // display the svg
		} else if(options.altImage) {
			var image = options.altImage;
			delete options.altImage;
			this._renderBinaryImageUrl(place, image, options);
		} else {
			this._renderAlternateText(place, options); // instead of showing the image show the alternate text.
		}
	},
	_renderBinaryImageTiddler: function(place, tiddler, options) {
		var resourceURI;
		var fields = tiddler.fields;
		if(fields["server.type"] == "tiddlyweb") { // construct an accurate url for the resource
			resourceURI = "%0/%1/tiddlers/%2".format(config.defaultCustomFields["server.host"],
				fields["server.workspace"], encodeURI(fields["server.title"]));
		} else { // guess the url for the resource
			resourceURI = tiddler.title;
		}
		var ctype = fields["server.content-type"] || tiddler.type;
		var text = tiddler.text;
		if(macro.supportsDataUris && ctype && text.indexOf("<html") == -1) {
			var uri = "data:%0;base64,%1".format(ctype, text);
			options.src = resourceURI;
			return macro._renderBinaryImageUrl(place, uri, options);
		} else if(options.src) {
			return macro._renderBinaryImageUrl(place, options.src, options);
		} else {
			return macro._renderBinaryImageUrl(place, resourceURI, options);
		}
	},
	_renderImageTag: function(container, src, width, height, options) {
		var img;
		img = $("<img />").appendTo(container);
		if(height) {
			img.attr("height", height);
		}
		if(width) {
			img.attr("width", width);
		}
		if(macro.ieVersion && macro.ieVersion < 7 && macro.shim && options.ie6png) {
			$(img).css({width: userW, height: userH,
					filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='%0', sizingMethod='scale')".format(src)
				}).attr("src", macro.shim);
		} else {
			img.attr("src", src);
		}
		if(!macro._image_tag_cache[options.srcUrl]) {
			macro._image_tag_cache[options.srcUrl] = [];
		}
		img = $(img).addClass(options.imageClass)[0];
		macro._image_tag_cache[options.srcUrl].push(img);
		return img;
	},
	_getDimensions: function(realDimensions, reqDimensions, preserve) {
		var w = realDimensions.width;
		var h = realDimensions.height;
		var reqh = reqDimensions.height;
		var reqw = reqDimensions.width;
		var finalw = w, finalh = h;
		var ratiow = reqw / w, ratioh = reqh / h;
		var scaledw = ratioh * w;
		var scaledh = ratiow * h;
		if(!reqw && reqh) {
			finalw = scaledw;
			finalh = reqh;
		} else if(reqw && !reqh) {
			finalw = reqw;
			finalh = scaledh;
		} else if(reqh && reqw) {
			var preserveWidth = w > h ? true : false;
			if(preserve) {
				if(preserveWidth && scaledh < reqh) {
					finalh = scaledh;
					finalw = reqw;
				} else {
					finalh = reqh;
					finalw = scaledw;
				}
			} else {
				finalw = reqw;
				finalh = reqh;
			}
		}
		return { width: parseInt(finalw, 10), height: parseInt(finalh, 10) };
	},
	_renderBinaryImageUrl: function(container, src, options) {
		var srcUrl = options.src ? options.src : src;
		srcUrl = srcUrl.indexOf("/") === -1 ? "/%0".format(srcUrl) : srcUrl; // for IE. 
		var image_dimensions = macro._image_dimensions[srcUrl];
		var image = new Image(); // due to weird scaling issues where you use just a width or just a height
		var createImageTag = function(dimensions, error) {
			if(error) {
				var altImage = options.altImage;
				if(altImage) {
					delete options.altImage;
					macro._renderBinaryImageUrl(container, altImage, options);
				} else {
					options.src = src;
					macro._renderAlternateText(container, options);
				}
			} else {
				var dim = macro._getDimensions(dimensions, { 
					width: options.width, height: options.height }, options.preserveAspectRatio);
				options.srcUrl = srcUrl;
				macro._renderImageTag(container, src, dim.width, dim.height, options);
			}
		};

		if(!image_dimensions) {
			image.onload = function() {
				var dimensions = { width: image.width, height: image.height};
				macro._image_dimensions[srcUrl] = dimensions;
				createImageTag(dimensions);
			};
			image.onerror = function() {
				createImageTag(null, true);
			};
			image.src = src;
		} else {
			createImageTag(image_dimensions);
		}
	},
	_generateIdPrefix: function(){
		return "twsvgfix_" + (this._fixPrefix++).toString() + "_";
	},
	_fixSVG: function(childNodes, idPrefix) {
		var urlPattern = /url\(\#([^\)]*)\)*/ig;
		var fixes = [
		{ attr: "id", pattern: /^(.*)$/ig },
		{ attr: "href", namespace: macro.xlinkns, pattern: /^#(.*)$/ig }
		];
		var url_fixes = ["filter", "fill", "mask", "stroke", "style"];
		for(var i = 0; i < url_fixes.length; i++) {
			fixes.push({ attr: url_fixes[i], pattern: urlPattern });
		}
		for(var t = 0; t < childNodes.length; t++) {
			var node = childNodes[t];
			for(var a = 0; a < fixes.length; a++) {
				var fix = fixes[a];
				var attr = fix.attr;
				var ns = fix.namespace || "";
				if(node.hasAttributeNS && node.hasAttributeNS(ns, attr)) {
					var v = node.getAttributeNS(ns, attr);
					fix.pattern.lastIndex = 0;
					var match = fix.pattern.exec(v);
					if(match) {
						// Make sure replacement string doesn't contain any single dollar signs
						var toReplace = match[1];
						if(toReplace.indexOf(idPrefix) !== 0 && toReplace.indexOf("twglobal_") !== 0) {
							var replacement = (idPrefix + toReplace).replace("$", "$$$$"); 
							v = v.replace(match[1], replacement);
						}
						node.setAttributeNS(ns, attr,v);
					}
				}
			}
			var children = node.childNodes;
			if(children.length > 0) {
				this._fixSVG(children, idPrefix);
			}
		}
	},
	_importSVG: function(place, options){
		options = options ? options : {};
		var svgDoc, tiddlerText = options.tiddler.text;
		if (window.DOMParser) {
			svgDoc = new DOMParser().parseFromString(tiddlerText, "application/xml").documentElement;
			var idPrefix = options.idPrefix || this._generateIdPrefix();
			this._fixSVG([svgDoc], idPrefix);
			var el = document.importNode(svgDoc, true);
			var svgHolder = document.createElementNS(macro.svgns,"svg");
			var width = options.width;
			var height = options.height;
			if(width || height) {
				if(width && height) { // set view box of containing svg element based on the svg viewbox and width and height.
					var viewBox = el.getAttribute("viewBox");
					var topLeft = "0 0";
					if(viewBox) {
						topLeft = viewBox.replace(/([0-9]*) +([0-9]*) +([0-9]*) +([0-9]*) */gi,"$1 $2");
					}
					svgHolder.setAttributeNS(macro.svgns, "viewBox", "0 0 %0 %1".format(width, height));
				} else {
					if(!width) {
						width = el.getAttribute("width");
					}
					if(!height) {
						height = el.getAttribute("height");
					}
				}
				svgHolder.setAttribute("width", width);
				svgHolder.setAttribute("height", height);

				el.setAttribute("width", "100%");
				el.setAttribute("height", "100%");
				svgHolder.setAttribute("class", "svgImage svgIcon %0".format(options.imageClass || ""));
				svgHolder.appendChild(el);
				place.appendChild(svgHolder);
			}
			else {
				var existing = el.className ? el.className.baseVal : "";
				el.setAttribute("class","svgImage %0".format(existing));
				place.appendChild(el);
			}
			// if a tiddler attribute is set this is read as a link
			$("[tiddler], [tiddlyLink]", place).attr("refresh", "link").click(function(ev) {
				var tiddler = $(ev.target).attr("tiddlyLink");
				if(tiddler) {
					story.displayTiddler(ev.target, tiddler);
				}
			});
		}
	},
	getArguments: function(paramString, params) {
		var args = paramString.parseParams("name", null, true, false, true)[0];
		var options = {};
		for(var id in args) {
			if(true) {
				var p = args[id];
				if(id == "def") {
					options[id] = p;
				} else {
					options[id] = p[0];
				}
			}
		}
		var width = isNaN(params[1]) ? false : parseInt(params[1], 10);
		var height = isNaN(params[2]) ? false : parseInt(params[2], 10);

		options.width = macro.lookupArgument(options, "width", width);
		options.height = macro.lookupArgument(options, "height", height);
		options.preserveAspectRatio = args.preserveAspectRatio && 
			args.preserveAspectRatio[0] == "yes" ? true : false;
		options.tiddlyLink = macro.lookupArgument(options, "tiddlyLink", false);
		options.link = macro.lookupArgument(options, "link", false);
		return options;
	},
	lookupArgument: function(args, id, ifEmpty) {
		return args[id] ? args[id] : ifEmpty;
	}
};

// update views
var _oldwikifiedview = config.macros.view.views.wikified;
// update wikifier to check tiddler type before rendering
merge(config.macros.view.views, {
	wikified: function(value, place, params, wikifier, paramString, tiddler) {
		if(macro.isImageTiddler(tiddler) && params[0] == "text") {
			var newplace = $("<div />").addClass("wikifiedImage").appendTo(place)[0];
			macro.renderImage(newplace, tiddler.title, { alt: macro.locale.badImage });
		} else {
			_oldwikifiedview.apply(this, arguments);
		}
	},
	image: function(value, place, params, wikifier, paramString, tiddler) {
		// a field can point to another tiddler whereas text is the current tiddler.
		var title = params[0] == "text" ? tiddler.title : value;
		var args = macro.getArguments(paramString, params);
		macro.renderImage(place, title, args);
	}
});
config.shadowTiddlers.StyleSheetImageMacro = [".wikifiedImage svg, .wikifiedImage .image { width: 80%; }",
	".svgImageText { background-color:[[ColorPalette::Error]]; color:#ddd; display: inline-block; }",
	"span.svgImageText { display: inline-block; overflow: hidden; }"
].join("");
store.addNotification("StyleSheetImageMacro", refreshStyles);

})(jQuery);
//}}}
http://xn--mns-ula.dk/plantekendskab/Billeder/
/***
|Name|ImagePathPlugin|
|Source|http://www.TiddlyTools.com/#ImagePathPlugin|
|Version|0.7.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin
|Description|Tell TiddlyWiki where to look for image files.  Permits multiple 'fallback' locations|
|Status|ALPHA - initial development/testing only - may be unstable - do not distribute|

!!!!!Usage
<<<
This plugin adds "resolvePath()" fallback processing to the {{{[img[...]]}}} formatter's handler, so that local image file references can be successfully resolved, even if the files cannot be located on the local filesystem.

The plugin tries alternative file "paths" that are listed, one per line, in an optional tiddler, [[ImagePathList]].  Each path in the list is combined with the image filename, which is then checked for existence, until the file is located.  If no alternative is found, or [[ImagePathList]] is not present, then a 'last-ditch' fallback is attempted using the remote system and path specified in [[SiteUrl]] (if present).

If no fallback attempt is successful (i.e., because no [[ImagePathList]] OR [[SiteUrl]] tiddlers have been defined), the plugin simply passes the original image file value along for default handling by the browser without any "path resolution" being applied.(i.e, the current TW core behavior occurs).

| ''Important note: This plugin may cause one or more security alert messages to appear, because it uses browser-specific functions that can require security permission in order to access the local filesystem to check for the existence of a given image file.  If you block local access, the 'last-ditch' fallback using the remote [[SiteUrl]] (if present) will be attempted.'' |

Note: the image formatter code contained here also includes support for AttachFilePlugin extensions (if installed).  AttachFilePlugin includes its own fallback mechanism for handling embedded vs. local file vs. remote URL references to the attached binary file.  Both methods may be used: ImagePathPlugin provides fallback for images contained in tiddler content, while AttachFilePlugin works well for access to non-image binary files (or images used in CSS as backgrounds, textures, etc.)
<<<
!!!!!Examples
<<<
coming soon...
<<<
!!!!!Revisions
<<<
''2007.04.13 [0.7.1]'' in testFile(), convert any file:// references to local native format before checking for existence.
''2007.03.26 [0.7.0]'' for IE, use onError handling to trigger call to resolvePath() so it will only be invoked if the original path/file is not found by the browser-native lookup.  This avoids an unneeded call to fileExists() and the accompanying ActiveX security alert message box (as well as being slightly more efficient...)
''2007.03.25 [0.6.0]'' code cleanup (moved global functions into config.formatterHelpers) plus documentation re-write
''2007.03.24 [0.5.0]'' initial implementation - ALPHA - do not distribute
<<<
!!!!!Code
***/
//{{{
version.extensions.ImagePathPlugin= {major: 0, minor: 7, revision: 1, date: new Date(2007,4,13)};
//}}}
//{{{
// name of path definition tiddler
if (config.options.txtPathTiddler==undefined) config.options.txtPathTiddler="ImagePathList";
//}}}
//{{{
// low-level wrapper for platform-specific tests for local file existence
// returns true/false without visible error display
// Uses Components for FF and ActiveX FSO object for MSIE
// NOTE: this can cause a security warning on some browsers
config.formatterHelpers.fileExists=function(theFile) {
	var found=false;
	// DEBUG: alert('testing fileExists('+theFile+')...');
	if(window.Components) {
		try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
		catch(e) { return false; } // security access denied
		var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
		try { file.initWithPath(theFile); }
		catch(e) { return false; } // invalid directory
		found = file.exists();
	}
	else { // use ActiveX FSO object for MSIE 
		var fso = new ActiveXObject("Scripting.FileSystemObject");
		found = fso.FileExists(theFile)
	}
	// DEBUG: alert(theFile+" "+(found?"exists":"not found"));
	return found;
}
//}}}
//{{{
// higher-level logic for checking local file existence.
// with secondary check for finding relative file references
// and automatic OK of http-based references without checking local filesystem
config.formatterHelpers.testFile=function(theFile) {
	if (document.location.protocol!="file:") return true; // viewing remote document, can't test local filesystem... assume OK
	if (theFile.substr(0,5)=="http:") return true; // remote HTTP reference... assume OK
	if (theFile.substr(0,5)=="file:") theFile=getLocalPath(theFile); // convert local FILE reference to native format
	if (this.fileExists(theFile)) return true; // file exists locally... OK to use!
	// file might have been relative, add path from current document and try again
	var docPath=document.location.href;
	var slashpos=docPath.lastIndexOf("/"); if (slashpos==-1) slashpos=docPath.lastIndexOf("\\"); 
	if (slashpos!=-1 && slashpos!=docPath.length-1) docPath=docPath.substr(0,slashpos+1); // trim off filename
	if (this.fileExists(getLocalPath(docPath+theFile)))
		return true; // ah ha!... file exists relative to current document... OK to use!
	return false; // file not found on local system
}
//}}}
//{{{
// given a path/file string, check for existence and
// try alternatives (if any) defined in a tiddler
// with last-ditch using system/path from SiteUrl (if any)
config.formatterHelpers.resolvePath=function(theFile,testoriginal) {
	if (testoriginal && this.testFile(theFile)) return theFile; // FOUND FILE - use specified path/file without modification
	// get the filename portion only
	var slashpos=theFile.lastIndexOf("/"); if (slashpos==-1) slashpos=theFile.lastIndexOf("\\"); 
	var theName=(slashpos==-1)?theFile:theFile.substr(slashpos+1);
	// get list of fallbacks (if any)
	var pathText=store.getTiddlerText(config.options.txtPathTiddler);
	if (pathText && pathText.length) {
		var paths=pathText.split("\n");
		for (p=0; p<paths.length; p++) // combine path+filename until one works...
			if (this.testFile(paths[p]+theName))
				return paths[p]+theName; // FOUND FILE - use alternative path+filename
	}
	// try "last ditch" fallback using SiteURL - assumes that original path/file was relative to document location
	var siteURL=store.getTiddlerText("SiteUrl");
	if (!siteURL||!siteURL.length) return theFile; // NO FALLBACK - use original path/file and hope for the best
	// trim filename (if any) from site URL
	var slashpos=siteURL.lastIndexOf("/"); if (slashpos==-1) slashpos=siteURL.lastIndexOf("\\"); 
	if (slashpos!=-1 && slashpos!=siteURL.length-1) siteURL=siteURL.substr(0,slashpos+1);
	return siteURL+theFile; // LAST DITCH: use system/path from SiteUrl combined with original file/path
}
//}}}
//{{{
// replace standard handler for image formatter
// adds call to resolvePath() to handle fallback processing
// includes support for AttachFilePlugin as well
config.formatters[config.formatters.findByField("name","image")].handler=function(w) {
	if (!this.lookaheadRegExp)  // fixup for TW2.0.x
		this.lookaheadRegExp = new RegExp(this.lookahead,"mg");
	this.lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		// Simple bracketted link
		var e = w.output;
		if(lookaheadMatch[5]) {
			var link = lookaheadMatch[5];
			if (!config.formatterHelpers.isExternalLink) // fixup for TW2.0.x
				var external=!store.tiddlerExists(link)&&!store.isShadowTiddler(link);
			else
				var external=config.formatterHelpers.isExternalLink(link);
			if (external) {
				if (config.macros.attach && config.macros.attach.isAttachment(link)) { // ELS - attachments
					e = createExternalLink(w.output,link);
					e.href=config.macros.attach.getAttachment(link);
					e.title = config.macros.attach.linkTooltip + link;
				} else
					e = createExternalLink(w.output,link);
			} else 
				e = createTiddlyLink(w.output,link,false,null,w.isStatic);
			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];
		if (config.macros.attach!=undefined && config.macros.attach.isAttachment(lookaheadMatch[4])) // ELS - attachments
			img.src=config.macros.attach.getAttachment(lookaheadMatch[4]);
		else {
			if (config.browser.isIE || config.browser.isSafari) { // ELS - path processing
				// IE and Safari use browser's onError handling to check the original file...
				// avoids extra security alert messages due to use of Components/ActiveX for filesystem access
				img.onerror=(function(){this.src=config.formatterHelpers.resolvePath(this.src,false);return false;});
				img.src=lookaheadMatch[4]; // ELS - path processing
			} else {
				// if NOT IE or Safari, always check the original path/file before rendering
				img.src=config.formatterHelpers.resolvePath(lookaheadMatch[4],true);
			}
		}
		w.nextMatch = this.lookaheadRegExp.lastIndex;
	}
}
//}}}
/***
|Name|ImageSizePlugin|
|Source|http://www.TiddlyTools.com/#ImageSizePlugin|
|Version|1.2.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|adds support for resizing images|
This plugin adds optional syntax to scale an image to a specified width and height and/or interactively resize the image with the mouse.
!!!!!Usage
<<<
The extended image syntax is:
{{{
[img(w+,h+)[...][...]]
}}}
where ''(w,h)'' indicates the desired width and height (in CSS units, e.g., px, em, cm, in, or %). Use ''auto'' (or a blank value) for either dimension to scale that dimension proportionally (i.e., maintain the aspect ratio). You can also calculate a CSS value 'on-the-fly' by using a //javascript expression// enclosed between """{{""" and """}}""". Appending a plus sign (+) to a dimension enables interactive resizing in that dimension (by dragging the mouse inside the image). Use ~SHIFT-click to show the full-sized (un-scaled) image. Use ~CTRL-click to restore the starting size (either scaled or full-sized).
<<<
!!!!!Examples
<<<
{{{
[img(100px+,75px+)[images/meow2.jpg]]
}}}
[img(100px+,75px+)[images/meow2.jpg]]
{{{
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
}}}
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
{{tagClear{
}}}
<<<
!!!!!Revisions
<<<
2011.09.03 [1.2.3] bypass addStretchHandlers() if no '+' suffix is used (i.e., not resizable)
2010.07.24 [1.2.2] moved tip/dragtip text to config.formatterHelpers.imageSize object to enable customization
2009.02.24 [1.2.1] cleanup width/height regexp, use '+' suffix for resizing
2009.02.22 [1.2.0] added stretchable images
2008.01.19 [1.1.0] added evaluated width/height values
2008.01.18 [1.0.1] regexp for "(width,height)" now passes all CSS values to browser for validation
2008.01.17 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImageSizePlugin= {major: 1, minor: 2, revision: 3, date: new Date(2011,9,3)};
//}}}
//{{{
var f=config.formatters[config.formatters.findByField("name","image")];
f.match="\\[[<>]?[Ii][Mm][Gg](?:\\([^,]*,[^\\)]*\\))?\\[";
f.lookaheadRegExp=/\[([<]?)(>?)[Ii][Mm][Gg](?:\(([^,]*),([^\)]*)\))?\[(?:([^\|\]]+)\|)?([^\[\]\|]+)\](?:\[([^\]]*)\])?\]/mg;
f.handler=function(w) {
	this.lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		var floatLeft=lookaheadMatch[1];
		var floatRight=lookaheadMatch[2];
		var width=lookaheadMatch[3];
		var height=lookaheadMatch[4];
		var tooltip=lookaheadMatch[5];
		var src=lookaheadMatch[6];
		var link=lookaheadMatch[7];

		// Simple bracketted link
		var e = w.output;
		if(link) { // LINKED IMAGE
			if (config.formatterHelpers.isExternalLink(link)) {
				if (config.macros.attach && config.macros.attach.isAttachment(link)) {
					// see [[AttachFilePluginFormatters]]
					e = createExternalLink(w.output,link);
					e.href=config.macros.attach.getAttachment(link);
					e.title = config.macros.attach.linkTooltip + link;
				} else
					e = createExternalLink(w.output,link);
			} else 
				e = createTiddlyLink(w.output,link,false,null,w.isStatic);
			addClass(e,"imageLink");
		}

		var img = createTiddlyElement(e,"img");
		if(floatLeft) img.align="left"; else if(floatRight) img.align="right";
		if(width||height) {
			var x=width.trim(); var y=height.trim();
			var stretchW=(x.substr(x.length-1,1)=='+'); if (stretchW) x=x.substr(0,x.length-1);
			var stretchH=(y.substr(y.length-1,1)=='+'); if (stretchH) y=y.substr(0,y.length-1);
			if (x.substr(0,2)=="{{")
				{ try{x=eval(x.substr(2,x.length-4))} catch(e){displayMessage(e.description||e.toString())} }
			if (y.substr(0,2)=="{{")
				{ try{y=eval(y.substr(2,y.length-4))} catch(e){displayMessage(e.description||e.toString())} }
			img.style.width=x.trim(); img.style.height=y.trim();
			if (stretchW||stretchH) config.formatterHelpers.addStretchHandlers(img,stretchW,stretchH);
		}
		if(tooltip) img.title = tooltip;

		// GET IMAGE SOURCE
		if (config.macros.attach && config.macros.attach.isAttachment(src))
			src=config.macros.attach.getAttachment(src); // see [[AttachFilePluginFormatters]]
		else if (config.formatterHelpers.resolvePath) { // see [[ImagePathPlugin]]
			if (config.browser.isIE || config.browser.isSafari) {
				img.onerror=(function(){
					this.src=config.formatterHelpers.resolvePath(this.src,false);
					return false;
				});
			} else
				src=config.formatterHelpers.resolvePath(src,true);
		}
		img.src=src;
		w.nextMatch = this.lookaheadRegExp.lastIndex;
	}
}

config.formatterHelpers.imageSize={
	tip: 'SHIFT-KLIK=vis fuld størrelse, CTRL-KLIK=gendan oprindelig størrelse',
	dragtip: 'TRÆK=stræk/formindsk, '
}

config.formatterHelpers.addStretchHandlers=function(e,stretchW,stretchH) {
	e.title=((stretchW||stretchH)?this.imageSize.dragtip:'')+this.imageSize.tip;
	e.statusMsg='width=%0, height=%1';
	e.style.cursor='move';
	e.originalW=e.style.width;
	e.originalH=e.style.height;
	e.minW=Math.max(e.offsetWidth/20,10);
	e.minH=Math.max(e.offsetHeight/20,10);
	e.stretchW=stretchW;
	e.stretchH=stretchH;
	e.onmousedown=function(ev) { var ev=ev||window.event;
		this.sizing=true;
		this.startX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
		this.startY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
		this.startW=this.offsetWidth;
		this.startH=this.offsetHeight;
		return false;
	};
	e.onmousemove=function(ev) { var ev=ev||window.event;
		if (this.sizing) {
			var s=this.style;
			var currX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
			var currY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
			var newW=(currX-this.offsetLeft)/(this.startX-this.offsetLeft)*this.startW;
			var newH=(currY-this.offsetTop )/(this.startY-this.offsetTop )*this.startH;
			if (this.stretchW) s.width =Math.floor(Math.max(newW,this.minW))+'px';
			if (this.stretchH) s.height=Math.floor(Math.max(newH,this.minH))+'px';
			clearMessage(); displayMessage(this.statusMsg.format([s.width,s.height]));
		}
		return false;
	};
	e.onmouseup=function(ev) { var ev=ev||window.event;
		if (ev.shiftKey) { this.style.width=this.style.height=''; }
		if (ev.ctrlKey)  { this.style.width=this.originalW; this.style.height=this.originalH; }
		this.sizing=false;
		clearMessage();
		return false;
	};
	e.onmouseout=function(ev) { var ev=ev||window.event;
		this.sizing=false;
		clearMessage();
		return false;
	};
}
//}}}
{{hidden{
!Anvendelse

!Pleje

!Info

! 
}}}
Ja
jeps
----
Nej
Nixen
----
Nogle gange
Iblandt
----
Ved ikke
Mangler viden
----
{{hidden{
!Billede
JapanskKvæde.jpg
!Botanisk navn
Chaenomeles japonica
!Dansk navn
Japansk Kvæde
!Type
Busk
!Højde
1- 1,2 m
!Bredde
1 – 2 m
!Blomstringstid
maj
!Bladtype
Ægformede Rundtakkede 3 – 5 cm lange
!Bladstilling
Modsat
!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse
Blomsterne er cinnoberrøde ca 3 cm i diameter, Frugten er næsten rund den farves gullig i november, og den holder sig hen til foråret
!Anvendelse
Hæk, og prydbusk,
!Krav
Fuld sol eller halvskygge
!Pleje
Den er robust, så kræver ikke den store vedligeholdelse, beskæring kan dog være nødvendig
! 
}}}
Spagnum
beskrivelse...
----
En anden jordbundstype
beskrivelse
----
Magnoliopsida
beskrivelse...
----
Klasse 2
beskrivelse...
----
{{multi_bg_example{
For at komme i gang med denne tomme tiddlywiki, skal du ændre på de følgende tiddlere:
* SiteTitle & SiteSubtitle: Sidens titel og undertitel, som vist øverst (efter de er gemt, vil de også vise sig i browserens titelmenu)
* MainMenu: er hovedmenuen (oftest placeret til venstre)
* DefaultTiddlers: Indeholder navnene på de tiddlere du vil have skal starte op når du åbner TiddlyWiki
Du skal også skrive dit brugernavn for at signere dine redigeringer: <<option txtUserName>>
}}}
<<twyp>>
<html><iframe width="420" height="315" src="//www.youtube.com/embed/a5oEACNRF6k" frameborder="0" allowfullscreen></iframe></html>
{{hidden{
!Billede
Liguster.jpg
!Botanisk navn
Ligustrum vulgare 'Liga'
!Dansk navn
Liguster
!Type

!Højde

!Bredde

!Blomstringstid

!Bladtype

!Bladstilling

!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse

!Anvendelse

!Krav

!Pleje

! 
}}}
when|global variable|conditionally enable or disable paintr
LinkifyPlugin|automagic*|linkif*
Tabs
Tagging
Configuration|config*
Eksempler|eksempel*
Parametre|parametre der definerer hvordan|param*
Definitioner|defin*|horisontal regel*
Transclusion|transclusion*|transclu*
Artikler|et afgrænset skrift, som en del af avis eller tidsskrift|artikel*|*artikel|
/***
|''Macro''|LinkifyPlugin|
|''Description''|Automatically turns text into links, optionally using aliases<br>The plugin idea is based on Clint Checketts and Paul Petterson's [[RedirectMacro|http://checkettsweb.com/styles/themes.htm#RedirectMacro]]|
|''Documentation''|http://linkify.tiddlyspot.com|
|''Author''|Tobias Beer|
|''Version''|1.1.2 (2013-10-04)|
|''CoreVersion''|2.5.2|
|''Source''|https://raw.github.com/tobibeer/TiddlyWikiPlugins/master/plugins/LinkifyPlugin.min.js|
|''Usage''|define redirects in LinkifyConfig|
/%***/
(function(e){config.shadowTiddlers.LinkifyConfig="!Exclude\n-excludeLists systemConfig noLinkify\n!Linkify\nLinkifyPlugin|^linkif\n^Tiddler";var t=config.extensions.linkify={defaults:{linkifyAllTiddlers:true,doNotLinkifyInside:"h1,h2,h3,h4,h5,h6,.header,.noLinkify,th",doNotLinkifySameTiddler:true},linkified:[],excluded:[],handler:function(n){var r,i,s=e(n.output).closest(t.defaults.doNotLinkifyInside).length>0,o=story.findContainingTiddler(n.output);o=o?o.getAttribute("tiddler"):"";s=s||t.defaults.doNotLinkifySameTiddler&&o==this.target;r=o.indexOf("##");if(r<0)r=o.indexOf("::");if(r>0)o=o.substr(0,r);i=n.source.substr(n.matchStart,1)==config.textPrimitives.unWikiLink;if(s||i||o&&t.excluded.contains(o)){n.outputText(n.output,n.matchStart+(i?1:0),n.nextMatch)}else{n.outputText(createTiddlyLink(createTiddlyElement(n.output,"span",null,"linkified"),this.target,false),n.matchStart,n.nextMatch)}},addFormatter:function(e,n,r,i,s){var o,u,a=0,f,l,c,h,p,d,v,m,g=config.formatters,y=e.substr(0,1);if(e.substr(e.length-1,1)=="*"){m=true;e=e.substr(0,e.length-1)}e:while(!o&&['"',"~","^","*","("].contains(y)){switch(y){case"~":if(i)return false;case"^":d=true;break;case'"':o=e.substr(e.length-1,1)=='"';if(o)e=e.substr(0,e.length-1);else break e;break;case"(":v=e.substr(e.length-1,1)==")";if(v)e=e.substr(0,e.length-1);else break e;break;case"*":p=true}e=e.substr(1);y=e.substr(0,1)}if(!v)e=e.replace(/\\/mg,"");l="linkify_"+e.replace(/([\W])/mg,function(e){return e.charCodeAt(0)});if(s){c="linkify_"+s.replace(/([\W])/mg,function(e){return e.charCodeAt(0)})}while(a<g.length){u=u||g[a].name==l;if(s&&g[a].name==c){g.splice(a,1)}else a++}if(u||r||!e)return false;h=config.textPrimitives.unWikiLink+"?"+(v?"(?:%2)":"(?:\\b%0%2%1\\b)").format([p?"[\\w]*":"",m?"[\\w]*":"",v?e:e.escapeRegExp().replace(/([a-z]|[A-Z])/img,function(e){return"["+(o?e:/[\W]/mg.exec(e)?"'"+e:e.toUpperCase()+e.toLowerCase())+"]"}).replace(/[\s]/mg,"[\\s]")]);f={name:l,match:h,target:n,handler:t.handler};if(d)g.unshift(f);else g.push(f);return true},indexConfig:function(){var e,n,r,i,s,o,u,a,f,l,c,h,p=config.formatters,d=function(e){e=e.replace(/^(\'|\*|\^|\~|\()+/mg,"");return e.replace(/(\*|\))+?/mg,"")};t.linkified=[];u=store.getTiddlerText("LinkifyConfig")||store.getShadowTiddlerText("LinkifyConfig");u=u?u.split("\n"):[];for(var v=0;v<p.length;v++){if(p[v].name.indexOf("linkify_")==0){p.splice(v,1);v--}}for(s=0;s<u.length;s++){if(!u[s]||[" ","!"].contains(u[s][0]))continue;o=u[s].split("|");l=d(o[0]);n=0;t.linkified.pushUnique(l);for(e=1;e<o.length;e++){a=d(o[e]);if(a.toLowerCase().indexOf(l.toLowerCase())==0){h=o[e];o[e]=o[n];o[n]=h;n=e}}for(e=0;e<o.length;e++)t.addFormatter(o[e],l,false,e==n)}if(t.defaults.linkifyAllTiddlers){c=store.getTiddlers();for(f=0;f<c.length;f++){l=c[f].title;t.addFormatter(l,l,t.excluded.contains(l)||t.linkified.contains(l))}}},indexExcludes:function(){var e,n="",r,i,i=store.getTiddlerText("LinkifyConfig")||store.getShadowTiddlerText("LinkifyConfig");t.excluded=[];i=i?i.split("\n"):[];for(r=0;r<i.length;r++)if(i[r].indexOf("-")==0)n+=i[r].substr(1,i[r].length-1)+" ";n=n.readBracketedList();n.map(function(e){t.excluded.pushUnique(e)});for(e=0;e<n.length;e++)store.getTaggedTiddlers(n[e]).map(function(e){t.excluded.pushUnique(e.title)})},init:function(){this.indexConfig();this.indexExcludes();formatter=new Formatter(config.formatters)}};config.extensions.linkify.init();window.linkifyTiddlers=function(){};TiddlyWiki.prototype.saveTiddlerLINKIFY=TiddlyWiki.prototype.saveTiddler;TiddlyWiki.prototype.saveTiddler=function(n,r,i,s,o,u,a,f,l,c){var h=[],p=store.saveTiddlerLINKIFY.apply(this,arguments),d=r;t.addFormatter(d,d,t.excluded.contains(d)||t.linkified.contains(d),true,d!=n?n:null);if(n=="LinkifyConfig"||r=="LinkifyConfig"){t.indexConfig()}t.indexExcludes();formatter=new Formatter(config.formatters);if(d!=n){e("[tiddler]",e("[content]")).each(function(){var t=e(this),i=t.text()||"",s=t.attr(tiddler)|"";if(i.indexOf(r)>-1||i.indexOf(n)>-1){if(s)h.pushUnique(s)}});e("a[tag], a[tiddlyLink]").each(function(){var t,i=e(this),s=i.attr("tiddlyLink");s=s?s:i.attr("tag");if(s==n||s==r){t=e(this).closest(".tiddler").attr("tiddler");if(t)h.pushUnique(t)}});h.map(function(e){story.refreshTiddler(e,null,true)})}return p};store.removeTiddler_Linkify=store.removeTiddler;store.removeTiddler=function(e){var t=store.removeTiddler_Linkify.apply(this,arguments);config.extensions.linkify.addFormatter("*",null,null,null,e);formatter=new Formatter(config.formatters);story.refreshAllTiddlers(true);return t};config.shadowTiddlers.StyleSheetLinkify="/*{{{*/\n"+".linkified .tiddlyLink{color:[[ColorPalette::PrimaryMid]];font-weight:normal;}\n"+".linkified .tiddlyLink:hover{color:[[ColorPalette::PrimaryLight]];background:transparent;}\n"+".headerShadow .linkified .tiddlyLink {color:transparent !important;}\n"+".siteSubtitle .linkified .tiddlyLink{color:[[ColorPalette::PrimaryPale]];background:transparent;}\n"+".siteSubtitle .linkified .tiddlyLink:hover{color:[[ColorPalette::Background]];background:transparent;}\n"+"dt .linkified .tiddlyLink{font-weight:bold;}\n"+"/*}}}*/";store.addNotification("StyleSheetLinkify",refreshStyles)})(jQuery)
//%/
/***
|Name|ListFiltrPlugin|
|Description|Allows to easily filter simple and complex lists|
|Documentation|http://listfiltr.tiddlyspace.com|
|Author|[[Tobias Beer|http://tobibeer.tiddlyspace.com]]|
|Version|1.7.0 (2013-10-18)|
|~CoreVersion|2.6.5|
|License|Creative Commons 3.0|
|Source|https://raw.github.com/tobibeer/TiddlyWikiPlugins/master/plugins/ListFiltrPlugin.min.js|
***/
// /%
function placeholderIsSupported(){var e=document.createElement("input");return"placeholder"in e}(function(e){var t=config.macros.listfiltr={InputPlaceholder:"filter list",InputLabel:"Filtrér liste:",InputTooltip:"skriv et søgeord for at filtrere listen",defaultPreserve:".st-bullet, .annotation",wait:500,minInput:2,or:" ",h:"h1,h2,h3,h4,h5,h6",index:"li,dd,dt,td,th,div",remove:"lf-h lf-hide lf-found lf-keep lf-section",ignore:".lf-found,br,.pseudo-ol-li,.linkified",keepOuter:"b,em,strong,blockquote",keep:[".lf-keep.lf-h",".lf-found.lf-h",".lf-found .lf-h:not(%0)",".lf-section.lf-h",".lf-section .lf-h","thead:not(.lf-h) .lf-h","tr.lf-keep td.lf-h","tr.lf-keep th.lf-h","dt.lf-keep .lf-h","dd.lf-keep .lf-h"].join(","),dontKeepInsideFound:["tr.lf-h","div.lf-found li.lf-h:not(div.lf-found li.lf-found li.lf-h)","td.lf-found tr.lf-h","td.lf-found li.lf-h","td.lf-found dt.lf-h","td.lf-found dd.lf-h",".sliderPanel.lf-found li.lf-h",".sliderPanel.lf-found ul.lf-h"].join(","),showOnFilter:[".sliderPanel"].join(","),hideOnEmpty:[".sliderPanel"].join(","),timer:0,handler:function(n,r,i,s,o,u){var a,f,l,c,h=[],p,d=o.parseParams("anon",null,true),v=getParam(d,"appendTo",this.appendTo),m=getParam(d,"preserve",this.defaultPreserve);if(v){c=e(n).closest(".tiddler");n=e(v,c).first()[0]||n}c=e(n).children().last();while(c.is("br"))c=c.prev();if(c.is("span, div"))c=c.contents();c.wrapAll('<div class="lf-list"/>');c=c.closest(".lf-list");if(e.fn.outline)e("ol:not(ol li > ol)",c).outline();t.keepOuter.split(",").map(function(e){h.push("> "+e)});e(m+(h.length?","+h.join(","):""),c).addClass("lf-preserve");t.textToParagraph(c);f=e("<div class=lf-search/>").insertBefore(c);p=placeholderIsSupported()?t.InputPlaceholder:"";if(!p){e("<span class=lf-label/>").html(t.InputLabel).appendTo(f)}a=e('<input type="search"/>').attr({title:t.InputTooltip,placeholder:p}).appendTo(f);a.bind("keyup search",function(){var n=e(this);clearTimeout(t.timer);t.timer=setTimeout(function(){t.filter(n);return true},t.wait)})},filter:function(n){var r,i,s,o,u,a=t.index+",span,"+t.h,f=n.val(),l=n.closest(".lf-search").next(),c=n.closest(".st-tree"),h=config.macros.simpletree;if(f.length>t.minInput){l.addClass("lf-filtered");if(h&&c.length&&!c.is(".st-all")){h.toggleAll(c);c.addClass("lf-tree")}}else{l.removeClass("lf-filtered");if(h&&c.length&&c.is(".st-all.lf-tree")){h.toggleAll(c)}c.removeClass("lf-tree")}e("*",l).removeClass(t.remove);e(".highlight",l).each(function(){var t=e(this),n=t.parent();t.contents().unwrap();n[0].normalize()});if(f.length<t.minInput){e(t.hideOnEmpty,l).hide()}else{e(t.showOnFilter,l).show();t.highlight(e.trim(f.toLowerCase()),l);e(a,l).not(t.ignore).each(function(){var n=1,r,i,o,u,a,f,l,c,h,p,d=e(this),v=d.is(".highlight");if(!v)v=d.is("li, dt, dd")?t.checkLi(d):e(".highlight",d).length;if(v){t.mark(d,true);p=d.parentsUntil(".lf-list").last();if(p.is(t.keepOuter)){t.mark(p,true);s=t.keepHeading(p,true)}p=d.closest(t.h);if(p.length)p.nextUntil(t.h).addClass("lf-keep lf-section");else t.keepHeading(d);p=d.closest("dt");if(p.length){t.mark(p);t.mark(p.nextUntil("dt","dd"))}p=d.closest("dd");if(p.length){t.mark(p.prevAll("dt:first"))}p=d.closest("td, th");if(p.length){c=t.mark(d.closest("table"));o=p.is("th")&&!p.prev().length;h=p.closest("tr");t.mark(h,o);u=t.maxCols(c);r=t.numCols(h);if(r<u){f=h.prev("tr");do{t.mark(f,o);f=t.numCols(f)<=r?f.prev("tr"):0}while(f.length)}a=h.next("tr");while(a.length){if(r==u&&t.numCols(a)<r||r<u&&t.numCols(a)<=r){t.mark(a,o);a=a.next("tr")}else{a=0}}if(p.closest("thead").length){d.prevAll().each(function(){i=e(this).attr("colspan");n+=i?parseInt(i):1});c.find("tbody tr").each(function(){var r=0;e("td, th",this).each(function(){var s=e(this);i=s.attr("colspan");r+=i?parseInt(i):1;if(r>=n){t.mark(s,true);t.mark(s.closest("tr"));return false}})})}}if(d.is(".listTitle")&&d.parent().hasClass("timeline"))t.mark(e("> li",d.parent()));t.mark(d.closest("li").parent().find("> .listTitle"))}else{d.addClass("lf-h");if(d.is("td, th")&&d.closest("tbody").length){d.closest("tr").not(".lf-found, .lf-keep").addClass("lf-h")}}});e(".highlight",l).parentsUntil(l).removeClass("lf-h");e("ol, ul, dl, table, .lf-preserve",l).each(function(){var n=e(this);if(e(".highlight",n).length)t.mark(n);else n.addClass("lf-h")});e(t.h,l).not(".lf-found").each(function(){var n=e(this),r=true,i=n.nextUntil(t.h);i.each(function(){el=e(this);if(el.is(".lf-keep, .lf-found, .lf-section")){r=false;return r}});if(r)i.removeClass("lf-keep").addClass("lf-h")});e(t.keep.format(t.dontKeepInsideFound),l).removeClass("lf-h");e(".lf-h:not(.lf-preserve .lf-h)",l).addClass("lf-hide")}return true},highlight:function(n,r){e("*",r).highlight(n);e(".externalLink, .tiddlyLink",r).each(function(){var r=e(this),i=(r.hasClass("tiddlyLink")?r.attr("tiddlyLink"):r.attr("href")).replace(/\/\/\:/mg,"_").toLowerCase();n.split(t.or).map(function(t){if(t&&i.indexOf(t)>-1&&!e(".highlight",r).length){r.contents().wrap('<span class="highlight"/>')}})})},keepHeading:function(e,n){n=n?e:e.parentsUntil(".lf-list").last();h=n.prev();if(!h.is(t.h))h=n.prevUntil(t.h).last().prev();if(h.is(t.h)){t.mark(h)}},mark:function(e,n){e.not(t.ignore).removeClass("lf-keep lf-h").not(".highlight").addClass(n?"lf-found":"lf-keep");return e},textToParagraph:function(n){n.find(":not(iframe)").addBack().contents().filter(function(){var t=e(this);return this.nodeType==3&&(t.next().length||t.prev().length)&&!t.closest(".lf-preserve").length&&!t.prevAll(".pseudo-ol-li").length}).wrap('<span class="lf-text"/>');e(".lf-text",n).each(function(){var n,r=e(this),i=false;if(r.closest(".lf-p").length)return true;n=r.prevUntil(t.block).add(r).add(r.nextUntil(t.block));n.each(function(){var n=e(this);i=n.next().is(t.block)||n.prev().is(t.block);return!i});if(i&&n.length>1)n.wrapAll('<span class="lf-p lf-preserve"/>')})},maxCols:function(t){var n=0;e("> thead > tr, > tbody > tr",t).each(function(){n=Math.max(n,e("> td, > th",this).length)});return n},numCols:function(t){var n=0;e("> td, > th",t).each(function(){var t=e(this).attr("colspan");n+=t?parseInt(t):1});return n},checkLi:function(n,r){var i=false;n.children(":not(ol, ul, dl)").each(function(){var n=e(this),s=n.is(".highlight")||e(".highlight",n).length;if(r)t.mark(n);i=i||s});if(i||r){x=n.parent("ol, ul, dl").parent("li, dd, dt");if(x.length)t.checkLi(x,true)}return i}};t.block=t.h+","+t.index+",br,blockquote,ol,ul,dt,p,pre,form";e.fn.highlight=function(n){var r=[],i='<span class="highlight">%0</span>',s=n.split(t.or);s.map(function(e){if(e)r.push("(\\b\\w*"+e+"\\w*\\b)")});r=new RegExp(r.join("|"),"gi");this.each(function(){e(this).contents().each(function(){if(this.nodeType===3&&r.test(this.nodeValue)){e(this).replaceWith(this.nodeValue.replace(r,function(e,t){var n;s.map(function(t){if(e.toLowerCase().indexOf(t)>=0){n=i.format(e)}return!n});return n}))}else if(!e(this).hasClass("highlight")){e(this).highlight(n)}})});return this};config.shadowTiddlers["StyleSheetListFiltr"]="/*{{{*/\n"+".lf-search {padding:5px;background:#eef;}\n"+".lf-hide {display: none !important;}\n"+".lf-found {background:#F5F5DC;}\n"+".lf-list + br {display:none;}\n"+".lf-label {margin-right:5px;font-weight:bold;}\n"+".lf-filtered .lf-p {display:block;}\n"+".lf-filtered dd .lf-p {display:inline-block;}\n"+".lf-filtered br {display: none;}\n"+".lf-filtered .lf-preserve br {display: block;}\n"+".lf-preserve.lf-found br {display: block;}\n"+"/*}}}*/";store.addNotification("StyleSheetListFiltr",refreshStyles)})(jQuery)
//%/
/***
|Name|ListboxPlugin|
|Source|http://www.TiddlyTools.com/#ListboxPlugin|
|Documentation|http://www.TiddlyTools.com/#ListboxPluginInfo|
|Version|1.4.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|set custom field or tiddler tags by selecting from listbox/droplist|
The {{{<<select>>}}} macro allows you to set tiddler field values by selecting pre-configured values from a listbox/droplist control.  
!!!!!Documentation
>see [[ListboxPluginInfo]]
!!!!!Revisions
<<<
2010.03.14 1.4.1 use filterTiddlers() instead of getTaggedTiddlers() - use MatchTagsPlugin for tag expressions
|please see [[ListboxPluginInfo]] for additional revision details|
2007.05.12 0.5.0 started
<<<
!!!!!Code
***/
//{{{
version.extensions.ListboxPlugin= {major: 1, minor: 4, revision: 1, date: new Date(2010,3,14)};

config.macros.select = {
	tooltip: "select a value for %0@%1",
	blankTooltip: "set %0@%1=[no value]",
	valueTooltip: "set %0@%1=%2",
	otherLabel: "other",
	otherTooltip: "set %0@%1=[enter a value...]",
	otherPrompt: "enter a value for '%0'",
	editLabel: "edit list...",
	editTooltip: "edit '%0' list definition (%1)",
	changeMsg: "setting %0@%1=%2",
	verbose: false,
	hereKeyword: "here",
	defaultTarget: "SiteFields",
	handler:
	function(place,macroName,params,wikifier,paramString,tiddler) {

		// default to containing tiddler or "SiteFields" catch-all
		var here=story.findContainingTiddler(place);
		var targetID=here?here.getAttribute("tiddler"):this.defaultTarget;

		// get field name and non-default target (if any)
		var field=params.shift();
		var pos=field.indexOf("@"); // if non-default target ("field@tiddler" syntax)
		if(pos!=-1) { // split field into field and tiddlername.
			if (field.substr(pos+1)!=this.hereKeyword) // "here" == use default target
				targetID=field.substr(pos+1); // use different target tiddler
			field=field.substr(0,pos);
		}
		if(!field || !field.length) return; // no field name... do nothing
		if (field.substr(0,1)=="=") targetID="(system)"; // internal option value

		var items=[]; var listsrc='';
		var autosave=false; var allowBlank=false; var allowOther=false; var allowEdit=false;
		var allowMultiple=false; var wikifyData=false; var rows=0; var width='';
		var p=params.shift();
		while (p) {
			if (p.toLowerCase()=='autosave')	// autosave on change
				autosave=true;
			else if (p.toLowerCase()=='allowblank')	// add empty item
				var allowBlank=true;
			else if (p.toLowerCase()=='allowother')	// add "other: ____" item
				var allowOther=true;
			else if (p.toLowerCase()=='allowedit')	// add "edit list..." item
				var allowEdit=true;
			else if (p.toLowerCase()=='allowmultiple') // multi-select
				var allowMultiple=true;
			else if (p.startsWith('rows:')) // 0=autosize listbox, 1=droplist, n=listbox
				var rows=p.substr(5);
			else if (p.startsWith('width:')) // CSS width of list
				var width=p.substr(6);
			else if (p.startsWith('prompt:')) // prompt text (1st item in list)
				var ptext=p.substr(7);
			else if (p.substr(0,1)=="+"||p.substr(0,1)=="*") { // read HR-separated tiddler
				var listsrc=p.substr(1);
				var listtxt=store.getTiddlerText(listsrc,'');
				var wikifyData=p.substr(0,1)=="*";
				if (listtxt.length && wikifyData) // wikify source to handle macros/scripts
					listtxt=this.getWikifiedData(listtxt);
				if (listtxt.length)
					items=items.concat(listtxt.split(listtxt.indexOf('\n----\n')!=-1?'\n----\n':'\n'));
			}
			else if (p.startsWith("=")) { // get items from tagged tiddlers
				var filter=p.substr(1);
				if (!filter.startsWith('[')) filter='[tag['+filter+']]';
				var tids=store.filterTiddlers(filter);
				for (var t=0; t<tids.length; t++) items.push(tids[t].title);
			}
			else { // param is item value or 'label=value'
				var parts=p.split("=");
				var label=parts[0]; var v=parts[1]?parts[1]:parts[0];
				items.push(label+"="+v);
			}
			p=params.shift();
		}
		if (rows==1) allowMultiple=false; // droplist cannot do multi-select
		if (tiddler && !story.isDirty(tiddler.title)) autosave=true; // tiddler is in VIEW mode, force autosave

		this.render(createTiddlyElement(place,"span"), null,
			targetID, field, ptext, items, listsrc, wikifyData,
			rows, width, autosave, allowBlank, allowOther, allowEdit, allowMultiple);

		store.addNotification(null,this.refresh); // syncs lists when tiddlers are changed
	},
	getWikifiedData: // wikify tiddler content, then extract text WITH newlines and HRs included
	function(txt) {
		var e=createTiddlyElement(document.body,"div"); wikify(txt,e);
		var breaks=e.getElementsByTagName("br");
		for (var b=0; b<breaks.length; b++) breaks[b].parentNode.insertBefore(document.createTextNode("\n"),breaks[b]);
		var lines=e.getElementsByTagName("hr");
		for (var l=0; l<lines.length; l++) lines[l].parentNode.insertBefore(document.createTextNode("----\n"),lines[l]);
		var items=e.getElementsByTagName("li");
		for (var i=0; i<items.length; i++) items[i].parentNode.insertBefore(document.createTextNode("\n"),items[i]);
		var txt=getPlainText(e); removeNode(e); return txt;
	},
	refresh:
	function (title) { // re-render dependent lists
		var lists=document.getElementsByTagName('select');
		for (var i=0; i<lists.length; i++) { var list=lists[i];
			if (list.getAttribute('listsrc')!=title) continue; // no sync needed
			var listtxt=store.getTiddlerText(list.getAttribute('listsrc')||'','');
			if (listtxt.length && list.getAttribute("wikifyData")=="true")
				listtxt=this.getWikifiedData(listtxt);
			if (listtxt.length)
				var items=listtxt.split(listtxt.indexOf('\n----\n')!=-1?'\n----\n':'\n');
			config.macros.select.render(list.parentNode, list,
				list.getAttribute('tiddler'),
				list.getAttribute('edit'),
				list.getAttribute('ptext'),
				items||[],
				list.getAttribute('listsrc'),
				list.getAttribute("wikifyData")=="true",
				list.getAttribute("rows"),
				list.getAttribute("width"),
				list.getAttribute("autosave")=="true",
				list.getAttribute("allowBlank")=="true",
				list.getAttribute("allowOther")=="true",
				list.getAttribute("allowEdit")=="true",
				list.getAttribute("allowMultiple")=="true");
		}
	},
	render:
	function (place, here, targetID, field, ptext, items, listsrc, wikifyData,
		rows, width, autosave, allowBlank, allowOther, allowEdit, allowMultiple) {

		var values=[]; var opts=[];

		// use current selection(s) (if any) (except for "edit list..." item)
		if (here) for (var i=0; i<here.options.length; i++) {
			var opt=here.options[i];
			if (opt.selected && opt.text!=config.macros.select.editLabel) values.push(opt.value);
		}
		// no listbox or no selections... get value(s) from field (if any)
		if (!values.length) {
			var v=(field.substr(0,1)=='=')?config.options[field.substr(1)]:store.getValue(targetID,field);
			if (v) values=(field=='tags'||allowMultiple)?v.readBracketedList():[v];
		}
		// add prompt item
		if (ptext&&ptext.length)
			opts.push('<option value="_ptext" title="">'+ptext+'</option>');
		// add 'no value' item
		if ((!allowMultiple && !values.length) || allowBlank)
			opts.push('<option value="" title="'+this.blankTooltip.format([field,targetID])+'"></option>');
		// add enumerated items
		var isOther=values.length; // assume no matching value
		for (var opt=0; opt<items.length; opt++) {
			var lines=items[opt].split("\n"); var parts=lines[0].split("=");
			var label=parts[0];
			var v=parts[1]?parts[1]:parts[0];
			var title=lines[1]?lines[1]:this.valueTooltip.format([field,targetID,v]);
			var sel=values.contains(v); if (sel) isOther=false; // found matching value
			opts.push('<option value="'+v+'" '+(sel?'selected':'')+' title="'+title+'">'+label+'</option>');
		}
		// add 'other...'
		if (field=='tags') isOther=false;
		if (isOther||allowOther) {
			var label="other"+(isOther?(": "+values[0]):"...");
			var v=isOther?values[0]:'';
			var t=this.otherTooltip.format([field,targetID]);
			opts.push('<option value="'+v+'" '+(isOther?'selected':'')+' title="'+t+'">'+label+'</option>');
		}
		// add 'edit list...'
		if (listsrc && (!store.getTiddlerText(listsrc) || allowEdit)) {
			var title=this.editTooltip.format([field,listsrc]);
			opts.push('<option value="'+listsrc+'" title="'+title+'">'+this.editLabel+'</option>');
		}
		// render listbox
		var html='<select '+(values[0]?'value="'+values[0]+'" ':' ')
			+' title="'+this.tooltip.format([field,targetID])+'"'
			+' rows="'+rows+'"'+' size="'+(rows!=0?rows:opts.length)+'"'+' style="width:'+width+'"'
			+' tiddler="'+targetID+'"'+' edit="'+field+'"'+' ptext="'+ptext+'"'
			+' listsrc="'+listsrc+'"'+' wikifyData="'+wikifyData+'"'
			+' autosave="'+autosave+'"'+' allowBlank="'+allowBlank+'"'+' allowOther="'+allowOther+'"'
			+' allowEdit="'+allowEdit+'"'+' allowMultiple="'+allowMultiple+'"'+(allowMultiple?' multiple':'')
			+' onclick="return config.macros.select.onClick(this,event)"'
			+' onchange="return config.macros.select.onChange(this,event)"'
			+' ondblclick="return false">'+opts.join('')+'</select>';
		place.innerHTML=html;
	},
	onClick:
	function(here,event) {
		var sel=here.selectedIndex;
		if (sel!=-1 && here.options[sel].text.startsWith(config.macros.select.otherLabel))
			here.onchange.apply(here,arguments);
	},
	onChange:
	function(here,event) {
		var cms=config.macros.select; // abbrev
		var sel=here.selectedIndex;
		if (sel!=-1) {
			if (here.options[sel].text==cms.editLabel) {
				story.displayTiddler(story.findContainingTiddler(here),here.value,DEFAULT_EDIT_TEMPLATE);
				return false;
			}
			if (here.options[sel].text.startsWith(cms.otherLabel)) {
				var newval=prompt(cms.otherPrompt.format([here.getAttribute("edit")]),here.value);
				if (!newval) {// user cancelled
					var v=store.getValue(here.getAttribute("tiddler"),here.getAttribute("edit"));
					{ here.value=v; if (v==undefined) here.selectedIndex=0; return false; }
				};
				here.options[sel].value=newval;
				here.options[sel].text=cms.otherLabel+": "+newval;
				here.value=newval;
			}
			if (here.options[sel].value=='_ptext')
				for (var i=0; i<here.options.length; i++)
					here.options[i].selected=false;
		}
		if (here.getAttribute("autosave")=="true") config.macros.select.setFieldValue(here);
		return false;
	},
	setFieldValue: function(here) {
		var tid=here.getAttribute("tiddler"); if (!tid || !tid.length) return; // no target, do nothing
		var field=here.getAttribute("edit");
		if (field.substr(0,1)=='=') { // option cookie instead of tiddler field
			config.macros.option.propagateOption(field.substr(1),"value",here.value,"input");
			return;
		}
		// ensure tiddler exists
		if (!store.tiddlerExists(tid)) store.saveTiddler(tid,tid,"",config.options.txtUserName,new Date(),[]);
		if (field=='tags') {
			store.suspendNotifications();
			for (var i=0; i<here.options.length; i++) {
				var opt=here.options[i];
				if (opt.text==config.macros.select.editLabel) continue;
				store.setTiddlerTag(tid,opt.selected,opt.value);
			}
			store.resumeNotifications();
		} else {
			// get multi-select items
			var values=[];
			for (var i=0; i<here.options.length; i++) {
				var opt=here.options[i];
				if (opt.text==config.macros.select.editLabel) continue;
				if (opt.selected) values.pushUnique(String.encodeTiddlyLink(opt.value));
			}
			if (values.length==1) values=[here.value]; // remove unneeded brackets around single value
			store.setValue(tid,field,values.length?values.join(' '):null); // if no selections, delete field
		}
		// 'touch' tiddler and report to user
		var t=store.getTiddler(tid);
		var who=config.options.chkForceMinorUpdate?t.modifier:config.options.txtUserName;
		var when=config.options.chkForceMinorUpdate?t.modified:new Date();
		store.saveTiddler(tid,tid,t.body,who,when,t.tags,t.fields);
		if (config.macros.select.verbose)
			{ clearMessage(); displayMessage(config.macros.select.changeMsg.format([field,tid,here.value])); }
	}
}
//}}}
Fuld_sol
beskrivelse
----
Halvskygge
beskrivelse
----
10
15
20
25
30
35
40
45
50
55
60
65
70
75
80
85
90
95
100
{{hidden{
!Billede
Mahonie.jpg
!Botanisk navn
Mahonia aquifolium
!Dansk navn
Mahonie
!Type
Busk
!Højde

!Bredde

!Blomstringstid

!Bladtype

!Bladstilling

!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse

!Anvendelse

!Krav

!Pleje

! 
}}}
{{floatright{
{{span{<<tiddler {{if (readOnly) place.style.display='none';'';}}>><<tiddler CycleThemes with: 'Skift tema' "White-Classic-Theme White-Fixed-Theme White-Theme MartinsTema">>}}} {{span{<<tiddler {{if (readOnly) place.style.display='none';'';}}>><<popup 'upload' [[<<tiddler MainMenu##upload>+>]] nohover toggle>>}}}<<tiddler ToggleEdit with:redigér>> {{span{<<tiddler {{if (readOnly) place.style.display='none';'';}}>><<undo label:"fortryd">>}}} <<history back>> <<history>> <<history  forward>> <<tiddler ToggleRightSidebarMod>> 
}}}{{floatleft{
*<<tiddler HjemKnap>>
*<<tiddler NyGemtTiddler with:'MainMenu' 'Ny menu'>>
*<<tiddler Menu with:MainMenu>>
}}}/%
!upload
|borderless box3|k
|navn:|<<option txtUploadUserName>> |
|password:| <<option pasUploadPassword>> |
|<<upload>>||
! %/
/*{{{*/
/*
	Malo - CSS Library
	Author:Vladimir Carrer
*/
  
/* CSS Grid */
/* dp = div percent */

.dp10,
.dp20,
.dp25,
.dp33,
.dp50,
.dp70,
.dp100{float:left; display: inline, *margin-left:-0.04em; } /* IE margin hack */

/*
.dp10{width:10%;}
.dp20{width:20%;}
.dp25{width:25%;}
.dp33{width:33.33%;}
.dp50{width:50%;}
.dp100{width:100%;}  */ /* original CSS. no margin possible */

.dp10{width:9%;}
.dp20{width:19%;}
.dp25{width:24%;}
.dp33{width:32.33%;}
.dp50{width:49%;}
.dp70{width:68%;}
.dp100{width:99%;}  /* changed it a little bit */

.clear{ clear:both;}

/* top border */
//.dp100,.dp50,.dp33,.dp25,.dp20,dp10{ border-top:1px solid #111;}

.dp100,.dp70,.dp50,.dp33,.dp25{ padding-left: 0.5%; padding-right: 0.5%; margin-right:0%;} 
.dp20,.dp10{ padding-left: 0.3%; padding-right: 0.3%; margin-right:0%;} 

/*}}}*/
<script src="http://my.bopland.org/render.js"></script> 
The Man :-)
|Name|MartinsTema|
|Description|et naturligt tema til ~TiddlyWiki|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|StyleSheet|##StyleSheet|
|Version|0.0.1 (2013-11-11)|
<!--{{{-->
!SideBarTabs
{{nobullets{<<hideWhen !readOnly>><<tiddler MartinsTema##Nyheder>>}}}{{x{<<hideWhen readOnly>><<tiddler SideBarTabs>>}}}
!Nyheder
{{yellowBox{
{{center title borderbottom{
Nyheder
}}}
<<tiddler TabTimeline>>
}}}
<br><br>
{{greenBox nobullets center{{{knap{<<tiddler ToggleEdit with:redigér>><br> {{button{d[[own|./download.php]]load}}}}}}}}}
!end
<!--}}}-->
<!--{{{-->
!SideBarOptions
{{x{<<hideWhen !readOnly>><<history back>> <<history>> <<history  forward>> <<closeAll>>}}}{{x{<<hideWhen readOnly>><<tiddler SideBarOptions>>}}}
!end
<!--}}}-->
<!--{{{-->
!MainMenu
{{x{<<hideWhen !readOnly>>
*<<tiddler HjemKnap>>
*<<tiddler Menu with:MainMenu>>
}}}{{x{<<hideWhen readOnly>><<tiddler MainMenu>>}}}
!end
<!--}}}-->
<!--{{{-->
!SiteTitle
@@display:none;PlanteKendskab@@[img(120%,auto)[PlanteListen|./Billeder/MartinsHeader.jpg][PlanteKendskab]]
!end
<!--}}}-->
!PageTemplate
<!--{{{-->
<div class='header'>
	<div id='sidebarSearch'>
<span class='floatright' macro='tiddler ToggleRightSidebarMod'></span><span macro='search'></span>
	</div>
	<div class='headerForeground'>
		<span class='siteTitle' refresh='content' tiddler='MartinsTema##SiteTitle'></span>
		<span class='siteSubtitle' style='display:none' refresh='content' tiddler='SiteSubtitle'></span>
	</div>
	<div class='clearFloat'></div>
</div>

<div id='menuBar'>
	<div id='mainMenu' refresh='content' tiddler='MartinsTema##MainMenu'></div>
	<div id='sidebarOptions' refresh='content' tiddler='MartinsTema##SideBarOptions'></div>
</div>
<div id='displayArea'>
	<div id='messageArea'></div>
	<div id='tiddlerDisplay'></div>
	<div id='sidebarTabs' refresh='content' force='true' tiddler='MartinsTema##SideBarTabs'></div>
</div>
<!--}}}-->
!ViewTemplate
<!--{{{-->
<div macro='hideWhen readOnly'><div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div></div><div macro='showWhen readOnly'><div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbarReadOnly]]'></div></div>
<span class='title' macro='view title'></span>
<div style='display:none'>
<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>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
!EditTemplate
<!--{{{-->
<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 macro=""showWhen !readOnly">
<div macro='tiddler QuickEditToolbar with:show'></div></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>
<!--}}}-->

!EditTemplateReadOnly
<!--{{{-->
<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 macro=""showWhen !readOnly">
<div macro='tiddler QuickEditToolbar with:show'></div></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>
<!--}}}-->

!StyleSheet
/*{{{*/
[[StyleSheet]]
[[StyleSheetTiddlySpace]]
iframe{
    width:98%;
    height:600px;
    border:2px solid [[ColorPalette::TertiaryPale]];
    z-index:0;
    position:relative;
}
body
{
background:url('./Billeder/MartinsBaggrund.jpg');
-webkit-background-repeat:repeat;
-moz-background-repeat:repeat;
-o-background-repeat:repeat;
background-repeat:repeat;
-webkit-background-fixed:fixed;
-moz-background-fixed:fixed;
-o-background-fixed:fixed;
background-fixed:fixed;
background-color:#cccccc;
}
body {
background: url("./Billeder/MartinsBaggrund.jpg");
-webkit-background-repeat:repeat;
-moz-background-repeat:repeat;
-o-background-repeat:repeat;
background-repeat:repeat;
-webkit-background-fixed:fixed;
-moz-background-fixed:fixed;
-o-background-fixed:fixed;
background-fixed:fixed;
background-color:#cccccc;
}

.header{ background:url("./Billeder/MartinsBaggrund.jpg"); 
-webkit-background-repeat:repeat;
-moz-background-repeat:repeat;
-o-background-repeat:repeat;
background-repeat:repeat;
-webkit-background-fixed:fixed;
-moz-background-fixed:fixed;
-o-background-fixed:fixed;
background-fixed:fixed;
background-color:#cccccc;
}
.headerForeground  {margin:0 2%;background-color:transparent;color:#fff;font-weight:bold;}

#mainMenu{height:1em;min-height:0;z-index:100;}
#mainMenu .tiddlyLink, #mainMenu .button, #sidebarOptions .tiddlyLink, #sidebarOptions .button{-moz-border-radius:10px;border-radius:10px;padding:5px;border:0;}

#sidebarOptions .tiddlyLink:hover, #sidebarOptions .button:hover{background:black;color:white;}

.tiddler{
background:url("http://tips.tiddlyspace.gir.dk/brick_121.jpg");
-webkit-background-repeat:repeat;
-moz-background-repeat:repeat;
-o-background-repeat:repeat;
background-repeat:repeat;
-webkit-background-fixed:fixed;
-moz-background-fixed:fixed;
-o-background-fixed:fixed;
background-fixed:fixed;
background-color:#cccccc;
}

/* *** Menu Bar *** */
#mainMenu {
color:[[blue]];
position: static;
text-align: left;
margin: 0;
float: left;
width: auto;
padding: 0;
margin-left:72px;
font-size: 1em;
line-height: normal;
}

#mainMenu a {
	color: #fff;
	padding: 8px;
	font-size: 0.9em;
	margin-right: 16px;
}




#mainMenu a:hover {
	background-color: [[ColorPalette::PrimaryMid]];
	color: [[ColorPalette::Background]]
}




#mainMenu br{
display:none;
}



#sidebarOptions {
	margin-right: 72px;
	float: right;
	font-size: 1.1em;
	line-height: 1.6em;
	min-height: 1em;
	padding-top: 0;
}




#sidebarOptions a {
	margin-right: 8px;
}




.confirmationPopup .button,
#sidebarOptions .button {
	cursor: pointer;
	line-height: 1.4em;
	text-align: center;
	margin-right: 8px;
	margin-left:-2px;
}




.confirmationPopup .button {
	font-size: 0.9em;
	padding: 2px;
}




#sidebarOptions .button {
	font-size: 0.7em;
	float: left;
	width: 80px;
	padding: 0px;
color: #fff;
}




.confirmationPopup a.button,
#sidebarOptions a {
	border: none;
	margin: 0 0.2em;
	padding: 0.6em 0.25em;
	display: inline;
	color: #666;
}




.confirmationPopup a.button:hover,
#sidebarOptions a:hover {
	color: #000;
}




.confirmationPopup a.button:active,
#sidebarOptions a:active {
	border: solid 1px [[ColorPalette::PrimaryMid]];
	background-color: #fff;
	background: -webkit-gradient( linear, left bottom, left top, color-stop(0.1,rgb(200,200,200)), color-stop(1, rgb(100,100,100)));
	background: -moz-linear-gradient(center bottom , rgb(200,200,200) 10%,rgb(100,100,100) 100%) repeat scroll 0 0 transparent;
}
/* *** Sidebar *** */




#sidebar .wizard table {
	margin: 0px;
}




.tabContents .listTitle:first-child {
	margin-top: 0px;
}




#menuBar {
	background: #297AFF;
	left: 0;
	right: 0;
	position: relative;
	margin: 0;
	padding: 0.5em 0 0.5em 0;
	min-height: 1em;
	overflow: hidden;
	_width: 100%; /* for ie 6 */
}
#menuBar ul, #menuBar li {display: inline;
		padding-top: 0;floatleft;}
#menuBar a, #menuBar .tiddlyLink, #menuBar .button {margin:0em; padding-top:0.1em;border:none;float:left;}



#sidebarOptions a.button:hover {
	color: [[ColorPalette::PrimaryPale]];
background: [[ColorPalette::PrimaryMid]];
}




#tiddlerDisplay, #searchResults {
	margin: 16px 448px 0 72px;
}




#sidebarTabs {
	position: absolute;
	right: 72px;
	width: 352px;
	top: 0;
}




#sidebarTabs .tabsetWrapper .tabset {
	width: 87px;
	border-top: 1px solid [[ColorPalette::PrimaryPale]];
	border-left: 1px solid [[ColorPalette::PrimaryPale]];
	border-bottom: 1px solid [[ColorPalette::PrimaryPale]];
	height: auto;
	float: left;
	word-wrap: break-word;
	top: 0;
	padding: 0;
}




#sidebarTabs .tabsetWrapper .tabContents {
	background-color: [[ColorPalette::PrimaryPale]];
	border: 3px solid [[ColorPalette::PrimaryMid]];
	width: 242px;
	_width: 238px;
	left: -3px;
	_left: -5px;
	position: relative;
	min-height: 34em;
	padding: 8px;
	font-size: 0.8em;
}




/* ---- Side style --- */


#sidebarTabs .tabsetWrapper .tabset .tab {
	font-size: 0.9em;
	padding: 0.7em 8px 0.5em;
	color: #fff;
	background: [[ColorPalette::PrimaryLight]];
	border: none;
	line-height: 16px;
	position: relative;
	display: block;
	margin: 0;
}




#sidebarTabs .tabsetWrapper .tabset .tabSelected {
	color: [[ColorPalette::PrimaryMid]];
	background: [[ColorPalette::PrimaryPale]];
	border-top: 3px solid [[ColorPalette::PrimaryMid]];
	border-bottom: 3px solid [[ColorPalette::PrimaryMid]];
	border-left: 3px solid [[ColorPalette::PrimaryMid]];
	z-index: 10;
	margin-top: -1px;
	font-weight: bold;
}




#sidebarTabs .tabContents li {
	border: none;
	margin-left: 0;
	word-wrap: break-word;
}




.tabContents .timeline {
	background: [[ColorPalette::PrimaryPale]];
	margin-bottom: 8px;
}




#sidebarTabs .timeline li.listTitle {
	color: #132E43;
	margin-left: 8px 0;
	padding: 0.3em 0.11em;
	font-size: 1em;
	border-bottom: none;
}




#sidebarTabs .tabContents li a {
	display: block;
	text-align: left;
	margin: 0 0 1px 0;
	padding: 0.3em 1em;
	background: [[ColorPalette::PrimaryPale]];
}




#sidebarTabs .tabsetWrapper .tabset a:hover,
#sidebarTabs .tabContents li a:hover {
	color: [[ColorPalette::PrimaryPale]];
	background: [[ColorPalette::PrimaryMid]];
}




/* Activity Stream */
#sidebarTabs .tabContents .activityStream .feedItem a {
	display: inline-block;
	padding: 0;
	background: none;
}




/* ---- Tagging box --- */
.tagInfo {
	border: 1px solid #cccccc;
	padding: 10px 15px;
	-moz-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
	box-shadow: 0 2px 2px rgba(0,0,0,0.2);
	color: [[ColorPalette::TertiaryMid]];
	background: -moz-linear-gradient(100% 100% 90deg, #f4f4f4, #e5e5e5);
	background: -webkit-gradient(linear, left top, right top, from(#e5e5e5), to(#f4f4f4));
	margin-top: 1em;
	font-size: 13px;
	margin: 0 0 0 56px;
}




.tagInfo ul {
	list-style: none;
	padding-left: 2.2em;
}




.tagInfo ul li {
	display: inline;
}




.tagInfo ul li.listTitle,
.tagInfo .tagging ul li.listTitle {
	color: [[ColorPalette::PrimaryMid]];
	font-size: 13px;
}




.tagInfo ul li a {
	border: none;
}




.tagInfo .tagging ul li {
	float: none;
	display: inline-block;
}




.tagInfo .tagging {
	padding: 0;
}




.viewRevision .toolbar {
	right: 48px;
	top: 8px;
}




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




.viewRevision .toolbar svg {
	width: 32px;
	height: 32px;
}




/* --- IE hacks from lattice --- */




/* ie hacks */
* html #menuBar {
	margin-bottom: 8px;
}
.toolbar .svgIconText {
	*display: inline;
}




div.tiddler .toolbar a {
	cursor: pointer;
	float: left\9;
	display: inline\9;
}




* html .toolbar {
	right: 8px;
}
* html .followButton a {
	margin-top: 0px;
	margin-right: 8px;
}
* html #tiddlerDisplay {
	margin-top: 0px;
}

/*Popups*/
.popup {
    padding:3px;
    border-color:transparent;
    background-color: [[ColorPalette::Background]];
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    -webkit-box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5);
    -moz-box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5);
    box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5);
}

.popup ul,
.popup li {
    margin:0;
    padding:0;
    list-style-type:none;
}

.popup.block a{
    display:block;
}

.popup.block br{
    display:none;
}

.popup a,
.popup li a,
.popup a.button {
    padding:3px;
    color: [[ColorPalette::SecondaryDark]];
    border:0;
}

.popup a :hover,
.popup li a:hover,
.popup a.button:hover,
a.popupbutton.highlight {
    color: [[ColorPalette::SecondaryMid]];
    background: transparent;
}

.popup li a.tiddlyLink {
    font-weight: bold;
}

.taggedTiddlerList li:last-child a.tiddlyLink{
    font-weight:normal;
}

.popup li.disabled,
.popup li.listTitle {
    border-bottom: 1px solid [[ColorPalette::TertiaryPale]];
    color: [[ColorPalette::TertiaryMid]];
    font-weight:normal;
    padding:7px 5px;
    margin: 0;
}

.popup .button{
    background:transparent;
}

.popup.confirmationPopup,
.followList {
    font-size: 0.8em;
    padding: 1em;
    border: 0;
}

.popup.confirmationPopup .button {
    border: 0;
    margin: 4px 4px 0 4px;
    display: inline-block;
}

.popup.confirmationPopup .button:hover {
    background:transparent;
    color:[[ColorPalette::SecondaryDark]];
}

.popup hr{
    color: transparent;
    background: transparent;
    border: 0;
    border-bottom: 1px solid #ccc;
}


/* for printing purposes */
@media print {
	#mainMenu,
	#sidebar,
	#messageArea,
	.toolbar,
	.followPlaceHolder,
	#backstageButton,
	#backstageArea,
	#sidebarTabs,
	#sidebarSearch .txtOptionInput,
	#sidebarOptions {
		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 */
	}
	#tiddlerDisplay {
		margin: 16px 16px;
	}
}




@media all and (max-width: 960px){
	#tiddlerDisplay,
	#searchResults {
		margin: 16px 366px 0 16px;
	}




	#mainMenu {
		margin-left: 16px;
	}




	.headerForeground {
		margin-left: 16px;
	}




	#sidebarSearch {
		right: 16px;
	}




	#sidebarOptions {
		margin-right: 16px;
	}




	#sidebarTabs {
		right: 20px;
		width: 326px;
	}




	#sidebarTabs .tabsetWrapper .tabset {
		font-size: 0.9em;
		width: 77px;
	}




	#sidebarTabs .tabsetWrapper .tabContents {
		width: 226px;
		_width: 222px;
	}




	#sidebarTabs .tabContents li a {
		font-size: 0.9em;
	}
}

/*}}}*/
!BillederViewTemplate
{{floatright toolbar{<<editSection "##" "popup">><br>}}}
{{dp100{
{{dp25{<<tiddler MasterTemplate##TabelGruppe1>>}}}
{{dp70 borderless{
{{center{<<tiddler MasterTemplate##Billeder>>}}}
}}}
}}}
{{dp100{
<<tiddler MasterTemplate##TabelGruppe2>>
}}}

!BillederSlideViewTemplate
{{floatright toolbar{<<editSection "##" "popup">><br>}}}
{{dp100{
{{dp25{<<tiddler MasterTemplate##TabelGruppe1>>}}}
{{dp70 borderless{
{{center{<<tiddler MasterTemplate##Billeder2>>}}}
}}}
}}}
{{dp100{
<<tiddler MasterTemplate##TabelGruppe2>>
}}}

!BilledeViewTemplate
{{floatright toolbar{<<editSection "##" "popup">><br>}}}
{{dp100{
{{dp33{<<tiddler MasterTemplate##TabelGruppe1>>}}}
{{dp50{<<tiddler MasterTemplate##Billede>>}}}
}}}{{dp100{
<<tiddler MasterTemplate##TabelGruppe2>>
}}}
!TabelGruppe1
<<tiddler MasterTemplate##Tabel1>>

<<tiddler MasterTemplate##Tabel2>>

<<tiddler MasterTemplate##Tabel3>>

!TabelGruppe2
<<tiddler MasterTemplate##Tabel4>>

<<tiddler MasterTemplate##Tabel5 with:{{tiddler.title}}>>

<<tiddler MasterTemplate##Tabel6 with:{{tiddler.title}}>>

!Tabel1
|widetable|k
|width:33%;background-color:green;{{dp100 bold white{~Slægtsnavn}}}<<tiddler MasterTemplate##ListBox with: slaegtsnavn Slægtsnavn>>|<<wikify [[%0]] {{store.getValue(tiddler.title,"slaegtsnavn")||" Intet slægtsnavn er valgt endnu"}}>>|
|background-color:green;{{dp100 bold white{~Artsnavn}}}<<tiddler MasterTemplate##ListBox with: artsnavn Artsnavn>>|<<wikify [[%0]] {{store.getValue(tiddler.title,"artsnavn")||" Intet artsnavn er valgt endnu"}}>>|
|background-color:green;{{dp100 bold white{~Sortsnavn}}}<<tiddler MasterTemplate##ListBox with: sortsnavn Sortsnavn>>|<<wikify [[%0]] {{store.getValue(tiddler.title,"sortsnavn")||" Intet sortsnavn er valgt endnu"}}>>|

!Tabel2
|widetable|k
|width:33%;background-color:green;{{dp100 bold white{~Type}}}<<tiddler MasterTemplate##ListBox with: type Type>>|<<wikify [[%0]] {{store.getValue(tiddler.title,"type")||" Type er ikke valgt endnu"}}>>|

!Tabel3
|widetable|k
|width:33%;background-color:green;{{dp100 bold white{~Familie}}}<<tiddler MasterTemplate##ListBox with: familie Familie>>|<<wikify [[%0]] {{store.getValue(tiddler.title,"familie")||" Ingen familie er valgt endnu"}}>>|
|background-color:green;{{dp100 bold white{~Orden}}}<<tiddler MasterTemplate##ListBox with: orden Orden>>|<<wikify [[%0]] {{store.getValue(tiddler.title,"orden")||" Ingen orden er valgt endnu"}}>>|
|background-color:green;{{dp100 bold white{~Klasse}}}<<tiddler MasterTemplate##ListBox with: klasse Klasse>>|<<wikify [[%0]] {{store.getValue(tiddler.title,"klasse")||" Ingen klasse er valgt endnu"}}>>|
|background-color:green;{{dp100 bold white{~Division}}}<<tiddler MasterTemplate##ListBox with: division Division>>|<<wikify [[%0]] {{store.getValue(tiddler.title,"division")||" Ingen division er valgt endnu"}}>>|

!Tabel4
|widetable|k
|background-color:green; {{bold white{Højde}}} {{center toolbar{<<tiddler MasterTemplate##ListBox3 with:hoejde>>}}} |background-color:green; {{bold white{Bredde}}} {{center toolbar{<<tiddler MasterTemplate##ListBox3 with:bredde>>}}} |background-color:green; {{bold white{~Bladtype}}} {{center{<<tiddler MasterTemplate##ListBox with: bladtype Bladtype>>}}} |background-color:green; {{bold white{~Bladstilling}}} {{center{<<tiddler MasterTemplate##ListBox with: bladstilling Bladstilling>>}}} |
| <<wikify [[%0]] {{store.getValue(tiddler.title,"hoejdelaengde")||"angiv højde"}}>>  <<wikify [[%0]] {{store.getValue(tiddler.title,"hoejdeenhed")||"cm"}}>> | <<wikify [[%0]] {{store.getValue(tiddler.title,"breddelaengde")||"angiv bredde"}}>>  <<wikify [[%0]] {{store.getValue(tiddler.title,"breddeenhed")||"cm"}}>> | <<wikify [[%0]] {{store.getValue(tiddler.title,"bladtype")||"vælg en bladtype"}}>> | <<wikify [[%0]] {{store.getValue(tiddler.title,"bladstilling")||"vælg en bladstilling"}}>> |

!Tabel5
|widetable|k
|background-color:green; {{bold white{Anvendelse}}} {{center toolbar{<<editSection "##Anvendelse">>}}} |background-color:green; {{bold white{Pleje}}} {{center toolbar{<<editSection "##Pleje">>}}} |background-color:green; {{bold white{~Jordbund}}} {{center{<<tiddler MasterTemplate##ListBox4 with: jordbund Jordbund>>}}} |background-color:green; {{bold white{~Lys}}} {{center{<<tiddler MasterTemplate##ListBox4 with: lys Lys>>}}} |
|<<wikify [[%0]] {{store.getTiddlerText("$1##Anvendelse","Skriv noget om anvendelse")}}>>|<<wikify [[%0]]{{store.getTiddlerText("$1##Pleje","Skriv noget om pleje")}}>>|<<wikify [[%0]] {{store.getValue(tiddler.title,"jordbund")||"vælg jordbund"}}>>|<<wikify [[%0]] {{store.getValue(tiddler.title,"lys")||"vælg lys"}}>>|

!Tabel6
|widetable|k
|background-color:green; {{bold white{Info}}} {{floatright toolbar{<<editSection "##Info">>}}} |h
|<<wikify [[%0]] {{store.getTiddlerText("$1##Info","Skriv noget information")}}>>|

/%
!ListBox
<<tiddler {{if (readOnly) place.style.display='none';'';}}>><html><span macro='select $1 allowBlank allowOther allowEdit "prompt:vælg $1..." "rows:1" "width:80%" "+$2"'></span></html>

!ListBox2
<<tiddler MasterTemplate##ListBox2b with: $1 {{store.getValue(tiddler.title,"billede$1")||"$2-$1.jpg"}}>>

!ListBox2b
<<tiddler {{if (readOnly) place.style.display='none';'';}}>><html><span macro='select billede$1 allowOther allowBlank allowEdit "prompt:vælg et alternativt billede-$1" "rows:1" "width:80%" "$2" "+Billeder##Liste"'></span></html>

!ListBox3
<<tiddler {{if (readOnly) place.style.display='none';'';}}>><html><span macro='select "$1laengde" "rows:1" allowedit allowblank allowother "prompt:angiv noget" "+Længder"'></span></html><html><span macro='select "$1enhed" "rows:1" allowedit allowblank allowother "prompt:vælg måleenhed""+Enheder"'></span></html><html>

!ListBox4
<<tiddler {{if (readOnly) place.style.display='none';'';}}>><html><span macro='select $1 allowOther allowEdit allowMultiple allowBlank "rows:2" "width:80%" "+$2"'></span></html>

!Billede
<<tiddler MasterTemplate##BilledeVis with: {{tiddler.title}}>>

!Billeder
<<tiddler "MasterTemplate##BillederVis" with:{{tiddler.title}}>>

!Billeder2
<<tiddler "MasterTemplate##BillederVis2" with:{{tiddler.title}}>>

!BillederVis
|smallform dp100|k
| <<tiddler MasterTemplate##Fotos with: [[$1]]>> |c
| <<tiddler MasterTemplate##Thumb with:{{store.getTiddlerText("ImagePathList","/Billeder")}}{{store.getValue(tiddler.title,"billede1")||"$1.jpg"}}>>|width:9%; <<tiddler MasterTemplate##Thumb with:{{store.getTiddlerText("ImagePathList","/Billeder")}}{{store.getValue(tiddler.title,"billede2")||"$1.jpg"}}>> |width:9%; <<tiddler MasterTemplate##Thumb with:{{store.getTiddlerText("ImagePathList","/Billeder")}}{{store.getValue(tiddler.title,"billede3")||"$1.jpg"}}>> |<<tiddler MasterTemplate##Thumb with:{{store.getTiddlerText("ImagePathList","/Billeder")}}{{store.getValue(tiddler.title,"billede4")||"$1.jpg"}}>> |
| <<tiddler MasterTemplate##ListBox2 with: 1 {{tiddler.title}}>>| <<tiddler MasterTemplate##ListBox2 with: 2 {{tiddler.title}}>> | <<tiddler MasterTemplate##ListBox2 with: 3 {{tiddler.title}}>> |<<tiddler MasterTemplate##ListBox2 with: 4 {{tiddler.title}}>> |

!Thumb
<<tiddler ThumbThing with:"$1$2" 70px auto 250%>>

!Thumb2
<<tiddler ThumbThing with:"$1$2"450px 270px 250%>>

!BillederVis2
|smallform dp100|k
| <<tiddler MasterTemplate##Fotos2 with: [[$1]]>> |c
| <<tiddler MasterTemplate##Thumb with:{{store.getTiddlerText("ImagePathList","/Billeder")}}{{store.getValue(tiddler.title,"billede1")||"$1.jpg"}}>>|width:9%; <<tiddler MasterTemplate##Thumb with:{{store.getTiddlerText("ImagePathList","/Billeder")}}{{store.getValue(tiddler.title,"billede2")||"$1.jpg"}}>> |width:9%; <<tiddler MasterTemplate##Thumb with:{{store.getTiddlerText("ImagePathList","/Billeder")}}{{store.getValue(tiddler.title,"billede3")||"$1.jpg"}}>> |<<tiddler MasterTemplate##Thumb with:{{store.getTiddlerText("ImagePathList","/Billeder")}}{{store.getValue(tiddler.title,"billede4")||"$1.jpg"}}>> |
| <<tiddler MasterTemplate##ListBox2 with: 1 {{tiddler.title}}>>| <<tiddler MasterTemplate##ListBox2 with: 2 {{tiddler.title}}>> | <<tiddler MasterTemplate##ListBox2 with: 3 {{tiddler.title}}>> |<<tiddler MasterTemplate##ListBox2 with: 4 {{tiddler.title}}>> |

!BilledeVis
{{center{<<tiddler MasterTemplate##Thumb2 with:{{store.getTiddlerText("ImagePathList","/Billeder")}}{{store.getValue(tiddler.title,"billede")||"$1.jpg"}}>>}}}
{{center{<<tiddler {{if (readOnly) place.style.display='none';'';}}>><html><span macro='select billede allowOther allowBlank "prompt:vælg et alternativt billede" "rows:1" "width:80%" "$1.jpg" "+Billeder##Liste"'></span></html>}}}

!Fotos
<<tiddler MasterTemplate##FotoShow with:{{tiddler.title}}>>

!Fotos2
<<tiddler MasterTemplate##FotoShow2 with: {{store.getValue(tiddler.title,"billede1")||"$1.jpg"}}{{store.getValue(tiddler.title,"billede2")||"$1.jpg"}}{{store.getValue(tiddler.title,"billede3")||"$1.jpg"}}{{store.getValue(tiddler.title,"billede4")||"$1.jpg"}}>>

!FotoShow
<<QOTD [[MasterTemplate##BilledListe]] norandom noclick inline 2000>>{{floatright toolbar{<<editSection "##BilledListe" "redigér billedliste">>}}}

!BilledListeTemplate
{{center{<<tiddler ThumbThing with:"$2$1" 450px 270px 250%>>}}}
!BLT
<<tiddler MasterTemplate##BilledListeTemplate with:{{store.getValue(tiddler.title,"$1")||"$2.jpg"}}{{store.getTiddlerText("ImagePathList","")}}>>
!BilledListe
<<tiddler MasterTemplate##BLT with:[[billede]]{{tiddler.title}}>>
----
<<tiddler MasterTemplate##BLT with:[[billede1]]{{tiddler.title}}>>
----
<<tiddler MasterTemplate##BLT with:[[billede2]]{{tiddler.title}}>>
----
<<tiddler MasterTemplate##BLT with:[[billede3]]{{tiddler.title}}>>
----
<<tiddler MasterTemplate##BLT with:[[billede4]]{{tiddler.title}}>>
----
!FotoShow2
<<photoGallery sequence:"!" height:270 width:450 time:2000 labels:SubTitles numbers start:2000
Billeder/$1
Billeder/$2
Billeder/$3
Billeder/$4
>>
!Cykel
<<tiddler CycleTags with: TagCyklus [[$1]]>>
!TagCyklus
Billeder###Billeder###Vis flere billeder######-
Slide###Slide###Vis slideshow######-
!end
%/
/***
|Name|MatchTagsPlugin|
|Source|http://www.TiddlyTools.com/#MatchTagsPlugin|
|Documentation|http://www.TiddlyTools.com/#MatchTagsPluginInfo|
|Version|2.0.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|'tag matching' with full boolean expressions (AND, OR, NOT, and nested parentheses)|
!!!!!Documentation
> see [[MatchTagsPluginInfo]]
!!!!!Revisions
<<<
2011.10.28 2.0.6 added .matchTags CSS class to popups to enable custom styling via StyleSheet
2011.01.23 2.0.5 fix core tweak for TW262+: adjust code in config.filters['tag'] instead of filterTiddlers()
2010.08.11 2.0.4 in getMatchingTiddlers(), fixed sorting for descending order (e.g, "-created")
| please see [[MatchTagsPluginInfo]] for additional revision details |
2008.02.28 1.0.0 initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.MatchTagsPlugin= {major: 2, minor: 0, revision: 6, date: new Date(2011,10,28)};

// store.getMatchingTiddlers() processes boolean expressions for tag matching
//    sortfield (optional) sets sort order for tiddlers - default=title
//    tiddlers (optional) use alternative set of tiddlers (instead of current store)
TiddlyWiki.prototype.getMatchingTiddlers = function(tagexpr,sortfield,tiddlers) {

	var debug=config.options.chkDebug; // abbreviation
	var cmm=config.macros.matchTags; // abbreviation
	var r=[]; // results are an array of tiddlers
	var tids=tiddlers||store.getTiddlers();
	if (tids && sortfield) tids=store.sortTiddlers(tids,sortfield);
	if (debug) displayMessage(cmm.msg1.format([tids.length]));

	// try simple lookup to quickly find single tags or tags that
	// contain boolean operators as literals, e.g. "foo and bar"
	for (var t=0; t<tids.length; t++)
		if (tids[t].isTagged(tagexpr)) r.pushUnique(tids[t]);
	if (r.length) {
		if (debug) displayMessage(cmm.msg4.format([r.length,tagexpr]));
		return r;
	}
	
	// convert expression into javascript code with regexp tests,
	// so that "tag1 AND ( tag2 OR NOT tag3 )" becomes
	// "/\~tag1\~/.test(...) && ( /\~tag2\~/.test(...) || ! /\~tag3\~/.test(...) )"

	// normalize whitespace, tokenize operators, delimit with "~"
	var c=tagexpr.trim(); // remove leading/trailing spaces
	c = c.replace(/\s+/ig," "); // reduce multiple spaces to single spaces
	c = c.replace(/\(\s?/ig,"~(~"); // open parens
	c = c.replace(/\s?\)/ig,"~)~"); // close parens
	c = c.replace(/(\s|~)?&&(\s|~)?/ig,"~&&~"); // &&
	c = c.replace(/(\s|~)AND(\s|~)/ig,"~&&~"); // AND
	c = c.replace(/(\s|~)?\|\|(\s|~)?/ig,"~||~"); // ||
	c = c.replace(/(\s|~)OR(\s|~)/ig,"~||~"); // OR
	c = c.replace(/(\s|~)?!(\s|~)?/ig,"~!~"); // !
	c = c.replace(/(^|~|\s)NOT(\s|~)/ig,"~!~"); // NOT
	c = c.replace(/(^|~|\s)NOT~\(/ig,"~!~("); // NOT(
	// change tag terms to regexp tests
	var terms=c.split("~"); for (var i=0; i<terms.length; i++) { var t=terms[i];
		if (/(&&)|(\|\|)|[!\(\)]/.test(t) || t=="") continue; // skip operators/parens/spaces
		if (t==config.macros.matchTags.untaggedKeyword)
			terms[i]="tiddlertags=='~~'"; // 'untagged' tiddlers
		else
			terms[i]="/\\~"+t+"\\~/.test(tiddlertags)";
	}
	c=terms.join(" ");
	if (debug) { displayMessage(cmm.msg2.format([tagexpr])); displayMessage(cmm.msg3.format([c])); }

	// scan tiddlers for matches
	for (var t=0; t<tids.length; t++) {
	 	// assemble tags from tiddler into string "~tag1~tag2~tag3~"
		var tiddlertags = "~"+tids[t].tags.join("~")+"~";
		try { if(eval(c)) r.push(tids[t]); } // test tags
		catch(e) { // error in test
			displayMessage(cmm.msg2.format([tagexpr]));
			displayMessage(cmm.msg3.format([c]));
			displayMessage(e.toString());
			break; // skip remaining tiddlers
		}
	}
	if (debug) displayMessage(cmm.msg4.format([r.length,tagexpr]));
	return r;
}
//}}}
//{{{
config.macros.matchTags = {
	msg1: "scanning %0 input tiddlers",
	msg2: "looking for '%0'",
	msg3: "using expression: '%0'",
	msg4: "found %0 tiddlers matching '%1'",
	noMatch: "no matching tiddlers",
	untaggedKeyword: "-",
	untaggedLabel: "no tags",
	untaggedPrompt: "show tiddlers with no tags",
	defTiddler: "MatchingTiddlers",
	defTags: "",
	defFormat: "[[%0]]",
	defSeparator: "\n",
	reportHeading: "Found %0 tiddlers tagged with: '{{{%1}}}'\n----\n",
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var mode=params[0]?params[0].toLowerCase():'';
		if (mode=="inline")
			params.shift();
		if (mode=="report" || mode=="panel") {
			params.shift();
			var target=params.shift()||this.defTiddler;
		}
		if (mode=="popup") {
			params.shift();
			if (params[0]&&params[0].substr(0,6)=="label:") var label=params.shift().substr(6);
			if (params[0]&&params[0].substr(0,7)=="prompt:") var prompt=params.shift().substr(7);
		} else {
			var fmt=(params.shift()||this.defFormat).unescapeLineBreaks();
			var sep=(params.shift()||this.defSeparator).unescapeLineBreaks();
		}
		var sortBy="+title";
		if (params[0]&&params[0].substr(0,5)=="sort:") sortBy=params.shift().substr(5);
		var expr = params.join(" ");
		if (mode!="panel" && (!expr||!expr.trim().length)) return;
		if (expr==this.untaggedKeyword)
			{ var label=this.untaggedLabel; var prompt=this.untaggedPrompt };
		switch (mode) {
			case "popup": this.createPopup(place,label,expr,prompt,sortBy); break;
			case "panel": this.createPanel(place,expr,fmt,sep,sortBy,target); break;
			case "report": this.createReport(target,this.defTags,expr,fmt,sep,sortBy); break;
			case "inline": default: this.createInline(place,expr,fmt,sep,sortBy); break;
		}
	},
	formatList: function(tids,fmt,sep) {
		var out=[];
		for (var i=0; i<tids.length; i++) { var t=tids[i];
			var title=t.title;
			var who=t.modifier;
			var when=t.modified.toLocaleString();
			var text=t.text;
			var first=t.text.split("\n")[0];
			var desc=store.getTiddlerSlice(t.title,"description");
			desc=desc||store.getTiddlerSlice(t.title,"Description");
			desc=desc||store.getTiddlerText(t.title+"##description");
			desc=desc||store.getTiddlerText(t.title+"##Description");
			var tags=t.tags.length?'[['+t.tags.join(']] [[')+']]':'';
			out.push(fmt.format([title,who,when,text,first,desc,tags]));
		}
		return out.join(sep);
	},
	createInline: function(place,expr,fmt,sep,sortBy) {
		wikify(this.formatList(store.sortTiddlers(store.getMatchingTiddlers(expr),sortBy),fmt,sep),place);
	},
	createPopup: function(place,label,expr,prompt,sortBy) {
		var btn=createTiddlyButton(place,
			(label||expr).format([expr]),
			(prompt||config.views.wikified.tag.tooltip).format([expr]),
			function(ev){ return config.macros.matchTags.showPopup(this,ev||window.event); });
		btn.setAttribute("sortBy",sortBy);
		btn.setAttribute("expr",expr);
	},
	showPopup: function(here,ev) {
		var p=Popup.create(here,null,"matchTags popup"); if (!p) return false;
		var tids=store.getMatchingTiddlers(here.getAttribute("expr"));
		store.sortTiddlers(tids,here.getAttribute("sortBy"));
		var list=[]; for (var t=0; t<tids.length; t++) list.push(tids[t].title);
		if (!list.length) createTiddlyText(p,this.noMatch);
		else {
			var b=createTiddlyButton(createTiddlyElement(p,"li"),
				config.views.wikified.tag.openAllText,
				config.views.wikified.tag.openAllTooltip,
				function() {
					var list=this.getAttribute("list").readBracketedList();
					story.displayTiddlers(null,tids);
				});
			b.setAttribute("list","[["+list.join("]] [[")+"]]");
			createTiddlyElement(p,"hr");
		}
		var out=this.formatList(tids," &nbsp;[[%0]]&nbsp; ","\n"); wikify(out,p);
		Popup.show();
		ev.cancelBubble=true;
		if(ev.stopPropagation) ev.stopPropagation();
		return false;
	},
	createReport: function(target,tags,expr,fmt,sep,sortBy) {
		var tids=store.sortTiddlers(store.getMatchingTiddlers(expr),sortBy);
		if (!tids.length) { displayMessage('no matches for: '+expr); return false; }
		var msg=config.messages.overwriteWarning.format([target]);
		if (store.tiddlerExists(target) && !confirm(msg)) return false;
		var out=this.reportHeading.format([tids.length,expr])
		out+=this.formatList(tids,fmt,sep);
		store.saveTiddler(target,target,out,config.options.txtUserName,new Date(),tags,{});
		story.closeTiddler(target); story.displayTiddler(null,target);
	},
	createPanel: function(place,expr,fmt,sep,sortBy,tid) {
		var s=createTiddlyElement(place,"span"); s.innerHTML=store.getTiddlerText("MatchTagsPlugin##html");
		var f=s.getElementsByTagName("form")[0];
		f.expr.value=expr; f.fmt.value=fmt; f.sep.value=sep.escapeLineBreaks();
		f.tid.value=tid; f.tags.value=this.defTags;
	}
};
//}}}
/***
//{{{
!html
<form style='display:inline;white-space:nowrap'>
<input type='text'    name='expr' style='width:50%' title='tag expression'><!--
--><input type='text'    name='fmt'  style='width:10%' title='list item format'><!--
--><input type='text'    name='sep'  style='width:5%'  title='list item separator'><!--
--><input type='text'    name='tid'  style='width:12%' title='target tiddler title'><!--
--><input type='text'    name='tags' style='width:10%' title='target tiddler tags'><!--
--><input type='button'  name='go'   style='width:8%'  value='go' onclick="
	var expr=this.form.expr.value;
	if (!expr.length) { alert('Enter a boolean tag expression'); return false; }
	var fmt=this.form.fmt.value;
	if (!fmt.length) { alert('Enter the list item output format'); return false; }
	var sep=this.form.sep.value.unescapeLineBreaks();
	var tid=this.form.tid.value;
	if (!tid.length) { alert('Enter a target tiddler title'); return false; }
	var tags=this.form.tags.value;
	config.macros.matchTags.createReport(tid,tags,expr,fmt,sep,'title');
	return false;">
</form>
!end
//}}}
***/
//{{{
// SHADOW TIDDLER for displaying default panel input form
config.shadowTiddlers.MatchTags="<<matchTags panel>>";
//}}}
//{{{
// TWEAK core filterTiddlers() or config.filters['tag'] (in TW262+)
// to use getMatchingTiddlers instead getTaggedTiddlers
// for enhanced boolean matching in [tag[...]] syntax
var TW262=config.filters && config.filters['tag']; // detect TW262+
var fname=TW262?"config.filters['tag']":"TiddlyWiki.prototype.filterTiddlers";
var code=eval(fname).toString().replace(/getTaggedTiddlers/g,'getMatchingTiddlers');
eval(fname+'='+code);
//}}}
//{{{
// REDEFINE core handler for enhanced boolean matching in tag:"..." paramifier
// use filterTiddlers() instead of getTaggedTiddlers() to get list of tiddlers.
config.paramifiers.tag = {
	onstart: function(v) {
		var tagged = store.filterTiddlers("[tag["+v+"]]");
		story.displayTiddlers(null,tagged,null,false,null);
	}
};
//}}}
<<forEachTiddler where 'tiddler.tags.contains("$1")'
sortBy 'tiddler.title'
write 
 '(index < 60)? "|<<tiddler [["+tiddler.title+"##spørgsmål]]\>\><<editSection [["+tiddler.title+"##spørgsmål]] [[edit "+tiddler.title+" spørgsmål]] \>\>|<<tiddler "+"[["+tiddler.title+"##svar]]\>\><<editSection [["+tiddler.title+"##svar]] [[edit "+tiddler.title+" svar]] \>\> |\n" : ""'
              begin '"|groupbox stretch justify sortable floatleft mem|k\n| $1 {{span{<<tiddler RefreshTiddler with: genopfrisk\>\><<setIcon arrow_refresh.png\>\>}}} |c\n" 
+"| !Spørgsmål | !Svar |h\n"
+"| <<tiddler MeMo##heading1\>\> | <<tiddler MeMo##heading2\>\> |\n"' 
end 'count+" tiddlere tagget med $1\n"' none '"ingen tiddlere tagget med $1 \n"'>>{{hidden{
!heading1
<html><a href="#" onclick="return Mem.start(this.parentNode.parentNode)">(memorér)</a></html><<setIcon arrow_down.png>>
!heading2
<html><a href="#" onclick="return Mem.start(this.parentNode.parentNode)">(memorér)</a></html><<setIcon arrow_down.png "" "right">>
!end
}}}
<<tiddler MeMo2##toggleReadonly>><<saveChanges>>
@@display:block;height:$4em;overflow:auto;
<<forEachTiddler where 'tiddler.tags.contains("$1")'
sortBy 'tiddler.title'
write 
 '(index < 60)? "|<<tiddler MeMo2##getSlice with:"+tiddler.title+" term\>\><<editSection [["+tiddler.title+"##$2]] [[edit "+tiddler.title+" term]] \>\>|<<tiddler MeMo2##getSlice with:"+tiddler.title+" definition\>\><<editSection [["+tiddler.title+"##$3]] [[edit "+tiddler.title+" definition]] \>\> |\n" : ""'
              begin '"|groupbox stretch justify sortable floatleft mem|k\n| $1 {{span{<<tiddler RefreshTiddler with: genopfrisk\>\><<setIcon arrow_refresh.png\>\>}}} |c\n" 
+"| !$2 | !$3 |h\n"
+"| <<tiddler MeMo2##heading1\>\> | <<tiddler MeMo2##heading2\>\> |\n"' 
end 'count+" tiddlere er tagget med <<tag $1\>\> <<newTiddler label: [[opret]] text:[[/%\n!$2\nterm:\n!$3\ndefinition:\n!end %/]] tag:[[$1]] focus:title\>\>\n"' none '"ingen tiddlere er tagget med $1 <<newTiddler label: [[opret]] text:[[/%\n!$2\nterm:\n!$3\ndefinition:\n!end %/]] tag:[[$1]] focus:title\>\> <<tiddler RefreshTiddler with: genopfrisk\>\>\n"'
>>
@@@@display:block;text-align:right;^^rul ned for mere...^^@@{{hidden{
!heading1
<html><a href="#" onclick="return Mem.start(this.parentNode.parentNode)">(memorér)</a></html><<setIcon arrow_down.png>>
!heading2
<html><a href="#" onclick="return Mem.start(this.parentNode.parentNode)">(memorér)</a></html><<setIcon arrow_down.png "" "right">>
!getSlice
<<tiddler '$1::$2'>>
!toggleReadonly
<html><nowiki><span class='button' onclick="return this.getElementsByTagName('input')[0].click();"
	title="slå redigering til/fra for dette dokument">
<input type='checkbox' style="margin:0;padding:0;" onclick="
	window.readOnly=!this.checked;
	config.macros.option.propagateOption('chkHttpReadOnly','checked',window.readOnly,'input')
	config.macros.option.propagateOption('chkSinglePageMode','checked',window.readOnly,'input')
	window.showBackstage=!window.readOnly;
	if(showBackstage && !backstage.area) backstage.init();
	backstage.button.style.display=showBackstage?'block':'none';
	backstage.hide();
	story.switchTheme(config.options.txtTheme);
	store.notifyAll();
	story.refreshAllTiddlers(true);
	return false;
">edit</span></html><<tiddler {{
	var chk=place.lastChild.getElementsByTagName('input')[0];
	chk.checked=!window.readOnly;
'';}}>>
!end
}}}
/***
!!!<<gradient horiz #fc3 #fff>>&nbsp;MemorizablePlugin^^<<tiddler CloseThisOpen with: ThirdPartyPlugins  '« back'>>|<<toolbar editTiddler>>» ^^>>
|Name|MemorizablePlugin|
|Source|URL: http://memorizable.com|
|Version|1.0.0|
|Author|Craig D. Muth Copyright (c) 2007|
|Description|Creats flashcard like tables for memorizing data|
|For use in TiddlyWiki see|http://tinyurl.com/34fjk6|
***/
//{{{
// License
//
// Note: This is a modified version of the X11 (aka MIT) open source
// license.  It lets you use, modify, distribute and sell, etc.,
// requiring only that you leave the "Help" and "About Memorizable
// Tables" links (under "Options") in tact.  If you desire to use the
// software without these links please contact the author.
//
// COPYRIGHT AND PERMISSION NOTICE for Memorizable Tables
//
// Copyright (c) 2007, Craig D. Muth, memorizable.com
// Author's Website URL: http://memorizable.com
//
// All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use, copy,
// modify, merge, publish, distribute, and/or sell copies of the
// Software, and to permit persons to whom the Software is furnished
// to do so, subject to the following conditions:
//
// The above copyright notice, Author's Website URL, and this
// permission notice shall be included in all copies or substantial
// portions of the Software, and any hyperlinks in the user interface
// in the Software which refer to any page on the Author's Website may
// not be removed, disabled, altered, obscured, or repositioned.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE
// COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR
// ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY
// DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
// WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
// ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
// OF THIS SOFTWARE.
//
// Except as contained in this notice, the name of a copyright holder
// shall not be used in advertising or otherwise to promote the sale,
// use or other dealings in this Software without prior written
// authorization of the copyright holder.
//

Mem = new Object();

Mem.blankRowCount = 9;
Mem.mGray = "#d8d4c0";
Mem.mGreen = "#fff";
Mem.mClicked = "#b8b4a0";

Mem.myCellIndex = function(th) {
 var cells = th.parentNode.cells;
 var inn = 0;
 for(var x=0; x<cells.length; x++) {
  if(cells.item(x) == th)
   inn = x;
 }
 return inn;
}
Mem.start = function( item ) {
 var columnClicked;

 item.parentNode.parentNode.parentNode.parentNode.isMem = true;
 var t = this.setT( item );

 columnClicked = Mem.myCellIndex(item.parentNode);

 // If already in progress
 if( t.s && t.s.tbodyBackup ) {
  // Kill blinking processes
  this.tChile('directionsDiv').cycles = 1;
  Mem.restore();
 }

 // Create new if necessary
 if( typeof( t.s ) != 'object')
  t.s = new Array();

 t.s.column = columnClicked;

 // Create backup
 var bak = t.tBodies[0].cloneNode( true );
 t.s.tbodyBackup = bak;

 // Init correct count
 t.s.correctCount = 0;

 t.s.pending = new Array();

 var initialLength = t.tBodies[0].rows.length;
 for(var x=1; x<initialLength; x++) {
  // Build up list of indexes
  t.s.pending[t.s.pending.length] = t.tBodies[0].rows[1];
  // Remove from table
  t.tBodies[0].removeChild( t.tBodies[0].rows[1] );
 }

 t.s.totalQuestions = t.s.pending.length;

 var tds = t.s.pending[0].getElementsByTagName("TD");
 var numberOfColumns=tds.length;

 // Add blank rows to end
 for(var x=1; x<t.s.pending.length; x++) {
  if( x <= this.blankRowCount ) {
   var tr = document.createElement("TR");

   // For each column
   for(var y=0; y<numberOfColumns; y++) {
     var td = document.createElement("TD");  td.innerHTML = "&nbsp;";
     tr.appendChild( td );
   }
   t.tBodies[0].appendChild( tr );
  }
 }

 // If hidden blank rows
 if( t.s.pending.length > this.blankRowCount + 1 ) {

   // Add ... row
   var tr = document.createElement("TR");
   var td = document.createElement("TD");
   //   td.innerHTML = ". &nbsp; . &nbsp; .";
   td.innerHTML = "<div style='text-align: center; font-weight: bold; font-size: 6px; font-family: arial black; margin-top: 2px;'>. &nbsp; &nbsp; . &nbsp; &nbsp; .</div>";
   var colspan = document.createAttribute("COLSPAN");
   colspan.nodeValue=numberOfColumns;
   td.setAttributeNode(colspan);
   tr.appendChild( td );
   //numberOfColumns
   t.tBodies[0].appendChild( tr );

 }

 this.shuffle( t.s.pending ); t.s.pending.reverse(); this.shuffle( t.s.pending );

 // Add buttons, etc. to end of table.
 var tr = document.createElement("TR");
 var statusTd = document.createElement("TD");
 statusTd.id = 'statusTd';
 tr.appendChild( statusTd );
 var colspan = document.createAttribute("COLSPAN");
 colspan.nodeValue=numberOfColumns;
 statusTd.setAttributeNode(colspan);
 t.tBodies[0].appendChild( tr );


 // Create placeholders for buttons, etc.
 statusTd.innerHTML = "\
  <div id=mode style='text-align:right; height:19px; font-size:10px; color:#666;'>" + Mem.getModeDiv(0) + "</div>\
  <div id=directionsDiv style='margin-bottom:4px; text-align: left; font-size:10px; font-family:verdana,arial,sans-serif; color:#666;'></div>\
  <div id=buttons style='float:left; height:21px;'></div>\
  <div id=options style='padding: 5px 0px 0px 8px; width:55px; margin-top:0px; float:right;'><a href='#' onclick='return Mem.showOptions(this);' id=optionsLink>Muligheder</a></div>\
  <div id=progress style='margin-top:6px; float:right; font-size:8px; font-family:impact; color:#aaa; text-align:right; vertical-align:middle; '></div>\
" + this.getOptions();

 // Enable options if enabled before
 if( t.s.optionsOn )
  this.showOptions( statusTd );

 this.presentQuestion();

 this.glow(100);
 t.s.mode = "flashcard";

 return false;
}

Mem.addEvent = function( 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 );
}

Mem.getQuestionCell = function() {
 return Mem.t.s.pending[0].cells[ Mem.t.s.column ];
}

Mem.createProgressBar = function() {
 var progress = "";
 var progressDups = "";
 var foundAlready = new Array();
 for(var x=0; x<Mem.t.s.pending.length ;x++) {

  // If found already
  if( foundAlready[ Mem.t.s.pending[x].innerHTML ] )
   progressDups += "|";
  else
   progress += "|";

  // Remember we found this one
  foundAlready[ Mem.t.s.pending[x].innerHTML ] = true;
 }
 return progress + "<span style='color:#f00;'>" + progressDups + "</span>";
}


Mem.presentQuestion = function() {

 this.tChile('directionsDiv').innerHTML = 
  "<div style='text-align:center;'>Gæt svaret <b style='color:#4d0'>i dit hoved</b>.<span style='font-size:7px;'></span> Klik derefter på <b>vis svar</b>, eller tast <b>1</b>.</div>";
 this.tChile('buttons').innerHTML = "<button id=showAnswer style='margin-right:111px; width:11em; margin-bottom:1px; font-family: verdana,arial,sans-serif; font-size:9px;' onclick='Mem.showAnswer( this )' >vis svar &nbsp;<span style='color:#aaa;text-decoration:underline;'>1</span></button>";

 var iveGuessed = this.tChile('showAnswer');
 Mem.addEvent( iveGuessed, 'mouseover', function(){ if(typeof( iveGuessedOnMouseOver ) =='function') iveGuessedOnMouseOver() } );
 Mem.addEvent( iveGuessed, 'mouseout', function(){ if(typeof( iveGuessedOnMouseOver ) =='function') iveGuessedOnMouseOut() } );

 // Add pending row
 Mem.t.tBodies[0].insertBefore( Mem.t.s.pending[0], Mem.t.tBodies[0].rows[ Mem.t.s.correctCount + 1 ] );

 // Insert "guess the answer", remembering old value
 var questionCell = this.getQuestionCell();
 Mem.t.s.questionCellOld = questionCell.innerHTML;
 questionCell.innerHTML = "<span style='text-decoration:none; color:#4d0; font-weight:bold; cursor:pointer;' title=\"Gæt svaret i dit hoved.  Klik derefter på 'vis svar' button.\">hvad&nbsp;skal der stå&nbsp;her?</span>";

 // Help alert
 Mem.addEvent( questionCell.getElementsByTagName("SPAN")[0], 'mousedown', function(){ alert('Gæt svaret i dit hoved.  Klik derefter på \'vis svar\' knappen, nederst i tabellen.') } );

 this.tChile('progress').innerHTML = this.createProgressBar();
}

Mem.showAnswer = function( button, noScroll ) {
 var t = this.setT( button );

 // Exit if other mode
 if( t.s.mode != "flashcard" )
  return;

 // Exit if no answer to show
 if( t.s.questionCellOld == null )
  return;

 var questionCell = this.getQuestionCell();
 questionCell.innerHTML = t.s.questionCellOld;
 t.s.questionCellOld = null;

 // Default
 var iWasRightText = "Jeg havde ret";

 // Count how many of this remaining
 var timesFound = 0;
 for(var x=0; x<t.s.pending.length ;x++)
  if( t.s.pending[x].innerHTML == t.s.pending[0].innerHTML )
   timesFound++;

 // If not the last time
 if( timesFound > 1 )
  iWasRightText = "vis senere";

 this.tChile('directionsDiv').innerHTML = 
  "<div style='text-align:center;'>Klik på den knap, der svarer til dit gæt, eller tast <b>1</b> eller <b>2</b>.</div>";
 this.tChile('buttons').innerHTML = "\
<button id=iWasWrong style='width:11em; padding:0px; margin: 0px 12px 1px 0px; font-family: verdana,arial,sans-serif; font-size:9px;' onclick='Mem.answer( false, this )'>Jeg tog fejl &nbsp;<span style='color:#aaa;text-decoration:underline;'>1</span></button>\
<button id=iWasRight class='iWasRightButton' style='width:10em; margin-bottom:1px; font-family: verdana,arial,sans-serif; font-size:9px;' onclick='Mem.answer( true, this )' >" + iWasRightText + " &nbsp;<span style='color:#aaa;text-decoration:underline;'>2</span></button>\
";
 this.tChile('progress').innerHTML = this.createProgressBar();

 var iWasRight = this.tChile('iWasRight');
 var iWasWrong = this.tChile('iWasWrong');
 Mem.addEvent( iWasRight, 'mouseover', function(){ if(typeof( iWasRightOnMouseOver ) =='function') iWasRightOnMouseOver() } );
 Mem.addEvent( iWasRight, 'mouseout', function(){ if(typeof( iWasRightOnMouseOut ) =='function') iWasRightOnMouseOut() } );
 Mem.addEvent( iWasWrong, 'mouseover', function(){ if(typeof( iWasWrongOnMouseOver ) =='function') iWasWrongOnMouseOver() } );
 Mem.addEvent( iWasWrong, 'mouseout', function(){ if(typeof( iWasWrongOnMouseOut ) =='function') iWasWrongOnMouseOut() } );

 if(! noScroll)
  this.scrollDownIfNecessary( this.tChile('statusTd') );

}

Mem.answer = function( correct, button, noScroll ) {

 var t = this.setT( button );

 // If answer not shown
 if( t.s.questionCellOld != null )
  return;

 // If other mode
 if( t.s.mode != "flashcard" )
  return;

 var dup = this.currentIsDuplicate();
 var last = t.s.pending[0];

 // Remove from front of pending
 t.s.pending.splice( 0, 1 );

 var allRows = t.tBodies[0].rows;

 if( correct ) {
  // If elsewhere in pending, remove from table
  if( dup )
   t.tBodies[0].removeChild( last );

  // If pending is empty, they're finished
  if( t.s.pending.length == 0 ) {
   this.finished();
   return;
  }

  // If not dup, increase count of correct
  if( ! dup ) {
   t.s.correctCount++;

   // If enough rows in table, remove last one (blank or ...)
   if( t.s.correctCount + this.blankRowCount >= t.s.totalQuestions - 1 )
    t.tBodies[0].removeChild( allRows[allRows.length - 2] );
  }
 }
 // If they missed it
 else {

  // Remove from table
  t.tBodies[0].removeChild( last );
  t.s.pending.push( last );
  t.s.pending.splice( 2, 0, last );
 }

 this.presentQuestion();

 if(this.tChile('directionsDiv').cycles >= 3)
  this.tChile('directionsDiv').cycles = 2;

 if(! noScroll)
  this.scrollDownIfNecessary( this.tChile('statusTd') );
}

Mem.currentIsDuplicate = function() {
 for(var x=1; x<Mem.t.s.pending.length ;x++) {
  if( Mem.t.s.pending[x] == Mem.t.s.pending[0] )
   return true;
 }
 return false;
}

Mem.message = function( s ) {
 var d = document.createElement('div');
 var t = document.createTextNode( s );
 d.appendChild(t);
 document.body.appendChild(d);
}

Mem.shuffle = function( list ) {
  var holder, swaps, i, j;
  for (swaps=0; swaps<(list.length*2); swaps++) {
    i = Math.floor(Math.random()*list.length);
    j = Math.floor(Math.random()*list.length);
    holder = list[i];
    list[i] = list[j];
    list[j]=holder;
  }
  return list;
}

Mem.dump = function( o ) {
 var s = "";
 for(m in o)
  s += m + ", ";
 return s;
}

Mem.keyWasPressed = function( keyp ) {

 var pressed;
 if( navigator.appName == "Netscape" ) pressed = keyp.which;
 if( navigator.appVersion.indexOf("MSIE") != -1 ) pressed = event.keyCode;

 // In case no table in progress
 try {
  // Show answer
  if ( ( pressed == "1".charCodeAt(0) ) || ( pressed == 97 ) ) {
   // If answer not shown yet
   if( Mem.t.s.questionCellOld != null )
    Mem.showAnswer();
   else
    Mem.answer( false );
  }

  // TODO make sure there are no modifiers held down (because of ctrl-r)
  // I was right
  if ( ( pressed == "2".charCodeAt(0) ) || ( pressed == 98 ) )
   Mem.answer( true );

 } catch(e) {}
}

Mem.memorizeAllTables = function( item, onlyDoTheseTables ) {

 // If we are a "hide" link
 if( item.innerHTML == "luk" ) {
  item.innerHTML = item.innerHTML_old;

  var removeThis = item.parentNode.getElementsByTagName("DIV")[0];
  // Close and exit
  item.parentNode.removeChild( removeThis );
  return false;
 }

 // Change link to 'close'
 item.innerHTML_old = item.innerHTML;
 item.innerHTML = "luk";

 // Create table in new div
 var d = document.createElement("div");
 d.innerHTML = "\
 <table class=\"memorizableAll\"><tr> \
   <th>Venstre side <a style=\"font-size: 9px;\" href=\"#\" onclick=\"return Mem.start(this)\">(memorér)</a></th> \
   <th>Højre side <a style=\"font-size: 9px;\" href=\"#\" onclick=\"return Mem.start(this)\">(memorér)</a></th>\
 </tr></table>";

 // Get ref to it
 var tb = d.getElementsByTagName("TBODY")[0];

 var memTableCount = 0;

 // Convert list to map
 var onlyMap = [];
 if( onlyDoTheseTables )
  for(var x=0; x<onlyDoTheseTables.length; x++)
   onlyMap[ onlyDoTheseTables[x].toString() ] = true;

 // For each table
 var ts = document.getElementsByTagName("table");
 for(var x=0; x<ts.length; x++) {

  // In case null pointer when seeking anchor
  try {

   // If mem table
   if( ts[x].id == "memTable" ) {
    memTableCount++;

    if( onlyDoTheseTables && ! onlyMap[memTableCount.toString()] )
     continue;

    var rs = ts[x].rows;

    // If in progress, use backup
    if( ts[x].s && ts[x].s.tbodyBackup )
     rs = ts[x].s.tbodyBackup.rows;

    // Add each row to the table    
    for(var z=1; z<rs.length; z++)
     tb.appendChild( rs[z].cloneNode( true ) );
   }
  } catch(e) {}
 }

 // Append div
 item.parentNode.appendChild( d )

 // Start a session, using the 2nd "(memorér)" link
 Mem.start( d.getElementsByTagName("A")[1] );

 return false;
}

// Returns Y coord of top of element.
Mem.findY = function( o ) {
 var curtop = 0;
 if (o.offsetParent) {
  curtop = o.offsetTop
  while (o = o.offsetParent)
   curtop += o.offsetTop
 }
 return curtop;
}

// Get distance from page top to window bottom
Mem.getWindowBottomY = function() {
 // Get scrollY
 var scrollY = document.body.scrollTop;
 if( window.pageYOffset )
  scrollY = window.pageYOffset

 var winY = document.body.clientHeight;
 if( window.innerHeight )
  winY = window.innerHeight;

 return scrollY + winY;
}

Mem.scrollDownIfNecessary = function( obj ) {
 // If last row close to getting off-screen
 if( this.findY( obj ) + 55 > this.getWindowBottomY() ) {
  // Scroll down smoothly
  var myInterval = window.setInterval(function () { window.scrollBy( 0, 2 ); }, 10);
  window.setTimeout(function () { clearInterval(myInterval); },650);
 }
}

Mem.startFirst = function(level) {
 var as = byid('memTable').getElementsByTagName('a');
 var a = as.length == 1 ? as[0] : as[1];
 Mem.start( a );

 // If 2, start another record
 if(level == 2) {
  Mem.showAnswer(this.tChile('showAnswer'), true);
  Mem.answer(true, this.tChile('iWasRightButton'), true);
  this.tChile('directionsDiv').cycles = 100;
 }
}

Mem.parents = function(node, levels) {
 for(x=1;x<=levels;x++) node = node.parentNode;
 return node; 
}

Mem.showOptions = function(node) {

 this.setT(node);
 this.tChile('optionsLink').style.display="none";
 this.tChile('optionsBox').style.display="block";

 Mem.t.s.optionsOn = true;

 // Don't let clicking on options change default table
 this.restoreTBody();

 return false;
}

Mem.hideOptions = function(node) {

 this.setT(node);
 this.tChile('optionsLink').style.display="block";
 this.tChile('optionsBox').style.display="none";

 Mem.t.s.optionsOn = false;

 // Don't let clicking on options change default table
 this.restoreTBody();

 return false;
}

Mem.close = function( node ) {

 var t = this.setT( node );

 // Don't re-open options
 Mem.t.s.optionsOn = false;

 Mem.restore();

 // Invoke hook if reset
 if(node != null) {
  // In case method not there
  try {
   mem_close( t );
  } catch(e) {}
 }

 return false;
}

Mem.finished = function() {

 var directions = this.tChile('directionsDiv');
 var buttons = this.tChile('buttons');
 // Default values
 directions.innerHTML = "<div style='text-align:center;'>Til lykke, du er færdig.</div>";
 buttons.innerHTML = "";

 // Restore rows
 this.addRowsFromBackup();

 // Call hook
 try {
  mem_finished( [directions, buttons] );
 } catch(e) {}

 Mem.glow(2, "finished");
 return false;
}

Mem.startOver = function( node ) {

 var t = this.setT( node );

 if( t.s.mode == "flashcard" )
  Mem.start( t.getElementsByTagName('a')[t.s.column] );

 else if( t.s.mode == "matching" )
  Mem.startMatching( t );

 return false;
}


Mem.startMatching = function( node ) {
 var t = this.setT( node );

 t.s.match0 = t.s.match1 = null;

 // Change help text
 this.tChile('mode').innerHTML = Mem.getModeDiv(1);
 this.tChile('directionsDiv').innerHTML = 
  "<div style='text-align:center;'><b>NB:</b> denne tabel er blevet <i style='font-weight:bold; color:#f90; cursor: pointer;'><span onclick='Mem.startOver(this);'>blandet</span></i>. Klik på elementer for at identificere svarmuligheder.</div>";
 this.tChile('buttons').innerHTML = "";
 this.tChile('progress').innerHTML = "";

 var rows = t.rows;

 // Add rows from backup
 this.addRowsFromBackup();

 // Format them
 rows = t.rows;
 for(var x=1; x<(rows.length-1); x++) {
  var tds = rows[x].cells;
  // Add click events
  Mem.addEvent( tds[0], 'click', function(){ Mem.matchingClicked( this, 0 ) } );
  Mem.addEvent( tds[1], 'click', function(){ Mem.matchingClicked( this, 1 ) } );
  tds[0].style.cursor = tds[1].style.cursor = "pointer";
  tds[0].style.background = tds[1].style.background = tds[0].style.endColor = tds[1].style.endColor = Mem.mGray;
  // Add indexes
  tds[0].mIndex = tds[1].mIndex = x;
 }

 // Shuffle columns
 for (swaps=0; swaps<(rows.length*4); swaps++) {
  Mem.swapOnce(rows,0);
  Mem.swapOnce(rows,1);
 }

 this.glow(100);

 t.s.mode = "matching";

 return false; 
}

Mem.matchingClicked = function(cell, side) {

 // Exit if already correct
 if(cell.mState == "korrekt")
  return;

 var t = this.setT( cell );

 var rows = t.rows;
 // Update colors of others, and count remaining
 var remaining = 0;
 for(var x=1; x<(rows.length-1); x++) {
  var td = rows[x].cells[side];

  // If gray, clear it
  if((cell != td) && (td.mState == "gæt")) {
   td.mState = null;
   td.style.background = td.endColor= Mem.mGray;
  }

  if(td.mState != "correct")  remaining++;
 }

 // Remember this was clicked
 if(side == 0)  t.s.match0 = cell;
 else  t.s.match1 = cell;

 // If already guessed
 if(cell.mState == "gæt") {
  cell.mState = null;
  cell.style.background = cell.endColor = Mem.mGray;
  // Clear it
  if(side == 0)  t.s.match0 = null;
  else  t.s.match1 = null;

 } else {
  // Make it selected
  cell.mState = "gæt";
  cell.style.background = cell.endColor = Mem.mClicked;
 }

 // Exit if neither are selected
 if(! (t.s.match0 && t.s.match1))
  return;

 // Go through backup table and look for matches
 var found = false;
 var backupRows = t.s.tbodyBackup.getElementsByTagName('tr');

 for(var x=1; x<backupRows.length; x++) {
  var tds = backupRows[x].getElementsByTagName('td');
  if((trim(t.s.match0.innerHTML) == trim(tds[0].innerHTML))
  && (trim(t.s.match1.innerHTML) == trim(tds[1].innerHTML)))
   found = true;
 }

 // If match
 if(found) {
  var directions = this.tChile('directionsDiv');
  if(directions.cycles > 2)
   directions.cycles = 2;

  // Make me dark green
  t.s.match0.mState = t.s.match1.mState = "korrekt";
  t.s.match0.endColor = t.s.match1.endColor = Mem.mGreen;
  t.s.match0.style.cursor = t.s.match1.style.cursor = "";

  // If finished - congrats message, restore rows
  if(remaining == 1) {
   directions.innerHTML = "<div style='text-align:center;'>Til lykke, du er færdig. \
&nbsp; Try <a href='#' onclick='return Mem.flashcardMode(this)'>flashcard mode</a>.</div>";
   Mem.glow(2, "færdig");
   this.addRowsFromBackup();
  } else {
   cell.style.background = Mem.mGray;
   Mem.glow(1, "green", t.s.match0, Mem.mGreen);
   Mem.glow(1, "green", t.s.match1, Mem.mGreen);
  }
  t.s.match0 = t.s.match1 = null;

  return;
 }

 // Must not have been found
 cell.style.background = Mem.mGray;
 Mem.glow(1, "red", cell, Mem.mClicked);

}

Mem.swapOnce = function( rows, index ) {
 var r1 = rows[Math.floor(Math.random() * (rows.length-2)) + 1];
 var r2 = rows[Math.floor(Math.random() * (rows.length-2)) + 1];
 var c1 = r1.cells[index];
 r1.replaceChild(r2.cells[index], c1);
 if(index == 0)
  r2.insertBefore(c1, r2.cells[0]);
 else
  r2.appendChild(c1);
}

Mem.getModeDiv = function( index ) {

 var r = "\
<span style='width:260px; text-align:right; padding: 0px 0px 2px 10px; letter-spacing:2px;\
border-left: solid #ccc 1px; \
border-bottom: solid #ccc 1px;'>\
";

 var modes = [["vendespilstilstand", "return Mem.flashcardMode(this)"], ["matchertilstand", "return Mem.startMatching(this)"]];
 for(var x=0; x<modes.length; x++) {

  if( x > 0 ) r += " | ";

  if(index == x)
   r += "<b>" + modes[x][0] + "</b>";
  else
   r += "<a style='color:#aaa;' href='#' onclick=\"" + modes[x][1] + "\">" + modes[x][0] + "</a>";

 }   
 r += "</span>";

 return r;
}

Mem.getOptions = function() {
 return "\
 <div style='display:none; line-height:17px; margin:27px 6px 4px 6px; padding: 3px 4px 4px 20px; border:dashed #fc0 2px;' id=optionsBox>\
  <a style='float:right; margin-top:-7px; font-size:9px;' href='#' onClick='return Mem.hideOptions(this)'>Skjul muligheder</a>\
  -&nbsp;<a target='_blank' href='http://klasser.tiddlyspace.com/#Hjælp'>Hjælp</a>\
  &nbsp; &nbsp; -&nbsp;<a onclick='return Mem.startOver(this)' href='#'>Genstart</a>\
  &nbsp; &nbsp; -&nbsp;<a onclick='return Mem.close(this)' href='#'>Fortryd</a>\
 <br>\
  -&nbsp;<a target='_blank' href='http://klasser.tiddlyspace.com/#MemorizablePlugin'>Om Memorizable Plugin</a>\
 </div>\
 ";
}

Mem.setT = function(node) {

 // Return current, if no change
 if(! node)
  return this.t;

 // Remember last, for restoreTBody
 if(( typeof( Mem.t ) == 'object'))
   Mem.lastT = Mem.t;

 // Climb up parent until we find table
 while( ! node.isMem )
  node = node.parentNode;

 this.t = node;

 return node;
}

Mem.lookupT = function(nodex) {

 // Climb up parent until we find table
 while(! nodex.isMem)
  nodex = nodex.parentNode;

 return nodex;
}


Mem.restoreTBody = function() {
 Mem.t = Mem.lastT;
}

Mem.restore = function() {
 var orig = Mem.t.s.tbodyBackup;
 Mem.t.replaceChild( orig, Mem.t.tBodies[0] );
 Mem.t = orig.parentNode;
 // Whipe out ref to backup
 Mem.t.s.tbodyBackup = null;
}

Mem.addRowsFromBackup = function() {
 var t = this.t;
 var rows = t.rows;
 // Delete rows - except top and bottom
 var length = rows.length;
 for(var x=1; x<=length-2; x++)
  t.tBodies[0].removeChild( rows[length - (x+1)] );

 // Make copies from backup, add them to table
 var bak = t.s.tbodyBackup.cloneNode( true );
 var backupRows = bak.getElementsByTagName('tr');
 var length = backupRows.length;
 for(var x=1; x<length; x++)
  t.tBodies[0].insertBefore( backupRows[1], rows[rows.length-1] );
}


Mem.glow = function(cycles, color, glowDiv, endColor) {

 // Remember table
 if(!glowDiv) {
  glowDiv = this.tChile('directionsDiv');
  // Do nothing if already going
  if(glowDiv.cycles >= 1)
    return;
 }

 glowDiv.cycles = cycles;

 if(!endColor)
  endColor = "#fff";
 // Set end color to cell
 glowDiv.endColor = endColor;

 var glowLevel = color == "green" ? 35 : 0;
 var glowIncrement = color == "red" ? 8 : 2;
 if(color == "green") glowIncrement = 1;

 var myInterval = window.setInterval(function () {
  // Stop if cycles over
  if(glowDiv.cycles <= 0) {
   clearInterval(myInterval);
   return;
  }

  // Change level
  glowLevel += glowIncrement;
  // Go darker
  if(glowLevel < 0) {
   glowIncrement = 2;
   glowLevel += glowIncrement;
   // If this is the end, set it to the end color
   if(--glowDiv.cycles == 0) {
    glowDiv.style.background = glowDiv.endColor;
    return;
   }
  }
  // Go lighter
  if(glowLevel > 44) {
   glowIncrement = -2;
   glowLevel += glowIncrement;
   if(glowDiv.cycles == 1) {
    glowIncrement = color == "red" ? -6 : -1;
    if(color == "green") glowIncrement = -6;
   }
  }

  if(color == "red")
    Mem.glowColor(glowDiv, glowLevel, 180, 1, -2, -2);
  else if(color == "green")
    Mem.glowColor(glowDiv, glowLevel, 255, -3, 0, -5);
  else if(color == "finished")
    Mem.glowColor(glowDiv, glowLevel, 255, -2, 0, -4);
  else  // Orange
    Mem.glowColor(glowDiv, glowLevel, 255, 0, -1, -4);

 }, 43);
}

Mem.glowColor = function(glowDiv, glowLevel, start, r, g, b) {
  glowDiv.style.background = "rgb(" + (start+glowLevel*r) + "," + (start+glowLevel*g) + "," + (start+glowLevel*b) + ")";
}

Mem.chile = function(root, idName) {

 var maybe = root.getElementsByTagName( '*' );

 for(var x=0; x<maybe.length; x++)
  if( maybe[x].id == idName )
   return maybe[x];
}

Mem.tChile = function(idName) {

 return this.chile(this.t, idName);
}

Mem.flashcardMode = function(node) {

 Mem.setT(node);
 return Mem.start( Mem.t.getElementsByTagName('a')[Mem.t.s.column] );
}


function trim( s ) {
 return s.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");
}

function byid( key ) {
  return document.getElementById( key );
}

Mem.addEvent( document, "keydown", Mem.keyWasPressed );

//}}}
{{box7{
<<tiddler [[Memorér planter##Template]] with:Plante>>
}}}
/%
!Template
<<forEachTiddler where 'tiddler.tags.contains("$1")'
sortBy 'tiddler.title'
write 
 '(index < 60)? "| [<img(120px+,80px)["+store.getValue(tiddler,"title")+"|"+store.getTiddlerText("ImagePathList","")+""+store.getValue(tiddler,"title")+".jpg]["+tiddler.title+"]]{{toolbar floatright{<<editSection [["+tiddler.title+"##Spørgsmål]] [["+tiddler.title+" ?]] [[redigér spørgsmål til "+tiddler.title+"]] \>\>}}}{{big red{<<wikify %0 [["+tiddler.title+"##Spørgsmål]]\>\>}}} | {{toolbar floatright{<<editSection [["+tiddler.title+"##Svar]] [[!="+tiddler.title+"]] [[redigér svar til "+tiddler.title+"]] \>\>}}}{{big green dp70{<<wikify %0 "+"[["+tiddler.title+"##Svar]]\>\>}}}<br>{{floatleft dp100{//(<<tiddler [["+store.getValue(tiddler,"title")+"##Botanisk navn]] %0>\>)// }}} |\n" : ""'
              begin '"|sortable mem widetable|k\n| <<tag $1>\> | {{span{<<tiddler RefreshTiddler with: genopfrisk\>\>}}} |c\n" 
+"| !Billede & spørgsmål | !Botanisk navn & svar |h\n"
+"| <<tiddler [[Memorér planter##heading1]]\>\> | <<tiddler [[Memorér planter##heading2]]\>\> |\n"'
end 'count+" tiddlere tagget med $1\n"' none '"ingen tiddlere tagget med $1 \n"'>>{{hidden{
!heading1
<html><a href="#" onclick="return Mem.start(this.parentNode.parentNode)">(memorér)</a></html>
!heading2
<html><a href="#" onclick="return Mem.start(this.parentNode.parentNode)">(memorér)</a></html>
!end
%/
{{nobullets{<<list filter [tag[$1]] template: Menu##TagTemplate>>}}}/%%/{{hidden{
!TagTemplate
<<view title wikified {{"<<popup '%0' [[<<tiddler Menu##TagMenu with:'%0' >+>]] nohover toggle>\>"}}>>
!TagMenu
{{borderbottom{[[$1]]<<newTiddler title:'Ny $1' text:{{store.getTiddlerText('$1Template')}} tag:'$1' tag:'excludeLists' label:' + /'>><<tiddler NyGemtTiddler with:'$1' 'Ny tagget $1'>>}}}<<list filter [tag[$1]] template: Menu##Link emptyMessage:"Der er ikke oprettet nogen tiddler der er tagget med $1 endnu">>
----
<<tiddler OpenTaggedTiddlers with: "Åbn alle" "$1">>
!Link
<<view title link>>
!end
}}}
/***
|!|!|!|!|!|!|!|!|!|!|!|!|!|!|!|!|
|!|!|!|!|!|!|!|!|!|!|!|!|!|!|!|!|
|!|!||||||||||||!|!|!|
|!|!||!|!|!|!|!|!|!|!|!||!|!|!|
|!|!||!||||!||!||!||!|!|!|
|!|!||!||!||!||!||!||!|!|!|
|!|!||!||||!||!||!||!|!|!|
|!|!||!||!||!||!||!||!|!|!|
|!|!||!||||!||!||!||!|!|!|
|!|!||!|!|!|!|!|!|!||!||!|!|!|
|!|!||||||||||!||||!|
|!|!|!|!|!|!|!|!|!|!|!|!|!|!|!|!|
|!|!|!|!|!|!|!|!|!|!|!|!|!|!|!|!|

|''Name''|MineralTheme|
|''Source''|http://bauwebijl-tiddlywiki.appspot.com/#MineralTheme|
|''Version:''|1.0|
|''Author:''|Bauwe Bijl|
|''Date:''|March 15, 2011|
|''License:''|[[BSD License|http://bauwebijl-tiddlywiki.appspot.com/#LegalStatements]]|
|''Comments:''|Please make comments at http://groups.google.nl/group/TiddlyWiki|
|''~CoreVersion:''|2.6.0|
|''Type''|CSS|
|''Description''|a ''~TiddlyWiki'' theme: http://bauwebijl-tiddlywiki.appspot.com/#MineralThemeInfo|
|''PageTemplate:''|##PageTemplate|
|''ViewTemplate:''|##ViewTemplate|
|''EditTemplate:''|##EditTemplate|
|''StyleSheet:''|##StyleSheet|

Depends on BackstageSidebarPlugin, SimpleSearchPlugin and TiddlerTweakerPlugin
***/

!PageTemplate
<!--{{{-->
<div id='header'>
<div id='sidebarSearch'>
<span macro='search'></span>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='topMenu' refresh='content' tiddler='MineralTheme##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>
<!--}}}-->
!ViewTemplate
<!--{{{-->
<div macro="hideWhen readOnly"><div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div></div>
<div macro="showWhen readOnly"><div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbarReadOnly]]'></div></div>
<div macro="hideWhenTaggedAny -titel iframe sti"><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>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
!EditTemplate
<!--{{{-->
<span class='title' macro='edit title'></span></div>
<span class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></span></div>
<div macro='annotations'></div><br>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<div macro='tiddler QuickEditToolbar'></div>
<div class='editor' macro='edit text'></div>
<!--}}}-->
!StyleSheet
[[StyleSheetShortcuts]]
/*{{{*/
#sidebar {
	display:none;
}
#contentWrapper {
    width: 800px;
    margin-left: auto;
    margin-right: auto;
    position: relative;
}
#header {
    [[MineralTheme##StyleGrey]]
    display: block;
    margin-bottom: 6px;
    margin-top: 6px;
    text-align: left;
}
#header .tiddlyLinkExisting, #header .tiddlyLinkNonExisting {
    background: none;
    color:[[ColorPalette::SecondaryMid]];
}
#sidebarSearch .txtOptionInput {
    margin-top: 10px;
    float: right;
    width: 11em;
}
#sidebarSearch .searchButton {
    display: none;
}
#topMenu{
    [[MineralTheme##StyleWhite]]
    width: 770px;
    height: auto;
    padding-top: 4px;
    padding-bottom: 4px;
    text-align: left;
    text-shadow: none;
}
#topMenu .tiddlyLink, #topMenu .button, .viewer .button, #topMenu .externalLink, #tiddlerMainMenu .tiddlyLinkExisting, #tiddlerMainMenu .tiddlyLinkNonExisting, #tiddlerMainMenu .externalLink {
    [[MineralTheme##StyleBlue]]
    font-size:120%;
}
#topMenu .tiddlyLink:hover, #topMenu .button:hover, .viewer .button:hover, #topMenu .externalLink:hover, #tiddlerMainMenu .tiddlyLinkExisting:hover, #tiddlerMainMenu .tiddlyLinkNonExisting:hover, #tiddlerMainMenu .externalLink:hover, .popup li a:hover {
    [[MineralTheme##StyleBlueHover]]
}
#topMenu .tiddlyLink:active, #topMenu .button:active, .viewer .button:active, #topMenu .externalLink:active, #tiddlerMainMenu .tiddlyLinkExisting:active ,#tiddlerMainMenu .tiddlyLinkNonExisting:active, #tiddlerMainMenu .externalLink:active, .popup li a:active {
    [[MineralTheme##StyleBlueActive]]
}
#searchResults .button {
    [[MineralTheme##StyleBlue]]
}
#searchResults .button:hover {
    [[MineralTheme##StyleBlueHover]]
}
#searchResults .button:active {
    [[MineralTheme##StyleBlueActive]]
}
#searchResults {
    [[MineralTheme##StyleWhite]]
    text-shadow: none;
    text-align: left;
    display: block;
    margin-bottom: 10px;
}
.tiddlerTweaker {
    background: [[MineralTheme##StyleWhite]]
    text-shadow: none;
    text-align: left;
}
#displayArea {
    margin-left: 0px;
    margin-right: 0px;
}
.toolbar {
    float: right;
    visibility:hidden;
}
.selected .toolbar, .toolbar a:hover {
    visibility:visible;
}
.annotation {
    margin-bottom: -8px;
}
.tiddler, .viewer pre {
    [[MineralTheme##StyleWhite]]
    display: block;
    margin-bottom: 10px;
    text-align: left;
    text-shadow: none;
}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {
    [[MineralTheme##BlueSharp]]
    text-shadow: none;
    color:[[ColorPalette::Background]];
}
.viewer table, table.twtable {
    border: 1px;
}
.viewer td, .viewer tr, .twtable td, .twtable tr {
    vertical-align: top;
}
.tabContents {
    background: [[MineralTheme##StyleWhite]]
    text-shadow: none;
    text-align: left;
    margin-bottom: 10px;
}
.tabUnselected {
    background: [[MineralTheme##StyleGrey]]
}
.tabSelected {
    background: [[MineralTheme##StyleBlue]]
}
.tagging, .tagged {
    [[MineralTheme##StyleWhite]]
    text-align: left;
    text-shadow: none;
    margin-top: 6px;
    margin-bottom: 10px;
}
.tagging {
    display: none;
}
.tagging .button, .tagged .button, .tagging .tiddlyLinkExisting, .tagging .tiddlyLinkNonExisting {
    [[MineralTheme##StyleWhite]]
}
.tagging .button:hover, .tagged .button:hover, .tagging:hover .tiddlyLinkExisting:hover, .tagging .tiddlyLinkNonExisting:hover {
    [[MineralTheme##StyleWhiteHover]]
}
.tagging .button:active, .tagged .button:active, .tagging:active .tiddlyLinkExisting:active, .tagging .tiddlyLinkNonExisting:active {
    [[MineralTheme##StyleWhiteActive]]
}
.tagged li, .tagging li  {
    margin-bottom: 6px;
    margin-top: 2px;
}
.popup {
    [[MineralTheme##StyleGrey]]
    text-align: left;
}
.popup li a:hover {
    margin-bottom: 4px;
    margin-top: 4px;
}
.popup li a, .popup li a:visited {
    [[MineralTheme##StyleBlue]]
    margin-bottom: 4px;
    margin-top: 4px;
}
.popup li.disabled {
    color:[[ColorPalette::Grey]];
}
.tiddler .toolbar .button {
    [[MineralTheme##StyleRosy]]
}
.tiddler .toolbar .button:hover {
    [[MineralTheme##StyleRosyHover]]
}
.tiddler .toolbar .button:active {
    [[MineralTheme##StyleRosyActive]]
}
#messageArea {
    [[MineralTheme##StyleGrey]]
    display: none;
    text-align: left;
}
#messageArea a, #messageArea a:hover {
    color:[[ColorPalette::SecondaryMid]];
}
[[StyleSheet]]
/*}}}*/
/%
!MainMenu
<<tiddler MainMenu>> -- @@position:relative;+++^^*[Værktøj|vis eller skjul værktøj]...<<tiddler ToolBox>>===@@{{floatright{<<tiddler MineralTheme##toggleReadonly>>}}}
!toggleReadonly
<html><nowiki><span class='checkbox' onclick="return this.getElementsByTagName('input')[0].click();"
	title="slå redigering af dette dokument til/fra">
<input type='checkbox' style="margin:0;padding:0;" onclick="
	window.readOnly=!this.checked;
	config.macros.option.propagateOption('chkHttpReadOnly','checked',window.readOnly,'input')
	config.macros.option.propagateOption('chkSinglePageMode','checked',window.readOnly,'input')
	window.showBackstage=!window.readOnly;
	if(showBackstage && !backstage.area) backstage.init();
	backstage.button.style.display=showBackstage?'block':'none';
	backstage.hide();
	story.switchTheme(config.options.txtTheme);
	store.notifyAll();
	story.refreshAllTiddlers(true);
	return false;
"></span></html><<tiddler {{
	var chk=place.lastChild.getElementsByTagName('input')[0];
	chk.checked=!window.readOnly;
'';}}>>
!StyleBase
/*{{{*/
	display: inline-block;
	zoom: 1; /* zoom and *display = ie7 hack for display:inline-block */
	*display: inline;
	vertical-align: baseline;
	margin: 0 2px;
	outline: none;
	cursor: arrow;
	text-align: center;
	text-decoration: none;
	font-size: 11px/100% Arial, Helvetica, sans-serif;
	padding: .2em 1em .275em;
	text-shadow: 0 1px 1px rgba(0,0,0,.3);
	-webkit-border-radius: .5em; 
	-moz-border-radius: .5em;
	border-radius: .5em;
	-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2);
	-moz-box-shadow: 0 1px 2px rgba(0,0,0,.2);
	box-shadow: 0 1px 2px rgba(0,0,0,.2);
/*}}}*/
!GreySharp
/*{{{*/
	color: #606060;
	border: solid 1px #b7b7b7 !important;
	color: #e9e9e9;
	border: solid 1px #555 !important;
	background: #6e6e6e;
	background: -webkit-gradient(linear, left top, left bottom, from(#888), to(#575757));
	background: -moz-linear-gradient(top,  #888,  #575757);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#888888', endColorstr='#575757');
/*}}}*/
!StyleGrey
/*{{{*/
[[MineralTheme##StyleBase]]
	color: #606060;
	border: solid 1px #b7b7b7 !important;
	color: #e9e9e9;
	border: solid 1px #555 !important;
	background: #6e6e6e;
	background: -webkit-gradient(linear, left top, left bottom, from(#888), to(#575757));
	background: -moz-linear-gradient(top,  #888,  #575757);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#888888', endColorstr='#575757');
/*}}}*/
!StyleGreyHover
/*{{{*/
	color:#FFFFFF;
	background: #616161;
	background: -webkit-gradient(linear, left top, left bottom, from(#757575), to(#4b4b4b));
	background: -moz-linear-gradient(top,  #757575,  #4b4b4b);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#757575', endColorstr='#4b4b4b');
/*}}}*/
!StyleGreyActive
/*{{{*/
	color: #afafaf;
	background: -webkit-gradient(linear, left top, left bottom, from(#575757), to(#888));
	background: -moz-linear-gradient(top,  #575757,  #888);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#575757', endColorstr='#888888');
	position: relative;
	top: 1px;
/*}}}*/
!WhiteSharp
/*{{{*/
	color: #606060;
	border: solid 1px #b7b7b7 !important;
	background: #fff;
	background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#ededed));
	background: -moz-linear-gradient(top,  #fff,  #ededed);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed');
/*}}}*/
!StyleWhite
/*{{{*/
[[MineralTheme##StyleBase]]
	color: #606060;
	border: solid 1px #b7b7b7 !important;
	background: #fff;
	background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#ededed));
	background: -moz-linear-gradient(top,  #fff,  #ededed);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed');
/*}}}*/
!StyleWhiteHover
/*{{{*/
	color: #606060;
	background: #ededed;
	background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#dcdcdc));
	background: -moz-linear-gradient(top,  #fff,  #dcdcdc);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#dcdcdc');
/*}}}*/
!StyleWhiteActive
/*{{{*/
	color: #999;
	background: -webkit-gradient(linear, left top, left bottom, from(#ededed), to(#fff));
	background: -moz-linear-gradient(top,  #ededed,  #fff);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#ffffff');
	position: relative;
	top: 1px;
/*}}}*/
!BlueSharp
/*{{{*/
	color: #d9eef7;
	border: solid 1px #0076a3 !important;
	background: #0095cd;
	background: -webkit-gradient(linear, left top, left bottom, from(#00adee), to(#0078a5));
	background: -moz-linear-gradient(top,  #00adee,  #0078a5);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#00adee', endColorstr='#0078a5');
/*}}}*/
!StyleBlue
/*{{{*/
[[MineralTheme##StyleBase]]
	color: #d9eef7;
	border: solid 1px #0076a3 !important;
	background: #0095cd;
	background: -webkit-gradient(linear, left top, left bottom, from(#00adee), to(#0078a5));
	background: -moz-linear-gradient(top,  #00adee,  #0078a5);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#00adee', endColorstr='#0078a5');
/*}}}*/
!StyleBlueHover
/*{{{*/
	color:#FFFFFF;
	background: #007ead;
	background: -webkit-gradient(linear, left top, left bottom, from(#0095cc), to(#00678e));
	background: -moz-linear-gradient(top,  #0095cc,  #00678e);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#0095cc', endColorstr='#00678e');
/*}}}*/
!StyleBlueActive
/*{{{*/
	color: #80bed6;
	background: -webkit-gradient(linear, left top, left bottom, from(#0078a5), to(#00adee));
	background: -moz-linear-gradient(top,  #0078a5,  #00adee);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#0078a5', endColorstr='#00adee');
	position: relative;
	top: 1px;
/*}}}*/
!RosySharp
/*{{{*/
	color: #fae7e9;
	border: solid 1px #b73948 !important;
	background: #da5867;
	background: -webkit-gradient(linear, left top, left bottom, from(#f16c7c), to(#bf404f));
	background: -moz-linear-gradient(top,  #f16c7c,  #bf404f);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#f16c7c', endColorstr='#bf404f');
/*}}}*/
!StyleRosy
/*{{{*/
[[MineralTheme##StyleBase]]
	color: #fae7e9;
	border: solid 1px #b73948 !important;
	background: #da5867;
	background: -webkit-gradient(linear, left top, left bottom, from(#f16c7c), to(#bf404f));
	background: -moz-linear-gradient(top,  #f16c7c,  #bf404f);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#f16c7c', endColorstr='#bf404f');
/*}}}*/
!StyleRosyHover
/*{{{*/
	color:#FFFFFF;
	background: #ba4b58;
	background: -webkit-gradient(linear, left top, left bottom, from(#cf5d6a), to(#a53845));
	background: -moz-linear-gradient(top,  #cf5d6a,  #a53845);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#cf5d6a', endColorstr='#a53845');
/*}}}*/
!StyleRosyActive
/*{{{*/
	color: #dca4ab;
	background: -webkit-gradient(linear, left top, left bottom, from(#bf404f), to(#f16c7c));
	background: -moz-linear-gradient(top,  #bf404f,  #f16c7c);
	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#bf404f', endColorstr='#f16c7c');
	position: relative;
	top: 1px;
/*}}}*/
!End
%/
<<tiddler TagglyLists with: MyTag>>
{{hidden{
!Billede
MyrteGedeBlad.jpg
!Botanisk navn
Lonicera nitida 'elegant'
!Dansk navn
Myrtegedeblad
!Type
Busk
!Højde

!Bredde

!Blomstringstid

!Bladtype

!Bladstilling

!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse

!Anvendelse

!Krav

!Pleje

! 
}}}
/***
|Name|NestedSlidersPlugin|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Documentation|http://www.TiddlyTools.com/#NestedSlidersPluginInfo|
|Version|2.4.9|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|show content in nest-able sliding/floating panels, without creating separate tiddlers for each panel's content|
!!!!!Documentation
>see [[NestedSlidersPluginInfo]]
!!!!!Configuration
<<<
<<option chkFloatingSlidersAnimate>> allow floating sliders to animate when opening/closing
>Note: This setting can cause 'clipping' problems in some versions of InternetExplorer.
>In addition, for floating slider animation to occur you must also allow animation in general (see [[AdvancedOptions]]).
<<<
!!!!!Revisions
<<<
2008.11.15 - 2.4.9 in adjustNestedSlider(), don't make adjustments if panel is marked as 'undocked' (CSS class).  In onClickNestedSlider(), SHIFT-CLICK docks panel (see [[MoveablePanelPlugin]])
|please see [[NestedSlidersPluginInfo]] for additional revision details|
2005.11.03 - 1.0.0 initial public release.  Thanks to RodneyGomes, GeoffSlocock, and PaulPetterson for suggestions and experiments.
<<<
!!!!!Code
***/
//{{{
version.extensions.NestedSlidersPlugin= {major: 2, minor: 4, revision: 9, date: new Date(2008,11,15)};

// options for deferred rendering of sliders that are not initially displayed
if (config.options.chkFloatingSlidersAnimate===undefined)
	config.options.chkFloatingSlidersAnimate=false; // avoid clipping problems in IE

// default styles for 'floating' class
setStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \
	background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");

// if removeCookie() function is not defined by TW core, define it here.
if (window.removeCookie===undefined) {
	window.removeCookie=function(name) {
		document.cookie = name+'=; expires=Thu, 01-Jan-1970 00:00:01 UTC; path=/;'; 
	}
}

config.formatters.push( {
	name: "nestedSliders",
	match: "\\n?\\+{3}",
	terminator: "\\s*\\={3}\\n?",
	lookahead: "\\n?\\+{3}(\\+)?(\\([^\\)]*\\))?(\\!*)?(\\^(?:[^\\^\\*\\@\\[\\>]*\\^)?)?(\\*)?(\\@)?(?:\\{\\{([\\w]+[\\s\\w]*)\\{)?(\\[[^\\]]*\\])?(\\[[^\\]]*\\])?(?:\\}{3})?(\\#[^:]*\\:)?(\\>)?(\\.\\.\\.)?\\s*",
	handler: function(w)
		{
			lookaheadRegExp = new RegExp(this.lookahead,"mg");
			lookaheadRegExp.lastIndex = w.matchStart;
			var lookaheadMatch = lookaheadRegExp.exec(w.source)
			if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
			{
				var defopen=lookaheadMatch[1];
				var cookiename=lookaheadMatch[2];
				var header=lookaheadMatch[3];
				var panelwidth=lookaheadMatch[4];
				var transient=lookaheadMatch[5];
				var hover=lookaheadMatch[6];
				var buttonClass=lookaheadMatch[7];
				var label=lookaheadMatch[8];
				var openlabel=lookaheadMatch[9];
				var panelID=lookaheadMatch[10];
				var blockquote=lookaheadMatch[11];
				var deferred=lookaheadMatch[12];

				// location for rendering button and panel
				var place=w.output;

				// default to closed, no cookie, no accesskey, no alternate text/tip
				var show="none"; var cookie=""; var key="";
				var closedtext=">"; var closedtip="";
				var openedtext="<"; var openedtip="";

				// extra "+", default to open
				if (defopen) show="block";

				// cookie, use saved open/closed state
				if (cookiename) {
					cookie=cookiename.trim().slice(1,-1);
					cookie="chkSlider"+cookie;
					if (config.options[cookie]==undefined)
						{ config.options[cookie] = (show=="block") }
					show=config.options[cookie]?"block":"none";
				}

				// parse label/tooltip/accesskey: [label=X|tooltip]
				if (label) {
					var parts=label.trim().slice(1,-1).split("|");
					closedtext=parts.shift();
					if (closedtext.substr(closedtext.length-2,1)=="=")	
						{ key=closedtext.substr(closedtext.length-1,1); closedtext=closedtext.slice(0,-2); }
					openedtext=closedtext;
					if (parts.length) closedtip=openedtip=parts.join("|");
					else { closedtip="show "+closedtext; openedtip="hide "+closedtext; }
				}

				// parse alternate label/tooltip: [label|tooltip]
				if (openlabel) {
					var parts=openlabel.trim().slice(1,-1).split("|");
					openedtext=parts.shift();
					if (parts.length) openedtip=parts.join("|");
					else openedtip="hide "+openedtext;
				}

				var title=show=='block'?openedtext:closedtext;
				var tooltip=show=='block'?openedtip:closedtip;

				// create the button
				if (header) { // use "Hn" header format instead of button/link
					var lvl=(header.length>5)?5:header.length;
					var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,buttonClass,title);
					btn.onclick=onClickNestedSlider;
					btn.setAttribute("href","javascript:;");
					btn.setAttribute("title",tooltip);
				}
				else
					var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider,buttonClass);
				btn.innerHTML=title; // enables use of HTML entities in label

				// set extra button attributes
				btn.setAttribute("closedtext",closedtext);
				btn.setAttribute("closedtip",closedtip);
				btn.setAttribute("openedtext",openedtext);
				btn.setAttribute("openedtip",openedtip);
				btn.sliderCookie = cookie; // save the cookiename (if any) in the button object
				btn.defOpen=defopen!=null; // save default open/closed state (boolean)
				btn.keyparam=key; // save the access key letter ("" if none)
				if (key.length) {
					btn.setAttribute("accessKey",key); // init access key
					btn.onfocus=function(){this.setAttribute("accessKey",this.keyparam);}; // **reclaim** access key on focus
				}
				btn.setAttribute("hover",hover?"true":"false");
				btn.onmouseover=function(ev) {
					// optional 'open on hover' handling
					if (this.getAttribute("hover")=="true" && this.sliderPanel.style.display=='none') {
						document.onclick.call(document,ev); // close transients
						onClickNestedSlider(ev); // open this slider
					}
					// mouseover on button aligns floater position with button
					if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this,this.sliderPanel);
				}

				// create slider panel
				var panelClass=panelwidth?"floatingPanel":"sliderPanel";
				if (panelID) panelID=panelID.slice(1,-1); // trim off delimiters
				var panel=createTiddlyElement(place,"div",panelID,panelClass,null);
				panel.button = btn; // so the slider panel know which button it belongs to
				btn.sliderPanel=panel; // so the button knows which slider panel it belongs to
				panel.defaultPanelWidth=(panelwidth && panelwidth.length>2)?panelwidth.slice(1,-1):"";
				panel.setAttribute("transient",transient=="*"?"true":"false");
				panel.style.display = show;
				panel.style.width=panel.defaultPanelWidth;
				panel.onmouseover=function(event) // mouseover on panel aligns floater position with button
					{ if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this.button,this); }

				// render slider (or defer until shown) 
				w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
				if ((show=="block")||!deferred) {
					// render now if panel is supposed to be shown or NOT deferred rendering
					w.subWikify(blockquote?createTiddlyElement(panel,"blockquote"):panel,this.terminator);
					// align floater position with button
					if (window.adjustSliderPos) window.adjustSliderPos(place,btn,panel);
				}
				else {
					var src = w.source.substr(w.nextMatch);
					var endpos=findMatchingDelimiter(src,"+++","===");
					panel.setAttribute("raw",src.substr(0,endpos));
					panel.setAttribute("blockquote",blockquote?"true":"false");
					panel.setAttribute("rendered","false");
					w.nextMatch += endpos+3;
					if (w.source.substr(w.nextMatch,1)=="\n") w.nextMatch++;
				}
			}
		}
	}
)

function findMatchingDelimiter(src,starttext,endtext) {
	var startpos = 0;
	var endpos = src.indexOf(endtext);
	// check for nested delimiters
	while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {
		// count number of nested 'starts'
		var startcount=0;
		var temp = src.substring(startpos,endpos-1);
		var pos=temp.indexOf(starttext);
		while (pos!=-1)  { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }
		// set up to check for additional 'starts' after adjusting endpos
		startpos=endpos+endtext.length;
		// find endpos for corresponding number of matching 'ends'
		while (startcount && endpos!=-1) {
			endpos = src.indexOf(endtext,endpos+endtext.length);
			startcount--;
		}
	}
	return (endpos==-1)?src.length:endpos;
}
//}}}
//{{{
window.onClickNestedSlider=function(e)
{
	if (!e) var e = window.event;
	var theTarget = resolveTarget(e);
	while (theTarget && theTarget.sliderPanel==undefined) theTarget=theTarget.parentNode;
	if (!theTarget) return false;
	var theSlider = theTarget.sliderPanel;
	var isOpen = theSlider.style.display!="none";

	// if SHIFT-CLICK, dock panel first (see [[MoveablePanelPlugin]])
	if (e.shiftKey && config.macros.moveablePanel) config.macros.moveablePanel.dock(theSlider,e);

	// toggle label
	theTarget.innerHTML=isOpen?theTarget.getAttribute("closedText"):theTarget.getAttribute("openedText");
	// toggle tooltip
	theTarget.setAttribute("title",isOpen?theTarget.getAttribute("closedTip"):theTarget.getAttribute("openedTip"));

	// deferred rendering (if needed)
	if (theSlider.getAttribute("rendered")=="false") {
		var place=theSlider;
		if (theSlider.getAttribute("blockquote")=="true")
			place=createTiddlyElement(place,"blockquote");
		wikify(theSlider.getAttribute("raw"),place);
		theSlider.setAttribute("rendered","true");
	}

	// show/hide the slider
	if(config.options.chkAnimate && (!hasClass(theSlider,'floatingPanel') || config.options.chkFloatingSlidersAnimate))
		anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));
	else
		theSlider.style.display = isOpen ? "none" : "block";

	// reset to default width (might have been changed via plugin code)
	theSlider.style.width=theSlider.defaultPanelWidth;

	// align floater panel position with target button
	if (!isOpen && window.adjustSliderPos) window.adjustSliderPos(theSlider.parentNode,theTarget,theSlider);

	// if showing panel, set focus to first 'focus-able' element in panel
	if (theSlider.style.display!="none") {
		var ctrls=theSlider.getElementsByTagName("*");
		for (var c=0; c<ctrls.length; c++) {
			var t=ctrls[c].tagName.toLowerCase();
			if ((t=="input" && ctrls[c].type!="hidden") || t=="textarea" || t=="select")
				{ try{ ctrls[c].focus(); } catch(err){;} break; }
		}
	}
	var cookie=theTarget.sliderCookie;
	if (cookie && cookie.length) {
		config.options[cookie]=!isOpen;
		if (config.options[cookie]!=theTarget.defOpen) window.saveOptionCookie(cookie);
		else window.removeCookie(cookie); // remove cookie if slider is in default display state
	}

	// prevent SHIFT-CLICK from being processed by browser (opens blank window... yuck!)
	// prevent clicks *within* a slider button from being processed by browser
	// but allow plain click to bubble up to page background (to close transients, if any)
	if (e.shiftKey || theTarget!=resolveTarget(e))
		{ e.cancelBubble=true; if (e.stopPropagation) e.stopPropagation(); }
	Popup.remove(); // close open popup (if any)
	return false;
}
//}}}
//{{{
// click in document background closes transient panels 
document.nestedSliders_savedOnClick=document.onclick;
document.onclick=function(ev) { if (!ev) var ev=window.event; var target=resolveTarget(ev);

	if (document.nestedSliders_savedOnClick)
		var retval=document.nestedSliders_savedOnClick.apply(this,arguments);
	// if click was inside a popup... leave transient panels alone
	var p=target; while (p) if (hasClass(p,"popup")) break; else p=p.parentNode;
	if (p) return retval;
	// if click was inside transient panel (or something contained by a transient panel), leave it alone
	var p=target; while (p) {
		if ((hasClass(p,"floatingPanel")||hasClass(p,"sliderPanel"))&&p.getAttribute("transient")=="true") break;
		p=p.parentNode;
	}
	if (p) return retval;
	// otherwise, find and close all transient panels...
	var all=document.all?document.all:document.getElementsByTagName("DIV");
	for (var i=0; i<all.length; i++) {
		 // if it is not a transient panel, or the click was on the button that opened this panel, don't close it.
		if (all[i].getAttribute("transient")!="true" || all[i].button==target) continue;
		// otherwise, if the panel is currently visible, close it by clicking it's button
		if (all[i].style.display!="none") window.onClickNestedSlider({target:all[i].button})
		if (!hasClass(all[i],"floatingPanel")&&!hasClass(all[i],"sliderPanel")) all[i].style.display="none";
	}
	return retval;
};
//}}}
//{{{
// adjust floating panel position based on button position
if (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel) {
	if (hasClass(panel,"floatingPanel") && !hasClass(panel,"undocked")) {
		// see [[MoveablePanelPlugin]] for use of 'undocked'
		var rightEdge=document.body.offsetWidth-1;
		var panelWidth=panel.offsetWidth;
		var left=0;
		var top=btn.offsetHeight; 
		if (place.style.position=="relative" && findPosX(btn)+panelWidth>rightEdge) {
			left-=findPosX(btn)+panelWidth-rightEdge; // shift panel relative to button
			if (findPosX(btn)+left<0) left=-findPosX(btn); // stay within left edge
		}
		if (place.style.position!="relative") {
			var left=findPosX(btn);
			var top=findPosY(btn)+btn.offsetHeight;
			var p=place; while (p && !hasClass(p,'floatingPanel')) p=p.parentNode;
			if (p) { left-=findPosX(p); top-=findPosY(p); }
			if (left+panelWidth>rightEdge) left=rightEdge-panelWidth;
			if (left<0) left=0;
		}
		panel.style.left=left+"px"; panel.style.top=top+"px";
	}
}
//}}}
//{{{
// TW2.1 and earlier:
// hijack Slider stop handler so overflow is visible after animation has completed
Slider.prototype.coreStop = Slider.prototype.stop;
Slider.prototype.stop = function()
	{ this.coreStop.apply(this,arguments); this.element.style.overflow = "visible"; }

// TW2.2+
// hijack Morpher stop handler so sliderPanel/floatingPanel overflow is visible after animation has completed
if (version.major+.1*version.minor+.01*version.revision>=2.2) {
	Morpher.prototype.coreStop = Morpher.prototype.stop;
	Morpher.prototype.stop = function() {
		this.coreStop.apply(this,arguments);
		var e=this.element;
		if (hasClass(e,"sliderPanel")||hasClass(e,"floatingPanel")) {
			// adjust panel overflow and position after animation
			e.style.overflow = "visible";
			if (window.adjustSliderPos) window.adjustSliderPos(e.parentNode,e.button,e);
		}
	};
}
//}}}
//{{{
config.macros.newSavedTiddler={};
config.macros.newSavedTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	if (readOnly) {
		return false;
	}
	var p = paramString.parseParams("anon",null,true,false,false);
	var label = getParam(p,"label","NewSavedTiddler");
	var tooltip = getParam(p,"tooltip","");
	//
	// if no tooltip specified, try prompt, title, label
	//
	if (!tooltip) {
		var tPrompt = getParam(p,"prompt","");
		var title  = getParam(p,"title","");
		var label  = getParam(p,"label","");
		if (tPrompt) {
			tooltip = tPrompt;
		}
		else if (title) {
			tooltip = 'Create a ' + title;
		}
		else if (label) {
			tooltip = 'Create a ' + label;
		}
		else {
			tooltip = 'Create a new saved tiddler';
		}
	}
	var btn = createTiddlyButton(place,label,tooltip,this.onClick);
	btn.params = paramString;
	return false;
};

config.macros.newSavedTiddler.onClick = function(e) {
	var p = this.params.parseParams("anon",null,true,false,false);
	var titlePrompt = getParam(p,"prompt","");
	//
	// if no titlePrompt for the popup, try using the title or label fields
	// to personalize the prompt
	//
	if (!titlePrompt) {
		var titleT = getParam(p,"title","");
		var labelT = getParam(p,"label","");
		if (titleT) {
			titlePrompt = 'Enter name for ' + titleT + ":";
		}
		else if (labelT) {
			titlePrompt = 'Enter name for ' + labelT + ":";
		}
		else {
			// default prompt
			titlePrompt = 'Enter name for new tiddler:';
		}
	}
	var title = prompt(titlePrompt,"");
	if (title) {
		if (typeof config.macros.newTiddler.getName == "function")  {
			title = config.macros.newTiddler.getName(title); // from NewMeansNewPlugin
		}
		var text = getParam(p,"text","");
		var tags = getParam(p,"tag","");
		var fields = getParam(p,"fields","").decodeHashMap();
		tags = tags.replace(/\[\(/g,'[[');
		tags = tags.replace(/\)\]/g,']]');

                // Oveek: a fix for TiddlyWeb
                // http://groups.google.com/group/TiddlyWikiDev/browse_thread/thread/edff49f9a9e9f47b/e02cb3c4ba88f819?pli=1
                merge(fields, config.defaultCustomFields, true); 

		var tiddler = store.saveTiddler(title,title,text,config.options.txtUserName,new Date(),tags,fields);
		autoSaveChanges(null,[tiddler]);
		story.displayTiddler(this,title);
	}
	return false;
}
//}}}
<<newSavedTiddler 
        label:"$2" 
        text:{{store.getTiddlerText('PlanteTemplate')}} 
        tag:'[[$1]][[excludeLists]]'
>>/%
!Template
{{box7{
<<tiddler NyGemtTiddler##Macro with: {{tiddler.title}}>>
}}}
!Macro
<<tiddler Skabelon with: '$1'>>
!end
%/
<html><div align="center"><iframe src="http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50" frameborder="0" style="width:100%;height:16em"></iframe></div></html>{{floatleft{<<tiddlyPod noautoplay loop track:1 @SpilleListe>>}}}{{center{
<html><object type="application/x-shockwave-flash" data="http://podcast.tiddlyspace.com/emff_silk.swf" width="84" height="32">
 <param name="movie" value="http://podcast.tiddlyspace.com/emff_silk.swf">
 <param name="FlashVars" value="src=http%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F01%20-%20Unknown%20Artist%20-%20Track%201.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F02%20-%20Unknown%20Artist%20-%20Track%202.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F03%20-%20Unknown%20Artist%20-%20Track%203.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F04%20-%20Unknown%20Artist%20-%20Track%204.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F05%20-%20Unknown%20Artist%20-%20Track%205.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F06%20-%20Unknown%20Artist%20-%20Track%206.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F07%20-%20Unknown%20Artist%20-%20Track%207.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F08%20-%20Unknown%20Artist%20-%20Track%208.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F09%20-%20Unknown%20Artist%20-%20Track%209.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F10%20-%20Unknown%20Artist%20-%20Track%2010.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F11%20-%20Unknown%20Artist%20-%20Track%2011.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F12%20-%20Unknown%20Artist%20-%20Track%2012.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F13%20-%20Unknown%20Artist%20-%20Track%2013.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F14%20-%20Unknown%20Artist%20-%20Track%2014.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F15%20-%20Unknown%20Artist%20-%20Track%2015.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F16%20-%20Unknown%20Artist%20-%20Track%2016.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F17%20-%20Unknown%20Artist%20-%20Track%2017.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F18%20-%20Unknown%20Artist%20-%20Track%2018.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F19%20-%20Unknown%20Artist%20-%20Track%2019.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F20%20-%20Unknown%20Artist%20-%20Track%2020.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F21%20-%20Unknown%20Artist%20-%20Track%2021.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F22%20-%20Unknown%20Artist%20-%20Track%2022.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F23%20-%20Unknown%20Artist%20-%20Track%2023.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD1_af_3%2F24%20-%20Unknown%20Artist%20-%20Track%2024.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F01%20-%20Unknown%20Artist%20-%20Track%201.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F02%20-%20Unknown%20Artist%20-%20Track%202.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F03%20-%20Unknown%20Artist%20-%20Track%203.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F04%20-%20Unknown%20Artist%20-%20Track%204.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F05%20-%20Unknown%20Artist%20-%20Track%205.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F06%20-%20Unknown%20Artist%20-%20Track%206.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F07%20-%20Unknown%20Artist%20-%20Track%207.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F08%20-%20Unknown%20Artist%20-%20Track%208.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F09%20-%20Unknown%20Artist%20-%20Track%209.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F10%20-%20Unknown%20Artist%20-%20Track%2010.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F11%20-%20Unknown%20Artist%20-%20Track%2011.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F12%20-%20Unknown%20Artist%20-%20Track%2012.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F13%20-%20Unknown%20Artist%20-%20Track%2013.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F14%20-%20Unknown%20Artist%20-%20Track%2014.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F15%20-%20Unknown%20Artist%20-%20Track%2015.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F16%20-%20Unknown%20Artist%20-%20Track%2016.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F17%20-%20Unknown%20Artist%20-%20Track%2017.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F18%20-%20Unknown%20Artist%20-%20Track%2018.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F19%20-%20Unknown%20Artist%20-%20Track%2019.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F20%20-%20Unknown%20Artist%20-%20Track%2020.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD2_af_3%2F21%20-%20Unknown%20Artist%20-%20Track%2021.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F01%20-%20Unknown%20Artist%20-%20Track%201.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F02%20-%20Unknown%20Artist%20-%20Track%202.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F03%20-%20Unknown%20Artist%20-%20Track%203.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F04%20-%20Unknown%20Artist%20-%20Track%204.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F05%20-%20Unknown%20Artist%20-%20Track%205.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F06%20-%20Unknown%20Artist%20-%20Track%206.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F07%20-%20Unknown%20Artist%20-%20Track%207.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F08%20-%20Unknown%20Artist%20-%20Track%208.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F09%20-%20Unknown%20Artist%20-%20Track%209.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F10%20-%20Unknown%20Artist%20-%20Track%2010.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F11%20-%20Unknown%20Artist%20-%20Track%2011.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F12%20-%20Unknown%20Artist%20-%20Track%2012.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F13%20-%20Unknown%20Artist%20-%20Track%2013.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F14%20-%20Unknown%20Artist%20-%20Track%2014.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F15%20-%20Unknown%20Artist%20-%20Track%2015.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F16%20-%20Unknown%20Artist%20-%20Track%2016.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F17%20-%20Unknown%20Artist%20-%20Track%2017.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F18%20-%20Unknown%20Artist%20-%20Track%2018.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F19%20-%20Unknown%20Artist%20-%20Track%2019.mp3%2Chttp%3A%2F%2Fxn--mns-ula.dk%2Fsky%2Fapps%2Ffiles_sharing%2Fget.php%3Ftoken%3D6b4e99df07ddd09a648d96918bc6426b4ade1e50%26path%3D%2FOndskaben_CD3_af_3%2F20%20-%20Unknown%20Artist%20-%20Track%2020.mp3">
</object></html><br>
[img(15%,auto)[http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50/Ondskaben.jpg]]
}}}
/%
!info
|Name|OpenTaggedTiddlers|
|Source|http://www.TiddlyTools.com/#OpenTaggedTiddlers|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|create a link to open a set of tagged tiddlers with a single click|
Usage:
<<<
{{{
<<tiddler OpenTaggedTiddlers with: label tagToMatch sortBy reverse close limit>>
}}}
*''label''<br>is the text of the link
*''tagToMatch''<br>is a single tag value to be matched.  Note: when MatchTagsPlugin is installed, you can also use a boolean tag expression, enclosed in "..."
*''sortBy'' (optional)<br>a tiddler fieldname, (default="title", use "modified" or "created" for tiddler dates)
*''reverse'' (optional)<br>display order for the tiddlers (i.e., descending vs. ascending)
*''close'' (optional)<br>closes all open tiddlers before opening the tagged tiddlers
*''limit'' (optional)<br>maximum number of tiddlers to be opened
Note: use "" as placeholders when omitting optional parameters
<<<
Example
<<<
{{{<<tiddler OpenTaggedTiddlers##show with: "click me..." sample title reverse "" 3>>}}}
<<tiddler OpenTaggedTiddlers##show with: "click me..." sample title reverse "" 3>>
<<<
!end
!show
<html><nowiki><a href='javascript:;' onclick="
	var list=[];
	var match='$2';
	var sortBy='$3'; if ((sortBy=='$'+'3')||(sortBy=='')) sortBy='title';
	var filter='[tag[%0]][sort[%1]]'.format([match,sortBy]);
	var tids=store.filterTiddlers(filter);
	if ('$4'=='reverse') tids=tids.reverse();
	if ('$5'=='close') story.closeAllTiddlers();
	var limit=('$6'!='$'+'6')?parseInt('$6'):tids.length;
	for (var t=0;t<tids.length && t<limit;t++) list.push(tids[t].title);
	if (confirm('Show %0 tiddlers tagged with \x27%1\x27?'.format([tids.length,match]))) {
		var here=story.findContainingTiddler(place);
		story.displayTiddlers(here,list);
		if (here && list.length) { // scroll to top of newly displayed tiddlers
			var cmd='window.scrollTo(0,'+(here.offsetTop+here.offsetHeight)+')';
			var delay=config.options.chkAnimate?config.animDuration+100:0;
			setTimeout(cmd,delay);
		}
	}
	return false;
">$1</a></html>
!end
%/<<tiddler {{var src='OpenTaggedTiddlers'; src+(tiddler&&tiddler.title==src?'##info':'##show')}}
	with: [[$1]] [[$2]] [[$3]] [[$4]] [[$5]] [[$6]]>>
Ericales
beskrivelse ...
----
Orden 2
beskrivelse...
----
<<tiddler PT2##1 with:{{tiddler.title}} >>
/%
!1
<<tiddler PT2##html with: {{tiddler.title}} {{store.getValue("$1","box")}} {{store.getTiddlerText('$1##Url', './')}}>>
!html
<html>
 <div class="box$2"><div macro="hideWhen readOnly"><span style="z-index: 20" class="editor floatright" macro="select 'box@$1' rows:1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16"></span></div>
          <a href="$3">
         <img border="0" src="$3" alt="HTML tutorial" width="85%" height="auto" style="margin:25px 0px; display:block;margin-left: auto;margin-right: auto" /></a><span class="editor floatright" macro="editSection '$1##ImageText''redigér tekst'"></span><span class="editor floatright" macro="editSection '$1##Url''billede'"></span>
         <p><span class="wrap" style="text-align:left; display:block;margin-left: auto;margin-right: auto" macro="view ##ImageText wikified '%0'"></span></p>
       </div>
</html>
!select
tiddler PT2##select with:{{tiddler.title}} if:{{!readOnly}}
!end %/
{{hidden{
!ImageText
[[Lorem ipsum]] dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt 
            ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco 
            laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in 
            voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat
            non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
!Url
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=a95473cff5597442863b0a29a4e42455b03ed93c
!end 
}}}
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
	major: 1, minor: 0, revision: 2, 
	date: new Date("Apr 19, 2007"),
	source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.2.0 (Beta 5)'
};

config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");

merge(config.macros.option.types, {
	'pas': {
		elementType: "input",
		valueField: "value",
		eventName: "onkeyup",
		className: "pasOptionInput",
		typeValue: config.macros.option.passwordInputType,
		create: function(place,type,opt,className,desc) {
			// password field
			config.macros.option.genericCreate(place,'pas',opt,className,desc);
			// checkbox linked with this password "save this password on this computer"
			config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);			
			// text savePasswordCheckboxLabel
			place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
		},
		onChange: config.macros.option.genericOnChange
	}
});

merge(config.optionHandlers['chk'], {
	get: function(name) {
		// is there an option linked with this chk ?
		var opt = name.substr(3);
		if (config.options[opt]) 
			saveOptionCookie(opt);
		return config.options[name] ? "true" : "false";
	}
});

merge(config.optionHandlers, {
	'pas': {
 		get: function(name) {
			if (config.options["chk"+name]) {
				return encodeCookie(config.options[name].toString());
			} else {
				return "";
			}
		},
		set: function(name,value) {config.options[name] = decodeCookie(value);}
	}
});

// need to reload options to load passwordOptions
loadOptionsCookie();

/*
if (!config.options['pasPassword'])
	config.options['pasPassword'] = '';

merge(config.optionsDesc,{
		pasPassword: "Test password"
	});
*/
//}}}
/***
|''Name:''|PhotoGalleryPlugin|
|''Description:''|A photo gallery with optional subtitles|
|''Author:''|Paulo Soares|
|''Version:''|1.3.0|
|''Date:''|2011-04-25|
|''Source:''|http://www.math.ist.utl.pt/~psoares/addons.html|
|''Documentation:''|See the examples|
|''License:''|[[Creative Commons Attribution-Share Alike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.5.0|
***/
//{{{
if(!version.extensions.photoGalleryPlugin) { //# ensure that the plugin is only installed once
version.extensions.photoGalleryPlugin = {installed: true};

(function($) {
config.macros.photoGallery = {};

config.macros.photoGallery.handler= function(place,macroName,params,wikifier,paramString,tiddler) {
  var i, args = paramString.parseParams(null,null,false);
  this.url = getParam(args,"url","*");
  this.sequence = getParam(args,"sequence",null);
  var height = getParam(args,"height",null);
  var width = getParam(args,"width",null);
  this.time = parseFloat(getParam(args,"time",0));
  this.start = parseFloat(getParam(args,"start",-1));
  this.labels = getParam(args,"labels",null);
  this.numbers = ($.inArray('numbers',paramString.readMacroParams()) > -1);
  if(!this.sequence){return false;}
  if(this.sequence=="!"){
    var lines = paramString.split("\n");
    if(lines.length>1){
      lines.pop();
      lines.shift();
    } else {return false;}
    this.sequence = lines;
  } else {
    this.sequence = this.parseSequence(this.sequence);
  }
  this.nImages = this.sequence.length;
  this.current = 0;
  if(!store.tiddlerExists(this.labels)) this.labels = null;
  if(this.labels) this.labelsArray = store.getTiddlerText(this.labels).split("\n");
  var pictureHolder = document.createElement('center');
  var image=pictureHolder.appendChild(document.createElement('img'));
  image.src = this.url.replace("*",this.sequence[0]);
  image.id = 'pgObject';
  if(height) image.height = height;
  if(width) image.width = width;
  image.className = "photoGallery";
  place.appendChild(pictureHolder);
  var navBar = createTiddlyElement(pictureHolder,"div");
  createTiddlyButton(navBar,"«","",this.firstImage);
  createTiddlyButton(navBar,"‹","",this.previousImage);
  if(this.time>0) {
    createTiddlyButton(navBar,"►",null,this.auto,null,"pgPlay");
  }
  createTiddlyButton(navBar,"›","",this.nextImage);
  createTiddlyButton(navBar,"»","",this.lastImage);
  if(this.labels) createTiddlyElement(pictureHolder,"div","pgLabel","",this.labelsArray[0]);
  if(this.numbers) createTiddlyElement(navBar,"span","pgCounter","","1/"+this.nImages);
  if(this.time>0 && this.start>-1) setTimeout(this.auto,this.start);
}

config.macros.photoGallery.parseSequence = function(seq) {
  var list = seq.split(","), res = [], limits, i, j;
  for (i=0; i<list.length; i++){
    if(list[i].indexOf("-") == -1){
      res.push(parseInt(list[i]));
    } else {
      limits = list[i].split("-");
      if(limits[0]>limits[1]){
        for(j=parseInt(limits[0]); j>=parseInt(limits[1]); j--){
          res.push(j); 
        }
      } else {
        for(j=parseInt(limits[0]); j<=parseInt(limits[1]); j++){
          res.push(j); 
        }
      }
    }
  }
  return res;
}

config.macros.photoGallery.auto = function() {
  var cm = config.macros.photoGallery;
  if(cm.autoAdvance) {
    clearInterval(cm.autoAdvance);
    cm.autoAdvance = null;
    $("#pgPlay").text('►');
  } else {
    if(cm.time>0) {
      cm.autoAdvance = setInterval(cm.nextImage, cm.time);
      $("#pgPlay").text('■');
    }
  }
}

config.macros.photoGallery.jump = function(step) {
  var target;
  switch (step) {
  case "f":
    target=0;
    break;
  case "l":
    target=this.nImages-1;
    break;
  case "n":
    target = (this.current == this.nImages-1) ? 0 : this.current+1; 
    break;
  case "p":
    target = (this.current == 0) ? this.nImages-1 : this.current-1; 
  }
  this.current = target;
  $("#pgObject").attr("src",this.url.replace("*",this.sequence[target]))
  if(this.numbers) $("#pgCounter").text((target+1) + '/'+ this.nImages);
  if(this.labels) $("#pgLabel").text(this.labelsArray[target]);
}

config.macros.photoGallery.nextImage = function(){config.macros.photoGallery.jump('n');}
config.macros.photoGallery.previousImage = function(){config.macros.photoGallery.jump('p');}
config.macros.photoGallery.lastImage = function(){config.macros.photoGallery.jump('l');}
config.macros.photoGallery.firstImage = function(){config.macros.photoGallery.jump('f');}
})(jQuery)
}
//}}}
<<tiddler Skabelon with:Plante>>
{{dp100{
{{dp50 floatleft{
|widetable|k
|width:30%;background-color:green;Botanisk navn |h
| skriv noget |

|widetable|k
|width:30%;background-color:green;Dansk navn  |h
| skriv noget |

|widetable|k
|width:30%;background-color:green;Type |h
| skriv noget |
}}}{{dp50 center{
[img(276px+,183px+)[skriv navn eller adresse på billede her]]
}}}
{{dp100{
|widetable|k
|background-color:green; Højde |background-color:green; Bredde |background-color:green; Blomstringstid |background-color:green; Bladtype |background-color:green; Bladstilling |background-color:green; Løvfældende |background-color:green; Stedsegrøn |h
| skriv noget | skriv noget | skriv noget | skriv noget | skriv noget | skriv noget | skriv noget |
|background-color:green; !Beskrivelse |>|>|>|>|>| skriv noget |

|widetable|k
|background-color:green;Anvendelse |h
| skriv noget |

|widetable|k
|background-color:green;Krav |h
| skriv noget |

|widetable|k
|background-color:green;Pleje |h
| skriv noget |
}}}
}}}
!ViewTemplate
{{dp100{
{{dp50 floatleft{
|widetable|k
|width:30%;background-color:green; Botanisk navn |h
|<html><span macro='view botanisk wikified'></span></html>|

|widetable|k
|width:30%;background-color:green; Dansk navn |h
|<html><span macro='view dansk_navn wikified'></span></html>|

|widetable|k
|width:30%;background-color:green; Type |h
|<html><span macro='view type wikified'></span></html>|
}}}{{dp50 center{
<<tiddler Plante3##ShowImage with:{{store.getValue("$1","billede")}}>>
}}}
{{dp100{
|widetable|k
|background-color:green; Højde |background-color:green; Bredde |background-color:green; Blomstringstid |background-color:green; Bladtype |background-color:green; Bladstilling |background-color:green; Løvfældende |background-color:green; Stedsegrøn |h
|<html><span macro='view hoejde wikified'></span></html>|<html><span macro='view bredde wikified'></span></html>|<html><span macro='view blomstringstid wikified'></span></html>|<html><span macro='view bladtype wikified'></span></html>|<html><span macro='view bladstilling wikified'></span></html>|<html><span macro='view loevfaeldende wikified'></span></html>|<html><span macro='view stedsegroen wikified'></span></html>|
|background-color:green;!Beskrivelse|>|>|>|>|>|<html><span macro='wikify beskrivelse'></span></html>|

|widetable|k
|background-color:green;Anvendelse|h
|<html><span macro='wikify anvendelse'></span></html>|

|widetable|k
|background-color:green;Krav|h
|<html><span macro='view krav wikified'></span></html>|

|widetable|k
|background-color:green;Pleje|h
|<html><span macro='view pleje wikified'></span></html>|
}}}
}}}/%
!EditTemplate
{{dp100{
{{dp50 floatleft{
|widetable|k
| Botanisk navn |h
|<html><span macro='edit botanisk@$1'></span></html>|

|widetable|k
| Dansk navn |h
|<html><span macro='edit dansk_navn@$1'></span></html>|

|widetable|k
| Type |h
||<html><span macro='edit type@$1'></span></html>|
}}}{{dp50 center{
<<tiddler Plante3##ImageMacroEdit with:{{tiddler.title}}>>
}}}
{{dp100{
|widetable|k
| Højde | Bredde | Blomstringstid | Bladtype | Bladstilling | Løvfældende | Stedsegrøn |h
|<html><span macro='edit hoejde@$1'></span></html>|<html><span macro='edit bredde@$1'></span></html>|<html><span macro='edit blomstringstid@$1'></span></html>|<html><span macro='edit bladtype@$1'></span></html>|<html><span macro='edit bladstilling@$1'></span></html>|<html><span macro='edit loevfaeldende@$1'></span></html>|<html><span macro='edit stedsegroen@$1'></span></html>|
|!Beskrivelse|>|>|>|>|>|<html><span macro='edit beskrivelse@$1 6'></span></html>|

|widetable|k
|Anvendelse|h
|<html><span macro='edit anvendelse@$1 6'></span></html>|

|widetable|k
|Krav|h
|<html><span macro='edit krav@$1'></span></html>|

|widetable|k
|Pleje|h
|<html><span macro='edit pleje@$1'></span></html>|
!ImageMacroEdit
<<tiddler Plante3##ShowImageEdit with:{{store.getValue("$1","billede")}}>>
!!ShowImageEdit
[img(276px+,183px+)[$1]]
Skriv billedadresse
<html><span macro='edit billede'></span></html>
!ImageMacro
<<tiddler Plante3##ShowImage with:{{store.getValue("$1","billede")}}>>
!!ShowImage
[img(276px+,183px+)[$1]]{{small{//
⇧ + venstreklik: Original størrelse
Ctrl + venstreklik: Tilbage igen
Venstreklik + hold og træk: Fri størrelse
//
}}}
!!end
%/
<!--{{{-->
<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='tiddler Plante3##EditTemplate with:{{tiddler.title}}'></div>
<div macro='tiddler QuickEditToolbar with:show'></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>
<!--}}}-->
<!--{{{-->
<div class='tagInfo infoTags'>
    <div class='tidTags' macro='tags'></div>
</div>
<div class='toolbar'
    macro='toolbar [[ToolbarCommands::ViewToolbar]] icons:yes height:16 width:16 more:popup'>
</div>
<div class='heading'>
    <span class="titleBar">
        <div class='title' macro='view title text'></div>
        <div class="subtitle">
            senest redigeret d.
            <span macro="view modified date"></span>
            af
            <span macro='view modifier link'></span>
        </div>
    </span>
    <div class='tagClear'></div>
</div>
<div class='content'>
    <div class='viewer' macro='tiddler Plante3##ViewTemplate with:{{tiddler.title}}'></div>
    <div class='viewer' macro='view text wikified'></div>
</div>
<div class='tagInfo infoTagging'>
    <div class='tagging' macro='tagging'></div>
</div>
<span class="openTiddler" macro='tiddler OnLoad'/>
<!--}}}-->
|widetable box7|k
|width:32%;padding-left:1.5em;{{box1 dp70{<<tiddler fET##show with: Plante 5 af [[tiddlere tagget med]]>><<newTiddler title:[[ny Plante]] text:{{store.getTiddlerText('PlanteTemplate')}} tag:Plante tag:excludeLists label:[[ny plante]]>>}}} |<<tiddler PlanteKendskab##FET>>|
|>|<<tiddler PlanteKendskab##ListFilter>> |
/%
!FET
@@display:block;height:29em;overflow:auto;<<forEachTiddler where 'tiddler.tags.contains("Plante")&& !tiddler.title.contains("treeview")'
sortBy 'tiddler.title'
        ascending
write 
 '(index < 200)? "|"+(index+1)+"| [img(100px,50px)["+store.getValue(tiddler,"title")+"|"+store.getTiddlerText("ImagePathList","")+""+store.getValue(tiddler,"title")+".jpg]["+tiddler.title+"]] |//(<<tiddler [["+store.getValue(tiddler,"title")+"##Botanisk navn]] %0>\>)// |[["+tiddler.title +"]] | ("+tiddler.text.length+") | "+store.getValue(tiddler,"modified")+" |\n" : ""'
              begin 
'"|sortable|k\n" 
+"|>|>|>|>|>|background-color:green; <<tag Plante Planter>\> Tip:  klik på headers herunder for at sortere |h\n"
+"||width:15%; billede/link |//(botanisk navn)// |titel/link| (størrelse i byte) | sidst ændret |h\n"' 
end 'count+" planter\n"' none '"ingen planter er oprettede endnu\n"'>>@@@@display:block;text-align:right;
^^rul ned for mere...^^@@
!ListFilter
{{center title{Prøv f.eks at [[memorere planter|Memorér planter]]}}}
@@display:block;height:40em;width:100%;overflow:auto;
{{twocolumns dp100{
{{nobullets{<<list filter [tag[Plante]][sort[title]] template:PlanteKendskab##Template>>}}}
}}}
@@@@display:block;text-align:right;^^rul ned for mere...^^@@
!Template
{{dp70{
{{dp70 box2{
{{dp50 center{<<view title wikified  {{'<<tiddler PlanteKendskab##Image with:"%0" {\{store.getTiddlerText("ImagePathList","")}\}>\>'}}>>}}} {{dp50{<br><<view title link>><br><<view [[##Botanisk navn]] wikified "//(%0)//">><br> <<view type wikified "~Type: %0">><br><<view loevfaeldende wikified "Løvfældende: %0">><br><<view stedsegroen wikified "Stedsegrøn: %0">><br>{{toolbar{<<view title wikified {{"<<FE2 [[%0]] [[redigér felter]]>\>"}}>><br><<view title wikified {{"<<editSection [[%0]] [[redigér tekst]]>\>"}}>>}}}}}}
}}}
}}}
!Image
[img(83%,110px)[$2$1.jpg][$1]]
! %/
!ViewTemplate
{{dp100{
{{dp50 floatleft{
|widetable|k
|width:30%;background-color:green;Botanisk navn {{floatright toolbar{<<editSection "##Botanisk navn">>}}}|h
|<<wikify [[%0]] "##Botanisk navn" "skriv noget">>|

|widetable|k
|width:30%;background-color:green;Dansk navn  {{floatright toolbar{<<editSection "##Dansk navn">>}}}|h
|<<wikify [[%0]] "##Dansk navn" "skriv noget">>|

|widetable|k
|width:30%;background-color:green;~Type {{floatright toolbar{<<tiddler {{if (readOnly) place.style.display='none';'';}}>><<select type allowBlank allowOther allowEdit "prompt:vælg type..." rows:1 +Type>>}}}|h
|<<wikify [[%0]] "type" "ikke valgt endnu">>|
}}}{{dp50 center{
<<tiddler "PlanteSektioner##VisBillede" with:{{tiddler.title}}>>
}}}
{{dp100{
|widetable|k
|background-color:green; Højde {{center toolbar{<<editSection "##Højde">>}}} |background-color:green; Bredde {{center toolbar{<<editSection "##Bredde">>}}} |background-color:green; Blomstringstid {{center toolbar{<<editSection "##Blomstringstid">>}}} |background-color:green; ~Bladtype {{center toolbar{<<tiddler {{if (readOnly) place.style.display='none';'';}}>><html><span macro='select bladtype allowBlank allowOther allowEdit "prompt:vælg bladtype..." rows:1 +Bladtype'></span></html>}}} |background-color:green; ~Bladstilling {{center toolbar{<<tiddler {{if (readOnly) place.style.display='none';'';}}>><html><span macro='select bladstilling allowBlank allowOther allowEdit "prompt:vælg bladstilling..." rows:1 +Bladstilling'></span></html>}}} |background-color:green; Løvfældende {{center toolbar{<<tiddler {{if (readOnly) place.style.display='none';'';}}>><html><span macro='select loevfaeldende allowBlank allowOther allowEdit "prompt:vælg.." rows:1 +Ja-Nej'></span></html>}}} |background-color:green; Stedsegrøn {{center toolbar{<<tiddler {{if (readOnly) place.style.display='none';'';}}>><html><span macro='select stedsegroen allowBlank allowOther allowEdit "prompt:vælg.." rows:1 +Ja-Nej'></span></html>}}} |h
|<<wikify [[%0]] "##Højde" "skriv noget">>|<<wikify [[%0]] "##Bredde" "skriv noget">>|<<wikify [[%0]] "##Blomstringstid" "skriv noget">>|<<wikify [[%0]] {{store.getValue(tiddler.title,"bladtype")||"vælg en bladtype"}}>>|<<wikify [[%0]] {{store.getValue(tiddler.title,"bladstilling")||"vælg en bladstilling"}}>>|<<wikify [[%0]] {{store.getValue(tiddler.title,"loevfaeldende")||"vælg [[ja eller nej|Ja-Nej]]"}}>>|<<wikify [[%0]] {{store.getValue(tiddler.title,"stedsegroen")||"vælg [[ja eller nej|Ja-Nej]]"}}>>|
|background-color:green; !Beskrivelse {{center toolbar{<<editSection "##Beskrivelse">>}}} |>|>|>|>|>|<<wikify [[%0]] "##Beskrivelse" "skriv noget">>|

|widetable|k
|background-color:green;Anvendelse {{floatright toolbar{<<editSection "##Anvendelse">>}}}|h
|<<wikify [[%0]] "##Anvendelse" "skriv noget">>|

|widetable|k
|background-color:green;Krav {{floatright toolbar{<<editSection "##Krav">>}}}|h
|<<wikify [[%0]] "##Krav" "skriv noget">>|

|widetable|k
|background-color:green;Pleje {{floatright toolbar{<<editSection "##Pleje">>}}}|h
|<<wikify [[%0]] "##Pleje" "skriv noget">>|
}}}
}}}/%
!VisBillede
<<tiddler "PlanteSektioner##BilledeVis" with:{{tiddler.title}}{{store.getTiddlerText("ImagePathList","")}}>>
!BilledeVis
{{center toolbar{<<editSection "##" "redigér alt">>}}}
{{center{<<wikify [img(276px+,183px+)[%0]] {{store.getValue(tiddler.title,"billede")||"$2$1.jpg"}}>>}}}
{{center{<<tiddler {{if (readOnly) place.style.display='none';'';}}>><html><span macro='select billede allowOther "prompt:vælg et alternativt billede" "rows:1" "$2$1.jpg"'></span></html>}}}
!end
%/{{hidden{
!Botanisk navn

!end
}}}{{hidden{
!Anvendelse
Test
!end
}}}{{hidden{
!Billede
http://xn--mns-ula.dk/VideoStudio/screenshot5.png
!end
}}}
{{hidden{
!Anvendelse

!Pleje

!Info

! 
}}}
<!--{{{-->
<div class='box7'>
<div class='tagInfo infoTags'>
    <div class='tidTags' macro='tags'></div>
</div>
<div class='toolbar'
<span class='floatright' macro='toolbar [[ToolbarCommands::ViewToolbar]] icons:yes height:16 width:16 more:popup'></span>
 <span macro='tiddler CycleTags with:"TagCyklus"'><|</span>
<span class='floatleft' macro='tiddler RefreshTiddler with:"|Billeder|>"'></span>
</div>
<div class='heading'>
    <span class="titleBar">
        <div class='title' macro='view title text'></div>
        <div class="subtitle">
            senest redigeret d.
            <span macro="view modified date"></span>
            af
            <span macro='view modifier link'></span>
        </div>
    </span>
    <div class='tagClear'></div>
</div>
<div class='content'>
<div macro='hideWhenTagged Slide'>
<div macro='showWhenTagged Billeder'>
    <div class='viewer' macro='tiddler MasterTemplate##BillederViewTemplate'></div>
</div></div>
<div macro='showWhenTagged Slide'><div class='viewer' macro='tiddler MasterTemplate##BillederSlideViewTemplate'></div>
</div>
<div macro='hideWhenTaggedAny Billeder Slide'>
    <div class='viewer' macro='tiddler MasterTemplate##BilledeViewTemplate'></div>
</div>
    <div class='viewer' macro='view text wikified'></div>
</div>
<div class='tagInfo infoTagging'>
    <div class='tagging' macro='tagging'></div>
</div>
</div>
<span class="openTiddler" macro='tiddler OnLoad'/>
<!--}}}-->
{{center toolbar{<<editSection Bladstilling "redigér stillinger">>}}}@@display:block;height:30em;overflow:auto;
<<tiddler [[Planter grupperet efter type##Ceta]] with: Plante bladstilling Bladstilling>>
@@@@display:block;text-align:right;^^rul ned for mere...^^@@
{{center toolbar{<<editSection Bladtype "redigér typer">>}}}@@display:block;height:30em;overflow:auto;
<<tiddler [[Planter grupperet efter type##Ceta]] with: Plante bladtype Bladtype>>
@@@@display:block;text-align:right;^^rul ned for mere...^^@@
{{center toolbar{<<editSection Type "redigér typer">>}}}@@display:block;height:30em;overflow:auto;
<<tiddler [[Planter grupperet efter type##Ceta]] with: Plante type Type>>
@@@@display:block;text-align:right;^^rul ned for mere...^^@@
/%
!KunFelter
<<forEachTiddler
where 'store.getValue(tiddler, "type") && store.getValue(tiddler,"type").contains("Træ")'
 sortBy 
 'getSortedTagsText(tiddler)+"###"+tiddler.title'
 script
 'function getSortedTagsText(tiddler) {var tags = tiddler.tags; if (!tags) return ""; tags.sort(); var result = ""; for (var i = 0; i < tags.length;i++) {result += tags[i]+ " ";} return result;} function getGroupTitle(tiddler, context) {if (!context.lastGroup || context.lastGroup != getSortedTagsText(tiddler)) { context.lastGroup = getSortedTagsText(tiddler); return "* {{{"+(context.lastGroup?context.lastGroup:"no tags")+"}}}\n";} else return "";} '
 write
 'getGroupTitle(tiddler, context)+"** [[" + tiddler.title+"]]\n"'
>>
!Ceta
<<forEachTiddler 
 where 
 'tiddler.tags.contains("$1")&& ! tiddler.tags.contains("Tjek")&& ! tiddler.tags.contains("Mangler")'
sortBy 
 'getGroupCaption(tiddler)+"###"+tiddler.title'
    script
        '
        function getGroupCaption(tiddler) {
            return tiddler.fields["$2"]+"{{floatleft small{<<tiddler [[Planter grupperet efter type##Readonly]]>\>}}}";
        } 

        function getGroupTitle(tiddler, context) {
            if (!context.lastGroup || context.lastGroup != getGroupCaption(tiddler)) {
                context.lastGroup = getGroupCaption(tiddler); 
                return "|big red bold dp100|k\n|>|width:40%;font-size:36px; "+(context.lastGroup?context.lastGroup:"ingen type angivet endnu")+" |h\n";
            } else 
                return "";
        }
        '
    
    write
         'getGroupTitle(tiddler,context)+"|width:70%;font-size:16px;[img(100px,50px)["+store.getValue(tiddler,"title")+"|"+store.getTiddlerText("ImagePathList","")+""+store.getValue(tiddler,"title")+".jpg]["+tiddler.title+"]] <<tiddler [[Planter grupperet efter type##Vælg]] with:[["+store.getValue(tiddler,"title")+"]] $2 $3>\>  <<tiddler [[Planter grupperet efter type##Sektion]] with:[["+store.getValue(tiddler,"title")+"]]>\>  {{black{Botanisk navn: //(<<tiddler [["+store.getValue(tiddler,"title")+"##Botanisk navn]] %0>\>)//  sidst ændret:"+store.getValue(tiddler,"modified")+" af "+store.getValue(tiddler,"modifier")+"}}}  |\n"'
>>
!Vælg
<<tiddler {{if (readOnly) place.style.display='none';'';}}>><html><span macro='select "$2@$1" allowBlank allowOther allowEdit "prompt:vælg $2..." rows:1 +$3'></span></html>
!Readonly
<<tiddler {{if (readOnly) place.style.display='none';'';}}>><<tiddler RefreshTiddler with: genopfrisk>>
!Sektion
<<editSection "$1" "Dansk navn" "redigér $1">>: [[$1]]
! %/
{{hidden{
!Billede
Platan.jpg
!Botanisk navn
Platanus x hispanica
!Dansk navn
Platan
!Type
Træ
!Højde

!Bredde

!Blomstringstid

!Bladtype

!Bladstilling

!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse

!Anvendelse

!Krav

!Pleje

! 
}}}
/***
|''Name:''|~PopupMacro|
|''Description:''|create (nested) popups with custom content|
|''Documentation:''|http://tobibeer.tiddlyspace.com/#Popup|
|''Author:''|Tobias Beer (original author: Saq Imtiaz)|
|''Version:''|1.5.0 (2013-10-13)|
|''CoreVersion:''|2.5.3 or better|
|''Source''|https://raw.github.com/tobibeer/TiddlyWikiPlugins/master/plugins/PopupMacro.min.js|
/%***/
(function(e){var t=config.macros.popup={hover:true,toggle:false,sticky:false,arrow:document.all?" ▼":" ▾",hoverables:"#mainMenu",showAfter:400,showStandardAfter:800,enableHover:".button[tag], .tiddlyLink[tag]",disableHover:".slidr_button",err1:"missing macro parameters",err2:"missing label or content parameter",handler:function(n,r,i,s,o,u){var a,f,l,c,h,p=o.parseParams("anon",null,true),d={content:(i[1]||"").replace(/(\$\)\)|\>\+\>)/g,">>"),arrow:getParam(p,"arrow",t.arrow)},v=getParam(p,"class","");f=i[0];if(!f||!d.content){createTiddlyError(n,t.err1,t.err2);return false}["sticky","toggle","hover"].map(function(e){var n=getParam(p,e,t[e]);d[e]=i.contains("no"+e)?false:n||i.contains(e);if(n=="true")d[e]=1;if(n=="false")d[e]=0});if(i.contains("noarrow"))d.arrow="";a=e(createTiddlyButton(n,f+d.arrow,f,d.toggle?t.toggleButton:t.show,"button popupbutton"+(v?" "+v:""),null,null));d.popclass="popup popupmacro"+(t.inPopup(a)?" nested":"")+(v?" "+v:"");d.show=!d.hover;a.data(d);if(d.hover){a.on("mouseover",t.showAfter?t.delay:t.show);a.on("mouseout",t.abort)}},delay:function(n){var r=e(this.innerHTML?this:n);r.data("show",true);setTimeout(function(){if(r.data("show")){if(r.is(".popupbutton"))t.show(r[0]);else r.click()}},r.is(".popupbutton")?t.showAfter:t.showStandardAfter)},abort:function(t){e(this).data("show",false)},toggleButton:function(n){var r=e(this),i=r.data("popup");if(i)Popup.removeFrom(e(i).data("level"));else t.show.apply(this,arguments)},show:function(n){n=n||window.event;var r,i=Popup.stack.length,s=e(this.innerHTML?this:n),o=t.inPopup(s),u=o?s.closest(".popup").data("level"):0;if(!s.data("popup")){if(!o&&i)Popup.removeFrom(0);else if(o&&i>1){i=u+1;Popup.removeFrom(i)}r=createTiddlyElement(document.body,"ol",null,s.data("popclass")+(i?" nested"+i:""),null);s.data("popup",r).addClass("popupopen");e(r).data({button:s,level:i,sticky:s.data("sticky")}).click(t.popupClick);Popup.stack.push({root:s[0],popup:r});wikify(s.data("content"),r);Popup.show(r,true)}if(n){n.cancelBubble=true;if(n.stopPropagation)n.stopPropagation()}return false},popupClick:function(t){var t=t||window.event,n=e(this).closest(".popup"),r=resolveTarget(t),i=e(r).closest("a").length;Popup.removeFrom(n.data("level")+1);if(i&&!n.data("sticky")){Popup.remove()}else{t.cancelBubble=true;if(t.stopPropagation)t.stopPropagation()}return false},inPopup:function(t){return e(t).closest(".popup").length},linkOver:function(n){var r=e(this),i=r.closest(".popup").data("level")||0;Popup.removeFrom(i);if((r.is(t.enableHover)||r.data("tiddlers"))&&!r.is(t.disableHover))t.delay(r)},makeHoverable:function(n){var r=e(n);if(r.is("a")&&r.closest(t.hoverables).length&&!r.is(".popupbutton")){r.off("mouseover",t.linkOver);r.on("mouseover",t.linkOver);r.off("mouseout",t.abort);r.on("mouseout",t.abort)}}};window.refreshElementsPOPUP=window.refreshElements,window.refreshElements=function(n,r){window.refreshElementsPOPUP.apply(this,arguments);var i=e(n);e("a",i).add(i).each(function(){t.makeHoverable(this)})};window.invokeMacroPOPUP=window.invokeMacro;window.invokeMacro=function(r,i,s,o,u){window.invokeMacroPOPUP.apply(this,arguments);var a=e(r.lastChild);e("a",a).add(a).each(function(){t.makeHoverable(this)})};Popup.removeFromPOPUP=Popup.removeFrom;Popup.removeFrom=function(t){var n,r,i;for(i=Popup.stack.length-1;i>=t;i--){r=Popup.stack[i],e(r.root).removeData("popup").removeClass("popupopen")}Popup.removeFromPOPUP.apply(this,arguments)};setStylesheet(".nested {padding:3px;margin:-0.5em 0 0 2em !important;}"+".popupbutton {cursor:pointer};","PopupMacroStyles")})(jQuery)
//}%/
/*{{{*/
/* This establishes the design of the boxes' paragraphs */
.box1 p, .box2 p, .box3 p, .box4 p, .box5 p, .box6 p, .box7 p, .box9 p, .box10 p, .box11 p, .box12 p, .box13 p, .box14 p, .box15 p, .box16 p{
margin: 30px;
color: #aaa;
outline: none;
}
 
/* In this selector we specify  the width, height, borders, position, background color, color and shadow's dimensions */
.box1{
    margin: 40px;
    min-height: 200px;
    position:relative;
    display: inline-block;
    background:#fff;
    background: -webkit-gradient(linear, 0% 20%, 0% 1000%, from(#fff), to(#fff), color-stop(.1,#f3f3f3));
    background: -moz-linear-gradient(0% 0%, #fff, #f3f3f3 10%, #fff);
    border: 1px solid #ccc;
    -webkit-box-shadow: 0px 3px 30px rgba(0, 0, 0, 0.1) inset;
    -moz-box-shadow: 0px 3px 30px rgba(0, 0, 0, 0.1) inset;
    box-shadow: 0px 3px 30px rgba(0, 0, 0, 0.1) inset;
    -webkit-border-bottom-right-radius: 6px 50px;
    -moz-border-radius-bottomright: 6px 50px;
    border-bottom-right-radius:6px 50px;
}
 
/* On this pseudo class we specify the design that goes prior the box1 class, in this case it's the shadow placed at the bottom of this box, here's where we determine the measures, rotation and skew of the shadow itself */
.box1:before{
    content: '';
    width: 50px;
    height: 100px;
    position:absolute;
    bottom:0; right:0;
    -webkit-box-shadow: 20px 20px 10px rgba(0, 0, 0, 0.1);
    -moz-box-shadow: 20px 20px 15px rgba(0, 0, 0, 0.1);
    box-shadow: 20px 20px 15px rgba(0, 0, 0, 0.1);
    z-index:-1;
    -webkit-transform: translate(-35px,-40px)
                        skew(0deg,30deg)
                        rotate(-25deg);
    -moz-transform: translate(-35px,-40px)
                        skew(0deg,32deg)
                        rotate(-25deg);
    -o-transform: translate(-35px,-40px)
                        skew(0deg,32deg)
                        rotate(-25deg);
}
 
/* On this pseudo class we specify the design that goes prior the box1 class, in this case it's the shadow placed on top of the box, here's where we determine the measures, rotation and the skew of the shadow itself*/
.box1:after{
    content: '';
    width: 100px;
    height: 100px;
    top:0; left:0;
    position:absolute;
    display: inline-block;
    z-index:-1;
    -webkit-box-shadow: -10px -10px 10px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: -10px -10px 15px rgba(0, 0, 0, 0.2);
    box-shadow: -10px -10px 15px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(2deg)
                        translate(20px,25px)
                        skew(20deg);
    -moz-transform: rotate(7deg)
                        translate(20px,25px)
                        skew(20deg);
    -o-transform: rotate(7deg)
                        translate(20px,25px)
                        skew(20deg);
        transform: rotate(7deg)
                        translate(20px,25px)
                        skew(20deg);
}
/* This is the second selector of the box, we assign some specific measure values, background colors, borders and shadows */
.box2{
    margin: 50px;
    min-height: 150px;
    padding: 0 0 1px 0;
    position:relative;
    background: #f3f3f3;
    background: -webkit-gradient(linear, 0% 20%, 0% 92%, from(#f3f3f3), to(#fff), color-stop(.1,#f3f3f3));
    background: -moz-linear-gradient(0 0 270deg, #f3f3f3, #f3f3f3 10%, #fff);
    border-top: 1px solid #ccc;
    border-right: 1px solid #ccc;
    -webkit-border-bottom-right-radius: 60px 60px;
    -moz-border-radius-bottomright: 60px 60px;
    border-bottom-right-radius: 60px 60px;
    -webkit-box-shadow: -1px 2px 2px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: -1px 2px 2px rgba(0, 0, 0, 0.2);
    box-shadow: -1px 2px 2px rgba(0, 0, 0, 0.2);
 
}
.box2:before{
    content:'';
    width: 25px;
    height: 20px;
    position: absolute;
    bottom:0;
    right:0;
    -webkit-border-bottom-right-radius: 30px;
    -moz-border-radius-bottomright: 30px;
    border-bottom-right-radius: 30px;
    -webkit-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    -moz-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    box-shadow:-2px -2px 5px rgba(0, 0, 0, 0.3);
    -webkit-transform:  rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
    -moz-transform: rotate(-20deg)
                    skew(-40deg,-3deg)
                    translate(-13px,-13px);
    -o-transform:   rotate(-20deg)
                    skew(-40deg,-3deg)
                    translate(-13px,-13px);
                    transform:
                    rotate(-20deg)
                    skew(-40deg,-3deg)
                    translate(-13px,-13px);
}
 
/* Here's where we make the shading of the folds*/
.box2:after{
    content: '';
    z-index: -1;
    width: 100px;
    height: 100px;
    position:absolute;
    bottom:0;
    right:0;
    background: rgba(0, 0, 0, 0.2);
    display: inline-block;
    -webkit-box-shadow: 20px 20px 8px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 20px 20px 18px rgba(0, 0, 0, 0.2);
    box-shadow: 20px 20px 8px rgba()0,0,0,0.2;
    -webkit-transform: rotate(0deg)
                        translate(-45px,-20px)
                        skew(20deg);
    -moz-transform: rotate(0deg)
                    translate(-45px,-20px)
                       skew(20deg);
    -o-transform: rotate(0deg)
                    translate(-45px,-20px)
                       skew(20deg);
    transform: rotate(0deg)
                translate(-45px,-20px)
                skew(20deg);
}
/* This is the selector of the third box, here's where we specify the measure values, background colors, borders and shadows */
.box3{
    margin: 50px;
    padding: 5px 0 ;
    position:relative;
    background:#fff;
    background: -webkit-gradient(linear, 0% 20%, 0% 92%, from(#fff), to(#f3f3f3), color-stop(.1,#fff));
    border: 1px solid #ccc;
    -webkit-border-radius: 60px 5px;
    -moz-border-radius: 60px/5px;
    border-radius:60px/5px;
    -webkit-box-shadow: 0px 0px 35px rgba(0, 0, 0, 0.1) inset;
    -moz-box-shadow: 0px 0px 35px rgba(0, 0, 0, 0.1) inset;
    box-shadow: 0px 0px 35px rgba(0, 0, 0, 0.1) inset;
}
 
/* In this pseudo class we generate the right top shadow */
.box3:before{
    content: '';
    width: 50px;
    height: 50px;
    top:0; right:0;
    position:absolute;
    display: inline-block;
    z-index:-1;
    -webkit-box-shadow: 10px -10px 8px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 10px -10px 8px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(2deg)
                        translate(-14px,20px)
                        skew(-20deg);
    -moz-transform: rotate(2deg)
                        translate(-14px,20px)
                        skew(-20deg);
    -o-transform: rotate(2deg)
                        translate(-14px,20px)
                        skew(-20deg);
    transform: rotate(2deg)
                        translate(-14px,20px)
                        skew(-20deg);
}
 
/* In this pseudo class we generate the top right shadow */
.box3:after{
    content: '';
    width: 100px;
    height: 100px;
    top:0; left:0;
    position:absolute;
    z-index:-1;
    display: inline-block;
    -webkit-box-shadow: -10px -10px 10px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: -10px -10px 10px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(2deg)
                        translate(20px,25px)
                        skew(20deg);
    -moz-transform: rotate(2deg)
                        translate(20px,25px)
                        skew(20deg);
    -o-transform: rotate(2deg)
                        translate(20px,25px)
                        skew(20deg);
    transform: rotate(2deg)
               translate(20px,25px)
               skew(20deg);
}
/* This is the selector of the fourth box, here's where we establish the measures, background colors, borders and shadows */
.box4{
    margin: 50px;
    min-height: 100px;
    padding: 5px 0 ;
    position:relative;
    background: #fff;
    background: -webkit-gradient(linear, 0% 20%, 0% 100%, from(#fff), to(#fff), color-stop(.2, #f2f2f2));
    background: -moz-linear-gradient(0% 0% 360deg, #fff, #f2f2f2 20%, #fff );
    border: 1px solid #ccc;
    -webkit-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.3);
    -moz-box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.3);
    box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.3);
}
 
/* This is the top right shadow*/
.box4:before{
    content: '';
    width: 50px;
    height: 50px;
    top:0; right:0;
    position:absolute;
    z-index: -1;
    -webkit-box-shadow: 10px -10px 8px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 10px -10px 8px rgba(0, 0, 0, 0.2);
    box-shadow: 10px -10px 8px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(2deg)
                        translate(-14px,20px)
                        skew(-20deg);
    -moz-transform: rotate(2deg)
                        translate(-14px,20px)
                        skew(-20deg);
        -o-transform: rotate(2deg)
                        translate(-14px,20px)
                        skew(-20deg);
                transform: rotate(2deg)
                        translate(-14px,20px)
                        skew(-20deg);
}
 
/* This is the top left shadow*/
.box4:after{
    content: '';
    width: 50px;
    height: 50px;
    top:0; left:0;
    position:absolute;
    z-index:-1;
    display: inline-block;
    -webkit-box-shadow: -10px -10px 10px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: -10px -10px 10px rgba(0, 0, 0, 0.2);
    box-shadow: -10px -10px 10px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(2deg)
                        translate(12px,25px)
                        skew(20deg);
    -moz-transform: rotate(2deg)
                        translate(12px,25px)
                        skew(20deg);
    -o-transform: rotate(2deg)
                        translate(12px,25px)
                        skew(20deg);
    transform: rotate(2deg)
                        translate(12px,25px)
                        skew(20deg);
}
 
/* This is the bottom right shadow */
.shr_box4{
    width: 100px;
    height: 100px;
    bottom:0; right:0;
    position:absolute;
    z-index: -1;
    -webkit-box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.2);
    box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(0deg)
                        translate(-20px,-15px)
                       skew(20deg);
    -moz-transform: rotate(0deg)
                        translate(-20px,-15px)
                       skew(20deg);
    -o-transform: rotate(0deg)
                        translate(-20px,-15px)
                       skew(20deg);
        transform: rotate(0deg)
                        translate(-20px,-15px)
                       skew(20deg);
}
 
/* This is the bottom left shadow */
.shl_box4{
    content: '';
    width: 100px;
    height: 100px;
    bottom:0; left:0;
    position:absolute;
    z-index: -1;
    -webkit-box-shadow: -10px 10px 10px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: -10px 10px 10px rgba(0, 0, 0, 0.2);
    box-shadow: -10px 10px 10px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(0deg)
                        translate(20px,-15px)
                       skew(-20deg);
    -moz-transform: rotate(0deg)
                        translate(20px,-15px)
                       skew(-20deg);
    -o-transform: rotate(0deg)
                        translate(20px,-15px)
                       skew(-20deg);
    transform: rotate(0deg)
                        translate(20px,-15px)
                       skew(-20deg);
}
/* This is the selector of the fifth box, here's where we establish the measures, background colors, borders and shadows */
.box5{
    margin: 50px;
    padding: 0 0 1px 0;
    position:relative;
    background: #f3f3f3;
    background: -webkit-gradient(linear, 0% 20%, 0% 92%, from(#f3f3f3), to(#fff), color-stop(.1,#f3f3f3));
    background: -moz-linear-gradient(0 0 270deg, #f3f3f3, #f3f3f3 10%, #fff);
    border-top: 1px solid #ccc;
    border-right: 1px solid #ccc;
    -webkit-border-bottom-right-radius: 60px 60px;
    -webkit-border-bottom-left-radius: 60px 60px;
    -moz-border-radius-bottomright: 60px 60px;
    -moz-border-radius-bottomleft: 60px 60px;
    border-bottom-left-radius:60px 60px;
    border-bottom-right-radius: 60px 60px;
    -webkit-box-shadow: -1px 2px 2px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: -1px 2px 2px rgba(0, 0, 0, 0.2);
    box-shadow: -1px 2px 2px rgba(0, 0, 0, 0.2);
}
 
/* This is the left fold */
.box5:before{
    content:'';
    width: 25px;
    height: 20px;
    background: white;
    position: absolute;
    bottom:0; right:0;
    background: -webkit-gradient(linear, 0% 20%, 50% 40%, from(#fff), to( #eee), color-stop(.1,#fff));
    background: -moz-linear-gradient(0 50% 90deg, #fff, #fff 10%, #eee);
    -webkit-border-bottom-right-radius: 30px;
    -moz-border-radius-bottomright: 30px;
    border-bottom-right-radius: 30px;
    -webkit-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    -moz-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    -webkit-transform: rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
    -moz-transform: rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
    -o-transform: rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
        transform: rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
}
 
/* In this pseudo class we make the shading for the left fold */
.box5:after{
    content: '';
    z-index: -10;
    width: 100px;
    height: 100px;
    position:absolute;
    bottom:0;
    right:0;
    background: rgba(0, 0, 0, 0.2);
    display: inline-block;
    -webkit-box-shadow: 20px 20px 8px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 20px 20px 18px rgba(0, 0, 0, 0.2);
    box-shadow: 20px 20px 8px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(0deg)
                        translate(-45px,-20px)
                        skew(20deg);
    -moz-transform: rotate(0deg)
                        translate(-45px,-20px)
                        skew(20deg);
        -o-transform: rotate(0deg)
                        translate(-45px,-20px)
                        skew(20deg);
        transform: rotate(0deg)
                        translate(-45px,-20px)
                        skew(20deg);
}
 
/* Here comes the bottom right shadow */
.fold_box5{
    z-index: -10;
    width: 50px;
    height: 50px;
    position:absolute;
    bottom:0; left:0;
    -webkit-box-shadow: -20px 20px 8px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: -20px 20px 18px rgba(0, 0, 0, 0.2);
    box-shadow: -20px 20px 8px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(0deg)
                        translate(40px,-20px)
                        skew(-20deg);
    -moz-transform: rotate(0deg)
                        translate(40px,-20px)
                        skew(-20deg);
    -o-transform: rotate(0deg)
                        translate(40px,-20px)
                        skew(-20deg);
    transform: rotate(0deg)
                        translate(40px,-20px)
                        skew(-20deg);
}
 
/* In this selector we make the fold of the bottom left side */
.fold2_box5{
    content:'';
    width: 25px;
    height: 20px;
    background: white;
    position: absolute;
    bottom:0; left:0;
    background: #fff;
    background: -webkit-gradient(linear, 0% 20%, 50% 80%, from(#fff), to( #eee), color-stop(.1,#fff));
    background: -moz-linear-gradient(0 50%, #fff, #fff 10%, #eee);
    -webkit-border-bottom-right-radius: 30px;
    -moz-border-radius-bottomright: 30px;
    border-bottom-right-radius: 30px;
    -webkit-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    -moz-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    -webkit-transform: rotate(103deg)
                        skew(-3deg,-40deg)
                        translate(-13px,-15px);
    -moz-transform: rotate(103deg)
                        skew(-3deg,-40deg)
                        translate(-13px,-15px);
    -o-transform: rotate(103deg)
                        skew(-3deg,-40deg)
                        translate(-13px,-15px);
}
/* This is the selector of the sixth box, here's where we establish the measures, background colors, borders and shadows */
.box6{
    margin: 50px;
    min-height: 150px;
    padding: 0 0 1px 0;
    position:relative;
    background:#fff;
    background: -webkit-gradient(linear, 0% 20%, 0% 92%, from(#fff), to(#f3f3f3), color-stop(.1,#fff));
    background: -moz-linear-gradient(0 0 270deg, #fff, #fff 10%, #f3f3f3);
    border-top: 1px solid #ccc;
    border-right: 1px solid #ccc;
    border-left: 1px solid #ccc;
    -webkit-border-top-left-radius: 60px 5px;
    -webkit-border-top-right-radius: 60px 5px;
    -webkit-border-bottom-right-radius: 60px 60px;
    -moz-border-radius-topleft: 60px 5px;
    -moz-border-radius-topright: 60px 5px;
    -moz-border-radius-bottomright: 60px 60px;
    border-top-left-radius: 60px 5px;
    border-top-right-radius: 60px 5px;
    border-bottom-right-radius: 60px 60px;
    -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.3) ;
    -moz-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.3) ;
    box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.3) ;
}
 
/* In this pseudo class we create the fold for the bottom side of the box */
.box6:before{
    content:'';
    width: 25px;
    height: 20px;
    position: absolute;
    bottom:0;
    right:0;
    -webkit-border-bottom-right-radius: 30px;
    -moz-border-radius-bottomright: 30px;
    border-bottom-right-radius: 30px;
    -webkit-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    -moz-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    -webkit-transform:  rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
    -moz-transform: rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
    -o-transform:   rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
    transform:  rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
}
 
/* In this pseudo class named box6 we generate the shading of the fold */
.box6:after{
    content: '';
    z-index: -10;
    width: 100px;
    height: 100px;
    position:absolute;
    bottom:0;
    right:0;
    background: rgba(0, 0, 0, 0.2);
    display: inline-block;
    -webkit-box-shadow: 20px 20px 8px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 20px 20px 8px rgba(0, 0, 0, 0.2);
    box-shadow: 20px 20px 8px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(0deg)
                        translate(-45px,-20px)
                        skew(20deg);
    -moz-transform: rotate(0deg)
                        translate(-45px,-20px)
                        skew(20deg);
    -o-transform: rotate(0deg)
                        translate(-45px,-20px)
                        skew(20deg);
    transform: rotate(0deg)
                        translate(-45px,-20px)
                        skew(20deg);
}
 
/* On this class we establish the shadow of the top right section */
.box6_corner_lf{
    width: 100px;
    height: 100px;
    top:0; left:0;
    position:absolute;
    z-index:-6;
    display: inline-block;
    -webkit-box-shadow: -10px -10px 10px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: -10px -10px 10px rgba(0, 0, 0, 0.2);
    box-shadow: -10px -10px 20px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(2deg)
                        translate(20px,25px)
                        skew(20deg);
    -moz-transform: rotate(2deg)
                        translate(20px,20px)
                        skew(20deg);
    -o-transform: rotate(2deg)
                        translate(20px,20px)
                        skew(20deg);
    transform: rotate(2deg)
                        translate(20px,20px)
                        skew(20deg);
}
 
/* On this class we define the shadow of the top left area */
.box6_corner_rt{
    content: '';
    width: 50px;
    height: 50px;
    top:0; right:0;
    position:absolute;
    display: inline-block;
    z-index:-6;
    -webkit-box-shadow: 10px -10px 8px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 10px -10px 18px rgba(0, 0, 0, 0.2);
    box-shadow: 10px -10px 8px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(2deg)
                        translate(-14px,20px)
                        skew(-20deg);
    -moz-transform: rotate(2deg)
                        translate(-14px,15px)
                        skew(-20deg);
    -o-transform: rotate(2deg)
                        translate(-14px,15px)
                        skew(-20deg);
    transform: rotate(2deg)
                        translate(-14px,15px)
                        skew(-20deg);
}
/* This is the selector of the seventh box, here's where we establish the measures, background colors, borders and shadows */
.box7{
    margin: 50px;
    min-height: 150px;
    padding: 0 0 1px 0;
    position:relative;
    background: #fff;
    background: -webkit-gradient(linear, 0% 20%, 0% 92%, from(#fff), to(#f3f3f3), color-stop(.1,#fff));
    background: -moz-linear-gradient(0 0 270deg, #fff, #fff 10%, #f3f3f3);
    border-top: 1px solid #ccc;
    border-right: 1px solid #ccc;
    border-left: 1px solid #ccc;
    -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
}
 
/* This is the top left tape */
.box7:before{
    content: '';
    position:absolute;
    width: 130px;
    height: 30px;
    border-left: 1px dashed rgba(0, 0, 0, 0.1);
    border-right: 1px dashed rgba(0, 0, 0, 0.1);
    background: rgba(0, 0, 0, 0.1);
    background: -webkit-gradient(linear, 555% 20%, 0% 92%, from(rgba(0, 0, 0, 0.1)), to(rgba(0, 0, 0, 0.0)), color-stop(.1,rgba(0, 0, 0, 0.2)));
    background: -moz-linear-gradient(555% 0 180deg, rgba(0,0,0,0.1), rgba(0,0,0,0.2) 10%, rgba(0,0,0,0.0));
    -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    -webkit-transform:translate(-50px,10px)
                        skew(10deg,10deg)
                        rotate(-50deg);
    -moz-transform:translate(-50px,10px)
                        skew(10deg,10deg)
                        rotate(-50deg);
        -o-transform:translate(-50px,10px)
                        skew(10deg,10deg)
                        rotate(-50deg);
        transform:translate(-50px,10px)
                        skew(10deg,10deg)
                        rotate(-50deg);
}
 
/* This is the top bottom right tape */
.box7:after{
    content: '';
    position:absolute;
    right:0;
    bottom:0;
    width: 130px;
    height: 30px;
    background: rgba(0, 0, 0, 0.1);
    background: -webkit-gradient(linear, 555% 20%, 0% 92%, from(rgba(0, 0, 0, 0.1)), to(rgba(0, 0, 0, 0.0)), color-stop(.1,rgba(0, 0, 0, 0.2)));
    background: -moz-linear-gradient(555% 0 180deg, rgba(0,0,0,0.1), rgba(0,0,0,0.2) 10%, rgba(0,0,0,0.0));
    border-left: 1px dashed rgba(0, 0, 0, 0.1);
    border-right: 1px dashed rgba(0, 0, 0, 0.1);
    -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    -webkit-transform: translate(50px,-20px)
                        skew(10deg,10deg)
                        rotate(-50deg);
    -moz-transform: translate(50px,-20px)
                        skew(10deg,10deg)
                        rotate(-50deg);
    -o-transform: translate(50px,-20px)
                        skew(10deg,10deg)
                        rotate(-50deg);
    transform: translate(50px,-20px)
                        skew(10deg,10deg)
                        rotate(-50deg)
}
/* This is the selector of the eight box, here's where we establish the measures, background colors, borders and shadows */
.box8{
    margin: 70px 50px;
    min-height: 250px;
    position:relative;
    border: 2px solid #ccc;
    background: rgba(0, 0, 0, 0.5);
    -webkit-box-shadow: 0px 1px 12px rgba(0, 0, 0, 0.1);
    -moz-box-shadow: 0px 1px 12px rgba(0, 0, 0, 0.1);
    box-shadow: 0px 1px 12px rgba(0, 0, 0, 0.1);
}
 
/* This pseudo class is the picture's frame */
.box8:before{
    content: '';
    width: 110%;
    left: 0;
    height: 125%;
    z-index:-1;
    position:absolute;
    border: 1px solid #ccc;
    background: #f3f3f3;
    background: -webkit-gradient(linear, 0% 20%, 0% 92%, from(#f3f3f3), to(#fff), color-stop(.1,#f3f3f3));
    background: -moz-linear-gradient(0 0 90deg, #f3f3f3, #f3f3f3 10%, #fff);
    -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.1);
    -moz-box-shadow: 0px 0px 12px rgba(0,0,0,0.1);
    box-shadow: 0px 0px 12px rgba(0,0,0,0.1);
    -webkit-transform: translate(-5%,-5%);
    -moz-transform: translate(-5%, -5%);
    -o-transform: translate(-5%, -5%);
    transform: translate(-5%, -5%);
}
 
/* This pseudo class is the frame's global shadow */
.box8:after{
    content: '';
    width: 100%;
    left: 0;
    height: 115%;
    z-index:-2;
    background: none;
    position:absolute;
    -webkit-border-radius: 20px;
    -moz-border-radius: 20px;
    border-radius: 20px;
    -webkit-box-shadow: 15px 0px 30px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 15px 0px 30px rgba(0, 0, 0, 0.2);
    box-shadow: 15px 0px 30px rgba(0, 0, 0, 0.2);
    -webkit-transform: translate(0,0);
    -moz-transform: translate(0,0);
    -o-transform: translate(0,0);
    transform: translate(0,0);
}
/* This is the selector of the ninth box, here's where we establish the measures, background colors, borders and shadows */
.box9{
    margin: 70px 50px;
    min-height: 250px;
    position:relative;
    border: 1px solid rgba(0,0,0,0.1);
    -webkit-border-radius: 20px;
    -moz-border-radius: 20px;
    border-radius:20px;
    background: white;
    -webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.3);
    -moz-box-shadow: 0px 0px 5px rgba(0,0,0,0.3);
    box-shadow:0px 0px 5px rgba(0,0,0,0.3);
}
 
/* This is the border that envelops the box */
.box9:before{
    content: '';
    width: 110%;
    left: 0;
    height: 111%;
    z-index:-1;
    position:absolute;
    -webkit-border-radius: 20px;
    -moz-border-radius: 20px;
    border-radius:20px;
    border: 1px solid rgba(0,0,0, 0.1);
    background: rgba(0, 0, 0, 0.0);
    -webkit-box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0px 0px 5px rgba(0,0,0,0.2);
    box-shadow: 0px 0px 5px rgba(0,0,0,0.2);
    -webkit-transform:  translate(-5%,-5%);
    -moz-transform: translate(-5%, -5%);
    -o-transform: translate(-5%, -5%);
    transform: translate(-5%, -5%);
}
 
/* This is the tape of the top section of the box */
.box9:after{
    content: '';
    position:absolute;
    top:-25px; left: 30%;
    width: 130px;
    height: 40px;
    background: rgba(0, 0, 0, 0.1);
    background: -webkit-gradient(linear, 555% 20%, 0% 92%, from(rgba(0, 0, 0, 0.1)), to(rgba(0, 0, 0, 0.0)), color-stop(.1,rgba(0, 0, 0, 0.2)));
    background: -moz-linear-gradient(555% 0 180deg, rgba(0,0,0,0.1), rgba(0,0,0,0.2) 10%, rgba(0,0,0,0.0));
    border-left: 1px dashed rgba(0, 0, 0, 0.1);
    border-right: 1px dashed rgba(0, 0, 0, 0.1);
    -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0px 0px 12px rgba(0,0,0,0.2);
    box-shadow: 0px 0px 12px rgba(0,0,0,0.2);
}
/* This is the selector of the tenth box, here's where we establish the measures, background colors, borders and shadows */
.box10{
    margin: 50px;
    min-height: 150px;
    padding: 0 0 1px 0;
    position:relative;
    background: #fff;
    background: -webkit-gradient(linear, 100% 100%, 50% 10%, from(#fff), to(#f3f3f3), color-stop(.1,#fff));
    background: -moz-linear-gradient(100% 50%, #fff, #fff 10%, #f3f3f3);
    border: 1px solid #ccc;
    -webkit-box-shadow: 1px 1px 4px rgba(0,0,0, 0.1);
    -moz-box-shadow: 1px 1px 4px rgba(0,0,0, 0.1);
    box-shadow: 1px 1px 4px rgba(0,0,0, 0.1);
    -webkit-border-bottom-right-radius: 60px 5px;
    -moz-border-radius-bottomright: 60px 5px;
    border-bottom-right-radius: 60px 5px;
}
 
/* These (before and after ) pseudo class are the ones that give the multiple sheets effect*/
.box10:before{
    content: '';
    width: 98%;
    z-index:-1;
    height: 100%;
    padding: 0 0 1px 0;
    position: absolute;
    bottom:0; right:0;
    background: #fff;
    background: -webkit-gradient(linear, 0% 20%, 0% 92%, from(#fff), to(#f9f9f9), color-stop(.1,#fff));
    background: -moz-linear-gradient(0 0 270deg, #fff, #fff 10%, #f9f9f9);
    border: 1px solid #ccc;
    -webkit-box-shadow: 1px 1px 8px rgba(0,0,0, 0.1);
    -moz-box-shadow: 1px 1px 8px rgba(0,0,0,0.1);
    box-shadow: 1px 1px 8px rgba(0,0,0,0.1);
    -webkit-border-bottom-right-radius: 60px 5px;
    -moz-border-radius-bottomright: 60px 5px;
    border-bottom-right-radius: 60px 5px;
    -webkit-transform: skew(2deg,2deg)
                        translate(3px,8px);
    -moz-transform: skew(2deg,2deg)
                        translate(3px,8px);
        -o-transform: skew(2deg,2deg)
                        translate(3px,8px);
    transform: skew(2deg,2deg)
                        translate(3px,8px);
}
 
.box10:after{
    content: '';
    width: 98%;
    z-index:-1;
    height: 98%;
    padding: 0 0 1px 0;
    position: absolute;
    bottom:0; right:0;
    background: #fff;
    background: -webkit-gradient(linear, 0% 20%, 0% 100%, from(#f3f3f3), to(#f6f6f6), color-stop(.1,#fff));
    background: -moz-linear-gradient(0 0 360deg, #f3f3f3, #fff 10%, #f6f6f6);
    border: 1px solid #ccc;
    -webkit-box-shadow: 0px 0px 8px rgba(0,0,0, 0.1);
    -moz-box-shadow: 0px 0px 8px rgba(0,0,0, 0.1);
    box-shadow: 0px 0px 8px rgba(0,0,0, 0.1);
    -webkit-transform: skew(2deg,2deg)
                        translate(-1px,2px);
    -moz-transform: skew(2deg,2deg)
                        translate(-1px,2px) ;
        -o-transform: skew(2deg,2deg)
                        translate(-1px,2px) ;
    transform: skew(2deg,2deg)
                        translate(-1px,2px) ;
}
/* This is the selector of the eleventh box, here's where we establish the measures, background colors, borders and shadows */
.box11{
    margin: 50px;
    min-height: 150px;
    padding: 0 0 1px 0;
    position:relative;
    background: #f3f3f3;
    background: -webkit-gradient(linear, 0% 20%, 0% 92%, from(#f3f3f3), to(#fff), color-stop(.1,#f3f3f3));
    background: -moz-linear-gradient(0 0 270deg, #f3f3f3, #f3f3f3 10%, #fff);
    border-top: 1px solid white;
    border-right: 1px solid #ccc;
    -webkit-border-bottom-right-radius: 60px 60px;
    -moz-border-radius-bottomright: 60px 60px;
    border-bottom-right-radius: 60px 60px;
    -webkit-box-shadow: -1px 2px 2px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: -1px 2px 2px rgba(0,0,0,0.2);
    box-shadow: -1px 2px 2px rgba(0,0,0,0.2);
 
}
 
/* This pseudo class creates the bottom fold */
.box11:before{
    content:'';
    width: 25px;
    height: 20px;
    background: white;
    position: absolute;
    bottom:0; right:0;
    background:#fff;
    background: -webkit-gradient(linear, 0% 20%, 50% 40%, from(#fff), to( #eee), color-stop(.1,#fff));
    background: -moz-linear-gradient(0 50%, #fff, #fff 10%, #eee);
    -webkit-border-bottom-right-radius: 30px;
    -moz-border-radius-bottomright: 30px;
    border-bottom-right-radius: 30px;
    -webkit-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    -moz-box-shadow: -2px -2px 5px rgba(0,0,0,0.3);
    box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    -webkit-transform: rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
                        transform: rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
    -moz-transform: rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
                        transform: rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
    -o-transform: rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
                        transform: rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
    transform: rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
                        transform: rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
}
 
/* This is the shading of the fold */
.box11:after{
    content: '';
    z-index: -1;
    width: 100px;
    height: 100px;
    position:absolute;
    bottom:0;
    right:0;
    background: rgba(0, 0, 0, 0.2);
    display: inline-block;
    -webkit-box-shadow: 20px 20px 8px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 20px 20px 17px rgba(0,0,0,0.2);
    box-shadow: 20px 20px 17px rgba(0,0,0,0.2);
    -webkit-transform: rotate(0deg)
                        translate(-45px,-20px)
                        skew(20deg);
    -moz-transform: rotate(0deg)
                        translate(-40px,-17px)
                        skew(20deg);
    -o-transform: rotate(0deg)
                        translate(-40px,-17px)
                        skew(20deg);
    transform: rotate(0deg)
                        translate(-40px,-17px)
                        skew(20deg);
}
 
/* This is the top tape of the box */
.box11_tape{
    position:absolute;
    top:-25px; left: 30%;
    width: 130px;
    height: 40px;
    background:#ccc;
    background: -webkit-gradient(linear, 555% 20%, 0% 92%, from(rgba(0, 0, 0, 0.1)), to(rgba(0, 0, 0, 0.0)), color-stop(.1,rgba(0, 0, 0, 0.2)));
    background: -moz-linear-gradient(555% 0 180deg, rgba(0,0,0,0.1), rgba(0,0,0,0.2) 10%, rgba(0,0,0,0.0));
    border-left: 1px dashed rgba(0, 0, 0, 0.1);
    border-right: 1px dashed rgba(0, 0, 0, 0.1);
    -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
}
/* This is the selector of the twelfth box, here's where we establish the measures, background colors, borders and shadows */
.box12{
    margin: 50px;
    padding: 0 0 1px 0;
    position:relative;
    background:#f3f3f3;
    background: -webkit-gradient(linear, 0% 20%, 0% 92%, from(#f3f3f3), to(#fff), color-stop(.1,#f3f3f3));
    background: -moz-linear-gradient(0 0 270deg, #f3f3f3, #f3f3f3 10%, #fff);
    border-top: 1px solid #ccc;
    border-right: 1px solid #ccc;
    -webkit-border-bottom-right-radius: 60px 60px;
    -moz-border-radius-bottomright: 60px 60px;
    border-bottom-right-radius: 60px 60px;
    -webkit-border-bottom-left-radius: 60px 60px;
    -moz-border-radius-bottomleft: 60px 60px;
    border-bottom-left-radius: 60px 60px;
    -webkit-box-shadow: -1px 2px 2px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: -1px 2px 2px rgba(0, 0, 0, 0.2);
    box-shadow: -1px 2px 2px rgba(0, 0, 0, 0.2);
}
 
/* This is the bottom left fold */
.box12:before{
    content:'';
    width: 25px;
    height: 20px;
    background: white;
    position: absolute;
    bottom:0; right:0;
    background: -webkit-gradient(linear, 0% 20%, 50% 40%, from(#fff), to( #eee), color-stop(.1,#fff));
    background: -moz-linear-gradient(0 50%, #fff, #fff 10%, #eee);
    -webkit-border-bottom-right-radius: 30px;
    -moz-border-radius-bottomright: 30px;
    border-bottom-right-radius: 30px;
    -webkit-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    -moz-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    -webkit-transform: rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
    -moz-transform: rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
    -o-transform: rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
    transform: rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
}
 
/* This is the shading of the right fold */
.box12:after{
    content: '';
    z-index: -10;
    width: 100px;
    height: 100px;
    position:absolute;
    bottom:0;
    right:0;
    background: rgba(0, 0, 0, 0.2);
    display: inline-block;
    -webkit-box-shadow: 20px 20px 8px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 20px 20px 17px rgba(0, 0, 0, 0.2);
    box-shadow: 20px 20px 8px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(0deg)
                        translate(-45px,-20px)
                        skew(20deg);
    -moz-transform: rotate(0deg)
                        translate(-40px,-17px)
                        skew(20deg);
    -o-transform: rotate(0deg)
                        translate(-40px,-17px)
                        skew(20deg);
    transform: rotate(0deg)
                        translate(-45px,-20px)
                        skew(20deg);
}
 
/* This is the shading of the left fold */
.fold_box12{
    z-index: -10;
    width: 50px;
    height: 50px;
    position:absolute;
    bottom:0; left:0;
    -webkit-box-shadow: -20px 20px 8px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: -20px 20px 17px rgba(0, 0, 0, 0.2);
    box-shadow: -20px 20px 8px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(0deg)
                        translate(40px,-20px)
                        skew(-20deg);
    -moz-transform: rotate(0deg)
                        translate(40px,-17px)
                        skew(-20deg);
    -o-transform: rotate(0deg)
                        translate(40px,-17px)
                        skew(-20deg);
    transform: rotate(0deg)
                        translate(40px,-20px)
                        skew(-20deg);
}
 
/* This is the bottom left fold */
.fold2_box12{
    width: 25px;
    height: 20px;
    z-index:20;
    background: white;
    position: absolute;
    bottom:0; left:0;
    background: -webkit-gradient(linear, 0% 20%, 50% 80%, from(#fff), to( #eee), color-stop(.1,#fff));
    background: -moz-linear-gradient(0 50%, #fff, #fff 10%, #eee);
    -webkit-border-bottom-right-radius: 30px;
    -moz-border-radius-bottomright: 30px;
    border-bottom-right-radius: 30px;
    -webkit-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    -moz-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    -webkit-transform: rotate(103deg)
                        skew(-3deg,-40deg)
                        translate(-13px,-15px);
    -moz-transform: rotate(103deg)
                        skew(-3deg,-40deg)
                        translate(-13px,-15px);
    -o-transform: rotate(103deg)
                        skew(-3deg,-40deg)
                        translate(-13px,-15px);
    transform: rotate(103deg)
                        skew(-3deg,-40deg)
                        translate(-13px,-15px);
}
 
/* This is the top tape of the box */
.box12_tape{
    content: '';
    position:absolute;
    top:-25px; left: 30%;
    width: 130px;
    height: 40px;
    background: #ccc;
    background: -webkit-gradient(linear, 555% 20%, 0% 92%, from(rgba(0, 0, 0, 0.1)), to(rgba(0, 0, 0, 0.0)), color-stop(.1,rgba(0, 0, 0, 0.2)));
    background: -moz-linear-gradient(555% 0% 180deg, rgba(0,0,0,0.1), rgba(0,0,0,0.2) 10%, rgba(0,0,0,0.0));
    border-left: 1px dashed rgba(0, 0, 0, 0.1);
    border-right: 1px dashed rgba(0, 0, 0, 0.1);
    -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
}
/* This is the selector of the thirteenth box, here's where we establish the measures, background colors, borders and shadows */
.box13{
    margin: 50px;
    min-height: 150px;
    padding: 0 0 1px 0;
    position:relative;
    background:#fff;
    background: -webkit-gradient(linear, 0% 20%, 0% 92%, from(#fff), to(#f3f3f3), color-stop(.1,#fff));
    background: -moz-linear-gradient(0% 0% 270deg, #fff, #fff 10%, #f3f3f3);
    border-top: 1px solid #ccc;
    border-right: 1px solid #ccc;
    border-left: 1px solid #ccc;
    -webkit-border-top-left-radius: 60px 5px;
    -moz-border-radius-topleft:60px 5px;
    border-top-left-radius:60px 5px;
    -webkit-border-top-right-radius: 60px 5px;
    -moz-border-radius-topright:60px 5px;
    border-top-right-radius:60px 5px;
    -webkit-border-bottom-right-radius: 60px 60px;
    -moz-border-radius-bottomright:60px 60px;
    border-bottom-right-radius: 60px 60px;
    -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.3) ;
    -moz-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.3) ;
    box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.3) ;
}
 
/* This is the bottom left fold */
.box13:before{
    content:'';
    width: 25px;
    height: 20px;
    position: absolute;
    bottom:0;
    right:0;
    -webkit-border-bottom-right-radius: 30px;
    -moz-border-radius-bottomright: 30px;
    border-bottom-right-radius: 30px;
    -webkit-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    -moz-box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    box-shadow: -2px -2px 5px rgba(0, 0, 0, 0.3);
    -webkit-transform:
                        rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
    -moz-transform: rotate(-20deg)
                    skew(-40deg,-3deg)
                    translate(-13px,-13px);
    -o-transform:   rotate(-20deg)
                    skew(-40deg,-3deg)
                    translate(-13px,-13px);
    transform:  rotate(-20deg)
                        skew(-40deg,-3deg)
                        translate(-13px,-13px);
}
 
/* This is the fold's shading */
.box13:after{
    content: '';
    z-index: -10;
    width: 100px;
    height: 100px;
    position:absolute;
    bottom:0;
    right:0;
    background: rgba(0, 0, 0, 0.2);
    display: inline-block;
    -webkit-box-shadow: 20px 20px 8px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 20px 20px 18px rgba(0, 0, 0, 0.2);
    box-shadow: 20px 20px 8px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(0deg)
                        translate(-45px,-20px)
                        skew(20deg);
    -moz-transform: rotate(0deg)
                        translate(-45px,-20px)
                        skew(20deg);
    -o-transform: rotate(0deg)
                        translate(-45px,-20px)
                        skew(20deg);
    transform: rotate(0deg)
               translate(-45px,-20px)
               skew(20deg);
}
 
/* This is the top left shadow */
.box13_corner_lf{
    width: 100px;
    height: 100px;
    top:0; left:0;
    position:absolute;
    z-index:-6;
    display: inline-block;
    -webkit-box-shadow: -10px -10px 10px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: -10px -10px 10px rgba(0, 0, 0, 0.2);
    box-shadow: -10px -10px 10px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(2deg)
                        translate(20px,25px)
                        skew(20deg);
    -moz-transform: rotate(2deg)
                        translate(20px,25px)
                        skew(20deg);
    -o-transform: rotate(2deg)
                        translate(20px,25px)
                        skew(20deg);
    transform: rotate(2deg)
                translate(20px,25px)
                skew(20deg);
}
 
/* this is the top right shadow */
.box13_corner_rt{
    content: '';
    width: 50px;
    height: 50px;
    top:0; right:0;
    position:absolute;
    display: inline-block;
    z-index:-6;
    -webkit-box-shadow: 10px -10px 8px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 10px -10px 8px rgba(0, 0, 0, 0.2);
    box-shadow: 10px -10px 8px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(2deg)
                        translate(-14px,20px)
                        skew(-20deg);
    -moz-transform: rotate(2deg)
                        translate(-14px,20px)
                        skew(-20deg);
    -o-transform: rotate(2deg)
                        translate(-14px,20px)
                        skew(-20deg);
    transform: rotate(2deg)
               translate(-14px,20px)
               skew(-20deg);
}
 
/* This is the left side tape */
.box13_tape:before{
    content: '';
    position:absolute;
    top:0; left: 0;
    width: 130px;
    height: 40px;
    background:rgba(0,0,0,0.2);
    background: -webkit-gradient(linear, 555% 20%, 0% 92%, from(rgba(0, 0, 0, 0.1)), to(rgba(0, 0, 0, 0.0)), color-stop(.1,rgba(0, 0, 0, 0.2)));
    background: -moz-linear-gradient(555% 0% 180deg, rgba(0,0,0,0.1), rgba(0,0,0,0.2) 10%, rgba(0,0,0,0.0));
    border-left: 1px dashed rgba(0, 0, 0, 0.1);
    border-right: 1px dashed rgba(0, 0, 0, 0.1);
    -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(90deg) skew(0,0) translate(100px,65px);
    -moz-transform: rotate(90deg) skew(0,0) translate(100px,65px);
    -o-transform: rotate(90deg) skew(0,0) translate(100px,65px);
    transform: rotate(90deg) skew(0,0) translate(100px,65px);
}
 
/* This is the right side tape */
.box13_tape:after{
    content: '';
    position:absolute;
    top:0; right: 0;
    width: 130px;
    height: 40px;
    background:rgba(0, 0, 0, 0.1);
    background: -webkit-gradient(linear, 555% 20%, 0% 92%, from(rgba(0, 0, 0, 0.1)), to(rgba(0, 0, 0, 0.0)), color-stop(.1,rgba(0, 0, 0, 0.2)));
    background: -moz-linear-gradient(555% 0% 180deg, rgba(0,0,0,0.1), rgba(0,0,0,0.2) 10%, rgba(0,0,0,0.0));
    border-left: 1px dashed rgba(0, 0, 0, 0.1);
    border-right: 1px dashed rgba(0, 0, 0, 0.1);
    -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(90deg) skew(0,0) translate(100px,-65px);
    -moz-transform: rotate(90deg) skew(0,0) translate(100px,-65px);
    -o-transform: rotate(90deg) skew(0,0) translate(100px,-65px);
    transform: rotate(90deg) skew(0,0) translate(100px,-65px);
}
/* This is the selector of the fourteenth box, here's where we establish the measures, background colors, borders and shadows */
.box14{
    margin: 50px;
    padding: 5px 0 ;
    position:relative;
    background:#fff;
    background: -webkit-gradient(linear, 0% 20%, 0% 92%, from(#fff), to(#f3f3f3), color-stop(.1,#fff));
    background: -moz-linear-gradient(0% 0% 270deg, #fff, #fff 10%, #f3f3f3);
    border: 1px solid #ccc;
    -webkit-border-radius: 60px 5px;
    -moz-border-radius: 60px/5px;
    border-radius: 60px/5px;
    -webkit-box-shadow: 0px 0px 35px rgba(0, 0, 0, 0.1) inset;
    -moz-box-shadow: 0px 0px 35px rgba(0, 0, 0, 0.1) inset;
    box-shadow: 0px 0px 35px rgba(0, 0, 0, 0.1) inset;
}
 
/* This is the top right shadow */
.box14:before{
    content: '';
    width: 50px;
    height: 50px;
    top:0; right:0;
    position:absolute;
    display: inline-block;
    z-index:-1;
    -webkit-box-shadow: 10px -10px 8px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 10px -10px 8px rgba(0, 0, 0, 0.2);
    box-shadow: 10px -10px 8px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(2deg)
                        translate(-14px,20px)
                        skew(-20deg);
    -moz-transform: rotate(2deg)
                        translate(-14px,20px)
                        skew(-20deg);
    -o-transform: rotate(2deg)
                        translate(-14px,20px)
                        skew(-20deg);
    transform: rotate(2deg)
                translate(-14px,20px)
                skew(-20deg);
}
 
/* This is the top left shadow */
.box14:after{
    content: '';
    width: 100px;
    height: 100px;
    top:0; left:0;
    position:absolute;
    z-index:-1;
    display: inline-block;
    -webkit-box-shadow: -10px -10px 10px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: -10px -10px 10px rgba(0, 0, 0, 0.2);
    box-shadow: -10px -10px 10px rgba(0, 0, 0, 0.2);
    -webkit-transform: rotate(2deg)
                        translate(20px,25px)
                        skew(20deg);
    -moz-transform:  rotate(2deg)
                        translate(20px,25px)
                        skew(20deg);
    -o-transform:  rotate(2deg)
                        translate(20px,25px)
                        skew(20deg);
    transform:  rotate(2deg)
                        translate(20px,25px)
                        skew(20deg);
}
 
/* This class establishes the tape of the top side of the box */
.box14_tape{
    position:absolute;
    top:0; right: 0;
    width: 130px;
    height: 40px;
    background: rgba(0, 0, 0, 0.1);
    background: -webkit-gradient(linear, 555% 20%, 0% 92%, from(rgba(0, 0, 0, 0.1)), to(rgba(0, 0, 0, 0.0)), color-stop(.1,rgba(0, 0, 0, 0.2)));
    background: -moz-linear-gradient(555% 0% 180deg, rgba(0,0,0,0.1), rgba(0,0,0,0.2) 10%, rgba(0,0,0,0.0));
    border-left: 1px dashed rgba(0, 0, 0, 0.1);
    border-right: 1px dashed rgba(0, 0, 0, 0.1);
    -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0px 0px 12px rgba(0,0,0,0.2);
    box-shadow: 0px 0px 12px rgba(0,0,0,0.2);
    -webkit-transform: rotate(6deg) skew(0,0) translate(-60%,-5px);
    -moz-transform: rotate(6deg) skew(0,0) translate(-60%,-5px);
    -o-transform: rotate(6deg) skew(0,0) translate(-60%,-5px);
    transform: rotate(6deg) skew(0,0) translate(-60%,-5px);
}
/* This is the selector of the fifteenth box, here's where we establish the measures, background colors, borders and shadows */
.box15{
    margin: 50px;
    min-height: 150px;
    padding: 0 0 1px 0;
    position:relative;
    background:#fff;
    background: -webkit-gradient(linear, 100% 100%, 50% 10%, from(#fff), to(#f3f3f3), color-stop(.1,#fff));
    background: -moz-linear-gradient(100% 50% 90deg, #fff, #fff 10%, #f3f3f3);
    border: 1px solid #ccc;
    -webkit-box-shadow: 1px 1px 4px rgba(0,0,0, 0.1);
    -moz-box-shadow: 1px 1px 4px rgba(0,0,0,0.1);
    box-shadow: 1px 1px 4px rgba(0,0,0,0.1);
    -webkit-border-bottom-right-radius: 60px 5px;
    -moz-border-radius-bottomright: 60px 5px;
    border-bottom-right-radius:  60px 5px;
}
 
/* This pseudo class creates the multiple sheets effect */
.box15:before{
    content: '';
    width: 98%;
    z-index:-1;
    height: 100%;
    padding: 0 0 1px 0;
    position: absolute;
    bottom:0; right:0;
    background: #fff;
    background: -webkit-gradient(linear, 0% 20%, 0% 92%, from(#fff), to(#f9f9f9), color-stop(.1,#fff));
    background: -moz-linear-gradient(0 0 270deg, #fff, #fff 10%, #f9f9f9);
    border: 1px solid #ccc;
    -webkit-box-shadow: 1px 1px 8px rgba(0,0,0, 0.1);
    -moz-box-shadow: 1px 1px 8px rgba(0,0,0,0.1);
    box-shadow: 1px 1px 8px rgba(0,0,0,0.1);
    -webkit-border-bottom-right-radius: 60px 5px;
    -moz-border-radius-bottomright: 60px 5px;
    border-bottom-right-radius:  60px 5px;
 
    -webkit-transform: skew(2deg,2deg)
                        translate(3px,8px);
    -moz-transform: skew(2deg,2deg)
                        translate(3px,8px);
    -o-transform: skew(2deg,2deg)
                        translate(3px,8px);
    transform: skew(2deg,2deg)
                        translate(3px,8px);
}
 
.box15:after{
    content: '';
    width: 98%;
    z-index:-1;
    height: 98%;
    padding: 0 0 1px 0;
    position: absolute;
    bottom:0; right:0;
    background: #f3f3f3;
    background: -webkit-gradient(linear, 0% 20%, 0% 100%, from(#f3f3f3), to(#f6f6f6), color-stop(.1,#fff));
    background: -moz-linear-gradient(0% 0% 360deg, #f3f3f3, #fff, #f6f6f6);
    border: 1px solid #ccc;
    -webkit-box-shadow: 0px 0px 8px rgba(0,0,0, 0.1);
    -moz-box-shadow: 0px 0px 8px rgba(0,0,0,0.1);
    box-shadow: 0px 0px 8px rgba(0,0,0,0.1);
    -webkit-transform: skew(2deg,2deg)
                        translate(-1px,2px);
    -moz-transform: skew(2deg,2deg)
                        translate(-1px,2px);
    -o-transform: skew(2deg,2deg)
                        translate(-1px,2px);
    transform: skew(2deg,2deg)
               translate(-1px,2px);
}
 
/* This class creates the top left tape */
.box15_tape{
    position:absolute;
    top:0; left: 0;
    width: 130px;
    height: 40px;
    background:rgba(0, 0, 0, 0.1);
    background: -webkit-gradient(linear, 555% 20%, 0% 92%, from(rgba(0, 0, 0, 0.1)), to(rgba(0, 0, 0, 0.0)), color-stop(.1,rgba(0, 0, 0, 0.2)));
    background: -moz-linear-gradient(555% 0 180deg, rgba(0,0,0,0.1), rgba(0,0,0,0.2) 10%, rgba(0,0,0,0.0));
    border-left: 1px dashed rgba(0, 0, 0, 0.1);
    border-right: 1px dashed rgba(0, 0, 0, 0.1);
    -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0px 0px 12px rgba(0,0,0,0.2);
    box-shadow: 0px 0px 12px rgba(0,0,0,0.2);
    -webkit-transform: rotate(-30deg) skew(0,0) translate(-30px,-20px);
    -moz-transform: rotate(-30deg) skew(0,0) translate(-30px,-20px);
    -o-transform: rotate(-30deg) skew(0,0) translate(-30px,-20px);
    transform: rotate(-30deg) skew(0,0) translate(-30px,-20px);
}
/* This is the selector of the sixteenth box, here's where we establish the measures, background colors, borders and shadows */
.box16{
    margin: 70px 50px;
    min-height: 250px;
    position:relative;
    border: 2px solid #ccc;
    background: rgba(0, 0, 0, 0.5);
    -webkit-box-shadow: 0px 1px 12px rgba(0, 0, 0, 0.1);
    -moz-box-shadow: 0px 1px 12px rgba(0,0,0,0.1);
    box-shadow: 0px 1px 12px rgba(0,0,0,0.1);
}
 
/* This is the picture's frame */
.box16:before{
    content: '';
    width: 110%;
    left: 0;
    height: 125%;
    z-index:-1;
    position:absolute;
    border: 1px solid #ccc;
    background:#fff;
    background: -webkit-gradient(linear, 0% 20%, 0% 92%, from(#fff), to(#f3f3f3), color-stop(.1,#fff));
    background: -moz-linear-gradient(0% 0% 270deg, #fff, #fff 10%, #f3f3f3);
    -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.1);
    -moz-box-shadow: 0px 0px 12px rgba(0,0,0,0.1);
    box-shadow: 0px 0px 12px rgba(0,0,0,0.1);
    -webkit-transform: translate(-5%,-5%);
    -moz-transform: translate(-5%,-5%);
    -o-transform: translate(-5%,-5%);
    transform: translate(-5%,-5%);
}
 
/* This pseudo class creates the frame's shadow */
.box16:after{
    content: '';
    width: 100%;
    left: 0;
    height: 115%;
    z-index:-2;
    background: none;
    position:absolute;
    -webkit-border-radius: 20px;
    -moz-border-radius: 20px;
    border-radius: 20px;
    -webkit-box-shadow: 15px 0px 30px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 15px 0px 30px rgba(0, 0, 0, 0.2);
    box-shadow: 15px 0px 30px rgba(0, 0, 0, 0.2);
    -webkit-transform: translate(0,0);
    -moz-transform: translate(0,0);
    -o-transform: translate(0,0);
    transform: translate(0,0);
}
 
/* This selector and pseudo class creates the tapes of the top left sector */
.box16_tape{
    position:absolute;
    top:0; left: 0;
    width: 130px;
    height: 40px;
    background: rgba(0,0,0,0.2);
    background: -webkit-gradient(linear, 555% 20%, 0% 92%, from(rgba(0, 0, 0, 0.1)), to(rgba(0, 0, 0, 0.0)), color-stop(.1,rgba(0, 0, 0, 0.2)));
    background: -moz-linear-gradient(555% 0 180deg, rgba(0,0,0,0.1), rgba(0,0,0,0.2) 10%, rgba(0,0,0,0.0));
    border-left: 1px dashed rgba(0, 0, 0, 0.1);
    border-right: 1px dashed rgba(0, 0, 0, 0.1);
    -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0px 0px 12px rgba(0,0,0,0.2);
    box-shadow: 0px 0px 12px rgba(0,0,0,0.2);
    -webkit-transform: rotate(-30deg) skew(0,0) translate(-20px,-20px);
    -moz-transform: rotate(-30deg) skew(0,0) translate(-20px,-20px);
    -o-transform: rotate(-30deg) skew(0,0) translate(-20px,-20px);
    transform: rotate(-30deg) skew(0,0) translate(-20px,-20px);
}
 
.box16_tape:before{
    content: '';
    position:absolute;
    top:0; left: 0;
    width: 130px;
    height: 40px;
    background:rgba(0,0,0,0.2);
    background: -webkit-gradient(linear, 555% 20%, 0% 92%, from(rgba(0, 0, 0, 0.1)), to(rgba(0, 0, 0, 0.0)), color-stop(.1,rgba(0, 0, 0, 0.2)));
    background: -moz-linear-gradient(555% 0 180deg, rgba(0,0,0,0.1), rgba(0,0,0,0.2) 10%, rgba(0,0,0,0.0));
    border-left: 1px dashed rgba(0, 0, 0, 0.1);
    border-right: 1px dashed rgba(0, 0, 0, 0.1);
    -webkit-box-shadow: 0px 0px 12px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0px 0px 12px rgba(0,0,0,0.2);
    box-shadow: 0px 0px 12px rgba(0,0,0,0.2);
    -webkit-transform: rotate(0deg) skew(0,0) translate(-15px,-20px);
    -moz-transform: rotate(0deg) skew(0,0) translate(-15px,-20px);
    -o-transform: rotate(0deg) skew(0,0) translate(-15px,-20px);
    transform: rotate(0deg) skew(0,0) translate(-15px,-20px);
}
/*}}}*/
This package provides a toolbar of interactive 'power tools' that you can use while editing a tiddler to quickly insert TiddlyWiki tiddler links, images, macros, etc. or common formatting sequences directly into tiddler content, as well as perform other functions (such as find/replace, sort, split, convert, etc.) that can be used to modify the current tiddler's source content in a variety of ways.

<<tiddler QuickEditToolbar with: show>>
!!!!!Installation:
<<<
Individual ~QuickEdit buttons are defined in separate tiddlers (e.g., [[QuickEdit_replace]]) that have also been //transcluded// into a single toolbar definition named [[QuickEditToolbar]].  You can edit this definition to add, remove, or rearrange the toolbar buttons to best suit your needs, and then embed the [[QuickEditToolbar]] tiddler into your document's [[EditTemplate]], like this:
{{{
<div macro='tiddler QuickEditToolbar'></div>
}}}
Next, in order to support some of the formatting 'shortcuts' provided by the toolbar, add a reference to the shortcuts CSS class definitions in your [[StyleSheet]]:
{{{
[[StyleSheetShortcuts]]
}}}
By default, the QuickEdit toolbar is hidden until you enable it by using the ''toggleQuickEdit'' command, which you can add to the ~EditToolbar definition in [[ToolbarCommands]]:
{{{
|EditToolbar|... toggleQuickEdit ...|
}}}
You can also toggle the ~QuickEdit toolbar display via a single checkbox option that can be added to [[SideBarOptions]] (or any other desired location):
{{{
<<option chkShowQuickEdit>> show QuickEdit toolbar
}}}
Note: You can 'hard-code' the ''chkShowQuickEdit'' setting, so that the toolbar will be //initially// displayed, by creating a tiddler (e.g., ConfigTweaks), tagged with <<tag systemConfig>>, containing:
{{{
config.options.chkShowQuickEdit=true;
}}}
Alternatively, if you want the toolbar to //always// be displayed, regardless of the option setting, you can add a special keyword, ''show'', to the [[EditTemplate]] syntax, like this:
{{{
<div macro='tiddler QuickEditToolbar with: show'></div>
}}}
<<<
/***
|Name|QuickEditPlugin|
|Source|http://www.TiddlyTools.com/#QuickEditPlugin|
|Documentation|http://www.TiddlyTools.com/#QuickEditPlugin|
|Version|2.4.4|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Support functions for ~QuickEdit package: styles, utility functions, and 'toggleQuickEdit' command|
!!!!!Revisions
<<<
2011.02.14 2.4.4 fix OSX error: use picker.file.path
2009.06.11 2.4.3 added keyup() function to abbreviate listbox handling for CR and ESC
2009.05.07 2.4.2 added processed() function to abbreviate event handler code
2008.09.07 2.4.1 added removeCookie() function for compatibility with [[CookieManagerPlugin]]
2008.05.17 2.4.0 copied code from StickyPopupPlugin to remove dependency
2008.05.12 2.3.0 added "toggleQuickEdit" command handler (replaces inline script command)
2008.01.11 2.2.0 converted from inline script
2007.03.29 1.0.0 initial release (as inline script)
<<<
!!!!!Code
***/
//{{{
version.extensions.QuickEditPlugin= {major: 2, minor: 4, revision: 4, date: new Date(2011,2,14)};

// SET STYLESHEET
setStylesheet("\
.quickEdit a { border:2px outset ButtonFace; padding:0px 3px !important; \
	-moz-border-radius:.5em; -webkit-border-radius:.5em; \
	-moz-appearance:button !important; -webkit-appearance:push-button !important; \
	background-color:ButtonFace; color:ButtonText !important;  \
	line-height:200%; font-weight:normal; } \
.quickEdit a:hover { border: 2px inset ButtonFace; background-color:ButtonFace; }\
", "quickEditStyles");

// REMOVE COOKIE
if (window.removeCookie===undefined) {
	window.removeCookie=function(name) {
		document.cookie = name+'=; expires=Thu, 01-Jan-1970 00:00:01 UTC; path=/;'; 
	}
}

// UTILITY FUNCTIONS
config.quickEdit = {
	processed: function(ev) { ev=ev||window.event;
		ev.cancelBubble=true;
		if(ev.stopPropagation) ev.stopPropagation();
		return false;
	},
	keyup: function(ev){ var k=(ev||window.event).keyCode;
		if (k==13) this.onclick();
		if (k==27) Popup.remove();
	},
	getField: function(where) {
		var here=story.findContainingTiddler(where); if (!here) return null;
		var e=story.getTiddlerField(here.getAttribute("tiddler"),"text");
		if (e&&e.getAttribute("edit")=="text") return e;
		return null;
	},
	setSelection: function(where,newtext) {
		var e=this.getField(where); if (!e) return false;
		e.focus(); replaceSelection(e,newtext);
		return false;
	},
	wrapSelection: function(where,before,after) {
		var e=this.getField(where); if (!e) return false;
		e.focus(); replaceSelection(e,before+config.quickEdit.getSelection(e)+after);
		return false;
	},
	getSelection: function(e) {
		var seltext="";
		if (e&&e.setSelectionRange)
			seltext=e.value.substr(e.selectionStart,e.selectionEnd-e.selectionStart);
		else if (document.selection) {
			var range = document.selection.createRange();
			if (range.parentElement()==e) seltext=range.text
		}
		return seltext;
	},
	promptForFilename: function(msg,path,file) {
		if(window.Components) { // moz
			try {
				netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
				var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
				var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
				picker.init(window, msg, nsIFilePicker.modeOpen);
				var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
				thispath.initWithPath(path);
				picker.displayDirectory=thispath;
				picker.defaultExtension='jpg';
				picker.defaultString=file;
				picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterImages);
				if (picker.show()!=nsIFilePicker.returnCancel)
					var result="file:///"+picker.file.path.replace(/\\/g,'/');
			}
			catch(e) { alert('error during local file access: '+e.toString()) }
		}
		else { // IE
			try { // XP only
				var s = new ActiveXObject('UserAccounts.CommonDialog');
				s.Filter='All files|*.*|JPG files|*.jpg|GIF files|*.gif|PNG files|*.png|';
				s.FilterIndex=1; // default to JPG
				s.InitialDir=path;
				s.FileName=file;
				if (s.showOpen()) var result=s.FileName;
			}
			catch(e) { var result=prompt(msg,path+file); } // fallback for non-XP IE
		}
		return result;
	}
}
//}}}

//{{{
if (config.options.chkShowQuickEdit===undefined) config.options.chkShowQuickEdit=false;
config.commands.toggleQuickEdit = {
	hideReadOnly: true,
	getText: function() { return config.options.chkShowQuickEdit?'\u221Aquickedit':'quickedit'; },

	tooltip: 'show QuickEdit toolbar buttons',
	handler: function(event,src,title) {
		var opt='chkShowQuickEdit';
		config.options[opt]=!config.options[opt];
		config.macros.option.propagateOption(opt,"checked", config.options[opt],"input");
		if (config.options[opt]) saveOptionCookie(opt);	else removeCookie(opt);
		src.innerHTML=config.commands.toggleQuickEdit.getText();
		story.forEachTiddler(function(t,e){if (story.isDirty(t)) refreshElements(e);});
		return false;
	}
};
//}}}

// // COPIED FROM [[StickyPopupPlugin]] TO ELIMINATE PLUGIN DEPENDENCY
//{{{
if (config.options.chkStickyPopups==undefined) config.options.chkStickyPopups=false;
Popup.stickyPopup_onDocumentClick = function(ev)
{
	// if click is in a sticky popup, ignore it so popup will remain visible
	var e = ev ? ev : window.event; var target = resolveTarget(e);
	var p=target; while (p) {
		if (hasClass(p,"popup") && (hasClass(p,"sticky")||config.options.chkStickyPopups)) break;
		else p=p.parentNode;
	}
	if (!p) // not in sticky popup (or sticky popups disabled)... use normal click handling
		Popup.onDocumentClick(ev);
	return true;
};
try{removeEvent(document,"click",Popup.onDocumentClick);}catch(e){};
try{addEvent(document,"click",Popup.stickyPopup_onDocumentClick);}catch(e){};
//}}}
/%
|Name|QuickEditToolbar|
|Source|http://www.TiddlyTools.com/#QuickEditToolbar|
|Version|2.4.4|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.2|
|Type|transclusion|
|Requires|QuickEditPlugin|
|Optional|QuickEdit_*|
|Description|format/insert TiddlyWiki content using toolbar buttons|

Usage:
* install [[QuickEditPlugin]] (runtime support functions)

* add the toolbar to [[EditTemplate]]:
	<div macro='tiddler QuickEditToolbar with: show'></div>

* 'show' (optional) forces the toolbar to always be displayed or,
  omit keyword and use <<option chkShowQuickEdit>> setting

* selected QuickEdit buttons can also be added individually to the
  regular tiddler toolbar by adding references directly in [[EditTemplate]]:
	<span class='toolbar' macro='tiddler QuickEdit_...'></span>

* see [[QuickEditPackage]] for additional installation options

%/{{hidden fine center quickEdit{
<<tiddler {{ // show/hide toolbar
	var here=story.findContainingTiddler(place); if (here) var tid=here.getAttribute('tiddler');
	var show='$1'!='$'+'1'||config.options.chkShowQuickEdit||tid=='QuickEditToolbar'; 
	place.style.display=show?'block':'none';
'';}}>>/%

TOOLBAR DEFINITION - add, remove, or re-order items as desired:
= = = = = = = = = =
%/<<tiddler QuickEdit_format>>/%
%/<<tiddler QuickEdit_align>>/%
%/<<tiddler QuickEdit_color>>/%
%/<<tiddler QuickEdit_font>>/%
%/<<tiddler QuickEdit_custom>>/%
%/ &nbsp;/% (SPACER)
%/<<tiddler QuickEdit_replace>>/%
%/<<tiddler QuickEdit_split>>/%
%/<<tiddler QuickEdit_sort>>/%
%/<<tiddler QuickEdit_convert>>/%
%/ &nbsp;/% (SPACER)
%/<<tiddler QuickEdit_link>>/%
%/<<tiddler QuickEdit_insert>>/%
%/<<tiddler QuickEdit_macro>>/%
%/<<tiddler QuickEdit_image>>/%
%/}}}
/%
|Name|QuickEdit_align|
|Source|http://www.TiddlyTools.com/#QuickEdit_align|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - text alignment|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="justér tekst"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('vælg tekstjustering...','');
	s.options[s.length]=new Option('venstre','left');
	s.options[s.length-1].title='{{left{...}}}';
	s.options[s.length]=new Option('centrer','center');
	s.options[s.length-1].title='{{center{...}}}';
	s.options[s.length]=new Option('højre','right');
	s.options[s.length-1].title='{{right{...}}}';
	s.options[s.length]=new Option('ret','justify');
	s.options[s.length-1].title='{{justify{...}}}';
	s.options[s.length]=new Option('flyd til venstre','floatleft');
	s.options[s.length-1].title='{{floatleft{...}}}';
	s.options[s.length]=new Option('flyd til højre','floatright');
	s.options[s.length-1].title='{{floatright{...}}}';
	s.size=s.length;
	s.onclick=function(){ if (!this.value.length) return;
		config.quickEdit.wrapSelection(this.button,'{{'+this.value+'{','}}}');
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>justér</a></html>
/%
|Name|QuickEdit_color|
|Source|http://www.TiddlyTools.com/#QuickEdit_color|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - text/background color|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="tekst/baggrundsfarve - @@color:#RGB;background-color:#RGB;...@@"
onclick="var p=Popup.create(this,null,'popup sticky smallform'); if (!p) return false;
 	p.style.padding='2px';
	function hex(d) { return '0123456789ABCDEF'.substr(d,1); }
	var fg=createTiddlyElement(p,'select'); fg.button=this;
	fg.style.width='12em';
	fg.options[0]=new Option('tekstfarve...','');
	fg.options[1]=new Option('\xa0 eller skriv en værdi','_ask');
	fg.options[2]=new Option('\xa0 eller brug standardfarve','');
	for (var r=0;r<16;r+=3) for (var g=0;g<16;g+=3) for (var b=0;b<16;b+=3) {
		var label=hex(r)+hex(g)+hex(b);
		fg.options[fg.length]=new Option(label,'#'+label);
		fg.options[fg.length-1].style.color='#'+label;
	}
	fg.onchange=function(){ var val=this.value;
		if (val=='_ask') { val=prompt('Skriv en CSS farveværdi');
		if (!val||!val.length) return false; }
		this.options[0].value=val; this.options[0].text=val.length?'text: '+val:'text color...';
		var bg=this.nextSibling;
		for (var i=3;i<bg.options.length;i++) bg.options[i].style.color=val;
		var preview=this.nextSibling.nextSibling.nextSibling;
		var t=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
		t=t.replace(/^@@(color\:.+;)?(background-color\:.+;)?/,'').replace(/@@$/,'');
		if (!t.length) t='~AaBbCcDdEeFfGgHhIiJj 1234567890';
		var fg=this.value; if (fg.length) fg='color:'+fg+';';
		var bg=this.nextSibling.value; if (bg.length) bg='background-color:'+bg+';';
		if (fg.length||bg.length) t='@@'+fg+bg+t+'@@';
		removeChildren(preview); wikify(t,preview);
		this.selectedIndex=0; return false;
	};
	var bg=createTiddlyElement(p,'select'); bg.button=this;
	bg.style.width='12em';
	bg.options[0]=new Option('baggrundsfarve...','');
	bg.options[1]=new Option('\xa0 eller skriv en værdi','_ask');
	bg.options[2]=new Option('\xa0 eller brug standardfarve','');
	for (var r=0;r<16;r+=3) for (var g=0;g<16;g+=3) for (var b=0;b<16;b+=3) {
		var label=hex(15-r)+hex(15-g)+hex(15-b);
		bg.options[bg.length]=new Option(label,'#'+label);
		bg.options[bg.length-1].style.backgroundColor='#'+label;
	}
	bg.onchange=function(){ var val=this.value;
		if (val=='_ask') { val=prompt('Skriv en CSS farveværdi');
		if (!val||!val.length) return false; }
		this.options[0].value=val;
		this.options[0].text=val.length?'background: '+val:'baggrundsfarve...';
		var fg=this.previousSibling;
		for (var i=3;i<fg.options.length;i++) fg.options[i].style.backgroundColor=val;
		var preview=this.nextSibling.nextSibling;
		var t=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
		t=t.replace(/^@@(color\:.+;)?(background-color\:.+;)?/,'').replace(/@@$/,'');
		if (!t.length) t='~AaBbCcDdEeFfGgHhIiJj 1234567890';
		var fg=this.previousSibling.value; if (fg.length) fg='color:'+fg+';';
		var bg=this.value; if (bg.length) bg='background-color:'+bg+';';
		if (fg.length||bg.length) t='@@'+fg+bg+t+'@@';
		removeChildren(preview); wikify(t,preview);
		this.selectedIndex=0; return false;
	};
	var b=createTiddlyElement(p,'input',null,null,null,{type:'button'}); b.button=this;
	b.value='ok'; b.style.width='4em';
	b.onclick=function() {
		var fg=this.previousSibling.previousSibling.value; if (fg.length) fg='color:'+fg+';';
		var bg=this.previousSibling.value; if (bg.length) bg='background-color:'+bg+';';
		var t=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
		t=t.replace(/^@@(color\:.+;)?(background-color\:.+;)?/,'').replace(/@@$/,'');
		if (fg.length||bg.length) config.quickEdit.setSelection(this.button,'@@'+fg+bg+t+'@@');
		Popup.remove(); return false;
	};
	var preview=createTiddlyElement(p,'div',null,'viewer'); var s=preview.style;
	s.border='1px solid'; s.margin='2px'; s.width='24em'; s.padding='3px'; s.MozBorderRadius='3px';
	s.overflow='hidden'; s.textAlign='center'; s.whiteSpace='normal';
	var t=config.quickEdit.getSelection(config.quickEdit.getField(this));
	wikify(t.length?t:'~AaBbCcDdEeFfGgHhIiJj 1234567890',preview);
	Popup.show();
	event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>farve</a></html>
/%
|Name|QuickEdit_convert|
|Source|http://www.TiddlyTools.com/#QuickEdit_convert|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - convert between comma/tab-separated and TW table format|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="kovertér mellem komma/tab-separeret og TW tabelformat"
onclick="var e=config.quickEdit.getField(this);
	if (e) e.focus(); var txt=config.quickEdit.getSelection(e);
	if (txt.indexOf(',')+txt.indexOf('\t')+txt.indexOf('|')==-3) {
		alert('Vælg tekst der indeholder tabulatorer, kommaer, eller TiddlyWiki tabelsyntaks.');
		return false;
	}
	var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('vælg en konverter...','');
	if (txt.indexOf(',')!=-1) {
		s.options[s.length]=new Option('kommaer -> tabel','commasToTable');
		s.options[s.length]=new Option('kommaer -> tabulatorer','commasToTabs');
	}
	if (txt.indexOf('\t')!=-1) {
		s.options[s.length]=new Option('tabulatorer -> tabel','tabsToTable');
		s.options[s.length]=new Option('tabulatorer -> kommaer','tabsToCommas');
	}
	if (txt.indexOf('|')!=-1) {
		s.options[s.length]=new Option('tabel -> tabulatorer','tableToTabs');
		s.options[s.length]=new Option('tabel -> kommaer','tableToCommas');
	}
	s.size=s.length;
	s.onclick=function(){ if (!this.value.length) return;
	        var e=config.quickEdit.getField(this.button); if (!e) return false;
		e.focus(); var txt=config.quickEdit.getSelection(e);
		switch(this.value) {
			case 'tabsToTable':
				txt=txt.replace(/\t/g,'|').replace(/^|$/g,'|');
				txt=txt.replace(/\n/g,'|\n|').replace(/^\|$/g,'');
				break;
			case 'tableToTabs':
				txt=txt.replace(/\t/g,' ').replace(/\|/g,'\t');
				txt=txt.replace(/^\t/g,'').replace(/\t$/g,'');
				txt=txt.replace(/\n\t/g,'\n').replace(/\t\n/g,'\n');
				break;
			case 'commasToTable':
				txt=txt.replace(/,/g,'|').replace(/^|$/g,'|');
				txt=txt.replace(/\n/g,'|\n|').replace(/^\|$/g,''); 
				break;
			case 'tableToCommas':
				txt=txt.replace(/,/g,' ').replace(/\|/g,',');
				txt=txt.replace(/^,/g,'').replace(/,$/g,''); 
				txt=txt.replace(/\n,/g,'\n').replace(/,\n/g,'\n'); 
				break;
			case 'tabsToCommas':
				txt=txt.replace(/\t/g,',');
				break;
			case 'commasToTabs':
				txt=txt.replace(/,/g,'\t');
				break;
		}
		replaceSelection(e,txt);
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>konvertér</a></html>
/%
|Name|QuickEdit_custom|
|Source|http://www.TiddlyTools.com/#QuickEdit_custom|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - custom defined formats|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

!help
Påmindelser:

Brugerdefinerede formater gemmes som en "HR-separeret liste" i [[QuickEdit_customList]], hvor den første linie af hvert listeemne er den 'etiket', der vises i rullelisten, efterfulgt af een eller flere linier af wiki indhold der skal sættes ind i tiddlerkilden.

Erstatningsmarkører  kan bruges til dynamisk at indsætte værdier i det formaterede resultat: $1 indsætter tiddler editorens aktuelt markerede tekst. $[[message|default value]] interactively prompts for a value to be inserted. $[[message|$1]] uses the selected text as the default value. $[[message|{{javascript}}]] calculates the default value using javascript code.
!end help

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" title="brugerdefinerede formater"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('vælg et brugerdefineret format...','');
	var items=store.getTiddlerText('QuickEdit_customList','').split('\n----\n');
	for (var i=0; i<items.length; i++) {
		if (!items[i].length) continue; var lines=items[i].split('\n');
		var label=lines.shift(); var val=lines.join('\n');
		s.options[s.length]=new Option(label,val); s.options[s.length-1].title=val;
	}
	s.options[s.length]=new Option('[Redigér brugerdefinerede formater...]','_edit');
	s.options[s.length-1].title='tilføj/skift brugerdefinerede formater...';
	s.size=Math.min(s.length,15);
	s.onclick=function(){ if (!this.value.length) return;
		if (this.value=='_edit') {
			alert(store.getTiddlerText('QuickEdit_custom##help'));
			story.displayTiddler(story.findContainingTiddler(this.button),
				'QuickEdit_customList',DEFAULT_EDIT_TEMPLATE);
		} else {
		        var e=config.quickEdit.getField(this.button); if (!e) return false;
			e.focus(); var txt=config.quickEdit.getSelection(e);
			replaceSelection(e, this.value.replace(/\$\x31/g,txt)
				.replace(/\$\[\[[^\]]+\]\]/g, function(t){
					x=t.substr(3,t.length-5).split('|');
					var msg=x[0]; var def=x[1]||'';
					if (def.startsWith('{{')) {
						try{def=eval(def.substr(2,def.length-4))} catch(ex){showException(ex)}
					}
					return prompt(msg,def)||'';
				})
			);
		}
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>brugerdefineret</a></html>
timestamp
$[[enter a date|{{new Date().formatString('DDD, MMM DDth, YYYY hh12:0mm:0ssam')}}]]
----
scrollbox
@@display:block;height:10em;overflow:auto;$1@@@@display:block;text-align:right;^^rul ned for mere...^^@@
----
nested slider
+++[$1]<<tiddler $1>>===
----
big red
@@font-size:36pt;color:red;$1@@
----
wikilink
[[$1]]
----
ikon
{{span{$1<<setIcon $2.png "" notext>>}}}
----
popout
<html><A HREF="javascript:void(0)"onclick="window.open('$1','link to $1','height=800, width=1000,scrollbars=no')" accesskey="u">Popout</a></html> 
----
iframe
<html><div align="center"><iframe src="$1" frameborder="0" style="width:100%;height:800em"></iframe></div></html>
----
Hurtig fET tabel
<<forEachTiddler where 'tiddler.tags.contains("$1")'
sortBy 'tiddler.title'
write 
 '(index < 600)? "|!"+(index+1)+"|[["+tiddler.title+"]] |\n" : ""'
              begin '"|sortable|k\n" 
+"| !antal | !<<tag $1\>\> |h\n"' 
end 'count+" tiddlere tagget med $1\n"' none '"ingen tiddlere tagget med $1 \n"'>>
----
fET TagTilTabs
<<forEachTiddler
    where
       'tiddler.tags.contains("$1")'

    sortBy
       'tiddler.title.toUpperCase()'

    write '" [["+tiddler.title+" ]] \"view ["+tiddler.title+"]\" [["+tiddler.title+"]] "'

        begin '"<<tabs txtMyAutoTab "'

        end '">"+">"'

        none '"//Ingen tiddlere er tagget med \"$1\"//"'
>>
----
Tiddlermakro
<<tiddler $1>>
----
Billede
[img(100%+,auto)[$1]]
----
ShowPopup
<<tiddler ShowPopup with: $1[[Klik]][[Se i popup her]] button>>
----
Ryk ned og gør til overskrift

$1h
/%
|Name|QuickEdit_font|
|Source|http://www.TiddlyTools.com/#QuickEdit_font|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - select font family|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="vælg en fontfamilie CSS attribut - @@font-family:facename;...@@"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('vælg en fontfamilie...','');
	var fonts=store.getTiddlerText('QuickEdit_fontList','').split('\n');
	for (var i=0; i<fonts.length; i++) {
		if (!fonts[i].length) continue;
		s.options[s.length]=new Option(fonts[i],fonts[i]);
		s.options[s.length-1].style.fontFamily=fonts[i];
	}
	s.options[s.length]=new Option('[Redigér listen over fonte...]','_edit');
	s.options[s.length-1].title='skriv fontnavn, et pr linie...';
	s.size=Math.min(s.length,15);
	s.onclick=function(){
		if (this.value=='_edit')
			story.displayTiddler(story.findContainingTiddler(this.button),'QuickEdit_fontList',DEFAULT_EDIT_TEMPLATE);			
		else
			config.quickEdit.wrapSelection(this.button,'@@font-family:\x22'+this.value+'\x22;','@@');
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>fonte</a></html>
Arial,helvetica,sans-serif
Arial Black,Gadget,sans-serif
Bookman Old Style,serif
Comic Sans MS,cursive
Courier,monospaced
Courier New,Courier,monospaced
Garamond,serif
Georgia,serif
Impact,Charcoal,sans-serif
Lucida Console,Monaco,monospaced
Lucida Sans Unicode,Lucida Grande,sans-serif
MS Sans Serif,Geneva,sans-serif
MS Serif,New York,sans-serif
Palatino Linotype,Book Antiqua,Palatino,serif
Symbol,sans-serif
Tahoma,Geneva,sans-serif
Times New Roman,Times,serif
Trebuchet MS,Helvetica,sans-serif
Verdana,Geneva,sans-serif
Webdings,sans-serif
Wingdings,Zapf Dingbats,sans-serif 
/%
|Name|QuickEdit_format|
|Source|http://www.TiddlyTools.com/#QuickEdit_format|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - basic text formats, headings, blockquotes, etc.|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="ren tekst (fjern AL formatering)" accesskey="P" 
onclick="var e=config.quickEdit.getField(this); if (e) e.focus(); var txt=config.quickEdit.getSelection(e);
	config.quickEdit.setSelection(e,wikifyPlainText(txt)); return false;"
>&nbsp;~&nbsp;</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="''fed''" accesskey="F"
onclick="config.quickEdit.wrapSelection(this,'\x27\x27','\x27\x27'); return false;"
>&nbsp;F&nbsp;</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="//kursiv//" accesskey="K" 
onclick="config.quickEdit.wrapSelection(this,'//','//'); return false;"
>&nbsp;K&nbsp;</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="__understreg__" accesskey="U" 
onclick="config.quickEdit.wrapSelection(this,'__','__'); return false;"
>&nbsp;U&nbsp;</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="--gennemstreg--" accesskey="G" 
onclick="config.quickEdit.wrapSelection(this,'--','--'); return false;"
>&nbsp;G&nbsp;</a></html>/%

%/ &nbsp;/%  SPACER

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="formatér tekst"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('vælg tekst format...','');
	s.options[s.length]=new Option('CSS klasse indpakning','{{$1{,}}},Skriv et CSS klassenavn');
	s.options[s.length-1].title='CSS klasse indpakning - {{klassenavn klassenavn etc{...}}}';
	s.options[s.length]=new Option('inline CSS stilarter','@@$1,@@,Skriv CSS (attribut:værdi;attribut:værdi;...;)');
	s.options[s.length-1].title='inline CSS stilarter - @@attr:value;attr:value;...@@';
	s.options[s.length]=new Option('overskrift 1','\n!,\n');
	s.options[s.length-1].title='H1 heading - !';
	s.options[s.length]=new Option('overskrift 2','\n!!,\n');
	s.options[s.length-1].title='H2 heading - !!';
	s.options[s.length]=new Option('overskrift 3','\n!!!,\n');
	s.options[s.length-1].title='H3 heading - !!!';
	s.options[s.length]=new Option('overskrift 4','\n!!!!,\n');
	s.options[s.length-1].title='H4 heading - !!!!';
	s.options[s.length]=new Option('overskrift 5','\n!!!!!,\n');
	s.options[s.length-1].title='H5 heading - !!!!!';
	s.options[s.length]=new Option('blockquote','\n\<\<\<\n,\n\<\<\<\n');
	s.options[s.length-1].title='indskudt blokcitat - \<\<\<';
	s.options[s.length]=new Option('monospaced','{{{,}}}');
	s.options[s.length-1].title='inline monospaced tekst - {{{...}}}';
	s.options[s.length]=new Option('ren tekst','\n{{{\n,\n}}}\n');
	s.options[s.length-1].title='multi-linie monospaced tekst boks - {{{...}}}';
	s.options[s.length]=new Option('superscript','^^,^^');
	s.options[s.length-1].title='^^superscript^^';
	s.options[s.length]=new Option('subscript','~~,~~');
	s.options[s.length-1].title='~~subscript~~';
	s.options[s.length]=new Option('HTML','<html>,<\x2fhtml>');
	s.options[s.length-1].title='HTML syntaks - <html>...<\x2fhtml>';
	s.options[s.length]=new Option('kommentar','/%,%/');
	s.options[s.length-1].title='kommentar (skjult indhold) - /%...%/';
	s.size=s.length;
	s.onclick=function(){ if (!this.value.length) return;
		var parts=this.value.split(',');
		var prefix=parts[0]; var suffix=parts[1]; var ask=parts[2];
		if (ask) {
			var val=prompt(ask); if (!val) { Popup.remove(); return false; }
			prefix=prefix.replace(/\$1/g,val); suffix=suffix.replace(/\$1/g,val);
		}
		config.quickEdit.wrapSelection(this.button,prefix,suffix);
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>formatér</a></html>
/%
|Name|QuickEdit_image|
|Source|http://www.TiddlyTools.com/#QuickEdit_image|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - embed an image|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
	title="indsæt et billede (jpg/gif/png) - [img[værktøjstip|URL]] eller [img[værktøjstip|sti/til/fil.filtype]]"
	onclick="var fn=config.quickEdit.promptForFilename(
		'Skriv/vælg en billedfil',getLocalPath(document.location.href),'');
	if (!fn) return false;  /* cancelled by user */
	var h=document.location.href; var p=decodeURIComponent(h.substr(0,h.lastIndexOf('/')+1));
	if (fn.startsWith(p)) fn=fn.substr(p.length); /* use RELATIVE path/filename.ext */
	var tip=prompt('Enter a tooltip for this image',''); if (!tip) tip=''; else tip+='|';
	return config.quickEdit.setSelection(this,'[img['+tip+fn+']]');"
>billede</a></html>
/%
|Name|QuickEdit_insert|
|Source|http://www.TiddlyTools.com/#QuickEdit_insert|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - insert content from another tiddler or external file|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="indsæt indhold fra en anden tiddler eller ekstern fil"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';

	var s2=createTiddlyElement(p,'select'); s2.title='filtrer efter tag';
	s2.options[0]=new Option('filtrer efter tag...','');
	s2.options[s2.length]=new Option('[alle tiddlere]','');
	var tags=store.getTags();
	for (var t=0; t<tags.length; t++) s2.options[s2.length]=new Option(tags[t][0],tags[t][0]);
	s2.onchange=function(){
		var tag=this.value;
		var tids=tag.length?store.reverseLookup('tags',tag,true):store.reverseLookup('tags','excludeLists');
		var list=this.nextSibling.nextSibling;
		while (list.length) list.options[0]=null;
		var prompt='select a tiddler or file...';
		if (tag.length) prompt='vælg en tagget tiddler ['+tids.length+' matches]...';
		list.options[0]=new Option(prompt,'');
		if (!tag.length) list.options[list.length]=new Option('[gennemse...]','_file');
		for (var t=0; t<tids.length; t++) {
			list.options[list.length]=new Option(tids[t].title,tids[t].title);
			list.options[list.length-1].title=tids[t].getSubtitle();
		}
		list.size=Math.min(list.length,10);
		list.selectedIndex=0; list.focus();
		this.style.width=list.offsetWidth+'px';
		if (!tag.length) this.selectedIndex=0;
	};
	createTiddlyElement(p,'br');

	var s=createTiddlyElement(p,'select'); s.button=this;
	s.title='select a tiddler or file';
	s.options[0]=new Option('vælg en tiddler eller fil...','');
	s.options[s.length]=new Option('[gennemse...]','_file');
	var tids=store.reverseLookup('tags','excludeLists');
	for (var t=0; t<tids.length; t++) {
		s.options[s.length]=new Option(tids[t].title,tids[t].title);
		s.options[s.length-1].title=tids[t].getSubtitle();
	}
	s.size=Math.min(s.length,10);
	s.onclick=function(){ if (!this.value.length) return false;
		if (this.value=='_file') {
			var fn=config.quickEdit.promptForFilename(
				'Enter/select a text file',getLocalPath(document.location.href),'');
			if (!fn) return false; /* cancelled by user */
			var txt=loadFile(getLocalPath(fn));
			if (!txt) { alert('Fejl: kan ikke læse indholdet fra \0027'+fn+'\0027'); return; }
		}
		else var txt=store.getTiddlerText(this.value);
		if (!txt) {
			displayMessage(this.value+' ikke fundet');
			this.selectedIndex=0; this.focus();
			return false;
		}
		config.quickEdit.setSelection(this.button,txt);
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s2.style.width=s.offsetWidth+'px';
	s.focus();
	return config.quickEdit.processed(event);"
>indsæt</a></html>
/%
|Name|QuickEdit_link|
|Source|http://www.TiddlyTools.com/#QuickEdit_link|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - link to tiddler or external file|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="add a link to a tiddler or external file - [[link text|TiddlerName]]"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';

	var s2=createTiddlyElement(p,'select'); s2.title='filter by tag';
	s2.options[0]=new Option('filter by tag...','');
	s2.options[s2.length]=new Option('[all tiddlers]','');
	var tags=store.getTags();
	for (var t=0; t<tags.length; t++) s2.options[s2.length]=new Option(tags[t][0],tags[t][0]);
	s2.onchange=function(){
		var tag=this.value;
		var tids=tag.length?store.reverseLookup('tags',tag,true):store.reverseLookup('tags','excludeLists');
		var list=this.nextSibling.nextSibling;
		while (list.length) list.options[0]=null;
		var prompt='select a tiddler or file...';
		if (tag.length) prompt='select a tagged tiddler ['+tids.length+' matches]...';
		list.options[0]=new Option(prompt,'');
		if (!tag.length) list.options[list.length]=new Option('[browse for file...]','_file');
		for (var t=0; t<tids.length; t++) {
			list.options[list.length]=new Option(tids[t].title,tids[t].title);
			list.options[list.length-1].title=tids[t].getSubtitle();
		}
		list.size=Math.min(list.length,10);
		list.selectedIndex=0; list.focus();
		this.style.width=list.offsetWidth+'px';
		if (!tag.length) this.selectedIndex=0;
	};
	createTiddlyElement(p,'br');

	var s=createTiddlyElement(p,'select'); s.button=this;
	s.title='select a tiddler or file';
	s.options[0]=new Option('select a tiddler or file...','');
	s.options[s.length]=new Option('[browse for file...]','_file');
	var tids=store.reverseLookup('tags','excludeLists');
	for (var t=0; t<tids.length; t++) {
		s.options[s.length]=new Option(tids[t].title,tids[t].title);
		s.options[s.length-1].title=tids[t].getSubtitle();
	}
	s.size=Math.min(s.length,10);
	s.onclick=function(){ if (!this.value.length) return false;
		var title=this.value; var txt=title;
		if (title=='_file') {
			title=config.quickEdit.promptForFilename('Select a file',
				getLocalPath(document.location.href),'');
			if (!title) { this.selectedIndex=0; this.focus(); return false; }
			var txt=title.substr(title.lastIndexOf('/')+1);
		}
		var txt=prompt('Enter the text to display for this link',txt);
		if (!txt) { this.selectedIndex=0; this.focus(); return false; }
		config.quickEdit.setSelection(this.button,'[['+txt+'|'+title+']]');
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s2.style.width=s.offsetWidth+'px';
	s.focus();
	return config.quickEdit.processed(event);"
>link</a></html>
/%
|Name|QuickEdit_macro|
|Source|http://www.TiddlyTools.com/#QuickEdit_macro|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - embed a macro with 'guide text'|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

Note:
Optional 'guideText' can be used to add suggested defaults/placeholders for specific macro parameters.
Add guideText to your own plugin-defined macros using:
	config.macros.macroName.guideText='guide text goes here';

%/<<tiddler {{
	/* define guide text for a few common TW core macros */
	config.macros.edit.guideText='fieldname #rows';
	config.macros.view.guideText='fieldname (link,wikified,date) format';
	config.macros.slider.guideText='cookie TiddlerName label tooltip';
	config.macros.option.guideText='(txtCookieName,chkCookieName)';
	config.macros.tiddler.guideText='TiddlerName with: params...';
	''; /* must return blank to suppress output */ }}>>/%

%/<html><hide linebreaks><a href='javascript:;' class='tiddlyLink' tabindex='-1' 
title='tilføj en makro - \<\<makroNavn ...\>\>'
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('vælg en makro...','');
	var macros=[]; for (var m in config.macros) if (config.macros[m].handler) macros.push(m); macros.sort();
	for (var i=0; i<macros.length; i++) { var m=macros[i];
		var help=config.macros[m].guideText; if (!help) help=''; else help=' '+help;
		s.options[s.length]=new Option(m,m+help);
		s.options[s.length-1].title='\<\<'+m+help+'\>\>';
	}
	s.size=Math.min(s.length,15);
	s.onclick=function(){ if (!this.value.length) return;
		config.quickEdit.setSelection(this.button,'\<\<'+this.value+'\>\>');
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>makro</a></html>
/%
|Name|QuickEdit_replace|
|Source|http://www.TiddlyTools.com/#QuickEdit_replace|
|Version|2.4.5|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - find/replace selected text with replacement text|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar
!!!Revisions
<<<
2010.12.26 2.4.5 fix use getField(this) to support hijacks by editSectionPlugin
<<<
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="find/erstat valgt tekst med anden tekst"
onclick="var p=Popup.create(this,null,'popup sticky smallform'); if (!p) return false;
	var e=config.quickEdit.getField(this);
	var s=config.quickEdit.getSelection(e); 
	var t=createTiddlyElement(p,'input'); t.onfocus=function(){this.select()};
	t.value=s.length?s:'skriv måltekst';
	var r=createTiddlyElement(p,'input'); r.onfocus=function(){this.select()};
	r.value='skriv tekst der skal erstattes';
	var b=createTiddlyElement(p,'button',null,null,'?');
	b.style.width='2em';
	b.title='FIND/FIND NÆSTE måltekst';
	b.root=this;
	b.onclick=function(ev) { /* FIND */
		var e=config.quickEdit.getField(this.root);
		var t=this.previousSibling.previousSibling;
		var tv=t.value.replace(/\\t/mg,'\t').unescapeLineBreaks();
		e.focus();
		if (e.setSelectionRange) { /* MOZ */
			var newstart=e.value.indexOf(tv,e.selectionStart+1);
			if (newstart==-1) newstart=e.value.indexOf(tv); /* wrap around */
			if (newstart==-1) { alert('\u0022'+t.value+'\u0022 not found'); t.focus(); return; }
			e.setSelectionRange(newstart,newstart+tv.length);
			var linecount=e.value.split('\n').length;
			var thisline=e.value.substr(0,e.selectionStart).split('\n').length;
			e.scrollTop=Math.floor((thisline-1-e.rows/2)*e.scrollHeight/linecount);
		} else if (document.selection) { /* IE */
			var range=document.selection.createRange();
			if(range.parentElement()==e) {
				range.collapse(false);
				var found=false; try{found=range.findText(v,e.value.length,4)}catch(e){}
				if (found) range.select();
				else { alert('\u0022'+t.value+'\u0022 not found'); t.focus(); }
			}
		}
	};
	b=createTiddlyElement(p,'button',null,null,'=');
	b.style.width='2em';
	b.title='ERSTAT valgt tekst';
	b.root=this;
	b.onclick=function(ev) { /* REPLACE */
		var e=config.quickEdit.getField(this.root);
		var t=this.previousSibling.previousSibling.previousSibling;
		var r=this.previousSibling.previousSibling;
		var rv=r.value.replace(/\\t/mg,'\t').unescapeLineBreaks();
		if (   (e.selectionStart!==undefined && e.selectionEnd==e.selectionStart)
		    || (document.selection && document.selection.createRange().text==''))
			this.previousSibling.click(); /* no selection... do FIND first */
		if (   (e.selectionStart!==undefined && e.selectionEnd==e.selectionStart)
		    || (document.selection && document.selection.createRange().text==''))
			{ t.focus(); return; } /* still no selection... goto target input */
		e.focus(); replaceSelection(e,rv);
	};
	b=createTiddlyElement(p,'button',null,null,'+');
	b.style.width='2em';
	b.title='ERSTAT valgt tekst OG FIND NÆSTE MÅLTEKST';
	b.onclick=function(ev) { /* REPLACE and FIND NEXT */
		this.previousSibling.click();
		this.previousSibling.previousSibling.click();
	};
	b=createTiddlyElement(p,'button',null,null,'!');
	b.style.width='2em';
	b.title='ERSTAT ALLE forekomster af målteksten';
	b.root=this;
	b.onclick=function(ev) { /* REPLACE ALL */
		var e=config.quickEdit.getField(this.root);
		var t=this.previousSibling.previousSibling.previousSibling.previousSibling.previousSibling;
		var r=this.previousSibling.previousSibling.previousSibling.previousSibling;
		var tv=t.value.replace(/\\t/mg,'\t').unescapeLineBreaks();
		var rv=r.value.replace(/\\t/mg,'\t').unescapeLineBreaks();
		if (!tv.length) { alert('Please enter the target text'); t.focus(); return; }
		var m='Dette vil erstatte alle forekomster af:\n\n'+tv+'\n\nwith:\n\n'+rv+'\n\nEr du sikker?';
		if (!confirm(m)) { r.focus(); r.select(); return; }
		e.value=e.value.replace(new RegExp(tv.escapeRegExp(),'gm'),rv);
		e.focus(); e.select(); Popup.remove();
	};
	Popup.show();
	if (!s.length) {t.focus();t.select()} else {r.focus();r.select()}
	event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>erstat</a></html>
/%
|Name|QuickEdit_sort|
|Source|http://www.TiddlyTools.com/#QuickEdit_sort|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - sort lines of text|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="sortér tekstlinier"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('vælg sorteringsorden...','');
	s.options[s.length]=new Option('stigende','A');
	s.options[s.length-1].title='ascending';
	s.options[s.length]=new Option('faldende','D');
	s.options[s.length-1].title='descending';
	s.size=s.length;
	s.onclick=function(){ if (!this.value.length) return;
		var e=config.quickEdit.getField(this.button); if (!e) return false;
		var lines=config.quickEdit.getSelection(e).split('\n').sort();
		if (this.value=='D') lines=lines.reverse();
		replaceSelection(e,lines.join('\n'));
		e.focus();
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>sortér</a></html>
/%
|Name|QuickEdit_split|
|Source|http://www.TiddlyTools.com/#QuickEdit_split|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - move selection to new tiddler and insert link, embedded tiddler, or slider|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

Based on ideas originally developed by YannPerrin
(http://yann.perrin.googlepages.com/twkd.html#easySlicer)

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="flyt det markerede til en ny tiddler og indsæt et link, en indlejret tiddler, eller en slider"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	p.style.whiteSpace='nowrap';
	var i=createTiddlyElement(p,'input');
	i.defaultValue='Skriv titelen på en ny tiddler';
	i.onfocus=function(){this.select()};
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('vælg type...','');
	s.options[0].title='vælg opdelingstype';
	s.options[1]=new Option('link','link');
	s.options[1].title='erstat med [[TiddlerNavn]]';
	s.options[2]=new Option('embed','embed');
	s.options[2].title='erstat med\<\<tiddler TiddlerName\>\>';
	s.options[3]=new Option('slider','slider');
	s.options[3].title='erstat med \<\<slider \u0022\u0022 [[TiddlerNavn]] [[etiket]] [[værktøjstip]]\>\>';
	s.onchange=function(){
		if (s.previousSibling.value==s.previousSibling.defaultValue)
			{ alert('A tiddler title is required'); s.selectedIndex=0; s.previousSibling.focus(); return false; }
		var tid=s.previousSibling.value;
		if (store.tiddlerExists(tid) && !confirm(config.messages.overwriteWarning.format([tid])))
			{ s.previousSibling.focus(); return false; }
		switch(s.value) {
			case 'link':
				var newtxt='[['+tid+']]';
				break;
			case 'embed':
				var newtxt='\<\<tiddler [['+tid+']]\>\>';
				break;
			case 'slider':
				var label=prompt('Skriv en slider-etiket',tid);
				if (!label) { Popup.remove(); return false; }
				var tip=prompt('Skriv et slider værktøjstip',label);
				if (!tip) { Popup.remove(); return false; }
				var newtxt='\<\<slider \u0022\u0022 [['+tid+']] [['+label+']] [['+tip+']]\>\>';
				break;
		}
		var txt=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
		var saveNewTiddler = function(title, text, tags, fields){
                var newTiddler = store.saveTiddler(title, title, text,
                config.options.txtUserName, new Date(), tags, merge(merge({},fields),config.defaultCustomFields));
                autoSaveChanges(null, [newTiddler]); 
		story.displayTiddler(story.findContainingTiddler(this.button),tid);
		config.quickEdit.setSelection(this.button,newtxt);
		Popup.remove(); return false;
	};
	Popup.show();
	event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>opdel</a></html>
/***
|Name|QuoteOfTheDayPlugin|
|Source|http://www.TiddlyTools.com/#QuoteOfTheDayPlugin|
|Documentation|http://www.TiddlyTools.com/#QuoteOfTheDayPluginInfo|
|Version|1.4.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Display a randomly selected "quote of the day" from a list defined in a separate tiddler|

!!!!!Documentation
>see [[QuoteOfTheDayPluginInfo]]
!!!!!Revisions
<<<
2008.03.21 [1.4.1] in showNextItem(), corrected handling for random selection so that //initial// index value will randomized correctly instead of always showing first item, even when randomizing.  Thanks to Riccardo Gherardi for finding this.
| Please see [[QuoteOfTheDayPluginInfo]] for previous revision details |
2005.10.21 [1.0.0] Initial Release.  Based on a suggestion by M.Russula
<<<
!!!!!Code
***/
//{{{
version.extensions.QuoteOfTheDayPlugin= {major: 1, minor: 4, revision: 1, date: new Date(2008,3,21)};
config.macros.QOTD = {
	clickTooltip: "click to view another item",
	timerTooltip: "auto-timer stopped...  'mouseout' to restart timer",
	timerClickTooltip: "auto-timer stopped...  click to view another item, or 'mouseout' to restart timer",
	handler:
	function(place,macroName,params) {
		var tid=params.shift(); // source tiddler containing HR-separated quotes
		var p=params.shift();
		var click=true; // allow click for next item
		var inline=false; // wrap in slider for animation effect
		var random=true; // pick an item at random (default for "quote of the day" usage)
		var folder=false; // use local filesystem folder list
		var cookie=""; // default to no cookie
		var next=0; // default to first item (or random item)
		while (p) {
			if (p.toLowerCase()=="noclick") var click=false;
			if (p.toLowerCase()=="inline") var inline=true;
			if (p.toLowerCase()=="norandom") var random=false;
			if (p.toLowerCase().substr(0,7)=="cookie:") var cookie=p.substr(8);
			if (!isNaN(p)) var delay=p;
			p=params.shift();
		}
		if ((click||delay) && !inline) {
			var panel = createTiddlyElement(null,"div",null,"sliderPanel");
			panel.style.display="none";
			place.appendChild(panel);
			var here=createTiddlyElement(panel,click?"a":"span",null,"QOTD");
		}
		else
			var here=createTiddlyElement(place,click?"a":"span",null,"QOTD");
		here.id=(new Date()).convertToYYYYMMDDHHMMSSMMM()+Math.random().toString(); // unique ID
		// get items from tiddler or file list
		var list=store.getTiddlerText(tid,"");
		if (!list||!list.length) { // not a tiddler... maybe an image directory?
			var list=this.getImageFileList(tid);
			if (!list.length) { // maybe relative path... fixup and try again
				var h=document.location.href;
				var p=getLocalPath(decodeURIComponent(h.substr(0,h.lastIndexOf("/")+1)));
				var list=this.getImageFileList(p+tid);
			}
		}
		if (!list||!list.length) return false; // no contents... nothing to display!
		here.setAttribute("list",list);
		if (delay) here.setAttribute("delay",delay);
		here.setAttribute("random",random);
		here.setAttribute("cookie",cookie);
		if (click) {
			here.title=this.clickTooltip
			if (!inline) here.style.display="block";
			here.setAttribute("href","javascript:;");
			here.onclick=function(event)
				{ config.macros.QOTD.showNextItem(this); }
		}
		if (config.options["txtQOTD_"+cookie]!=undefined) next=parseInt(config.options["txtQOTD_"+cookie]);
		here.setAttribute("nextItem",next);
		config.macros.QOTD.showNextItem(here);
		if (delay) {
			here.title=click?this.timerClickTooltip:this.timerTooltip
			here.onmouseover=function(event)
				{ clearTimeout(this.ticker); };
			here.onmouseout=function(event)
				{ this.ticker=setTimeout("config.macros.QOTD.tick('"+this.id+"')",this.getAttribute("delay")); };
			here.ticker=setTimeout("config.macros.QOTD.tick('"+here.id+"')",delay);
		}
	},
	tick: function(id) {
		var here=document.getElementById(id); if (!here) return;
		config.macros.QOTD.showNextItem(here);
		here.ticker=setTimeout("config.macros.QOTD.tick('"+id+"')",here.getAttribute("delay"));
	},
	showNextItem:
	function (here) {
		// hide containing slider panel (if any)
		var p=here.parentNode;
		if (p.className=="sliderPanel") p.style.display = "none"
		// get a new quote
		var index=here.getAttribute("nextItem"); 
		var items=here.getAttribute("list").split("\n----\n");
		if (index<0||index>=items.length) index=0;
		if (here.getAttribute("random")=="true") index=Math.floor(Math.random()*items.length);
		var txt=items[index];
		// re-render quote display element, and advance index counter
		removeChildren(here); wikify(txt,here);
		index++; here.setAttribute("nextItem",index);
		var cookie=here.getAttribute("cookie");
		if (cookie.length) {
			config.options["txtQOTD_"+cookie]=index.toString();
			saveOptionCookie("txtQOTD_"+cookie);
		}
		// redisplay slider panel (if any)
		if (p.className=="sliderPanel") {
			if(anim && config.options.chkAnimate)
				anim.startAnimating(new Slider(p,true,false,"none"));
			else p.style.display="block";
		}
	},
	getImageFileList: function(cwd) { // returns HR-separated list of image files
		function isImage(fn) {
			var ext=fn.substr(fn.length-3,3).toLowerCase();
			return ext=="jpg"||ext=="gif"||ext=="png";
		}
		var files=[];
		if (config.browser.isIE) {
			cwd=cwd.replace(/\//g,"\\");
			// IE uses ActiveX to read filesystem info
			var fso = new ActiveXObject("Scripting.FileSystemObject");
			if(!fso.FolderExists(cwd)) return [];
			var dir=fso.GetFolder(cwd);
			for(var f=new Enumerator(dir.Files); !f.atEnd(); f.moveNext())
				if (isImage(f.item().path)) files.push("[img[%0]]".format(["file:///"+f.item().path.replace(/\\/g,"/")]));
		} else {
			// FireFox (mozilla) uses "components" to read filesystem info
			// get security access
			if(!window.Components) return;
			try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
			catch(e) { alert(e.description?e.description:e.toString()); return []; }
			// open/validate directory
			var file=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
			try { file.initWithPath(cwd); } catch(e) { return []; }
			if (!file.exists() || !file.isDirectory()) { return []; }
			var folder=file.directoryEntries;
			while (folder.hasMoreElements()) {
				var f=folder.getNext().QueryInterface(Components.interfaces.nsILocalFile);
				if (f instanceof Components.interfaces.nsILocalFile)
					if (isImage(f.path)) files.push("[img[%0]]".format(["file:///"+f.path.replace(/\\/g,"/")]));
			}
		}
		return files.join("\n----\n");
	}
}
//}}}
/%
!info
|Name|RefreshTiddler|
|Source|http://www.TiddlyTools.com/#RefreshTiddler|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|create a link to force an immediate refresh of the current tiddler|
Usage
<<<
{{{
<<tiddler RefreshTiddler>>
<<tiddler RefreshTiddler with: label tip>>
}}}
<<<
Example
<<<
{{{<<tiddler RefreshTiddler with: "click me">>}}}
<<tiddler RefreshTiddler##show with: "click me">>
content displayed at <<today 0hh:0mm:0ss>>
<<<
!end
!show
<html><nowiki><a href="javascript:;" title="$2"
onclick="
	var here=story.findContainingTiddler(this);
	if (here) story.refreshTiddler(here.getAttribute('tiddler'),null,true);
	return false;
">$1</a></html>
!end
%/<<tiddler {{var src='RefreshTiddler'; src+(tiddler&&tiddler.title==src?'##info':'##show')}}
	with:	{{'$1'!='$'+'1'?'$1':'refresh'}}
		{{'$2'!='$'+'2'?'$2':'redisplay current tiddler content'}}
>>
/***
|Name|SectionLinksPlugin|
|Source|http://www.TiddlyTools.com/#SectionLinksPlugin|
|Documentation|http://www.TiddlyTools.com/#SectionLinksPlugin|
|Version|1.4.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|allow tiddler sections in TiddlyLinks to be used as anchor points|
This plugin enhances tiddler links so that they can include section references that ''auto-scroll to the indicated section heading'' within a tiddler (i.e., similar to the 'anchor' behavior provided in HTML by {{{<a name="foo">}}} and {{{<a href="#foo">...</a>}}}).  The {{{<<tiddler>>}}} macro syntax has also be extended to allow section references without a tiddler name, so that transclusion of //hidden sections from the same tiddler// can be easily accomplished.  The plugin also adds a new macro, <<sectionTOC>> which can auto-generate and embed a 'Table of Contents' outline view into a tiddler to enable quick navigation to sections within that tiddler.
!!!Usage
<<<
!!!!~TiddlyLink syntax
You can link to a section of a tiddler by adding the "##sectionname" syntax to the tiddlername:
{{{
[[SomeTiddler##SomeSection]]
}}}
When clicked, the tiddler is displayed and the specified section heading is automatically scrolled into view. If the tiddler title is omitted or the 'here' keyword is used, e.g.,
{{{
[[##SomeSection]] or [[here##SomeSection]]>>
}}}
then the current containing tiddler is implied by default.
!!!!HTML anchor syntax
You can use HTML syntax to create a scrollable 'anchor' location within a tiddler without use of the standard TW section heading syntax:
{{{
<html><a name="sectionname" /></html>
}}}
You can then link to that section using the enhanced TiddlyLink syntax as above.
!!!!{{{<<tiddler>>}}} macro 
The {{{<<tiddler>>}}} syntax has been extended so that when the tiddler title is omitted or the 'here' keyword is used, e.g.,
{{{
<<tiddler ##SomeSection>> or <<tiddler here##SomeSection>>
}}}
then the current containing tiddler is implied by default.
!!!!"""<<sectionTOC>>""" macro
This macro generates a 'Table of Contents' outline-style bullet list with links to all sections within the current tiddler.  Simply place the following macro at the //end of the tiddler content// (i.e., following all section headings).  Important note: //''The {{{<<sectionTOC>>}}} macro must occur at the end of the tiddler in order to locate the rendered section headings that precede it.''//
{{{
<<sectionTOC>> or <<sectionTOC className>>
}}}
To position the macro's //output// within the tiddler, you must create a special 'target element' that uses a specific classname (default='sectionTOC'), like this:
{{{
{{sectionTOC{}}}
}}}
When the {{{<<sectionTOC>>}}} macro is rendered, it will find the matching 'sectionTOC'-classed element and writes it's output there.  You can also add the macro and/or target elements directly to the [[ViewTemplate]] definition, so that every tiddler can automatically display the table of contents:
{{{
<span class='sectionTOC'></span> <!-- target element -->
...
<span macro='sectionTOC'></span> <!-- must be at end of tiddler -->
}}}
<<<
!!!Configuration
<<<
You can change the {{{<<SectionTOC>>}}} output link format by adding the following statement to a tiddler tagged with <<tag systemConfig>>
{{{
config.macros.sectionTOC.linkFormat='[[%0|##%0]]';
}}}
The default value (shown above) produces a link to each section within the tiddler, using "%0" to insert the section name into the link.  You can add extra formatting to generate additional output to suit your purposes.  For example, if you have EditSectionPlugin installed, you could include a link that invokes that plugin's popup editor directly from each item in the TOC display, like this:
{{{
config.macros.sectionTOC.linkFormat='[[%0|##%0]] <<editSection [[##%0]] [[(edit)]]>>';
}}}
<<<
!!!Examples
<<<
links to sections defined by ''TW heading syntax'' (e.g, {{{!!!sectionname}}}):{{indent{
[[SectionLinksPlugin##onClickTiddlerLink]]
[[##onClickTiddlerLink]] //(current tiddler implied)//}}}
links to anchors defined by ''HTML syntax'' (e.g., {{{<html><a href="anchorname"></html>}}}):{{indent{
[[SectionLinksPlugin##sampleanchorlink]]
[[##sampleanchorlink]] //(current tiddler implied)//}}}
<<<
!!!Revisions
<<<
2011.12.21 1.4.2 refactor sectionTOCformat to permit customization
2011.02.08 1.4.1 in isExternalLink() hijack, strip section references before testing for external link
2010.08.09 1.4.0 in scrollToSection(), added support for using HTML <a name="..."> anchor elements
2009.08.21 1.3.4 added handling to ignore leading/trailing whitespace in section references
2009.08.21 1.3.3 in createTiddlyLink(), add tiddlyLinkNonExistingSection class if matching section is not found
2009.08.14 1.3.2 in createTiddlyLink(), don't override core value for ~TiddlyLink attribute
2009.08.02 1.3.1 in sectionTOC.handler(), trim leading/trailing whitespace from generated section links
2009.08.01 1.3.0 in scrollToSection(), apply 3-tier section matching (exact, startsWith, contains)
2009.07.06 1.2.2 fixed displayTiddler() hijack
2009.07.03 1.2.1 in {{{<<sectionTOC>>}}}, suppress output if target is not found
2009.06.02 1.2.0 added support for 'here' keyword in {{{[[here##section]]}}} links and {{{<<tiddler here##section>>}}} macro
2009.04.09 1.1.1 in sectionTOC macro, make target visible when TOC is rendered.
2009.01.18 1.1.0 added {{{<<sectionTOC>>}}} macro to generate numbered-bullet links to sections of current tiddler
2009.01.06 1.0.0 converted to stand-alone plugin
2008.10.14 0.0.0 initial release (as [[CoreTweaks]] #784 - http://trac.tiddlywiki.org/ticket/784)
<<<
!!!Code
***/
//{{{
version.extensions.SectionLinksPlugin= {major: 1, minor: 4, revision: 2, date: new Date(2011,12,21)};

Story.prototype.scrollToSection = function(title,section) {
	if (!title||!section) return; var t=this.getTiddler(title); if (!t) return null;
	var elems=t.getElementsByTagName('*');
	var heads=[]; var anchors=[];
	for (var i=0; i<elems.length; i++)
		if (['H1','H2','H3','H4','H5'].contains(elems[i].nodeName)) heads.push(elems[i]);
	for (var i=0; i<elems.length; i++)
		if (elems[i].nodeName=='A' && (elems[i].getAttribute('name')||'').length) anchors.push(elems[i]);
	var found=null;
	for (var i=0; i<heads.length; i++)
		if (getPlainText(heads[i]).trim()==section) { found=heads[i]; break; }
	if (!found) for (var i=0; i<heads.length; i++)
		if (getPlainText(heads[i]).trim().startsWith(section)) { found=heads[i]; break; }
	if (!found) for (var i=0; i<heads.length; i++)
		if (getPlainText(heads[i]).trim().indexOf(section)!=-1) { found=heads[i]; break; }
	if (!found) for (var i=0; i<anchors.length; i++)
		if (anchors[i].getAttribute('name')==section) { found=anchors[i]; break; }
	if (!found) for (var i=0; i<anchors.length; i++)
		if (anchors[i].getAttribute('name').startsWith(section)) { found=anchors[i]; break; }
	if (!found) for (var i=0; i<anchors.length; i++)
		if (anchors[i].getAttribute('name').indexOf(section)!=-1) { found=anchors[i]; break; }
	if (found) {
		// if section heading is collapsed, click to expand it - see [[FoldHeadingsPlugin]]
		if (hasClass(found,'foldable') && found.nextSibling.style.display=='none') found.onclick();
		// scroll *after* tiddler animation
		var delay=config.options.chkAnimate?config.animDuration+100:0;
		setTimeout('window.scrollTo('+findPosX(found)+','+findPosY(found)+')',delay);
		return found;
	}
}
//}}}
/***
!!!!core hijacks
***/
/***
!!!!!createTiddlyLink
***/
//{{{
// [[tiddlername##section]] and [[##section]]
if (!window.createTiddlyLink_section)
	window.createTiddlyLink_section=window.createTiddlyLink;
window.createTiddlyLink=function(place,title) {
	var t=story.findContainingTiddler(place); var tid=t?t.getAttribute('tiddler'):'';
	var parts=title.split(config.textPrimitives.sectionSeparator);
	var title=parts[0]; var section=parts[1]; if (section) section=section.trim();
	if (!title.length || title.toLowerCase()=='here') title=tid;  // default=current tiddler
	arguments[1]=title;
	var btn=createTiddlyLink_section.apply(this,arguments);
	if (section) {
		btn.setAttribute('section',section);
		if (store.getTiddlerText(title+config.textPrimitives.sectionSeparator+section)===null)
			addClass(btn,'tiddlyLinkNonExistingSection');
	}
	return btn;
}
//}}}
/***
!!!!!onClickTiddlerLink
***/
//{{{
if (!window.onClickTiddlerLink_section)
	window.onClickTiddlerLink_section=window.onClickTiddlerLink;
window.onClickTiddlerLink=function(ev) {
	var e=ev||window.event;	var target=resolveTarget(e); var title=null;
	while (target!=null && title==null) {
		title=target.getAttribute('tiddlyLink');
		section=target.getAttribute('section');
		target=target.parentNode;
	} 
	var t=story.findContainingTiddler(target); var tid=t?t.getAttribute('tiddler'):'';
	if (title!=tid||!section) // avoid excess scrolling for intra-tiddler links
		onClickTiddlerLink_section.apply(this,arguments);
	story.scrollToSection(title,section);
	return false;
}
//}}}
/***
!!!!! displayTiddler
***/
//{{{
if (!Story.prototype.displayTiddler_section)
	Story.prototype.displayTiddler_section=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler)
{
	var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
	var parts=title.split(config.textPrimitives.sectionSeparator);
	var title=parts[0]; var section=parts[1]; if (section) section=section.trim();
	if (!title.length || title.toLowerCase()=='here') {
		var t=story.findContainingTiddler(place);
		title=t?t.getAttribute('tiddler'):'';
	}
	arguments[1]=title;  // default=current tiddler
	this.displayTiddler_section.apply(this,arguments);
	story.scrollToSection(title,section);
}
//}}}
/***
<html><a name="sampleanchorlink" /></html>This is a sample ''anchor link'': {{{<html><a name="sampleanchorlink" /></html>}}}
!!!!!isExternalLink
***/
//{{{
if (!config.formatterHelpers.isExternalLink_section)
	config.formatterHelpers.isExternalLink_section=config.formatterHelpers.isExternalLink;
config.formatterHelpers.isExternalLink=function(link) {  // remove section references before testing
	var l=link.split(config.textPrimitives.sectionSeparator)[0];
	return config.formatterHelpers.isExternalLink_section(l);
}
//}}}
/***
!!!!!tiddler.handler
***/
//{{{
if (!config.macros.tiddler.handler_section)
	config.macros.tiddler.handler_section=config.macros.tiddler.handler;
config.macros.tiddler.handler=function(place,macroName,params,wikifier,paramString,tiddler)
{
	if (!params[0]) return;
	var sep=config.textPrimitives.sectionSeparator;
	var parts=params[0].split(sep); var tid=parts[0]; var sec=parts[1]; if (sec) sec=sec.trim();
	if ((tid.toLowerCase()=='here'||!tid.length) && sec) { // fixup for 'here##section' and '##section'
		var here=story.findContainingTiddler(place)
		var tid=here?here.getAttribute('tiddler'):tiddler?tiddler.title:'';
		arguments[2][0]=tid+sep+sec;
		arguments[4]=paramString.replace(new RegExp('(here)?'+sep+sec),tid+sep+sec);
	}
	config.macros.tiddler.handler_section.apply(this,arguments);
}
//}}}
/***
!!!!sectionTOC macro
***/
//{{{
config.macros.sectionTOC = {
	targetClass: 'sectionTOC',
	linkFormat: '[[%0|##%0]]',
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var out=[];
		var targetClass=params[0]||this.targetClass;
		var t=story.findContainingTiddler(place); if (!t) return;
		var elems=t.getElementsByTagName('*');
		var level=5; // topmost heading level
		for (var i=0; i<elems.length; i++) {
			var txt=getPlainText(elems[i]).trim();
			var link=this.linkFormat.format([txt]);
			switch(elems[i].nodeName) {
				case 'H1': out.push('#'+link);		level=1; break;
				case 'H2': out.push('##'+link);		level=level<2?level:2; break;
				case 'H3': out.push('###'+link);	level=level<3?level:3; break;
				case 'H4': out.push('####'+link);	level=level<4?level:4; break;
				case 'H5': out.push('#####'+link);	level=level<5?level:5; break;
				default: if (hasClass(elems[i],targetClass)) var target=elems[i];
			}
		}
		// trim excess bullet levels
		if (level>1) for (var i=0; i<out.length; i++) out[i]=out[i].substr(level-1);
		// show numbered list
		if (out.length && target) {
			if (target.style.display=='none') target.style.display='block';
			wikify(out.join('\n'),target);
		}
	}
}
//}}}
/***
!!!Invoke macro
{{{
<<sectionTOC>>
}}}
***/
// //<<sectionTOC>>
<<closeAll>><<permaview>><<newTiddler label:+>><<newJournal "DD MMM YYYY" "journal" label:j>><<saveChanges G>><<slider chkSliderOptionsPanel OptionsPanel "mere »" "Skift TiddlyWikis avancerede muligheder">>
<<tabs
	txtMainTab
	Nyheder "Senest redigerede tiddlere" TabTimeline
	Tags "Alle tags" TabTags
	Alle "Alle tiddlere" TabAll
	Flere "Administrative ting" TabMore
>>
/***
|''Name:''|SinglePageHistoryPlugin|
|''Description:''|Limits to only one tiddler open (mostly). Manages an history stack and provides macro to navigate in this history (<<history>><<history back>><<history forward>>).|
|''Author:''|[[Tobias Beer|http://tobibeer.tiddlyspace.com]]|
|''Version:''|1.0.6 (2013-10-14)|
|''~CoreVersion:''|2.5.2|
|''Documentation:''|http://singlepagehistory.tiddlyspace.com|
|''Source:''|https://raw.github.com/tobibeer/TiddlyWikiPlugins/master/plugins/SinglePageHistoryPlugin.min.js|
|''License''|Creative Commons 3.0|
***/
// /%
(function(e){var t=config.options;e.each({chkOpenDefaultOnEmpty:true,chkSinglePageMode:true,chkOpenTop:true},function(e,n){if(t[e]===undefined)t[e]=n});var n=config.macros.history={maxHistory:30,intervalUpdateURL:500,lingo:{historyLbl:"Historie",historyTip:"Klik for at vise historie...",forwardLbl:">",forwardTip:"Frem til tidligere i historie...",backLbl:"<",backTip:"Tilbage til sidste i historie...",cancelEdit:"'%0' er ved at blive redigeret.\n\n"+"OK gemmer og lukker den.\n"+"CANCEL lader den være åben."},history:[],historyIndex:-1,currentTiddler:null,button:false,timeoutChangedURL:0,lastURL:window.location.href,openAll:false,handler:function(t,r,i){var s,o=i[0],u=n.historyIndex,a="button btn-history btn-history-";if(o){type=o=="back"?o:"forward";s=createTiddlyButton(t,n.lingo[type+"Lbl"],n.lingo[type+"Tip"],n.go,a+type);if(o=="back"&&u==0||o!="back"&&u==n.history.length-1)e(s).addClass("btn-history-none")}else{createTiddlyButton(t,n.lingo.historyLbl,n.lingo.historyTip,n.showPopup,"button btn-history btn-history-popup")}},showPopup:function(t){var r,i,s,o=t||window.event,u=Popup.create(this);for(r=0;r<n.history.length;r++){s=n.history[r];i=createTiddlyButton(createTiddlyElement(u,"li"),s,s,n.go);e(i).attr("historyIndex",r);if(s==n.currentTiddler)e(i).addClass("btn-history-current")}Popup.show(u,false);o.cancelBubble=true;if(o.stopPropagation)o.stopPropagation();return false},go:function(){var t,r=e(this),i=n.history.length,s=r.hasClass("btn-history-forward"),o=r.attr("historyIndex"),u=n.currentTiddler,o=undefined!=o?parseInt(o):n.historyIndex+(s?1:-1);t=n.history[o];if(!t||t==u||n.checkDirty()){return false}n.historyIndex=o;n.button=true;story.displayTiddler(null,t);n.button=false;e(".btn-history-back, .btn-history-forward").addClass("btn-history-none");if(o>=0&&o<i-1)e(".btn-history-forward").removeClass("btn-history-none");if(o<=i-1&&o>0)e(".btn-history-back").removeClass("btn-history-none");return false},checkDirty:function(){var e=false;story.forEachTiddler(function(t,r){if("true"==r.getAttribute("dirty")){if(confirm(n.lingo.cancelEdit.format([t])))story.saveTiddler(t);else{e=true;return false}}});return e},startURL:function(e){var t=window.location.href.split("#");return e?t[0]:!t[1]||t.length==1},openTiddlers:function(e){n.openAll=true;story.displayTiddlers(null,e?e:store.getTiddlerText("DefaultTiddlers").readBracketedList());story.permaView();n.openAll=false}};checkChangedURL=function(){var e,r,i=window.location.href,s=i.indexOf("#"),o=t.chkSinglePageMode;if(i==n.lastURL)return;r=decodeURIComponent(i.substr(s+1)).readBracketedList();if(o&&r.length==1&&!story.getTiddler(r[0])||!o&&t.chkOpenTop&&story.getTiddler(r[0]))story.displayTiddler(null,r[0]);else if(o){n.lastURL=i;e=r.length;r.map(function(t){e=e&&story.getTiddler(t);return e});if(!e){if(r.length)n.openTiddlers(r);else n.openTiddlers()}}};var r=Story.prototype;r.displayTiddlerSINGLEPAGEHISTORY=r.displayTiddler;r.displayTiddler=function(r,i,s,o,u){var a,f=[],l,c,h,p=0,d,v=t.chkSinglePageMode,m=n.historyIndex,g=n.history.length,y=n.currentTiddler,b=typeof i==="string"?i:i.title;if(y!=b&&s!=2){if(!n.button){if(n.checkDirty()&&v){return false}if(g>0&&m<g-1){for(h=0;h<=m;h++)f.push(n.history[h]);f.push(b);n.historyIndex+=1;n.history=f}else{n.history.push(b);if(g>n.maxHistory)n.history.shift();else n.historyIndex+=1}e(".btn-history-forward").addClass("btn-history-none");if(b!=y&&m>=0)e(".btn-history-back").removeClass("btn-history-none")}if(y&&!n.openAll&&v&&s!=2){n.openAll=true;story.closeAllTiddlers();n.openAll=false}n.currentTiddler=b;if(!n.openAll){href=n.startURL(true)+"#"+encodeURIComponent(String.encodeTiddlyLink(b));window.location.href=href}n.lastURL=window.location.href;document.title=wikifyPlain("SiteTitle")+" - "+b}c=story.displayTiddlerSINGLEPAGEHISTORY("top",b,s,v?false:o);this.forEachTiddler(function(){p++;return p<3});if(s!=2&&p<2||!v){if(t.chkOpenTop)e("#tiddlerDisplay").prepend(e(c));d=(v||t.chkOpenTop)&&!e("#displayArea #searchResults").length?0:ensureVisible(c);if(t.chkAnimate)e(document.body).animate({scrollTop:d});else window.scrollTo(0,d)}if(!n.timeoutChangedURL)n.timeoutChangedURL=window.setInterval(function(){checkChangedURL()},n.intervalUpdateURL);return c};r.closeTiddlerSINGLEPAGEHISTORY=r.closeTiddler;r.closeTiddler=function(e,i,s){r.closeTiddlerSINGLEPAGEHISTORY.apply(this,arguments);if(s!="OPENING"&&t.chkOpenDefaultOnEmpty&&!n.openAll){var o=0;this.forEachTiddler(function(e,t){o++;return o<2});if(o==0)n.openTiddlers()}};onClickTagOpenAllSINGLEPAGEHISTORY=onClickTagOpenAll;onClickTagOpenAll=function(e){n.openAll=true;story.closeAllTiddlers();onClickTagOpenAllSINGLEPAGEHISTORY.apply(this,arguments);story.permaView();n.openAll=false};config.commands.saveTiddler.handlerSINGLEPAGEHISTORY=config.commands.saveTiddler.handler;config.commands.saveTiddler.handler=function(e,t,r){n.openAll=true;var i=config.commands.saveTiddler.handlerSINGLEPAGEHISTORY.apply(this,arguments);n.openAll=false;return i};var i=config.paramifiers;e.each(config.paramifiers,function(e,t){t.onstartSINGEPAGEHISTORY=t.onstart;t.onstart=function(e){n.openAll=true;t.onstartSINGEPAGEHISTORY.apply(this,arguments);n.openAll=false}})})(jQuery)
// %/
PlanteKendskab/%
!MartinsHeader
@@display:none;PlanteKendskab@@[img(auto,100%)[PlanteListenhttp://xn--mns-ula.dk/plantekendskab/Billeder/MartinsHeader.jpg][PlanteKendskab]]
!end %/
{{floatright toolbar{<<newTiddler title:'Ny $1' text:{{store.getTiddlerText('$1Template')}} tag:'$1' tag:'excludeLists' label:'Opret en ny $1'>>}}}{{nobullets{<<list filter [tag[$1]] template:Skabelon##template emptyMessage:"Intet tagger til $1 endnu">>}}}/%
!template
{{box7{
{{floatright toolbar{<<view title wikified {{"<<editSection '%0' 'redigér %0'>\>"}}>>}}}{{title{<br><<view title link>>}}}
>{{floatright italic toolbar{<<view title wikified {{"<<newTiddler tag:'%0' tag:'excludeLists' label:'Ny tiddler tagget med [[%0]]'>\>"}}>>}}}{{span{
<<view text wikified>>
----
<<view title wikified {{"<<list filter '[tag[%0]]' template:Skabelon##template2 emptyMessage:'Intet tagger til [[%0]] endnu'>\>"}}>>
}}}
!template2
{{floatright toolbar{<<view title wikified {{"<<editSection '%0' 'redigér %0'>\>"}}>>}}}{{title{<<view title link>>}}}
>{{floatright italic toolbar{<<view title wikified {{"<<newTiddler tag:'%0' tag:'excludeLists' label:'Ny tiddler tagget med [[%0]]'>\>"}}>>}}}{{span{
<<view text wikified>>
----
<<view title wikified {{"<<list filter '[tag[%0]]' template:Skabelon##template2 emptyMessage:'Intet tagger til [[%0]] endnu'>\>"}}>>
}}}
!end
%/
Erica
beskrivelse
----
slægt2
beskrivelse
----
{{hidden{
!Billede
SommerFugleBusk.jpg
!Botanisk navn
Buddleia Davidii 'Pink Delight'
!Dansk navn
Sommerfuglebusk
!Type
Busk
!Højde
2 – 3 m
!Bredde
1,5 – 2 m
!Blomstringstid
Aug - Sep
!Bladtype
Lancetformet
!Bladstilling
Modsat
!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse
Blomsterne er små helkronede, med 4 blade, samlet i mangeblomstrende stande. Der sværmer sommerfugle om den, blomsterfarven er gammelrose
!Anvendelse
Prydbusk
!Krav
Fuld sol
Ikke for koldt klima
Vokser bedst på en varm lerjord
Gode læforhold
!Pleje
Skæres tilbage om foråret fjerner døde grene fra tilbagefrysningen
! 
}}}
Vivellii
beskrivelse ...
----
Sort 2
beskrivelse..
----
{{hidden{
!Billede
./SpidsLøn.jpg
!Botanisk navn
Acer Platanoides
!Dansk navn
Spidsløn
!Type
Træ
!Højde
4 – 6 m
!Bredde
4 – 5 m
!Blomstringstid
April
!Bladtype
Håndlappet
!Bladstilling
Modsatstillet
!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse
Stammer fra Sydnorge i Europa til Vestasien, Max højde er 20 – 30 m.
((Acer)Blomsterne er tvekønnede hos nogle arter)
Frugten er en spaltefrugt med 2 ensidigt vingede nøddeagtige delfrugter. I blomstertiden søges Acer hyppigt af bier
!Anvendelse
Kan anvendes som Allétræ, solitær træ eller læhegn. Kan ses i parker og skove byer og haver.
!Krav
Trives bedst i dybmuldet, ikke alt for fugtig jord.
!Pleje
Det kniber med hårdførhed, og navnlig svampesygdomme giver mange grenskader og dermed ødelæggelse af planten
! 
}}}
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/01 - Unknown Artist - Track 1.mp3
CD 1 af 3: Track1.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/02 - Unknown Artist - Track 2.mp3
CD 1 af 3: Track2.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/03 - Unknown Artist - Track 3.mp3
CD 1 af 3: Track3.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/04 - Unknown Artist - Track 4.mp3
CD 1 af 3: Track4.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/05 - Unknown Artist - Track 5.mp3
CD 1 af 3: Track5.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/06 - Unknown Artist - Track 6.mp3
CD 1 af 3: Track6.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/07 - Unknown Artist - Track 7.mp3
CD 1 af 3: Track7.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/08 - Unknown Artist - Track 8.mp3
CD 1 af 3: Track8.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/09 - Unknown Artist - Track 9.mp3
CD 1 af 3: Track9.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/10 - Unknown Artist - Track 10.mp3
CD 1 af 3: Track10.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/11 - Unknown Artist - Track 11.mp3
CD 1 af 3: Track11.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/12 - Unknown Artist - Track 12.mp3
CD 1 af 3: Track12.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/13 - Unknown Artist - Track 13.mp3
CD 1 af 3: Track13.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/14 - Unknown Artist - Track 14.mp3
CD 1 af 3: Track14.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/15 - Unknown Artist - Track 15.mp3
CD 1 af 3: Track15.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/16 - Unknown Artist - Track 16.mp3
CD 1 af 3: Track16.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/17 - Unknown Artist - Track 17.mp3
CD 1 af 3: Track17.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/18 - Unknown Artist - Track 18.mp3
CD 1 af 3: Track18.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/19 - Unknown Artist - Track 19.mp3
CD 1 af 3: Track19.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/20 - Unknown Artist - Track 20.mp3
CD 1 af 3: Track20.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/21 - Unknown Artist - Track 21.mp3
CD 1 af 3: Track21.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/22 - Unknown Artist - Track 22.mp3
CD 1 af 3: Track22.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/23 - Unknown Artist - Track 23.mp3
CD 1 af 3: Track23.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD1_af_3/24 - Unknown Artist - Track 24.mp3
CD 1 af 3: Track24.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/01 - Unknown Artist - Track 1.mp3
CD 2 af 3: Track1.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/02 - Unknown Artist - Track 2.mp3
CD 2 af 3: Track2.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/03 - Unknown Artist - Track 3.mp3
CD 2 af 3: Track3.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/04 - Unknown Artist - Track 4.mp3
CD 2 af 3: Track4.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/05 - Unknown Artist - Track 5.mp3
CD 2 af 3: Track5.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/06 - Unknown Artist - Track 6.mp3
CD 2 af 3: Track6.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/07 - Unknown Artist - Track 7.mp3
CD 2 af 3: Track7.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/08 - Unknown Artist - Track 8.mp3
CD 2 af 3: Track8.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/09 - Unknown Artist - Track 9.mp3
CD 2 af 3: Track9.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/10 - Unknown Artist - Track 10.mp3
CD 2 af 3: Track10.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/11 - Unknown Artist - Track 11.mp3
CD 2 af 3: Track11.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/12 - Unknown Artist - Track 12.mp3
CD 2 af 3: Track12.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/13 - Unknown Artist - Track 13.mp3
CD 2 af 3: Track13.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/14 - Unknown Artist - Track 14.mp3
CD 2 af 3: Track14.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/15 - Unknown Artist - Track 15.mp3
CD 2 af 3: Track15.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/16 - Unknown Artist - Track 16.mp3
CD 2 af 3: Track16.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/17 - Unknown Artist - Track 17.mp3
CD 2 af 3: Track17.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/18 - Unknown Artist - Track 18.mp3
CD 2 af 3: Track18.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/19 - Unknown Artist - Track 19.mp3
CD 2 af 3: Track19.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/20 - Unknown Artist - Track 20.mp3
CD 2 af 3: Track20.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD2_af_3/21 - Unknown Artist - Track 21.mp3
CD 2 af 3: Track21.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/01 - Unknown Artist - Track 1.mp3
CD 3 af 3: Track1.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/02 - Unknown Artist - Track 2.mp3
CD 3 af 3: Track2.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/03 - Unknown Artist - Track 3.mp3
CD 3 af 3: Track3.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/04 - Unknown Artist - Track 4.mp3
CD 3 af 3: Track4.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/05 - Unknown Artist - Track 5.mp3
CD 3 af 3: Track5.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/06 - Unknown Artist - Track 6.mp3
CD 3 af 3: Track6.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/07 - Unknown Artist - Track 7.mp3
CD 3 af 3: Track7.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/08 - Unknown Artist - Track 8.mp3
CD 3 af 3: Track8.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/09 - Unknown Artist - Track 9.mp3
CD 3 af 3: Track9.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/10 - Unknown Artist - Track 10.mp3
CD 3 af 3: Track10.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/11 - Unknown Artist - Track 11.mp3
CD 3 af 3: Track11.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/12 - Unknown Artist - Track 12.mp3
CD 3 af 3: Track12.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/13 - Unknown Artist - Track 13.mp3
CD 3 af 3: Track13.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/14 - Unknown Artist - Track 14.mp3
CD 3 af 3: Track14.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/15 - Unknown Artist - Track 15.mp3
CD 3 af 3: Track15.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/16 - Unknown Artist - Track 16.mp3
CD 3 af 3: Track16.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/17 - Unknown Artist - Track 17.mp3
CD 3 af 3: Track17.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/18 - Unknown Artist - Track 18.mp3
CD 3 af 3: Track18.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/19 - Unknown Artist - Track 19.mp3
CD 3 af 3: Track19.mp3
----
http://xn--mns-ula.dk/sky/apps/files_sharing/get.php?token=6b4e99df07ddd09a648d96918bc6426b4ade1e50&path=/Ondskaben_CD3_af_3/20 - Unknown Artist - Track 20.mp3
CD 3 af 3: Track20.mp3
----
[[PureCSS3FrameBoxes]]
[[StyleSheetShortcuts]]
[[MaloStyleSheet]]
/*{{{*/
.multi_bg_example {
  background: url(http://demos.hacks.mozilla.org/openweb/resources/images/logos/firefox-48.png),
        linear-gradient(to right, rgba(255, 255, 255, 0),  rgba(255, 255, 255, 1)),
        url(http://demos.hacks.mozilla.org/openweb/resources/images/patterns/flowers-pattern.jpg);
  background-repeat: no-repeat, no-repeat, repeat;
  background-position: bottom right, left, right;
}
.orangeBox
{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#F93; color:#000; }
.orangeBox .button, .menubox .tiddlyLinkExisting, .menubox .tiddlyLinkNonExisting
{ color:#000 !important; }
.yellowBox
{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#FF0; color:#000; }
.yellowBox .button, .menubox .tiddlyLinkExisting, .menubox .tiddlyLinkNonExisting
{ color:#000 !important; }
.greenBox
{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#360; color:#fff; }
.greenBox .button, .menubox .tiddlyLinkExisting, .menubox .tiddlyLinkNonExisting
{ color:#fff !important; }
/*{{{*/
.horiz #menuBar ul
{
float:left;
width:100%;
padding:0;
margin:0;
list-style-type:none;
}
.knap .button {
width: 91px;
height: 37px;
display: inline-block;
text-align: center;
vertical-align: middle;
margin-top: 6px;
line-height: 32px;
font-size: 12px;
color: white;
background-color: [[ColorPalette::PrimaryMid]] !important;
font-weight: bold;
border: none;
border-radius: 5px;
margin-right: 0px;
margin-left: 16px;
margin-bottom: 6px;
}
.knap .pushLeft.button,
.knap .pushLeft .button{
margin-left: 0px;
}
/*}}}*/
/*{{{*/
.tools .button {
width: 100%;
height: 83px;
display: inline-block;
text-align: left;
vertical-align: middle;
margin-top: 6px;
line-height: 30px;
font-size: 200%;
color: white;
background-color: [[ColorPalette::PrimaryDark]] !important;
font-weight: bold;
border: none;
border-radius: 5px;
margin-right: 0px;
margin-left: 16px;
margin-bottom: 6px;
}
.tools .pushLeft.button,
.tools .pushLeft .button{
margin-left: 0px;
}
/*}}}*/
/*{{{*/
#topMenu ul, #topMenu li {display: inline;
		padding-top: 0;floatleft;}
#topMenu a, #topMenu .tiddlyLink, #topMenu .button {margin:0em; padding-top:0.1em;border:none;float:left;}
/*}}}*/
/*{{{*/
body {
background: url('./Ondskaben.jpg) no-repeat center center fixed;
	-webkit-background-size: cover;
	-moz-background-size: cover;
	-o-background-size: cover;
	background-size: cover;
}
/*}}}*/
/***
|Name|StyleSheetShortcuts|
|Source|http://www.TiddlyTools.com/#StyleSheetShortcuts|
|Version||
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|CSS|
|Description|'convenience' classes for common formatting, alignment, boxes, tables, etc.|

These 'style tweaks' can be easily included in other stylesheet tiddler so they can share a baseline look-and-feel that can then be customized to create a wide variety of 'flavors'.
***/
/*{{{*/

/* text alignments */
.left
	{ display:block;text-align:left; }
.center
	{ display:block;text-align:center; }
.center table
	{ margin:auto !important; }
.right	
	{ display:block;text-align:right; }
.justify
	{ display:block;text-align:justify; }
.indent
	{ display:block;margin:0;padding:0;border:0;margin-left:2em; }
.floatleft
	{ float:left; }
.floatright
	{ float:right; }
.valignTop, .valignTop table, .valignTop tbody, .valignTop th, .valignTop tr, .valignTop td
	{ vertical-align:top; }
.valignBottom, .valignBottom table, .valignBottom tbody, .valignBottom th, .valignBottom tr, .valignBottom td
	{ vertical-align:bottom; }
.clear
	{ clear:both; }
.wrap
	{ white-space:normal; }
.nowrap
	{ white-space:nowrap; }
.hidden
	{ display:none; }
.show
	{ display:inline !important; }
.span
	{ display:span; }
.block
	{ display:block; }
.relative
	{ position:relative; }
.absolute
	{ position:absolute; }

/* font sizes */
.big
	{ font-size:14pt;line-height:120% }
.medium
	{ font-size:12pt;line-height:120% }
.normal
	{ font-size:9pt;line-height:120% }
.small
	{ font-size:8pt;line-height:120% }
.fine
	{ font-size:7pt;line-height:120% }
.tiny
	{ font-size:6pt;line-height:120% }
.larger
	{ font-size:120%; }
.smaller
	{ font-size:80%; }

/* font styles */
.bold
	{ font-weight:bold; }
.italic
	{ font-style:italic; }
.underline
	{ text-decoration:underline; }

/* plain list items (no bullets or indent) */
.nobullets li { list-style-type: none; margin-left:-2em; }

/* vertical tabsets - courtesy of Tobias Beer */
.vTabs .tabset {float:left;display:block;padding:0px;margin-top:.5em;min-width:20%;}
.vTabs .tabset .tab {display:block;text-align:right;padding:2px 3px 2px 7px; margin:0 1px 1px 0;}
.vTabs .tabContents {margin-left:20%;max-width:80%;padding:5px;}
.vTabs .tabContents .tabContents {border:none; background:transparent;}

/* multi-column tiddler content (not supported in Internet Explorer) */
.twocolumns { display:block;
	-moz-column-count:2; -moz-column-gap:1em; -moz-column-width:50%; /* FireFox */
	-webkit-column-count:2; -webkit-column-gap:1em; -webkit-column-width:50%; /* Safari */
	column-count:2; column-gap:1em; column-width:50%; /* Opera */
}
.threecolumns { display:block;
	-moz-column-count:3; -moz-column-gap:1em; -moz-column-width:33%; /* FireFox */
	-webkit-column-count:3; -webkit-column-gap:1em; -webkit-column-width:33%; /* Safari */
	column-count:3; column-gap:1em; column-width:33%; /* Opera */
}
.fourcolumns { display:block;
	-moz-column-count:4; -moz-column-gap:1em; -moz-column-width:25%; /* FireFox */
	-webkit-column-count:4; -webkit-column-gap:1em; -webkit-column-width:25%; /* Safari */
	column-count:4; column-gap:1em; column-width:25%; /* Opera */
}

/* page breaks */
.breakbefore { page-break-before:always; }
.breakafter { page-break-before:always; } 

/* show/hide browser-specific content for InternetExplorer vs. non-IE ("moz") browsers */
*[class="ieOnly"]
	{ display:none; } /* hide in moz (uses CSS selector) */
* html .mozOnly, *:first-child+html .mozOnly
	{ display: none; } /* hide in IE (uses IE6/IE7 CSS hacks) */

/* borderless tables */
.borderless, .borderless table, .borderless td, .borderless tr, .borderless th, .borderless tbody
	{ border:0 !important; margin:0 !important; padding:0 !important; }
.widetable, .widetable table
	{ width:100%; }

/* thumbnail images (fixed-sized scaled images) */
.thumbnail img { height:5em !important; }

/* stretchable images (auto-size to fit tiddler) */
.stretch img { width:95%; }

/* grouped content */
.outline
	{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; }
.menubox
	{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#fff; color:#000; }
.menubox .button, .menubox .tiddlyLinkExisting, .menubox .tiddlyLinkNonExisting
	{ color:#009 !important; }
.groupbox
	{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#ffe; color:#000; }
.groupbox a, .groupbox .button, .groupbox .tiddlyLinkExisting, .groupbox .tiddlyLinkNonExisting
	{ color:#009 !important; }
.groupbox code
	{ color:#333 !important; }
.borderleft
	{ margin:0;padding:0;border:0;margin-left:1em; border-left:1px dotted; padding-left:.5em; }
.borderright
	{ margin:0;padding:0;border:0;margin-right:1em; border-right:1px dotted; padding-right:.5em; }
.borderbottom
	{ margin:0;padding:1px 0;border:0;border-bottom:1px dotted; margin-bottom:1px; padding-bottom:1px; }
.bordertop
	{ margin:0;padding:0;border:0;border-top:1px dotted; margin-top:1px; padding-top:1px; }

/* scrolled content */
.scrollbars { overflow:auto; }
.height10em { height:10em; }
.height15em { height:15em; }
.height20em { height:20em; }
.height25em { height:25em; }
.height30em { height:30em; }
.height35em { height:35em; }
.height40em { height:40em; }

/* compact form */
.smallform
	{ white-space:nowrap; }
.smallform input, .smallform textarea, .smallform button, .smallform checkbox, .smallform radio, .smallform select
	{ font-size:8pt; }

/* stretchable edit fields and textareas (auto-size to fit tiddler) */
.stretch input { width:99%; }
.stretch textarea { width:99%; }

/* compact input fields (limited to a few characters for entering percentages and other small values) */
.onechar input   { width:1em; }
.twochar input   { width:2em; }
.threechar input { width:3em; }
.fourchar input  { width:4em; }
.fivechar input  { width:5em; }

/* text colors */
.white { color:#fff !important }
.gray  { color:#999 !important }
.black { color:#000 !important }
.red   { color:#f66 !important }
.green { color:#0c0 !important }
.blue  { color:#99f !important }

/* rollover highlighting */
.mouseover 
	{color:[[ColorPalette::TertiaryLight]] !important;}
.mouseover a
	{color:[[ColorPalette::TertiaryLight]] !important;}
.selected .mouseover
	{color:[[ColorPalette::Foreground]] !important;}
.selected .mouseover .button, .selected .mouseover a
	{color:[[ColorPalette::PrimaryDark]] !important;}

/* rollover zoom text */
.zoomover
	{ font-size:80% !important; }
.selected .zoomover
	{ font-size:100% !important; }

/* [[ColorPalette]] text colors */
.Background	{ color:[[ColorPalette::Background]];	 }
.Foreground	{ color:[[ColorPalette::Foreground]];	 }
.PrimaryPale	{ color:[[ColorPalette::PrimaryPale]];	 }
.PrimaryLight	{ color:[[ColorPalette::PrimaryLight]];	 }
.PrimaryMid	{ color:[[ColorPalette::PrimaryMid]];	 }
.PrimaryDark	{ color:[[ColorPalette::PrimaryDark]];	 }
.SecondaryPale	{ color:[[ColorPalette::SecondaryPale]]; }
.SecondaryLight	{ color:[[ColorPalette::SecondaryLight]];}
.SecondaryMid	{ color:[[ColorPalette::SecondaryMid]];	 }
.SecondaryDark	{ color:[[ColorPalette::SecondaryDark]]; }
.TertiaryPale	{ color:[[ColorPalette::TertiaryPale]];	 }
.TertiaryLight	{ color:[[ColorPalette::TertiaryLight]]; }
.TertiaryMid	{ color:[[ColorPalette::TertiaryMid]];	 }
.TertiaryDark	{ color:[[ColorPalette::TertiaryDark]];	 }
.Error		{ color:[[ColorPalette::Error]];	 }

/* [[ColorPalette]] background colors */
.BGBackground	  { background-color:[[ColorPalette::Background]];	}
.BGForeground	  { background-color:[[ColorPalette::Foreground]];	}
.BGPrimaryPale	  { background-color:[[ColorPalette::PrimaryPale]];	}
.BGPrimaryLight	  { background-color:[[ColorPalette::PrimaryLight]];	}
.BGPrimaryMid	  { background-color:[[ColorPalette::PrimaryMid]];	}
.BGPrimaryDark	  { background-color:[[ColorPalette::PrimaryDark]];	}
.BGSecondaryPale  { background-color:[[ColorPalette::SecondaryPale]]; 	}
.BGSecondaryLight { background-color:[[ColorPalette::SecondaryLight]];	}
.BGSecondaryMid	  { background-color:[[ColorPalette::SecondaryMid]];	}
.BGSecondaryDark  { background-color:[[ColorPalette::SecondaryDark]]; 	}
.BGTertiaryPale	  { background-color:[[ColorPalette::TertiaryPale]];	}
.BGTertiaryLight  { background-color:[[ColorPalette::TertiaryLight]]; 	}
.BGTertiaryMid	  { background-color:[[ColorPalette::TertiaryMid]];	}
.BGTertiaryDark	  { background-color:[[ColorPalette::TertiaryDark]];	}
.BGError	  { background-color:[[ColorPalette::Error]];	 	}
/*}}}*/
/*{{{*/
body {
	font-size: 1em;
	font-family: helvetica, arial, sans-serif;
	background-color: #fff;
	color: [[ColorPalette::Foreground]];
}

body ul { margin: 0; }

#popup {
	background-color: [[ColorPalette::TertiaryPale]];
}

#popup.confirmationPopup, .followList {
	font-size: 0.8em;
	padding: 1em;
	border: solid 1px [[ColorPalette::SecondaryMid]];
	background-color: [[ColorPalette::SecondaryPale]];
}

.followList .listTitle {
	text-decoration: underline;
}

#popup .followTiddlersList a {
	display: inline;
	padding: 0;
}

#popup li a {
	color: [[ColorPalette::PrimaryMid]];
	font-weight: bold;
}

#popup li a:hover {
	color: [[ColorPalette::PrimaryPale]];
	background: [[ColorPalette::PrimaryMid]];
}

#popup li.listTitle {
	border-bottom: 1px solid #000;
	font-weight: bold;
	margin-bottom: 10px;
}

#popup.followList {
	margin-left: 50px;
	margin-top: -30px;
}

.followTiddlersList .label {
	display: block;
	left: 10px;
	top: 0px;
	line-height: 16px;
	position: relative;
}

#popup .followTiddlersList .siteIcon{
	height: auto;
}

#popup .followTiddlersList li{
	clear: both;
	display: block;
	height: 48px;
	margin-bottom: 8px;
	position: relative;
}

#popup .followTiddlersList a{
	display: inline;
}

#displayArea {
	margin: 0;
	top: 0px;
	left: 0px;
	width: 100%;
	position: relative;
}

.revisionCloak {
	position: absolute;
	position: fixed !important;
	height: 100%;
	width: 100%;
	top: 0;
	left: 0;
	border: 0;
	margin: 0;
	padding: 0;
	opacity: 0.5;
	filter: alpha(opacity=50);
	background-color: #000;
}

/* *** Header *** */
.header {
	position: relative;
	background-color: [[ColorPalette::PrimaryMid]];
	_width: 100%; /* ie 6 demands */
}

.headerForeground {
	background-color: [[ColorPalette::PrimaryMid]];
	float: left;
	margin: 24px 16px 0px 72px;
	padding: 0;
	position: relative;
	top: 0;
	_width: 70%; /*ie6: needed for the background to actually be transparent*/
	_background-color: transparent; /*ie6: needed to show the search box*/
}

.clearFloat {
	clear: both;
}

#contentWrapper {
	position: relative;
	padding-top: 1px;
	top: -1px;
}

#tiddlerDisplay {
	_position: relative; /* ie 6*/
}

.siteTitle {
	clear: both;
	display: block;
	font-size: 32px;
	font-weight: bold;
	line-height: 32px;
}

.siteSubtitle {
	display: block;
	font-size: 14px;
	height: 16px;
	margin-bottom: 8px;
}

#sidebarSearch {
	padding: 0;
	position: absolute;
	right: 80px;
	top: 8px;
	width: 176px;
}

#sidebarSearch .txtOptionInput {
	width: 100%;
	margin-top: 5px;
	_color: #bbb; /* ie6 danger */
}

#sidebarSearch .txtOptionInput:focus {
	color: #000;
}

#sidebarSearch .searchButton {
	display: none;
}

/* *** Menu Bar *** */

#mainMenu {
	position: static;
	text-align: left;
	margin-left: 72px;
	float: left;
	width: auto;
	padding: 0;
	font-size: 1em;
	line-height: normal;
}

#mainMenu a {
	color: #fff;
	padding: 8px;
	font-size: 0.9em;
	margin-right: 16px;
}

#mainMenu a:hover {
	background-color: [[ColorPalette::PrimaryMid]];
	color: [[ColorPalette::Background]]
}

#sidebarOptions {
	margin-right: 72px;
	float: right;
	font-size: 1.1em;
	line-height: 1.6em;
	min-height: 1em;
	padding-top: 0;
}

#sidebarOptions a {
	margin-right: 8px;
}

.confirmationPopup .button,
#sidebarOptions .button {
	cursor: pointer;
	line-height: 1.4em;
	text-align: center;
	margin-right: 8px;
	margin-left:-2px;
}

.confirmationPopup .button {
	font-size: 0.9em;
	padding: 2px;
}

#sidebarOptions .button {
	font-size: 0.7em;
	float: left;
	width: 80px;
	padding: 0px;
        color: #fff;
}

.confirmationPopup a.button,
#sidebarOptions a {
	border: none;
	margin: 0 0.2em;
	padding: 0.6em 0.25em;
	display: inline;
	color: #666;
}

.confirmationPopup a.button:hover,
#sidebarOptions a:hover {
	color: #000;
}

.confirmationPopup a.button:active,
#sidebarOptions a:active {
	border: solid 1px [[ColorPalette::PrimaryMid]];
	background-color: #fff;
	background: -webkit-gradient( linear, left bottom, left top, color-stop(0.1,rgb(200,200,200)), color-stop(1, rgb(100,100,100)));
	background: -moz-linear-gradient(center bottom , rgb(200,200,200) 10%,rgb(100,100,100) 100%) repeat scroll 0 0 transparent;
}
/* *** Sidebar *** */

#sidebar .wizard table {
	margin: 0px;
}

.tabContents .listTitle:first-child {
	margin-top: 0px;
}

#menuBar {
	background: [[ColorPalette::PrimaryLight]];
	left: 0;
	right: 0;
	position: relative;
	margin: 0;
	padding: 0.5em 0 0.5em 0;
	min-height: 1em;
	overflow: hidden;
	_width: 100%; /* for ie 6 */
}

#sidebarOptions a.button:hover {
	color: [[ColorPalette::PrimaryPale]];
    background: [[ColorPalette::PrimaryMid]];
}

#tiddlerDisplay, #searchResults {
	margin: 16px 448px 0 72px;
}

#sidebarTabs {
	position: absolute;
	right: 72px;
	width: 352px;
	top: 0;
}

#sidebarTabs .tabsetWrapper .tabset {
	width: 87px;
	border-top: 1px solid [[ColorPalette::PrimaryPale]];
	border-left: 1px solid [[ColorPalette::PrimaryPale]];
	border-bottom: 1px solid [[ColorPalette::PrimaryPale]];
	height: auto;
	float: left;
	word-wrap: break-word;
	top: 0;
	padding: 0;
}

#sidebarTabs .tabsetWrapper .tabContents {
	background-color: [[ColorPalette::PrimaryPale]];
	border: 3px solid [[ColorPalette::PrimaryMid]];
	width: 242px;
	_width: 238px;
	left: -3px;
	_left: -5px;
	position: relative;
	min-height: 34em;
	padding: 8px;
	font-size: 0.8em;
}

/* ---- Side style --- */

#sidebarTabs .tabsetWrapper .tabset .tab {
	font-size: 0.9em;
	padding: 0.7em 8px 0.5em;
	color: #fff;
	background: [[ColorPalette::PrimaryLight]];
	border: none;
	line-height: 16px;
	position: relative;
	display: block;
	margin: 0;
}

#sidebarTabs .tabsetWrapper .tabset .tabSelected {
	color: [[ColorPalette::PrimaryMid]];
	background: [[ColorPalette::PrimaryPale]];
	border-top: 3px solid [[ColorPalette::PrimaryMid]];
	border-bottom: 3px solid [[ColorPalette::PrimaryMid]];
	border-left: 3px solid [[ColorPalette::PrimaryMid]];
	z-index: 10;
	margin-top: -1px;
	font-weight: bold;
}

#sidebarTabs .tabContents li {
	border: none;
	margin-left: 0;
	word-wrap: break-word;
}

.tabContents .timeline {
	background: [[ColorPalette::PrimaryPale]];
	margin-bottom: 8px;
}

#sidebarTabs .timeline li.listTitle {
	color: #132E43;
	margin-left: 8px 0;
	padding: 0.3em 0.11em;
	font-size: 1em;
	border-bottom: none;
}

#sidebarTabs .tabContents li a {
	display: block;
	text-align: left;
	margin: 0 0 1px 0;
	padding: 0.3em 1em;
	background: [[ColorPalette::PrimaryPale]];
}

#sidebarTabs .tabsetWrapper .tabset a:hover,
#sidebarTabs .tabContents li a:hover {
	color: [[ColorPalette::PrimaryPale]];
	background: [[ColorPalette::PrimaryMid]];
}

/* Activity Stream */
#sidebarTabs .tabContents .activityStream .feedItem a {
	display: inline-block;
	padding: 0;
	background: none;
}

/* ---- Tagging box --- */
.tagInfo {
	border: 1px solid #cccccc;
	padding: 10px 15px;
	-moz-box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);
	box-shadow: 0 2px 2px rgba(0,0,0,0.2);
	color: [[ColorPalette::TertiaryMid]];
	background: -moz-linear-gradient(100% 100% 90deg, #f4f4f4, #e5e5e5);
	background: -webkit-gradient(linear, left top, right top, from(#e5e5e5), to(#f4f4f4));
	margin-top: 1em;
	font-size: 13px;
	margin: 0 0 0 56px;
}

.tagInfo ul {
	list-style: none;
	padding-left: 2.2em;
}

.tagInfo ul li {
	display: inline;
}

.tagInfo ul li.listTitle,
.tagInfo .tagging ul li.listTitle {
	color: [[ColorPalette::PrimaryMid]];
	font-size: 13px;
}

.tagInfo ul li a {
	border: none;
}

.tagInfo .tagging ul li {
	float: none;
	display: inline-block;
}

.tagInfo .tagging {
	padding: 0;
}

.viewRevision .toolbar {
	right: 48px;
	top: 8px;
}

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

.viewRevision .toolbar svg {
	width: 32px;
	height: 32px;
}

/* --- IE hacks from lattice --- */

/* ie hacks */
* html #menuBar {
	margin-bottom: 8px;
}
.toolbar .svgIconText {
	*display: inline;
}

div.tiddler .toolbar a {
	cursor: pointer;
	float: left\9;
	display: inline\9;
}

* html .toolbar {
	right: 8px;
}
* html .followButton a {
	margin-top: 0px;
	margin-right: 8px;
}
* html #tiddlerDisplay {
	margin-top: 0px;
}

/* for printing purposes */
@media print {
	#mainMenu,
	#sidebar,
	#messageArea,
	.toolbar,
	.followPlaceHolder,
	#backstageButton,
	#backstageArea,
	#sidebarTabs,
	#sidebarSearch .txtOptionInput,
	#sidebarOptions {
		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 */
	}
	#tiddlerDisplay {
		margin: 16px 16px;
	}
}

@media all and (max-width: 960px){
	#tiddlerDisplay,
	#searchResults {
		margin: 16px 366px 0 16px;
	}

	#mainMenu {
		margin-left: 16px;
	}

	.headerForeground {
		margin-left: 16px;
	}

	#sidebarSearch {
		right: 16px;
	}

	#sidebarOptions {
		margin-right: 16px;
	}

	#sidebarTabs {
		right: 16px;
		width: 326px;
	}

	#sidebarTabs .tabsetWrapper .tabset {
		font-size: 0.9em;
		width: 77px;
	}

	#sidebarTabs .tabsetWrapper .tabContents {
		width: 226px;
		_width: 222px;
	}

	#sidebarTabs .tabContents li a {
		font-size: 0.9em;
	}
}
/*}}}*/
/***
|''Name:''|TableSortingPlugin|
|''Description:''|Dynamically sort tables by clicking on column headers|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#TableSortingPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.02|
|''Date:''|25-01-2008|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|
!!Usage:
* Make sure your table has a header row
** {{{|Name|Phone Number|Address|h}}}<br> Note the /h/ that denote a header row 
* Give the table a class of 'sortable'
** {{{
|sortable|k
|Name|Phone Number|Address|h
}}}<br>Note the /k/ that denotes a class name being assigned to the table.
* To disallow sorting by a column, place {{{<<nosort>>}}} in it's header
* To automatically sort a table by a column, place {{{<<autosort>>}}} in the header for that column
** Or to sort automatically but in reverse order, use {{{<<autosort reverse>>}}}

!!Example:
|sortable|k
|Name |Salary |Extension |Performance |File Size |Start date |h
|ZBloggs, Fred |$12000.00 |1353 |+1.2 |74.2Kb |Aug 19, 2003 21:34:00 |
|ABloggs, Fred |$12000.00 |1353 |1.2 |3350b |09/18/2003 |
|CBloggs, Fred |$12000 |1353 |1.200 |55.2Kb |August 18, 2003 |
|DBloggs, Fred |$12000.00 |1353 |1.2 |2100b |07/18/2003 |
|Bloggs, Fred |$12000.00 |1353 |01.20 |6.156Mb |08/17/2003 05:43 |
|Turvey, Kevin |$191200.00 |2342 |-33 |1b |02/05/1979 |
|Mbogo, Arnold |$32010.12 |2755 |-21.673 |1.2Gb |09/08/1998 |
|Shakespeare, Bill |£122000.00|3211 |6 |33.22Gb |12/11/1961 |
|Shakespeare, Hamlet |£9000 |9005 |-8 |3Gb |01/01/2002 |
|Fitz, Marvin |€3300.30 |5554 |+5 |4Kb |05/22/1995 |

***/
// /%
//!BEGIN-PLUGIN-CODE
config.tableSorting = {
	
	darrow: "\u2193",
	
	uarrow: "\u2191",
	
	getText : function (o) {
		var p = o.cells[SORT_INDEX];
		return p.innerText || p.textContent || '';
	},
	
	sortTable : function (o,rev) {
		SORT_INDEX = o.getAttribute("index");
		var c = config.tableSorting;
		var T = findRelated(o.parentNode,"TABLE");
		if(T.tBodies[0].rows.length<=1) 
			return;
		var itm = "";
		var i = 0;
		while (itm == "" && i < T.tBodies[0].rows.length) {
			itm = c.getText(T.tBodies[0].rows[i]).trim();
			i++;
		}
		if (itm == "") 
			return; 	
		var r = [];
		var S = o.getElementsByTagName("span")[0];		
		c.fn = c.sortAlpha; 
		if(!isNaN(Date.parse(itm)))
			c.fn = c.sortDate; 
		else if(itm.match(/^[$|£|€|\+|\-]{0,1}\d*\.{0,1}\d+$/)) 
			c.fn = c.sortNumber; 
		else if(itm.match(/^\d*\.{0,1}\d+[K|M|G]{0,1}b$/)) 
			c.fn = c.sortFile; 
		for(i=0; i<T.tBodies[0].rows.length; i++) {
			 r[i]=T.tBodies[0].rows[i]; 
		} 
		r.sort(c.reSort);
		if(S.firstChild.nodeValue==c.darrow || rev) {
			r.reverse();
			S.firstChild.nodeValue=c.uarrow;
		} 
		else 
			S.firstChild.nodeValue=c.darrow;
		var thead = T.getElementsByTagName('thead')[0]; 
		var headers = thead.rows[thead.rows.length-1].cells;
		for(var k=0; k<headers.length; k++) {
			if(!hasClass(headers[k],"nosort"))
				addClass(headers[k].getElementsByTagName("span")[0],"hidden");
		}
		removeClass(S,"hidden");
		for(i=0; i<r.length; i++) { 
			T.tBodies[0].appendChild(r[i]);
			c.stripe(r[i],i);
			for(var j=0; j<r[i].cells.length;j++){
				removeClass(r[i].cells[j],"sortedCol");
			}
			addClass(r[i].cells[SORT_INDEX],"sortedCol");
		}
	},
	
	stripe : function (e,i){
		var cl = ["oddRow","evenRow"];
		i&1? cl.reverse() : cl;
		removeClass(e,cl[1]);
		addClass(e,cl[0]);
	},
	
	sortNumber : function(v) {
		var x = parseFloat(this.getText(v).replace(/[^0-9.-]/g,''));
		return isNaN(x)? 0: x;
	},
	
	sortDate : function(v) {
		return Date.parse(this.getText(v));
	},

	sortAlpha : function(v) {
		return this.getText(v).toLowerCase();
	},
	
	sortFile : function(v) { 		
		var j, q = config.messages.sizeTemplates, s = this.getText(v);
		for (var i=0; i<q.length; i++) {
			if ((j = s.toLowerCase().indexOf(q[i].template.replace("%0\u00a0","").toLowerCase())) != -1)
				return q[i].unit * s.substr(0,j);
		}
		return parseFloat(s);
	},
	
	reSort : function(a,b){
		var c = config.tableSorting;
		var aa = c.fn(a);
		var bb = c.fn(b);
		return ((aa==bb)? 0 : ((aa<bb)? -1:1));
	}
};

Story.prototype.tSort_refreshTiddler = Story.prototype.refreshTiddler;
Story.prototype.refreshTiddler = function(title,template,force,customFields,defaultText){
	var elem = this.tSort_refreshTiddler.apply(this,arguments);
	if(elem){
		var tables = elem.getElementsByTagName("TABLE");
		var c = config.tableSorting;
		for(var i=0; i<tables.length; i++){
			if(hasClass(tables[i],"sortable")){
				var x = null, rev, table = tables[i], thead = table.getElementsByTagName('thead')[0], headers = thead.rows[thead.rows.length-1].cells;
				for (var j=0; j<headers.length; j++){
					var h = headers[j];
					if (hasClass(h,"nosort"))
						continue;
					h.setAttribute("index",j);
					h.onclick = function(){c.sortTable(this); return false;};
					h.ondblclick = stopEvent;
					if(h.getElementsByTagName("span").length == 0)
						createTiddlyElement(h,"span",null,"hidden",c.uarrow); 
					if(!x && hasClass(h,"autosort")) {
						x = j;
						rev = hasClass(h,"reverse");
					}
				}
				if(x)
					c.sortTable(headers[x],rev);		
			}
		}
	}
	return elem; 
};

setStylesheet("table.sortable span.hidden {visibility:hidden;}\n"+
	"table.sortable thead {cursor:pointer;}\n"+
	"table.sortable .nosort {cursor:default;}\n"+
	"table.sortable td.sortedCol {background:#ffc;}","TableSortingPluginStyles");

function stopEvent(e){
	var ev = e? e : window.event;
	ev.cancelBubble = true;
	if (ev.stopPropagation) ev.stopPropagation();
	return false;	
}	

config.macros.nosort={
	handler : function(place){
		addClass(place,"nosort");
	}	
};

config.macros.autosort={
	handler : function(place,m,p,w,pS){
		addClass(place,"autosort"+" "+pS);		
	}	
};
//!END-PLUGIN-CODE
// %/
Billeder###flere###Vis flere billeder######enkelt
Slide###slides###Vis slideshow######enkelt
/***
|Name|TaggedTemplateTweak|
|Source|http://www.TiddlyTools.com/#TaggedTemplateTweak|
|Documentation|http://www.TiddlyTools.com/#TaggedTemplateTweakInfo|
|Version|1.6.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|use alternative ViewTemplate/EditTemplate for specific tiddlers|
This plugin extends the core function, story.chooseTemplateForTiddler(), so that any given tiddler can be viewed and/or edited using alternatives to the standard tiddler templates.
!!!!!Documentation
>see [[TaggedTemplateTweakInfo]]
!!!!!Revisions
<<<
2009.09.02 [1.6.1] apply field-based template (if any) *before* tag-based template
| please see [[TaggedTemplateTweakInfo]] for previous revision details |
2007.06.11 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.TaggedTemplateTweak= {major: 1, minor: 6, revision: 1, date: new Date(2009,9,2)};

if (!config.options.txtTemplateTweakFieldname)	
	config.options.txtTemplateTweakFieldname='template';

Story.prototype.taggedTemplate_chooseTemplateForTiddler = Story.prototype.chooseTemplateForTiddler
Story.prototype.chooseTemplateForTiddler = function(title,template)
{
	// get core template and split into theme and template name
	var coreTemplate=this.taggedTemplate_chooseTemplateForTiddler.apply(this,arguments);
	var theme=""; var template=coreTemplate;
	var parts=template.split(config.textPrimitives.sectionSeparator);
	if (parts[1]) { theme=parts[0]; template=parts[1]; }
	else theme=config.options.txtTheme||""; // if theme is not specified
	theme+=config.textPrimitives.sectionSeparator;

	// look for template using title as prefix
	if (!store.getTaggedTiddlers(title).length) { // if tiddler is not a tag
		if (store.getTiddlerText(theme+title+template))
			{ return theme+title+template; } // theme##TitleTemplate
		if (store.getTiddlerText(title+template))
			{ return title+template; }	 // TitleTemplate
	}

	// look for templates using custom field value as prefix
	var v=store.getValue(title,config.options.txtTemplateTweakFieldname);
	if (store.getTiddlerText(theme+v+template))
		{ return theme+v+template; }	// theme##valueTemplate
	if (store.getTiddlerText(v+template))
		{ return v+template; }		// valueTemplate

	// look for template using tags as prefix
	var tiddler=store.getTiddler(title);
	if (!tiddler) return coreTemplate; // tiddler doesn't exist... use core result
	for (i=0; i<tiddler.tags.length; i++) {
		var t=tiddler.tags[i]+template; // add tag prefix to template
		var c=t.substr(0,1).toUpperCase()+t.substr(1); // capitalized for WikiWord title
		if (store.getTiddlerText(theme+t))	{ return theme+t; } // theme##tagTemplate
		if (store.getTiddlerText(theme+c))	{ return theme+c; } // theme##TagTemplate
		if (store.getTiddlerText(t)) 		{ return t; }	    // tagTemplate
		if (store.getTiddlerText(c))		{ return c; }	    // TagTemplate
	}
	
	// no match... use core result
	return coreTemplate;
}
//}}}
{{center{<<newTiddler tag:'$1' label:'Create a new $1'>>}}}{{nobullets{<<list filter [tag[$1]] template:TagglyLists##template emptyMessage:"No $1 has been created yet">>}}}/%
!template
{{box7{
<<view title link>><<view title wikified {{"<<editSection '%0' 'edit tiddler'>\>"}}>><<view title wikified {{"<<newTiddler tag:'%0' label:'New tiddler tagged with [[%0]]'>\>"}}>>
<<view text wikified>>
----
><<view title wikified {{"<<list filter '[tag[%0]]' template:TagglyLists##template2 emptyMessage:'No subtags has been created to [[%0]] yet'>\>"}}>>
}}}
!template2
<<view title link>><<view title wikified {{"<<editSection '%0' 'edit tiddler'>\>"}}>><<view title wikified {{"<<newTiddler tag:'%0' label:'New tiddler tagged with [[%0]]'>\>"}}>>
<<view text wikified>>
----
<<view title wikified {{"<<list filter '[tag[%0]]' template:TagglyLists##template2 emptyMessage:'No subtags has been created to [[%0]] yet' >\>"}}>>
!end
%/
/***
|Name|TaskTimerPluginDaModmåns|
|Source|http://www.TiddlyTools.com/#TaskTimerPlugin|
|Documentation|http://www.TiddlyTools.com/#TaskTimerPluginInfo|
|Version|1.4.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|'timer' button automatically writes start/end/elapsed time into tiddler content|
Quickly generate 'timed task' logs that can be used for status reports, billing purposes, etc.  
!!!!!Documentation
> see [[TaskTimerPluginInfo]]
!!!!!Configuration
> see [[TaskTimerPluginConfig]]
!!!!!Revisions
<<<
2008.11.10 [1.4.1] in elapsed time calculation, truncate start/stop times to nearest second (avoids 1-second 'round-down' error)
|please see [[TaskTimerPluginInfo]] for additional revision details|
2007.03.14 [0.5.0] converted from inline script
<<<
!!!!!Code
***/
//{{{
version.extensions.TaskTimerPlugin= {major: 1, minor:4, revision: 1, date: new Date(2008,11,10)};

config.macros.taskTimer = {
	label: "start timer",
	title: "tryk her for at starte opgavetimeren",
	format: "|%4|%0|%1|%2|%3|\\n", // note: double-backslash-en, also date is %4 (for backward compatibility)
	defText: " ", // default description text
	todayKeyword: "today",
	todayFormat: "0MM/0DD/YYYY", // default format - superceded by CalendarPlugin, DatePlugin, or DatePluginConfig
	datestampFormat: "YYYY-0MM-0DD", // date stamp format
	buttonFormat: "%0 - %2",  // timer button formats: %0=current time, %1=start time, %2=elapsed time
	defHeader: "|//Date//|//Description//|//Started//|//Stopped//|//Elapsed//|\n",
	defTarget: "ActivityReport",
	descrMsg: "Skriv en kort beskrivelse af denne aktivitet.  Klik [fortryd] for at fortsætte timeren.",
	askMsg: "Angiv en titel på en tiddler i hvilken denne aktivitet skal skrives.  Klik [fortryd] for at fortsætte timeren.",
	errMsg: "'%0'er ikke en gyldig tiddler titel.  Prøv venligst igen...\n\n",
	createdMsg: "'%0' er blevet oprettet",
	updatedMsg: "'%0' er blevet opdateret",
	marker: "/%"+"tasktimer"+"%/",
	tag: "tidtagning",
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var target=params.shift(); // get optional target tiddler title
		if (!target) target="";
		var format=this.format; if (params[0]) format=params.shift(); // get optional output format
		var descrMsg=this.descrMsg; if (params[0]) descrMsg=params.shift(); // get optional message text
		var defText=this.defText; if (params[0]) defText=params.shift(); // get optional default text
		var onclick="config.macros.taskTimer.toggle(this,'"+target+"','"+format+"','"+descrMsg+"','"+defText+"')";
		createTiddlyElement(place,"span").innerHTML =
			'<input type="button" value="start timer" title="'+this.title+'" onclick="'+onclick+'">';
	},
	toggle: function(here,target,format,msg,defText) {
		if (!target || !target.length || target=="here") {
			var  tid=story.findContainingTiddler(here);
			target=tid?tid.getAttribute("tiddler"):"ask";
		}
		if (!here.running) { // not running... start timer...
			here.startTime=new Date();
			var now=here.startTime.formatString("0hh:0mm:0ss");
			here.title=(here.target||target)+" - started at "+now;
			here.value=this.buttonFormat.format([now,now,"00:00:00"]);
			here.id=new Date().getTime()+Math.random().toString(); // unique ID
			here.ticker=setTimeout("config.macros.taskTimer.tick('"+here.id+"')",500);
			here.running=true;
		} else {
			if (target=="ask") {
				target=prompt(this.askMsg,here.target||this.defTarget);
				while (target && !target.trim().length)
					target=prompt(this.errMsg.format([target])+this.askMsg,here.target||this.defTarget);
				if (!target) return; // user cancelled input...  continue timer
			}
			var txt=prompt(msg,defText); // get description from user
			if (!txt) return; // user cancelled input...  continue timer
			if (target==this.todayKeyword || target.substr(0,this.todayKeyword.length+1)==this.todayKeyword+":")
				target=(new Date()).formatString(this.getJournalFormat(target));
			here=document.getElementById(here.id); // RE-get button element after timer has stopped...
			clearTimeout(here.ticker);
			here.target=target;
			var before=this.defHeader;
			var after=this.marker+"\n";
			var tiddler=store.getTiddler(here.target);
			if (tiddler && tiddler.text.length) {
				var pos=tiddler.text.indexOf(this.marker);
				if (pos==-1) pos=tiddler.text.length; // no marker, append content to end
				var before=tiddler.text.substr(0,pos); // everything up to marker
				if (before.length&&before.substr(before.length-1)!="\n") before+="\n"; // start on a new line
				var after=tiddler.text.substr(pos); // marker+everything else
			}
			var now=new Date(Math.floor(new Date()/1000)*1000);
			var then=new Date(Math.floor(here.startTime/1000)*1000);
			var diff=new Date(now-then);
			var s=diff.getUTCSeconds(); if (s<10) s="0"+s;
			var m=diff.getUTCMinutes(); if (m<10) m="0"+m;
			var h=diff.getUTCHours(); if (h<10) h="0"+h;
			var start=then.formatString("0hh:0mm:0ss");
			var stop=now.formatString("0hh:0mm:0ss");
			var elapsed=h+":"+m+":"+s;
			var dateStamp=now.formatString(config.macros.taskTimer.datestampFormat);
			var newtxt=before+format.format([txt,start,stop,elapsed,dateStamp])+after;
			var newtags=(tiddler?tiddler.tags:['task']); // include 'task' tag when creating new tiddlers
			store.saveTiddler(here.target,here.target,newtxt,config.options.txtUserName,new Date(),newtags,tiddler?tiddler.fields:null);
			if (!tiddler) displayMessage(this.createdMsg.format([here.target]));
			else displayMessage(this.updatedMsg.format([here.target]));
			here.running=false;
			here.value=this.label;
			here.title=this.title;
			var  tid=story.findContainingTiddler(here);
			if (!tid || tid.getAttribute("tiddler")!=target) // display target tiddler, but only when button is not IN the target tiddler
				{ story.displayTiddler(story.findContainingTiddler(here),here.target); story.refreshTiddler(here.target,1,true); }
		}
	},
	tick: function(id) {
		var here=document.getElementById(id); if (!here) return;
		var now=new Date();
		var diff=new Date(now-here.startTime);
		var s=diff.getUTCSeconds(); if (s<10) s="0"+s;
		var m=diff.getUTCMinutes();  if (m<10) m="0"+m;
		var h=diff.getUTCHours();  if (h<10) h="0"+h;
		var elapsed=h+":"+m+":"+s;
		now=now.formatString("0hh:0mm:0ss");
		var start=here.startTime.formatString("0hh:0mm:0ss");
		here.value=this.buttonFormat.format([now,start,elapsed]);
		here.ticker=setTimeout("config.macros.taskTimer.tick('"+id+"')",500);
	},
	getJournalFormat: function(target) {
		var fmt=target.split(":"); fmt.shift(); fmt=fmt.join(":");
		if (!fmt || !fmt.length) { // if date format was not specified
			if (config.macros.date)  // if installed, use default from DatePlugin
				fmt=config.macros.date.linkformat;
			if (config.macros.calendar) { // if installed, use default from CalendarPlugin
				if (!config.macros.date) // hard-coded calendar fallback if no DatePlugin
					fmt=config.macros.calendar.tiddlerformat;
				else // journalDateFmt is set when calendar is rendered with DatePlugin
					fmt=config.macros.calendar.journalDateFmt;
			}
		}
		if (!fmt) { // if not specified and no DatePlugin/CalendarPlugin
			// get format from <<newJournal>> in SideBarOptions
			var text = store.getTiddlerText("SideBarOptions");
			var re=new RegExp("<<(?:newJournal)([^>]*)>>","mg"); var fm=re.exec(text);
			if (fm && fm[1]!=null) { var pa=fm[1].readMacroParams(); if (pa[0]) fmt = pa[0]; }
		}
		if (!fmt) var fmt=this.todayFormat; // no "newJournal"... final fallback.
		return fmt;
	}
}
//}}}
/***
|Name|TaskTimerPluginConfig|
|Source|http://www.TiddlyTools.com/#TaskTimerPluginConfig|
|Documentation|http://www.TiddlyTools.com/#TaskTimerPluginInfo|
|Version|1.3.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|formats other optional settings for TaskTimerPlugin|
***/
//{{{
// default target tiddler title (when 'ask' option is used)
config.macros.taskTimer.defTarget="AktivitetsRapport";

// table heading (when creating **new** target tiddlers only)
config.macros.taskTimer.defHeader="|sortable|k\n|//Dato//|//Beskrivelse//|//Startet//|//Stoppet//|//Varighed//|h\n";

// note: double-backslash-en, also datestamp is %4 (for backward compatibility)
config.macros.taskTimer.format="|[[%4]]|%0|%1|%2|%3|\\n";

// date stamp format (used with %4, above)
config.macros.taskTimer.datestampFormat="DD/MM-YYYY";

// default description text - note: do not use empty string (e.g., "")
config.macros.taskTimer.defText="ØveTid";

// format for target tiddler title (when "today" option is used)
// otherwise, value is superceded by CalendarPlugin, DatePlugin, DatePluginConfig,
// or format from <<newJournal>> macro embedded in SideBarOptions
config.macros.taskTimer.todayFormat="0MM/0DD/YYYY";

// marker for locating 'insertion point' in target tiddler
config.macros.taskTimer.marker="|<<taskTimer here>>||| gennemsnit:|<<columncalc avg 1 -1>>|"; //

// default tag (when creating **new** target tiddlers only)
config.macros.taskTimer.tag="Tid";
//}}}
[[$1]] <<newTiddler tag:'$1' label:'Create a new $1'>>
<<list filter [tag[$1]] template:Template##section1 emptyMessage:"No $1 has been created yet">>/%
!section1
<<view title link>><<view title wikified {{"<<newTiddler tag:'%0' label:'New tiddler tagged with [[%0]]'>\>"}}>>
<<view text wikified>>
----
><<view title wikified {{"<<list filter '[tag[%0]]' template:Template##section2 emptyMessage:'No subtags has been created to [[%0]] yet'>\>"}}>>
!section2
<<view title link>><<view title wikified {{"<<newTiddler tag:'%0' label:'New tiddler tagged with [[%0]]'>\>"}}>>
<<view text wikified>>
----
<<view title wikified {{"<<list filter '[tag[%0]]' template:Template##section2 emptyMessage:'No subtags has been created to [[%0]] yet' >\>"}}>>
!end %/
<<tiddler MeMo with: Plante>>
/%
!info
|Name|ThumbThing|
|Source|http://www.TiddlyTools.com/#ThumbThing|
|Version|1.2.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|display a scaled 'thumbnail' image with popup for full-sized image|

Usage:
<<<
{{{
<<tiddler ThumbThing with: image thumbWidth thumbHeight fullWidth fullHeight>>
}}}
*{{{image}}} is one of:
**a local path/file
**a remote URL reference
**the title of a tiddler containing an attached image (see [[AttachFilePlugin]])
*{{{thumbWidth, thumbHeight, fullWidth, fullHeight}}} are CSS measurements.  Use 'auto' (or omit values) for default (full-sized) image height and/or width. For proportional scaling, specify a fixed-width OR fixed-height and use 'auto' for the other dimension.
<<<
Example:
<<<
{{{
<<tiddler ThumbThing with: images/meow2.jpg 100px>>
}}}
<<tiddler ThumbThing with: images/meow2.jpg 100px>>
<<<
See also:
>[[AllThumbs]]
!end

!show
<html><hide linebreaks>
<img src="$1" style="border=0;width:$2;height:$3;" title="$1" onclick="
	var p=Popup.create(this); if (!p) return; var s=p.style; s.border=s.padding='0'; s.background='none';
	p.innerHTML='<img src=\x22$1\x22 style=\x22border:1px solid #999;background:#eee;width:$4;height:$5\x22>';
	Popup.show(); event.cancelBubble=true; if(event.stopPropagation)event.stopPropagation(); return(false);
"></html>
!end
%/<<tiddler {{'ThumbThing##'+('$1'=='$'+'1'?'info':'show')}} with:
	{{var cma=config.macros.attach; (cma&&cma.isAttachment('$1'))?cma.getAttachment('$1'):'$1';}}
	[[$2]] [[$3]] [[$4]] [[$5]]>>
/***
|Name|TiddlyPodPlugin|
|Source|http://www.TiddlyTools.com/#TiddlyPodPlugin|
|Version|1.4.4|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|TiddlyPodList|
|Description|autoplay music randomly selected from playlist using embedded player|
!!!!!Usage
<<<
{{{
<<tiddlyPod autoplay loop verbose track:... width:... height:... size:... @TiddlerName>>
}}}
where:
* ''autoplay'' / ''noautoplay'' (keyword, default=''autoplay'')<br>the selected item will play immediately, without pressing the PLAY button.
* ''loop'' / ''noloop'' (keyword, default=''noloop'')<br>the current item is repeatedly played until you press the stop button.
* ''verbose'' (keyword, default=//none//)<br>a message will be displayed whenever an item is selected.
* ''track:...'' (number, default=//last played//)<br>the index into the playlist for the initial item to load into the player.  If no item is specified, the last one played is re-loaded (tracked in a browser cookie).  If no cookie exists (i.e., the first time you play after installing, or after clearing cookies, etc.), then the first item in the playlist is used.
* ''width:...'' and ''height:...'' (default=115x15 for QuickTime or, if using Internet Explorer, 90x44 for Windows Media Player)<br>specify a non-default width/height dimensions for the embedded player (using pixels).
* ''size:xxxx'' (default="auto")<br>a fixed height for the playlist popup container itself (using CSS measurement units, e.g., "px", "em", "cm", "in", etc.).  If the items in the list overflow this height, then a scrollbar is automatically added to the popup list.  "auto" shows //all// playlist entries without scrolling, using a variable height popup.
* ''@~TiddlerName'' (default=[[TiddlyPodList]])<br>specifies a tiddler containing the list of items to play.  Entries in the list are separated by "----", and each entry consist of two lines: the first line is the location (or URL) of the media file to be played.  The second line is a title to be displayed when that item is playing.
<<<
!!!!!Examples
<<<
{{{<<tiddlyPod noautoplay loop track:1 @TiddlyPodList>>}}}
<<tiddlyPod noautoplay loop track:1 @TiddlyPodList>>
<<<
!!!!!Revisions
<<<
2008.03.22 [1.4.4] added [[TiddlyPod]] shadow definition.
2008.03.21 [1.4.3] removed {{{pluginspage="http://www.apple.com/quicktime/download/"}}} param from HTML {{{<embed>}}}, so that FireFox (and other browsers) don't //prefer// QuickTime over other installed media players.  ''It is still up to the browser to determine which player to use.''.
2007.11.09 [1.4.2] in handler(), corrected default initialization of chkTiddlyPodAutoPlay and chkTiddlyPodLoopPlay.
2007.06.12 [1.4.1] in play(), don't call removeChildren(), since browser will clean up objects when assignment to innerHTML is made
2007.02.23 [1.4.0] added support for using 'attachment tiddlers' (see AttachFilePlugin) for self-contained playback.  This seems to work well with QuickTime.  Other embedded players may vary in support for the data:// URI.  Note: IE6/7 does NOT support data:// URI.  Attachments should always have local and/or remote fallbacks defined.
2007.02.23 [1.3.1] added support for scrollbar to playlist popup.  Use size:xxx to set the length of the playlist, where 'xxx' is any valid CSS measurement.  Use "auto" to show all playlist items without scrolling.  Also, added popup items for controlling autoplay/loopplay preferences.
2007.02.21 [1.3.0] added playlist popup and rewrote getPod() and play() to use innerHTML instead of wikify().  Eliminates all dependency on InlineJavascriptPlugin when rendering output.
2007.02.20 [1.2.1] added optional 'track:#' parameter to specify initial track, instead of starting with a random track
2007.02.20 [1.2.0] added optional 'loop' parameter to trigger looping playback
2007.02.20 [1.1.0] removed link for "edit playlist" to reduce clutter and provide a 'playback only' interface.  When changing the play list is appropriate, a link to [[TiddlyPodList]] (or any alternative playlist tiddler) can be directly added to surrounding tiddler content as needed.
2007.02.19 [1.0.0] initial release (converted from inline script)
<<<
!!!!!Code
***/
//{{{
version.extensions.TiddlyPodPlugin= {major: 1, minor: 4, revision: 4, date: new Date(2008,3,22)};

config.shadowTiddlers['TiddlyPod']='<<tiddlyPod>>';

config.macros.tiddlyPod= {
	verbose: false, // set to true to display messages
	playlist: "TiddlyPodList", // tiddler containing list of tunes
	size: "auto", // maximum length (using CSS) of playlist to show before adding a scrollbar
	width: config.browser.isIE?90:115, // width of embedded player (IE w/WinMedia vs FireFox w/QuickTime)
	height: config.browser.isIE?44:15, // height of embedded player (IE w/WinMedia vs FireFox w/QuickTime)
	getPlayer: function(src,w,h,auto,loop) {
		var out='';
		out+='<EMBED WIDTH="'+w+'" HEIGHT="'+h+'" ';
		out+='	style="height:'+h+'px;width:'+w+'px;margin:0;padding:0;" ';
		out+='	src="'+src+'" ';
		out+='	autostart="'+(auto?'true':'false')+'" autoplay="'+(auto?'true':'false')+'" ';
		out+='	loop="'+(loop?'true':'false')+'" ';
		out+='	controller="show" volume="100" EnableJavaScript="true" ';
		out+='	showtracker="1" showpositioncontrols="0" showaudiocontrols="0" ';
		out+='	showdisplay="0" showstatusbar="0" showgotobar="0"> ';
		out+='</EMBED>';
		return out;
	},
	getPod: function(playlist,which) {
		var txt=store.getTiddlerText(playlist); if (!txt) return;
		var songs=txt.split("\n----\n");
		var first=0;
		var last=songs.length-1;
		if (which===undefined) which=config.options.txtTiddlyPodNowPlaying;
		if (which<first) which=first; if (which>last) which=last;
		var next=(which-1)+2; if (next>last) next=last;
		var prev=which-1; if (prev<first) prev=first;
		var src=songs[which].split("\n")[0];
		var descr=songs[which].split("\n")[1];

		// if src is a tiddlername, check for attachment
		if (config.macros.attach!=undefined) // if AttachFilePlugin is installed
			if ((tid=store.getTiddler(src))!=null && tid.isTagged("attachment")) // if src is attachment tiddler title
				src=config.macros.attach.getAttachment(src); // replace TiddlerTitle with attachment-expanded src URL

		var out='';
		var tip=config.messages.externalLinkTooltip.format([src]); // use core defined tooltip
		out+='<div><a href="'+src+'" target="_blank" class="button" title="'+tip+'" style="white-space:normal">'+descr+'</a></div>';
		out+=this.getPlayer(src,this.width,this.height,config.options.chkTiddlyPodAutoPlay,config.options.chkTiddlyPodLoopPlay);
		out+='<div class="small">';
		out+='<a href="javascript:;" class="button" title="[first] track '+(first+1)+' - '+songs[first].split("\n")[1]+'" ';
		out+='	onclick="config.macros.tiddlyPod.play(this.parentNode.parentNode,'+first+'); return false;">&lt;&lt;</a>';
		out+='&nbsp;';
		out+='<a href="javascript:;" class="button" title="[previous] track '+(prev+1)+' - '+songs[prev].split("\n")[1]+'" ';
		out+='	onclick="config.macros.tiddlyPod.play(this.parentNode.parentNode,'+prev+'); return false;">&nbsp;&lt;&nbsp;</a>';
		out+='&nbsp;';
		out+='<a href="javascript:;" class="button" title="[playlist]" ';
		out+='	onclick="config.macros.tiddlyPod.showpopup(this,event); return false;">...</a>';
		out+='&nbsp;';
		out+='<a href="javascript:;" class="button" title="[next] track '+(next+1)+' - '+songs[next].split("\n")[1]+'" ';
		out+='	onclick="config.macros.tiddlyPod.play(this.parentNode.parentNode,'+next+'); return false;">&nbsp;&gt;&nbsp;</a>';
		out+='&nbsp;';
		out+='<a href="javascript:;" class="button" title="[last] track '+(last+1)+' - '+songs[last].split("\n")[1]+'" ';
		out+='	onclick="config.macros.tiddlyPod.play(this.parentNode.parentNode,'+last+'); return false;">&gt;&gt;</a>';
		out+='</div>';

		if (this.verbose) displayMessage('now playing... track '+(which+1)+' - "'+descr+'"');
		return out;
	},
	play: function(target,which) {
		if (which==undefined) which=config.options.txtTiddlyPodNowPlaying; // if not specified, use most recently played item
		if (which==undefined) which=0; // default to first item in playlist if no previous item
		target.innerHTML=this.getPod(this.playlist,which);
		config.options.txtTiddlyPodNowPlaying=which;
		saveOptionCookie("txtTiddlyPodNowPlaying");
		return;
	},
	showpopup: function(place,event) {
		var popup=Popup.create(place); if (!popup) return;
		var txt=store.getTiddlerText(this.playlist); if (!txt) return;
		var songs=txt.split("\n----\n");
		config.macros.tiddlyPod.target=place.parentNode.parentNode;
		createTiddlyButton(createTiddlyElement(popup,'li'),
			"play a randomly selected track", "shuffle play",
			function(){
				var t=config.options.chkTiddlyPodAutoPlay;
				config.options.chkTiddlyPodAutoPlay=true; // force autoplay
				config.macros.tiddlyPod.play(config.macros.tiddlyPod.target,Math.floor(Math.random()*songs.length));
				config.options.chkTiddlyPodAutoPlay=t;
				return false;
			});
		createTiddlyElement(popup,"hr");
		createTiddlyButton(createTiddlyElement(popup,'li'),
			(config.options.chkTiddlyPodAutoPlay?"[x]":"[_]")+" auto play",
			"automatically play tune when selected (if off, press PLAY button to start)",
			function(){
				config.options.chkTiddlyPodAutoPlay=!config.options.chkTiddlyPodAutoPlay;
				saveOptionCookie("chkTiddlyPodAutoPlay");
				config.macros.tiddlyPod.play(config.macros.tiddlyPod.target,config.options.txtTiddlyPodNowPlaying);
				return false;
			});
		createTiddlyButton(createTiddlyElement(popup,'li'),
			(config.options.chkTiddlyPodLoopPlay?"[x]":"[_]")+" repeat play",
			"when playback is finished, repeat the current selection again",
			function(){
				config.options.chkTiddlyPodLoopPlay=!config.options.chkTiddlyPodLoopPlay;
				saveOptionCookie("chkTiddlyPodLoopPlay");
				config.macros.tiddlyPod.play(config.macros.tiddlyPod.target,config.options.txtTiddlyPodNowPlaying);
				return false;
			});
		createTiddlyElement(popup,"hr");
		var playlist=createTiddlyElement(popup,"div",null,"fine"); // uses 'fine' CSS class to set font size
		playlist.style.padding="2px"; // room for dotted 'focus' indicator (prevent horizontal scrollbar from appearing)
		playlist.style.height=config.macros.tiddlyPod.size;
		playlist.style.overflow="auto";
		for (var s=0; s<songs.length; s++) {
			var src=songs[s].split("\n")[0];
			var descr=(s+1)+" - "+songs[s].split("\n")[1];
			var a=createTiddlyButton(createTiddlyElement(playlist,'li'), descr, src,
				function(){
					var t=config.options.chkTiddlyPodAutoPlay;
					config.options.chkTiddlyPodAutoPlay=true; // force autoplay
					config.macros.tiddlyPod.play(config.macros.tiddlyPod.target,this.getAttribute("which"));
					config.options.chkTiddlyPodAutoPlay=t;
					return false;
				});
			a.setAttribute("which",s); // song index
			if (s==config.options.txtTiddlyPodNowPlaying) a.style.fontWeight="bold";
		}
		createTiddlyElement(popup,"hr");
		createTiddlyButton(createTiddlyElement(popup,'li'), 'edit playlist...', '',
			function(){story.displayTiddler(null,config.macros.tiddlyPod.playlist,2);return false;});
		Popup.show(popup,false);
		if (!event) var event=window.event;
		if (event) event.cancelBubble = true;
		if (event && event.stopPropagation) event.stopPropagation();
	},
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		if (config.options.chkTiddlyPodAutoPlay==undefined)
			config.options.chkTiddlyPodAutoPlay=true; // default enable auto play
		if (config.options.chkTiddlyPodLoopPlay==undefined)
			config.options.chkTiddlyPodLoopPlay=false; // default disable loop play
		if (config.options.chkTiddlyPodNowPlaying==undefined)
			config.options.chkTiddlyPodNowPlaying=0; // default to first item in playlist
		while (p=params.shift()) {
			if (p=="autoplay")
				config.options.chkTiddlyPodAutoPlay=true; // enable auto play
			if (p=="noautoplay")
				config.options.chkTiddlyPodAutoPlay=false; // disable auto play
			else if (p=="loop")
				config.options.chkTiddlyPodLoopPlay=true; // enable loop play
			else if (p=="noloop")
				config.options.chkTiddlyPodLoopPlay=false; // disable loop play
			else if (p=="verbose")
				this.verbose=true; // enable message display
			else if (p.substr(0,1)=="@")
				this.playlist=p.substr(1); // alternative playlist tiddler 
			else if (p.substr(0,6)=="track:")
				config.options.txtTiddlyPodNowPlaying=p.substr(6)-1; // initial playlist index (0-based, e.g. track #1=index 0)
			else if (p.substr(0,6)=="width:")
				this.width=p.substr(6); // width of embedded player controls
			else if (p.substr(0,7)=="height:")
				this.height=p.substr(7); // height of embedded player controls
			else if (p.substr(0,11)=="size:")
				this.size=p.substr(11); // height of playlist in popup
		}
		this.play(createTiddlyElement(place,"span"),config.options.txtTiddlyPodNowPlaying);
	}
}
//}}}
<html><nowiki><span class='button' title="slå redigering af dette dokument til/fra" onclick="
	if (window.readOnly) {
		this.innerHTML=this.savedHTML;
		this.savedHTML=null;
	} else {
		var chk='<input type=\x22checkbox\x22 checked style=\x22margin:0;padding:0;\x22>';
		this.savedHTML=this.innerHTML;
		this.innerHTML=chk+this.innerHTML;
	}
	window.readOnly=!window.readOnly;
	config.macros.option.propagateOption('chkHttpReadOnly','checked',window.readOnly,'input');
	config.macros.option.propagateOption('chkSinglePageMode','checked',window.readOnly,'input');
	window.showBackstage=!window.readOnly; if(showBackstage && !backstage.area) backstage.init();
	backstage.button.style.display=showBackstage?'block':'none'; backstage.hide();
	story.switchTheme(config.options.txtTheme); store.notifyAll(); story.refreshAllTiddlers(true);
	return false;
">$1</span></html><<tiddler {{
	var e=place.lastChild.getElementsByTagName('span')[0];
	if (!window.readOnly && e.innerHTML.indexOf('checkbox')==-1) {
		var chk='<input type=\x22checkbox\x22 checked style=\x22margin:0;padding:0;\x22>';
		e.savedHTML=e.innerHTML;
		e.innerHTML=chk+e.innerHTML;
	}
'';}}>>
/%
!info
|Name|ToggleRightSidebarMod|
|Source|http://www.TiddlyTools.com/#ToggleRightSidebar|
|Version|2.0.0|
|Author|Eric Shulman|
|Modder|Måns Mårtensson|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|show/hide right sidebar (SideBarTabs TiddlySpace style)|
Usage
<<<
{{{
<<tiddler ToggleRightSidebarMod>>
<<tiddler ToggleRightSidebarMod with: label tooltip>>
}}}
Try it: <<tiddler ToggleRightSidebarMod##show
	with: {{config.options.chkShowRightSidebarMod?'►':'◄'}}>>
<<<
Configuration:
<<<
copy/paste the following settings into a tiddler tagged with <<tag systemConfig>> and then modify the values to suit your preferences:
{{{
config.options.chkShowRightSidebarMod=true;
config.options.txtToggleRightSideBarModLabelShow="◄";
config.options.txtToggleRightSideBarModLabelHide="►";
}}}
<<<
!end
!show
<<tiddler {{
	var co=config.options;
	if (co.chkShowRightSidebar===undefined) co.chkShowRightSidebarMod=true;
	var sb=document.getElementById('sidebarTabs');
	var da=document.getElementById('tiddlerDisplay');
	if (sb) {
		sb.style.display=co.chkShowRightSidebarMod?'block':'none';
		da.style.marginRight=co.chkShowRightSidebarMod?'':'1em';
	}
'';}}>><html><nowiki><a href='javascript:;' title="$2"
onmouseover="
	this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
	+encodeURIComponent(encodeURIComponent(this.onclick))
	+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
	var co=config.options;
	var opt='chkShowRightSidebarMod';
	var show=co[opt]=!co[opt];
	var sb=document.getElementById('sidebarTabs');
	var da=document.getElementById('tiddlerDisplay');
	if (sb) {
		sb.style.display=show?'block':'none';
		da.style.marginRight=show?'':'1em';
	}
	saveOptionCookie(opt);
	var labelShow=co.txtToggleRightSideBarModLabelShow||'&#x25C4;';
	var labelHide=co.txtToggleRightSideBarModLabelHide||'&#x25BA;';
	if (this.innerHTML==labelShow||this.innerHTML==labelHide) 
		this.innerHTML=show?labelHide:labelShow;
	this.title=(show?'hide':'show')+' right sidebar';
	var sm=document.getElementById('storyMenu');
	if (sm) config.refreshers.content(sm);
	return false;
">$1</a></html>
!end
%/<<tiddler {{
	var src='ToggleRightSidebarMod';
	src+(tiddler&&tiddler.title==src?'##info':'##show');
}} with: {{
	var co=config.options;
	var labelShow=co.txtToggleRightSideBarModLabelShow||'&#x25C4;';
	var labelHide=co.txtToggleRightSideBarModLabelHide||'&#x25BA;';
	'$1'!='$'+'1'?'$1':(co.chkShowRightSidebarMod?labelHide:labelShow);
}} {{
	var tip=(config.options.chkShowRightSidebarMod?'hide':'show')+' right sidebar';
	'$2'!='$'+'2'?'$2':tip;
}}>>
/***
|''Name:''|ToggleSideBarTB|
|''Description''|allows to toggle left and right sidebar|
|''Version:''|1.1|
|''Type''|macro|
|''Author:''|[[TobiasBeer]]|
|''Info:''|http://tbgtd.tiddlyspot.com/#ToggleSideBarTB|
|''Source:''|http://tbgtd.tiddlyspot.com/#ToggleSideBarTB|
|''License''|[[Creative Commons Attribution-Share Alike 3.0|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion''|2.xx|
!Code
***/
//{{{
config.macros.toggleSideBarTB={
  settings:{
    arr1:"►",arr2:"◄",
    lblToggle:"toggle %0",
    leftBarID:"mainMenu",leftBarLbl:"main menu",
    leftBarHide:"margin-left:2em;",leftBarShow:"margin-left:2em;",
    rightBarID:"sidebarTabs",rightBarLbl:"sidebar",
    rightBarHide:"margin-right:2em;",rightBarShow:"margin-right:24em;"
  },
  handler:function(place,macroName,params,wikifier,paramString,tiddler){
    var l=params[0]&&params[0]=="left";
    var h=params[1]&&params[1]=="hide";
    var no=params[2]&&params[2]=="notip";
    var s=this.settings;
    var el=l?s.leftBarID:s.rightBarID;
    var btnId="ToggleSideBar"+(l?"Left":"Right");
    var arr=l?(h?s.arr1:s.arr2):(h?s.arr2:s.arr1);
    var lbl=(no?'':s.lblToggle.format([(l?s.leftBarLbl:s.rightBarLbl)]));
    var fct=function(){config.macros.toggleSideBarTB.toggle(btnId)};
    document.getElementById(el).setAttribute("toggle","hide");
    createTiddlyButton(place,arr,lbl,fct,"button HideSideBarButton",btnId);
    if(h)config.macros.toggleSideBarTB.toggle(btnId);
  },
  toggle:function(btnId){
    var btn=document.getElementById(btnId);
    var l=btn.id=="ToggleSideBarLeft";
    var s=config.macros.toggleSideBarTB.settings;
    var bl=document.getElementById(s.leftBarID);
    var br=document.getElementById(s.rightBarID);
    var bar=(l?bl:br);
    var hl=bl.getAttribute("toggle")=='show';if(l)hl=!hl;
    var hr=br.getAttribute("toggle")=='show';if(!l)hr=!hr;
    var h=(l?hl:hr);
    setStylesheet("#tiddlerDisplay, #searchResults {"+
        (hl?s.leftBarHide:s.leftBarShow)+
        (hr?s.rightBarHide:s.rightBarShow)+
      "}","ToggleSideBarStyles");
    bar.style.display=h?"none":"block";
    bar.setAttribute("toggle",(h?"show":"hide"));
    arr1=l?s.arr2:s.arr1;arr2=l?s.arr1:s.arr2;
    btn.innerHTML=h?arr2:arr1;
  }
}
//}}}
Træ
Træ
----
Busk
Busk
----
Dværgbusk
Dværgbusk
----
Stor busk eller lille træ
Stor busk eller lille træ
----
/***
|Name|UndoPlugin|
|Author|Eric Shulman|
|Source|http://www.TiddlyTools.com/#UndoPlugin|
|Documentation|http://www.TiddlyTools.com/#UndoPlugin|
|Version|0.2.1|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|undo/redo changes to tiddlers|
|Status|Experimental - DO NOT DISTRIBUTE|
This plugin records changes to tiddlers edited during the session, allowing you to quickly revert to previous revisions of a tiddler, even after pressing 'done'.
!!!!!Documentation
<<<
TBD
<<<
!!!!!Configuration
<<<
<<option chkEnableUndo>> enable undo handling
<<<
!!!!!Revisions
<<<
2011.09.11 0.2.1 in setmsg(), make sure undo stack is not empty.  In go(), make sure index is >0.  added disabledmsg with option checkbox.  In render(), use wikify() to display static menu content (noundomsg/disabledmsg)
2011.09.07 0.2.0 refactored click handler and added toolbar command wrapper
2011.05.15 0.1.1 edits to message text
2011.05.02 0.1.0 started
<<<
!!!!!Code
***/
//{{{
version.extensions.UndoPlugin= {major: 0, minor: 2, revision: 1, date: new Date(2011,9,11)};

if (config.options.chkEnableUndo===undefined) config.options.chkEnableUndo=true;

config.macros.undo =  {
	label: 'undo',
	prompt: 'undo changes',
        tip: 'undo changes to "%0"',
	multimsg: 'Undo %0 tiddler changes.  Are you sure?',
	revertedmsg: '"%0" - previous content restored',
	renamedmsg: '"%0" - renamed to "%1"',
	deletedmsg: '"%0" - removed',
	shadowmsg: '"%0" - default (shadow) content restored',
	noundomsg: 'nothing to undo',
	disabledmsg: 'undo is disabled\n----\n<<option chkEnableUndo>>enable undo',
	undoheading: 'undo tiddler changes:',
	dateformat: 'YYYY.0MM.0DD 0hh:0mm:0ss',
	popupformat: '%1 %0<div style="font-size:80%"><i>action: </i><b>%2</b></div>',
	changes: [], // the list of previous tiddler changes
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var p=paramString.parseParams('name',null,true,false,true);
		var label=getParam(p,'label',this.label);
		var prompt=getParam(p,'prompt',this.prompt);
		createTiddlyButton(place,label,prompt,this.click);
	},
	click: function(ev){
		var p=Popup.create(this); if (!p) return false;
		config.macros.undo.render(p);
		Popup.show();
		ev=ev||window.event; ev.cancelBubble=true;
		if(ev.stopPropagation) ev.stopPropagation();
		return false;
	},
	render: function(p) {
		var cmu=config.macros.undo; // abbrev
		if (!config.options.chkEnableUndo) wikify(cmu.disabledmsg,p);
		else if (!cmu.changes.length) wikify(cmu.noundomsg,p);
		else {
			createTiddlyText(p, cmu.undoheading);
			for (var i=cmu.changes.length-1; i>=0; i--) { var c=cmu.changes[i]; var t=c.tiddler;
				var b=createTiddlyButton(createTiddlyElement(p,'li'),
					c.title, cmu.tip.format([c.title]),
					function(ev){return config.macros.undo.go(this.getAttribute('i'));});
				b.innerHTML=cmu.popupformat.format(
					[c.title,c.when.formatString(cmu.dateformat),c.msg]);
				b.setAttribute('i',i);
			}
		}
	},
	add: function(title,tiddler,action,msg){
		this.changes.push({
			title:title,
			tiddler:merge({},tiddler),
			action: action, // create, rename, change, delete
			when: new Date(),
			who: config.options.txtUserName,
			msg: msg
		});
	},
	setmsg: function(msg) {
		if (this.changes.length) this.changes[this.changes.length-1].msg=msg;
	},
	reset: function(i){
		while (this.changes.length) this.changes.pop();
	},
	go: function(i){
		var co=config.options; // abbrev
		var steps=this.changes.length-i; if (steps<0) return false;
		if (steps>1 && !confirm(this.multimsg.format([steps]))) return false;
		var temp=co.chkEnableUndo; co.chkEnableUndo=false; // SUSPEND undo
		var msgs=[];
		for (var j=this.changes.length; j>i; j--) {
			var c=this.changes.pop();
			if (c.action=='create') {
				store.removeTiddler(c.title);
				m=store.isShadowTiddler(c.title)?this.shadowmsg:this.deletedmsg;
				msgs.push(m.format([c.title]));
			} else {
				var t=c.tiddler;
				var revert=store.getTiddlerText(c.title)!=t.text;
				var rename=c.title!=t.title
				store.saveTiddler(t.title,t.title,t.text,
					t.modifier,t.modified,t.tags,t.fields);
				if (rename) { // RENAME: re-render with previous name
					var tidelem=story.getTiddler(c.title);
					if (tidelem) { // if displayed, re-render with previous name
						story.displayTiddler(tidelem,t.title);
						story.closeTiddler(c.title);
					}
					store.removeTiddler(c.title);
					msgs.push(this.renamedmsg.format([c.title,t.title]));
				}
				if (revert) msgs.push(this.revertedmsg.format([t.title]));
			}
		}
		co.chkEnableUndo=temp; // RESUME undo
		while (msgs.length) displayMessage(msgs.shift());
		autoSaveChanges();
		return false;
	}
};
//}}}
// // TOOLBAR COMMAND: undo
//{{{
config.commands.undoChanges = {
	text: 'undo',
	hideReadOnly: true,
	tooltip: 'undo individual document changes since the last save',
	handler: function(ev,src,title) { return config.macros.undo.click.call(src,ev); }
};
//}}}
// // HIJACKS - update changes when a tiddler is saved or deleted
//{{{
if (store.undo_saveTiddler==undefined) store.undo_saveTiddler=store.saveTiddler;
store.saveTiddler = function(title,newTitle,text) {
	var tiddler=store.getTiddler(title);
	if (config.options.chkEnableUndo) {
		var msgs=[];
		if (!tiddler) {
			var action='opret';
			msgs.push('fjern "'+newTitle+'"');
			if (store.isShadowTiddler(newTitle))
				msgs.push('anvend standard (skygge) indhold');
		} else {
			var action=title!=newTitle?'rename':'change';
			if (action=='rename') {
				msgs.push('omdøb til "'+title+'"');
			}
			if (store.getTiddlerText(title)!=text || !msgs.length)
				msgs.push('gendan tidligere indhold');
		}
		config.macros.undo.add(newTitle,tiddler,action,msgs.join(', '));
	}
	this.undo_saveTiddler.apply(this,arguments);
}
if (store.undo_removeTiddler==undefined) store.undo_removeTiddler=store.removeTiddler;
store.removeTiddler = function(title) {
	var tiddler=store.getTiddler(title);
	if (tiddler && config.options.chkEnableUndo) {
		var action='delete';
		var msg='restore deleted tiddler';
		config.macros.undo.add(title,tiddler,action,msg);
	}
	this.undo_removeTiddler.apply(this,arguments);
}
//}}}
<html><div align="center"><iframe src="./upload.html" frameborder="0" style="width:100%;height:30em"></iframe></div></html>

/%
<html><form action="" method="post" enctype="multipart/form-data">
    <input type="file" id="file" name="files[]" multiple="multiple" accept="image/*" />
  <input type="submit" value="Upload!" />
</form></html>

<html>
<body>

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html>

<html><form action="accept-file.php" method="post" enctype="multipart/form-data">
	Dit billede: <input type="file" name="photo" size="25" />
	<input type="submit" name="submit" value="upload" />
</form></html>
%/
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 12/11/2013 19:58:42 | DitNavn | [[/|http://xn--mns-ula.dk/plantekendskab/#MartinsTema]] | [[store.php|http://xn--mns-ula.dk/plantekendskab/store.php]] | . | [[index.html | http://xn--mns-ula.dk/plantekendskab/index.html]] |  |
| 12/11/2013 21:50:51 | DitNavn | [[/|http://xn--mns-ula.dk/plantekendskab/#MartinsTema]] | [[store.php|http://xn--mns-ula.dk/plantekendskab/store.php]] | . | [[index.html | http://xn--mns-ula.dk/plantekendskab/index.html]] |  |
| 12/11/2013 22:14:12 | DitNavn | [[/|http://xn--mns-ula.dk/plantekendskab/#MartinsTema]] | [[store.php|http://xn--mns-ula.dk/plantekendskab/store.php]] | . | [[index.html | http://xn--mns-ula.dk/plantekendskab/index.html]] |  |
| 12/11/2013 22:16:12 | DitNavn | [[/|http://xn--mns-ula.dk/plantekendskab/#MartinsTema]] | [[store.php|http://xn--mns-ula.dk/plantekendskab/store.php]] | . | [[index.html | http://xn--mns-ula.dk/plantekendskab/index.html]] |  |
| 12/11/2013 22:20:51 | DitNavn | [[/|http://xn--mns-ula.dk/plantekendskab/#Index]] | [[store.php|http://xn--mns-ula.dk/plantekendskab/store.php]] | . | [[index.html | http://xn--mns-ula.dk/plantekendskab/index.html]] |  | ok |
| 12/11/2013 22:23:36 | DitNavn | [[/|http://xn--mns-ula.dk/plantekendskab/#Index]] | [[store.php|http://xn--mns-ula.dk/plantekendskab/store.php]] | . | [[index.html | http://xn--mns-ula.dk/plantekendskab/index.html]] |  | ok |
| 12/11/2013 22:24:34 | DitNavn | [[/|http://xn--mns-ula.dk/plantekendskab/#Index]] | [[store.php|http://xn--mns-ula.dk/plantekendskab/store.php]] | . | [[index.html | http://xn--mns-ula.dk/plantekendskab/index.html]] |  | ok |
| 12/11/2013 22:26:13 | DitNavn | [[/|http://xn--mns-ula.dk/plantekendskab/#Index]] | [[store.php|http://xn--mns-ula.dk/plantekendskab/store.php]] | . | [[index.html | http://xn--mns-ula.dk/plantekendskab/index.html]] |  | ok |
| 12/11/2013 22:28:18 | DitNavn | [[/|http://xn--mns-ula.dk/plantekendskab/#Index]] | [[store.php|http://xn--mns-ula.dk/plantekendskab/store.php]] | . | [[index.html | http://xn--mns-ula.dk/plantekendskab/index.html]] |  | ok |
| 12/11/2013 22:31:31 | DitNavn | [[/|http://xn--mns-ula.dk/plantekendskab/#Index]] | [[store.php|http://xn--mns-ula.dk/plantekendskab/store.php]] | . | [[index.html | http://xn--mns-ula.dk/plantekendskab/index.html]] |  |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.4|
|''Date:''|2008-08-11|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 4,
	date: new Date("2008-08-11"),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'
};

//
// Environment
//

if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false;	// true to activate both in Plugin and UploadService
	
//
// Upload Macro
//

config.macros.upload = {
// default values
	defaultBackupDir: '',	//no backup
	defaultStoreScript: "store.php",
	defaultToFilename: "index.html",
	defaultUploadDir: ".",
	authenticateUser: true	// UploadService Authenticate User
};
	
config.macros.upload.label = {
	promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
	promptParamMacro: "Save and Upload this TiddlyWiki in %0",
	saveLabel: "save to web", 
	saveToDisk: "save to disk",
	uploadLabel: "upload"	
};

config.macros.upload.messages = {
	noStoreUrl: "No store URL in parmeters or options",
	usernameOrPasswordMissing: "Username or password missing"
};

config.macros.upload.handler = function(place,macroName,params) {
	if (readOnly)
		return;
	var label;
	if (document.location.toString().substr(0,4) == "http") 
		label = this.label.saveLabel;
	else
		label = this.label.uploadLabel;
	var prompt;
	if (params[0]) {
		prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0], 
			(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
	} else {
		prompt = this.label.promptOption;
	}
	createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};

config.macros.upload.action = function(params)
{
		// for missing macro parameter set value from options
		if (!params) params = {};
		var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
		var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
		var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
		var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
		var username = params[4] ? params[4] : config.options.txtUploadUserName;
		var password = config.options.pasUploadPassword; // for security reason no password as macro parameter	
		// for still missing parameter set default value
		if ((!storeUrl) && (document.location.toString().substr(0,4) == "http")) 
			storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
		if (storeUrl.substr(0,4) != "http")
			storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
		if (!toFilename)
			toFilename = bidix.basename(window.location.toString());
		if (!toFilename)
			toFilename = config.macros.upload.defaultToFilename;
		if (!uploadDir)
			uploadDir = config.macros.upload.defaultUploadDir;
		if (!backupDir)
			backupDir = config.macros.upload.defaultBackupDir;
		// report error if still missing
		if (!storeUrl) {
			alert(config.macros.upload.messages.noStoreUrl);
			clearMessage();
			return false;
		}
		if (config.macros.upload.authenticateUser && (!username || !password)) {
			alert(config.macros.upload.messages.usernameOrPasswordMissing);
			clearMessage();
			return false;
		}
		bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password); 
		return false; 
};

config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir) 
{
	if (!storeUrl)
		return null;
		var dest = bidix.dirname(storeUrl);
		if (uploadDir && uploadDir != '.')
			dest = dest + '/' + uploadDir;
		dest = dest + '/' + toFilename;
	return dest;
};

//
// uploadOptions Macro
//

config.macros.uploadOptions = {
	handler: function(place,macroName,params) {
		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);
		wizard.setValue("listWrapper",listWrapper);
		this.refreshOptions(listWrapper,false);
		var uploadCaption;
		if (document.location.toString().substr(0,4) == "http") 
			uploadCaption = config.macros.upload.label.saveLabel;
		else
			uploadCaption = config.macros.upload.label.uploadLabel;
		
		wizard.setButtons([
				{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption, 
					onClick: config.macros.upload.action},
				{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
				
			]);
	},
	options: [
		"txtUploadUserName",
		"pasUploadPassword",
		"txtUploadStoreUrl",
		"txtUploadDir",
		"txtUploadFilename",
		"txtUploadBackupDir",
		"chkUploadLog",
		"txtUploadLogMaxLine"		
	],
	refreshOptions: function(listWrapper) {
		var opts = [];
		for(i=0; i<this.options.length; i++) {
			var opt = {};
			opts.push();
			opt.option = "";
			n = this.options[i];
			opt.name = n;
			opt.lowlight = !config.optionsDesc[n];
			opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
			opts.push(opt);
		}
		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,opts[n].name,"no");
			}
		}
		
	},
	onCancel: function(e)
	{
		backstage.switchTab(null);
		return false;
	},
	
	wizardTitle: "Upload with options",
	step1Title: "These options are saved in cookies in your browser",
	step1Html: "<input type='hidden' name='markList'></input><br>",
	cancelButton: "Cancel",
	cancelButtonPrompt: "Cancel prompt",
	listViewTemplate: {
		columns: [
			{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
			{name: 'Option', field: 'option', title: "Option", type: 'String'},
			{name: 'Name', field: 'name', title: "Name", type: 'String'}
			],
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'} 
			]}
};

//
// upload functions
//

if (!bidix.upload) bidix.upload = {};

if (!bidix.upload.messages) bidix.upload.messages = {
	//from saving
	invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
	backupSaved: "Backup saved",
	backupFailed: "Failed to upload backup file",
	rssSaved: "RSS feed uploaded",
	rssFailed: "Failed to upload RSS feed file",
	emptySaved: "Empty template uploaded",
	emptyFailed: "Failed to upload empty template file",
	mainSaved: "Main TiddlyWiki file uploaded",
	mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
	//specific upload
	loadOriginalHttpPostError: "Can't get original file",
	aboutToSaveOnHttpPost: 'About to upload on %0 ...',
	storePhpNotFound: "The store script '%0' was not found."
};

bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
	var callback = function(status,uploadParams,original,url,xhr) {
		if (!status) {
			displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
			return;
		}
		if (bidix.debugMode) 
			alert(original.substr(0,500)+"\n...");
		// Locate the storeArea div's 
		var posDiv = locateStoreArea(original);
		if((posDiv[0] == -1) || (posDiv[1] == -1)) {
			alert(config.messages.invalidFileError.format([localPath]));
			return;
		}
		bidix.upload.uploadRss(uploadParams,original,posDiv);
	};
	
	if(onlyIfDirty && !store.isDirty())
		return;
	clearMessage();
	// save on localdisk ?
	if (document.location.toString().substr(0,4) == "file") {
		var path = document.location.toString();
		var localPath = getLocalPath(path);
		saveChanges();
	}
	// get original
	var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
	var originalPath = document.location.toString();
	// If url is a directory : add index.html
	if (originalPath.charAt(originalPath.length-1) == "/")
		originalPath = originalPath + "index.html";
	var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
	var log = new bidix.UploadLog();
	log.startUpload(storeUrl, dest, uploadDir,  backupDir);
	displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
	if (bidix.debugMode) 
		alert("about to execute Http - GET on "+originalPath);
	var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

bidix.upload.uploadRss = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		if(status) {
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
			bidix.upload.uploadMain(params[0],params[1],params[2]);
		} else {
			displayMessage(bidix.upload.messages.rssFailed);			
		}
	};
	// do uploadRss
	if(config.options.chkGenerateAnRssFeed) {
		var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
		var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
		var rssString = generateRss();
		// no UnicodeToUTF8 conversion needed when location is "file" !!!
		if (document.location.toString().substr(0,4) != "file")
			rssString = convertUnicodeToUTF8(rssString);	
		bidix.upload.httpUpload(rssUploadParams,rssString,callback,Array(uploadParams,original,posDiv));
	} else {
		bidix.upload.uploadMain(uploadParams,original,posDiv);
	}
};

bidix.upload.uploadMain = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		var log = new bidix.UploadLog();
		if(status) {
			// if backupDir specified
			if ((params[3]) && (responseText.indexOf("backupfile:") > -1))  {
				var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
				displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
			}
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
			store.setDirty(false);
			log.endUpload("ok");
		} else {
			alert(bidix.upload.messages.mainFailed);
			displayMessage(bidix.upload.messages.mainFailed);
			log.endUpload("failed");			
		}
	};
	// do uploadMain
	var revised = bidix.upload.updateOriginal(original,posDiv);
	bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};

bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
	var localCallback = function(status,params,responseText,url,xhr) {
		url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
		if (xhr.status == 404)
			alert(bidix.upload.messages.storePhpNotFound.format([url]));
		if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
			alert(responseText);
			if (responseText.indexOf("Debug mode") >= 0 )
				responseText = responseText.substring(responseText.indexOf("\n\n")+2);
		} else if (responseText.charAt(0) != '0') 
			alert(responseText);
		if (responseText.charAt(0) != '0')
			status = null;
		callback(status,params,responseText,url,xhr);
	};
	// do httpUpload
	var boundary = "---------------------------"+"AaB03x";	
	var uploadFormName = "UploadPlugin";
	// compose headers data
	var sheader = "";
	sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
	sheader += uploadFormName +"\"\r\n\r\n";
	sheader += "backupDir="+uploadParams[3] +
				";user=" + uploadParams[4] +
				";password=" + uploadParams[5] +
				";uploaddir=" + uploadParams[2];
	if (bidix.debugMode)
		sheader += ";debug=1";
	sheader += ";;\r\n"; 
	sheader += "\r\n" + "--" + boundary + "\r\n";
	sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
	sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
	sheader += "Content-Length: " + data.length + "\r\n\r\n";
	// compose trailer data
	var strailer = new String();
	strailer = "\r\n--" + boundary + "--\r\n";
	data = sheader + data + strailer;
	if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
	var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
	if (!posDiv)
		posDiv = locateStoreArea(original);
	if((posDiv[0] == -1) || (posDiv[1] == -1)) {
		alert(config.messages.invalidFileError.format([localPath]));
		return;
	}
	var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
				store.allTiddlersAsHtml() + "\n" +
				original.substr(posDiv[1]);
	var newSiteTitle = getPageTitle().htmlEncode();
	revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
	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;
};

//
// UploadLog
// 
// config.options.chkUploadLog :
//		false : no logging
//		true : logging
// config.options.txtUploadLogMaxLine :
//		-1 : no limit
//      0 :  no Log lines but UploadLog is still in place
//		n :  the last n lines are only kept
//		NaN : no limit (-1)

bidix.UploadLog = function() {
	if (!config.options.chkUploadLog) 
		return; // this.tiddler = null
	this.tiddler = store.getTiddler("UploadLog");
	if (!this.tiddler) {
		this.tiddler = new Tiddler();
		this.tiddler.title = "UploadLog";
		this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
		this.tiddler.created = new Date();
		this.tiddler.modifier = config.options.txtUserName;
		this.tiddler.modified = new Date();
		store.addTiddler(this.tiddler);
	}
	return this;
};

bidix.UploadLog.prototype.addText = function(text) {
	if (!this.tiddler)
		return;
	// retrieve maxLine when we need it
	var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
	if (isNaN(maxLine))
		maxLine = -1;
	// add text
	if (maxLine != 0) 
		this.tiddler.text = this.tiddler.text + text;
	// Trunck to maxLine
	if (maxLine >= 0) {
		var textArray = this.tiddler.text.split('\n');
		if (textArray.length > maxLine + 1)
			textArray.splice(1,textArray.length-1-maxLine);
			this.tiddler.text = textArray.join('\n');		
	}
	// update tiddler fields
	this.tiddler.modifier = config.options.txtUserName;
	this.tiddler.modified = new Date();
	store.addTiddler(this.tiddler);
	// refresh and notifiy for immediate update
	story.refreshTiddler(this.tiddler.title);
	store.notify(this.tiddler.title, true);
};

bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir,  backupDir) {
	if (!this.tiddler)
		return;
	var now = new Date();
	var text = "\n| ";
	var filename = bidix.basename(document.location.toString());
	if (!filename) filename = '/';
	text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
	text += config.options.txtUserName + " | ";
	text += "[["+filename+"|"+location + "]] |";
	text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
	text += uploadDir + " | ";
	text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
	text += backupDir + " |";
	this.addText(text);
};

bidix.UploadLog.prototype.endUpload = function(status) {
	if (!this.tiddler)
		return;
	this.addText(" "+status+" |");
};

//
// Utilities
// 

bidix.checkPlugin = function(plugin, major, minor, revision) {
	var ext = version.extensions[plugin];
	if (!
		(ext  && 
			((ext.major > major) || 
			((ext.major == major) && (ext.minor > minor))  ||
			((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
			// write error in PluginManager
			if (pluginInfo)
				pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
			eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
	}
};

bidix.dirname = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(0, lastpos);
	} else {
		return filePath.substring(0, filePath.lastIndexOf("\\"));
	}
};

bidix.basename = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("#")) != -1) 
		filePath = filePath.substring(0, lastpos);
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(lastpos + 1);
	} else
		return filePath.substring(filePath.lastIndexOf("\\")+1);
};

bidix.initOption = function(name,value) {
	if (!config.options[name])
		config.options[name] = value;
};

//
// Initializations
//

// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);

// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");

//optionsDesc
merge(config.optionsDesc,{
	txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
	txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
	txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
	txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
	txtUploadUserName: "Upload Username",
	pasUploadPassword: "Upload Password",
	chkUploadLog: "do Logging in UploadLog (default: true)",
	txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});

// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');


// Backstage
merge(config.tasks,{
	uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");


//}}}
/***
|''Name:''|UploadTiddlerPlugin|
|''Description:''|Upload a tiddler and Update a remote TiddlyWiki |
|''Version:''|1.2.2|
|''Date:''|2008-09-13|
|''Source:''|http://tiddlywiki.bidix.info/#UploadTiddlerPlugin|
|''Usage:''|Uses {{{<<uploadOptions>>}}}<br>with those UploadTiddler Options : <br>chkUploadTiddler: <<option chkUploadTiddler>><br>txtUploadTiddlerStoreUrl: <<option txtUploadTiddlerStoreUrl>><br>chkUploadTiddlerFromFile: <<option chkUploadTiddlerFromFile>>|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''[[License]]:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''CoreVersion:''|2.3.0|
***/
//{{{
version.extensions.UploadTiddlerPlugin = {
	major: 1, minor: 2, revision: 2, 
	date: new Date("2008-09-13"),
	source: 'http://tiddlywiki.bidix.info/#UploadTiddlerPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.3.0'
};

if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false;
bidix.uploadTiddler = {
	messages: {
		aboutToSaveTiddler: "About to update tiddler '%0'...",
		aboutToRemotelySaveTiddler: "About to REMOTELY update tiddler '%0'...",
		storeTiddlerNotFound: "Script store tiddler '%0' not found",
		tiddlerSaved: "Tiddler '%0' updated in '%1' using '%2' "
	},
	upload: function(title,tiddler,oldTitle) {
		var callback = function(status,params,responseText,url,xhr) {
			if (xhr.status == 404) {
				alert(bidix.uploadTiddler.messages.storeTiddlerNotFound.format([url]));
				return;
			}
			if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
				alert(responseText);
				if (responseText.indexOf("Debug mode") >= 0 )
					responseText = responseText.substring(responseText.indexOf("\n\n")+2);
			} else if (responseText.charAt(0) != '0') 
				alert(responseText);
			else 
				displayMessage(bidix.uploadTiddler.messages.tiddlerSaved.format([params[0], params[1], params[2]]));
				store.setDirty(false);
			}

		if ((config.options['chkUploadTiddler']) && 
				((document.location.toString().substr(0,4) == "http") || config.options['chkUploadTiddlerFromFile'])) {
			clearMessage();
			if (document.location.toString().substr(0,4) != "http")
				displayMessage(bidix.uploadTiddler.messages.aboutToRemotelySaveTiddler.format([title]));
			else
				displayMessage(bidix.uploadTiddler.messages.aboutToSaveTiddler.format([title]));
			var ExtTiddler = null;
			var html = null;
			if (tiddler) {
				ExtTiddler = store.getSaver().externalizeTiddler(store,tiddler);
				html = wikifyStatic(tiddler.text,null,tiddler).htmlEncode();
			}
			var form = "title="+encodeURIComponent(title);
			form = form + "&tiddler="+(ExtTiddler?encodeURIComponent(ExtTiddler):'');
			form = form + "&html="+(html?encodeURIComponent(html):'');
			var filename = (config.options['txtUploadFilename']?config.options['txtUploadFilename']:'index.html');
			form = form +"&oldTitle="+encodeURIComponent(oldTitle);
			form = form +"&fileName="+encodeURIComponent(filename);
			form = form +"&backupDir="+encodeURIComponent(config.options['txtUploadBackupDir']);
			form = form +"&user="+encodeURIComponent(config.options['txtUploadUserName']);
			form = form +"&password="+encodeURIComponent(config.options['pasUploadPassword']);
			form = form +"&uploadir="+encodeURIComponent(config.options['txtUploadDir']);
			form = form +"&debug="+encodeURIComponent(0);
			var storeScript = (config.options.txtUploadTiddlerStoreUrl 
								? config.options.txtUploadTiddlerStoreUrl : 'storeTiddler.php');
			var r = doHttp("POST",storeScript,form+"\n",'application/x-www-form-urlencoded',
				config.options['txtUploadUserName'],config.options['pasUploadPassword'],callback,Array(title,filename, storeScript),null);
		}
	}
}
TiddlyWiki.prototype.saveTiddler_bidix = TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler = function(oldTitle,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created) {
	var tiddler = TiddlyWiki.prototype.saveTiddler_bidix.apply(this,arguments);
	var title = (newTitle?newTitle:oldTitle);
	if (oldTitle == title)
		oldTitle = '';
	bidix.uploadTiddler.upload(title, tiddler, oldTitle);
}
TiddlyWiki.prototype.removeTiddler_bidix =TiddlyWiki.prototype.removeTiddler;
TiddlyWiki.prototype.removeTiddler = function(title) {
	TiddlyWiki.prototype.removeTiddler_bidix.apply(this,arguments);
	bidix.uploadTiddler.upload(title, null);
}

//
// Initializations
//

bidix.initOption = function(name,value) {
	if (!config.options[name])
		config.options[name] = value;
};

// styleSheet
setStylesheet('.txtUploadTiddlerStoreUrl {width: 22em;}',"uploadTiddlerPluginStyles");

//optionsDesc
merge(config.optionsDesc,{
	txtUploadTiddlerStoreUrl: "Url of the UploadTiddlerService script (default: storeTiddler.php)",
	chkUploadTiddler: "Do per Tiddler upload using txtUploadTiddlerStoreUrl (default: false)",
	chkUploadTiddlerFromFile: "Upload tiddler even if TiddlyWiki is located on local file (default: false)"
});

// Options Initializations
bidix.initOption('txtUploadTiddlerStoreUrl','');
bidix.initOption('chkUploadTiddler','');
bidix.initOption('chkUploadTiddlerFromFile','');


// add options in backstage UploadOptions
if (config.macros.uploadOptions) {
	if (config.macros.uploadOptions.options) {
		config.macros.uploadOptions.options.push("txtUploadTiddlerStoreUrl","chkUploadTiddler", "chkUploadTiddlerFromFile");
	}
}

//}}}

{{hidden{
!Billede
UægteJasmin.jpg
!Botanisk navn
Philadelphus virginalis
!Dansk navn
Uægte jasmin
!Type
Busk
!Højde

!Bredde

!Blomstringstid

!Bladtype

!Bladstilling

!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse

!Anvendelse

!Krav

!Pleje

! 
}}}
{{hidden{
!Billede
VinterGlans.jpg
!Botanisk navn
Pachysandra terminalis
!Dansk navn
Vinterglans
!Type
Dværgbusk
!Højde

!Bredde

!Blomstringstid

!Bladtype

!Bladstilling

!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse

!Anvendelse

!Krav

!Pleje

! 
}}}
{{hidden{
!Billede
VorteBirk.jpg
!Botanisk navn
Betula Pendula (verrucosa)
!Dansk navn
Vortebirk
!Type
Træ
!Højde
6 – 10 m
!Bredde
3 – 4 m
!Blomstringstid

!Bladtype
Ægkantede
!Bladstilling

!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse
Max højde 25 m,  bladene er 3 kantede til ægrunde, langt tilspidsede og dobbelt savtakkede. 
Barkfarven er oftest hvid med vandrette striber af barkporer. 
Har højtliggende rødder
!Anvendelse
Solitærtræ, skov, park og private haver
!Krav
Trives bedst på ikke for fugtig jord
Vil have fuld sol, men tåler lidt skygge
!Pleje

! 
}}}
{{hidden{
!Billede
VårGuld.jpg
!Botanisk navn
Forsythia x intermedia 'Lynwood'
!Dansk navn
Vårguld
!Type
Busk
!Højde

!Bredde

!Blomstringstid

!Bladtype

!Bladstilling

!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse

!Anvendelse

!Krav

!Pleje

! 
}}}
{{hidden{
!Billede
VårGyvel.jpg
!Botanisk navn
Cytisus x praecox 'Allgold'
!Dansk navn
Vårgyvel
!Type
Busk
!Højde
1,2 – 1,5 m
!Bredde
1,5 – 2 m
!Blomstringstid
Maj - juni
!Bladtype
Ellipseformet
!Bladstilling
Modsat korsstillet
!Løvfældende
Ja
!Stedsegrøn
Nej
!Beskrivelse
Opret busk, tæt men kraftig vækst.
Blomsterne har 5 kronblade hvoraf det øverste er stort og betegnes som fanen. De to nederste er vokset sammen og kaldes kølen de to mellemste er lige store og kaldes vingerne.
Frugten er gul og hård den er moden i november og dufter.
Bladene er ofte enkelte og sjældent 3 koblede
!Anvendelse
Prydbusk
!Krav
Fuld sol
tør og sandet jord
!Pleje
Nedskæring lige efter blomstring
! 
}}}
{{hidden{
!Anvendelse
Bundække
!Pleje
Vandes
! 
}}}{{hidden{
!Info
Erica herbacea 'Vivellii' er en stedsegrøn dværgbusk som stammer fra et eller andet land den vokser og man kan ikke spise den. Blomsterne er flotte og små.
!end
}}}{{hidden{
!BilledListe
[img(50%+,auto)[Billeder/Vårlyng.jpg]]
----
[img(50%+,auto)[Billeder/Vårlyng-2.jpg]]
!end
}}}
|Name|White-Classic-Theme|
|Description|a theme mimicking tw5 for standalone ~TiddlyWiki|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|StyleSheet|##StyleSheet|
|Version|0.8.5 (2013-10-18)|
!PageTemplate
<!--{{{-->

<div id='messageArea'></div>
<div class='header'>
    <div class='headerForeground'>
        <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
        <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
    </div>
    <div class='clearFloat'></div>
    <div id='topMenu'>
        <div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
        <div id='sidebarOptions'>
            <div id='sidebarSearch' macro='search'></div>
            <div refresh='content' tiddler='SideBarOptions'></div>
        </div>
    </div>
</div>

<div id='displayArea'>
    <div id='tiddlerDisplay'></div>

    <div id='sidebarTabs'>
        <div class='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
    </div>
</div>

<!--}}}-->
!ViewTemplate
<!--{{{-->
<div class='tagInfo infoTags'>
    <div class='tidTags' macro='tags'></div>
</div>
<div class='toolbar'
    macro='toolbar [[ToolbarCommands::ViewToolbar]] icons:yes height:16 width:16 more:popup'>
</div>
<div class='heading'>
    <span class="titleBar">
        <div class='title' macro='view title text'></div>
        <div class="subtitle">
            senest redigeret d.
            <span macro="view modified date"></span>
            af
            <span class='hideIcon' macro='view modifier link'></span>
        </div>
    </span>
    <div class='tagClear'></div>
</div>
<div class='content'>
    <div class='viewer' macro='view text wikified'></div>
</div>
<div class='tagInfo infoTagging'>
    <div class='tagging' macro='tagging'></div>
</div>
<span class="openTiddler" macro='tiddler OnLoad'/>
<!--}}}-->
!EditTemplate
<!--{{{-->
<div class='toolbar'
    macro='toolbar [[ToolbarCommands::EditToolbar]] icons:yes'>
</div>
<div class='heading editorHeading'>
    <div class='editor title' macro='edit title'></div>
    <div class='tagClear'></div>
</div>
<div macro=""showWhen !readOnly">
<div macro='tiddler QuickEditToolbar with:show'></div></div>
<div class='editor' macro='edit text'></div>
<div class='editorFooter'>
    <div class='tagTitle'>tags</div>
    <div class='editor' macro='edit tags'></div>
    <div class='tagAnnotation'>
        <span macro='message views.editor.tagPrompt'></span>
        <span macro='tagChooser excludeLists'></span>
    </div>
</div>
<!--}}}-->
!StyleSheet
/*{{{*/


/* DEFAULTS */

span + br{
    display:none;
}

.clearFloat {
    clear: both;
}

body {
    font-size: 1em;
    font-family: helvetica, arial, sans-serif;
    background-color: [[ColorPalette::PageBackground]];
    color: [[ColorPalette::Foreground]];
}

body ul {
    margin: 0;
}

.right{
    float:right;
}

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

.viewer blockquote {
    border-left: 2px solid [[ColorPalette::TertiaryPale]];
}

.viewer table, table.twtable {
    border-collapse: collapse;
    margin: 5px 0;
    border: 1px solid [[ColorPalette::TertiaryMid]]  !important;
    max-width: 100%;
    word-break: normal;
    word-wrap: break-word;
}

.viewer tr, .viewer td,
.twtable tr, .twtable td {
    vertical-align:top;
    border: 1px solid [[ColorPalette::TertiaryMid]] !important;
}

.viewer th a:hover,
.viewer thead td a:hover,
.twtable th a:hover,
.twtable thead td :hover{
    color:[[ColorPalette::Background]] !important;
}

,viewer .listTitle{
    margin-left:0;
}

a,
.popup .button {
    color:[[ColorPalette::SecondaryDark]];
}

a:hover {
    text-decoration:underline;
    color:[[ColorPalette::SecondaryMid]];
    background:transparent;
}

a.tiddlyLink {
    font-weight:normal;
}

body .linkified .tiddlyLink.shadow,
a.tiddlyLink.shadow{
    color:[[ColorPalette::TertiaryMid]];
}

a.tiddlyLink.tiddlyLinkNonExisting {
    font-style:italic;
    font-weight:normal;
}

a.tiddlyLink:hover,
.popup .button:hover {
    background:none;
    color:[[ColorPalette::SecondaryMid]];
}

body .linkified .tiddlyLink{
    color:[[ColorPalette::SecondaryDark]];
}

body .linkified .tiddlyLink:hover{
    color:[[ColorPalette::SecondaryMid]];
}

.button,
.tagInfo ul li .button {
    color:[[ColorPalette::TertiaryMid]];
    background:[[ColorPalette::TertiaryPale]];
}

.button:hover,
.tagInfo ul li .button:hover {
    text-decoration:none;
    color:[[ColorPalette::Background]];
    background:[[ColorPalette::TertiaryMid]];
    border-color:[[ColorPalette::TertiaryLight]];
}

a.image:hover {
    background: transparent;
}

.tab{
    border: 1px solid [[ColorPalette::TertiaryLight]];
    border-bottom-color: [[ColorPalette::TertiaryPale]];
    background: [[ColorPalette::TertiaryLight]];
}

a.tabSelected,
.tabset .tab:hover {
    color:[[ColorPalette::TertiaryMid]];
    background: [[ColorPalette::PageBackground]];
    text-decoration: none;
}

.tabContents{
    background: [[ColorPalette::PageBackground]];
}

dd {
    margin-left: 20px;
}

dd:before {
    content: '» ';
}

iframe{
    width:98%;
    height:600px;
    border:2px solid [[ColorPalette::TertiaryPale]];
    z-index:0;
    position:relative;
}

object{
    z-index:0;
    position:relative;
}

.noTitle .listTitle{
    display:none !important;
}

.annotation{
    margin:0;
}

/* PAGE LAYOUT */

#displayArea {
    margin:0;
    clear:both;
    left: 0px;
    width: 100%;
    position: relative;
}

#contentWrapper {
    position: relative;
    padding-top: 1px;
    top: -1px;
}

#tiddlerDisplay,
#searchResults {
    margin: 30px 390px 0 42px;
    _position: relative; /* ie 6*/
}

* html #tiddlerDisplay {
    margin-top: 0px;
}


/* HEADER */

.header {
    position: relative;
    background-color: [[ColorPalette::PageBackground]];
    height: 65px;
    width: 100%;
    _width: 100%; /* ie 6 demands */
}

.headerForeground {
    color: [[ColorPalette::Foreground]];
    background-color: transparent;
    margin: 16px 32px 0px 56px;
    float: left;
    padding: 0;
    position: relative;
    top: 0;
}

.siteTitle{
    float:left;
    display: block;
    font-size: 32px;
    line-height: 32px;
    font-weight: normal;
}

.siteTitle a {
    color:[[ColorPalette::SecondaryDark]]
}

.siteTitle a:hover {
    text-decoration:none;
    color:[[ColorPalette::TertiaryDark]]
}

.siteSubtitle {
    float:left;
    display: block;
    font-size: 14px;
    margin: 1em 0 0 1em;
    color: [[ColorPalette::TertiaryMid]];
}


/* SEARCH */

#sidebarSearch {
    padding: 0;
    margin-right: 45px;
    float:left;
    width: 200px;
    margin-bottom: 5px;
}

#sidebarSearch .txtOptionInput {
    float:left;
    margin:0;
    display:block;
    width: 140px;
    _color: #bbb; /* ie6 danger */
}

.sidebarSearch .txtOptionInput:focus {
    color: #000;
}

#sidebarSearch .searchButton {
    float: right;
    display:block;
}

/* SIMPLESEARCH */
#searchResults {
     margin-top:0;
}

#displayArea #searchResults .button{
    padding:2px 6px;
    margin-right:3px;
    float:right;
}

/* FINDR */

#sidebarTabs #searchResults {
    margin: 0 1em 0 0;
}

#searchResults #findr-buttons{
    margin:0.5em 0 0 5px;
}

#displayArea #searchResults #findr-buttons {
    margin: 2.5em 0 0em 5px;
    float: right;
}

#searchResults .search_list .button{
    float:none !important;
    background:transparent;
    padding:2px;
    margin: 0;
}

#searchResults .search_list .button:hover{
    color:[[ColorPalette::SecondaryMid]];
}

.search_details strong{
   font-weight:normal;
   color:[[ColorPalette::TertiaryMid]];
}

.findr > strong{
    display: block;
    clear: both;
    padding-top: 0.5em;
}


/* TOPMENU */

#topMenu {
    left: 0;
    clear: both;
    position: relative;
    padding: 0.5em 0;
    width: 100%;
}

/* MAIN MENU */

#mainMenu {
    color:[[ColorPalette::TertiaryLight]];
    position: static;
    text-align: left;
    margin: 4px 0 0 4px;
    float: left;
    width: auto;
    padding: 0 0 0 44px;
    font-size: 1em;
    line-height: normal;
}

#mainMenu br{
   display:none;
}

#sidebarOptions {
    margin: 0 0 0 1em;
    padding: 0;
    float: right;
    position: relative;
    width: 600px;
}

#mainMenu a,
#mainMenu .tiddlyLink,
#mainMenu .button,
#sidebarOptions a,
#sidebarOptions .button {
    margin: 0 4px;
    background: [[ColorPalette::TertiaryLight]];
    color: [[ColorPalette::Background]];
    font-size: 0.9em;
    padding: 2px 4px;
    -webkit-border-radius: 3px;
    -moz-border-radius: 3px;
    border-radius: 3px;
}

#sidebarOptions a,
#sidebarOptions .button {
    float:left;
}

#mainMenu a:hover,
#mainMenu .tiddlyLink:hover,
#mainMenu .button:hover,
#sidebarOptions a:hover,
#sidebarOptions .button:hover {
    background: [[ColorPalette::TertiaryMid]];
    color: [[ColorPalette::Background]];
    text-decoration:none;
}

#mainMenu .button,
#sidebarOptions .button {
    border: 1px solid transparent;
}


/* SIDEBAR */

#sidebarTabs {
    width: 360px;
    position: absolute;
    right: 0;
    top: 0;
}

#sidebarTabs .lf-search {
    background:transparent;
    padding:0 0 5px 0;
}
#sidebarTabs .lf-label{
    display:none;
}

#sidebarTabs .tabsetWrapper .tabset {
    width: 87px;
    text-align:right;
    border: 0;
    height: auto;
    float: left;
    word-wrap: break-word;
    top: 0;
    padding: 0 5px 0 0;
}

#sidebarTabs .tabContents li a:hover {
    color: [[ColorPalette::SecondaryMid]];
}

#sidebarTabs .tabsetWrapper .tabset .tab {
    font-size: 0.9em;
    padding: 2px 5px 2px 2px;
    color: [[ColorPalette::TertiaryMid]];
    background: transparent;
    border: 0;
    border-right: 1px solid [[ColorPalette::TertiaryLight]];
    line-height: 16px;
    position: relative;
    display: block;
    margin: 2px 0 0 0;
    background-color: #f9f9f9;
    background-image: linear-gradient(left, rgb(249,249,249) 0%, rgb(236,236,236) 100%);
    background-image: -o-linear-gradient(left, rgb(249,249,249) 0%, rgb(236,236,236) 100%);
    background-image: -moz-linear-gradient(left, rgb(249,249,249) 0%, rgb(236,236,236) 100%);
    background-image: -webkit-linear-gradient(left, rgb(249,249,249) 0%, rgb(236,236,236) 100%);
    background-image: -ms-linear-gradient(left, rgb(249,249,249) 0%, rgb(236,236,236) 100%);
}

#sidebarTabs .tabsetWrapper .tabset a:hover,
#sidebarTabs .tabsetWrapper .tabset .tabSelected {
    border:0;
    border-right: 1px solid [[ColorPalette::TertiaryLight]];
    color: [[ColorPalette::TertiaryMid]];
    background:transparent;
    text-decoration:none;
}

#sidebarTabs .tabsetWrapper .tabset a:hover{
    color: [[ColorPalette::SecondaryMid]];
}


#sidebarTabs .tabContents li {
    border: none;
    margin-left: 0;
    word-wrap: break-word;
}

#sidebarTabs .tiddlyLinkExisting{
    font-weight:normal;
}

.tabContents li.listTitle{
    font-size: 1em;
    border: 0;
    padding: 0.3em  0.11em;
    color: [[ColorPalette::TertiaryLight]];
}

#sidebarTabs .tabContents .list-missing a {
    font-style:italic;
}

.tabContents .timeline {
    background: transparent;
    margin-bottom: 8px;
}

#sidebarTabs .timeline li.listTitle {
    color: [[ColorPalette::TertiaryLight]];
    margin-left: 8px 0;
    padding: 0.3em 0.11em;
}

#sidebarTabs .tabContents div > ul > li.listTitle {
    padding-top:0;
}

#sidebarTabs .tabContents li a {
    display: block;
    text-align: left;
    margin: 0 0 1px 0;
    padding: 2px 0;
    background: transparent;
}

#sidebarTabs .tabsetWrapper .tabContents {
    position: relative;
    background-color: transparent;
    border: 0;
    width:16em;
    min-height: 200px;
    padding: 0 0 0 5px;;
    font-size: 0.9em;
}

.tabContents .listTitle:first-child {
    margin-top: 0px;
}

/*SUPPORT FOR SECONDARY TABS*/
#sidebarTabs > div > .tabsetWrapper > .tabset{
    padding-left:10px;
    width:90%;
    float:none;
    text-align:left;
}

#sidebarTabs > div > .tabsetWrapper > .tabset > .tab {
    display: inline-block;
    background: transparent;
    margin: 0 3px -1px 0;
    padding:2px 4px;
    color: [[ColorPalette::TertiaryMid]];
    background: [[ColorPalette::TertiaryPale]];
    border: 0;
    border-top: 2px solid [[ColorPalette::TertiaryPale]];
    border-bottom: 2px solid [[ColorPalette::TertiaryPale]];
}

#sidebarTabs > div > .tabsetWrapper > .tabset > .tab:hover,
#sidebarTabs > div > .tabsetWrapper > .tabset > .tabSelected {
    background: transparent;
    border-top-color: transparent;
    color: [[ColorPalette::SecondaryDark]];
}

#sidebarTabs > div > .tabsetWrapper > .tabContents{
    margin-top:5px;
}

#sidebarTabs > div > .tabsetWrapper .tabsetWrapper {
    margin-top:5px;
}

#sidebarTabs > div > .tabsetWrapper .tabsetWrapper > .tabset{
    width:70px;
}

#sidebarTabs > div > .tabsetWrapper .tabsetWrapper,
#sidebarTabs > div > .tabsetWrapper .tabsetWrapper > .tabContents{
    width:auto;
}


/* TIDDLER */

.tiddler {
    position: relative;
    padding:0;
    width: 100%;
    margin-bottom: 2em;
    border-top: 1px solid [[ColorPalette::TertiaryPale]];
    background: [[ColorPalette::Background]];
    -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.1);
    -moz-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.1);
    box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.1);
}

.heading {
    top: 22px;
    left: 0;
    width: 95%;
    padding: 1em 2.5% 5px 2.5%;
    border-bottom:3px solid [[ColorPalette::Dim]];
}

.tiddler .heading .title {
    position: relative;
    display: block;
    font-weight:normal;
    word-wrap: break-word;
    font-size:24px;
    line-height:24px;
    margin-right: 120px;
}

.tiddler .subtitle {
    display:block;
    float:left;
    font-size: 0.9em;
    color: [[ColorPalette::TertiaryLight]];
    margin: 5px 0 0 0;
}

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

.tiddler .subtitle a {
    color: [[ColorPalette::SecondaryMid]];
}

.tiddler .subtitle a:hover {
    color: [[ColorPalette::SecondaryDark]];
    background: [[ColorPalette::Background]];
}

.tiddler .headingClear {
    clear: both;
}

.tiddler .viewer {
    padding: 5px 2.5% 16px 2.5%;
    width: 95%;
    margin: 0;
    line-height: 1.4em;
    overflow:hidden;
}

.viewer pre {
    margin-left: 0;
}


/* TOOLBAR */

/* ie hacks */
.toolbar .svgIconText {
    *display: inline;
}

* html .toolbar {
    right: 8px;
}

.tiddler .originButton div {
    display: inline-block;
}

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

.tiddler .originButton {
    display: block;
}

.originButton.highlight{
    background:transparent;
}

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

/* TOOLBAR */ 


div.toolbar {
    visibility:hidden;
    right: -6px;
    position: absolute;
    padding: 0;
    top: 10px;
}

.selected div.toolbar {
    visibility: visible;
}

div.tiddler .toolbar a {
    cursor: pointer;
    float: left\9;
    display: inline\9;
}

div.tiddler .toolbar a.command_deleteTiddler{
    margin-right: 34px !important;
}

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

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

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

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

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

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

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


/*! EDITMODE */

.heading.editorHeading {
    margin: 2em 0 0 0;
    width: 100%;
    padding: 0;
}

.tiddler .editor {
    padding: 0px;
    margin: 0 2.5%;
}

.heading .editor input {
    width: 99%;
    padding: 2px 0.5%;
    font-size: 0.8em;
    margin-top:1em;
}

.tiddler .heading .editor.title {
    font-size: 1.7em;
    line-height: normal;
}

.editor input, .editor textarea {
    width: 99%;
    padding: 2px 0.5%;
    border: 2px solid [[ColorPalette::TertiaryPale]];
}

.tagTitle {
    position: absolute;
    text-align: right;
    padding-right: 10px;
    top: 0px;
    margin-left: -95px;
    width: 100px;
}

.tagAnnotation {
    margin: 8px 0 0 20px;
    padding-bottom: 8px;
}

.annotationsBox {
    padding: 0;
    margin: 0 2.2% 0 2.5%;
}

.annotationsBox  .annotation {
    margin: 0;
    padding: 3px 5px;
}

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

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


/* TAGGING */
.selected .tagging,
.selected .tagging:hover {
    border: none;
    background: none;
}
.tagging {
    float: none;
    background: none;
    border: none;
}

.tagInfo {
    color: [[ColorPalette::TertiaryMid]];
    background: [[ColorPalette::Dim]];
    margin: 0;
    padding: 0;
    font-size:0.9em;
}

.tagInfo .tidTags,
.tagInfo .tagging{
    font-size:1em;
    padding: 0 0 2px 0;
}

.tagInfo ul {
    list-style: none;
    padding-left: 10px;
}

.tagInfo ul li {
    display:inline-block;
    margin-top:3px;
}

.tagInfo ul li.listTitle,
.tagInfo .tagging ul li.listTitle {
    display:inline-block;
    width:60px;
    text-align: right;
    padding: 5px 5px 3px 0;
    text-align:right;
    color: [[ColorPalette::TertiaryLight]];
    margin:0;
}

.tagInfo .tagging ul li.listTitle + li {
   margin-top: -20px;
}

.tagInfo .tagging ul li {
    float: none;
    display: block;
    clear:left;
    margin-left: 65px;
}

.tagInfo .tagging ul li a {
    display:block;
}

.infoTags {
    padding: 3px 5px;
}

.infoTags .tidTags{
    max-width:75%;
}

.infoTags ul {
    padding-left:0;
}

/* POPUPS (/ SIDEBAR) */

.popup {
    padding:3px;
    border-color:transparent;
    background-color: [[ColorPalette::Background]];
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    -webkit-box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5);
    -moz-box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5);
    box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5);
}

.popup ul,
.popup li {
    margin:0;
    padding:0;
    list-style-type:none;
}

.popup.block a{
    display:block;
}

.popup.block br{
    display:none;
}

.popup a,
.popup li a,
.popup a.button {
    padding:3px;
    color: [[ColorPalette::SecondaryDark]];
    border:0;
}

.popup a :hover,
.popup li a:hover,
.popup a.button:hover,
a.popupbutton.highlight {
    color: [[ColorPalette::SecondaryMid]];
    background: transparent;
}

.popup li a.tiddlyLink {
    font-weight: bold;
}

.taggedTiddlerList li:last-child a.tiddlyLink{
    font-weight:normal;
}

.popup li.disabled,
.popup li.listTitle {
    border-bottom: 1px solid [[ColorPalette::TertiaryPale]];
    color: [[ColorPalette::TertiaryMid]];
    font-weight:normal;
    padding:7px 5px;
    margin: 0;
}

.popup .button{
    background:transparent;
}

.popup.confirmationPopup,
.followList {
    font-size: 0.8em;
    padding: 1em;
    border: 0;
}

.popup.confirmationPopup .button {
    border: 0;
    margin: 4px 4px 0 4px;
    display: inline-block;
}

.popup.confirmationPopup .button:hover {
    background:transparent;
    color:[[ColorPalette::SecondaryDark]];
}

.popup hr{
    color: transparent;
    background: transparent;
    border: 0;
    border-bottom: 1px solid #ccc;
}

.listBreak{
   border-bottom: 1px solid  [[ColorPalette::TertiaryPale]];;
}

.listBreak div{
   display:none;
}


/* REVISIONS */

.revButton {
    float: right;
}

.revisionCloak {
    position: absolute;
    position: fixed !important;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    border: 0;
    margin: 0;
    padding: 0;
    opacity: 0.5;
    filter: alpha(opacity=50);
    background-color: #000;
}

.viewRevision .toolbar {
    right: 48px;
    top: 8px;
}

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

.viewRevision .toolbar svg {
    width: 32px;
    height: 32px;
}


/* ACTIVITY */

#sidebarTabs .tabContents .activityStream .feedItem a {
    display: inline-block;
    padding: 0;
    background: none;
}


/* FOLLOWING */

.tiddler .followPlaceHolder {
    display: block;
    position: absolute;
    top: 58px;
    right: 60px;
    _right: 126px; // add width of modifierIcon
}

.followButton a {
    position: absolute;
    top: 0px;
    right: 0;
    display: block;
    margin: 0;
    padding: 6px 20px;
    background: transparent;
    text-align: center;
    color: [[ColorPalette::TertiaryMid]];
    display: block;
    margin-top: 0px;
}

.followButton a:hover {
    color: [[ColorPalette::TertiaryMid]];
    text-decoration: none;
}

.followButton.hasReplies a {
    font-weight:bold;
    color: [[ColorPalette::SecondaryMid]];
}

.followButton.hasReplies a:hover {
    color: [[ColorPalette::SecondaryDark]];
}


* html .followButton a {
    margin: 0px 8px 0 0;
}

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

/* the 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::TertiaryPale]];
}

.followList .listTitle {
    text-decoration: underline;
}

.followTiddlersList .label {
    display: block;
    left: 10px;
    top: 0px;
    line-height: 16px;
    position: relative;
}

.popup.followList {
    margin: 10px 0 0 -335px;
    max-width: 400px;
}

.popup .followTiddlersList a {
    display: inline;
    padding: 0;
}

.popup .followTiddlersList ul{
   margin:0;
   padding:0;
}

.popup .followTiddlersList li{
    position: relative;
    display: block;
    clear: both;
    margin-bottom: 8px;
}

.popup .followTiddlersList .siteIcon{
    height: auto;
    width: auto;
    margin-right:5px;
}


/* ICONS */

.titleBar .label {
    display: inline !important;
}

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

.tiddler .spaceSiteIcon {
    float: left;
    margin: 0 5px 0 0;
    position: relative;
    display: block;
}

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

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

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

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

.modifierIcon {
    position: absolute;
    width: 42px;
    top: 42px;
    right: 0;
    text-align: right;
}

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

.editSpaceSiteIcon .originButton {
    cursor: auto;
}

.editSpaceSiteIcon .originButton img,
.editSpaceSiteIcon .originButton svg {
    margin:  0 5px 5px 3px;
    width: 16px;
    height: 16px;
}

.editSpaceSiteIcon, .privacyEdit {
    float: left;
}

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

.tiddler .privacySettings {
    text-align: center;
}
.tiddler .privacySettings .originButton {
    display: inline;
}


/* BACKSTAGE */

#app-picker:hover{
    background-color:transparent;
}

#backstageToolbar {
    padding-left: 50px;
}

#backstageToolbar .backstageTask {
    background: transparent;
    color: [[ColorPalette::TertiaryPale]] !important;
}

#backstageArea a.backstageSelTab,
#backstageToolbar .backstageTask:hover {
    text-decoration:none;
    background: transparent;
    color: [[ColorPalette::Background]] !important;
}

/* MESSAGE AREA */

#messageArea {
    position: fixed;
    top:1px !important;
    right:1px;
    width:360px;
    margin:0;
    padding:7px 1%;
    background:[[ColorPalette::SecondaryPale]];
    border:1px solid [[ColorPalette::SecondaryMid]];
    -moz-border-radius:5px;
    -webkit-border-radius:5px;
    border-radius:3px;
    font-size:0.9em;
}

#messageArea .messageToolbar {
    display:block;
    float:right;
    padding:0.1em;
    text-align:right;
    width:60px;
}

#messageArea a,
#messageArea .button {
    background:transparent;
    text-decoration:none;
    color:[[ColorPalette::TertiaryDark]];
    border:0;
}

#messageArea a:hover{
    color:black;
    border-bottom:1px solid [[ColorPalette::TertiaryDark]];
}

#backstageToolbar {
    text-align:center;
}

/* RESPONSIVE */

@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){
    #mainMenu,
    .headerForeground {
        margin-left: 16px;
    }

    #sidebarOptions,
    #sidebarTabs {
        right: 16px;
        width: 326px;
    }

    #sidebarTabs .tabsetWrapper .tabset {
        font-size: 0.9em;
        width: 77px;
    }

    #sidebarTabs .tabsetWrapper .tabContents {
        width:auto;
        padding:0 0 0 5px;
    }

    #sidebarTabs .tabContents li a {
        font-size: 0.9em;
    }


     /* TIDDLER */

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

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

    br {
        line-height: 0.5em;
    }
}


/* PRINT */

@media print {
    #mainMenu,
    #sidebar,
    #messageArea,
    .toolbar,
    .followPlaceHolder,
    #backstageButton,
    #backstageArea,
    #sidebarTabs,
    #sidebarSearch .txtOptionInput,
    #sidebarOptions {
        display: none !important;
    }
    #displayArea {
        margin: 1em 1em 0em;
    }

    #tiddlerDisplay {
        margin: 16px 16px;
    }

    /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
    noscript {
        display:none;
    }
}

[[StyleSheet]]
/*}}}*/
|Name|White-Fixed-Theme|
|Description|a theme mimicking tw5 for standalone ~TiddlyWiki|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|StyleSheet|##StyleSheet|
|Version|0.8.5 (2013-10-18)|
!PageTemplate
<!--{{{-->

<div id='messageArea'></div>
<div id='topMenu'>
    <div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
    <div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
</div>

<div id='sidebarBottom' refresh='content' force='true' tiddler='SideBarOptions##BOTTOM'></div>

<div id='sidebarTabs'>
    <div class='header sidebarHeader'>
        <div class='headerForeground'>
            <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
                <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
        </div>
       <div id='sidebarSearch'>
           <span macro='search'></span>
       </div>
    </div>
    <div class='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>

<div id='displayArea'>
    <div id='tiddlerDisplay'></div>
</div>

<!--}}}-->
!ViewTemplate
<!--{{{-->
<div class='tagInfo infoTags'>
    <div class='tidTags' macro='tags'></div>
</div>
<div class='toolbar'
    macro='toolbar [[ToolbarCommands::ViewToolbar]] icons:yes height:16 width:16 more:popup'>
</div>
<div class='heading'>
    <span class="titleBar">
        <div class='title' macro='view title text'></div>
        <div class="subtitle">
            senest redigeret d.
            <span macro="view modified date"></span>
            af
            <span class='hideIcon' macro='view modifier link'></span>
        </div>
    </span>
    <div class='tagClear'></div>
</div>
<div class='content'>
    <div class='viewer' macro='view text wikified'></div>
</div>
<div class='tagInfo infoTagging'>
    <div class='tagging' macro='tagging'></div>
</div>
<span class="openTiddler" macro='tiddler OnLoad'/>
<!--}}}-->
!EditTemplate
<!--{{{-->
<div class='toolbar'
    macro='toolbar [[ToolbarCommands::EditToolbar]] icons:yes'>
</div>
<div class='heading editorHeading'>
    <div class='editor title' macro='edit title'></div>
    <div class='tagClear'></div>
</div>
<div macro=""showWhen !readOnly">
<div macro='tiddler QuickEditToolbar with:show'></div></div>
<div class='editor' macro='edit text'></div>
<div class='editorFooter'>
    <div class='tagTitle'>tags</div>
    <div class='editor' macro='edit tags'></div>
    <div class='tagAnnotation'>
        <span macro='message views.editor.tagPrompt'></span>
        <span macro='tagChooser excludeLists'></span>
    </div>
</div>
<!--}}}-->
!StyleSheet
/*{{{*/

/* DEFAULTS */

span + br{
    display:none;
}

.clearFloat {
    clear: both;
}

body {
    font-size: 1em;
    font-family: helvetica, arial, sans-serif;
    background-color: [[ColorPalette::PageBackground]];
    color: [[ColorPalette::Foreground]];
}

body ul {
    margin: 0;
}

.right{
    float:right;
}

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

.viewer blockquote {
    border-left: 2px solid [[ColorPalette::TertiaryPale]];
}

.viewer table, table.twtable {
    border-collapse: collapse;
    margin: 5px 0;
    border: 1px solid [[ColorPalette::TertiaryMid]]  !important;
    max-width: 100%;
    word-break: normal;
    word-wrap: break-word;
}

.viewer tr, .viewer td,
.twtable tr, .twtable td {
    vertical-align:top;
    border: 1px solid [[ColorPalette::TertiaryMid]] !important;
}

.viewer th a:hover,
.viewer thead td a:hover,
.twtable th a:hover,
.twtable thead td :hover{
    color:[[ColorPalette::Background]] !important;
}

,viewer .listTitle{
    margin-left:0;
}

a,
.popup .button {
    color:[[ColorPalette::SecondaryDark]];
}

a:hover {
    text-decoration:underline;
    color:[[ColorPalette::SecondaryMid]];
    background:transparent;
}

a.tiddlyLink {
    font-weight:normal;
}

body .linkified .tiddlyLink.shadow,
a.tiddlyLink.shadow{
    color:[[ColorPalette::TertiaryMid]];
}

a.tiddlyLink.tiddlyLinkNonExisting {
    font-style:italic;
    font-weight:normal;
}

a.tiddlyLink:hover,
.popup .button:hover {
    background:none;
    color:[[ColorPalette::SecondaryMid]];
}

body .linkified .tiddlyLink{
    color:[[ColorPalette::SecondaryDark]];
}

body .linkified .tiddlyLink:hover{
    color:[[ColorPalette::SecondaryMid]];
}

.button,
.tagInfo ul li .button {
    color:[[ColorPalette::TertiaryMid]];
    background:[[ColorPalette::TertiaryPale]];
}

.button:hover,
.tagInfo ul li .button:hover {
    text-decoration:none;
    color:[[ColorPalette::Background]];
    background:[[ColorPalette::TertiaryMid]];
    border-color:[[ColorPalette::TertiaryLight]];
}

a.image:hover {
    background: transparent;
}

.tab{
    border: 1px solid [[ColorPalette::TertiaryLight]];
    border-bottom-color: [[ColorPalette::TertiaryPale]];
    background: [[ColorPalette::TertiaryLight]];
}

a.tabSelected,
.tabset .tab:hover {
    color:[[ColorPalette::TertiaryMid]];
    background: [[ColorPalette::PageBackground]];
    text-decoration: none;
}

.tabContents{
    background: [[ColorPalette::PageBackground]];
}

dd {
    margin-left: 20px;
}

dd:before {
    content: '» ';
}

iframe{
  width:98%;
  height:600px;
  border:2px solid [[ColorPalette::TertiaryPale]];
  z-index:0;
  position:relative;
}

object{
  z-index:0;
  position:relative;
}

.noTitle .listTitle{
  display:none !important;
}

.annotation{
    margin:0;
}

/* PAGE LAYOUT */

#displayArea {
   margin: 0;
   top: 3em;
   left: 0px;
   width: 100%;
   position: relative;
}

#contentWrapper {
    position: relative;
    padding-top: 1px;
    top: -1px;
}

#tiddlerDisplay,
#searchResults {
    margin: 8px 390px 0 42px;
    _position: relative; /* ie 6*/
}

#tiddlerDisplay {
    padding-bottom: 3em;
}

* html #tiddlerDisplay {
    margin-top: 0px;
}


/* HEADER */

.header {
    position: relative;
    background-color: transparent;
    _width: 100%; /* ie 6 demands */
}

.headerForeground {
    color: [[ColorPalette::Foreground]];
    background-color: transparent;
    margin: 0;
    float: left;
    padding: 0;
    position: relative;
    top: 0;
}

.siteTitle{
    float:left;
    display: block;
    font-size: 32px;
    line-height: 32px;
    font-weight: normal;
}

.siteSubtitle {
    float:left;
    display: block;
    font-size: 14px;
    margin: 1em 0 0 1em;
    color: [[ColorPalette::TertiaryMid]];
}


/* SEARCH */

#sidebarSearch {
    width: 200px;
}

#sidebarSearch .txtOptionInput {
    width: 100%;
    margin-top: 5px;
    _color: #bbb; /* ie6 danger */
}

#sidebarSearch .txtOptionInput:focus {
    color: #000;
}

#sidebarSearch .searchButton {
    display: none;
}

/* SIMPLESEARCH */
#searchResults {
     margin-top:0;
}

#displayArea #searchResults .button{
    padding:2px 6px;
    margin-right:3px;
    float:right;
}

/* FINDR */

#sidebarTabs #searchResults {
    margin: 0 1em 0 0;
}

#searchResults #findr-buttons{
    margin:0.5em 0 0 5px;
}

#displayArea #searchResults #findr-buttons {
    margin: 2.5em 0 0em 5px;
    float: right;
}

#searchResults .search_list .button{
    float:none !important;
    background:transparent;
    padding:2px;
    margin: 0;
}

#searchResults .search_list .button:hover{
    color:[[ColorPalette::SecondaryMid]];
}

.search_details strong{
   font-weight:normal;
   color:[[ColorPalette::TertiaryMid]];
}

.findr > strong{
    display: block;
    clear: both;
    padding-top: 0.5em;
}


/* TOPMENU */
#topMenu {
    position: fixed;
    left: 0;
    top: 0;
    clear: left;
    padding: 0.5em 0 0 0;
    min-height: 1em;
    overflow: hidden;
    width: 100%;
    z-index:2;
    background:[[ColorPalette::PageBackground]];
    -moz-box-shadow: 0 21px 7px -7px [[ColorPalette::PageBackground]];
    -webkit-box-shadow: 0 21px 7px -7px [[ColorPalette::PageBackground]];
    box-shadow: 0 21px 7px -7px [[ColorPalette::PageBackground]];
}

#sidebarOptions {
    position: relative;
    float:right;
    padding: 0;
    margin: 0 400px 0 1em;
}

/* MAIN MENU */

#mainMenu {
    color:[[ColorPalette::TertiaryLight]];
    position: static;
    text-align: left;
    margin: 0;
    padding: 4px 0 0 56px;
    float: left;
    width: auto;
    font-size: 1em;
    line-height: normal;
}

#mainMenu br{
   display:none;
}

#mainMenu a,
#mainMenu .tiddlyLink,
#mainMenu .button,
#sidebarOptions a,
#sidebarOptions .button,
#sidebarBottom a,
#sidebarBottom .button {
    margin: 0;
    background:none;
    color: [[ColorPalette::TertiaryMid]];
    font-size: 0.9em;
    padding: 4px 6px;
}

#sidebarOptions a,
#sidebarOptions .button {
    display:inline-block;
}

#mainMenu a:hover,
#mainMenu .tiddlyLink:hover,
#mainMenu .button:hover,
#sidebarOptions a:hover,
#sidebarOptions .button:hover,
#sidebarBottom a:hover,
#sidebarBottom .button:hover {
    background:none !important;
    color:[[ColorPalette::TertiaryDark]];
}

#mainMenu .button,
#sidebarOptions .button,
#sidebarBottom .button {
    border: 1px solid transparent;
}


/* SIDEBAR */

#sidebarTabs {
    position: fixed;
    overflow:auto;
    bottom:0;
    right: 0;
    top: 0;
    padding-top: 2em;
    width: 360px;
    z-index:3;
    background-color: [[ColorPalette::PageBackground]];
}

#sidebarTabs .lf-search {
    background:transparent;
    padding:0 0 5px 0;
}
#sidebarTabs .lf-label{
    display:none;
}

#sidebarBottom{
    position:fixed;
    bottom: 0;
    right: 0;
    z-index: 4;
    width: 380px;
    z-index: 4;
    padding: 2px 0;
    background-color: [[ColorPalette::PageBackground]];
}

#sidebarBottom br{
    display:none;
}

#sidebarBottom .button{
    float:left;
    padding: 5px 140px 5px 10px;
}

#sidebarBottom .sidebarTop{
    float:right;
    padding: 5px 10px 5px 140px;
    margin-right:1em;
}

.sidebarTabs {
    padding-bottom: 3em;
}

#sidebarTabs .sidebarHeader{
    padding: 2em 0 0 10px;
}

#sidebarTabs .siteTitle,
#sidebarTabs .siteTitle a {
    font-weight:normal;
    color: [[ColorPalette::SecondaryDark]];
    background: transparent;
}

#sidebarTabs .siteTitle a:hover {
    color: [[ColorPalette::TertiaryDark]];
}

#sidebarTabs .siteSubtitle {
    float: none;
    clear: both;
    margin: 0;
}

.sidebarTabs{
    clear:both;
    margin-top:1em;
    background:[[ColorPalette::PageBackground]];
}

#sidebarTabs .tabsetWrapper .tabset {
    width: 87px;
    text-align:right;
    border: 0;
    height: auto;
    float: left;
    word-wrap: break-word;
    top: 0;
    padding: 0 5px 0 0;
}

#sidebarTabs .tabContents li a:hover {
    color: [[ColorPalette::SecondaryMid]];
}

#sidebarTabs .tabsetWrapper .tabset .tab {
    font-size: 0.9em;
    padding: 2px 5px 2px 2px;
    color: [[ColorPalette::TertiaryMid]];
    background: transparent;
    border: 0;
    border-right: 1px solid [[ColorPalette::TertiaryLight]];
    line-height: 16px;
    position: relative;
    display: block;
    margin: 2px 0 0 0;
    background-color: #f9f9f9;
    background-image: linear-gradient(left, rgb(249,249,249) 0%, rgb(236,236,236) 100%);
    background-image: -o-linear-gradient(left, rgb(249,249,249) 0%, rgb(236,236,236) 100%);
    background-image: -moz-linear-gradient(left, rgb(249,249,249) 0%, rgb(236,236,236) 100%);
    background-image: -webkit-linear-gradient(left, rgb(249,249,249) 0%, rgb(236,236,236) 100%);
    background-image: -ms-linear-gradient(left, rgb(249,249,249) 0%, rgb(236,236,236) 100%);
}

#sidebarTabs .tabsetWrapper .tabset a:hover,
#sidebarTabs .tabsetWrapper .tabset .tabSelected {
    border:0;
    border-right: 1px solid [[ColorPalette::TertiaryLight]];
    z-index: 10;
    color: [[ColorPalette::TertiaryMid]];
    background:transparent;
    text-decoration:none;
}

#sidebarTabs .tabsetWrapper .tabset a:hover{
    color: [[ColorPalette::SecondaryMid]];
}


#sidebarTabs .tabContents li {
    border: none;
    margin-left: 0;
    word-wrap: break-word;
}

#sidebarTabs .tiddlyLinkExisting{
    font-weight:normal;
}

.tabContents li.listTitle{
    font-size: 1em;
    border: 0;
    padding: 0.3em  0.11em;
    color: [[ColorPalette::TertiaryLight]];
}

#sidebarTabs .tabContents .list-missing a {
    font-style:italic;
}

.tabContents .timeline {
    background: transparent;
    margin-bottom: 8px;
}

#sidebarTabs .timeline li.listTitle {
    color: [[ColorPalette::TertiaryLight]];
    margin-left: 8px 0;
    padding: 0.3em 0.11em;
}

#sidebarTabs .tabContents div > ul > li.listTitle {
    padding-top:0;
}

#sidebarTabs .tabContents li a {
    display: block;
    text-align: left;
    margin: 0 0 1px 0;
    padding: 2px 0;
    background: transparent;
}

#sidebarTabs .tabsetWrapper .tabContents {
    position: relative;
    background-color: transparent;
    border: 0;
    width: 230px;
    padding: 0 0 0 5px;;
    font-size: 0.9em;
}

.tabContents .listTitle:first-child {
    margin-top: 0px;
}

/*SUPPORT FOR SECONDARY TABS*/
#sidebarTabs > div > .tabsetWrapper > .tabset{
    padding-left:10px;
    width:90%;
    float:none;
    text-align:left;
}

#sidebarTabs > div > .tabsetWrapper > .tabset > .tab {
    display: inline-block;
    background: transparent;
    margin: 0 3px -1px 0;
    padding:2px 4px;
    color: [[ColorPalette::TertiaryMid]];
    background: [[ColorPalette::TertiaryPale]];
    border: 0;
    border-top: 2px solid [[ColorPalette::TertiaryPale]];
    border-bottom: 2px solid [[ColorPalette::TertiaryPale]];
}

#sidebarTabs > div > .tabsetWrapper > .tabset > .tab:hover,
#sidebarTabs > div > .tabsetWrapper > .tabset > .tabSelected {
    background: transparent;
    border-top-color: transparent;
    color: [[ColorPalette::SecondaryDark]];
}

#sidebarTabs > div > .tabsetWrapper > .tabContents{
    margin-top:5px;
}

#sidebarTabs > div > .tabsetWrapper .tabsetWrapper {
    margin-top:5px;
}

#sidebarTabs > div > .tabsetWrapper .tabsetWrapper > .tabset{
    width:70px;
}

#sidebarTabs > div > .tabsetWrapper .tabsetWrapper,
#sidebarTabs > div > .tabsetWrapper .tabsetWrapper > .tabContents{
    width:auto;
}


/* TIDDLER */

.tiddler {
    position: relative;
    padding:0;
    width: 100%;
    margin-bottom: 2em;
    border-top: 1px solid [[ColorPalette::TertiaryPale]];
    background: [[ColorPalette::Background]];
    -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.1);
    -moz-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.1);
    box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.1);
}

.heading {
    top: 22px;
    left: 0;
    width: 95%;
    padding: 1em 2.5% 5px 2.5%;
    border-bottom:3px solid [[ColorPalette::Dim]];
}

.tiddler .heading .title {
    position: relative;
    display: block;
    font-weight:normal;
    word-wrap: break-word;
    font-size:24px;
    line-height:24px;
    margin-right: 120px;
}

.tiddler .subtitle {
    display:block;
    float:left;
    font-size: 0.9em;
    color: [[ColorPalette::TertiaryLight]];
    margin: 5px 0 0 0;
}

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

.tiddler .subtitle a {
    color: [[ColorPalette::SecondaryMid]];
}

.tiddler .subtitle a:hover {
    color: [[ColorPalette::SecondaryDark]];
    background: [[ColorPalette::Background]];
}

.tiddler .headingClear {
    clear: both;
}

.tiddler .viewer {
    padding: 5px 2.5% 16px 2.5%;
    width: 95%;
    margin: 0;
    line-height: 1.4em;
    overflow:hidden;
}

.viewer pre {
    margin-left: 0;
}


/* TOOLBAR */

/* ie hacks */
.toolbar .svgIconText {
    *display: inline;
}

* html .toolbar {
    right: 8px;
}

.tiddler .originButton div {
    display: inline-block;
}

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

.tiddler .originButton {
    display: block;
}

.originButton.highlight{
    background:transparent;
}

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

/* TOOLBAR */ 


div.toolbar {
    visibility:hidden;
    right: -6px;
    position: absolute;
    padding: 0;
    top: 10px;
    z-index: 1;
}

.selected div.toolbar {
    visibility: visible;
}

div.tiddler .toolbar a {
    cursor: pointer;
    float: left\9;
    display: inline\9;
}

div.tiddler .toolbar a.command_deleteTiddler{
    margin-right: 34px !important;
}

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

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

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

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

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

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

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


/*! EDITMODE */

.heading.editorHeading {
    margin: 2em 0 0 0;
    width: 100%;
    padding: 0;
}

.tiddler .editor {
    padding: 0px;
    margin: 0 2.5%;
}

.heading .editor input {
    width: 99%;
    padding: 2px 0.5%;
    font-size: 0.8em;
    margin-top:1em;
}

.tiddler .heading .editor.title {
    font-size: 1.7em;
    line-height: normal;
}

.editor input, .editor textarea {
    width: 99%;
    padding: 2px 0.5%;
    border: 2px solid [[ColorPalette::TertiaryPale]];
}

.tagTitle {
    position: absolute;
    text-align: right;
    padding-right: 10px;
    top: 0px;
    margin-left: -95px;
    width: 100px;
}

.tagAnnotation {
    margin: 8px 0 0 20px;
    padding-bottom: 8px;
}

.annotationsBox {
    padding: 0;
    margin: 0 2.2% 0 2.5%;
}

.annotationsBox  .annotation {
    margin: 0;
    padding: 3px 5px;
}

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

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


/* TAGGING */
.selected .tagging,
.selected .tagging:hover {
    border: none;
    background: none;
}
.tagging {
    float: none;
    background: none;
    border: none;
}

.tagInfo {
    color: [[ColorPalette::TertiaryMid]];
    background: [[ColorPalette::Dim]];
    margin: 0;
    padding: 0;
    font-size:0.9em;
}

.tagInfo .tidTags,
.tagInfo .tagging{
    font-size:1em;
    padding: 0 0 2px 0;
}

.tagInfo ul {
    list-style: none;
    padding-left: 10px;
}

.tagInfo ul li {
    display:inline-block;
    margin-top:3px;
}

.tagInfo ul li.listTitle,
.tagInfo .tagging ul li.listTitle {
    display:inline-block;
    width:60px;
    text-align: right;
    padding: 5px 5px 3px 0;
    text-align:right;
    color: [[ColorPalette::TertiaryLight]];
    margin:0;
}

.tagInfo .tagging ul li.listTitle + li {
   margin-top: -20px;
}

.tagInfo .tagging ul li {
    float: none;
    display: block;
    clear:left;
    margin-left: 65px;
}

.tagInfo .tagging ul li a {
    display:block;
}

.infoTags {
    padding: 3px 5px;
}

.infoTags .tidTags{
    max-width:75%;
}

.infoTags ul {
    padding-left:0;
}

/* POPUPS (/ SIDEBAR) */

.popup {
    padding:3px;
    border-color:transparent;
    background-color: [[ColorPalette::Background]];
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    -webkit-box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5);
    -moz-box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5);
    box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5);
}

.popup ul,
.popup li {
    margin:0;
    padding:0;
    list-style-type:none;
}

.popup.block a{
    display:block;
}

.popup.block br{
    display:none;
}

.popup a,
.popup li a,
.popup a.button {
    padding:3px;
    color: [[ColorPalette::SecondaryDark]];
    border:0;
}

.popup a :hover,
.popup li a:hover,
.popup a.button:hover,
a.popupbutton.highlight {
    color: [[ColorPalette::SecondaryMid]];
    background: transparent;
}

.popup li a.tiddlyLink {
    font-weight: bold;
}

.taggedTiddlerList li:last-child a.tiddlyLink{
    font-weight:normal;
}

.popup li.disabled,
.popup li.listTitle {
    border-bottom: 1px solid [[ColorPalette::TertiaryPale]];
    color: [[ColorPalette::TertiaryMid]];
    font-weight:normal;
    padding:7px 5px;
    margin: 0;
}

.popup .button{
    background:transparent;
}

.popup.confirmationPopup,
.followList {
    font-size: 0.8em;
    padding: 1em;
    border: 0;
}

.popup.confirmationPopup .button {
    border: 0;
    margin: 4px 4px 0 4px;
    display: inline-block;
}

.popup.confirmationPopup .button:hover {
    background:transparent;
    color:[[ColorPalette::SecondaryDark]];
}

.popup hr{
    color: transparent;
    background: transparent;
    border: 0;
    border-bottom: 1px solid #ccc;
}

.listBreak{
   border-bottom: 1px solid  [[ColorPalette::TertiaryPale]];;
}

.listBreak div{
   display:none;
}


/* REVISIONS */

.revButton {
    float: right;
}

.revisionCloak {
    position: absolute;
    position: fixed !important;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    border: 0;
    margin: 0;
    padding: 0;
    opacity: 0.5;
    filter: alpha(opacity=50);
    background-color: #000;
}

.viewRevision .toolbar {
    right: 48px;
    top: 8px;
}

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

.viewRevision .toolbar svg {
    width: 32px;
    height: 32px;
}


/* ACTIVITY */

#sidebarTabs .tabContents .activityStream .feedItem a {
    display: inline-block;
    padding: 0;
    background: none;
}


/* FOLLOWING */

.tiddler .followPlaceHolder {
    display: block;
    position: absolute;
    top: 58px;
    right: 60px;
    _right: 126px; // add width of modifierIcon
}

.followButton a {
    position: absolute;
    top: 0px;
    right: 0;
    display: block;
    margin: 0;
    padding: 6px 20px;
    background: transparent;
    text-align: center;
    color: [[ColorPalette::TertiaryMid]];
    display: block;
    margin-top: 0px;
}

.followButton a:hover {
    color: [[ColorPalette::TertiaryMid]];
    text-decoration: none;
}

.followButton.hasReplies a {
    font-weight:bold;
    color: [[ColorPalette::SecondaryMid]];
}

.followButton.hasReplies a:hover {
    color: [[ColorPalette::SecondaryDark]];
}


* html .followButton a {
    margin: 0px 8px 0 0;
}

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

/* the 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::TertiaryPale]];
}

.followList .listTitle {
    text-decoration: underline;
}

.followTiddlersList .label {
    display: block;
    left: 10px;
    top: 0px;
    line-height: 16px;
    position: relative;
}

.popup.followList {
    margin: 10px 0 0 -335px;
    max-width: 400px;
}

.popup .followTiddlersList a {
    display: inline;
    padding: 0;
}

.popup .followTiddlersList ul{
   margin:0;
   padding:0;
}

.popup .followTiddlersList li{
    position: relative;
    display: block;
    clear: both;
    margin-bottom: 8px;
}

.popup .followTiddlersList .siteIcon{
    height: auto;
    width: auto;
    margin-right:5px;
}


/* ICONS */

.titleBar .label {
    display: inline !important;
}

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

.tiddler .spaceSiteIcon {
    float: left;
    margin: 0 5px 0 0;
    position: relative;
    display: block;
}

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

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

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

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

.modifierIcon {
    position: absolute;
    width: 42px;
    top: 42px;
    right: 0;
    text-align: right;
}

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

.editSpaceSiteIcon .originButton {
    cursor: auto;
}

.editSpaceSiteIcon .originButton img,
.editSpaceSiteIcon .originButton svg {
    margin:  0 5px 5px 3px;
    width: 16px;
    height: 16px;
}

.editSpaceSiteIcon, .privacyEdit {
    float: left;
}

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

.tiddler .privacySettings {
    text-align: center;
}
.tiddler .privacySettings .originButton {
    display: inline;
}


/* BACKSTAGE */

#app-picker:hover{
    background-color:transparent;
}

#backstageToolbar {
    padding-left: 50px;
}

#backstageToolbar .backstageTask {
    background: transparent;
    color: [[ColorPalette::TertiaryPale]] !important;
}

#backstageArea a.backstageSelTab,
#backstageToolbar .backstageTask:hover {
    text-decoration:none;
    background: transparent;
    color: [[ColorPalette::Background]] !important;
}


/* MESSAGE AREA */

#messageArea {
    position: fixed;
    width:360px;
    top: 0 !important;
    margin:0 0 0 1%;
    padding:7px 1%;
    background:[[ColorPalette::SecondaryPale]];
    border:1px solid [[ColorPalette::SecondaryMid]];
    -moz-border-radius:5px;
    -webkit-border-radius:5px;
    border-radius:3px;
    font-size:0.9em;
}

#messageArea .messageToolbar {
    display:block;
    float:right;
    padding:0.1em;
    text-align:right;
    width:60px;
}

#messageArea a,
#messageArea .button {
    background:transparent;
    text-decoration:none;
    color:[[ColorPalette::TertiaryDark]];
    border:0;
}

#messageArea a:hover{
    color:black;
    border-bottom:1px solid [[ColorPalette::TertiaryDark]];
}

#backstageToolbar {
    text-align:center;
}

/* RESPONSIVE */

@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){

#mainMenu {
    padding-left:16px;
}

#sidebarOptions {
    margin: 0 280px 0 1em;
}

#sidebarTabs {
    width:260px;
}

#sidebarBottom{
    right:0;
    width:260px;
}

#sidebarBottom .sidebarTop{
    padding: 5px 10px 5px 60px;
}

#sidebarBottom .button{
    padding: 5px 60px 5px 10px;
}

#tiddlerDisplay,
#searchResults {
    margin: 16px 280px 0 16px;
}

#sidebarTabs .tabsetWrapper .tabset {
    font-size: 0.9em;
    width: 70px;
}

#sidebarTabs .tabsetWrapper .tabContents {
    width:auto;
    padding:0 0 0 5px;
}

#sidebarTabs .tabContents li a {
    font-size: 0.9em;
}


 /* TIDDLER */

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

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

br {
    line-height: 0.5em;
}
}

@media all and (max-width: 600px){

#messageArea{
    left: 1%;
    width: 95%;
}

#topMenu {
    margin-top:1em;
    position:relative;
    width: 100%;
}

#mainMenu {
    padding-left:0;
}

#sidebarTabs .sidebarHeader {
    padding-top:0.5em;
}

#sidebarOptions {
    float:none;
    clear:both;
    margin: 0;
}

.popup.followList {
    margin: 0;
    max-width: 300px;
}

#displayArea{
    top:0;
    margin-top:1em;
}

#tiddlerDisplay,
#searchResults {
    width:98%;
    margin: 0px 1%;
}

#sidebarTabs{
    padding-top:0;
    position: relative;
    width:100%;
}
#sidebarBottom{
    left:0;
    width:100%;
}

#sidebarBottom .button{
    display:block;
    float:left;
    margin:0;
    padding: 5px 22%;
    width: auto;
}
}


/* PRINT */

@media print {

#mainMenu,
#sidebar,
#messageArea,
.toolbar,
.followPlaceHolder,
#backstageButton,
#backstageArea,
#sidebarTabs,
#sidebarSearch .txtOptionInput,
#sidebarOptions {
    display: none !important;
}
#displayArea {
    margin: 1em 1em 0em;
}

#tiddlerDisplay {
    margin: 16px 16px;
}

/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {
    display:none;
}
}

[[StyleSheet]]

/*}}}*/
|Name|White-Theme|
|Description|a theme mimicking tw5 for standalone ~TiddlyWiki|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|EditTemplate|##EditTemplate|
|EditTemplateReadOnly|##EditTemplateReadOnly|
|StyleSheet|##StyleSheet|
|Version|0.8.5 (2013-10-18)|
!PageTemplate
<!--{{{-->
<div id='messageArea'></div>

<div class='horiz'>
<div id='topMenu'>
    <div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
</div></div>

<div id='displayArea'>
    <div id='sidebarTabs'>
        <div class='sidebarHeader header'>
            <div class='siteTitle' refresh='content' tiddler='SiteTitle'></div>
            <div class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></div>
            <div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
            <div id='sidebarSearch' macro='search'></div>
        </div>
        <div class='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'>
        </div>
    </div>

    <div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
!ViewTemplate
<!--{{{-->
<div class='tagInfo infoTags'>
    <div class='tidTags' macro='tags'></div>
</div>
<div class='toolbar'
    macro='toolbar [[ToolbarCommands::ViewToolbar]] icons:yes height:16 width:16 more:popup'>
</div>
<div class='heading'>
    <span class="titleBar">
        <div class='title' macro='view title text'></div>
        <div class="subtitle">
            senest redigeret d.
            <span macro="view modified date"></span>
            af
            <span macro='view modifier link'></span>
        </div>
    </span>
    <div class='tagClear'></div>
</div>
<div class='content'>
    <div class='viewer' macro='view text wikified'></div>
</div>
<div class='tagInfo infoTagging'>
    <div class='tagging' macro='tagging'></div>
</div>
<span class="openTiddler" macro='tiddler OnLoad'/>
<!--}}}-->
!EditTemplate
<!--{{{-->
<div class='toolbar'
    macro='toolbar [[ToolbarCommands::EditToolbar]] icons:yes'>
</div>
<div class='heading editorHeading'>
    <div class='editor title' macro='edit title'></div>
    <div class='tagClear'></div>
</div>
<div macro=""showWhen !readOnly">
<div macro='tiddler QuickEditToolbar with:show'></div></div>
<div class='editor' macro='edit text'></div>
<div class='editorFooter'>
    <div class='tagTitle'>tags</div>
    <div class='editor' macro='edit tags'></div>
    <div class='tagAnnotation'>
        <span macro='message views.editor.tagPrompt'></span>
        <span macro='tagChooser excludeLists'></span>
    </div>
</div>
!EditTemplateReadOnly
<!--{{{-->
<div class='toolbar'
    macro='toolbar [[ToolbarCommands::EditToolbar]] icons:yes'>
</div>
<div class='heading editorHeading'>
    <div class='editor title' macro='edit title'></div>
    <div class='tagClear'></div>
</div>
<div class='editor' macro='edit text'></div>
<div class='editorFooter'>
    <div class='tagTitle'>tags</div>
    <div class='editor' macro='edit tags'></div>
    <div class='tagAnnotation'>
        <span macro='message views.editor.tagPrompt'></span>
        <span macro='tagChooser excludeLists'></span>
    </div>
</div>
<!--}}}-->
!StyleSheet
/*{{{*/

/* DEFAULTS */

span + br {
    display:none;
}

.clearFloat {
    clear: both;
}

body {
    font-size: 1em;
    font-family: helvetica, arial, sans-serif;
    background-color: [[ColorPalette::PageBackground]];
    color: [[ColorPalette::Foreground]];
}

body ul {
    margin: 0;
}

.right{
    float:right;
}

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

.viewer blockquote {
    border-left: 2px solid [[ColorPalette::TertiaryPale]];
}

.viewer table, table.twtable {
    border-collapse: collapse;
    margin: 5px 0;
    border: 1px solid [[ColorPalette::TertiaryMid]]  !important;
    max-width: 100%;
    word-break: normal;
    word-wrap: break-word;
}

.viewer tr, .viewer td,
.twtable tr, .twtable td {
    vertical-align:top;
    border: 1px solid [[ColorPalette::TertiaryMid]] !important;
}

.viewer th a:hover,
.viewer thead td a:hover,
.twtable th a:hover,
.twtable thead td :hover{
    color:[[ColorPalette::Background]] !important;
}

,viewer .listTitle{
    margin-left:0;
}

a,
.popup .button {
    color:[[ColorPalette::SecondaryDark]];
}

a:hover {
    text-decoration:underline;
    color:[[ColorPalette::SecondaryMid]];
    background:transparent;
}

a.tiddlyLink {
    font-weight:normal;
}

body .linkified .tiddlyLink.shadow,
a.tiddlyLink.shadow{
    color:[[ColorPalette::TertiaryMid]];
}

a.tiddlyLink.tiddlyLinkNonExisting {
    font-style:italic;
    font-weight:normal;
}

a.tiddlyLink:hover,
.popup .button:hover {
    background:none;
    color:[[ColorPalette::SecondaryMid]];
}

body .linkified .tiddlyLink{
    color:[[ColorPalette::SecondaryDark]];
}

body .linkified .tiddlyLink:hover{
    color:[[ColorPalette::SecondaryMid]];
}

.button,
.tagInfo ul li .button {
    color:[[ColorPalette::TertiaryMid]];
    background:[[ColorPalette::TertiaryPale]];
}

.button:hover,
.tagInfo ul li .button:hover {
    text-decoration:none;
    color:[[ColorPalette::Background]];
    background:[[ColorPalette::TertiaryMid]];
    border-color:[[ColorPalette::TertiaryLight]];
}

a.image:hover {
    background: transparent;
}

.tab{
    border: 1px solid [[ColorPalette::TertiaryLight]];
    border-bottom-color: [[ColorPalette::TertiaryPale]];
    background: [[ColorPalette::TertiaryLight]];
}

a.tabSelected,
.tabset .tab:hover {
    color:[[ColorPalette::TertiaryMid]];
    background: [[ColorPalette::PageBackground]];
    text-decoration: none;
}

.tabContents{
    background: [[ColorPalette::PageBackground]];
}

dd {
    margin-left: 20px;
}

dd:before {
    content: '» ';}

iframe{
    width:98%;
    height:600px;
    border:2px solid [[ColorPalette::TertiaryPale]];
    z-index:0;
    position:relative;
}

object{
    z-index:0;
    position:relative;
}

.noTitle .listTitle{
    display:none !important;
}

.annotation{
    margin:0;
}

/* PAGE LAYOUT */

#displayArea {
    margin: 0;
    top: 0px;
    left: 0px;
    width: 100%;
    position: relative;
}

#contentWrapper {
    position: relative;
    padding-top: 1px;
    top: -1px;
}

#tiddlerDisplay,
#searchResults {
    margin: 8px 390px 0 42px;
    _position: relative; /* ie 6*/
}

* html #tiddlerDisplay {
    margin-top: 0px;
}


/* SEARCH */

#sidebarSearch {
    width: 200px;
}

#sidebarSearch .txtOptionInput {
    width: 100%;
    margin-top: 5px;
    _color: #bbb; /* ie6 danger */
}

#sidebarSearch .txtOptionInput:focus {
    color: #000;
}

#sidebarSearch .searchButton {
    display: none;
}

/* SIMPLESEARCH */
#searchResults {
     margin-top:0;
}

#displayArea #searchResults .button{
    padding:2px 6px;
    margin-right:3px;
    float:right;
}

/* FINDR */

#sidebarTabs #searchResults {
    margin: 0 1em 0 0;
}

#searchResults #findr-buttons{
    margin:0.5em 0 0 5px;
}

#displayArea #searchResults #findr-buttons {
    margin: 2.5em 0 0em 5px;
    float: right;
}

#searchResults .search_list .button{
    float:none !important;
    background:transparent;
    padding:2px;
    margin: 0;
}

#searchResults .search_list .button:hover{
    color:[[ColorPalette::SecondaryMid]];
}

.search_details strong{
   font-weight:normal;
   color:[[ColorPalette::TertiaryMid]];
}

.findr > strong{
    display: block;
    clear: both;
    padding-top: 0.5em;
}


/* TOPMENU */

.header {
    background:transparent;
}

#topMenu {
    left: 0;
    margin: 0.5em 32px 0 42px;
    clear:left;
    position: relative;
    padding: 0.5em 0 ;
    min-height: 1em;
    overflow: hidden;
    _width: 100%; /* for ie 6 */
}

/* MAIN MENU */

#mainMenu {
    color:[[ColorPalette::TertiaryLight]];
    position: static;
    text-align: left;
    margin: 0;
    float: left;
    width: auto;
    padding: 0;
    margin-left:4px;
    font-size: 1em;
    line-height: normal;
}

#mainMenu br{
   display:none;
}

#topMenu #sideBarOptions {
    margin-right:16px;
}

#mainMenu a,
#mainMenu .tiddlyLink,
#mainMenu .button,
#sidebarOptions a,
#sidebarOptions .button {
    margin: 0;
    background:none;
    color: [[ColorPalette::TertiaryMid]];
    font-size: 0.9em;
    padding: 4px 6px;
}

#sidebarOptions a,
#sidebarOptions .button {
    display:inline-block;
}

#mainMenu a:hover,
#mainMenu .tiddlyLink:hover,
#mainMenu .button:hover,
#sidebarOptions a:hover,
#sidebarOptions .button:hover {
    background:none !important;
    color:[[ColorPalette::TertiaryDark]];
}

#mainMenu .button,
#sidebarOptions .button {
    border: 1px solid transparent;
}

.topMenu #sidebarOptions {
    float: right;
    padding: 0;
    margin: 0 0 0 1em;
}


/* SIDEBAR */

#sidebarTabs {
    width: 360px;
    position: absolute;
    right: 0;
    top: 0;
}

#sidebarTabs .lf-search {
    background:transparent;
    padding:0 0 5px 0;
}

#sidebarTabs .lf-label{
    display:none;
}

#sidebarTabs .sidebarHeader{
    padding: 1em 0 0 10px;
}

#sidebarTabs .siteTitle,
#sidebarTabs .siteTitle a {
    display: block;
    font-size: 32px;
    line-height: 32px;
    font-weight:normal;
    color: [[ColorPalette::SecondaryDark]];
    background: transparent;
}

#sidebarTabs .siteTitle a:hover {
    color: [[ColorPalette::TertiaryDark]];
}

#sidebarTabs .siteSubtitle {
    display: block;
    float: none;
    font-size: 14px;
    margin: 1em 0 0 1em;
    color: [[ColorPalette::TertiaryMid]];
    clear: both;
    margin: 0;
}

#sidebarTabs #sidebarOptions {
    margin-top: 1em;
    padding:0;
}

#sidebarTabs #sidebarOptions .button:hover,
#sidebarTabs #sidebarOptions .button:active {
    color:[[ColorPalette::PrimaryMid]];
    text-decoration:none;
    background:transparent;
}

.sidebarTabs{
    clear:both;
    margin-top:1em;
}

#sidebarTabs .tabsetWrapper .tabset {
    width: 87px;
    text-align:right;
    border: 0;
    height: auto;
    float: left;
    word-wrap: break-word;
    top: 0;
    padding: 0 5px 0 0;
}

#sidebarTabs .tabContents li a:hover {
    color: [[ColorPalette::SecondaryMid]];
}

#sidebarTabs .tabsetWrapper .tabset .tab {
    font-size: 0.9em;
    padding: 2px 5px 2px 2px;
    color: [[ColorPalette::TertiaryMid]];
    background: transparent;
    border: 0;
    border-right: 1px solid [[ColorPalette::TertiaryLight]];
    line-height: 16px;
    position: relative;
    display: block;
    margin: 2px 0 0 0;
    background-color: #f9f9f9;
    background-image: linear-gradient(left, rgb(249,249,249) 0%, rgb(236,236,236) 100%);
    background-image: -o-linear-gradient(left, rgb(249,249,249) 0%, rgb(236,236,236) 100%);
    background-image: -moz-linear-gradient(left, rgb(249,249,249) 0%, rgb(236,236,236) 100%);
    background-image: -webkit-linear-gradient(left, rgb(249,249,249) 0%, rgb(236,236,236) 100%);
    background-image: -ms-linear-gradient(left, rgb(249,249,249) 0%, rgb(236,236,236) 100%);
}

#sidebarTabs .tabsetWrapper .tabset a:hover,
#sidebarTabs .tabsetWrapper .tabset .tabSelected {
    border:0;
    border-right: 1px solid [[ColorPalette::TertiaryLight]];
    z-index: 10;
    color: [[ColorPalette::TertiaryMid]];
    background:transparent;
    text-decoration:none;
}

#sidebarTabs .tabsetWrapper .tabset a:hover{
    color: [[ColorPalette::SecondaryMid]];
}


#sidebarTabs .tabContents li {
    border: none;
    margin-left: 0;
    word-wrap: break-word;
}

#sidebarTabs .tiddlyLinkExisting{
    font-weight:normal;
}

.tabContents li.listTitle{
    font-size: 1em;
    border: 0;
    padding: 0.3em  0.11em;
    color: [[ColorPalette::TertiaryLight]];
}

#sidebarTabs .tabContents .list-missing a {
    font-style:italic;
}

.tabContents .timeline {
    background: transparent;
    margin-bottom: 8px;
}

#sidebarTabs .timeline li.listTitle {
    color: [[ColorPalette::TertiaryLight]];
    margin-left: 8px 0;
    padding: 0.3em 0.11em;
}

#sidebarTabs .tabContents div > ul > li.listTitle {
    padding-top:0;
}

#sidebarTabs .tabContents li a {
    display: block;
    text-align: left;
    margin: 0 0 1px 0;
    padding: 2px 0;
    background: transparent;
}

#sidebarTabs .tabsetWrapper .tabContents {
    position: relative;
    background-color: transparent;
    border: 0;
    width:16em;
    min-height: 200px;
    padding: 0 0 0 5px;;
    font-size: 0.9em;
}

.tabContents .listTitle:first-child {
    margin-top: 0px;
}

/*SUPPORT FOR SECONDARY TABS*/
#sidebarTabs > div > .tabsetWrapper > .tabset{
    padding-left:10px;
    width:90%;
    float:none;
    text-align:left;
}

#sidebarTabs > div > .tabsetWrapper > .tabset > .tab {
    display: inline-block;
    background: transparent;
    margin: 0 3px -1px 0;
    padding:2px 4px;
    color: [[ColorPalette::TertiaryMid]];
    background: [[ColorPalette::TertiaryPale]];
    border: 0;
    border-top: 2px solid [[ColorPalette::TertiaryPale]];
    border-bottom: 2px solid [[ColorPalette::TertiaryPale]];
}

#sidebarTabs > div > .tabsetWrapper > .tabset > .tab:hover,
#sidebarTabs > div > .tabsetWrapper > .tabset > .tabSelected {
    background: transparent;
    border-top-color: transparent;
    color: [[ColorPalette::SecondaryDark]];
}

#sidebarTabs > div > .tabsetWrapper > .tabContents{
    margin-top:5px;
}

#sidebarTabs > div > .tabsetWrapper .tabsetWrapper {
    margin-top:5px;
}

#sidebarTabs > div > .tabsetWrapper .tabsetWrapper > .tabset{
    width:70px;
}

#sidebarTabs > div > .tabsetWrapper .tabsetWrapper,
#sidebarTabs > div > .tabsetWrapper .tabsetWrapper > .tabContents{
    width:auto;
}


/* TIDDLER */

.tiddler {
    position: relative;
    padding:0;
    width: 100%;
    margin-bottom: 2em;
    border-top: 1px solid [[ColorPalette::TertiaryPale]];
    background: [[ColorPalette::Background]];
    -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.1);
    -moz-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.1);
    box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.1);
}

.heading {
    top: 22px;
    left: 0;
    width: 95%;
    padding: 1em 2.5% 5px 2.5%;
    border-bottom:3px solid [[ColorPalette::Dim]];
}

.tiddler .heading .title {
    position: relative;
    display: block;
    font-weight:normal;
    word-wrap: break-word;
    font-size:24px;
    line-height:24px;
    margin-right: 120px;
}

.tiddler .subtitle {
    display:block;
    float:left;
    font-style: normal;
    font-size: 0.9em;
    color: [[ColorPalette::TertiaryMid]];
    margin: 5px 0 0 0;
}

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

.tiddler .subtitle a {
    color: [[ColorPalette::SecondaryMid]];
}

.tiddler .subtitle a:hover {
    color: [[ColorPalette::SecondaryDark]];
    background: [[ColorPalette::Background]];
}

.tiddler .headingClear {
    clear: both;
}

.tiddler .viewer {
    padding: 5px 2.5% 16px 2.5%;
    width: 95%;
    margin: 0;
    line-height: 1.4em;
    overflow:hidden;
}

.viewer pre {
    margin-left: 0;
}


/* TOOLBAR */

/* ie hacks */
.toolbar .svgIconText {
    *display: inline;
}

* html .toolbar {
    right: 8px;
}

.tiddler .originButton div {
    display: inline-block;
}

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

.tiddler .originButton {
    display: block;
}

.originButton.highlight{
    background:transparent;
}

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

/* TOOLBAR */ 


div.toolbar {
    visibility:hidden;
    right: -6px;
    position: absolute;
    padding: 0;
    top: 10px;
    z-index: 1;
}

.selected div.toolbar {
    visibility: visible;
}

div.tiddler .toolbar a {
    cursor: pointer;
    float: left\9;
    display: inline\9;
}

div.tiddler .toolbar a.command_deleteTiddler{
    margin-right: 34px !important;
}

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

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

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

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

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

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

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


/*! EDITMODE */

.heading.editorHeading {
    margin: 2em 0 0 0;
    width: 100%;
    padding: 0;
}

.tiddler .editor {
    padding: 0px;
    margin: 0 2.5%;
}

.heading .editor input {
    width: 99%;
    padding: 2px 0.5%;
    font-size: 0.8em;
    margin-top:1em;
}

.tiddler .heading .editor.title {
    font-size: 1.7em;
    line-height: normal;
}

.editor input, .editor textarea {
    width: 99%;
    padding: 2px 0.5%;
    border: 2px solid [[ColorPalette::TertiaryPale]];
}

.tagTitle {
    position: absolute;
    text-align: right;
    padding-right: 10px;
    top: 0px;
    margin-left: -95px;
    width: 100px;
}

.tagAnnotation {
    margin: 8px 0 0 20px;
    padding-bottom: 8px;
}

.annotationsBox {
    padding: 0;
    margin: 0 2.2% 0 2.5%;
}

.annotationsBox  .annotation {
    margin: 0;
    padding: 3px 5px;
}

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

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


/* TAGGING */
.selected .tagging,
.selected .tagging:hover {
    border: none;
    background: none;
}
.tagging {
    float: none;
    background: none;
    border: none;
}

.tagInfo {
    color: [[ColorPalette::TertiaryMid]];
    background: [[ColorPalette::Dim]];
    margin: 0;
    padding: 0;
    font-size:0.9em;
}

.tagInfo .tidTags,
.tagInfo .tagging{
    font-size:1em;
    padding: 0 0 2px 0;
}

.tagInfo ul {
    list-style: none;
    padding-left: 10px;
}

.tagInfo ul li {
    display:inline-block;
    margin-top:3px;
}

.tagInfo ul li.listTitle,
.tagInfo .tagging ul li.listTitle {
    display:inline-block;
    width:60px;
    text-align: right;
    padding: 5px 5px 3px 0;
    text-align:right;
    color: [[ColorPalette::TertiaryLight]];
    margin:0;
}

.tagInfo .tagging ul li.listTitle + li {
   margin-top: -20px;
}

.tagInfo .tagging ul li {
    float: none;
    display: block;
    clear:left;
    margin-left: 65px;
}

.tagInfo .tagging ul li a {
    display:block;
}

.infoTags {
    padding: 3px 5px;
}

.infoTags .tidTags{
    max-width:75%;
}

.infoTags ul {
    padding-left:0;
}

/* POPUPS (/ SIDEBAR) */

.popup {
    padding:3px;
    border-color:transparent;
    background-color: [[ColorPalette::Background]];
    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;
    -webkit-box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5);
    -moz-box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5);
    box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.5);
}

.popup ul,
.popup li {
    margin:0;
    padding:0;
    list-style-type:none;
}

.popup.block a{
    display:block;
}

.popup.block br{
    display:none;
}

.popup a,
.popup li a,
.popup a.button {
    padding:3px;
    color: [[ColorPalette::SecondaryDark]];
    border:0;
}

.popup a :hover,
.popup li a:hover,
.popup a.button:hover,
a.popupbutton.highlight {
    color: [[ColorPalette::SecondaryMid]];
    background: transparent;
}

.popup li a.tiddlyLink {
    font-weight: bold;
}

.taggedTiddlerList li:last-child a.tiddlyLink{
    font-weight:normal;
}

.popup li.disabled,
.popup li.listTitle {
    border-bottom: 1px solid [[ColorPalette::TertiaryPale]];
    color: [[ColorPalette::TertiaryMid]];
    font-weight:normal;
    padding:7px 5px;
    margin: 0;
}

.popup .button{
    background:transparent;
}

.popup.confirmationPopup,
.followList {
    font-size: 0.8em;
    padding: 1em;
    border: 0;
}

.popup.confirmationPopup .button {
    border: 0;
    margin: 4px 4px 0 4px;
    display: inline-block;
}

.popup.confirmationPopup .button:hover {
    background:transparent;
    color:[[ColorPalette::SecondaryDark]];
}

.popup hr{
    color: transparent;
    background: transparent;
    border: 0;
    border-bottom: 1px solid #ccc;
}

.listBreak{
   border-bottom: 1px solid  [[ColorPalette::TertiaryPale]];;
}

.listBreak div{
   display:none;
}


/* REVISIONS */

.revButton {
    float: right;
}

.revisionCloak {
    position: absolute;
    position: fixed !important;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    border: 0;
    margin: 0;
    padding: 0;
    opacity: 0.5;
    filter: alpha(opacity=50);
    background-color: #000;
}

.viewRevision .toolbar {
    right: 48px;
    top: 8px;
}

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

.viewRevision .toolbar svg {
    width: 32px;
    height: 32px;
}


/* ACTIVITY */

#sidebarTabs .tabContents .activityStream .feedItem a {
    display: inline-block;
    padding: 0;
    background: none;
}


/* FOLLOWING */

.tiddler .followPlaceHolder {
    display: block;
    position: absolute;
    top: 58px;
    right: 60px;
    _right: 126px; // add width of modifierIcon
}

.followButton a {
    position: absolute;
    top: 0px;
    right: 0;
    display: block;
    margin: 0;
    padding: 6px 20px;
    background: transparent;
    text-align: center;
    color: [[ColorPalette::TertiaryMid]];
    display: block;
    margin-top: 0px;
}

.followButton a:hover {
    color: [[ColorPalette::TertiaryMid]];
    text-decoration: none;
}

.followButton.hasReplies a {
    font-weight:bold;
    color: [[ColorPalette::SecondaryMid]];
}

.followButton.hasReplies a:hover {
    color: [[ColorPalette::SecondaryDark]];
}


* html .followButton a {
    margin: 0px 8px 0 0;
}

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

/* the 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::TertiaryPale]];
}

.followList .listTitle {
    text-decoration: underline;
}

.followTiddlersList .label {
    display: block;
    left: 10px;
    top: 0px;
    line-height: 16px;
    position: relative;
}

.popup.followList {
    margin: 10px 0 0 -335px;
    max-width: 400px;
}

.popup .followTiddlersList a {
    display: inline;
    padding: 0;
}

.popup .followTiddlersList ul{
   margin:0;
   padding:0;
}

.popup .followTiddlersList li{
    position: relative;
    display: block;
    clear: both;
    margin-bottom: 8px;
}

.popup .followTiddlersList .siteIcon{
    height: auto;
    width: auto;
    margin-right:5px;
}


/* ICONS */

.titleBar .label {
    display: inline;
}

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

.tiddler .spaceSiteIcon {
    float: left;
    margin: 0 5px 0 0;
    position: relative;
    display: block;
}

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

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

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

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

.modifierIcon {
    position: absolute;
    width: 42px;
    top: 42px;
    right: 0;
    text-align: right;
}

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

.editSpaceSiteIcon .originButton {
    cursor: auto;
}

.editSpaceSiteIcon .originButton img,
.editSpaceSiteIcon .originButton svg {
    margin:  0 5px 5px 3px;
    width: 16px;
    height: 16px;
}

.editSpaceSiteIcon, .privacyEdit {
    float: left;
}

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

.tiddler .privacySettings {
    text-align: center;
}
.tiddler .privacySettings .originButton {
    display: inline;
}


/* BACKSTAGE */

#app-picker:hover{
    background-color:transparent;
}

#backstageToolbar {
    padding-left: 50px;
}

#backstageToolbar .backstageTask {
    background: transparent;
    color: [[ColorPalette::TertiaryPale]] !important;
}

#backstageArea a.backstageSelTab,
#backstageToolbar .backstageTask:hover {
    text-decoration:none;
    background: transparent;
    color: [[ColorPalette::Background]] !important;
}

/* MESSAGE AREA */

#messageArea {
    position: fixed;
    top: 0 !important;
    right: 0;
    width:350px;
    margin:0;
    padding:7px 1%;
    font-size:0.9em;
    border:1px solid [[ColorPalette::SecondaryMid]];
    background:[[ColorPalette::SecondaryPale]];
    -moz-border-radius:5px;
    -webkit-border-radius:5px;
    border-radius:3px;
}

#messageArea .messageToolbar {
    display:block;
    float:right;
    padding:0.1em;
    text-align:right;
    width:60px;
}

#messageArea a,
#messageArea .button {
    background:transparent;
    text-decoration:none;
    color:[[ColorPalette::TertiaryDark]];
    border:0;
}

#messageArea a:hover{
    color:black;
    border-bottom:1px solid [[ColorPalette::TertiaryDark]];
}

#backstageToolbar {
    text-align:center;
}

/* RESPONSIVE */

@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){
    #tiddlerDisplay,
    #searchResults {
        margin: 16px 366px 0 16px;
    }

    #mainMenu {
        margin-left: 16px;
    }

    #sidebarSearch,
    #sidebarOptions,
    #sidebarTabs {
        right: 16px;
        width: 326px;
    }

    #sidebarTabs .tabsetWrapper .tabset {
        font-size: 0.9em;
        width: 77px;
    }

    #sidebarTabs .tabsetWrapper .tabContents {
        width:auto;
        padding:0 0 0 5px;
    }

    #sidebarTabs .tabContents li a {
        font-size: 0.9em;
    }


     /* TIDDLER */

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

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

    br {
        line-height: 0.5em;
    }
}


/* PRINT */

@media print {
    #mainMenu,
    #sidebar,
    #messageArea,
    .toolbar,
    .followPlaceHolder,
    #backstageButton,
    #backstageArea,
    #sidebarTabs,
    #sidebarSearch .txtOptionInput,
    #sidebarOptions {
        display: none !important;
    }
    #displayArea {
        margin: 1em 1em 0em;
    }

    #tiddlerDisplay {
        margin: 16px 16px;
    }

    /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
    noscript {
        display:none;
    }
}

[[StyleSheet]]

/*}}}*/
/***
|Name|WikifyPlugin|
|Source|http://www.TiddlyTools.com/#WikifyPlugin|
|Documentation|http://www.TiddlyTools.com/#WikifyPluginInfo|
|Version|1.2.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|insert sections, slices, fields, literals, or computed values into a wiki-format output|
!!!!!Documentation
> see [[WikifyPluginInfo]]
!!!!!Revisions
<<<
2011.03.07 1.2.0 added handling in getFieldReference() for retrieving section values
|please see [[WikifyPluginInfo]] for additional revision details|
2007.06.22 1.0.0 initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.WikifyPlugin= {major: 1, minor: 2, revision: 0, date: new Date(2011,3,7)};

config.macros.wikify={
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var fmt=params.shift();
		var values=[];
		var out="";
		if (!fmt.match(/\%[0-9]/g) && params.length) // format has no markers, just join all params with spaces
			out=fmt+" "+params.join(" ");
		else { // format param has markers, get values and perform substitution
			while (p=params.shift()) values.push(this.getFieldReference(place,p));
			out=fmt.format(values);
		}
		if (macroName=="wikiCalc") out=eval(out).toString();
		wikify(out.unescapeLineBreaks(),place,null,tiddler);
	},
	getFieldReference: function(place,p) {
		if (typeof p != "string") return p; // literal non-string value... just return it...

		var val=undefined;
		var here=story.findContainingTiddler(place);
		var current=here?here.getAttribute('tiddler'):'';

		// SLICES: "::slicename" OR "here::slicename" OR "tiddlername::slicename"
		var parts=p.split(config.textPrimitives.sliceSeparator);
		var tid=parts[0]; var slice=parts[1];
		if (slice) { // slice reference
			if (!tid || !tid.length || tid=="here") tid=current;
			var val=store.getTiddlerSlice(tid,slice);
		}

		// SECTIONS: "##sectionname" OR "here##sectionname" OR "tiddlername##sectionname"
		if (!slice) {
			var parts=p.split(config.textPrimitives.sectionSeparator);
			var tid=parts[0]; var section=parts[1];
			if (section) {
				if (!tid || !tid.length || tid=="here") tid=current;
				var val=store.getTiddlerText(tid+config.textPrimitives.sectionSeparator+section);
			}
		}

		// FIELDS: "fieldname" OR "fieldname@tiddlername"
		if (!slice && !section) {
			var parts=p.split("@");
		 	var field=parts[0]; var tid=parts[1];
			if (!tid || !tid.length || tid=="here") tid=current;
			var val=store.getValue(tid,field);
		}

		// not a slice, section or field, or value not found... return value unchanged
		return val===undefined?p:val;
	}
}
//}}}
//{{{
// define alternative macroName for triggering pre-rendering call to eval()
config.macros.wikiCalc=config.macros.wikify;
//}}}
/***
|''Navn:''|danish|
|''Beskrivelse:''|Translation of TiddlyWiki into Danish|
|''Forfatter:''|Måns Mårtensson (humamamm (at) gmail (dot) com)|
|''Kilde:''|danish.tiddlyspace.com |
|''CodeRepository:''|http://svn.tiddlywiki.org/Trunk/association/locales/core/en/locale.en.js |
|''Version:''|0.3.7|
|''Dato:''|Jul 6, 2007|
|''Kommentarer:''|Kontakt venligst oversætteren i tilfælde af korrektioner |
|''Licens:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]] |
|''~CoreVersion:''|2.4|
***/

//{{{
//--
//-- Translateable strings
//--

// Strings in "double quotes" should be translated; strings in 'single quotes' should be left alone

config.locale = "da"; // W3C language tag

if (config.options.txtUserName == 'YourName') // do not translate this line, but do translate the next line
	merge(config.options,{txtUserName: "DitNavn"});

merge(config.tasks,{
	save: {text: "gem", tooltip: "Gem dine ændringer til denne TiddlyWiki", action: saveChanges},
	sync: {text: "synk", tooltip: "Synkronisér ændringer med andre TiddlyWiki filer og servere", content: '<<sync>>'},
	importTask: {text: "importér", tooltip: "Importér tiddlers og plugins fra andre TiddlyWiki filer og servere", content: '<<importTiddlers>>'},
	tweak: {text: "Tilpas", tooltip: "Tilpas TiddlyWikis udseende og opførsel", content: '<<options>>'},
	upgrade: {text: "upgradér", tooltip: "Upgrader TiddlyWikis kerne kode", content: '<<upgrade>>'},
	plugins: {text: "udvidelser", tooltip: "Administrér installerede udvidelser", content: '<<plugins>>'}
});

// Options that can be set in the options panel and/or cookies
merge(config.optionsDesc,{
	txtUserName: "Brugernavn til signering af dine ændringer",
	chkRegExpSearch: "Avend almindelige udtryk til søgninger",
	chkCaseSensitiveSearch: "Forskel på store og små bogstaver",
	chkIncrementalSearch: "Bogstav for bogstav-søgning",
	chkAnimate: "Anvend animationer",
	chkSaveBackups: "Gem en backupfil når der gemmes ændringer",
	chkAutoSave: "Gem automatisk ændringer",
	chkGenerateAnRssFeed: "Lav et RSS feed når der gemmes ændringer",
	chkSaveEmptyTemplate: "Lav en tom skabelon når der gemmes ændringer",
	chkOpenInNewWindow: "Åben internet links i et nyt vindue",
	chkToggleLinks: "Når man klikker på et link i åbne tiddlers lukkes de",
	chkHttpReadOnly: "Skjul redigeringsværktøjer når den vises over HTTP",
	chkForceMinorUpdate: "Opdatér ikke brugernavn og dato når tiddlers bliver ændrede",
	chkConfirmDelete: "Bed om bekræftelse før tiddlers slettes",
	chkInsertTabs: "Brug tab tasten til at indsætte tab tegn istedet for at hoppe imellem felter",
	txtBackupFolder: "Navn på mappe til brug for backups",
	txtMaxEditRows: "Maximum antal af rækker i edit bokse",
	txtFileSystemCharSet: "Default tegnsæt til at gemme ændringer (Kun i Firefox/Mozilla)"});

merge(config.messages,{
	customConfigError: "Der opstod problemer ved loading af udvidelser. Se PluginManager for detaljer",
	pluginError: "Fejl: %0",
	pluginDisabled: "Ikke udført fordi det er slået fra via 'systemConfigDisable' tag",
	pluginForced: "Udført fordi det er tvunget via 'systemConfigForce' tag",
	pluginVersionError: "Ikke udført fordi denne udvidelse kræver en nyere udgave af TiddlyWiki",
	nothingSelected: "Intet er valgt. Du er nødt til at vælge en eller flere ting først",
	savedSnapshotError: "Det ser ud som om denne TiddlyWiki er blevet gemt forkert. Se venligst http://www.tiddlywiki.com/#DownloadSoftware for details",
	subtitleUnknown: "(ukendt)",
	undefinedTiddlerToolTip: "Tiddleren '%0' findes ikke endnu",
	shadowedTiddlerToolTip: "Tiddleren '%0' findes ikke endnu, men har en foruddefineret skygge værdi",
	tiddlerLinkTooltip: "%0 - %1, %2",
	externalLinkTooltip: "Internet link til %0",
	noTags: "Der er ingen taggede tiddlere",
	notFileUrlError: "Du er nødt til at gemme denne TiddlyWiki til en fil før du kan gemme ændringer",
	cantSaveError: "Det er ikke muligt at gemme ændringer. Mulige grunde indbefatter:\n- din browser understøtter det ikke (Firefox, Internet Explorer, Safari og Opera virker alle fint hvis de er konfigurerede korrekt)\n- stien til din TiddlyWiki fil indeholder ulovlige tegn\n- TiddlyWiki HTML filen er blevet flyttet eller omdøbt",
	invalidFileError: "Den originale fil '%0' lader ikke til at være en rigtig TiddlyWiki",
	backupSaved: "Backup gemt",
	backupFailed: "Det lykkedes IKKE at gemme en backup fil",
	rssSaved: "RSS feed gemt",
	rssFailed: "Det lykkedes IKKE at gemme et RSS feed",
	emptySaved: "Tom skabelon gemt",
	emptyFailed: "Det lykkedes IKKE at gemme en tom skabelon",
	mainSaved: "Hoved TiddlyWiki fil gemt",
	mainFailed: "Det lykkedes IKKE at gemme hoved TiddlyWiki filen. Dine ændringer er IKKE blevet gemt",
	macroError: "Fejl i makro <<\%0>>",
	macroErrorDetails: "Fejl ved udførsel af makro <<\%0>>:\n%1",
	missingMacro: "Ingen sådan makro",
	overwriteWarning: "En tiddler med navnet '%0' findes allerede. Vælg OK for at overskrive den",
	unsavedChangesWarning: "ADVARSEL! Der er ugemte ændringer i TiddlyWikien\n\nVælg OK for at gemme\nVælg FORTRYD for at afvise",
	confirmExit: "--------------------------------\n\nDer er ugemte ændringer i TiddlyWikien. Hvis du fortsætter vil du miste disse ændringer\n\n--------------------------------",
	saveInstructions: "GemÆndringer",
	unsupportedTWFormat: "Ikke understøttet TiddlyWiki format '%0'",
	tiddlerSaveError: "Fejl ved forsøg på at gemme tiddler '%0'",
	tiddlerLoadError: "Fejl ved load af tiddler '%0'",
	wrongSaveFormat: "Kan ikke gemme med formatet '%0'. Bruger standard format til at gemme.",
	invalidFieldName: "Ikke tilladt feltnavn %0",
	fieldCannotBeChanged: "Felt '%0' kan ikke ændres",
	loadingMissingTiddler: "Forsøger at hente tiddleren '%0' fra '%1' serveren ved:\n\n'%2' i arbejdsområdet '%3'",
	upgradeDone: "Opgradering til version %0 er nu fuldført\n\nKlik 'OK' for at genopfriske den nyligt opgraderede TiddlyWiki"});

merge(config.messages.messageClose,{
	text: "luk",
	tooltip: "luk dette meddelelsesområde"});

config.messages.backstage = {
	open: {text: "-", tooltip: "Åben bagsceneområdet for at ændre på nogle grundlæggende indstillinger"},
	close: {text: "luk", tooltip: "Luk bagsceneområdet"},
	prompt: "-",
	decal: {
		edit: {text: "edit", tooltip: "Redigér tiddleren '%0'"}
	}
};

config.messages.listView = {
	tiddlerTooltip: "Klik for at se hele denne tiddlers tekst",
	previewUnavailable: "(forhåndsvisning er ikke tilgængelig)"
};

config.messages.dates.months = ["Januar", "Februar", "Marts", "April", "Maj", "Juni", "Juli", "August", "September", "Oktober", "November","December"];
config.messages.dates.days = ["Søndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "Lørdag"];
config.messages.dates.shortMonths = ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"];
config.messages.dates.shortDays = ["Søn", "Man", "Tir", "Ons", "Tor", "Fre", "Lør"];
// suffixes for dates, eg "1ste","2den","3die"..."30te","31te"
config.messages.dates.daySuffixes = ["ste","den","die","te","te","te","te","te","te","te",
		"te","te","te","te","te","te","te","te","te","te",
		"ste","den","die","te","te","te","te","te","te","te",
		"te"];
config.messages.dates.am = "formiddag";
config.messages.dates.pm = "eftermiddag";

merge(config.messages.tiddlerPopup,{
	});

merge(config.views.wikified.tag,{
	labelNoTags: "ingen tags",
	labelTags: "tags: ",
	openTag: "Åben tag '%0'",
	tooltip: "Vis tiddlere der er taggede med '%0'",
	openAllText: "Åben alle",
	openAllTooltip: "Åben alle disse tiddlere",
	popupNone: "Ingen andre tiddlere er taggede med '%0'"});

merge(config.views.wikified,{
	defaultText: "Tiddleren '%0' findes ikke endnu. Dobbelt-klik for at lave den",
	defaultModifier: "(mangler)",
	shadowModifier: "(indbygget skygge tiddler)",
	dateFormat: "DD MMM YYYY", // use this to change the date format for your locale, eg "YYYY MMM DD", do not translate the Y, M or D
	createdPrompt: "lavet"});

merge(config.views.editor,{
	tagPrompt: "Skriv tags delt med mellemrum, [[brug 2 dobbelte firkantede klammer]] om nødvendigt, eller tilføj allerede eksisterende",
	defaultText: "Skriv teksten til '%0'"});

merge(config.views.editor.tagChooser,{
	text: "tags",
	tooltip: "Vælg eksisterende tags som tilføjelse til denne tiddler",
	popupNone: "Der er ikke defineret nogen tags",
	tagTooltip: "Tilføj tagget '%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: "søg",
	prompt: "Søg i denne TiddlyWiki",
	accessKey: "F",
	successMsg: "Der er fundet %0 tiddlere som matcher %1",
	failureMsg: "Der er ikke fundet nogen tiddlere som matcher %0"});

merge(config.macros.tagging,{
	label: "tagger: ",
	labelNotTag: "tagger ikke",
	tooltip: "Liste over tiddlere der er taggede med '%0'"});

merge(config.macros.timeline,{
	dateFormat: "DD MMM YYYY"});// use this to change the date format for your locale, eg "YYYY MMM DD", do not translate the Y, M or D

merge(config.macros.allTags,{
	tooltip: "Vis tiddlere der er taggede med '%0'",
	noTags: "Der er ingen taggede tiddlere"});

config.macros.list.all.prompt = "Alle tiddlere i alfabetisk orden";
config.macros.list.missing.prompt = "Tiddlere der linkes til men som ikke er definerede";
config.macros.list.orphans.prompt = "Tiddlere som der ikke linkes til fra nogen andre tiddlere";
config.macros.list.shadowed.prompt = "Tiddlere som er skyggede med grundlæggende indhold";
config.macros.list.touched.prompt = "Tiddlere som er blevet ændret lokalt ";

merge(config.macros.closeAll,{
	label: "luk alle",
	prompt: "Luk alle viste tiddlere (undtaget dem som er ved at blive redigerede)"});

merge(config.macros.permaview,{
	label: "vis permalink",
	prompt: "Lav et link til en URL som henter alle de netop nu synlige tiddlere"});

merge(config.macros.saveChanges,{
	label: "gem ændringer",
	prompt: "Gem alle tiddlere for at lave en ny TiddlyWiki",
	accessKey: "S"});

merge(config.macros.newTiddler,{
	label: "ny tiddler",
	prompt: "Lav en ny tiddler",
	title: "Ny Tiddler",
	accessKey: "N"});

merge(config.macros.newJournal,{
	label: "ny journal",
	prompt: "Lav en ny tiddler ud fra nuværende dato og tid",
	accessKey: "J"});

merge(config.macros.options,{
	wizardTitle: "Tilpas avancerede muligheder",
	step1Title: "Disse muligheder gemmes i cookies i din browser",
	step1Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='false' name='chkUnknown'>Vis ukendte muligheder</input>",
	unknownDescription: "//(ukendt)//",
	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: "Administrer udvidelser",
	step1Title: "Aktive udvidelser",
	step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
	skippedText: "(Denne udvidelse er ikke blevet aktiveret fordi den først er blevet tilføjet efter start)",
	noPluginText: "Der er ikke installeret nogen udvidelser",
	confirmDeleteText: "Er du sikker på at du vil slette disse udvidelser:\n\n%0",
	removeLabel: "Fjern systemConfig tag",
	removePrompt: "Fjern systemConfig tag",
	deleteLabel: "slet",
	deletePrompt: "Slet disse tiddlere permanent",
	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: '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: "mere",
	morePrompt: "Vis flere muligheder"
	});

merge(config.macros.refreshDisplay,{
	label: "genopfrisk",
	prompt: "Genopfrisk TiddlyWikiens udseende"
	});

merge(config.macros.importTiddlers,{
	readOnlyWarning: "Du kan ikke importere til en låst TiddlyWiki fil. Prøv at åbne den fra en fil:// URL",
	wizardTitle: "Importer tiddlere fra en anden fil eller server",
	step1Title: "Trin 1: Find serveren eller TiddlyWiki filen",
	step1Html: "Vælg servertypen: <select name='selTypes'><option value=''>Choose...</option></select><br>Indskriv webadresse eller sti her: <input type='text' size=50 name='txtPath'><br>...eller søg efter en fil: <input type='file' size=50 name='txtBrowse'><br><hr>...eller vælg et forudbestemt feed: <select name='selFeeds'><option value=''>Vælg...</option></select>",
	openLabel: "åbn",
	openPrompt: "Åbn forbindelsen til denne fil eller server",
	openError: "Der var problemer med at hente tiddlywiki filen",
	statusOpenHost: "Forbinder til hosten",
	statusGetWorkspaceList: "Henter en liste over tilgængelige arbejdsområder",
	step2Title: "Trin 2: Vælg arbejdsområde",
	step2Html: "Indskriv et navn på arbejdsområdet: <input type='text' size=50 name='txtWorkspace'><br>...eller vælg et der allerede er der: <select name='selWorkspace'><option value=''>Choose...</option></select>",
	cancelLabel: "fortryd",
	cancelPrompt: "Fortryd denne import",
	statusOpenWorkspace: "Åben arbejdsområdet",
	statusGetTiddlerList: "Henter listen over tilgængelige tiddlere",
	errorGettingTiddlerList: "Fejl ved hentning af liste over tiddlere, klik Fortryd for at prøve igen",
	step3Title: "Trin 3: Vælg hvilke tiddlere der skal importeres",
	step3Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='true' name='chkSync'>Hold disse tiddlere linket til denne server så du kan synkronisere efterfølgende ændringer</input><br><input type='checkbox' name='chkSave'>Gem detaljerne for denne server i en 'systemServer' tiddler kaldet:</input> <input type='text' size=25 name='txtSaveTiddler'>",
	importLabel: "importer",
	importPrompt: "Importer disse tiddlere",
	confirmOverwriteText: "Er du sikker på at du vil overskrive disse tiddlere:\n\n%0",
	step4Title: "Trin 4: Importerer %0 tiddler(e)",
	step4Html: "<input type='hidden' name='markReport'></input>", // DO NOT TRANSLATE
	doneLabel: "udført",
	donePrompt: "Luk denne wizard",
	statusDoingImport: "Importerer tiddlere",
	statusDoneImport: "Alle tiddlere er importede",
	systemServerNamePattern: "%2 on %1",
	systemServerNamePatternNoWorkspace: "%1",
	confirmOverwriteSaveTiddler: "Tiddleren '%0' findes allerede. Klik 'OK' for at overskrive den med detaljerne fra denne server, eller 'Fortryd' for at efterlade uændret",
	serverSaveTemplate: "|''Type:''|%0|\n|''URL:''|%1|\n|''Workspace:''|%2|\n\nDenne tiddler blev lavet automatisk for at skrive denne servers detaljer",
	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: "Opgrader TiddlyWikis kerne kode",
	step1Title: "Opdater eller reparer denne TiddlyWiki til sidste nye udgivelse",
	step1Html: "Du er ved at opgradere til sidste nye udgave af TiddlyWikis kerne kode (from <a href='%0' class='externalLink' target='_blank'>%1</a>). Dit indhold vil blive bibeholdt under opgraderinen.<br><br>Bemærk at opgraderinger kan konfikte med gamle udvidelser. Hvis du får problemer med den opgraderede fil se her <a href='http://www.tiddlywiki.org/wiki/CoreUpgrades' class='externalLink' target='_blank'>http://www.tiddlywiki.org/wiki/CoreUpgrades</a>",
	errorCantUpgrade: "Kan ikke opgradere denne TiddlyWiki. Du kan kun opgradere en TiddlyWiki fil som er gemt lokalt på en pc",
	errorNotSaved: "Du skal gemme ændringer før du kan gennemføre en opgradering",
	step2Title: "Bekræft opgraderingsdetaljer",
	step2Html_downgrade: "Du er ved at nedgradere til TiddlyWiki version %0 fra %1.<br><br>Nedgradering til en ældre udgave af kerne koden er IKKE tilrådeligt",
	step2Html_restore: "Denne tiddlyWike bruger allerede den sidste nye kerne kode (%0).<br><br>Du kan fortsætte med opgraderingen for at sikre dig at koden ikke er blevet ødelagt",
	step2Html_upgrade: "Du er ved at opgradere til TiddlyWiki version %0 fra %1",
	upgradeLabel: "opgrader",
	upgradePrompt: "Forbered opgraderingsprocessen",
	statusPreparingBackup: "Forbereder backup",
	statusSavingBackup: "Gemmer backup fil",
	errorSavingBackup: "Der var problemer med at gemme backup filen",
	statusLoadingCore: "Loader kernekoden",
	errorLoadingCore: "Fejl ved load af kernekoden",
	errorCoreFormat: "Fejl ved den nye kernekode",
	statusSavingCore: "Gemmer den nye kernekode",
	statusReloadingCore: "Genloader den nye kernekode",
	startLabel: "start",
	startPrompt: "Start opgraderingsprocessen",
	cancelLabel: "fortryd",
	cancelPrompt: "Fortryd opgraderingsprocessen",
	step3Title: "Opgradering afbrudt",
	step3Html: "Du har afbrudt opgraderingsprocessen"
	});

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: "Synkronisér disse tiddlere", name: 'sync'}
			]},
	wizardTitle: "Synkroniser med internet servere og filer",
	step1Title: "Vælg hvilke tiddlere du vil synkronisere",
	step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
	syncLabel: "synk",
	syncPrompt: "Synkronisér disse tiddlere",
	hasChanged: "Ændret imens den var koblet fra",
	hasNotChanged: "Uændret imens den var koblet fra",
	syncStatusList: {
		none: {text: "...", color: "gennemsigtig", display:null},
		changedServer: {text: "Ændret på serveren", color: '#8080ff', display:null},
		changedLocally: {text: "Ændret imens den var koblet fra", color: '#80ff80', display:null},
		changedBoth: {text: "ændret imens den var koblet fra også på serveren", color: '#ff8080', display:null},
		notFound: {text: "Ikke fundet på serveren", color: '#ffff80', display:null},
		putToServer: {text: "Gemt update på serveren", color: '#ff80ff', display:null},
		gotFromServer: {text: "Hentet update fra serveren", color: '#80ffff', display:null}
		}
	});

merge(config.commands.closeTiddler,{
	text: "luk",
	tooltip: "Luk denne tiddler"});

merge(config.commands.closeOthers,{
	text: "luk andre",
	tooltip: "Luk alle andre tiddlere"});

merge(config.commands.editTiddler,{
	text: "redigér",
	tooltip: "Redigér denne tiddler",
	readOnlyText: "se",
	readOnlyTooltip: "Se denne tiddlers kilde"});

merge(config.commands.saveTiddler,{
	text: "færdig",
	tooltip: "Gem ændringer til denne tiddler"});

merge(config.commands.cancelTiddler,{
	text: "fortryd",
	tooltip: "Fortryd ændringer til denne tiddler",
	warning: "Er du sikker på at du vil fortryde dine ændringer til  '%0'?",
	readOnlyText: "færdig",
	readOnlyTooltip: "Se tiddlere normalt"});

merge(config.commands.deleteTiddler,{
	text: "slet",
	tooltip: "Slet denne tiddler",
	warning: "Er du sikker på at du vil slette '%0'?"});

merge(config.commands.permalink,{
	text: "permalink",
	tooltip: "Permalink til denne tiddler"});

merge(config.commands.references,{
	text: "referencer",
	tooltip: "Vis tiddlere som linker til denne tiddler",
	popupNone: "Ingen referencer"});

merge(config.commands.jump,{
	text: "spring",
	tooltip: "Spring til en anden tiddler"});

merge(config.commands.syncing,{
	text: "synkroniserer",
	tooltip: "Kontroller synkronisering af denne tiddler med en server eller en fil",
	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: "Sykroniserer ikke lige nu",
	captionUnSync: "Stop synkronisering af denne tiddler",
	chooseServer: "Synkronisér denne tiddler med en anden server:",
	currServerMarker: "\u25cf ",
	notCurrServerMarker: "  "});

merge(config.commands.fields,{
	text: "felter",
	tooltip: "Vis denne tiddlers udvidede felter",
	emptyText: "Der er ingen udvidede felter til rådighed for denne 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: "[[Kom i gang]]",
	MainMenu: "[[Kom i gang]]\n\n\n^^~TiddlyWiki version <<version>>\n© 2007 [[UnaMesa|http://www.unamesa.org/]]^^",
	"Kom i gang": "For at komme i gang med denne tomme tiddlywiki, skal du ændre på de følgende tiddlere:\n* SiteTitle & SiteSubtitle: Sidens titel og undertitel, som vist øverst (efter de er gemt, vil de også vise sig i browserens titelmenu)\n* MainMenu: er hovedmenuen (oftest placeret til venstre)\n* DefaultTiddlers: Indeholder navnene på de tiddlere du vil have skal starte op når du åbner TiddlyWiki\nDu skal også skrive dit brugernavn for at signere dine redigeringer: <<option txtUserName>>\nHvis du ikke bryder dig om farvesammensætningen, klik da på \n<<RandomColorPaletteButton>> for at generere et nyt tilfældigt farve skema.",
	SiteTitle: "Min TiddlyWiki",
	SiteSubtitle: "en genbrugelig ikke-liniær personlig web notesbog",
	SiteUrl: "http://www.tiddlywiki.com/",
	OptionsPanel: "Disse muligheder for at ændre på TiddlyWiki bliver gemt i din browser\n\nDit brugernavn til at signere dine ændringer. Skriv det som et WikiOrd (f.eks. PerPoulsen)\n<<option txtUserName>>\n\n<<option chkSaveBackups>> Gem backups\n<<option chkAutoSave>> Gem automatisk\n<<option chkRegExpSearch>> Regexp search\n<<option chkCaseSensitiveSearch>> Søg på store og små bogstaver\n<<option chkAnimate>> Tillad animationer\n\n----\nSe også [[AvanceredeMuligheder|AdvancedOptions]]",
	SideBarOptions: '<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "muligheder \u00bb" "Skift TiddlyWikis avancerede muligheder">>',
	SideBarTabs: '<<tabs txtMainTab "Tidslinie" "Tidslinie" TabTimeline "Alle" "Alle tiddlere" TabAll "Tags" "Alle tags" TabTags "Flere" "Flere lister" TabMore>>',
	TabMore: '<<tabs txtMoreTab "Mangler" "Manglende tiddlere" TabMoreMissing "Uden tilknytning" "Tiddlere" TabMoreOrphans "Skygger" "Skyggede tiddlere" TabMoreShadowed>>'
	});

merge(config.annotations,{
	AdvancedOptions: "Denne skygge tiddler giver adgang til flere avancerede muligheder",
	ColorPalette: "Disse værdier i denne skyggetiddler bestemmer hvilket farveskema, der bliver brugt til ~TiddlyWikis brugerflade",
	DefaultTiddlers: "Tiddlere som er listede i denne skyggetiddler vil automatisk blive vist når ~TiddlyWiki starter op",
	EditTemplate: "HTML skabelonen i denne skyggetiddler bestemmer hvordan tiddlere ser ud når de bliver redigerede",
	GettingStarted: "Denne skyggetiddler giver instruktioner om grundlæggende anvendelse",
	ImportTiddlers: "Denne skyggetiddler giver mulighed for at importere tiddlere",
	MainMenu: "Denne tiddler bliver brugt til at definere indholdet af hoved menuen i venstre side af skærmen",
	MarkupPreHead: "Denne tiddler bliver indsat i toppen af <head> sektionen på TiddlyWiki HTML filen",
	MarkupPostHead: "Denne tiddler bliver indsat i bunden af <head> sektionen på TiddlyWiki HTML filen",
	MarkupPreBody: "Denne tiddler bliver indsat i toppen af<body> sektionen på TiddlyWiki HTML filen",
	MarkupPostBody: "Denne tiddler bliver indsat i slutningen af  <body> sektionen på TiddlyWiki HTML filen umiddelbart efter script blokken",
	OptionsPanel: "Denne skyggetiddler bliver brugt til indholdet af muligheder skydepanelet i højre side",
	PageTemplate: "HTML skabelonen i denne skyggetiddler bestemmer det overordnede ~TiddlyWiki layout",
	PluginManager: "Denne skyggetiddler giver adgang til udvidelsesadministrationen",
	SideBarOptions: "Denne skyggetiddler bruges til indholdet af muligheder panelet i højre sidemenu",
	SideBarTabs: "Denne skyggetiddler bruges til indholdet af fanebladspanelet i højre sidemenu",
	SiteSubtitle: "Denne skyggetiddler bruges som anden del af sidens titel",
	SiteTitle: "Denne skyggetiddler bruges som første del af sidens titel",
	SiteUrl: "Denne skyggetiddler bør sættes til den fulde mål-URL til publikation",
	StyleSheetColors: "Denne skyggetiddler indeholder CSS definitionerne der bestemmer farverne på side elementerne. ''REDIGÉR IKKE DENNE TIDDLER'', lav i stedet dine ændringer i StyleSheet skyggetiddleren",
	StyleSheet: "Denne tiddler kan indeholde specielle CSS definitioner",
	StyleSheetLayout: "Denne skyggetiddler indeholder CSS definitioner der bestemmer layoutet på side elementer. ''REDIGÉR IKKE DENNE TIDDLER'', lav i stedet dine ændringer i StyleSheet skyggetiddleren",
	StyleSheetLocale: "Denne skyggetiddler indeholder CSS definitioner relateret til lokale oversættelser",
	StyleSheetPrint: "Denne skyggetiddler indeholder CSS definitioner til print",
	TabAll: "Denne skyggetiddler indeholder hvad der er i 'Alle' fanen i højre sidemenu",
	TabMore: "Denne skyggetiddler indeholder  hvad der er i 'Flere' fanen i højre sidemenu",
	TabMoreMissing: "Denne skyggetiddler indeholder  hvad der er i 'Mangler' fanen i højre sidemenu",
	TabMoreOrphans: "Denne skyggetiddler indeholder  hvad der er i  'Mangler tilknytning' fanen i højre sidemenu",
	TabMoreShadowed: "Denne skyggetiddler indeholder  hvad der er i 'Skyggede' fanen i højre sidemenu",
	TabTags: "Denne skyggetiddler indeholder  hvad der er i 'Tags' fanen i højre sidemenu",
	TabTimeline: "Denne skyggetiddler indeholder hvad der er i 'Tidslinie' fanen i højre sidemenu",
	ToolbarCommands: "Denne skyggetiddler bestemmer hvilke værktøjer der vises i tiddleres værktøjslinier",
	ViewTemplate: "HTML skabelonen i denne skyggetiddler bestemmer hvordan tiddlere ser ud"
	});

//}}}
<<tiddler fET##show with: systemConfig 5 of [[tiddlers tagged with]]>>
/%
!usage
<<tiddler fET##show with: tag "number of lines" "of (how many)" [[notification]]>>
!show
 <<forEachTiddler
    where
        'tiddler.tags.contains("$1")'
    sortBy
        tiddler.modified
    descending

    script '
        window.fetItemsPerPage = $2;

        function getHeader(context,count) {
            if (!window.fetStartIndex || window.fetStartIndex < 0)
                window.fetStartIndex = 0;

            // ensure not to page behind the last page
            if (window.fetStartIndex >= count)
                window.fetStartIndex = Math.min(Math.max(window.fetStartIndex-window.fetItemsPerPage,0),count-1);

            createTiddlyButton(context.place,"<",null,
                    function(e) {
                        window.fetStartIndex -= window.fetItemsPerPage;
                        story.refreshTiddler(context.viewerTiddler.title,null,true);
                    });
            createTiddlyButton(context.place,">",null,
                    function(e) {
                        window.fetStartIndex += window.fetItemsPerPage;
                        story.refreshTiddler(context.viewerTiddler.title,null,true);
                    });

            var startNo = window.fetStartIndex+1;
            var endNo = Math.min(count,window.fetStartIndex+window.fetItemsPerPage);

            return "("+startNo+" - "+endNo+ " $3  "+ count + " $4 <<tag $1\>\>)\n\n";
        }
    '

    write
            '(index >= window.fetStartIndex) && (index < window.fetStartIndex + $2) ? ""+tiddler.created.formatString("DD MMM YYYY")+"\n [["+tiddler.title+"]]\n\n" : ""'

        begin
            'getHeader(context,count)'
>>
!end %/
<<tiddler Skabelon with:musik>>
Tiddleren 'transclusion' findes ikke endnu. Dobbelt-klik for at lave den
/***
|''Name:''|twyp|
|''Description:''|search, play and associate youtube videos|
|''Author:''|Tobias Beer|
|''Version:''|0.9.7 (2010-10-25)|
|''Status:''|beta|
|''Source:''|http://twyp.tiddlyspace.com/#twyp|
|''Documentation:''|http://tobibeer.tiddlyspace.com/#twYp|
|''Readable source:''|http://tbsource.tiddlyspace.com/#twyp|
|''Requires:''|TW Version 2.5.3 or better|
!Example
{{{
<<twyp>>
}}}
<<twyp>>
!Code
***/
//{{{
(function(a){window.twyp={maxSearch:6,maxRelated:10,maxUser:10,vidWidth:380,vidHeight:320,restrictTo:"",field:"youtube",txtRelated:"Related",txtUser:"Best rated videos by ",txtPage:"Go to page ",lblShow:"Play %0",tipShow:"Click to play %0",lblHide:"Close video",tipHide:"Click to close video player",txtInfo:"by %0 | viewed: %1 | favourited: %2 | published: %3",txtRating:"rating: ",txtDuration:"duration: ",txtSearch:"-search-",lblSearch:"Please enter a search-term...",txtTag:"-category/tag-",lblTag:"Please enter a category or tag filter to constrain the search results by...",twypTemplate:"twyp##TEMPLATE",fmtSlider:'<<slider chk%0 twyp##TEMPLATE "Search videos" "Search videos on youtube and add one to the tiddler">>',fmtPlayer:'<h2><a class="tiddlyLinkExisting" href="#" title="add to current tiddler (hold CTRL to skip the prompt and use the title as is)" rel="%0">%1</a></h2> <object width="%2" height="%3"> <param name="movie" value="%0%4&fs=1&format=5&iv_load_policy=3&enablejsapi=1&playerapiid=%5"/> <param name="allowFullScreen" value="true" /> <param name="iv_load_policy" value="3" /> <param name="wmode" value="transparent" /> <param name="allowScriptAccess" value="always"> <embed src="%0%4&format=5&fs=1&iv_load_policy=3&enablejsapi=1&playerapiid=%5" 	type="application/x-shockwave-flash" 	allowscriptaccess="always" 	wmode="transparent" 	width="%2" height="%3" 	allowfullscreen="true"> </embed></object>',relRelated:"http://gdata.youtube.com/schemas/2007#video.related",mimeFlash:"application/x-shockwave-flash",feeds:"http://gdata.youtube.com/feeds/standardfeeds/",mapQuery:{rated:"top_rated",recent:"most_recent",popular:"most_popular",respond:"most_responded",discuss:"most_discussed",featured:"recently_featured",all:"videos"},usrSuffix:"/uploads",activeTwyp:null,shadows:[],appendScript:function(c,e,d){a("#"+e).remove();a("head").append(a("<script>").attr({src:c+"&alt=json-in-script&callback="+d,id:e,type:"text/javascript"}))},findHref:function(f,c){var e,d;for(e=0;d=f.link[e];e++){if(d.rel==c){return d.href}}return null},findMediaHref:function(g,f){var e,j,h,d;for(e=0;j=g.media$group.media$content[e];e++){if(j.type==f){d=j.url;h=d.indexOf("?");return h<1?d:d.substr(0,h)}}alert("?!?");return null},getResults:function(f,k,m){var j,d,i=1,h=a(f).closest(".twyp"),g=a(f).closest("[tiddler]"),e=twyp.activeTwyp=g.attr("twyp"),l=m;l=l!=""&&l!=twyp.txtSearch?l:"";if(k){j=f.category.value;j=j!=""&&j!=twyp.txtTag?"&category="+j:"";h.attr({id:e,field:g.attr("field"),search:l,cat:j,query:k})}else{l=h.attr("search");j=h.attr("cat");k=h.attr("query");i=parseInt(a(f).attr("page"))}d=twyp.feeds+twyp.mapQuery[k];if(k=="all"){d=d.replace("standardfeeds/","")}d+="?prettyprint=true&restriction="+twyp.restrictTo+"&max-results="+twyp.maxSearch+"&start-index="+(((i-1)*twyp.maxSearch)+1)+(l==""?"":"&vq="+l)+(j?j:"");twyp.appendScript(d,"twypResults","twyp.cbResults");twyp.updateNav(i,h)},cbResults:function(f){try{var d=a("#"+twyp.activeTwyp),c=a(".vids",d).empty();d.data("main",f.feed);a(f.feed.entry).each(function(j,m){if(!m.yt$noembed){var k=m.media$group.media$title.$t,h=a("<img/>"),o=a("<a/>"),n=m.media$group.media$description.$t,l=a("<p>").html(n);h.attr({src:m.media$group.media$thumbnail[0].url,title:twyp.info(m)}).click(twyp.clickPlay(j,"main",h[0]));o.attr({href:"#","class":"tiddlyLinkExisting"}).click(twyp.clickPlay(j,"main",o[0])).html(k);c.append(a("<div/>").attr("class","vid").append(a("<div/>").attr("class","desc").append(o).append(h).append(a("<span/>").append(a("<div/>").html(twyp.info(m,true)))).append(l).append(a("<div/>").attr("class","tagClear"))))}});if(a.fn.linkify){a("p",c).linkify()}}catch(g){alert(g)}},getRelated:function(e,h,g){var f=g.data(h).entry[e],d=twyp.findHref(f,twyp.relRelated),c=a(".vidRel",g).empty();if(d){d=d.split("?")[0];c.html("<h3>"+twyp.txtRelated+"</h3>");d+="?&restriction="+twyp.restrictTo+"&max-results="+twyp.maxRelated;twyp.appendScript(d,"twypRelated","twyp.cbMore")}},getByUser:function(e,d,c){a(".vidUser",e).empty().html("<h3>"+twyp.txtUser+c+"</h3>");twyp.appendScript(d+twyp.usrSuffix+"?&restriction="+twyp.restrictTo+"&max-results="+twyp.maxUser+"&orderby=rating","twypUser","twyp.cbMore")},cbMore:function(h){var d,c,j,f=a("#"+twyp.activeTwyp),g=h.feed.title.$t.indexOf("Videos related to")==0?"related":"user";f.data(g,h.feed);for(d=0;j=h.feed.entry[d];d++){c=a("<img/>");a(g=="user"?".vidUser":".vidRel",f).append(c.attr({src:j.media$group.media$thumbnail[0].url,rel:j.media$group.media$title.$t,title:twyp.info(j)+" | "+twyp.info(j,true)}).click(twyp.clickPlay(d,g,c[0])).bind("mouseover mouseout",function(k){var l=k?k:window.event,i=a("."+g+"Info");i.empty().html(l.type=="mouseover"?this.getAttribute("rel"):"&nbsp;")}))}},info:function(h,g){var d,c,f;if(g){g=h.gd$rating,c=h.media$group.media$content[0].duration;return[g?twyp.txtRating+g.average.toString().substr(0,3)+" | ":"",twyp.txtDuration,Math.floor(c/60),":",String.zeroPad(c%60,2)].join("")}d=h.author,f=h.yt$statistics;return twyp.txtInfo.format([d?d[0].name.$t:"",f?f.viewCount:"n/a",f?f.favoriteCount:"n/a",h.published.$t.substr(0,10)])},clickPlay:function(d,e,c){return function(){twyp.playVideo(d,e,c);return false}},playVideo:function(d,i,g){twyp.activePlayer=null;twyp.newPlayer=true;var h=a(g).closest(".twyp"),k=h.find(".twplr"),j=h.data(i).entry[d],c=j.author,f=twyp.fmtPlayer.format([twyp.findMediaHref(j,twyp.mimeFlash),j.media$group.media$title.$t,twyp.vidWidth,twyp.vidHeight,"&autoplay=1",h.attr("id")]);k.html(f);k.find("a").first().attr("field",h.attr("field")).click(function(l){var m=l?l:window.event;twyp.addToTiddler(m,this)});k.append(a("<div/>").attr({"class":"vidDescr",title:(twyp.info(j)+twyp.info(j,true))}).html(j.media$group.media$description.$t));if(a.fn.linkify){a(".vidDescr",k).linkify()}twyp.getRelated(d,i,h);if(c&&c.length>0){twyp.getByUser(h,c[0].uri.$t,c[0].name.$t)}},updateNav:function(f,e){var g=f,c=twyp.txtPage,h=g-1<1?"disabled":"";a(".vidNext",e).css("display","inline").attr({page:g+1,title:c+(g+1)});a(".vidPrev",e).css("display","inline").attr({page:g-1,title:c+(g-1),disabled:h})},reset:function(c){var d=a(c).closest(".twyp");a(".vids, .colPlayer div[class]",d).empty();a(".twplr",d).html("&nbsp;");a(".resultsNav",d).hide()},addToTiddler:function(f,d){var h=story.findContainingTiddler(d),g=a(d),c=g.html();h=h?h.getAttribute("tiddler"):"";if(!h){return}if(!f.ctrlKey){c=prompt("Enter your desired video title",c)}if(!c){return}store.setValue(h,g.attr("field"),"[["+c+"|"+g.attr("rel")+"]]");if(config.options.chkAutoSave){story.saveTiddler(h)}},stateChange:function(g){var f,h=a(this),e=h.attr("last"),c=twyp.activePlayer.getVideoUrl(),d=c.indexOf("?v=")>0;c=c.split(d?"?v=":"#!v=")[1].split("&")[0];if(e!=c){h.attr("last",c);if(twyp.newPlayer){twyp.newPlayer=false;return}if(e){twyp.activePlayer.pauseVideo();f="http://gdata.youtube.com/feeds/api/videos/"+c+"?v=2";twyp.appendScript(f,"twypVideoInfo","twyp.getVideo")}}twyp.newPlayer=false},getVideo:function(d){var c=a("#"+twyp.activeTwyp);d.feed={entry:[d.entry]};c.data("video",d.feed);twyp.playVideo(0,"video",c.first())}};config.macros.twyp={handler:function(k,g,x,h,j,r){var y,d,i,o,z,v,l,t=story.findContainingTiddler(k),q=j.parseParams(null,null,true),u=getParam(q,"field",twyp.field),e=x.contains("notitle"),c=x.contains("slider"),n="twyp"+Math.random().toString().substr(3),m=x.contains("search");if(x.contains("player")){m=m?"<<twyp %0>>".format([j.replace("player","")]):"";t=t?t.getAttribute("tiddler"):"";v=getParam(q,"video",store.getValue(t,u));wikify(m,k);if(!v){return}o=v.indexOf("|");z=v.substr(2,o-2);i=["<html>",twyp.fmtPlayer.format([v.substr(o+1,v.length-o-3),z,getParam(q,"width",twyp.vidWidth),getParam(q,"height",twyp.vidHeight),c&!x.contains("noautoplay")?"&autoplay=1":"",n]),"</html>"].join("");if(c){d=a("<div/>");d.addClass("twypSlider");l=d[0];a(k).append(a("<a>"+twyp.lblShow.format([z])+"</a>").attr({href:"#",twyp:n,"class":"button",title:twyp.tipShow.format([z])}).click(function(w){var s=a(this),f=z,B=s.attr("twyp"),A=s.next();if(A.css("display")!="block"){s.attr({title:twyp.tipHide,video:f}).html(twyp.lblHide);A.attr("twyp",B);config.shadowTiddlers[B]=i;A.slideDown("slow")}else{f=s.attr("video");s.attr("title",twyp.tipShow.format([f])).html(twyp.lblShow.format([f]));delete config.shadowTiddlers[B];A.slideUp("slow")}})).append(d)}wikify(i,l?l:k);y=a("a",l?l:k).last();if(e){y.parent().hide().next().css("margin-top","0.5em")}else{y.click(function(f){var p=f?f:window.event;twyp.addToTiddler(p,this)})}}else{wikify(c?twyp.fmtSlider.format([n]):store.getTiddlerText(twyp.twypTemplate),k);a(".txtSearch",k).last().val(twyp.txtSearch).attr("title",twyp.lblSearch);a(".txtTag",k).last().val(twyp.txtTag).attr("title",twyp.lblTag);d=c?a("[tiddler]",k).last():a(k).closest("[tiddler]");d.attr({twyp:n,field:u,not:e})}}};story.closeTiddlerTWYP=story.closeTiddler;story.closeTiddler=function(c){a(".twypSlider",this.getTiddler(c)).each(function(e,d){delete config.shadowTiddlers[a(d).attr("twyp")]});story.closeTiddlerTWYP.apply(this,arguments)};try{a.getJSON("http://www.geoplugin.net/json.gp?jsoncallback=?",function(c){if(c){twyp.restrictTo=c.geoplugin_countryCode}})}catch(b){}window.onYouTubePlayerReady=function(c){a("object, embed",a("#"+c)).each(function(d){try{this.addEventListener("onStateChange","twyp.stateChange");twyp.activePlayer=this;a(this).attr("last",null)}catch(f){}})};config.shadowTiddlers.StyleSheetTwyp="/*{{{*/\n.twyp {font-size:12px;} \n.twyp .frmSearch{margin:10px 0 0 10px;} \n.twyp .txtSearch, .twyp .txtTag{width:100px;} \n.twyp input{border:1px solid #ddd;padding:1px 3px;cursor:pointer;} \n.twyp input:hover{border:1px solid #999;} \n.twyp .colResults {float:left;margin-top:0.5em;width:390px;padding-left:10px;} \n.twyp .vids {width:100%;} \n.twyp .vids img{margin:5px 0 5px 5px;width:100px;cursor:pointer;float:right;clear:none;} \n.twyp .vid{clear:both;font-size:0.9em;padding:5px;} \n.twyp .vid:hover{background:#ddd;} \n.twyp .desc a{display:block;padding:1px 3px;} \n.twyp .desc p{max-height:70px;overflow:hidden;margin-top:5px;display:block;max-width:380px;} \n.twyp .desc p a{display:inline;} \n.twyp .desc:hover p{width:270px;max-height:200px;overflow:auto;} \n.twyp .desc span {font-weight:bold;color:#666;} \n.twyp .resultsNav{text-align:right;margin-bottom:2em;} \n.twyp .resultsNav input, .btnSearch{margin:0.5em 0 0 0.5em;font-weight:bold;width:80px;} \n.twyp .colPlayer {float:left;width:390px;margin:0 5px;} \n.twplr .vidDescr {max-height:1.5em;overflow:hidden;} \n.twplr .vidDescr:hover {max-height:250px;overflow:auto;} \n.twyp .colPlayer img {margin:1px;cursor:pointer;width:72px;height:56px;} \n.twyp h2, .twyp h3 {margin-top: 0.6em;} \n.twyp .vidUser, .vidRel{margin:0 1em 0 0;} \n.twyp .userInfo, .twyp .relatedInfo{padding-right:20px;height:auto;overflow:hidden;font-weight:bold;color:#666;} \n.twypSlider {display:none;margin-bottom:10px;} \n.twypSlider object{display:block;} \n/*}}}*/";store.addNotification("StyleSheetTwyp",refreshStyles)})(jQuery);
//}}}
// /%
/***
!TEMPLATE
<html>
<div class="twyp">
	<form class="frmSearch" onsubmit="twyp.getResults(this,this.query.value,this.search.value); return false;">
		<select name="query">
			<option value="all" selected="true">all videos</option>
			<option value="rated">top rated</option>
			<option value="recent">most recent</option>
			<option value="popular">most popular</option>
			<option value="discuss">most discussed</option>
			<option value="respond">most responded</option>
			<option value="featured">recently featured</option>
		</select>
		<input name="search" class="txtSearch" type="text" value="" onclick="this.select();">
		<input name="category" class="txtTag" type="text" value="" onclick="this.select();">
		<input type="submit" class="btnSearch" value="Search">
		<input type="button" class="btnSearch" value="Reset" onclick="twyp.reset(this);">
	</form>
	<div class="colPlayer">
		<div class="twplr"></div>
		<div>
			<div class="vidRel"></div>
			<div class="relatedInfo">&nbsp;</div>
			<div class="vidUser"></div>
			<div class="userInfo">&nbsp;</div>
		</div>
	</div> 
	<div class="colResults">
		<div class="vids"></div>
		<form class="resultsNav">
			<input type="button" class="vidPrev" value="&laquo; back" style="display: none;" onclick="twyp.getResults(this);"></input>
			<input type="button" class="vidNext" value="next &raquo;" style="display: none;" onclick="twyp.getResults(this);"></input>
		</form>
	</div>
</div>
<div class="tagClear"></div>
</html>
!END*/
//%/
/*{{{*/
config.options.chkShowRightSidebarMod=true;
config.options["chkBackstage"]=false; //HIDE BACKSTAGE
config.options.txtTheme='White-Theme'; //START WITH WHITE-THEME (parimifier: #txtTheme:White-Theme
config.evaluateMacroParameters = "full";
readOnly=true;
/*}}}*/
/*{{{*/
config.macros.undo.label= 'fortryd';
config.macros.undo.prompt= 'fortryd ændringer';
config.macros.undo.tip= 'fortryd ændringer til "%0"';
config.macros.undo.multimsg= 'Fortryd %0 tiddlerændringer.  Er du sikker?';
config.macros.undo.revertedmsg= '"%0" - tidligere indhold genoprettet';
config.macros.undo.renamedmsg= '"%0" - omdøbt til "%1"';
config.macros.undo.deletedmsg= '"%0" - fjernet';
config.macros.undo.shadowmsg= '"%0" - standard (skygge) indhold genoprettet';
config.macros.undo.noundomsg= 'intet at fortryde';
config.macros.undo.disabledmsg= 'fortryd er slået fra\n----\n<<option chkEnableUndo>>slår det til igen';
config.macros.undo.undoheading= 'fortryd tiddlerændringer:';
config.macros.undo.dateformat= 'YYYY.0MM.0DD 0hh:0mm:0ss';
config.macros.undo.popupformat= '%1 %0<div style="font-size:80%"><i>handling: </i><b>%2</b></div>';
/*}}}*/
/*{{{*/
merge( config.macros.findr.config, {
    where: '.sidebarTabs .tabContents',
    how: 'appendTo',
    empty: true,
    fmtHeader:'\n!Søgeresultater',
    fmtItem:'\n# [[%0]]',
    fields:'example',
    btnCloseLabel: "Luk",
    btnOpenLabel: "Åbn alle"
});

config.macros.search.successMsg = "fandt %0 der matcher %1";
/*}}}*/
<<forEachTiddler
where
'tiddler.tags.contains("Plante")&& ! tiddler.tags.contains("Færdig")&& ! tiddler.tags.contains("Udelukket")'
sortBy  'tiddler.title.toUpperCase()'
write
'(index < 200) ? "| <<tiddler [[ØveTid##billede]] with:[["+tiddler.title+"]][["+store.getTiddlerText("ImagePathList","")+"]] \>\> | {{dp50{[["+tiddler.title+"-tid]]}}} <<tiddler ØveTid##tasktimer with: [["+tiddler.title+"-tid]]\>\> |\n" : ""'
        begin '"||k\n| {{big blue{[[PlanteØvning|ØveTid]]}}} |f\n"'
>>/%
!tasktimer
{{floatright bigform{<<taskTimer [[$1]]>>}}}
!billede
<<tiddler ThumbThing with:{{store.getValue(tiddler.title,"billede")||"$2$1.jpg"}} 170px auto 250%>> [[Link|$1]]
! %/