Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
<<importTiddlers>>
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

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

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

----
Also see [[AdvancedOptions]]
<!--{{{-->
<div class='header' role='banner' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' role='navigation' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' role='navigation' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' role='complementary' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea' role='main'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

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

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

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

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

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

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

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

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

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

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='toolbar' role='navigation' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
Делаем блок цитаты:
{{{
Что дает:
<<<
Текст цитаты
<<<
}}}
Что дает:
<<<
Текст цитаты
<<<
----
Можно использовать и многоуровневые цитаты: {{{
>level 1
>level 1
>>level 2
>>level 2
>>>level 3
>>>level 3
>>level 2
>level 1
}}}
что дает: >level 1
>level 1
>>level 2
>>level 2
>>>level 3
>>>level 3
>>level 2
>level 1
/***
|''Name:''|CloseUnsavedOnCancel|
|''Version:''|2.0.8 (16-Apr-2006)|
|''Author:''|SimonBaird|
|''Adapted By:''|[[Jack]]|
|''Type:''|Plugin|
!Description
When you click new tiddler then click cancel I think the new tiddler should close automatically. This plugin implements that behaviour.

!Revision History
* 1.0.1 (11-Oct-2005) by SimonBaird
* 2.0.8 Made 2.0.x compatible by Jack on 16-Apr-2006

!Code
***/
//{{{

config.commands.cancelTiddler.handler = function(event,src,title) {
 if(story.hasChanges(title) && !readOnly)
 if(!confirm(this.warning.format([title])))
 return false;
 story.setDirty(title,false);
 if (!store.tiddlerExists(title) || store.fetchTiddler(title).modifier==config.views.wikified.defaultModifier) {
 story.closeTiddler(title,false);
 store.removeTiddler(title)
 } else {
 story.displayTiddler(null,title);
 }
 return false;
}

//}}}
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
/% HeaderLight: #BBCCDD
HeaderMid: #BBCCDD %/
HeaderLight: #18f
HeaderMid: #04b
PageTemplate
|>|>|SiteTitle - SiteSubtitle|
|MainMenu|DefaultTiddlers<<br>><<br>><<br>><<br>>ViewTemplate<<br>><<br>>EditTemplate|SideBarOptions|
|~|~|OptionsPanel|
|~|~|AdvancedOptions|
|~|~|<<tiddler Configuration.SideBarTabs>>|
''StyleSheet:'' StyleSheetColors - StyleSheetLayout - StyleSheetPrint
SiteUrl
SideBarTabs
|[[Timeline|TabTimeline]]|[[Все|TabAll]]|[[Tags|TabTags]]|>|>|[[More|TabMore]] |
|>|>||[[Missing|TabMoreMissing]]|[[Orphans|TabMoreOrphans]]|[[Shadowed|TabMoreShadowed]]|
You can customise the appearance and behaviour of TiddlyWiki to almost any degree you want:
* Use the ColorPalette to change the basic colour scheme
* Create a CustomStyleSheet for finer grained control over the appearance
* Customise the PageTemplate, ViewTemplate or EditTemplate to change the composition of the page and the layout of individual tiddlers
* Use off-the-shelf themes from [[TiddlyThemes|http://tiddlythemes.com/]]
* Visit the [[Configuration]] summary to see all the special configuration tiddlers
* Install [[Plugins]] to extend the core functionality (and you can also easily [[write or adapt your own|http://gimcrackd.com/etc/src/codex/]])
* Use TiddlyBookmarklets for low level hacking of TiddlyWiki documents
There are also a bunch of TiddlyWikiTools that you can use to enhance TiddlyWiki.
[[Общий обзор]]
/***
|''Name:''|DeliciousTaggingPlugin|
|''Version:''|0.1|
|''Source''|http://jackparke.googlepages.com/jtw.html#DeliciousTaggingPlugin ([[del.icio.us|http://del.icio.us/post?url=http://jackparke.googlepages.com/jtw.html%DeliciousTaggingPlugin]])|
|''Author:''|[[Jack]]|
!Description
Allows easy 'del.icio.us'-like tagging in the EditTemplate by showing all tags as a list of link-buttons.
!Usage
Replace your the editorFooter div in your [[EditTemplate]] with the following:
{{{
<div class='editorFooter' macro='deliciousTagging'></div>
}}}
Старый код: 
{{{
<div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
}}}
!Code
***/
//{{{
version.extensions.deliciousTagging = {major: 0, minor: 1, revision: 0, date: new Date("June 11, 2007")};

config.macros.deliciousTagging= {};

config.macros.deliciousTagging.onTagClick = function(e)
{
 if(!e) var e = window.event;
 var tag = this.getAttribute("tag");
 var title = this.getAttribute("tiddler");
 if(!readOnly)
  story.setTiddlerTag(title,tag,0);
 return false;
};

config.macros.deliciousTagging.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
 if(tiddler instanceof Tiddler) {
  var title = tiddler.title;
  if(!e) var e = window.event;
  var tags = store.getTags();
  var lingo = config.views.editor.tagChooser;
  for(var t=0; t<tags.length; t++) {
   var theTag = createTiddlyButton(place,tags[t][0],lingo.tagTooltip.format([tags[t][0]]),config.macros.deliciousTagging.onTagClick);
   theTag.setAttribute("tag",tags[t][0]);
   theTag.setAttribute("tiddler",tiddler.title);
   place.appendChild(document.createTextNode(" "));
  }
 }
};
//}}}
Инореальные существа.
Существа, «выпяченные» из нашего мира каким либо образом. Делятся на 3 категории:
I категория: уязвимы обычным оружием, уязвимы для магии кроме четырех техник: техники вымещения (Артанис: вымещение заклинания куда-либо, например вымещения камня на поверхность воды со дна), техники контроля, техники перемещения и техники unsummon’а.
II категория: существа, неуязвимые к оружию, за исключением инореалного высших категорий. Уязвимы магией (кроме тех же 4-х техник).
III категория: неуязвимы физическим оружием, кроме ethereal weapons высших категорий. Неуязвимы для стандартной логической магии.
<!--{{{-->
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler wikibar'></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' macro='deliciousTagging'></div>
<!--}}}-->
{{{
[img[title|filename]]
[img[filename]]
[img[title|filename][link]]
[img[filename][link]]
}}}
Images can be included by their filename or full URL. It's good practice to include a title to be shown as a tooltip, and when the image isn't available. An image can also link to another tiddler or or a URL
[img[Romanesque broccoli|fractalveg.jpg][http://www.flickr.com/photos/jermy/10134618/]]
{{{
[img[Fractal vegetable|fractalveg.jpg]]
[img[This is shown as a tooltip|http://example.com/image.jpg]]
[img[http://example.com/image.jpg]]
[img[http://example.com/image.jpg][ExampleDotCom]]
}}}
The tooltip is optional.
[<img[Forest|forest.jpg][http://www.flickr.com/photos/jermy/8749660/]][>img[Field|field.jpg][http://www.flickr.com/photos/jermy/8749285/]]You can also float images to the left or right: the forest is left aligned with {{{[<img[}}}, and the field is right aligned with {{{[>img[}}}.
@@clear(left):clear(right):display(block):You can use CSS to clear the floats@@
{{{
[<img[A woody bit of Hampstead Heath|forest.jpg]]
[>img[A field near Milton Keynes|field.jpg]]
}}}
{{{ [img[-|chars/-][chars/-]] }}} - вставка картинки.
!!! Основные элементы форматирования
<<slider sldExtendedFormatting ExtendedFormatting "Форматирование текста" "tooltip'">>
<<slider sldBlockQuotes BlockQuotes "Цитаты с отступом" "BlockQuotes'">>
<<slider sldHtmlEntities HtmlEntities "Спецсимволы HTML" "tooltip'">>
!!! Ссылки и изображения
<<slider sldEmbeddedImages EmbeddedImages "Вставка изображений" "tooltip'">>
!!! Прочее
<<slider sldTiddlerComments TiddlerComments "Скрытые комментарии" "tooltip'">>
{{{
@@color(WHITE):
текст
@@

@@color(WHITE): текст @@

}}}
[[PageTemplate]]
#displayArea {background-color: #ffccff; }
#mainMenu {border: 1px solid #ffff88; }
#commandPanel {background-color: #008800; }
Like most wikis, TiddlyWiki supports a range of simplified character formatting:
| !To get | !Type this |h
| ''Bold'' | {{{''Bold'', ++Bold++ }}} |
| --Strikethrough-- | {{{--Strikethrough--}}} |
| __Underline__ | {{{__Underline__}}} (that's two underline characters) |
| //Italic// | {{{//Italic//}}} |
| Superscript: 2^^3^^=8 | {{{2^^3^^=8}}} |
| Subscript: a~~ij~~ = -a~~ji~~ | {{{a~~ij~~ = -a~~ji~~}}} |
| @@highlight@@ | {{{@@highlight@@}}} |
<<<
The highlight can also accept CSS syntax to directly style the text:
@@color:green;green coloured@@
@@background-color:#ff0000;color:#ffffff;red coloured@@
@@text-shadow:black 3px 3px 8px;font-size:18pt;display:block;margin:1em 1em 1em 1em;border:1px solid black;Access any CSS style@@
<<<
//For backwards compatibility, the following highlight syntax is also accepted://
{{{
@@bgcolor(#ff0000):color(#ffffff):red coloured@@
}}}
@@bgcolor(#ff0000):color(#ffffff):red coloured@@
Entities in HTML documents allow characters to be entered that can't easily be typed on an ordinary keyboard. They take the form of an ampersand (&), an identifying string, and a terminating semi-colon (;). There's a complete reference [[here|http://www.htmlhelp.com/reference/html40/entities/]]; some of the more common and useful ones are shown below. Also see [[Paul's Notepad|http://thepettersons.org/PaulsNotepad.html#GreekHtmlEntities%20HtmlEntitiesList%20LatinHtmlEntities%20MathHtmlEntities]] for a more complete list.
|>|>|>|>|>|>| !HTML Entities |
| &amp;nbsp; | &nbsp; | no-break space | &nbsp;&nbsp; | &amp;apos; | &apos; | single quote, apostrophe |
| &amp;ndash; | &ndash; | en dash |~| &amp;quot; | " | quotation mark |
| &amp;mdash; | &mdash; | em dash |~| &amp;prime; | &prime; | prime; minutes; feet |
| &amp;hellip; | &hellip; | horizontal ellipsis |~| &amp;Prime; | &Prime; | double prime; seconds; inches |
| &amp;copy; | &copy; | Copyright symbol |~| &amp;lsquo; | &lsquo; | left single quote |
| &amp;reg; | &reg; | Registered symbol |~| &amp;rsquo; | &rsquo; | right single quote |
| &amp;trade; | &trade; | Trademark symbol |~| &amp;ldquo; | &ldquo; | left double quote |
| &amp;dagger; | &dagger; | dagger |~| &amp;rdquo; | &rdquo; | right double quote |
| &amp;Dagger; | &Dagger; | double dagger |~| &amp;laquo; | &laquo; | left angle quote |
| &amp;para; | &para; | paragraph sign |~| &amp;raquo; | &raquo; | right angle quote |
| &amp;sect; | &sect; | section sign |~| &amp;times; | &times; | multiplication symbol |
| &amp;uarr; | &uarr; | up arrow |~| &amp;darr; | &darr; | down arrow |
| &amp;larr; | &larr; | left arrow |~| &amp;rarr; | &rarr; | right arrow |
| &amp;lArr; | &lArr; | double left arrow |~| &amp;rArr; | &rArr; | double right arrow |
| &amp;harr; | &harr; | left right arrow |~| &amp;hArr; | &hArr; | double left right arrow |
The table below shows how accented characters can be built up by subsituting a base character into the various accent entities in place of the underscore ('_'):
|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>| !Accented Characters |
| grave accent | &amp;_grave; | &Agrave; | &agrave; | &Egrave; | &egrave; | &Igrave; | &igrave; | &Ograve; | &ograve; | &Ugrave; | &ugrave; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; |
| acute accent | &amp;_acute; | &Aacute; | &aacute; | &Eacute; | &eacute; | &Iacute; | &iacute; | &Oacute; | &oacute; | &Uacute; | &uacute; | &nbsp; | &nbsp; | &Yacute; | &yacute; | &nbsp; | &nbsp; |
| circumflex accent | &amp;_circ; | &Acirc; | &acirc; | &Ecirc; | &ecirc; | &Icirc; | &icirc; | &Ocirc; | &ocirc; | &Ucirc; | &ucirc; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; |
| umlaut mark | &amp;_uml; | &Auml; | &auml; | &Euml; | &euml; | &Iuml; | &iuml; | &Ouml; | &ouml; | &Uuml; | &uuml; | &nbsp; | &nbsp; | &Yuml; | &yuml; | &nbsp; | &nbsp; |
| tilde | &amp;_tilde; | &Atilde; | &atilde; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &Otilde; | &otilde; | &nbsp; | &nbsp; | &Ntilde; | &ntilde; | &nbsp; | &nbsp; | &nbsp; | &nbsp; |
| ring | &amp;_ring; | &Aring; | &aring; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; |
| slash | &amp;_slash; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &Oslash; | &oslash; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; |
| cedilla | &amp;_cedil; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &nbsp; | &Ccedil; | &ccedil; |
InterfaceOptions are displayed when you click the 'options' button on the right. They are saved in a cookie on your browser, making them sticky between visits:
<<<
<<tiddler OptionsPanel>>
<<<
* The user name for edits should be set //before// starting to edit things (ouch. another bug)
* SaveBackups gives the option of whether to generate backup files * AutoSave gives the option of automatically saving every time a change is made
* RegExpSearch allows more complex search expressions
* CaseSensitiveSearch does as its name implies
[[Macros]] let you write tiddlers containing more exotic objects than just text. Built-in macros include:
* NewJournalMacro and NewTiddlerMacro
* GradientMacro
* [[Sparklines]]
* TabMacro
* TaggingMacro
* TodayMacro
* ToolbarMacro
Tag popup:
{{{
<<tag features>>
}}}
will result in <<tag features>>
Slider:
{{{
<<slider chkTestSlider OptionsPanel options "Change TiddlyWiki advanced options">>
}}}
Results in this button <<slider chkTestSlider OptionsPanel options "Change TiddlyWiki advanced options">>
The parameters are:
* cookie name to be used to save the state of the slider
* name of the tiddler to include in the slider
* title text of the slider
* tooltip text of the slider
@@text-align(center):color(red):++Общее++@@
[[Общий обзор]]
[[География]]
[[История мира]]
[[PC]]
----
@@text-align(center):color(red):++Общества++@@
[[Государства]]
[[Религии]]
[[Карты]]
----
@@text-align(left):color(red):++Досье++@@
[[Досье: Каладон]]
[[Досье: Твердыня]]
[[Досье: Другие]]
[[Досье: Враги]]
[[Досье: в эпизодах]]
----
@@text-align(center):color(red):++Важное++@@
[[Склерозник]]
@@[[Разработки]]@@
[[Мелочи на заметку]]
----
[[Engine help]]
[[Хохмы]]
~~[[настроить меню|MainMenu]]~~
Имя, которым будут подписаны все записи. Рекомендуется использовать [[ВикиСлова]]
<<option txtUserName>>
<<option chkSaveBackups>> SaveBackups
<<option chkAutoSave>> AutoSave
<<option chkRegExpSearch>> RegExpSearch
<<option chkCaseSensitiveSearch>> CaseSensitiveSearch
<<option chkAnimate>> EnableAnimations
----
Открыть AdvancedOptions
----
Warning: [[Special_for_DM]]
* [[Волшебник Артанис]]
* [[Сириус]]
* [[Мшйрлк]] - Мыш, Шетиус, ученик шамана бога мертвых
* [[Тангк'х Шиа'х'аранк]] - Литар
<!--{{{-->
<div class='header' style='background: #A9CDEF url(kaladon/kaladon_head_1400.jpg) top left no-repeat'>
<!-- <div class='header' macro='gradient horiz #494367 #93B6DE'> -->
  <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='mainMenu' refresh='content' tiddler='MainMenu' style='position: fixed'></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='tiddlersBar' refresh='content' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>
  <div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
[img[conf/Drizzt_middle.jpg][conf/Drizzt_by_egosun.jpg]]

Rain "Arris" Skylark

It's me ^_^
rainskylark@gmail.com
http://skylark.moy.su
/***
|''Name:''|RussianBoldTextPlugin|
|''Version:''|1.1 (11-Jan-2012)|
|''Author:''|KarelWintersky|
|''Type:''|Patch|
!Description
Add more useful custom formatter for russian users : {{{ ++ someting ++ }}}   for ++bold++.

!Revision History
1.1 (11-Jan-2012) by KarelWintersky
1.2 (17-Jan-2012) by KarelWintesky - check for installed once

!Code
***/
//{{{
// Ensure that the RussianBoldText Plugin is only installed once.
if(!version.extensions.RussianBoldTextPlugin) {
version.extensions.RussianBoldTextPlugin = {installed:true};

config.formatters.push(
{
	name: "boldByCharRU",
	match: "\\+\\+",
	handler: function(w)
	{
			w.subWikifyTerm(w.output.appendChild(document.createElement("strong")),/(\+\+)/mg);
	}
}
);
} //# end of "install only once"
//}}}
/***
|''Name:''|~SectionMacro|
|''Version:''|0.9.4 (20-Apr-2007)|
|''Author:''|[[Jack]]|
|''Type:''|Macro|
!Description
Allows you to create collapsable sections just like the slider macro but without needing to create new tiddlers for these sections.
!Usage
{{{<<section Title Tiddler Text goes here...
and can be multi-
line and include {${${monospace text}$}$}.
>>}}}
<<section Title Tiddler Text goes here...
and can be multi-
line and include {${${monospace text}$}$}.
>>
!Revision History
* Original by [[Jack]] 0.9
* Nested sliders and cookie persistence 0.9.1
* Removed crappy cookie persistance 0.9.2
* Bug-fix with quoted 2st parameter (thanks M. Macolio) 0.9.3
* Bug-fix with monospace text (thanks M. Macolio) 0.9.4
!Code
***/
//{{{
version.extensions.section = {major: 0, minor: 9, revision: 4, date: new Date("Apr 20, 2007")};

config.macros.section = {count:0,display:'none'};
config.macros.section.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
 this.slider(place,"chkSection" + this.count++,paramString.substr(params[0].length+(paramString.substr(params[0].length+1,1).match(/['"]/)?2:1)).replace(/\$\>/g, '>').replace(/}\$}\$}/, '}}}').replace(/{\${\${/, '{{{'),params[0], "tooltip");
}

config.macros.section.slider = function(place,cookie,text,title,tooltips) {
 var btn = createTiddlyButton(place,title,tooltips,config.macros.slider.onClickSlider,"tiddlyLink tiddlyLinkExisting"); 
 var panel = createTiddlyElement(place,"div",null,"timelineSliderPanel",null);
 panel.setAttribute("cookie",cookie);
 panel.style.display = config.options[cookie] ? "block" : "none";
 panel.style.display=this.display;
 if(text) wikify(text,panel);
};
//}}}
ShadowTiddlers are special tiddlers that have default values that take over if they are undefined or deleted. For example, PageTemplate and StyleSheetColors are both shadow tiddlers.
ShadowTiddlers make it harder to render a TiddlyWiki inoperative by accidentally deleting something important. You can see a list of shadow tiddlers in the Shadowed tab under the More tab in the right hand column. When you create a tiddler with the same title you override the underlying shadow tiddler. ----
<<list shadowed>>
<<tabs txtMainTab "Timeline" "Таймлайн" TabTimeline "All" "All tiddlers" TabAll "Tags" "All tags" TabTags "More" "More lists" TabMore>>
/***
|Version:|2.1.1|
***/
//{{{
version.extensions.SinglePageMode= {major: 2, minor: 1, revision: 1, date: new Date(2006,2,4)};

if (config.options.chkSinglePageMode==undefined)
 config.options.chkSinglePageMode=false;

config.shadowTiddlers.AdvancedOptions
 += "\n<<option chkSinglePageMode>> Display one tiddler at a time";

config.SPMTimer = 0;
config.lastURL = window.location.hash;
function checkLastURL()
{
 if (!config.options.chkSinglePageMode)
 { window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }
 if (config.lastURL == window.location.hash)
 return;
 var tiddlerName = convertUTF8ToUnicode(decodeURI(window.location.hash.substr(1)));
 tiddlerName=tiddlerName.replace(/\[\[/,"").replace(/\]\]/,""); // strip any [[ ]] bracketing
 if (tiddlerName.length) story.displayTiddler(null,tiddlerName,1,null,null);
}

Story.prototype.coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,title,template,animate,slowly)
{
 if (config.options.chkSinglePageMode) {
 window.location.hash = encodeURIComponent(String.encodeTiddlyLink(title));
 config.lastURL = window.location.hash;
 document.title = wikifyPlain("SiteTitle") + " - " + title;
 story.closeAllTiddlers();
 if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
 }
 this.coreDisplayTiddler(srcElement,title,template,animate,slowly)
}

Story.prototype.coreDisplayTiddlers=Story.prototype.displayTiddlers;
Story.prototype.displayTiddlers = function(srcElement,titles,template,unused1,unused2,animate,slowly)
{
 // suspend single-page mode when displaying multiple tiddlers
 var save=config.options.chkSinglePageMode;
 config.options.chkSinglePageMode=false;
 this.coreDisplayTiddlers(srcElement,titles,template,unused1,unused2,animate,slowly);
 config.options.chkSinglePageMode=save;
}
//}}}
@@color(navy)://Приключения в волшебном мире// @@
Каладон
/***
Здесь прописываются патчи для базового набора стилей CSS
***/
/*{{{*/
.wrappingClass {color: #666; background: #bbb;}
.firstletter{ float:left; width:0.75em; font-size:400%; font-family:times,arial; line-height:60%; }
.textleft {text-align:left; display: block;}
.textright {text-align:right; display: block;}
.textcenter {text-align:center; display: block;}
.textjustify {text-align:justify; display: block;}
.textindent25 {text-indent:25px; display: block;}
.textmargin65p {margin-left:65%; display: block;}
.textmargin70p {margin-left:70%; display: block;}
/*}}}*/
/*{{{*/
#tiddlersBar .button {border:0}
#tiddlersBar .tab {white-space:nowrap}
#tiddlersBar {padding : 1em 0.5em 2px 0.5em}
.tabUnselected .tabButton, .tabSelected .tabButton {padding : 0 2px 0 2px; margin: 0 0 0 4px;}
.tiddler, .tabContents {border:1px [[ColorPalette::TertiaryPale]] solid;}
/*}}}*/
<<timeline>>
/*
{{{
*/
version.extensions.tagCloud = {major: 1, minor: 0 , revision: 1, date: new Date(2005,8,16)};
//Created by Clint Checketts, contributions by Jonny Leroy and Eric Shulman
// // source: http://15black.bluedepot.com/twtests/tagcloud.htm

setStylesheet("\
 .tagCloud span{height: 1.8em;margin: 3px;}\
 .tagCloud1{font-size: 1.2em;}\
 .tagCloud2{font-size: 1.4em;}\
 .tagCloud3{font-size: 1.6em;}\
 .tagCloud4{font-size: 1.8em;}\
 .tagCloud5{font-size: 1.8em;font-weight: bold;}","tagCloudsStyles"
);

config.macros.tagCloud = {
 noTags: "Тэгов нет.",
 tooltip: "%1 записок помечено тэгом '%0'"
};

config.macros.tagCloud.handler = function(place,macroName,params) {
 
var tagCloudWrapper = createTiddlyElement(place,"div",null,"tagCloud",null);

var tags = store.getTags();
for (t=0; t<tags.length; t++) {
 for (p=0;p<params.length; p++) if (tags[t][0] == params[p]) tags[t][0] = "";
}

 if(tags.length == 0) 
 createTiddlyElement(tagCloudWrapper,"span",null,null,this.noTags);
 //Findout the maximum number of tags
 var mostTags = 0;
 for (t=0; t<tags.length; t++) if (tags[t][0].length > 0){
 if (tags[t][1] > mostTags) mostTags = tags[t][1];
 }
 //divide the mostTags into 4 segments for the 4 different tagCloud sizes
 var tagSegment = mostTags / 4;

 for (t=0; t<tags.length; t++) if (tags[t][0].length > 0){
 var tagCloudElement = createTiddlyElement(tagCloudWrapper,"span",null,null,null);
 tagCloudWrapper.appendChild(document.createTextNode(" "));
 var theTag = createTiddlyButton(tagCloudElement,tags[t][0],this.tooltip.format(tags[t]),onClickTag,"tagCloudtag tagCloud" + (Math.round(tags[t][1]/tagSegment)+1));
 theTag.setAttribute("tag",tags[t][0]);
 }

};

/*
}}}
*/
To hide text within a tiddler so that it is not displayed you can wrap it in {{{/%}}} and {{{%/}}}. It can be a useful trick for hiding drafts or annotating complex markup. 
/***
|''Name:''|TiddlersBarPlugin|
|''Description:''|A bar to switch between tiddlers through tabs (like browser tabs bar).|
|''Version:''|1.2.1|
|''Date:''|Dec 21,2007|
|''Source:''|http://visualtw.ouvaton.org/VisualTW.html|
|''Author:''|Pascal Collin|
|''License:''|[[BSD open source license|License]]|
|''~CoreVersion:''|2.1.0|
|''Browser:''|Firefox 2.0; InternetExplorer 6.0, others|
!Demos
On [[homepage|http://visualtw.ouvaton.org/VisualTW.html]], open several tiddlers to use the tabs bar.
!Installation
#import this tiddler from [[homepage|http://visualtw.ouvaton.org/VisualTW.html]] (tagged as systemConfig)
#save and reload
#''if you're using a custom [[PageTemplate]]'', add {{{<div id='tiddlersBar' refresh='content' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>}}} before {{{<div id='tiddlerDisplay'></div>}}}
#optionally, adjust StyleSheetTiddlersBar
!Tips
*Doubleclick on the tiddlers bar (where there is no tab) create a new tiddler.
*Tabs include a button to close {{{x}}} or save {{{!}}} their tiddler.
*By default, click on the current tab close all others tiddlers.
!Configuration options 
<<option chkDisableTabsBar>> Disable the tabs bar (to print, by example).
<<option chkHideTabsBarWhenSingleTab >> Automatically hide the tabs bar when only one tiddler is displayed. 
<<option txtSelectedTiddlerTabButton>> ''selected'' tab command button.
!Code
***/
//{{{
config.options.chkDisableTabsBar = config.options.chkDisableTabsBar ? config.options.chkDisableTabsBar : false;
config.options.chkHideTabsBarWhenSingleTab  = config.options.chkHideTabsBarWhenSingleTab  ? config.options.chkHideTabsBarWhenSingleTab  : false;
config.options.txtSelectedTiddlerTabButton = config.options.txtSelectedTiddlerTabButton ? config.options.txtSelectedTiddlerTabButton : "closeOthers";
config.macros.tiddlersBar = {
	tooltip : "see ",
	tooltipClose : "click here to close this tab",
	tooltipSave : "click here to save this tab",
	promptRename : "Enter tiddler new name",
	currentTiddler : "",
	previousState : false,
	handler: function(place,macroName,params) {
		if (config.macros.tiddlersBar.isShown())
			story.forEachTiddler(function(title,e){
				if (title==config.macros.tiddlersBar.currentTiddler){
					var d = createTiddlyElement(null,"span",null,"tab tabSelected");
					config.macros.tiddlersBar.createActiveTabButton(d,title);
				}
				else {
					var d = createTiddlyElement(place,"span",null,"tab tabUnselected");
					var btn = createTiddlyButton(d,title,config.macros.tiddlersBar.tooltip + title,config.macros.tiddlersBar.onSelectTab);
					btn.setAttribute("tiddler", title);
				}
				var isDirty =story.isDirty(title);
				var c = createTiddlyButton(d,isDirty ?"!":"x",isDirty?config.macros.tiddlersBar.tooltipSave:config.macros.tiddlersBar.tooltipClose, isDirty ? config.macros.tiddlersBar.onTabSave : config.macros.tiddlersBar.onTabClose,"tabButton");
				c.setAttribute("tiddler", title);
				if (place.childNodes) {
					place.insertBefore(document.createTextNode(" "),place.firstChild); // to allow break line here when many tiddlers are open
					place.insertBefore(d,place.firstChild); 
				}
				else place.appendChild(d);
			})
	}, 
	refresh: function(place,params){
		removeChildren(place);
		config.macros.tiddlersBar.handler(place,"tiddlersBar",params);
		if (config.macros.tiddlersBar.previousState!=config.macros.tiddlersBar.isShown()) {
			story.refreshAllTiddlers();
			if (config.macros.tiddlersBar.previousState) story.forEachTiddler(function(t,e){e.style.display="";});
			config.macros.tiddlersBar.previousState = !config.macros.tiddlersBar.previousState;
		}
	},
	isShown : function(){
		if (config.options.chkDisableTabsBar) return false;
		if (!config.options.chkHideTabsBarWhenSingleTab) return true;
		var cpt=0;
		story.forEachTiddler(function(){cpt++});
		return (cpt>1);
	},
	selectNextTab : function(){  //used when the current tab is closed (to select another tab)
		var previous="";
		story.forEachTiddler(function(title){
			if (!config.macros.tiddlersBar.currentTiddler) {
				story.displayTiddler(null,title);
				return;
			}
			if (title==config.macros.tiddlersBar.currentTiddler) {
				if (previous) {
					story.displayTiddler(null,previous);
					return;
				}
				else config.macros.tiddlersBar.currentTiddler=""; 	// so next tab will be selected
			}
			else previous=title;
			});		
	},
	onSelectTab : function(e){
		var t = this.getAttribute("tiddler");
		if (t) story.displayTiddler(null,t);
		return false;
	},
	onTabClose : function(e){
		var t = this.getAttribute("tiddler");
		if (t) {
			if(story.hasChanges(t) && !readOnly) {
				if(!confirm(config.commands.cancelTiddler.warning.format([t])))
				return false;
			}
			story.closeTiddler(t);
		}
		return false;
	},
	onTabSave : function(e) {
		var t = this.getAttribute("tiddler");
		if (!e) e=window.event;
		if (t) config.commands.saveTiddler.handler(e,null,t);
		return false;
	},
	onSelectedTabButtonClick : function(event,src,title) {
		var t = this.getAttribute("tiddler");
		if (!event) event=window.event;
		if (t && config.options.txtSelectedTiddlerTabButton && config.commands[config.options.txtSelectedTiddlerTabButton])
			config.commands[config.options.txtSelectedTiddlerTabButton].handler(event, src, t);
		return false;
	},
	onTiddlersBarAction: function(event) {
		var source = event.target ? event.target.id : event.srcElement.id; // FF uses target and IE uses srcElement;
		if (source=="tiddlersBar") story.displayTiddler(null,'New Tiddler',DEFAULT_EDIT_TEMPLATE,false,null,null);
	},
	createActiveTabButton : function(place,title) {
		if (config.options.txtSelectedTiddlerTabButton && config.commands[config.options.txtSelectedTiddlerTabButton]) {
			var btn = createTiddlyButton(place, title, config.commands[config.options.txtSelectedTiddlerTabButton].tooltip ,config.macros.tiddlersBar.onSelectedTabButtonClick);
			btn.setAttribute("tiddler", title);
		}
		else
			createTiddlyText(place,title);
	}
}

story.coreCloseTiddler = story.coreCloseTiddler? story.coreCloseTiddler : story.closeTiddler;
story.coreDisplayTiddler = story.coreDisplayTiddler ? story.coreDisplayTiddler : story.displayTiddler;

story.closeTiddler = function(title,animate,unused) {
	if (title==config.macros.tiddlersBar.currentTiddler)
		config.macros.tiddlersBar.selectNextTab();
	story.coreCloseTiddler(title,false,unused); //disable animation to get it closed before calling tiddlersBar.refresh
	var e=document.getElementById("tiddlersBar");
	if (e) config.macros.tiddlersBar.refresh(e,null);
}

story.displayTiddler = function(srcElement,tiddler,template,animate,unused,customFields,toggle){
	story.coreDisplayTiddler(srcElement,tiddler,template,animate,unused,customFields,toggle);
	var title = (tiddler instanceof Tiddler)? tiddler.title : tiddler;  
	if (config.macros.tiddlersBar.isShown()) {
		story.forEachTiddler(function(t,e){
			if (t!=title) e.style.display="none";
			else e.style.display="";
		})
		config.macros.tiddlersBar.currentTiddler=title;
	}
	var e=document.getElementById("tiddlersBar");
	if (e) config.macros.tiddlersBar.refresh(e,null);
}

ensureVisible=function (e) {return 0} //disable bottom scrolling (not useful now)

config.shadowTiddlers.StyleSheetTiddlersBar = "/*{{{*/\n";
config.shadowTiddlers.StyleSheetTiddlersBar += "#tiddlersBar .button {border:0}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += "#tiddlersBar .tab {white-space:nowrap}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += "#tiddlersBar {padding : 1em 0.5em 2px 0.5em}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += ".tabUnselected .tabButton, .tabSelected .tabButton {padding : 0 2px 0 2px; margin: 0 0 0 4px;}\n";
config.shadowTiddlers.StyleSheetTiddlersBar += ".tiddler, .tabContents {border:1px [[ColorPalette::TertiaryPale]] solid;}\n";
config.shadowTiddlers.StyleSheetTiddlersBar +="/*}}}*/";
store.addNotification("StyleSheetTiddlersBar", refreshStyles);

config.shadowTiddlers.PageTemplate=config.shadowTiddlers.PageTemplate.replace(/<div id='tiddlerDisplay'><\/div>/m,"<div id='tiddlersBar' refresh='content' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>\n<div id='tiddlerDisplay'></div>")

//}}}
!Documentation for TiddlyLightBoxPlugin
''Credits:''
This lightbox implementation is a derivative of Bob Denny's [[DC3.LightBox|http://solo.dc3.com/tw/index.html]] library optimized for a ~TiddlyWiki environment, with an emphasis on ease of use. It also uses some code and ideas from [[LightBox Gone Wild|http://particletree.com/features/lightbox-gone-wild/]] and [[Ibox|http://www.ibegin.com/ibox/]]. For a more feature rich and versatile option, you can't beat the ~DC3 library.


''Concept:''
I needed a light weight lightbox implementation for [[TiddlyThemes|http://tiddlythemes.googlepages.com/index.html]] but none of the existing options fit the bill. The ~DC3 library came closest, so I set out to rewrite it. I believe the result is a quite versatile ~TW plugin. Some of the bells and whistles have been removed though since I find them annoying (animations), and there are some features yet to be implemented, as you can read further on this document. Almost the entire library has been rewritten.


''Installation:''
Copy the TiddlyLightBoxPlugin tiddler to your TW, tag it with systemConfig, save and reload your TW file. You will also need to save [[this|indicator.gif]] 'loading' image to the same folder as your TW. Or you can choose one of many [[here|http://www.ajaxload.info/]]. That's it, you are ready to create some lightboxes!


''Usage:''
There are 3 macros provide to facilitate setting up macros.
1. ''{{{<<imagebox>>}}}''
The imagebox macro is designed to display images in the lightbox. The usage is very easy. Simply create a text or image link to an image using standard TW syntax, and follow it with {{{<<imagebox>>}}}.
Eg: {{{[img[cactus-thumb.jpg]cactus.jpg]]}}}

[img[cactus-thumb.jpg][cactus.jpg]]<<imagebox>>

Let's try a text link: {{{[[Litar|http://skylark.moy.su/photos/litar/litar_1.jpg]]<<imagebox>>}}}

[[Litar|http://skylark.moy.su/photos/litar/litar_1.jpg]]<<imagebox>>

This macro also accepts some optional parameters in this order:
2. description text
3. width ( as a number, like 500)
4. height (as a number, like 300)
Also, if width is passed as a word, like "bananas", then it is treated as a css class and the container for the image is given the class "bananas".

Let's try one more, with a title and a custom size:
{{{[img[cubicles-thumb.jpg][cubicles.jpg]]<<imagebox 'Office space' 300 300>>}}}

[img[cubicles-thumb.jpg][cubicles.jpg]]<<imagebox 'Office space' 300 300>>

----

2. ''{{{<<divbox>>}}}''
The divbox macro lets you put the html content of any inline div into a lightbox, you just need the id of the div in question. The idea being to create a hidden div using "display:none" and then displaying it on the click of a link/button.
You can create such a div in any tiddler by wrapping it in html tags, but using the MarkupPostBody tiddler might be the better option.

The macro can create the button for you, or you can use an existing element to launch the lightbox. To create a button, pass the label for the button as the first parameter. To use an existing element, pass the first parameter as ' ' and place the macro immediately after the element. Eg: {{{<<tiddlerbox label>> or <<tiddlerbox ''>>}}}

The next parameter is the id of the div to display: {{{<<tiddlerbox label theID>>}}}
These two parameters are a must for the divbox macro. There are also 3 more optional parameters, just like the imagebox macro:
3. description text
4. width ( as a number, like 500) OR className
5. height (as a number, like 300)
As an example, lets display this hidden div which I have written inline:
{{{<html><div id="testDiv" style="display:none;"><div style="text-align:center;"> Lightboxes have become very cliche, but they can still be useful!</div></div></html><<divbox "Click to see it" "testDiv" "This is a test div">>}}}
<html><div id="testDiv" style="display:none;"><div style="text-align:center"><br><br><br><br> Lightboxes have become very cliche, but they can still be useful!</div></div></html><<divbox "Click to see it" "testDiv" "This is a test div">>

----

3.''{{{<<tiddlerbox>>}}}''
This macro lets you put the wikified contents of any tiddler into a lightbox! So you can put your MainMenu and Sidebar into a lightbox for example, and have handy links to bring them up whenever you need them. (like in say the hovering menu provided by HoverMenuPlugin). It's also very useful for when you are working on something and want to refer to some reference material without having to loose your place in your work.
The parameters for this macro are the same as for the divbox macro, except instead of the id for the div, you use the title of the tiddler.
Let's give it a go:
{{{<<tiddlerbox "menu" "MainMenu" "Thats my main menu, and the links work!">>}}}
<<tiddlerbox "menu" "MainMenu" "Thats my main menu, and the links work!">>
or
{{{<<tiddlerbox "menu" "Sidebar" "Thats my sidebar!" 300 500>>}}}
<<tiddlerbox "sidebar" "Sidebar" "Thats my sidebar!" 300 500>>

-----

''CSS Styling:''
The css rules for the lightbox and its contents are in the TiddlyLightBoxStyles folder. You can edit them to your liking, but I recommend not changing the rules for ~lightBoxOverlay and lightboxprogress. But don't worry, if you break anything, just delete the tiddler. It's a shadow tiddler!

I'll post a diagram showing the structure of the lightbox later, to faciliate css styling.

----

''Features comparison with ~DC3Lightbox:''
Missing:
* IE transparency filters
* ability to create own lightbox containers
*call back functions on closing lightbox

Added:
*macros for TW usage
*optimized for TW environment
*ability to display Tiddlers in lightboxes
*preloading of images, to avoid layout problems
*removed need for manually creating styles tiddler and adding html markup.
*fixed bug with regards to selects displaying over the lightbox!

----

''To Do''
* fixed positioning of lightbox so it scrolls with the page!
*possible light weight animation for images
* optional preloading of images
* resizing of images to fit the viewport when larger.
* optional automatic lightboxing of all links to images.
*grabbing description from image alt text.
* improved support for inline html content.

<<tiddlerbox "menu" "MainMenu">>

|! слово |! образующая |! направляющая |! объект |! стихия |
| <<tiddlerbox "шар" "шар">> | <<tiddlerbox "в" "в">> | - | <<tiddlerbox "тень" "тень">> | - |
| <<tiddlerbox "толчок" "толчок">> | <<tiddlerbox "создать" "создать">> | - | - | - |
| <<tiddlerbox "слово" "слово">> | <<tiddlerbox "внутри" "внутри">> | - | - | - |
| <<tiddlerbox "мысль" "мысль">> | <<tiddlerbox "там" "там">> | - | - | - |
/***
|''Name:''|TiddlyLightBox|
|''Date:''|Jan 1, 2006|
|''Version:''|1.0 beta|
|''Author:''|Saq Imtiaz|
|''Location:''|http://tw.lewcid.org/#TiddlyLightBoxPlugin|
|''Documentation:''|http://tw.lewcid.org/#TiddlyLightBoxDocs|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''Based on:''|DC3.LightBox<br>Light Box Gone Wild <br>Ibox|

!!Code
***/
//{{{
config.macros.imagebox ={};
config.macros.imagebox.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{
    var e = place.lastChild;
    e.onclick = function(){TiddlyLightBox.initBox('image',this,params[1],params[2],params[0]);return false;};
}

config.macros.divbox ={};
config.macros.divbox.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{
    if (params[0]!=".")
        createTiddlyButton(place,params[0],params[0],function(){TiddlyLightBox.initBox('html',params[1],params[3],params[4],params[2]);return false;});
    else
        {
        var e = place.lastChild;
        e.onclick = function(){TiddlyLightBox.initBox('html',params[1],params[3],params[4],params[2]);return false;};
        }
}

config.macros.tiddlerbox ={}
config.macros.tiddlerbox.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{
    config.macros.divbox.handler(place,macroName,[params[0],"tiddler:"+params[1],params[2],params[3],params[4]]);
    return false;
}

store.addNotification("TiddlyLightBoxStyles",refreshStyles);

if (!window.TiddlyLightBox)
    window.TiddlyLightBox = {};
    var loadingImage = "indicator.gif";
    window.TiddlyLightBox =
    {
    _curBox: null, // [sentinel]

    lightBoxHtml : '<div id="lightBoxOverlay" onclick="TiddlyLightBox.hideBox()" style="display:none"></div><div id="lightboxprogress" style="display:none;"><img src=\''+loadingImage+'\' alt=\'loading\' style="width:128px;height:128px;"></div><div class="lightBox" id="lightBox" style="display:none"><div id="lightBoxContent"></div><div id="lightBoxTitle">This is a title</div><div id="lightBoxClose"><a href:"#" onclick="TiddlyLightBox.hideBox();return false;">Click to close</a></div></div>',

    createBoxWrapper : function()
        {
        var wrapper = createTiddlyElement(document.getElementsByTagName("body")[0],"div","tiddlyLightBoxWrapper");
        wrapper.innerHTML = this.lightBoxHtml;
        },

    initBox : function(contentType,url,w,h,text)
        {
        if (this._curBox)
            return;
        this.showProgress();
        this.hideSelects("hidden");
        this.showBg();
        this._curBox = true;
        this.sizeTheBox(contentType,w,h);
        if (contentType == 'image')
            this.showImage(url,text);
        else if (contentType == 'html')
            this.showHtml(url,text);
        return false;
        },
        
    sizeTheBox : function(contentType,w,h)
        {
        var box = document.getElementById("lightBoxContent");
        if (w && isNaN(parseInt(w)))
            {
            addClass(box,w);
            }
        else if (w ||h || contentType == 'html')
            {
            box.style.width = w? w+ "px" : "450px";
            box.style.height = h? h+ "px" : "280px";
            if (contentType=='image')
                setStylesheet("#lightBoxContent img{height:100%;width:100%;}","lightBoxImageSizeHack");
            }
        },

    showProgress : function()
        {
        var progress = document.getElementById("lightboxprogress");
        progress.style.display='';
        this._center(progress);
        },
    
    hideProgress: function()
        {
        var progress = document.getElementById("lightboxprogress");
        progress.style.display='none';
        },

    //this function lifted from Lightbox Gone Wild
    hideSelects: function(visibility)
        {
        var selects = document.getElementsByTagName('select');
        for(i = 0; i < selects.length; i++)
            {
            selects[i].style.visibility = visibility;
            }
        },

    showBg: function()
        {
        var overlay = document.getElementById('lightBoxOverlay');
        if (config.browser.isIE)
            {
            overlay.style.height = Math.max(document.documentElement.scrollHeight,document.documentElement.offsetHeight);
            overlay.style.width = document.documentElement.scrollWidth;
            }
        overlay.style.display = 'block';
        },

    showImage: function (url,text)
        {
        imgPreloader = new Image();
        imgPreloader.onload = function ()
            {
            var lb = document.getElementById("lightBoxContent");
            lb.innerHTML = "<img src="+url+">";
            lb.onclick = function(){TiddlyLightBox.hideBox();return false;};
            TiddlyLightBox.posBox(text);
            };
        imgPreloader.src = url;
        },
        
    showHtml : function(theID,text)
        {
        var lb = document.getElementById("lightBoxContent");
        if (theID.indexOf("tiddler:")==-1)
             lb.innerHTML = document.getElementById(theID).innerHTML;
        else
            { 
             wikify(store.getTiddlerText(theID.replace("tiddler:","")),lb);
             lb.className='tiddler';
            }
        lb.style.overflow = "auto";
        this.posBox(text);
        },

    posBox: function(text)
       {
       this.setTitle(text);
       this.hideProgress();
       var lb = document.getElementById("lightBox");
       lb.style.display = "";
       lb.style.visibilty = "hidden";
       lb.style.position = "absolute";
       this._center(lb);
       if(!TiddlyLightBox._curBox) return;
       lb.style.visibility = "visible";
       lb.style.display = "block";
       },

     setTitle: function(text)
        {
        document.getElementById("lightBoxTitle").innerHTML=  (text==undefined)? '': text;
        },

    _center: function(lb)
       {
       var lbSize = new TiddlyLightBox.getElementSize(lb);
       lb.style.left = (Math.round(findWindowWidth()/2) - (lbSize.width /2) + findScrollX())+'px';
       lb.style.top = (Math.round(findWindowHeight()/2) - (lbSize.height /2) + findScrollY())+'px';
       },

    //this function lifted from Ibox
    getElementSize : function(elem)
       {
       this.width = elem.offsetWidth || elem.style.pixelWidth;
       this.height = elem.offsetHeight || elem.style.pixelHeight;
       },

     hideBox: function()
         {
         if(!this._curBox)
             return;
         document.getElementById("tiddlyLightBoxWrapper").innerHTML= this.lightBoxHtml;
         setStylesheet("","lightBoxImageSizeHack");
         this._curBox = null;
         return false;
         }
}

TiddlyLightBox.createBoxWrapper();

Story.prototype.findContainingTiddler = function(e)
{
    while(e && (!hasClass(e,"tiddler") || !e.getAttribute("tiddler")))
        e = e.parentNode;
    return(e);
}

config.shadowTiddlers.TiddlyLightBoxStyles="/*{{{*/\n#lightBoxOverlay {\n position:absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 90; \n background-color: #000;\n -moz-opacity: 0.75;\n opacity: .75;\n filter: alpha(opacity=75);\n}\n#lightBoxOverlay[id]{ \n position: fixed;\n}\n\n#lightboxprogress { \n margin:0;padding:0;\n position: absolute;\n z-index:95;\n}\n\ndiv.lightBox {\n background: #fff;\n color: #fff;\n border: 4px solid #525252;\npadding:20px 20px 25px 20px; position:absolute; z-index:99;\n}\n\n#lightBoxClose {text-align:right; color:#000; font-size:1.0em; position:absolute; bottom:6px; right:20px;}\n#lightBoxClose a{color:#666; border-bottom:1px solid #666;cursor:pointer;}\n#lightBoxClose a:hover {color:#111; border-bottom:1px solid #666; cursor:pointer; background:transparent;}\n\n#lightBoxContent {border:1px solid #525252;color:#000; background:#fff;}\n#lightBox .tiddler {background:#fff;}\n\n#lightBoxContent img {border:0;margin:0;padding:0;display:block;cursor:pointer;}\n\n#lightBoxTitle {padding:0px; font-weight:bold; position:absolute; left:20px;bottom:6px; font-size:1.1em; color:#000;}\n\n/*}}}*/";
//}}}
The ToolbarMacro is used in the TiddlerTemplateMechanism to define the toolbar that appears when the mouse is hovered over a tiddler. It looks like this:
{{{
<<toolbar closeTiddler -editTiddler +jump>>
}}}
You can precede a command name with a "+" to specify a default command that is automatically chosen when a tiddler is double-clicked, or the ctrl-Enter key combination pressed. Similarly, precede it with "-" to specify a command to be chosen when the Escape key is pressed.
----
Deletes the current tiddler. A confirmation dialogue is displayed unless disabled with the ConfirmBeforeDeleting checkbox in AdvancedOptions. It is used with the ToolbarMacro like this:
{{{
<<toolbar deleteTiddler>>
}}}
Switches the current tiddler to the current edit view. It is used with the ToolbarMacro like this:
{{{
<<toolbar editTiddler>>
}}}
Offers a popup menu to jump directly to any of the currently open tiddlers. It is used with the ToolbarMacro like this:
{{{
<<toolbar jump>>
}}}
Offers a popup menu displaying the tiddlers that link to the current one. It is used with the ToolbarMacro like this:
{{{
<<toolbar references>>
}}}
Saves any pending edits to the current tiddler, and switches it to the default view. It is used with the ToolbarMacro like this:
{{{
<<toolbar saveTiddler>>
}}}
Закрывает все открытые записки кроме текущей (редактируемой). Используется с макросом ToolbarMacro так:
{{{
<<toolbar closeOthers>>
}}}
Сбрасывает все изменения, внесенные в записку и возвращает ее к режиму просмотра.
Используется с макросом ToolbarMacro так:
{{{
<<toolbar cancelTiddler>>
}}}
Closes the current tiddler, regardless of whether it is being editted. It is used with the ToolbarMacro like this:
{{{
<<toolbar closeTiddler>>
}}}
<!--{{{-->
<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler > fields syncing permalink references jump'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
/***
|''Name:''|WikiBar|
|''Version:''|2.0.0 beta3|
|''Source:''|[[AiddlyWiki|http://aiddlywiki.sourceforge.net]]|
|''Author:''|[[Arphen Lin|mailto:arphenlin@gmail.com]]|
|''Type:''|toolbar macro command extension|
|''Required:''|TiddlyWiki 2.0.0 beta6|
!Description
WikiBar is a toolbar that gives access to most of TiddlyWiki's formatting features with a few clicks. It's a handy tool for people who are not familiar with TiddlyWiki syntax.
Besides, with WikiBar-addons, users can extend the power of WikiBar.
!Support browser
*Firefox 1.5
!Revision history
*v2.0.0 beta3 (2005/12/30)
** remove macros (replaced by TWMacro addon)
** add wikibar command in toolbar automatically
** rename DOIT to HANDLER
** rename TIP to TOOLTIP
*v2.0.0 beta2 (2005/12/21)
** re-design Wikibar addon framework
*v2.0.0 beta1 (2005/12/14)
** Note:
*** WikiBarPlugin is renamed to WikiBar
** New Features:
*** support TiddlyWiki 2.0.0 template mechanism
*** new wikibar data structure
*** new wikibar-addon framework for developers
**** support dynamic popup menu generator
*** support most new macros added in TiddlyWiki 2.0.0
*** multi-level popup menu
*** fix wikibar tab stop
*** remove paletteSelector
** Known Bugs:
*** popup-menu and color-picker can't be closed correctly
*** some macros can't be displayed correctly in previewer
*** text in previewer will be displayed italic
*v1.2.0 (2005/11/21)
**New Features:
***User defined color palettes supported
####Get color palettes from [[ColorZilla Palettes|http://www.iosart.com/firefox/colorzilla/palettes.html]].
####Save the palette file(*.gpl) as a new tiddler and tag it with 'ColorPalettes', then you can use it in WikiBar.
***WikiBar style sheet supported
***Click on document to close current colorPicker, paletteSelector or aboutWikibar
*v1.1.1 (2005/11/03)
**Bugs fixed:
***'Not enough parameters!' message is displayed when the parameter includes '%+number', ex: 'hello%20world!'
*v1.1.0 (2005/11/01)
**Bugs fixed:
***WikiBar overruns (reported by by GeoffS <gslocock@yahoo.co.uk>)
**New features:
***Insert a color code at the cursor. (Thanks to RunningUtes <RunningUtes@gmail.com>)
***Enable gradient macro. (Thanks to RunningUtes <RunningUtes@gmail.com>)
***Insert tiddler comment tags {{{/% ... %/}}}. (new feature supported by TiddlyWiki 1.2.37)
***Insert DateFormatString for {{{<<today>>}}} macro. (new feature supported by TiddlyWiki 1.2.37)
**Enhanced:
***Allow optional parameters in syntax.
**Bugs:
***'Not enough parameters!' message is displayed when the parameter includes '%+number', ex: 'hello%20world!'
*v1.0.0 (2005/10/30)
**Initial release
!Code
***/
//{{{
config.macros.wikibar = {major: 2, minor: 0, revision: 0, beta: 3, date: new Date(2005,12,30)};
config.macros.wikibar.handler = function(place,macroName,params,wikifier,paramString,tiddler){
  if(!(tiddler instanceof Tiddler))  {return;}
	story.setDirty(tiddler.title,true);
  place.id = 'wikibar'+tiddler.title;
  place.className = 'toolbar wikibar';
};
function wikibar_install(){
  config.commands.wikibar = {
  	text: 'wikibar',
  	tooltip: 'wikibar on/off',
  	handler: function(e,src,title) {
      if(!e){ e = window.event; }
      var theButton = resolveTarget(e);
      theButton.id = 'wikibarButton'+title;
      wikibarPopup.remove();
      wikibar_installAddons(theButton, title);
      wikibar_createWikibar(title);
      return(false);
    }
  };
  config.shadowTiddlers['EditTemplate'] = wikibar_addWikibarCommand(config.shadowTiddlers['EditTemplate']);
  var tiddler = store.getTiddler('EditTemplate');
  if(tiddler){
    tiddler.text = wikibar_addWikibarCommand(tiddler.text);
  }
}
function wikibar_installAddons(theButton, title){
 	var tiddlers = store.getTaggedTiddlers('wikibarAddons');
	if(!tiddlers)	  { return; }
	theButton.addons=[];
  for(var i=0; i<tiddlers.length; i++){
    try{
      eval(tiddlers[i].text);
      try{
        wikibar_addonInstall(title);
        wikibar_addonInstall = null;
        theButton.addons.push({ok:true, name:tiddlers[i].title});
      }catch(ex){
        theButton.addons.push({ok:false, name:tiddlers[i].title, error:ex});
      }
    }catch(ex){
      theButton.addons.push({ok:false, name:tiddlers[i].title, error:ex});
    }
  }
}
function wikibar_addWikibarCommand(tiddlerText){
  var div = document.createElement('div');
  div.style.display = 'none';
  div.innerHTML = tiddlerText;
  for(var i=0; i<div.childNodes.length; i++){
    var o=div.childNodes[i];
    if(o.tagName==='DIV'){
      if(o.className=='toolbar'){
        var macroText = o.getAttribute('macro').trim();
        if(macroText.search('wikibar')<=0){
          macroText += ' wikibar';
          o.setAttribute('macro', macroText);
        }
        break;
      }
    }
  }
  return div.innerHTML.replace(/\"/g, "\'");
}
function wikibar_processSyntaxParams(theSyntax, params){
  try{
    var pcr = 'AplWikibarPcr';
    var rx=null;
    var allParams=null;
    if(params){
      if(typeof(params)=='object'){
        for(var i=0; i<params.length; i++){
          if(params[i]){
            params[i] = params[i].replace(new RegExp('%','g'), pcr).trim();
            rx = '(\\[%'+(i+1)+'\\])' + '|' + '(%'+(i+1)+')';
            theSyntax = theSyntax.replace(new RegExp(rx,'g'), params[i] );
          }
        }
        allParams = params.join(' ').trim();
      }else{
        allParams = params.replace(new RegExp('%','g'), pcr).trim();
        rx = /(\[%1{1}\])|(%1{1})/g;
        theSyntax = theSyntax.replace(rx, allParams);
      }
    }
    if(allParams){
      theSyntax = theSyntax.replace(new RegExp('%N{1}','g'), allParams);
    }
    rx=/\[%(([1-9]{1,}[0-9]{0,})|(N{1}))\]/g;
    theSyntax = theSyntax.replace(rx, '');
    rx=/%(([1-9]{1,}[0-9]{0,})|(N{1}))/g;
    if( theSyntax.match(rx) ){
      throw 'Not enough parameters! ' + theSyntax;
    }
    theSyntax=theSyntax.replace(new RegExp(pcr,'g'), '%');
    return theSyntax;
  } catch(ex){
    return null;
  }
}
function wikibar_resolveEditItem(tiddlerWrapper, itemName){
  if(tiddlerWrapper.hasChildNodes()){
    var c=tiddlerWrapper.childNodes;
    for(var i=0; i<c.length; i++){
      var txt=wikibar_resolveEditItem(c[i], itemName);
      if(!txt){
        continue;
      }else{
        return txt;
      }
    }
  }
  return ((tiddlerWrapper.getAttribute && tiddlerWrapper.getAttribute('edit')==itemName)? tiddlerWrapper : null);
}
function wikibar_resolveEditItemValue(tiddlerWrapper, itemName){
  var o = wikibar_resolveEditItem(tiddlerWrapper, itemName);
  return (o? o.value.replace(/\r/mg,'') : null);
}
function wikibar_resolveTiddlerEditorWrapper(obj){
  if(obj.id=='tiddlerDisplay'){return null;}
  if((obj.getAttribute && obj.getAttribute('macro')=='edit text')){return obj;}
  return wikibar_resolveTiddlerEditorWrapper(obj.parentNode);
}
function wikibar_resolveTiddlerEditor(obj){
  if(obj.hasChildNodes()){
    var c = obj.childNodes;
    for(var i=0; i<c.length; i++){
      var o=wikibar_resolveTiddlerEditor(c[i]);
      if(o){ return o;}
    }
  }
  return ((obj.getAttribute && obj.getAttribute('edit')=='text')? obj : null);
}
function wikibar_resolveTargetButton(obj){
  if(obj.id && obj.id.substring(0,7)=='wikibar'){ return null; }
  if(obj.tiddlerTitle){
    return obj;
  }else{
    return wikibar_resolveTargetButton(obj.parentNode);
  }
}
function wikibar_isValidMenuItem(tool){
  if(!tool){  return false; }
  if(tool.TYPE=='MENU' || tool.TYPE=='MAIN_MENU'){
    for(var key in tool){
      if(key.substring(0,8)=='DYNAITEM'){ return true; }
      if(wikibar_isValidMenuItem(tool[key])){ return true; }
    }
    return false;
  }else{
    return (tool.HANDLER? true : false);
  }
}
function wikibar_editFormat(param){
  var editor = param.button.editor;
  var params = param.params;
  clearMessage();
  if(!editor){ return; }
  var repText = wikibar_processSyntaxParams(this.syntax, params);
  if(repText===null){ return; }
	var st = editor.scrollTop;
	var ss = editor.selectionStart;
	var se = editor.selectionEnd;
	var frontText= '';
	var endText  = '';
	var fullText = editor.value;
	if(se>ss && ss>=0){
	  frontText  = fullText.substring(0, ss);
	  endText    = fullText.substring(se, fullText.length);
	}
	else if(ss===0 && (se===0 || se == fullText.length) ){
    endText    = fullText;
	}
	else if(se==ss && ss>0){
    frontText  = fullText.substring(0, ss);
    endText    = fullText.substring(se, fullText.length);
	}
	if(repText.indexOf('user_text')>=0 && this.hint){
		repText = repText.replace('user_text', this.hint);
	}
	editor.value = frontText + repText + endText;
	editor.selectionStart = ss;
	editor.selectionEnd   = ss + repText.length;
	editor.scrollTop      = st;
	editor.focus();
}
function wikibar_editFormatByWord(param){
  var editor = param.button.editor;
  var params = param.params;
  clearMessage();
  if(!editor){return;}
  var repText = wikibar_processSyntaxParams(this.syntax, params);
  if(repText===null){ return; }
	var st = editor.scrollTop;
	var ss = editor.selectionStart;
	var se = editor.selectionEnd;
	var frontText= '';
	var selText  = '';
	var endText  = '';
	var fullText = editor.value;
	if(se>ss && ss>=0){
	  frontText  = fullText.substring(0, ss);
	  selText	   = fullText.substring(ss,se);
	  endText    = fullText.substring(se, fullText.length);
	}
	else if(ss===0 && (se===0 || se == fullText.length) ){
    endText    = fullText;
	}
	else if(se==ss && ss>0){
    frontText  = fullText.substring(0, ss);
    endText    = fullText.substring(se, fullText.length);
	  if(!( fullText.charAt(ss-1).match(/\W/gi) || fullText.charAt(ss).match(/\W/gi) )){
      var m = frontText.match(/\W/gi);
      if(m){
        ss = frontText.lastIndexOf(m[m.length-1])+1;
      }
      else{
        ss = 0;
      }
      m = endText.match(/\W/gi);
      if(m){
        se += endText.indexOf(m[0]);
      }
      else{
        se = fullText.length;
      }
      frontText = fullText.substring(0, ss);
  	  endText   = fullText.substring(se, fullText.length);
  	  selText   = fullText.substring(ss,se);
	  }
	}
	if(selText.length>0){
		repText = repText.replace('user_text', selText);
	}
	if(repText.indexOf('user_text')>=0 && this.hint){
		repText = repText.replace('user_text', this.hint);
	}
	editor.value = frontText + repText + endText;
	editor.selectionStart = ss;
	editor.selectionEnd   = ss + repText.length;
	editor.scrollTop      = st;
	editor.focus();
}
function wikibar_editFormatByCursor(param){
  var editor = param.button.editor;
  var params = param.params;
  clearMessage();
  if(!editor){ return; }
  var repText = wikibar_processSyntaxParams(this.syntax, params);
  if(repText===null){ return; }
	var st = editor.scrollTop;
	var ss = editor.selectionStart;
	var se = editor.selectionEnd;
	var frontText= '';
	var endText  = '';
	var fullText = editor.value;
	if(se>ss && ss>=0){
	  frontText  = fullText.substring(0, ss);
	  endText    = fullText.substring(se, fullText.length);
	}
	else if(ss===0 && (se===0 || se == fullText.length) ){
    endText    = fullText;
	}
	else if(se==ss && ss>0){
    frontText  = fullText.substring(0, ss);
    endText    = fullText.substring(se, fullText.length);
	}
	if(repText.indexOf('user_text')>=0 && this.hint){
		repText = repText.replace('user_text', this.hint);
	}
	editor.value = frontText + repText + endText;
	editor.selectionStart = ss;
	editor.selectionEnd   = ss + repText.length;
	editor.scrollTop      = st;
	editor.focus();
}
function wikibar_editFormatByLine(param){
  var editor = param.button.editor;
  var params = param.params;
  clearMessage();
  if(!editor){ return; }
  var repText = wikibar_processSyntaxParams(this.syntax, params);
  if(repText===null){ return; }
	var st = editor.scrollTop;
	var ss = editor.selectionStart;
	var se = editor.selectionEnd;
	var frontText= '';
	var selText  = '';
	var endText  = '';
	var fullText = editor.value;
	if(se>ss && ss>=0){
		if(this.byBlock){
	    frontText  = fullText.substring(0, ss);
	    selText		 = fullText.substring(ss,se);
	    endText    = fullText.substring(se, fullText.length);
		}
		else{
	  	se = ss;
		}
	}
  if(ss===0 && (se===0 || se == fullText.length) ){
    var m=fullText.match(/(\n|\r)/g);
    if(m){
      se = fullText.indexOf(m[0]);
    }else{
      se = fullText.length;
    }
    selText    = fullText.substring(0, se);
    endText    = fullText.substring(se, fullText.length);
	}
	else if(se==ss && ss>0){
    frontText  = fullText.substring(0, ss);
    endText    = fullText.substring(se, fullText.length);
    m = frontText.match(/(\n|\r)/g);
    if(m){
      ss = frontText.lastIndexOf(m[m.length-1])+1;
    }
    else{
      ss = 0;
    }
    m = endText.match(/(\n|\r)/g);
    if(m){
      se += endText.indexOf(m[0]);
    }
    else{
      se = fullText.length;
    }
    frontText = fullText.substring(0, ss);
	  selText   = fullText.substring(ss,se);
	  endText   = fullText.substring(se, fullText.length);
	}
	if(selText.length>0){
		repText = repText.replace('user_text', selText);
	}
	if(repText.indexOf('user_text')>=0 && this.hint){
		repText = repText.replace('user_text', this.hint);
	}
	if(this.byBlock){
    if( (frontText.charAt(frontText.length-1)!='\n') && ss>0 ){
    	repText = '\n' + repText;
    }
    if( (endText.charAt(0)!='\n') || se==fullText.length){
    	repText += '\n';
    }
	}
	editor.value = frontText + repText + endText;
	editor.selectionStart = ss;
	editor.selectionEnd   = ss + repText.length;
	editor.scrollTop      = st;
	editor.focus();
}
function wikibar_editFormatByTableCell(param){
  var editor = param.button.editor;
  var params = param.params;
  clearMessage();
  if(!editor){ return; }
  var repText = wikibar_processSyntaxParams(this.syntax, params);
  if(repText===null){ return; }
	var st = editor.scrollTop;
	var ss = editor.selectionStart;
	var se = editor.selectionEnd;
	var frontText= '';
	var selText  = '';
	var endText  = '';
	var fullText = editor.value;
	if(ss===0 || ss==fullText.length){
		throw 'not valid cell!';
	}
	se=ss;
  frontText  = fullText.substring(0, ss);
  endText    = fullText.substring(se, fullText.length);
  i=frontText.lastIndexOf('\n');
  j=frontText.lastIndexOf('|');
  if(i>j || j<0){
  	throw 'not valid cell!';
  }
	ss = j+1;
  i=endText.indexOf('\n');
  j=endText.indexOf('|');
  if(i<j || j<0){
  	throw 'not valid cell!';
  }
  se += j;
  frontText = fullText.substring(0, ss-1);
  selText   = fullText.substring(ss,se);
  endText   = fullText.substring(se+1, fullText.length);
	if(this.key.substring(0,5)=='align'){
		selText = selText.trim();
		if(	selText=='>' || selText=='~' ||	selText.substring(0,8)=='bgcolor(')	{return; }
	}
	if(selText.length>0){
		repText = repText.replace('user_text', selText);
	}
	if(repText.indexOf('user_text')>=0 && this.hint){
		repText = repText.replace('user_text', this.hint);
	}
	editor.value = frontText + repText + endText;
	editor.selectionStart = ss;
	editor.selectionEnd   = ss + repText.length - 2;
	editor.scrollTop      = st;
	editor.focus();
}
function wikibar_editSelectAll(param){
  var editor = param.button.editor;
	editor.selectionStart = 0;
	editor.selectionEnd   = editor.value.length;
	editor.scrollTop      = 0;
	editor.focus();
}
function wikibar_doPreview(param){
  var theButton = param.button;
  var editor = param.button.editor;
  var wikibar = theButton.parentNode;
  if(!wikibar)  { return; }
  title = theButton.tiddlerTitle;
  var editorWrapper = wikibar_resolveTiddlerEditorWrapper(editor);
  var tiddlerWrapper = editorWrapper.parentNode;
  var previewer = document.getElementById('previewer'+title);
  if(previewer){
    previewer.parentNode.removeChild(previewer);
    editorWrapper.style.display = 'block';
    visible=true;
  }else{
    previewer = document.createElement('div');
    previewer.id = 'previewer'+title;
    previewer.className = 'viewer previewer';
    previewer.style.height = (editor.offsetHeight) + 'px';
    wikify(editor.value, previewer);
    tiddlerWrapper.insertBefore(previewer, editorWrapper);
    editorWrapper.style.display = 'none';
    visible=false;
  }
  var pv=null;
  for(var i=0; i<wikibar.childNodes.length; i++){
    try{
      var btn = wikibar.childNodes[i];
      if(btn.toolItem.key == 'preview'){ pv=btn; }
      if(btn.toolItem.key != 'preview'){
        btn.style.display = visible ? '': 'none';
      }
    }catch(ex){}
  }
  if(!pv) { return; }
  if(visible){
    pv.innerHTML = '<font face=\"verdana\">&infin;</font>';
    pv.title = 'preview current tiddler';
  }
  else{
    pv.innerHTML = '<font face=\"verdana\">&larr;</font>';
    pv.title = 'back to editor';
  }
}
function wikibar_doListAddons(param){
  clearMessage();
  var title = param.button.tiddlerTitle;
  var wikibarButton = document.getElementById('wikibarButton'+title);
  var ok=0, fail=0;
  for(var i=0; i<wikibarButton.addons.length; i++){
    var addon=wikibarButton.addons[i];
    if(addon.ok){
      displayMessage('[ o ] '+addon.name);
      ok++;
    }
    else{
      displayMessage('[ x ] '+addon.name + ': ' + addon.error);
      fail++;
    }
  }
  displayMessage('---------------------------------');
  displayMessage(ok + ' ok ; ' + fail + ' failed');
}
function wikibar_getColorCode(param){
  var cbOnPickColor = function(colorCode, param){
    param.params = colorCode;
    param.button.toolItem.doMore(param);
  };
  wikibarColorTool.openColorPicker(param.button, cbOnPickColor, param);
}
function wikibar_getLinkUrl(param){
  var url= prompt('Please enter the link target', (this.param? this.param : ''));
  if (url && url.trim().length>0){
    param.params = url;
    this.doMore(param);
  }
}
function wikibar_getTableRowCol(param){
  var rc= prompt('Please enter (rows x cols) of the table', '2 x 3');
  if (!rc || (rc.trim()).length<=0){ return; }
  var arr = rc.toUpperCase().split('X');
  if(arr.length != 2)   { return; }
  for(var i=0; i<arr.length; i++){
    if(isNaN(arr[i].trim()))  { return; }
  }
  var rows = parseInt(arr[0].trim(), 10);
  var cols = parseInt(arr[1].trim(), 10);
  var txtTable='';
  for(var r=0; r<rows; r++){
    for(var c=0; c<=cols; c++){
      if(c===0){
        txtTable += '|';
      }else{
        txtTable += ' |';
      }
    }
    txtTable += '\n';
  }
  if(txtTable.trim().length>0){
    param.params = txtTable.trim();
    this.doMore(param);
  }
}
function wikibar_getMacroParam(param){
  var p = prompt('Please enter the parameters of macro \"' + this.key + '\":' +
                 '\nSyntax: ' + this.syntax +
                 '\n\nNote: '+
                 '\n%1,%2,... - parameter needed'+
                 '\n[%1] - optional parameter'+
                 '\n%N   - more than one parameter(1~n)'+
                 '\n[%N] - any number of parameters(0~n)'+
                 '\n\nPS:'+
                 '\n1. Parameters should be seperated with space character'+
                 '\n2. Use \" to wrap the parameter that includes space character, ex: \"hello world\"'+
                 '\n3. Input the word(null) for the optional parameter ignored',
                 (this.param? this.param : '') );
  if(!p)  { return; }
  p=p.readMacroParams();
  for(var i=0; i<p.length; i++){
    var s=p[i].trim();
    if(s.indexOf(' ')>0){ p[i]="'"+s+"'"; }
    if(s.toLowerCase()=='null'){ p[i]=null; }
  }
  param.params = p;
  this.doMore(param);
}
function wikibar_getMorePalette(unused){
  clearMessage();
  displayMessage('Get more color palettes(*.gpl) from ColorZilla Palettes site', 'http:\/\/www.iosart.com/firefox/colorzilla/palettes.html');
  displayMessage('Save it as a new tiddler with \"ColorPalettes\" tag');
}
function wikibar_createWikibar(title){
  var theWikibar = document.getElementById('wikibar' + title);
  if(theWikibar){
    if(theWikibar.hasChildNodes()){
      theWikibar.style.display = (theWikibar.style.display=='block'? 'none':'block');
      return;
    }
  }
  var tiddlerWrapper = document.getElementById('tiddler'+title);
  var theTextarea = wikibar_resolveTiddlerEditor(tiddlerWrapper);
  if(!theTextarea){
    clearMessage();
    displayMessage('WikiBar only works in tiddler edit mode now');
    return;
  }else{
    if(!theTextarea.id){ theTextarea.id = 'editor'+title; }
    if(!theTextarea.parentNode.id){ theTextarea.parentNode.id='editorWrapper'+title;  }
  }
  if(theWikibar){
    theWikibar = document.getElementById('wikibar'+title);
  }else{
    var editorWrapper = wikibar_resolveTiddlerEditorWrapper(theTextarea);
    theWikibar = createTiddlyElement(tiddlerWrapper, 'div', 'wikibar'+title, 'toolbar');
    addClass(theWikibar, 'wikibar');
    var previewer = document.getElementById('previewer'+title);
    if(previewer){
      tiddlerWrapper.insertBefore(theWikibar, previewer);
    }else{
      tiddlerWrapper.insertBefore(theWikibar, editorWrapper);
    }
  }
  wikibar_createMenu(theWikibar,wikibarStore,title,theTextarea);
  if(config.options['chkWikibarSetEditorHeight'] && config.options['txtWikibarEditorRows']){
    theTextarea.rows = config.options['txtWikibarEditorRows'];
  }
  setStylesheet(
    '.wikibar{text-align:left;visibility:visible;margin:2px;padding:1px;}.previewer{overflow:auto;display:block;border:1px solid;}#colorPicker{position:absolute;display:none;z-index:10;margin:0px;padding:0px;}#colorPicker table{margin:0px;padding:0px;border:2px solid #000;border-spacing:0px;border-collapse:collapse;}#colorPicker td{margin:0px;padding:0px;border:1px solid;font-size:11px;text-align:center;cursor:auto;}#colorPicker .header{background-color:#fff;}#colorPicker .button{background-color:#fff;cursor:pointer;cursor:hand;}#colorPicker .button:hover{padding-top:3px;padding-bottom:3px;color:#fff;background-color:#136;}#colorPicker .cell{padding:4px;font-size:7px;cursor:crosshair;}#colorPicker .cell:hover{padding:10px;}.wikibarPopup{position:absolute;z-index:10;border:1px solid #014;color:#014;background-color:#cef;}.wikibarPopup table{margin:0;padding:0;border:0;border-spacing:0;border-collapse:collapse;}.wikibarPopup .button:hover{color:#eee;background-color:#014;}.wikibarPopup .disabled{color:#888;}.wikibarPopup .disabled:hover{color:#888;background-color:#cef;}.wikibarPopup tr .seperator hr{margin:0;padding:0;background-color:#cef;width:100%;border:0;border-top:1px dashed #014;}.wikibarPopup tr .icon{font-family:verdana;font-weight:bolder;}.wikibarPopup tr .marker{font-family:verdana;font-weight:bolder;}.wikibarPopup td{font-size:0.9em;padding:2px;}.wikibarPopup input{border:0;border-bottom:1px solid #014;margin:0;padding:0;font-family:arial;font-size:100%;background-color:#fff;}',
  	'WikiBarStyleSheet');
}
function wikibar_createMenu(place,toolset,title,editor){
  if(!wikibar_isValidMenuItem(toolset)){return;}
  if(!(toolset.TYPE=='MAIN_MENU' || toolset.TYPE=='MENU')){ return; }
    for(var key in toolset){
      if(key.substring(0,9)=='SEPERATOR'){
        wikibar_createMenuSeperator(place);
        continue;
      }
      if(key.substring(0,8)=='DYNAITEM'){
        var dynaTools = toolset[key](title,editor);
        if(dynaTools.TYPE && dynaTools.TYPE=='MENU'){
          wikibar_createMenuItem(place,dynaTools,null,editor,title);
        }else{
          dynaTools.TYPE = 'MENU';
          wikibar_createMenu(place, dynaTools, title, editor);
        }
        continue;
      }
      if((toolset[key].TYPE!='MENU' && toolset[key].TYPE!='MAIN_MENU') && !toolset[key].HANDLER){continue;}
      wikibar_createMenuItem(place,toolset,key,editor,title);
    }
}
function wikibar_createMenuItem(place,toolset,key,editor,title){
  if(!key){
    var tool = toolset;
  }else{
    tool = toolset[key];
    tool.key = key;
  }
  if(!wikibar_isValidMenuItem(tool)){return;}
  var toolIsOnMainMenu = (toolset.TYPE=='MAIN_MENU');
  var toolIsMenu = (tool.TYPE=='MENU');
  var theButton;
  if(toolIsOnMainMenu){
    theButton = createTiddlyButton(
                  place,
                  '',
                  (tool.TOOLTIP? tool.TOOLTIP : ''),
                  (toolIsMenu? wikibar_onClickMenuItem : wikibar_onClickItem),
                  'button');
    theButton.innerHTML = (tool.CAPTION? tool.CAPTION : key);
    theButton.isOnMainMenu = true;
    addClass(theButton, (toolIsMenu? 'menu' : 'item'));
  	place.appendChild( document.createTextNode('\n') );
    if(!toolIsMenu){
      if(config.options['chkWikibarPopmenuOnMouseOver']){
        theButton.onmouseover = function(e){ wikibarPopup.remove(); };
      }
    }
  }else{
    theButton=createTiddlyElement(place, 'tr',key,'button');
    theButton.title = (tool.TOOLTIP? tool.TOOLTIP : '');
    theButton.onclick = (toolIsMenu? wikibar_onClickMenuItem : wikibar_onClickItem);
    var tdL = createTiddlyElement(theButton, 'td','','marker');
    var td = createTiddlyElement(theButton, 'td');
    var tdR = createTiddlyElement(theButton, 'td','','marker');
    td.innerHTML = (tool.CAPTION? tool.CAPTION : key);
    if(toolIsMenu){
      tdR.innerHTML='&nbsp;&nbsp;&rsaquo;';
    }
    if(tool.SELECTED){
      tdL.innerHTML = '&radic; ';
      addClass(theButton, 'selected');
    }
    if(tool.DISABLED){
      addClass(theButton, 'disabled');
    }
  }
  theButton.tiddlerTitle = title;
  theButton.toolItem = tool;
  theButton.editor = editor;
  theButton.tabIndex = 999;
  if(toolIsMenu){
    if(config.options['chkWikibarPopmenuOnMouseOver']){
      theButton.onmouseover = wikibar_onClickMenuItem;
    }
  }
}
function wikibar_createMenuSeperator(place){
  if(place.id.substring(0,7)=='wikibar')  { return; }
  var onclickSeperator=function(e){
  	if(!e){ e = window.event; }
  	e.cancelBubble = true;
    if (e.stopPropagation){ e.stopPropagation();  }
  	return(false);
  };
  var theButton=createTiddlyElement(place,'tr','','seperator');
  var td = createTiddlyElement(theButton, 'td','','seperator');
  td.colSpan=3;
  theButton.onclick=onclickSeperator;
	td.innerHTML = '<hr>';
}
function wikibar_genWikibarAbout(){
  var toolset={};
  toolset.version = {
    CAPTION: '<center>WikiBar ' +
              config.macros.wikibar.major + '.' +
              config.macros.wikibar.minor + '.' +
              config.macros.wikibar.revision +
              (config.macros.wikibar.beta? ' beta '+config.macros.wikibar.beta : '') +
              '</center>',
    HANDLER: function(){}
  };
  toolset.SEPERATOR = {};
  toolset.author = {
    CAPTION: '<center>Arphen Lin<br>arphenlin@gmail.com</center>',
    TOOLTIP: 'send mail to the author',
    HANDLER: function(){ window.open('mailto:arphenlin@gmail.com'); }
  };
  toolset.website = {
    CAPTION: '<center>aiddlywiki.sourceforge.net</center>',
    TOOLTIP: 'go to the web site of WikiBar',
    HANDLER: function(){ window.open('http:\/\/aiddlywiki.sourceforge.net/'); }
  };
  return toolset;
}
function wikibar_genWikibarOptions(title, editor){
  var toolset={};
  toolset.popOnMouseOver = {
    CAPTION:'popup menu on mouse over',
    SELECTED: config.options['chkWikibarPopmenuOnMouseOver'],
    HANDLER: function(param){
      config.options['chkWikibarPopmenuOnMouseOver'] = !config.options['chkWikibarPopmenuOnMouseOver'];
      saveOptionCookie('chkWikibarPopmenuOnMouseOver');
      var title = param.button.tiddlerTitle;
      var wikibar = document.getElementById('wikibar'+title);
      if(wikibar){ wikibar.parentNode.removeChild(wikibar); }
      wikibar_createWikibar(title);
    }
  };
  toolset.setEditorSize = {
    CAPTION:'set editor height: <input id=\"txtWikibarEditorRows\" type=text size=1 MAXLENGTH=3 value=\"' +
            (config.options['txtWikibarEditorRows']? config.options['txtWikibarEditorRows']:editor.rows) + '\"> ok',
    HANDLER: function(param){
      var input = document.getElementById('txtWikibarEditorRows');
      if(input){
        var rows = parseInt(input.value, 10);
        if(!isNaN(rows)){
          var editor = param.button.editor;
          editor.rows = rows;
        }else{
          rows=config.maxEditRows;
        }
        config.options['txtWikibarEditorRows'] = rows;
        saveOptionCookie('txtWikibarEditorRows');
        config.maxEditRows = rows;
      }
    }
  };
  toolset.setEditorSizeOnLoadingWikibar = {
    CAPTION:'set editor height on loading wikibar',
    SELECTED: config.options['chkWikibarSetEditorHeight'],
    HANDLER: function(param){
      config.options['chkWikibarSetEditorHeight'] = !config.options['chkWikibarSetEditorHeight'];
      saveOptionCookie('chkWikibarSetEditorHeight');
      if(config.options['chkWikibarSetEditorHeight']){
        var rows = config.options['txtWikibarEditorRows'];
        if(!isNaN(rows)){ rows = 15; }
        var editor = param.button.editor;
        editor.rows = rows;
        config.options['txtWikibarEditorRows'] = rows;
        saveOptionCookie('txtWikibarEditorRows');
      }
    }
  };
  toolset.SEPERATOR = {};
  toolset.update = {
    CAPTION: 'check for updates',
    DISABLED: true,
    HANDLER: function(){}
  };
  return toolset;
}
function wikibar_genPaletteSelector(){
  try{
  	var cpTiddlers = store.getTaggedTiddlers('ColorPalettes');
  	if(!cpTiddlers) { return; }
  	var palettes=[];
  	palettes.push(wikibarColorTool.defaultPaletteName);
  	for(var i=0; i<cpTiddlers.length; i++){
  		palettes.push(cpTiddlers[i].title.trim());
  	}
    var toolset={};
    for(i=0; i<palettes.length; i++){
      toolset[palettes[i]] = {
        TOOLTIP: palettes[i],
        SELECTED: (palettes[i]==wikibarColorTool.paletteName),
        HANDLER: wikibar_doSelectPalette
      };
    }
    return toolset;
  }catch(ex){ return null; }
}
function wikibar_onClickItem(e){
	if(!e){ e = window.event; }
	var theTarget = resolveTarget(e);
	if(theTarget.tagName=='INPUT'){
    e.cancelBubble = true;
    if (e.stopPropagation){ e.stopPropagation(); }
    return;
	}
	var theButton = wikibar_resolveTargetButton(theTarget);
	if(!theButton){ return(false);  }
  	var o = theButton.toolItem;
    if(!o) { return; }
    var param = {
      event: e,
      button: theButton
    };
    if(o.HANDLER){ o.HANDLER(param);  }
  if(o.DISABLED){
    e.cancelBubble = true;
    if (e.stopPropagation){ e.stopPropagation(); }
  }
	return(false);
}
function wikibar_onClickMenuItem(e){
	if(!e){ e = window.event; }
	var theButton = wikibar_resolveTargetButton(resolveTarget(e));
	if(!theButton){ return(false);  }
	e.cancelBubble = true;
	if (e.stopPropagation){ e.stopPropagation(); }
    var title = theButton.tiddlerTitle;
    var editor = theButton.editor;
    var tool = theButton.toolItem;
    if(!tool) { return; }
    var popup = wikibarPopup.create(this);
  	if(popup){
      wikibar_createMenu(popup,tool,title,editor);
      if(!popup.hasChildNodes()){
        wikibarPopup.remove();
      }else{
        wikibarPopup.show(popup, false);
      }
    }
	return(false);
}
var wikibarColorTool = {
  defaultPaletteName : 'default',
  defaultColumns : 16,
  defaultPalette : [
    '#FFF','#DDD','#CCC','#BBB','#AAA','#999','#666','#333','#111','#000','#FC0','#F90','#F60','#F30','#C30','#C03',
    '#9C0','#9D0','#9E0','#E90','#D90','#C90','#FC3','#FC6','#F96','#F63','#600','#900','#C00','#F00','#F36','#F03',
    '#CF0','#CF3','#330','#660','#990','#CC0','#FF0','#C93','#C63','#300','#933','#C33','#F33','#C36','#F69','#F06',
    '#9F0','#CF6','#9C3','#663','#993','#CC3','#FF3','#960','#930','#633','#C66','#F66','#903','#C39','#F6C','#F09',
    '#6F0','#9F6','#6C3','#690','#996','#CC6','#FF6','#963','#630','#966','#F99','#F39','#C06','#906','#F3C','#F0C',
    '#3F0','#6F3','#390','#6C0','#9F3','#CC9','#FF9','#C96','#C60','#C99','#F9C','#C69','#936','#603','#C09','#303',
    '#0C0','#3C0','#360','#693','#9C6','#CF9','#FFC','#FC9','#F93','#FCC','#C9C','#969','#939','#909','#636','#606',
    '#060','#3C3','#6C6','#0F0','#3F3','#6F6','#9F9','#CFC','#9CF','#FCF','#F9F','#F6F','#F3F','#F0F','#C6C','#C3C',
    '#030','#363','#090','#393','#696','#9C9','#CFF','#39F','#69C','#CCF','#C9F','#96C','#639','#306','#90C','#C0C',
    '#0F3','#0C3','#063','#396','#6C9','#9FC','#9CC','#06C','#369','#99F','#99C','#93F','#60C','#609','#C3F','#C0F',
    '#0F6','#3F6','#093','#0C6','#3F9','#9FF','#699','#036','#039','#66F','#66C','#669','#309','#93C','#C6F','#90F',
    '#0F9','#6F9','#3C6','#096','#6FF','#6CC','#366','#069','#36C','#33F','#33C','#339','#336','#63C','#96F','#60F',
    '#0FC','#6FC','#3C9','#3FF','#3CC','#399','#033','#39C','#69F','#00F','#00C','#009','#006','#003','#63F','#30F',
    '#0C9','#3FC','#0FF','#0CC','#099','#066','#3CF','#6CF','#09C','#36F','#0CF','#09F','#06F','#03F','#03C','#30C'
  ],
	colorPicker : null,
  pickColorHandler: null,
  userData: null
};
wikibarColorTool.paletteName = wikibarColorTool.defaultPaletteName;
wikibarColorTool.columns = wikibarColorTool.defaultColumns;
wikibarColorTool.palette = wikibarColorTool.defaultPalette;
wikibarColorTool.onPickColor = function(e){
	if (!e){ e = window.event; }
	var theCell = resolveTarget(e);
	if(!theCell){ return(false); }
    color = theCell.bgColor.toLowerCase();
    if(!color)  { return; }
    wikibarColorTool.displayColorPicker(false);
    if(wikibarColorTool.pickColorHandler){
      wikibarColorTool.pickColorHandler(color, wikibarColorTool.userData);
    }
	return(false);
};
wikibarColorTool.onMouseOver = function(e){
	if (!e){ e = window.event; }
	var theButton = resolveTarget(e);
	if(!theButton){ return(false);  }
  	if(!wikibarColorTool)  { return; }
    color = theButton.bgColor.toUpperCase();
    if(!color)  { return; }
    td=document.getElementById('colorPickerInfo');
  	if(!td) { return; }
  	td.bgColor = color;
  	td.innerHTML = '<span style=\"color:#000;\">'+color+'</span>&nbsp;&nbsp;&nbsp;' +
  	               '<span style=\"color:#fff;\">'+color+'</span>';
	e.cancelBubble = true;
	if (e.stopPropagation){ e.stopPropagation(); }
	return(false);
};
wikibarColorTool.openColorPicker = function(theTarget, pickColorHandler, userData){
  wikibarColorTool.skipClickDocumentEvent = true;
  wikibarColorTool.pickColorHandler = pickColorHandler;
  wikibarColorTool.userData = userData;
  wikibarColorTool.moveColorPicker(theTarget);
};
wikibarColorTool.convert3to6HexColor = function(c){
  c=c.trim();
  var rx=/^\#(\d|[a-f])(\d|[a-f])(\d|[a-f])$/gi;
  return (rx.test(c)? c.replace(rx, '#$1$1$2$2$3$3') : c);
};
wikibarColorTool.numToHexColor = function (n){
  if(typeof(n)=='number' && (n>=0 && n<=255)) {
  		s = n.toString(16).toLowerCase();
  		return ((s.length==1)? '0'+s : s);
  }else{
	 return null;
	}
};
wikibarColorTool.renderColorPalette = function(){
	if(wikibarColorTool.paletteName==wikibarColorTool.defaultPaletteName){
		wikibarColorTool.palette=wikibarColorTool.defaultPalette;
		wikibarColorTool.columns=wikibarColorTool.defaultColumns;
		return;
	}
	tiddlerText = (store.getTiddlerText(wikibarColorTool.paletteName, '')).trim();
	if(tiddlerText.length<=0) { return; }
	var cpContents = tiddlerText.split('\n');
	var colors=[];
	columns = wikibarColorTool.defaultColumns;
	var tmpArray=null;
	errCount=0;
	for(var i=0; i<cpContents.length; i++){
		cpLine=cpContents[i].trim();
    if( (!cpLine) || (cpLine.length<=0) || (cpLine.charAt(0) == '#') ){ continue; }
		if(cpLine.substring(0,8).toLowerCase()=='columns:'){
			tmpArray = cpLine.split(':');
			try{
				columns = parseInt(tmpArray[1],10);
			}catch(ex){
				columns = wikibarColorTool.defaultColumns;
			}
		}else{
			tmpArray = cpLine.replace('\t', ' ').split(/[ ]{1,}/);
			try{
				color='';
				for(var j=0; j<3; j++){
          c=parseInt(tmpArray[j].trim(), 10);
          if(isNaN(c)){
						break;
          }else{
						c=wikibarColorTool.numToHexColor(c);
						if(!c) {break;}
            color+=c;
					}
				}
				if(color.length==6){
					colors.push('#'+color);
				}	else {
					throw 'error';
				}
			}catch(ex){
			}
		}
	}
	if(colors.length>0){
		wikibarColorTool.palette = colors;
		wikibarColorTool.columns = columns;
	}else{
		throw 'renderColorPalette(): No color defined in the palette.';
	}
};
wikibarColorTool.displayColorPicker = function(visible){
  if(wikibarColorTool.colorPicker){
    wikibarColorTool.colorPicker.style.display = (visible? 'block' : 'none');
  }
};
wikibarColorTool.moveColorPicker = function(theTarget){
  if(!wikibarColorTool.colorPicker){
  	wikibarColorTool.createColorPicker();
  }
	var cp = wikibarColorTool.colorPicker;
	var rootLeft = findPosX(theTarget);
  var rootTop = findPosY(theTarget);
  var popupLeft = rootLeft;
  var popupTop = rootTop;
  var popupWidth = cp.offsetWidth;
  var winWidth = findWindowWidth();
  if(popupLeft + popupWidth > winWidth){
	  popupLeft = winWidth - popupWidth;
	}
  cp.style.left = popupLeft + 'px';
  cp.style.top = popupTop + 'px';
  wikibarColorTool.displayColorPicker(true);
};
wikibarColorTool.createColorPicker = function(unused, palette){
  if(palette){	wikibarColorTool.paletteName=palette; }
	wikibarColorTool.renderColorPalette();
	wikibarColorTool.colorPicker = document.createElement('div');
	wikibarColorTool.colorPicker.id = 'colorPicker';
	document.body.appendChild(wikibarColorTool.colorPicker);
  var theTable = document.createElement('table');
  wikibarColorTool.colorPicker.appendChild(theTable);
  var theTR = document.createElement('tr');
	theTable.appendChild(theTR);
	var theTD = document.createElement('td');
	theTD.className = 'header';
	theTD.colSpan = wikibarColorTool.columns;
	theTD.innerHTML = wikibarColorTool.paletteName;
  theTR.appendChild(theTD);
  for(var i=0; i<wikibarColorTool.palette.length; i++){
    if((i%wikibarColorTool.columns)===0){
      theTR = document.createElement('tr');
      theTable.appendChild(theTR);
    }
    theTD = document.createElement('td');
    theTD.className = 'cell';
    theTD.bgColor = wikibarColorTool.convert3to6HexColor(wikibarColorTool.palette[i]);
    theTD.onclick = wikibarColorTool.onPickColor;
    theTD.onmouseover = wikibarColorTool.onMouseOver;
    theTR.appendChild(theTD);
  }
  rest = wikibarColorTool.palette.length % wikibarColorTool.columns;
  if(rest>0){
    theTD = document.createElement('td');
		theTD.colSpan = wikibarColorTool.columns-rest;
    theTD.bgColor = '#000000';
    theTR.appendChild(theTD);
  }
  theTR = document.createElement('tr');
	theTable.appendChild(theTR);
	theTD = document.createElement('td');
	theTD.colSpan = wikibarColorTool.columns;
	theTD.id = 'colorPickerInfo';
  theTR.appendChild(theTD);
};
wikibarColorTool.onDocumentClick = function(e){
	if (!e){ e = window.event; }
	if(wikibarColorTool.skipClickDocumentEvent) {
	  wikibarColorTool.skipClickDocumentEvent = false;
    return true;
	}
	if((!e.eventPhase) || e.eventPhase == Event.BUBBLING_PHASE || e.eventPhase == Event.AT_TARGET){
    wikibarColorTool.displayColorPicker(false);
  }
	return true;
};
function wikibar_doSelectPalette(param){
	clearMessage();
	var theButton = param.button;
	if(!theButton.toolItem.key)  { return; }
	var palette = theButton.toolItem.key;
	var oldPaletteName = wikibarColorTool.paletteName;
	if(oldPaletteName != palette){
		try{
			wikibarColorTool.createColorPicker(theButton, palette);
			displayMessage('Palette \"'+palette+'\" ('+ wikibarColorTool.palette.length +' colors) is selected');
		}catch(ex){
			errMsg = ex;
			if(errMsg.substring(0,18)=='renderColorPalette'){
				displayMessage('Invalid palette \"' + palette + '\", please check it out!');
				wikibarColorTool.createColorPicker(theButton, oldPaletteName);
			}
		}
	}
}
var wikibarPopup = {
  skipClickDocumentEvent: false,
	stack: []
};
wikibarPopup.resolveRootPopup = function(o){
  if(o.isOnMainMenu){  return null; }
  if(o.className.substring(0,12)=='wikibarPopup'){  return o;}
  return wikibarPopup.resolveRootPopup(o.parentNode);
};
wikibarPopup.create = function(root){
  for(var i=0; i<wikibarPopup.stack.length; i++){
    var p=wikibarPopup.stack[i];
    if(p.root==root){
      wikibarPopup.removeFrom(i+1);
      return null;
    }
  }
  var rootPopup = wikibarPopup.resolveRootPopup(root);
  if(!rootPopup){
    wikibarPopup.remove();
  }else{
    wikibarPopup.removeFromRootPopup(rootPopup);
  }
	var popup = createTiddlyElement(document.body,'div','wikibarPopup'+root.toolItem.key,'wikibarPopup');
	var pop = createTiddlyElement(popup,'table','','');
	wikibarPopup.stack.push({rootPopup: rootPopup, root: root, popup: popup});
	return pop;
};
wikibarPopup.show = function(unused,slowly){
	var curr = wikibarPopup.stack[wikibarPopup.stack.length-1];
	var overlayWidth = 1;
  var rootLeft, rootTop, rootWidth, rootHeight, popupLeft, popupTop, popupWidth;
  if(curr.rootPopup){
  	rootLeft = findPosX(curr.rootPopup);
  	rootTop = findPosY(curr.root);
  	rootWidth = curr.rootPopup.offsetWidth;
  	popupLeft = rootLeft + rootWidth - overlayWidth;
  	popupTop = rootTop;
  }else{
  	rootLeft = findPosX(curr.root);
  	rootTop = findPosY(curr.root);
  	rootHeight = curr.root.offsetHeight;
  	popupLeft = rootLeft;
  	popupTop = rootTop + rootHeight;
  }
	var winWidth = findWindowWidth();
	popupWidth = curr.popup.offsetWidth;
	if(popupLeft + popupWidth > winWidth){
		popupLeft = rootLeft - popupWidth + overlayWidth;
	}
	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));
	}
};
wikibarPopup.remove = function(){
	if(wikibarPopup.stack.length > 0){
		wikibarPopup.removeFrom(0);
  }
};
wikibarPopup.removeFrom = function(from){
	for(var t=wikibarPopup.stack.length-1; t>=from; t--){
		var p = wikibarPopup.stack[t];
		removeClass(p.root,'highlight');
		p.popup.parentNode.removeChild(p.popup);
  }
	wikibarPopup.stack = wikibarPopup.stack.slice(0,from);
};
wikibarPopup.removeFromRootPopup = function(from){
  for(var t=0; t<wikibarPopup.stack.length; t++){
    var p = wikibarPopup.stack[t];
    if(p.rootPopup==from){
      wikibarPopup.removeFrom(t);
      break;
    }
  }
};
wikibarPopup.onDocumentClick = function(e){
	if (!e){ e = window.event; }
	if(wikibarPopup.skipClickDocumentEvent){
	 wikibarPopup.skipClickDocumentEvent=false;
	 return true;
	}
	if((!e.eventPhase) || e.eventPhase == Event.BUBBLING_PHASE || e.eventPhase == Event.AT_TARGET){
		wikibarPopup.remove();
	}
	return true;
};
var wikibarStore = {
  TYPE: 'MAIN_MENU',
  help:{
    TYPE:'MENU',
    CAPTION: '<font face=\"verdana\">?</font>',
    TOOLTIP:     'about WikiBar',
    options:{
      TYPE:'MENU',
      DYNAITEM: wikibar_genWikibarOptions
    },
    about:{
      TYPE:'MENU',
      DYNAITEM: wikibar_genWikibarAbout
    }
  },
  preview:{
    TOOLTIP:     'preview this tiddler',
    CAPTION: '<font face=\"verdana\">&infin;</font>',
    HANDLER: wikibar_doPreview
  },
	line:{
		TOOLTIP:    '<hr>',
		CAPTION: '<font face=\"verdana\">&mdash;</font>',
		syntax: '\n----\n',
		HANDLER: wikibar_editFormatByCursor
	},
	crlf:{
		TOOLTIP:    'new line',
		CAPTION: '<font face=\"verdana\">&para;</font>',
		syntax: '\n',
		HANDLER: wikibar_editFormatByCursor
	},
	selectAll:{
		TOOLTIP:    'select all',
		CAPTION: '<font face=\"verdana\">&sect;</font>',
		HANDLER: wikibar_editSelectAll
	},
	deleteSelected:{
		TOOLTIP:    'delete selected',
		CAPTION: '<font face=\"verdana\">&times;</font>',
		syntax: '',
		HANDLER: wikibar_editFormat
	},
  textFormat:{
    TYPE: 'MENU',
    CAPTION: 'text',
    TOOLTIP: 'text formatters',
    ignore:{
			TOOLTIP:     'ignore wiki word',
			CAPTION: 'ignore wikiWord',
			syntax:  '~user_text',
			hint:    'wiki_word',
			HANDLER:    wikibar_editFormatByWord
		},
		bolder:{
			TOOLTIP:     'Текст жирным',
			CAPTION: '<strong>жирно</strong>',
			syntax:  "++user_text++",
			hint:		 'bold_text',
			HANDLER:    wikibar_editFormatByWord
		},
		italic:{
			TOOLTIP:    'Текст курсивом',
			CAPTION: '<em>курсив</em>',
			syntax: '\/\/user_text\/\/',
			hint:		'italic_text',
			HANDLER: wikibar_editFormatByWord
		},
		underline:{
			TOOLTIP:    'underline text',
			CAPTION: '<u>подчеркнуто</u>',
			syntax: '__user_text__',
			hint:		'underline_text',
			HANDLER: wikibar_editFormatByWord
		},
		strikethrough:{
			TOOLTIP:    'strikethrough text',
			CAPTION: '<strike>зачеркнуто</strike>',
			syntax: '==user_text==',
			hint:		'strikethrough_text',
			HANDLER: wikibar_editFormatByWord
		},
		superscript:{
			TOOLTIP:    'superscript text',
			CAPTION: 'X<sup>верхний индекс</sup>',
			syntax: '^^user_text^^',
			hint:		'superscript_text',
			HANDLER: wikibar_editFormatByWord
		},
		subscript:{
			TOOLTIP:    'subscript text',
			CAPTION: 'X<sub>нижний индекс</sub>',
			syntax: '~~user_text~~',
			hint:		'subscript_text',
			HANDLER: wikibar_editFormatByWord
		},
		comment:{
			TOOLTIP:    'comment text',
			CAPTION: 'комментарий',
			syntax: '/%user_text%/',
			hint:		'comment_text',
			HANDLER: wikibar_editFormatByWord
		},
		monospaced:{
			TOOLTIP:    'monospaced text',
			CAPTION: '<code>моноширинный</code>',
			syntax: '{{{user_text}}}',
			hint:		'monospaced_text',
			HANDLER: wikibar_editFormatByWord
		}
  },
  paragraph:{
    TYPE: 'MENU',
    TOOLTIP: 'форматирование абзацев',
    list:{
      TYPE: 'MENU',
      TOOLTIP: 'list tools',
      bullet:{
  			TOOLTIP:    'bullet point',
  			syntax: '*user_text',
  			hint:		'bullet_text',
  			HANDLER: wikibar_editFormatByLine
  		},
  		numbered:{
  			TOOLTIP:    'numbered list',
  			syntax: '#user_text',
  			hint:		'numbered_text',
  			HANDLER: wikibar_editFormatByLine
  		}
    },
    heading:{
      TYPE: 'MENU',
      heading1:{
  		  CAPTION:'<h1>Heading 1</h1>',
  			TOOLTIP:    'Heading 1',
  			syntax: '!user_text',
  			hint:		'heading_1',
  			HANDLER: wikibar_editFormatByLine
  		},
  		heading2:{
  		  CAPTION:'<h2>Heading 2<h2>',
  			TOOLTIP:    'Heading 2',
  			syntax: '!!user_text',
  			hint:		'heading_2',
  			HANDLER: wikibar_editFormatByLine
  		},
  		heading3:{
  		  CAPTION:'<h3>Heading 3</h3>',
  			TOOLTIP:    'Heading 3',
  			syntax: '!!!user_text',
  			hint:		'heading_3',
  			HANDLER: wikibar_editFormatByLine
  		},
  		heading4:{
  		  CAPTION:'<h4>Heading 4</h4>',
  			TOOLTIP:    'Heading 4',
  			syntax: '!!!!user_text',
  			hint:		'heading_4',
  			HANDLER: wikibar_editFormatByLine
  		},
  		heading5:{
  		  CAPTION:'<h5>Heading 5</h5>',
  			TOOLTIP:    'Heading 5',
  			syntax: '!!!!!user_text',
  			hint:		'heading_5',
  			HANDLER: wikibar_editFormatByLine
  		}
    },
    comment:{
      TYPE: 'MENU',
      commentByLine:{
  			CAPTION:'comment by line',
  			TOOLTIP:    'line comment',
  			syntax: '/%user_text%/',
  			hint:		'comment_text',
  			HANDLER: wikibar_editFormatByLine
  		},
  		commentByBlock:{
  			CAPTION:'comment by block',
  			TOOLTIP:    'block comment',
  			syntax: '/%\nuser_text\n%/',
  			hint:		'comment_text',
  			byBlock: true,
  			HANDLER: wikibar_editFormatByLine
  		}
    },
    monospaced:{
      TYPE: 'MENU',
  		monosByLine:{
  			CAPTION: 	'monospaced by line',
  			TOOLTIP:    'line monospaced',
  			syntax: '{{{\nuser_text\n}}}',
  			hint:		'monospaced_text',
  			HANDLER: wikibar_editFormatByLine
  		},
  		monosByBlock:{
  			CAPTION: 	'monospaced by block',
  			TOOLTIP:    'block monospaced',
  			syntax: '{{{\nuser_text\n}}}',
  			hint:		'monospaced_text',
  			byBlock: true,
  			HANDLER: wikibar_editFormatByLine
  		}
    },
    quote:{
      TYPE: 'MENU',
  		quoteByLine:{
  			CAPTION: 	'quote by line',
  			TOOLTIP:    'line quote',
  			syntax: '>user_text',
  			hint:		'quote_text',
  			HANDLER: wikibar_editFormatByLine
  		},
  		quoteByBlcok:{
  			CAPTION: 	'quote by block',
  			TOOLTIP:    'block quote',
  			syntax: '<<<\nuser_text\n<<<',
  			hint:		'quote_text',
  			byBlock: true,
  			HANDLER: wikibar_editFormatByLine
  		}
    },
    plugin:{
      TYPE: 'MENU',
      code:{
  			CAPTION: 	'code area',
  			TOOLTIP:    'block monospaced for plugin',
  			syntax: '\n\/\/{{{\nuser_text\n\/\/}}}\n',
  			hint:		'monospaced_plugin_code',
  			byBlock: true,
  			HANDLER: wikibar_editFormatByLine
  		},
  		commentByLine:{
  			CAPTION: 	'comment by line',
  			TOOLTIP:    'line comment',
  			syntax: '\/\/user_text',
  			hint:		'plugin_comment',
  			HANDLER: wikibar_editFormatByLine
  		},
  		commentByBlock:{
  			CAPTION: 	'comment by block',
  			TOOLTIP:    'block comment',
  			syntax: '\/\***\nuser_text\n***\/',
  			hint:		'plugin_comment',
  			byBlock: true,
  			HANDLER: wikibar_editFormatByLine
  		}
    },
    css:{
      TYPE: 'MENU',
      code:{
  			CAPTION: 	'code area',
  			TOOLTIP:    'block monospaced for css',
  			syntax: '\n\nuser_text\n\n',
  			hint:		'monospaced_css_code',
  			byBlock: true,
  			HANDLER: wikibar_editFormatByLine
  		},
  		commentByLine:{
  			CAPTION: 	'comment by line',
  			TOOLTIP:    'line comment',
  			syntax: '',
  			hint:		'css_comment',
  			HANDLER: wikibar_editFormatByLine
  		},
  		commentByBlock:{
  			CAPTION: 	'comment by block',
  			TOOLTIP:    'block comment',
  			syntax: '',
  			hint:		'css_comment',
  			byBlock: true,
  			HANDLER: wikibar_editFormatByLine
  		}
    }
  },
  color:{
    TYPE: 'MENU',
    TOOLTIP: 'color tools',
    highlight:{
		  CAPTION:'highlight text',
			TOOLTIP:    'highlight text',
			syntax: '@@user_text@@',
			hint:		'highlight_text',
			HANDLER: wikibar_editFormatByWord
		},
		color:{
		  CAPTION:'text color',
			TOOLTIP:    'text color',
			hint:		'your_text',
			syntax: '@@color(%1):user_text@@',
			HANDLER:   wikibar_getColorCode,
			doMore: wikibar_editFormatByWord
		},
		bgcolor:{
		  CAPTION:'background color',
			TOOLTIP:    'background color',
			hint:		'your_text',
			syntax: '@@bgcolor(%1):user_text@@',
			HANDLER: wikibar_getColorCode,
			doMore: wikibar_editFormatByWord
		},
		colorcode:{
      CAPTION:'color code',
      TOOLTIP:    'insert color code',
      syntax: '%1',
      HANDLER: wikibar_getColorCode,
      doMore: wikibar_editFormatByCursor
    },
    'color palette':{
      TYPE:'MENU',
      DYNAITEM: wikibar_genPaletteSelector,
  		SEPERATOR:{},
  		morePalette:{
  		  CAPTION:'more palettes',
  		  TOOLTIP:'get more palettes',
  		  HANDLER: wikibar_getMorePalette
  		}
    }
  },
  link:{
    TYPE: 'MENU',
    TOOLTIP: 'insert link',
    wiki:{
		  CAPTION:'wiki link',
			TOOLTIP:    'wiki link',
			syntax: '[[user_text]]',
			hint:		'wiki_word',
			HANDLER: wikibar_editFormatByWord
		},
		pretty:{
			CAPTION: 	'pretty link',
			TOOLTIP:    'pretty link',
			syntax: '[[user_text|%1]]',
			hint:		'pretty_word',
			param:	'PrettyLink Target',
			HANDLER:   wikibar_getLinkUrl,
			doMore: wikibar_editFormatByWord
		},
		url:{
			TOOLTIP:    'url link',
			syntax: '[[user_text|%1]]',
			hint:		'your_text',
			param:	'http:\/\/...',
			HANDLER:   wikibar_getLinkUrl,
			doMore: wikibar_editFormatByWord
		},
		image:{
			TOOLTIP:    'image link',
			syntax: '[img[user_text|%1]]',
			hint:		'alt_text',
			param:	'image/icon.jpg',
			HANDLER:   wikibar_getLinkUrl,
			doMore: wikibar_editFormatByWord
		}
  },
  macro:{},
  more:{
    TYPE: 'MENU',
    TOOLTIP: 'more tools',
    table:{
      TYPE: 'MENU',
      TOOLTIP: 'table',
      table:{
  		  CAPTION:'create table',
  			TOOLTIP:    'create a new table',
  			syntax: '\n%1\n',
  			HANDLER: wikibar_getTableRowCol,
  			doMore: wikibar_editFormatByWord
  		},
  		header:{
  			TOOLTIP:    'table header text',
  			syntax: '|user_text|c',
  			hint:		'table_header',
  			HANDLER: wikibar_editFormatByWord
  		},
  		cell:{
  			TOOLTIP:    'create a tabel cell',
  			syntax: '|user_text|',
  			hint:		'your_text',
  			HANDLER: wikibar_editFormatByWord
  		},
  		columnHeader:{
  		  CAPTION:'column header',
  			TOOLTIP:    'create a column header cell',
  			syntax: '|!user_text|',
  			hint:		'column_header',
  			HANDLER: wikibar_editFormatByWord
  		},
  	  cell:{
  	    TYPE: 'MENU',
        CAPTION: 'cell options',
    		bgcolor:{
    			CAPTION: 	'background color',
    			TOOLTIP:    'cell bgcolor',
    			syntax: '|bgcolor(%1):user_text|',
    			hint:		'your_text',
    			HANDLER: wikibar_getColorCode,
    			doMore: wikibar_editFormatByTableCell
    		},
    		alignLeft:{
    			CAPTION: 	'align left',
    			TOOLTIP:    'left align cell text',
    			syntax: '|user_text|',
    			hint:		'your_text',
    			HANDLER: wikibar_editFormatByTableCell
    		},
    		alignCenter:{
    			CAPTION: 	'align center',
    			TOOLTIP:    'center align cell text',
    			syntax: '| user_text |',
    			hint:		'your_text',
    			HANDLER: wikibar_editFormatByTableCell
    		},
    		alignRight:{
    			CAPTION: 	'align right',
    			TOOLTIP:    'right align cell text',
    			syntax: '| user_text|',
    			hint:		'your_text',
    			HANDLER: wikibar_editFormatByTableCell
    		}
    	}
    },
    html:{
      TYPE: 'MENU',
      html:{
  			CAPTION: 	'&lt;html&gt;',
  			TOOLTIP:    'html tag',
  			syntax: '<html>\nuser_text\n</html>',
  			hint:		'html_content',
  			byBlock: true,
  			HANDLER: wikibar_editFormatByLine
  		}
    }
  },
  addon:{
    TYPE: 'MENU',
    TOOLTIP:'3rd party tools',
    'about addons':{
      TOOLTIP: 'list loaded addons',
      HANDLER: wikibar_doListAddons
    },
    SEPERATOR:{}
  }
};
addEvent(document, 'click', wikibarColorTool.onDocumentClick);
addEvent(document, 'click', wikibarPopup.onDocumentClick);
wikibar_install();
//}}}
* Волшебник, ваш покорный слуга. 
* Роду-племени неизвестного, гоблинского. [[Гвардхур]] в 1 сезоне утверждал, что в жилах его течет и их (драконья) кровь. 
* Высок, ростом под 7 футов, телосложения худощавого, глаза алые, волосы снежно белые, но не альбинос. 
* С младых лет высоченное энергетическое здоровье, после каждого эксперимента в области волшебства подскакивающее все выше и выше и сейчас (после Диска Сил) находящееся на уровне 80.
* Искушен в Истинной Речи и даже учился понемногу у дракона Гв++а++дхура.
* Раз в 50 сессий создает очередной шедевр волшебства на 300... 400... 500, а то и более слов И.Р., а потом следущие 50 сессий страшно этим гордится, иногда пугая мастера словами "я тут одно заклинаньице составил...."
* К его перу относится и несколько крайне интересных заклинаний, кои перечислены будут отдельно. Смотри [[Список заклинаний Артаниса]].
* На досуге развлекается [[нецензурными заклинананиями 18-ого дана|Недобрый энчант клинка]].
----
[[Шмотник Артаниса]]
----
Контакты и профиты:
* 1 сезон: обещал освободить драконов со слоя тени в обмен на обучение у Гвардхура. По результатам остались при своих. 
* 2 сезон: клан Каменного Колеса мне должен (по выражению представителя: Клан Каменного Колеса твой должник, волшебник). 
* полуэльф [[Аэдвин]] - няяяшка ^____^
* мальчишка из таверны в Крепости Рассвета, возможно (и почти наверняка) [[Истинный Маг]]. У него букварем служит академический курс геометрической магии (демонологии) до 12 дана включительно. 
* 2 сезон: новый [[Драконий Договор]] - целая эпопея.
! 1 день (ночь)
* После заклинания Менестреля оказались на лесной дороге в получасе ходьбы от Крепости Рассвета. Отправились туда - Сириус с целью ограбить сокровищницу. Остальные его поддержали. По пути подцепили минорную версию Менестреля. 
* В сокровищницу проникли и Сириус в свой bag of holding упаковал практически все запасы золота и камней. На видном месте стояла статуэтка Симаргла, на которую Сириус немедля положил глаз, а потом наложил и руку. Все мои аргументы были ему побоку, я попробовал его напугать иллюзией, но это глупо было, ведь рядом стояла Крисания. В бешенстве я чуть не разнес все тут к чертовой матери, но нас отвлекло исчезновение Эдмунда. Дядька обсыпался радужным порошком и рассосался. Расплевавшись окончательно, мы разбежались в разные стороны. Я отправился в Крепость, куда отправились остальные - загадка.

! 1 день (утро-полдень)
* Я вступил в ворота крепости Рассвета и первым делом отправился выпить где-нибудь, да закусить. Неподалеку от ворот нашел отличный трактир, где подавали отличнейший сидр. Между кружечкой у нас завязался разговор с сыном хозяина - кажется я расспрашивал про Альберта, а мальчишка поведал мне, что учится читать по какой-то книге со страшными картинками. Уже тогда некоторое подозрение закралось в мои мысли, но прояснилось все позднее - мальчишка скорее всего Истинный Маг, способный читать язык драконов как родной. Покаляков еще о том-о сем, я отправился в нижний (восточный) город снять себе жилье, да по пути поэкспериментировать с воздушным волшебством (тогда я планировал строить планер чтобы добраться до Аш-Табаха и разбираться с проблемами в Землях Теней). По пути я засветился стражникам на воротах Цитадели - мол, явился в город волшебник, который был бы рад аудиенции с господином Альбертом. 
* По пути я создал глаз планетари/воздуха и стал изучать воздушные потоки при помощи орла, пролетавшего над городом.
* В таверне я застал трех пьющих и чем-то удрученных тангаров, отметил это, но тему развивать не стал. 
* Поднявшись в свой номер, застал я там мертвецки пьяного тангара. Потолкав его туда-сюда, решил я с ним не связываться и отложить на потом. Надо было кинуть тогда определение жизни - тангар то оказался не мертвецки пьян, а просто мертвец. Недолого думая, я спустился вниз и пристроился с кружечкой... ждать Альберта. И дождался.
* Постоялый двор навестил волшебник Альберт. Мы быстро нашли общий язык, я попросил документ, дающий право заниматься волшебством на его территории и заявил, что могу отработать сие свидетельство либо иначе подтвердить лояльность. Альберт сослался на занятость и попросил меня разобраться с тангарами, которые потеряли своего товарища. Я сообщил, что тангар вероятно мертый валяется у меня наверху, и Альберт попросил разобраться в обстоятельствах его смерти. Я согласился и расследованием занялся. Предварительно впрочем Альберт проверил, не причастен ли я к его смерти...
* Сначала я расспросил сидящих в таверне тангаров. Разговорить их удалось с трудом, раскололись они лишь когда я декларировал себя, как официального представителя Альберта в этом вопросе. Да и то были весьма скрытны. Рассказали они, что по заказу некого хмыря отправились в некую закопуху, откуда вынести должны были неважно-что, но попутно вынесли еще несколько вещичек, которые присвоили себе. Их пропавший товарищ забрал некую хрустальную сферу на цепочке с "чешуйкой дракона" внутри. Они же себе взяли вещи, имеющие стилистику изделий Кагренака. После ограбления закопухи они отправили в Крепость Рассвета, причем их товарищ должен был прибыть ранее - прибыл и пропал, а потом нашелся его труп. Держались коротышки крайне высокомерно.
* Поднявшись наверх, я включил все доступные мне детекторы и определил наличие неушедшей тени тангара. Что-то мешало её оторваться от тела и уйти в посмертие. Слабо представляя что делаю, я вскрыл его тень (описав её словом ++it++) в тело тангара и радостно словил отдачу. Оклемавшись, я обнаружил, что тангар "воскрешен"... но воскрешен, как неживое существо. Пригласил тангаров и пока они со своим приятелем объяснялись, я объяснялся с Альбертом. 
* Альберт обвинил меня в ереси, занятиях некромантией (О.о), убийстве (о.О), заявил, что я некромант, которого жгли-да-не-сожгли и других кошмарных деяниях. У нас чуть не дошло до дуэли, но начать атаку ему видимо мешало мое полное недоумение, расслабленность, покорность судьбе и стремление договориться. Я конечно заявил что в случае атаки буду сопротивляться, но давайте решим все мирно. В конечном счете Альберт решил не проверять - кто сильнее - молодость или опыт, и потребовал, чтобы я отправился с ним пред светлые очи Верховного Инквизитора господина Рауля. Я спокойно (и даже с радостью) согласился.
* Перед отъездом я навестил тангаров. Они поблагодарили меня за проделанную работу и заявили, что ++клан Каменного Колеса в долгу передо мной++. Проси, мол, что хочешь. Я сказал, что запомнил их слова и отправился с Альбертом в Семивратье.

Вчера мы выехали в конце дня. Волшебник Альберт отправился в путь на собственной карете, с охраной двух лейтенантов герцога
Столица - Каенна.
! Верховный Совет Твердыни (4 члена)
Великий Волшебник, Глава Совета Нимир.
Великий Волшебник Астарх
Великий Волшебник Сильверай (Silvereye)
Великая Волшебница Крисания

В Великий Совет входят, помимо вышеперечисленных, из известных мне волшебников, еще:

Волшебник Альберт
Волшебник Белин

! Кафедры Твердыни

| Кафедра Колдовства | Альберт  (человек, лет 60) | Sorcery, по большому счету – кафедра Общей Магии. Занимаются защитами. |
| Кафедра Фантазмов | Крис (человек) | Иллюзии |
| Кафедра Темных Искусств | Нимир (человек) | Работа с мертвым, немертвым и не совсем живым. |
| Кафедра Прикладного Геометрического Волшебства | Астарх (полуэльф) | Демонологии как они есть |
| Кафедра Природных Явлений | Silvereye (человек) | Погода, стихии кроме огня |
| Кафедра Боевого Волшебства | Трондор (человек, маг) | |
| Кафедра Мистицизма | Серфинрод (человек, маг) | Кафедра Пифий и предсказателей. Гадание, познание, identify. Методы исследований, археология. Также занимаются торговлей. |
| Кафедра Огня | Рабу ибн Одар | Глава кафедры по слухам полуифрит. Выделена в отдельную кафедру по причине редкости огня в природе. |
| Кафедра Лингвистики | Миранда Кадарски | Кафедра по связям с общественностью (PR). Языки зверей, птиц, людей. Ораторское искусство, риторика, очарования и чармы. Глава кафедры по слухам тролль |
| Кафедра Светлых Искусств | Белин | Белая Кафедра. Кафедра Санктуалистики. Также занимаются лечением, созданием healing potions и не только potions. Глава кафедры – полутролль/полугоблин. |
| Кафедра Механики | Джаммер (глушилка) | Конструкты, инженерные сооружения, механические автоматы, военные машины, маготехнология. |
| Кафедра Зачарования | Эллина Брэждорф | Рунические энчантменты, големы. Глава – магесса. |
Премерзкая составляющая жизни практически любого волшебника.

Когда нарушается истечение сил и каналы подключения к планарам истончаются, возникает обратный эффект вытесняющего сознания.

Сила сознания становится слишком велика по сравнению с истончающимися каналами и сила волшебника начинает вытесняться в планары. Впрочем, мне ЭТО НЕ ГРОЗИТ. Ключ предохраняет.

P.S. «Перегорел на работе» - это для волшебников очень актуально.

//Артанис придумал и реализовал на практике (практиком поработал волшебник Альберт) способ лечения этой болезни. Основная идея – переподключение заболевшего ко всем планарам… переподключить по каждому планару последовательно не получится (за конечное время), и был избран способ переместиться в пространство между планарами. Артанис назвал это место [[Радужное пространство]]. Для перемещения туда был использован Ключ Волшебства, активированный в режиме колебания [[Струны Сил|Струна Сил]] до состояния «раскрытие радужного пространства» (когда вихрь сил вырвался за пределы пространства ключа, вытеснив Артаниса из пространства).//
!!! Вещи
эльфийский амулет "Страж" (выдан Эдмундом из спецхрана)
мечи первого ведьмака Кверца Тихого (спецхран)
сундучок 10 голда в день
Представляю ниже заклинание, создающее портал в Слой Тени, позволяющий заглянуть в него.
Меры предосторожности:
1. Двойная гептаграмма Ааримов.
2. Живая птица Феникс (должен присутствовать при ритуале) 
3. ШУМЕТЬ НЕЛЬЗЯ – ни единого звука или шума. 
Далее идет текст заклятия. 
Феникс, как существо, зацикленное во времени (возрождающееся из пламени), служит маяком для нацеливания на Слой Тени, на структурный хаос Слоя Тени.
* [[Аш-Табах]]
* Читаю "Мифтерия невыполнима". Дошел до места о картогарфах-программистах, и задумался, как сделать магическую карту, которая в разных измерениях выглядит по-разному, меняя внегий вид, то, что на ней нарисовано.
* Сначала я видел два подхода - простой и сложный.
* ++Простой++ - карта содержит накопитель энергии, благодаря которому определяет, когда мы переместились из мира в мир и в этот момент опеределяет, куда мы переместились и выводит новую картинку на экран карты. Плюсы очевидны - простота. Минусы тоже - источник энергии и относительная доступность информации о каждом состоянии карты. Тогда я задумался о более сложном варианте:
* Сложный - когда карта сама, под влиянием энергетики (комплекса внутримировых сил) изменяется чтобы принять нужный вид. Легко сказать, а сдедать?

* Как сделать изображение, которое под воздействием энергетики мира (суперпозиционной силы, состоящей из сил, текущих через мир) меняла внешний вид. В голову пришла "промокашка" - на карте есть участки, меняющие цвета под воздействием разных сил. Точнее говоря, есть N слоев, на каждом есть пиксели. Много пикселей. Все они немного разные. Сделаны они таким образом, что при влиянии на некий пиксель сторонней силы (той, на которую настроен слой пикселей) пиксель меняет цвет. Учитывая, что можно программировать разные пиксели, можно сделать так, чтобы два соседних пикселя в одном мире светились по-разному (или один светился, а другой не преодолел порога светимости). Кроме того, каждый слой настроен на свою силу из энергетики мира. Так что на выходе имеем эн слоев, светящихся по разному в разных мирах, что и создает карту. Но это все порождает во-первых сложную технологию (возможно оправданную, если необходима секретность), во-вторых немалой сложности комбинаторную задачу (по подбору порогов светимости пикселей в разных мирах - в зависимости от напряженности силы данный пиксель должен светится по-разному), со сложностью порядка N*M*L^2, {где N,M - кол-во пикселей, L - колво сил/слоев; что впрочем не означает, что не может быть двух и более слоев, настроенных на одну и ту же силу, но имеющие пиксели с разной настройкой, суммирующие светимость при работе}. Короче говоря, это весьма и весьма сложно, круто и дорого.

* Третьим подходом я вижу - ++ГОЛОГРАММУ++. Матрицой служит основание карты (фотослой). Под воздействием разных энергетик мира (проявляюще-опороного луча) мы записали на эту карту разные изображения. Теперь под воздействием каждой энергетики (комплекса сил) карта будет выдавать изображение, записанное под этой энергетикой.
* Из сложностей - найти материал, обладающий свойством записывать подобное. Иными словами, обладающий свойством выдавать фотонную картинку при воздействии сторонней силы.Проблему можно решить если опять разделить карту на несколько слоев, теперь уж точно по числу сил (но не всех, а только необходимых, причем их не более чем (число изображений+1) - +1 на всякий случай). Но это дает возможность хранить на карте скрытые пометки (еще на одном слое, работающем, например, при облучении сторонней силой, не проявленной в указанных мирах)
* Зато если уж мы найдем подобный класс материалов, можно сделать совсем крутой наворот - при облучении карты энергетикой мира активируется сложный автостабильный спелл. При указании destination point карта сама перемещает нас, используя, например ДМЭ, в новое место. 

* [[Королевство Каладон]]
* Песчаная ведьма. 
* Искушена в весьма темном для меня деле - шаманском искусстве. Причем в отличии от Мшрлыка еще и с какими-то тонкостями....
* Умеет призывать и контролировать духов пустыни... правда для этого нужна пустыня и пеньковая веревка. 
* Ученица настоятельницы (и главной жрицы) Храма Ночи из земель Аш-Табаха. 
[[Ааримы]] – легендарный народ, живший до Кровавого Шторма. Судя по некоторым данным, обладали высокими технологиями. Так, известен «[[Маяк Ааримов]]» или «Поющий камень», служащий маяком для их кораблей. Известны два места поселения Ааримов – Звездный Град (на его руинах эльфы построили свой Город Звезд) и затонувший город, над которым Эдмунд построил Твердыню. 

При рисовании двойной гептаграммы Ааримов порождается специфическая картина сил внутри.

Двойная гептаграмма ааримов позволяет перемещаться в потоке времени в произвольном направлении.

? [[Люди неба]]
* [[Черные рыцари]]
* [[Сигильская академия волшебства]]
* Эгмонд бе'Пьюри - виконт, доверенное лицо Верховного Волшебника королества Каладон Альберта. Представит меня при дворе при необходимости
! [[Верховный Совет Твердыни (1 сезон)]]
! 2 сезон
* маг Толейтус - кладовщик кафедры Общего Волшебства
* В.В. Бродгар - глава Кафедры Боевого Волшебства, глава [[Ордена Пламенной Чаши|Орден Пламенной Чаши]]
Данное заклинание, обозванное Эдмундом в шутку «волшебный пендель», предназначено для перемещения на небольшие расстояния (в прямой видимости). 

@@Внимание: ОСТЕРЕГАТЬСЯ ВСТРЕЧНЫХ ПРЕДМЕТОВ ПО ПРЯМОЙ – РАЗМАЖЕТ.@@
"Должно знать, что все способности, о которых мы прежде сказали, как познавательные, так и жизненные, так и естественные, так и искусственные называются энергиями (то есть действиями или деятельностями). Ибо энергия есть естественная каждой сущности и сила и движение"
Полторы страницы на неизвестном языке.
<<tiddlerbox "menu" "MainMenu">>

|! слово |! образующая |! направляющая |! объект |! стихия |
| <<tiddlerbox "шар" "шар">> | <<tiddlerbox "в" "в">> | - | <<tiddlerbox "тень" "тень">> | - |
| <<tiddlerbox "толчок" "толчок">> | <<tiddlerbox "создать" "создать">> | - | - | - |
| <<tiddlerbox "слово" "слово">> | <<tiddlerbox "внутри" "внутри">> | - | - | - |
| <<tiddlerbox "мысль" "мысль">> | <<tiddlerbox "там" "там">> | - | - | - |
! 1 сезон

! 2 сезон
* [[Хронология Артаниса]]
[img[kaladon/map_small.gif][kaladon/map_full.gif]]<<imagebox 'Карта окрестностей Крепости Рассвета'>>
* Великая Волшебница Крисания, молодая черноволосая ведьма ослепительной красоты. 
* Когда-то входила в Великий Совет Твердыни, пока не оказалась во втором сезоне. 
* Глава кафедры Иллюзий Твердыни. Симулякрум кастовать умеет. 
* по некоторым данным ждет ребенка от Сириуса... месяцев через 8 с половиной. По крайней мере симптомчики характерные... вот только как скажется на ребенке бурная магическая жизнь матери?

! 2 сезон
* Встречалась с Крисанией-Старой (местной главой кафедры Иллюзий), и о чем-то они там договорились за моей спиной, старрые ведьмы... По крайней мере Крисания-Старая знает о том, откуда мы. И вроде бы она на моей стороне. Ну как на моей... она декларирует себя как союзника и я склонен верить. 
* Хотя в сложившейся ситуации с новым Драконьим Договором все оччень непросто. 
Дан текст. Заклятие принадлежит категории высшего мастерства (16-18 даны).

Данное заклинание имеет в структуре некросилу (основной компонент), incantation (обращение) и conjuring (заклинание) Духа Воздуха Микеля. Меры предосторожности:
#. Начальная стадия подготовки – 60 ударов сердца
#. Накрываемая площадь при стандартном произнесении – 3,5 квадратных мили (радиус немного более мили).

Капли дождя ядовиты, вызывая мучительную смерть при контакте с кожей через пол часа.

Время рассасывания небесной составляющей – ½ часа, земной составляющей – 2 часа.
Картинка-гравюра – тангар с факелом, спускающийся в подземелье + полстранички текста на тангарском. 

Перевод Волшебника Хенны:

Внимание. Устройство Кагренака требует к себе особо тщательного отношения. Головоломку запрещается: разбирать без надобности, чистить, использовать в качестве ударного инструмента. Для активации головоломки убедительная просьба запомнить ее текущую конфигурацию – ведь собрав ее вновь можно вернуть ее, повторив начальную комбинацию. Запоминайте и записывайте все положения головоломки, если двигаетесь поэтапно. Возврат из путешествия возможен лишь повторением всех предыдущих комбинаций.
Набор дисков показывает номер кольца, ориентация большого шарика – номер мира. Дополнительными дисками и шариками производится дополнительная калибровка. Выставление всех дисков и шариков в симметричное положение перемещает к центру.

1 сезон:
Хенна: Кагренак – гном, который сделал это устройство.
Альберт: это устройство позволяет перемещаться в центр вселенной. Его «шарики» это не умеют.
Камень, находящийся на вершине Твердыни, предположительно (согласно исследованиям Эдмунда) является маяком для кораблей Ааримов. Вокруг камня наблюдается незначительное искажение хронопотока, коэффициент 1.1 (обратное направление). Благодаря этому камень можно использовать для возвращения естественно утерянной жизненной силы. 
Камень поет на языке Ааримов, в склерознике приводится текст песни с приблизительным стихотворным переводом.
1023 год 28 октября

Когда-нибудь это нужно было сделать. Наконец то у меня нашлась свободная минута записать все это хоть как-нибудь. Не буду записывать очевидное, на всякий случай – [[Пять Домов]] (размножаются как ёжики), [[Башня Тель-Авир]], [[остров Самерсдейл]], гостевые апартаменты дворца шаха Аб… (итд итп) в Мекке, [[Хрустальный Город]], [[Сигил]], [[Твердыня]], ….

Забыть про нижний инферно-огненный 2 ступени (блин, может лет через 1000 оно и срастется). На 6 нижнем пределе обнаружена странная блокировка, требуется проверить версию с [[Колодцем Миров|Колодец Миров]]. [Дальнейшая приписка: «дохлый номер»]. 

Богиня Петаки с 5 нижнего предела хочет мою голову.

Ключ к [[Лестнице Прайм Материала|Лестница Прайма]] в [[Головоломке Кагренака|Головоломка Кагренака]]. [приписка: «что бы сделать с этим вором?»]

Срочно разрулить неувязку с Трейербахом. (Артанис: что-то там с Эланией, дочерью правителя, [[Трейвербах]] – город эльфов в каком-то условно-верхнем мире. Был там, общался, меня оттуда попросили) 

Огненный великан Галлус с 10536-II : 10537-XII/2 : 2/3.обещал намекнуть мне кто знает о Звездной Карте (приятное дополнение к коллекции).

Наконец-то мне это удалось. Эврика, теперь можно будет отказаться от стандартной системы.

Начиная с 714 года 12 января смотреть все координаты по субъективной системе Ключа!

Далее дается карта межпланарных путешествий.
60 графиков, пронумерованные: 1, 1/1, 1/2, 1/3, 1/4, 2, 2/1, 2/2, 2/3, и так далее до 13, 12/1, 12/2, 12/3, 12/4. 
По оси абсцисс координаты от 1 до 1 миллиона.
На графике №1 плавная линия, далее – начинаются линии с пиками.
Чем дальше, тем больше пиков. На графике №12/4 почти вертикальная штриховка.
Ниже графика 12/4 идет многоточие.

//Дополнения Артаниса к главе: (относится к 1 сезону)

Во время практикума по лечению [[волшебной болезни|Волшебная болезнь]] (см) волшебника Альберта при нахождении в Радужном Пространстве я получил приглашение от демона Улан-Баатора посетить замок Огненный Шпиль. Насколько я могу судить, Огненный Шпиль (FireSpire) находится в одном из нижних слоев, вероятно в плане Темного Огня (или в том районе).//
Личность мифическая и загадочная, остроухая и язвительная. 
Вечно шляется там, где нормальные люди (а тем более эльфы) не бывают. 

В первом сезоне - Легендарный Менестрель, аватар какого-то Закона (но точно не закона кармы)

А во втором - эльфийская личность с лютней, попавшаяся нам на дороге и оставшаяся в Крепости Рассвета. 
----
Также известен под именем ++Эльхаэндаль++. 
По словам Гвардхура, во втором сезоне сидит в Паучьих Лесах вместе с Мордраной и Гвадхуром под искаженным мифалем.
* А это у нас гоблинский шаман с изрядным запасом грибов, бубном и громовым порошком. 
* И надо признать шаман-профи. 
* А по утверждениям одного из его Предков - потенциальный основатель Рода. 
** Шетиус у нас любит походить шаманом -- долгие годы :)
Странный рисунок: объемный четырехлистник, в нем 5 сокетов, в лепестках – красный, зеленый, синий и белый, в центре – бесцветный сокет.

Артанис: похоже, парольный вход к информации. Учитывая, что склерозник вызвать можно, просто зная способ, эта защита актуальна.
* [[Customisation]] - настройки тиддл-файла
* [[PluginManager]] - менеджер плагинов (см. также PluginFormat, TiddlerSlicing)
* InstallingPlugins - установка плагинов
* ImportTiddlers - импорт записок (или плагинов) со сторонних сайтов или из файла. Список серверов с плагинами [[здесь|systemServer]], ChrisKlimas has written [[The Macrocodex|http://gimcrackd.com/etc/src/codex/]], some superb documentation on writing plugins and macros for TiddlyWiki.
* SpecialTiddlers
В [[канонической форме|Каноническая форма заклинаний]]:

хаос баланс сложить клинок создать дотехпор IT вложить

Этим заклинанием можно зачаровать только и исключительно адамантитовый клинок... С такими клинками владеют воины и князья [[Тар-Каэрота|Тар-Каэрот]] 

Мне известны двое - воин-волшебник [[Танг К'Шиаран]] (Литар) и Князь [[Тр'Таг]].
Настанет эпоха, когда из Глубин Недр поднимется Посох с учеником и это ++Знак++.

Содрогнется Твердыня, но устоит, выдержав хаос умов.

Придет Единый Правитель, организующий хаос__,__ кровь Твердыни вольется в чужие реки.

Великая Бойня раздробит королевств++а++, из праха придет Дракон, он будет бел на фоне ночи++,++ но растворится в ней.

Падет окружность, падет алмазная стена, воскреснут духи -- Имена.

Придет Восток, придет и Юг.
И камень от письмен сотрут.
Посланник мира "Никогда"
Здесь обретет покой.

Он мир с собою принесет.
Отринув имена.

//Сим заверяю, верно ибо видел. Кагренак.//
[[Форматирование]]
[[Настройки]]
{{{
@@color(WHITE):
текст
@@
}}}
! Великолепная шестерка
| | [[Эдмунд Остронос]] | &nbsp; | [[Артанис Моруд]] | |
| [[Дарина]] | | [[Менестрель]] | | [[Мшрлк]] |
| | [[Сириус]] | | [[Крисания]] | |
! Timeline
* [[Хронология Артаниса]]
Привет, коллега. Ты, видно, в очередной раз потерял память, если читаешь эти строки. А может быть ты чужак, jur, который разгадал секрет. В любом случае, лишнего ты не узнаешь.

То, что ты читаешь – называется «склерозник». То, что ты держишь в руке (я надеюсь, у тебя есть рука) – называется «Ключ Мира». Его еще называют «Ключ к власти над миром». Но это не совсем верно, посох – один из ключей. Это ключ к волшебству. Это ведь твое призвание, коллега? Если нет – можешь закрыть склерозник, все остальное тебе будет неинтересно.

Когда-то давным-давно этот посох создал волшебник по прозванию Эдмунд Остронос. Его рукам припысывают еще много славных и позорных деяний, но это все «дела давно минувших дней, преданья старины глубокой» – и для тебя, и для меня. Прожил Эдмунд, насколько мне известно, более 800 лет. По крайней мере по такому временному промежутку раскиданы его эпизодические появления в исторических и нелитературных хрониках. Если судить по миру Каледон (координаты смотри в главе Маяки Артаниса) – Эдмунд основал Скалу (одну из школ волшебства), а много позже поучаствовал в войне Морбианского Королевства и Аш-Табаха (конфликт завершился Битвой на поле Курру, где и была снята Печать Смерть). Между этими событиями прошло от 600 до 800 лет (судя по разным источникам). Эдмунд ведет летоисчисление от Кровавого Шторма. Это древний катаклизм, мрачная и запутанная история. Возможно ты когда-нибудь найдешь в склерознике подробности. Я пока не нашел.

Волшебник Эдмунд отличался от своих коллег не только огромной силой и мастерством, но и некоторой забывчивостью, что не удивительно, при таком-то сроке жизни. Поэтому он и создал «Склерозник». Это волшебная книга, помесь книги заклинаний, дневника и ежедневника, колдовским образом помещенная в посох. Поиск в Склерознике осуществляется довольно просто – загадываешь тему и приказываешь открыться нужной странице. Если темы нет, или ты сформулировал ее неверно – ничего не произойдет. Запомни три простых правила:

# Если страница не открылась – это не значит, что в склерознике ничего нет по этому поводу. Попробуй поискать в других главах или переформулируй запрос. 
# Никогда не употребляй слово «магия» - только «волшебство». Маг – низшая ступень в иерархии волшебников. Примерно как лейтенант в иерархии офицеров.
# Склерозник не может содержать все знания мира. Если ты все еще ничего не нашел – это значит, что владельцы посоха не сталкивались с подобным вопросом, или же сталкивались, но нашли настолько очевидное решение, что не потрудились оставить себе заметку на будущее. 

Некоторую полезную для себя информацию ты можешь найти в оглавлении.

Теперь кое-что по поводу Ключа к Волшебству. Его можно использовать для простого усиления заклинаний (читаешь заклинание и машешь палкой, результат не гарантирован, последствия тоже).  Можно использовать для создания оружия (точнее для энчанта) – спроси у Хенны (не ищи это имя в склерознике, его нет). Его можно использовать для межпланарной навигации (это опасно). Его можно использовать для грамотного усиления заклинаний – как – сам поймешь. Экспериментируй. Это же так интересно – исследовать самому. Ключ можно использовать еще много для чего – сам Эдмунд говорил – «я, даже я не знаю всех возможностей посоха!». Помни – наш девиз: @@«Бороться и искать, найти и не сдаваться»@@.

По поводу путешествий по времени. Я не знаю, как это сделать, хотя один мой знакомый (Аран Светлый Меч, может вы знакомы, а?) побывал в прошлом. Насколько я понимаю, прошлое – застывшая проекция нынешних событий. А будущее – неопределенно колеблющаяся проекция наших деяний. Время многослойно, многовариантно. Подозреваю, оно обладает инерционностью. Отправившись в прошлое и убив своего отца, ты сам не исчезнешь – просто в момент убийства временной континуум разделится на два независимых слоя – там, где родился ты; и там, где твой отец жив. Короче, не заморачивайся этими вещами, а то повторишь судьбу Хрономера. Это такой полоумный исследователь, который не знает, в каком времени он находится… как говорится, хорошего человека должно быть много, а он очень хороший человек. У меня есть идеи, как можно излечить его от этого синдрома множественных хронотел – всего-то создать новый мир. Пока что мне это не по зубам.

Что-то я еще забыл… гхыр, уже самому склерозник нужен…

Ладно, вспомню – допишу.

Засим, откланяюсь. Волшебник Артанис, крепость Кленового Листа, край Морбиан, мир Каледон (см. маяк) Пятый день декабря месяца 1036 года
! Порошок Гуи (волшебный порошок перемещения)

Заметка: порошок (рецепт и небольшой флакон) найдены в южной провинции Чжань южной земли кметов.

Представляет из себя уникальное метафизически сконцентрированное вещество, представляет из себя материальное воплощение вселенских сил мироздания.

Для его приготовления требуется следующее (примечание: хранить это в секрете).
#. дыхание ледяного тролля
#. язык саламандры
#. перо великого горного орла из гор Темеридиамидиума (примечание: о господи, не забудь!)
#. личинка алгоя-хорхоя.
Окромя этих чрезвычайно редких компонентов (Артанис: материальных воплощений чистых якорей к 4 элементам) следует использовать следующие… идет еще список из 52 компонентов.

Процесс.
Для процесса требуется знать заклятия:
* фазового перехода;
* планарного смещения;
* заклинание маячка аганазара;
* заклинание дальнего перехода.

Далее описана рецептура процесса (15 страниц).

Артанис: данный порошок широко используется волшебниками Твердыни, хоть и чрезвычайно дорог и сложен в приготовлении. Способ использования – обсыпать себя. Известные мне волшебница Крис и волшебник Альберт возят с собой почти готовый порошок, изготавливая дозы по мере необходимости. Судя по их словам, настройка порошка Гуи на определенное место (маячок аганазара, похоже, запечатлевает в порошке картину вторичных и местечковых сил точки, в которую мы планируем вернуться) занимает незначительное время.

Заклинание Маячка Аганазара запечатлевает картину вторичных сил в нужной точке. 

// Перемещение происходит не через радужное пространство, как можно было предположить, а через Prime Material plane.

Предположение, что объект вытесняется заклинанием планарного смещения в ПМП,  а потом, по принципу маятника (вероятно объект остается на грани с ПМП), используя заклинание дальнего перехода и маяка, вытесняется на наш план/слой – ОПРАВДАЛОСЬ!
Первые четыре компонента играют двойную роль – как вытесняют объект с ПМП, так и играют другую роль (настройка маяка?).
Заклинание фазового перехода – дает пинка и поглощает инерцию слоевых перемещений (объект выдергивается из ПМП, пролетает реальный мир и пытается нырнуть в ethereal). Заклинание непозволяет объекту нырнуть слишком глубоко в Ethereal, поглощая "инерцию" слоевых смещений.//

Для запечатления сил используется заклинание «Маяка Аганазара», а перед использованием порошка желательно прочитать заклинание «Нацеливание на маяк».
! Лирическое отступление

Говоря откровенно, Призрачный Дракон - это лютый пиздец. Он:
* кастует сам по себе, и очень серьезно.
* дает постоянную ауру ужаса на километр вокруг, причем чем ближе к нему - тем сильнее.
* практически бесконечные хиты, пока он связан с родным Слоем (слоем Мрака)
* иммунитет к большинству стихий.

Чистым уроном его уничтожить практически нереально. 

Ну вот при помощи Нити Забвения можно, но это примерно то же самое, что останавливать шторм ядерной бомбой.  Хэлорцы его могут __задавить__ дамагом от цитадели, но не убить. Задавить в ноль и запечатать. Кто знает, сколько таких драконов хранится на их цитаделях?

Тем не менее уничтожить его можно.

В принципе наверное Призрачного дракона можно убить ядерной бомбой. Она его убьет не дамагом. Она его убьет выбросом радиации и ЭМ-импульсом, который разрушит апейроновое плетение (эффект аналогичен Черному Солнцу).
----
! Причины образования призрачного дракона

Из Спецкурса некромантии:

//Очень редко в пробуждающую инферноворонку попадает призрак. При этом возможно образование некоторых неупокоенных существ, состоящих из некроплоти и призрака и способных, питаясь живой силой, качественно меняться (повышать свою стадию неупокоенности). В этих существах призрачная сущность служит движущей силой качественной трансформации. Так как все призраки делятся на два ранга — полуразумные (животные) и разумные (призраки разумных существ, в т.ч. человека) — существует четыре различных варианта слияний призрака и воронки. Случай, когда призрак обладает сверхсознанием мы здесь не рассматриваем, ввиду его уникальности.

Когда происходит прорыв инферно неупокоения животного и в воронку попадает полуразумный призрак, то стадия неупокоенности животного повышается и образуется существо, обладающее призрачной составляющей и отличающееся по внешнему виду от своего родственника, призрачной составляющей не обладающего...

Призрак попадает в воронку Монстра — образуется Призрачный Дракон.
//

++Призрачный Дракон++ — одна из опаснейших стадий неупокоенности. Внешне он выглядит как марево, по контурам напоминающее дракона. Призрачный дракон является открытой инфернальной воронкой, силу которой использует для своей магии. Он также способен к мгновенному перемещению (скорость не измерена, но сравнима со скоростью мысли). Физически неуничтожим. Закрыть инфернальную воронку дракона очень сложно, кроме того, и без воронки дракон обладает огромным запасом силы.

http://imaginaria.ru/p/iz-arhivov-nekromantika-kratkiy-kurs-lekciy-fioletovogo-puti.html
Комплекс заклинаний. 
Источники Воздуха: непосредственно концентратор силы воздуха, перо орла.
Стандартная формула – «вскрыть стихиальный дух».
Приблизительная словесная формула, требуемая для того, чтобы его заклясть: «Приказываю тебе, Дух воздуха Микель, повиноваться мне именем могучего Отарры, Восемью Сторонами Света и Воздушной стихией…»
Когда две части одного целого скрестятся на Именах - жизнь пробьет русло в бессмертном потоке времени.
//«Мутированное существо, пожалуй одно из самых сильных, которое мне удавалось создать» //

Содержит силу некро и силу инферно одновременно.

Изобретено для усиления войск Аш-Табаха.

Для создания нужно мертвое мясо в количестве примерно 200 человеческих тел. Требуется также значительное число маткомпонентов, 4 заклинания анимирования (10-15 даны) – заклинание подготовки, заклинание соединения, заклинание формирования и заклинание оживления. Чем старее мясо – тем лучше, здесь работает принцип мертвеца, по которому мертвое мясо перерабатывает жизненную силу в некросилу (в рамках теории ERLS: напитывается фиолетовой энергией). По условной шкале неупокоенных существ попадает в категорию некромонстра.

На создание молодого риппера необходима приблизительно неделя неторопливой подготовки.
++ТТХ: ++
Скорость до 120 миль в час (порядка 50 метров в секунду). Дальность прыжка, как по вертикали, так и по горизонтали – 25 метров. 
Внешне походит на DeathClaw из мира Fallout.

Контролируется на заклинательном уровне. Изначально обладает интеллектом на уровне собаки, но со временем растет.

Уязвимые места: «между 2 и 3 позвонками (считая от черепа) я специально оставляю уязвимое место, известное только мне». Если в эту точку воткнуть иглу – риппера парализует. Удар дубиной вызовет бессознательное состояние, разрубание – смерть. Это связано с тем, что там проходит очень важный нерв, не прикрытый защищающими слоями мяса и плоти.
Я ввел этот термин для обозначения места, где проявлены все силы нашего мира. Я попал в него, активировав (начав возбуждение) Струны Сил и позволив Вихрю Сил (множество спиралей сил, которые эманировал Ключ в возбужденном состоянии) выйти за пределы посоха и вытеснить меня из нашего мира.

Тот же самый Вихрь Сил можно использовать и при энчанте волшебных изделий, при этом Вихрь должен оставаться в пределах посоха. Снижение концентрации на возбуждении Струны Сил постепенно убирает Вихрь Сил «обратно в посох». Из проявленного вихря сил можно «вытягивать» жгуты сил – как одинарные, так и комплексные. Для этого необходимо «заказать» нужную композицию сил, вспомнив либо ее саму, либо ощущения (которые с ней связаны). Последний метод использовался при создании 13-го Ключа – я представил себе все те ощущения, которые хотел вложить в клинок Сириус – и вытянул из Вихря Сил композицию из 31 силы (если мне не изменяет память?) соответствующую «ночному ветру, крылу ночи, летящему с горных вершин, пронзаемому лучами колючих звезд».
* [[Голографическая картография]]
* [[Планеры]]
* [[Митраизм]] - официальная религия королевства Каладон.
++Рыцари Каэли (Caeli)++

* Специальный отряд, предназначенный для уничтожения живой силы, обозов с продуктами питания и оружием, вражеских волшебников и техники в глубоком или ближнем тылу врага.
* Предполагаемая численность в районе трехсот пятидесяти, отобранных из регулярных частей на конкурсной основе. Отряд будет делится на шесть рот по шестьдесят восемь человек в каждой. Они пройдут обучение по методам скрытной доставки на место, маскировке, методам скрытого наблюдения и контрнаблюдения, разновидностям вражеской техники, волшебства и некросилам противника и методам их наискорейшего уничтожения, особенностям психологии, устройству стандартных лагерей, перевалочных баз и мест базирования фронтовых подразделений неприятеля. Так же будет изучаться форма, награды и звания бытующие в армии противника.
* Специальное снаряжение, которым будут комплектоваться роты будет представлять собой:
* Специальные зачарованные легкие доспехи останавливающие падение с большой высоты у самой земли.
* Деление стандартной боевой роты по обязанностям:
#. Командир тактического звена (1 чел) - в его обязанности входит командование ротой и оперативная разработка плана действия исходя из данных разведки и встреченных на месте ситуаций.
#. Зам.командующего (1 чел) - Дублирует приказы командира тактического звена(далее в тексте КомТакт) и при его гибели, или неработоспособности по иным причинам занимает его место.
#. Курьеры (6 чел) - самые проверенные люди после КомТакта и его заместителя. Занимаются координацией на местности роты, основываясь на информации полученной разведчастью роты на месте и приказами командира и координацией роты с другими действующими в данном районе ротами рыцарей или иными дружественными подразделениями.
* По боевой части подготовлены как одиночки против многочисленного противника.
* Не привязаны ни к какому боевому звену постоянно и в любых условиях скрытно перемещаясь между ними для обмена информацией и координацией.
#. Солдаты мобильных боевых звеньев (60 чел).
* Каждое боевое звено состоит из шести человек и всего звеньев десять.

* В каждом звене  есть:
* Три бойца легкой пехоты, с легкими круглыми щитами, в легких или средних доспехах, вооруженные короткими клинками и арбалетами, для предварительного обстрела противника с дальней дистанции. Несут по две ручные метательные бомбы, для подавления идущих в "навал" больших групп противника, тяжелой самоходной техники и мощной боевой некросилы. 
** Обучены одиночному бою, бою в паре и основное - сражению плотным клином из трех человек, со легкими щитами, при поддержке стрелков.
* Центральный в "клине" боец - командир клина в боевых условиях.
* Два лучника - стрелки, обеспечивающие огневую поддержку своему "клину" щитников и шквальное подавление противника на подходах. ** Вооружены длинными луками и кинжалами.
** Тренированы на скоростную стрельбу на подавление по сектору, в том числе и при стрельбе навесом, и точечной стрельбе по противнику находящемуся  на близкой дистанции находящемуся в состоянии боя с силами собственного звена, или активно маневрирующему.
* Наконец звено замыкает снайпер.
** Его основные обязанности: контроль тылов мобильного звена, распознавание в любом виде вражеской силы, техники, некросилы, волшебников и волшебства, внедрение в случае необходимости в отряды армии противника, "горячее" и "холодное" потрошение "языков" их взятие и доставка.
** Имеет арбалет, короткий клинок и щит-баклер (в походном состоянии крепится на спину) и подготовлен для точечной стрельбы в любых условиях и для одиночного боя с многократно превосходящим противником. Имеет также две ручные бомбы.
** Он является непосредственным командиром звена, а в случае его гибели эти обязанности перенимает командир "клина".
** Он же в крайней ситуации имеет право применить к звену регламентированные меры по контрсдаче врагу и передаче ему информации, либо другому сотрудничеству, вплоть до полного уничтожения звена, о чем не предупреждены никакие другие лица в роте, кроме КомтАкта и его заместителя.
** КомТакт и его заместитель идут с командирским звеном, где старшинствуют над непосредственным командиром звена, но тем не менее контроль звена и в том числе командиров лежит на нем, со всеми соответствующими правами и обязанностями.
Внимание! После вчерашнего происшествия в Сигиле решил поставить на посох автоактивирующееся заклинание «Пламенной Ярости».

{{textright{Приписка:// я, блядь, дам им всем прикурить.//}}
Находится в городе Серпент, в 1500 милях к юго-востоку от города Альтавир. На востоке от города расположены Серпенские болота, на западе – Красная Пустыня с Льдистыми Озерами. ЕСЛИ ТЫ ЗАБЫЛ ЭТО МЕСТО, ТЫ МАРАЗМАТИК.

Содержит забавные символы, приведенные также с расшифровкой и историей народа кхеров.

Далее идет рисунок клинописи и даваемый подстрочник. 

Первая строка: «кровь была нашим именем, смерть была нашей жизнью».
Далекий южный город, лежащий на острове во внутреннем Море Мук.

Академия Сигила

500 миль до Серпенский Колонны

----

•	Каф. Боевых взаимодействй
•	Каф. Сабсубстанциальных взаимодействй
•	Каф. Алхимии
•	Каф. Общей магии
•	Каф природных явлений
Сигильская академия:
* Каф. Боевых взаимодействй
* Каф. Сабсубстанциальных взаимодействй
* Каф. Алхимии
* Каф. Общей магии
* Каф природных явлений

* Легендарный и могучий воитель. 
* Владел двумя клинками - Тринадцатым Ключом. Имена клинкам - Роза Ветров и Странник (оба имени мне известны, что дает определенную.... если не власть, то защиту). 
* В бут-секторе ++клинки++ потерял, а теперь, похоже снова вернул, что упрощает ситуацию.
* Всегда и постоянно ходит в маске. И даже спит в ней. Остается открытым вопрос - целуется он тоже в ней?
* Успешно флитрует в Волшебницей Крисанией... дофлиртовался до ребенка. 
* У Лаэртов вложил в сознание знания по волшебству, но колдовать так и не научился. И не научится.
* Шлем, подшлемник, кость... ага-ага :)
----
На данный момент владеет ко всему прочему хламу еще и Большим Кольцом Ифритов, гад!
{{textcenter{Коллекция текстов и фактов из Склерозника Эдмунда Остроноса, а также данные, 
полученные волшебником Артанисом из сторонних источников. 
Приводится с комментариями волшебника Артаниса.}}}
* Большая часть приведенных данных вычитана волшебником Артанисом из склерозника в посохе. Иногда текст дается так, как он идет от лица Эдмунда, но обычно приводится пересказ текста. 
* Следует отметить, что мнение Артаниса по ряду вопросов расходится с официальным мнением Твердыни и даже с мнением Эдмунда Остроноса. Равно как Эдмунд в свое время выстроил концепцию волшебства (лежащую в основе Твердынской Школы), так и Артанис выстраивает концепцию, которая может лечь в основу обучения в Школе Арфистов. 
* Иногда встречаются комментарии от имени волшебника Моруда. Они относятся ко времени до создания Тринадцатого Ключа («Роза Ветров» и «Странник»).
----
<<tagging склерозник>>
Термин, описывающий пространство, где подвешены и реализуются заклинания. (Согласно ERLS – ghost plane). Возможно на него можно заглянуть (необходимы исследования). В любом случае, заклинания где-то существуют и работают.
Термин, призванный описать абстракцию – пространство распространения (существования) волшебной энергии (согласно теории ERLS – пространство существования ДМЭ).
* ???
Type the text for 'Струна Сил'
* Столица владений Темных Эльфов.

----
! 2 сезон: 
по непровереннной информации (факир был пьян) полностью уничтожена на ~ +7 день от Прибытия. 
Условное понятие, сообщенное мне господином драконом Гвардхуром об изначальном месте обитания драконов (которое, впрочем, не является их родиной). Тень Мира имеет какую-то свою, я подозреваю, подплановую структуру, но стоящую вне придуманной мной шкалы.

Как я понял, попасть туда существу, имеющему человеческий разум невозможно, но это со слов дракона (они во многом нас недооценивают).

Мною проведен ряд исследований в этой области, смотри разделы «Врата Тени», «Великие Курганы Урганды». Следует напомнить себе про 7 печатей, которые закрывают, точнее, запрещают драконам выходить в мир. Каждая печать соответствует закону. Гвардхур свято верит, что они работают, и, хотя многие законы выглядят странно, у меня нет причин ему не доверять.

* Первая печать будет снята, когда сгорит символ жизни – Великое Дерево Трейвербах, расположенное в знаменитой роще друидов в 400 милях западнее королевства Лидония. Первая печать называется @@ПЛАМЯ@@. 
* Печать – @@СПРАВЕДЛИВОСТЬ@@. Справедливость будет снята, когда девять осудят невиновного (Моруд: судя по тексту это необходимое условие.)
* Печать – @@СМЕРТЬ@@. Смерть будет снята, когда в одно время и в одном месте умрут три великих короля. 
* Печать – @@ВОЗДУХ@@. Воздух будет снят, когда небесное дитя Кровавого Шторма ([[Артанис]]: не дождя!) поразит [[Серпенскую Колонну|Серпенская Колонна]]. ([[Гвардхур]] Артанису про дитя К.Ш.: Ты. Это ТВОЯ печать...; Артанис (а ахуе): Я дитя кровавого шторма? Гв.: да, волшебник, это твоя судьба. Ну ладно, что с ней делать - понятно) 
* Печать – @@УЖАС@@. Ужас будет снят, когда святой пожрет тысячу младенцев. 
* Печать – @@МЕСТЬ@@. Будет снята, когда человек, имеющий душу, убьет ее в себе. (Г: Нет. Сложная для МОЕГО понимания печать; Мне неизвестна судьба людей в посмертии. Их мысли и чувства. Мне неведома судьба рода людского.)
* Печать @@ПРОКЛЯТИЕ@@. Будет снята, когда будут сняты 6 печатей. Тогда выйдет страж, страж Седьмой Печати и принесет с собой Кровавый Шторм. Остановив его, откроется Седьмая Печать. 

[[Тень Мира]] – слой, в котором объединены все возможные каузальные и темпоральные потоки. Я думаю, можно сказать, что это еще одна координата, перпендикулярная координате темпорального потока и каузального потока.

Существуют маяки к слою Тени Мира – башни, возведенные древними цивилизациями. По моим данным их цель – изменить мир так, чтобы Кровавый Шторм ушел навсегда. Мир после этого изменится… совсем.

Комментарий: что мы и пронаблюдали... 
* Князь Тр'Таг, предводитель четырех сотен Темных Эльфов на драккаре.
----
! 1 сезон
Выступал на стороне войск королевства Каладон, но в серьезных боевых действиях участия не принимал. Не пришлось.

! 2 сезон
Около 10 дней назад прибыл по реке к замку [[Герцога Лето|Герцог Лето]], к [[Крепости Рассвета|Крепость Рассвета]].
Вход находится у южного края леса в 12 полнолуние. Под ночной радугой по отвесу. Найти большое дерево. Под корнями нора. Выгнать барсука. Ни в коем случае не убивать. Совершить обряд полной имитации.  Дальше Брондедир не успел рассказать... Возможно, его жена в Сигиле знает, где искать его дневники.
----
Есть читерный способ проникновения на Тропу Соцветий
----
{{textcenter{@@color:red;Всякие хохмы@@}}}

{{textmargin70p{
-- Что-то вы, кажется, недоговариваете...
-- Коллега, мы на Хэлоре!
-- Это комплимент}}}
----
Идет армия к крепости Лето.
«По сообщениям нашего арьергарда, он только что миновал крепость герцога Лето»
----
- Основная беда войны – что она ограничивает передвижение.
- Ну, в армию записываются на мир посмотреть.
- Понимаете ли, там очень ограниченный набор туров.
----
Косметический салон «Торквемада» - лучшие косметические услуги в мире:
* Выжигание угрей
* Удаление жировых отложений
* Подтяжка на дыбе
* Пирсинг 
* Акупунктурный массаж
Цены умеренные, исполнитель выезжает на место.
Для постоянных клиентов – фитнесс-зал с новейшими тренажерами: испанский сапог, железная дева, масляной бассейн, колесо.
Обращаться:…
----
в его деке дословно написано: «Вещмешок брильянтов», а ниже «Мешочек с золотом»
----
Покупаем всякий инвентарь для путешествий – шатры, повозки... Обсуждаем сумму, сколько у нас осталось денег...
Шет: - Ты ошибся в расчетах... там меньше сумма.
Аррис: - Я волшебник, а не бухгалтер!
ДМ: - А бухгалтера говорят наоборот: я бухгалтер, а не волшебник.
----
Въезд в столицу империи. Нас проверяют на крутые магические вещи. Очередь доходит до Эдмунда. 
- У вас есть сильная спектральная вещь 6 категории.
Эдмунд достает из-за пазухи Сердце Дракона (орган, а не артефакт) – все такое светящееся...
- Что это?
- Это? Это светильник. Просто светильник. Чтобы по ночам было удобно читать.
- Шестой категории???
- Зато вечный.
А потом Крисания долго их убеждала (и убедила), что Малое Кольцо Ифритов – просто кольцо для разжигания костра.
----
Нужно Артанису где-то расплатиться. 
- Я пожалуй заплачу. Сириус?
----
Шетиус (только появившись на сессии), подозрительно:
- Мне кажется, что те, кто нас послали в прошлое – какие-то авантюристы.
- Угу. Мы сами себя и отправили.
----
- Я не дед МастДай, но...
----
ДМ: - У вас такое ощущение, что это ваше последнее ощущение.
----
Уже вернулись в свое время, сидим в пустыне, ждем... Наступает ночь, надо разжечь костер. Греться от феникса можно, но не хочется привлекать внимания. Где взять дрова.
Эдмунд встает и уходит за дюну. Минут через 15 возвращается с охапкой березевых дров.
- Где взяли?
- Вы не поверите, господа, но Изумрудный Порошок Телепортации творит чудеса!
----
Через сутки сидения на диете изрядно оголодавший Артанис вдруг вспоминает:
- Эдмунд, а где ваш сундук?
- Оптеть-ёптеть, мать честная...
И из пустоты появляется сундук почти бесконечного объема чем только не забитый – и дровами, и вином, и едой...
----
Самое начало боевки с Кадавром.
От первой Крисании шагает вбок вторая Крисания.
Аррис: - Ну да, все понятно, все просто – Симулякрум.
ДМ, малось подумав: - Ну да... действительно... просто... симулякрум.
----
Самый конец боевки с Кадавром. Докастовав заклинание на 340 слов и выложившись полностью, теряю сознание. Заклинание срабатывает, Кадавр растекается лужей протоплазмы. Крисания, сбивая с себя искры, оглядывается:
- Так. Все понятно. Артанис в своем репертуаре.
----
Остановились на ночь в трактире Сигила.
Мшйрлк Дарине: - Ну что, поработаем?
Артанис: - Так, труженики невидимого фронта! Всем спать!
----
Диалог волшебника и шамана:
- Мне интересно, кто выжил и почему…
- Точнее – как?
----
Артанис: - У меня где-то подорожная была… - начинаю хлопать себя по карманам
Дариг: - Какая бисова тварь ее тебе выдала.
Арт: - О… это было давно…
//12 тысяч лет назад//
----
Балин подошел к Доспеху Морденкайнена, постучал:
Железный Феликс, железный Феликс, а даже не звякнул.
----
Ночью, когда решалась судьба двух империй, Мшрлк исправлял демографическую ситуацию в Аш-Табахе, подорванную катаклизмом. Попросту говоря – палил баб.
----
Техник, возмущенно:
-- Колдун, вы за свою жизнь хоть что-нибудь создали?
Мориэль, после полуминутного раздумья:
-- Да, отравляющее зелье. 
----
* [[Артанис: 1 день]] - приезд, встреча с Альбертом, отъезд в Семивратье
* [[Артанис: 2 день]] - дорога, трактир 
* [[Артанис: 3 день]] - дорога
* [[Артанис: 4 день]] - приезд в Семивратье, беседа с Раулем, солонка "росток святости", появление Литара, телепорт в Твердыню, дипломатия перед советом, Совет, я отправляюсь в подземелья Твердыни
* [[Артанис: 5 день]] - поход в низа, Крышечка, Посвящение, долгий путь наверх, встреча с Аэдвином (-10), тёрки с бехами (-9)
* [[Артанис: 6 день]] - убегаем от бехов, взлет по шахте (главное не размазаться о потолок) на -7, допрос Инженера, протоматерия 1 литр, идем наверх на -6, Зеркальный Зал (ловушка душ), долгие исследования, кастую защиту и вытаскиваю Аэдвина. Поспать не удалось, но приходим в комнату, где Аэдвин нашел палочки.
* [[Артанис: 7 день]] - долгие бдения перед сундуком, взлом доспехов, осмотр Планарного Лифта, Аэдвин отправляется в путешествие, я сплю. Часа через 4.5 Аэдвину вернулся вшоке. Идем наверх. Ловушка из лучей. Я её ломаю. Идем на -5. Путешествие по обжитому -5 ярусу наверх. Вылезаем в зале на нулевом ярусе и идем наверх к Альберту. Ночь с Аэдвином.
* [[Артанис: 8 день]] - экскурсия по Великим Волшебникам - грамоты и договоры. Совещание у Бродгара (боевая магия), эпический договор с Гвартхуром. Информация о Кагренаке (напомню себе о клане каменного колеса!!!). Треп с Бродгаром после. Аэдвин убегает к Шкафандру. Закупившись, вечером отправляюсь в Паучьи леса, ночую, ставлю маяк
* [[Артанис: 9 день]] - телепорт порошком в Столицу. Получение аудиенции у короля Теодорика. Сириус разворачивает грамоты договора Аш-Табаха и Каладона (Аш-Табах про)
@@1 сезон@@

магистра Черных Рыцарей зовут БИДЖУ
его адьютант - Вальд
Оставляю себе краткую аннотацию клановой классификации черных драконов. Семья строится по старшинству наследования – от Главного Дракона происходят сыновья, затем внуки и правнуки.

Драконы бывают мужского и женского рода. Есть члены клана и сыновья клана. Сыновья – молодые, моложе 200 лет драконы, не обладающие правом голоса на совете клана.

Знакомые мне кланы: Гвардху̀ра, Нифнѝра, Бальта̀ри. Скорее всего существует клан Ронарѝ.
!Equipment
* на теле:
** (на шее) амулет Страж - пользовательский терминал к [[Мифалю|Мифаль]]
** (за плечами) - парные мечи ведьмака Кверца Тихого - основателя [[Школы Волка|Школа Волка]], созданы на [[Прайме|Прайме]].
!Inventory
* в простой сумке:
** сундучок 10 золотых в сутки
** литровая фляжка Чистой Воды - подарок драконов, бесконечный источник воды
** кровавый глаз - артефакт связи с Альбертом
** кафедральная методичка "Общая магия для студентов"
* дозы изумрудного порошка
** 12 чистых доз
** 5 доз в Столицу королевства Каладон
** 3 дозы в Семивратье
** 3 дозы в Крепость Рассвета
* в волшебной суме, расшитой бисером и златым шитьем (компрессия объема и веса в 100 раз, собственный объем 3 литра)
** еда (пеммикан и прочее) - на 1 день
** перевод с языка кхметов: "Рассвет зеленой рощи на берегу озера Сяо" - книга духовных практик
!Документы
* рекомендация виконту Эгмонду бе'Пьери при дворе е.в. короля Каладона - представление ко двору
* верительная грамота Советника по Особым Вопросам Верховного Волшебника королевства Каладон (заместитель по магии)
* рекомендательное письмо городскому претору (Praetor urbanus) по поводу назначения меня (и Аэдвина) начальником таможенной службы речного порта Столицы. Выдана Астархом.
----
!Разное
* "Зверь-Книга" -- живой кошмар библиотекаря. Кормить осмысленным текстом, читать дивные сказки (тексты, которые книга когда-то съела). Важно: может съесть спеллбук. Нашли... не помню уже где нашли, но уже с Эдмундом. Может быть купили?
* Великий волшебник, легендарный основатель Твердыни (по крайней мере в 1 сезоне, иначе известном как [[0-план]]).
* 900 с хвостиком лет, родился в далеких и неизвестных землях, по молодости лет обзавелся Посохом Волшебника (см. [[Ключи Мира]]) и провел массу прелюбопытнейших, преопаснейших и преинтереснейших исследований в области мироздания, мирочердака и мироподвала. 
* Остронос.
* Мой учитель. 
----
* Записал (а может быть и разработал) [[Порошок Гуи]], известный также как Изумрудный Порошок Телепортации.
* Энергетическое здоровье = 90
* Побывал на прайме, откуда выбрался с нашей помощью, использовав [[Посох Семи Старцев]].
* Побывал, и наверняка неоднократно на Донце Твердыни, в месте всех сил. 
* Среди кучи артефактов и странных вещей таскает с собой Сердце Дракона (странный "студенистый" сгусток спектральных силовых структур... мда, 6 слов на букву "с" и все неприличные).
* подарил мне амулет Страж - пользовательский доступ к [[Мифалю|Мифаль]].
* в землях Лаэртов обучения разным вещам кажется не проходил, пожалел свой мозг... кажется (!) 
----
"Вы не поверите, изумрудный порошок телепортации творит чудеса"