My TiddlyWiki is loading ...

Requires Javascript.
Vextor.Net - Alexander Sayer's Family site
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 use a logographic writing system and 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;}

.htmlarea .toolbarHA table {border:1px solid ButtonFace; margin:0em 0em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton {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
|''Type:''|file|
|''URL:''|http://danielbaird.com/tiddlywinks/|
|''Workspace:''|(default)|

This tiddler was automatically created to record the details of this server
|''Type:''|file|
|''URL:''|http://tiddlywiki.abego-software.de/|
|''Workspace:''|(default)|

This tiddler was automatically created to record the details of this server
|''Type:''|file|
|''URL:''|http://tw.lewcid.org/|
|''Workspace:''|(default)|

This tiddler was automatically created to record the details of this server
|''Type:''|file|
|''URL:''|http://tw.lewcid.org/#BetterTimelineMacro|
|''Workspace:''|(default)|

This tiddler was automatically created to record the details of this server
Hello humans,
My name is Alexander Sayer and this is (hopefully) the start of my online diary page.
We've moved out to Denver Colorado from San Jose Ca ( about an hour drive South from San Fransico ) we (teecy = fieance nicholas = son#1 nathan = son#2) are staying with my mom until we can find work. the trip was ok ( well... for me it was ok ) my family had to sleep in a car for the first time in thier lives ;-) but you do what you have to do when your poor.
i took a few dozen pix of the trip but i dont think i'll put them up on the web site as i dont think ppl will want to see them
I started work as a level one Customer support rep for Covad in denver contracting thru [[TekSystems|http://www.teksystems.com]] today
it pays very little ( over 10/hour but not by much ) but it's enough to live by out here.
I will be training with covad for one week ( normally a 2 week class )on thier systems.
ahhh saterday, today I'm gonna play with my RC car ( one of the few toys I brought with me ).
on friday I got my shift that I'll be working for a month or two I work ( starting after training is over) 0700-1730 monday-thursday-friday-saterday.

LOL i found some OLD pix from my first digital camera i will post them in a new section called [[old school|oldskoolpix]] later today.
Sorry I lied,
I did not start my new shift last saturday, 
I started my shift this monday.

This weekend my sister informs me that 
I owe her $5500 and my mom informs me that she wants
me out of her house... fun fun fun. 
And that... is a reason I tend to avoid my family. 
So now I'm thinking of moving teecy back with her mom and me
living in my car for a few months to pay off my family members 
and get my 5H1T together.

Again I get to learn the leason of only rely upon yourself.
life isn't all bad I got laid this last week ;-)
So it turns out my mom is restarting chemo. (Her canser has grown again)
If teecy goes back to her mom I'm just going to get a one bedroom.

Anyway I got autorized to take saturday and monday off 
(2003.8.23 and 2003.8.25).
So I can return Mike's (Biohazard) car. 
I would like to thank him a great deal for loaning it to me 
(35mpg is WAY better than 18... on a good day ;-)
    Finally... money is once again flowing into my pockets, I still owe ppl money but at least I'm not worried how I can feed my family

    Teecy is not sure if she wants to live with me or her mom. (like all areas on this planet) We can't seem to find a good school in an area I can afford. Teecy and LaSis ( I think thats how she spells her name now ) found a semi cheap place that looks nice... but the schools in the area are crap, one bedrooms are from ~$350 to ~$500.
    The worst part is waiting for her to make up her mind.

    Covad has opened a perm position... well more perm than this CSR which is being outsourced... to India. anyway the post is level 1, which deals directly with end users
    :-(
    and pays the same ( I think )

    oh yeah I almost forgot I redid my resume and put on the thing's I did as a contractor after and during my stay at f-secure. I should have it posted soon. as always if you find a job that I would do well in, please feel free to pass my resume to them ( and make any changes if necessary ).

    Andy sent this kool link to me check it out
    [[sci-fi pix|http://www.desktopstarships.com/wallpaper.html]]

    Oh and here is a pix of Biohazard and my
    [[DIRTY DESK!!!]]
    and here is the drawing of Biohazard and my
    [[DIRTY DESK DRAWING!!!]]
    Sooooooo... Teecy has decided that she will go and live with her mother. I don't make enough money, and she is not willing to work, with me to stay together. She is planning to live with her mother, get a part time job, a car and other things. I wish her luck.
    I am to work and pay off my sister, get my credit back and get a house near a "good" school.

    on another note I have updated my resume to reflect my Unix experience
    please forward it anywhere you find hiring...
    Thx

    Click here for the California resume

    Click here for the Colorado resume
Well Teecy is gone she took the kids to live with her mom again. I wish she would be willing to work with me on staying together. I'm really going to miss my kids. As someone told me once... "get over it" sooo
I leave after work today for San Jose, while there I plan to play and look for work in SJ and SF. but mainly I will be giving mike back his car and getting some things out of storage.
Strange days!!!

T - 7 hours before San Jose launch
While still in the restroom, (washing my hands) Doug Fry (the manager for the Level2 repair team, AND one of the ppl who interviewed me) comes into the restroom. As he passes he asks if I am being challenged in Customer Service, (and you know goofy Alex) I chuckle and say
"NO! ... opps I should say yes, it's very interesting work" he laughs

T - 6 hours
Doug Fry walks up behind me while I am waiting for a call and asks
"Are you interested in working in Repair?"
my answer
"YES!!!"
his response
"come by my desk when you have time"
my first thought "I'll make time" due to successful filtering my answer was "ok"

T - 5 hours
I stoped by his desk and we go into a nearby conference room where he asks me a dozen more questions. I answer them all correctly except the last few which are...
"can you start training on Monday?"
...DAMMIT!!!!!!
my answer
no I am leaving for San Jose in 4.7 hours
he says he will let me know one way or the other.

T - 4 hour
I get the following email

Alex,
Here's some other feedback on you.  All in all, I'd like to have
you start training Next Thursday when you return from CA.

Does that work for you?  IF not, we could start the following Mon.

THANKS
      Q2
Doug Fry
TAC Mgr Denver L2
ext 2113

!!!!! OH yeah Baby !!!!!
    Success I made it to CA and back with no major hic-ups.

    trip to CA
    I left work at 1800 and went home to grab the last of my supplies I left my mom's house at 1900 heading up I25 towards Wyoming then I turned left at Cheyenne(I80). I took I80 all the way to CA I got to Davis around 1600 the next day. Mikes car doesn't like going (cruising) over 80-85mph after fighting MAJOR traffic between Davis and SF I arrived in the south bay around 1700.

    trip to CO
    was also uneventful I took the same route back to CO that I did coming out to CA.
    I meant to stop in Nevada and gamble my yearly limit but I forgot.
    Phil or Mike if you read this and you go to Nevada sometime please gamble one dollar for me please... thx . you can donate it to the BRING ALEX BACK TO CA fund if you wish ;-)
    Anyway I got back home around 0130-0200 and had to be at work at 0800 :-P
So I'm in the Repair team now, we do allot more troubleshooting and delve into backbone issues more. if you have Covad or Earthlink, or Speakeasy or Megapath or AT&T or amillion other ISP's that use covads backbone. and your DSL service goes down. when you call your ISP for help they do some level 1 stuff (IP settings, connections are correct, is your computer on) then the ISP calls the Covad CSR group (where I was), they have a few more tests they can run. Then if the CSR can't fix it they call me in level 2. I guess that makes the CSR group level 1.5 . I've been (slowly) aquiring new friends this lady Barbra has invited me over her house for a BBQ, some sunday in the future. She and her husband have some rentals I might look at. one of my old leads James ( in CSR ) keeps asking me about linux he keeps telling me that I need to help him set up his servers ( he runs his own small ISP using wireless 802.11 for his neighborhood )

I signed up for a CCNA class, which should start on the 15th. (if it doesnt get canceled)
Next month I will take a windows 2k server class for my MCP
    there's nothing like a good computer game to take you away from life. Just remember to come back to life or you wont come back at all.
    sorry if that didnt make any sence.

    it's been awhile since i updated the log ( like anyone really noticed ( i do this more for a promise to myself than anything ( i like to keep my promises ( even to myself ))))
    i really miss my kids i cant wait to eat their belly buttons again :-D.
    so anyway this is what has happened.
    my mom was feeling VERY weak and in ALOT of pain last week, so friday... or was it saturday she called for an ambulance.
    basicly her fluids/core voltage/ were all out of whack. she also has a cracked rib or two.
    but she got better and is home now.
    I bought a new used car ( i'll take some pix of it later and post them )
    maybe i should make a page dedicated to the "cars of alx" since i seem to go thru so many...
    oh, oh, oh then i can seperate the stages in my life buy the car i drive.
    so i just left age of taurus2 or the neo taurus era.
    sorry, midnight funnys kicking in.
    and today i got homeworld 2... so dont bug me for at least 2 days (so i can beat it ;-)

    WOW it took me 3 hours to write this log (in between calls)
sorry my last update was a bit incomplete, i had signed up for a ccna class, but it got canceled cause i was the ONLY person signed up. so i signed up for the next class which is a 2k Exchange class. 
    Thanks to thefatman, vextor.net is back online he took time out of his very busy schedule to go down and fix the network connection that this web server uses. thx again Fat... lazy bastard ;-)

    for the last week i was sick off and on, some days i felt better, somedays i would feel worse. normally i would feel worse after:
    1 my sister would depend solely upon me to finish moving her out of her apartment.
    2 my mom would take me to the dentist and leave me there, so i had to walk home ( over 2 miles )
    3 i did not get enough sleep (my own fault).

    i have come to the conclusion that the only real way to get rid of a cold is to give it to someone else... so thanks scott, mom, la sheittia, and 3-4 coworkers. hell i think i even gave it to the dog. hehe

    so i finished with my 2000 exchange server class, i have yet to take the test i am fiannly feeling good enough to take the pratice tests which i give myself a week to master. my 2003 server class has been canceled.

    i think thats it for now

    alx



    oh wait i chatted with deano, he is setting up a new web site 
    about his RPG game based on the matrix 
    which reminded me i haven't made any real
    changes to my own website ( adding pix and stuff )
    so i will do that soon oh you can see his page at 

    http://www.nordean.com DOH someone stole it... bastards

    also i added it to my links page

    alx


    P.S.S.

    also mike (biohazard) has gotten himself LAID!!!!
    YEAAAAAA!!!!
    be sure to give him a thumbs up and a smile when you see him next

    alx

Hello, humans... wow deano's web site has over 450 hits already!!
and is coming together very well.
my own projects have been getting alot of attention lately.
I have compiled a list of projects and their level of completeness.
I will make it web readable and post it somewhere soon.

well I looked at a few places (too live) on my days off, both are near good schools.
both are "walking" distance to shops, stores, and banks.
one is owned by some friends of La Sheita, but the place is VERY small.
the other location is very spacious and closer to my work.
but they may reject my applacation due to my bad credit :-(

work is OK I am sick of tech support, but it's a pay check

I started collecting comic books,
I figure 2 comics a month is a cheap hobby to pick up.
I got first prints of superman/batman #1 and #2.
I remember from steve's/nick's (a.k.a. snick)
collecting of comics that you should always buy 2 copies,
one for people to read and the other for saving. so thats what I did

what else... oh yeah i had a long talk with teecy, but I will wait and see.
ahh as Norm (from Cheers) once said
"women... cant live with'em... pass the beer nuts" ;-)

... thats right I stole some online games from some web site.
check out the games link in the menu frame ( upper left )

thats it later
ZZZZZZZZZzzzzzzzzzZZZZZZZZZZZzzzzzzzzzz
Well the system this site was on had a hard drive issue 
and was too hard to diag remotly.
So i had phil ship me the old drive, which i then extracted
the web site in less than 10 minutes

thx phil for letting me host the site for so long at your office.
I now have Inet access at home where the site is now located.

TEECY came back to me!!!!! YEAAAAA!!! 
and she brought the KIDS!!!!!!! W00T!!!!!

I moved into a large 2 bedroom 2 bath 960sf in aurora 
( suburb of denver ) in dec 03
teecy came out jan 04 
also in jan I got hired on perm at covad. 

Teecy started working at a daycare/preschool almost full time 
(about 35 hours a week)
the boys are in school doing well.
what else...
i found out how much ppl get raped when buying a house!!
damn maybe i should switch fields.

otherwise life is good
SWEET...
I hosted a LAN at my place i invited some ppl i met online (coloradogamers.com)
i'll add a link to the links page later
anyway it was fun, i am uploading pix for your viewing pleasure
these guys like FPS so thats what we mainly played
raven shield
BF 1942 ( DC, DCX )
AvP2
UT2003
and
warcraft III

AB1 AB2 AB3 AB4 AB5 AB6 AB7 AB8 AB9 ABa

special thx goes to the wife for letting me kick her and the boys out of the house for the day
   My mom died on sunday march 28, 2004.
She died peacefully in bed.
I will miss her she was a big part of my life,
she gave me my smile ( and you know how much i do that )
she was a strong woman, forceful sometimes,
gentle sometimes,tough sometimes, loving all the time.
she taught me so many things most importantly 
how to smile, laugh and how to handle just about any situation.

   mom wanted to be buried in her birth place ( Memphis, Tenn )
next to / near her mom, whom she loved dearly,
so after she was cremated we 
(scott, la sheita, my wife, my kids, and phil) 
drove to memphis Tenn. from denver.
alot of people showed up to the funeral, her childhood pastor, 
her brothers, beloved family, and even her EX husbands family

she was a very loved person. I... the world will miss her.


THANKS:
My sister ( La Sheita ) planed and coordenated a wonderful
funeral and reception my thanks goes to her

My Dad for being supportive and loving.

My wife for holding me and knowing when not to.

Scott for loving my mom and caring for her in her last years,
due to him she lived like a princess.

and the wonderful people that helped with the cost of the funeral
I will list them here when i get the final list from my sister.
Mid life boredom

Shanda took the kids to Oklahoma to see her grandmother.
she's been gone about a month now.
man am i bored ;-)
i did work on my projects more, got some stuff done.
played with my R/C cars.
had some LAN partys.
now I have to clean the house before Shanda get's back ;-)

while they were gone Shanda's brothers died, i never met him but i wish him peace.
Shanda's father might come out,
which is good since i have not met any of her family that does not hate me.

anyway I turned 30 on the 11th spent the day in the house doing nothing.
and i've been at Covad for a year now, I'm sick of this job... well of tech support.

oh i got a screen saver for my HTPC ( computer in the living room )
its a fish aquarium on my 46" TV LOOKS SOOO KOOL ;-)

anyway back to work
Well i quit Covad, i put in my two weeks 
and walked out with a pat on my back from the director.


I quit for a few reasons but it comes down to the new job...
fits better.

PRO's:
the new job is more along my speciality (computers).
the pay is alittle better.
possability to get hired on at IBM.
room to move, grow and, learn
open envornment
SWEET work scheduale
overtime every week

CON's:
the new job is at IBM in boulder... i live in aurora 
( 49 mile commute one way ).
no medical insureance for the boy's, untill i can get hired on
( dont get sick kids!! )
12 hour days

most of the con's are removed or reduced alot
the commute is not bad i start at 0600 and i get off at 1800
so i miss it in the morning and mostly miss it after work.
lack of insurance... incentive for teecy to get a job.
12 hour days... check out my schedule

i work 0600 to 1800 sun thru tues and every other wed
so i work 3.5 days a week and one day i'm not really working alot
and no traffic ( sunday's are SLOW ).

so everything works out ok

anyway back to work
MUHAhaha brainwashing in progress

today's chat log wih teecy

[10:25] alyxnder: without computers i would go insane
[10:26] alyxnder: i have no idea what other ppl do without 
 computers to eat up thier time
[10:26] alyxnder: yes i do... drink, smoke, drugs, TV, party
[10:26] shandakae: I'm insane 
[10:26] shandakae: come over to my side
[10:26] shandakae: ;-)
[10:27] alyxnder: lol
[10:30] alyxnder: no remember im bring you to my side
[10:31] alyxnder: soon you will want a desk of your own and 
 a computer of your own
[10:31] alyxnder: you can feel it now
[10:31] shandakae: you are pretty good
[10:31] alyxnder: lol
[10:31] shandakae: I do feel it now
[10:32] alyxnder: EXCELLENT
[10:32] alyxnder: ;-)
[10:32] shandakae: but I'll live
[10:32] alyxnder: ok you'll have one
[10:32] alyxnder: you want one of the laptops?
[10:32] alyxnder: your desk can be anywhere you are
[10:33] alyxnder: it wont play alot of games but
[10:33] alyxnder: it should play all the ones you seem to like
[10:33] alyxnder: or do you want a desktop?
[10:33] alyxnder: with a real desk?
[10:34] alyxnder: we can move the bed and get a larger desk 
 that we can share
[10:34] alyxnder: btw
[10:34] alyxnder: ily
[10:36] shandakae: no I want to wait until we have room
  ( edited slightly to line up responses )

HAHAHA im corrupting her soon I'll be married to a female 
 computer geek... and she wont even know it.
sorry for the lack of updates
new changes listed below
the neo tauras era is over
   and the intrepid era has begun ;-)
    my sister helped me get a black 2000 intrepid R/T
    i'll post pix later ( man its fun to drive )
teecy still hasn't gotten a job
the kids are doing ok in school
i finished my mmpc project
i fixed up an R/C car for nicholas... then it broke.
looks like it maybe a while before i get hired on perm at ibm
   so i'll keep my eyes open for other work
went to cali for a weeks vacation and had a ton of fun
   played games and visited all my favorite computer stores
not much going on just working and living
talked to deno
i'm looking for a second job ( toy money )
stole this from a site i visit alot,

please accept with no obligation, implied or implicit, our best wishes for an environmentally conscious, socially responsible, low stress, non-addictive, gender neutral, celebration of the winter (or summer if your hemisphere of choice is the shouthern one) solstice holiday, practiced within the most enjoyable traditions of the religious persuasion of your choice, or secular practices of your choice, with respect for the religious/secular persuasions and/or traditions of others, or their choice not to practice religious or secular traditions at all . . .

. . and a fiscally successful, personally fulfilling, and medically uncomplicated recognition of the onset of the generally accepted calendar year 2005, but not without due respect for the calendars of choice of other cultures whose contributions to society have helped make America great, (not to imply that America is necessarily greater than any other country or is the only "AMERICA" in the western hemisphere), and without regard to the race, creed, color, age, physical ability, religious faith, choice of computer platform, or sexual preference of the wishee.

(By accepting this greeting, you are accepting these terms. This greeting is subject to clarification or withdrawal. It is freely transferable with no alteration to the original greeting. It implies no promise by the wisher to actually implement any of the wishes for her/himself or others, is void where prohibited by law, and is revocable at the sole discretion of the wisher. This wish is warranted to perform as expected within the usual application of good tidings for a period of one year, or until the issuance of a subsequent holiday greeting, whichever comes first, and warranty is limited to replacement of this wish or issuance of a new wish at the sole discretion of the wisher.)
10 hole years

Teecy and I just celebrated our 10 year anniversary together.
for those of you who have been around over the last ten years, you know why i call it "hole years"
;-)
anyway 10 years of peaceful waters and rocky roads,
from homelessness to hateful mother in-laws.
I still love her with all my heart, she is my dream girl.
from hurtful words to my "extra special" hobby she still loves me.


i hope for us to be happy together, forever.
I Love You Shanda Kae Teecy
 My HTPC. 
           
I've mentioned my HTPC to friends and family before, 
some have seen it some have not.
I'm pretty happy with it, so is my wonderful wife (high [[W.A.F.|http://en.wikipedia.org/wiki/Woman_acceptance_factor]])
even my kids use it to check weather and watch recorded cartoons
so I thought I might describe it here abit.
           
It's based on a pieces that I found around, striped my LAN rig,
and some were bought by family. Here are the specs:

P4 2.53GHz
512MB RAM
[[SB audigy2 zs|http://www.techspot.com/reviews/hardware/audigy2zs/index.shtml]]
5.1 logitech z5300,
10/100Base-T
DVD-Rom
P.o.S. ATI 7000 32mb
dual tv cards
160 Gb data drive
[[Remote Thrustmaster Firestorm|http://us.thrustmaster.com/products/d_prd.php?p=T35&fam=5]]
Mitsubishi 46" RPTV ($300 craigslist)
           
It's not incredibly quiet, which is is what you want for an HTPC.
all the fans are low DB but I find them still too loud.
       
Using the gamepad to control the entire system is really nice.
It's almost as convenient as using a standalone DVD/tivo system,
but it's got ALOT more features, which include:
music (CD, Mp3)
music videos
TV
movies (DVD, ripped)
pictures
games (NES, SNES, Sega, MK4, pod racer)
Well my dad emailed me asking about my wedding plans....
I forgot all about it...
I've been planning on getting into a house so much it just slipped my mind. so i think shanda and i will have a ceremony after we get into a house.

looks like mike is getting married, so i'll be heading to cali for that at the end of the month.
Car stolen all GTA style

    well the intrepid era almost ended early, valentines day morning i leave for work and find my car gone...
    stolen all GTA style... the bastards.
    (from this point on i'll call them GTA-B)
    i guess i can't knock them on thier tastes, i like the car too.:-)

    the cops found it 2 days later in denver
    the GTA-B broke the passanger side window, the stearing column and dented the gas tank
    strange is the cops wont finger print the car
    oh this is funny, the GTA-B took the car seat, a $5 blanket, and my CD's.
    when i got the car back the radio was on some rap station... the GTA-B is going to love my rock, classical and "learn" mandarin chinese CD's LOL

    the cops found the car wed, we picked it up wed, it was at the dealier thursday hopefully it's fixed for my trip to cali this week.
    i think thats it... Vector/darkman/vextor signing off
got my trep back :-)

    my car was returned to me from the repair shop ( after a MONTH )
    i really want to put an alarm in the car right away.
    I'm heading to andy's this friday for the weekend,
    on the way there i'll stop by and meet teecy's grandmother.
    the wedding didn't go as well as i wanted, i should have done more
    ... but the mission was a success mike is hitched.
    i recieved some flack for not having a stripper, but this way
    noone with wife/GF's will have any issues.
     
    after this trip to andy's i dont think i'm going anywhere
    ( trips / vacations ) for the next year or more
    (except to move mike to the denver area ;-)
    i really want to get into a house
     
    I started a new job
    I'm now doing desktop support for citigroup temp to perm.
    i hope to get hired on after 6 months.
     
    shanda also has a new job
    with great west looks to be long term
     
    the kids are doing well in school
    just not at home
    nicholas got grounded for lying to teecy and I
    nathan got grounded for playing show me and i'll show you
    with his GF, he's getting more action than i did ;-)
     
    Later

generic update

    I meet Shanda's grandmother and aunt, they are very nice (baked me a pie :-).
    i spent a few hours with them on easter sunday.

    i found out i had lost all of the pictues from mikes wedding :-(
    andy is doing well, it was fun hanging out with the guys again.
    i cant wait to get into a nice house so everyone can come to my place.

    we have a water leak somewhere in our apartment.
    it's causing a strong mold smell for the last 3 weeks.
    after i got fed up i called my sis for help, she told me to write a letter...
    next time she asks to fix her computer I will tell her to read a computer book.
    ahh well they report they have fixed it but the mold smell is still strong.

    she did help me write it finally so thanks sis.
    hmmm what else... shanda and I are still working at our new jobs.
    not yet out of the hole, but were getting close.
    i have started paying most of my loans and back due bills getting ready for a house
    in 2-3 years, man the houses are alot better out here
    one guy i know has a 3500+ sf house for ~250K!!! only 15 minutes from downtown

    i want to setup a kids B-day pix area on my page to show them growing over time.
    well thats it for now


    Alxander
alex the slacker

    Man sorry for the lack of updates
    Not much going on really, the kids are still out of town.
    I'm still playing video games (~2 hours a day) I beat GTA SA.
    It's an awesome game...
    that stupid crap about the hot coffee mod really sucks.
    How can a company be responsible for people modifying a product?
    if I get into an accident cause I modify my car why would 
    some random guy sue the car company.
    Anyway it makes it hard on the thousands of people who mod games.
    I bought 8 copies of starcraft all because of one mod. That is $$
    for these companies. Man that's upsetting!
    rockstar removed access to that content, a hacker found and made 
    a mod to access that content.

    Ok, ok I'm done ranting

    playing BF2 now, everlan was canceled :-(
    i love being alone with teecy. we should do this every year ;-) 
    nicholas wont like that ;-)


So Teecy and I went and reacquired the boys this weekend.
we hung out with teecys father and his family for a bit too.
I wanted to see my brother andy but i couldnt reach him on the 
phone, and i was kinda stuck.

We also picked up Wanda (Teecy's mother).
She'll watch the boys while we are at work until school starts.
Not 5 minutes after we got home the house was full of kids 
I LOVE IT. I love having a house full of kids playing and having
fun.

Well I have a lot of things to fix and do (honey due list ;-) 
From the storage outside, to fixing the kids' computers I have 
lots to do.

Most of the computers in the house need something,
I think I'll need to spend ~ $400 to safeguard and repair things.
A few of my UPS's have failed so 4 systems are unprotected,
And I don't think teecy understands that we could lose all of them
in an instant (we've been having a lot of power surges lately).
Well... maybe she does understand, then the boys and I will
never be on the computers again. I think she would like that.

Of course I would cry.

I'll be at work early all week as were converting over to XP.
what else... 
ummm
well thats it.

later
got laid off from citigroup :-(
Driving to California today, for vacation / phil's wedding.
Teecy, N&N, and myself.
Working on this website while Teecy drives ( she is so hot )
Party time, got to Phils bachelor party late, but still had loads of fun
gocart racing at [[Lemans karting|http://www.lemanskarting.com/]] in Fremont, CA

no luck today Teecy wanted to find/meetup with old friends.
Linda's house was very spooky... and NOT because it's almost Halloween :-)
Cece and Joesph were busy with a sports match
Heidi was not home, or at least did not answer the door.
maybe tomorrow
Well today I'm off to get my drivers license at noon. wish me luck!

haha got license in hand ready to rock and roll.
hung out with mike for most of the day ran some of his arrins, saw carlitos, nan and nate noble from my days at f-secure.
had lunch on nan ( thanks nan ) then headed back to mikes.
teecy was a little mifted that i got home so late ( sorry babe ILY )
mike then bought us dinner at st. johns ( awesome burger joint ) 
   they serve everything... we even got a side order of [[EARTHQUAKE !!!!!!|http://origin.mercurynews.com/peninsula/ci_7326146]]

then we retreated to bay billards for some pool action 
taught the boys how to play pool (haha like i know how to play)

other than making Teecy mad that was a great day really good (free!!!) food all day, got mostly legal, played pool, had sex. ahhhhh
Phil got [[hitched|bulan_wedding-2007]] w00t
well we woke up late and didnt get on the road till 9 am :-/
heading home today
Well we made it home safely
we took the southern route thru las vegas hoping to catch my aunt debi, but she has something going on.
maybe next time.

during the drive out i chased a new model corvette ( it totally kicked my ass )
it was fun and i got DITT up to 115mph :-D
Well i got a job offer...
Now i have to decide what to do next
I am currently working as a contractor doing desktop support with connecting people (the temp agency for), centrua health.

The new job is full time doing server/desktop support for BNC in downtown Denver.


both seem to be good companies, i like the people i work with, but my 4 month contract was temp to hire and im still a temp.
also i took this job making less money assuming i would get hired on and make more. but that has not happened.

soooo i'll wait think about it and make my decision tomorrow

Well I have accepted the new job and put in my 2 week notice with connecting people.
The new company is called BNC systems, they are located in downtown denver.
They offer IT for small to medium sized businesses 20-60 stations.
Teecy took the kids to see her grandma in OK for thanksgiving.
i wish i could go :-(   i really like her she's my girlfriend :-)
I had thanksgiving dinner with john, robin, john-john, jen, alex, and johns neighbors.
i had a good time.
well today is my last day at centura, i really liked working with romina she's a good person.
talk about busy it was crazy busy today.
 
Teecy, the boys, and DITT got back home nice and safe today.
I sure did miss them.
It snowed last night here in Denver, only about 2 inches... but for some reason traffic was SUPER bad this morning.
2 accidents an avg speed of 10 mph, and everyone driving slow.
It took me 2 hours to get to work.

LAME!!!!
keep on truckin

    only 2 years later we're still alive and kickin.

I want a few things, like chasing my dream.

dream one: [[propel the US and her allies into space (properly)|Explore_Space]]
here is dream two: [[Realized LCARS based computer system|LCARS]]
back at work
{{borderlessL{
|bgcolor:#44a;[img[walmart1|pix/jokes/walmart1.jpg][pix/jokes/walmart1.jpg]]<br>&nbsp;&nbsp;|bgcolor:#44a;width:20em;Keep in mind this actually really did happen!!!!|
Okay so this is how I imagine this conversation went:
Walmart Employee:   Hello 'dis Walmarts, how can I help you?
Customer: I would like to order a cake for a going away party this week.
Walmart Employee:  What you want on the cake?
Customer:  Best Wishes Suzanne" and underneath that "We will miss you."
{{borderlessL{
|bgcolor:#44a;[img[ Alex at F-Secure 2002 |pix/alex1-t.jpg][pix/alex1.jpg]]<br>&nbsp;&nbsp; Alexander Sayer |bgcolor:#44a;width:35em;Check yo self, foo <br> get that camera out my face |

{{borderlessL{
|bgcolor:#44a;[img[ Alex at F-secure 2002  |pix/alex2-t.jpg][pix/alex2.jpg]]<br>&nbsp;&nbsp; Alexander Sayer |bgcolor:#44a;width:35em;up close and personal|

{{borderlessL{
|bgcolor:#44a;[img[ Alex dressing for job interview |pix/alex3-t.jpg][pix/alex3.jpg]]<br>&nbsp;&nbsp;Alexander Sayer|bgcolor:#44a;width:35em;dressed for success, got a JOB interview |

{{borderlessL{
|bgcolor:#44a;[img[ black whale gonna get ya Ky |pix/alex4-t.jpg][pix/alex4.jpg]]<br>&nbsp;&nbsp;Alexander Sayer|bgcolor:#44a;width:35em;Ky umm theres a large black whale behind you |
This project is to build an arcade style container around a PC setup to run NES, SNES, N64 , Sega, and Atari games.
this will be located under the stairs in the basement.

CASE:

CPU
RAM
Audio
Speek
NIC
CDD
VID
HDD
CON
DISP
This project is to build a media player (music, movies, and TV shows from TivoPC or FileServer) 
also it will have a real time TV and radio feature.
Hooked to a 19 inch monitor on an arm in our bedroom.

CPU
RAM
Audio
Speek
NIC
CDD
VID
HDD
CON
DISP
/***
|Name|BetterTimelineMacro|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#BetterTimelineMacro|
|Version|0.5 beta|
|Requires|~TW2.x|
!!!Description:
A replacement for the core timeline macro that offers more features:
*list tiddlers with only specfic tag
*exclude tiddlers with a particular tag
*limit entries to any number of days, for example one week
*specify a start date for the timeline, only tiddlers after that date will be listed.

!!!Installation:
Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
Edit the ViewTemplate to add the fullscreen command to the toolbar.

!!!Syntax:
{{{<<timeline better:true>>}}}
''the param better:true enables the advanced features, without it you will get the old timeline behaviour.''

additonal params:
(use only the ones you want)
{{{<<timeline better:true  onlyTag:Tag1 excludeTag:Tag2 sortBy:modified/created firstDay:YYYYMMDD maxDays:7 maxEntries:30>>}}}

''explanation of syntax:''
onlyTag: only tiddlers with this tag will be listed. Default is to list all tiddlers.
excludeTag: tiddlers with this tag will not be listed.
sortBy: sort tiddlers by date modified or date created. Possible values are modified or created.
firstDay: useful for starting timeline from a specific date. Example: 20060701 for 1st of July, 2006
maxDays: limits timeline to include only tiddlers from the specified number of days. If you use a value of 7 for example, only tiddlers from the last 7 days will be listed.
maxEntries: limit the total number of entries in the timeline.


!!!History:
*28-07-06: ver 0.5 beta, first release

!!!Code
***/
//{{{
// Return the tiddlers as a sorted array
TiddlyWiki.prototype.getTiddlers = function(field,excludeTag,includeTag)
{
          var results = [];
          this.forEachTiddler(function(title,tiddler)
          {
          if(excludeTag == undefined || tiddler.tags.find(excludeTag) == null)
                        if(includeTag == undefined || tiddler.tags.find(includeTag)!=null)
                                      results.push(tiddler);
          });
          if(field)
                   results.sort(function (a,b) {if(a[field] == b[field]) return(0); else return (a[field] < b[field]) ? -1 : +1; });
          return results;
}



//this function by Udo
function getParam(params, name, defaultValue)
{
          if (!params)
          return defaultValue;
          var p = params[0][name];
          return p ? p[0] : defaultValue;
}

window.old_timeline_handler= config.macros.timeline.handler;
config.macros.timeline.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
          var args = paramString.parseParams("list",null,true);
          var betterMode = getParam(args, "better", "false");
          if (betterMode == 'true')
          {
          var sortBy = getParam(args,"sortBy","modified");
          var excludeTag = getParam(args,"excludeTag",undefined);
          var includeTag = getParam(args,"onlyTag",undefined);
          var tiddlers = store.getTiddlers(sortBy,excludeTag,includeTag);
          var firstDayParam = getParam(args,"firstDay",undefined);
          var firstDay = (firstDayParam!=undefined)? firstDayParam: "00010101";
          var lastDay = "";
          var field= sortBy;
          var maxDaysParam = getParam(args,"maxDays",undefined);
          var maxDays = (maxDaysParam!=undefined)? maxDaysParam*24*60*60*1000: (new Date()).getTime() ;
          var maxEntries = getParam(args,"maxEntries",undefined);
          var last = (maxEntries!=undefined) ? tiddlers.length-Math.min(tiddlers.length,parseInt(maxEntries)) : 0;
          for(var t=tiddlers.length-1; t>=last; t--)
                  {
                  var tiddler = tiddlers[t];
                  var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);
                  if ((theDay>=firstDay)&& (tiddler[field].getTime()> (new Date()).getTime() - maxDays))
                     {
                     if(theDay != lastDay)
                               {
                               var theDateList = document.createElement("ul");
                               place.appendChild(theDateList);
                               createTiddlyElement(theDateList,"li",null,"listTitle",tiddler[field].formatString(this.dateFormat));
                               lastDay = theDay;
                               }
                  var theDateListItem = createTiddlyElement(theDateList,"li",null,"listLink",null);
                  theDateListItem.appendChild(createTiddlyLink(place,tiddler.title,true));
                  }
                  }
          }

          else
              {
              window.old_timeline_handler.apply(this,arguments);
              }
}
//}}}
Clara Mc Clore (Sayer)

Was my loving mother she died of lung cancer due to smoking.
I don't think anyone ever told her she was a short skinny little woman cause she never acted like it. :-)

words i use to describe Clara;
strong, independent, caring, fierce, strong, truck driver, mom.


{{borderlessL{
|bgcolor:#44a;[img[Mom at baby shower ~2000|pix/mom1-t.jpg][pix/mom1.jpg]]<br>&nbsp;&nbsp;Clara Mc Clore|bgcolor:#44a;width:35em;Mom hanging out at the baby shower for Ky |
GiffMex, 7 March 2007 (created 5 March 2007)

    * not tagging

    * no tags

I'm not going to show you how to do this. You will need to download the FormTiddlerPlugin and the DataTiddlerPlugin from Abego Extensions and consult the documentation for specific instructions. But if you would like to see a form in action, check out myNewBookTemplate in BibblyWiki, a TiddlyWiki I created to manage bibliographies, take book notes and organize personal libraries.

The template is here:
A tiddler based on the template is here.

I recommend you doubleclick them both to see what they look like in edit mode.

To create a button which creates a new tiddler based on the template, here is the macro syntax:

<<newTiddler label:"XXXX" text:{{"<<formTiddler ZZZZ\>\>"}} tag:"OOOO">>

Replace XXXX with the name for your macro label. (ex: "Add a new book")
Replace ZZZZ with the name of the template tiddler. (ex: NewBookTemplate)
Replace OOOO with any tag you would like to have appended to every tiddler created by this macro (ex: "booknote")

You can place your new macro in SideBarOptions or in a tiddler accessible from the MainMenu.
Hi My name is Dodge Intrepid Two Thousand, DITT for short if you prefer.
[[Greetings and Salutations]]
/***
|''Name:''|Dice|
|''Version:''|0.5 (21 Oct 2005)|
|''Source:''|Tiddly W;nks (http://danielbaird.com/tiddlywinks/)|
|''Author:''|[[Daniel Baird]]|
|''Type:''|Macro|
!Description
Tell it what dice you want, and it'll let you roll them.

!Syntax/Example usage

{{{<<dice>>}}} for 3d6

{{{<<dice }}}//{{{specifier}}}//{{{ [}}}//{{{options}}}//{{{]>>}}} where specifier is something like 3d6, 1d4+1, 2d10-5

{{{<<dice fudge [}}}//{{{options}}}//{{{]>>}}} will roll 3 fudge dice (a fudge die gives -1, 0, or +1)

options can be zero or more of the following:

* show:eachface
** shows the face of each die rolled, then the total (not yet implemented)
* show:eachroll
** shows the number on each die rolled, then the total (default)
* show:result
** shows just the total result of the roll
* initialroll:yes
** do a roll when initially displayed
* initialroll:no
** don't roll until the user says so (default)
* rollby:click
** user clicks anywhere on the diceroller area to roll
* rollby:link
** user clicks an underlined link to roll (default)
* rollby:button
** user clicks a button to roll

eg:

{{{<<dice>>}}}
<<dice>>

{{{<<dice 3d6+2 rollby:button>>}}}
<<dice 3d6+2 rollby:button>>

{{{<<dice fudge initialroll:yes rollby:click>>}}}
<<dice fudge initialroll:yes rollby:click>>


!Notes
* much changing during this 0.5 version.

!Revision History
* 0.1
** first release
* 0.2
** changed the corners to slightly prettier ugly text chars
** finally got rid of the borders
** got rid of heading
** added 'Fudge' mode
* 0.3 (5 Oct 2005)
** fixed the problem with multiple dice rollers
* 0.31 (12 Oct 2005)
** worked out how to use a closure as a event handler, which means that the code added in 0.3 could be made a lot simpler.
* 0.5 (21 Oct 2005)
** aiming at getting a whole rewrite done. much progress!.

***/
/*{{{*/
// =======================================================================
version.extensions.dice = {major: 0, minor: 5, revision: 0};

config.macros.dice = {};

config.macros.dice.handler = function(place,macroName,params) {

    var rolldesc = params[0];
    if (rolldesc == undefined) rolldesc = '3d6';

	var options = '';
    if (params.length > 1) {
		params.shift();
    	options = params.join(' ');
	}

    var thisDiceRoller = new DiceRoller();
    createTiddlyElement(place, 'div', thisDiceRoller.id, null, 'If you see this, DiceRoller is broken.  Let Daniel know (DanielBaird at gmail dot com).');
    thisDiceRoller.newDice(rolldesc, options);
}
// =======================================================================
function DiceRoller() {
	this.idprefix =  'dice';
    this.version = '0.5 beta';
    this.id = this.idprefix + DiceRoller.prototype.nextid;
    DiceRoller.prototype.nextid++;
    return this;
}
// -----------------------------------------------------------------------
DiceRoller.prototype.nextid = 0;
// -----------------------------------------------------------------------
DiceRoller.prototype.newDice = function(rolldesc, options) {

	this.error = null;
	this.initialroll = false;
	this.display = 'eachroll';
	this.rolltag = 'roll';
	this.rollagaintag = 'roll again';
	this.rollby = 'link';
	this.parseDesc(rolldesc);
	this.parseOpts(options);
	if (this.initialroll) this.rollDice();
	this.drawRoller();
// ^^^^^^^^^^^^^ new stuff above.. ^^^^^^^^^^^^^
//    this.rolls = rolls;

//    this.resultDisplay = 'dice';
//    if (resultDisplay != null)	this.resultDisplay = resultDisplay;

//    this.resultSystem = 'sum';
//    if (resultSystem != null)	this.resultSystem = resultSystem;

//    this.sides = 6;
//    this.createDice();
//	this.roll();
}
// -----------------------------------------------------------------------
DiceRoller.prototype.parseDesc = function(desc) {
	this.rollstr = desc;
	desc = desc.toLowerCase();
	this.dicetype = 'standard';
	this.adjuster = null;
	if (desc == 'fudge') {
		// 'fudge' system: 3d3, where the d3 gives -1, 0 or +1
		this.dicetype = 'fudge';
		this.dicesides = 3;
		this.rollcount = 3;
	} else {
		// normal system: eg 3d6+2
		var reg = /(\d+)d(\d+)(\+(\d+)|-(\d+))?/;
		var info = desc.match(reg);
		this.rollcount = parseInt(info[1]);
		this.dicesides = parseInt(info[2]);
		this.adjuster = parseInt(info[3]);
		if ( isNaN(this.adjuster) ) this.adjuster = 0;
	}
}
// -----------------------------------------------------------------------
DiceRoller.prototype.parseOpts = function(options) {
	this.optstr = options;
	options = ' ' + options + ' ';
	if (options.indexOf(' show:eachface ') != -1) this.display = 'eachface';
	if (options.indexOf(' show:eachroll ') != -1) this.display = 'eachroll';
	if (options.indexOf(' show:result ') != -1) this.display = 'result';

	if (options.indexOf(' initialroll:yes ') != -1) this.initialroll = true;
	if (options.indexOf(' initialroll:no ') != -1) this.initialroll = false;

	if (options.indexOf(' rollby:click ') != -1) this.rollby = 'click';
	if (options.indexOf(' rollby:link ') != -1) this.rollby = 'link';
	if (options.indexOf(' rollby:button ') != -1) this.rollby = 'button';
}
// -----------------------------------------------------------------------
DiceRoller.prototype.createDice = function() {
    this.results = new Array(this.rolls);
    this.result = 0;
    this.showDice();
}
// -----------------------------------------------------------------------
DiceRoller.prototype.drawRoller = function() {
    var node = document.getElementById(this.id);
	if (this.display == 'eachface') node.innerHTML = this.drawRollerEachFace();
	if (this.display == 'eachroll') node.innerHTML = this.drawRollerEachRoll();
	if (this.display == 'result') node.innerHTML = this.drawRollerResult();

    // getClickHandler() is a function that returns a function.. JS is sweet huh
    if (this.rollby == 'click') {
		node.onclick = this.getClickHandler();
	} else {
		document.getElementById(this.id + '_roll').onclick = this.getClickHandler();
	}
	/*
    var html = '';

	if (this.display == 'eachface')

    html += '<table class="diceroller">';
    html += '<tr>';

	if (this.resultDisplay == 'text') {
		html.push('<td>You rolled ');
	}
	if (this.resultDisplay != 'textsummary') {
		var separator = '';
		for (var roll = 0; roll < this.rolls; roll++) {
			html.push( separator + this.drawDie(roll) );
			if (this.resultDisplay == 'text')	separator = ', ';
		}
		html.push('<td>');
	}
    if (this.resultSystem == 'fudge') {
	var resprefix = '';
	if (this.result > 0) resprefix = '+';
	html.push('Result is ' + resprefix + this.result + '.<br />Click to roll again.</td>');
    } else {
	html.push('<td>'+this.rolls+'d'+this.sides+': you rolled ' + this.result + '.<br />Click to roll again.</td>');
    }

    html += '</tr></table>';
    node.innerHTML = html;
	*/
}
// -----------------------------------------------------------------------
DiceRoller.prototype.drawRollerResult = function() {
	var str = '';
	str += 'Rolling';
	str += ((this.dicetype == 'fudge')?(':'):(' ' + this.rollstr + ':'));
	if (this.result != undefined) {
		str += 'You rolled <strong>';
		str += ((this.dicetype == 'fudge')?(this.addSign(this.result)):(this.result));
		str += '</strong>.';
	}
	str += this.makeRollTrigger();
	return str;
}
// -----------------------------------------------------------------------
DiceRoller.prototype.drawRollerEachRoll = function() {
	var str = '';
	str += 'Rolling';
	str += ((this.dicetype == 'fudge')?(':'):(' ' + this.rollstr + ':'));
	if (this.result != undefined) {
		str += ' You rolled ';
		var joiner = '';
		for (var r = 0; r < this.rollcount; r++) {
			str += joiner + ((this.dicetype == 'fudge')?(this.addSign(this.results[r])):(this.results[r]));
			joiner = ', ';
		}
		str += ' totalling <strong>';
		str += ((this.dicetype == 'fudge')?(this.addSign(this.result)):(this.result));
		str += '</strong>.';
	}
	str += this.makeRollTrigger();
	return str;
}
// -----------------------------------------------------------------------
DiceRoller.prototype.addSign = function(num) {
	return ( ((parseInt(num) > 0)?('+'):('')) + (num) );
}
// -----------------------------------------------------------------------
DiceRoller.prototype.makeRollTrigger = function() {
	var tag = ((this.result == undefined)?(this.rolltag):(this.rollagaintag));
	if (this.rollby == 'click')  return ' Click to ' + tag + '.';
	if (this.rollby == 'link')   return ' <a style="text-decoration: underline" href="#" id="' + this.id + '_roll">' + tag + '</a>';
	if (this.rollby == 'button') return ' <button id="' + this.id + '_roll">' + tag + '</button>';
}
// -----------------------------------------------------------------------
DiceRoller.prototype.drawDie = function(roll) {
    var html = new Array();

	if (this.resultDisplay == 'text') {
		if (this.resultSystem == 'fudge' && this.results[roll] > 0) html.push('+');
		html.push(this.results[roll]);
	} else {
		html.push('<td class="die">');

		//there are seven possible dot positions
		var dots = Array();
		for (var dot = 0; dot < 7; dot++) {
			dots.push('&nbsp;');
		}
		if ( this.results[roll] ) {
			if (this.results[roll] > 1) dots[0] = 'O';
			if (this.results[roll] > 3) dots[1] = 'O';
			if (this.results[roll] == 6) dots[2] = 'O';
			if (this.results[roll]%2 == 1) dots[3] = 'O';
			if (this.results[roll] == 6) dots[4] = 'O';
			if (this.results[roll] > 3) dots[5] = 'O';
			if (this.results[roll] > 1) dots[6] = 'O';
		}
		var pipe = '|';
		var space = '&nbsp;';
		if (this.resultDisplay == 'dice') {
			html.push(',-----.<br />');
			html.push(pipe + space + dots[0] + space + dots[1] + space + pipe + '<br />');
			html.push(pipe + space + dots[2] + dots[3] + dots[4] + space + pipe + '<br />');
			html.push(pipe + space + dots[5] + space + dots[6] + space + pipe + '<br />');
			html.push('`-----\'<br />');
		} else if (this.resultDisplay == 'compact') {
			html.push(dots[0] + space + dots[1] + '<br />');
			html.push(dots[2] + dots[3] + dots[4] + '<br />');
			html.push(dots[5] + space + dots[6] + '<br />');
		}
		html.push('</td>');
	}
    return html.join('');
}
// -------------------------------------------------------------------
DiceRoller.prototype.rollDice = function() {
	this.result = this.adjuster;
	this.results = new Array(this.rollcount);
	for (var roll = 0; roll < this.rollcount; roll++) {
		this.results[roll] = Math.floor((this.dicesides)*Math.random())+1;
		if (this.dicetype == 'fudge') {
			this.results[roll] -= 2;
		}
		this.result += this.results[roll];
	}
	this.drawRoller();
}
// -----------------------------------------------------------------------
DiceRoller.prototype.getClickHandler = function() {
	// trickey bit.. first make a local var that references the
	// current dice roller object, then return an anonymous function
	// that calls that object's roll() method.  woot for closures!
	var thisroller = this;
	return function(e) {
		thisroller.rollDice();
		return false;
	};
}
// =======================================================================
setStylesheet(
	".viewer table.diceroller, .viewer table.diceroller tr { "+
		"border: none;" +
	"} \n"+

	".viewer table.diceroller tr td { "+
		"border: none; " +
	"} \n"+

	".viewer table.diceroller td.die { "+
		"padding: 0.5em; " +
		"font-family: monospace; " +
		"line-height: 0.95em; " +
	"} \n"+

	"",
	"DiceRoller");

/*}}}*/
My ~TiddlyWiki plugins are and always will be opensource and available for free. However, they do take a significant amount of time and effort to maintain, along with my other contributions to the ~TiddlyWiki community:
* [[TiddlySnip|http://tiddlysnip.com]]
* [[TiddlyThemes|http://tiddlythemes.com]] 
* [[LewcidTW|http://tw.lewcid.org]] and its plugins.
* [[MiniTiddlyServer|http://seanclarkhess.com/tw/]]
''Your generosity will help enable me to continue to improve upon and maintain these contributions to the ~TiddlyWiki community.'' Any and all donations are greatly appreciated! Thank you.

<html><span style="text-align:center">
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but04.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHmAYJKoZIhvcNAQcEoIIHiTCCB4UCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYCbHIjKwoKZwJJg/lWKi8nVDpxGALhfecjP2WQuwM1tgbUC2cIrcbVwPMCXQLH/ZBykcWogSns5EwQ+SYIZMc0bvRxK4462UrgHFEWlX7m/MIRECF1N4I+tqd16SCbvHzrLlZvEpvfuhjJrwwZgZhdQYRINEb8LgRSJXws4OqFChzELMAkGBSsOAwIaBQAwggEUBgkqhkiG9w0BBwEwFAYIKoZIhvcNAwcECFhHnt39vWEXgIHw9JRpgLW2evseFUZ9Fx/nMQ2XwYDFsHpKpV+gfcNL2GMr3OZqknrYN2ZFDlBWdO0xuntJq9bG44JaHkjKnhOeD2+MBAgnVrCyNIRgizJ+56OtMElJCoPzUG+bTKd9nf6b7csDFjrumJo+0GHSy/MWthITsk7IM2j7Bsf/GZTn0B/L1x52I/13jIe7ClXb/T3GbIOBs3ImmQ1csVSN0JLLiEl1bPiXy+h1xGabY1VVXNPUZnTiOMnPUYM80M0pBZB911G0I1WL+vd1D88ojuyM+VOaWAk2httuxTOCZ4SBpmwy0ougejRarifQJfkwaHCFoIIDhzCCA4MwggLsoAMCAQICAQAwDQYJKoZIhvcNAQEFBQAwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMB4XDTA0MDIxMzEwMTMxNVoXDTM1MDIxMzEwMTMxNVowgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBR07d/ETMS1ycjtkpkvjXZe9k+6CieLuLsPumsJ7QC1odNz3sJiCbs2wC0nLE0uLGaEtXynIgRqIddYCHx88pb5HTXv4SZeuv0Rqq4+axW9PLAAATU8w04qqjaSXgbGLP3NmohqM6bV9kZZwZLR/klDaQGo1u9uDb9lr4Yn+rBQIDAQABo4HuMIHrMB0GA1UdDgQWBBSWn3y7xm8XvVk/UtcKG+wQ1mSUazCBuwYDVR0jBIGzMIGwgBSWn3y7xm8XvVk/UtcKG+wQ1mSUa6GBlKSBkTCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb22CAQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCBXzpWmoBa5e9fo6ujionW1hUhPkOBakTr3YCDjbYfvJEiv/2P+IobhOGJr85+XHhN0v4gUkEDI8r2/rNk1m0GA8HKddvTjyGw/XqXa+LSTlDYkqI8OwR8GEYj4efEtcRpRYBxV8KxAW93YDWzFGvruKnnLbDAF6VR5w/cCMn5hzGCAZowggGWAgEBMIGUMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbQIBADAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDcwMTIzMDE0MTM3WjAjBgkqhkiG9w0BCQQxFgQUAjoQEF1wxYU3WAqznjnAuMVuAc8wDQYJKoZIhvcNAQEBBQAEgYCfmhdm/VuJJUg47dP/TR33Kx6/Xlm8WOHkDOgUpoZePCDHggwIk3u3CD/cc5HqqyUruAhqUFaaYA7qHGd/PYjGUgGR9/e5TWm0Dkkk5t5xWCJktvz3t+X/oMTOERihK4HzmPHZVYAWWjsqV7Ag3P3v3UzSWhPn9lTkwNheAshn0Q==-----END PKCS7-----
">
</form></span>
</html>
/***
| Name:|''dropTagging''|
| Created by:|SaqImtiaz|
| Location:|http://tw.lewcid.org/|
| Version:|0.1 (06-Apr-2006)|
| Requires:|~TW2.07|

!About
*provides a drop down list of tiddlers tagged with the specified tag, a replacement for the core tagging macro.

!Demonstration
*<<dropTagging Saq>>
''I recommend using either TaggerPlugin or monkeyTagger, with dropTags and dropTagging in the toolbar:''


!Usage
{{{<<dropTagging>>}}} for tiddlers tagged by current tiddler/tag
{{{<<dropTagging 'Saq'>>}}} for tiddlers tagged by the tag 'Saq' <<dropTagging 'Saq'>>
{{{<<dropTagging 'Saq' 'custom label'>>}}} for tiddlers tagged by the tag 'Saq' with a custom label. <<dropTagging 'Saq' 'custom label'>>

!Installation:
*Copy this tiddler to your TW with the systemConfig tag
* copy the following to your ViewTemplate:
#either {{{<div class='tagging' macro='dropTagging'></div>}}} to add next to or replace tagging macro, or
#{{{<div class='toolbar' >
<span style="padding-right:1.75em;" macro='dropTagging''></span>
<span macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'></span>
</div>}}}(adjust padding to taste)

!To Do
*tweak popup css to optimize placement and colors.
*''optimize code to use core onClickTag function, can cut code size by half!''

!Code
***/
//{{{
config.macros.dropTagging={};
config.macros.dropTagging.dropdownchar = (document.all?"â–¼":"â–¾"); // the fat one is the only one that works in IE
config.macros.dropTagging.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
 var arrow=': '+ config.macros.dropTagging.dropdownchar;
 if(params[0] && store.tiddlerExists(params[0]))
 tiddler = store.getTiddler(params[0]);



 var droptagginglabel= (params[1] && params[1] !='.')? params[1]: 'tagging'+arrow;
 var droptaggingtooltip="tiddlers tagged with '"+tiddler.title+"'";
 
 if(params[0] && store.tiddlerExists(params[0]))
 tiddler = store.getTiddler(params[0]);
 var tagged = store.getTaggedTiddlers(tiddler.title);

 if(tagged.length==0)
 return false; 
 
 var droptagging = function(e)
 { if (!e) var e = window.event;
 var popup = Popup.create(this);
 


 for(var t=0; t<tagged.length; t++)
 createTiddlyLink(createTiddlyElement(popup,"li"),tagged[t].title,true);

 Popup.show(popup,false);
 e.cancelBubble = true;
 if (e.stopPropagation)
 e.stopPropagation();
 return(false);
 };
 
var createdropperButton = function(place){
var sp = createTiddlyElement(place,"span",null,"taggingdropbutton");
var theDropDownBtn = createTiddlyButton(sp,droptagginglabel,droptaggingtooltip,droptagging);
 };
createdropperButton(place);
};

setStylesheet(
 ".toolbar .taggingdropbutton {margin-right:0em; border:0px solid #eee; padding:0px; padding-right:0px; padding-left:0px; }\n"+
 ".taggingdropbutton a.button {padding:2px; padding-left:2px; padding-right:2px;}\n"+
// ".taggingdropbutton {font-size:150%;}\n"+
".popup .highlight{background: #fe8; color:#000;}\n"+
 "",
"DropTaggingStyles");

//}}}
/***
|''Name:''|''dropTags''|
|''Version:''|0.5 (12-May-2006)|
|''Created by:''|SaqImtiaz|
|''Location:''|http://tw.lewcid.org/#DropTagsMacro|
|''Description:''|provides a drop down list of tags in the current tiddler,<<br>> a replacement for the core tags macro.|
|''Documentation:''|DropTagsMacroDocumentation |
|''Source Code:''|[[DropTagsMacroSource|DropTagsMacroDocumentation]] |
|''Requires:''|~TW2.07|

***/
// /%
config.macros.dropTags={};config.macros.dropTags.dropdownchar=(document.all?"â–¼":"â–¾");config.macros.dropTags.handler=function(_1,_2,_3,_4,_5,_6){var _7=config.macros.dropTags.dropdownchar;var _8=(_3[0]&&_3[0]!=".")?_3[0]+_7:"tags"+_7;var _9="current tags for this tiddler";var _a=function(e){if(!e){var e=window.event;}var _d=Popup.create(this);var _e=config.views.wikified.tag;if(_6.tags.length==0){createTiddlyElement(_d,"li",null,"listTitle",_e.labelNoTags);}else{for(var t=0;t<_6.tags.length;t++){createTagButton(createTiddlyElement(_d,"li"),_6.tags[t],_6.title);}}if(version.extensions.IntelliTaggerPlugin){createTiddlyElement(createTiddlyElement(_d,"li"),"hr");abego.IntelliTagger.createEditTagsButton(_6,createTiddlyElement(_d,"li"),"[IntelliEdit]","Edit tags with Intellitagger");}Popup.show(_d,false);e.cancelBubble=true;if(e.stopPropagation){e.stopPropagation();}return (false);};createTiddlyButton(_1,_8,_8,_a,"button","dropTagBtn");};setStylesheet(".popup .highlight{background: #fe8; color:#000;}\n"+"#nestedtagger {background:#2E5ADF; border: 1px solid #0331BF;}\n"+"","DropTagsStyles");if(!config.macros.tagger){window.onClickTag=function(e){if(!e){var e=window.event;}var _12=resolveTarget(e);var _13=(!isNested(_12));if((Popup.stack.length>1)&&(_13==true)){Popup.removeFrom(1);}else{if(Popup.stack.length>0&&_13==false){Popup.removeFrom(0);}}var _14=(_13==false)?"popup":"nestedtagger";var _15=createTiddlyElement(document.body,"ol",_14,"popup",null);Popup.stack.push({root:this,popup:_15});var tag=this.getAttribute("tag");var _17=this.getAttribute("tiddler");if(_15&&tag){var _18=store.getTaggedTiddlers(tag);var _19=[];var li,r;for(r=0;r<_18.length;r++){if(_18[r].title!=_17){_19.push(_18[r].title);}}var _1b=config.views.wikified.tag;if(_19.length>0){var _1c=createTiddlyButton(createTiddlyElement(_15,"li"),_1b.openAllText.format([tag]),_1b.openAllTooltip,onClickTagOpenAll);_1c.setAttribute("tag",tag);createTiddlyElement(createTiddlyElement(_15,"li"),"hr");for(r=0;r<_19.length;r++){createTiddlyLink(createTiddlyElement(_15,"li"),_19[r],true);}}else{createTiddlyText(createTiddlyElement(_15,"li",null,"disabled"),_1b.popupNone.format([tag]));}createTiddlyElement(createTiddlyElement(_15,"li"),"hr");var h=createTiddlyLink(createTiddlyElement(_15,"li"),tag,false);createTiddlyText(h,_1b.openTag.format([tag]));}Popup.show(_15,false);e.cancelBubble=true;if(e.stopPropagation){e.stopPropagation();}return (false);};}if(!window.isNested){window.isNested=function(e){while(e!=null){var _1f=document.getElementById("contentWrapper");if(_1f==e){return true;}e=e.parentNode;}return false;};};config.shadowTiddlers.DropTagsMacroDocumentation="The documentation is available [[here.|http://tw.lewcid.org/#DropTagsMacroDocumentation]]";config.shadowTiddlers.DropTagsMacroSource="The documentation is available [[here.|http://tw.lewcid.org/#DropTagsMacroDocumentation]]";
// %/
a NG drow sorruserious of great power

fond of setting things/people she doesn't like on fire
Event Pix

[[Phil's bachelor party|JBBP_pix]]
[[F-Secure boat trip 2001|wrk_FS_boat2001]]
[[Quick Denver trip 2003|den2003]]
So Rant 1:
 I dislike how we (the US and her allies) how (NOT) far we have gotten into space.
yes I'm speaking to you international space shack... it's not a STATION!!! more like a port... no cause a port is different
/rant

While Skylab type bases are fine for first run's we can be further than this and for not allot of money.

SO I begin

[[Step 1: Launch Ideas]]

[[Step 2 : Construction Ideas]]

[[Step 3 : Station Ideas]]

[[Step 4 : Station Shielding]]

[[Step 5 : Power]]
<<slideShow>>
-s-
<<photoGallery url:pix/family*.jpg first:1 last:20 height:600 time:2000 labels:'family_pix_labels'>>
A FormTemplate is used with the [[FormTiddlerPlugin]]. It is a tiddler that contains one or more HTML INPUT elements and defines the layout of a form. 

Other tiddlers can reference a FormTemplate through the [[FormTiddlerMacro]].

(See [[FormTiddler Introduction]])
Dice Roller allows you to select the 'Fudge' scoring system.

{{{<<dice fudge>>}}}
<<dice fudge>>
Get the [[Dice Roller]] plugin for your TiddlyWiki
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
* Open the ImportTiddlers tiddler


You'll also need to enter your username for signing your edits: <<option txtUserName>>




Hello and welcome to the Sayer family home on these intarweb-nets
  
Alex is located here...
<html><br><!-- Google Public Location Badge -->
<iframe src="http://www.google.com/latitude/apps/badge/api?user=5332156195058394081&type=iframe&maptype=roadmap" width="640" height="480" frameborder="0"></iframe>
<!-- To disable location sharing, you *must* visit http://www.google.com/latitude/apps/badge and disable the Google Public Location badge. Removing this code snippet is not enough! --></a><br></html>
<<top>>
<<toggleSideBar '' '' hide>>
<<jump j '' top>>
/***
|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.

!To Do:
* rework code to allow multiple hovering menus in different positions, horizontal etc.
* incorporate code for keyboard shortcuts that correspond to the buttons in the hovermenu

!History:
*03-08-06, ver 1.1.2: compatibility fix with SelectThemePlugin
*03-08-06,  ver 1.11: fixed error with button tooltips
*27-07-06, ver 1.1 : added JumpMacro to hoverMenu
*23-07-06

!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:#18f; color:#FFF; padding:0 5px; float:right; margin-bottom:4px;}\n"+
"#hoverMenu .button:hover, #hoverMenu .tiddlyLink:hover {font-weight:bold; border:none; color:#fff; background:#000; padding:0 5px; float:right; margin-bottom:4px;}\n"+
"#hoverMenu .button {width:100%; text-align:center}"+
"#hoverMenu { position:absolute; width:7px;}\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

//Start ToggleSideBarMacro code
//{{{
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");
//}}}
//end ToggleSideBarMacro code

//start JumpToTopMacro code
//{{{
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);
}
//}}}
//end JumpToStartMacro code

//start JumpMacro code
//{{{
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);
}
//}}}
//end JumpMacro 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"); 

//}}}
these are some of my ideas...
we'll call them Deep Thoughts by alex sayer 

LOL
// //''Name:'' ImageLink
// //''Version:'' <<getversion imglink>> (<<getversiondate imglink "DD MMM YYYY">>)
// //''Author:'' AlanHecht
// //''Type:'' [[Macro|Macros]]

// //''Description:'' Inserts an external image file as a hyperlink to a URL, a tiddler, or a javascript function.

// //''Syntax:'' << {{{imglink imageSrc linkTo "altText" borderSize width height}}} >>
// //Examples: 
// //<<imglink fractalveg.jpg http://www.tiddlywiki.com#EmbeddedImages "Nice broccoli!" 1 auto 41>> (webpage link, includes height) //IE will not display properly//*

// //<<imglink fractalveg.jpg test.htm "Nice broccoli!" 1 85 41>> (link to local file, includes both width & height parameters)

// //<<imglink fractalveg.jpg self null 1 84 41>> (image with null alt text that links to itself using 'self')

// //<<imglink fractalveg.jpg null "Cool!" 4 79 38>> (image with "null" link but takes advantage of other parameters)

// //<<imglink brixhamharbour.jpg HelloThere "Click to learn more!" 1>> (local image that links to a tiddler)

// //<<imglink http://www.tiddlywiki.com/brixhamharbour.jpg "sampleFunction('You called a function!')" "Click to call a function!" 1>> (image from the web that calls a function)

// //''Directions:'' <<tiddler MacroDirections>> Also, you do not need to copy the sampleFunction() function that appears at the bottom of the code section.  It is used simply to demo this macro calling a function.

// //''Notes:'' Optional border value is set at zero unless you specify another value.  If you choose to set a border, you may also want to change the color for the border in the code section below or using the CustomStyleSheet.  If you specify width and height, you ''must'' provide a border value (use 0 for no border) .
// //If any of your macro parameters contain spaces, then surround the phrase in quote marks, otherwise quotes are not needed.
// //If you use imglink to call a function (useful for adding interface buttons, etc.), the macro will first try to test whether the function exists.  If you typed the name of the function incorrectly, you will receive an error when the macro runs.  If the function does exist, then it is called with all the parameters you specified.
// //*If you set an image width, some browsers (like IE) will require that you set the height value as well.  For browsers that will autosize, you can replace the actual width/height value with the word {{{auto}}}.

// //''Known Issues:'' This macro will not work if called from within a table.

// //''Revision History:''
// // v0.1.0 (22 July 2005): initial release
// // v0.1.1 (22 July 2005): added support for linking to local files as well as no link at all
// // v0.1.2 (15 August 2005): fixed an issue with self-linking images (note: the syntax for these image links changed to 'self')


// //''Code section:''
version.extensions.imglink = {major: 0, minor: 1, revision: 2, date: new Date("Aug 15, 2005")};
config.macros.imglink = {}
config.macros.imglink.handler = function(place,macroName,params)
{
var theLink = null;
var theAction = null;
var data = params;
var linkTo = data[1];
var box = createTiddlyElement(place,"span",null,"imgLinkBox",String.fromCharCode(160));
box.style.position = "relative";
if(data[2] && data[2]!="null")
	box.title = data[2];
var theImage = document.createElement("img");
theImage.src = data[0];
theImage.className = "linkedImg";
theImage.style.position = "relative";
theImage.style.verticalAlign = "top";
theImage.border = data[3] ? data[3] : 0;
theImage.style.borderColor = "black";
if(data[4] && data[4]!="auto")
	theImage.width = data[4];
if(data[5] && data[5]!="auto")
	theImage.height = data[5];

var tiddlerText = store.getTiddlerText(linkTo);
var func = linkTo.substring(0,data[1].indexOf("("));
// test for tiddler link
if(tiddlerText)
	{
	theLink = document.createElement("a");
	theAction = function() {displayTiddler(this,linkTo,1,null,null,null,false,false);};
	theLink.onclick = theAction;
	theLink.href = "javascript:;";
	}
// test for function call
else if(window[func] || typeof eval(func)=="function")
	{
	theLink = document.createElement("a");
	theAction = function() {eval(linkTo);};
	theLink.onclick = theAction;
	theLink.href = "javascript:;";
	}
// test for link to image view
else if(linkTo == "self")
	{
		theLink = document.createElement("a");
		theLink.href = theImage.src;
		if(config.options.chkOpenInNewWindow)
			theLink.target = "_blank";
	}
// test for no link
else if(linkTo == null || linkTo == "null")
	{
	theLink = document.createElement("span");
	}
else
	{
		theLink = document.createElement("a");
		theLink.href = data[1];
		if(config.options.chkOpenInNewWindow)
			theLink.target = "_blank";
	}

theLink.appendChild(theImage);
//box.width=theImage.offsetWidth;
//box.height=theImage.offsetHeight;
box.appendChild(theLink);
}


// //''The following function is not needed and is for demo purposes only''
function sampleFunction(message)
{
alert(message);
}
John Bulan's Bachelor party
go carting, bowling, and gaming
2007.10.28

<<slideShow>>
-s-
<<photoGallery url:pix/vacation2007/JBBP/JB_BP-2007-*.JPG first:1 last:39 height:600 time:8000>>
[[My Little Buttercup...]]
[[Red Neck Tanktop]]
[[Ahhh Walmart]]
[[anal glaucoma]]
[[P. niss raise]]
[[Man bashing jokes]]
[[Woman bashing jokes]]
[[Vextor]]
[[Teecy]]
[[Migetwars]]
[[Naerf]]
[[DITT]]
<<slideShow>>
-s-
<<photoGallery url:pix/kids*.jpg first:1 last:5 height:600 time:2000>>
<<slideShow>>
-s-
<<photoGallery url:pix/ky*.jpg first:1 last:5 height:600 time:2000>>
1  making a voice command and control system.
I think the issue with current systems can be solved by spreading the processing jobs around, so get ~5 old P4 systems, fanless and with SSD drives
have 1 box be the "control" box that recorded all inputs and directs each command to one of the other 4 systems for actual command processing.

PC1 takes input from room 1 and directs WAV file to PC2
PC2 processes wav file "voice" for identity 
PC2 processes wav file for command
PC2 checks command against permissions
PC2 either processes or denied command 
PC2 reports back to user
PC2 reports back to PC1 it is ready for next file

2 RFID + bluetooth + speakerphone + motion power gen
RFID for tracking and access auth
Bluetooth is for voice input into computer system for commands
speakerphone ... well you know what this is used for
P4 2.53GHz
512MB RAM
SB audigy2 zs
5.1 logitech z5300,
10/100Base-T
DVD-Rom
P.o.S. ATI 7000 32mb
Remote Thrustmaster Firestorm
60" RPTV ($500 craigslist)
[[Greetings and Salutations]]


<<slider Journals Journals Journals>>

<<slider Pictures Pictures Pictures>>

[[Ideas]]
You have two choices in life: 
You can stay single and be miserable, or get married and wish you were dead. 

----

At  a cocktail party, one woman said to another, 
"Aren't you wearing your wedding ring on the wrong finger?" 
"Yes, I am.  I married the wrong man."   

----

A  lady inserted an ad in the classifieds: 
"Husband Wanted". 
Next day she  received a hundred letters. 
They all said the same thing: 
"You can  have mine." 

----

When  a woman steals your husband, 
there is no better revenge than to let her  keep him. 

----

A  woman is incomplete until she is married. Then she is finished.  .   

----

Then there was a woman who said, 
"I never  knew what real happiness was until I got married, 
and by then, it was too late." 

----

Marriage is the triumph of imagination over intelligence. 

----

If you want your spouse to listen and 
pay strict attention to every word you say, talk in your sleep. 

----

Just  think, if it weren't for marriage, men would go through life thinking they had no faults at all. 

----

A  Woman's Prayer: 
Dear Lord, I pray for wisdom, to understand a man, to love and to forgive him, 
and for patience, for his moods. 
Because Lord, if I pray for strength, I'll just beat him to death. 

----

Husband and wife are waiting at the bus stop with their nine children.  A blind man joins them after a few minutes.  When the bus arrives, they find it overloaded and only the wife and the nine kids are able to fit onto the bus. 
So the husband and the blind man decide to walk.  After a while, the husband gets irritated by the ticking of the stick of the blind man as he taps it on the sidewalk and says to him, "Why don't you put a piece of rubber at the end of  your stick?  That ticking sound is driving me crazy." 
The blind man replies, "Hey, if you would've put a rubber at the end of YOUR stick, we'd be  riding the bus, so shut the hell up." 
{{borderlessL{
|bgcolor:#fcf;[img[Spiral Galaxy NGC 4414|http://img243.imageshack.us/img243/6527/spiral75hfc9.gif][http://img183.imageshack.us/img183/2406/m81deephallas720ln0.jpg]]<br>&nbsp;&nbsp;Spiral Galaxy M81|bgcolor:#fcf;width:25em;~TiddlyWiki, being a single file, is best utilized by storing images elsewhere. Below is an image and the code to present it. In this case it also includes a tooltip and link to a larger version of the image.|




like this:
[img[Castle|img[http://img480.imageshack.us/img480/6435/CastleOnDanube.jpg]]

float right like this:
[>img[Castle|http://img480.imageshack.us/img480/6435/CastleOnDanube.jpg]]

float left like this:
[<img[Castle|http://img480.imageshack.us/img480/6435/CastleOnDanube.jpg]]





like this: <html><a href="http://img480.imageshack.us/img480/7466/RainbowOverDanube.jpg" target="_blank"><img src="http://img480.imageshack.us/img480/7203/ParliamentHouseBudapest.jpg" width="240" height="160" alt="Castle on the Danube" /></a></html>


<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>
<!--}}}-->

<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>My TiddlyWiki</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>
Markus bluehilt is a tall fair skinned man with reddish brown hair

grew up protected in the monistary in the wonderfull city of riverbunk.
is was always a 
AKA Nicholas Sayer a 12 year old kid
he loves himself, games, and himself

{{borderlessL{
|bgcolor:#44a;[img[Nicholas Sayer |pix/nick4-t.jpg][pix/nick4.jpg]]<br>&nbsp;&nbsp;Nicholas Sayer stylin' and profilin' |bgcolor:#44a;width:5em;|
/***
|''Name:''|Minesweeper|
|''Version:''|0.72 (12 Oct 2005)|
|''Source:''|Tiddly W;nks (http://www.bur.st/~blazeoz/tiddlywinks/)|
|''Author:''|[[Daniel Baird]]|
|''Type:''|Macro|
!Description
It's minesweeper!

!Syntax/Example usage
{{{<<minesweeper>>}}} or {{{<<minesweeper [width] [height] [bombs]>>}}}
<<minesweeper>>

!Notes
* Let me know if you want graphics, or that MSWindows Minesweeper thing where you can click with both buttons on a numbered square, and it does the thinking for you..

!Revision History
* 0.5.0 (2-Oct-05)
** original version (Daniel)
* 0.5.1 (3-Oct-05)
** added the css styles via set~StyleSheet (Simon)
* 0.5.2 (3-Oct-05)
** added parameters to macro and fixed bug preventing detection of win (Simon)
* 0.6 (5-Oct-05)
** Fixed the problem with multiple games on screen at once.
** Cleaned up the JavaScript warning generated when you clicked anywhere but on a square.
* 0.7 (6-Oct-05)
** Integrated sweet additions from Genesis_mage (genisis329 at gmail dot com) that:
*** allows winning by having all non-mines clicked (without having to mark every mine)
*** added a mark button to mark and unmark mines without the keyboard
** Win time now shows tenths of a second.
* 0.71 (10-Oct-05)
** tweaked a style to make the mark button work better in IE
* 0.72 (12-Oct-05)
** worked out how to use a closure as a event handler, which means that the code added in 0.6 could be made a lot simpler.

***/
/*{{{*/

version.extensions.minesweeper = {major: 0, minor: 7, revision: 2};

config.macros.minesweeper = {};

config.macros.minesweeper.handler = function(place,macroName,params) {
    var width = params[0];
    var height = params[1];
    var bombs = params[2];

    if (width == undefined) width = 9;
    if (height == undefined) height = width;
    if (bombs == undefined) bombs = Math.round(width * height /  8)
    if (bombs > width * height) bombs = width * height;

    var aGame = new MinesweeperGame();

    createTiddlyElement(place,'div',aGame.id,null,'If you see this, Minesweeper is broken.  Let Daniel know (DanielBaird at gmail dot com).');
    aGame.newGame(width, height, bombs);
}
// =======================================================================
function MinesweeperGame() {
    this.idprefix = 'mines';
    this.version = '0.72 beta';
    this.id = this.idprefix + MinesweeperGame.prototype.nextid;
    MinesweeperGame.prototype.nextid++;
    return this;
}
// -----------------------------------------------------------------------
MinesweeperGame.prototype.nextid = 0;
// -----------------------------------------------------------------------
MinesweeperGame.prototype.newGame = function(height, width, mines) {
    this.height = height;
    this.width = width;
    this.mines = mines;
    this.total = height * width;
    this.markMode = false;

    this.startGame();
}
// -----------------------------------------------------------------------
MinesweeperGame.prototype.startGame = function() {

    this.gamestate = 'ready';
    this.clicks = 0;
    this.marks = 0;
    this.message = 'click on the board to begin';

    this.starttime = null;
    this.wintime = null;
    this.board = new Array();

    // create the squares
    for (var x = 0; x < this.height; x++) {
        var row = new Array();
        for (var y = 0; y < this.width; y++) {
            row.push( {count: 0, mine: false, clicked: false, marked: false} );
        }
        this.board.push(row);
    }

    // add mines
    for (var m = 0; m < this.mines; m++) {
        var mx = Math.round((this.height-1)*Math.random());
        var my = Math.round((this.width-1)*Math.random());
        if (this.board[mx][my].mine) {
            m--;
        } else {
            this.board[mx][my].mine = true;
        }
    }

    // work out counts
    for (var cx = 0; cx < this.height; cx++) {
        for (var cy = 0; cy < this.width; cy++) {
            var count = 0;
            for (var dx = -1; dx < 2; dx++) {
                for (var dy = -1; dy < 2; dy++) {
                    var nx = cx + dx;
                    var ny = cy + dy;
                    if ( (!(dx==0 && dy==0))
                            && (nx >= 0) && (nx < this.height)
                            && (ny >= 0) && (ny < this.width)
                            && this.board[nx][ny].mine) {
                        count++;
                    }
                }
            }
            this.board[cx][cy].count = count;
        }
    }
    this.showBoard();
}
// -----------------------------------------------------------------------
MinesweeperGame.prototype.showBoard = function() {
    var node = document.getElementById(this.id);
    var html = new Array();
    html.push('<table class="minefield" cellspacing="2">');
    html.push('<tr><td class="info" colspan="'+this.width+'">');
    html.push('Minesweeper '+this.version+'<br /><b>'+this.gamestate+'</b>');
    if (this.gamestate == 'playing') {
        this.message = (this.mines - this.marks)+' mines unmarked';
    }
    html.push('</td></tr>');
    for (var x = 0; x < this.height; x++) {
        html.push('<tr>');
        for (var y = 0; y < this.width; y++) {
            html.push( this.makeSquare(x,y) );
        }
        html.push('</tr>');
    }
    var cls = 'un';
    if (this.markMode) cls = '';
    html.push('<tr><td id="'+this.id+'_markbtn" class="'+cls+'clicked widebtn" colspan="'+this.width+'">mark / unmark mines</td></tr>');
    html.push('<tr><td class="info" colspan="'+this.width+'">'+this.message);
    html.push('<small>');
    html.push('<br /><span class="minesweeper' + cls + 'show">ctrl- shift- or alt-</span>click to reveal a square');
    html.push('<br /><span class="minesweeper' + cls + 'hide">ctrl- shift- or alt-</span>click to mark a mine');
    html.push('</small>');
    html.push('</td></tr>');
    html.push('</table>');
    node.innerHTML = html.join('');
    node.onclick = this.getClickHandler();
}
// -----------------------------------------------------------------------
MinesweeperGame.prototype.makeSquare = function(x,y) {
    var sq = this.board[x][y];
    var reveal = (this.gamestate != 'playing' && this.gamestate != 'ready');
    var html = new Array();
    if (sq.clicked) {
        html.push('<td class="clicked" id="'+this.id+'_x-'+x+'_y-'+y+'">');
        if (!sq.marked && reveal && sq.mine) {
            html.push('B!');
        } else if (!sq.marked && reveal && sq.mine) {
            html.push('B!');
        } else if (sq.count > 0){
            html.push(sq.count);
        } else {
            html.push('&nbsp;');
        }
    } else {
        html.push('<td class="unclicked" id="'+this.id+'_x-'+x+'_y-'+y+'">');
        if (sq.marked && !reveal) {
            html.push('B?');
        } else if (sq.marked && sq.mine && reveal) {
            html.push('B');
        } else if (sq.marked && !sq.mine && reveal) {
            html.push('X');
        } else if (sq.mine && reveal) {
            html.push('B!');
        } else {
            html.push('&nbsp;');
        }
    }
    html.push('</td>');
    return html.join('');
}
// -------------------------------------------------------------------
MinesweeperGame.prototype.clickSquare = function(cx,cy,modifier) {
    if (this.gamestate == 'ready') {
        this.starttime = new Date();
        this.gamestate = 'playing';
    }
    if (this.gamestate == 'playing') {
        if (!this.board[cx][cy].clicked) {
            if ( (modifier && !this.markMode) || (!modifier && this.markMode) ) {
                if (this.board[cx][cy].marked) {
                    this.marks--;
                    this.board[cx][cy].marked = false;
                } else {
                    this.marks++;
                    this.board[cx][cy].marked = true;
                }
            } else if (!this.board[cx][cy].clicked && !this.board[cx][cy].marked) {
                this.revealSquare(cx,cy);
            }
            this.markMode = false;
        }
        this.checkWin();
        this.showBoard();
    } else {
        // clicked when we're not playing..
        this.startGame();
    }
}
// -------------------------------------------------------------------
MinesweeperGame.prototype.revealSquare = function(x,y) {
    if (this.board[x][y].clicked == false && this.board[x][y].marked == false) {
        this.board[x][y].clicked = true;
        this.clicks++;
        if (this.board[x][y].mine) {
            this.gamestate = 'boom!';
            this.message = 'click board to play again';
        } else if (this.board[x][y].count == 0) {
            // if it's a zero, we might have to reveal some other squares..
            for (var dx = -1; dx < 2; dx++) {
                for (var dy = -1; dy < 2; dy++) {
                    var nx = x + dx;
                    var ny = y + dy;
                    if ( (!(dx==0 && dy==0)) && (nx >= 0) && (nx < this.height) && (ny >= 0) && (ny < this.width) ) {
                        this.revealSquare(nx,ny);
                    }
                }
            }
        }
    }
}
// -------------------------------------------------------------------
MinesweeperGame.prototype.handleClick = function(e) {
    // work out which cell was clicked
    if (!e) var e = window.event;
    var str = resolveTarget(e).id;
    if (str && str != undefined) {
        if (str == this.id + '_markbtn') {
            this.markMode = !this.markMode;
            this.showBoard();
        } else {
            var cx = parseInt(str.substr( str.indexOf('x-')+2 ));
            var cy = parseInt(str.substr( str.indexOf('y-')+2 ));
            if ( !isNaN(cx) && !isNaN(cy) ) {
                this.clickSquare(cx,cy,(e.altKey || e.shiftKey || e.ctrlKey));
            }
        }
    }
}
// -------------------------------------------------------------------
MinesweeperGame.prototype.getClickHandler = function() {
    var thisGame = this;
    return function(e) {
        thisGame.handleClick(e);
    }
}
// -------------------------------------------------------------------
MinesweeperGame.prototype.checkWin = function() {
    if (this.clicks == this.total - this.mines && this.gamestate !='boom!') {
        this.gamestate = 'win';
        this.wintime = new Date();
        this.message = 'You won in '+Math.round(((this.wintime - this.starttime)/100))/10+' seconds';
        this.message = this.message + '<br />click board to play again';
    }
}
// -----------------------------------------------------------------------

setStylesheet(
	".viewer .minefield { "+
		"background: #ddd; "+
		"border: double 3px black; "+
		"border-collapse: separate; "+
		"border-spacing: 2px; "+
	"} \n"+

	".viewer .minefield td { "+
		"cursor: default; "+
		"width: 1.3em; "+
		"height: 1.1em; "+
		"text-align: center; "+
		"vertical-align: center; "+
		"background: #ddd; "+
		"border: 1px solid #ccc; "+
	"} \n"+

	".viewer .minefield td.info, .viewer .minefield td.widebtn { "+
		"width: auto; "+
	"} \n"+

	".minesweeperhide, .minesweeperunshow { "+
		"display: none; "+
	"} \n"+

	".viewer .minefield td.unclicked { "+
		"cursor: pointer; "+
		"border-color: #fff; "+
		"border-right-color: #999; "+
		"border-bottom-color: #999; "+
	"} \n"+
	"",
	"MinesweeperGame");

/*}}}*/
a psionic wizard dwarf who has only been sober 3 times in the last six months, yet he still manages to do the most amount of damage.
Theories are that he gives his enemies his hang overs!
<<calendar year:2005 month:11 numberMonths:4 numberColumns:2>>
My Little Buttercup...
Towards the end of the golf course, Larry hit his ball into the woods and found it in a patch of pretty yellow buttercups.
Trying to get his ball back in play, he ended up thrashing just about every buttercup in the patch.
All of a sudden ... POOF!! In a flash and puff of smoke, a little old woman appeared.
She said, "I'm Mother Nature! Do you know how long it took me to make those buttercups? Just for doing what you have done, you won't have any butter for your popcorn for the rest of your life.
"Better still, you won't have any butter for your toast for the rest of your life. ... As a matter of fact, you'll never have any butter for anything for the rest of your life!!!!!"
Then POOF! .. she was gone!
After Larry recovered from the shock, he hollered for his friend, "Henry, where are you?"
Henry yells back "I'm over here in the pussy willows."
Larry shouts back, "DON'T SWING, HENRY; FOR THE LOVE OF GOD, DON'T SWING!"
<<calendar>>See [[Holidays|PlasticHolidays]].
AKA Nathaniel Sayer is a 9 year old boy 
who loves his brother, his mom, boobies, his brother and toys.
<<slideShow>>
-s-
<<photoGallery url:pix/nat*.jpg first:1 last:7 height:600 time:2000>>
''The newTiddlerWithForm Macro''

To create tiddlers that are referencing [[FormTemplate]]s you may use the {{{<<newTiddlerWithForm...>>}}} macro. 

The {{{<<newTiddlerWithForm...>>}}} macro displays a button. When pressed the button creates the requested tiddler and displays it. 

If no title is given in the macro (or a tiddler with the given name already exists) the user can enter the tiddlers name in a dialog.

''Syntax:'' 
|>|{{{<<}}}''newTiddlerWithForm'' //formTemplateName// //buttonLabel// [//titleExpression// [''askUser'']] {{{>>}}}|
|//formTemplateName//|The name of the tiddler that defines the form the new tiddler should use.|
|//buttonLabel//|The label of the button|
|//titleExpression//|A (quoted) JavaScript String expression that defines the title (/name) of the new tiddler.|
|''askUser''|Typically the user is not asked for the title when a title is specified (and not yet used). When ''askUser'' is given the user will be asked in any case. This may be used when the calculated title is just a suggestion that must be confirmed by the user|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|

''Examples''
* Ask the user for a bug report name and create a bugreport.
{{{
<<newTiddlerWithForm BugReportTemplate "New Bugreport">>
}}}
<<newTiddlerWithForm BugReportTemplate "New Bugreport">>

* Create a blog entry tiddler. Let the user confirm the automatically generated title (that contains the current date) or change it.
{{{
<<newTiddlerWithForm 
 BlogTemplate 
 "New Blog" 
 '"Blog: "+(new Date()).formatString("YYYY-MM-DD")' askUser
>>
}}}
<<newTiddlerWithForm 
 BlogTemplate 
 "New Blog" 
 '"Blog: "+(new Date()).formatString("YYYY-MM-DD")' askUser
>>

<<slideShow>>
-s-
<<photoGallery url:pix/nick*.jpg first:1 last:4 height:600 time:2000>>
The Day Mr P. niss asked for a Raise 

   I, the Penis, hereby request a raise in salary for the
  following reasons: 

  I do physical labor. 
  I work at great depths. 
  I plunge headfirst into everything I do. 
  I do not get weekends or public holidays off. 
  I work in a damp environment. 
  I work in a dark workplace that has poor ventilation. 
  I work in high temperatures. 
   My work exposes me to contagious diseases.

   Sincerely, 
   P. Niss



  The Response
  Dear P. Niss: 
  After assessing your request, and considering the 
  arguments you have raised, the administration rejects your request for the following reasons:

   You do not work 8 hours straight.
  You fall asleep after brief work periods.
  You do not always follow   the orders of the management team.
  You do not stay in your designated area and are often seen visiting other locations.
  You do not take initiative.
  You need to be pressured and stimulated in order to start working.
  You leave the workplace rather messy at the end of your shift.
  You don't always observe necessary safety regulations, such as wearing the correct protective clothing.
  You will retire  well before you are 65.
  You are unable to work double shifts.
  You sometimes leave your designated work area before you have completed assigned task.
  And if that were not all, you have been seen constantly entering and exiting the workplace carrying two suspicious-looking bags!!

  Sincerely, 
  V.Gina
/***
|''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]].";
//}}}
!Description
This plugin is a small companion to the SlideShowPlugin.
!Usage
To use this plugin you //must// be using TiddlyWiki 2.0.0. Install this tiddler and drop {{{<<photoShow directory/file-*.jpg a b>>}}} at the beginning of the tiddler. 
Check this [[PhotoShowExample]].
!Revision history
1.0.2 - 07/10/2007 - small code refactoring
1.0.1 - 08/06/2006 - made compatible with SlideShowPlugin 1.4.0
1.0.0 - 04/01/2006 - initial release
[[Family|Family_pix]]
[[My Wife|Teecy_pix]]
[[Dad|Rich_pix]]
[[Mom|Clara_pix]]
[[Vex|Alex_pix]]
--Sis--

[[Kids|Kid_pix]]
  [[Migetwars|Nicholas_pix]]
  [[Nearf|Nathan_pix]]
  [[Kygee|Kygee_pix]]

[[Friends|alx_friend_pix]]

[[Trips|Trip_pix]]
[[Events|Event_pix]]
/***
|''Name:''|PlasticCalendarPlugin|
|''Description:''|This plugin creates a custom Gregorian calendar|
|''Version:''|1.3.1|
|''Date:''|Mar 13, 2007|
|''Source:''|http://www.math.ist.utl.pt/~psoares/addons.html|
|''Documentation:''|[[PlasticCalendarPlugin Documentation|PlasticCalendarPluginDoc]]|
|''Author:''|Paulo Soares|
|''License:''|[[Creative Commons Attribution-Share Alike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.1.0|
***/
{{{
// --------------------------------------------------------------------
// Calendar
// --------------------------------------------------------------------

config.macros.calendar = {holidays: []};
config.macros.calendar.options = {
 // day week starts from (normally 0-Su or 1-Mo)
 calendarWeekStart: 1,
 calendarToday: "Today",
 calendarHoliday: "Holiday: ",
 calendarLongDateFormat: "YYYY.0MM.0DD",
 calendarShortDateFormat: "0DD/0MM",
 calendarTag: ["Vexsjournal"]
};

/***************************************************************************
** Internal functions
***************************************************************************/
var cldTag;

config.macros.calendar.calendarIsHoliday = function(date) {
 var cm = config.macros.calendar;
 var longHoliday = date.formatString(cm.options.calendarLongDateFormat);
 var shortHoliday = date.formatString(cm.options.calendarShortDateFormat);
 for(var i = 0; i < cm.holidays.length; i++) {
 if(cm.holidays[i][0] == longHoliday || cm.holidays[i][0] == shortHoliday) {
 return cm.holidays[i];
 }
 }
 return null;
}

config.macros.calendar.onClickOtherDay = function(e) {
 var day = this.getAttribute('tiddlylink');
 story.displayTiddler(null,day,DEFAULT_EDIT_TEMPLATE);
 for(var i=0; i<cldTag.length;i++){
 story.setTiddlerTag(day, cldTag[i], 0);
 }
 story.focusTiddler(day,"text");
}

config.macros.calendar.getPopupText = function(title) {
 var popup_entries = store.getTiddlerText(title).split("\n");
 var popup = popup_entries[0];
 if(popup_entries.length>1) popup += " ...";
 return popup;
}

config.macros.calendar.findCalendar = function(child) {
 var parent;
 while (child && child.parentNode) {
 parent = child.parentNode;
 if (parent.id == "calendarWrapper") {
 return parent;
 }
 child = parent;
 }
 return null;
}

config.macros.calendar.selectDate = function(e) {
 if (!e) var e = window.event;
 var cm = config.macros.calendar;
 var calendar = cm.findCalendar(this);
 if (calendar) {
 var d = this.getAttribute("date");
 if (d != null) cm.makeCalendar(calendar, new Date(new Number(d)));
 }
 e.cancelBubble = true;
 if (e.stopPropagation) e.stopPropagation();
 return false;
}

config.macros.calendar.makeCalendar = function(calendar, dt_current) {
 var cm = config.macros.calendar;
 var currentDay = new Date(new Number(calendar.getAttribute("currentDay")));
 var setControls = calendar.getAttribute("setControls");
 calendar.setAttribute("date", dt_current.valueOf());

 while (calendar.hasChildNodes())
 calendar.removeChild(calendar.firstChild);

if(setControls==1){
 // get same date in the previous year
 var dt_prev_year = new Date(dt_current);
 dt_prev_year.setFullYear(dt_prev_year.getFullYear() - 1);
 if (dt_prev_year.getDate() != dt_current.getDate())
 dt_prev_year.setDate(0);

 // get same date in the next year
 var dt_next_year = new Date(dt_current);
 dt_next_year.setFullYear(dt_next_year.getFullYear() + 1);
 if (dt_next_year.getDate() != dt_current.getDate())
 dt_next_year.setDate(0);

 // get same date in the previous month
 var dt_prev_month = new Date(dt_current);
 dt_prev_month.setMonth(dt_prev_month.getMonth() - 1);
 if (dt_prev_month.getDate() != dt_current.getDate())
 dt_prev_month.setDate(0);

 // get same date in the next month
 var dt_next_month = new Date(dt_current);
 dt_next_month.setMonth(dt_next_month.getMonth() + 1);
 if (dt_next_month.getDate() != dt_current.getDate())
 dt_next_month.setDate(0);
}

 // get first day to display in the grid for current month
 var dt_firstday = new Date(dt_current);
 dt_firstday.setDate(1);
 dt_firstday.setDate(1 - (7 + dt_firstday.getDay() - cm.options.calendarWeekStart) % 7);

 var area, header;
 var line, cell, i;

 // 1 - calendar header table
 // 2 - print weekdays titles
 // 3 - calendar days table 
calendar.cellPadding = 0;
calendar.cellSpacing = 0;
area = createTiddlyElement(calendar, "tbody");

 // 1 - calendar header table
 header = createTiddlyElement(area,"tr", "calendarHeader");
 header.cellPadding = 0;
 header.cellSpacing = 0;

if(setControls==1){ 
var headerValues = [
 [ "<<", "selectYear", dt_prev_year.valueOf() ],
 [ "<", "selectMonth", dt_prev_month.valueOf() ],
 [ config.messages.dates.months[dt_current.getMonth()] + ' ' + dt_current.getFullYear(),
 "selectToday", currentDay.valueOf() ],
 [ ">", "selectMonth", dt_next_month.valueOf() ],
 [ ">>", "selectYear", dt_next_year.valueOf() ]
 ];

 for (i = 0; i < headerValues.length; ++i) {
 var link = createTiddlyElement(header,"td", null, null, headerValues[i][0]);
 if(i==2) link.colSpan=3;
 link.onclick = cm.selectDate;
 link.setAttribute("date", headerValues[i][2]);
 }
} else {
 var link = createTiddlyElement(header,"td", null, null, 
config.messages.dates.months[dt_current.getMonth()] + ' ' + dt_current.getFullYear());
link.colSpan=7;
}

 // 2 - print weekdays titles
 line = createTiddlyElement(area, "tr", "weekNames");
 for (var n = 0; n < 7; ++n) {
 createTiddlyElement(line, "td", null, null, config.messages.dates.shortDays[(cm.options.calendarWeekStart + n)%7]);
 }

 // 3 - calendar days table
 var dt_current_day = new Date(dt_firstday);
 var day_class;
 var title;
 var holiday;
 var popup;
 var clickHandler;

 while (dt_current_day.getMonth() == dt_current.getMonth() ||
 dt_current_day.getMonth() == dt_firstday.getMonth()) {

 // print row header
 line = createTiddlyElement(area, "tr", "calendarLine", null, null);
 for (var n_current_wday = 0; n_current_wday < 7; ++n_current_wday) {
 title = dt_current_day.formatString(cm.options.calendarLongDateFormat);
 clickHandler = cm.onClickOtherDay;
 popup = null;
 holiday = cm.calendarIsHoliday(dt_current_day);

 if (holiday != null) {
 // holidays
 day_class = (holiday.length==3)? holiday[2]: "holiDay";
 popup = cm.options.calendarHoliday + holiday[1];
 } else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6) {
 // weekend days
 day_class = "weekDay";
 } else {
 // print working days of current month
 day_class = "workingDay";
 }

if(dt_current_day.getMonth() == dt_current.getMonth()){
 if (currentDay.valueOf() == dt_current_day.valueOf()) {
 // print current date
 if (store.tiddlerExists(title)){
 // day has a tiddler associated with it
 day_class += " currentscheduledDay";
 clickHandler = onClickTiddlerLink;
 popup = cm.options.calendarToday + ": "+ cm.getPopupText(title);
 } else {
 day_class += " currentDay";
 popup = cm.options.calendarToday;
}
}


 if (store.tiddlerExists(title) && store.getTiddler(title).isTagged(cldTag[0]))  {
 // day has a tiddler associated with it
 day_class += " scheduledDay";
 clickHandler = onClickTiddlerLink;
 popup = cm.getPopupText(title);
 }
}

 // extra formatting for days of previous or next month
 if (dt_current_day.getMonth() != dt_current.getMonth()) {
 day_class += " otherMonthDay";
 }

 var text = dt_current_day.getDate();
 var cell = createTiddlyElement(line, "td", null, day_class, text);
 cell.onclick=clickHandler;
 cell.setAttribute("date", dt_current_day.valueOf());
 cell.setAttribute("tiddlyLink", title);
 if(popup) cell.setAttribute("title", popup);
 dt_current_day.setDate(dt_current_day.getDate()+1);
 }
 }
}

config.macros.calendar.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
 var start_date = new Array();
 var date = new Date();
 var cldParams = paramString.parseParams('calendarParams', null, true);
 var cldYear = (cldParams[0].year)?parseFloat(cldParams[0].year[0]): date.getFullYear();
 var cldMonth = (cldParams[0].month)?parseFloat(cldParams[0].month[0]): date.getMonth();
 var n_months = (cldParams[0].numberMonths)?parseFloat(cldParams[0].numberMonths[0]): 1;
 var n_cols = (cldParams[0].numberColumns)?parseFloat(cldParams[0].numberColumns[0]): 3;
 cldTag = (cldParams[0].tag)?cldParams[0].tag[0].split("#"): config.macros.calendar.options.calendarTag;
 for(var i = 0; i < n_months; i++){
 start_date[i] = new Date(cldYear, cldMonth+i, 1);
 }
 var n_rows = Math.max(1,Math.ceil(n_months/n_cols));
 n_cols = Math.min(n_cols,n_months);
 var setControls=(n_months>1)? 0: 1;
 var currentDay = new Date();
 currentDay = new Date(currentDay.getFullYear(), currentDay.getMonth(), currentDay.getDate());
 var holder = createTiddlyElement(place, "table", null,"calendarHolder");
 var holderTable = createTiddlyElement(holder, "tbody");
 for(var i = 0; i < n_rows; i++){
 var holderLine = createTiddlyElement(holderTable, "tr");
 for(var j = 0; j < n_cols; j++){
 var holderCell = createTiddlyElement(holderLine, "td");
 if(n_cols*i+j+1<=n_months){
 var calendar = createTiddlyElement(holderCell, "table", "calendarWrapper");
 calendar.setAttribute("name", "calendarWrapper");
 calendar.setAttribute("setControls", setControls);
 calendar.setAttribute("currentDay", currentDay.valueOf());
 config.macros.calendar.makeCalendar(calendar, start_date[n_cols*i+j]);
 }
 }
 }
}

function refreshCalendars(hint) {
 var calendars = document.getElementsByName("calendarWrapper");
 var i, c;
 for (i = 0; i < calendars.length; ++i) {
 c = calendars.item(i);
 if (c.id == "calendarWrapper") {
 config.macros.calendar.makeCalendar(c, new Date(new Number(c.getAttribute("date"))));
 }
 }
}

store.addNotification(null, refreshCalendars);

setStylesheet("/***\n!Calendar Styles\n***/\n/*{{{*/\n .viewer .calendarHolder {\n margin-left: auto;\n margin-right: auto;\n border: none;\n}\n\n .viewer .calendarHolder table {\n border: none;\n margin: 0;\n}\n\n .viewer .calendarHolder tr {\n border: none;\n vertical-align: top;\n}\n\n .viewer .calendarHolder td {\n border: none;\n vertical-align: top;\n}\n\n .viewer #calendarWrapper {\n width: 21em;\n border: 2px solid #4682b4;\n cursor: pointer;\n}\n\n #calendarWrapper #calendarLine td {\n height: 2.5em;\n}\n\n #calendarWrapper tr {\n border:none;\n}\n\n #calendarWrapper td {\n text-align: center;\n vertical-align: middle;\n width: 14.28%;\n border:none;\n}\n\n #calendarWrapper #calendarHeader td{\n color: #ffffff;\n background-color: #4682b4;\n height: 2em;\n}\n\n #calendarWrapper #weekNames td {\n color: #ffffff;\n background-color: #87cefa;\n height: 2em;\n}\n\n #calendarWrapper .weekDay {\n background-color: #ccff99;\n}\n\n #calendarWrapper .holiDay {\n background-color: #9acd32;\n}\n\n #calendarWrapper .currentDay {\n border: solid #ff0000 2px;\n font-weight: bold;\n}\n\n #calendarWrapper .currentscheduledDay {\n border: solid #ff0000 2px;\n font-weight: bold;\n}\n\n #calendarWrapper .workingDay {\n background-color: #ffffff;\n}\n\n #calendarWrapper .scheduledDay {\n border: solid orange 2px;\n}\n\n #calendarWrapper .otherMonthDay {\n background-color: #999;\n}\n\n/*}}}*/","CalendarStyles");

config.shadowTiddlers.PlasticCalendarPluginDoc="The documentation is missing. It is available [[here|http://www.math.ist.utl.pt/~psoares/addons.html#PlasticCalendarPluginDoc]].";
}}}
!Description
This plugin creates a custom Gregorian calendar. A single month calendar has navigation buttons at the top line in order to change month and year. With multiple months the calendar is static. Different categories of holidays can be defined in a configuration tiddler and those categories can be styled by the user. There's also a simple scheduling mechanism.
This plugin is based on previous work by [[TiagoDionízio|http://mega.ist.utl.pt/~tngd/twiki/twiki.cgi/]]'s.
!Usage
Copy this tiddler to your TW, tag it with 'systemConfig', save your TW, refresh your browser and drop {{{<<calendar>>}}} in a tiddler to get a calendar for the current month. You can also use any of the following options {{{<<calendar year:2007 month:6 numberMonths:6 numberColumns:2 tag:'work'>>}}}.

You can also label the schedules with multiple tags separating them with {{{#}}} such as {{{tag:'work#excludeLists'}}}. However only the first tag is used to display scheduled days in the calendar.
!Revision history
1.3.1 - 19/03/2006
*fixed missing schedules at the first day of any month (bug reported and fixed by Michael Lin)
1.3.0 - 18/09/2006
*small changes to work with TW2.1
1.2.1 - 04/06/2006
*restored the use of multiple tags
1.2.0 - 18/05/2006
*plugin name changed to PlasticCalendarPlugin (because there are other ~CalendarPlugin's out there...)
*now using named parameters
*added categories of holidays (suggested by Paco Rivière)
1.1.0 - 02/10/2005
*initial release
version.extensions.Holidays = {
 major: 1, minor: 1, revision: 0,
 date: new Date(2006, 4, 18), 
 type: 'config'
};

config.macros.calendar.holidays = [ ["01/01", "New Year's day"], ["25/12", "Christmas day", "Christian"] ];
<<minesweeper>>

Get this [[Minesweeper]] plugin for your TiddlyWiki

Features that might be coming:
* proper graphics
* remembering best times in a tiddler somewhere
* nicer layout with less grey
/***
|''Name:''|QuizzerPlugin|
|''Description:''|Makes quizzes with optional grades|
|''Version:''|1.0.1|
|''Date:''|Oct 07, 2007|
|''Source:''|http://www.math.ist.utl.pt/~psoares/addons.html|
|''Documentation:''|[[QuizzerPlugin Documentation|QuizzerPluginDoc]]|
|''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.quiz = {
	wrongAnswer: "Incorrect answer. Please think again.",
	rightAnswer: "That's right!",
	trueValue: "True",
	falseValue: "False",
	handler: function(place,macroName,params,wikifier,paramString){
		var par = paramString.parseParams("list",null,true);
		var type = getParam(par,"type","M");
		var panelType = (type.length>1) ? type.charAt(1) : "";
		type = type.charAt(0);
		var id = getParam(par,"id","");
		if(id=="" && type!="M") return; // not sure about this
		var value = getParam(par,"value",false);
		var tiddler = getParam(par,"tiddler","");
		var score = parseFloat(getParam(par,"score",0));
		var toolTip = "";
		if(type=="T"){
			toolTip = this.trueValue;
			if(value==false){
				var tempTiddler=tiddler;
				tiddler="";
				var tempScore=score;
				score=0;
			}
		}
		this.createAnswer(place, type, toolTip, true, panelType, tiddler, value, score, id);
		if(type=="T"){
			tiddler=(value==false)?tempTiddler:"";
			score=(value==false)?tempScore:0;
			toolTip = this.falseValue;
			this.createAnswer(place, type, toolTip, false, panelType, tiddler, !value, score, id);
		}
	},
	createAnswer: function(place, type, toolTip, correction, panelType, tiddler, value, score, id){
		var checked=false;
		if(correction){
			var correct = createTiddlyElement(place,"span","","correction","");
			correct.style.display='none';
			correct.style.fontWeight='bold';
			checked=true;
		}
		if(type=="M"){
			var btn = createTiddlyCheckbox(place,"",false,this.onClickAnswer);
		} else {
			var btn = createTiddlyRadiobox(place,"",checked,this.onClickAnswer,id);
		}
		btn.className = "answerItem";
		btn.value=score;
		if(toolTip!="") btn.title=toolTip;
		var panelClass = (panelType=="=") ? "sliderPanel" : "floatingPanel"; //default to floating
		var text = (tiddler!="") ? store.getTiddlerText(tiddler) : ""; 
		if(text==""){text = (value) ? this.rightAnswer : this.wrongAnswer;}
		var panel = createTiddlyElement(null,"div","",panelClass);
		panel.style.display = "none"; //default to closed
		panel.onclick=function(){this.style.display="none";};
		place.appendChild(panel);
		wikify(text,panel,null);
	},
	onClickAnswer: function(e){
		if(!e) var e = window.event;
		var panel = this.nextSibling;
		if(this.checked){
			var validated = 1;
			var visiblePanel=document.getElementById('visiblePanel');
			var scoreCard=document.getElementById('scoreCard');
			if(visiblePanel){
				visiblePanel.style.display="none";
				visiblePanel.id="";
			}
			if(scoreCard){validated = scoreCard.value;}
			if(validated==1){
				panel.style.display = "block";
				panel.id="visiblePanel";
				var left= e.clientX +10;
				panel.style.left = left + "px";
			}
		} else {
			panel.style.display = "none";
			panel.id="";
		}
	}
};

config.macros.score= {
	trueSymbol: "✔",
	falseSymbol: "✘",
	label: "Score »",
	handler: function(place,macroName,params,wikifier,paramString){
		var btn = createTiddlyButton(place,this.label,"",this.checkOut);
		btn.id="scoreCard";
		btn.value=0;
	},
	checkOut: function(e){
		if(this.value==1) return;
		var total=score=points=0;
		var answers=getElementsByClass("answerItem",document.getElementById('viewer'));
		var answersLen=answers.length;
		for(var i=0; i<answersLen; i++) {
			points=parseFloat(answers[i].value);
			score+=answers[i].checked*points;
			if(points>0)total+=points;
			var correct=answers[i].previousSibling;
			if(correct.className=="correction"){
				if(answers[i].checked == (points>0)){
					correct.firstChild.data=config.macros.score.trueSymbol;
					correct.style.color = '#0f0';
				} else {
					correct.firstChild.data=config.macros.score.falseSymbol;
					correct.style.color = '#f00';
				}
				correct.style.display='inline';
			}
		}
		var text = " " + score+"/"+total;
		createTiddlyElement(document.getElementById('scoreCard'),"span","","",text);
		this.value=1;
	}
};

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|$)");
	for (var i = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {classElements.push(els[i]);}
	}
	return classElements;
}

function createTiddlyRadiobox(theParent,caption,checked,onChange,id){
	var cb = document.createElement("input");
	cb.type = "radio";
	cb.name = id;
	cb.onclick = onChange;
	theParent.appendChild(cb);
	cb.checked = checked;
	cb.className = "chkOptionInput";
	if(caption) wikify(caption,theParent);
	return cb;
}

setStylesheet("/*{{{*/\n.floatingPanel {\n color: black;\n;position: absolute;\nz-index: 10;\npadding: 0.5em;\nbackground-color: #eee;\nborder: 1px solid #333;\ncursor: crosshair}\n\n.sliderPanel {padding: 0.5em;\nborder: 1px dotted #333;\nwidth: auto;\ncursor: crosshair}\n\n/*}}}*/","AnswerPanelStyles");

config.shadowTiddlers.QuizzerPluginDoc="The documentation is missing. It is available [[here|http://www.math.ist.utl.pt/~psoares/addons.html#QuizzerPluginDoc]].";
//}}}
!!!!Syntax
The QuizzerPlugin has five parameters; most are optional:
//{{{
<<quiz [type:type[=]] [id:id] [tiddler:tiddler] [value:value] [score:score]>>
//}}}
Parameters:
*type (string)
**"M" (multiple answer checkbox) (default)
**"S" (single-answer radio button group)
**"T" (true/false question)
***append "=" for sliding panel (e.g., T=, S=, M=) 
*id (string)
**required for types S  and T only
***for type S value must be unique across a group of questions
***for type T value must be unique for each question 
*tiddler (string, //optional//)
**display text from tiddler in the panel
**default is config.macros.answer.wrongAnswer or config.macros.answer.rightAnswer according to the value of the next parameter
*value
**use {{{value:true}}} to indicate that the true answer is right
**should be omitted otherwise
*score (number)
**sets the score for an answer
** default is 0
{{borderlessL{
|bgcolor:#44a;[img[redneck joke|pix/jokes/RNtanktop.jpg][pix/jokes/RNtanktop.jpg]]<br>&nbsp;&nbsp;|bgcolor:#44a;width:5em;look closely at the tank top|
{{borderlessL{
|bgcolor:#44a;[img[Dad and Sis at her graduation summer 2007|pix/dad1-t.jpg][pix/dad1.jpg]]<br>&nbsp;&nbsp;Richard Sayer|bgcolor:#44a;width:35em;Dad is happy at least one of his kids went to school|

/***

''This plugin was previously called StyleChooser.''

|Name|SelectThemePlugin|
|Created by|SimonBaird and SaqImtiaz|
|Location|http://tw.lewcid.org/#SelectThemePlugin|
|Version|1.2.5|
|Requires|~TW2.x|
!Description
*An alternative style switcher, can be used to switch just stylesheets and/or pagetemplates, or a combination of both (a theme)
*you can add your own stylesheets and pagetemplates, or use a ThemePack, like BigThemePack.

!Usage
* You have to have fetch or create some styleSheets and pageTemplates to use this plugin.
**You can either get a ThemePack like BigThemePack which automatically adds themes to ThemeSelect.
**or create tiddlers with styleSheets and pageTemplates and tag them styleSheets and pageTemplates respectively.
* Put {{{<<themeSelect style 'Select theme'>>}}} in your SideBarOptions.

!Creating Theme Packs
*You can create your own theme pack if you like. Instructions can be found [[here.|CreateThemePack]]

!History
*20-Dec-06, v 1.2.5, fixed horizontal rules for IE (thanks Clint), compatibility fix with HoverMenuPlugin
* 08-Sept-06, v1.2.4, fixed bug with TW2.1
* 15-May-06, v1.2.3, added paramifier so you can put theme on url, eg http://www.somewhere.com/twfile.html#theme:Berry2, thanks Clint (Simon).
* 28-Apr-o6, v1.2.2, fixed bug with opening TW after deleting themepacks. (Saq)
* 26-Apr-06, v1.2.1, more code optimization, dropdowns now updated on the fly. (Saq)
* 25-Apr-06, v1.2.0, added 3rd party ThemePack support, and made various other improvements.(Simon & Saq)
* 24-Apr-06, v1.1.0, added: no styles and default styles options,<<br>>support for ThemePack, support for tag variations(Saq)
* 21-Apr-06, v1.0.0, Reworked dropdowns to include option for pagetemplates (Saq)
* 21-Apr-06, v0.9.0, Rewrote and added Saq's lovely dropdown select (Simon)
* 20-Apr-06, v0.0.1, Basic switcher working (Simon)

!Examples
|!Source|!Output|h
|{{{<<themeSelect style>>}}} for a dropdown with StyleSheets|<<themeSelect style>>|
|{{{<<themeSelect pagetemplate>>}}} for a dropdown with PageTemplates|<<themeSelect pagetemplate>>|
|{{{<<themeSelect style customlabel>>}}} to use a customlabel|<<themeSelect style customlabel>>|
* When applying a stylesheet or template, it also looks for a template or stylesheet respectively based on naming convention, eg MyFunkyStyleSheet and MyFunkyPageTemplate.

!Notes
* See also http://www.tiddlytools.com/#SelectStyleSheetPlugin for a more feature-rich style sheet switcher

! Ideas
* do ViewTemplate also?
* Pretty up the [x] bit

!Code
***/
//{{{
// for compatibility with TW <2.0.9
if (!Array.prototype.contains)
   Array.prototype.contains = function(item)
   {
    return this.find(item) != null;
    };

// for compatibility with TW <2.0.9
if (!Array.prototype.containsAny)
   Array.prototype.containsAny = function(items)
   {
    for(var i=0; i<items.length; i++)
        if (this.contains(items[i]))
            return true;
    return false;
    };
//}}}

//{{{
version.extensions.SelectTheme = { major: 1, minor: 2, revision: 5, date: new Date(2006,12,20),
	source: "http://tw.lewcid.org/#SelectTheme"
};

config.SelectTheme = {
	things: {
		style: {
			tag:        ["StyleSheets","StyleSheet","styleSheet","styleSheets","stylesheet","stylesheets"],
			theDefault: "StyleSheet",
			suffix:     "StyleSheet",
			notify:     refreshStyles,
			cookie:     "txtStyleSheet",
			otherThing: "pagetemplate",
			label:      "Choose StyleSheet: ",
			tooltip:     "Choose a StyleSheet",
			caseNone: { text:"None", title:"NoStyleSheet"},
                        caseDefault: { text:"Default", title:"StyleSheet" }

		},
		pagetemplate: {
			tag:        ["PageTemplates","PageTemplate","pageTemplates","pageTemplate","pagetemplate","pagetemplates"],
			theDefault: "PageTemplate",
			suffix:     "PageTemplate",
			notify:     refreshPageTemplate,
			cookie:     "txtPageTemplate",
			otherThing: "style",
			label: "Choose PageTemplate: ",
			tooltip:    "Choose a PageTemplate",
			caseNone: { text:"None", title:"NoPageTemplate"},
                        caseDefault: { text:"Default", title:"PageTemplate" }
		}

	},

                         specialCases: ["caseNone","caseDefault"]

};

TiddlyWiki.prototype.removeNotification = function(title,fn) {
	for (var i=0;i<this.namedNotifications.length;i++)
		if((this.namedNotifications[i].name == title) && (this.namedNotifications[i].notify == fn))
			this.namedNotifications.splice(i,1); // counting on it only being there once
}


var things = config.SelectTheme.things;
var specialCases=config.SelectTheme.specialCases;

for (var zz in things) {
	// make sure we have a value
	if (!config.options[things[zz].cookie])
		config.options[things[zz].cookie] = things[zz].theDefault;

	// remove core notify
	store.removeNotification(things[zz].theDefault,things[zz].notify);

	// and add our one
	store.addNotification(config.options[things[zz].cookie],things[zz].notify);

}

//checks to see if a tiddler exists in store or as a shadow.
TiddlyWiki.prototype.isTiddler= function (title)
        {return store.tiddlerExists(title) || store.isShadowTiddler(title)}

//hijack core function & make sure template exists
window.applyPageTemplate_themeSelect=window.applyPageTemplate;
window.applyPageTemplate=function(title){
           if(!store.isTiddler(title))
                       {title = things.pagetemplate.theDefault;}
           applyPageTemplate_themeSelect(title);
 }

TiddlyWiki.prototype.makeActiveTheme = function(what,title,alsoCheckOtherThing) {

	var thing = things[what];
        if (!store.isTiddler(title))
		title = thing.theDefault;

	var oldTitle = config.options[thing.cookie];

	if (what == "style") {
		// remove old style element from DOM
		var oldStyleElement = document.getElementById(oldTitle);
		oldStyleElement.parentNode.removeChild(oldStyleElement);
	}

	store.removeNotification(oldTitle,thing.notify);
	store.addNotification(title,thing.notify);
	store.notify(title);

	config.options[thing.cookie] = title;
	saveOptionCookie(thing.cookie);
	if (alsoCheckOtherThing)
		this.makeActiveTheme(thing.otherThing,
				title.replace(new RegExp(thing.suffix+"$"),"") + things[thing.otherThing].suffix,
						false);
};

if (config.hoverMenu)
    {
    old_hovermenu_makeActiveTheme = TiddlyWiki.prototype.makeActiveTheme;
    TiddlyWiki.prototype.makeActiveTheme = function(what,title,alsoCheckOtherThing)
        {
         old_hovermenu_makeActiveTheme.apply(this,arguments);
         if (!alsoCheckOtherThing)
                    config.hoverMenu.handler();
        };
    }

config.shadowTiddlers.NoStyleSheet = "";
config.shadowTiddlers.NoPageTemplate = config.shadowTiddlers.PageTemplate;


function switchTheme(e){
         if (!e) var e = window.event;
         var theTarget = resolveTarget(e);
         var theLink = theTarget;
         var switchTo= theLink.getAttribute("switchTo");
         var mode = theLink.getAttribute("mode");
         if ((config.options[things[mode].cookie])!=switchTo)
               {store.makeActiveTheme(mode,switchTo,true);};
         return(false);
}


config.macros.themeSelect={};
config.macros.themeSelect.dropdownchar = (document.all?"â–¼":"â–¾");
config.macros.themeSelect.handler = function(place,macroName,params,wikifier,paramString,tiddler){
         var arrow = config.macros.themeSelect.dropdownchar;
         var mode = params[0];
         var label = (params[1]?params[1]:things[mode].label) + arrow;
         var cookie = (config.options[things[mode].cookie]);

         var onclick = function(e)
             { if (!e) var e = window.event;
             var popup = Popup.create(this);

             var tagged=[];

	     store.forEachTiddler(function(title,tiddler) {
                  if ((tiddler.tags).containsAny(things[mode].tag)){
					tagged.push(tiddler.title);}
	     });

             //integrate ThemePacks
	     if (config.themes) {
		     // see what themes have been loaded...
		     for (var i=0;i<config.themes.length;i++) {
			    // see if there is one
			    var lookForThis = config.themes[i] + things[mode].suffix;
			    if (store.isShadowTiddler(lookForThis)) {
				   tagged.pushUnique(lookForThis);
			    }
		    }
		     tagged = tagged.sort();
             }

             //this function used later to create buttons
             var createThemeButton = function(switchTo){
                        var theButton = createTiddlyButton(createTiddlyElement(popup,"li"),text,null,switchTheme,useClass);
                        theButton.setAttribute("switchTo",switchTo);
                        theButton.setAttribute("mode",mode);};

            //create Buttons for None(shadow styles) & Default (StyleSheet)
                     // Default button is not created if StyleSheet doesnt exist.
             for(var t=0; t<specialCases.length; t++){
             var special = specialCases[t];
             var text = things[mode][special].text;
             var useClass = "tiddlyLinkExisting";   //redundant, optimize!
             if ((things[mode][special].title==cookie)||(special=="caseNone"&&!store.isTiddler(cookie)))
                      {text+= " [x]";
                      useClass = "currentlySelected";}
             if (!((special=="caseDefault")&&(!store.getTiddler(things[mode][special].title))))
             createThemeButton(things[mode][special].title);     }

             //insert horizontal rule
             //createTiddlyElement(createTiddlyElement(popup,"li"),"hr");
             createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");

             //create buttons for all other stylesheet tiddlers
             for(var t=0; t<tagged.length; t++)
                     { var useClass = "tiddlyLinkExisting";
                       var text = (tagged[t]).replace((things[mode].suffix),"");
                     if (tagged[t]==(cookie) )
                           {text+=" [x]"; useClass="currentlySelected";}
                     if ((tagged[t]!= (things[mode].theDefault))&&tagged[t]!= (things[mode].none))
                        {createThemeButton(tagged[t]);}}
             Popup.show(popup,false);
             e.cancelBubble = true;
             if (e.stopPropagation)
                e.stopPropagation();
             return(false);
             };

        var createdropperButton = function(place){
           var sp = createTiddlyElement(place,"span",null,"ThemeChooserButton");
           var theDropDownBtn = createTiddlyButton(sp,label,things[mode].tooltip,onclick);
        };

        createdropperButton(place);
};


setStylesheet(".popup li a.currentlySelected {background:#ccc;color:black;font-weight:bold;}","currentlySelectedStyle"); // could do better probably...

config.macros.layoutChooser=config.macros.themeSelect;

//shadow tiddler to hold instructions for creating ThemePacks
config.shadowTiddlers.ThemePack='See http://simonbaird.com/mptw/#CreateThemePack'; 

config.macros.applyTheme = {handler: function (place,macroName,params,wikifier,paramString,tiddler) {
	var theme = params[0];
	var label = params[1]?params[1]:'Apply theme "' + theme + '"';
        var tooltip = 'Apply the "'+theme+'" theme to this TiddlyWiki';
	createTiddlyButton(place,label,tooltip,function() {
		store.makeActiveTheme("style",theme+things.style.suffix,true);
	});
}};


// this means you can put #theme:ThemeName in url. suggested by Clint
config.paramifiers.theme = {
	onstart: function(themeName) {
		store.makeActiveTheme("style",themeName+config.SelectTheme.things.style.suffix,true);
	}
};

//}}}

SelectThemePlugin made compatible with HoverMenuPlugin. Horizontal rules fixed for IE. (thanks Clint!)
<<showUpdates onlyTag:RecentUpdates maxEntries:8>>
{{{<<showUpdates onlyTag:RecentUpdates maxEntries:8>>}}}

----

<<showUpdates onlyTag:RecentUpdates write:'(index==0? countLine + "\n{{blog{\n":"")+(index<8?"!!![["+tiddler.title+"]]@@color:#999;font-size:70%;" +tiddler.modified.formatString(" - DD/MM/YY")+"@@\n" +"{{excerpt{\n"+tiddler.text.substr(0,100)+"...\n[[read more...|"+tiddler.title+"]]\n}}}\n":"")+(index==count-1?"}}}":"")' >>

{{{
<<showUpdates
onlyTag:RecentUpdates
write:
'(index==0? countLine + "\n{{blog{\n":"")+
(index<8?"!!![["+tiddler.title+"]]@@color:#999;font-size:70%;" +tiddler.modified.formatString(" - DD/MM/YY")+"@@\n" +"{{excerpt{\n"+tiddler.text.substr(0,100)+"...\n[[read more...|"+tiddler.title+"]]\n}}}\n":"")+
(index==count-1?"}}}":"")' 
>>
}}}

this one requires the following css in your StyleSheet:
//{{{
.blog h2, .blog h3, .blog h4{
  margin:0;
  padding:0;
  border-bottom:none;
}
.blog {margin-left:1.5em;}  

.blog .excerpt {
  margin:0;
  margin-top:0.3em;
  padding: 0;
  margin-left:1em;
  padding-left:1em;
  font-size:90%;
  border-left:1px solid #ddd;
}
//}}}
/***
|Name|ShowUpdatesPlugin|
|Created by|SaqImtiaz|
|Version|0.2 |
|Requires|~TW2.x|
!!!Description:
Allows you to list tiddlers that have changed since the users last visit. You can list only all changed tiddlers, or filter them to only show tiddlers that have or do not have a specific tag. By default a simple list of the titles of changed tiddlers is created. However, using an extremely versatile syntax you can provide a custom template for the generated text.

!!!Examples: 
[[ShowUpdatesDocs]]

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

!!!Syntax:
{{{<<showUpdates>>}}}
additional optional params:
{{{<showUpdates excludeTag:TagToExclude onlyTag:TagToList maxEntries:10 write:CustomWriteParameter >>}}}
excludeTag: ~TagToExclude
onlyTag: ~TagToList
maxEntries: max number of entries displayed when there are no updates. (default is 10, which can be changed in the config.macros.showUpdates.settings part of the code)
write: if a write parameter is not provided, an un-numbered list of the updates is generated. Alternatively, you can specify a custom 'template' for the text generated. The syntax for the write parameter is identical to that of the forEachTiddler macro. Additonal documentation on this syntax will be provided soon.
Some of the variables available in the write parameter are 'index', 'count' and 'lastVisit' where lastVisit is the date of the last visit in the format YYYYMMDDHHMM. Also areUpdates is a boolean that is true if there are new updates since the users last visit.

!!!To Do:
*refactor code to facilitate translations
*a streamlined version without the custom write parameter


!!!Code
***/
//{{{
window.lewcidLastVisit = '';
window.old_lewcid_whatsnew_restart = window.restart;
window.restart = function()
{
        if(config.options.txtLastVisit)
                 lewcidLastVisit= config.options.txtLastVisit;
        config.options.txtLastVisit = (new Date()).convertToYYYYMMDDHHMM();
        saveOptionCookie('txtLastVisit');
        window.old_lewcid_whatsnew_restart();
}

TiddlyWiki.prototype.lewcidGetTiddlers = function(field,excludeTag,includeTag,updatesOnly)
{
              var results = [];
              this.forEachTiddler(function(title,tiddler)
                      {
                      if(excludeTag == undefined || !tiddler.isTagged(excludeTag))
                                    if(includeTag == undefined ||  tiddler.isTagged(includeTag))
                                            if ( updatesOnly == false || tiddler.modified.convertToYYYYMMDDHHMM()>lewcidLastVisit)
                                                  results.push(tiddler);
                      });
              if(field)
                  results.sort(function (a,b) {if(a[field] == b[field]) return(0); else return (a[field] < b[field]) ? -1 : +1; });
              return results;
}

config.macros.showUpdates={};
config.macros.showUpdates.settings =
{
         maxEntries: 10  //max items to show, if there are no updates since last visit
}

config.macros.showUpdates.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
          var args = paramString.parseParams("list",null,true);
          var write = getParam(args, "write", undefined);
          var onlyTag = getParam(args, "onlyTag", undefined);
          var excludeTag = getParam(args, "excludeTag", undefined);
          var sortBy = "modified";
          var maxEntries = getParam(args,"maxEntries",this.settings.maxEntries);

          if (lewcidLastVisit) 
                {var tiddlers = store.lewcidGetTiddlers(sortBy,excludeTag,onlyTag,true);
                 var areUpdates = tiddlers.length>0? true:false;}

          if (!lewcidLastVisit)
               {var countLine = "!!Recent Updates:";
               var tiddlers = store.lewcidGetTiddlers(sortBy,excludeTag,onlyTag,false);
               var areUpdates = false;}
          else if (tiddlers.length == 0)
               {var countLine = "!!@@color:red;No new updates@@ since your last visit. @@color:#999;font-size:70%;" + (Date.convertFromYYYYMMDDHHMM(lewcidLastVisit)).formatString(" (DD/MM/YY)") + "@@\n!!Recent Updates:";
               var tiddlers = store.lewcidGetTiddlers(sortBy,excludeTag,onlyTag,false);}
          else
               {var countLine ="!!@@color:red;"+ tiddlers.length + "@@ new " + (tiddlers.length==1?"update":"updates") + " since your last visit: @@color:#999;font-size:70%;" + (Date.convertFromYYYYMMDDHHMM(lewcidLastVisit)).formatString(" (DD/MM/YY)") + "@@";}

          tiddlers = tiddlers.reverse();
          var lastVisit = lewcidLastVisit? lewcidLastVisit:undefined;
          var count = areUpdates == true? tiddlers.length : maxEntries;
          var sp = createTiddlyElement(place,"span","showUpdates");
          if (write==undefined)
                 {
                  wikify(countLine,sp);
                  var list = createTiddlyElement(sp,"ul");
                  for (var i = 0; i < count; i++)
                          {
                           var tiddler = tiddlers[i];
                           createTiddlyLink(createTiddlyElement(list,"li"), tiddler.title, true);
                          }
                 }
          else
                {
                 var list = '';
                 for (var index = 0; index < count; index++) {
                 var tiddler = tiddlers[index];
                 list += eval(write); }
                 wikify(list, sp);
                }
}
//}}}
[[Alexander Sayer's Family site |http://vextor.net]]
[[Vextor.Net|http://vextor.net]]
<<slideShow noClicks forceRefresh>> - A simple slide show that keeps the TW style 
<<slideShow style:'MySSStyleSheet' clock:'+'>> - A themed slide show with a clock showing the presentation elapsed time
<<slideShow repeat clock:'-20'>> - A looping slide show with a 20 minutes countdown clock
<<slideShow slidePause:1000>> - A timed slideshow that runs once
<<slideShow slidePause:1000 repeat>> - A timed looping slideshow
-s-
!The [[SlideShowPlugin]]
Press F11 to go fullscreen and adjust the font sizes with Ctrl++ Ctrl+- (or Ctrl+mousewheel).

This plugin was developed by Paulo Soares and Clint Checketts.
{{Comment{This block is not shown in the slide show.
@@Don't show me!!!@@}}}
-s-
!How slides are separated
In a tiddler, you start each slide with the markup {{{-s-}}}
-s-
Slides don't have to have titles like this poor one
-s-
!A slide with subsections and a long title
Check to TOC below to see how this slide title is abbreviated.
!!Section 1
This is a section
!!!Subsection 1.1
This is a subsection
!!!Subsection 1.2
This is another subsection
!!!!Subsubsection 1.2.1
This is a subsubsection
-s-
!Using the keyboard
The following keys are defined:
*Left arrow - previous overlay
*Down arrow - previous slide
*Right arrow - next overlay
*Up arrow - next slide
*Home - first slide
*End - last slide
*Escape - exit slide show
*Spacebar - pause/resume slide show in auto advance mode
-s-
!Slide show parameters
*The slide show can be themed by providing a ~StyleSheet ({{{<<slideShow style:'MyStyleSheet'>>}}})
*By default, there is a clock at bottom of the browser window that displays the current time. This clock can also show the presentation elapsed time with {{{<<slideShow clock:'+'>>}}} or a countdown clock with {{{<<slideShow clock:'-20'>>}}} (for 20 minutes). In these two cases, if you click on the clock display it will be restarted
*The slide show can be set to loop ({{{<<slideShow repeat>>}}})
*You can set it so each slide changes after X milliseconds ({{{<<slideShow slidePause:X>>}}}) (auto advance mode)
*Use auto start mode to begin the slideshow the moment the tiddler is opened ({{{<<slideShow autostart>>>}}})
*You can disable overlays with {{{<<slideShow noOverlays>>}}}
*These parameters can be mixed and matched in any order: {{{<<slideShow slidePause:1000 repeat>>}}} is the same as {{{<<slideShow repeat slidePause:1000>>}}}
-s-
!Overlays
To see how incremental display works use the left and right mouse buttons.
{{Overlay1{You can}}} {{Overlay2{present things}}} {{Overlay1{in an arbitrary order!!!}}}
{{Overlay3{Its a bit harder with lists but it works:}}}
<html>
<ol>
<li class="Overlay4">First item</li>
<li class="Overlay5">Second item</li>
<li class="Overlay4">Last item</li>
</ol>
</html>
{{Comment{You can hide comments on a slide that won't display in the slide show}}}
/***
|''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]].";
//}}}
!Description
This plugin turns a TiddlyWiki tiddler into a simple slide show type display. Most features that are usually found in presentation software are available. It should work in a way that does not interfere with TiddlyWiki. When you close the slide show you get back to your good old TW. 

This plugin has been tested in Firefox and Internet Explorer. Let me know if something seems broken.
!Usage
To use this plugin you //must// be using TiddlyWiki 2.0. Some optional features (as the incremental display) require version 2.0.8 or higher. To install the plugin copy the tiddlers SlideShowPlugin, SlideShowPageTemplate and SlideShowViewTemplate to your TW, label the first one with the //systemConfig// tag, save the TW and refresh the browser.

To make a slide show simply drop {{{<<slideShow>>}}} at the beginning of a tiddler and use {{{-s-}}} to start each slide. 

If you move your mouse over the bottom of the browser window you will see a few navigation buttons, a clock and a table of contents that shows up when you click the slide number.

Any block of text marked as {{{{{Comment{For my eyes only!}}}}}} will not be displayed in the slide show.

See these and other features in this [[SlideShowExample]].
!Incremental display
A succession of overlays (or layers) can be defined in each slide by marking blocks of text with {{{{{Overlay1{...some text...}}}}}}, {{{{{Overlay2{...some text...}}}}}}, {{{{{Overlay3{...some text...}}}}}}, ...

To costumize the way overlays are shown you can redefine the following CSS classes
*contentWrapper.slideShowMode .previousOverlay 
*contentWrapper.slideShowMode .currentOverlay 
*contentWrapper.slideShowMode .nextOverlay 
in a ~StyleSheet. The default style simply hides the next overlays and shows the current and the previous ones as normal text.
!Slide show parameters
*The slide show can be themed by providing a ~StyleSheet ({{{<<slideShow style:'MyStyleSheet'>>}}})
*By default, there is a clock at bottom of the browser window that displays the current time. This clock can also show the presentation elapsed time with {{{<<slideShow clock:'+'>>}}} or a countdown clock with {{{<<slideShow clock:'-20'>>}}} (for 20 minutes). In these two cases, if you click on the clock display it will be restarted
*The slide show can be set to loop ({{{<<slideShow repeat>>}}})
*You can set it so each slide changes after X milliseconds ({{{<<slideShow slidePause:X>>}}}) (auto advance mode)
*To not use the mouse to navigate through the presentation use  {{{<<slideShow noClicks>>>}}}. This is useful when there are clickable elements in the presentation
*{{{<<slideShow forceRefresh>>>}}} forces a refresh of the presentation tiddler (useful when a presentation is built from separate tiddlers using the {{{<<tiddler>>}}} macro)
*You can disable overlays with {{{<<slideShow noOverlays>>}}}
*These parameters can be mixed and matched in any order: {{{<<slideShow slidePause:1000 repeat>>}}} is the same as {{{<<slideShow repeat slidePause:1000>>}}}
!Slide show navigation
You can navigate through a slide show using the keyboard or the mouse. To quickly move to titled sections you can use the table of contents. 
!!Mouse navigation
Left (right) clicking on a slide jumps to the next (previous) overlay. To move to the beginning of the next or previous slide you must use the navigation bar at the bottom of the browser's window. If there are no overlays defined both operations are equivalent.
!!Keyboard navigation
The following keys are defined:
*Left arrow - previous overlay
*Down arrow - previous slide
*Right arrow - next overlay
*Up arrow - next slide
*Home - first slide
*End - last slide
*Escape - exit slide show
*Spacebar - pause/resume slide show in auto advance mode
!Revision history
*1.5.3
**fix for ~TW2.2
**forceRefresh and noClicks
**removed autoStart feature
**templates are now in shadow tiddlers
*1.5.2 13/02/2007
**fixed a conflict with TW pageFooter
*1.5.1 10/11/2006
**added SlideShowPageTemplate and SlideShowViewTemplate. This way, the plugin no longer requires a standard TW layout. Thanks to Andrew Lister for the idea.
*1.5.0 18/09/2006
**fixed restoring stylesheet on exit
**changed (again!) the way how slides are separated (slide shows prepared for previous versions must be fixed)
*1.4.0 20/04/2006
**changed the way how slides are separated (slide shows prepared for previous versions must be fixed)
**now works with content included with the {{{<<tiddler>>}}} macro
**added incremental display (overlays)
**improved documentation
**assorted small fixes
*1.3.1 10/03/2006
**removed empty slide titles
**fixed wrong numberSlides when slides have div's
**fixed wrong time in Windows
*1.3.0 26/02/2006
**restore open tiddlers on exit
**fixed problem with markup in headers (should work with NestedSlidersPlugin)
**added slide comments (blocks of text in the tiddler that don't show up in the presentation)
*1.2.1 28/01/2006
**pause timed slideshow with spacebar
**added clock with 3 different modes
**fixed bugs with style and abbreviation options
**general cleanup
*1.2.0 07/01/2006
**added a resume feature
**added themes support
*1.1.5 14/12/2005
**added mouse support
**cleaned up navbar generation
*1.1.0 12/12/2005
**added support for IE
**added key listeners
*1.0.0 11/12/2005
**initial release
!Todo
*Time code is still very hackerish and unreliable.
/***

''Inspired by [[TiddlyPom|http://www.warwick.ac.uk/~tuspam/tiddlypom.html]]''

|Name|SplashScreenPlugin|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#SplashScreenPlugin|
|Version|0.21 |
|Requires|~TW2.08+|
!Description:
Provides a simple splash screen that is visible while the TW is loading.

!Installation
Copy the source text of this tiddler to your TW in a new tiddler, tag it with systemConfig and save and reload. The SplashScreen will now be installed and will be visible the next time you reload your TW.

!Customizing
Once the SplashScreen has been installed and you have reloaded your TW, the splash screen html will be present in the MarkupPreHead tiddler. You can edit it and customize to your needs.

!History
* 20-07-06 : version 0.21, modified to hide contentWrapper while SplashScreen is displayed.
* 26-06-06 : version 0.2, first release

!Code
***/
//{{{
var old_lewcid_splash_restart=restart;

restart = function()
{   if (document.getElementById("SplashScreen"))
        document.getElementById("SplashScreen").style.display = "none";
      if (document.getElementById("contentWrapper"))
        document.getElementById("contentWrapper").style.display = "block";
    
    old_lewcid_splash_restart();
   
    if (splashScreenInstall)
       {if(config.options.chkAutoSave)
			{saveChanges();}
        displayMessage("TW SplashScreen has been installed, please save and refresh your TW.");
        }
}


var oldText = store.getTiddlerText("MarkupPreHead");
if (oldText.indexOf("SplashScreen")==-1)
   {var siteTitle = store.getTiddlerText("SiteTitle");
   var splasher='\n\n<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>'+siteTitle +'</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>';
   if (! store.tiddlerExists("MarkupPreHead"))
       {var myTiddler = store.createTiddler("MarkupPreHead");}
   else
      {var myTiddler = store.getTiddler("MarkupPreHead");}
      myTiddler.set(myTiddler.title,oldText+splasher,config.options.txtUserName,null,null);
      store.setDirty(true);
      var splashScreenInstall = true;
}
//}}}
Updated to hide the contentWrapper while the SplashScreen is displayed. 
Coming Soon: easier editing of the SplashScreen.
Get it here: SplashScreenPlugin.
build an unman-ed launch system to reduce or remove the need for rockets

Option1
[[mag lev|http://en.wikipedia.org/wiki/Maglev_%28transport%29]] launch assist system up the side of an unused mountain

~10k feet mountain

mag lev trolly (350 mph)
-which detaches and parachutes down after each use
  -reusable

so at 350 mph at 10k feet should reduce the need for alot of fuel for rockets
could be used later for lifing humans and other soft cargo

Option2
[[railgun type launch system|http://en.wikipedia.org/wiki/Space_gun]]

cheaper than option 1

cannot carry soft cargo
build station with tele-robotics

IE remote controlled robots
put a Bigelow BA-2100 ( or larger )  module in to Earth–Moon L5

place a large docking port on the top
spin the module and lave the docking port non spinning.


Idea 2
Build a module twice the size of the BA-2100
 this would allow for plant growth on station
layers

like the earth
1 EM field around the station
2 physical armor
3 heavy water/gel layer
4 more armor like kevlar
Primary: Solar

Secondary: batteries

Triary: Nuclear reactor
body {background-image: url();
background-repeat: repeat; background-position: left; backgound-color: transparent; font-family: Helvetica;} 
Teecy Sayer (Kaney)
AKA Shanda Sayer is an attractive 20 something wife ( of Vextor ) and mother of 2 kids ( [[Migetwars]] and [[Naerf]] )
Is my wife of 14 years is a highly intelligent, funny, attractive woman 

words i use to describe Teecy;
loving, caring, shy, Leo, beautiful, intelligent, handy, straight sexy.


{{borderlessL{
|bgcolor:#44a;[img[Teecy Sayer|pix/teecy4-t.jpg][pix/teecy4.jpg]]<br>&nbsp;&nbsp;Teecy Sayer caught her smiling|bgcolor:#44a;width:5em;|

check out Teecys jokes
<<tabs txtFavourite
Jokes "safe jokes" Jokes1
"NSFW jokes" "NOT SAFE FOR WORK jokes" Jokes2
>>
Teecy Sayer (Kaney)

Is my wife of 14 years is a highly interllegent, funny, attractive woman going on 22(sic)

words i use to describe Teecy;
loving, caring, shy, Leo, beautiful, intelligent, handy, straight sexy.

{{borderlessL{
|bgcolor:#44a;[img[Teecy Sayer |pix/teecy1-t.jpg][pix/teecy1.jpg]]<br>&nbsp;&nbsp;Teecy, showing off her new threads, lookin hotter than the Sun.|bgcolor:#44a;width:5em;|
{{borderlessL{
|bgcolor:#44a;[img[Teecy Sayer looking hella kool |pix/teecy2-t.jpg][pix/teecy2.jpg]]<br>&nbsp;&nbsp;Teecy Sayer|bgcolor:#44a;width:35em;Teecy, enjoying herself at sis's graduation from college.|
Project completed
system name is \\TIVO

This project is to built a TV recording computer.
[[Finish HTPC "living room"|LivingRoomHTPC]]
[[Finish HTPC "Bedroom"|BedRoomHTPC]]
[[Build Arcade|Arcade]]
Setup RIS server
Type the text for 'New Tiddler'
//{{{
//replaces toolbar buttons with icons.
//for each command that you want to use an icon, add a line like the following in a systemConfig tiddler, specifying the icon image location:
//config.commands.editTiddler.imgLoc= "jump.bmp";
//No need to edit the ViewTemplate! If an image location is specified, then the icon will be used for that command!

config.macros.toolbar.createCommand = function(place,commandName,tiddler,theClass)
{
	if(typeof commandName != "string")
		{
		var c = null;
		for(var t in config.commands)
			if(config.commands[t] == commandName)
				c = t;
		commandName = c;
		}
	if((tiddler instanceof Tiddler) && (typeof commandName == "string"))
		{
		var title = tiddler.title;
		var command = config.commands[commandName];
		var ro = tiddler.isReadOnly();
		var shadow = store.isShadowTiddler(title) && !store.tiddlerExists(title);
		var text = ro && command.readOnlyText ? command.readOnlyText : command.text;
		var tooltip = ro && command.readOnlyTooltip ? command.readOnlyTooltip : command.tooltip;
		if((!ro || (ro && !command.hideReadOnly)) && !(shadow && command.hideShadow))
		    {
			    var btn = createTiddlyButton(null,text,tooltip,this.onClickCommand);
			    btn.setAttribute("commandName", commandName);
			    btn.setAttribute("tiddler", title);
			    if(theClass)
				            addClass(btn,theClass);
                             place.appendChild(btn);
                            if(command.imgLoc)
                                   btn.innerHTML = "<img src='"+command.imgLoc+"'>";

		     }
       }
}

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

[[Vacation 2007|Vacation2007]]
[[Cayon Park 2007|cayon2007]]
[[Kids Spree / Co Renaissance faire 2007|kid-ren2007]]
[[Estas Park 2006|estas2006]]
[[Vacation 2001|Vacation2001]]
[[Ca Renaissance faire 2001|ren2001]]

sayer trip to colorado to see alex's mom and dad for xmas
from cali to all over colorado
2001.12.25

<<slideShow>>
-s-
<<photoGallery url:pix/vacation2001/vacation-2001-*.jpg first:1 last:558 height:400 time:2000>>
sayer trip to san jose
south of san fransisco
2007.10.31

<<slideShow>>
-s-
<<photoGallery url:pix/vacation2007/vac07-*.JPG first:1 last:57 height:400 time:4000>>
[[OOTS|http://www.giantitp.com/]]
[[CL|http://craigslist.org/]]
[[DI.net|http://dodgeintrepid.net]]
[[VWV.net|http://www.vwvortex.com/index.html]]
[[science news|http://www.sciencedaily.com/]]


[[how tos online|http://www.wikihow.com/Main-Page]]
[[cheap moviesand not cheap dinner|http://www.cinemagrill.com/contenido/index.php]]
[[computer TIVO like software|http://snapstream.com]]
[[media front-end|http://www.meedios.com/]]

[[GTA multiplayer|http://www.multitheftauto.com/]]
[[I've joined the CLAN|http://www.clanspectre.com/]]
[[colorado LAN gamers|http://coloradogamers.com]]
[[Colorado Ren Faire|http://www.coloradorenaissance.com/]]

[[google maps|http://maps.google.com/maps?tab=wl&hl=en]]
[[M$ maps|http://maps.live.com/]]
[[Random map site|http://www.multimap.com/map/home.cgi?client=public&lang=&advanced=&db=US]]
Batman
Lasheita
my dad
Spock
This the the randomish journal in, around, and about Alexander Sayer AKA Vextor
<<calendar>>
I am Vextor AKA Alexander Sayer a 33 year old computer geek.
who loves his kids, wife, computers, DITT, and humans

{{borderlessL{
|bgcolor:#44a;[img[Alexander Sayer|pix/alex1-t.jpg][pix/alex1.jpg]]<br>&nbsp;&nbsp;Alex Sayer's got his eye on you|bgcolor:#44a;width:5em;|



check out my [[Journal|Vexsjournal]]


here are some of my favorite [[links|Vexlinks]]
get your own site like this http://www.tiddlywiki.com/empty.html

here is another long term goal
http://www.w3schools.com/downloadwww.htm
<!--{{{-->
<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>
<!--}}}-->
<html><br><a href="http://www.maploco.com/view.php?id=1311498"><img border=0 src="http://www.maploco.com/vmap/1311498.png" alt="Visitor Map"></a><br><a href="http://www.maploco.com/">Create your own visitor map!</a><br></html>
A little boy asked his father,
"Daddy, how much does it cost to get married?"
His father replied, "I don't know son, I'm still paying." 

----

A young son asked, 
"Is it true Dad, that in some parts of Africa 
a man doesn't know his  wife until he marries her?" 
His dad replied, "That happens in every country,  son." 

----

First  guy says, "My wife's an angel!" 
Second guy remarks, "You're lucky, mine's still alive."   

----

Sayer family friends

<<slideShow>>
-s-
<<photoGallery url:pix/friends/friends-*.JPG first:1 last:52 height:600 time:4000>>
An employee calls there boss one morning and says I can come to work because I am not feeling well.  
"What's  the matter?" the boss asks. 
"I have a case of anal glaucoma," the employee says in a weak voice.  
"What the hell is anal [[glaucoma|http://en.wikipedia.org/wiki/Glaucoma]]?" 
"I can't see my ass coming into work today."  
John and Krissy Bulan's wedding
November 3rd 2007
Redwood City Ca

<<slideShow>>
-s-
<<photoGallery url:pix/vacation2007/wedding/bulan_wed-*.JPG first:1 last:28 height:400 time:4000>>
sayer trip to cayon park 
south of franktown co
2007.5.27

<<slideShow>>
-s-
<<photoGallery url:pix/cayonpark/cayon07-*.jpg first:1 last:39 height:400 time:2000>>
sayer trip to estas park 
south of estas co
2007.11.11

<<slideShow>>
-s-
<<photoGallery url:pix/estes-park/estes06-*.jpg first:1 last:27 height:400 time:2000>>
Teecy and the boys ~2000
Teecy and the boys ~2007.06
Teecy and migetwars make the cover of thier favorite magazines
The women in my life
Mr.Scott Mom and sis
Mr.Scott Mom and Me
Mom and sis
Willie McClore's grandkids come to say goodbye
Willie McClore's kids and close family come to say goodbye
Dad, sis, Mr.Scott, and roy
great action photo of the boys racing thru a obstical course at kids spree
uncle phil's got faire wings
more random family pix
uncle donnie stylin
Sayer family trip to kids spree and the Colorado ren-faire 
kids spree in aurora co / renfaire south of castlerock co
2007.7.14
with La Sheita, Ky, and uncle Phil


<<slideShow>>
-s-
<<photoGallery url:pix/kid-ren07/kid-ren07-*.JPG first:1 last:77 height:400 time:4000>>
!!!<<gradient horiz #fc3 #ffffff>>TextMarkup^^<<tiddler CloseThisOpen with: FormattingText  '« back'>>|<<toolbar editTiddler>>» ^^>>
{{tablecenter{
|bgcolor:#abf; <<gradient horiz #abf #fff #abf>>font-family:Verdana, Arial; @@color:#000; To Produce@@>> |bgcolor:#abf; <<gradient horiz #abf #fff #abf>>font-family: Verdana, Arial; @@color:#000;Markup@@>> |
|bgcolor:#ccc; ''Bold'' |bgcolor:#ccc; {{{''Bold''  (double single quotes)}}} |
|bgcolor:#eaeaea; ==Strikethrough== |bgcolor:#eaeaea; {{{==Depreciated==}}} |
|bgcolor:#ccc; --Strikethrough-- |bgcolor:#ccc; {{{--Strikethrough-- (double hyphen) }}} |
|bgcolor:#eaeaea; __Underline__ |bgcolor:#eaeaea; {{{__Underline__ (double shift-hyphen)}}}  |
|bgcolor:#ccc; //Italic// |bgcolor:#ccc; {{{//Italic// (double forward stroke)}}} |
|bgcolor:#eaeaea; Superscript: 12^^3^^=1728 |bgcolor:#eaeaea; {{{12^^3^^=1728 (double caret)}}} |
|bgcolor:#ccc; Subscript: <html><span title="Formula for Nitroglycerin" style="cursor:pointer>C~~3~~H~~5~~N~~3~~O~~9~~</span></html> 
|bgcolor:#ccc; {{{C~~3~~H~~5~~N~~3~~O~~9~~ (double tilde)}}} |
}}}



!Heading 1
Something Important
!!Heading 2
More details
!!!Heading 3
Even more details
!!!!Heading 4
Oh
!!!!!Heading 5
Pedantic





!!!<<gradient horiz #fc3 #ffffff>>&nbsp;[[HorizontalRule|hr]]^^<<tiddler CloseThisOpen with: FormattingTiddlers  '« back'>>|<<toolbar editTiddler>>» ^^>>
You can divide a tiddler with a horizontal rule 
----
by typing four dashes
{{{ ---- }}}
on a separate line.







+++[This slider was Closed on loading]
You will see it used a lot in TWHelp.  
===






random pix from my first digital camera back in 96 ish

<<slideShow>>
-s-
<<photoGallery url:pix/oldskl/oldskl-*.jpg first:1 last:60 height:400 time:4000>>