<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected{color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

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

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

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

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

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

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

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 14em;}

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

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

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

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

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

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none ! important;}
#displayArea {margin: 1em 1em 0em 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler > fields syncing permalink references jump'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<!--}}}-->
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* MainMenu: The menu (usually on the left)
* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These InterfaceOptions for customising TiddlyWiki are saved in your browser

Your username for signing your edits. Write it as a WikiWord (eg JoeBloggs)

<<option txtUserName>>
<<option chkSaveBackups>> SaveBackups
<<option chkAutoSave>> AutoSave
<<option chkRegExpSearch>> RegExpSearch
<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
<<option chkAnimate>> EnableAnimations

----
Also see AdvancedOptions
<<importTiddlers>>
Revision 3282
<html>
<iframe src='http://www.postpet.so-net.ne.jp/petnews/petnews_bg.swf?url=http://www.postpet.so-net.ne.jp/petnews/' width="160" height="235"></iframe>
</html>
<<options>>
Background: deeppink
Foreground: black
PrimaryPale: pink
PrimaryLight: pink
PrimaryMid: #4c004c
PrimaryDark: black
SecondaryPale: pink
SecondaryLight: pink
SecondaryMid: pink
SecondaryDark:black
TertiaryPale: hotpink
TertiaryLight: hotpink
TertiaryMid: pink
TertiaryDark: deeppink
Error: #f88
資料來源:http://www.colordic.org/
<html>
<div id="colortable">
<table>
<tbody><tr>
<td style="background-color: rgb(0, 0, 0);">

<a href="http://www.colordic.org/colorsample/1000.html" title="black #000000" style="color: rgb(255, 255, 255);">black<br>#000000</a>
</td>
<td style="background-color: rgb(240, 248, 255);">
<a href="http://www.colordic.org/colorsample/1028.html" title="aliceblue #f0f8ff">aliceblue<br>#f0f8ff</a>
</td>
<td style="background-color: rgb(0, 139, 139);">
<a href="http://www.colordic.org/colorsample/1057.html" title="darkcyan #008b8b" style="color: rgb(255, 255, 255);">darkcyan<br>#008b8b</a>
</td>
<td style="background-color: rgb(255, 255, 224);">
<a href="http://www.colordic.org/colorsample/1084.html" title="lightyellow #ffffe0">lightyellow<br>#ffffe0</a>

</td>
<td style="background-color: rgb(255, 127, 80);">
<a href="http://www.colordic.org/colorsample/1112.html" title="coral #ff7f50">coral<br>#ff7f50</a>
</td>
</tr>
<tr>
<td style="background-color: rgb(105, 105, 105);">
<a href="http://www.colordic.org/colorsample/1001.html" title="dimgray #696969" style="color: rgb(255, 255, 255);">dimgray<br>#696969</a>
</td>
<td style="background-color: rgb(230, 230, 250);">
<a href="http://www.colordic.org/colorsample/1029.html" title="lavender #e6e6fa">lavender<br>#e6e6fa</a>

</td>
<td style="background-color: rgb(0, 128, 128);">
<a href="http://www.colordic.org/colorsample/1058.html" title="teal #008080" style="color: rgb(255, 255, 255);">teal<br>#008080</a>
</td>
<td style="background-color: rgb(250, 250, 210);">
<a href="http://www.colordic.org/colorsample/1085.html" title="lightgoldenrodyellow #fafad2">lightgoldenrodyellow<br>#fafad2</a>
</td>
<td style="background-color: rgb(255, 99, 71);">
<a href="http://www.colordic.org/colorsample/1113.html" title="tomato #ff6347">tomato<br>#ff6347</a>
</td>
</tr>

<tr>
<td style="background-color: rgb(128, 128, 128);">
<a href="http://www.colordic.org/colorsample/1002.html" title="gray #808080" style="color: rgb(255, 255, 255);">gray<br>#808080</a>
</td>
<td style="background-color: rgb(176, 196, 222);">
<a href="http://www.colordic.org/colorsample/1033.html" title="lightsteelblue #b0c4de">lightsteelblue<br>#b0c4de</a>
</td>
<td style="background-color: rgb(47, 79, 79);">
<a href="http://www.colordic.org/colorsample/1032.html" title="darkslategray #2f4f4f" style="color: rgb(255, 255, 255);">darkslategray<br>#2f4f4f</a>
</td>
<td style="background-color: rgb(255, 250, 205);">

<a href="http://www.colordic.org/colorsample/1086.html" title="lemonchiffon #fffacd">lemonchiffon<br>#fffacd</a>
</td>
<td style="background-color: rgb(255, 69, 0);">
<a href="http://www.colordic.org/colorsample/1114.html" title="orangered #ff4500">orangered<br>#ff4500</a>
</td>
</tr>
<tr>
<td style="background-color: rgb(169, 169, 169);">
<a href="http://www.colordic.org/colorsample/1003.html" title="darkgray #a9a9a9" style="color: rgb(255, 255, 255);">darkgray<br>#a9a9a9</a>
</td>
<td style="background-color: rgb(119, 136, 153);">

<a href="http://www.colordic.org/colorsample/1030.html" title="lightslategray #778899" style="color: rgb(255, 255, 255);">lightslategray<br>#778899</a>
</td>
<td style="background-color: rgb(0, 100, 0);">
<a href="http://www.colordic.org/colorsample/1060.html" title="darkgreen #006400" style="color: rgb(255, 255, 255);">darkgreen<br>#006400</a>
</td>
<td style="background-color: rgb(245, 222, 179);">
<a href="http://www.colordic.org/colorsample/1087.html" title="wheat #f5deb3">wheat<br>#f5deb3</a>
</td>
<td style="background-color: rgb(255, 0, 0);">
<a href="http://www.colordic.org/colorsample/1115.html" title="red #ff0000">red<br>#ff0000</a>

</td>
</tr>
<tr>
<td style="background-color: rgb(192, 192, 192);">
<a href="http://www.colordic.org/colorsample/1004.html" title="silver #c0c0c0" style="color: rgb(255, 255, 255);">silver<br>#c0c0c0</a>
</td>
<td style="background-color: rgb(112, 128, 144);">
<a href="http://www.colordic.org/colorsample/1031.html" title="slategray #708090" style="color: rgb(255, 255, 255);">slategray<br>#708090</a>
</td>
<td style="background-color: rgb(0, 128, 0);">
<a href="http://www.colordic.org/colorsample/1061.html" title="green #008000" style="color: rgb(255, 255, 255);">green<br>#008000</a>

</td>
<td style="background-color: rgb(222, 184, 135);">
<a href="http://www.colordic.org/colorsample/1088.html" title="burlywood #deb887">burlywood<br>#deb887</a>
</td>
<td style="background-color: rgb(220, 20, 60);">
<a href="http://www.colordic.org/colorsample/1116.html" title="crimson #dc143c">crimson<br>#dc143c</a>
</td>
</tr>
<tr>
<td style="background-color: rgb(211, 211, 211);">
<a href="http://www.colordic.org/colorsample/1005.html" title="lightgrey #d3d3d3">lightgrey<br>#d3d3d3</a>

</td>
<td style="background-color: rgb(70, 130, 180);">
<a href="http://www.colordic.org/colorsample/1034.html" title="steelblue #4682b4" style="color: rgb(255, 255, 255);">steelblue<br>#4682b4</a>
</td>
<td style="background-color: rgb(34, 139, 34);">
<a href="http://www.colordic.org/colorsample/1062.html" title="forestgreen #228b22" style="color: rgb(255, 255, 255);">forestgreen<br>#228b22</a>
</td>
<td style="background-color: rgb(210, 180, 140);">
<a href="http://www.colordic.org/colorsample/1089.html" title="tan #d2b48c">tan<br>#d2b48c</a>
</td>
<td style="background-color: rgb(199, 21, 133);">

<a href="http://www.colordic.org/colorsample/1117.html" title="mediumvioletred #c71585" style="color: rgb(255, 255, 255);">mediumvioletred<br>#c71585</a>
</td>
</tr>
<tr>
<td style="background-color: rgb(220, 220, 220);">
<a href="http://www.colordic.org/colorsample/1006.html" title="gainsboro #dcdcdc">gainsboro<br>#dcdcdc</a>
</td>
<td style="background-color: rgb(65, 105, 225);">
<a href="http://www.colordic.org/colorsample/1035.html" title="royalblue #4169e1">royalblue<br>#4169e1</a>
</td>
<td style="background-color: rgb(46, 139, 87);">

<a href="http://www.colordic.org/colorsample/1059.html" title="seagreen #2e8b57" style="color: rgb(255, 255, 255);">seagreen<br>#2e8b57</a>
</td>
<td style="background-color: rgb(240, 230, 140);">
<a href="http://www.colordic.org/colorsample/1090.html" title="khaki #f0e68c">khaki<br>#f0e68c</a>
</td>
<td style="background-color: rgb(255, 20, 147);">
<a href="http://www.colordic.org/colorsample/1118.html" title="deeppink #ff1493">deeppink<br>#ff1493</a>
</td>
</tr>
<tr>
<td style="background-color: rgb(245, 245, 245);">

<a href="http://www.colordic.org/colorsample/1010.html" title="whitesmoke #f5f5f5">whitesmoke<br>#f5f5f5</a>
</td>
<td style="background-color: rgb(25, 25, 112);">
<a href="http://www.colordic.org/colorsample/1036.html" title="midnightblue #191970" style="color: rgb(255, 255, 255);">midnightblue<br>#191970</a>
</td>
<td style="background-color: rgb(60, 179, 113);">
<a href="http://www.colordic.org/colorsample/1063.html" title="mediumseagreen #3cb371" style="color: rgb(255, 255, 255);">mediumseagreen<br>#3cb371</a>
</td>
<td style="background-color: rgb(255, 255, 0);">
<a href="http://www.colordic.org/colorsample/1091.html" title="yellow #ffff00">yellow<br>#ffff00</a>

</td>
<td style="background-color: rgb(255, 105, 180);">
<a href="http://www.colordic.org/colorsample/1119.html" title="hotpink #ff69b4">hotpink<br>#ff69b4</a>
</td>
</tr>
<tr>
<td style="background-color: rgb(255, 255, 255);">
<a href="http://www.colordic.org/colorsample/1007.html" title="white #ffffff">white<br>#ffffff</a>
</td>
<td style="background-color: rgb(0, 0, 128);">
<a href="http://www.colordic.org/colorsample/1037.html" title="navy #000080" style="color: rgb(255, 255, 255);">navy<br>#000080</a>

</td>
<td style="background-color: rgb(102, 205, 170);">
<a href="http://www.colordic.org/colorsample/1065.html" title="mediumaquamarine #66cdaa" style="color: rgb(255, 255, 255);">mediumaquamarine<br>#66cdaa</a>
</td>
<td style="background-color: rgb(255, 215, 0);">
<a href="http://www.colordic.org/colorsample/1092.html" title="gold #ffd700">gold<br>#ffd700</a>
</td>
<td style="background-color: rgb(219, 112, 147);">
<a href="http://www.colordic.org/colorsample/1120.html" title="palevioletred #db7093">palevioletred<br>#db7093</a>
</td>
</tr>

<tr>
<td style="background-color: rgb(255, 250, 250);">
<a href="http://www.colordic.org/colorsample/1008.html" title="snow #fffafa">snow<br>#fffafa</a>
</td>
<td style="background-color: rgb(0, 0, 139);">
<a href="http://www.colordic.org/colorsample/1038.html" title="darkblue #00008b" style="color: rgb(255, 255, 255);">darkblue<br>#00008b</a>
</td>
<td style="background-color: rgb(143, 188, 143);">
<a href="http://www.colordic.org/colorsample/1064.html" title="darkseagreen #8fbc8f" style="color: rgb(255, 255, 255);">darkseagreen<br>#8fbc8f</a>
</td>
<td style="background-color: rgb(255, 165, 0);">

<a href="http://www.colordic.org/colorsample/1093.html" title="orange #ffa500">orange<br>#ffa500</a>
</td>
<td style="background-color: rgb(255, 192, 203);">
<a href="http://www.colordic.org/colorsample/1121.html" title="pink #ffc0cb">pink<br>#ffc0cb</a>
</td>
</tr>
<tr>
<td style="background-color: rgb(248, 248, 255);">
<a href="http://www.colordic.org/colorsample/1009.html" title="ghostwhite #f8f8ff">ghostwhite<br>#f8f8ff</a>
</td>
<td style="background-color: rgb(0, 0, 205);">

<a href="http://www.colordic.org/colorsample/1039.html" title="mediumblue #0000cd" style="color: rgb(255, 255, 255);">mediumblue<br>#0000cd</a>
</td>
<td style="background-color: rgb(127, 255, 212);">
<a href="http://www.colordic.org/colorsample/1066.html" title="aquamarine #7fffd4">aquamarine<br>#7fffd4</a>
</td>
<td style="background-color: rgb(244, 164, 96);">
<a href="http://www.colordic.org/colorsample/1094.html" title="sandybrown #f4a460">sandybrown<br>#f4a460</a>
</td>
<td style="background-color: rgb(255, 182, 193);">
<a href="http://www.colordic.org/colorsample/1122.html" title="lightpink #ffb6c1">lightpink<br>#ffb6c1</a>

</td>
</tr>
<tr>
<td style="background-color: rgb(255, 250, 240);">
<a href="http://www.colordic.org/colorsample/1011.html" title="floralwhite #fffaf0">floralwhite<br>#fffaf0</a>
</td>
<td style="background-color: rgb(0, 0, 255);">
<a href="http://www.colordic.org/colorsample/1040.html" title="blue #0000ff">blue<br>#0000ff</a>
</td>
<td style="background-color: rgb(152, 251, 152);">
<a href="http://www.colordic.org/colorsample/1067.html" title="palegreen #98fb98">palegreen<br>#98fb98</a>

</td>
<td style="background-color: rgb(255, 140, 0);">
<a href="http://www.colordic.org/colorsample/1095.html" title="darkorange #ff8c00">darkorange<br>#ff8c00</a>
</td>
<td style="background-color: rgb(216, 191, 216);">
<a href="http://www.colordic.org/colorsample/1123.html" title="thistle #d8bfd8">thistle<br>#d8bfd8</a>
</td>
</tr>
<tr>
<td style="background-color: rgb(250, 240, 230);">
<a href="http://www.colordic.org/colorsample/1012.html" title="linen #faf0e6">linen<br>#faf0e6</a>

</td>
<td style="background-color: rgb(30, 144, 255);">
<a href="http://www.colordic.org/colorsample/1041.html" title="dodgerblue #1e90ff">dodgerblue<br>#1e90ff</a>
</td>
<td style="background-color: rgb(144, 238, 144);">
<a href="http://www.colordic.org/colorsample/1068.html" title="lightgreen #90ee90">lightgreen<br>#90ee90</a>
</td>
<td style="background-color: rgb(218, 165, 32);">
<a href="http://www.colordic.org/colorsample/1096.html" title="goldenrod #daa520">goldenrod<br>#daa520</a>
</td>
<td style="background-color: rgb(255, 0, 255);">

<a href="http://www.colordic.org/colorsample/1124.html" title="magenta #ff00ff">magenta<br>#ff00ff</a>
</td>
</tr>
<tr>
<td style="background-color: rgb(250, 235, 215);">
<a href="http://www.colordic.org/colorsample/1013.html" title="antiquewhite #faebd7">antiquewhite<br>#faebd7</a>
</td>
<td style="background-color: rgb(100, 149, 237);">
<a href="http://www.colordic.org/colorsample/1042.html" title="cornflowerblue #6495ed">cornflowerblue<br>#6495ed</a>
</td>
<td style="background-color: rgb(0, 255, 127);">

<a href="http://www.colordic.org/colorsample/1069.html" title="springgreen #00ff7f">springgreen<br>#00ff7f</a>
</td>
<td style="background-color: rgb(205, 133, 63);">
<a href="http://www.colordic.org/colorsample/1097.html" title="peru #cd853f" style="color: rgb(255, 255, 255);">peru<br>#cd853f</a>
</td>
<td style="background-color: rgb(255, 0, 255);">
<a href="http://www.colordic.org/colorsample/1125.html" title="fuchsia #ff00ff">fuchsia<br>#ff00ff</a>
</td>
</tr>
<tr>
<td style="background-color: rgb(255, 239, 213);">

<a href="http://www.colordic.org/colorsample/1014.html" title="papayawhip #ffefd5">papayawhip<br>#ffefd5</a>
</td>
<td style="background-color: rgb(0, 191, 255);">
<a href="http://www.colordic.org/colorsample/1043.html" title="deepskyblue #00bfff">deepskyblue<br>#00bfff</a>
</td>
<td style="background-color: rgb(0, 250, 154);">
<a href="http://www.colordic.org/colorsample/1070.html" title="mediumspringgreen #00fa9a">mediumspringgreen<br>#00fa9a</a>
</td>
<td style="background-color: rgb(184, 134, 11);">
<a href="http://www.colordic.org/colorsample/1098.html" title="darkgoldenrod #b8860b" style="color: rgb(255, 255, 255);">darkgoldenrod<br>#b8860b</a>

</td>
<td style="background-color: rgb(238, 130, 238);">
<a href="http://www.colordic.org/colorsample/1126.html" title="violet #ee82ee">violet<br>#ee82ee</a>
</td>
</tr>
<tr>
<td style="background-color: rgb(255, 235, 205);">
<a href="http://www.colordic.org/colorsample/1015.html" title="blanchedalmond #ffebcd">blanchedalmond<br>#ffebcd</a>
</td>
<td style="background-color: rgb(135, 206, 250);">
<a href="http://www.colordic.org/colorsample/1044.html" title="lightskyblue #87cefa">lightskyblue<br>#87cefa</a>

</td>
<td style="background-color: rgb(124, 252, 0);">
<a href="http://www.colordic.org/colorsample/1071.html" title="lawngreen #7cfc00">lawngreen<br>#7cfc00</a>
</td>
<td style="background-color: rgb(210, 105, 30);">
<a href="http://www.colordic.org/colorsample/1099.html" title="chocolate #d2691e">chocolate<br>#d2691e</a>
</td>
<td style="background-color: rgb(221, 160, 221);">
<a href="http://www.colordic.org/colorsample/1127.html" title="plum #dda0dd">plum<br>#dda0dd</a>
</td>
</tr>

<tr>
<td style="background-color: rgb(255, 228, 196);">
<a href="http://www.colordic.org/colorsample/1016.html" title="bisque #ffe4c4">bisque<br>#ffe4c4</a>
</td>
<td style="background-color: rgb(135, 206, 235);">
<a href="http://www.colordic.org/colorsample/1045.html" title="skyblue #87ceeb">skyblue<br>#87ceeb</a>
</td>
<td style="background-color: rgb(127, 255, 0);">
<a href="http://www.colordic.org/colorsample/1072.html" title="chartreuse #7fff00">chartreuse<br>#7fff00</a>
</td>
<td style="background-color: rgb(160, 82, 45);">

<a href="http://www.colordic.org/colorsample/1100.html" title="sienna #a0522d" style="color: rgb(255, 255, 255);">sienna<br>#a0522d</a>
</td>
<td style="background-color: rgb(218, 112, 214);">
<a href="http://www.colordic.org/colorsample/1128.html" title="orchid #da70d6">orchid<br>#da70d6</a>
</td>
</tr>
<tr>
<td style="background-color: rgb(255, 228, 181);">
<a href="http://www.colordic.org/colorsample/1017.html" title="moccasin #ffe4b5">moccasin<br>#ffe4b5</a>
</td>
<td style="background-color: rgb(173, 216, 230);">

<a href="http://www.colordic.org/colorsample/1046.html" title="lightblue #add8e6">lightblue<br>#add8e6</a>
</td>
<td style="background-color: rgb(173, 255, 47);">
<a href="http://www.colordic.org/colorsample/1073.html" title="greenyellow #adff2f">greenyellow<br>#adff2f</a>
</td>
<td style="background-color: rgb(139, 69, 19);">
<a href="http://www.colordic.org/colorsample/1101.html" title="saddlebrown #8b4513" style="color: rgb(255, 255, 255);">saddlebrown<br>#8b4513</a>
</td>
<td style="background-color: rgb(186, 85, 211);">
<a href="http://www.colordic.org/colorsample/1129.html" title="mediumorchid #ba55d3">mediumorchid<br>#ba55d3</a>

</td>
</tr>
<tr>
<td style="background-color: rgb(255, 222, 173);">
<a href="http://www.colordic.org/colorsample/1018.html" title="navajowhite #ffdead">navajowhite<br>#ffdead</a>
</td>
<td style="background-color: rgb(176, 224, 230);">
<a href="http://www.colordic.org/colorsample/1047.html" title="powderblue #b0e0e6">powderblue<br>#b0e0e6</a>
</td>
<td style="background-color: rgb(0, 255, 0);">
<a href="http://www.colordic.org/colorsample/1074.html" title="lime #00ff00">lime<br>#00ff00</a>

</td>
<td style="background-color: rgb(128, 0, 0);">
<a href="http://www.colordic.org/colorsample/1102.html" title="maroon #800000" style="color: rgb(255, 255, 255);">maroon<br>#800000</a>
</td>
<td style="background-color: rgb(153, 50, 204);">
<a href="http://www.colordic.org/colorsample/1130.html" title="darkorchid #9932cc" style="color: rgb(255, 255, 255);">darkorchid<br>#9932cc</a>
</td>
</tr>
<tr>
<td style="background-color: rgb(255, 218, 185);">
<a href="http://www.colordic.org/colorsample/1019.html" title="peachpuff #ffdab9">peachpuff<br>#ffdab9</a>

</td>
<td style="background-color: rgb(175, 238, 238);">
<a href="http://www.colordic.org/colorsample/1048.html" title="paleturquoise #afeeee">paleturquoise<br>#afeeee</a>
</td>
<td style="background-color: rgb(50, 205, 50);">
<a href="http://www.colordic.org/colorsample/1075.html" title="limegreen #32cd32" style="color: rgb(255, 255, 255);">limegreen<br>#32cd32</a>
</td>
<td style="background-color: rgb(139, 0, 0);">
<a href="http://www.colordic.org/colorsample/1103.html" title="darkred #8b0000" style="color: rgb(255, 255, 255);">darkred<br>#8b0000</a>
</td>
<td style="background-color: rgb(148, 0, 211);">

<a href="http://www.colordic.org/colorsample/1131.html" title="darkviolet #9400d3">darkviolet<br>#9400d3</a>
</td>
</tr>
<tr>
<td style="background-color: rgb(255, 228, 225);">
<a href="http://www.colordic.org/colorsample/1020.html" title="mistyrose #ffe4e1">mistyrose<br>#ffe4e1</a>
</td>
<td style="background-color: rgb(224, 255, 255);">
<a href="http://www.colordic.org/colorsample/1049.html" title="lightcyan #e0ffff">lightcyan<br>#e0ffff</a>
</td>
<td style="background-color: rgb(154, 205, 50);">

<a href="http://www.colordic.org/colorsample/1076.html" title="yellowgreen #9acd32" style="color: rgb(255, 255, 255);">yellowgreen<br>#9acd32</a>
</td>
<td style="background-color: rgb(165, 42, 42);">
<a href="http://www.colordic.org/colorsample/1104.html" title="brown #a52a2a" style="color: rgb(255, 255, 255);">brown<br>#a52a2a</a>
</td>
<td style="background-color: rgb(139, 0, 139);">
<a href="http://www.colordic.org/colorsample/1132.html" title="darkmagenta #8b008b" style="color: rgb(255, 255, 255);">darkmagenta<br>#8b008b</a>
</td>
</tr>
<tr>
<td style="background-color: rgb(255, 240, 245);">

<a href="http://www.colordic.org/colorsample/1021.html" title="lavenderblush #fff0f5">lavenderblush<br>#fff0f5</a>
</td>
<td style="background-color: rgb(0, 255, 255);">
<a href="http://www.colordic.org/colorsample/1050.html" title="cyan #00ffff">cyan<br>#00ffff</a>
</td>
<td style="background-color: rgb(85, 107, 47);">
<a href="http://www.colordic.org/colorsample/1079.html" title="darkolivegreen #556b2f" style="color: rgb(255, 255, 255);">darkolivegreen<br>#556b2f</a>
</td>
<td style="background-color: rgb(178, 34, 34);">
<a href="http://www.colordic.org/colorsample/1105.html" title="firebrick #b22222" style="color: rgb(255, 255, 255);">firebrick<br>#b22222</a>

</td>
<td style="background-color: rgb(128, 0, 128);">
<a href="http://www.colordic.org/colorsample/1133.html" title="purple #800080" style="color: rgb(255, 255, 255);">purple<br>#800080</a>
</td>
</tr>
<tr>
<td style="background-color: rgb(255, 245, 238);">
<a href="http://www.colordic.org/colorsample/1022.html" title="seashell #fff5ee">seashell<br>#fff5ee</a>
</td>
<td style="background-color: rgb(0, 255, 255);">
<a href="http://www.colordic.org/colorsample/1051.html" title="aqua #00ffff">aqua<br>#00ffff</a>

</td>
<td style="background-color: rgb(107, 142, 35);">
<a href="http://www.colordic.org/colorsample/1077.html" title="olivedrab #6b8e23" style="color: rgb(255, 255, 255);">olivedrab<br>#6b8e23</a>
</td>
<td style="background-color: rgb(205, 92, 92);">
<a href="http://www.colordic.org/colorsample/1106.html" title="indianred #cd5c5c" style="color: rgb(255, 255, 255);">indianred<br>#cd5c5c</a>
</td>
<td style="background-color: rgb(75, 0, 130);">
<a href="http://www.colordic.org/colorsample/1134.html" title="indigo #4b0082" style="color: rgb(255, 255, 255);">indigo<br>#4b0082</a>
</td>
</tr>

<tr>
<td style="background-color: rgb(253, 245, 230);">
<a href="http://www.colordic.org/colorsample/1023.html" title="oldlace #fdf5e6">oldlace<br>#fdf5e6</a>
</td>
<td style="background-color: rgb(64, 224, 208);">
<a href="http://www.colordic.org/colorsample/1052.html" title="turquoise #40e0d0">turquoise<br>#40e0d0</a>
</td>
<td style="background-color: rgb(128, 128, 0);">
<a href="http://www.colordic.org/colorsample/1078.html" title="olive #808000" style="color: rgb(255, 255, 255);">olive<br>#808000</a>
</td>
<td style="background-color: rgb(188, 143, 143);">

<a href="http://www.colordic.org/colorsample/1107.html" title="rosybrown #bc8f8f" style="color: rgb(255, 255, 255);">rosybrown<br>#bc8f8f</a>
</td>
<td style="background-color: rgb(72, 61, 139);">
<a href="http://www.colordic.org/colorsample/1135.html" title="darkslateblue #483d8b" style="color: rgb(255, 255, 255);">darkslateblue<br>#483d8b</a>
</td>
</tr>
<tr>
<td style="background-color: rgb(255, 255, 240);">
<a href="http://www.colordic.org/colorsample/1024.html" title="ivory #fffff0">ivory<br>#fffff0</a>
</td>
<td style="background-color: rgb(72, 209, 204);">

<a href="http://www.colordic.org/colorsample/1053.html" title="mediumturquoise #48d1cc">mediumturquoise<br>#48d1cc</a>
</td>
<td style="background-color: rgb(189, 183, 107);">
<a href="http://www.colordic.org/colorsample/1080.html" title="darkkhaki #bdb76b" style="color: rgb(255, 255, 255);">darkkhaki<br>#bdb76b</a>
</td>
<td style="background-color: rgb(233, 150, 122);">
<a href="http://www.colordic.org/colorsample/1108.html" title="darksalmon #e9967a">darksalmon<br>#e9967a</a>
</td>
<td style="background-color: rgb(138, 43, 226);">
<a href="http://www.colordic.org/colorsample/1136.html" title="blueviolet #8a2be2">blueviolet<br>#8a2be2</a>

</td>
</tr>
<tr>
<td style="background-color: rgb(240, 255, 240);">
<a href="http://www.colordic.org/colorsample/1025.html" title="honeydew #f0fff0">honeydew<br>#f0fff0</a>
</td>
<td style="background-color: rgb(0, 206, 209);">
<a href="http://www.colordic.org/colorsample/1054.html" title="darkturquoise #00ced1">darkturquoise<br>#00ced1</a>
</td>
<td style="background-color: rgb(238, 232, 170);">
<a href="http://www.colordic.org/colorsample/1081.html" title="palegoldenrod #eee8aa">palegoldenrod<br>#eee8aa</a>

</td>
<td style="background-color: rgb(240, 128, 128);">
<a href="http://www.colordic.org/colorsample/1109.html" title="lightcoral #f08080">lightcoral<br>#f08080</a>
</td>
<td style="background-color: rgb(147, 112, 219);">
<a href="http://www.colordic.org/colorsample/1137.html" title="mediumpurple #9370db">mediumpurple<br>#9370db</a>
</td>
</tr>
<tr>
<td style="background-color: rgb(245, 255, 250);">
<a href="http://www.colordic.org/colorsample/1026.html" title="mintcream #f5fffa">mintcream<br>#f5fffa</a>

</td>
<td style="background-color: rgb(32, 178, 170);">
<a href="http://www.colordic.org/colorsample/1055.html" title="lightseagreen #20b2aa" style="color: rgb(255, 255, 255);">lightseagreen<br>#20b2aa</a>
</td>
<td style="background-color: rgb(255, 248, 220);">
<a href="http://www.colordic.org/colorsample/1082.html" title="cornsilk #fff8dc">cornsilk<br>#fff8dc</a>
</td>
<td style="background-color: rgb(250, 128, 114);">
<a href="http://www.colordic.org/colorsample/1110.html" title="salmon #fa8072">salmon<br>#fa8072</a>
</td>
<td style="background-color: rgb(106, 90, 205);">

<a href="http://www.colordic.org/colorsample/1138.html" title="slateblue #6a5acd" style="color: rgb(255, 255, 255);">slateblue<br>#6a5acd</a>
</td>
</tr>
<tr>
<td style="background-color: rgb(240, 255, 255);">
<a href="http://www.colordic.org/colorsample/1027.html" title="azure #f0ffff">azure<br>#f0ffff</a>
</td>
<td style="background-color: rgb(95, 158, 160);">
<a href="http://www.colordic.org/colorsample/1056.html" title="cadetblue #5f9ea0" style="color: rgb(255, 255, 255);">cadetblue<br>#5f9ea0</a>
</td>
<td style="background-color: rgb(245, 245, 220);">

<a href="http://www.colordic.org/colorsample/1083.html" title="beige #f5f5dc">beige<br>#f5f5dc</a>
</td>
<td style="background-color: rgb(255, 160, 122);">
<a href="http://www.colordic.org/colorsample/1111.html" title="lightsalmon #ffa07a">lightsalmon<br>#ffa07a</a>
</td>
<td style="background-color: rgb(123, 104, 238);">
<a href="http://www.colordic.org/colorsample/1139.html" title="mediumslateblue #7b68ee">mediumslateblue<br>#7b68ee</a>
</html>
/***
|''Name:''|CryptoFunctionsPlugin|
|''Description:''|Support for cryptographic functions|
***/
//{{{
if(!version.extensions.CryptoFunctionsPlugin) {
version.extensions.CryptoFunctionsPlugin = {installed:true};

//--
//-- Crypto functions and associated conversion routines
//--

// Crypto "namespace"
function Crypto() {}

// Convert a string to an array of big-endian 32-bit words
Crypto.strToBe32s = function(str)
{
	var be = Array();
	var len = Math.floor(str.length/4);
	var i, j;
	for(i=0, j=0; i<len; i++, j+=4) {
		be[i] = ((str.charCodeAt(j)&0xff) << 24)|((str.charCodeAt(j+1)&0xff) << 16)|((str.charCodeAt(j+2)&0xff) << 8)|(str.charCodeAt(j+3)&0xff);
	}
	while (j<str.length) {
		be[j>>2] |= (str.charCodeAt(j)&0xff)<<(24-(j*8)%32);
		j++;
	}
	return be;
};

// Convert an array of big-endian 32-bit words to a string
Crypto.be32sToStr = function(be)
{
	var str = "";
	for(var i=0;i<be.length*32;i+=8)
		str += String.fromCharCode((be[i>>5]>>>(24-i%32)) & 0xff);
	return str;
};

// Convert an array of big-endian 32-bit words to a hex string
Crypto.be32sToHex = function(be)
{
	var hex = "0123456789ABCDEF";
	var str = "";
	for(var i=0;i<be.length*4;i++)
		str += hex.charAt((be[i>>2]>>((3-i%4)*8+4))&0xF) + hex.charAt((be[i>>2]>>((3-i%4)*8))&0xF);
	return str;
};

// Return, in hex, the SHA-1 hash of a string
Crypto.hexSha1Str = function(str)
{
	return Crypto.be32sToHex(Crypto.sha1Str(str));
};

// Return the SHA-1 hash of a string
Crypto.sha1Str = function(str)
{
	return Crypto.sha1(Crypto.strToBe32s(str),str.length);
};

// Calculate the SHA-1 hash of an array of blen bytes of big-endian 32-bit words
Crypto.sha1 = function(x,blen)
{
	// Add 32-bit integers, wrapping at 32 bits
	add32 = function(a,b)
	{
		var lsw = (a&0xFFFF)+(b&0xFFFF);
		var msw = (a>>16)+(b>>16)+(lsw>>16);
		return (msw<<16)|(lsw&0xFFFF);
	};
	// Add five 32-bit integers, wrapping at 32 bits
	add32x5 = function(a,b,c,d,e)
	{
		var lsw = (a&0xFFFF)+(b&0xFFFF)+(c&0xFFFF)+(d&0xFFFF)+(e&0xFFFF);
		var msw = (a>>16)+(b>>16)+(c>>16)+(d>>16)+(e>>16)+(lsw>>16);
		return (msw<<16)|(lsw&0xFFFF);
	};
	// Bitwise rotate left a 32-bit integer by 1 bit
	rol32 = function(n)
	{
		return (n>>>31)|(n<<1);
	};

	var len = blen*8;
	// Append padding so length in bits is 448 mod 512
	x[len>>5] |= 0x80 << (24-len%32);
	// Append length
	x[((len+64>>9)<<4)+15] = len;
	var w = Array(80);

	var k1 = 0x5A827999;
	var k2 = 0x6ED9EBA1;
	var k3 = 0x8F1BBCDC;
	var k4 = 0xCA62C1D6;

	var h0 = 0x67452301;
	var h1 = 0xEFCDAB89;
	var h2 = 0x98BADCFE;
	var h3 = 0x10325476;
	var h4 = 0xC3D2E1F0;

	for(var i=0;i<x.length;i+=16) {
		var j,t;
		var a = h0;
		var b = h1;
		var c = h2;
		var d = h3;
		var e = h4;
		for(j = 0;j<16;j++) {
			w[j] = x[i+j];
			t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=16;j<20;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=20;j<40;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k2);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=40;j<60;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),(b&c)|(d&(b|c)),w[j],k3);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=60;j<80;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k4);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}

		h0 = add32(h0,a);
		h1 = add32(h1,b);
		h2 = add32(h2,c);
		h3 = add32(h3,d);
		h4 = add32(h4,e);
	}
	return Array(h0,h1,h2,h3,h4);
};


}
//}}}

/***
|''Name:''|DeprecatedFunctionsPlugin|
|''Description:''|Support for deprecated functions removed from core|
***/
//{{{
if(!version.extensions.DeprecatedFunctionsPlugin) {
version.extensions.DeprecatedFunctionsPlugin = {installed:true};

//--
//-- Deprecated code
//--

// @Deprecated: Use createElementAndWikify and this.termRegExp instead
config.formatterHelpers.charFormatHelper = function(w)
{
	w.subWikify(createTiddlyElement(w.output,this.element),this.terminator);
};

// @Deprecated: Use enclosedTextHelper and this.lookaheadRegExp instead
config.formatterHelpers.monospacedByLineHelper = function(w)
{
	var lookaheadRegExp = new RegExp(this.lookahead,"mg");
	lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = lookaheadRegExp.exec(w.source);
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		var text = lookaheadMatch[1];
		if(config.browser.isIE)
			text = text.replace(/\n/g,"\r");
		createTiddlyElement(w.output,"pre",null,null,text);
		w.nextMatch = lookaheadRegExp.lastIndex;
	}
};

// @Deprecated: Use <br> or <br /> instead of <<br>>
config.macros.br = {};
config.macros.br.handler = function(place)
{
	createTiddlyElement(place,"br");
};

// Find an entry in an array. Returns the array index or null
// @Deprecated: Use indexOf instead
Array.prototype.find = function(item)
{
	var i = this.indexOf(item);
	return i == -1 ? null : i;
};

// Load a tiddler from an HTML DIV. The caller should make sure to later call Tiddler.changed()
// @Deprecated: Use store.getLoader().internalizeTiddler instead
Tiddler.prototype.loadFromDiv = function(divRef,title)
{
	return store.getLoader().internalizeTiddler(store,this,title,divRef);
};

// Format the text for storage in an HTML DIV
// @Deprecated Use store.getSaver().externalizeTiddler instead.
Tiddler.prototype.saveToDiv = function()
{
	return store.getSaver().externalizeTiddler(store,this);
};

// @Deprecated: Use store.allTiddlersAsHtml() instead
function allTiddlersAsHtml()
{
	return store.allTiddlersAsHtml();
}

// @Deprecated: Use refreshPageTemplate instead
function applyPageTemplate(title)
{
	refreshPageTemplate(title);
}

// @Deprecated: Use story.displayTiddlers instead
function displayTiddlers(srcElement,titles,template,unused1,unused2,animate,unused3)
{
	story.displayTiddlers(srcElement,titles,template,animate);
}

// @Deprecated: Use story.displayTiddler instead
function displayTiddler(srcElement,title,template,unused1,unused2,animate,unused3)
{
	story.displayTiddler(srcElement,title,template,animate);
}

// @Deprecated: Use functions on right hand side directly instead
var createTiddlerPopup = Popup.create;
var scrollToTiddlerPopup = Popup.show;
var hideTiddlerPopup = Popup.remove;

// @Deprecated: Use right hand side directly instead
var regexpBackSlashEn = new RegExp("\\\\n","mg");
var regexpBackSlash = new RegExp("\\\\","mg");
var regexpBackSlashEss = new RegExp("\\\\s","mg");
var regexpNewLine = new RegExp("\n","mg");
var regexpCarriageReturn = new RegExp("\r","mg");

}
//}}}
<!--{{{-->
<div class='toolbar'  macro='toolbar +saveTiddler -cancelTiddler deleteTiddler'></div>
<div class='title'  macro='view title'></div>
<div class='editor'  macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor'  macro='edit text'></div>
<div class='editor' macro='edit tags'></div>
<div class='editorFooter'><span macro='message views.editor.tagPrompt'></span>
<span macro='tagChooser'></span></div>
<!--}}}-->
//{{{

	
//============================================================================
//============================================================================
//		   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 */
//}}}
<<top>><<icon tbala_top.bmp 16 16>>
<<jump j '' top>><<icon tbala_jump.bmp 16 16>>
/***
|Name|HoverMenuPlugin|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#HoverMenuPlugin|
|Version|1.11|
|Requires|~TW2.x|
!Description:
Provides a hovering menu on the edge of the screen for commonly used commands, that scrolls with the page.

!Demo:
Observe the hovering menu on the right edge of the screen.

!Installation:
Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
To customize your HoverMenu, edit the HoverMenu shadow tiddler.

To customize whether the menu sticks to the right or left edge of the screen, and its start position, edit the HoverMenu configuration settings part of the code below. It's well documented, so don't be scared!

The menu has an id of hoverMenu, in case you want to style the buttons in it using css.

!Notes:
Since the default HoverMenu contains buttons for toggling the side bar and jumping to the top of the screen and to open tiddlers, the ToggleSideBarMacro, JumpMacro and the JumpToTopMacro are included in this tiddler, so you dont need to install them separately. Having them installed separately as well could lead to complications.

If you dont intend to use these three macros at all, feel free to remove those sections of code in this tiddler.

!Code
***/

/***
start HoverMenu plugin code
***/
//{{{
config.hoverMenu={};
//}}}

/***
HoverMenu configuration settings
***/
//{{{
config.hoverMenu.settings={
               align: 'right',    //align menu to right or left side of screen, possible values are 'right' and 'left'               
               x: 1,              // horizontal distance of menu from side of screen, increase to your liking.
               y: 158            //vertical distance of menu from top of screen at start, increase or decrease to your liking
               };
//}}}

//{{{
//continue HoverMenu plugin code
config.hoverMenu.handler=function()
{              
               if (!document.getElementById("hoverMenu"))
               {
               var theMenu = createTiddlyElement(document.getElementById("contentWrapper"), "div","hoverMenu");
               theMenu.setAttribute("refresh","content");
               theMenu.setAttribute("tiddler","HoverMenu");
               var menuContent = store.getTiddlerText("HoverMenu");
               wikify(menuContent,theMenu);
              }

	       var Xloc = this.settings.x;
	       Yloc =this.settings.y;
	       var ns = (navigator.appName.indexOf("Netscape") != -1);
	       function SetMenu(id)
                        {
		        var GetElements=document.getElementById?document.getElementById(id):document.all?document.all[id]:document.layers[id];
		        if(document.layers)GetElements.style=GetElements;
		        GetElements.sP=function(x,y){this.style[config.hoverMenu.settings.align]=x +"px";this.style.top=y +"px";};
		        GetElements.x = Xloc;
		        GetElements.y = findScrollY();
		        GetElements.y += Yloc;
		        return GetElements;
	                }
               window.LoCate_XY=function()
                        {
		        var pY =  findScrollY();
                        ftlObj.y += (pY + Yloc - ftlObj.y)/15;
		        ftlObj.sP(ftlObj.x, ftlObj.y);
		        setTimeout("LoCate_XY()", 10);
	                }
               ftlObj = SetMenu("hoverMenu");
	       LoCate_XY();
};

window.old_lewcid_hovermenu_restart = restart;
restart = function()
{
               window.old_lewcid_hovermenu_restart();
               config.hoverMenu.handler();
};

setStylesheet(
"#hoverMenu .imgLink, #hoverMenu .imgLink:hover {border:none; padding:0px; float:right; margin-bottom:2px; margin-top:0px;}\n"+
"#hoverMenu  .button, #hoverMenu  .tiddlyLink {border:none; font-weight:bold; background:#ccccff; color:#FFF; padding:0 5px; float:right; margin-bottom:0px;}\n"+
"#hoverMenu .button:hover, #hoverMenu .tiddlyLink:hover {font-weight:bold; border:none;  color:#fff; background:#000;padding:0 5px; float:right; margin-bottom:2px;}\n"+
"#hoverMenu .button {width:100%; text-align:center}"+
"#hoverMenu { position:absolute; width:16px;}\n"+
"\n","hoverMenuStyles");


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

               if (place.lastChild.tagName!="BR")
                     {
                      place.lastChild.firstChild.data = params[0];
                      if (params[1]) {place.lastChild.title = params[1];}
                     }
};

config.shadowTiddlers["HoverMenu"]="<<top>>\n<<toggleSideBar>><<renameButton '>' >>\n<<jump j '' top>>\n<<saveChanges>><<renameButton s 'Save TiddlyWiki'>>\n<<newTiddler>><<renameButton n>>\n";
//}}}
//end HoverMenu plugin code

//utility functions
//{{{
Popup.show = function(unused,slowly)
{
	var curr = Popup.stack[Popup.stack.length-1];
	var rootLeft = findPosX(curr.root);
	var rootTop = findPosY(curr.root);
	var rootHeight = curr.root.offsetHeight;
	var popupLeft = rootLeft;
	var popupTop = rootTop + rootHeight;
	var popupWidth = curr.popup.offsetWidth;
	var winWidth = findWindowWidth();
        if (isChild(curr.root,'hoverMenu'))
              var x = config.hoverMenu.settings.x;
        else
              var x = 0;
	if(popupLeft + popupWidth+x > winWidth)
		popupLeft = winWidth - popupWidth -x;
        if (isChild(curr.root,'hoverMenu'))
  	        {curr.popup.style.right = x + "px";}
        else
                curr.popup.style.left = popupLeft + "px";
	curr.popup.style.top = popupTop + "px";
	curr.popup.style.display = "block";
	addClass(curr.root,"highlight");
	if(config.options.chkAnimate)
		anim.startAnimating(new Scroller(curr.popup,slowly));
	else
		window.scrollTo(0,ensureVisible(curr.popup));
}

window.isChild = function(e,parentId) {
        while (e != null) {
                var parent = document.getElementById(parentId);
                if (parent == e) return true;
                e = e.parentNode;
                }
        return false;
};
//}}}
//{{{
/* version: beta 1.1
   replace macro buttons with icons
   params[0] = image location
   params[1] = image width
   params[2] = image height
   params[3] = image title (optional)
*/
config.macros.icon={};
config.macros.icon.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{

               if (place.lastChild.tagName!="BR")
                     {
                     var tempTitle = place.lastChild.firstChild.title;
                     removeChildren(place.lastChild);
                     place.lastChild.className = "imgLink";
                     var img = createTiddlyElement(place.lastChild,"img");
                     img.src = params[0];
                     if (params[3])
                         img.title = params[3];
                     img.width= params[1];
                     img.height =params[2];
                     }
};

/*
  use icons for toolbar commands.
  used in view template like:
  <span macro='commandIcon jump jump.bmp'></span>
  params[0] = command name
  params[1] = image location
*/

config.macros.commandIcon={};
config.macros.commandIcon.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{if(!e) var e = window.event;
    var img = createTiddlyElement(place,"img",null,"toolbarImg");
    img.src = params[1];
    img.onclick = function(){config.commands[params[0]].handler(e,place,story.findContainingTiddler(place).getAttribute("tiddler"));};
    img.title = config.commands[params[0]].tooltip;
}

setStylesheet(".toolbarImg {vertical-align: middle; cursor:pointer;}\n","commandIconStyles"); 

//}}}
<<importTiddlers>>
//{{{
version.extensions.inlineJavascript= {major: 1, minor: 7, revision: 0, date: new Date(2007,12,15)};

config.formatters.push( {
	name: "inlineJavascript",
	match: "\\<script",
	lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",

	handler: function(w) {
		var lookaheadRegExp = new RegExp(this.lookahead,"mg");
		lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			var src=lookaheadMatch[1];
			var label=lookaheadMatch[2];
			var tip=lookaheadMatch[3];
			var show=lookaheadMatch[4];
			var code=lookaheadMatch[5];
			if (src) { // load a script library
				// make script tag, set src, add to body to execute, then remove for cleanup
				var script = document.createElement("script"); script.src = src;
				document.body.appendChild(script); document.body.removeChild(script);
			}
			if (code) { // there is script code
				if (show) // show inline script code in tiddler output
					wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
				if (label) { // create a link to an 'onclick' script
					// add a link, define click handler, save code in link (pass 'place'), set link attributes
					var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
					link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}
					var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
					link.code="function _out(place){"+fixup+"\n};_out(this);"
					link.setAttribute("title",tip?tip:"");
					var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
					URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
					URIcode+='}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';
					link.setAttribute("href",URIcode);
					link.style.cursor="pointer";
				}
				else { // run inline script code
					var code="function _out(place){"+code.replace(/document.write\s*\(/gi,'place.innerHTML+=(')+"\n};_out(w.output);"
					try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }
					if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
				}
			}
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
		}
	}
} )
//}}}
{{{
config.macros.jump= {};
config.macros.jump.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{
        var label = (params[0] && params[0]!=".")? params[0]: 'jump';
        var tooltip = (params[1] && params[1]!=".")? params[1]: 'jump to an open tiddler';
        var top = (params[2] && params[2]=='top') ? true: false;        

        var btn =createTiddlyButton(place,label,tooltip,this.onclick);
        if (top==true)
              btn.setAttribute("top","true")
}

config.macros.jump.onclick = function(e)
{
        if (!e) var e = window.event;
        var theTarget = resolveTarget(e);
        var top = theTarget.getAttribute("top");
	var popup = Popup.create(this);
	if(popup)
		{
                 if(top=="true")
                                {createTiddlyButton(createTiddlyElement(popup,"li"),'Top ↑','Top of TW',config.macros.jump.top);
                                 createTiddlyElement(popup,"hr");}
		
		story.forEachTiddler(function(title,element) {
			createTiddlyLink(createTiddlyElement(popup,"li"),title,true);
			});
                }
	Popup.show(popup,false);
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
	return false;
}

config.macros.jump.top = function()
{
       window.scrollTo(0,0);
}
}}}
{{{
config.macros.top={};
config.macros.top.handler=function(place,macroName)
{
               createTiddlyButton(place,"^","jump to top",this.onclick);
}
config.macros.top.onclick=function()
{
               window.scrollTo(0,0);
};

config.commands.top =
{
               text:" ^ ",
               tooltip:"jump to top"
};

config.commands.top.handler = function(event,src,title)
{
               window.scrollTo(0,0);
}
}}}
//{{{
version.extensions.LaunchApplication = {major: 1, minor: 3, revision: 1, date: new Date(2007,8,7)};
config.macros.LaunchApplication = {};

function LaunchApplication(appToLaunch,appParams) {
    if(! appToLaunch)
	return;
    var tiddlyBaseDir = self.location.pathname.substring(0,self.location.pathname.lastIndexOf("\\")+1);
    if(!tiddlyBaseDir || tiddlyBaseDir == "") {
	tiddlyBaseDir = self.location.pathname.substring(0,self.location.pathname.lastIndexOf("/")+1);
    }
    // if Returns with a leading slash, we don't want that.
    if(tiddlyBaseDir.substring(0,1) == "/") {
	tiddlyBaseDir = tiddlyBaseDir.substring(1);
    }
    if(appToLaunch.indexOf("file:///") == 0) // windows would have C:\ as the resulting file
    {
	tiddlyBaseDir = "";
	appToLaunch = appToLaunch.substring(8);
    }

    if (config.browser.isIE) {
	// want where the tiddly is actually located, excluding tiddly html file

	var theShell = new ActiveXObject("WScript.Shell");
	if(theShell) {
            // the app name may have a directory component, need that too
	    // as we want to start with current working dir as the location
	    // of the app.
	    var appDir = appToLaunch.substring(0, appToLaunch.lastIndexOf("\\"));
	    if(! appDir || appDir == "") {
		appDir = appToLaunch.substring(0, appToLaunch.lastIndexOf("/"));
	    }
	    appParams = appParams.length > 0 ? " \""+appParams.join("\" \"")+"\"" : "";
	    try {
		theShell.CurrentDirectory = decodeURI(tiddlyBaseDir + appDir);
		var commandString = ('"' +decodeURI(tiddlyBaseDir+appToLaunch) + '" ' + appParams);
		pluginInfo.log.push(commandString);
	        theShell.run(commandString);
	    } catch (e) {
		displayMessage("LaunchApplication cannot locate/execute file '"+tiddlyBaseDir+appToLaunch+"'");
		return;
	    }
	} else {
	    displayMessage("LaunchApplication failed to create ActiveX component WScript.Shell");
	}
    } else { // Not IE
	// want where the tiddly is actually located, excluding tiddly html file
	netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
        var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
        var launchString;
	try { // try linux/unix format
            launchString = decodeURI(tiddlyBaseDir+appToLaunch);
	    file.initWithPath(launchString);
	} catch (e) {
	    try { // leading slash on tiddlyBaseDir
                launchString = decodeURI("/"+tiddlyBaseDir+appToLaunch);
		file.initWithPath(launchString);
	    } catch (e) {
		try { // try windows format
		    launchString = decodeURI(appToLaunch).replace(/\//g,"\\");
		    file.initWithPath(launchString);
		} catch (e) {
		    try { // try windows format
			launchString = decodeURI(tiddlyBaseDir+appToLaunch).replace(/\//g,"\\");
			file.initWithPath(launchString);
		    } catch (e) {
			displayMessage("LaunchApplication cannot locate file '"+launchString+"' : "+e);
			return;
		    } // try windows mode
		} // try windows mode
	    }; // try with leading slash in tiddlyBaseDir
	}; // try linux/unix mode
	try {
	    if (file.isFile() && file.isExecutable()) {
		displayMessage("LaunchApplication executing '"+launchString+"' "+appParams.join(" "));
		var process = Components.classes['@mozilla.org/process/util;1'].createInstance(Components.interfaces.nsIProcess);
		process.init(file);
		process.run(false, appParams, appParams.length);
	    }
	    else
	    {
		displayMessage("LaunchApplication launching '"+launchString+"' "+appParams.join(" "));
		file.launch(); // No args available with this option
	    }
	} catch (e) {
	    displayMessage("LaunchApplication cannot execute/launch file '"+launchString+"'");
	}
    }
};

config.macros.LaunchApplication.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
    // 0=ButtonText, 1=toolTip, 2=AppToLaunch, 3...AppParameters
    
    if (params[0] && params[1] && params[2]) {
        var theButton = createTiddlyButton(place, getParam(params,"buttonText",params[0]), getParam(params,"toolTip",params[1]), onClickLaunchApplication);
        theButton.setAttribute("appToLaunch", getParam(params,"appToLaunch",params[2]));
        params.splice(0,3);
        theButton.setAttribute("appParameters", params.join(" "));
        return;
    }
}

    function onClickLaunchApplication(e) {
	var theAppToLaunch = this.getAttribute("appToLaunch");
	var theAppParams = this.getAttribute("appParameters").readMacroParams();
	LaunchApplication(theAppToLaunch,theAppParams);
    }

//}}}
#MOMO熊10週年紀念桌布
[img[10th-01.jpg]]
#MOMO熊10週年紀念桌布
[img[10th-02.jpg]]
#MOMO熊可愛巧克力全部12種類
[img[10th-03.jpg]]
#MOMO熊桌布2007年12月
[img[12.jpg]]
#MOMO熊桌布2007年11月
[img[11.jpg]]
#MOMO熊桌布2007年10月
[img[10.jpg]]
#MOMO熊桌布2007年9月
[img[9.jpg]]
#MOMO熊桌布2007年8月
[img[8.jpg]]
#MOMO熊桌布2007年7月
[img[7.jpg]]
#MOMO熊桌布2007年6月
[img[6.jpg]]
#MOMO熊桌布2007年5月
[img[5.jpg]]
#MOMO熊桌布2007年4月
[img[4.jpg]]
#MOMO熊桌布2007年3月
[img[3.jpg]]

圖片來源自So-net及小方的部落格
[[關於我]] | [[好站連結]] | [[小布檔案]] | [[創用CC]] |[[芷愛旅遊|http://sallytraveling.googlepages.com/sallytrip.html]] | PostPet | [[Color色碼表]] |



<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>
<link rel="shortcut icon" href="Sally.ico" >
<link rel="icon" href="Sally_icon.jpg" type="image/jpg" >
<!--}}}-->
這些設定將暫存於瀏覽器

請簽名<<option txtUserName>>
 (範例:Sally)

 <<option chkSaveBackups>> 儲存備份
 <<option chkAutoSave>> 自動儲存
 <<option chkRegExpSearch>> 正規式搜尋
 <<option chkCaseSensitiveSearch>> 區分大小寫搜尋
 <<option chkAnimate>> 使用動畫顯示
<!--{{{-->
<!--template by SallyChang -->

<div id="cb">

<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
  <div class='headerForeground'>
    <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
    <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
  </div>
</div>

<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id="content">

<div id='sidebar'>
  <div id="sidebarOptions" refresh='content' tiddler='SideBarOptions' ></div><br>
  <div id="Sally" refresh='content' tiddler='Sally' ></div>  
  <div id="clock" refresh='content' tiddler='clock' ></div>
  <div id="10週年慶" refresh='content' tiddler='10週年慶' ></div><br>
  <div id="counter" refresh='content' tiddler='counter' ></div>
  <div id="guestbook" refresh='content' tiddler='guestbook' ></div><br>  
  <div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
  
</div>

<div id='displayArea'>
  <div id='messageArea'></div>
  <div id='tiddlerDisplay'></div>
</div>
<em class="clear">&nbsp;</em>

</div>

</div>

<div id="footer">
©2008 SallyChang All Rights Reserved.<br>
<div id="授權模式" refresh='content' tiddler='授權模式' ></div>
TiddlyWiki 2.3.0&nbsp;
</div>


<!--}}}-->
//{{{
//============================================================================
//                           PartTiddlerPlugin

// Ensure that the PartTiddler Plugin is only installed once.
//
if (!version.extensions.PartTiddlerPlugin) {

version.extensions.PartTiddlerPlugin = {
    major: 1, minor: 0, revision: 9,
    date: new Date(2007, 6, 14), 
    type: 'plugin',
    source: "http://tiddlywiki.abego-software.de/#PartTiddlerPlugin"
};

if (!window.abego) window.abego = {};
if (version.major < 2) alertAndThrow("PartTiddlerPlugin requires TiddlyWiki 2.0 or newer.");

//============================================================================
// Common Helpers

// Looks for the next newline, starting at the index-th char of text. 
//
// If there are only whitespaces between index and the newline 
// the index behind the newline is returned, 
// otherwise (or when no newline is found) index is returned.
//
var skipEmptyEndOfLine = function(text, index) {
	var re = /(\n|[^\s])/g;
	re.lastIndex = index;
	var result = re.exec(text);
	return (result && text.charAt(result.index) == '\n') 
			? result.index+1
			: index;
}


//============================================================================
// Constants

var partEndOrStartTagRE = /(<\/part>)|(<part(?:\s+)((?:[^>])+)>)/mg;
var partEndTagREString = "<\\/part>";
var partEndTagString = "</part>";

//============================================================================
// Plugin Specific Helpers

// Parse the parameters inside a <part ...> tag and return the result.
//
// @return [may be null] {partName: ..., isHidden: ...}
//
var parseStartTagParams = function(paramText) {
	var params = paramText.readMacroParams();
	if (params.length == 0 || params[0].length == 0) return null;
	
	var name = params[0];
	var paramsIndex = 1;
	var hidden = false;
	if (paramsIndex < params.length) {
		hidden = params[paramsIndex] == "hidden";
		paramsIndex++;
	}
	
	return {
		partName: name, 
		isHidden: hidden
	};
}

// Returns the match to the next (end or start) part tag in the text, 
// starting the search at startIndex.
// 
// When no such tag is found null is returned, otherwise a "Match" is returned:
// [0]: full match
// [1]: matched "end" tag (or null when no end tag match)
// [2]: matched "start" tag (or null when no start tag match)
// [3]: content of start tag (or null if no start tag match)
//
var findNextPartEndOrStartTagMatch = function(text, startIndex) {
	var re = new RegExp(partEndOrStartTagRE);
	re.lastIndex = startIndex;
	var match = re.exec(text);
	return match;
}

//============================================================================
// Formatter

// Process the <part ...> ... </part> starting at (w.source, w.matchStart) for formatting.
//
// @return true if a complete part section (including the end tag) could be processed, false otherwise.
//
var handlePartSection = function(w) {
	var tagMatch = findNextPartEndOrStartTagMatch(w.source, w.matchStart);
	if (!tagMatch) return false;
	if (tagMatch.index != w.matchStart || !tagMatch[2]) return false;

	// Parse the start tag parameters
	var arguments = parseStartTagParams(tagMatch[3]);
	if (!arguments) return false;
	
	// Continue processing
	var startTagEndIndex = skipEmptyEndOfLine(w.source, tagMatch.index + tagMatch[0].length);
	var endMatch = findNextPartEndOrStartTagMatch(w.source, startTagEndIndex);
	if (endMatch && endMatch[1]) {
		if (!arguments.isHidden) {
			w.nextMatch = startTagEndIndex;
			w.subWikify(w.output,partEndTagREString);
		}
		w.nextMatch = skipEmptyEndOfLine(w.source, endMatch.index + endMatch[0].length);
		
		return true;
	}
	return false;
}

config.formatters.push( {
    name: "part",
    match: "<part\\s+[^>]+>",
	
	handler: function(w) {
		if (!handlePartSection(w)) {
			w.outputText(w.output,w.matchStart,w.matchStart+w.matchLength);
		}
	}
} )

//============================================================================
// Extend "fetchTiddler" functionality to also recognize "part"s of tiddlers 
// as tiddlers.

var currentParent = null; // used for the "." parent (e.g. in the "tiddler" macro)

// Return the match to the first <part ...> tag of the text that has the
// requrest partName.
//
// @return [may be null]
//
var findPartStartTagByName = function(text, partName) {
	var i = 0;
	
	while (true) {
		var tagMatch = findNextPartEndOrStartTagMatch(text, i);
		if (!tagMatch) return null;

		if (tagMatch[2]) {
			// Is start tag
	
			// Check the name
			var arguments = parseStartTagParams(tagMatch[3]);
			if (arguments && arguments.partName == partName) {
				return tagMatch;
			}
		}
		i = tagMatch.index+tagMatch[0].length;
	}
}

// Return the part "partName" of the given parentTiddler as a "readOnly" Tiddler 
// object, using fullName as the Tiddler's title. 
//
// All remaining properties of the new Tiddler (tags etc.) are inherited from 
// the parentTiddler.
// 
// @return [may be null]
//
var getPart = function(parentTiddler, partName, fullName) {
	var text = parentTiddler.text;
	var startTag = findPartStartTagByName(text, partName);
	if (!startTag) return null;
	
	var endIndexOfStartTag = skipEmptyEndOfLine(text, startTag.index+startTag[0].length);
	var indexOfEndTag = text.indexOf(partEndTagString, endIndexOfStartTag);

	if (indexOfEndTag >= 0) {
		var partTiddlerText = text.substring(endIndexOfStartTag,indexOfEndTag);
		var partTiddler = new Tiddler();
		partTiddler.set(
						fullName,
						partTiddlerText,
						parentTiddler.modifier,
						parentTiddler.modified,
						parentTiddler.tags,
						parentTiddler.created);
		partTiddler.abegoIsPartTiddler = true;
		return partTiddler;
	}
	
	return null;
}

// Hijack the store.fetchTiddler to recognize the "part" addresses.
//
var hijackFetchTiddler = function() {
	var oldFetchTiddler = store.fetchTiddler ;
	store.fetchTiddler = function(title) {
		var result = oldFetchTiddler.apply(this, arguments);
		if (!result && title) {
			var i = title.lastIndexOf('/');
			if (i > 0) {
				var parentName = title.substring(0, i);
				var partName = title.substring(i+1);
				var parent = (parentName == ".") 
						? store.resolveTiddler(currentParent)
						: oldFetchTiddler.apply(this, [parentName]);
				if (parent) {
					return getPart(parent, partName, parent.title+"/"+partName);
				}
			}
		}
		return result;	
	};
};

// for debugging the plugin is not loaded through the systemConfig mechanism but via a script tag. 
// At that point in the "store" is not yet defined. In that case hijackFetchTiddler through the restart function.
// Otherwise hijack now.
if (!store) {
	var oldRestartFunc = restart;
	window.restart = function() {
		hijackFetchTiddler();
		oldRestartFunc.apply(this,arguments);
	};
} else
	hijackFetchTiddler();




// The user must not edit a readOnly/partTiddler
//

config.commands.editTiddler.oldIsReadOnlyFunction = Tiddler.prototype.isReadOnly;

Tiddler.prototype.isReadOnly = function() {
	// Tiddler.isReadOnly was introduced with TW 2.0.6.
	// For older version we explicitly check the global readOnly flag
	if (config.commands.editTiddler.oldIsReadOnlyFunction) {
		if (config.commands.editTiddler.oldIsReadOnlyFunction.apply(this, arguments)) return true;
	} else {
		if (readOnly) return true;
	}

	return this.abegoIsPartTiddler;
}

config.commands.editTiddler.handler = function(event,src,title)
{
	var t = store.getTiddler(title);
	// Edit the tiddler if it either is not a tiddler (but a shadowTiddler)
	// or the tiddler is not readOnly
	if(!t || !t.abegoIsPartTiddler)
		{
		clearMessage();
		story.displayTiddler(null,title,DEFAULT_EDIT_TEMPLATE);
		story.focusTiddler(title,"text");
		return false;
		}
}

// To allow the "./partName" syntax in macros we need to hijack 
// the invokeMacro to define the "currentParent" while it is running.
// 
var oldInvokeMacro = window.invokeMacro;
function myInvokeMacro(place,macro,params,wikifier,tiddler) {
	var oldCurrentParent = currentParent;
	if (tiddler) currentParent = tiddler;
	try {
		oldInvokeMacro.apply(this, arguments);
	} finally {
		currentParent = oldCurrentParent;
	}
}
window.invokeMacro = myInvokeMacro;

// To correctly support the "./partName" syntax while refreshing we need to hijack 
// the config.refreshers.tiddlers to define the "currentParent" while it is running.
// 
(function() {
	var oldTiddlerRefresher= config.refreshers.tiddler;
	config.refreshers.tiddler = function(e,changeList) {
		var oldCurrentParent = currentParent;
		try {
			currentParent = e.getAttribute("tiddler");
			return oldTiddlerRefresher.apply(this,arguments);
		} finally {
			currentParent = oldCurrentParent;
		}
	};
})();

// Support "./partName" syntax inside <<tabs ...>> macro
(function() {
	var extendRelativeNames = function(e, title) {
		var nodes = e.getElementsByTagName("a");
		for(var i=0; i<nodes.length; i++) {
			var node = nodes[i];
			var s = node.getAttribute("content");
			if (s && s.indexOf("./") == 0)
				node.setAttribute("content",title+s.substr(1));
		}
	};
	var oldHandler = config.macros.tabs.handler;
	config.macros.tabs.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
		var result = oldHandler.apply(this,arguments);
		if (tiddler)
			extendRelativeNames(place, tiddler.title);
		return result;
	};
})();

// Scroll the anchor anchorName in the viewer of the given tiddler visible.
// When no tiddler is defined use the tiddler of the target given event is used.
window.scrollAnchorVisible = function(anchorName, tiddler, evt) {
	var tiddlerElem = null;
	if (tiddler) {
		tiddlerElem = document.getElementById(story.idPrefix + tiddler);
	}
	if (!tiddlerElem && evt) {
		var target = resolveTarget(evt);
		tiddlerElem = story.findContainingTiddler(target);
	}
	if (!tiddlerElem) return;

	var children = tiddlerElem.getElementsByTagName("a");
	for (var i = 0; i < children.length; i++) {
		var child = children[i];
		var name = child.getAttribute("name");
		if (name == anchorName) {
			var y = findPosY(child);
			window.scrollTo(0,y);
			return;
		}
	}
}

} // of "install only once"
//}}}
/***
|''Name:''|PhotoGalleryPlugin|
|''Description:''|A browser for a photo gallery with navigational buttons and optional subtitles|
|''Version:''|1.0.0|
|''Date:''|Sep 12, 2007|
|''Source:''|http://www.math.ist.utl.pt/~psoares/addons.html|
|''Documentation:''|[[PhotoGalleryPlugin Documentation|PhotoGalleryPluginDoc]]|
|''Author:''|Paulo Soares|
|''License:''|[[Creative Commons Attribution-Share Alike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.1.0|
***/
//{{{
config.macros.photoGallery = {};
var photoGalleryAutoAdvanceObject=null;
var photoGalleryLabels=null;

photoGalleryAutoAdvance = function() {
 var viewer=document.getElementById("imageGallery");
 var play=document.getElementById("photoGalleryPlayButton");
 var time = parseFloat(viewer.getAttribute("AdvanceTime"));
 if(photoGalleryAutoAdvanceObject) {
  clearInterval(photoGalleryAutoAdvanceObject);
  photoGalleryAutoAdvanceObject = null;
  play.firstChild.data = '►';
 } else {
  if(time>0) {
   photoGalleryAutoAdvanceObject = setInterval("photoGalleryJump('n')", time);
   play.firstChild.data = '▣';
  }
 }
 return;
}

photoGalleryJump = function(step) {
 var viewer=document.getElementById("imageGallery");
 var current = parseFloat(viewer.getAttribute("currentImage"));
 var first = parseFloat(viewer.getAttribute("firstImage"));
 var last = parseFloat(viewer.getAttribute("lastImage"));
 switch (step) {
  case "f":
   var target=first;
   break;
  case "l":
   var target=last;
   break;
  case "n":
   var target = ((current+1)>last) ? first : current+1; 
   break;
  case "p":
   var target = ((current-1)<first) ? last : current-1; 
 }
 document.getElementById( 'imageGalleryObject'+current).style.display='none';
 viewer.setAttribute("currentImage",target);
 document.getElementById( 'imageGalleryObject'+target).style.display='block';
 var currentImage = document.getElementById('currentImage');
 if(currentImage) currentImage.firstChild.data = (target-first+1) + '/'+ (last-first+1);
 currentImage = document.getElementById('photoGalleryLabel');
 if(currentImage) currentImage.firstChild.data = photoGalleryLabels[target-first];
 return;
}

config.macros.photoGallery.handler= function(place,macroName,params,wikifier,paramString,tiddler) {
 if (params.length<3) return;
 var args = paramString.parseParams("list",null,true);
 var title = tiddler.title;
 var url = getParam(args,"url",undefined);
 var first = getParam(args,"first",undefined);
 var last = getParam(args,"last",undefined);
 var height = getParam(args,"height",undefined);
 var width = getParam(args,"width",undefined);
 var time = getParam(args,"time",0);
 var labels = getParam(args,"labels",undefined);
 var numbers = getParam(args,"numbers",true);
 var tiddlerElements = document.getElementById("tiddler"+title).childNodes;
 for (var i = 0; i < tiddlerElements.length; i++){
  if (tiddlerElements[i].className == "viewer"){
   var viewer = tiddlerElements[i];
   break;
  }
 }
 var photoGalleryNextImage = function(e){photoGalleryJump('n');}
 var photoGalleryPreviousImage = function(e){photoGalleryJump('p');}
 var photoGalleryLastImage = function(e){photoGalleryJump('l');}
 var photoGalleryFirstImage = function(e){photoGalleryJump('f');}
 var pictureHolder = document.createElement('CENTER');
 pictureHolder.id = "imageGallery";
 createTiddlyButton(pictureHolder,"«","",photoGalleryFirstImage);
 createTiddlyButton(pictureHolder,"‹","",photoGalleryPreviousImage);
 if(time>0) {
  var play = createTiddlyButton(pictureHolder,"►","",photoGalleryAutoAdvance);
  play.id = 'photoGalleryPlayButton';
  pictureHolder.setAttribute("advanceTime",time);
 }
 createTiddlyButton(pictureHolder,"›","",photoGalleryNextImage);
 createTiddlyButton(pictureHolder,"»","",photoGalleryLastImage);
 pictureHolder.setAttribute("currentImage",first);
 pictureHolder.setAttribute("firstImage",first);
 pictureHolder.setAttribute("lastImage",last);
 var pos = url.indexOf('*');
 var image;
 var style='block';
 if(labels) photoGalleryLabels = store.getTiddlerText(labels).split("\n");
 for(i=first; i<=last; i++){
  image=pictureHolder.appendChild(document.createElement('IMG'));
  image.src = url.substring(0,pos)+i+url.substring(pos+1);
  image.id = 'imageGalleryObject'+i;
  image.style.display=style;
  image.style.marginTop="0.5em";
  image.style.marginBottom="0.5em";
  style='none';
  if(height) image.height = height;
  if(width) image.width = width;
  viewer.appendChild(pictureHolder);
 }
 if(labels) createTiddlyElement(pictureHolder,"DIV","photoGalleryLabel","",photoGalleryLabels[0]);
 if(numbers==true){
  var numImages=last-first+1;
  createTiddlyElement(pictureHolder,"SPAN","currentImage","","1/"+numImages);
 }
}
//}}}
/***
|''Name:''|PhotoShowPlugin|
|''Description:''|Photo gallery slide show|
|''Version:''|1.0.2|
|''Date:''|Oct 07, 2007|
|''Source:''|http://www.math.ist.utl.pt/~psoares/addons.html|
|''Documentation:''|[[PhotoShowPlugin Documentation|PhotoShowPluginDoc]]|
|''Author:''|Paulo Soares|
|''License:''|[[Creative Commons Attribution-Share Alike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.1.0|
|''Requires:''|[[SlideShowPlugin]]|
***/
//{{{
config.macros.photoShow = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
			if (params.length<3) return;
			title = tiddler.title;
			var url = params[0];
			var first = params[1];
			var last = params[2];
			var pos = url.indexOf('*');
		// Grab the 'viewer' element
			var tiddlerElements = document.getElementById("tiddler"+title).childNodes;
			var viewer;
			for (var i = 0; i < tiddlerElements.length; i++){
				if (tiddlerElements[i].className == "viewer"){
					viewer = tiddlerElements[i];
					break;
				}
			}
		var pictureHolder;
		var separator;
		for(i=first; i<=last; i++){
			separator=document.createElement('HR');
			separator.className="slideSeparator";
			viewer.appendChild(separator);
			pictureHolder = document.createElement('CENTER');
			pictureHolder.appendChild(document.createElement('IMG'));
			pictureHolder.lastChild.src = url.substring(0,pos)+i+url.substring(pos+1);
			viewer.appendChild(pictureHolder);
		}
	}
};

config.shadowTiddlers.PhotoShowPluginDoc="The documentation is missing. It is available [[here|http://www.math.ist.utl.pt/~psoares/addons.html#PhotoShowPluginDoc]].";
//}}}
<<plugins>>
!!什麼是PostPet?
PostPet 是由日本@@color:hotpink;Sony Communication Network@@公司所開發的一種嶄新電子郵件 通信軟體,結合了飼養寵物和收發E-mail的功能。

這套軟體有現在有11種電子寵物可供選擇,包括小熊、兔子、貓咪、烏龜、黃金鼠、郵差機器人、企鵝、小狗和小羊,另外還有一些貼心的設計,如會自動寫信給主人和朋友、會撿寶物回來、回家後還會寫秘密日記,敘述今天所發生的事情。

這個軟體將使您的電腦裡多出一隻可愛的寵物,牠不但會幫您送信,還會寫E-mail告訴您牠送信的#心得;同樣您也可以幫牠洗澡及餵食、玩遊戲, 您的寵物會在您的關愛之下漸漸成長,並建立屬於自己獨特的個性。
!!PostPet生活點滴
#電腦裡可以養一隻寵物,它平常會一直待在可自由改變的房間裡, 並且必須餵食、清理排泄物和陪他玩。

#當他為你送信給對方時,便會離開房間,出現在對方寵物的房間裡,此時對方的主人還可以跟他玩或請他吃點心,回家後,你的寵物會自己寫日記。 (例如:我今天到Sally家玩,他的媽咪還請我吃冰雪糕呢!而且還一直稱讚我很漂亮喔!真的很讓人開心!)

#寵物本身會也會因為主人飼養的過程而逐漸培養出自己的個性,不開心時,還會留張紙條就離家出走了。

#軟體內有一個畫面,會隨時告訴你寵物目前的狀態, 裡面紀錄了它可愛的照片、名字、年齡(以天計算)、幸福指數、智能、飢餓度、財產……。

#寵物們喜歡主人摸摸他們,他們會變得很開朗、手舞足蹈,他們最喜歡出門去送信然後在外面覓食。 
!!PostPet家族介紹 
#@@Momo:粉紅色泰迪熊@@
              智能為3-7歲
              壽命僅次於小烏龜
             智能不會增加很多
             很容易養,所以適合初學者飼養
             她很喜歡洗澡
             幸福指數很容易提高
  
#@@Furo:藍色小貓咪@@
        智商有7-14歲
        很神經質、脾氣不太好,動不動就離家出走
        行動力旺盛,可以迅速處理好郵件
        天生是個憂鬱小子,所以幸福指數很難提高
        小心照護他,他會勤奮的寫信給你的朋友
 
#@@Mippi:黃色的小白兔@@
        智商有5-10歲
        笨笨的、不太聰明,需要多費心照顧
        性格自然、怕羞、很容易覺得寂寞
        喜歡一個人孤獨的坐在角落
        常常在回家的途中,撿一些寶物回來

#@@Sumiko:小烏龜@@
        智商有20-85歲
        壽命可以維持很長
        喜歡算命,有時還會擅自幫主人占卜運勢
        愛追根究底而且喜歡諷刺人
        擅長寫有趣又貼心的E-mail
        每次都會乖乖去廁所大便,所以要常常替他清洗廁所

#@@Jinpachi:小小黃金鼠@@
        長的小小胖胖的很可愛
        送信的時候會把信放在嘴巴裡

#@@Ushe:小企鵝@@
        送信出去時,會把信放在肚子上的口袋裡
        走路時一擺一擺,很有趣

#@@Kin postman:郵差機械人@@
        如果寄信給別人而對方不是PostPet的使用者,就只能派它去了
        他不會寫秘密日記、也不會撿寶物、也不會寫E-mail

#@@Shingo:電腦人@@
        主人在幫它洗澡時,會有意想不到的事發生

#@@John:小狗@@
        洗完澡後,會高興的吐舌頭&搖尾巴

#@@(不知名):紙袋人@@
        當對方使用新版寵物送信到了舊版的地方時,會看不到新的寵物就只能看得到它
!!PostPet的新概念
有沒有想過,當您每次送出一個電子郵件時,也希望可以同時將自己的心意、感情和慰問一起傳達給對方? PostPet電郵寵物就是為了這樣的用途而創造出來的。 您也可以將PostPet電郵寵物當作一般的電子郵件軟體來使用,但除此之外,您的寵物更可替您親手送信,生動豐富的傳達了發信人的心意。

當您不想用刻板的商用電子郵件發信給親友時,PostPet電郵寵物正是為多變的您 而設計。寵物在每次送信時都會尋找到樂趣,也會經常寫秘密日記告訴您,牠在送信時您的朋友怎樣招待牠或是在送信途中撿獲了什麼東西。牠也會寫信給您的朋友互相交換心得!

PostPet雖然有足夠的電子郵件功能,但PostPet並不適合作為商業電子信件用途。如果您需要每天應付30至50個電子郵件,我們會建議您同時使用其他的商用軟件。如果您是網際網路的使用者,或者您希望透過電子郵件來認識更多新朋友的話,使用PostPet 電郵寵物軟體將會是一個最好的選擇!
!!PostPet 的歷史
PostPet從1997年11月上市以來已成為Sony集團中最為暢銷成功的網路產品與應用軟體之一。
PostPet在日本一推出即大為轟動,Momo熊連續二年被選為前十大最受歡迎的虛擬偶像明星。
PostPet在1997年榮獲日本通產省所頒發的多媒體最高榮譽獎,並在1998年獲得日本AMD獎,同年還得到法國的~Milia Children category大獎及澳洲的網路類~ArsElectronica大獎。同時日本的PostPet Park寵物公園,截至目前為止成員人數已經達到了 600,000人。1998年及1999年PostPet正式登陸香港和新加坡。2001年在台灣上市。
以Momo熊為主角的PostPet郵件軟體是其提供的內容頻道中最大的內容賣點。PostPet是一套結合收發e-mail與養寵物概念的軟體,用戶可以透過所飼養的寵物來傳送e-mail,寵物也會寫信給主人,PostPet用戶可以在收發e-mail的過程中領略養寵物的樂趣。
<html>
<body >
<img src="blythe.jpg">
</body>
</html>
/%
|Name|SaveTiddlerToFile|
|Source|http://www.TiddlyTools.com/#SaveTiddlerToFile|
|Version|1.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|save tiddler SOURCE text to a local file|

Usage: <<tiddler SaveTiddlerToFile with: label tooltip filename path>>

where all parameters are optional, and:

* label -  is text to be displayed as a clickable link
* tooltip - is guide text for when you mouseover the link
* filename and path - specify the location in which to save the file.  Any "*" characters embedded in the filename or path are automatically replaced with the current tiddler title.  If you omit the path, the current document directory is used.  If you omit the filename, you will be automatically prompted to select a destination, using a system-specific "prompt for filename" dialog box.

%/

<script label="$1" title="$2">

function promptForFilename(msg,path,file,defext)
{
	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.modeSave);
			picker.displayDirectory=null;
			picker.defaultExtension=defext;
			picker.defaultString=file;
			picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
			if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.persistentDescriptor;
		}
		catch(e) { var result=prompt(msg,path+file); }
	}
	else { // IE
		try { // XP only
			var s = new ActiveXObject('UserAccounts.CommonDialog');
			s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
			s.FilterIndex=1; // default to ALL files;
			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;
}
	var okmsg="Tiddler source written to %0";
	var failmsg="An error occurred while creating %0";
	var here=story.findContainingTiddler(place); if (!here) return;
	var title=here.getAttribute('tiddler');
	var tid=store.getTiddler(title);
	var path=getLocalPath(document.location.href);
	var slashpos=path.lastIndexOf("/"); if (slashpos==-1) slashpos=path.lastIndexOf("\\"); 
	if (slashpos!=-1) path = path.substr(0,slashpos+1); // remove filename from path, leave the trailing slash
	if ("$3"!="$"+"3") var fn="$3".replace(/\*/g,title); // custom filename with "*" marker to insert tiddlername
	if ("$4"!="$"+"4") var path="$4".replace(/\*/g,title); // custom path with "*" marker to insert tiddlername
	if ("$3"=="$"+"3") // not filename specified, ask user
		var filename=promptForFilename("select an output filename for this tiddler",path,title,""); // ask
	else
		var filename=path+fn;
	if (!filename || !filename.length) return;
	var ok=saveFile(filename,tid.text);
	var msg=ok?okmsg:failmsg;
	var link=ok?"file:///"+filename.replace(/\\/g,'/'):""; // change local path to link text
	clearMessage();
	displayMessage(msg.format([filename]),link);
</script><script>
	place.lastChild.style.fontWeight="normal";
	if ("$1"=="$"+"1") place.lastChild.innerHTML="存入檔案";
	if ("$2"=="$"+"2") place.lastChild.title="將本文存入指定檔案";
</script>
<<search>><<closeAll>><<newTiddler>>
<<tabs txtMainTab "最近更新" "依更新日期排序" TabTimeline "全部" "所有文章" TabAll "分類" "所有分類" TabTags "設定程序" "平台的設定程序" TabMoreShadowed>>

@@color:black;''莎莉的異想世界''@@
http://sallychang0625.googlepages.com/sallychang.html
<!--{{{-->
<style>
#displayArea {
    text-align:left;
    width:90%;
    height:80%;
    overflow:auto
}
#tiddlerDisplay' {
    width:100%;
    height:100%;
    overflow:auto
}
</style>

<div id='displayArea'>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
/***
|''Name:''|SlideShowPlugin|
|''Description:''|Creates a simple slide show type display|
|''Version:''|1.5.3|
|''Date:''|Sep 12, 2007|
|''Source:''|http://www.math.ist.utl.pt/~psoares/addons.html|
|''Documentation:''|[[SlideShowPlugin Documentation|SlideShowPluginDoc]]|
|''Author:''|Paulo Soares and [[Clint Checketts|http://www.checkettsweb.com]]|
|''License:''|[[Creative Commons Attribution-Share Alike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.1.0|
***/
//{{{
config.macros.slideShow = {label: "slide show", maxTOCLength: 30};
config.macros.slideShow.messages = {gotoLabel: "Go to slide:"};
config.views.wikified.slideShow = {text: "slide show", tooltip: "Start slide show"};
config.views.wikified.slideShow.quit = {text: "end", tooltip: "Quit the slide show"};
config.views.wikified.slideShow.firstSlide = {text: "<<", tooltip: "first slide"};
config.views.wikified.slideShow.previousSlide = {text: "<", tooltip: "previous slide"};
config.views.wikified.slideShow.nextSlide = {text: ">", tooltip: "next slide"};
config.views.wikified.slideShow.lastSlide = {text: ">>", tooltip: "last slide"};
config.views.wikified.slideShow.resetClock = {text: " ", tooltip: "reset"};

config.formatters.push( {
	name: "SlideSeparator",
	match: "^-s-+$\\n?",
	handler: function(w) {
		createTiddlyElement(w.output,"hr",null,'slideSeparator');
	}
});

function changeStyleSheet(tiddlerName) {
	setStylesheet(store.getRecursiveTiddlerText("StyleSheetColors"),"StyleSheetColors");
	setStylesheet(store.getRecursiveTiddlerText("StyleSheetLayout"),"StyleSheetLayout");
	setStylesheet(store.getRecursiveTiddlerText(tiddlerName == null ? "StyleSheet" : tiddlerName,""),"StyleSheet");
}

//Excellent (and versatile) reparser created by Paul Petterson for parsing the paramString in a macro
function reparse( params ) {
	var re = /([^:\s]+)(?:\:((?:\d+)|(?:["'](?:[^"']+)["']))|\s|$)/g;
	var ret = new Array();
	var m;
	while( (m = re.exec( params )) != null ) ret[ m[1] ] = m[2]?m[2]:true;
	return ret;
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null ) node = document;
	if ( tag == null ) tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	var j=0;
	for (var i = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

// 'keys' code adapted from S5 which in turn was adapted from MozPoint (http://mozpoint.mozdev.org/)
function keys(key) {
with(config.macros.slideShow){
	if (document.getElementById('contentWrapper').className == "slideShowMode"){
		if (!key) {
			key = event;
			key.which = key.keyCode;
		}
 		switch (key.which) {
			case 32: // spacebar
				if(time>0){
					if(autoAdvance){
						clearInterval(autoAdvance);
						autoAdvance = null;
					} else {
						autoAdvance=setInterval("GoToSlide(1)", time);
					}
				}
				break;
			case 34: // page down
			case 39: // rightkey
				GoToSlide("n");
				break;
			case 40: // downkey
				GoToSlide(1);
				break;
			case 33: // page up
			case 37: // leftkey
				GoToSlide("p");
				break;
			case 38: // upkey
				GoToSlide(-1);
				break;
			case 36: // home
				GoToSlide("f");
				break;
			case 35: // end
				GoToSlide("l");
				break;
			case 27: // escape
				endSlideShow();
				break;
		}
	}
	return false;
}
}

function clicker(e) {
	if (!e) var e = window.event;
	var target = resolveTarget(e);
	//Whenever something is clicked that won't advance the slide make sure that the table of contents gets hidden
	if (target.getAttribute('href') != null || isParentOrSelf(target, 'toc') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object') || isParentOrSelf(target, 'slideFooter') || isParentOrSelf(target, 'navigator')){
		 //Don't hide the TOC if the indexNumbers (which trigger the index) is clicked
		if(isParentOrSelf(target,'indexNumbers') || isParentOrSelf(target,'jumpInput')){
 			return true;
		}
		showHideTOC('none');
		return true;
	}
	//Advance a slide if the TOC is visible otherwise make sure that the TOC gets hidden
	if ((!e.which && e.button == 1) || e.which == 1) {
		if (document.getElementById('toc').style.display != 'block'){
			GoToSlide("n");
		} else {
			showHideTOC('none');
		}
	}
	if ((!e.which && e.button == 2) || e.which == 3) {
		if (document.getElementById('toc').style.display != 'block'){
			GoToSlide("p");
		} else {
			showHideTOC('none');
		}
		return false;
	}
}

function isParentOrSelf(element, id) {
	if (element == null || element.nodeName=='BODY') return false;
	else if (element.id == id) return true;
	else return isParentOrSelf(element.parentNode, id);
}

function GoToSlide(step) {
	var new_pos;
	var slideHolder = document.getElementById('slideContainer');
	//The parse float ensures that the attribute is returned as a number and not a string.
	var cur_pos = parseFloat(slideHolder.getAttribute('currentslide'));
	var numberSlides = parseFloat(slideHolder.getAttribute('numberSlides'));
	switch (step) {
		case "f":
			new_pos=0;
			break;
		case "l":
			new_pos=numberSlides-1;
			break;
		case "n":
			var numberOverlays = parseFloat(slideHolder.childNodes[cur_pos].getAttribute('numberOverlays'));
			var currentOverlay = parseFloat(slideHolder.getAttribute('currentOverlay'));
			if(numberOverlays==0 || currentOverlay==numberOverlays){
				if(noClicks==false) new_pos=cur_pos+1;
			} else {
				var className="Overlay"+currentOverlay;
				var overlay=getElementsByClass(className,slideHolder.childNodes[cur_pos]);
				for(var i=0; i<overlay.length; i++) {overlay[i].className=className+' previousOverlay';}
				currentOverlay++;
				slideHolder.setAttribute('currentOverlay',currentOverlay);
				className="Overlay"+currentOverlay;
				overlay=getElementsByClass(className,slideHolder.childNodes[cur_pos]);
				for(i=0; i<overlay.length; i++) {overlay[i].className=className+' currentOverlay';}
				return false;
			}
			break;
		case "p":
			var numberOverlays = parseFloat(slideHolder.childNodes[cur_pos].getAttribute('numberOverlays'));
			var currentOverlay = parseFloat(slideHolder.getAttribute('currentOverlay'));
			if(numberOverlays==0 || currentOverlay==0){
				if(noClicks==false) new_pos=cur_pos-1;
			} else {
				var className="Overlay"+currentOverlay;
				var overlays=getElementsByClass(className,slideHolder.childNodes[cur_pos]);
				for(var i=0; i<overlays.length; i++) {overlays[i].className=className+' nextOverlay';}
				currentOverlay--;
				className="Overlay"+currentOverlay;
				overlays=getElementsByClass(className,slideHolder.childNodes[cur_pos]);
				for(i=0; i<overlays.length; i++) {overlays[i].className=className+' currentOverlay';}
				slideHolder.setAttribute('currentOverlay',currentOverlay);
				return false;
			}
			break;
		default:
			new_pos=cur_pos+step;
	}
	if(slideShowCircularMode && new_pos == numberSlides) new_pos=0;
	if(slideShowCircularMode && new_pos<0) new_pos=(numberSlides - 1);
	if(step!=0 && new_pos>=0 && new_pos<numberSlides) {
		slideHolder.childNodes[cur_pos].style.display='none';
		slideHolder.childNodes[new_pos].style.display='block';
		slideHolder.setAttribute('currentslide',new_pos);
		var numberOverlays = parseFloat(slideHolder.childNodes[new_pos].getAttribute('numberOverlays'));
		if(step=="p"){
			var currentOverlay=numberOverlays;
			var state=' previousOverlay';
		} else {
			var currentOverlay=0;
			var state=' nextOverlay';
		}
		slideHolder.setAttribute('currentOverlay',currentOverlay);
		if(numberOverlays>0) {
			for(var i=1; i<=numberOverlays; i++){
				var className="Overlay"+i;
				var overlays=getElementsByClass(className,slideHolder.childNodes[new_pos]);
				for(var j=0; j<overlays.length; j++) {overlays[j].className=className+state;}
			}
			if(step=="p"){
				var className="Overlay"+numberOverlays;
				var overlays=getElementsByClass(className,slideHolder.childNodes[new_pos]);
				for(var j=0; j<overlays.length; j++) {overlays[j].className=className+' currentOverlay';}
			}
		}
		new_pos++;
		var indexNumbers = document.getElementById('indexNumbers');
		indexNumbers.firstChild.data = new_pos+'/'+numberSlides;
		if((new_pos==numberSlides) && !slideShowCircularMode && autoAdvance) clearInterval(autoAdvance);
		return true;
	}
	return false;
}

function tocShowSlide(e) {
	if (!e) var e = window.event;
	var target = resolveTarget(e);
	var slide = target.getAttribute('slideNumber');
	var cur_pos = document.getElementById('slideContainer').getAttribute('currentslide');
	var step = slide-cur_pos;
	if(step!=0) GoToSlide(step);
	showHideTOC('none');
	return;
}

//Toggle the display of the table of contents
function showHideTOC(display){
	var toc = document.getElementById('toc');
	//Reset the input box
	document.getElementById('jumpInput').value = "";
	if (display == null || display.length == null){
		if (toc.style.display == 'none' || toc.style.display == ''){
			toc.style.display = 'block';
			document.getElementById('jumpInput').focus();
		} else {
			toc.style.display = 'none';
		}
	} else {
		toc.style.display = display;
		if (display == 'block')
			document.getElementById('jumpInput').focus();
	}
}

function padZero(x){return (x>=10 || x<0 ? "" : "0")+x;}

function setClock(){
	var actualTime = new Date();
	var newTime = actualTime.getTime() - clockStartTime;
	newTime = clockMultiplier*newTime+clockInterval+clockCorrection;
	actualTime.setTime(newTime);
	newTime = padZero(actualTime.getHours()) + ":" + padZero(actualTime.getMinutes())+ ":" + padZero(actualTime.getSeconds());
	var clock = document.getElementById('slideClock');
	clock.firstChild.nodeValue = newTime;
}

function resetClock(){
	var time = new Date(0);
	if(clockStartTime>time){
		var startTime = new Date();
		clockStartTime=startTime.getTime();
	}
}

var title;
var place;
var autoAdvance=null;
var slideClock=null;
var noOverlays=false;
var noClicks=false;
var forceRefresh=false;
var time = 0;
var slideShowCircularMode;
var slideShowStyleSheet;
var slideShowParams;
var clockMultiplier;
var clockInterval;
var clockCorrection=0;
var clockStartTime;
var openTiddlers;

config.macros.slideShow.handler = function(aPlace,macroName,params,wikifier,paramString,tiddler){
	if(tiddler instanceof Tiddler){
		var lingo = config.views.wikified.slideShow;
		if (!e) var e = window.event;
 		place = aPlace;
		title = tiddler.title;
		params = reparse(paramString);
		var onclick = function(){config.macros.slideShow.onClickSlideShow(params);};
		createTiddlyButton(aPlace,lingo.text,lingo.tooltip,onclick);
	}
}

config.macros.slideShow.onClickSlideShow = function(newParams) {
//	if(typeof(newParams)=="number") newParams=slideShowParams;
	openTiddlers = new Array;
	var viewer=document.getElementById('tiddlerDisplay');
	for(var i=0; i<viewer.childNodes.length; i++){
		var name = viewer.childNodes[i].getAttribute('tiddler');
		openTiddlers.push(name);
	}
	document.oncontextmenu = function(e){return false;}
	clockMultiplier = 1;
	clockInterval = 0;
	var startTime = new Date(0);
	slideShowCircularMode = false;
	time = 0;
	slideShowStyleSheet = null;
	if(newParams['style']){
		slideShowStyleSheet = eval(newParams['style']);
	} 
	if(newParams['repeat']){
		slideShowCircularMode = true;
	}
	if(newParams['noClicks']){
		noClicks = true;
	}
	if(newParams['forceRefresh']){
		forceRefresh = true;
	}
	if(newParams['slidePause'] > 0){
		time = newParams['slidePause'];
	}
	if(newParams['clock']){
		clockCorrection=startTime.getTimezoneOffset()*60000;
		startTime = new Date();
		var clockType= eval(newParams['clock']);
		if(clockType != '+') {
			clockMultiplier = -1;
			clockInterval = -clockType*60000;
		}
	}
	clockStartTime=startTime.getTime();
	if(newParams['noOverlays']){
		noOverlays = true;
	}
	clearMessage();
	//Attach the key and mouse listeners
	document.onkeyup = keys;
	document.onmouseup = clicker;
	story.refreshTiddler(title,"SlideShowViewTemplate",true);
	createSlides(newParams);
	slideClock=setInterval("setClock()", 1000); 
	if(time>0) autoAdvance=setInterval("GoToSlide(1)", time); 
	story.closeAllTiddlers(title);
	toggleSlideStyles();
	return;
}

config.macros.slideShow.endSlideShow=function(){
	var showHolder = document.getElementById('slideShowWrapper');
	showHolder.parentNode.removeChild(showHolder);
	document.oncontextmenu =  function(e){};
	if(autoAdvance) clearInterval(autoAdvance);
	if(slideClock) clearInterval(slideClock);
	noClicks=false;
	story.refreshTiddler(title,null,true);
	story.closeAllTiddlers();
	toggleSlideStyles();
	story.displayTiddlers(null,openTiddlers,DEFAULT_VIEW_TEMPLATE);
	document.onmouseup = function(){};
}

function isInteger(s){
	var i;
	for (i = 0; i < s.length; i++){
		// Check that current character is number.
		var c = s.charAt(i);
		if (((c < "0") || (c > "9"))) return false;
	}
	// All characters are numbers.
	return true;
}

function jumpInputToSlide(e){
	if (!e) {
		e = window.event;
		e.which = e.keyCode;
	}
	if(e.which==13){
		var jumpInput= document.getElementById("jumpInput").value;
		if(isInteger(jumpInput)){
			var step=jumpInput-document.getElementById('slideContainer').getAttribute('currentslide')-1;
			if (GoToSlide(step)){
				showHideTOC('none'); 
			}
		}
	}
	return;
}

//Used to shorten the TOC fields
function abbreviateLabel(label){
	var maxTOCLength = config.macros.slideShow.maxTOCLength;
	if(label.length>maxTOCLength) {
		var temp = new Array();
		temp = label.split(' ');
		label = temp[0];
		for(var j=1; j<temp.length; j++){
			if((label.length+temp[j].length)<=maxTOCLength){
				label += " " + temp[j];
			} else {
				label += " ...";
				break;
			}
		}
	}
	return label;
}

function createSlides(newParams){
	var lingo = config.views.wikified.slideShow;
	//Remove dblClick on edit function
	var theTiddler = document.getElementById("tiddler"+title);
	theTiddler.ondblclick = function() {};
	// Grab the 'viewer' element and give it a signature so the show can be resumed if stopped
	var tiddlerElements = theTiddler.childNodes;
	var viewer;
	for (var i = 0; i < tiddlerElements.length; i++){
		if (tiddlerElements[i].className == "viewer") viewer = tiddlerElements[i];
	}
	viewer.id = 'slideShowWrapper';
	//Hide the text that comes before the first H1 element (I think I may put this into a cover page type thing)
	while(viewer.childNodes.length > 0 && viewer.firstChild.nodeName.toUpperCase() != "HR" && viewer.firstChild.className!="slideSeparator") {
		viewer.removeChild(viewer.firstChild);
	}
	//Cycle through the content and each time you hit an H1 begin a new slide div
	var slideNumber = 0;
	var slideHolder = document.createElement('DIV');
	slideHolder.id = "slideContainer";
	slideHolder.setAttribute('currentslide',0);
	while(viewer.childNodes.length > 0){
		//Create a new slide a append it to the slide holder
		if (viewer.firstChild.nodeName.toUpperCase() == "HR" && viewer.firstChild.className=="slideSeparator"){
			slideNumber++;
			var slide = document.createElement('DIV');
			slide.id = "slideNumber"+slideNumber;
			slide.className = "slide";
			if (slideNumber > 1) {
				//slideHolder.setAttribute('currentslide',0);
				slide.style.display='none';
			} else {
				slide.style.display='block';
			}
			slideHolder.appendChild(slide); 
			viewer.removeChild(viewer.firstChild);
		} else {
			if(viewer.firstChild.nodeName=="SPAN" && viewer.firstChild.className=="" && viewer.firstChild.hasChildNodes()) {
				var anchor=viewer.firstChild.nextSibling;
				for (var ii=0;ii<viewer.firstChild.childNodes.length;ii++) {
					var clone=viewer.firstChild.childNodes[ii].cloneNode(true);
					viewer.insertBefore(clone,anchor);
				}
				viewer.removeChild(viewer.firstChild);
			} else {
				slide.appendChild(viewer.firstChild);
			}
		}
	} 
	//Stick the slides back into the viewer
	viewer.appendChild(slideHolder);
	slideHolder.setAttribute('numberSlides',slideNumber);
	//Create the navigation bar
	var slidefooter = createTiddlyElement(viewer,"DIV","slideFooter","slideFooterOff");
	var navigator = createTiddlyElement(slidefooter,"SPAN","navigator");
	//Make it so that when the footer is hovered over the class will change to make it visible
	slidefooter.onmouseover = function () {slidefooter.className = "slideFooterOn"};
	slidefooter.onmouseout = function () {slidefooter.className = "slideFooterOff"};
	//Create the control button for the navigation 
	var onClickQuit = function(){config.macros.slideShow.endSlideShow();};
	createTiddlyButton(navigator,lingo.quit.text,lingo.quit.tooltip,onClickQuit);
	createTiddlyButton(navigator,lingo.firstSlide.text,lingo.firstSlide.tooltip,first_slide);
	createTiddlyButton(navigator,lingo.previousSlide.text,lingo.previousSlide.tooltip,previous_slide);
	createTiddlyButton(navigator,lingo.nextSlide.text,lingo.nextSlide.tooltip,next_slide);
	createTiddlyButton(navigator,lingo.lastSlide.text,lingo.lastSlide.tooltip,last_slide); 
	createTiddlyButton(navigator,lingo.resetClock.text,lingo.resetClock.tooltip,resetClock,"button","slideClock");
	var indexNumbers = createTiddlyElement(slidefooter,"SPAN","indexNumbers","indexNumbers","1/"+slideNumber)
	indexNumbers.onclick = showHideTOC;
	var toc = createTiddlyElement(slidefooter,"UL","toc");
	var ovl=1;
	for (var i=0;i<slideHolder.childNodes.length;i++) {
		if(!noOverlays) {
			var ovl=1;
			while(1){
				var className="Overlay"+ovl;
				var overlays=getElementsByClass(className,slideHolder.childNodes[i]);
				if(overlays.length>0){
					for(var j=0; j<overlays.length; j++) {overlays[j].className+=' nextOverlay';}
					ovl++;
				} else {break;}
			}
		}
		slideHolder.childNodes[i].setAttribute("numberOverlays",ovl-1);
		slideHolder.setAttribute("currentOverlay",0);
		//Loop through each slide and check the header's content
		var tocLabel = null; 
		for (var j=0;j<slideHolder.childNodes[i].childNodes.length;j++) {
			var node = slideHolder.childNodes[i].childNodes[j];
			if(node.nodeName=="H1" || node.nodeName=="H2" || node.nodeName=="H3" || node.nodeName=="H4") {
				var htstring = node.innerHTML;
				var stripped = htstring.replace(/(<([^>]+)>)/ig,"");
				tocLabel = abbreviateLabel(stripped);
				var tocLevel="tocLevel"+node.nodeName.charAt(1);
				var tocItem = createTiddlyElement(toc,"LI",null,tocLevel);
				var tocLink = createTiddlyElement(tocItem,"A",null,"tocItem",tocLabel);
				tocLink.setAttribute("slideNumber",i);
				tocLink.onclick=tocShowSlide;
			}
		}
	}
	//Input box to jump to s specific slide
	var tocItem = createTiddlyElement(toc,"LI",null,"tocJumpItem",config.macros.slideShow.messages.gotoLabel);
	var tocJumpInput = createTiddlyElement(tocItem,"INPUT","jumpInput");
	tocJumpInput.type="text";
	tocJumpInput.onkeyup=jumpInputToSlide;
}

var next_slide= function(e){GoToSlide(1);}
var first_slide= function(e){GoToSlide("f");}
var previous_slide= function(e){GoToSlide(-1);}
var last_slide= function(e){GoToSlide("l");}

function toggleSlideStyles(){
	var contentWrapper = document.getElementById('contentWrapper');
	if (contentWrapper.className == "slideShowMode"){
		contentWrapper.className = "";
		window.applyPageTemplate();
		setStylesheet("#backstageShow{display: block;}","SlideShowStyleSheet");
		changeStyleSheet();
	} else{
		contentWrapper.className = "slideShowMode";
		window.applyPageTemplate("SlideShowPageTemplate");
		setStylesheet(store.getRecursiveTiddlerText("SlideShowStyleSheet"),"SlideShowStyleSheet");
		if(slideShowStyleSheet) changeStyleSheet(slideShowStyleSheet);
	}
}

config.shadowTiddlers.SlideShowPageTemplate="<!--{{{-->\n<div id='displayArea'>\n<div id='tiddlerDisplay'></div>\n</div>\n<!--}}}-->";

config.shadowTiddlers.SlideShowViewTemplate="<!--{{{-->\n<div class='title' macro='view title'></div>\n<div class='viewer' macro='view text wikified'></div>\n<!--}}}-->";

config.shadowTiddlers.SlideShowStyleSheet = "/***\n!Slide Mode Styles\n***/\n/*{{{*/\n#backstageShow{\n display: none !important;\n}\n\n#contentWrapper.slideShowMode #slideContainer{\n display: block;\n}\n\n#contentWrapper.slideShowMode .Comment{\n display: none;\n}\n\n#contentWrapper.slideShowMode .nextOverlay{\n visibility: hidden;\n}\n\n#contentWrapper.slideShowMode .currentOverlay{\n visibility: visible;\n}\n\n#contentWrapper.slideShowMode .previousOverlay{\n visibility: visible;\n}\n\n#jump{\n text-align: right;\n}\n\n.slideFooterOff #navigator{\n visibility: hidden;\n}\n\n.slideFooterOn #navigator{\n visibility: visible;\n}\n\n#contentWrapper.slideShowMode #slideClock{\n cursor: pointer; margin: 0 5px 0 5px; border: 1px solid #db4\n}\n\n#contentWrapper.slideShowMode,\n #contentWrapper.slideShowMode #displayArea{\n width: 100%;\n font-size: 1.5em;\n margin: 0 !important;\n padding: 0;\n}\n\n#slideContainer{\n display: none;\n}\n\n.indexNumbers{\n cursor: pointer;\n}\n\n#navigator{\n visibility: hidden;\n bottom: 0;\n}\n\n#toc{\n display: none;\n position: absolute;\n font-size: .75em;\n bottom: 2em;\n right: 0;\n background: #fff;\n border: 1px solid #000;\n text-align: left;\n}\n\nul#toc, #toc li{\n margin: 0;\n padding: 0;\n list-style: none;\n line-height: 1em;\n}\n\n.tocJumpItem{\n margin-right: 2em;\n}\n\n.tocJumpItem input{\nmargin-right: 1em;\n border: 0;\n}\n\n#toc a,\n#toc a.button{\n display: block;\n padding: .1em;\n}\n\n#toc .tocLevel1{\nfont-size: .8em;\n}\n\n#toc .tocLevel2{\n margin-left: 1em;\n font-size: .75em;\n}\n\n#toc .tocLevel3{\n margin-left: 2em;\nfont-size: .75em;\n}\n\n#toc .tocLevel4{\n margin-left: 3em;\nfont-size: .65em;\n}\n\n#toc a{\n cursor: pointer;\n}\n\nh1{\n min-height: 1em;\n}\n\n.slide h1{\n min-height: 0;\n}\n\n/* The '>' selector is ignored by IE6 and earlier so the proper rules are given */\n#slideFooter{\n position: fixed;\n bottom: 2px;\n right: 2px;\n width: 100%;\n text-align: right;\n}\n\n/* This is a hack to trick IE6 and earlier to put the navbar on the bottom of the page */\n* html #slideFooter {\n position: absolute;\n width: 100%;\n text-align: right;\n right: auto; bottom: auto;\n left: expression( ( -20 - slideFooter.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );\n top: expression( ( -10 - slideFooter.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );\n}\n\n\n\n/*}}}*/";

config.shadowTiddlers.SlideShowPluginDoc="The documentation is missing. It is available [[here|http://www.math.ist.utl.pt/~psoares/addons.html#SlideShowPluginDoc]].";
//}}}
<!--{{{-->
<style>
.title {
    width:100%;
    height:80%;
    font-size:25px;
    overflow:auto
}
.viewer{
    width:100%;
    height:80%;
    font-size:14px;
    overflow:auto
}
</style>
<div class='title' macro='view title'></div>
<div class='viewer' macro='view text wikified'></div>
<!--}}}-->
/***
|''Name:''|SparklinePlugin|
|''Description:''|Sparklines macro|
***/
//{{{
if(!version.extensions.SparklinePlugin) {
version.extensions.SparklinePlugin = {installed:true};

//--
//-- Sparklines
//--

config.macros.sparkline = {};
config.macros.sparkline.handler = function(place,macroName,params)
{
	var data = [];
	var min = 0;
	var max = 0;
	var v;
	for(var t=0; t<params.length; t++) {
		v = parseInt(params[t]);
		if(v < min)
			min = v;
		if(v > max)
			max = v;
		data.push(v);
	}
	if(data.length < 1)
		return;
	var box = createTiddlyElement(place,"span",null,"sparkline",String.fromCharCode(160));
	box.title = data.join(",");
	var w = box.offsetWidth;
	var h = box.offsetHeight;
	box.style.paddingRight = (data.length * 2 - w) + "px";
	box.style.position = "relative";
	for(var d=0; d<data.length; d++) {
		var tick = document.createElement("img");
		tick.border = 0;
		tick.className = "sparktick";
		tick.style.position = "absolute";
		tick.src = "data:image/gif,GIF89a%01%00%01%00%91%FF%00%FF%FF%FF%00%00%00%C0%C0%C0%00%00%00!%F9%04%01%00%00%02%00%2C%00%00%00%00%01%00%01%00%40%02%02T%01%00%3B";
		tick.style.left = d*2 + "px";
		tick.style.width = "2px";
		v = Math.floor(((data[d] - min)/(max-min)) * h);
		tick.style.top = (h-v) + "px";
		tick.style.height = v + "px";
		box.appendChild(tick);
	}
};


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

/* 
 * Powered by SallyChang
 * 2008.1.10
 */

#template a{ color:#fff;}

/* Layout */
body{
 margin: 0 auto;
 padding: 0 auto;
 text-align:center;
}

#cb, #footer{
 width:800px;
 padding:10px;
}

#cb{
 margin: 0 auto;
 text-align:left;
 margin-top:10px;
}

.headerForeground {
 position:static;
 padding: 1em 0em 0em 1em;
 width:800px;
 height:128px; 
 margin: 0 auto;
 background-image:url(' head.jpg ');
}


#mainMenu {
 position: static;
 width: auto;
 text-align:left;
 padding: 0em 1em 0em 1em;
 }

/*内容*/
#content {
 width:100%;
 }

#sidebar {
 margin:2px 0 2px 0;
 position: static;
 width: 180px;
 font-size: 11px;
 float:right;
 }

.externalLink {text-decoration:none}

#displayArea {
 margin:0 0 0 0px;
 padding:0;
 padding:0;
 width: 610px;
}

.viewer {
 word-break:break-all;
 width: 500px;
 padding:0.2em;
 font-size:1em;
 }
.viewer li {list-style-type:square;}
.viewer pre {font-size:1em;}

.tiddler {
  border-top:       1px solid   pink; 
  border-left:       1px solid   pink; 
  border-bottom:  3px solid  pink; 
  border-right:      3px solid   pink; 
  margin: 0.5em;
  background:#fff; 
  padding: 0.5em; 
  -moz-border-radius: 1em; 
  overflow: auto;
}

/* 解除兩側的文繞圖 */
.clear {
 clear:both;
 display:block;
 height:1px;
 margin:0;
 padding:0;
 font-size:1px;
 line-height:1px;
 }

#footer{
 margin: 0 auto;
 clear:both;
 text-align: center;
 line-height:180%;
 margin-bottom:1px;
 color:deeppink;
}

#Sallylogo{
 margin-top: 10px;
 width:150px;
 height:175px;
}

#授權模式,#counter{
 margin: 0 auto;
 width:130px;
 padding :2px 2px 2px 2px;
 text-align:center;
}

/*旁邊的捲軸*/
HTML {
scrollbar-face-color: #ffffff;
scrollbar-base-color: #ffffff;
scrollbar-shadow-color: #ffffff;
scrollbar-3dlight-color: #ED789C;
scrollbar-arrow-color: #ED789C;
scrollbar-darkshadow-color: #ED789C;
scrollbar-track-color: #FFCFDD;
scrollbar-highlight-color: #FFCFDD;
}

/* 設定版面顏色 */
body{
 background: pink;
 color:Black;
 }

#cb{
 background:#FFF;
 color:Black;
 }

#mainMenu {
 background-color: #eee;
 color:  #eee;
 }

/* 每篇tiddler的標題 */
.title {
 color:	purple;
 font-size: 1.5em;
 padding-left: 0em;
}

h1 a, h2 a, h3 a, h4 a, h5 a{
 sans-serif; font-style:italic;
 color:deeppink;
 background-color:transparent;
}

/* wiki (!) */
h1{
 width:80%;
 color:darkmagenta;
 border-left: 10px solid deeppink;
 border-bottom:0px solid #cccccc; 
 padding-left: 5px;
 background-color:transparent;
}

/* wiki(!!) */
h2{
 width:70%;
 color:darkmagenta;
 border-left: 6px solid deeppink;
 border-bottom:0px solid #cccccc; 
 padding-left: 5px;
 background-color:transparent;
}

/* wiki (!!!, !!!!, !!!!!) */
h3,h4,h5{
 width:60%;
 color:darkmagenta;
 background-color:transparent;
 }

.toolbar .button {
 color: #ccc;
 }

.center{
 text-align:center;
 }

#sidebarOptions .search a{
 display:inline;
 font-size:11px;
 background-color: red;
 border-top:1px solid #ccccff;
 border-left:1px solid #ccccff;
 border-bottom:1px solid #000000;
 border-right:1px solid #000000;
 padding: 2px 5px 2x 5px; /*上 右 下 左*/
}

#sidebarOptions .search a:hover{
 display:inline;
 font-size:11px;
 background-color:#0000CC;
 border-top:1px solid #000000;
 border-left:1px solid #000000;
 border-bottom:1px solid #ccccff;
 border-right:1px solid #ccccff;
 padding: 2px 5px 2x 5px;
}

.search .button{
 position:relative;
 left:140px;
 top:-6px;
 color:#ffffff;
}
.search input{
 position:relative;
 left:-30px;
 width:130px;
}

/*}}}*/
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected{color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

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

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

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

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

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

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

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 14em;}

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

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

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

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

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

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none ! important;}
#displayArea {margin: 1em 1em 0em 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
「TiddlyWiki tBala」的簡稱,有二種意涵,一是「TWtBala」在創作之初,是藉由 TiddlyWiki 的設計理念,使用 TiddlyWiki 獨特的設計方式研發出來的。
其二,「TWtBala」的另一層意思,翻譯成中文就叫「台灣土芭樂」。

為加強「TWtBala」的編輯功能,及資訊交換分享的能力,土芭樂還特製「土芭樂知識瀏覽器」讓使用「TWtBala」的朋友在製作網頁及收集資料上,更EZ、便方便。
<<list all>>
<<tabs txtMoreTab "未完成" "內容空白的文章" TabMoreMissing "未引用" "未被引用的文章" TabMoreOrphans "預設文章" "已預設內容的隱藏文章" TabMoreShadowed>>
<<list shadowed>>
<<allTags excludeLists>>
<<timeline>>
!!Basic Formatting
| ''Format'' | ''Markup'' | ''Example'' |h
| 粗體字 | {{{''Sally''}}} (2個單引號) | ''Sally'' |
| Highlight | {{{@@Sally@@}}} (顏色在stylesheet設定) | @@Sally@@ |
| 文字顏色 | {{{@@color:deeppink;Sally@@}}} | @@color:deeppink;Sally@@ |
| 底色設定 | {{{@@bgcolor:yellow;Sally@@}}} | @@bgcolor:yellow;Sally@@ |
| 斜體字 | {{{//Sally//}}} | //Sally// |
| 取消格式設定 | {{{ {{{   }}} }}} | {{{//Sally//}}} |
| 刪除線 | {{{--Sally--}}} | --Sally-- |
| 下標 | {{{~~Sally~~}}} | Text~~Sally~~ |
| 上標 | {{{^^Sally^^}}} | Text^^Sally^^ |
| 底線 | {{{__Sally__}}} (2個_) | __Sally__ |
| 註解 | {{{/%  /%}}} | Not shown |
| 加入圖片 | {{{[img[Sally's logo.jpg]]}}} | [img[http://sallychang0625.googlepages.com/Sallyslogo.jpg]] |
| 圖片上加連結 | {{{[img[Sally's logo.jpg][http://sallychang0625.googlepages.com/]}}} | [img[http://sallychang0625.googlepages.com/Sallyslogo.jpg][http://sallychang0625.googlepages.com/]] |
| 文字加上連結 | {{{[[莎莉的異想世界|http://sallychang0625.googlepages.com/]]}}} | [[莎莉的異想世界|http://sallychang0625.googlepages.com/]] |
!!表格的畫法
{{{| 星期一 |  星期二 | 星期三 |}}}   
| 星期一 |  星期二 | 星期三 |
PS:{{{|_星期一_|}}} 置中對齊;{{{|_星期一|}}}靠右對齊;{{{|星期一_|}}}靠左對齊 (_是空格的意思)
|bgcolor(#ff1493):!@@color:#fff;自我介紹@@ |>|>|h
|[img[http://sallychang0625.googlepages.com/Sallyslogo.jpg]]| [[關於我]] |
|bgcolor(#ff1493):@@color:#fff;''莎莉其他連結''@@|>|>|
| [[莎莉'sblogspot|http://http://sallychang0625.blogspot.com/]] |>|
| [[芷愛旅遊|http://sallytrip.googlepages.com/sallytrip.html]] |>|
PS:
h這個符號:代表表格的表頭,會上底色(顏色在stylesheet設定)
{{{>}}}這個符號:代表表格向左合併 
~這個符號:代表表格向上合併
!!標題的設定
在HTML標題的設定是h1~h6,在wiki只有!~!!!!!
!標題1
!!標題2
!!!標題3
!!!!標題4
!!!!!標題5
在TWtBala{{{*}}}跟{{{#}}}是一樣的,是相目符號
*ABC
**DFG
***HIJ
****KLM
*****NOP
******QRS
*******TUV
!!投影片
<<slideShow noClicks forceRefresh>>
只要打上以下這串巨集,就有投影片的功能囉!!!
{{{<<slideShow noClicks forceRefresh>>}}}
在~TWtBala做投影片,要以{{{-S-}}}代表一張投影片,之後就可以開始打投影片的內容

example:
{{{-s-}}}
~TWtBala基本設定
{{{-s-}}}
~TWtBala版面設定

-s-
!!~TWtBala基本設定
SiteTitle
SiteSubtitle

-s-
!!~TWtBala版面設定
StyleSheet
PageTemplate
| ''Tiddly Wiki'' | ''Blog'' |h
| 資料存放在自己手上 | 資料存放在對方伺服器 |
| 資料可任意轉移存放處 | 資料無法任意轉移 |
| 資料可以保存、備份 | 需付費會員才享有資料保存、備份 |
| 框架結構模組化設計,修改彈性高 | 框架結構模組化設計,修改彈性較低 |
| 可外掛~Plug-In擴充導入功能 | 無提供~Plug-In擴充導入功能 |
| 擴充功能有專屬套件管理介面 | 無套件管理介面供使用 |
| 可於文章內執行巨集指令 | 無提供巨集功能 |
| 可呼叫外部執行程式 | 可呼叫外部執行程式 |
| 有各類版型可以套用 | 有各類版型可以套用 |
| 利用導入功能,文章分享方便 | 只能用傳統複製貼上 |
| 資料結構單純只有一頁 | 結構複雜、多頁 |
| 除html、CSS可使用Wiki語法,發展淺力雄厚 | 僅能使用 html、CSS |
| 網路教學應用資源少 | 網路教學應用資源多 |
| 除了BLOG也能做其他運用 | 僅以BLOG為發展基礎 |
| 修改風險低,可隨時還原 | 修改風險高、資料易遺失 |
| 可發展為個人專屬產品、個人利益高 | 雖可發展,但卻屬別人產品、個人利益低 |
| 預設功能較少,功能需編寫語法 | 有多種預設模組可以直接套用 |
| 初期使用門檻高(需懂基本語法) | 初期使用易於學習操作 |
| 要另尋存放空間、無相關附加功能 | 申請即有空間及多重附加功能 |
| 編修更新後需再上傳 | 可線上即時編修、更新 |
| 可離線編輯、不受網路環境限制 | 僅可線上編輯,無法離線使用 |
//{{{
version.extensions.tiddlyPod= {major: 1, minor: 4, revision: 2, date: new Date(2007,12,9)};
config.macros.tiddlyPod= {
	verbose: false, // set to true to display messages
	playlist: "TiddlyPodList", // tiddler containing list of tunes
	listlength: "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+='	pluginspage="http://www.apple.com/quicktime/download/"> ';
		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);">...</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;
			});
		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);
			});
		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);
			});
		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.listlength;
		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;
				});
			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)});
		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)=="listlength:")
				this.listlength=p.substr(11); // height of playlist in popup
		}
		this.play(createTiddlyElement(place,"span"),config.options.txtTiddlyPodNowPlaying);
	}
}
//}}}
如何從別的網頁直接複製文章到tiddlywiki很簡單唷!!!而且也不怕原本網頁的格式跑掉,不過大前題是要用土芭樂知識瀏覽器,因為土芭樂老師也寫特別的程式在~FireFox!!!
!!Step1
先在你的Tiddlywiki設定@@TiddlySnip Preferences@@,設定文章的路徑。(一般來說土芭樂知識瀏覽器下載好就會幫你設好位置,但是若你的檔名自行改掉,就要重新設定)

[img[snip01.jpg]]

[img[snip02.jpg]]
!!Step2
在你想要複製的那篇文章,將標題及內容mark起來,按滑鼠右鍵,會看到@@TiddlySnip Selection@@,你就會看到你要的文章被選取,就看你要不要改標題及標籤,改好後按確定。

[img[snip03.jpg]]

[img[snip04.jpg]]
!!Step3
再回到你的Tiddlywiki看,就會有一篇新的文章,就是你剛剛snip下來的文章囉!!!

[img[snip05.jpg]]

TiddlyWiki 是一個由「 javascript + CSS 樣式 + HTML 語法」所組成的 html 檔。它可以讓你在本機編輯使用 wiki 語法編輯網頁內容,除了不像一般的 wiki 程式可以在網路上供多人共同編輯之外,其它的功能一概不缺。更重要的是,他只需要一個小小的 html 檔案就可以使用瀏覽器執行,完全不需要網路主機、PHP 或 ASP 以及資料庫等的支援。你所寫的文章,也是存在這個 html 檔裡,沒錯,全部就只有一個檔。
說了這麼多, TiddlyWiki 到底能做什麼?你可以把它存在個人電腦裡,用來做個人記事本、行事曆、日記、備忘錄、待辦事項…等。放在隨身碟裡,還可以到處帶著走,放到個人網頁空間,就成了個人網站。以上這些功能,全都在一個小小的 html 檔案裡,非常方便。
<!--{{{-->
<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler > fields syncing permalink references jump'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
/***
|''Name:''|abego.IncludePlugin|
|''Version:''|1.0.0 (2007-02-08)|
|''Type:''|plugin|
|''Source:''|http://tiddlywiki.abego-software.de/#IncludePlugin|
|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|
|''Documentation:''|[[IncludePlugin Documentation|http://tiddlywiki.abego-software.de/#%5B%5BIncludePlugin%20Documentation%5D%5D]]|
|''Community:''|([[del.icio.us|http://del.icio.us/post?url=http://tiddlywiki.abego-software.de/index.html%23IncludePlugin]]) ([[Support|http://groups.google.com/group/TiddlyWiki]])|
|''Copyright:''|&copy; 2007 [[abego Software|http://www.abego-software.de]]|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''~CoreVersion:''|2.1.3|
|''Browser:''|Firefox 1.5.0.9 or better; Internet Explorer 6.0|
***/
//{{{

// Ensure the global abego namespace is set up.
if (!window.abego) window.abego = {};

var invokeLater = function(func, delay, priority) {
	return abego.invokeLater ? abego.invokeLater(func, delay, priority) : setTimeout(func,delay);
};

// Asynchronously load the given (local or remote) file.
// 
// @param url 		either an URL or a local file path to a file
//					Examples:
//						* http://www.abego-software.de/index.html
//						* file:///C:/abegoWebSite-Copy/index.html
//						* C:\abegoWebSite-Copy\index.html    (for Windows machines)
//							(Notice: backslashes in JavaScript string constants must be escaped, 
//							 i.e. the last example must be written as: "C:\\abegoWebSite-Copy\\index.html"
//							 when "hardcoded" in JavaScript source code)
// 
// @param callback 
//					function(content,url,params,errorMessage) 
//					called at the end of the operation. 
//					On success content holds the content of the loaded file. 
//					On error content is undefined and errorMessage holds an error message. 
//					params is the params passed into abego.loadFile.
//
// @param params 	passed through to the callback function
// 
abego.loadFile = function(url,callback,params) {

	var onLoad = function(status,params,responseText,url,xhr) {
		return status 
				? callback(responseText, url, params)
				: callback(undefined, url, params, "Error loading %0".format([url]));
	};
	
	// Make sure the URL is a real URL, with protocol prefix etc.
	if (url.search(/^((http(s)?)|(file)):/) != 0) {
		
		// no protocol specified. 
		if (url.search(/^((.\:\\)|(\\\\)|(\/))/) == 0) {
			// "url" is an "absolute" path to a local file. Prefix it with file://
			url = "file://"+url;
			
		} else {
			// "url" is a "relative" URL. Make it absolute
			
			// prefix the url with the directory containing the current document
			// (This also includes the protocol prefix)
			var documentPath = document.location.toString();
			var i = documentPath.lastIndexOf("/");
			url = documentPath.substr(0,i+1)+url;
		}
		// replace every \ by a /, to cover Windows style pathes
		url = url.replace(/\\/mg,"/");
	}
	
	loadRemoteFile(url,onLoad,params);

};

// Asynchronously load the given (local or remote) TiddlyWiki store.
// 
// @param url 		either an URL or a local file path to a TiddlyWiki file (absolute or relative)
//					Examples:
//						* http://www.abego-software.de/index.html
//						* file:///C:/abegoWebSite-Copy/index.html
//						* include/beta.html
//						* C:\abegoWebSite-Copy\index.html    (for Windows machines)
//							(Notice: backslashes in JavaScript string constants must be escaped, 
//							 i.e. the last example must be written as: "C:\\abegoWebSite-Copy\\index.html"
//							 when "hardcoded" in JavaScript source code)
// 
// @param callbackWithStore 
//					function(theStore,url,params,errorMessage) 
//					called at the end of the operation. 
//					On success theStore holds the loaded store (a TiddlyWiki object). 
//					On error theStore is undefined and errorMessage holds an error message. 
//					params is the params passed into abego.loadTiddlyWikiStore
//
// @param params 	passed through to the callbackWithStore
//
// @progress		[optional] function(message, sender, state, url, params) called in various situations during the operation,
//								typically used to show "the progress" of the operation.
//								sender: the constant "abego.loadTiddlyWikiStore"
//								state: one of these: "Started", "Processing", "Done", "Failed"
//									"Processing" means the data has been received and in now processed.
// 
abego.loadTiddlyWikiStore = function(url,callbackWithStore,params,progress) {
	
	var sendProgress = function(message, state) {
		if (progress)
			progress(message,"abego.loadTiddlyWikiStore",state,url,params);
	};
	
	// Load contents of a TiddlyWiki from a string
	//# Returns null on success, an error message otherwise.
	//# based on code from TiddlyWiki 2.2 alpha
	var importTiddlyWiki = function(store,text)
	{
		// Crack out the content - will be refactored to share code with saveChanges()
		var posOpeningDiv = text.indexOf(startSaveArea);
		var limitClosingDiv = text.indexOf("<!--POST-BODY-END--"+">");
		var posClosingDiv = text.lastIndexOf(endSaveArea,limitClosingDiv == -1 ? text.length : limitClosingDiv);
		if((posOpeningDiv == -1) || (posClosingDiv == -1))
			return config.messages.invalidFileError.format([url]);
		var content = "<html><body>" + text.substring(posOpeningDiv,posClosingDiv + endSaveArea.length) + "</body></html>";
		// Create the iframe
		var iframe = document.createElement("iframe");
		iframe.style.display = "none";
		document.body.appendChild(iframe);
		var doc = iframe.document;
		if(iframe.contentDocument)
			doc = iframe.contentDocument; // For NS6
		else if(iframe.contentWindow)
			doc = iframe.contentWindow.document; // For IE5.5 and IE6
		// Put the content in the iframe
		doc.open();
		doc.writeln(content);
		doc.close();
		// Load the content into a TiddlyWiki() object
		var storeArea = doc.getElementById("storeArea");
		store.loadFromDiv(storeArea,"store");
		// Get rid of the iframe
		iframe.parentNode.removeChild(iframe);
		return null;
	};
	
	var sendError = function(message) {
		sendProgress("Error when loading %0".format([url]),"Failed");
		callbackWithStore(undefined, url,params, message);
		return message;
	};
	
	var sendStore = function(store) {
		sendProgress("Loaded %0".format([url]),"Done");
		callbackWithStore(store, url, params);
		return null;
	};
	
	
	var callback = function(content,theURL,params,errorMessage) {
		if (content === undefined) {
			sendError(errorMessage);
			return;
		}
		
		sendProgress("Processing %0".format([url]),"Processing");
		var orig_invalidFileError = config.messages.invalidFileError;
		config.messages.invalidFileError = "The file '%0' does not appear to be a valid TiddlyWiki file";
		try {
			// Load the content into a TiddlyWiki() object
			var importStore = new TiddlyWiki();
			var errorText = importTiddlyWiki(importStore,content);
			if (errorText)
				sendError(errorText);
			else
				sendStore(importStore);

		} catch (ex) {
			sendError(exceptionText(ex));
		} finally {
			config.messages.invalidFileError = orig_invalidFileError;
		}
	};
	
	sendProgress("Start loading %0".format([url]),"Started");
	abego.loadFile(url,callback,params);
};


//==============================================================================
// Include Plugin 

(function(){

// only install once
if (abego.TiddlyWikiIncluder) return;


// --------------------------------------------------
// Constants

var WAITING = "waiting";
var LOADING = "loading";

var ANI_DURATION_HIDE_STATE = 1000;

var REFRESH_PRIORITY = -200;
var ANIMATION_PRIORITY = -100;
var UPDATE_STATE_PRIORITY = -300;

// --------------------------------------------------
// Variables

var useInclude;
var includes = []; // [] of Strings. the urls of the stores to include, in the sequence of the calls.
var includedStores = {}; // url(String) -> TiddlyWiki or String; when not (yet) loaded a status or error string.
var pendingOnLoadURLs = []; // [] of String. a list of urls that should be passed with the next "notifyListeners".
var refreshTiddlyWikiTimerID; // for delayed refresh
var listeners = [];
var progress;

// --------------------------------------------------
// Helper functions

var isIncludeEnabled = function() {
	if (useInclude === undefined)
		useInclude = config.options.chkUseInclude === undefined || config.options.chkUseInclude;
	return useInclude;
};

var getMissingIncludeMsg = function(url) {
	return "No include specified for %0".format([url])
};

// Called after one or more included TiddlyWikis are loaded
//
var notifyListeners = function() {
	var urls = pendingOnLoadURLs;
	pendingOnLoadURLs = [];
	if (urls.length) {
		for (var i= 0; i < listeners.length; i++)
			listeners[i](urls);
	}
};

var idleCount; // Reset to 0 when the system is "not idle", incremented inside refreshTiddlyWiki

var refreshTiddlyWiki = function() {
	// To avoid to much refreshing/flickering don't refresh immediately 
	// but wait until the system was idle for a certain time.
	
	if (refreshTiddlyWikiTimerID !== undefined) clearInterval(refreshTiddlyWikiTimerID);
	
	idleCount = 0;
	
	var sendDone = function() {
		abego.TiddlyWikiIncluder.sendProgress("","","Done");
	};
	
	refreshTiddlyWikiTimerID = setInterval(function() {
		idleCount++;
		if (idleCount <= 10)
			return;
			
		clearInterval(refreshTiddlyWikiTimerID);
		refreshTiddlyWikiTimerID = undefined;
			
		abego.TiddlyWikiIncluder.sendProgress("Refreshing...","","");
		refreshDisplay();
		invokeLater(sendDone,0,REFRESH_PRIORITY);
	},0);
};

// Calls callback for every loaded store and returns the first non-false/null.. value returned by callback.
//
// @param callback  function(store, url)
//
var forEachLoadedStore = function(callback) {
	var result;
	for (var i = 0; i < includes.length; i++) {
		var theStore = abego.TiddlyWikiIncluder.getStore(includes[i]);
		if (theStore && (result = callback(theStore, includes[i])))
			return result;
	}
};

var attachToStore = function() {
	if (!window.store)
		return invokeLater(attachToStore,100);
		
	var orig_fetchTiddler = store.fetchTiddler;
	
	store.fetchTiddler = function(title) {
		var t = orig_fetchTiddler.apply(this,arguments);
		if (t) return t;
		
		// When there is a shadowtiddler with that name done look for
		// any included tiddler since these would hide the shadow
		if (config.shadowTiddlers[title] !== undefined) return undefined;
		
		// Don't look for the "New Tiddler" tiddler in the included TiddlyWikis,
		// since returning such a tiddler (that is readonly) will make it impossible
		// in the Main TiddlyWiki to create new tiddlers.
		if (title == config.macros.newTiddler.title) return undefined;

		return forEachLoadedStore(
				function(theStore, url) {
					var t = theStore.fetchTiddler(title);
					if (t) 
						t.includeURL = url;
					return t;
				});
	};

	// We also refresh TiddlyWiki to reflect the new included Tiddlers (if we have any).
	if (includes.length)
		refreshTiddlyWiki();
};

var includeFromIncludeList = function() {
	if (!window.store)
		return invokeLater(includeFromIncludeList,100);
		
	var includeListText = store.getTiddlerText("IncludeList");
	if (includeListText) 
		wikify(includeListText,document.createElement("div"));
};

var getFunctionUsingForReallyEachTiddler = function(func) {
	var wrapper = function() {
		var orig_forEachTiddler = store.forEachTiddler;

		var forEachTiddlerWithIncludes = function(callback) {
			var done = {};
			var includeURL;

			var callbackWrapper = function(title, tiddler) {
				// ensure every title is only processed once
				if (done[title]) 
					return;
				done[title] = 1;
				
				// for "included tiddlers" set the includeURL;
				if (includeURL)
					tiddler.includeURL = includeURL;
				
				callback.apply(this,arguments);
			};
			
			// forEachTiddler over the original tiddlers
			orig_forEachTiddler.call(store, callbackWrapper);
			
			// add all shadowTiddler titles to done 
			// (to avoid an included store hides a shadow tiddler)
			for (var n in config.shadowTiddlers)
				done[n] = 1;

			// add all the "New Tiddler" tiddlerto done 
			// (to avoid an included store (with "New Tiddler") makes it impossible to create new tiddlers)
			done[config.macros.newTiddler.title] = 1;

			// forEachTiddler over every included store
			forEachLoadedStore(
					function(theStore, url) {
						includeURL = url;
						theStore.forEachTiddler(callbackWrapper);
					});
		};
		
		store.forEachTiddler = forEachTiddlerWithIncludes;
		try {
			return func.apply(this,arguments);
		} finally {
			store.forEachTiddler = orig_forEachTiddler;
		}
	};
	
	return wrapper;
};

var useForReallyEachTiddler = function(object,property) {
	return object[property] = getFunctionUsingForReallyEachTiddler(object[property]);
};


//================================================================================
// abego.TiddlyWikiIncluder

abego.TiddlyWikiIncluder = {};

abego.TiddlyWikiIncluder.setProgressFunction = function(func) {
	progress = func;
};

abego.TiddlyWikiIncluder.getProgressFunction = function(func) {
	return progress;
};

abego.TiddlyWikiIncluder.sendProgress = function(message, sender, state) {
	if (progress)
		progress.apply(this,arguments);
};


// Called when an included TiddlyWiki could not be loaded.
//
// By default an error message is displayed.
//
abego.TiddlyWikiIncluder.onError = function(url, errorMessage) {
	displayMessage("Error when including '%0':\n%1".format([url, errorMessage]));
};


// Returns true when there are "pending" includes, i.e. TiddlyWiki that are not yet loaded.
//
// A TiddlyWiki that failed loading is not pending.
//
abego.TiddlyWikiIncluder.hasPendingIncludes = function() {
	for (var i = 0; i < includes.length; i++) {
		var state = abego.TiddlyWikiIncluder.getState(includes[i]);
		if (state == WAITING || state == LOADING)
			return true;
	}
	return false;
};


// @return [] of Strings, the URLs of the includes
//
abego.TiddlyWikiIncluder.getIncludes = function() {
	return includes.slice();
};


// @return [may be null] a state/error text of the store with the given URL, or null when the store is already loaded
//
abego.TiddlyWikiIncluder.getState = function(url) {
	var s = includedStores[url];
	if (!s)
		return getMissingIncludeMsg(url);
	return typeof s == "string" ? s : null;
};


// @return [may be null] the (TiddlyWiki) store  with the given URL, null if not (yet) loaded.
//
abego.TiddlyWikiIncluder.getStore = function(url) {
	var s = includedStores[url];
	if (!s)
		return getMissingIncludeMsg(url);
	return s instanceof TiddlyWiki ? s : null;
};


// Includes the (local or remote) TiddlyWiki store with the given url.
// 
// stores with urls already already included are ignored.
//
// @param url	see url@abego.loadTiddlyWikiStore
// @param delayMilliSeconds [optional] if defined loading starts delayMilliSeconds later, otherwise "immediately"
//
abego.TiddlyWikiIncluder.include = function(url, delayMilliSeconds) {
	if (!isIncludeEnabled() || includedStores[url])
		return;
	var self = this;
	
	includes.push(url);
	includedStores[url] = WAITING;

	var loadStoreCallback = function(theStore,urlInCallback,params,errorMessage) {
		if (theStore === undefined) {
			includedStores[url] = errorMessage;
			self.onError(url, errorMessage);
			return;
		}
		includedStores[url] = theStore;
		pendingOnLoadURLs.push(url);
		invokeLater(notifyListeners);
	};
	
	var loadStore = function() {
		includedStores[url] = LOADING;
		abego.loadTiddlyWikiStore(url,loadStoreCallback,null,progress);
	};
	
	if (delayMilliSeconds)
		invokeLater(loadStore, delayMilliSeconds);
	else
		loadStore();
};


// iterates over all tiddlers of "the store" and all tiddlers of included (and loaded) stores
//
abego.TiddlyWikiIncluder.forReallyEachTiddler = function(callback) {
	var caller = function() {
		store.forEachTiddler(callback);
	};
	
	getFunctionUsingForReallyEachTiddler(caller).call(store);
};


// function abego.TiddlyWikiIncluder.getFunctionUsingForReallyEachTiddler(func)
//
// Returns a function that behaves as func, but every call to store.forEachTiddler will actually 
// be a call to forReallyEachTiddler, i.e. iterate over the tiddlers the main store and of the 
// included TiddlyWikis
//
// @return the patched function
//
abego.TiddlyWikiIncluder.getFunctionUsingForReallyEachTiddler = getFunctionUsingForReallyEachTiddler;


// function abego.TiddlyWikiIncluder.useForReallyEachTiddler(object,property)
//
// Patches the function hold in the given property of the object in such a way that every call
// to store.forEachTiddler will actually be a call to forReallyEachTiddler, i.e. iterate over the
// tiddlers the main staire and of the included TiddlyWikis
//
// @param object
// @param property the name of the property of the object containing the function to be patched.
// @return the patched function
//
abego.TiddlyWikiIncluder.useForReallyEachTiddler = useForReallyEachTiddler;


// Add a listener function to the TiddlyWikiIncluder.
//
// @param listener function(urls)
//							url: [] of Strings, containing the urls of the TiddlyWiki just included
//									(see url@abego.TiddlyWikiIncluder.include)
//						called whenever one or more TiddlyWiki store are successfully included.
//
abego.TiddlyWikiIncluder.addListener = function(listener) {
	listeners.push(listener);
};

// -------------------------------------------------------------------------------
// TiddlyWikiIncluder initialization code

abego.TiddlyWikiIncluder.addListener(refreshTiddlyWiki);

//----------------------------------------------------------------------------
// Options Support

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

config.shadowTiddlers.AdvancedOptions += "\n<<option chkUseInclude>> Include ~TiddlyWikis (IncludeList | IncludeState | [[help|http://tiddlywiki.abego-software.de/#%5B%5BIncludePlugin%20Documentation%5D%5D]])\n^^(Reload this ~TiddlyWiki to make changes become effective)^^";
config.shadowTiddlers.IncludeState = "<<includeState>>";

//================================================================================
// Default Progress Handling for abego.TiddlyWikiIncluder

var showAnimated = function(e, showing, duration) {
	if (!anim || !abego.ShowAnimation) {
		e.style.display = showing ? "block" : "none";
		return;
	}
	
	anim.startAnimating(new abego.ShowAnimation(e,showing,duration));
};

abego.TiddlyWikiIncluder.getDefaultProgressFunction = function() {

	setStylesheet(
		".includeProgressState{\n"+
		"background-color:#FFCC00;\n"+
		"position:absolute;\n"+
		"right:0.2em;\n"+
		"top:0.2em;\n"+
		"width:7em;\n"+
		"padding-left:0.2em;\n"+
		"padding-right:0.2em\n"+
		"}\n",
		"abegoInclude");

	var createStateElem = function() {
		var e = document.createElement("div");
		e.className = "includeProgressState";
		e.style.display = "none";
		document.body.appendChild(e);
		return e;
	};
	
	var stateElem = createStateElem();


	var showState = function(message) {
		removeChildren(stateElem);
		createTiddlyText(stateElem,message);
		showAnimated(stateElem,true,0);
	};

	var hideState = function() {
		// hide the state the next idle time 
		invokeLater(function() {
			showAnimated(stateElem,false,ANI_DURATION_HIDE_STATE);
		},100,ANIMATION_PRIORITY);
	};
	
	var myProgressFunction = function(message, sender, state, url, params) {
		
		if (state == "Done" || state == "Failed") {
			hideState();
			return;
		}
		
		if (sender == "abego.loadTiddlyWikiStore") {
			idleCount = 0;
			if (state == "Processing")
				showState("Including...");
		} else {
			showState(message);
		}
	};
	return myProgressFunction;
};

abego.TiddlyWikiIncluder.setProgressFunction(abego.TiddlyWikiIncluder.getDefaultProgressFunction());


//================================================================================
// The "include" macro
//
// Syntax: <<include {url}* [delay: {milliSeconds}] [hide: true] >>
//

config.macros.include = {};
config.macros.include.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
    params = paramString.parseParams("url",null,true,false,true); // allowEval, cascadeDefaults, names allowed
	var delay = parseInt(getParam(params,"delay","0"));
	var urls = params[0]["url"];
	var hide = getFlag(params, "hide", false);
	if (!hide)
		createTiddlyText(createTiddlyElement(place,"code"),wikifier.source.substring(wikifier.matchStart, wikifier.nextMatch));
	for (var i = 0; urls && i < urls.length; i++)
		abego.TiddlyWikiIncluder.include(urls[i],delay);
};


//================================================================================
// The "includeState" macro
//
// Syntax: <<includeState>>

config.macros.includeState = {};
config.macros.includeState.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	var getFullState = function () {
		var s = "";
		var includes = abego.TiddlyWikiIncluder.getIncludes();
		if (!includes.length)
			return "{{noIncludes{\nNo includes or 'include' is disabled (see AdvancedOptions)\n}}}\n";
			
		s += "|!Address|!State|\n";
		for (var i = 0; i < includes.length; i++) {
			var inc = includes[i];
			s += "|{{{"+inc+"}}}|";
			var t = abego.TiddlyWikiIncluder.getState(inc);
			s += t ? "{{{"+t+"}}}" : "included";
			s += "|\n"
		}
		s += "|includeState|k\n";
		return s;
	};
	
	var updateState = function(){
		removeChildren(div);
		wikify(getFullState(),div);
		if (abego.TiddlyWikiIncluder.hasPendingIncludes())
			invokeLater(updateState,500,UPDATE_STATE_PRIORITY);
	};

	var div = createTiddlyElement(place,"div");
	
	invokeLater(updateState,0,UPDATE_STATE_PRIORITY);
};

//================================================================================
// Tiddler extension/modification

var orig_Tiddler_isReadOnly = Tiddler.prototype.isReadOnly;

// Includes tiddlers are readonly.
Tiddler.prototype.isReadOnly = function() {
	return orig_Tiddler_isReadOnly.apply(this,arguments) || this.isIncluded();
}

Tiddler.prototype.isIncluded = function() {
	return this.includeURL != undefined;
};

Tiddler.prototype.getIncludeURL = function() {
	return this.includeURL;
};


//================================================================================
// TiddlyWiki modifications

// In some TiddlyWiki functions the "forEachTiddler" should work on all tiddlers, also those from 
// included store. (E.g. TiddlyWiki.prototype.getTags)
//
// But not for all (e.g. TiddlyWiki.prototype.getTiddlers is used for saving, but only the "own" tiddlers should be saved)
//
// Therefore explicitly list the functions that should be "wrapped" to use the "forReallyEachTiddler".
//
var tiddlyWikiFunctionsUsingForReallyEachTiddler = {
	getMissingLinks: 1, getOrphans: 1,getTags:1, reverseLookup: 1, updateTiddlers: 1};
	
for (var n in tiddlyWikiFunctionsUsingForReallyEachTiddler)
	useForReallyEachTiddler(TiddlyWiki.prototype,n);


//================================================================================
// Make IntelliTagger "Include-aware"

var patchIntelliTagger = function() {
	if (abego.IntelliTagger)
		useForReallyEachTiddler(abego.IntelliTagger,"assistTagging");
};

//================================================================================
// Perform plugin startup tasks

attachToStore();
invokeLater(includeFromIncludeList,100);
invokeLater(patchIntelliTagger,100);

})();

//}}}
<html><iframe frameborder="0"  width="180px"  height="180px" scrolling="no" src="clock.html"></iframe></html>
<html>
<body>
<p style="align: center"><a href="http://www.amazingcounter.com"><img border="0" src="http://cb.amazingcounters.com/counter.php?i=2138558&amp;c=6415987" alt="original graphics"/></a><br/>
</body>
</html>
<html>
<div align="center" id="cboxdiv">
<iframe frameborder="0" width="170" height="305" src="http://www5.cbox.ws/box/?boxid=68332&amp;boxtag=468tl5&amp;sec=main" marginheight="2" marginwidth="2" scrolling="auto" allowtransparency="yes" name="cboxmain" style="border:#EDDEDB 1px solid;" id="cboxmain"></iframe><br/>
<iframe frameborder="0" width="170" height="75" src="http://www5.cbox.ws/box/?boxid=68332&amp;boxtag=468tl5&amp;sec=form" marginheight="2" marginwidth="2" scrolling="no" allowtransparency="yes" name="cboxform" style="border:#EDDEDB 1px solid;border-top:0px" id="cboxform"></iframe>
</div>
</html>
<html>
<body >
<img src="head.jpg">
</body>
</html>
<html>
<body>
<embed src="http://www.myicon.com.tw/widget/isay/isay_ppcomomo.swf?id=9543dd140884a5e6dfeb6e1e7c5705e121740" menu="false" quality="high" wmode="transparent" width="170" height="370" /></embed>
</body>
</html>
/***
|''Name:''|zh-HantTranslationPlugin|
|''Description:''|Translation of TiddlyWiki into Traditional Chinese|
|''Source:''|http://tiddlywiki-zh.googlecode.com/svn/trunk/|
|''Subversion:''|http://svn.tiddlywiki.org/Trunk/association/locales/core/zh-Hant/locale.zh-Hant.js|
|''Author:''|BramChen (bram.chen (at) gmail (dot) com)|
|''Version:''|2.2.6|
|''Date:''|Dec 01, 2007|
|''Comments:''|Please make comments at http://groups-beta.google.com/group/TiddlyWiki-zh/|
|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|''~CoreVersion:''|2.2.0|
***/

//{{{
// --
// -- Translateable strings
// --

// Strings in "double quotes" should be translated; strings in 'single quotes' should be left alone

config.locale = 'zh-Hant'; // W3C language tag

if (config.options.txtUserName == 'YourName' || !config.options.txtUserName) // do not translate this line, but do translate the next line
	merge(config.options,{txtUserName: "YourName"});

merge(config.tasks,{
	save: {text: "儲存", tooltip: "儲存變更至此 TiddlyWiki", action: saveChanges},
	sync: {text: "同步", tooltip: "將你的資料內容與外部伺服器與檔案同步", content: '<<sync>>'},
	importTask: {text: "導入", tooltip: "自其他檔案或伺服器導入文章或套件", content: '<<importTiddlers>>'},
	tweak: {text: "選項", tooltip: "改變此 TiddlyWiki 的顯示與行為的設定", content: '<<options>>'},
	plugins: {text: "套件管理", tooltip: "管理已安裝的套件", content: '<<plugins>>'}
});

merge(config.optionsDesc,{
	txtUserName: "編輯文章所使用之作者署名",
	chkRegExpSearch: "啟用正規式搜尋",
	chkCaseSensitiveSearch: "搜尋時,區分大小寫",
	chkAnimate: "使用動畫顯示",
	chkSaveBackups: "儲存變更前,保留備份檔案",
	chkAutoSave: "自動儲存變更",
	chkGenerateAnRssFeed: "儲存變更時,也儲存 RSS feed",
	chkSaveEmptyTemplate: "儲存變更時,也儲存空白範本",
	chkOpenInNewWindow: "於新視窗開啟連結",
	chkToggleLinks: "點擊已開啟文章將其關閉",
	chkHttpReadOnly: "非本機瀏覽文件時,隱藏編輯功能",
	chkForceMinorUpdate: "修改文章時,不變更作者名稱與日期時間",
	chkConfirmDelete: "刪除文章前須確認",
	chkInsertTabs: "使用 tab 鍵插入定位字元,而非跳至下一個欄位",
	txtBackupFolder: "存放備份檔案的資料夾",
	txtMaxEditRows: "編輯模式中顯示列數",
	txtFileSystemCharSet: "指定儲存文件所在之檔案系統之字集 (僅適用於 Firefox/Mozilla only)"});

// Messages
merge(config.messages,{
	customConfigError: "套件載入發生錯誤,詳細請參考 PluginManager",
	pluginError: "發生錯誤: %0",
	pluginDisabled: "未執行,因標籤設為 'systemConfigDisable'",
	pluginForced: "已執行,因標籤設為 'systemConfigForce'",
	pluginVersionError: "未執行,套件需較新版本的 TiddlyWiki",
	nothingSelected: "尚未作任何選擇,至少需選擇一項",
	savedSnapshotError: "此 TiddlyWiki 未正確存檔,詳見 http://www.tiddlywiki.com/#DownloadSoftware",
	subtitleUnknown: "(未知)",
	undefinedTiddlerToolTip: "'%0' 尚無內容",
	shadowedTiddlerToolTip: "'%0' 尚無內容, 但已定義隱藏的預設值",
	tiddlerLinkTooltip: "%0 - %1, %2",
	externalLinkTooltip: "外部連結至 %0",
	noTags: "未設定標籤的文章",
	notFileUrlError: "須先將此 TiddlyWiki 存至檔案,才可儲存變更",
	cantSaveError: "無法儲存變更。可能的原因有:\n- 你的瀏覽器不支援此儲存功能(Firefox, Internet Explorer, Safari and Opera 經適當設定後可儲存變更)\n- 也可能是你的 TiddlyWiki 檔名包含不合法的字元所致。\n- 或是 TiddlyWiki 文件被改名或搬移。",
	invalidFileError: " '%0' 非有效之 TiddlyWiki 文件",
	backupSaved: "已儲存備份",
	backupFailed: "無法儲存備份",
	rssSaved: "RSS feed 已儲存",
	rssFailed: "無法儲存 RSS feed ",
	emptySaved: "已儲存範本",
	emptyFailed: "無法儲存範本",
	mainSaved: "主要的TiddlyWiki已儲存",
	mainFailed: "無法儲存主要 TiddlyWiki,所作的改變未儲存",
	macroError: "巨集 <<\%0>> 執行錯誤",
	macroErrorDetails: "執行巨集 <<\%0>> 時,發生錯誤 :\n%1",
	missingMacro: "無此巨集",
	overwriteWarning: "'%0' 已存在,[確定]覆寫之",
	unsavedChangesWarning: "注意! 尚未儲存變更\n\n[確定]存檔,或[取消]放棄存檔?",
	confirmExit: "--------------------------------\n\nTiddlyWiki 以更改內容尚未儲存,繼續的話將遺失這些更動\n\n--------------------------------",
	saveInstructions: "SaveChanges",
	unsupportedTWFormat: "未支援此 TiddlyWiki 格式:'%0'",
	tiddlerSaveError: "儲存文章 '%0' 時,發生錯誤。",
	tiddlerLoadError: "載入文章 '%0' 時,發生錯誤。",
	wrongSaveFormat: "無法使用格式 '%0' 儲存,請使用標准格式存放",
	invalidFieldName: "無效的欄位名稱:%0",
	fieldCannotBeChanged: "無法變更欄位:'%0'",
	loadingMissingTiddler: "正從伺服器 '%1' 的:\n\n工作區 '%3' 中的 '%2' 擷取文章 '%0'"});

merge(config.messages.messageClose,{
	text: "關閉",
	tooltip: "關閉此訊息"});

config.messages.backstage = {
	open: {text: "控制台", tooltip: "開啟控制台執行編寫工作"},
	close: {text: "關閉", tooltip: "關閉控制台"},
	prompt: "控制台:",
	decal: {
		edit: {text: "編輯", tooltip: "編輯 '%0'"}
	}
};

config.messages.listView = {
	tiddlerTooltip: "檢視全文",
	previewUnavailable: "(無法預覽)"
};

config.messages.dates.months = ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"];
config.messages.dates.days = ["星期日", "星期一","星期二", "星期三", "星期四", "星期五", "星期六"];
// config.messages.dates.shortMonths = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
config.messages.dates.shortMonths = ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"];
// config.messages.dates.shortDays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
config.messages.dates.shortDays = ["日", "一","二", "三", "四", "五", "六"];
// suffixes for dates, eg "1st","2nd","3rd"..."30th","31st"
config.messages.dates.daySuffixes = ["st","nd","rd","th","th","th","th","th","th","th",
		"th","th","th","th","th","th","th","th","th","th",
		"st","nd","rd","th","th","th","th","th","th","th",
		"st"];
config.messages.dates.am = "上午";
config.messages.dates.pm = "下午";

merge(config.messages.tiddlerPopup,{ 
	});

merge(config.views.wikified.tag,{
	labelNoTags: "未設標籤",
	labelTags: "標籤: ",
	openTag: "開啟標籤 '%0'",
	tooltip: "顯示標籤為 '%0' 的文章",
	openAllText: "開啟以下所有文章",
	openAllTooltip: "開啟以下所有文章",
	popupNone: "僅此文標籤為 '%0'"});

merge(config.views.wikified,{
	defaultText: "",
	defaultModifier: "(未完成)",
	shadowModifier: "(預設)",
	dateFormat: "YYYY年0MM月0DD日",
	createdPrompt: "建立於"});

merge(config.views.editor,{
	tagPrompt: "設定標籤之間以空白區隔,[[標籤含空白時請使用雙中括弧]],或點選現有之標籤加入",
	defaultText: ""});

merge(config.views.editor.tagChooser,{
	text: "標籤",
	tooltip: "點選現有之標籤加至本文章",
	popupNone: "未設定標籤",
	tagTooltip: "加入標籤 '%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: " 尋找",
	prompt: "搜尋本 Wiki",
	accessKey: "F",
	successMsg: " %0 篇符合條件: %1",
	failureMsg: " 無符合條件: %0"});

merge(config.macros.tagging,{
	label: "引用標籤:",
	labelNotTag: "無引用標籤",
	tooltip: "列出標籤為 '%0' 的文章"});

merge(config.macros.timeline,{
	dateFormat: "YYYY年0MM月0DD日"});

merge(config.macros.allTags,{
	tooltip: "顯示文章- 標籤為'%0'",
	noTags: "沒有標籤"});

config.macros.list.all.prompt = "依字母排序";
config.macros.list.missing.prompt = "被引用且內容空白的文章";
config.macros.list.orphans.prompt = "未被引用的文章";
config.macros.list.shadowed.prompt = "這些隱藏的文章已預設內容";
config.macros.list.touched.prompt = "自下載或新增後被修改過的文章"; 

merge(config.macros.closeAll,{
	label: "全部關閉",
	prompt: "關閉所有開啟中的 tiddler (編輯中除外)"});

merge(config.macros.permaview,{
	label: "引用連結",
	prompt: "可存取現有開啟之文章的連結位址"});

merge(config.macros.saveChanges,{
	label: "儲存變更",
	prompt: "儲存所有文章,產生新的版本",
	accessKey: "S"});

merge(config.macros.newTiddler,{
	label: "新增文章",
	prompt: "新增 tiddler",
	title: "新增文章",
	accessKey: "N"});

merge(config.macros.newJournal,{
	label: "新增日誌",
	prompt: "新增 jounal",
	accessKey: "J"});

merge(config.macros.options,{
	wizardTitle: "增訂的進階選項",
	step1Title: "增訂的選項儲存於瀏覽器的 cookies",
	step1Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='false' name='chkUnknown'>顯示未知選項</input>",
	unknownDescription: "//(未知)//",
	listViewTemplate: {
		columns: [
			{name: 'Option', field: 'option', title: "選項", type: 'String'},
			{name: 'Description', field: 'description', title: "說明", type: 'WikiText'},
			{name: 'Name', field: 'name', title: "名稱", type: 'String'}
			],
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'}
			]}
	});

merge(config.macros.plugins,{
	wizardTitle: "擴充套件管理",
	step1Title: "- 已載入之套件",
	step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
	skippedText: "(此套件因剛加入,故尚未執行)",
	noPluginText: "未安裝套件",
	confirmDeleteText: "確認是否刪除此文章:\n\n%0",
	removeLabel: "移除 systemConfig 標籤",
	removePrompt: "移除 systemConfig 標籤",
	deleteLabel: "刪除",
	deletePrompt: "永遠刪除所選",

	listViewTemplate : {
		columns: [
			{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "套件", type: 'Tiddler'},
			{name: 'Size', field: 'size', tiddlerLink: 'size', title: "大小", type: 'Size'},
			{name: 'Forced', field: 'forced', title: "強制執行", tag: 'systemConfigForce', type: 'TagCheckbox'},
			{name: 'Disabled', field: 'disabled', title: "停用", tag: 'systemConfigDisable', type: 'TagCheckbox'},
			{name: 'Executed', field: 'executed', title: "已載入", type: "Boolean", trueText: "是", falseText: "否"},
			{name: 'Startup Time', field: 'startupTime', title: "載入時間", type: 'String'},
			{name: 'Error', field: 'error', title: "載入狀態", type: 'Boolean', trueText: "錯誤", falseText: "正常"},
			{name: 'Log', field: 'log', title: "紀錄", type: 'StringList'}
			],
		rowClasses: [
			{className: 'error', field: 'error'},
			{className: 'warning', field: 'warning'}
			]}
	});

merge(config.macros.toolbar,{
	moreLabel: "其他",
	morePrompt: "顯示更多工具命令"});
	
merge(config.macros.refreshDisplay,{
	label: "刷新",
	prompt: "刷新此 TiddlyWiki 顯示"
	});
	
merge(config.macros.importTiddlers,{
	readOnlyWarning: "TiddlyWiki 於唯讀模式下,不支援導入文章。請由本機(file://)開啟 TiddlyWiki 文件",
	wizardTitle: "自其他檔案或伺服器導入文章",
	step1Title: "步驟一:指定伺服器或來源文件",
	step1Html: "指定伺服器類型:<select name='selTypes'><option value=''>選取...</option></select><br>請輸入網址或路徑:<input type='text' size=50 name='txtPath'><br>...或選擇來源文件:<input type='file' size=50 name='txtBrowse'><br><hr>...或選擇指定的饋入來源:<select name='selFeeds'><option value=''>選取...</option></select>",
	openLabel: "開啟",
	openPrompt: "開啟檔案或",
	openError: "讀取來源文件時發生錯誤",
	statusOpenHost: "正與伺服器建立連線",
	statusGetWorkspaceList: "正在取得可用之文章清單",
	step2Title: "步驟二:選擇工作區",
	step2Html: "輸入工作區名稱:<input type='text' size=50 name='txtWorkspace'><br>...或選擇工作區:<select name='selWorkspace'><option value=''>選取...</option></select>",
	cancelLabel: "取消",
	cancelPrompt: "取消本次導入動作",
	statusOpenWorkspace: "正在開啟工作區",
	statusGetTiddlerList: "正在取得可用之文章清單",
	step3Title: "步驟三:選擇欲導入之文章",
	step3Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='true' name='chkSync'>保持這些文章與伺服器的連結,便於同步後續的變更。</input><br><input type='checkbox' name='chkSave'>儲存此伺服器的詳細資訊於標籤為 'systemServer' 的文章名為:</input> <input type='text' size=25 name='txtSaveTiddler'>", 
	importLabel: "導入",
	importPrompt: "導入所選文章",
	confirmOverwriteText: "確定要覆寫這些文章:\n\n%0",
	step4Title: "步驟四:正在導入%0 篇文章",
	step4Html: "<input type='hidden' name='markReport'></input>", // DO NOT TRANSLATE
	doneLabel: "完成",
	donePrompt: "關閉",
	statusDoingImport: "正在導入文章 ...",
	statusDoneImport: "所選文章已導入",
	systemServerNamePattern: "%2 位於 %1",
	systemServerNamePatternNoWorkspace: "%1",
	confirmOverwriteSaveTiddler: "此 tiddler '%0' 已經存在。點擊「確定」以伺服器上料覆寫之,或「取消」不變更後離開",
	serverSaveTemplate: "|''Type:''|%0|\n|''網址:''|%1|\n|''工作區:''|%2|\n\n此文為自動產生紀錄伺服器之相關資訊。",
	serverSaveModifier: "(系統)",

	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "文章", type: 'Tiddler'},
			{name: 'Size', field: 'size', tiddlerLink: 'size', title: "大小", type: 'Size'},
			{name: 'Tags', field: 'tags', title: "標籤", type: 'Tags'}
			],
		rowClasses: [
			]}
	});

merge(config.macros.sync,{
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "文章", type: 'Tiddler'},
			{name: 'Server Type', field: 'serverType', title: "伺服器類型", type: 'String'},
			{name: 'Server Host', field: 'serverHost', title: "伺服器主機", type: 'String'},
			{name: 'Server Workspace', field: 'serverWorkspace', title: "伺服器工作區", type: 'String'},
			{name: 'Status', field: 'status', title: "同步情形", type: 'String'},
			{name: 'Server URL', field: 'serverUrl', title: "伺服器網址", text: "View", type: 'Link'}
			],
		rowClasses: [
			],
		buttons: [
			{caption: "同步更新這些文章", name: 'sync'}
			]},
	wizardTitle: "將你的資料內容與外部伺服器與檔案同步",
	step1Title: "選擇欲同步的文章",
	step1Html: '<input type="hidden" name="markList"></input>', // DO NOT TRANSLATE
	syncLabel: "同步",
	syncPrompt: "同步更新這些文章",
	hasChanged: "已更動",
	hasNotChanged: "未更動",
	syncStatusList: {
		none: {text: "...", color: 'transparent'},
		changedServer: {text: "伺服器資料已更動", color: '#80ff80'},
		changedLocally: {text: "本機資料已更動", color: '#80ff80'},
		changedBoth: {text: "已同時更新本機與伺服器上的資料", color: '#ff8080'},
		notFound: {text: "伺服器無此資料", color: '#ffff80'},
		putToServer: {text: "已儲存更新資料至伺服器", color: '#ff80ff'},
		gotFromServer: {text: "已從伺服器擷取更新資料", color: '#80ffff'}
		}
	});

merge(config.macros.annotations,{
	});

merge(config.commands.closeTiddler,{
	text: "關閉",
	tooltip: "關閉本文"});

merge(config.commands.closeOthers,{
	text: "關閉其他",
	tooltip: "關閉其他文章"});

merge(config.commands.editTiddler,{
	text: "編輯",
	tooltip: "編輯本文",
	readOnlyText: "檢視",
	readOnlyTooltip: "檢視本文之原始內容"});

merge(config.commands.saveTiddler,{
	text: "完成",
	tooltip: "確定修改"});

merge(config.commands.cancelTiddler,{
	text: "取消",
	tooltip: "取消修改",
	warning: "確定取消對 '%0' 的修改嗎?",
	readOnlyText: "完成",
	readOnlyTooltip: "返回正常顯示模式"});

merge(config.commands.deleteTiddler,{
	text: "刪除",
	tooltip: "刪除文章",
	warning: "確定刪除 '%0'?"});

merge(config.commands.permalink,{
	text: "引用連結",
	tooltip: "本文引用連結"});

merge(config.commands.references,{
	text: "引用",
	tooltip: "引用本文的文章",
	popupNone: "本文未被引用"});

merge(config.commands.jump,{
	text: "捲頁",
	tooltip: "捲頁至其他已開啟的文章"});

merge(config.commands.syncing,{
	text: "同步",
	tooltip: "本文章與伺服器或其他外部檔案的同步資訊",
	currentlySyncing: "<div>同步類型:<span class='popupHighlight'>'%0'</span></"+"div><div>與伺服器:<span class='popupHighlight'>%1 同步</span></"+"div><div>工作區:<span class='popupHighlight'>%2</span></"+"div>", // Note escaping of closing <div> tag
	notCurrentlySyncing: "無進行中的同步動作",
	captionUnSync: "停止同步此文章",
	chooseServer: "與其他伺服器同步此文章:",
	currServerMarker: "\u25cf ",
	notCurrServerMarker: "  "});

merge(config.commands.fields,{
	text: "欄位",
	tooltip: "顯示此文章的擴充資訊",
	emptyText: "此文章沒有擴充欄位",
	listViewTemplate: {
		columns: [
			{name: 'Field', field: 'field', title: "擴充欄位", type: 'String'},
			{name: 'Value', field: 'value', title: "內容", type: 'String'}
			],
		rowClasses: [
			],
		buttons: [
			]}});

merge(config.shadowTiddlers,{
	DefaultTiddlers: "GettingStarted",
	GettingStarted: "使用此 TiddlyWiki 的空白範本之前,請先修改以下預設文章:\n* SiteTitle 及 SiteSubtitle:網站的標題和副標題,顯示於頁面上方<br />(在儲存變更後,將顯示於瀏覽器視窗的標題列)。\n* MainMenu:主選單(通常在頁面左側)。\n* DefaultTiddlers:內含一些文章的標題,可於載入TiddlyWiki 後的預設開啟。\n請輸入您的大名,作為所建立/ 編輯的文章署名:<<option txtUserName>>",
	MainMenu: "[[使用說明|GettingStarted]]\n\n\n^^~TiddlyWiki 版本:<<version>>\n© 2007 [[UnaMesa|http://www.unamesa.org/]]^^",
	OptionsPanel: "這些設定將暫存於瀏覽器\n請簽名<<option txtUserName>>\n (範例:WikiWord)\n\n <<option chkSaveBackups>> 儲存備份\n <<option chkAutoSave>> 自動儲存\n <<option chkRegExpSearch>> 正規式搜尋\n <<option chkCaseSensitiveSearch>> 區分大小寫搜尋\n <<option chkAnimate>> 使用動畫顯示\n----\n [[進階選項|AdvancedOptions]]",
	SiteTitle: "我的 TiddlyWiki",
	SiteSubtitle: "一個可重複使用的個人網頁式筆記本",
	SiteUrl: 'http://www.tiddlywiki.com/',
	SideBarOptions: '<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal " YYYY年0MM月0DD日" "日誌">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel  "偏好設定 »" "變更 TiddlyWiki 選項">>',
	SideBarTabs: '<<tabs txtMainTab "最近更新" "依更新日期排序" TabTimeline "全部" "所有文章" TabAll "分類" "所有標籤" TabTags "更多" "其他" TabMore>>',
	StyleSheet: '[[StyleSheetLocale]]',
	TabMore: '<<tabs txtMoreTab "未完成" "內容空白的文章" TabMoreMissing "未引用" "未被引用的文章" TabMoreOrphans "預設文章" "已預設內容的隱藏文章" TabMoreShadowed>>'});

merge(config.annotations,{
	AdvancedOptions: "此預設文章可以存取一些進階選項。",
	ColorPalette: "此預設文章裡的設定值,將決定 ~TiddlyWiki 使用者介面的配色。",
	DefaultTiddlers: "當 ~TiddlyWiki 在瀏覽器中開啟時,此預設文章裡列出的文章,將被自動顯示。",
	EditTemplate: "此預設文章裡的 HTML template 將決定文章進入編輯模式時的顯示版面。",
	GettingStarted: "此預設文章提供基本的使用說明。",
	ImportTiddlers: "此預設文章提供存取導入中的文章。",
	MainMenu: "此預設文章的內容,為於螢幕左側主選單的內容",
	MarkupPreHead: "此文章的內容將加至 TiddlyWiki 文件的 <head> 段落的起始",
	MarkupPostHead: "此文章的內容將加至 TiddlyWiki 文件的 <head> 段落的最後",
	MarkupPreBody: "此文章的內容將加至 TiddlyWiki 文件的 <body> 段落的起始",
	MarkupPostBody: "此文章的內容將加至 TiddlyWiki 文件的 <body> 段落的最後,於 script 區塊之前",
	OptionsPanel: "此預設文章的內容,為於螢幕右側副選單中的選項面板裡的內容",
	PageTemplate: "此預設文章裡的 HTML template 決定的 ~TiddlyWiki 主要的版面配置",
	PluginManager: "此預設文章提供存取套件管理員",
	SideBarOptions: "此預設文章的內容,為於螢幕右側副選單中選項面板裡的內容",
	SideBarTabs: "此預設文章的內容,為於螢幕右側副選單中的頁籤面板裡的內容",
	SiteSubtitle: "此預設文章的內容為頁面的副標題",
	SiteTitle: "此預設文章的內容為頁面的主標題",
	SiteUrl: "此預設文章的內容須設定為文件發佈時的完整網址",
	StyleSheetColors: "此預設文章內含的 CSS 規則,為相關的頁面元素的配色。''勿修改此文'',請於 StyleSheet 中作增修。",
	StyleSheet: "此預設文章內容可包含 CSS 規則",
	StyleSheetLayout: "此預設文章內含的 CSS 規則,為相關的頁面元素的版面配置。''勿修改此文'',請於 StyleSheet 中作增修。",
	StyleSheetLocale: "此預設文章內含的 CSS 規則,可依翻譯語系做適當調整",
	StyleSheetPrint: "此預設文章內含的 CSS 規則,用於列印時的樣式",
	TabAll: "此預設文章的內容,為於螢幕右側副選單中的「全部」頁籤的內容",
	TabMore: "此預設文章的內容,為於螢幕右側副選單中的「更多」頁籤的內容",
	TabMoreMissing: "此預設文章的內容,為於螢幕右側副選單中的「未完成」頁籤的內容",
	TabMoreOrphans: "此預設文章的內容,為於螢幕右側副選單中的「未引用」頁籤的內容",
	TabMoreShadowed: "此預設文章的內容,為於螢幕右側副選單中的「預設文章」頁籤的內容",
	TabTags: "此預設文章的內容,為於螢幕右側副選單中的「分類」頁籤的內容",
	TabTimeline: "此預設文章的內容,為於螢幕右側副選單中的「最近更新」頁籤的內容",
	ViewTemplate: "此預設文章裡的 HTML template 決定文章顯示的樣子"
	});
//}}}
// /%
//!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);
	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
// %/
{{{

config.options.chkAutoSave=false;
config.options.chkSaveBackups=false;

/*
替 Backstage 新增 admin 管理項目

config.backstageTasks = ["save","sync","importTask","tweak","plugins","admin"];

merge(config.tasks,{
	save: {text: "儲存", tooltip: "儲存變更至此 TiddlyWiki", action: saveChanges},
	sync: {text: "同步", tooltip: "將你的資料內容與外部伺服器與檔案同步", content: '<<sync>>'},
	importTask: {text: "導入", tooltip: "自其他檔案或伺服器導入文章或套件", content: '<<importTiddlers>>'},
	tweak: {text: "選項", tooltip: "改變此 TiddlyWiki 的顯示與行為的設定", content: '<<options>>'},
	plugins: {text: "套件管理", tooltip: "管理已安裝的套件", content: '<<plugins>>'},
	admin: {text: "平台管理", tooltip: "管理知識平台", content: '|vertical-align:top;<<newTiddler>> |vertical-align:top;<<permaview>> |<<search>>|'}
});
*/

/*
重新載入時, 自動開啟指定標籤的所有 Tiddler
---------------------------------------------------------------------------
*/ 

// TiddlyWiki 的 Option 名稱前三個字只能是 'txt' 或 'chk'
// 'txt' 代表文字欄位, 'chk' 代表勾選項目

merge(config.options, {txtShowTiddlerTag:"news"});
merge(config.optionsDesc,{txtShowTiddlerTag:"設定自動載入 Tiddler 的標籤名稱 (內定 5 則)"});

config.autoOpenTiddlers = {};

config.autoOpenTiddlers.handler = function()
{
//        var newTiddlers = store.reverseLookup("tags","excludeLists",false,"modified");
//        var newTiddlers = store.getTiddlers("modified");

          var newTiddlers = store.getTaggedTiddlers(config.options.txtShowTiddlerTag,"modified");

          var newTiddlers = newTiddlers.reverse();
          var max = Math.min(5,newTiddlers.length-1);
          for (var i=max; i>=0; i--)
               { story.displayTiddler(null,newTiddlers[i].title);} 
}

window.tbala_autoOpenTiddlers_restart = restart;
restart = function ()
{
        window.tbala_autoOpenTiddlers_restart();
        config.autoOpenTiddlers.handler();
}

}}}
{{{
config.macros.tbalaFlashPlayer = {};

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

  if (config.browser.isIE)
     var URLtext = document.URL.replace(/\\/g,"\/");
  else 
     var URLtext = document.URL;
  //alert(URLtext);

  var x = URLtext.lastIndexOf("/");
  var baseDIR = URLtext.substr(0,x);
  var jsDIR = '<script type="text/javascript" src="' + baseDIR + 'swfobject.js"></script>'

  var generator=window.open('','name','height=550,width=750');
  generator.document.write('<html><head><title>tbala Flash Player</title>');
  generator.document.write(jsDIR);
  generator.document.write('</head><body>');
  generator.document.write('<div id="flashTag" style="width:700px;height:500px;overflow:auto"></div>');
  generator.document.write('<script type="text/javascript">');
  generator.document.write('var xo = new SWFObject("' + baseDIR + '/' + params[0] + '","mymovie","700","500","8", "#336699");');
  //generator.document.write('xo.addParam("wmode", "transparent");');
  generator.document.write('xo.write("flashTag");');
  generator.document.write('</script>');
  generator.document.write('</body></html>');
  generator.document.close();

}
}}}
//{{{
config.macros.tbalaFlashPlayerButton = {};

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

  var title = params[0] || tiddler.title;
  this.label = params[1] || title;
  this.tooltip = params[1] || title;

  createTiddlyButton(place, this.label, this.tooltip,
       function(e) { config.macros.tbalaFlashPlayerButton.show(e, params[0]); },
       null, null, null);
}

config.macros.tbalaFlashPlayerButton.show = function(ev,fname) {
  ev.cancelBubble = true;   
  if (ev.stopPropagation) ev.stopPropagation();

  if (config.browser.isIE)
     var URLtext = document.URL.replace(/\\/g,"\/");
  else 
     var URLtext = document.URL;
  //alert(URLtext);

  var x = URLtext.lastIndexOf("/");
  var baseDIR = URLtext.substr(0,x);
  var jsDIR = '<script type="text/javascript" src="' + baseDIR + '/swfobject.js"></script>'
  //alert(jsDIR);

  var generator=window.open('','name','height=550,width=780');
  generator.document.write('<html><head><title>tbala Flash Player Button</title>');
  generator.document.write(jsDIR);
  generator.document.write('</head><body>');
  generator.document.write('<div id="flashTag" style="width:780px;height:500px;overflow:auto"></div>');
  generator.document.write('<script type="text/javascript">');
  generator.document.write('var xo = new SWFObject("' + baseDIR + '/' + fname + '","mymovie","700","500","8", "#336699");');
  //generator.document.write('xo.addParam("wmode", "transparent");');
  generator.document.write('xo.write("flashTag");');
  generator.document.write('</script>');
  generator.document.write('</body></html>');
  generator.document.close();

}
//}}}
{{{
config.macros.toggleSideBar={};

config.macros.toggleSideBar.settings={
         styleHide :  "#sidebar { display:none ;}\n"+"#contentWrapper #displayArea { margin-right: 1em;}\n"+"",
         styleShow : " ",
         arrow1: "«",
         arrow2: "»"
};

config.macros.toggleSideBar.handler=function (place,macroName,params,wikifier,paramString,tiddler)
{
          var tooltip= params[1]||'toggle sidebar';
          var mode = (params[2] && params[2]=="hide")? "hide":"show";
          var arrow = (mode == "hide")? this.settings.arrow1:this.settings.arrow2;
          var label= (params[0]&&params[0]!='.')?params[0]+" "+arrow:arrow;
          var theBtn = createTiddlyButton(place,label,tooltip,this.onToggleSideBar,"button HideSideBarButton");
          if (mode == "hide")
             { 
             (document.getElementById("sidebar")).setAttribute("toggle","hide");
              setStylesheet(this.settings.styleHide,"ToggleSideBarStyles");
             }
};

config.macros.toggleSideBar.onToggleSideBar = function(){
          var sidebar = document.getElementById("sidebar");
          var settings = config.macros.toggleSideBar.settings;
          if (sidebar.getAttribute("toggle")=='hide')
             {
              setStylesheet(settings.styleShow,"ToggleSideBarStyles");
              sidebar.setAttribute("toggle","show");
              this.firstChild.data= (this.firstChild.data).replace(settings.arrow1,settings.arrow2);
              }
          else
              {    
               setStylesheet(settings.styleHide,"ToggleSideBarStyles");
               sidebar.setAttribute("toggle","hide");
               this.firstChild.data= (this.firstChild.data).replace(settings.arrow2,settings.arrow1);
              }

     return false;
}

setStylesheet(".HideSideBarButton .button {font-weight:bold; padding: 0 5px;}\n","ToggleSideBarButtonStyles");
}}}
<html>
<embed align="middle" src="http://sallychang0625.googlepages.com/date.swf" width="160" height="315"  flashvars="v_wd=2008年來囉!!!還剩下幾天就是情人節囉!!!哈!!!好想吃巧克力唷!!!&v_t=2008/02/14" quality="high" allowScriptAccess="always" wmode="transparent"></html>
[img[創用CC|http://creativecommons.org.tw/gallery/Material/CC-Chinese%20logo%20trans-%2064pixel.png][http://creativecommons.org.tw/]]
@@color:midnightblue;
''Creative Commons由美國史丹福大學法學院教授Lawrence Lessig與其他人於2001年創立,Lessig表示這套授權條款是受到GNU通用公共授權(GNU GPL)的啟發,讓使用者可以根據他人作品的基礎創作,再將自己撰寫而成的作品釋出與人分享。

在數位學習elearning 的領域中,我們常常會用到文字、圖片、影像等等素材來製作我們的教材,而在使用別人的著作之時,最重要的就是取得他人的授權了。而創用CC(Creative Commons)就是為了「促進創造、使用」目的而產生的。

創用CC 3.0 Lincense 共有6種主要授權,並由以下4個常見的icon搭配組合而成,以下將說明它們所代表的意義:''@@
!!BY 姓名標示:
[img[姓名標示|http://creativecommons.org.tw/files/icon_by.gif]]
代表您必須按照作者或授權人所指定的方式,表彰其姓名;但不得以任何方式暗示其為您(或您使用該著作的方式)背書。@@color:deeppink;這是限制性最小的授權,因為您要引用的話只需註明作者及來源,並且可以用為商業目的,也不需要全文引用,可以作部份修改。@@
!!No Derivative Works 禁止改作:
[img[禁止改作|http://creativecommons.org.tw/files/icon_nd.gif]]
這個「等於」的符號,意思就是「您不得改變、轉變或修改該著作」也就是如果您要引用的話,除了必須註明出處是何人之外,引用部份還需要與該原作者所作相同。@@color:deeppink;換句話說,只要沒有加上這個等號的話,就是允計您可以「重新混合該作品的一部份至您的新文章中。」@@
!!Share Alike 相同方式分享 :
[img[相同方式分享|http://creativecommons.org.tw/files/icon_sa.gif]]
若您改變、轉變或改作本著作,僅在採用與本著作相同、相似或相容的授權條款下,您始得散布由本著作而生的衍生著作。@@color:deeppink;簡單意思就是可以讓大家修改原著作,變成大家文章中的一部份,但大家必須使用跟原作者一樣的或類似的授權條款。@@
!!@@color:purple;Noncommercial 非商業性:@@
[img[非商業性|http://creativecommons.org.tw/files/icon_nc.gif]]
這個icon應該很容易懂,也就是您@@color:deeppink;不可以因為錢的目的(商業目的)而使用該著作@@。

!!常用的授權icon加一起的意思說明
| 內容 | 圖示 | 說明 |h
| 姓名標示 | [img[BY|http://sallychang0625.googlepages.com/by.jpg]] |代表您必須按照作者或授權人所指定的方式,表彰其姓名;但不得以任何方式暗示其為您(或您使用該著作的方式)背書|
| 姓名標示─非商業性 | [img[by-nc|http://sallychang0625.googlepages.com/by-nc.jpg]] |必須註明出處是何人之外且不能用於商業目的 |
| 姓名標示─非商業性─相同方式分享 | [img[by-nc-sa|http://sallychang0625.googlepages.com/by-nc-sa.jpg]] |必須註明出處是何人之外且不能用於商業目的,但若您改變、轉變或改作本著作,當散布該衍生著作時,您需採用與本著作相同或類似的授權條|
| 姓名標示─非商業性─禁止改作 | [img[by-nc-nd|http://sallychang0625.googlepages.com/by-nc-nd.jpg]]|必須註明出處是何人之外且不能用於商業目的,亦不得改變、轉變或改作本著作|
| 姓名標示─相同方式分享 |[img[by-sa|http://sallychang0625.googlepages.com/by-sa.jpg]]|可以讓大家修改原著作,變成大家文章中的一部份,但大家必須使用跟原作者一樣的或類似的授權條款|
| 姓名標示─禁止改作 |[img[by-nd|http://sallychang0625.googlepages.com/by-nd.jpg]]|除了BY之外,多加的這個「等於」的符號,意思就是「您不得改變、轉變或修改該著作。」也就是如果您要引用的話,除了必須註明出處是何人之外,引用部份還需要與該原作者所作相同|

@@color:midnightblue;''相信各位看完以上的介紹,應該對創作CC有多一點的認識了吧!!!!''@@
!!演講主題
土芭樂知識瀏覽器暨 TWtBala 介紹 (林葳秦老師主講)
!!內容說明
#全國首創、使用網頁寫網頁功能
#顛覆傳統設計,製作網頁不綁工具
#內建 IE 及Firefox 雙核心瀏覽引擎
#瀏覽網頁不受限、整理資料超EZ,最佳知識管理工具
!!活動名額
限 17 名@@color:red;(目前報名人數已額滿截止,恕不再受理報名,感謝各位的支持!)@@
!!活動地點
台北市南京東路二段 1 號(伯朗咖啡 2F)
!!活動時間
1/26(六) 晚上 7:00-9:00
!!報名辦法:
請 e-mail 至 tw@tbala.net 信箱,土芭樂知識部落,
收到報名資料後,會針對報名者予以回覆報名入場序號。
信件主旨請輸入「報名土芭樂 2008 年新品發表會」
信件內容請詳填「姓名」、「手機電話」、「e-mail」、「部落格或網址」
!!報名者請注意:
#請自備筆記型電腦並充飽電,攜帶充電
#發表會結束後務必將所學應用在工作或生活所需,再將應用成品在網站上公告
是否曾經遇過非得用 IE 才能瀏覽的網頁,讓已習慣用 Firefox 的您而感到困擾?
試試「@@color:deeppink;土芭樂 Firefox 知識瀏覽器@@」吧!

土芭樂 Firefox 知識瀏覽器讓您可以直接在 @@color:deeppink;Firefox @@分頁中以內嵌的@@color:deeppink; IE @@,瀏覽限定使用 IE 的網頁,不僅如此 Firefox 的執行速度也變快了。

不僅如此,好用的隨身版本,可以讓您帶著跑;內建TiddlyWiki tBala首頁(簡稱TWtBala),讓您隨時可以整理資料 Anytime、Anywhere。

''土芭樂覺得它是知識整理的好工具,很適合商務人土及學生使用哦!''

@@color:deeppink;若要體驗土芭樂 Firefox 知識瀏覽器超級雙核心隨身版的魅力,請到http://tbala.net/下載@@

''使用說明:''使用時,如下圖所示,只要點選工具列上的 IE 圖示,即可切換成 IE 瀏覽的畫面。
而且還有好用的google search及方便的Bookmarks Toolbar
[img[http://sallychang0625.googlepages.com/browser.jpg]]
!莎莉相關的網站
1. [[莎莉的異想世界無名版|http://www.wretch.cc/blog/sally0625]]
2. [[氣質美女協會|http://belletw.blogspot.com/]]

!~TiddlyWiki相關網站
1. [[土芭樂3.0-數位新思路|http://tbala.net/tBala3-0801.html]]
2. [[土芭樂知識論壇|http://disscus.tbala.net/disscus1/profile.php?mode=register&sid=22f986fb87622f6b967626489a56110b]](需加入會員)
3. [[TiddlyWiki 使用教學中文版|http://web.nlhs.tyc.edu.tw/~lss/wiki/TiddlyWikiTutorialTW.html#]]
4. [[TiddlyWiki 官方網|http://www.tiddlywiki.com/]]
5. [[Knightnet Default TiddlyWiki|http://knighjm.googlepages.com/knightnet-default-tw.html#Reference]]

!好友的網站
1. [[阿龍的教學TiddlyWiki|http://twalong.googlepages.com/TiddlyWiki.html]]
2. [[Elvy's 數位生活豆知識|http://elvy0309.googlepages.com/elvy.html]]
3. [[Rita's Blog|http://huiyun0815.spaces.live.com/]]

!我的最愛
1. [[MyICON|http://www.myicon.com.tw/]]
2. [[原色大辭典|http://www.colordic.org/]]
3. [[W3School|http://www.w3schools.com/]]
4. [[知識+|http://tw.knowledge.yahoo.com/]]
5. [[鏡‧空間|http://blog.pixnet.net/prb999/]]
<<slideShow noClicks forceRefresh>>

-s-
!!@@color:#4c004c;如何下載@@
1.首先連上http://tbala.net/
2.土芭樂新聞快報->熱門快報->下載土芭樂知識瀏灠器(包含TWtBala)
[img[如何下載|http://sallychang0625.googlepages.com/01.png]]

-s-
!!@@color:#4c004c;如何啟動 TWtBala@@
1.將下載下來的''tBalaKMFirefox2.zip''解壓縮
2.打開''tBalaKMFirefox2''資料夾,擊點~FirefoxPortable.exe,同時開啟TWtBala
[img[如何下載|http://sallychang0625.googlepages.com/02.png]]
3.在''TW''資料夾內可找到''tBala3-0801.html'',這是您開啟~FirefoxPortable內嵌的~TWtBala網頁
[img[如何下載|http://sallychang0625.googlepages.com/03.png]]

-s-
!!@@color:#4c004c;如何新增文章(tiddler)@@
1.在版面右上方可以找到"新增文章"的欄位,點一下即可新增一篇新的文章,就是這麼簡單
[img[如何下載|http://sallychang0625.googlepages.com/04.png]]
[img[如何下載|http://sallychang0625.googlepages.com/05.png]]

-s-
!!@@color:#4c004c;如何更改標題@@
1.在版面右下方可以看到四的標籤,點選設定程序
2.在設定程序裡找的Site Title,點一下即可設定標題
[img[如何下載|http://sallychang0625.googlepages.com/06a.png]]
[img[如何下載|http://sallychang0625.googlepages.com/07.png]]
-s-
!!@@color:#4c004c;如何更改副標題@@
1.在版面右下方可以看到四的標籤,點選設定程序
2.在設定程序裡找的Site Subtitle,點一下即可設定副標題
[img[如何下載|http://sallychang0625.googlepages.com/06b.png]]
[img[如何下載|http://sallychang0625.googlepages.com/08.png]]
!!Step1
在"工具"選單,選"網際網路"選項
[img[step1|http://sallychang0625.googlepages.com/js01.jpg]]
!!Step2
選"安全性"標籤,選"自訂層級"
[img[step1|http://sallychang0625.googlepages.com/js02.jpg]]
!!Step3
捲到"指令碼處理","Active Scripting"選"Enable",然後在底下選"高安全性",按"確定"
[img[step1|http://sallychang0625.googlepages.com/js03.jpg]]
!!Step4
回到畫面按"確定"
[img[step1|http://sallychang0625.googlepages.com/js04.jpg]]
!!Step5
關掉IE,然後再重新打開,就設定成功啦!!!

PS:若要確定瀏覽器儲存剛剛的設定的最好方式就是關閉所有已開啟的視窗,然後再打開。
!!Step1
先連上http://pages.google.com/,然後登入您的帳號、密碼
[img[step1|http://sallychang0625.googlepages.com/pages01.jpg]]
!!Step2
第一次登入需同意Terms and Conditions,那個agree的勾勾記得要打勾唷!!!
[img[step2|http://sallychang0625.googlepages.com/pages02.jpg]]
!!Step3
然後會跑出一個隨機設定的網站版面,先不要理它,點>>Back to Site Manager
[img[step3|http://sallychang0625.googlepages.com/pages03.jpg]]
!!Step4
接下來先create a new page....,然後隨意取個title (因為之後會改掉)
[img[step4|http://sallychang0625.googlepages.com/pages04.jpg]]
!!Step5
回到Page Creator,在右上方找到Site settings,點進去
[img[step5|http://sallychang0625.googlepages.com/pages05.jpg]]
!!Step6
到Homepage,在下拉式選單找到剛剛您隨意取的title名字,然後點>>Back to Site Manager
[img[step6|http://sallychang0625.googlepages.com/pages06.jpg]]
!!Step7
再來就是在Uploaded stuff上傳您TWtBala的HTML檔案
@@注意:若您的HTML內有圖片、音樂........等,這些檔案也要一併上傳唷!!!@@
上傳好後,點進您create的新page
[img[step7|http://sallychang0625.googlepages.com/pages07.jpg]]
!!Step8
在標題的地方點一下,然後在右下方找到edit html後點進去
[img[step8|http://sallychang0625.googlepages.com/pages08.jpg]]
!!Step9
將您的標題delete掉,貼上以下轉址語法
<head>
<meta http-equiv="refresh" content="0;url=sallychang.html">
</html>
@@注意:sallychang.html是我上傳的網頁的檔名,您要將它改掉,改成您上傳的檔名@@
[img[step9|http://sallychang0625.googlepages.com/pages09.jpg]]
!!Step10
回到Page Creator後,點一下Site Manager的website link,若有出現您做的TWtBala,這就代表上傳成功啦!!!恭喜囉!!!請麻煩將您的website link留到我的留言版,讓大家一起欣賞唷!!!
上星期三跟林老師去資策會演講TWtBala的課程,發現一個問題,並不是TWtBala教學上的問題,而是google帳號申請的問題,班上有幾位同學的問題是他們用別家email申請google帳戶,所以無法登入googepages,當時我也覺得很納悶,到底是為什麼,所以今天有時間在家研究了一番,發現不要直接按登入選現在就建立一個帳戶,要直接點gmail才會是申請google帳戶。
以下就是申請google帳戶step by step教學

!!Step1
連上http://www.google.com.tw/ ,然後按gmail
[img[step1|http://sallychang0625.googlepages.com/google01.jpg]]
!!Step2
點選申請使用gmail
[img[step2|http://sallychang0625.googlepages.com/google02.jpg]]
!!Step3
建立帳戶。將您的資料填寫好送出,這樣就完成google帳戶的申請囉!!!
[img[step3|http://sallychang0625.googlepages.com/google03.jpg]]
!!!若想看動態影片教學,請到[[tBala TV|http://tv.tbala.net/learn_bcc_new.html]]唷!!!
!!Step1
@@color:blue;''首先先登入首頁,然後點選[[會員註冊|http://disscus.tbala.net/disscus1/index.php]]''@@

[img[step1|http://sallychang0625.googlepages.com/diss01.jpg]]
!!Step2
@@color:blue;''會出現會員註冊同意聲明''@@

[img[step2|http://sallychang0625.googlepages.com/diss02.jpg]]
!!Step3
@@color:blue;''填入會員註冊資料
請注意:會員名稱只能用英文及數字唷!!!中文會無法成功唷!!!''@@

[img[step3|http://sallychang0625.googlepages.com/diss03.jpg]]
!!Step4
@@color:blue;''系統訊息會告知此帳號已被建立,但需經過系統管理員的批準會員帳號才會被啟用
所以若申請後馬上登入不成功,不要生氣以為是沒申請成功唷!!!''@@

[img[step4|http://sallychang0625.googlepages.com/diss04.jpg]]
<html>
<body>
<style>
s1{ font-size:14px;line-height:2em}
</style>
<img style="WIDTH: 202px; HEIGHT: 285px" align="right" src="308781.jpg"  alt="Blythe"/>
<s1>
<font color=purple>
Blythe小檔案 <br/>

姓名:大眼娃 <br/>

英文名:blythe <br/>

小名:小布 <br/>

性別:女 <br/>

身高:30釐米 <br/>

特點:頭大、眼睛大、身體小 <br/>

出生地:美國 <br/>

定居:日本 <br/><br/>

小布的歷史 History of Blythe <br/>

小布于1972年出生於美國,當時,在美國的反戰潮中產生了追求和平、崇尚自然裝扮的嬉皮派,並且隨著之後電視節目的推廣興起了一股名為“Big Eye”的藝術熱浪,而這些都間接地促進了Blythe系列娃娃的誕生。 <br/><br/>

Blythe最初的銷量很不好,雖然她的市場定位是面向孩子們的娃娃,但她特殊的面容使她得不到人們的寵愛—眼睛和頭都太大、甚至有點恐怖,並且沒有身材,這樣太過前衛的東西一時間叫人無法接受。僅僅一年,Blythe就被迫停產。<br/> <br/>

就在她漸漸地被人忘記時,美國時尚界頗負盛名的時裝攝影師Gina Garan挽救了她。Gina被稱為“Mother of Blythe”,是個忠實的小布迷。作為娃娃收藏的愛好者,她個人收藏的娃娃超過2000個。有一天她的朋友對她說:“我覺得你跟Blythe長得很像!”於是在好奇心驅使下,她從網路上購買了她的第一款小布。從此她一發不可收拾,Gina對小布的喜愛之情突飛猛進、勢不可擋,到現在她已經收藏了超過200個小布。她時常把小布帶在身邊,遊遍世界各地,拍下多款造型照。<br/> <br/>

2000年Gina舉辦了個人小布攝影展,並出版了名為“This is Blythe”的小布寫真集,讓人們重新認識小布。這本畫冊一經問世,讓原本只有四款樣式、毫無人氣的小布有了天翻地覆的變化,小布不但徹底成為各種時尚潮流的風向標,還以其出色的“變化感”建立起她特立獨行的形象,塑造出一個全新的“超級時尚美女類型。 <br/><br/>

Gina把她的畫集介紹給日本CWC的製作人Junko,通過她的引薦Blythe之風一路吹到日本。之後在Gina為日本百貨Parco拍攝宣傳小冊子時,日本玩具商Takara公司推出了第一個名為“Parco Limited”復刻版Blythe,小布的地位終於到達了前所未有的高度。 <br/><br/>

到了今天Blythe娃娃已經累計推出了37款,並且為眾多世界頂尖精品名牌青睞,紛紛為她製作品牌經典款的“Blythe版訂制服裝”。隨著Blythe在日本頃刻風靡,日本國內流行的各街頭品牌,也在近幾年加入這股潮流之中,再度為Blythe娃娃開啟更廣大的“變化之門”。就這樣,小布不僅起死回生,而且成為價格不菲、升值極快且全球為之瘋狂的玩偶。 <br/><br/>

小布的系列 <br/>

一、BL系列:BL是比較早期的一個系列,現在已經停產,共出過9種款式。 <br/>

特點:扁臉、睫毛粗黑濃密,眼眶橢圓,眼皮些微低垂,嘴巴微微翹起,瘦身體。 <br/>

首創款:BL0:Parco LTD. ED. Parco(限量版小布)限定小布。限量1000個。 <br/><br/>

二、EBL系列:廣受歡迎的一個系列,很少生產,共17款。 <br/>

特點:睫毛很淡,眼眶、臉比較圓,嘴角平,胖身體。 <br/>

首創款:EBL1:Miss Anniversary(週年小姐)小布。 <br/><br/>

三、SBL系列:目前主要出產的系列,共20款。 <br/>

特點:睫毛濃密,眼眶較扁,斜視時比較偏,嘴角上翹,橢圓臉形,不透眼白。 <br/>

創始款:SBL-1 Skat Date完美滑雪小布。 <br/><br/>

四、KB系列:1972年和1973年分別由兩家美國公司出品,大致有三代,每代四個發色,所以可能共有 12 款。 <br/>

特點:超可愛,翹嘴角、胖身體。 <br/>

由於過於早期,沒有首創款的詳細資料。 <br/><br/>

五、復刻KB系列:再版KB的款式,目前僅有1款。 <br/>

特點:圓臉、胖身體。 <br/>

創始款:Redhead Love’N Lace美國1972年Kenner古董小布。 <br/><br/>

六、特別版系列:一些需要抽籤才能買到的款式。例如:條紋小布旅遊小布等。<br/>
</s1>
</body>
</html>
<html>
<body>
<style>
s1{ font-size:15px;line-height:2em}
</style>
<s1>
<font color=purple>
要找到真愛,便要找一個懂妳的人。<br/>
這個人也許並不是十全十美,但因為他懂妳,所以妳就認為他是十全十美的<br/>
就是這麼一個懂字! <br/>
懂是什麼?! <br/>

當你遇到挫折時 他不說一句損妳尊嚴的話 <br/>

當你意氣用事時 他絕不遷就而會娓娓解說事理給你聽<br/>

當你心情不好時 他絕不和妳一般見事而大吵大鬧 <br/>
當你遠隔千里難得見面時 他也深信妳<br/>
當你愉快時 他也愉快 而且會告訴你 <br/>

當你煩惱時 他也煩惱 但不會輕易告訴你 <br/>
懂 是需要多少的了解 多少的體諒 多少愛心<br/>
要找一個懂妳的人 也許很難 但要有信心 <br/>

找一個懂妳的人 也期許自己做一個懂他的人 <br/>

聰明的人喜歡猜心<br/>

雖然每次都猜對了,卻失去了自己的心;<br/>
傻氣的人喜歡給心; <br/>

雖然每次都被笑了,卻得到了別人的心。<br/>
</s1>
</body>
</html>
此風簽來自於 [[KuruKuru Parts|http://parts.kuru2jam.com/parts/wind_chime/index.html]] 網站

使用步驟 :
1. 開啟 MarkupPostBody 這個設定文章
2. 請將以下 HTML 標簽, 貼至 MarkupPostBody 這個設定工具
{{{
<div style="display:none">
<script type='text/javascript' src='http://parts.kuru2jam.com/js/SWFLayer.js'></script>
<script type='text/javascript' src='http://parts.kuru2jam.com/js/wind_chime.js'></script>
</div>
}}}
3. 儲存網頁
4. 重新載入
<html><div>&nbsp;&nbsp;&nbsp;本站台內容授權模式<br>
<a style="border: 0pt none ; background-color: transparent; margin-left: 1em; margin-right: 1em;" href="http://creativecommons.org/licenses/by-nc-sa/2.5/tw/" imageanchor="1"><img src="http://www.tbala.net/joomla/CC/icon_by-nc-sa2.png" style="border: 0pt none ;"></a></div>
</html>
<html>
<embed src="http://blog.roodo.com/prb999/615d9f7a.swf" width="180" height="280" wmode="transparent">
</html>
<html>
<body>
<style>
s1{ font-size:15px;line-height:2em}
</style>

<s1>
<font color=purple>
2007/12/17<a href="http://belletw.blogspot.com/" target="_blank">氣質美女協會</a>成立囉!!!
各位美女們,不管你是哪一種美,只要覺得自己美,歡迎加入唷!!!
本協會由黃靜華同學發起,張莎莉同學創立、推廣
網址名稱Belle是美女的意思,belletw就是台灣的美女唷!!
歡迎大家一起加入唷!!!
</s1>

</body>
</html>
!!常用設定
* PageTemplate  @@頁面主架構定義描述@@
* MainMenu  @@架構左方區塊@@
* SideBarOptions  @@架構右上方區塊@@
* SideBarTabs  @@架構右下方區塊@@
* SiteTitle @@上方主標題設定@@
* SiteSubtitle @@上方副標題設定@@
* StyleSheet @@頁面風格顏色描述@@
!!全部設定
* AdvancedOptions  @@增訂的進階選項@@
* ColorPalette @@顏色調色板@@
* DefaultTiddlers @@預設顯示的文章@@
* EditTemplate @@樣版編輯@@
* GettingStarted @@初始設定@@
* ImportTiddlers @@導入檔案、文章@@
* MainMenu @@預設左側主選單(TWtBala在上方)@@
* MarkupPostBody @@文章顯示於<body> 段落的最後,於 script 區塊之前@@
* MarkupPostHead @@文章顯示於<head> 段落的最後@@
* MarkupPreBody @@文章顯示於<body> 段落的起始@@
* MarkupPreHead @@文章顯示於<head> 段落的起始@@
* OptionsPanel @@偏好版面設定@@
* PageTemplate @@主要版面配置@@
* PluginManager @@擴充套件管理@@
* SideBarOptions @@右上方版面內容@@
* SideBarTabs @@右下方標籤面版設定@@
* SiteSubtitle @@頁面副標題設定@@
* SiteTitle @@頁面主標題設定@@
* SiteUrl @@文件發佈時的完整網址@@
* StyleSheet @@頁面風格顏色描述@@
* StyleSheetColors @@頁面配色元素-勿修改@@
* StyleSheetLayout @@頁面版面元素-勿修改@@
* StyleSheetLocale @@頁面文字設定,可依語系調整@@
* StyleSheetPrint @@頁面列印時設定@@
* TabAll @@右側副選單中的「全部」頁籤的內容@@
* TabMore @@右側副選單中的「更多」頁籤的內容@@
* TabMoreMissing @@右側副選單中的「未完成」頁籤的內容@@
* TabMoreOrphans @@右側副選單中的「未引用」頁籤的內容@@
* TabMoreShadowed @@右側副選單中的「預設文章」頁籤的內容@@
* TabTags @@右側副選單中的「分類」頁籤的內容@@
* TabTimeline @@右側副選單中的「最近更新」頁籤的內容@@
* ViewTemplate@@HTML template 決定文章顯示的樣子@@
''From[[阿龍的教學TiddlyWiki|http://twalong.googlepages.com/TiddlyWiki.htm]]''
再過幾天就要過年了,希望新的一年大家都能順順利利的
莎莉我也期許在新的一年能夠愛情、工作兩得意唷!!!
我用我們家的貓貓-妮妮做了簡單的卡片向大家拜年唷!!!
[img[http://sallychang0625.googlepages.com/cat.jpg]]
<html>
<a href="http://laneychang1227.googlepages.com/" target="_blank">
<img src="http://laneychang1227.googlepages.com/blog2.jpg" border="0" /></a>
</html>
<html>
<body>
<embed src="http://sallychang0625.googlepages.com/ppdat02.swf" width="170" height="170"  flashvars="v_wd=希望大家明天都能去投下您神聖的一票!!!&v_t=2008/03/21" quality="high"  wmode="transparent">
</body>
</html>
<html>
<body>
<style>
s1{ font-size:15px;line-height:2em}
</style>
<img style="WIDTH: 202px; HEIGHT: 196px" align="right" src="sally.jpg"  alt="sally"/>

<s1>
<font color=deeppink>
大家好!!!!!!<br />
我叫莎莉<br />
生日:1983/06/25 <br />
巨蟹座<br />
喜歡上網、看電影、逛街<br /></s1>
<s1>
e-mail:<a href="mailto:sallychang0625@gmail.com?subject=Hi" target="_blank">sallychang0625@gmail.com</a><br />
很高興認識大家!!!
</s2>
</body>
</html>