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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

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

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

----
Also see [[AdvancedOptions]]
<<importTiddlers>>
[img[Bild|http://www.akkumatiki.de/bilder/AM_(e)l+e.jpg]]
Der Akku wird zunächst [[entladen|Entladen]], dann mit der [[Anzahl der Zyklen|ZyklenZahl]] [[geladen|Laden]] und wieder [[entladen|Entladen]].
Der Akku ist dann leer!
[[MemoryEffekt]]e bei ~NiXX-Akkus sollten nicht mehr erkennbar sein.
=> [[Formieren]]
[img[Bild|http://www.akkumatiki.de/bilder/AM_(l)e+l.jpg]]
Der Akku wird zunächst ge[[laden|Laden]], dann mit der [[Anzahl der Zyklen|ZyklenZahl]] (0...9) [[entladen|Laden]] und wieder ge[[laden|Laden]].
Der Akku ist dann voll!
[[MemoryEffekt]]e bei ~NiXX-Akkus sollten nicht mehr erkennbar sein.
=> [[Formieren]]
!Timeouts und Abbruchbedingungen
*+++*[Akkutyp NiCd, NiMh]>
* ''Fehler'' [["Timeout"|FehlerMeldungen/Timeout]] wenn die automatische Vollerkennung nicht innerhalb 100 Minuten stoppt (300 Minuten mit [[Mengenbegrenzung|LadeEntMenge]], kein Timeout bei Stop=[[LADE-MENGE|AbschaltMethode/Lademenge]])
* ''Fehler'' [["Lademenge"|FehlerMeldungen/Lademenge]] wenn bei automatischer Abschaltung der eingestellte Wert überschritten wird.
* ''Fehler'' [["Akkuspannung"|FehlerMeldungen/Akkuspannung]]  wenn LeerlaufSpannung des Akkus kleiner 200mV.
* ''Fehler'' [["Akkuspannung"|FehlerMeldungen/Akkuspannung]] wenn LadeSpannung größer 2000mV pro Zelle.

NiCd: [[Entladespannung|EntladeschlussSpannung]] 850mV, LadeSpannung max. 2000mV
NiMh: [[Entladespannung|NiMhEnt]] 1100mV, LadeSpannung max. 2000mV
===

*+++*[Akkutyp BLEI, BGEL]>
* ''Fehler'' [["Timeout"|FehlerMeldungen/Timeout]] wenn die Vorkonditionierung mit reduziertem Strom länger als 60 Minuten dauert.
* ''Fehler'' [["Timeout"|FehlerMeldungen/Timeout]] wenn nach Einladen von 1C noch nicht die volle LadeSpannung erreicht ist. 
* ''Fehler'' [["Timeout"|FehlerMeldungen/Timeout]] wenn die Ladung länger als 20 Stunden dauert.
* ''Fehler'' [["Lademenge"|FehlerMeldungen/Lademenge]] wenn mehr als das 1,4fache der NennKapazität eingeladen wird. 
**Ladeende sobald der LadeStrom kleiner C/100

[[BLEI|BleiAkku]]:  [[Entladespannung|EntladeschlussSpannung]] 1800mV, LadeSpannung 2400mV
[[BGEL|BleiAkku]]: [[Entladespannung|EntladeschlussSpannung]] 1900mV, LadeSpannung 2300mV
===

*+++*[Akkutyp Li36, Li37, LiFe, IUxx]>
* ''Fehler'' [["Timeout"|FehlerMeldungen/Timeout]] wenn bei [[Li36|LiIo]], [[Li37|LiPo]] die Konditionierungsphase länger als 60 Minuten dauert.
* ''Fehler'' [["Timeout"|FehlerMeldungen/Timeout]] wenn nach Einladen von 1C noch nicht die volle LadeSpannung erreicht ist. 
* ''Fehler'' [["Lademenge"|FehlerMeldungen/Lademenge]] wenn mehr als das 1,4fache der NennKapazität eingeladen wird.
**Ladeende abhängig vom Parameter [[Lith.Stop]]

| [[Li36|LiIo]]: | [[Entladespannung|EntladeschlussSpannung]]<br>3300mV | LadeSpannung<br>4100mV | Die LadeSpannung von [[Lithium-Ionen-Akkus|LiIo]] und [[Lithium-Polymer-Akkus|LiPo]] kann mittes des [[SystemParameter]]s [[Ladespann|LadeSpannung/Ladespann]] variiert werden |
| [[Li37|LiPo]]: | [[Entladespannung|EntladeschlussSpannung]]<br>3300mV | LadeSpannung<br>4200mV |~|
| LiFe: | [[Entladespannung|EntladeschlussSpannung]]<br>2000mV | LadeSpannung<br>3650mV |>|
| IUxx: | [[Entladespannung|EntladeschlussSpannung]] 70% der LadeSpannung | LadeSpannung frei einstellbar |>|
===
!Einstellen der Abschaltmethode beim Laden
Mit dem AkkuParameter ''Stop'' wird festgelegt, nach welchem Kriterium der Ladevorgang beendet werden soll. Der AkkuParameter ist nur bei NiCd / NiMh Akkus sichtbar.
<part Lademenge>
!!~LADE-MENGE
Beim Abschaltkriterium ~LADE-MENGE wird normalerweise das ''1.4''-fache der vorgegebenen Akkunenn[[kapaz|Kapaz]]ität {[[C|NennKapazität]]} mit dem vorgegebenen Ladestrom in den Akku eingeladen. Wenn gewünscht kann die Gesamtlademenge zusätzlich mit dem Parameter 
[[Menge|LadeEntMenge]] variiert werden.
| [img[LADE-MENGE|http://www.akkumatiki.de/bilder/AM_lademenge.jpg]] |
| @@__''Achtung:''__ Mit ~LADE-MENGE gibt es ''keine Vollerkennung''.@@<br>Deshalb darf diese Methode bei höheren Laderaten<br> ''nur für entladene Akkus'' verwendet werden. |
+++[Info]>
Bei Ladeströmen __größer C/8__ wird bei Erreichen der __Ladungsmenge 0.8[[C|NennKapazität]] / (80% [[C|NennKapazität]])__ der Strom auf __[[C|NennKapazität]]/8 (12,5% [[C|NennKapazität]])__ begrenzt und damit eine eventuelle Überlastung des Akkus verhindert.
Bei kleinen Laderaten (z.B. [[C|NennKapazität]]/10) können Akkus mit [[LADE-MENGE|Menge]] gezielt überladen ([[formiert|Formieren]]) werden. Die Methode eignet sich auch zum [[Laden]] von problematischen Akkus die ansonsten zur Frühabschaltung neigen.
+++[Beispiel:]>
Bei Vorgabe [[Kapaz]]=1.000Ah, I-Lade=400mA, [[Menge]]=1400 werden insgesamt 1.400Ah eingeladen.
* Erst wird 2 Stunden mit 400mA bis zur Ladungsmenge 0.800Ah (= 0,8[[C|NennKapazität]] / 80% [[C|NennKapazität]]) geladen.
*Dann wird der Strom auf 125mA (= [[C|NennKapazität]]/8 / (12,5% [[C|NennKapazität]])) reduziert und weitere 4,8 Stunden bis zum Abschalten bei der mit „Menge“ eingestellten 1.400Ah weitergeladen.
===
===
</part>
<part Gradient>
!!GRADIENT
Beim Abschaltkriterium GRADIENT (dU/dT-Abschaltung) erfolgt die Vollerkennung durch Analyse des Kurvenverlaufs der Akkuspannung. Dazu ist eine Mindestladerate von etwa 1C erforderlich (d.h. bei einem 1700mAh Akku sollte 1700mA Ladestrom fließen).
| [img[LADE-MENGE|http://www.akkumatiki.de/bilder/AM_gradient.jpg]] |
+++[Info]>
Während des Ladevorgangs steigt die Akkuspannung kontinuierlich an. Gegen Ende der Ladung wird dieser Anstieg stärker (positiver Gradient) und dann wieder schwächer (negativer Gradient) bis gar kein Spannungsanstieg mehr vorhanden ist.
+++*[Grafik]
|[img[alt_text|http://www.hwolfering.gmxhome.de/akkumwiki/pics/Delta_Abschaltung.jpg]]|
|Quelle: [[www.elektromodellflug.de|http://www.elektromodellflug.de/oldpage/Projekte/reflex_feld.htm]]|
===

Die Gradientenanalyse ermöglicht ein sehr frühzeitiges (schonendes) Beenden der Ladung. Falls die Auswertung aufgrund der Ladecharakteristik des Akkus nicht möglich ist, wird die Ladung trotzdem durch ~DELTA-PEAK beendet.
===
</part>
<part Delta-Peak>
!!~DELTA-PEAK-Abschaltung
Beim Abschaltkriterium ''~DELTA-PEAK''  wird die Differenz aus Maximalwert und aktuellem Wert der Akkuspannung ausgewertet.
| [img[LADE-MENGE|http://www.akkumatiki.de/bilder/AM_deltapk11.jpg]] |
+++[Info]>
Dazu ist eine Mindestladerate von etwa 1C erforderlich (d.h. bei einem 1700mAh Akku sollte mindestens 1700mA Ladestrom fließen).
+++*[Grafik]
|[img[alt_text|http://www.hwolfering.gmxhome.de/akkumwiki/pics/Delta_Abschaltung.jpg]]|
|Quelle: [[www.elektromodellflug.de|http://www.elektromodellflug.de/oldpage/Projekte/reflex_feld.htm]]|
===

Die Empfindlichkeit der automatischen Abschaltung kann durch folgende zwei Parameter beeinflusst werden:
* Die [[Delta-Peak-Schwelle|DeltaPeakSchwelle]] ist als SystemParameter im ServiceMenue einstellbar.
* Die ''~Delta-Peak-Verzögerung'' ist pro AkkuSpeicher in 3 Stufen einstellbar:
** ~DELTA-PK-1 = frühes Abschalten  (ohne Verzögerung)
** ~DELTA-PK-2 = normales Abschalten  (mittlere Verzögerung)
** ~DELTA-PK-3 = spätes Abschalten  (große Verzögerung)
===
</part>
|bgcolor(#ccffcc): 0. |bgcolor(#ccffcc):  @@auch Ungeduldige müssen DIE [[SICHERHEITSHINWEISE|Sicherheitshinweise]] BEACHTEN''!''@@ |>|
|1.| [[Akkumatik]] mittles [[Polklemmen|http://www.rc-network.de/magazin/artikel_08/art_08-041/art_041-01.html#54]] oder per 4 mm [[Goldkontaktstecker|http://www.elektromodellflug.de/hochstromst/hochstromstecker.htm]] mit StromVersorgung [[polrichtig|FehlerMeldungen/Polung]] verbinden, nach dem StartbildSchirm erscheint das HauptMenue<br> [img[Hauptmenue|http://www.akkumatiki.de/bilder/AM_hauptmenue1.jpg]] |>|
|bgcolor(#ccffcc): 2. |bgcolor(#ccffcc): den Cursor (&#9644; ) mittels &#9650;/&#9660; auf [[Augang-1 (obere Zeile)|TechnischeDaten/Ausgang1]] oder [[Augang-2 (untere Zeile)|TechnischeDaten/Ausgang2]] bringen und mit &#9658; auf PAR stellen und ENTER&#9658; drücken |>|
| 3. | im [[Menü|Menues]] AkkuParameter die spez. Eingaben machen, je nach eingestelltem AkkuTyp, [[Programm]] oder [[Stopmethode|AbschaltMethode]] werden einige der folgenden AkkuParameter automatisch ausgeblendet. |>|
|bgcolor(#ccffcc): 4. |bgcolor(#ccffcc): ...AkkuTyp wählen<br>blättern durch &#9650;/&#9660;<br>bestätigen mit ENTER&#9658;<br><br>dann... |bgcolor(#ccffcc): NiCd / NiMh |
|~|~|bgcolor(#ccffcc): [[Blei|BleiAkku]] / [[Blei-Gel|BleiAkku]] |
|~|~|bgcolor(#ccffcc): LiIo / LiPo / LiFe / IUxx |
| 5. | ...[[Programm]] wählen&#9650;/&#9660;<br>ENTER&#9658;<br><br>dann... | [[LADEN|Laden]] / [[ENTLADEN|Entladen]] |
|~|~| [[E+L]] / [[L+E]] / [[(L)E+L]] / [[(E)L+E]] |
|~|~| [[SENDER|Sender]] / [[LAGERN|Lagern]] |
|bgcolor(#ccffcc): 6. |bgcolor(#ccffcc): ZyklenZahl wählen&#9650;/&#9660;<br>ENTER&#9658;<br>dann... |bgcolor(#ccffcc): Der Parameter ZyklenZahl (0...9) erscheint nur bei Programmen,<br> die mehrmals hintereinander durchlaufen werden können:<br>[[E+L]], [[L+E]], [[(L)E+L]], [[(E)L+E]] |
| 7. | [[Stop|AbschaltMethode]]-Methode wählen&#9650;/&#9660;<br>ENTER&#9658; | [[LADE-MENGE|AbschaltMethode/Lademenge]] / [[GRADIENT|AbschaltMethode/Gradient]] / [[DELTA-PEAK|AbschaltMethode/Delta-Peak]]<br>nur bei ~NiXx-Programmen wählbar |
|bgcolor(#ccffcc): 8. |bgcolor(#ccffcc): [[Stromwahl|StromMethode]] wählen&#9650;/&#9660;<br>ENTER&#9658; |bgcolor(#ccffcc): [[AUTO|StromMethode/Auto]] / [[LIMIT|StromMethode/Limit]] / [[FEST|StromMethode/Fest]] |
| 9. | LadeArt wählen&#9650;/&#9660;<br>ENTER&#9658; | [[KONST|LadeArt/Konst]] / [[PULS|LadeArt/Puls]] / [[REFLEX|LadeArt/Reflex]]<br>nur bei ~NiXx-Programmen wählbar |
|bgcolor(#ccffcc): 10. |bgcolor(#ccffcc): [[Zellen|ZellenZahl]] wählen<br>(ZahlenParameter) |bgcolor(#ccffcc): Anzahl der Zellen, die in einem Akku verbaut sind.<br>Parallel geschaltete Zellen zählen als EINE Zelle mit MEHRFACHER NennKapazität!  |>|
| 11. | [[Kapaz]] wählen<br>(ZahlenParameter) | Einstellen der NennKapazität des Akkus<br>bei parallel geschalteten Zellen ergibt sich die Kapazität als MEHRFACHES der Einzelkapazitäten |>|
|bgcolor(#ccffcc): 12. |bgcolor(#ccffcc): I-Lade wählen<br>(ZahlenParameter) |bgcolor(#ccffcc): Einstellen des Ladestroms |>|
| 13. | I-Entlade wählen<br>(ZahlenParameter) | Einstellen des Entladestroms<br>Dieser AkkuParameter ist nur bei Entlade[[programm|Programm]]en sichtbar. |>|
|bgcolor(#ccffcc): 14. |bgcolor(#ccffcc): [[Menge|LadeEntMenge]] wählen<br>(ZahlenParameter) |bgcolor(#ccffcc): Einstellen der Entlade- / Lademenge ([[Limiter]]); beim [[Laden]] von ~NiXx __mit automatischer [[Vollerkennung]] __ stellt die Limitierung der maximalen Lademenge eine zusätzliche Sicherheit dar. |>|
!Einstellen der AkkuParameter
*Je nach eingestelltem AkkuTyp, [[Programm]] oder [[Stopmethode|AbschaltMethode]] werden einige der folgenden AkkuParameter automatisch ausgeblendet. 
*Die AkkuParameter sind nur bei gestopptem Akku[[Ausgang]] veränderbar. Wenn ein [[Programm]] läuft sind sie sichtbar, die Eingabe ist aber gesperrt.
*Wenn in den [[AkkuParameter]]n ganz nach unten geblättert wird erscheint ein Menü zu direkten Starten des Programms.
#[[AkkuTyp]]
**NiCd / NiMh / [[Blei|BleiAkku]] / [[BleiGel|BleiAkku]] / [[Li36|LiIo]] / [[Li37|LiPo]] / LiFe / IUxx
#[[Programm]]
**[[Laden]] / [[Entladen]] / [[E+L]] / [[L+E]] / [[(L)E+L]] / [[(E)L+E]] / [[SENDER|Sender]] / [[LAGERN|Lagern]]
#[[Zyklenzahl|Zyklen]]
#[[Stop|AbschaltMethode]] = AbschaltMethode beim [[Laden]]
**~LADE-MENGE / GRADIENT / ~DELTA-PEAK
#[[Stromwahl|StromMethode]] = Einstellen der StromMethode
** AUTO / LIMIT / FEST
#[[Ladeart|LadeArt]] = Einstellen der Lademethode
** KONST / PULS / REFLEX
#[[Zellen|ZellenZahl]] = Einstellen der Zellenzahl
#[[Kapaz|NennKapazität]] = Einstellen der Nennkapazität des Akkus
#[[I-Lade|LadeStrom]] = Einstellen des Ladestroms
#I-Entlade = Einstellen des Entladestroms
#[[Menge|LadeEntMenge]] = Einstellen der Entlade- / Lademenge ([[Limiter]])
!Interne und externe Akkuspeicher
Pro [[Ausgang]] gibt es 9 interne Akkuspeicher und eine beliebige Anzahl externer Speicherchips zum [[Sichern]] benutzerspezifischer Einstellungen für unterschiedliche Akkus.
|bgcolor(#dddddd):1 &nbsp;&nbsp;~SP4 PAR  LAUF|
|bgcolor(#dddddd):2 &#9724;~SP3 PAR START|
Das Menü "Akkuspeicher" wird im HauptMenue mit Cursor auf dem gewünschten Akku[[ausgang|Ausgang]] und [[ENTER|Tastatur]] aufgerufen.

#+++*[Internen Akkuspeicher wechseln]>
|bgcolor(#dddddd):2 AKKUSPEICHER|
|bgcolor(#dddddd):Auswahl   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3|
Nach Auswahl der neuen Speichernummer werden die im EEPROM gespeicherten Einstellungen geladen. Diese Werte können im Menü AkkuParameter kontrolliert und geändert werden. Beim Start werden dann die aktuellen Einstellungen verwendet.
===

#+++*[AkkuParameter auf internen Akkuspeicher sichern]>
Nach dem Ausschalten oder beim Anwählen eines anderen Akkuspeichers sind die vom Benutzer geänderten AkkuParameter verloren. Falls gewünscht, können aber die geänderten AkkuParameter eines Ausgangs auch dauerhaft im internen Speicher hinterlegt werden.
Es wird immer der aktuelle Akkuspeicher gesichert. Deshalb folgende Reihenfolge beachten:
# Erst den gewünschten Akkuspeicher anwählen
# Dann alle AkkuParameter einstellen
# Dann den Akkuspeicher sichern
Nach korrekter Eingabe des [[Passwortes|PasswortAbfrage]] wird der momentan eingestellte interne AkkuSpeicher mit den aktuellen (geänderten) [[AkkuParameter]]n überschrieben.
===

#+++*[AkkuParameter auf externen Speicherchip sichern]>
Je nach Ausbaustufe des Geräts können Speicherchips für beide Ausgänge oder nur für [[Ausgang-1|TechnischeDaten/Ausgang1]] angeschlossen werden.
Im folgenden Menü werden die momentan eingestellten AkkuParameter auf einen externen Speicherchip gesichert. Dazu muss ein solcher Speicherchip am Gerät angesteckt sein.
|bgcolor(#dddddd):1 AKKUSPEICHER|
|bgcolor(#dddddd):Sichern &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extern|
Nach korrekter Eingabe des [[Passwort|PasswortAbfrage]]es werden die aktuellen AkkuParameter in den angesteckten Speicherchip geschrieben.
__Es erfolgt keine Kontrolle, ob das Speichern erfolgreich war.__
Deshalb beim nächsten Anstecken des Chips kontrollieren, ob tatsächlich die gewünschten Einstellungen geladen wurden!
===

#+++*[AkkuParameter aus externem Speicherchip übernehmen]>
Je nach Ausbaustufe des Geräts können Speicherchips für beide [[Ausgänge|Ausgang]] oder nur für [[Ausgang-1|TechnischeDaten/Ausgang1]] angeschlossen werden. Das Anstecken eines Speicherchips wird innerhalb 1-2 Sekunden automatisch erkannt. Wenn der Chip korrekte AkkuParameter enthält, werden diese für den entsprechenden [[Ausgang]] als aktuelle Einstellungen übernommen. Es erscheint dann folgende Meldung, wobei der [[Ausgang]] links oben angezeigt wird:
|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Daten|
|bgcolor(#dddddd):&nbsp;|
Wenn die Meldung nicht kommt, enthält der Chip keine gültigen Daten.
__Tipp:__
Wenn der Chip Parameter enthält, die aber nicht übernommen werden sollen, muss während des Ansteckens für 2-3 Sekunden die [[ESC-Taste|Tastatur]] gedrückt werden. 
!Auswahl des Akkutyps

Das Gerät unterstützt alle gängigen Akkutypen. Mit der ENTER Taste kann zwischen folgenden Akkutypen gewählt werden:
|NiCd ~Nickel-Cadmium-Akku |[img[Bild|http://www.akkumatiki.de/bilder/AM_nicd.jpg]]|
|NiMh ~Nickel-Metallhydrid-Akku |~|
|[[BLEI|BleiAkku]] ~Blei-Akku |[img[Bild|http://www.akkumatiki.de/bilder/AM_blei.jpg]]|
|[[BGEL|BleiAkku]] ~Blei-Gel-Akku |~|
|[[Li36|LiIo]] ~Lithium-Akku<br>**mit 3,6V NennSpannung<br>**bzw. 4,1V LadeSpannung |[img[Bild|http://www.akkumatiki.de/bilder/AM_li36.jpg]]|
|[[Li37|LiPo]] ~Lithium-Akku<br>**mit 3,7V NennSpannung<br>**bzw. 4,2V LadeSpannung |[img[Bild|http://www.akkumatiki.de/bilder/AM_li37.jpg]]|
|LiFe ~LiFePO4 bzw. A123 Akkus<br>**mit 3,6V LadeSpannung |[img[Bild|http://www.akkumatiki.de/bilder/AM_life.jpg]]|
|IUxx Akkutyp für ~IU-Ladeverfahren<br> mit frei wählbarer LadeSpannung.<br> Für den Akkutyp "IUxx" kann die LadeSpannung in den Systemparametern frei definiert werden. Dadurch ist eine schnelle Anpassung an neue Akkugenerationen möglich. Aber auch normale [[Blei-|BleiAkku]] / [[Lithium-|LiPo]] / RAM-Akkus können durch diesen Akkutyp individuell geladen werden. Nach RESET ist "IUxx" mit 3600mV passend für [[LiFe|LiFe]]~PO4 Akkus voreingestellt. |[img[Bild|http://www.akkumatiki.de/bilder/AM_iuxx.jpg]]|
Dieses [[TiddlyWiki|http://de.wikipedia.org/wiki/TiddlyWiki]] beschreibt das ~Lade-Entlade-Diagnosesystem
!AKKUMATIK
für Ungeduldige: SchnellEinstieg und [[Akku laden]] / [[NennSpannung]]en
[img[Akkumatik |http://hwolfering.gmxhome.de/akkumwiki/pics/AM_frontansicht2.jpg]]<<imageMap Frontansicht_Map##Frontansicht_MapKoord>>
----
anhand der Bedienungsanleitung vom 05.02.2012
ab der Softwarerevision 1.26
!Alarmauswertung externer Balancer
|bgcolor(#dddddd):SYSTEMPARAMETER|
|bgcolor(#dddddd):Alarmeingang  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0|
Der Lader kann Datensignale geeigneter __externer__ [[Balancer]] empfangen. Der Parameter „Alarmeingang“ bestimmt, ob für einen Akku[[ausgang|Ausgang]] externe Datensignale ausgewertet werden.
Bei aktivierter Auswertung wird im [[Lade|LadeMenue]]- oder [[Entlademenü|Entladen]] das Zeichen [*] angezeigt.
0  keine externe [[Balancer]]auswertung
1 externe [[Balancer]]auswertung nur für Akku[[ausgang|Ausgang]] 1
2  externe [[Balancer]]auswertung nur für Akku[[ausgang|Ausgang]] 2
3  externe [[Balancer]]auswertung für beide Akkuausgänge (nicht gleichzeitig)
Mit internem [[Balancer]] ist ein zusätzlicher externer [[Balancer]] nur für [[Ausgang]]-2 möglich. Der
Parameter muss in dem Fall auf 2 stehen.  
!Alarmauswertung externer [[Balancer]]
[img[Bild|http://www.akkumatiki.de/bilder/AM_alarmeingang.jpg]]
Der Lader kann Datensignale geeigneter [[externer Balancer|Balancer/ExtBalancer]] empfangen. Der Parameter „Alarmeingang“ bestimmt, ob für einen Akku[[ausgang|Ausgang]] externe Datensignale ausgewertet werden. Bei aktivierter Auswertung wird im [[Lade-|Laden]] oder EntladeMenue das Zeichen [*] angezeigt.
* 0  keine externe Balancerauswertung
* 1 externe Balancerauswertung nur für Akkuausgang 1
* 2  externe Balancerauswertung nur für Akkuausgang 2
*3  externe Balancerauswertung für beide Akkuausgänge (nicht gleichzeitig)
Mit internem Balancer ist ein zusätzlicher externer Balancer nur für Ausgang-2 möglich. Der Parameter muss in dem Fall auf 2 stehen.  
!Alarmschwelle der externen Temperatursensoren
Hier wird die Alarmschwelle der externen Temperatursensoren eingestellt.
[img[Bild|http://hfranzw.de/Akkumatiki/pics/Akkumatik_050TempSen.jpg]]
Der Wert wird in Grad Celsius eingegeben und legt die maximal zulässige Akkutemperatur beim Laden fest. Wird die eingestellte Temperatur am TemperaturSensor erreicht, wird der [[Ladevorgang|Laden]] abgebrochen.
! Allgemeine Informationen
*[[AKKUMATIK|Akkumatik]] ist ein professionelles Lade-, Entlade-, Pflege- und Diagnosegerät für alle derzeit marktüblichen [[AkkuTyp]]en. 
*Die zwei voneinander unabhängig arbeitenden Akku[[ausgänge|Ausgang]] werden von einem modernen ~RISC-Prozessor gesteuert. Die leistungsfähige Elektronik stellt bis zu 250W Ladeleistung bzw. Ladestrom bis 10A zur Verfügung.
*Die intuitive, deutschsprachige Menüsteuerung erfolgt mit [[4 Tasten|Tastatur]] und einem kontraststarken [[Display]]. Im laufenden Betrieb ist die [[Anzeige]] durch Tastendruck auf den gewünschten Akku[[ausgang|Ausgang]] umschaltbar, während der andere im Hintergrund weiterarbeitet. Dadurch sind alle aktuellen Betriebsdaten und Einstellungen jederzeit ablesbar.
*Die Steuerung ermöglicht einen vollautomatischen Betrieb ohne manuelle Vorgaben. Gleichzeitig gibt es viele Einstellmöglichkeiten für eine optimale Kontrolle durch den Anwender. 
*Die [[Programm]]auswahl bietet alle Kombinationen aus [[Entladen]] und [[Laden]], aber auch spezielle [[Programm]]e zum [[Senderladen|Sender]] oder [[Einlagern von Lithiumakkus|Lagern]]. Dazu ist bei allen Mehrfachprogrammen die gewünschte ZyklenZahl vorwählbar. Auch langsame [[Formierladungen|Formieren]] sind möglich. 
*Der Funktionsumfang reicht von [[Konstantstrom|LadeArt/Konst]], [[Puls-|LadeArt/Puls]] oder [[Reflex|LadeArt/Reflex]]laden, wahlweise mit [[Delta-Peak|AbschaltMethode/Delta-Peak]], [[Gradientenauswertung|AbschaltMethode/Gradient]] oder reinem [[Mengenladen|AbschaltMethode/Lademenge]], frei einstellbaren Strömen, [[Limiterfunktion|Menge]] bis hin zum ErhaltungsLaden.
*Im laufenden Betrieb werden alle wichtigen Parameter und Werte angezeigt. Nach [[Programm]]ende sieht man die eingeladenen und entnommenen Ladungsmengen. 
*Zum Sichern individueller Einstellungen gibt es pro [[Ausgang]] 9 interne AkkuSpeicher. Außerdem können die Einstellungen in steckbaren Speicherchips gesichert und so einem bestimmten Akku zugeordnet werden. Beim späteren erneuten Anstecken eines solchen Speicherchips werden die dort hinterlegten Parameter automatisch übernommen. 
*Die Zellen von 2-12s Lithiumakkus werden durch einen hochgenauen, integrierten [[Balancer]]/Equalizer überwacht und angeglichen. Von [[externen Balancern|Balancer/ExtBalancer]] kann die Datenleitung angeschlossen werden. Die Zellenspannungen und Balanceraktivität werden am [[Display]] und am PC angezeigt. 
*Für maximale Sicherheit können an beide Akku[[ausgänge|Ausgang]] [[TemperaturSensor]]en angeschlossen werden. 
*Für hohe Entladeleistung kann zusätzlich über einen externen LastWiderstand entladen werden.
*Eine [[serielle Schnittstelle|PC_Schnittstelle]] verbindet das Ladegerät mit dem PC und ermöglicht über die SoftWare [[LOGVIEW|LogView]] eine komfortable Auswertung des laufenden [[Programm]]s. Die Daten können auch [[offline gespeichert|OfflineLogging]] und erst später zum PC gesendet werden.  
*Eine komplette [[Fernsteuerung]] und [[Parametrierung]] des Laders via PC ist ebenfalls realisiert.
*Die Steuersoftware ist in einem ~Flash-Memory gespeichert und kann jederzeit problemlos mit PC/Notebook an der [[seriellen Schnittstelle|PC_Schnittstelle]] aktualisiert werden. Softwareupdates gibt es kostenlos unter [[www.akkumatik.de|http://www.akkumatik.de]]
!Anhang
* TechnischeDaten
* MenueStruktur
* Anschluss und Datenformat der seriellen [[PC-Schnittstelle|PC_Schnittstelle]]
* Timeouts und AbbruchBedingungen
* Beschreibung der FehlerMeldungen
! Einstellungen für spezielle Anwendungsfälle
* [[Formieren]] von NiMh / NiCd Akkus
* [[Kapazitätstest|Kapaz]]
* [[Zyklen]] (mehrmaliges Laden und Entladen)
* Lithiumakkus für längere [[Lagerung|Lagern]] vorbereiten
* Akkus mit Schutzdiode laden ([[SenderAkku|Sender]]s)
Das [[Display]] stellt alle Geräteparameter sowie die Lade- und Entladedaten in einem 2-zeiligen [[Display]] kontrastreich dar.
* AkkuSpeicher
* AkkuParameter
* ServiceMenue
* SystemParameter
 Je nach Ausstattungsvariante ist es hintergrundbeleuchtet.
An den Ausgängen 1 (links) + 2 (rechts) werden die zu behandelnden Akkus polrichtig angeschlossen.
Das Gerät ist an Eingang und den Akkuausgängen gegen Falschpolung geschützt.
&nbsp;&nbsp;&nbsp;&nbsp; - Bei verpolter [[Stromersorgung|VersorgungsSpannung]] bleibt das [[Display|Anzeige]] dunkel. 
&nbsp;&nbsp;&nbsp;&nbsp; - Bei Falschpolung oder Kurzschluss am Akkuausgang erscheint beim [[Programm]]start eine Fehlermeldung [["Polung"|FehlerMeldungen/Polung]].
*Achtung:
** Niemals den Minuspol des Akku[[ausgang|Ausgang]]s mit dem Pluspol der StromVersorgung verbinden
** Am Ausgang-2 keine Akkus mit höherer Spannung als die Versorgungsspannung anschließen
** Nach Trennen der StromVersorgung darf am [[Ausgang]]-2 kein Akku verbleiben, weil dieser sonst das Gerät mit Spannung versorgt und unkontrolliert entladen wird.
Zur Inbetriebnahme die [[Polklemmen|http://www.rc-network.de/magazin/artikel_08/art_08-041/art_041-01.html#54]] zügig ohne Wackeln an die StromVersorgung anschließen. Am [[Display|Anzeige]] wird der StartbildSchirm mit Software- und Hardwareversion angezeigt. Zur Funktionskontrolle wird auch der [[Lüfter]] kurz eingeschaltet. Nach 3 Sekunden erscheint automatisch das HauptMenue und das Gerät ist betriebsbereit.

*+++*[Akkuausgang 1]>
|>|!Akkuausgang 1|
|ZellenZahl bei NiCd, NiMh |1...34|
|ZellenZahl bei [[Blei, Blei-Gel|BleiAkku]] |1...20|
|ZellenZahl bei [[Li-Ionen|LiIo]], [[Li-Polymer|LiPo]] |1...12 / balancieren über [[internen Balancer|Balancer/IntBalancer]] oder [[externen Balancer|Balancer/ExtBalancer]]|
|ZellenZahl bei [[LiFePO4|LiFe]] (A123) |1…14 / balancieren über [[internen Balancer|Balancer/IntBalancer]] oder [[externen Balancer|Balancer/ExtBalancer]]|
|Ausgangsspannung |0,6...51V|
|LadeStrom |50mA...10A|
|EntladeStrom |50mA...5A|
|Maximale Ladeleistung |250W (im Dauerbetrieb möglich)|
|Maximale Entladeleistung |30W (bis zu 200W mit LastWiderstand|
|[[Abschaltverfahren beim Laden|AbschaltMethode]] |Automatisch oder mit definierter [[Ladungsmenge|LadeEntMenge]]|
|Stromeinstellung |Automatisch entsprechend InnenWiderstand des Akkus, oder nach Voreinstellung|
|LadeArt |[[Konstantstrom, Konstantspannung|LadeArt/Konst]], [[Puls|LadeArt/Puls]], [[Reflex (bis 50W)|LadeArt/Reflex]]|
|Funktion |GlühkerzenHeizung Glühkerzenstrom im Bereich 1200…4500mA einstellbar|
|[[integierter Balancer|Balancer/IntBalancer]] |2…12s, 300mA, für LiIo, LiPo, [[LiFePO (A123)|LiFe]], ~NiXX-Entl.|
===

*+++*[Akkuausgang 2]>
|>|!Akkuausgang_2|
|ZellenZahl bei NiCd, NiMh |1...8 abhängig von der VersorgungsSpannung|
|ZellenZahl bei [[Blei, Blei-Gel|BleiAkku]] |1...4 abhängig von der VersorgungsSpannung|
|ZellenZahl bei [[Li-Ionen|LiIo]], [[Li-Polymer|LiPo]] |1…3 abhängig von der VersorgungsSpannung / balancieren über [[externen Balancer|Balancer/ExtBalancer]]|
|ZellenZahl bei [[LiFePO4|LiFe]] |1…3 abhängig von der VersorgungsSpannung / balancieren über [[externen Balancer|Balancer/ExtBalancer]]|
|Ausgangsspannung |0,6...13,4V abhängig von der VersorgungsSpannung|
|LadeStrom |50mA...2600mA|
|Maximale Ladeleistung | 30W|
|[[Abschaltverfahren beim Laden|AbschaltMethode]] |Automatisch oder mit definierter [[Ladungsmenge|LadeEntMenge]]|
|Stromeinstellung |Automatisch entsprechend InnenWiderstand des Akkus, oder nach Voreinstellung|
|LadeArt |Konstantstrom, Konstantspannung|
===
!Autostart
>wird erreicht über [[''Tastenfolge''|Tastatur]]
>''ENTER+ESC''> DN> DN> DN> ''ENTER''> DN>
|[img[Bild|ftp://akkumatiki.de@akkumatiki.de/bilder/AM_autostart.jpg]]|Mit der [[ENTER|Tastatur]]-Taste<br> wird die Eingabe aktiviert.|
|''Die Funktion ist erst nach korrekter Passworteingabe aktiv!''|>|
Bei aktivem Autostart wird beim Anstecken des Akkus sofort mit den aktuellen [[AkkuParameter]]n gestartet. Während der ersten Sekunden werden der eingestellte AkkuTyp und die ZellenZahl angezeigt. 
*Kontrollieren Sie immer, ob der angeschlossene AkkuTyp mit dem vom [[Programm]] verwendeten AkkuTyp übereinstimmt. 
*Stellen Sie unbedingt sicher, dass der angeschlossene AkkuTyp mit dem beim Start aktivierten AkkuTyp übereinstimmt.
Bei Falscheinstellung / Missachtung kann der Akku zerstört werden.
Der Begriff ''Balancer'', zu deutsch (~Zellen-Ladungszustands-) Ausgleicher oder Ausgleichsregler, bezeichnet ein elektrisches Gerät, das optimale Ladung einzelner Zellen von [[Lithium-Ionen-Akkus|LiIo]] oder [[Lithium-Polymer-Akkus|LiPo]], sowie einen Schutz vor Überladung gewährleistet.
----
Quelle: [[Wikipedia|http://de.wikipedia.org/wiki/Balancer]] / weitere: [[RC-Network|http://wiki.rc-network.de/Balancer]]

*+++*[Interner Balancer/Equalizer]>
<part IntBalancer>
Mit dem internen Balancer/[[Equalizer|Balancer/Equalizer]] können am [[Ausgang]]-1 die einzelnen Zellenspannungen von 2…12s Akkus überwacht und angeglichen werden. Die Akkuzellen werden mit einem passenden Adapterkabel über den 14poligen Stecker oben am Gehäuse kontaktiert. Wenn der Balancer korrekt mit dem Akku verbunden ist, erscheint im LadeMenue das Zeichen [*] und im InfoMenue bzw. in LogView sind alle Zellenspannungen ablesbar.
Sobald  beim [[Laden]] / [[Entladen]] eine Zelle die maximal zulässige Spannung über-/unterschreitet, wird der LadeStrom stufenweise zurückgeregelt. => [[Equalizer|Balancer/Equalizer]]-Funktion

@@''Lithiumakkus sollten aus Sicherheitsgründen nie ohne Balancerüberwachung geladen werden.''@@

Tipp:
Der interne Balancer kann auch bei stromlosem Ladegerät zum Angleichen eines Akkupacks verwendet werden. Dazu einfach den 14poligen Balancerstecker mit dem Akku verbinden. Solange die Zellen angeglichen werden, blinkt eine grüne LED auf der Balancerplatine (sichtbar wenn man oben bei der 3poligen Stiftleiste reinschaut). Sobald das Blinken aufhört, ist der Akku angeglichen und der Balancer geht in einen stromsparenden Ruhemodus.
Sollen 2-~Zellen-Packs angeglichen werden, muß das [[Akkumatik]] an eine [[Spannungsquelle|BetriebsSpannung]] angeschlossen sein!</part>
===

*+++*[Externer Balancer/Equalizer]>
<part ExtBalancer>
Der Lader kann die Datenleitung von folgenden externen Balancern/[[Equalizer|Balancer/Equalizer]] am [[Ausgang-2|TechnischeDaten/Ausgang2]] auswerten:
* LBA10 Net 6s (Hyperion)
* Top-[[Equalizer|Balancer/Equalizer]] 300, 6s und 12s (Robbe)
* Lipo-Control (Simprop)
* Intelli-Balancer (Jamara)
* Balancer LCB-6C (LCB)
* MEX [[Equalizer|Balancer/Equalizer]] 6S (MEX)
* MegaPower LCB-12S
Die Datenleitung wird an der 3poligen Stiftleiste angeschlossen. Der Stecker muss ''polrichtig''  am AlarmEingang angesteckt werden, d.h. die ''Codierungsfahne'' bzw. das ''weiße Kabel'' des Steckers zeigt zum [[Lüfter]]. Die Anzeige und das Verhalten ist identisch wie beim internen [[Balancer]] </part>===

<part Equalizer hidden>
Ein Equalizer ist eine aktive Schaltung, die die Einzelspannungen der Zellen untereinander vergleicht. 
Er teilt den Ladestrom gleichsam zwischen den Zellen auf, so dass die Zellen mit der geringsten Spannung den höchsten Ladestrom bekommen.
Der Equalizer ist technisch aufwändiger als der Balancer, hat aber den Vorteil, dass die Ladung schneller erfolgt, weil keine Energie vernichtet wird. Zudem erfolgt die Angleichung schon während der Ladung, nicht erst zum Ladeende. 
----
Quelle: [[RC-Network|http://wiki.rc-network.de/Balancer]]
</part>
* 9V...15V stabilisierte Gleichspannung
* Zur Inbetriebnahme die [[Polklemmen|http://www.rc-network.de/magazin/artikel_08/art_08-041/art_041-01.html#54]] zügig ohne Wackeln an die Stromversorgung anschließen. Am Display wird der StartbildSchirm mit SoftWare - und Hardwareversion angezeigt. Zur Funktionskontrolle wird auch der Lüfter  kurz eingeschaltet. Nach 3 Sekunden erscheint automatisch das HauptMenue und das Gerät ist betriebsbereit.
Bei einem Bleiakkumulator (kurz Bleiakku) handelt es sich um eine Ausführung des Akkumulators, bei der die Elektroden im geladenen Zustand aus Blei und Bleidioxid und der Elektrolyt  aus verdünnter Schwefelsäure besteht.
Die Nennspannung einer Zelle beträgt 2 Volt, die Spannung schwankt jedoch je nach Ladezustand und Lade- bzw. Entladestrom zwischen ca. 1,75 und 2,4 Volt.
Bleiakkumulatoren gelten für eine Lebensdauer von einigen Jahren als zuverlässig und preisgünstig. Im Vergleich mit anderen Akkumulatortechnologien sind sie jedoch ziemlich schwer und weisen eine geringe Energiedichte von nur 0,11 MJ/kg auf.
/***
|Name|BreadcrumbsPlugin|
|Author|Eric Shulman|
|Source|http://www.TiddlyTools.com/#BreadcrumbsPlugin|
|Documentation|http://www.TiddlyTools.com/#BreadcrumbsPluginInfo|
|Version|2.1.2|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|list/jump to tiddlers viewed during this session plus "back" button/macro|
This plugin provides a list of links to all tiddlers opened during the session, creating a "trail of breadcrumbs" from one tiddler to the next, allowing you to quickly navigate to any previously viewed tiddler, or select 'home' to reset the display to the initial set of tiddlers that were open at the start of the session (i.e., when the document was loaded into the browser).
!!!!!Documentation
<<<
see [[BreadcrumbsPluginInfo]]
<<<
!!!!!Configuration
<<<
<<option chkCreateDefaultBreadcrumbs>> automatically create breadcrumbs display (if needed)
<<option chkShowBreadcrumbs>> show/hide breadcrumbs display
<<option chkReorderBreadcrumbs>> re-order breadcrumbs when visiting a previously viewed tiddler
<<option chkBreadcrumbsHideHomeLink>> omit 'Home' link from breadcrumbs display
<<option chkBreadcrumbsSave>> prompt to save breadcrumbs when 'Home' link is pressed
<<option chkShowStartupBreadcrumbs>> show breadcrumbs for 'startup' tiddlers
<<option chkBreadcrumbsReverse>> show breadcrumbs in reverse order (most recent first)
<<option chkBreadcrumbsLimit>> limit breadcrumbs display to {{twochar{<<option txtBreadcrumbsLimit>>}}} items
<<option chkBreadcrumbsLimitOpenTiddlers>> limit open tiddlers to {{twochar{<<option txtBreadcrumbsLimitOpenTiddlers>>}}} items

<<<
!!!!!Revisions
<<<
2009.10.19 [2.1.2] code reduction
| Please see [[BreadcrumbsPluginInfo]] for previous revision details |
2006.02.01 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.BreadcrumbsPlugin= {major: 2, minor: 1, revision: 2, date: new Date(2009,10,19)};

var defaults={
	chkShowBreadcrumbs:		true,
	chkReorderBreadcrumbs:		true,
	chkCreateDefaultBreadcrumbs:	true,
	chkShowStartupBreadcrumbs:	false,
	chkBreadcrumbsReverse:		false,
	chkBreadcrumbsLimit:		false,
	txtBreadcrumbsLimit:		5,
	chkBreadcrumbsLimitOpenTiddlers:false,
	txtBreadcrumbsLimitOpenTiddlers:3,
	chkBreadcrumbsHideHomeLink:	false,
	chkBreadcrumbsSave:		false,
	txtBreadcrumbsHomeSeparator:	' | ',
	txtBreadcrumbsCrumbSeparator:	' > '
};
for (var id in defaults) if (config.options[id]===undefined)
	config.options[id]=defaults[id];

config.macros.breadcrumbs =  {
	crumbs: [], // the list of current breadcrumbs
	askMsg: "Save current breadcrumbs before clearing?\n"
		+"Press OK to save, or CANCEL to continue without saving.",
	saveMsg: 'Enter the name of a tiddler in which to save the current breadcrumbs',
	saveTitle: 'SavedBreadcrumbs',
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var area=createTiddlyElement(place,"span",null,"breadCrumbs",null);
		area.setAttribute("homeSep",params[0]||config.options.txtBreadcrumbsHomeSeparator);
		area.setAttribute("crumbSep",params[1]||config.options.txtBreadcrumbsCrumbSeparator);
		this.render(area);
	},
	add: function (title) {
		var thisCrumb = title;
		var ind = this.crumbs.indexOf(thisCrumb);
		if(ind === -1)
			this.crumbs.push(thisCrumb);
		else if (config.options.chkReorderBreadcrumbs)
			this.crumbs.push(this.crumbs.splice(ind,1)[0]); // reorder crumbs
		else
			this.crumbs=this.crumbs.slice(0,ind+1); // trim crumbs
		if (config.options.chkBreadcrumbsLimitOpenTiddlers)
			this.limitOpenTiddlers();
		this.refresh();
		return false;
	},
	getAreas: function() {
		var crumbAreas=[];
		// find all DIVs with classname=="breadCrumbs"
		var all=document.getElementsByTagName("*");
		for (var i=0; i<all.length; i++)
			try{ if (hasClass(all[i],"breadCrumbs")) crumbAreas.push(all[i]); } catch(e) {;}
		// or, find single DIV w/fixed ID (backward compatibility)
		var byID=document.getElementById("breadCrumbs")
		if (byID && !hasClass(byID,"breadCrumbs")) crumbAreas.push(byID);
		if (!crumbAreas.length && config.options.chkCreateDefaultBreadcrumbs) {
			// no crumbs display... create one
			var defaultArea = createTiddlyElement(null,"span",null,"breadCrumbs",null);
		 	defaultArea.style.display= "none";
			var targetArea= document.getElementById("tiddlerDisplay");
		 	targetArea.parentNode.insertBefore(defaultArea,targetArea);
			crumbAreas.push(defaultArea);
		}
		return crumbAreas;
	},
	refresh: function() {
		var crumbAreas=this.getAreas();
		for (var i=0; i<crumbAreas.length; i++) {
			crumbAreas[i].style.display = config.options.chkShowBreadcrumbs?"block":"none";
			removeChildren(crumbAreas[i]);
			this.render(crumbAreas[i]);
		}
	},
	render: function(here) {
		var co=config.options; var out=""
		if (!co.chkBreadcrumbsHideHomeLink) {
			createTiddlyButton(here,"Home",null,this.home,"tiddlyLink tiddlyLinkExisting");
			out+=here.getAttribute("homeSep")||config.options.txtBreadcrumbsHomeSeparator;
		}
		for (c=0; c<this.crumbs.length; c++) // remove non-existing tiddlers from crumbs
			if (!store.tiddlerExists(this.crumbs[c]) && !store.isShadowTiddler(this.crumbs[c]))
				this.crumbs.splice(c,1);
		var count=this.crumbs.length;
		if (co.chkBreadcrumbsLimit && co.txtBreadcrumbsLimit<count) count=co.txtBreadcrumbsLimit;
		var list=[];
		for (c=this.crumbs.length-count; c<this.crumbs.length; c++) list.push('[['+this.crumbs[c]+']]');
		if (co.chkBreadcrumbsReverse) list.reverse();
		out+=list.join(here.getAttribute("crumbSep")||config.options.txtBreadcrumbsCrumbSeparator);
		wikify(out,here);
	},
	home: function() {
		var cmb=config.macros.breadcrumbs;
		if (config.options.chkBreadcrumbsSave && confirm(cmb.askMsg)) cmb.saveCrumbs();
		story.closeAllTiddlers(); restart();
		cmb.crumbs = []; var crumbAreas=cmb.getAreas();
		for (var i=0; i<crumbAreas.length; i++) crumbAreas[i].style.display = "none";
		return false;
	},
	saveCrumbs: function() {
		var tid=prompt(this.saveMsg,this.saveTitle); if (!tid||!tid.length) return; // cancelled by user
		var t=store.getTiddler(tid);
		if(t && !confirm(config.messages.overwriteWarning.format([tid]))) return;
		var who=config.options.txtUserName;
		var when=new Date();
		var text='[['+this.crumbs.join(']]\n[[')+']]';
		var tags=t?t.tags:[]; tags.pushUnique('story');
		var fields=t?t.fields:{};
		store.saveTiddler(tid,tid,text,who,when,tags,fields);
		story.displayTiddler(null,tid);
		story.refreshTiddler(tid,null,true);
		displayMessage(tid+' has been '+(t?'updated':'created'));
	},
	limitOpenTiddlers: function() {
		var limit=config.options.txtBreadcrumbsLimitOpenTiddlers; if (limit<1) limit=1;
		for (c=this.crumbs.length-1; c>=0; c--) {
			var tid=this.crumbs[c];
			var elem=document.getElementById(story.idPrefix+tid);
			if (elem) { // tiddler is displayed
				if (limit <=0) { // display limit has been reached
					if (elem.getAttribute("dirty")=="true") { // tiddler is being edited
						var msg= "'"+tid+"' is currently being edited.\n\n"
							+"Press OK to save and close this tiddler\n"
							+"or press Cancel to leave it opened";
						if (confirm(msg)) {
							story.saveTiddler(tid);
							story.closeTiddler(tid);
						}
					}
					else story.closeTiddler(this.crumbs[c]);
				}
				limit--;
			}
		}
	}
};
//}}}
// // PreviousTiddler ('back') command and macro
//{{{
config.commands.previousTiddler = {
	text: 'back',
	tooltip: 'view the previous tiddler',
	handler: function(event,src,title) {
		var here=story.findContainingTiddler(src); if (!here) return;
		var crumbs=config.macros.breadcrumbs.crumbs;
		if (crumbs.length<2) config.macros.breadcrumbs.home();
		else story.displayTiddler(here,crumbs[crumbs.length-2]);
		return false;
	}
};
config.macros.previousTiddler= {
	label: 'back',
	prompt: 'view the previous tiddler',
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var label=params.shift(); if (!label) label=this.label;
		var prompt=params.shift(); if (!prompt) prompt=this.prompt;
		createTiddlyButton(place,label,prompt,function(ev){
			return config.commands.previousTiddler.handler(ev,this)
		});
	}
}
//}}}
// // HIJACKS
//{{{
// update crumbs when a tiddler is displayed
if (Story.prototype.breadCrumbs_coreDisplayTiddler==undefined)
	Story.prototype.breadCrumbs_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler) {
	var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
	this.breadCrumbs_coreDisplayTiddler.apply(this,arguments);
	if (!startingUp || config.options.chkShowStartupBreadcrumbs)
		config.macros.breadcrumbs.add(title);
}

// update crumbs when a tiddler is deleted
if (TiddlyWiki.prototype.breadCrumbs_coreRemoveTiddler==undefined)
	TiddlyWiki.prototype.breadCrumbs_coreRemoveTiddler=TiddlyWiki.prototype.removeTiddler;
TiddlyWiki.prototype.removeTiddler= function() {
	this.breadCrumbs_coreRemoveTiddler.apply(this,arguments);
	config.macros.breadcrumbs.refresh();
}
//}}}
Der Cursor wird im [[Display]] so dargestellt:
*auf __freien Displayfeldern__<br>blinkend, wechselnde Anzeige zwischen
**Rechteck&#9724; und
**Tiefstrich~~''&#9644;''~~
*auf __zeichenbesetzten Displayfeldern__<br>
**Tiefstrich~~''&#9644;''~~ unterhalb des Zeichens
siehe ZahlenParameter
Schnittstelle zum [[offline Loggen|OfflineLogging]] des Ladevorgangs am [[Ausgang|TechnischeDaten/Ausgang1]]-1.
Ist, wie beim hier beschriebenen Gerät der [[interne Balancer|Balancer/IntBalancer]] verbaut, ist ein [[offline Loggen|OfflineLogging]] des [[Ausgangs 2|TechnischeDaten/Ausgang2]] nicht mehr möglich.
Akkumatik
!~Delta-Peak-Schwelle für NiCd und NiMh Akkus
Dieser Parameter bestimmt die Empfindlichkeit der automatischen Vollerkennung bei NiCd und NiMh Akkus.
[img[Bild|http://www.akkumatiki.de/bilder/AM_nixxdelta.jpg]]
Je kleiner der Wert gewählt wird, desto empfindlicher reagiert die [[automatische Abschaltung|automatAbschalt]]. Der Wert bezieht sich auf eine Zelle und sollte im Bereich zwischen 1…9mV liegen.
Kontraststarkes 2x16 LCD Character Display, optional mit Beleuchtung
[img[Startbildschirm|http://hfranzw.de/Akkumatiki/pics/Akkumatik_009Version.jpg]]
[img[Bild|http://www.akkumatiki.de/bilder/AM_e+l.jpg]]
Der Akku wird [[Entladen]] und nach einer [[Pause]] wieder ge[[laden|Laden]]
*Mit UP/DN wird die [[Pause]] zwischen [[Entladen]] - [[Laden]] vorzeitig beendet.
!Endemenü
Nach Beendigung eines Programms erscheint folgende [[Anzeige]]:
|bgcolor(#dddddd):1 &nbsp;&nbsp;''STATUS''   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;49:56|
|bgcolor(#dddddd):-1.234Ah&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+1.546Ah|
* Oben links steht der [[Akkuausgang|Ausgang]].
* Oben rechts steht die bis zum Stop verstrichene Zeit.
* In der unteren Zeile steht die entnommene und eingeladene Ladungsmenge.
* Das EndeMenue wird mit jeder beliebigen Taste verlassen.
Der ''STATUS'' im EndeMenue oben links kann folgende Informationen anzeigen:
* VOLL [[Ladevorgang|Laden]] wurde korrekt beendet, Akku ist voll geladen
* LEER [[Entladevorgang|Entladen]] wurde korrekt beendet, Akku ist leer
* [[MENGE|LadeEntMenge]] Vorgang wurde durch eingestelltes [[Mengenlimit|LadeEntMenge]] beendet
* STOP Vorgang wurde manuell (vorzeitig) beendet
* [[FEHLER|FehlerMeldungen]] Vorgang wurde fehlerhaft beendet
!Entladestromreduzierung
[img[Bild|ftp://akkumatiki.de@akkumatiki.de/bilder/AM_entlreduz.jpg]]
Mit Entladestromreduzierung wird der Strom nach Erreichen der EntladeschlussSpannung langsam kleiner und der Akku weiter entladen. Die Zellenspannung wird dabei genau auf ~Entladeschluss-Spannung gehalten. Das Entladen wird beendet, sobald der Strom auf 1/5 des Anfangswertes abgesunken ist.
Wird ein [[Programm]] gewählt, daß auch [[Entlade|Entladen]]phasen durchläuft, muß im Menue AkkuParameter als 5. Parameter die [[Stromwahl|StromMethode]] (Auto, Limit, Fest) vorgegeben werden. Als 10. [[Parameter|I-Entlade]] ist dann der EntladeStrom als [[Zahlenwert|ZahlenParameter]] vorzugeben.
!Entlademenü
[img[Bild|http://www.akkumatiki.de/bilder/AM_entladen2.jpg]]
|bgcolor(#dddddd): 1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;08&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Zellen&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NiCd|
|bgcolor(#dddddd): -456mA  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-0.001Ah|
Beim Starten eines Entladevorgangs wird während der ersten 15 Sekunden der AkkuTyp und blinkend die ZellenZahl angezeigt. Während dieser Zeit kann bei [[NiCd]] / [[NiMh]] die ZellenZahl mit ''UP'' / ''DN'' korrigiert werden. Bei Anzeige 00 wurde keine ZellenZahl vorgegeben - mit UP&#9650;/DN&#9660; wird auch in diesem Fall die automatisch festgestellte ZellenZahl angezeigt und verändert.

@@Bitte immer kontrollieren, ob der angezeigte AkkuTyp stimmt.
Bei Lithium- und [[BleiAkku]]s muss unbedingt auch die richtige ZellenZahl angezeigt werden.@@

|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;''XXX'' &nbsp;&nbsp;&nbsp;15.7V &nbsp;&nbsp;&nbsp;03:51|
|bgcolor(#dddddd):-456mA  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;–1.326Ah|
Während einer laufenden Entladung sind alle wichtigen Werte auf einen Blick ablesbar:
* Oben Links   aktuell angezeigter [[Ausgang]] mit [[Status|Entladen/EntlStatus]] ''XXX''
* Oben Mitte   am Akku anliegende Spannung in Volt
* Oben Rechts verstrichene Zeit in Minuten (ab 60 Minuten in Stunden)
* Unten Links aktueller EntladeStrom in mA oder A
* Unten Rechts bis jetzt entnommene Ladungsmenge
*+++*[Entladestatus]
<part EntlStatus>
Der Status ''XXX'' kann diese Info anzeigen:
* NE NiCd / NiMh Akku wird entladen
* BE BleiAkku wird entladen
* LE [[Lithiumakku|LiPo]] wird entladen
* XE frei einstellbarer Akkutyp IUxx wird entladen
* xx* EntladeschlussSpannung erreicht, weitere Entladung mit reduziertem Strom
</part>
===

*+++*[Tastenfunktionen]
Die Tasten haben im Entlademenü diese Funktionen:
* Mit UP&#9650;/DN&#9660; ist bei NiCd / NiMh während der ersten 15 Sekunden die ZellenZahl einstellbar.
* Mit UP&#9650;/DN&#9660; ist nach der Anzeige von ZellenZahl und Akkutyp der EntladeStrom einstellbar.
* Mit UP&#9650;/DN&#9660; wird die [[Pause]] zwischen [[Entladen]] - [[Laden]] vorzeitig beendet.
* Mit ENTER&#9658; wird das InfoMenue angezeigt.
* Mit nochmaligem ENTER&#9658; wird der laufende Vorgang beendet (manueller Stop).
* Mit ESC&#9668; geht’s zurück zum HauptMenue. Dort können z.B. die verwendeten AkkuParameter kontrolliert werden, während der Akku im Hintergrund weiter entladen wird.
* Mit ESC&#9668;+UP&#9650; wird Akku[[ausgang-1|TechnischeDaten/Ausgang1]] gestartet oder angezeigt.
* Mit ESC&#9668;+DN&#9660; wird Akku[[ausgang-2|TechnischeDaten/Ausgang2]] gestartet oder angezeigt.
===
Die EntladeschlussSpannung ist die Spannung die zum Ende der Akkuentladung nicht ohne Schaden für den Akku ([[Kapaz]]ität; Lebensdauer) __''unterschritten''__ werden darf.
Bei ~AKKUAMTIK-Entladeprogrammen mit [[ZellenZahl]]vorgabe 0 erfolgt die Berechnung der Entladeschlussspannung automatisch in Abhängigkeit von der Akkuspannung bei Entladebeginn.

__Bei Vorgabe der [[ZellenZahl]] ist die Entladeschlussspannung unabhängig von der Spannungslage des Akkus und deshalb genauer.__ 
!Erhaltungsladen
|bgcolor(#dddddd):SYSTEMPARAMETER|
|bgcolor(#dddddd):Erhalt.Lad. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JA|
Hier wird das Erhaltungsladen bei den Akkutypen NiCd/NiMh ein- oder ausgeschalten. Beim Erhaltungsladen wird der Akku nach Ladeende weiter mit kurzen Strompulsen „nachgeladen“.
!Fehlermeldungen
Fehlermeldungen kommen entweder direkt beim Start eines [[Programm]]s (falsche AkkuParameter) oder während eines laufenden Vorgangs (wenn beispielsweise der Akku abgesteckt wird).
|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;FEHLER|* Links oben steht welcher Akku[[ausgang|Ausgang]] die Fehlermeldung<br>  ausgelöst hat.<br>* In der zweiten Zeile steht der Fehlername.<br>* Die Fehlermeldung wird mit jeder beliebigen Taste gelöscht.|
|bgcolor(#dddddd):Fehlertext|~|
!!Fehlernamen
*+++*[Timeout]>
<part Timeout>
__Bei Akkutyp NiCd / NiMh __
* Maximale Ladezeit wurde überschritten
__Bei Akkutyp [[BLEI / BGEL|BleiAkku]] / [[Li36|LiIo]] / [[Li37|LiPo]] / IUxx __
* Konditionierungsphase dauerte zu lange
* Konstantstromphase dauerte zu lange
</part>
===

*+++*[Lade-Menge]>
<part Lademenge>
* Maximale (vorgegebene) [[Ladungsmenge|LadeEntMenge]] überschritten
</part>
===

*+++*[Min.Vers.]>
<part Min.Vers.>
* VersorgungsSpannung zu niedrig oder zu hoch
* VersorgungsSpannung zu niedrig für aktuelles Lade[[programm|Programm]] am [[Ausgang-2|TechnischeDaten/Ausgang2]]
</part>
===

*+++*[Akkuspannung]>
<part Akkuspannung>
[img[Bild|http://www.akkumatiki.de/bilder/AM_fehler1.jpg]]
* Kein Akku angesteckt oder Anschlussleitung unterbrochen
* Maximal zulässige Spannung des Ausgangs wurde überschritten
</part>
===

*+++*[Zellenspannung]>
<part Zellenspannung>
[img[Bild|http://www.akkumatiki.de/bilder/AM_fehler2.jpg]]
* Spannung pro Zelle beim Laden von NiCd / NiMh war größer als 2V
* [[Balancer]] erkennt eine andere ZellenZahl als eingestellt ist
* Kabelbruch in der Balancerleitung
</part>
===

*+++*[Alarmeingang]>
<part Alarmeingang>
* LadeStrom wurde durch externen Alarm bis auf Minimum reduziert
</part>
===

*+++*[Stromregler]>
<part Stromregler>
* Maximal zulässiger Strom des Ausgangs wurde überschritten
* Sollstrom wurde längere Zeit überschritten
</part>
===

*+++*[Polung/Kurzschl.]>
<part Polung>
* Akku ist verpolt am [[Ausgang]] angeschlossen oder hat einen Kurzschluss
</part>
===

*+++*[Regelfenster]>
<part Regelfenster>
* Hilfsspannung für [[Ausgang-1|TechnischeDaten/Ausgang1]] kann nicht korrekt nachgeführt werden
</part>
===

*+++*[Messfenster]>
<part Messfenster>
* Hilfsspannung für [[Ausgang-1|TechnischeDaten/Ausgang1]] war außerhalb des messbaren Bereichs
* Senderakku mit Schutzdiode geht nur mit dem Programm [[Sender]]
</part>
===

*+++*[Akku zu heiss]>
<part Akkuheiss>
* Der externe TemperaturSensor meldet zu hohe Akkutemperatur =>[[Alarmschwelle des Temperatursensors|Alarmschwelle_TempSensor]]
</part>
===

*+++*[Temperatur]>
<part Temperatur>
* Das Gerät ist durch hohe Verlustleistung zu heiß geworden
</part>
===

*+++*[Temp.Sens.]>
<part Temp.Sens.>
* interner oder externer TemperaturSensor liefert fehlerhafte Werte
</part>
===

*+++*[Service]>
<part Service>
* Die Checksummenprüfung der [[Kalibrierung]]swerte ist fehlgeschlagen
</part>
===

*+++*[Hardware]>
<part Hardware>
Wenn der Fehler bei korrekter [[Kalibrierung]] dauerhaft kommt, sind folgende Ursachen möglich:
** Entladestufe an [[Ausgang-1|TechnischeDaten/Ausgang1]] defekt
** Spannungswandler an [[Ausgang-1|TechnischeDaten/Ausgang1]] defekt
** Ladestufe an [[Ausgang-1|TechnischeDaten/Ausgang1]] oder [[Ausgang-2|TechnischeDaten/Ausgang2]] defekt
</part>
===

*+++*[Kalibrierung]>
<part Kalibrierung>
Ein oder mehrere [[Kalibrierung|Kalibrierung]]swerte sind außerhalb der Toleranz. Zur genaueren Analyse die [[Kalibrierung]]swerte wie in der Bauanleitung beschrieben auf der PC_Schnittstelle auslesen.
</part>
===

*+++*[A1_ Spann]>
<part A1_Spann>
*Akku-1: Abgleichspannung für die aktuelle ZellenZahl zu klein
</part>
===

*+++*[Sensorkalib.]>
<part Sensorkalib.>
Problem beim [[Kalibrieren|Kalibrierung]] des internen [[TemperaturSensor]]s
</part>
===
Mit Hilfe der SoftWare LogView sind die Lade-/Entladeprogramme am PC/Laptop konfigurierbar. Sie werden in LogView als "Settings" gespeichert und können an das Ladegerät über die PC_Schnittstelle gesendet (Übertragen, Start, Stop) werden.
!~FlyHein
Grüße aus ~West-Westfalen

früher hab ich immer ~MPX-Servostecker benutzt, heute mach ich mir Sorgen.
Mein Verein: [[VMC-Grenzflieger|http://www.vmc-grenzflieger.de/]]
Mein Beitrag: [[RC-Network/Magazin|http://www.rc-network.de/magazin/artikel_08/art_08-041/art_041-01.html]]
<html>
<a href="mailto:HarlietteW@gmx.de?subject=eine%20Mail%20von%20AkkumaTIKI">E-Post Kontakt</a>
</html>
/***
|Name|FontSizePlugin|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#FontSizePlugin|
|Version|1.0|
|Requires|~TW2.x|
!Description:
Resize tiddler text on the fly. The text size is remembered between sessions by use of a cookie.
You can customize the maximum and minimum allowed sizes.
(only affects tiddler content text, not any other text)

Also, you can load a TW file with a font-size specified in the url.
Eg: http://tw.lewcid.org/#font:110

!Demo:
Try using the font-size buttons in the sidebar, or in the MainMenu above.

!Installation:
Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
Then put {{{<<fontSize "font-size:">>}}} in your SideBarOptions tiddler, or anywhere else that you might like.

!Usage
{{{<<fontSize>>}}} results in <<fontSize>>
{{{<<fontSize font-size: >>}}} results in <<fontSize font-size:>>

!Customizing:
The buttons and prefix text are wrapped in a span with class fontResizer, for easy css styling.
To change the default font-size, and the maximum and minimum font-size allowed, edit the config.fontSize.settings section of the code below.

!Notes:
This plugin assumes that the initial font-size is 100% and then increases or decreases the size by 10%. This stepsize of 10% can also be customized.

!History:
*27-07-06, version 1.0 : prevented double clicks from triggering editing of containing tiddler.
*25-07-06,  version 0.9

!Code
***/

//{{{
config.fontSize={};

//configuration settings
config.fontSize.settings =
{
            defaultSize : 100,  // all sizes in %
            maxSize : 200,
            minSize : 40,
            stepSize : 10
};

//startup code
var fontSettings = config.fontSize.settings;

if (!config.options.txtFontSize)
            {config.options.txtFontSize = fontSettings.defaultSize;
            saveOptionCookie("txtFontSize");}
setStylesheet(".tiddler .viewer {font-size:"+config.options.txtFontSize+"%;}\n","fontResizerStyles");
setStylesheet("#contentWrapper .fontResizer .button {display:inline;font-size:105%; font-weight:bold; margin:0 1px; padding: 0 3px; text-align:center !important;}\n .fontResizer {margin:0 0.5em;}","fontResizerButtonStyles");

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

               var sp = createTiddlyElement(place,"span",null,"fontResizer");
               sp.ondblclick=this.onDblClick;
               if (params[0])
                           createTiddlyText(sp,params[0]);
               createTiddlyButton(sp,"+","increase font-size",this.incFont);
               createTiddlyButton(sp,"=","reset font-size",this.resetFont);
               createTiddlyButton(sp,"–","decrease font-size",this.decFont);
}

config.macros.fontSize.onDblClick = function (e)
{
             if (!e) var e = window.event;
             e.cancelBubble = true;
             if (e.stopPropagation) e.stopPropagation();
             return false;
}

config.macros.fontSize.setFont = function ()
{
               saveOptionCookie("txtFontSize");
               setStylesheet(".tiddler .viewer {font-size:"+config.options.txtFontSize+"%;}\n","fontResizerStyles");
}

config.macros.fontSize.incFont=function()
{
               if (config.options.txtFontSize < fontSettings.maxSize)
                  config.options.txtFontSize = (config.options.txtFontSize*1)+fontSettings.stepSize;
               config.macros.fontSize.setFont();
}

config.macros.fontSize.decFont=function()
{

               if (config.options.txtFontSize > fontSettings.minSize)
                  config.options.txtFontSize = (config.options.txtFontSize*1) - fontSettings.stepSize;
               config.macros.fontSize.setFont();
}

config.macros.fontSize.resetFont=function()
{

               config.options.txtFontSize=fontSettings.defaultSize;
               config.macros.fontSize.setFont();
}

config.paramifiers.font =
{
               onstart: function(v)
                  {
                   config.options.txtFontSize = v;
                   config.macros.fontSize.setFont();
                  }
};
//}}}
!Formieren von NiMh / NiCd Akkus
Diese Lademethode ist bei neuen oder länger gelagerten NiCd / NiMh Akkus sinnvoll. Dabei werden die einzelnen Zellen eines Akkupacks durch gezieltes "Überladen" mit kleiner Laderate (= langsames [[Laden]] ohne [[Vollerkennung]], auch Zeitladen genannt, ''~1/10[[C|NennKapazität]]'') auf den gleichen Vollzustand gebracht.
Hier ein typisches Beispiel für einen NIMH Akku mit 1000mAh Kapazität
|AkkuTyp   | NiMh ||
|[[Programm]]  | [[LADEN|Laden]] | evtl. [[E+L]] |
|@@[[Programm]] [[LADEN|Laden]] nur, wenn die zu formierenden Akkus wirklich leer sind.<br>Alle Zellen sollten die entsprechende EntladeschlussSpannung aufweisen!@@|>|>|
|[[Stop|AbschaltMethode]]|  [[LADE-MENGE|AbschaltMethode/Lademenge]] | d.h. keine [[Vollerkennung]] |
|LadeArt| xxxx | beliebig |
|[[Kapaz]]|   01.000Ah ||
|I-Lade| 0100mA | kleine Laderate z.B. 1/10[[C|NennKapazität]] |
|[[Menge|LadeEntMenge]]| 01.400Ah | frei wählbar, normalerweise 1.4[[C|NennKapazität]] |
*Der Akku wird ohne [[Vollerkennung]] mit 100mA geladen.
*Nach Erreichen der vorgegebenen Menge von 1400mAh wird die Ladung nach etwa 14 Stunden beendet.
*Ist der Zustand des Akkus vor dem Formieren nicht bekannt, kann zusätzlich die [[Temperatur|TemperaturSensor]] als ''bedingungsloses'' AbschaltKriterium genutzt werden.
----
siehe auch:
*[[RC-Network|http://wiki.rc-network.de/Formierung]]
----
[img[alt_text|http://www.akkumatiki.de/bilder/AM_frontansicht2.jpg]]<<mapMaker Frontansicht_Map##Frontansicht_MapKoord>>
----

!Frontansicht_MapKoord
Tastatur
330,351,442,245,555,350,441,453
----
PC_Schnittstelle
564,522,550,363,607,362,604,518
----
MenueStruktur
72,406,75,272,328,271,330,407
----
TechnischeDaten/Ausgang1
63,247,129,246,140,136,75,130
----
TechnischeDaten/Ausgang2
499,246,500,138,564,134,571,213
----
TemperaturSensor
141,246,142,170,210,167,209,246
----
TemperaturSensor
420,246,417,150,487,149,493,245
----
Balancer/IntBalancer
221,226,217,172,310,170,305,220
----
Balancer/ExtBalancer
311,180,311,225,334,223,335,178
----
Daten
335,224,335,179,410,178,407,222
----
BetriebsSpannung
422,132,412,25,635,27,631,135
----
Lüfter
218,135,224,22,407,24,412,132
----
Tastatur
317,304,399,225,487,299,400,370
----
PC_Schnittstelle
489,357,631,365,625,262,490,268
----
MenueStruktur
139,274,312,273,312,331,140,330
----
Ausgang
102,108,166,107,172,225,109,224
----
Ausgang
444,129,450,200,506,198,499,126
----
TemperaturSensor
173,138,178,225,229,224,229,136
----
Balancer
237,163,238,224,321,220,320,160
----
Daten
320,163,321,222,376,223,372,161
----
BetriebsSpannung
526,5,537,112,420,112,420,111
----
Lüfter
236,12,232,115,387,122,380,11,380,10
----
var lewcidFullScreen = false;

config.commands.fullscreen =
{
            text:" ↕ ",
            tooltip:"ganzer Schirm"
};

config.commands.fullscreen.handler = function (event,src,title)
{
            if (lewcidFullScreen == false)
               {
                lewcidFullScreen = true;
                setStylesheet('#sidebar, .header, #mainMenu{display:none;} #displayArea{margin:0em 0 0 0 !important;}',"lewcidFullScreenStyle");
               }
            else
               {
                lewcidFullScreen = false;
                setStylesheet(' ',"lewcidFullScreenStyle");
               }
}

config.macros.fullscreen={};
config.macros.fullscreen.handler =  function(place,macroName,params,wikifier,paramString,tiddler)
{
        var label = params[0]||" ↕ ";
        var tooltip = params[1]||"Fullscreen mode";
        createTiddlyButton(place,label,tooltip,config.commands.fullscreen.handler);
}

var lewcid_fullscreen_closeTiddler = Story.prototype.closeTiddler;
Story.prototype.closeTiddler =function(title,animate,slowly)
{
           lewcid_fullscreen_closeTiddler.apply(this,arguments);
           if (story.isEmpty() && lewcidFullScreen == true)
              config.commands.fullscreen.handler();
}


Slider.prototype.lewcidStop = Slider.prototype.stop;
Slider.prototype.stop = function()
{
           this.lewcidStop();
           if (story.isEmpty() && lewcidFullScreen == true)
              config.commands.fullscreen.handler();
}
{{{
//--
//-- TiddlyWiki German Translation - r10856
//-- Maintainer: Besim Karadeniz <besim(-at-)karadeniz(-dot-)de>
//-- Web: www.karadeniz.de/tiddlywiki/
//--

if (config.options.txtUserName == "YourName")
	merge(config.options,{txtUserName: "IhrName"});

merge(config.tasks,{
	save: {text: "speichern", tooltip: "Änderungen in dieses TiddlyWiki speichern", action: saveChanges},
	sync: {text: "synchronisieren", tooltip: "Änderungen mit anderen TiddlyWiki-Dateien und Servern synchronisieren", content: '<<sync>>'},
	importTask: {text: "importieren", tooltip: "Tiddler und Plugins aus anderen TiddlyWiki-Dateien und Servern importieren", content: '<<importTiddlers>>'},
	tweak: {text: "optimieren", tooltip: "Erscheinungsbild und Reaktion des TiddlyWiki optimieren", content: '<<options>>'},
	upgrade: {text: "upgraden", tooltip: "Upgraden des Kerncodes von TiddlyWiki", content: '<<upgrade>>'},
	plugins: {text: "Plugins", tooltip: "Installierte Plugins verwalten", content: '<<plugins>>'}
});

// Optionen, die im Options-Panel oder/in Cookies eingestellt werden koennen
merge(config.optionsDesc,{
	txtUserName: "Ihr Benutzername zum Unterzeichnen Ihrer Einträge",
	chkRegExpSearch: "Reguläre Ausdrücke in der Suche aktivieren",
	chkCaseSensitiveSearch: "Groß-/Kleinschreibung in der Suche aktivieren",
	chkIncrementalSearch: "Inkrementelle Zeichen-für-Zeichen-Suche",
	chkAnimate: "Animationen aktivieren",
	chkSaveBackups: "Beim Speichern ein Backup erstellen",
	chkAutoSave: "Automatisch speichern",
	chkGenerateAnRssFeed: "RSS-Feed beim Speichern generieren",
	chkSaveEmptyTemplate: "Leere Vorlage beim Speichern generieren",
	chkOpenInNewWindow: "Externe Links in einem neuen Fenster öffnen",
	chkToggleLinks: "Klick auf geöffnete Tiddler lässt diese schließen",
	chkHttpReadOnly: "Bearbeitungsfunktionen ausblenden, wenn Zugriff via HTTP",
	chkForceMinorUpdate: "Bearbeitungen als kleine Änderungen mit Beibehaltung von Datum und Zeit behandeln",
	chkConfirmDelete: "Löschbestätigung vor dem Löschen von Tiddlern",
	chkInsertTabs: "Benutzen Sie die Tabulatortaste um Tabulatorzeichen einzufügen anstelle jeweils zum nächsten Feld zu springen",
	txtBackupFolder: "Verzeichnisname für Backup Dateien:",
	txtMaxEditRows: "Maximale Zahl von Zeilen in einer Textbox eines Tiddlers:",
	txtTheme: "Name des zu verwendenden Themes",
	txtFileSystemCharSet: "Standard-Zeichensatz beim Speichern von Änderungen (nur Firefox/Mozilla)"});

merge(config.messages,{
	customConfigError: "Beim Laden von Plugins sind Fehler aufgetreten. Siehe PluginManager für Details",
	pluginError: "Fehler: %0",
	pluginDisabled: "Nicht ausgeführt, da durch 'systemConfigDisable'-Tag deaktiviert",
	pluginForced: "Ausgeführt, da durch 'systemConfigForce'-Tag erzwungen",
	pluginVersionError: "Nicht ausgeführt, da dieses Plugin eine neuere Version von TiddlyWiki erfordert",
	nothingSelected: "Nichts ausgewählt. Sie müssen zuerst ein oder mehrere Elemente auswählen",
	savedSnapshotError: "Es scheint, dass dieses TiddlyWiki inkorrekt gespeichert wurde. Bitte besuchen Sie http://www.tiddlywiki.com/#Download für Details",
	subtitleUnknown: "(unbekannt)",
	undefinedTiddlerToolTip: "Der Tiddler '%0' existiert noch nicht",
	shadowedTiddlerToolTip: "Der Tiddler '%0' existiert noch nicht, hat aber einen vordefinierten Schatteneintrag",
	tiddlerLinkTooltip: "%0 - %1, %2",
	externalLinkTooltip: "Externer Link zu %0",
	noTags: "Es gibt keine getaggten Tiddler",
	notFileUrlError: "Sie müssen zunächst dieses TiddlyWiki in eine Datei speichern, bevor Änderungen gespeichert werden können",
	cantSaveError: "Änderungen können nicht gespeichert werden. Mögliche Gründe:\n- Ihr Browser unterstützt das Abspeichern nicht (Firefox, Internet Explorer, Safari und Opera können dies mit richtiger Konfiguration)\n- Der Pfadname zu Ihrem TiddlyWiki enthält ungültige Zeichen\n- Die TiddlyWiki-HTML-Datei wurde verschoben oder umbenannt",
	invalidFileError: "Die originale Datei '%0' scheint kein gültiges TiddlyWiki zu sein",
	backupSaved: "Backup gespeichert",
	backupFailed: "Fehler beim Speichern des Backup",
	rssSaved: "RSS-Feed gespeichert",
	rssFailed: "Fehler beim Speichern des RSS-Feed",
	emptySaved: "Leere Vorlage gespeichert",
	emptyFailed: "Fehler beim Speichern der leeren Vorlage",
	mainSaved: "TiddlyWiki-Datei gespeichert",
	mainFailed: "Fehler beim Speichern der TiddlyWiki-Datei. Ihre Änderungen wurden nicht gespeichert",
	macroError: "Fehler im Makro <<\%0>>",
	macroErrorDetails: "Fehler beim Ausführen von Makro <<\%0>>:\n%1",
	missingMacro: "Kein entsprechendes Makro vorhanden",
	overwriteWarning: "Ein Tiddler namens '%0' existiert bereits. Wählen Sie OK zum Überschreiben",
	unsavedChangesWarning: "WARNUNG! Ungespeicherte Änderungen im TiddlyWiki vorhanden\n\nWählen Sie OK zum Speichern\nWählen Sie ABBRECHEN/CANCEL zum Verwerfen",
	confirmExit: "--------------------------------\n\nUngespeicherte Änderungen im TiddlyWiki vorhanden. Wenn Sie fortfahren, werden Sie diese Änderungen verlieren\n\n--------------------------------",
	saveInstructions: "SaveChanges",
	unsupportedTWFormat: "Nicht unterstütztes TiddlyWiki-Format '%0'",
	tiddlerSaveError: "Fehler beim Speichern von Tiddler '%0'",
	tiddlerLoadError: "Fehler beim Laden von Tiddler '%0'",
	wrongSaveFormat: "Speichern im Speicherformat '%0' nicht möglich. Standardformat zum Speichern wird verwendet.",
	invalidFieldName: "Ungültiger Dateiname %0",
	fieldCannotBeChanged: "Feld '%0' kann nicht geändert werden",
	loadingMissingTiddler: "Es wird versucht, den Tiddler '%0' vom Server '%1' bei\n\n'%2' im Workspace '%3' abzurufen",
	upgradeDone: "Das Upgrade auf Version %0 ist komplett\n\nKlicken Sie auf 'OK' zum Neuladen des aktualisierten TiddlyWiki"});

merge(config.messages.messageClose,{
	text: "schließen",
	tooltip: "diesen Textbereich schließen"});

config.messages.backstage = {
	open: {text: "Backstage", tooltip: "Öffnen Sie den Backstage-Bereich für Arbeiten an Entwicklungs- und Bearbeitungsaufgaben"},
	close: {text: "schließen", tooltip: "Backstage-Bereich schließen"},
	prompt: "Backstage: ",
	decal: {
		edit: {text: "bearbeiten", tooltip: "Den Tiddler '%0' bearbeiten"}
	}
};

config.messages.listView = {
	tiddlerTooltip: "Klick für den vollen Text dieses Tiddlers",
	previewUnavailable: "(Vorschau nicht vorhanden)"
};

config.messages.dates.months = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November","Dezember"];
config.messages.dates.days = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
config.messages.dates.shortMonths = ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"];
config.messages.dates.shortDays = ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"];
// Suffixe für Datum (englischsprachig), z.B. "1st","2nd","3rd"..."30th","31st"
config.messages.dates.daySuffixes = ["st","nd","rd","th","th","th","th","th","th","th",
	"th","th","th","th","th","th","th","th","th","th",
	"st","nd","rd","th","th","th","th","th","th","th",
	"st"];
config.messages.dates.am = "am";
config.messages.dates.pm = "pm";

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

merge(config.views.wikified.tag,{
	labelNoTags: "keine Tags",
	labelTags: "Tags: ",
	openTag: "Öffne Tag '%0'",
	tooltip: "Zeige Tiddlers mit Tags '%0'",
	openAllText: "Öffne alle",
	openAllTooltip: "Alle diese Tiddler öffnen",
	popupNone: "Keine anderen Tiddler mit '%0' getaggt"});

merge(config.views.wikified,{
	defaultText: "Der Tiddler '%0' existiert noch nicht. Doppelklicken zum Erstellen",
	defaultModifier: "(fehlt)",
	shadowModifier: "(vordefinierter Schatten-Tiddler)",
	dateFormat: "DD. MMM YYYY",
	createdPrompt: "erstellt"});

merge(config.views.editor,{
	tagPrompt: "Geben Sie die Tags durch Leerstellen getrennt ein, [[benutzen Sie doppelte eckige Klammern]] falls nötig, oder wählen Sie vorhandene",
	defaultText: "Geben Sie den Text für '%0' ein"});

merge(config.views.editor.tagChooser,{
	text: "Tags",
	tooltip: "Wählen Sie vorhandene Tags zum Hinzufügen zu diesem Tiddler aus",
	popupNone: "Es sind keine Tags definiert",
	tagTooltip: "Tag '%0' hinzufügen"});

merge(config.messages,{
	sizeTemplates:
		[
		{unit: 1024*1024*1024, template: "%0\u00a0GB"},
		{unit: 1024*1024, template: "%0\u00a0MB"},
		{unit: 1024, template: "%0\u00a0KB"},
		{unit: 1, template: "%0\u00a0B"}
		]});

merge(config.macros.search,{
	label: "suchen",
	prompt: "Dieses TiddlyWiki durchsuchen",
	accessKey: "F",
	successMsg: "%0 Tiddler gefunden, die %1 enthalten",
	failureMsg: "Keine Tiddler gefunden, die %0 enthalten"});

merge(config.macros.tagging,{
	label: "Tagging: ",
	labelNotTag: "kein Tagging",
	tooltip: "Liste der Tiddler, die mit '%0' getaggt sind"});

merge(config.macros.timeline,{
	dateFormat: "DD. MMM YYYY"});

merge(config.macros.allTags,{
	tooltip: "Tiddler, die mit '%0' getagged sind, anzeigen",
	noTags: "Keine getaggten Tiddler vorhanden"});

config.macros.list.all.prompt = "Alle Tiddler in alphabetischer Reihenfolge";
config.macros.list.missing.prompt = "Tiddler, auf die verwiesen wird, die aber nicht existieren";
config.macros.list.orphans.prompt = "Tiddler, auf die nicht von anderen Tiddlern verwiesen wird";
config.macros.list.shadowed.prompt = "Tiddler, für die Standardeinträge existieren";
config.macros.list.touched.prompt = "Tiddlers, die lokal verändert wurden";

merge(config.macros.closeAll,{
	label: "alle schließen",
	prompt: "Alle angezeigten Tiddler schließen (außer denen, die gerade bearbeitet werden)"});

merge(config.macros.permaview,{
	label: "Permaview",
	prompt: "Erzeugt einen URL, mit dem auf alle gerade geöffneten Tiddler verwiesen werden kann"});

merge(config.macros.saveChanges,{
	label: "Änderungen speichern",
	prompt: "Alle Änderungen speichern",
	accessKey: "S"});

merge(config.macros.newTiddler,{
	label: "Neuer Tiddler",
	prompt: "Neuen Tiddler erstellen",
	title: "Neuer Tiddler",
	accessKey: "N"});

merge(config.macros.newJournal,{
	label: "Neues Journal",
	prompt: "Neuen Tiddler mit aktuellem Datum und aktueller Zeit erstellen",
	accessKey: "J"});

merge(config.macros.options,{
	wizardTitle: "Erweiterte Optionen verändern",
	step1Title: "Diese Optionen werden mit Cookies in Ihrem Browser gespeichert",
	step1Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='false' name='chkUnknown'>Unbekannte Optionen anzeigen</input>",
	unknownDescription: "//(unbekannt)//",
	listViewTemplate: {
		columns: [
			{name: 'Option', field: 'option', title: "Option", type: 'String'},
			{name: 'Description', field: 'description', title: "Beschreibung", type: 'WikiText'},
			{name: 'Name', field: 'name', title: "Name", type: 'String'}
			],
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'}
			]}
	});

merge(config.macros.plugins,{
	wizardTitle: "Plugins verwalten",
	step1Title: "Aktuell geladene Plugins",
	step1Html: "<input type='hidden' name='markList'></input>",
	skippedText: "(Dieses Plugin wurde nicht ausgeführt, da es nach dem Start hinzugefügt wurde)",
	noPluginText: "Es sind keine Plugins installiert",
	confirmDeleteText: "Wollen Sie wirklich folgende Plugins löschen:\n\n%0",
	removeLabel: "systemConfig-Tag entfernen",
	removePrompt: "systemConfig-Tag entfernen",
	deleteLabel: "löschen",
	deletePrompt: "Diese Tiddler endgültig löschen",
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
			{name: 'Description', field: 'Description', title: "Beschreibung", type: 'String'},
			{name: 'Version', field: 'Version', title: "Version", type: 'String'},
			{name: 'Size', field: 'size', tiddlerLink: 'size', title: "Grösse", type: 'Size'},
			{name: 'Forced', field: 'forced', title: "Erzwungen", tag: 'systemConfigForce', type: 'TagCheckbox'},
			{name: 'Disabled', field: 'disabled', title: "Deaktiviert", tag: 'systemConfigDisable', type: 'TagCheckbox'},
			{name: 'Executed', field: 'executed', title: "Geladen", type: 'Boolean', trueText: "Ja", falseText: "Nein"},
			{name: 'Startup Time', field: 'startupTime', title: "Startzeit", type: 'String'},
			{name: 'Error', field: 'error', title: "Status", type: 'Boolean', trueText: "Fehler", falseText: "OK"},
			{name: 'Log', field: 'log', title: "Log", type: 'StringList'}
			],
		rowClasses: [
			{className: 'error', field: 'error'},
			{className: 'warning', field: 'warning'}
			]}
	});

merge(config.macros.toolbar,{
	moreLabel: "mehr",
	morePrompt: "Weitere Funktionen anzeigen",
	lessLabel: "weniger",
	lessPrompt: "Zusätzliche Befehle verstecken",
	separator: "|"
	});

merge(config.macros.refreshDisplay,{
	label: "aktualisieren",
	prompt: "Gesamte TiddlyWiki-Ansicht aktualisieren"
	});

merge(config.macros.importTiddlers,{
	readOnlyWarning: "Sie können nicht in eine schreibgeschützte TiddlyWiki-Datei importieren. Versuchen Sie diese über eine file:// URL zu öffnen",
	wizardTitle: "Tiddler aus anderer Datei oder anderem Server importieren",
	step1Title: "Schritt 1: Server oder TiddlyWiki-Datei ausfindig machen",
	step1Html: "Typ des Servers auswählen: <select name='selTypes'><option value=''>Wählen...</option></select><br>URL oder Pfadnamen eingeben: <input type='text' size=50 name='txtPath'><br>...oder nach einer Datei browsen: <input type='file' size=50 name='txtBrowse'><br><hr>...oder einen vordefinierten Feed auswählen: <select name='selFeeds'><option value=''>Wählen...</option></select>",
	openLabel: "öffnen",
	openPrompt: "Verbindung zu dieser Datei oder Server starten",
	openError: "Beim Versuch, die TiddlyWiki-Datei zu öffnen, gab es Probleme",
	statusOpenHost: "Verbindung zum Host starten",
	statusGetWorkspaceList: "Liste von vorhandenen Workspaces abrufen",
	step2Title: "Schritt 2: Workspace auswählen",
	step2Html: "Einen Workspace-Namen eingeben: <input type='text' size=50 name='txtWorkspace'><br>...oder ein Workspace auswählen: <select name='selWorkspace'><option value=''>Wählen...</option></select>",
	cancelLabel: "abbrechen",
	cancelPrompt: "Diesen Import abbrechen",
	statusOpenWorkspace: "Workspace wird geöffnet",
	statusGetTiddlerList: "Abrufen der Liste von vorhandenen Workspaces",
	errorGettingTiddlerList: "Fehler beim Abrufen der Liste der Tiddler, klicken Sie auf ABBRECHEN/CANCEL, um es nochmal zu probieren",
	step3Title: "Schritt 3: Zu importierende Tiddler auswählen",
	step3Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='true' name='chkSync'>Links dieser Tiddler zum Server erhalten, um nachfolgende Änderungen synchronisieren zu können</input><br><input type='checkbox' checked='false' name='chkSave'>Speichern der Details dieses Servers in einem 'systemServer'Tiddler namens:</input> <input type='text' size=25 name='txtSaveTiddler'>",
	importLabel: "importieren",
	importPrompt: "Diese Tiddler importieren",
	confirmOverwriteText: "Wollen Sie wirklich folgende Tiddler überschreiben:\n\n%0",
	step4Title: "Schritt 4: Importieren von %0 Tiddler",
	step4Html: "<input type='hidden' name='markReport'></input>",
	doneLabel: "Erledigt",
	donePrompt: "Diesen Assistenten schliessen",
	statusDoingImport: "Tiddler werden importiert",
	statusDoneImport: "Alle Tiddler importiert",
	systemServerNamePattern: "%2 auf %1",
	systemServerNamePatternNoWorkspace: "%1",
	confirmOverwriteSaveTiddler: "Der Tiddler '%0' existiert bereits. Klicken Sie auf 'OK' um ihn mit den Details dieses Servers zu überschreiben, oder 'Abbrechen', um ihn unverändert zu lassen",
	serverSaveTemplate: "|''Eingabe:''|%0|\n|''URL:''|%1|\n|''Workspace:''|%2|\n\nDieser Tiddler wurde automatisch erstellt, um Details dieses Servers aufzuzeichnen",
	serverSaveModifier: "(System)",
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
			{name: 'Size', field: 'size', tiddlerLink: 'size', title: "Grösse", type: 'Size'},
			{name: 'Tags', field: 'tags', title: "Tags", type: 'Tags'}
			],
		rowClasses: [
			]}
	});

merge(config.macros.upgrade,{
	wizardTitle: "Upgraden des Kerncodes von TiddlyWiki",
	step1Title: "Update oder Reparatur dieses TiddlyWiki auf die aktuellste Version",
	step1Html: "Sie sind dabei, auf die aktuellste Version des TiddlyWiki-Kerncodes upzugraden (von <a href='%0' class='externalLink' target='_blank'>%1</a>). Ihre Inhalte werden während dem Upgrade erhalten bleiben.<br><br>Bitte beachten Sie, dass Kerncode-Updates mit älteren Plugins kollidieren können. Wenn Sie Probleme mit der aktualisierten Datei beobachten, besuchen Sie bitte <a href='http://www.tiddlywiki.org/wiki/CoreUpgrades' class='externalLink' target='_blank'>http://www.tiddlywiki.org/wiki/CoreUpgrades</a>",
	errorCantUpgrade: "Upgrade dieses TiddlyWiki nicht möglich. Sie können nur lokal abgespeicherte TiddlyWiki-Dateien upgraden",
	errorNotSaved: "Sie müssen zunächst Änderungen speichern, bevor Sie ein Upgrade starten können",
	step2Title: "Upgrade-Details bestätigen",
	step2Html_downgrade: "Sie sind dabei, von der TiddlyWiki-Version %1 auf die Version %0 downzugraden.<br><br>Der Downgrade auf eine frühere Version von TiddlyWiki wird nicht empfohlen",
	step2Html_restore: "Dieses TiddlyWiki scheint bereits die aktuellste Version des Kerncodes (%0) einzusetzen.<br><br>Sie können mit dem Upgrade fortsetzen, um sicherzustellen, dass der Kerncode nicht korrumpiert oder beschädigt wurde",
	step2Html_upgrade: "Sie sind dabei, von der TiddlyWiki-Version %1 auf die Version %0 upzugraden",
	upgradeLabel: "upgraden",
	upgradePrompt: "Vorbereiten des Upgrade-Prozesses",
	statusPreparingBackup: "Backup vorbereiten",
	statusSavingBackup: "Backup-Datei speichern",
	errorSavingBackup: "Ein Problem mit dem Speichern der Backup-Datei ist aufgetreten",
	statusLoadingCore: "Kerncode laden",
	errorLoadingCore: "Fehler beim Laden des Kerncodes",
	errorCoreFormat: "Fehler im neuen Kerncode",
	statusSavingCore: "Neuen Kerncode speichern",
	statusReloadingCore: "Neuen Kerncode neu laden",
	startLabel: "starten",
	startPrompt: "Upgrade-Prozess starten",
	cancelLabel: "abbrechen",
	cancelPrompt: "Upgrade-Prozess abbrechen",
	step3Title: "Upgrade abgebrochen",
	step3Html: "Sie haben den Upgrade-Prozess abgebrochen"
	});

merge(config.macros.sync,{
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
			{name: 'Server Type', field: 'serverType', title: "Server-Typ", type: 'String'},
			{name: 'Server Host', field: 'serverHost', title: "Server-Host", type: 'String'},
			{name: 'Server Workspace', field: 'serverWorkspace', title: "Server-Workspace", type: 'String'},
			{name: 'Status', field: 'status', title: "Status der Synchronisation", type: 'String'},
			{name: 'Server URL', field: 'serverUrl', title: "Server-URL", text: "View", type: 'Link'}
			],
		rowClasses: [
			],
		buttons: [
			{caption: "Diese Tiddler synchronisieren", name: 'sync'}
			]},
	wizardTitle: "Mit externen Servern oder Dateien synchronisieren",
	step1Title: "Wählen Sie die Tiddler aus, die Sie synchronisieren möchten",
	step1Html: '<input type="hidden" name="markList"></input>',
	syncLabel: "synchronisieren",
	syncPrompt: "Diese Tiddler synchronisieren",
	hasChanged: "Verändert während Trennung",
	hasNotChanged: "Unverändert während Trennung",
	syncStatusList: {
		none: {text: "...", display:null, className:'notChanged'},
		changedServer: {text: "Auf dem Server geändert", display:null, className:'changedServer'},
		changedLocally: {text: "Im ausgesteckten Zustand geändert", display:null, className:'changedLocally'},
		changedBoth: {text: "Im ausgesteckten Zustand und auf dem Server geändert", display:null, className:'changedBoth'},
		notFound: {text: "Auf dem Server nicht gefunden", display:null, className:'notFound'},
		putToServer: {text: "Aktualisierung auf dem Server gespeichert", display:null, className:'putToServer'},
		gotFromServer: {text: "Aktualisierung vom Server abgerufen", display:null, className:'gotFromServer'}
		}
	});

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

merge(config.commands.closeTiddler,{
	text: "schließen",
	tooltip: "Diesen Tiddler schließen"});

merge(config.commands.closeOthers,{
	text: "andere schließen",
	tooltip: "Alle anderen Tiddler schließen"});

merge(config.commands.editTiddler,{
	text: "bearbeiten",
	tooltip: "Diesen Tiddler bearbeiten",
	readOnlyText: "betrachten",
	readOnlyTooltip: "Quellcode dieses Tiddlers betrachten"});

merge(config.commands.saveTiddler,{
	text: "fertig",
	tooltip: "Änderungen an diesem Tiddler speichern"});

merge(config.commands.cancelTiddler,{
	text: "abbrechen",
	tooltip: "Änderungen an diesem Tiddler verwerfen",
	warning: "Wollen Sie wirklich Änderungen in '%0' verwerfen?",
	readOnlyText: "fertig",
	readOnlyTooltip: "Diesen Tiddler normal anzeigen"});

merge(config.commands.deleteTiddler,{
	text: "löschen",
	tooltip: "Diesen Tiddler löschen",
	warning: "Wollen Sie '%0' wirklich löschen?"});

merge(config.commands.permalink,{
	text: "Permalink",
	tooltip: "Permalink für diesen Tiddler"});

merge(config.commands.references,{
	text: "Referenzen",
	tooltip: "Alle Tiddler zeigen, die auf diesen verweisen",
	popupNone: "Keine Referenzen"});

merge(config.commands.jump,{
	text: "springen",
	tooltip: "Zu anderem, geöffneten Tiddler springen"});

merge(config.commands.syncing,{
	text: "Synchronisierung läuft",
	tooltip: "Synchronisation dieses Tiddlers mit einem Server oder einer externen Datei kontrollieren",
	currentlySyncing: "<div>Aktuell am Synchronisieren mit <span class='popupHighlight'>'%0'</span> zu:</"+"div><div>Host: <span class='popupHighlight'>%1</span></"+"div><div>Workspace: <span class='popupHighlight'>%2</span></"+"div>", // Hinweis - Das Schliessen des <div>-Tag verlassen
	notCurrentlySyncing: "Derzeit keine Synchronisierung",
	captionUnSync: "Synchronisierung dieses Tiddlers stoppen",
	chooseServer: "Diesen Tiddler mit anderem Server synchronisieren:",
	currServerMarker: "\u25cf ",
	notCurrServerMarker: "  "});

merge(config.commands.fields,{
	text: "Felder",
	tooltip: "Erweiterte Felder dieses Tiddlers anzeigen",
	emptyText: "Keine erweiterten Felder für diesen Tiddler vorhanden",
	listViewTemplate: {
		columns: [
			{name: 'Field', field: 'field', title: "Feld", type: 'String'},
			{name: 'Value', field: 'value', title: "Wert", type: 'String'}
			],
		rowClasses: [
			],
		buttons: [
			]}});

merge(config.shadowTiddlers,{
	DefaultTiddlers: "[[GettingStarted]]",
	MainMenu: "[[GettingStarted]]",
	SiteTitle: "Mein TiddlyWiki",
	SiteSubtitle: "ein wiederverwendbares nichtlineares, persönliches ~Web-Notizbuch",
	SiteUrl: "",
	SideBarOptions: '<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD. MMM YYYY" "Journal">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "Optionen \u00bb" "Optionen von TiddlyWiki ändern">>',
	SideBarTabs: '<<tabs txtMainTab "Zeitachse" "Zeitachse" TabTimeline "Alles" "Alle Tiddler" TabAll "Tags" "Alle Tags" TabTags "Mehr" "Weitere Listen" TabMore>>',
	TabMore: '<<tabs txtMoreTab "Fehlend" "Fehlende Tiddler" TabMoreMissing "Waisen" "Verwaiste Tiddler" TabMoreOrphans "Schatten" "Tiddler mit Schatteneinträgen" TabMoreShadowed>>'
	});

merge(config.annotations,{
	AdvancedOptions: "Dieser Schatten-Tiddler bietet Zugang zu diversen erweiterten Optionen",
	ColorPalette: "Diese Werte in diesem Schatten-Tiddler legen das Farbschema der Benutzerschnittstelle des TiddlyWiki fest",
	DefaultTiddlers: "Die in diesem Schatten-Tiddler aufgelisteten Tiddler werden automatisch beim Start des TiddlyWiki angezeigt",
	EditTemplate: "Die HTML-Vorlage in diesem Schatten-Tiddler legt das Aussehen von Tiddler während ihrer Bearbeitung fest",
	GettingStarted: "Dieser Schatten-Tiddler bietet eine einfache Bedienungsanleitung",
	ImportTiddlers: "Dieser Schatten-Tiddler bietet Zugang zum Import von Tiddler",
	MainMenu: "Dieser Schatten-Tiddler dient als Container für das Hauptmenü in der linksseitigen Spalte des Bildschirms",
	MarkupPreHead: "Dieser Tiddler wird an der Spitze der <head>-Sektion der HTML-Datei des TiddlyWiki eingefügt",
	MarkupPostHead: "Dieser Tiddler wird am Ende der <head>-Sektion der HTML-Datei des TiddlyWiki eingefügt",
	MarkupPreBody: "Dieser Tiddler wird an der Spitze der <body>-Sektion der HTML-Datei des TiddlyWiki eingefügt",
	MarkupPostBody: "Dieser Tiddler wird am Ende der <body>-Sektion der HTML-Datei des TiddlyWiki unmittelbar nach dem Scriptblock eingefügt",
	OptionsPanel: "Dieser Schatten-Tiddler dient als Container für das einblendbare Optionsfeld in der rechtsseitigen Seitenleiste",
	PageTemplate: "Die HTML-Vorlage in diesem Schatten-Tiddler legt das allgemeine Aussehen des TiddlyWiki fest",
	PluginManager: "Dieser Schatten-Tiddler bietet Zugang zum Plugin-Manager",
	SideBarOptions: "Dieser Schatten-Tiddler dient als Container für das Optionsfeld in der rechtsseitigen Seitenleiste",
	SideBarTabs: "Dieser Schatten-Tiddler dient als Container für das Tab-Panel in der rechtsseitigen Seitenleiste",
	SiteSubtitle: "Dieser Schatten-Tiddler enthält den zweiten Teil der Seitenüberschrift",
	SiteTitle: "Dieser Schatten-Tiddler enthält den ersten Teil der Seitenüberschrift",
	SiteUrl: "Dieser Schatten-Tiddler sollte den vollständigen Ziel-URL der Veröffentlichung enthalten",
	StyleSheetColors: "Dieser Schatten-Tiddler enthält CSS-Definitionen bezüglich der Farbe von Seitenelementen. ''DIESEN TIDDLER NICHT BEARBEITEN'', fügen Sie Ihre Änderungen stattdessen in den StyleSheet-Schatten-Tiddler ein",
	StyleSheet: "Dieser Tiddler kann benutzerspezifische CSS-Definitionen enthalten",
	StyleSheetLayout: "Dieser Schatten-Tiddler enthält CSS-Definitionen bezüglich dem Aussehen von Seitenelementen. ''DIESEN TIDDLER NICHT BEARBEITEN'', fügen Sie Ihre Änderungen stattdessen in den StyleSheet-Schatten-Tiddler ein",
	StyleSheetLocale: "Dieser Schatten-Tiddler enthält CSS-Definitionen bezüglich lokale Übersetzungen",
	StyleSheetPrint: "Dieser Schatten-Tiddler enthält CSS-Definitionen zum Drucken",
	TabAll: "Dieser Schatten-Tiddler enthält den Inhalt des 'Alles'-Tab in der rechtsseitigen Seitenleiste",
	TabMore: "Dieser Schatten-Tiddler enthält den Inhalt des 'Mehr'-Tab in der rechtsseitigen Seitenleiste",
	TabMoreMissing: "Dieser Schatten-Tiddler enthält den Inhalt des 'Fehlend'-Tab in der rechtsseitigen Seitenleiste",
	TabMoreOrphans: "Dieser Schatten-Tiddler enthält den Inhalt des 'Waisen'-Tab in der rechtsseitigen Seitenleiste",
	TabMoreShadowed: "Dieser Schatten-Tiddler enthält den Inhalt des 'Schatten'-Tab in der rechtsseitigen Seitenleiste",
	TabTags: "Dieser Schatten-Tiddler enthält den Inhalt des 'Tags'-Tab in der rechtsseitigen Seitenleiste",
	TabTimeline: "Dieser Schatten-Tiddler enthält den Inhalt des 'Zeitachse'-Tab in der rechtsseitigen Seitenleiste",
	ToolbarCommands: "Dieser Schatten-Tiddler legt fest, welche Befehle in Tiddler-Toolbars angezeigt werden",
	ViewTemplate: "Die HTML-Vorlage in diesem Schatten-Tiddler legt das Aussehen der Tiddler fest"
	});

// Uebersetzungen von Schatten-Tiddlern ausserhalb der offiziellen lingo.js
merge(config.shadowTiddlers,{
	OptionsPanel: "Diese [[Interface-Einstellungen|InterfaceOptions]] zur Anpassung von TiddlyWiki werden in Ihrem Browser gespeichert\n\nIhr Benutzername zum Unterzeichnen Ihrer Einträge. Bitte als WikiWord (z.B. KlausBrandmüller) schreiben\n\n<<option txtUserName>>\n<<option chkSaveBackups>> [[Backups speichern|SaveBackups]]\n<<option chkAutoSave>> [[Automatisch speichern|AutoSave]]\n<<option chkRegExpSearch>> [[RegExp Suche|RegExpSearch]]\n<<option chkCaseSensitiveSearch>> [[Groß-/Kleinschreibung in Suche|CaseSensitiveSearch]]\n<<option chkAnimate>> [[Animationen aktivieren|EnableAnimations]]\n\n----\[[Erweiterte Optionen|AdvancedOptions]]\nPluginManager\nImportTiddlers",
	GettingStarted: "Um mit diesem TiddlyWiki zu starten, sollten Sie folgende Tiddler modifizieren:\n* SiteTitle & SiteSubtitle: Den [[Titel|SiteTitle]] und [[Untertitel|SiteSubtitle]] der Site, wie oben angezeigt (nach dem Speichern werden diese auch in der Titelzeile des Browsers angezeigt)\n* MainMenu: Ihr Inhaltsverzeichnis (für gewöhnlich Links)\n* DefaultTiddlers: Beinhaltet die Namen der Tiddler, die Sie angezeigt haben möchten, wenn das TiddlyWiki geöffnet wird.\nSie sollten zudem Ihren Benutzernamen zum Unterzeichnen Ihrer Bearbeitungen eingeben: <<option txtUserName>>",
	ViewTemplate: "<div class='toolbar' macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (erstellt am <span macro='view created date'></span>)</div>\n<div class='tagging' macro='tagging'></div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>",
	InterfaceOptions: "Die [[Interface-Einstellungen|InterfaceOptions]] werden angezeigt, wenn Sie rechts auf 'Optionen' klicken. Sie werden mit einem Cookie in Ihrem Browser gespeichert, um sie zwischen den Aufrufen zu sichern. Nähere Informationen zu den einzelnen Funktionen finden Sie, wenn Sie die Funktion selbst anklicken.",
	WikiWord: "Ein WikiWord ist ein Wort, das aus mehreren einzelnen Wörtern zusammengesetzt ist, in dem jedes Wort mit einem Grossbuchstaben beginnt und eine individuelle Seite bezeichnet.",
	SaveBackups: "[[Backups speichern|SaveBackups]] ist eine Funktion, mit der automatisch bei jedem Abspeichern ein Backup erstellt wird.",
	AutoSave: "[[Automatisches Speichern|AutoSave]] speichert automatisch Änderungen jedes Mal, wenn Sie einen Tiddler bearbeiten. Damit sinken die Chancen, dass Sie Daten verlieren. Beachten Sie jedoch, dass bei aktivierter [[Backup-Funktion|SaveBackups]] natürlich auch eine Menge Backup-Dateien erstellt werden. Entscheiden Sie sich deshalb für die eine oder andere Funktion.",
	RegExpSearch: "Mit der [[RegExp Suche|RegExpSearch]] können Sie mit regulären Suchausdrücken flexible Suchanfragen vornehmen.",
	CaseSensitiveSearch: "Die Unterscheidung der [[Groß-/Kleinschreibung in Suche|CaseSensitiveSearch]] tut genau dies.",
	EnableAnimations: "Diese Funktion aktiviert Animationen, wenn Sie einen Tiddler öffnen oder schliessen.",
	GenerateAnRssFeed: "Wenn Sie [[RSS-Feed generieren|GenerateAnRssFeed]] aktivieren, speichert TiddlyWiki automatisch einen RSS-2.0-gültigen Feed, so bald Ihr TiddlyWiki gespeichert wird. Der Feed hat den gleichen Dateinamen wie das TiddlyWiki, lediglich jedoch mit der Endung '.xml'.",
	OpenLinksInNewWindow: "Diese Funktion öffnet externe Links in einem neuen ~Browser-Fenster.",
	SaveEmptyTemplate: "Diese Funktion erwirkt, dass beim Abspeichern von Änderungen eine leere Vorlage von TiddlyWiki erzeugt wird. Dies ist als Hilfe gedacht für Entwickler, die Adaptionen von TiddlyWiki bereitstellen. Die Funktion ist nicht erforderlich, wenn Sie ein normaler Benutzer sind.",
	HideEditingFeatures: "Ist diese Funktion aktiviert, werden die Bearbeitungsfunktionen ausgeblendet, wenn das TiddlyWiki über HTTP aufgerufen wird. Der Benutzer hat dann die Möglichkeit, den Tiddler zwar betrachten zu können, aber nicht zu bearbeiten.",
	MinorChanged: "Manchmal ist es sinnvoll, dass bei kleinen Änderungen der Tiddler in der Zeitachse nicht automatisch an den Anfang gesetzt wird. Mit Aktivierung dieser Funktion werden alle Bearbeitungen von Tiddlern als kleine Änderungen betrachtet und das Änderungsdatum nicht geändert.",
	ConfirmBeforeDeleting: "Bei Aktivierung dieser Funktion fordert TiddlyWiki eine Bestätigung des Benutzers an, wenn ein Tiddler gelöscht werden soll."});
}}}
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>>
!Stromstabilisierte Glühkerzenheizung
[[Ausgang]]-1 kann als stromstabilisierte Glühkerzenheizung für Glühzündermotoren verwendet werden. 
|bgcolor(#dddddd):GLUEHREGLER|
|bgcolor(#dddddd): 01.42 V  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.90 A |
Der Glühregler Modus wird im ServiceMenue aktiviert. 
Der Strom ist erst 1200mA und kann mit den [[Tasten|Tastatur]] ''UP''/''DN'' im Bereich 1200mA…4500mA verstellt werden. Es wird auch die Kerzenspannung angezeigt. Die meisten Kerzen glühen bei einer Spannung von etwa 1,3…1,5V optimal. Beim Verlassen des Menüs wird der eingestellte Strom automatisch gespeichert und ist später mit [[ENTER|Tastatur]] wieder abrufbar.
Eine [[Gesamtübersicht aller Menüs|MenueStruktur]] befindet sich im [[Anhang]] dieser Bedienungsanleitung.
!Hauptmenü
Das Hauptmenü ist Ausgangspunkt zu allen verfügbaren Funktionen. 
*Mit den [[Tasten|Tastatur]] ''ESC'' &#9668; / ''UP'' &#9650; / ''DN'' &#9660; wird der Cursor über die Menüpunkte bewegt und 
*mit ''ENTER'' &#9658; in Untermenüs verzweigt.
[img[Hauptmenue|http://www.akkumatiki.de/bilder/AM_hauptmenue1.jpg]]
* Die obere Zeile ist für [[Ausgang-1|TechnischeDaten/Ausgang1]], die untere Zeile für [[Ausgang-2|TechnischeDaten/Ausgang2]].
* Das HauptMenue kann auch aus einem laufenden [[Programm]] heraus angesprungen werden, während der entsprechende [[Ausgang]] im Hintergrund weiterarbeitet (erkennbar am Text LAUF anstelle START).
Im obigen Beispiel arbeitet [[Ausgang-1|TechnischeDaten/Ausgang1]] mit [[AkkuSpeicher]]-4 gerade im Hintergrund ein Programm ab, während [[Ausgang-2|TechnischeDaten/Ausgang2]] für [[AkkuSpeicher]]-3 eingestellt, aber momentan nicht gestartet ist.

Für beide Ausgänge sind diese Menüpunkte mit dem Cursor anwählbar:
* [[SPx|AkkuSpeicher]] Auswahl oder [[Sichern]] des aktuell verwendeten [[AkkuSpeicher]]s (x = 1...9)
* [[PAR|AkkuParameter]] Anzeigen und Ändern der AkkuParameter
* START Starten des Akku[[Ausgang]]s mit den aktuellen [[AkkuParameter]]n
* LAUF Anzeigen eines im Hintergrund laufenden Vorgangs
Die [[Tastatur]] hat im Hauptmenü diese Funktionen:
* UP &#9650;  Cursor in der oberen Zeile bewegen ([[Ausgang-1|TechnischeDaten/Ausgang1]])
* DN &#9660; Cursor in der unteren Zeile bewegen ([[Ausgang-2|TechnischeDaten/Ausgang2]])
* ENTER &#9658; vom Cursor selektierte Funktion ausführen
* [[ESC + UP|Tastatur/kombTastenaktion]]  [[Ausgang-1|TechnischeDaten/Ausgang1]] starten oder anzeigen
* [[ESC  + DN|Tastatur/kombTastenaktion]]   [[Ausgang-2|TechnischeDaten/Ausgang2]] starten oder anzeigen
* [[UP + ENTER|Tastatur/kombTastenaktion]]  InfoMenue für [[Ausgang-1|TechnischeDaten/Ausgang1]] anzeigen
* [[DN  + ENTER|Tastatur/kombTastenaktion]]  InfoMenue für [[Ausgang-2|TechnischeDaten/Ausgang2]] anzeigen
* [[ESC  + ENTER|Tastatur/kombTastenaktion]]  Wechsel zum ServiceMenue
!Einstellen des Entladestroms
|bgcolor(#dddddd):1 [[AKKUPARAMETER|AkkuParameter]]|
|bgcolor(#dddddd): ~I-Entl   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0000mA|
*__Dieser AkkuParameter ist nur bei Entlade[[programm|Programm]]en sichtbar.__
*Je nach Einstellung des [[AkkuParameter]]s [[Stromwahl|StromMethode]] wird der hier eingestellte Wert als Sollwert ([[Stromwahl|StromMethode/Fest]] = FEST) oder Maximalwert für automatische Stromregelung ([[Stromwahl|StromMethode/Limit]] = LIMIT) verwendet.
!Einstellen des Ladestroms
|bgcolor(#dddddd):1&nbsp;&nbsp;&nbsp;AkkuParameter|
|bgcolor(#dddddd):~I-Lade  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0000mA|
* NiCd/NiMh:
**je nach Einstellung des [[AkkuParameter]]s [[Stromwahl|StromMethode]] wird der eingestellte Wert als Sollwert (bei [[Stromwahl|StromMethode]] = FEST) oder Maximalwert für automatische Stromregelung (bei [[Stromwahl|StromMethode]] = LIMIT) verwendet.
*[[BLEI|BleiAkku]]/[[BGEL|BleiAkku]]/[[Li36|LiIo]]/[[Li37|LiPo]]/LiFe/IUxx:
** Der [[Ladestrom|I-Lade]] wird automatisch auf 1[[C|NennKapazität]] voreingestellt. 
**@@Abweichend davon kann aber auch ein kleinerer oder größerer Wert gewählt werden.@@
!~IUxx Akku
Akkutyp für ~IU-Ladeverfahren (I: Strom / U: Spannung) mit frei wählbarer LadeSpannung
Für den Akkutyp IUxx kann die LadeSpannung in den [[SystemParameter]]n frei definiert werden.
[img[Bild|http://www.akkumatiki.de/bilder/AM_iuxx2.jpg]]

Dadurch ist eine schnelle Anpassung an neue Akkugenerationen möglich. Aber auch normale Blei- / Lithium- / RAM-Akkus können durch diesen Akkutyp individuell geladen werden.
Nach [[RESET]] ist IUxx mit 3600mV passend für [[LiFePO4|LiFe]] Akkus voreingestellt.
Entladespannung für Akkutyp IUxx
|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;SystemParameter|
|bgcolor(#dddddd):Stromwahl  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IUxx Ent 2000mV|
Mit diesem Parameter wird für den Akkutyp "IUxx" die Entladespannung pro Zelle vorgegeben.
Nach [[RESET]] ist er mit 2000mV für [[LiFePO4 Akkus|LiPo]] voreingestellt. Er kann aber auch für spezielle Anwendungen oder neue Akkutechnologien individuell angepasst werden.
/***
|Name|ImageMapPlugin|
|Source|http://www.TiddlyTools.com/#ImageMapPlugin|
|Documentation|http://www.TiddlyTools.com/#ImageMapPluginInfo|
|Version|1.2.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|apply image maps ('hotspots') with links to tiddlers|
!!!!!Documentation
>see [[ImageMapPluginInfo]]
!!!!!Revisions
<<<
2009.05.27 [1.2.2] improved autoscroll for {{{<<mapMaker>>}}} textarea
2009.05.14 [1.2.1] added cursor changes
see [[ImageMapPluginInfo]] for additional revision details
2009.05.09 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImageMapPlugin= {major: 1, minor: 2, revision: 2, date: new Date(2009,5,27)};
//}}}
//{{{
config.macros.imageMap = {
        handler: function(place,macroName,params,wikifier,paramString,tiddler) {
                // image element must immediately precede macro
                var img=place.lastChild; if (!img||img.nodeName!='IMG') return;
                var map=params[0]; var items=store.getTiddlerText(map,'').split('\n----\n'); if (!items) return;
                var out=['<MAP NAME="'+map+'">'];
                var fmt='<AREA SHAPE="POLY" TIDDLER="%0" COORDS="%1" TITLE="%2" ALT="%2" ONCLICK="%3" STYLE="%4">';
                var click="story.displayTiddler(story.findContainingTiddler(this),this.getAttribute('tiddler'));";
                var style='cursor:pointer';
                for (var i=0; i<items.length; i++) {
                        var lines=items[i].split('\n'); var tid=lines.shift(); var coords=lines.join('');
                        var tip=store.tiddlerExists(tid)?store.getTiddler(tid).getSubtitle():tid;
                        out.push(fmt.format([tid,coords,tip,click,style]));
                }
                out.push('</MAP>');
                createTiddlyElement(place,'span').innerHTML=out.join('');
                img.setAttribute('isMap',true);
                img.setAttribute('useMap','#'+map);
                img.style.border=0;
        }
}
//}}}
//{{{
config.macros.mapMaker= {
        handler: function(place,macroName,params,wikifier,paramString,tiddler) {
                var img=place.lastChild; // image element must immediately precede macro
                if (!img||img.nodeName!='IMG') return;
                img.onmousemove=function(ev){ ev=ev||window.event;
                        var mX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
                        var mY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
                        var ta=this.nextSibling.getElementsByTagName('textarea')[0];
                        var lines=ta.value.split('\n'); var last=lines.length?lines.length-1:0;
                        var vals=lines[last].split(','); vals.pop(); vals.pop(); lines[last]=vals.join(',');
                        lines[last]+=(lines[last].length?',':'')+(mX-findPosX(this))+','+(mY-findPosY(this));
                        ta.value=lines.join('\n');
                        ta.scrollTop=ta.scrollHeight-ta.offsetHeight+this.emH*2;
                        ta.scrollLeft=lines[last].length*this.emW-ta.offsetWidth;
                        ta.focus();
                };
                img.onmouseout=function(ev){ ev=ev||window.event;
                        var ta=this.nextSibling.getElementsByTagName('textarea')[0];
                        var lines=ta.value.split('\n'); var last=lines.length?lines.length-1:0;
                        var vals=lines[last].split(','); vals.pop(); vals.pop(); lines[last]=vals.join(',');
                        ta.value=lines.join('\n');
                        ta.scrollTop=ta.scrollHeight-ta.offsetHeight+this.emH*2;
                        ta.scrollLeft=lines[last].length*this.emW-ta.offsetWidth;
                };
                img.onmouseover=img.onclick=function(ev) { ev=ev||window.event;
                        var mX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
                        var mY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
                        var ta=this.nextSibling.getElementsByTagName('textarea')[0];
                        ta.value+=(ta.value.length?',':'')+(mX-findPosX(this))+','+(mY-findPosY(this));
                        var lines=ta.value.split('\n'); var last=lines.length?lines.length-1:0;
                        ta.scrollTop=ta.scrollHeight-ta.offsetHeight+this.emH*2;
                        ta.scrollLeft=lines[last].length*this.emW-ta.offsetWidth;
                        ta.focus();
                }
                img.style.border='1px solid #999';
                img.style.cursor='crosshair';
                var map=params[0]||'';
                var s=createTiddlyElement(place,'div');
                s.style.height=s.style.width='1em';
                img.emW=s.offsetWidth; img.emH=s.offsetHeight; // get font metrics (for auto scrolling)
                s.style.height=s.style.width='';
                s.innerHTML+='<div class="toolbar">'
                        +'<a href="javascript:;" '
                        +'onclick="config.macros.mapMaker.load(this.parentNode.nextSibling)">load map</a>'
                        +'<a href="javascript:;" '
                        +'onclick="config.macros.mapMaker.save(this.parentNode.nextSibling)">save map</a>'
                        +'</div>'
                        +'<textarea rows="8" style="display:block;clear:both;width:100%;" tiddler="'+map+'">'
                        +store.getTiddlerText(map,'')
                        +'</textarea>';
        },
        load: function(ta) {
                var tid=prompt('Enter a tiddler title:',ta.getAttribute('tiddler')||'');
                if (!tid||!tid.length) return; // cancelled by user
                ta.value=store.getTiddlerText(tid,''); ta.setAttribute('tiddler',tid);
                return false;
        },
        save: function(ta) {
                var tid=prompt('Enter a tiddler title:',ta.getAttribute('tiddler')||'NewImageMap');
                while (tid && tid.length && store.tiddlerExists(tid)) {
                        if(confirm(config.messages.overwriteWarning.format([tid]))) break;
                        var tid=prompt('Enter a different tiddler title:',tid);
                }
                if (!tid||!tid.length) return; // cancelled by user
                store.saveTiddler(tid,tid,ta.value,config.options.txtUserName,new Date(),['imageMap'],{});
                story.displayTiddler(null,tid);
                displayMessage('image map saved to: '+tid);
                ta.setAttribute('tiddler',tid);
                return false;
        }
}
//}}}
/***
|Name|ImageMapPluginInfo|
|Source|http://www.TiddlyTools.com/#ImageMapPlugin|
|Documentation|http://www.TiddlyTools.com/#ImageMapPluginInfo|
|Version|1.2.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|documentation for ImageMapPlugin|
!!!Usage
<<<
{{{
[img[...]]<<imageMap MapName>>
}}}
applies an image map to the embedded image immediately preceding the macro.   ''~MapName'' is the title of a tiddler (or a tiddler section) that contains an ''~HR-separated list'' of items, where the first line of each item is the ''tiddler to link to'' and the second line is a ''list of polygon coordinates'' using standard HTML <AREA COORDS="..."> syntax (e.g., a ''comma-separated series of X,Y pairs'': "x1,y1,x2,y2,x3,y3,...", that trace out the desired shape).
{{{
[img[...]]<<mapMaker MapName>>
}}}
adds interactive point-and-click calculation of X,Y map coordinates that are automatically entered into a text input field that you can then edit and save to a tiddler to create an ~HR-separated map definition.
<<<
!!!imageMap Example
<<<
{{{
[img[images/california.gif]]<<imageMap ImageMapPluginInfo##county_map>>
}}}
~~//(click a county to open a tiddler)//~~
[img[images/california.gif]]<<imageMap ImageMapPluginInfo##county_map>>
<<<
!!!mapMaker example
<<<
{{{
[img[images/california.gif]]<<mapMaker ImageMapPluginInfo##county_map>>
}}}
~~//(click anywhere inside image to record x,y coordinates)//~~
[img[images/california.gif]]<<mapMaker ImageMapPluginInfo##county_map>>
<<<
!!!Revisions
<<<
2009.05.14 1.2.1 added cursor changes
2009.05.13 1.2.0 add MAP/AREA elements using innerHTML
2009.05.12 1.1.1 fixed mapMaker event handling for IE
2009.05.10 1.1.0 added {{{<<mapMaker>>}}}
2009.05.10 1.0.1 open tiddlers following current tiddler instead of at top of story column
2009.05.09 1.0.0 initial release
<<<
!!!Sample Map
<<<
{{{
!county_map
San Francisco
50,231,51,225,54,222,55,226,55,231,50,231,50,231
----
San Mateo
59,252,60,242,58,239,55,238,54,232,49,233,50,240,50,244,50,249,54,253,59,252,59,252
----
Santa Clara
94,242,90,244,80,243,75,242,66,243,60,243,58,251,63,255,70,258,75,270,79,268,95,268,97,260,97,254,94,254,93,252,97,250,94,248,95,246,94,242,94,242
----
Alameda
94,223,95,242,90,243,80,242,75,241,65,242,66,235,63,225,70,224,80,226,94,221,94,224,95,225,95,231,94,223,94,223
----
Contra Costa
97,213,97,221,83,226,69,224,63,224,62,220,67,214,73,217,79,214,98,214,96,214,97,213,97,213
----
Santa Cruz
53,254,59,251,63,255,70,258,75,268,73,273,68,273,67,266,53,254,53,254
----
San Benito
117,292,116,302,114,304,110,302,111,307,104,304,101,306,91,292,91,288,87,288,87,285,73,273,75,271,78,269,96,270,116,292,117,292,117,292
----
Monterey
128,325,86,325,83,319,83,313,78,309,78,305,64,286,64,283,67,282,67,273,73,273,87,284,86,288,90,287,91,292,101,305,104,303,110,306,113,303,126,318,128,325,128,325
----
Fresno
123,266,133,278,149,271,164,269,170,261,176,261,176,257,181,258,182,254,190,252,194,245,203,237,211,243,213,248,211,253,218,267,221,276,215,276,214,278,195,278,195,282,179,282,177,285,166,285,162,289,154,291,152,294,146,294,146,302,126,318,116,304,118,302,116,299,117,290,106,278,123,265,123,266,123,266
----
Merced
114,249,117,245,142,238,145,245,148,249,153,251,152,256,143,256,136,258,130,262,125,263,106,278,96,269,97,261,99,255,113,250,114,249,114,249
----
Madera
167,243,173,243,174,239,178,238,179,234,192,227,194,228,193,235,198,232,203,236,192,245,188,252,180,254,180,258,172,257,175,261,168,260,163,269,146,270,132,278,122,266,124,263,130,262,135,258,142,256,151,256,152,252,167,243,167,243
----
Kings
162,324,161,303,164,302,164,295,162,294,162,289,153,291,151,295,146,295,146,303,128,318,128,325,161,324,162,324,162,324
----
Tulare
232,324,233,316,234,314,229,310,229,303,228,299,230,296,219,276,213,276,212,279,193,278,193,282,177,282,176,286,164,285,161,289,163,295,164,303,160,304,161,325,232,324,232,324
----
Mono
183,182,183,188,185,194,181,200,181,209,185,211,185,213,191,218,191,224,196,227,194,235,198,233,203,236,211,243,243,243,183,182,183,182
----
Inyo
241,243,320,324,233,324,233,317,235,314,229,310,229,303,228,299,231,295,220,276,217,267,211,253,213,247,211,242,242,244,241,243,241,243
----
San Luis Obispo
111,348,97,340,86,325,127,325,129,332,139,341,144,343,145,346,150,348,156,354,156,358,159,360,161,368,157,371,153,364,136,358,133,354,131,360,126,362,126,366,120,363,112,364,111,356,106,353,112,348,111,348,111,348
----
Santa Barbara
121,387,117,383,111,381,111,365,121,362,127,367,125,362,132,360,135,353,137,359,154,365,157,372,161,368,164,372,163,394,143,390,126,384,121,387,121,387
----
Ventura
186,402,175,401,163,395,163,372,166,369,172,371,177,376,186,376,193,397,186,402,186,402
----
Los Angeles
205,409,184,402,193,397,186,376,234,376,236,388,238,408,232,416,222,420,217,424,211,420,205,409,205,409
----
Kern
240,325,128,325,130,334,139,342,150,348,159,359,162,370,167,368,176,377,235,375,237,374,239,343,241,341,241,325,240,325,240,325
----
San Bernardino
392,401,320,324,240,325,241,342,238,345,236,374,234,377,237,407,256,422,264,413,290,414,303,417,386,414,390,409,392,401,392,401
----
Riverside
379,441,388,429,387,412,303,417,289,414,263,413,255,421,260,424,260,428,265,428,265,436,271,438,275,443,352,444,379,442,379,441,379,441
----
Orange
258,441,221,421,232,415,237,407,255,421,259,424,260,428,266,428,265,438,258,443,258,441,258,441
----
San Diego
322,482,284,484,280,475,276,464,270,451,258,440,264,437,272,438,275,443,283,445,321,444,321,483,322,482,322,482
----
Imperial
378,480,321,482,322,445,378,443,382,451,378,461,383,468,382,475,378,480,378,480
----
Stanislaus
113,229,95,240,98,257,113,249,118,244,141,237,132,228,127,214,124,230,112,229,113,229,113,229
----
Mariposa
168,228,154,225,151,228,148,227,147,231,144,231,145,236,141,237,143,245,151,254,165,242,172,243,172,238,177,238,177,234,191,227,194,226,189,224,184,221,181,223,178,220,169,229,157,226,153,226,151,229,152,229,168,228,168,228
----
Alpine
173,172,172,176,164,180,164,192,179,201,185,194,183,181,173,173,173,172,173,172
----
Calaveras
125,203,127,214,132,223,144,220,165,195,163,191,158,194,150,194,135,203,125,203,125,203
----
San Joaquin
108,205,97,213,97,222,94,225,95,240,113,229,124,229,127,215,125,203,120,206,107,206,108,205,108,205
----
Amador
125,189,126,194,125,203,135,203,150,194,158,194,163,191,164,179,154,186,142,189,124,189,125,189,125,189
----
Sacramento
83,212,96,213,107,205,118,205,124,203,125,195,123,188,120,180,104,180,106,189,103,197,102,203,94,206,93,210,79,212,83,212,83,212
----
Yolo
102,174,98,174,97,170,92,165,68,164,74,178,79,181,81,189,91,190,93,187,97,187,99,197,104,197,106,189,104,180,102,174,102,174
----
Solano
79,197,72,204,73,209,82,211,94,210,95,205,103,203,104,196,98,196,97,186,91,187,90,190,80,189,78,193,79,197,79,197
----
Napa
58,177,59,183,65,192,65,205,71,204,79,197,77,192,80,188,78,181,73,178,67,164,64,166,64,173,58,177,58,177
----
Sonoma
24,168,48,165,56,175,57,182,64,192,64,203,45,198,43,191,32,180,31,176,23,168,24,168,24,168
----
Marin
44,210,50,212,52,216,57,218,60,217,59,212,62,210,64,203,46,199,43,209,44,210,44,210
----
Tuolumne
165,195,144,219,131,223,132,227,142,237,146,236,145,230,149,230,149,226,154,228,155,225,169,228,178,220,182,222,185,221,190,225,190,218,185,213,185,210,180,209,180,200,165,193,164,196,165,195,165,195
----
Mendocino
10,107,16,116,16,126,15,132,20,151,21,161,24,169,50,165,43,158,46,155,46,150,43,145,45,137,53,132,53,114,56,109,11,108,10,107,10,107
----
Humboldt
21,38,17,50,19,59,12,70,9,70,1,85,2,92,10,107,31,108,33,73,32,65,39,65,39,59,45,53,43,51,44,42,33,43,30,37,21,37,21,38,21,38
----
Del Norte
24,14,19,24,20,37,29,37,32,43,37,42,38,37,35,34,42,31,43,21,50,15,24,14,24,14
----
Siskiyou
130,19,51,15,44,21,43,31,36,33,39,37,38,43,43,42,42,50,45,53,54,57,55,61,59,61,59,65,64,61,69,63,67,54,71,52,76,54,80,48,90,46,90,55,131,57,132,31,129,30,130,19,130,19
----
Modoc
183,22,130,19,131,57,179,60,182,22,183,22,183,22
----
Trinity
56,98,57,102,55,105,55,109,31,108,33,72,31,65,39,65,40,58,44,52,54,57,55,61,58,61,58,65,65,61,69,63,67,53,71,52,76,55,79,47,90,46,90,55,90,59,75,70,70,84,56,98,56,98
----
Shasta
124,95,120,96,115,94,111,96,94,96,83,97,78,95,71,98,67,96,57,98,69,84,74,70,90,59,89,54,131,57,132,93,124,95,124,95
----
Tehama
130,105,125,110,109,116,104,122,93,122,93,124,53,122,53,114,57,108,55,106,56,101,56,97,65,96,71,98,77,95,84,98,94,97,112,96,116,94,120,96,123,95,126,98,126,101,130,105,130,105
----
Lake
64,150,67,162,64,167,64,173,58,178,50,164,42,159,46,154,46,149,43,145,45,137,52,133,55,131,61,132,61,141,55,141,54,143,57,149,63,151,64,151,64,150,64,150
----
Colusa
95,143,92,149,92,156,94,164,67,163,64,151,57,149,53,143,56,141,83,142,84,140,87,141,89,143,95,143,95,143
----
Glenn
99,131,97,133,97,137,101,139,96,143,89,143,86,141,82,140,82,142,60,142,61,132,55,131,53,123,92,123,99,131,99,131
----
Sutter
113,166,111,170,111,179,103,180,102,174,97,173,97,169,93,164,92,156,91,149,108,151,108,157,113,166,113,166
----
Butte
120,143,115,144,115,146,107,151,91,149,95,143,101,139,96,137,96,132,99,131,92,123,102,122,109,116,125,109,128,117,126,124,130,128,132,135,126,140,121,138,120,143,120,143
----
El Dorado
170,160,163,160,157,164,149,164,148,167,131,166,122,177,126,188,143,188,155,185,162,180,172,176,173,172,170,169,170,160,170,160
----
Placer
171,152,146,151,138,158,135,158,129,163,121,161,113,165,111,170,111,179,120,179,122,177,131,166,146,168,150,164,157,164,163,161,171,160,171,153,171,152,171,152
----
Yuba
135,145,131,145,129,148,124,150,122,159,113,166,108,157,108,151,115,146,115,143,122,143,120,139,127,140,133,135,135,134,135,145,135,145
----
Nevada
172,143,150,142,146,139,136,144,131,144,129,148,124,150,122,161,130,164,136,157,138,158,146,151,170,152,171,143,171,144,172,143,172,143
----
Sierra
172,131,145,130,139,126,134,134,134,145,145,139,150,143,172,144,173,131,172,131,172,131
----
Plumas
141,94,124,94,126,102,130,105,125,110,128,117,126,124,130,129,132,134,140,126,145,130,168,131,171,124,169,117,154,102,149,103,148,106,141,102,141,93,141,94,141,94
----
Lassen
177,93,174,130,167,131,170,124,169,115,153,101,148,104,148,106,141,103,141,93,132,93,131,59,179,60,176,94,177,93,177,93
!end county_map
}}}
<<<
***/
 
The plugins in this package provide interactive functionality for importing/exporting tiddlers to/from other TiddlyWiki documents.  Additional plugins provide enhanced local/remote file I/O features, including "save as", "save from web" and "upload" functionality.
/***
|Name|ImportTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#ImportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ImportTiddlersPluginInfo|
|Version|4.6.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|interactive controls for import/export with filtering.|
Combine tiddlers from any two TiddlyWiki documents.  Interactively select and copy tiddlers from another TiddlyWiki source document.  Includes prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles.  When done, a list of all imported tiddlers is written into [[ImportedTiddlers]].
!!!!!Documentation
<<<
see [[ImportTiddlersPluginInfo]] for details
<<<
!!!!!interactive control panel
<<<
<<importTiddlers inline>>
{{clear{
^^(see also: [[ImportTiddlers]] shadow tiddler)^^}}}
<<<
!!!!!Revisions
<<<
2009.10.10 4.6.1 in createImportPanel, Use {{{window.Components}}} instead of {{{config.browser.isGecko}}} to avoid applying FF3 'file browse' fixup in Chrome.
2009.10.06 4.6.0 added createTiddlerFromFile (import text files)
|please see [[ImportTiddlersPluginInfo]] for additional revision details|
2005.07.20 1.0.0 Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImportTiddlersPlugin= {major: 4, minor: 6, revision: 1, date: new Date(2009,10,10)};

// IE needs explicit global scoping for functions/vars called from browser events
window.onClickImportButton=onClickImportButton;
window.refreshImportList=refreshImportList;

// default cookie/option values
if (!config.options.chkImportReport) config.options.chkImportReport=true;

// default shadow definition
config.shadowTiddlers.ImportTiddlers='<<importTiddlers inline>>';

// use shadow tiddler content in backstage panel
if (config.tasks) config.tasks.importTask.content='<<tiddler ImportTiddlers>>' // TW2.2 or above
//}}}
//{{{
// backward-compatiblity for TW2.0.x and TW1.2.x
if (config.macros.importTiddlers==undefined) config.macros.importTiddlers={};
if (typeof merge=='undefined') {
	function merge(dst,src,preserveExisting) {
		for(var i in src) { if(!preserveExisting || dst[i] === undefined) dst[i] = src[i]; }
		return dst;
	}
}
if (config.browser.isGecko===undefined)
	config.browser.isGecko=(config.userAgent.indexOf('gecko')!=-1);
//}}}
//{{{
merge(config.macros.importTiddlers,{
	$: function(id) { return document.getElementById(id); }, // abbreviation
	label: 'import tiddlers',
	prompt: 'Copy tiddlers from another document',
	openMsg: 'Opening %0',
	openErrMsg: 'Could not open %0 - error=%1',
	readMsg: 'Read %0 bytes from %1',
	foundMsg: 'Found %0 tiddlers in %1',
	filterMsg: "Filtered %0 tiddlers matching '%1'",
	summaryMsg: '%0 tiddler%1 in the list',
	summaryFilteredMsg: '%0 of %1 tiddler%2 in the list',
	plural: 's are',
	single: ' is',
	countMsg: '%0 tiddlers selected for import',
	processedMsg: 'Processed %0 tiddlers',
	importedMsg: 'Imported %0 of %1 tiddlers from %2',
	loadText: 'please load a document...',
	closeText: 'close',
	doneText: 'done',
	startText: 'import',
	stopText: 'stop',
	local: true,		// default to import from local file
	src: '',		// path/filename or URL of document to import (retrieved from SiteUrl)
	proxy: '',		// URL for remote proxy script (retrieved from SiteProxy)
	useProxy: false,	// use specific proxy script in front of remote URL
	inbound: null,		// hash-indexed array of tiddlers from other document
	newTags: '',		// text of tags added to imported tiddlers
	addTags: true,		// add new tags to imported tiddlers
	listsize: 10,		// # of lines to show in imported tiddler list
	importTags: true,	// include tags from remote source document when importing a tiddler
	keepTags: true,		// retain existing tags when replacing a tiddler
	sync: false,		// add 'server' fields to imported tiddlers (for sync function)
	lastFilter: '',		// most recent filter (URL hash) applied
	lastAction: null,	// most recent collision button performed
	index: 0,		// current processing index in import list
	sort: ''		// sort order for imported tiddler listbox
});
//}}}
//{{{
// hijack core macro handler
if (config.macros.importTiddlers.coreHandler==undefined)
	config.macros.importTiddlers.coreHandler=config.macros.importTiddlers.handler;

config.macros.importTiddlers.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	if (!params[0] || params[0].toLowerCase()=='core') { // default to built in
		if (config.macros.importTiddlers.coreHandler)
			config.macros.importTiddlers.coreHandler.apply(this,arguments);
		else 
			createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);
	} else if (params[0]=='link') { // show link to floating panel
		createTiddlyButton(place,params[1]||this.label,params[2]||this.prompt,onClickImportMenu);
	} else if (params[0]=='inline') {// show panel as INLINE tiddler content
		createImportPanel(place);
		this.$('importPanel').style.position='static';
		this.$('importPanel').style.display='block';
	} else if (config.macros.loadTiddlers)
		config.macros.loadTiddlers.handler(place,macroName,params); // any other params: loadtiddlers
}
//}}}
//{{{
// Handle link click to create/show/hide control panel
function onClickImportMenu(e) { var e=e||window.event;
	var parent=resolveTarget(e).parentNode;
	var panel=document.getElementById('importPanel');
	if (panel==undefined || panel.parentNode!=parent) panel=createImportPanel(parent);
	var isOpen=panel.style.display=='block';
	if(config.options.chkAnimate)
		anim.startAnimating(new Slider(panel,!isOpen,false,'none'));
	else
		panel.style.display=isOpen?'none':'block';
	e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return(false);
}
//}}}
//{{{
// Create control panel: HTML, CSS
function createImportPanel(place) {
	var cmi=config.macros.importTiddlers; // abbrev
	var panel=cmi.$('importPanel');
	if (panel) { panel.parentNode.removeChild(panel); }
	setStylesheet(store.getTiddlerText('ImportTiddlersPlugin##css'),'importTiddlers');
	panel=createTiddlyElement(place,'span','importPanel',null,null)
	panel.innerHTML=store.getTiddlerText('ImportTiddlersPlugin##html');
	refreshImportList();
	if (!cmi.src.length) cmi.src=store.getTiddlerText('SiteUrl')||'';
	cmi.$('importSourceURL').value=cmi.src;
	if (!cmi.proxy.length) cmi.proxy=store.getTiddlerText('SiteProxy')||'SiteProxy';
	cmi.$('importSiteProxy').value=cmi.proxy;
	if (window.Components) { // FF3 FIXUP
		cmi.$('fileImportSource').style.display='none';
		cmi.$('importLocalPanelFix').style.display='block';
	}
	cmi.$('chkSync').checked=cmi.sync;
	cmi.$('chkImportTags').checked=cmi.importTags;
	cmi.$('chkKeepTags').checked=cmi.keepTags;
	cmi.$('chkAddTags').checked=cmi.addTags;
	cmi.$('txtNewTags').value=cmi.newTags;
	cmi.$('txtNewTags').style.display=cmi.addTags?'block':'none';
	cmi.$('chkSync').checked=cmi.sync;
	cmi.$('chkImportReport').checked=config.options.chkImportReport;
	return panel;
}
//}}}
//{{{
// process control interactions
function onClickImportButton(which,event) {
	var cmi=config.macros.importTiddlers; // abbreviation
	var list=cmi.$('importList'); if (!list) return false;
	var thePanel=cmi.$('importPanel');
	var theCollisionPanel=cmi.$('importCollisionPanel');
	var theNewTitle=cmi.$('importNewTitle');
	var count=0;
	switch (which.id)
		{
		case 'importFromFile':	// show local panel
		case 'importFromWeb':	// show HTTP panel
			cmi.local=(which.id=='importFromFile');
			cmi.showPanel('importLocalPanel',cmi.local);
			cmi.showPanel('importHTTPPanel',!cmi.local);
			break;
		case 'importOptions':	// show/hide options panel
			cmi.showPanel('importOptionsPanel',cmi.$('importOptionsPanel').style.display=='none');
			break;
		case 'fileImportSource':
		case 'importLoad':		// load import source into hidden frame
			importReport();		// if an import was in progress, generate a report
			cmi.inbound=null;	// clear the imported tiddler buffer
			refreshImportList();	// reset/resize the listbox
			if (cmi.src=='') break;
			// Load document, read it's DOM and fill the list
			cmi.loadRemoteFile(cmi.src,cmi.filterTiddlerList);
			break;
		case 'importSelectFeed':	// select a pre-defined systemServer feed URL
			var p=Popup.create(which); if (!p) return false;
			var tids=store.getTaggedTiddlers('systemServer');
			if (!tids.length)
				createTiddlyText(createTiddlyElement(p,'li'),'no pre-defined server feeds');
			for (var t=0; t<tids.length; t++) {
				var u=store.getTiddlerSlice(tids[t].title,'URL');
				var d=store.getTiddlerSlice(tids[t].title,'Description');
				if (!d||!d.length) d=store.getTiddlerSlice(tids[t].title,'description');
				if (!d||!d.length) d=u;
				createTiddlyButton(createTiddlyElement(p,'li'),tids[t].title,d,
					function(){
						var u=this.getAttribute('url');
						document.getElementById('importSourceURL').value=u;
						config.macros.importTiddlers.src=u;
						document.getElementById('importLoad').onclick();
					},
					null,null,null,{url:u});
			}
			Popup.show();
			event.cancelBubble = true;
			if (event.stopPropagation) event.stopPropagation();
			return false;
			// create popup with feed list
			// onselect, insert feed URL into input field.
			break;
		case 'importSelectAll':		// select all tiddler list items (i.e., not headings)
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				if (list.options[t].value=='') continue;
				list.options[t].selected=true;
				count++;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			cmi.$('importStart').disabled=!count;
			break;
		case 'importSelectNew':		// select tiddlers not in current document
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				list.options[t].selected=false;
				if (list.options[t].value=='') continue;
				list.options[t].selected=!store.tiddlerExists(list.options[t].value);
				count+=list.options[t].selected?1:0;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			cmi.$('importStart').disabled=!count;
			break;
		case 'importSelectChanges':		// select tiddlers that are updated from existing tiddlers
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				list.options[t].selected=false;
				if (list.options[t].value==''||!store.tiddlerExists(list.options[t].value)) continue;
				for (var i=0; i<cmi.inbound.length; i++) // find matching inbound tiddler
					{ var inbound=cmi.inbound[i]; if (inbound.title==list.options[t].value) break; }
				list.options[t].selected=(inbound.modified-store.getTiddler(list.options[t].value).modified>0); // updated tiddler
				count+=list.options[t].selected?1:0;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			cmi.$('importStart').disabled=!count;
			break;
		case 'importSelectDifferences':		// select tiddlers that are new or different from existing tiddlers
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				list.options[t].selected=false;
				if (list.options[t].value=='') continue;
				if (!store.tiddlerExists(list.options[t].value)) { list.options[t].selected=true; count++; continue; }
				for (var i=0; i<cmi.inbound.length; i++) // find matching inbound tiddler
					{ var inbound=cmi.inbound[i]; if (inbound.title==list.options[t].value) break; }
				list.options[t].selected=(inbound.modified-store.getTiddler(list.options[t].value).modified!=0); // changed tiddler
				count+=list.options[t].selected?1:0;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			cmi.$('importStart').disabled=!count;
			break;
		case 'importApplyFilter':	// filter list to include only matching tiddlers
			importReport();		// if an import was in progress, generate a report
			clearMessage();
			if (!cmi.all) // no tiddlers loaded = '0 selected'
				{ displayMessage(cmi.countMsg.format([0])); return false; }
			var hash=cmi.$('importLastFilter').value;
			cmi.inbound=cmi.filterByHash('#'+hash,cmi.all);
			refreshImportList();	// reset/resize the listbox
			break;
		case 'importStart':		// initiate the import processing
			importReport();		// if an import was in progress, generate a report
			cmi.$('importApplyToAll').checked=false;
			cmi.$('importStart').value=cmi.stopText;
			if (cmi.index>0) cmi.index=-1; // stop processing
			else cmi.index=importTiddlers(0); // or begin processing
			importStopped();
			break;
		case 'importClose':		// unload imported tiddlers or hide the import control panel
			// if imported tiddlers not loaded, close the import control panel
			if (!cmi.inbound) { thePanel.style.display='none'; break; }
			importReport();		// if an import was in progress, generate a report
			cmi.inbound=null;	// clear the imported tiddler buffer
			refreshImportList();	// reset/resize the listbox
			break;
		case 'importSkip':	// don't import the tiddler
			cmi.lastAction=which;
			var theItem	= list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported = cmi.inbound[j];
			theImported.status='skipped after asking';			// mark item as skipped
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index+1);	// resume with NEXT item
			importStopped();
			break;
		case 'importRename':		// change name of imported tiddler
			cmi.lastAction=which;
			var theItem		= list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported		= cmi.inbound[j];
			theImported.status	= 'renamed from '+theImported.title;	// mark item as renamed
			theImported.set(theNewTitle.value,null,null,null,null);		// change the tiddler title
			theItem.value		= theNewTitle.value;			// change the listbox item text
			theItem.text		= theNewTitle.value;			// change the listbox item text
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index);	// resume with THIS item
			importStopped();
			break;
		case 'importMerge':	// join existing and imported tiddler content
			cmi.lastAction=which;
			var theItem	= list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported	= cmi.inbound[j];
			var theExisting	= store.getTiddler(theItem.value);
			var theText	= theExisting.text+'\n----\n^^merged from: ';
			theText		+='[['+cmi.src+'#'+theItem.value+'|'+cmi.src+'#'+theItem.value+']]^^\n';
			theText		+='^^'+theImported.modified.toLocaleString()+' by '+theImported.modifier+'^^\n'+theImported.text;
			var theDate	= new Date();
			var theTags	= theExisting.getTags()+' '+theImported.getTags();
			theImported.set(null,theText,null,theDate,theTags);
			theImported.status   = 'merged with '+theExisting.title;	// mark item as merged
			theImported.status  += ' - '+theExisting.modified.formatString('MM/DD/YYYY 0hh:0mm:0ss');
			theImported.status  += ' by '+theExisting.modifier;
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index);	// resume with this item
			importStopped();
			break;
		case 'importReplace':		// substitute imported tiddler for existing tiddler
			cmi.lastAction=which;
			var theItem		  = list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported     = cmi.inbound[j];
			var theExisting	  = store.getTiddler(theItem.value);
			theImported.status  = 'replaces '+theExisting.title;		// mark item for replace
			theImported.status += ' - '+theExisting.modified.formatString('MM/DD/YYYY 0hh:0mm:0ss');
			theImported.status += ' by '+theExisting.modifier;
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index);	// resume with THIS item
			importStopped();
			break;
		case 'importListSmaller':		// decrease current listbox size, minimum=5
			if (list.options.length==1) break;
			list.size-=(list.size>5)?1:0;
			cmi.listsize=list.size;
			break;
		case 'importListLarger':		// increase current listbox size, maximum=number of items in list
			if (list.options.length==1) break;
			list.size+=(list.size<list.options.length)?1:0;
			cmi.listsize=list.size;
			break;
		case 'importListMaximize':	// toggle listbox size between current and maximum
			if (list.options.length==1) break;
			list.size=(list.size==list.options.length)?cmi.listsize:list.options.length;
			break;
		}
}
//}}}
//{{{
config.macros.importTiddlers.showPanel=function(place,show,skipAnim) {
	if (typeof place=='string') var place=document.getElementById(place);
	if (!place||!place.style) return;
	if(!skipAnim && anim && config.options.chkAnimate) anim.startAnimating(new Slider(place,show,false,'none'));
	else place.style.display=show?'block':'none';
}
//}}}
//{{{
function refreshImportList(selectedIndex) {
	var cmi=config.macros.importTiddlers; // abbrev
	var list=cmi.$('importList'); if (!list) return;
	// if nothing to show, reset list content and size
	if (!cmi.inbound) {
		while (list.length > 0) { list.options[0] = null; }
		list.options[0]=new Option(cmi.loadText,'',false,false);
		list.size=cmi.listsize;
		cmi.$('importLoad').disabled=false;
		cmi.$('importLoad').style.display='inline';
		cmi.$('importStart').disabled=true;
		cmi.$('importOptions').disabled=true;
		cmi.$('importOptions').style.display='none';
		cmi.$('fileImportSource').disabled=false;
		cmi.$('importFromFile').disabled=false;
		cmi.$('importFromWeb').disabled=false;
		cmi.$('importStart').value=cmi.startText;
		cmi.$('importClose').value=cmi.doneText;
		cmi.$('importSelectPanel').style.display='none';
		cmi.$('importOptionsPanel').style.display='none';
		return;
	}
	// there are inbound tiddlers loaded...
	cmi.$('importLoad').disabled=true;
	cmi.$('importLoad').style.display='none';
	cmi.$('importOptions').style.display='inline';
	cmi.$('importOptions').disabled=false;
	cmi.$('fileImportSource').disabled=true;
	cmi.$('importFromFile').disabled=true;
	cmi.$('importFromWeb').disabled=true;
	cmi.$('importClose').value=cmi.closeText;
	if (cmi.$('importSelectPanel').style.display=='none')
		cmi.showPanel('importSelectPanel',true);

	// get the sort order
	if (!selectedIndex)   selectedIndex=0;
	if (selectedIndex==0) cmi.sort='title';		// heading
	if (selectedIndex==1) cmi.sort='title';
	if (selectedIndex==2) cmi.sort='modified';
	if (selectedIndex==3) cmi.sort='tags';
	if (selectedIndex>3) {
		// display selected tiddler count
		for (var t=0,count=0; t < list.options.length; t++) {
			if (!list.options[t].selected) continue;
			if (list.options[t].value!='')
				count+=1;
			else { // if heading is selected, deselect it, and then select and count all in section
				list.options[t].selected=false;
				for ( t++; t<list.options.length && list.options[t].value!=''; t++) {
					list.options[t].selected=true;
					count++;
				}
			}
		}
		clearMessage(); displayMessage(cmi.countMsg.format([count]));
	}
	cmi.$('importStart').disabled=!count;
	if (selectedIndex>3) return; // no refresh needed

	// get the alphasorted list of tiddlers
	var tiddlers=cmi.inbound;
	tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });
	// clear current list contents
	while (list.length > 0) { list.options[0] = null; }
	// add heading and control items to list
	var i=0;
	var indent=String.fromCharCode(160)+String.fromCharCode(160);
	if (cmi.all.length==tiddlers.length)
		var summary=cmi.summaryMsg.format([tiddlers.length,(tiddlers.length!=1)?cmi.plural:cmi.single]);
	else
		var summary=cmi.summaryFilteredMsg.format([tiddlers.length,cmi.all.length,(cmi.all.length!=1)?cmi.plural:cmi.single]);
	list.options[i++]=new Option(summary,'',false,false);
	list.options[i++]=new Option(((cmi.sort=='title'   )?'>':indent)+' [by title]','',false,false);
	list.options[i++]=new Option(((cmi.sort=='modified')?'>':indent)+' [by date]','',false,false);
	list.options[i++]=new Option(((cmi.sort=='tags')?'>':indent)+' [by tags]','',false,false);
	// output the tiddler list
	switch(cmi.sort) {
		case 'title':
			for(var t = 0; t < tiddlers.length; t++)
				list.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);
			break;
		case 'modified':
			// sort descending for newest date first
			tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });
			var lastSection = '';
			for(var t = 0; t < tiddlers.length; t++) {
				var tiddler = tiddlers[t];
				var theSection = tiddler.modified.toLocaleDateString();
				if (theSection != lastSection) {
					list.options[i++] = new Option(theSection,'',false,false);
					lastSection = theSection;
				}
				list.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);
			}
			break;
		case 'tags':
			var theTitles = {}; // all tiddler titles, hash indexed by tag value
			var theTags = new Array();
			for(var t=0; t<tiddlers.length; t++) {
				var title=tiddlers[t].title;
				var tags=tiddlers[t].tags;
				if (!tags || !tags.length) {
					if (theTitles['untagged']==undefined) { theTags.push('untagged'); theTitles['untagged']=new Array(); }
					theTitles['untagged'].push(title);
				}
				else for(var s=0; s<tags.length; s++) {
					if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }
					theTitles[tags[s]].push(title);
				}
			}
			theTags.sort();
			for(var tagindex=0; tagindex<theTags.length; tagindex++) {
				var theTag=theTags[tagindex];
				list.options[i++]=new Option(theTag,'',false,false);
				for(var t=0; t<theTitles[theTag].length; t++)
					list.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);
			}
			break;
		}
	list.selectedIndex=selectedIndex;		  // select current control item
	if (list.size<cmi.listsize) list.size=cmi.listsize;
	if (list.size>list.options.length) list.size=list.options.length;
}
//}}}
//{{{
// re-entrant processing for handling import with interactive collision prompting
function importTiddlers(startIndex) {
	var cmi=config.macros.importTiddlers; // abbrev
	if (!cmi.inbound) return -1;
	var list=cmi.$('importList'); if (!list) return;
	var t;
	// if starting new import, reset import status flags
	if (startIndex==0)
		for (var t=0;t<cmi.inbound.length;t++)
			cmi.inbound[t].status='';
	for (var i=startIndex; i<list.options.length; i++) {
		// if list item is not selected or is a heading (i.e., has no value), skip it
		if ((!list.options[i].selected) || ((t=list.options[i].value)==''))
			continue;
		for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==t) break;
		var inbound = cmi.inbound[j];
		var theExisting = store.getTiddler(inbound.title);
		// avoid redundant import for tiddlers that are listed multiple times (when 'by tags')
		if (inbound.status=='added')
			continue;
		// don't import the 'ImportedTiddlers' history from the other document...
		if (inbound.title=='ImportedTiddlers')
			continue;
		// if tiddler exists and import not marked for replace or merge, stop importing
		if (theExisting && (inbound.status.substr(0,7)!='replace') && (inbound.status.substr(0,5)!='merge'))
			return i;
		// assemble tags (remote + existing + added)
		var newTags = '';
		if (cmi.importTags)
			newTags+=inbound.getTags()	// import remote tags
		if (cmi.keepTags && theExisting)
			newTags+=' '+theExisting.getTags(); // keep existing tags
		if (cmi.addTags && cmi.newTags.trim().length)
			newTags+=' '+cmi.newTags; // add new tags
		inbound.set(null,null,null,null,newTags.trim());
		// set the status to 'added' (if not already set by the 'ask the user' UI)
		inbound.status=(inbound.status=='')?'added':inbound.status;
		// set sync fields
		if (cmi.sync) {
			if (!inbound.fields) inbound.fields={}; // for TW2.1.x backward-compatibility
			inbound.fields['server.page.revision']=inbound.modified.convertToYYYYMMDDHHMM();
			inbound.fields['server.type']='file';
			inbound.fields['server.host']=(cmi.local&&!cmi.src.startsWith('file:')?'file:///':'')+cmi.src;
		}
		// do the import!
		store.suspendNotifications();
		store.saveTiddler(inbound.title, inbound.title, inbound.text, inbound.modifier, inbound.modified, inbound.tags, inbound.fields, true, inbound.created);
                store.fetchTiddler(inbound.title).created = inbound.created; // force creation date to imported value (needed for TW2.1.x and earlier)
		store.resumeNotifications();
		}
	return(-1);	// signals that we really finished the entire list
}
function importStopped() {
	var cmi=config.macros.importTiddlers; // abbrev
	var list=cmi.$('importList'); if (!list) return;
	var theNewTitle=cmi.$('importNewTitle');
	if (cmi.index==-1){ 
		cmi.$('importStart').value=cmi.startText;
		importReport();	// import finished... generate the report
	} else {
		// import collision...
		// show the collision panel and set the title edit field
		cmi.$('importStart').value=cmi.stopText;
		cmi.showPanel('importCollisionPanel',true);
		theNewTitle.value=list.options[cmi.index].value;
		if (cmi.$('importApplyToAll').checked && cmi.lastAction && cmi.lastAction.id!='importRename')
			onClickImportButton(cmi.lastAction);
	}
}
//}}}
//{{{
function importReport() {
	var cmi=config.macros.importTiddlers; // abbrev
	if (!cmi.inbound) return;
	// if import was not completed, the collision panel will still be open... close it now.
	var panel=cmi.$('importCollisionPanel'); if (panel) panel.style.display='none';
	// get the alphasorted list of tiddlers
	var tiddlers = cmi.inbound;
	// gather the statistics
	var count=0; var total=0;
	for (var t=0; t<tiddlers.length; t++) {
		if (!tiddlers[t].status || !tiddlers[t].status.trim().length) continue;
		if (tiddlers[t].status.substr(0,7)!='skipped') count++;
		total++;
	}
	// generate a report
	if (total) displayMessage(cmi.processedMsg.format([total]));
	if (count && config.options.chkImportReport) {
		// get/create the report tiddler
		var theReport = store.getTiddler('ImportedTiddlers');
		if (!theReport) { theReport=new Tiddler(); theReport.title='ImportedTiddlers'; theReport.text=''; }
		// format the report content
		var now = new Date();
		var newText = 'On '+now.toLocaleString()+', '+config.options.txtUserName
		newText +=' imported '+count+' tiddler'+(count==1?'':'s')+' from\n[['+cmi.src+'|'+cmi.src+']]:\n';
		if (cmi.addTags && cmi.newTags.trim().length)
			newText += 'imported tiddlers were tagged with: "'+cmi.newTags+'"\n';
		newText += '<<<\n';
		for (var t=0; t<tiddlers.length; t++) if (tiddlers[t].status)
			newText += '#[['+tiddlers[t].title+']] - '+tiddlers[t].status+'\n';
		newText += '<<<\n';
		// update the ImportedTiddlers content and show the tiddler
		theReport.text	 = newText+((theReport.text!='')?'\n----\n':'')+theReport.text;
		theReport.modifier = config.options.txtUserName;
		theReport.modified = new Date();
                store.saveTiddler(theReport.title, theReport.title, theReport.text, theReport.modifier, theReport.modified, theReport.tags, theReport.fields);
		story.displayTiddler(null,theReport.title,1,null,null,false);
		story.refreshTiddler(theReport.title,1,true);
	}
	// reset status flags
	for (var t=0; t<cmi.inbound.length; t++) cmi.inbound[t].status='';
	// mark document as dirty and let display update as needed
	if (count) { store.setDirty(true); store.notifyAll(); }
	// always show final message when tiddlers were actually loaded
	if (count) displayMessage(cmi.importedMsg.format([count,tiddlers.length,cmi.src.replace(/%20/g,' ')]));
}
//}}}
//{{{
// // File and XMLHttpRequest I/O
config.macros.importTiddlers.askForFilename=function(here) {
	var msg=here.title; // use tooltip as dialog box message
	var path=getLocalPath(document.location.href);
	var slashpos=path.lastIndexOf('/'); if (slashpos==-1) slashpos=path.lastIndexOf('\\'); 
	if (slashpos!=-1) path = path.substr(0,slashpos+1); // remove filename from path, leave the trailing slash
	var file='';
	var result='';
	if(window.Components) { // moz
		try {
			netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');

			var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
			var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
			picker.init(window, msg, nsIFilePicker.modeOpen);
			var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
			thispath.initWithPath(path);
			picker.displayDirectory=thispath;
			picker.defaultExtension='html';
			picker.defaultString=file;
			picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
			if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.persistentDescriptor;
		}
		catch(e) { alert('error during local file access: '+e.toString()) }
	}
	else { // IE
		try { // XPSP2 IE only
			var s = new ActiveXObject('UserAccounts.CommonDialog');
			s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
			s.FilterIndex=3; // default to HTML files;
			s.InitialDir=path;
			s.FileName=file;
			if (s.showOpen()) var result=s.FileName;
		}
		catch(e) {  // fallback
			var result=prompt(msg,path+file);
		}
	}
	return result;
}

config.macros.importTiddlers.loadRemoteFile = function(src,callback) {
	if (src==undefined || !src.length) return null; // filename is required
	var original=src; // URL as specified
	var hashpos=src.indexOf('#'); if (hashpos!=-1) src=src.substr(0,hashpos); // URL with #... suffix removed (needed for IE)
	clearMessage();
	displayMessage(this.openMsg.format([src.replace(/%20/g,' ')]));
	if (src.substr(0,5)!='http:' && src.substr(0,5)!='file:') { // if not a URL, read from local filesystem
		var txt=loadFile(src);
		if (!txt) { // file didn't load, might be relative path.. try fixup
			var pathPrefix=document.location.href;  // get current document path and trim off filename
			var slashpos=pathPrefix.lastIndexOf('/'); if (slashpos==-1) slashpos=pathPrefix.lastIndexOf('\\'); 
			if (slashpos!=-1 && slashpos!=pathPrefix.length-1) pathPrefix=pathPrefix.substr(0,slashpos+1);
			src=pathPrefix+src;
			if (pathPrefix.substr(0,5)!='http:') src=getLocalPath(src);
			var txt=loadFile(src);
		}
		if (!txt) { // file still didn't load, report error
			displayMessage(config.macros.importTiddlers.openErrMsg.format([src.replace(/%20/g,' '),'(filesystem error)']));
		} else {
			displayMessage(config.macros.importTiddlers.readMsg.format([txt.length,src.replace(/%20/g,' ')]));
			if (version.major+version.minor*.1+version.revision*.01!=2.52) txt=convertUTF8ToUnicode(txt);
			if (callback) callback(true,original,txt,src,null);
		}
	} else {
		doHttp('GET',src,null,null,config.options.txtRemoteUsername,config.options.txtRemotePassword,callback,original,null);
	}
}

config.macros.importTiddlers.readTiddlersFromHTML=function(html){
	var remoteStore=new TiddlyWiki();
	remoteStore.importTiddlyWiki(html);
	return remoteStore.getTiddlers('title');	
}

config.macros.importTiddlers.readTiddlersFromCSV=function(CSV){
	var remoteStore=new TiddlyWiki();
	// GET NAMES
	var lines=CSV.replace(/\r/g,'').split('\n');
	var names=lines.shift().replace(/"/g,'').split(',');
	CSV=lines.join('\n');
	// ENCODE commas and newlines within quoted values
	var comma='!~comma~!'; var commaRE=new RegExp(comma,'g');
	var newline='!~newline~!'; var newlineRE=new RegExp(newline,'g');
	CSV=CSV.replace(/"([^"]*?)"/g,
		function(x){ return x.replace(/\,/g,comma).replace(/\n/g,newline); });
	// PARSE lines
	var lines=CSV.split('\n');
	for (var i=0; i<lines.length; i++) { if (!lines[i].length) continue;
		var values=lines[i].split(',');
		// DECODE commas, newlines, and doubled-quotes, and remove enclosing quotes (if any)
		for (var v=0; v<values.length; v++)
			values[v]=values[v].replace(commaRE,',').replace(newlineRE,'\n')
				.replace(/^"|"$/g,'').replace(/""/g,'"');
		// EXTRACT tiddler values
		var title=''; var text=''; var tags=[]; var fields={};
		var created=null; var when=new Date(); var who=config.options.txtUserName;
		for (var v=0; v<values.length; v++) { var val=values[v];
			if (names[v]) switch(names[v].toLowerCase()) {
				case 'title':	title=val.replace(/\[\]\|/g,'_'); break;
				case 'created': created=new Date(val); break;
				case 'modified':when=new Date(val); break;
				case 'modifier':who=val; break;
				case 'text':	text=val; break;
				case 'tags':	tags=val.readBracketedList(); break;
				default:	fields[names[v].toLowerCase()]=val; break;
			}
		}
		// CREATE tiddler in temporary store
		if (title.length)
			remoteStore.saveTiddler(title,title,text,who,when,tags,fields,true,created||when);
	}
	return remoteStore.getTiddlers('title');
}

config.macros.importTiddlers.createTiddlerFromFile=function(src,txt) {
	var t=new Tiddler();
	var pos=src.lastIndexOf("/"); if (pos==-1) pos=src.lastIndexOf("\\");
	t.title=pos==-1?src:src.substr(pos+1);
	t.text=txt; 
	t.created=t.modified=new Date();
	t.modifier=config.options.txtUserName;
	if (src.substr(src.length-3,3)=='.js') t.tags=['systemConfig'];
	return [t];
}

config.macros.importTiddlers.filterTiddlerList=function(success,params,txt,src,xhr){
	var cmi=config.macros.importTiddlers; // abbreviation
	var src=src.replace(/%20/g,' ');
	if (!success) { displayMessage(cmi.openErrMsg.format([src,xhr.status])); return; }
	cmi.all=cmi.readTiddlersFromHTML(txt);
	if (!cmi.all||!cmi.all.length) cmi.all=cmi.readTiddlersFromCSV(txt)
	if (!cmi.all||!cmi.all.length) cmi.all=cmi.createTiddlerFromFile(src,txt)
	var count=cmi.all?cmi.all.length:0;
	var querypos=src.lastIndexOf('?'); if (querypos!=-1) src=src.substr(0,querypos);
	displayMessage(cmi.foundMsg.format([count,src]));
	cmi.inbound=cmi.filterByHash(params,cmi.all); // use full URL including hash (if any)
	cmi.$('importLastFilter').value=cmi.lastFilter;
	window.refreshImportList(0);
}

config.macros.importTiddlers.filterByHash=function(src,tiddlers){
	var hashpos=src.lastIndexOf('#'); if (hashpos==-1) return tiddlers;
	var hash=src.substr(hashpos+1); if (!hash.length) return tiddlers;
	var tids=[];
	var params=hash.parseParams('anon',null,true,false,false);
	for (var p=1; p<params.length; p++) {
		switch (params[p].name) {
			case 'anon':
			case 'open':
				tids.pushUnique(params[p].value);
				break;
			case 'tag':
				if (store.getMatchingTiddlers) { // for boolean expressions - see MatchTagsPlugin
					var r=store.getMatchingTiddlers(params[p].value,null,tiddlers);
					for (var t=0; t<r.length; t++) tids.pushUnique(r[t].title);
				} else for (var t=0; t<tiddlers.length; t++)
					if (tiddlers[t].isTagged(params[p].value))
						tids.pushUnique(tiddlers[t].title);
				break;
			case 'story':
				for (var t=0; t<tiddlers.length; t++)
					if (tiddlers[t].title==params[p].value) {
						tiddlers[t].changed();
						for (var s=0; s<tiddlers[t].links.length; s++)
							tids.pushUnique(tiddlers[t].links[s]);
						break;
					}
				break;
			case 'search':
				for (var t=0; t<tiddlers.length; t++)
					if (tiddlers[t].text.indexOf(params[p].value)!=-1)
						tids.pushUnique(tiddlers[t].title);
				break;
		}
	}
	var matches=[];
	for (var t=0; t<tiddlers.length; t++)
		if (tids.contains(tiddlers[t].title))
			matches.push(tiddlers[t]);
	displayMessage(config.macros.importTiddlers.filterMsg.format([matches.length,hash]));
	config.macros.importTiddlers.lastFilter=hash;
	return matches;
}
//}}}
/***
!!!Control panel CSS
//{{{
!css
#importPanel {
	display: none; position:absolute; z-index:11; width:35em; right:105%; top:3em;
	background-color: #eee; color:#000; font-size: 8pt; line-height:110%;
	border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;
	padding: 0.5em; margin:0em; -moz-border-radius:1em;-webkit-border-radius:1em;
}
#importPanel a, #importPanel td a { color:#009; display:inline; margin:0px; padding:1px; }
#importPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }
#importPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }
#importPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }
#importPanel select { width:100%;margin:0px;font-size:8pt;line-height:110%;}
#importPanel input  { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}
#importPanel .box { border:1px solid #000; background-color:#eee; padding:3px 5px; margin-bottom:5px; -moz-border-radius:5px;-webkit-border-radius:5px;}
#importPanel .topline { border-top:1px solid #999; padding-top:2px; margin-top:2px; }
#importPanel .rad { width:auto; }
#importPanel .chk { width:auto; margin:1px;border:0; }
#importPanel .btn { width:auto; }
#importPanel .btn1 { width:98%; }
#importPanel .btn2 { width:48%; }
#importPanel .btn3 { width:32%; }
#importPanel .btn4 { width:23%; }
#importPanel .btn5 { width:19%; }
#importPanel .importButton { padding: 0em; margin: 0px; font-size:8pt; }
#importPanel .importListButton { padding:0em 0.25em 0em 0.25em; color: #000000; display:inline }
#backstagePanel #importPanel { left:10%; right:auto; }
!end
//}}}
!!!Control panel HTML
//{{{
!html
<!-- source and report -->
<table><tr><td align=left>
	import from
	<input type="radio" class="rad" name="importFrom" id="importFromFile" value="file" CHECKED
		onclick="onClickImportButton(this,event)" title="show file controls"> local file
	<input type="radio" class="rad" name="importFrom" id="importFromWeb"  value="http"
		onclick="onClickImportButton(this,event)" title="show web controls"> web server
</td><td align=right>
	<input type=checkbox class="chk" id="chkImportReport"
		onClick="config.options['chkImportReport']=this.checked;"> create report
</td></tr></table>

<div class="box" id="importSourcePanel" style="margin:.5em">
<div id="importLocalPanel" style="display:block;margin-bottom:2px;"><!-- import from local file  -->
enter or browse for source path/filename<br>
<input type="file" id="fileImportSource" size=57 style="width:100%"
	onKeyUp="config.macros.importTiddlers.src=this.value"
	onChange="config.macros.importTiddlers.src=this.value;document.getElementById('importLoad').onclick()">
<div id="importLocalPanelFix" style="display:none"><!-- FF3 FIXUP -->
	<input type="text" id="fileImportSourceFix" style="width:90%"
		title="Enter a path/file to import"
		onKeyUp="config.macros.importTiddlers.src=this.value"
		onChange="config.macros.importTiddlers.src=this.value;document.getElementById('importLoad').onclick()">
	<input type="button" id="fileImportSourceFixButton" style="width:7%" value="..."
		title="Select a path/file to import"
		onClick="var r=config.macros.importTiddlers.askForFilename(this); if (!r||!r.length) return;
			document.getElementById('fileImportSourceFix').value=r;
			config.macros.importTiddlers.src=r;
			document.getElementById('importLoad').onclick()">
</div><!--end FF3 FIXUP-->
</div><!--end local-->
<div id="importHTTPPanel" style="display:none;margin-bottom:2px;"><!-- import from http server -->
<table><tr><td align=left>
	enter a URL or <a href="javascript:;" id="importSelectFeed"
		onclick="return onClickImportButton(this,event)" title="select a pre-defined 'systemServer' URL">
		select a server</a><br>
</td><td align=right>
	<input type="checkbox" class="chk" id="importUsePassword"
		onClick="config.macros.importTiddlers.usePassword=this.checked;
			config.macros.importTiddlers.showPanel('importIDPWPanel',this.checked,true);">password
	<input type="checkbox" class="chk" id="importUseProxy"
		onClick="config.macros.importTiddlers.useProxy=this.checked;
			config.macros.importTiddlers.showPanel('importSiteProxy',this.checked,true);">proxy
</td></tr></table>
<input type="text" id="importSiteProxy" style="display:none;margin-bottom:1px" onfocus="this.select()" value="SiteProxy"
	onKeyUp="config.macros.importTiddlers.proxy=this.value"
	onChange="config.macros.importTiddlers.proxy=this.value;">
<input type="text" id="importSourceURL" onfocus="this.select()" value="SiteUrl"
	onKeyUp="config.macros.importTiddlers.src=this.value"
	onChange="config.macros.importTiddlers.src=this.value;">
<div id="importIDPWPanel" style="text-align:center;margin-top:2px;display:none";>
username: <input type=text id="txtImportID" style="width:25%" 
	onChange="config.options.txtRemoteUsername=this.value;">
 password: <input type=password id="txtImportPW" style="width:25%" 
	onChange="config.options.txtRemotePassword=this.value;">
</div><!--end idpw-->
</div><!--end http-->
</div><!--end source-->

<div class="box" id="importSelectPanel" style="display:none;margin:.5em;">
<table><tr><td align=left>
select:
<a href="javascript:;" id="importSelectAll"
	onclick="return onClickImportButton(this)" title="SELECT all tiddlers">
	all</a>
&nbsp;<a href="javascript:;" id="importSelectNew"
	onclick="return onClickImportButton(this)" title="SELECT tiddlers not already in destination document">
	added</a>
&nbsp;<a href="javascript:;" id="importSelectChanges"
	onclick="return onClickImportButton(this)" title="SELECT tiddlers that have been updated in source document">
	changes</a>
&nbsp;<a href="javascript:;" id="importSelectDifferences"
	onclick="return onClickImportButton(this)" title="SELECT tiddlers that have been added or are different from existing tiddlers">
	differences</a>
</td><td align=right>
<a href="javascript:;" id="importListSmaller"
	onclick="return onClickImportButton(this)" title="SHRINK list size">
	&nbsp;&#150;&nbsp;</a>
<a href="javascript:;" id="importListLarger"
	onclick="return onClickImportButton(this)" title="GROW list size">
	&nbsp;+&nbsp;</a>
<a href="javascript:;" id="importListMaximize"
	onclick="return onClickImportButton(this)" title="MAXIMIZE/RESTORE list size">
	&nbsp;=&nbsp;</a>
</td></tr></table>
<select id="importList" size=8 multiple
	onchange="setTimeout('refreshImportList('+this.selectedIndex+')',1)">
	<!-- NOTE: delay refresh so list is updated AFTER onchange event is handled -->
</select>
<div style="text-align:center">
	<a href="javascript:;"
		title="click for help using filters..."
		onclick="alert('A filter consists of one or more space-separated combinations of: tiddlertitle, tag:[[tagvalue]], tag:[[tag expression]] (requires MatchTagsPlugin), story:[[TiddlerName]], and/or search:[[searchtext]]. Use a blank filter to restore the list of all tiddlers.'); return false;"
	>filter</a>
	<input type="text" id="importLastFilter" style="margin-bottom:1px; width:65%"
		title="Enter a combination of one or more filters. Use a blank filter for all tiddlers."
		onfocus="this.select()" value=""
		onKeyUp="config.macros.importTiddlers.lastFilter=this.value"
		onChange="config.macros.importTiddlers.lastFilter=this.value;">
	<input type="button" id="importApplyFilter" style="width:20%" value="apply"
		title="filter list of tiddlers to include only those that match certain criteria"
		onclick="return onClickImportButton(this)">
	</div>
</div><!--end select-->

<div class="box" id="importOptionsPanel" style="text-align:center;margin:.5em;display:none;">
	apply tags: <input type=checkbox class="chk" id="chkImportTags" checked
		onClick="config.macros.importTiddlers.importTags=this.checked;">from source&nbsp;
	<input type=checkbox class="chk" id="chkKeepTags" checked
		onClick="config.macros.importTiddlers.keepTags=this.checked;">keep existing&nbsp;
	<input type=checkbox class="chk" id="chkAddTags" 
		onClick="config.macros.importTiddlers.addTags=this.checked;
			config.macros.importTiddlers.showPanel('txtNewTags',this.checked,false);
			if (this.checked) document.getElementById('txtNewTags').focus();">add tags<br>
	<input type=text id="txtNewTags" style="margin-top:4px;display:none;" size=15 onfocus="this.select()" 
		title="enter tags to be added to imported tiddlers" 
		onKeyUp="config.macros.importTiddlers.newTags=this.value;
		document.getElementById('chkAddTags').checked=this.value.length>0;" autocomplete=off>
	<nobr><input type=checkbox class="chk" id="chkSync" 
		onClick="config.macros.importTiddlers.sync=this.checked;">
		link tiddlers to source document (for sync later)</nobr>
</div><!--end options-->

<div id="importButtonPanel" style="text-align:center">
	<input type=button id="importLoad"	class="importButton btn3" value="open"
		title="load listbox with tiddlers from source document"
		onclick="onClickImportButton(this)">
	<input type=button id="importOptions"	class="importButton btn3" value="options..."
		title="set options for tags, sync, etc."
		onclick="onClickImportButton(this)">
	<input type=button id="importStart"	class="importButton btn3" value="import"
		title="start/stop import of selected source tiddlers into current document"
		onclick="onClickImportButton(this)">
	<input type=button id="importClose"	class="importButton btn3" value="done"
		title="clear listbox or hide control panel"
		onclick="onClickImportButton(this)">
</div>

<div class="none" id="importCollisionPanel" style="display:none;margin:.5em 0 .5em .5em;">
	<table><tr><td style="width:65%" align="left">
		<table><tr><td align=left>
			tiddler already exists:
		</td><td align=right>
			<input type=checkbox class="chk" id="importApplyToAll" 
			onclick="document.getElementById('importRename').disabled=this.checked;"
			checked>apply to all
		</td></tr></table>
		<input type=text id="importNewTitle" size=15 autocomplete=off">
	</td><td style="width:34%" align="center">
		<input type=button id="importMerge"
			class="importButton" style="width:47%" value="merge"
			title="append the incoming tiddler to the existing tiddler"
			onclick="onClickImportButton(this)"><!--
		--><input type=button id="importSkip"
			class="importButton" style="width:47%" value="skip"
			title="do not import this tiddler"
			onclick="onClickImportButton(this)"><!--
		--><br><input type=button id="importRename"
			class="importButton" style="width:47%" value="rename"
			title="rename the incoming tiddler"
			onclick="onClickImportButton(this)"><!--
		--><input type=button id="importReplace"
			class="importButton" style="width:47%" value="replace"
			title="discard the existing tiddler"
			onclick="onClickImportButton(this)">
	</td></tr></table>
</div><!--end collision-->
!end
//}}}
***/
 
/***
|Name|ImportTiddlersPluginPatch|
|Source|http://www.TiddlyTools.com/#ImportTiddlersPluginPatch|
|Version|4.4.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|ImportTiddlersPlugin|
|Description|backward-compatible function patches for use with ImportTiddlersPlugin and TW2.1.x or earlier|
!!!!!Usage
<<<
The current version ImportTiddlersPlugin is compatible with the TW2.2.x core functions.  This "patch" plugin provides additional functions needed to enable the current version of ImportTiddlersPlugin to operate correctly under TW2.1.x or earlier.

{{medium{You do not need to install this plugin if you are using TW2.2.0 or above}}}
(though it won't hurt anything if you do... it will just take up more space).
<<<
!!!!!Revisions
<<<
2008.09.30 [4.4.0] added safety check for TW21Loader object and forward-compatible loadFromDiv() prototype to permit use with TW2.0.x and TW1.2.x.
2008.08.05 [4.3.2] rewrote loadRemoteFile to eliminate use of platform-specific fileExists() function
2008.01.03 [3.6.0] added support for passing txtRemoteUsername and txtRemotePassword for accessing password-protected remote servers
2007.06.27 [3.5.5] compatibility functions split from ImportTiddlersPlugin
|please see [[ImportTiddlersPlugin]] for additional revision details|
2005.07.20 [1.0.0] Initial Release
<<<
!!!!!Code
***/
//{{{
// these functions are only defined when installed in TW2.1.x and earlier... 
if (version.major+version.minor/10 <= 2.1) {

// Version
version.extensions.ImportTiddlersPluginPatch= {major: 4, minor: 4, revision: 0, date: new Date(2008,9,30)};

// fixups for TW2.0.x and earlier
if (window.merge==undefined) window.merge=function(dst,src,preserveExisting)
	{ for (p in src) if (!preserveExisting||dst[p]===undefined) dst[p]=src[p]; return dst; }
if (config.macros.importTiddlers==undefined) config.macros.importTiddlers={ };

config.macros.importTiddlers.loadRemoteFile = function(src,callback,quiet) {
	if (src==undefined || !src.length) return null; // filename is required
	if (!quiet) clearMessage();
	if (!quiet) displayMessage(this.openMsg.format([src]));

	if (src.substr(0,5)!="http:" && src.substr(0,5)!="file:") { // if not a URL, read from local filesystem
		var txt=loadFile(src);
		if (!txt) { // file didn't load, might be relative path.. try fixup
			var pathPrefix=document.location.href;  // get current document path and trim off filename
			var slashpos=pathPrefix.lastIndexOf("/"); if (slashpos==-1) slashpos=pathPrefix.lastIndexOf("\\"); 
			if (slashpos!=-1 && slashpos!=pathPrefix.length-1) pathPrefix=pathPrefix.substr(0,slashpos+1);
			src=pathPrefix+src;
			if (pathPrefix.substr(0,5)!="http:") src=getLocalPath(src);
			var txt=loadFile(src);
		}
		if (!txt) { // file still didn't load, report error
			if (!quiet) displayMessage(config.macros.importTiddlers.openErrMsg.format([src.replace(/%20/g," "),"(filesystem error)"]));
		} else {
			if (!quiet) displayMessage(config.macros.importTiddlers.readMsg.format([txt.length,src.replace(/%20/g," ")]));
			if (callback) callback(true,src,convertUTF8ToUnicode(txt),src,null);
		}
	} else {
		var x; // get an request object
		try {x = new XMLHttpRequest()} // moz
		catch(e) {
			try {x = new ActiveXObject("Msxml2.XMLHTTP")} // IE 6
			catch (e) {
				try {x = new ActiveXObject("Microsoft.XMLHTTP")} // IE 5
				catch (e) { return }
			}
		}
		// setup callback function to handle server response(s)
		x.onreadystatechange = function() {
			if (x.readyState == 4) {
				if (x.status==0 || x.status == 200) {
					if (!quiet) displayMessage(config.macros.importTiddlers.readMsg.format([x.responseText.length,src]));
					if (callback) callback(true,src,x.responseText,src,x);
				}
				else {
					if (!quiet) displayMessage(config.macros.importTiddlers.openErrMsg.format([src,x.status]));
				}
			}
		}
		// get privileges to read another document's DOM via http:// or file:// (moz-only)
		if (typeof(netscape)!="undefined") {
			try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); }
			catch (e) { if (!quiet) displayMessage(e.description?e.description:e.toString()); }
		}
		// send the HTTP request
		try {
			var url=src+(src.indexOf('?')<0?'?':'&')+'nocache='+Math.random();
			x.open("GET",src,true,config.options.txtRemoteUsername,config.options.txtRemotePassword);
			if (x.overrideMimeType) x.overrideMimeType('text/html');
			x.send(null);
		}
		catch (e) {
			if (!quiet) {
				displayMessage(config.macros.importTiddlers.openErrMsg.format([src,"(unknown)"]));
				displayMessage(e.description?e.description:e.toString());
			}
		}
	}
}

config.macros.importTiddlers.readTiddlersFromHTML=function(html) {
	// for TW2.1 and earlier
	// extract store area from html 
	var start=html.indexOf('<div id="storeArea">');
	var end=html.indexOf("<!--POST-BODY-START--"+">",start);
	if (end==-1) var end=html.indexOf("</body"+">",start); // backward-compatibility for older documents
	var sa="<html><body>"+html.substring(start,end)+"</body></html>";

	// load html into iframe document
	var f=document.getElementById("loaderFrame"); if (f) document.body.removeChild(f);
	f=document.createElement("iframe"); f.id="loaderFrame";
	f.style.width="0px"; f.style.height="0px"; f.style.border="0px";
	document.body.appendChild(f);
	var d=f.document;
	if (f.contentDocument) d=f.contentDocument; // For NS6
	else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6
	d.open(); d.writeln(sa); d.close();

	// read tiddler DIVs from storeArea DOM element	
	var sa = d.getElementById("storeArea");
	if (!sa) return null;
	sa.normalize();
	var nodes = sa.childNodes;
	if (!nodes || !nodes.length) return null;
	var tiddlers = [];
	for(var t = 0; t < nodes.length; t++) {
		var title = null;
		if(nodes[t].getAttribute)
			title = nodes[t].getAttribute("title"); // TW 2.2+
		if(!title && nodes[t].getAttribute)
			title = nodes[t].getAttribute("tiddler"); // TW 2.1.x
		if(!title && nodes[t].id && (nodes[t].id.substr(0,5) == "store"))
			title = nodes[t].id.substr(5); // TW 1.2.x
		if(title && title != "")
			tiddlers.push((new Tiddler()).loadFromDiv(nodes[t],title));
	}
	return tiddlers;
}

// // FORWARD-COMPATIBLE SUPPORT FOR TW2.1.x
// // enables reading tiddler definitions using TW2.2+ storeArea format, even when plugin is running under TW2.1.x
if (typeof TW21Loader!="undefined") {
TW21Loader.prototype.internalizeTiddler = function(store,tiddler,title,node) {
	var e = node.firstChild;
	var text = null;
	if(node.getAttribute("tiddler"))
		text = getNodeText(e).unescapeLineBreaks();
	else {
		while(e.nodeName!="PRE" && e.nodeName!="pre") e = e.nextSibling;
		text = e.innerHTML.replace(/\r/mg,"").htmlDecode();
	}
	var modifier = node.getAttribute("modifier");
	var c = node.getAttribute("created");
	var m = node.getAttribute("modified");
	var created = c ? Date.convertFromYYYYMMDDHHMM(c) : version.date;
	var modified = m ? Date.convertFromYYYYMMDDHHMM(m) : created;
	var tags = node.getAttribute("tags");
	var fields = {};
	var attrs = node.attributes;
	for(var i = attrs.length-1; i >= 0; i--) {
		var name = attrs[i].name;
		if (attrs[i].specified && !TiddlyWiki.isStandardField(name))
			fields[name] = attrs[i].value.unescapeLineBreaks();
		
	}
	tiddler.assign(title,text,modifier,modified,tags,created,fields);
	return tiddler;
};
}

// FORWARD-COMPATIBLE SUPPORT FOR TW2.0.x and TW1.2.x
// enables reading tiddler definitions using TW2.2+ storeArea format, even when plugin is running under TW2.0.x or TW1.2.x
if (typeof Tiddler.prototype.loadFromDiv!="undefined") {
Tiddler.prototype.loadFromDiv = function(node,title) { // Load a tiddler from an HTML DIV
	var e = node.firstChild;
	var text = null;
	if(node.getAttribute("tiddler")) {
		// get merged text from adjacent text nodes
		var t=""; while(e&&e.nodeName=="#text") { t+=e.nodeValue; e=e.nextSibling; }
		text = Tiddler.unescapeLineBreaks(t);
	} else {
		while(e.nodeName!="PRE" && e.nodeName!="pre") e = e.nextSibling;
		text = e.innerHTML.replace(/\r/mg,"").htmlDecode();
	}
	var modifier = node.getAttribute("modifier");
	var c = node.getAttribute("created");
	var m = node.getAttribute("modified");
	var created = c ? Date.convertFromYYYYMMDDHHMM(c) : version.date;
	var modified = m ? Date.convertFromYYYYMMDDHHMM(m) : created;
	var tags = node.getAttribute("tags");
	this.set(title,text,modifier,modified,tags,created);
	return this;
}
}

} // END OF pre-TW2.2 backward-compatibility functions
//}}}
On Montag, 14. Juni 2010 16:42:58, FlyHein imported 1 tiddler from
[[http://www.tiddlywikihandbuch.de/tiddlywikihandbuch.html|http://www.tiddlywikihandbuch.de/tiddlywikihandbuch.html]]:
<<<
#[[PublicMacro]] - added
<<<

----
On Dienstag, 18. Mai 2010 10:31:10, FlyHein imported 5 tiddlers from
[[http://www.tiddlytools.com/|http://www.tiddlytools.com/]]:
<<<
#[[SetTiddlerHeight]] - added
#[[ToggleFullScreen]] - added
#[[ToggleScrollingSidebars]] - added
#[[ToggleSiteTitles]] - added
#[[ToggleTiddlerTags]] - added
<<<
H. Wolfering
Helene Weber Str.40
48691 Vreden

Haftungsausschluss (Disclaimer)

Haftung für Inhalte

Die Inhalte unserer Seiten wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen.

Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht verpflichtet, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. Verpflichtungen zur Entfernung oder Sperrung der Nutzung von Informationen nach den allgemeinen Gesetzen bleiben hiervon unberührt. Eine diesbezügliche Haftung ist jedoch erst ab dem Zeitpunkt der Kenntnis einer konkreten Rechtsverletzung möglich. Bei bekannt werden von entsprechenden Rechtsverletzungen werden wir diese Inhalte umgehend entfernen.

Haftung für Links

Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. Die verlinkten Seiten wurden zum Zeitpunkt der Verlinkung auf mögliche Rechtsverstöße überprüft. Rechtswidrige Inhalte waren zum Zeitpunkt der Verlinkung nicht erkennbar. Eine permanente inhaltliche Kontrolle der verlinkten Seiten ist jedoch ohne konkrete Anhaltspunkte einer Rechtsverletzung nicht zumutbar. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Links umgehend entfernen.

Urheberrecht

Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. Downloads und Kopien dieser Seite sind nur für den privaten, nicht kommerziellen Gebrauch gestattet. Soweit die Inhalte auf dieser Seite nicht vom Betreiber erstellt wurden, werden die Urheberrechte Dritter beachtet. Insbesondere werden Inhalte Dritter als solche gekennzeichnet. Sollten Sie trotzdem auf eine Urheberrechtsverletzung aufmerksam werden, bitten wir um einen entsprechenden Hinweis. Bei Bekanntwerden von Rechtsverletzungen werden wir derartige Inhalte umgehend entfernen.

Datenschutz

Die Nutzung unserer Webseite ist in der Regel ohne Angabe personenbezogener Daten möglich. Soweit auf unseren Seiten personenbezogene Daten (beispielsweise Name, Anschrift oder eMail-Adressen) erhoben werden, erfolgt dies, soweit möglich, stets auf freiwilliger Basis. Diese Daten werden ohne Ihre ausdrückliche Zustimmung nicht an Dritte weitergegeben.

Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich.

Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten durch Dritte zur Übersendung von nicht ausdrücklich angeforderter Werbung und Informationsmaterialien wird hiermit ausdrücklich widersprochen. Die Betreiber der Seiten behalten sich ausdrücklich rechtliche Schritte im Falle der unverlangten Zusendung von Werbeinformationen, etwa durch Spam-Mails, vor.
!Inbetriebnahme und Bedienhinweise
# Anschluss an die StromVersorgung
# MenueStruktur
# [[Funktion der 4 Tasten|Tastatur]]
# [[Kombinierte Tastenaktionen|Tastatur]]
# [[Automatischer Start beim Anstecken eines Akkus|AutoStart]]
# [[Einstellen von Listenparametern|ListenParameter]]
# [[Einstellen von Zahlenparametern|ZahlenParameter]]
# [[Kontrolle der vorgenommenen Einstellungen|Kontrolle]]
!Infomenü
Wenn im [[Lade-|LadeMenue]] oder [[Entlademenue|Entladen]] die [[ENTER|Tastatur]]-Taste gedrückt wird sind weitere Informationen abrufbar, während im Hintergrund das Laden oder Entladen weiterläuft.
* Oben links wird der aktuelle Akkuausgang angezeigt
* Mit [[ENTER|Tastatur]] wird der laufende Vorgang beendet
* Mit [[ESC|Tastatur]] geht es zurück zum Lade- oder Entlademenü
* Mit [[UP/DN|Tastatur]] wird innerhalb der folgenden Anzeigen geblättert
!!Im Stillstand - Akkuspannung [V] und VersorgungsSpannung [V]
|bgcolor(#dddddd):1 &nbsp;&nbsp;Akku     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;23.45|
|bgcolor(#dddddd):Versorg  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12.35|
!!Im Lauf - Leistung [W] und VersorgungsSpannung [V]
|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;145.3|
|bgcolor(#dddddd):Versorg  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12.35|
!!InnenWiderstand einer Akkuzelle [mOhm]
*Der Wert wird bei ~NiXX Akkus im Automatiklade[[programm|Programm]] berechnet, ansonsten Anzeige 000. Akkutemperatur [°Celsius], ohne TemperaturSensor wird 00 angezeigt.
|bgcolor(#dddddd):1 &nbsp;&nbsp;~Zellen-Ri  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;000|
|bgcolor(#dddddd):Temperatur  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;00|
!!Einzelspannungsanzeige [mV] der Zellen 1-6 bei angeschlossenem [[Balancer]].
*Zellen die gerade balanciert werden sind mit einem * markiert. Nicht vorhandene Zellen werden mit 0000 angezeigt.
|bgcolor(#dddddd):1 4123&nbsp;&nbsp;*4128 &nbsp;&nbsp;4121|
|bgcolor(#dddddd):&nbsp;&nbsp;*4129 &nbsp;&nbsp;0000 &nbsp;&nbsp;0000|
*Einzelspannungsanzeige der Zellen 7-12
|bgcolor(#dddddd):1 0000 &nbsp;&nbsp;0000 &nbsp;&nbsp;0000|
|bgcolor(#dddddd):&nbsp;&nbsp;&nbsp;0000 &nbsp;&nbsp;0000 &nbsp;&nbsp;0000|
*Anzeige der Zyklusdaten (eingeladene und entnommene Ladungsmengen):
|bgcolor(#dddddd):1 ZYKLEN|
|bgcolor(#dddddd):Z1 &nbsp;&nbsp;+02184 &nbsp;&nbsp;–01988|
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.5|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2009.04.11 [1.9.5] pass current tiddler object into wrapper code so it can be referenced from within 'onclick' scripts
2009.02.26 [1.9.4] in $(), handle leading '#' on ID for compatibility with JQuery syntax
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 5, date: new Date(2009,4,11)};

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

	handler: function(w) {
		var lookaheadRegExp = new RegExp(this.lookahead,"mg");
		lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			var src=lookaheadMatch[1];
			var label=lookaheadMatch[2];
			var tip=lookaheadMatch[3];
			var key=lookaheadMatch[4];
			var show=lookaheadMatch[5];
			var code=lookaheadMatch[6];
			if (src) { // external script library
				var script = document.createElement("script"); script.src = src;
				document.body.appendChild(script); document.body.removeChild(script);
			}
			if (code) { // inline code
				if (show) // display source in tiddler
					wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
				if (label) { // create 'onclick' command link
					var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
					var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
					link.code="function _out(place,tiddler){"+fixup+"\n};_out(this,this.tiddler);"
					link.tiddler=w.tiddler;
					link.onclick=function(){
						this.bufferedHTML="";
						try{ var r=eval(this.code);
							if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)
								var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);
							if(this.bufferedHTML.length)
								s.innerHTML=this.bufferedHTML;
							if((typeof(r)==="string")&&r.length) {
								wikify(r,s,null,this.tiddler);
								return false;
							} else return r!==undefined?r:false;
						} catch(e){alert(e.description||e.toString());return false;}
					};
					link.setAttribute("title",tip||"");
					var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
					URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
					URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
					link.setAttribute("href",URIcode);
					link.style.cursor="pointer";
					if (key) link.accessKey=key.substr(0,1); // single character only
				}
				else { // run script immediately
					var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
					var c="function _out(place,tiddler){"+fixup+"\n};_out(w.output,w.tiddler);";
					try	 { var out=eval(c); }
					catch(e) { out=e.description?e.description:e.toString(); }
					if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
				}
			}
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
		}
	}
} )
//}}}

// // Backward-compatibility for TW2.1.x and earlier
//{{{
if (typeof(wikifyPlainText)=="undefined") window.wikifyPlainText=function(text,limit,tiddler) {
	if(limit > 0) text = text.substr(0,limit);
	var wikifier = new Wikifier(text,formatter,null,tiddler);
	return wikifier.wikifyPlain();
}
//}}}

// // GLOBAL FUNCTION: $(...) -- 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=='undefined') { function $(id) { return document.getElementById(id.replace(/^#/,'')); } }
//}}}
!Innenwiderstand bei Akkus
Ein Akku speichert seine Energie chemisch, im Gegensatz z.B. zu einem Kondensator, der elektrische Ladungen sammelt. Die chemische Reaktion verläuft nicht verlustfrei; die Ionen, die durch den Elektrolyten wandern, verrichten mechanische Arbeit. Diese Verluste bewirken, abhängig von der Güte der ablaufenden Reaktion, einen Abfall der Reaktionsspannung, was nach dem ohmschen Gesetz einen Widerstand darstellt, den Innenwiderstand Ri.
Der Innenwiderstand bestimmt wesentlich die Leistungsfähigkeit eines Akkus. Im Modellbaubereich verwenden wir Akkus mit möglichst niedrigem Innenwiderstand und damit geringen Eigenverlusten. Durch das sog. Pushen wird bei ~NIxx-Akkus der Ri noch im Auslieferungszustand gesenkt.
!!Innenwiderstand als Kenngröße
Der Innenwiderstand einer Akkuzelle ist nicht konstant, sondern hängt von der Bauform und der verfügbaren Reaktionsmasse, d.h. dem Ladezustand ab. Da die Messung bei leerem Akku keinen Sinn macht, wird der Ri als Kenngröße bei voller Ladung angegeben.
!!Innenwiderstand und Alterung
Die chemischen und physikalischen Eigenschaften von Anode und Kathode des Akkus verändern sich über seine Lebensdauer. Dabei spielen mehrere Effekte eine Rolle, unter anderem die Migration (ionisiertes Material aus der Anode wandert in die Kathode und umgekehrt), die durch die Bauform (z.B. an Kanten) bedingten Potenzialunterschiede und dadurch ungleichmäßige Umwandlung der Reaktionsmasse und noch einige mehr. Diese Effekte bewirken, dass die Reaktionsgüte über die Lebensdauer eines Akkus abnimmt, was sich in einer Zunahme des Innenwiderstands äußert.
----
Quelle: [[RC-Network|http://wiki.rc-network.de/Innenwiderstand]]
/***
|''Name:''|IntelliTaggerPlugin|
|''Version:''|1.0.2 (2007-07-25)|
|''Type:''|plugin|
|''Source:''|http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin|
|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|
|''Documentation:''|[[IntelliTaggerPlugin Documentation]]|
|''~SourceCode:''|[[IntelliTaggerPlugin SourceCode]]|
|''Licence:''|[[BSD open source license (abego Software)]]|
|''~CoreVersion:''|2.0.8|
|''Browser:''|Firefox 1.5.0.2 or better|
***/
/***
!Version History
* 1.0.2 (2007-07-25): 
** Feature: "Return" key may be used to accept first tag suggestion (beside "Alt-1")
** Bugfix: Keyboard shortcuts (Alt+3 etc.) shifted
* 1.0.1 (2007-05-18): Improvement: Speedup when using TiddlyWikis with many tags
* 1.0.<a href="#" telno="020060426" class="FB_Addon_TelNo" style="text-decoration: underline; color: rgb(0, 0, 0); background-color: rgb(255, 255, 0); -moz-border-radius: 1px 1px 1px 1px;">0 (2006-04-26</a>): Initial release

***/
// /%
if(!version.extensions.IntelliTaggerPlugin){if(!window.abego){window.abego={};}if(!abego.internal){abego.internal={};}abego.alertAndThrow=function(s){alert(s);throw s;};if(version.major<2){abego.alertAndThrow("Use TiddlyWiki 2.0.8 or better to run the IntelliTagger Plugin.");}version.extensions.IntelliTaggerPlugin={major:1,minor:0,revision:2,date:new Date(2007,6,25),type:"plugin",source:"http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin",documentation:"[[IntelliTaggerPlugin Documentation]]",sourcecode:"[[IntelliTaggerPlugin SourceCode]]",author:"Udo Borkowski (ub [at] abego-software [dot] de)",licence:"[[BSD open source license (abego Software)]]",tiddlywiki:"Version 2.0.8 or better",browser:"Firefox 1.5.0.2 or better"};abego.createEllipsis=function(_2){var e=createTiddlyElement(_2,"span");e.innerHTML="&hellip;";};abego.isPopupOpen=function(_4){return _4&&_4.parentNode==document.body;};abego.openAsPopup=function(_5){if(_5.parentNode!=document.body){document.body.appendChild(_5);}};abego.closePopup=function(_6){if(abego.isPopupOpen(_6)){document.body.removeChild(_6);}};abego.getWindowRect=function(){return {left:findScrollX(),top:findScrollY(),height:findWindowHeight(),width:findWindowWidth()};};abego.moveElement=function(_7,_8,_9){_7.style.left=_8+"px";_7.style.top=_9+"px";};abego.centerOnWindow=function(_a){if(_a.style.position!="absolute"){throw "abego.centerOnWindow: element must have absolute position";}var _b=abego.getWindowRect();abego.moveElement(_a,_b.left+(_b.width-_a.offsetWidth)/2,_b.top+(_b.height-_a.offsetHeight)/2);};abego.isDescendantOrSelf=function(_c,e){while(e){if(_c==e){return true;}e=e.parentNode;}return false;};abego.toSet=function(_e){var _f={};for(var i=0;i<_e.length;i++){_f[_e[i]]=true;}return _f;};abego.filterStrings=function(_11,_12,_13){var _14=[];for(var i=0;i<_11.length&&(_13===undefined||_14.length<_13);i++){var s=_11[i];if(s.match(_12)){_14.push(s);}}return _14;};abego.arraysAreEqual=function(a,b){if(!a){return !b;}if(!b){return false;}var n=a.length;if(n!=b.length){return false;}for(var i=0;i<n;i++){if(a[i]!=b[i]){return false;}}return true;};abego.moveBelowAndClip=function(_1b,_1c){if(!_1c){return;}var _1d=findPosX(_1c);var _1e=findPosY(_1c);var _1f=_1c.offsetHeight;var _20=_1d;var _21=_1e+_1f;var _22=findWindowWidth();if(_22<_1b.offsetWidth){_1b.style.width=(_22-100)+"px";}var _23=_1b.offsetWidth;if(_20+_23>_22){_20=_22-_23-30;}if(_20<0){_20=0;}_1b.style.left=_20+"px";_1b.style.top=_21+"px";_1b.style.display="block";};abego.compareStrings=function(a,b){return (a==b)?0:(a<b)?-1:1;};abego.sortIgnoreCase=function(arr){var _27=[];var n=arr.length;for(var i=0;i<n;i++){var s=arr[i];_27.push([s.toString().toLowerCase(),s]);}_27.sort(function(a,b){return (a[0]==b[0])?0:(a[0]<b[0])?-1:1;});for(i=0;i<n;i++){arr[i]=_27[i][1];}};abego.getTiddlerField=function(_2d,_2e,_2f){var _30=document.getElementById(_2d.idPrefix+_2e);var e=null;if(_30!=null){var _32=_30.getElementsByTagName("*");for(var t=0;t<_32.length;t++){var c=_32[t];if(c.tagName.toLowerCase()=="input"||c.tagName.toLowerCase()=="textarea"){if(!e){e=c;}if(c.getAttribute("edit")==_2f){e=c;}}}}return e;};abego.setRange=function(_35,_36,end){if(_35.setSelectionRange){_35.setSelectionRange(_36,end);var max=0+_35.scrollHeight;var len=_35.textLength;var top=max*_36/len,bot=max*end/len;_35.scrollTop=Math.min(top,(bot+top-_35.clientHeight)/2);}else{if(_35.createTextRange!=undefined){var _3b=_35.createTextRange();_3b.collapse();_3b.moveEnd("character",end);_3b.moveStart("character",_36);_3b.select();}else{_35.select();}}};abego.internal.TagManager=function(){var _3c=null;var _3d=function(){if(_3c){return;}_3c={};store.forEachTiddler(function(_3e,_3f){for(var i=0;i<_3f.tags.length;i++){var tag=_3f.tags[i];var _42=_3c[tag];if(!_42){_42=_3c[tag]={count:0,tiddlers:{}};}_42.tiddlers[_3f.title]=true;_42.count+=1;}});};var _43=TiddlyWiki.prototype.saveTiddler;TiddlyWiki.prototype.saveTiddler=function(_44,_45,_46,_47,_48,_49){var _4a=this.fetchTiddler(_44);var _4b=_4a?_4a.tags:[];var _4c=(typeof _49=="string")?_49.readBracketedList():_49;_43.apply(this,arguments);if(!abego.arraysAreEqual(_4b,_4c)){abego.internal.getTagManager().reset();}};var _4d=TiddlyWiki.prototype.removeTiddler;TiddlyWiki.prototype.removeTiddler=function(_4e){var _4f=this.fetchTiddler(_4e);var _50=_4f&&_4f.tags.length>0;_4d.apply(this,arguments);if(_50){abego.internal.getTagManager().reset();}};this.reset=function(){_3c=null;};this.getTiddlersWithTag=function(tag){_3d();var _52=_3c[tag];return _52?_52.tiddlers:null;};this.getAllTags=function(_53){_3d();var _54=[];for(var i in _3c){_54.push(i);}for(i=0;_53&&i<_53.length;i++){_54.pushUnique(_53[i],true);}abego.sortIgnoreCase(_54);return _54;};this.getTagInfos=function(){_3d();var _56=[];for(var _57 in _3c){_56.push([_57,_3c[_57]]);}return _56;};var _58=function(a,b){var a1=a[1];var b1=b[1];var d=b[1].count-a[1].count;return d!=0?d:abego.compareStrings(a[0].toLowerCase(),b[0].toLowerCase());};this.getSortedTagInfos=function(){_3d();var _5e=this.getTagInfos();_5e.sort(_58);return _5e;};this.getPartnerRankedTags=function(_5f){var _60={};for(var i=0;i<_5f.length;i++){var _62=this.getTiddlersWithTag(_5f[i]);for(var _63 in _62){var _64=store.getTiddler(_63);if(!(_64 instanceof Tiddler)){continue;}for(var j=0;j<_64.tags.length;j++){var tag=_64.tags[j];var c=_60[tag];_60[tag]=c?c+1:1;}}}var _68=abego.toSet(_5f);var _69=[];for(var n in _60){if(!_68[n]){_69.push(n);}}_69.sort(function(a,b){var d=_60[b]-_60[a];return d!=0?d:abego.compareStrings(a.toLowerCase(),b.toLowerCase());});return _69;};};abego.internal.getTagManager=function(){if(!abego.internal.gTagManager){abego.internal.gTagManager=new abego.internal.TagManager();}return abego.internal.gTagManager;};(function(){var _6e=2;var _6f=1;var _70=30;var _71;var _72;var _73;var _74;var _75;var _76;if(!abego.IntelliTagger){abego.IntelliTagger={};}var _77=function(){return _72;};var _78=function(tag){return _75[tag];};var _7a=function(s){var i=s.lastIndexOf(" ");return (i>=0)?s.substr(0,i):"";};var _7d=function(_7e){var s=_7e.value;var len=s.length;return (len>0&&s[len-1]!=" ");};var _81=function(_82){var s=_82.value;var len=s.length;if(len>0&&s[len-1]!=" "){_82.value+=" ";}};var _85=function(tag,_87,_88){if(_7d(_87)){_87.value=_7a(_87.value);}story.setTiddlerTag(_88.title,tag,0);_81(_87);abego.IntelliTagger.assistTagging(_87,_88);};var _89=function(n){if(_76&&_76.length>n){return _76[n];}return (_74&&_74.length>n)?_74[n]:null;};var _8b=function(n,_8d,_8e){var _8f=_89(n);if(_8f){_85(_8f,_8d,_8e);}};var _90=function(_91){var pos=_91.value.lastIndexOf(" ");var _93=(pos>=0)?_91.value.substr(++pos,_91.value.length):_91.value;return new RegExp(_93.escapeRegExp(),"i");};var _94=function(_95,_96){var _97=0;for(var i=0;i<_95.length;i++){if(_96[_95[i]]){_97++;}}return _97;};var _99=function(_9a,_9b,_9c){var _9d=1;var c=_9a[_9b];for(var i=_9b+1;i<_9a.length;i++){if(_9a[i][1].count==c){if(_9a[i][0].match(_9c)){_9d++;}}else{break;}}return _9d;};var _a0=function(_a1,_a2){var _a3=abego.internal.getTagManager().getSortedTagInfos();var _a4=[];var _a5=0;for(var i=0;i<_a3.length;i++){var c=_a3[i][1].count;if(c!=_a5){if(_a2&&(_a4.length+_99(_a3,i,_a1)>_a2)){break;}_a5=c;}if(c==1){break;}var s=_a3[i][0];if(s.match(_a1)){_a4.push(s);}}return _a4;};var _a9=function(_aa,_ab){return abego.filterStrings(abego.internal.getTagManager().getAllTags(_ab),_aa);};var _ac=function(){if(!_71){return;}var _ad=store.getTiddlerText("IntelliTaggerMainTemplate");if(!_ad){_ad="<b>Tiddler IntelliTaggerMainTemplate not found</b>";}_71.innerHTML=_ad;applyHtmlMacros(_71,null);refreshElements(_71,null);};var _ae=function(e){if(!e){var e=window.event;}var tag=this.getAttribute("tag");if(_73){_73.call(this,tag,e);}return false;};var _b2=function(_b3){createTiddlyElement(_b3,"span",null,"tagSeparator"," | ");};var _b4=function(_b5,_b6,_b7,_b8,_b9){if(!_b6){return;}var _ba=_b8?abego.toSet(_b8):{};var n=_b6.length;var c=0;for(var i=0;i<n;i++){var tag=_b6[i];if(_ba[tag]){continue;}if(c>0){_b2(_b5);}if(_b9&&c>=_b9){abego.createEllipsis(_b5);break;}c++;var _bf="";var _c0=_b5;if(_b7<10){_c0=createTiddlyElement(_b5,"span",null,"numberedSuggestion");_b7++;var key=_b7<10?""+(_b7):"0";createTiddlyElement(_c0,"span",null,"suggestionNumber",key+") ");var _c2=_b7==1?"Return or ":"";_bf=" (Shortcut: %1Alt-%0)".format([key,_c2]);}var _c3=config.views.wikified.tag.tooltip.format([tag]);var _c4=(_78(tag)?"Remove tag '%0'%1":"Add tag '%0'%1").format([tag,_bf]);var _c5="%0; Shift-Click: %1".format([_c4,_c3]);var btn=createTiddlyButton(_c0,tag,_c5,_ae,_78(tag)?"currentTag":null);btn.setAttribute("tag",tag);}};var _c7=function(){if(_71){window.scrollTo(0,ensureVisible(_71));}if(_77()){window.scrollTo(0,ensureVisible(_77()));}};var _c8=function(e){if(!e){var e=window.event;}if(!_71){return;}var _cb=resolveTarget(e);if(_cb==_77()){return;}if(abego.isDescendantOrSelf(_71,_cb)){return;}abego.IntelliTagger.close();};addEvent(document,"click",_c8);var _cc=Story.prototype.gatherSaveFields;Story.prototype.gatherSaveFields=function(e,_ce){_cc.apply(this,arguments);var _cf=_ce.tags;if(_cf){_ce.tags=_cf.trim();}};var _d0=function(_d1){story.focusTiddler(_d1,"tags");var _d2=abego.getTiddlerField(story,_d1,"tags");if(_d2){var len=_d2.value.length;abego.setRange(_d2,len,len);window.scrollTo(0,ensureVisible(_d2));}};var _d4=config.macros.edit.handler;config.macros.edit.handler=function(_d5,_d6,_d7,_d8,_d9,_da){_d4.apply(this,arguments);var _db=_d7[0];if((_da instanceof Tiddler)&&_db=="tags"){var _dc=_d5.lastChild;_dc.onfocus=function(e){abego.IntelliTagger.assistTagging(_dc,_da);setTimeout(function(){_d0(_da.title);},100);};_dc.onkeyup=function(e){if(!e){var e=window.event;}if(e.altKey&&!e.ctrlKey&&!e.metaKey&&(e.keyCode>=48&&e.keyCode<=57)){_8b(e.keyCode==48?9:e.keyCode-49,_dc,_da);}else{if(e.ctrlKey&&e.keyCode==32){_8b(0,_dc,_da);}}if(!e.ctrlKey&&(e.keyCode==13||e.keyCode==10)){_8b(0,_dc,_da);}setTimeout(function(){abego.IntelliTagger.assistTagging(_dc,_da);},100);return false;};_81(_dc);}};var _e0=function(e){if(!e){var e=window.event;}var _e3=resolveTarget(e);var _e4=_e3.getAttribute("tiddler");if(_e4){story.displayTiddler(_e3,_e4,"IntelliTaggerEditTagsTemplate",false);_d0(_e4);}return false;};var _e5=config.macros.tags.handler;config.macros.tags.handler=function(_e6,_e7,_e8,_e9,_ea,_eb){_e5.apply(this,arguments);abego.IntelliTagger.createEditTagsButton(_eb,createTiddlyElement(_e6.lastChild,"li"));};var _ec=function(){if(_71&&_72&&!abego.isDescendantOrSelf(document,_72)){abego.IntelliTagger.close();}};setInterval(_ec,100);abego.IntelliTagger.displayTagSuggestions=function(_ed,_ee,_ef,_f0,_f1){_74=_ed;_75=abego.toSet(_ee);_76=_ef;_72=_f0;_73=_f1;if(!_71){_71=createTiddlyElement(document.body,"div",null,"intelliTaggerSuggestions");_71.style.position="absolute";}_ac();abego.openAsPopup(_71);if(_77()){var w=_77().offsetWidth;if(_71.offsetWidth<w){_71.style.width=(w-2*(_6e+_6f))+"px";}abego.moveBelowAndClip(_71,_77());}else{abego.centerOnWindow(_71);}_c7();};abego.IntelliTagger.assistTagging=function(_f3,_f4){var _f5=_90(_f3);var s=_f3.value;if(_7d(_f3)){s=_7a(s);}var _f7=s.readBracketedList();var _f8=_f7.length>0?abego.filterStrings(abego.internal.getTagManager().getPartnerRankedTags(_f7),_f5,_70):_a0(_f5,_70);abego.IntelliTagger.displayTagSuggestions(_a9(_f5,_f7),_f7,_f8,_f3,function(tag,e){if(e.shiftKey){onClickTag.call(this,e);}else{_85(tag,_f3,_f4);}});};abego.IntelliTagger.close=function(){abego.closePopup(_71);_71=null;return false;};abego.IntelliTagger.createEditTagsButton=function(_fb,_fc,_fd,_fe,_ff,id,_101){if(!_fd){_fd="[edit]";}if(!_fe){_fe="Edit the tags";}if(!_ff){_ff="editTags";}var _102=createTiddlyButton(_fc,_fd,_fe,_e0,_ff,id,_101);_102.setAttribute("tiddler",(_fb instanceof Tiddler)?_fb.title:String(_fb));return _102;};abego.IntelliTagger.getSuggestionTagsMaxCount=function(){return 100;};config.macros.intelliTagger={label:"intelliTagger",handler:function(_103,_104,_105,_106,_107,_108){var _109=_107.parseParams("list",null,true);var _10a=_109[0]["action"];for(var i=0;_10a&&i<_10a.length;i++){var _10c=_10a[i];var _10d=config.macros.intelliTagger.subhandlers[_10c];if(!_10d){abego.alertAndThrow("Unsupported action '%0'".format([_10c]));}_10d(_103,_104,_105,_106,_107,_108);}},subhandlers:{showTags:function(_10e,_10f,_110,_111,_112,_113){_b4(_10e,_74,_76?_76.length:0,_76,abego.IntelliTagger.getSuggestionTagsMaxCount());},showFavorites:function(_114,_115,_116,_117,_118,_119){_b4(_114,_76,0);},closeButton:function(_11a,_11b,_11c,_11d,_11e,_11f){var _120=createTiddlyButton(_11a,"close","Close the suggestions",abego.IntelliTagger.close);},version:function(_121){var t="IntelliTagger %0.%1.%2".format([version.extensions.IntelliTaggerPlugin.major,version.extensions.IntelliTaggerPlugin.minor,version.extensions.IntelliTaggerPlugin.revision]);var e=createTiddlyElement(_121,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">"+t+"<font>";},copyright:function(_124){var e=createTiddlyElement(_124,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">&copy; 2006-2007 <b><font color=\"red\">abego</font></b> Software<font>";}}};})();config.shadowTiddlers["IntelliTaggerStyleSheet"]="/***\n"+"!~IntelliTagger Stylesheet\n"+"***/\n"+"/*{{{*/\n"+".intelliTaggerSuggestions {\n"+"\tposition: absolute;\n"+"\twidth: 600px;\n"+"\n"+"\tpadding: 2px;\n"+"\tlist-style: none;\n"+"\tmargin: 0;\n"+"\n"+"\tbackground: #eeeeee;\n"+"\tborder: 1px solid DarkGray;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .currentTag   {\n"+"\tfont-weight: bold;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .suggestionNumber {\n"+"\tcolor: #808080;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .numberedSuggestion{\n"+"\twhite-space: nowrap;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .intelliTaggerFooter {\n"+"\tmargin-top: 4px;\n"+"\tborder-top-width: thin;\n"+"\tborder-top-style: solid;\n"+"\tborder-top-color: #999999;\n"+"}\n"+".intelliTaggerSuggestions .favorites {\n"+"\tborder-bottom-width: thin;\n"+"\tborder-bottom-style: solid;\n"+"\tborder-bottom-color: #999999;\n"+"\tpadding-bottom: 2px;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .normalTags {\n"+"\tpadding-top: 2px;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .intelliTaggerFooter .button {\n"+"\tfont-size: 10px;\n"+"\n"+"\tpadding-left: 0.3em;\n"+"\tpadding-right: 0.3em;\n"+"}\n"+"\n"+"/*}}}*/\n";config.shadowTiddlers["IntelliTaggerMainTemplate"]="<!--\n"+"{{{\n"+"-->\n"+"<div class=\"favorites\" macro=\"intelliTagger action: showFavorites\"></div>\n"+"<div class=\"normalTags\" macro=\"intelliTagger action: showTags\"></div>\n"+"<!-- The Footer (with the Navigation) ============================================ -->\n"+"<table class=\"intelliTaggerFooter\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tbody>\n"+"  <tr>\n"+"\t<td align=\"left\">\n"+"\t\t<span macro=\"intelliTagger action: closeButton\"></span>\n"+"\t</td>\n"+"\t<td align=\"right\">\n"+"\t\t<span macro=\"intelliTagger action: version\"></span>, <span macro=\"intelliTagger action: copyright \"></span>\n"+"\t</td>\n"+"  </tr>\n"+"</tbody></table>\n"+"<!--\n"+"}}}\n"+"-->\n";config.shadowTiddlers["IntelliTaggerEditTagsTemplate"]="<!--\n"+"{{{\n"+"-->\n"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\n"+"<div class='title' macro='view title'></div>\n"+"<div class='tagged' macro='tags'></div>\n"+"<div class='viewer' macro='view text wikified'></div>\n"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\n"+"<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>\n"+"<!--\n"+"}}}\n"+"-->\n";config.shadowTiddlers["BSD open source license (abego Software)"]="See [[Licence|http://tiddlywiki.abego-software.de/#%5B%5BBSD%20open%20source%20license%5D%5D]].";config.shadowTiddlers["IntelliTaggerPlugin Documentation"]="[[Documentation on abego Software website|http://tiddlywiki.abego-software.de/doc/IntelliTagger.pdf]].";config.shadowTiddlers["IntelliTaggerPlugin SourceCode"]="[[Plugin source code on abego Software website|http://tiddlywiki.abego-software.de/archive/IntelliTaggerPlugin/Plugin-IntelliTagger-src.1.0.2.js]]\n";(function(){var _126=restart;restart=function(){setStylesheet(store.getTiddlerText("IntelliTaggerStyleSheet"),"IntelliTaggerStyleSheet");_126.apply(this,arguments);};})();}
// %/
/***
|''Name:''|IntelliTagsEditCommandPlugin|
|''Version:''|1.0.<a href="#" telno="020071003" class="FB_Addon_TelNo" style="text-decoration: underline; color: rgb(0, 0, 0); background-color: rgb(255, 255, 0); -moz-border-radius: 1px 1px 1px 1px;">0 (2007-10-03</a>)|
|''Type:''|plugin|
|''Description:''|A command for your tiddler's toolbar to directly edit the tiddler's tags using the IntelliTaggerPlugin, without switching to "edit mode".|
|''Source:''|http://tiddlywiki.abego-software.de/#IntelliTagsEditCommandPlugin|
|''Requires:''|IntelliTaggerPlugin http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin|
|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)]]|
|''~CoreVersion:''|2.0.8|
|''Browser:''|Firefox 1.5.0.2 or better|
***/
/***
!Using the "IntelliTagsEditCommandPlugin"
Add the command {{{intelliTagsEdit}}} into the 'macro' attribute of the 'toolbar' {{{<div...>}}} in your ViewTemplate.

''Example:''
{{{
<div class='toolbar' 
        macro='toolbar -closeTiddler closeOthers +editTiddler intelliTagsEdit permalink references jump'>
</div>
}}}

This adds a "tags" button to the toolbar of the tiddlers (next to the ''edit'' button). Pressing the "tags" button will open the input field for the tiddler's tags and let you edit the tags with all the [[IntelliTaggerPlugin|http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin]] features.
***/
/***
!Source Code
***/
//{{{
(function(){

if (!version.extensions.IntelliTaggerPlugin)
    throw Error("IntelliTagsEditCommandPlugin requires the IntelliTaggerPlugin (http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin)");

if (config.commands.intelliTagsEdit) 
    return;

config.commands.intelliTagsEdit = {
	text: "tags",
	tooltip: "edit the tags"
};

config.commands.intelliTagsEdit.handler = function(event,src,title) {
	var button = abego.IntelliTagger.createEditTagsButton(title, null, "tags", "edit the tags");
	button.onclick(event);
	return false;
};

})();
//}}}
!Kalibrierung allgemein
|bgcolor(#dddddd):SERVICE &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
|bgcolor(#dddddd):Kalibrierung|
In diesem passwortgeschützten Menü erfolgt die Kalibrierung für alle Strom- und Spannungsmessungen. Der Vorgang ist in der [[Bauanleitung]] ausführlich beschrieben.
!!Einstellen der Nennkapazität des Akkus
Mit dem AkkuParameter "Kapaz" wird die NennKapazität des Akkus vorgegeben.
|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;AkkuParameter|
|bgcolor(#dddddd):Kapaz  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;00.000Ah|
!Kontrolle der vorgenommenen Einstellungen
Die Steuersoftware prüft während der Eingabe und beim Start die Plausibilität ''(soweit möglich)'' der vom Bediener vorgegebenen Parameter. Außerdem wird automatisch eine Überlastung des Gerätes durch verschiedene Schutzmechanismen verhindert.
Trotzdem gibt es mögliche Fehlbedienungen, die vom Gerät ''NICHT'' erkannt werden können. Ein typisches Beispiel ist etwa die Vorgabe eines falschen Akkutyps.
Deshalb ''__vor Programmstart immer die aktuellen Einstellungen kontrollieren__'', um eine Beschädigung des angeschlossenen Akkus zu vermeiden.
[img[Bild|http://www.akkumatiki.de/bilder/AM_l+e.jpg]]
Der Akku wird zunächst ge[[laden|Laden]] und nach einer [[Pause]] [[entladen|Entladen]].
*Mit UP/DN wird die [[Pause]] zwischen [[Entladen]] - [[Laden]] vorzeitig beendet.
!Einstellen der Lademethode
Den AkkuParameter "Ladeart" gibt es ''nur'' für Akku[[ausgang|TechnischeDaten/Ausgang1]]-1 bei AkkuTyp LiXX / NiCd / NiMh.
Er definiert das eingesetzte Ladeverfahren:
<part Normal>
!!~Normal-Laden
|bgcolor(#dddddd):1 AkkuParameter|
|bgcolor(#dddddd):Ladeart   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NORMAL|
Bei Akkutyp NiXX: der Akku wird mit nicht gepulstem Strom geladen
Bei Akkutyp LiXX: am Ladeende wird der Strom kontinuierlich reduziert bis der Akku voll ist
</part>
<part Fast>
!!~Fast-Laden
|bgcolor(#dddddd):1 AkkuParameter|
|bgcolor(#dddddd):Ladeart   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FAST|
Bei Akkutyp LiXX / IUxx wird der Strom am Ladeende nicht reduziert sondern gepulst. Dadurch verkürzt sich die Ladezeit. Im Vergleich zu NORMAL wird etwas weniger Kapazität eingeladen. 
Die Ladeart FAST funktioniert nur wenn der Akku am internen Balancer angeschlossen ist. Andernfalls wird automatisch auf NORMAL umgeschaltet.
</part>
<part Konst>
!!~Konstant-Laden
|bgcolor(#dddddd):1 AkkuParameter|
|bgcolor(#dddddd):Ladeart   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;KONST|
Bei Ladeart KONST wird mit kontinuierlichem (nicht gepulsten) Strom geladen.
</part>
<part Puls>
!!~Puls-Laden
|bgcolor(#dddddd):1 AkkuParameter|
|bgcolor(#dddddd):Ladeart    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PULS|
Bei Ladeart PULS wird mit gepulstem Strom geladen. Das Puls-/Pausenverhältnis ist 600ms/600ms. 
Strom- und Spannungsanzeige zeigen die Werte bei aktivem Ladepuls an. Der Mittelwert des Ladestroms mit Berücksichtigung der Pausen ist nur halb so hoch. Dadurch dauert der Ladevorgang entsprechend länger.
</part>
<part Reflex>
!!~Reflex-Laden
|bgcolor(#dddddd):1 AkkuParameter|
|bgcolor(#dddddd):Ladeart  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;REFLEX|
Bei Ladeart REFLEX wird nach dem Reflexprinzip geladen. Jeder Reflexzyklus besteht aus einem langen Ladepuls, gefolgt von einem kurzen Entladepuls und anschließender stromloser Messung der Akkuspannung.
*Hinweis: Um die Entladestufe beim Reflexladen nicht zu überlasten, schaltet das Gerät bei hoher Ladeleistung automatisch auf Normalladen um.
</part>
!Einstellen der Entlade- / Lademenge (Limiter)
Mit dem AkkuParameter "Menge" kann eine Entlade- bzw. Lademenge vorgegeben werden.
|bgcolor(#dddddd):1 &nbsp;&nbsp; AkkuParameter|
|bgcolor(#dddddd):Menge  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;00.000Ah|
Bei Vorgabe 0 ist der Parameter inaktiv. Er wird nach Programmende automatisch auf den im aktuellen Speicher hinterlegten Wert zurückgesetzt. 

Je nach AkkuTyp und [[Programm]] hat er folgende Bedeutung:
* ''NiCd/NiMh Laden'' mit automatischer [[Vollerkennung]]:
** Limitierung der maximalen Lademenge als __zusätzliche Sicherheit__.
* ''NiCd/NiMh Laden'' ohne automatische [[Vollerkennung]] (Mengenladen):
** Vorgabe der gewünschten Lademenge. Bei Vorgabe 0 wird das 1,4fache der mit dem Parameter „Kapaz“ vorgegebenen Nennkapazität eingeladen.
* ''[[Li36|LiIo]] / [[Li37|LiPo]] / LiFe / IUxx [[Laden]]'':
**Limitierung der Lademenge auf Werte kleiner 1C. <br>Dadurch können Lithiumakkus z.B. vor längerer [[Lagerung|Lagern]] „teilgeladen“ werden. Bei Vorgabe 0 wird der Akku ganz normal voll geladen.
* ''[[Li36|LiIo]] / [[Li37|LiPo]] / LiFe / IUxx [[Entladen]]'':
** Limitierung der Entlademenge auf Werte kleiner 1C im Programm ENTLADEN.<br> Dadurch können Lithiumakkus z.B. vor längerer [[Lagerung|Lagern]] „teilentleert“ werden. Bei Vorgabe 0 wird der Akku bis zur Entladeschlusspannung entladen.
<part BeginnLaden>
!!Beginn des Ladeprogramms
Beim __Starten eines [[Ladevorgangs|Laden]]__ wird während der ersten 15 Sekunden der AkkuTyp und __blinkend__ die ZellenZahl angezeigt. Während dieser Zeit kann bei NiCd/NiMh die ZellenZahl mit UP&#9650;/DN&#9660; korrigiert werden. Bei Anzeige 00 wurde keine ZellenZahl vorgegeben - mit UP&#9650;/DN&#9660; wird auch in diesem Fall die automatisch festgestellte ZellenZahl angezeigt und verändert.

@@Bitte immer kontrollieren, ob der angezeigte Akkutyp stimmt.@@
@@Bei Lithium- und Bleiakkus muss unbedingt auch die richtige ZellenZahl angezeigt werden.@@
| [img[Lademenue|http://www.akkumatiki.de/bilder/AM_lademenue1.jpg]] |
|Hier ist der Beginn des Ladens eines NiMh -Akkus am [[Ausgang-1|TechnischeDaten/Ausgang1]] zu sehen.<br> Die ZellenZahl (blinkende ''00'') muß durch ''UP'' / ''DN'' noch eingestellt werden|
</part>
!!Laufendes Ladeprogramm
Während einer laufenden Ladung sind alle wichtigen Werte auf einen Blick ablesbar:
| [img[Lademenue|http://www.akkumatiki.de/bilder/AM_lademenue2.jpg]] |__Informationen 1. Zeile__<br> ''1'' = [[Ausgang-1|TechnischeDaten/Ausgang1]];<br>''~NL1'' ([[Status|LadeMenue/LadeStatus]]) = Phase 1, [[automatische Abschaltung|automatAbschalt]] noch gesperrt;<br>''7.12V'' = am Akku anliegende Spannung in Volt;<br>''00:17'' = verstrichene Zeit in Minuten (ab 60 Minuten in Stunden);<br>__Informationen 2. Zeile__<br>''+499mA''  = aktueller LadeStrom in mA oder A;<br> ''+0.002'' Ah = bis jetzt eingeladene Ladungsmenge|

*+++*[Ladestatus]
<part LadeStatus>
Der Status ''XXX'' im LadeMenue kann diese Info anzeigen:
* NLM NiCd / NiMh Akku laden mit fest vorgegebener Ladungsmenge
* ~NLx NiCd / NiMh Akku laden mit automatischer [[Abschaltung|AbschaltMethode]]
** x = 1 Phase 1, automatische Abschaltung noch gesperrt
** x = 2 Phase 2, automatische Abschaltung ist jetzt aktiv
** x = 3 Phase 3, Spannungsanstieg wird stärker
** x = 4 Phase 4, Spannungsanstieg wird schwächer
** x = 5 Phase 5, kein Spannungsanstieg, warte auf [[Delta-Peak|AbschaltMethode/Delta-Peak]]
* ~LLx [[Lithiumakku|LiPo]] laden
* ~BLx BleiAkku laden
* ~XLx frei einstellbarer AkkuTyp IUxx laden
** x = 1 Phase 1, Vorkonditionieren (erfolgt nur bei tiefentladenen Akkus)
** x = 2 Phase 2, Laden mit Konstantstrom, Spannung steigt an
** x = 3 Phase 3, Laden mit Konstantspannung, Strom wird reduziert
*** der Vorgang wird durch [[Balancer]]/Equalizer überwacht
</part>
===

*+++*[Tastaturfunktionen]
Die [[Tastatur]] hat im Lademenü diese Funktion:
* Mit UP&#9650;/DN&#9660; ist bei NiCd /NiMh während der ersten 15 Sekunden die ZellenZahl einstellbar.
* Mit UP&#9650;/DN&#9660; ist nach der Anzeige von ZellenZahl und AkkuTyp und der LadeStrom einstellbar.

Der eingestellte Strom wird dann für den restlichen Ladevorgang als Obergrenze verwendet.
* Mit UP&#9650;/DN&#9660; wird die [[Pause]] zwischen [[Entladen]]-[[Laden]] vorzeitig beendet.
* Mit ENTER&#9658; wird das InfoMenue angezeigt.
* Mit nochmaligem ENTER&#9658; wird die laufende Ladung beendet (manueller Stop).
* Mit ESC&#9668; geht’s zurück zum HauptMenue. Dort können z.B. die verwendeten AkkuParameter kontrolliert werden, während der Akku im Hintergrund weiter geladen wird.
* Mit ESC&#9668;+UP&#9650; wird Akku[[Ausgang]]-1 gestartet oder angezeigt.
* Mit ESC&#9668;+DN&#9660; wird Akku[[Ausgang]]-2 gestartet oder angezeigt.
===
Die Ladespannung meint umganssprachlich die Spannung [V] beim [[Laden]] eines Akkus.

!!Ladespannung für
*++++*[Akkutyp IUxx]>
[img[Bild|http://hfranzw.de/Akkumatiki/pics/Akkumatik_046IUxx.jpg]]
Für den AkkuTyp [[IUxx]] wird mit diesem Parameter die maximale LadeSpannung pro Zelle vorgegeben. Nach [[RESET]] ist er mit 3600mV für [[LiFePO4|LiFe]] Akkus vor eingestellt.
Er kann aber auch für spezielle Anwendungen oder neue Akkutechnologien individuell angepasst werden.
===

*++++*[Akkutyp Li36 / Li37]>
<part Ladespann>
[img[Bild|http://hfranzw.de/Akkumatiki/pics/Akkumatik_047Ladespann.jpg]]
Dieser Parameter variiert die LadeSpannung der [[AkkuTyp]]en [[Li36|LiIo]]/[[Li37|LiPo]] in einem Bereich von +/- 50mV zum Idealwert pro Zelle.
Beim Akkutyp [[Li37|LiPo]] gilt beispielsweise:
* 00mV = 4150mV Ladespannung (mit 50mV Sicherheitsreserve pro Zelle)
* 50mV = 4200mV Ladespannung (''Idealwert'')
* 99mV = 4249mV Ladespannung (nur mit Balancer zu empfehlen)
</part>
===
Wird ein Lade[[programm|Programm]] gewählt, muß im Menue AkkuParameter als 9. Parameter die Höhe des[[Ladestrom|I-Lade]]s eingestellt werden.
[img[Bild|http://www.akkumatiki.de/bilder/AM_laden2.jpg]]
<part NiLaden>
!NiMh/NiCd Akkus anhand von Programmierbeispielen laden
Beispiel: NiMh -Akku (3300mAh) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__''vollautomatisch''__ laden +++*[>]>
Mit den Standardwerten (ab Auslieferung/nach [[RESET]]) sind alle Speicher wie folgt voreingestellt und das Laden kann direkt ohne weitere Änderungen gestartet werden. Der [[Ladestrom|I-Lade]] wird entsprechend dem InnenWiderstand des Akkus geregelt und automatisch bei Vollerkennung abgeschaltet.
|AkkuTyp| NiMh |(bzw. NiCd) |
|[[Programm]]| [[Laden]] ||
|LadeArt| NORMAL ([[Konst|LadeArt/Konst]]) |(wahlweise auch [[Puls|LadeArt/Puls]] oder [[Reflex|LadeArt/Reflex]] möglich) |
|[[Stop|AbschaltMethode]]| ~DELTA-PK-2 |(automatische Vollerkennung mit mittlerer [[Delta-Peak|AbschaltMethode/Delta-Peak]]-Verzögerung) |
|[[Strom|StromMethode]]| AUTO |(entsprechend Akku-[[InnenWiderstand]]) |
|[[Menge|LadeEntMenge]]| 0.000Ah |(wahlweise zur Begrenzung der maximalen Ladungsmenge) |
===

Beispiel: NiMh -Akku (3300mAh) mit __''voreingestelltem Strom''__ und __''automatischer Abschaltung''__ laden +++*[>]>
|AkkuTyp| NiMh  |(bzw. NiCd) |
|[[Programm]]| LADEN ||
|LadeArt| NORMAL ([[Konst|LadeArt/Konst]]) |(wahlweise auch [[Puls|LadeArt/Puls]] oder [[Reflex|LadeArt/Reflex]] möglich)|
|[[Stop|AbschaltMethode]]| GRADIENT |(automatische Vollerkennung mit [[Gradientenauswertung|AbschaltMethode/Gradient]])|
|[[Strom|StromMethode]]| FEST |(wird mit I-Lade eingestellt)|
|I-Lade| 4000mA  |(entsprechend gewünschter Ladezeit, nicht unter 1[[C|NennKapazität]])|
|[[Menge|LadeEntMenge]]| 3.800Ah |(wahlweise zur Begrenzung der maximalen Ladungsmenge)|
===

Beispiel: NiMh -Akku (3300mAh) mit __''voreingestelltem Strom''__ und __fester [[Ladungsmenge|LadeEntMenge]]__ laden +++*[>]>
|AkkuTyp| NiMh  |(bzw. NiCd)|
|[[Programm]]| [[LADEN|Laden]] ||
|LadeArt| NORMAL ([[Konst|LadeArt/Konst]]) |(wahlweise auch [[Puls|LadeArt/Puls]] oder [[Reflex|LadeArt/Reflex]] möglich)|
|[[Stop|AbschaltMethode]]| [[LADEMENGE|AbschaltMethode/Lademenge]] |(ohne automatische Vollerkennung, feste Ladungsmenge)|
|I-Lade| 500mA  |(frei wählbar, entsprechend gewünschter Ladezeit)|
|[[Kapaz]]| 3.300Ah  |(entsprechend der Nennkapazität des Akkupacks)|
|[[Menge|LadeEntMenge]]| 4.620Ah |(voreingestellt mit dem 1,4fachen von „Kapaz“, wahlweise änderbar)|
@@''Bei dieser Einstellung muss der Akku zu Beginn leer sein, weil __keine automatische Vollerkennung__ erfolgt.''@@<br>Es wird die mit „Menge“ vorgegebene Ladungsmenge eingeladen.
===
</part>

<part PbLaden>
!Bleiakkus anhand von Programmierbeispielen laden
Beispiel: BleiAkku (6V/5000mAh) laden +++*[>]>
|AkkuTyp| [[BLEI|BleiAkku]]  |(bzw. [[BGEL|BleiAkku]])|
|[[Programm]]| [[LADEN|Laden]] ||
|[[Zellen|ZellenZahl]]| 3  |(3 mal 2V Zellennennspannung = 6V Gesamtnennspannung)|
|[[Kapaz]]| 5.000Ah  |(entsprechend der NennKapazität des Akkus)|
|I-Lade| 2.000mA |(kann wahlweise auch kleiner 1[[C|NennKapazität]] eingestellt werden)|
===

Beispiel: BleiAkku (12V/7000mAh) laden +++*[>]>
|AkkuTyp| [[BLEI|BleiAkku]]  |(bzw. [[BGEL|BleiAkku]])|
|[[Programm]]| [[LADEN|Laden]] ||
|[[Zellen|ZellenZahl]]| 6 |(6 mal 2V Zellennennspannung = 12V Gesamtnennspannung)|
|[[Kapaz]]|7.000Ah |(entsprechend der NennKapazität des Akkus)|
|I-Lade |7.000mA |(kann wahlweise auch kleiner 1[[C|NennKapazität]] eingestellt werden)|
===
</part>

<part LiLaden>
!Lithiumakkus anhand von Programmierbeispielen laden
Beispiel: [[Lithium-Ionen-Akku (LiIo)|LiIo]] (4s1p 14,4V/900mAh) laden +++*[>]>
|AkkuTyp| [[Li36|LiIo]] |(3,6V Zellen[[nennspannung|NennSpannung]])|
|[[Programm]]| [[LADEN|Laden]] ||
|[[Zellen|ZellenZahl]]| 4 |(4 mal 3,6V Zellennennspannung = 14,4V Gesamtnennspannung)|
|[[Kapaz]]| 0.900Ah |(entsprechend der Gesamt-[[Nennkapazität|Kapaz]] des Akkus)|
|I-Lade| 900mA |(kann wahlweise auch kleiner 1[[C|NennKapazität]] eingestellt werden)|
|[[Menge|LadeEntMenge]]| 0.000Ah |(wahlweise zur Begrenzung der maximalen [[Ladungsmenge|Menge]])|
===

Beispiel: [[Lithium-Polymer-Akku (LiPo)|LiPo]] (4s1p 14,8V/900mAh) laden +++*[>]>
|AkkuTyp| [[Li37|LiPo]] |(3,7V Zellen[[nennspannung|NennSpannung]])|
|[[Programm]]| [[LADEN|Laden]] ||
|[[Zellen|ZellenZahl]]| 4 |(4 mal 3,7V Zellen[[nennspannung|NennSpannung]] = 14,8V Gesamtnennspannung)|
|[[Kapaz]]|0.900Ah |(entsprechend der Gesamt-[[Nennkapazität|Kapaz]] des Akkus)|
|I-Lade| 900mA |(kann wahlweise auch kleiner 1[[C|NennKapazität]] eingestellt werden)|
|[[Menge|LadeEntMenge]]| 0.000Ah |(wahlweise zur Begrenzung der maximalen [[Ladungsmenge|Menge]])|
===

Beispiel: [[Lithium-Ionen-Akku (LiIo)|LiIo]] (3s2p 10,8V/1800mAh) laden +++*[>]>
|AkkuTyp| [[Li36|LiIo]] |(3,6V Zellen[[nennspannung|NennSpannung]])|
|[[Programm]]| [[LADEN|Laden]] ||
|[[Zellen|ZellenZahl]]| 3 |(3 mal 3,6V Zellen[[nennspannung|NennSpannung]] = 10,8V Gesamtnennspannung)|
|[[Kapaz]]|1.800Ah |(entsprechend der Gesamt-[[Nennkapazität|Kapaz]] des Akkus)|
|I-Lade| 1.800mA |(kann wahlweise auch kleiner 1[[C|NennKapazität]] eingestellt werden)|
|[[Menge|LadeEntMenge]]|0.000Ah |(wahlweise zur Begrenzung der maximalen [[Ladungsmenge|Menge]])|
===

Beispiel: [[Lithium-Polymer-Akku (LiPo)|LiPo]] (3s2p 11,1V/1800mAh) laden +++*[>]>
|AkkuTyp| [[Li37|LiPo]] |(3,7V Zellen[[nennspannung|NennSpannung]])|
|[[Programm]]| [[LADEN|Laden]] ||
|[[Zellen|ZellenZahl]]| 3 |(3 mal 3,7V Zellen[[nennspannung|NennSpannung]] = 11,1V Gesamtnennspannung)|
|[[Kapaz]]|1.800Ah |(entsprechend der Gesamt-[[Nennkapazität|Kapaz]] des Akkus)|
|I-Lade|1.800mA |(kann wahlweise auch kleiner 1[[C|NennKapazität]] eingestellt werden)|
|[[Menge|LadeEntMenge]]|0.000Ah |(wahlweise zur Begrenzung der maximalen [[Ladungsmenge|Menge]])|
===
</part>
Die LadeschlussSpannung ist die LadeSpannung die ohne Schaden für den Akku ([[Kapaz]]ität; Lebensdauer) nicht länger __''überschritten''__ werden darf. Nur zum Zellenausgleich von [[Nixx]]-Akkus während der Gasungsphase wird eine genau definierte Überladung angewendet.
!Ladespannung für Akkutyp Li36 / Li37
[img[Bild|http://www.akkumatiki.de/bilder/AM_ladespann.jpg]]
Dieser Parameter variiert die Ladespannung der Akkutypen [[Li36|LiIo]]/[[Li37|LiPo]] in einem Bereich von +/- 50mV zum Idealwert pro Zelle.
Beim Akkutyp [[Li37|LiPo]] gilt beispielsweise:
*00mV = 4150mV Ladespannung (mit 50mV Sicherheitsreserve pro Zelle)
*50mV = 4200mV Ladespannung (Idealwert)
*99mV = 4249mV Ladespannung (nur mit Balancer zu empfehlen)
!LAGERN:
[img[Bild|http://www.akkumatiki.de/bilder/AM_lagern.jpg]]
Programm zum Erreichen des optimalen Lagerzustandes von Lithium Akkus

*++++[Lithiumakkus für längere Lagerung vorbereiten]>
Um die Lebensdauer von Lithiumakkus nicht zu verkürzen, sollten diese bei längerer Lagerung  (z.B. während der Winterpause) etwa halbvoll sein. Zum Erreichen dieses Zustandes gibt es das spezielle Programm LAGERN. Mit den folgenden Einstellungen wird z.B. ein 6s Lipo mit 3000mAh Kapazität auf die gewünschte Spannung gebracht:
* Akkutyp    [[Li37|LiPo]]
* Programm  [[LAGERN|Lagern]]
* Zellen 6
* Kapaz  03.000Ah
* I-Lade   xxxx beliebig
Das Programm endet mit der Meldung VOLL bzw. LEER, je nachdem ob für das Erreichen des idealen Lagerzustandes [[Laden]] oder [[Entladen]] erforderlich war.
|bgcolor(#dddddd):1 Menge   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;37:12|
|bgcolor(#dddddd):-1.500Ah &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+0.000Ah|
50mA...5A

!Entladen mit externem Lastwiderstand
Mit einem externen Lastwiderstand kann die maximal mögliche Entladeleistung auf bis zu 200W gesteigert werden.
Die Spannungsmessungen am Akku erfolgen zyklisch im stromlosen Zustand. Der Lastwiderstand muss so ausgelegt sein, dass er den Akku mit einem Strom von höchstens 5A entlädt. Der Widerstand muss in Reihenschaltung mit dem Akku an [[Ausgang]]-1 angeschlossen werden. Die erforderliche Parametereinstellung ist im Kapitel 7.4 beschrieben.

!!Einstellung für Entladen mit externem Lastwiderstand:
|bgcolor(#dddddd):1 AkkuParameter|
|bgcolor(#dddddd):Stromwahl &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~EXT-W|
Für hohe Entladeleistung kann mit einem externen Lastwiderstand entladen werden. Die Einstellung ~EXT-W ist nur für Akku[[ausgang|Ausgang]]-1 beim Programm [[ENTLADEN|Entladen]] anwählbar.
__Achtung:__ Wenn diese Option aktiviert wird, muss unbedingt ein passender externer Lastwiderstand __''in Reihe''__ mit dem Akku angeschlossen werden. Der Entladetransistor schaltet beim Entladen voll durch und würde bei direkt angeschlossenen Akku einen Kurzschluss verursachen und zerstört werden. Vor Entladestart erfolgt deshalb aus Sicherheitsgründen eine zusätzliche Passwortabfrage.
Um mit diesem TiddlyWiki zu starten, sollten Sie folgende Tiddler modifizieren:
* SiteTitle & SiteSubtitle: Den [[Titel|SiteTitle]] und [[Untertitel|SiteSubtitle]] der Site, wie oben angezeigt (nach dem Speichern werden diese auch in der Titelzeile des Browsers angezeigt)
* MainMenu: Ihr Inhaltsverzeichnis (für gewöhnlich Links)
* DefaultTiddlers: Beinhaltet die Namen der Tiddler, die Sie angezeigt haben möchten, wenn das TiddlyWiki geöffnet wird.
Sie sollten zudem Ihren Benutzernamen zum Unterzeichnen Ihrer Bearbeitungen eingeben: <<option txtUserName>>

Hilfe gibt's [[hier:|file:///E:/HWsKladde/tiddlywikihandbuch.html]]

/% http://tiddlyvault.tiddlyspot.com/ %/
Die Leerlaufspannung ist in der Elektrotechnik die an den Klemmen einer offenen Spannungsquelle gemessene elektrische Spannung. Das heißt, die Leerlaufspannung ist die Spannung auf der Ausgangsseite, wenn kein Verbraucher angeschlossen ist. Es fließt kein elektrischer Strom, wodurch keine Spannung über den Innenwiderstand der Spannungsquelle abfällt.

Die Leerlaufspannung ist genau dann gleich der Quellenspannung UQ, wenn innerhalb der Spannungsquelle, wie bei einem Generator oder einer galvanischen Zelle, keine parallelen Strompfade existieren, die zum Beispiel Leckströme verursachen, welche die Leerlaufspannung verringern.
----
Quelle: [[Wikipedia|http://de.wikipedia.org/wiki/Leerlaufspannung]]
&nbsp;
Leistungslimiter für die StromVersorgung
|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;SystemParameter|
|bgcolor(#dddddd):Stromwahl  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Versorg. 150W|
Hier kann die maximale Leistungsaufnahme des Laders begrenzt werden, um eine Überlastung der StromVersorgung zu verhindern. Der Parameter sollte sicherheitshalber 30W unterhalb der tatsächlichen Leistungsfähigkeit des Netzteils eingestellt werden.
Beispiel:
- Ein Netzteil ist mit 12V/15A angegeben
- die max. Leistung des Netzteils ist somit 12 x 15 = 180W
- der Parameter sollte also auf 180 - 30 = 150W eingestellt werden.
Der ''~Lithium-Eisen-Phosphat-Akkumulator'' ist eine Ausführung eines Lithium-Ionen-Akkumulators mit einer Zellspannung von 3,2 V bzw. 3,3 V. Als Kathodenmaterial wird Lithium-Eisenphosphat (LiFePO4) anstelle von herkömmlichem Lithium-Cobalt(III)-oxid (LiCoO2) verwendet. Die Anode besteht aus Graphit oder hartem Kohlenstoff mit eingelagertem Lithium. Akkumulatoren mit Elektrodenmaterialien aus Lithiumeisenphosphat gewinnen aufgrund ihrer Eigenschaften zunehmend Marktanteile.

* typische NennSpannung von ~3,3 V (3,7 V beim LiPo)
----
Quelle: [[Wikipedia|http://de.wikipedia.org/wiki/Lithium-Eisen-Phosphat-Akkumulator]]
Ein ''~Lithium-Ionen-Akkumulator'' +++*[>]>
auch
*~Lithium-Ionen-Akku,
*~Li-Ionen-Akku,
*~Li-Ionen-Sekundärbatterie,
*~Lithium-Akkumulator
* oder kurz ~Li-Ion
===

ist ein Akkumulator auf der Lithiumbasis. Der ~Li-Ionen-Akku zeichnet sich durch hohe Energiedichte  aus. Er ist thermisch stabil und unterliegt keinem ~Memory-Effekt.
|NennSpannung| 3,6 Volt|
|LadeschlussSpannung| 4,1 Volt|
|EntladeschlussSpannung| 3,3 Volt |

----
Quelle: [[Wikipedia|http://de.wikipedia.org/wiki/Lithium-Ionen-Akkumulator]]
Ein ''~Lithium-Polymer-Akku'' (auch ~LiPoly oder LiPo) ist ein wiederaufladbarer Energiespeicher (Akkumulator) und eine Weiterentwicklung des [[Lithium-Ionen-Akkus|LiIo]].

Wie beim [[Lithium-Ionen-Akku|LiIo]] besteht die Kathode (negative Elektrode) aus Graphit, die Anode aus ~Lithium-Metalloxid. Jedoch enthalten ~Lithium-Polymer-Akkus keinen flüssigen Elektrolyten, sondern einen auf Polymerbasis, der als feste bis gelartige Folie vorliegt. Die Komponenten des Akkus – Stromzuführung, negative Elektrode, Elektrolyt, positive Elektrode – lassen sich preiswert als Schichtfolien mit einer Dicke von weniger als 100 Mikrometer herstellen. Die Bauform der ~Lithium-Polymer-Akkus unterliegt praktisch keinen Beschränkungen.
|NennSpannung| 3,7 Volt|
|LadeschlussSpannung| 4,2 Volt|
|EntladeschlussSpannung| 3,3 Volt |

----
Quelle: [[Wikipediea|http://de.wikipedia.org/wiki/Lithium-Polymer-Akku]]
Die Zellen aus denen sich Lithiumakkupacks zusammensetzen, müssen in der LadeschlussSpannung anglichen werden. Dazu nutzt man [[interne Balancer|Balancer/IntBalancer]] oder [[externer Balancer|Balancer/ExtBalancer]].
Synonym für

* LiIo
* LiPo
* LiFe
* IUXx
!Einstellen von Listenparametern
Ein Listenparameter ist eine Sammlung von fest hinterlegten Auswahlmöglichkeiten 
(z.B. bei AkkuTyp:  [[BLEI, BGEL|BleiAkku]], NiMh, usw.)
|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;&nbsp;[[AKKUPARAMETER|AkkuParameter]]|
|bgcolor(#dddddd):&#9724;AkkuTyp    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NiMh|
Mit [[ENTER|Tastatur]] wird die Liste durchgeblättert, während der Cursor links stehen bleibt. Der Wert wird 
sofort als Eingabe übernommen:
|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;&nbsp;[[AKKUPARAMETER|AkkuParameter]]|
|bgcolor(#dddddd):&#9724;AkkuTyp    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BleiAkku|
!!Ladeende für
*++++*[Akkutyp Li36 / Li37 / LiFe / IUxx]>
Dieser Parameter definiert das Ladeende für die Akkutypen [[Li36|LiIo]] / [[Li37|LiPo]] / [[IUxx]].
Der Wert ist im Bereich [[C|NennKapazität]]/01…[[C|NennKapazität]]/20 einstellbar.
[img[Bild|http://www.akkumatiki.de/bilder/AM_lithstop.jpg]]

Mit dem Standardwert [[C|NennKapazität]]/10 wird die Ladung beendet, sobald der LadeStrom kleiner ein Zehntel der [[Nennkapazität|Kapaz]] des Akkus ist. Bei einem 2000mAh Akku würde z.B. die Abschaltung bei 200mA LadeStrom erfolgen.
===
/***
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy = {
 major: 1, minor: 1, revision: 0, 
 date: new Date("mar 17, 2007"), 
 source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};

if (!window.bidix) window.bidix = {}; // bidix namespace
if (!bidix.core) bidix.core = {};

bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
{
 if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){ 
 url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
 }
 return bidix.core.loadRemoteFile(url,callback,params);
}
//}}}
!Daten visualisieren mit Stil ...

[[LogView|http://www.logview.info]] ist eine Visualisierungslösung für die meisten Ladegeräte und Datenlogger.

LogView bietet Ihnen die Möglichkeit, unter einer strukturierten Oberfläche, die seriellen Daten einer ganzen Palette von Ladegeräten, Datenloggern, etc. darzustellen und auszuwerten.
* Schutzfunktionen: Temperaturgesteuerter @@Lüfter@@
* Zur Inbetriebnahme die [[Polklemmen|http://www.rc-network.de/magazin/artikel_08/art_08-041/art_041-01.html#54]] zügig ohne Wackeln an die [[Stromversorgung|BetriebsSpannung]] anschließen. Am [[Display]] wird der StartbildSchirm mit [[SoftWare]]- und Hardwareversion angezeigt. Zur Funktionskontrolle wird auch der @@Lüfter@@ kurz eingeschaltet. Nach 3 Sekunden erscheint automatisch das HauptMenue und das Gerät ist betriebsbereit.
*Externer [[Balancer]]: Die Datenleitung wird an der 3poligen Stiftleiste angeschlossen. Der Stecker muss polrichtig am AlarmEingang angesteckt werden, d.h. die Codierungsfahne bzw. das weiße Kabel  des Steckers zeigt zum @@Lüfter@@.
[img[Menüstruktur |http://hfranzw.de/Akkumatiki/pics/AM_frontansicht1.jpg]]<<imageMap MainMenu_Map##MainMenu_MapKoord>>+++*@[°|Darstellung ändern]
<<tiddler ToggleFullScreen##show with: Vollbild? Vollbild_schließen>><br><<tiddler ToggleTiddlerTags with: Tags&nbsp;an/aus?>>
<<tiddler ToggleScrollingSidebars with: Sidebars&nbsp;rollen? Sidebars&nbsp;rollen?>>&nbsp;&nbsp;&nbsp;<<tiddler ToggleSiteTitles with: Titel&nbsp;ausblenden?>>
===
<<fontSize>>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<<tiddler ToggleRightSidebar with: "&nbsp;">>
----
Die Anleitung zum
''[[Akkumatik|http://www.akkumatik.de/]]'' //von// 
''Stefan Estner''
//in Ergänzung meines [[RC-Network|http://www.rc-network.de/magazin/artikel_08/art_08-041/art_041-01.html]]-Magazinbeitrags//
----
[[Sicherheitshinweise]]
[[TechnischeDaten]]
[[Bedienungsanleitung|http://www.akkumatik.de/download/bed_anleitung.pdf]]


----
~TW-Version: <<version>>
[[Layout]]

----
<html>
<a href="mailto:HarlietteW (at) gmx (dot) de?subject=eine%20Mail%20von%20AkkumaTIKI">Kontakt</a>
</html>
[[Impressum]]
----
[img[file:\\\F:\Akkumatik\AkkumatikWiki\pics\Frontansicht.jpg]]<<mapMaker MainMenu_Map##MainMenu_MapKoord>>
----
!MainMenu_MapKoord
Akkumatik
0,0,131,0,131,101,0,101
----
Als ~Memory-Effekt (engl. memory = Gedächtnis) wird der Kapazitätsverlust bezeichnet, der bei sehr häufiger Teilentladung eines [[Nickel-Cadmium-Akkus|NiCd]]  mit gesinterten  Elektroden auftritt. Der Akku scheint sich den Energiebedarf zu merken  und mit der Zeit statt der ursprünglichen, nur noch die bei den bisherigen Entladevorgängen benötigte Energiemenge zur Verfügung zu stellen. Elektrisch äußert sich der Effekt in einem frühen Spannungsabfall. Dies bedeutet letztlich eine Verringerung der nutzbaren Kapazität  des Akkumulators, da Verbraucher eine Mindestspannung benötigen – sinkt die Zellenspannung unter diesen Mindestbedarf ab, wird die Zelle für die Nutzung unbrauchbar, obwohl sie noch weiterhin elektrische Energie liefern kann.
----
Quelle: [[Wikipedia|http://de.wikipedia.org/wiki/Memory-Effekt_%28Batterie%29]]
Per [[Display]] und [[Tastatur]] bietet das Gerät umfangreiche Einstell- und Anzeigemöglichkeiten die in einer logischen Hierarchie gegliedert sind. Hier ist eine Gesamtübersicht aller Menüs, die am Anfang sehr hilfreich ist. Um möglichst schnell mit der Bedienung vertraut zu werden, sollten Sie nach dem Durchlesen dieser Anleitung vor dem ersten Laden eines Akkus die Menüs direkt am Gerät anschauen und ausprobieren.
| [img[Menüstruktur |http://www.HWolfering.gmxhome.de/akkumwiki/pics/Menuestruktur.jpg]]<<imageMap MenueStruktur_Map##MenueStruktur_MapKoord>>|
----
[img[Menüstruktur |http://www.hwolfering.gmxhome.de/akkumwiki/pics/Menuestruktur.jpg]]<<mapMaker MenueStruktur_Map##MenueStruktur_MapKoord>>
----

!MenueStruktur_MapKoord
AkkuSpeicher
1,227,126,227,126,353,1,352
----
AkkuParameter
1,375,128,375,126,877,1,877
----
ServiceMenue
187,418,188,700,320,699,316,424
----
SystemParameter
378,421,502,424,502,878,191,876,189,707,364,695
----
StartbildSchirm
186,178,186,222,317,221,317,178
----
Tastatur/kombTastenaktion
112,180,115,210,175,214,173,179,173,179
----
Tastatur/kombTastenaktion
306,229,308,260,367,259,366,221,503,218,503,183,373,181,372,149,303,148,301,174,326,176,318,220,306,223,306,223
----
Anzeige
186,356,186,405,505,408,502,226,378,226,372,349,372,349
----
ServiceMenue
36,185,43,210,91,209,93,185
----
AkkuParameter
224,135,227,165,282,166,281,135
----
AkkuParameter
224,235,224,265,282,263,282,237
----
Anzeige
186,88,186,1,501,1,501,175,377,176,376,88,376,88
----
AkkuSpeicher
1,227,126,227,126,353,1,352
----
AkkuSpeicher
1,41,1,175,128,177,131,44
----
AkkuParameter
1,375,128,375,126,877,1,877
----
ServiceMenue
187,418,188,700,320,699,316,424
----
SystemParameter
378,421,502,424,502,878,191,876,189,707,364,695
----
Anzeige
189,2,503,2,502,173,283,171,279,92,182,89
----
Anzeige
285,228,286,339,177,351,177,406,502,404,499,221
----
StartbildSchirm
186,178,186,222,317,221,317,178
----
!Beschreibung der Menüs
# HauptMenue
# LadeMenue
# [[EntladeMenue|Entladen]]
# InfoMenue
# EndeMenue
# FehlerMeldungen
* [[Akku laden]]
!Minimale_Versorgungsspannung
Dieser Parameter definiert die minimale Versorgungsspannung. Bei längerem Unterschreiten dieser Grenze wird ein laufendes Programm mit Fehlermeldung [["Min.Vers."|FehlerMeldungen/Min.Vers.]] beendet und eine zu starke Entladung der Versorgungsbatterie verhindert.
Die Ladungsmenge, die ein Akkumulator speichern kann, wird in Milliamperestunden (mAh) oder Amperestunden (Ah) angegeben und als „Kapazität“ (Nennkapazität) bezeichnet.
Häufig abgekürzt durch ein großes ''C''
----
Quelle: [[Wikipedia|http://de.wikipedia.org/wiki/Akkumulator]]
Die NennSpannung eines elektrischen Verbrauchers oder einer Spannungsquelle (Batterie, Generator, Stromnetz) ist der vom Hersteller oder Lieferanten spezifizierte Wert der elektrischen Spannung im Normalbetrieb. Die Angabe der NennSpannung ist meist mit einem Toleranzbereich ergänzt, der maximal zulässig ist und in neueren Normen als Bemessungsspannung angegeben wird.
| Akku | EntladeschlussSpannung | NennSpannung | LadeschlussSpannung |
|~| pro Zelle [Volt] |>|>|
| BleiAkku | 1,800 | 2,000 | 2,400 |
| NiCd | 0,850 | 1,200 | 2,000 |
| NiMh | 1,100 | 1,200 | 2,000 |
| LiIo | 3,300 | 3,600 | 4,100 |
| LiPo | 3,300 | 3,700 | 4,200 |
| LiFe | 2,000 | 3,300 | 3,650 |
| IUxx | ? | ? | ? |
| xx=Mn| 2,700 | 3,600 | 4,100 |
siehe auch: AbbruchBedingungen
/***
|Name|NestedSlidersPlugin|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Documentation|http://www.TiddlyTools.com/#NestedSlidersPluginInfo|
|Version|2.4.9|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|show content in nest-able sliding/floating panels, without creating separate tiddlers for each panel's content|
!!!!!Documentation
>see [[NestedSlidersPluginInfo]]
!!!!!Configuration
<<<
<<option chkFloatingSlidersAnimate>> allow floating sliders to animate when opening/closing
>Note: This setting can cause 'clipping' problems in some versions of InternetExplorer.
>In addition, for floating slider animation to occur you must also allow animation in general (see [[AdvancedOptions]]).
<<<
!!!!!Revisions
<<<
2008.11.15 - 2.4.9 in adjustNestedSlider(), don't make adjustments if panel is marked as 'undocked' (CSS class).  In onClickNestedSlider(), SHIFT-CLICK docks panel (see [[MoveablePanelPlugin]])
|please see [[NestedSlidersPluginInfo]] for additional revision details|
2005.11.03 - 1.0.0 initial public release.  Thanks to RodneyGomes, GeoffSlocock, and PaulPetterson for suggestions and experiments.
<<<
!!!!!Code
***/
//{{{
version.extensions.NestedSlidersPlugin= {major: 2, minor: 4, revision: 9, date: new Date(2008,11,15)};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// TW2.2+
// hijack Morpher stop handler so sliderPanel/floatingPanel overflow is visible after animation has completed
if (version.major+.1*version.minor+.01*version.revision>=2.2) {
        Morpher.prototype.coreStop = Morpher.prototype.stop;
        Morpher.prototype.stop = function() {
                this.coreStop.apply(this,arguments);
                var e=this.element;
                if (hasClass(e,"sliderPanel")||hasClass(e,"floatingPanel")) {
                        // adjust panel overflow and position after animation
                        e.style.overflow = "visible";
                        if (window.adjustSliderPos) window.adjustSliderPos(e.parentNode,e.button,e);
                }
        };
}
//}}}
/***
|Name|NestedSlidersPluginInfo|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Documentation|http://www.TiddlyTools.com/#NestedSlidersPluginInfo|
|Version|2.4.9|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|documentation for NestedSlidersPlugin|
This plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content.
!!!!!Usage
<<<
//{{{
++++(cookiename)!!!!!^width^*@{{class{[label=key|tooltip][altlabel|alttooltip]}}}#panelID:>...
content goes here
===
//}}}
* ''"""+++""" (or """++++""") and """==="""''<br>marks the start and end of the slider definition, respectively.  When the extra {{{+}}} is used, the slider will be open when initially displayed.
* ''"""(cookiename)"""''<br>saves the slider opened/closed state, and restores this state whenever the slider is re-rendered.
* ''"""! through !!!!!"""''<br>displays the slider label using a formatted headline (Hn) style instead of a button/link style
* ''"""^width^ (or just ^)"""''<br>makes the slider 'float' on top of other content rather than shifting that content downward.  'width' must be a valid CSS value (e.g., "30em", "180px", "50%", etc.).  If omitted, the default width is "auto" (i.e., fit to content)
* ''"""*"""''<br>denotes "transient display": when a click occurs elsewhere in the document, the slider/floating panel will be automatically closed.  This is useful for creating 'pulldown menus' that automatically go away after they are used.  //Note: using SHIFT-click on a slider label will open/close that slider without triggering the automatic closing of any transient slider panels that are currently displayed, permitting ''temporary'' display of several transient panels at once.//
* ''"""@"""''<br>denotes "open on hover": the slider/floating panel will be automatically opened as soon as the mouse moves over the slider label, without requiring a click.
* ''"""{{class{[label=key|tooltip][altlabel|alttooltip]}}}"""''<br>uses label/tooltip/accesskey.  """{{class{...}}}""", """=key""", """|tooltip""" and """[altlabel|alttooltip]""" are optional.  'class' is any valid CSS class name, used to style the slider label text.  'key' must be a ''single letter only''.  altlabel/alttooltip specify alternative label/tooltip for use when slider/floating panel is displayed.  //Note: you can use HTML syntax within the label text to include HTML entities (e.g., {{{&raquo;}}} (&raquo;) or {{{&#x25ba;}}} (&#x25ba;), or even embedded images (e.g., {{{<img src="images/eric3.gif">}}}).//
* ''"""#panelID:"""''<br>defines a unique DOM element ID that is assigned to the panel element used to display the slider content.  This ID can then be used later to reposition the panel using the {{{<<DOM move id>>}}} macro (see [[DOMTweaksPlugin]]), or to access/modify the panel element through use of {{{document.getElementById(...)}}}) javascript code in a plugin or inline script.
* ''""">"""''<br>automatically adds blockquote formatting to slider content
* ''"""..."""''<br>defers rendering of closed sliders until the first time they are opened.
Notes:
*You can 'nest' sliders as deep as you like (see complex nesting example below), so that expandable 'tree-like' hierarchical displays can be created.
*Deferred rendering (...) can be used to offset processing overhead until actually needed. However, this may produce unexpected results in some cases.  Use with care.
* To make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the 'start slider' or preceding the 'end slider' sequences are automatically supressed so that excess whitespace is eliminated from the output.
<<<
!!!!!Examples
<<<
simple in-line slider:
{{{
+++content===
}}}
+++content===
----
use a custom label and tooltip:
{{{
+++[label|tooltip]content===
}}}
+++[label|tooltip]content===
----
content automatically blockquoted:
{{{
+++>content===
}}}
+++>content===
----
all options (except cookie) //(default open, heading, sized floater, transient, open on hover, class, label/tooltip/key, blockquoted, deferred)//
{{{
++++!!!^30em^*@{{big{[label=Z|click or press Alt-Z to open]}}}>...
   content
===
}}}
++++!!!^30em^*@{{big{[label=Z|click or press Alt-Z to open]}}}>...
   content
===
----
complex nesting example:
{{{
+++[get info...=I|click for information or press Alt-I]
        put some general information here,
        plus a floating panel with more specific info:
        +++^10em^[view details...|click for details]
                put some detail here, which could in turn contain a transient panel,
                perhaps with a +++^25em^*[glossary definition]explaining technical terms===
        ===
===
}}}
+++[get info...=I|click for information or press Alt-I]
        put some general information here,
        plus a floating panel with more specific info:
        +++^10em^[view details...|click for details]
                put some detail here, which could in turn contain a transient panel,
                perhaps with a +++^25em^*[glossary definition]explaining technical terms===
        ===
===
----
embedded image as slider button
{{{
+++[<img src=images/eric3.gif>|click me!]>
        {{big{OUCH!}}}
===
}}}
+++[<img src=images/eric3.gif>|click me!]>
        {{big{OUCH!}}}
===
<<<
!!!!!Revisions
<<<
2008.11.15 2.4.9 in adjustNestedSlider(), don't make adjustments if panel is marked as 'undocked' (CSS class).  In onClickNestedSlider(), SHIFT-CLICK docks panel (see [[MoveablePanelPlugin]])
2008.11.13 2.4.8 in document.onclick(), if transient panel is not a sliderPanel or floatingPanel, hide it via CSS
2008.10.05 2.4.7 in onClickNestedSlider(), added try/catch around focus() call to prevent IE error if input field being focused on is currently not visible.
2008.09.07 2.4.6 added removeCookie() function for compatibility with [[CookieManagerPlugin]]
2008.06.07 2.4.5 in 'onmouseover' handler for 'open on hover' slider buttons, use call() method when invoking document.onclick function (avoids error in IE)
2008.06.07 2.4.4 changed default for chkFloatingSlidersAnimate to FALSE to avoid clipping problem on some browsers (IE).  Updated Morpher hijack (again) to adjust regular sliderPanel styles as well as floatingPanel styles.
2008.05.07 2.4.3 updated Morpher hijack to adjust floatingPanel styles after animation without affecting other animated elements (i.e. popups).  Also, updated adjustSliderPos() to account for scrollwidth and use core findWindowWidth().
2008.04.02 2.4.2 in onClickNestedSlider, handle clicks on elements contained //within// slider buttons (e.g., when using HTML to display an image as a slider button).
2008.04.01 2.4.1 open on hover also triggers document.onclick to close other transient sliders
2008.04.01 2.4.0 re-introduced 'open on hover' feature using "@" symbol
2008.03.26 2.3.5 in document.onclick(), if click is in popup, don't dismiss transient panel (if any)
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
2007.12.28 2.3.4 added hijack for Animator.prototype.startAnimating().  Previously, the plugin code simply set the overflow to "visible" after animation.  This code tweak corrects handling of elements that were styled with overflow=hidden/auto/scroll before animation by saving the overflow style and then restoring it after animation has completed.
2007.12.17 2.3.3 use hasClass() instead of direct comparison to test for "floatingPanel" class.  Allows floating panels to have additional classes assigned to them (i.e., by AnimationEffectsPlugin).
2007.11.14 2.3.2 in onClickNestedSlider(), prevent SHIFT-click events from opening a new, empty browser window by setting "cancelBubble=true" and calling "stopPropagation()".  Note: SHIFT-click is still processed as a normal click (i.e., it toggles the slider panel display).  Also, using SHIFT-click will prevent 'transient' sliders from being automatically closed when another slider is opened, allowing you to *temporarily* display several transient sliders at once.
2007.07.26 2.3.1 in document.onclick(), propagate return value from hijacked core click handler to consume OR bubble up click as needed.  Fixes "IE click disease", whereby nearly every mouse click causes a page transition.
2007.07.20 2.3.0 added syntax for setting panel ID (#panelID:).  This allows individual slider panels to be repositioned within tiddler content simply by giving them a unique ID and then moving them to the desired location using the {{{<<DOM move id>>}}} macro.
2007.07.19 2.2.0 added syntax for alttext and alttip (button label and tooltip to be displayed when panel is open)
2007.07.14 2.1.2 corrected use of 'transient' attribute in IE to prevent (non-recursive) infinite loop
2007.07.12 2.1.0 replaced use of "*" for 'open/close on rollover' (which didn't work too well).  "*" now indicates 'transient' panels that are automatically closed if a click occurs somewhere else in the document.  This permits use of nested sliders to create nested "pulldown menus" that automatically disappear after interaction with them has been completed.  Also, in onClickNestedSlider(), use "theTarget.sliderCookie", instead of "this.sliderCookie" to correct cookie state tracking when automatically dismissing transient panels.
2007.06.10 2.0.5 add check to ensure that window.adjustSliderPanel() is defined before calling it (prevents error on shutdown when mouse event handlers are still defined)
2007.05.31 2.0.4 add handling to invoke adjustSliderPanel() for onmouseover events on slider button and panel.  This allows the panel position to be re-synced when the button position shifts due to changes in unrelated content above it on the page.  (thanks to Harsha for bug report)
2007.03.30 2.0.3 added chkFloatingSlidersAnimate (default to FALSE), so that slider animation can be disabled independent of the overall document animation setting (avoids strange rendering and focus problems in floating panels)
2007.03.01 2.0.2 for TW2.2+, hijack Morpher.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends
2007.03.01 2.0.1 in hijack for Slider.prototype.stop, use apply() to pass params to core function
2006.07.28 2.0.0 added custom class syntax around label/tip/key syntax: {{{{{classname{[label=key|tip]}}}}}}
2006.07.25 1.9.3 when parsing slider, save default open/closed state in button element, then in onClickNestedSlider(), if slider state matches saved default, instead of saving cookie, delete it.  Significantly reduces the 'cookie overhead' when default slider states are used.
2006.06.29 1.9.2 in onClickNestedSlider(), when setting focus to first control, skip over type="hidden"
2006.06.22 1.9.1 added panel.defaultPanelWidth to save requested panel width, even after resizing has changed the style value
2006.05.11 1.9.0 added optional '^width^' syntax for floating sliders and '=key' syntax for setting an access key on a slider label
2006.05.09 1.8.0 in onClickNestedSlider(), when showing panel, set focus to first child input/textarea/select element
2006.04.24 1.7.8 in adjustSliderPos(), if floating panel is contained inside another floating panel, subtract offset of containing panel to find correct position
2006.02.16 1.7.7 corrected deferred rendering to account for use-case where show/hide state is tracked in a cookie
2006.02.15 1.7.6 in adjustSliderPos(), ensure that floating panel is positioned completely within the browser window (i.e., does not go beyond the right edge of the browser window)
2006.02.04 1.7.5 add 'var' to unintended global variable declarations to avoid FireFox 1.5.0.1 crash bug when assigning to globals
2006.01.18 1.7.4 only define adjustSliderPos() function if it has not already been provided by another plugin.  This lets other plugins 'hijack' the function even when they are loaded first.
2006.01.16 1.7.3 added adjustSliderPos(place,btn,panel,panelClass) function to permit specialized logic for placement of floating panels.  While it provides improved placement for many uses of floating panels, it exhibits a relative offset positioning error when used within *nested* floating panels.  Short-term workaround is to only adjust the position for 'top-level' floaters.
2006.01.16 1.7.2 added button property to slider panel elements so that slider panel can tell which button it belongs to.  Also, re-activated and corrected animation handling so that nested sliders aren't clipped by hijacking Slider.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends
2006.01.14 1.7.1 added optional "^" syntax for floating panels.  Defines new CSS class, ".floatingPanel", as an alternative for standard in-line ".sliderPanel" styles.
2006.01.14 1.7.0 added optional "*" syntax for rollover handling to show/hide slider without requiring a click (Based on a suggestion by tw4efl)
2006.01.03 1.6.2 When using optional "!" heading style, instead of creating a clickable "Hn" element, create an "A" element inside the "Hn" element.  (allows click-through in SlideShowPlugin, which captures nearly all click events, except for hyperlinks)
2005.12.15 1.6.1 added optional "..." syntax to invoke deferred ('lazy') rendering for initially hidden sliders
removed checkbox option for 'global' application of lazy sliders
2005.11.25 1.6.0 added optional handling for 'lazy sliders' (deferred rendering for initially hidden sliders)
2005.11.21 1.5.1 revised regular expressions: if present, a single newline //preceding// and/or //following// a slider definition will be suppressed so start/end syntax can be place on separate lines in the tiddler 'source' for improved readability.  Similarly, any whitespace (newlines, tabs, spaces, etc.) trailing the 'start slider' syntax or preceding the 'end slider' syntax is also suppressed.
2005.11.20 1.5.0 added (cookiename) syntax for optional tracking and restoring of slider open/close state
2005.11.11 1.4.0 added !!!!! syntax to render slider label as a header (Hn) style instead of a button/link style
2005.11.07 1.3.0 removed alternative syntax {{{(((}}} and {{{)))}}} (so they can be used by other formatting extensions) and simplified/improved regular expressions to trim multiple excess newlines
2005.11.05 1.2.1 changed name to NestedSlidersPlugin
2005.11.04 1.2.0 added alternative character-mode syntax {{{(((}}} and {{{)))}}}
tweaked "eat newlines" logic for line-mode {{{+++}}} and {{{===}}} syntax
2005.11.03 1.1.1 fixed toggling of default tooltips ("more..." and "less...") when a non-default button label is used.  code cleanup, added documentation
2005.11.03 1.1.0 changed delimiter syntax from {{{(((}}} and {{{)))}}} to {{{+++}}} and {{{===}}}.  changed name to EasySlidersPlugin
2005.11.03 1.0.0 initial public release
<<<
Ein ''~Nickel-Cadmium-Akkumulator'' (~NiCd-Akku) ist ein wiederaufladbarer Akkumulator  (so genannte Sekundärzelle).
Von der grundsätzlichen Bauart ist zwischen offenen und gasdichten Zellen zu unterscheiden. Gasdichte Zellen sind häufig baugleich zu handelsüblichen Batterien und können daher als Ersatz für diese sogenannten Primärzellen verwendet werden, offene Zellen werden für stationäre Anwendungen verwendet.

|NennSpannung| 1,2 Volt|
|LadeschlussSpannung| 1,5 Volt|
|EntladeschlussSpannung| ~1,0 Volt|

__~NiCd-Akkus enthalten das giftige Schwermetall ''Cadmium'' und müssen daher über besondere Rücknahmesysteme gesondert entsorgt werden.__
----
Quelle: [[Wikipedia|http://de.wikipedia.org/wiki/Nickel-Cadmium-Akkumulator]]
Ein ''~Nickel-Metallhydrid-Akkumulator'' (~NiMh) ist ein Akkumulator, der mechanisch baugleich zu handelsüblichen Batterien hergestellt wird. Diese Teile werden üblicherweise in das Batteriefach des mit Strom zu versorgenden Gerätes eingelegt und werden, ebenso wie Batterien, auch als Zelle bezeichnet.

~Nickel-Metallhydrid-Akkumulatoren verwenden eine Kathode mit Nickel(II)-hydroxid und eine Anode aus einem Metallhydrid.
|NennSpannung| 1,2 Volt|
|LadeschlussSpannung| 1,5 Volt|
|EntladeschlussSpannung| ~1,0 Volt |
----
Quelle: [[Wikipedia|http://de.wikipedia.org/wiki/Nickel-Metallhydrid-Akkumulator]]
!Entladeschlussspannung für NiMh Akkus
Dieser Parameter bestimmt die Entladeschlussspannung von NiMh Akkus. Der Wert bezieht sich auf eine Zelle.
[img[Bild|http://hfranzw.de/Akkumatiki/pics/Akkumatik_045NiMhEnt.jpg]]
Synonym für:

NiCd -Akkus
NiMh -Akkus
!Daten ohne PC aufzeichnen (Offline Logging)
Wenn vor Ort gerade kein PC oder Notebook vorhanden ist, können  trotzdem die laufenden [[Daten]] beider Akku[[ausgänge|Ausgang]] aufgezeichnet und später auf der [[seriellen Schnittstelle|PC_Schnittstelle]] ausgegeben werden. Das Speichern der Daten erfolgt dabei in einem externen, nichtflüchtigen Speicherchip am Datenstecker des gewünschten Akkuausgangs. Bei eingebauter [[Balancer]]platine wird am Datenstecker 2 der [[Ausgang 1|TechnischeDaten/Ausgang1]] geloggt.

Folgende Daten werden zyklisch gespeichert:
* Ladephase
* Strom
* Spannnung
* Leerlaufspannung
* [[Lade- bzw. Entlademenge|LadeEntMenge]]
* [[Akkutemperatur|TemperaturSensor]]
*+++*[Daten aufzeichnen]>
# Speicherchip an die Datenschnittstelle des gewünschten [[Ausgang]]s anstecken
# [[Programm]] starten
# die Daten werden automatisch aufgezeichnet
Nach jedem Anstecken des Chips, werden bei Programmstart eventuell bereits vorhandene Daten überschrieben. Solange das Ladegerät nicht ausgeschalten und der Speicherchip nicht abgesteckt wird, können mehrere Programmdurchläufe nacheinander aufgezeichnet werden.
Bei 2 angesteckten Speicherchips können auch beide Ausgänge gleichzeitig geloggt werden.
Die maximale Aufzeichnungsdauer pro Speicherchip ist ca. 17 Stunden.
===

*+++*[Aufgezeichnete Daten zum PC schicken (Upload)]>
# Ladegerät mit dem PC verbinden und LogView starten
# Speicherchip anstecken und gleichzeitig 2-3 Sekunden die Taste ''UP'' gedrückt halten
# Der Upload beginnt
# Das Gerät reagiert nicht auf Tastendruck
# Der Upload endet nach Senden aller Daten, oder wenn der Speicherchip entfernt wird. Das Ende wird durch einen kurzen Beep signalisiert.
Das Senden der Daten erfolgt "im Zeitraffer" ungefähr mit 40-facher Geschwindigkeit, d.h. wenn 1 Stunde lang aufgezeichnet wurde, dauert der Upload ca. 1,5 Minuten. Die Daten werden immer mit der Kennung von [[Ausgang|TechnischeDaten/Ausgang1]]1 gesendet, auch wenn sie am Ausgang2 aufgezeichnet wurden.

Die Speicherkapazität eines Chips ist abhängig von der Anzahl aufzuzeichnender Zellenspannungen, Ohne Zellenspannungen können bis zu 17 Stunden aufgezeichnet werden.
!Anschluss und Datenformat der seriellen ~PC-Schnittstelle
[img[RS232-Schnittstelle|http://www.akkumatiki.de/bilder/AM_rs232.jpg]]
Die Übertragung auf der seriellen [[RS232-Schnittstelle|PC_Schnittstelle]] erfolgt mit 9600 Baud, No Parity, 8 Datenbits, 1 Stoppbit. Die Verbindung mit dem PC wird über ein normales serielles ~SUB-D Kabel hergestellt (Standardpinbelegung, nicht gedreht, kein Nullmodemkabel, 3 Adern sind ausreichend). Das Datenformat ist im ServiceMenue einstellbar.
* Datenformat 0 =  keine Datenausgabe
* Datenformat 1 für die Visualisierungssoftware LogView
* Datenformat 2..9 für Debugzwecke:
|>| 1 hh:mm:ss uuuuu -iiiii -ccccc vvvvv www kk ttttt |
|hh:mm:ss |Zeit seit Programmstart [Stunden:Minuten:Sekunden]|
|uuuuu   |aktuelle Akkuspannung [mV]|
|iiiii   |Vorzeichen und aktueller Strom [mA]|
|ccccc   |Vorzeichen und aktuelle Ladungsmenge [mAh]|
|vvvvv |VersorgungsSpannung [mV]|
|www |Akku[[innenwiderstand|InnenWiderstand]] [mOhm]|
|kk |[[Akkutemperatur|TemperaturSensor]] [Grad Celsius]|
|ttttt |Kühlkörpertemperatur [Grad Celsius]|
<div class='header' macro='gradient vert #0000FF #04b845'>
     <div class='headerShadow'>
          <span class='searchBar' macro='search'></span>
          <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
          <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
     </div>
     <div class='headerForeground'>
          <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
          <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
     </div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'>
</div>
<div id='sidebar'>
     <div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
     <div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
     <div id='messageArea'></div>
     <div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>
     <div id='tiddlerDisplay'></div>
</div>
Zitat:
In einer zukünftigen Version werden wir die Parametrierung unterstützen. Damit kann man dann die Ladeparameter (bezüglich Akku und System) vorgeben und an den Akkumatik übertragen. Es ist auch angedacht, die Parametervorgaben mit den jetzt möglichen Settings zu verknüpfen und dann in einem Rutsch an den Akkumatik zu übertragen.
/***
|<html><a name="Top"/></html>''Name:''|PartTiddlerPlugin|
|''Version:''|1.0.9 (2007-07-14)|
|''Source:''|http://tiddlywiki.abego-software.de/#PartTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.3|
|''Browser:''|Firefox 1.0.4+; InternetExplorer 6.0|
!Table of Content<html><a name="TOC"/></html>
* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Description',null, event)">Description, Syntax</a></html>
* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Applications',null, event)">Applications</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('LongTiddler',null, event)">Refering to Paragraphs of a Longer Tiddler</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Citation',null, event)">Citation Index</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('TableCells',null, event)">Creating "multi-line" Table Cells</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Tabs',null, event)">Creating Tabs</a></html>
** <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Sliders',null, event)">Using Sliders</a></html>
* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Revisions',null, event)">Revision History</a></html>
* <html><a href="javascript:;" onclick="window.scrollAnchorVisible('Code',null, event)">Code</a></html>
!Description<html><a name="Description"/></html>
With the {{{<part aPartName> ... </part>}}} feature you can structure your tiddler text into separate (named) parts. 
Each part can be referenced as a "normal" tiddler, using the "//tiddlerName//''/''//partName//" syntax (e.g. "About/Features").  E.g. you may create links to the parts (e.g. {{{[[Quotes/BAX95]]}}} or {{{[[Hobbies|AboutMe/Hobbies]]}}}), use it in {{{<<tiddler...>>}}} or {{{<<tabs...>>}}} macros etc.


''Syntax:'' 
|>|''<part'' //partName// [''hidden''] ''>'' //any tiddler content// ''</part>''|
|//partName//|The name of the part. You may reference a part tiddler with the combined tiddler name "//nameOfContainerTidder//''/''//partName//. <br>If you use a partName containing spaces you need to quote it (e.g. {{{"Major Overview"}}} or {{{[[Shortcut List]]}}}).|
|''hidden''|When defined the content of the part is not displayed in the container tiddler. But when the part is explicitly referenced (e.g. in a {{{<<tiddler...>>}}} macro or in a link) the part's content is displayed.|
|<html><i>any&nbsp;tiddler&nbsp;content</i></html>|<html>The content of the part.<br>A part can have any content that a "normal" tiddler may have, e.g. you may use all the formattings and macros defined.</html>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!Applications<html><a name="Applications"/></html>
!!Refering to Paragraphs of a Longer Tiddler<html><a name="LongTiddler"/></html>
Assume you have written a long description in a tiddler and now you want to refer to the content of a certain paragraph in that tiddler (e.g. some definition.) Just wrap the text with a ''part'' block, give it a nice name, create a "pretty link" (like {{{[[Discussion Groups|Introduction/DiscussionGroups]]}}}) and you are done.

Notice this complements the approach to first writing a lot of small tiddlers and combine these tiddlers to one larger tiddler in a second step (e.g. using the {{{<<tiddler...>>}}} macro). Using the ''part'' feature you can first write a "classic" (longer) text that can be read "from top to bottom" and later "reuse" parts of this text for some more "non-linear" reading.

<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!!Citation Index<html><a name="Citation"/></html>
Create a tiddler "Citations" that contains your "citations". 
Wrap every citation with a part and a proper name. 

''Example''
{{{
<part BAX98>Baxter, Ira D. et al: //Clone Detection Using Abstract Syntax Trees.// 
in //Proc. ICSM//, 1998.</part>

<part BEL02>Bellon, Stefan: //Vergleich von Techniken zur Erkennung duplizierten Quellcodes.// 
Thesis, Uni Stuttgart, 2002.</part>

<part DUC99>Ducasse, Stéfane et al: //A Language Independent Approach for Detecting Duplicated Code.// 
in //Proc. ICSM//, 1999.</part>
}}}

You may now "cite" them just by using a pretty link like {{{[[Citations/BAX98]]}}} or even more pretty, like this {{{[[BAX98|Citations/BAX98]]}}}.

<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!!Creating "multi-line" Table Cells<html><a name="TableCells"/></html>
You may have noticed that it is hard to create table cells with "multi-line" content. E.g. if you want to create a bullet list inside a table cell you cannot just write the bullet list
{{{
* Item 1
* Item 2
* Item 3
}}}
into a table cell (i.e. between the | ... | bars) because every bullet item must start in a new line but all cells of a table row must be in one line.

Using the ''part'' feature this problem can be solved. Just create a hidden part that contains the cells content and use a {{{<<tiddler >>}}} macro to include its content in the table's cell.

''Example''
{{{
|!Subject|!Items|
|subject1|<<tiddler ./Cell1>>|
|subject2|<<tiddler ./Cell2>>|

<part Cell1 hidden>
* Item 1
* Item 2
* Item 3
</part>
...
}}}

Notice that inside the {{{<<tiddler ...>>}}} macro you may refer to the "current tiddler" using the ".".

BTW: The same approach can be used to create bullet lists with items that contain more than one line.

<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!!Creating Tabs<html><a name="Tabs"/></html>
The build-in {{{<<tabs ...>>}}} macro requires that you defined an additional tiddler for every tab it displays. When you want to have "nested" tabs you need to define a tiddler for the "main tab" and one for every tab it contains. I.e. the definition of a set of tabs that is visually displayed at one place is distributed across multiple tiddlers.

With the ''part'' feature you can put the complete definition in one tiddler, making it easier to keep an overview and maintain the tab sets.

''Example''
The standard tabs at the sidebar are defined by the following eight tiddlers:
* SideBarTabs
* TabAll
* TabMore
* TabMoreMissing
* TabMoreOrphans
* TabMoreShadowed
* TabTags
* TabTimeline

Instead of these eight tiddlers one could define the following SideBarTabs tiddler that uses the ''part'' feature:
{{{
<<tabs txtMainTab 
    Timeline Timeline SideBarTabs/Timeline 
    All 'All tiddlers' SideBarTabs/All 
    Tags 'All tags' SideBarTabs/Tags 
    More 'More lists' SideBarTabs/More>>
<part Timeline hidden><<timeline>></part>
<part All hidden><<list all>></part>
<part Tags hidden><<allTags>></part>
<part More hidden><<tabs txtMoreTab 
    Missing 'Missing tiddlers' SideBarTabs/Missing 
    Orphans 'Orphaned tiddlers' SideBarTabs/Orphans 
    Shadowed 'Shadowed tiddlers' SideBarTabs/Shadowed>></part>
<part Missing hidden><<list missing>></part>
<part Orphans hidden><<list orphans>></part>
<part Shadowed hidden><<list shadowed>></part>
}}}

Notice that you can easily "overwrite" individual parts in separate tiddlers that have the full name of the part.

E.g. if you don't like the classic timeline tab but only want to see the 100 most recent tiddlers you could create a tiddler "~SideBarTabs/Timeline" with the following content:
{{{
<<forEachTiddler 
		sortBy 'tiddler.modified' descending 
		write '(index < 100) ? "* [["+tiddler.title+"]]\n":""'>>
}}}
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!!Using Sliders<html><a name="Sliders"/></html>
Very similar to the build-in {{{<<tabs ...>>}}} macro (see above) the {{{<<slider ...>>}}} macro requires that you defined an additional tiddler that holds the content "to be slid". You can avoid creating this extra tiddler by using the ''part'' feature

''Example''
In a tiddler "About" we may use the slider to show some details that are documented in the tiddler's "Details" part.
{{{
...
<<slider chkAboutDetails About/Details details "Click here to see more details">>
<part Details hidden>
To give you a better overview ...
</part>
...
}}}

Notice that putting the content of the slider into the slider's tiddler also has an extra benefit: When you decide you need to edit the content of the slider you can just doubleclick the content, the tiddler opens for editing and you can directly start editing the content (in the part section). In the "old" approach you would doubleclick the tiddler, see that the slider is using tiddler X, have to look for the tiddler X and can finally open it for editing. So using the ''part'' approach results in a much short workflow.

<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!Revision history<html><a name="Revisions"/></html>
* v1.0.9 (2007-07-14)
** Bugfix: Error when using the SideBarTabs example and switching between "More" and "Shadow". Thanks to cmari for reporting the issue.
* v1.0.8 (2007-06-16)
** Speeding up display of tiddlers containing multiple pard definitions. Thanks to Paco Rivière for reporting the issue.
** Support "./partName" syntax inside <<tabs ...>> macro
* v1.0.7 (2007-03-07)
** Bugfix: <<tiddler "./partName">> does not always render correctly after a refresh (e.g. like it happens when using the "Include" plugin). Thanks to Morris Gray for reporting the bug.
* v1.0.6 (2006-11-07)
** Bugfix: cannot edit tiddler when UploadPlugin by Bidix is installed. Thanks to José Luis González Castro for reporting the bug.
* v1.0.5 (2006-03-02)
** Bugfix: Example with multi-line table cells does not work in IE6. Thanks to Paulo Soares for reporting the bug.
* v1.0.4 (2006-02-28)
** Bugfix: Shadow tiddlers cannot be edited (in TW 2.0.6). Thanks to Torsten Vanek for reporting the bug.
* v1.0.3 (2006-02-26)
** Adapt code to newly introduced Tiddler.prototype.isReadOnly() function (in TW 2.0.6). Thanks to Paulo Soares for reporting the problem.
* v1.0.2 (2006-02-05)
** Also allow other macros than the "tiddler" macro use the "." in the part reference (to refer to "this" tiddler)
* v1.0.1 (2006-01-27)
** Added Table of Content for plugin documentation. Thanks to RichCarrillo for suggesting.
** Bugfix: newReminder plugin does not work when PartTiddler is installed. Thanks to PauloSoares for reporting.
* v1.0.<a href="#" telno="020060125" class="FB_Addon_TelNo" style="text-decoration: underline; color: rgb(0, 0, 0); background-color: rgb(255, 255, 0); -moz-border-radius: 1px 1px 1px 1px;">0 (2006-01-25</a>)
** initial version
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

!Code<html><a name="Code"/></html>
<html><sub><a href="javascript:;" onclick="window.scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
***/
//{{{
//============================================================================
//                           PartTiddlerPlugin

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



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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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




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

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

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

	return this.abegoIsPartTiddler;
}

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

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

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

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

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

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

} // of "install only once"
//}}}

/***
<html><sub><a href="javascript:;" onclick="scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>

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

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.

Neither the name of abego Software nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.

<html><sub><a href="javascript:;" onclick="scrollAnchorVisible('Top',null, event)">[Top]</sub></a></html>
***/
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
	major: 1, minor: 0, revision: 2, 
	date: new Date("Apr 19, 2007"),
	source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.2.0 (Beta 5)'
};

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

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

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

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

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

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

merge(config.optionsDesc,{
		pasPassword: "Test password"
	});
*/
//}}}
!Passwortabfrage
Einige Menüs sind passwortgeschützt, damit nicht aus Versehen oder durch unbefugte Personen manipuliert werden kann. Die geschützten Funktionen sind erst nach korrekter Passworteingabe im folgenden Menü erreichbar.
Das __Passwort ist ''1234''__ und wird wie ein normaler [[Zahlenwert|ZahlenParameter]] eingegeben:
|bgcolor(#dddddd):SERVICE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
|bgcolor(#dddddd):Passwort   1234|
Nach jedem durchlaufen eines Entladeprogramms wird __20 Minuten__ gewartet um den Akku vor der nächsten Ladung abkühlen zu lassen.
*Mit UP/DN kann die [[Pause]] zwischen [[Entladen]] - [[Laden]] vorzeitig beendet werden.
<<plugins>>
!Programmauswahl

In der Programmauswahl wird die generelle Aufgabe festgelegt (z.B. "Akku entladen und laden"). Jedes Programm kann mit allen anderen [[AkkuParameter]]n kombiniert werden. Dadurch ist eine sehr flexible Anpassung an jeden Akku möglich. Folgende Programme sind auswählbar:
* [[Laden]] (einmal) -> siehe auch [[Formieren]]
* [[ENTLAD|Entladen]] Entladen (einmal)
* [[E+L]] Entladen und Laden (je nach ZyklenZahl 1..9 mal)
* [[L+E]] Laden und Entladen (je nach ZyklenZahl 1..9 mal)
* [[(L)E+L]] erst Laden, dann Entladen und Laden (je nach ZyklenZahl 1..9 mal)
* [[(E)L+E]] erst Entladen, dann Laden und Entladen (je nach ZyklenZahl 1..9 mal)
* [[SENDER|Sender]] Ladeprogramm für Akkus mit Schutzdiode
* [[Lagern]] Programm zum Erreichen des optimalen Lagerzustandes von Lithium Akkus
/***
|''Name:''|Publish Macro|
|''Version:''|0.3 (4 Jan 2007)|
|''Source''|http://jackparke.googlepages.com/jtw.html#PublishMacro ([[del.icio.us|http://del.icio.us/post?url=http://jackparke.googlepages.com/jtw.html%23PublishMacro]])|
|''Author:''|[[Jack]]|
|''Type:''|Macro|
!Description
Publish tiddlers tagged with these tags <<option txtPublishTags>> (comma seperated) as HTML pages to the subfolder 'publish' (you must create this). Use the PublishTemplateHead and PublishTemplateBody templates to style your pages and the PublishIndexTemplate to define an index page.
!Usage
{{{<<doPublish>>}}} <<doPublish>>
!Revision History
* Original by [[Jack]] 24 May 2006
* Updated 2 Jan 2007
* Refactored 4 Jan 2007

!Code
***/
//{{{
version.extensions.doPublish = {major: 0, minor: 3,
revision: 0, date: new Date("Jan4, 2007")};
config.macros.doPublish = {label: "publish", prompt: "Publish Tiddlers as HTML files"};
if (config.options.txtPublishTags==undefined) config.options.txtPublishTags="publish";
config.shadowTiddlers.PublishTemplateHead = '<title>%0 - %1</title>\n<link rel="stylesheet" type="text/css" href="style.css"/>\n<meta name="keywords" content="%3"/>'
config.shadowTiddlers.PublishTemplateBody = '<div class="viewer"><small><a href=\"index.html\">Home</a> &gt; %1</small><h1>%0</h1>\n<h2>%1</h2>\n%2\n<hr>Tags: %3\n<hr>%4, %5&nbsp;(created %6)\n</div>\n'
config.shadowTiddlers.PublishIndexTemplate = '<div class="viewer"><small><a href="index.html">Home</a> &gt; %1</small><h1>%0</h1><h2>%1</h2>\n<ul>%2\n</ul>\n<small>Published: %6</small>\n</div>\n';
config.macros.doPublish.handler = function(place)
{
 if(!readOnly)
 createTiddlyButton(place,this.label,this.prompt,function () {doPublish(); return false;},null,null,this.accessKey);
}
function doPublish() {
 var savedTiddlers = [];
 var tiddlers = store.getTiddlers("title");
 var place = document.getElementById(story.container)
 var HTMLTemplateHead = store.getTiddlerText("PublishTemplateHead");
 // We cannot render this template because <title> and other tags fail

 var HTMLTemplateBody = store.getTiddlerText("PublishTemplateBody");
 HTMLTemplateBody = renderTemplate(HTMLTemplateBody)

 HTMLTemplateBody = wiki2Web(HTMLTemplateBody);

 var PublishTags = config.options.txtPublishTags || "publish"; PublishTags = PublishTags.split(",")
 var PublishFolder = getPublishPath(); if (!PublishFolder) return;
 var indexFile = "";
 
 var indexFileTemplate = store.getTiddlerText("PublishIndexTemplate");
 // This does not allow <<myMacro>> but wants <div macro="myMacro">
 indexFileTemplate = renderTemplate(indexFileTemplate)
 // This option allows WIKI-syntax but is limited in it's HTML capabilities
 //indexFileTemplate = wikifyStatic(indexFileTemplate)

 for (var t = 0; t < tiddlers.length; t++) {
 var tiddler = tiddlers[t];
 if (tiddler.tags.containsAny(PublishTags)) {
 var tiddlerHTML = wikifyStatic(tiddler.text)
 var HTML = '<html>\n\<head>\n' + HTMLTemplateHead + '\n</head>\n<body>\n' + HTMLTemplateBody + '\n</body>\n</html>';
 HTML = HTML.format([
 wikifyPlain("SiteTitle").htmlEncode(),
 tiddler.title.htmlEncode(),
 wiki2Web(tiddlerHTML),
 tiddler.tags.join(", "),
 tiddler.modifier,
 tiddler.modified.toLocaleString(),
 tiddler.created.toLocaleString()
 ]);
 saveFile(PublishFolder + tiddler.title.filenameEncode() + ".html", HTML)
 indexFile += "<li><a href=\"" + tiddler.title.filenameEncode() + ".html" + "\">" + tiddler.title + "</a></li>\n";
 story.closeTiddler(tiddler.title);
 }
 }
 indexFileTemplate = '<html>\n\<head>\n' + HTMLTemplateHead + '\n</head>\n<body>\n' + indexFileTemplate + '\n</body>\n</html>';
 indexFileTemplate = indexFileTemplate.format([wikifyPlain("SiteTitle").htmlEncode(), wikifyPlain("SiteSubtitle").htmlEncode(), "%2", "", "", "", (new Date()).toLocaleString()])

 indexFile = indexFileTemplate.replace("%2", indexFile)
 indexFile = wiki2Web(indexFile);
 saveFile(PublishFolder + "index.html", indexFile)
 saveFile(PublishFolder + "style.css", store.getTiddlerText("StyleSheet") + store.getTiddlerText("StyleSheetLayout") + store.getTiddlerText("StyleSheetColors"))
 var indexWin = window.open("file://" + PublishFolder.replace(/\\/g, "/") + "index.html", null); indexWin.focus();
}

function renderTemplate(html) {
 var result = document.createElement("div");
 result.innerHTML = html;
 applyHtmlMacros(result,null);
 var temp = result.innerHTML;
 //result.parentNode.removeChild(result);
 return temp;
}

// Convert wikified text to html
function wiki2Web(wikiHTML) {
 var regexpLinks = new RegExp("<a .*?tiddlylink=.*?</a>","img");
 var result = wikiHTML.match(regexpLinks);
 if (result) {
 for(i = 0; i < result.length; i++) {
 var className = result[i].match(/ class="(.*?)"/i)?result[i].match(/ class="(.*?)"/i)[1]:"";
 var tiddlerName = result[i].match(/ tiddlylink="(.*?)"/i)[1];
 var url = tiddlerName.htmlDecode().filenameEncode() + ".html";
 if (!className.match(/tiddlyLinkNonExisting/i))
 wikiHTML = wikiHTML.myReplace(result[i], "<a class=\"" + className + "\" href=\"" + url + "\">" + tiddlerName + "</a>");
 else
 wikiHTML = wikiHTML.myReplace(result[i], "<a class=\"" + className + "\" title=\"Page does not exist\" href=\"#\">" + tiddlerName + "</a>");
 }
 wikiHTML = wikiHTML.replace(/ href="http:\/\//gi, " target=\"_blank\" href=\"http://");
 }
 return wikiHTML
}
function getPublishPath()
{
 var originalPath = document.location.toString();
 // Check we were loaded from a file URL
 if(originalPath.substr(0,5) != "file:")
 {
 alert(config.messages.notFileUrlError);
 if(store.tiddlerExists(config.messages.saveInstructions))
 story.displayTiddler(null,config.messages.saveInstructions);
 return;
 }
 var localPath = getLocalPath(originalPath);
 var backSlash = true;
 var dirPathPos = localPath.lastIndexOf("\\");
 if(dirPathPos == -1)
 {
 dirPathPos = localPath.lastIndexOf("/");
 backSlash = false;
 }
 var backupPath = localPath.substr(0,dirPathPos) + (backSlash ? "\\" :
"/") + "publish" + (backSlash ? "\\" : "/"); 
 return backupPath;
}
// Replace without regex
String.prototype.myReplace = function(sea, rep) {
 var t1 = this.indexOf(sea);
 var t2 = parseInt(this.indexOf(sea)) + parseInt(sea.length);
 var t3 = this.length;
 return this.substring(0, t1) + rep + this.substring(t2, t3)
}
// Convert illegal characters to underscores
String.prototype.filenameEncode = function()
{
 return(this.toLowerCase().replace(/[^a-z0-9_-]/g ,"_"));
}
//}}}
/***
|Name:|QuickOpenTagPlugin|
|Description:|Changes tag links to make it easier to open tags as tiddlers|
|Version:|3.0.1 ($Rev: 3861 $)|
|Date:|$Date: 2008-03-08 10:53:09 +1000 (Sat, 08 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#QuickOpenTagPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
***/
//{{{
config.quickOpenTag = {

	dropdownChar: (document.all ? "\u25bc" : "\u25be"), // the little one doesn't work in IE?

	createTagButton: function(place,tag,excludeTiddler) {
		// little hack so we can do this: <<tag PrettyTagName|RealTagName>>
		var splitTag = tag.split("|");
		var pretty = tag;
		if (splitTag.length == 2) {
			tag = splitTag[1];
			pretty = splitTag[0];
		}
		
		var sp = createTiddlyElement(place,"span",null,"quickopentag");
		createTiddlyText(createTiddlyLink(sp,tag,false),pretty);
		
		var theTag = createTiddlyButton(sp,config.quickOpenTag.dropdownChar,
                        config.views.wikified.tag.tooltip.format([tag]),onClickTag);
		theTag.setAttribute("tag",tag);
		if (excludeTiddler)
			theTag.setAttribute("tiddler",excludeTiddler);
    		return(theTag);
	},

	miniTagHandler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var tagged = store.getTaggedTiddlers(tiddler.title);
		if (tagged.length > 0) {
			var theTag = createTiddlyButton(place,config.quickOpenTag.dropdownChar,
                        	config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);
			theTag.setAttribute("tag",tiddler.title);
			theTag.className = "miniTag";
		}
	},

	allTagsHandler: function(place,macroName,params) {
		var tags = store.getTags(params[0]);
		var filter = params[1]; // new feature
		var ul = createTiddlyElement(place,"ul");
		if(tags.length == 0)
			createTiddlyElement(ul,"li",null,"listTitle",this.noTags);
		for(var t=0; t<tags.length; t++) {
			var title = tags[t][0];
			if (!filter || (title.match(new RegExp('^'+filter)))) {
				var info = getTiddlyLinkInfo(title);
				var theListItem =createTiddlyElement(ul,"li");
				var theLink = createTiddlyLink(theListItem,tags[t][0],true);
				var theCount = " (" + tags[t][1] + ")";
				theLink.appendChild(document.createTextNode(theCount));
				var theDropDownBtn = createTiddlyButton(theListItem," " +
					config.quickOpenTag.dropdownChar,this.tooltip.format([tags[t][0]]),onClickTag);
				theDropDownBtn.setAttribute("tag",tags[t][0]);
			}
		}
	},

	// todo fix these up a bit
	styles: [
"/*{{{*/",
"/* created by QuickOpenTagPlugin */",
".tagglyTagged .quickopentag, .tagged .quickopentag ",
"	{ margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }",
".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }",
".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}",
"/* extra specificity to make it work right */",
"#displayArea .viewer .quickopentag a.button, ",
"#displayArea .viewer .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink, ",
"#mainMenu .quickopentag a.tiddyLink ",
"	{ border:0px solid black; }",
"#displayArea .viewer .quickopentag a.button, ",
"#mainMenu .quickopentag a.button ",
"	{ margin-left:0px; padding-left:2px; }",
"#displayArea .viewer .quickopentag a.tiddlyLink, ",
"#mainMenu .quickopentag a.tiddlyLink ",
"	{ margin-right:0px; padding-right:0px; padding-left:0px; margin-left:0px; }",
"a.miniTag {font-size:150%;} ",
"#mainMenu .quickopentag a.button ",
"	/* looks better in right justified main menus */",
"	{ margin-left:0px; padding-left:2px; margin-right:0px; padding-right:0px; }", 
"#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }",
"#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }",
"#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }",
"/*}}}*/",
		""].join("\n"),

	init: function() {
		// we fully replace these builtins. can't hijack them easily
		window.createTagButton = this.createTagButton;
		config.macros.allTags.handler = this.allTagsHandler;
		config.macros.miniTag = { handler: this.miniTagHandler };
		config.shadowTiddlers["QuickOpenTagStyles"] = this.styles;
		store.addNotification("QuickOpenTagStyles",refreshStyles);
	}
}

config.quickOpenTag.init();

//}}}
!~RAM-Zellen
Sogenannte ~RAM- Zellen (engl. rechargeable alkali manganese) sind spezielle, laut Anbieter etwa 25 mal wiederaufladbare ~Alkali-Manganzellen. Kommerzielle Ladegeräte für ~RAM-Zellen arbeiten mit konstantem Ladestrom, der jede Sekunde für wenige Millisekunden unterbrochen wird, um stromlos die Zellenspannung zu messen. Wenn diese 1,73 V überschreitet, dann wird der Ladestrom so lange abgeschaltet, bis die Zellenspannung 1,69 V wieder unterschritten hat. Die Konstantspannungsmethode ist ebenfalls sicher und geeignet, dafür aber langsamer. ~RAM-Zellen eignen sich nur für ~Niedrigstrom-Anwendungen, wie z. B. in Uhren oder Fernbedienungen. Für Hochstromanwendungen, wie z. B. in Digitalkameras, ~Akku-Werkzeugen oder Modellfahrzeugen, sind sie nicht geeignet und können dabei beschädigt werden. Des Weiteren dürfen ~RAM-Zellen nicht komplett entladen werden, da sie dadurch Schaden erleiden (verkürzte Lebensdauer). Eine Benutzung in einem Gerät, bis dessen Batteriezustandsanzeige eine Warnmeldung ausgibt, ist auf jeden Fall zu vermeiden. Die Zellspannung sollte nicht unter 1,2 V sinken. RAM-Zellen sollten nur im geladenen Zustand gelagert werden.
----
Quelle: [[Wikipedia|http://de.wikipedia.org/wiki/Rechargeable_Alkaline_Manganese#RAM-Zellen]]
!Werkeinstellungen wiederherstellen
|bgcolor(#dddddd):SERVICE &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
|bgcolor(#dddddd):Reset |
In diesem [[passwort|PasswortAbfrage]]geschützten Menü werden alle Parameter auf den Auslieferungszustand zurückgesetzt und dauerhaft gespeichert. Alle vom Bediener vorgenommenen Einstellungen (mit Ausnahme der Kalibrierungswerte für Strom- und Spannungsmessung) sind damit verloren.
!Schnelleinstieg mit Programmierbeispielen
* [[NiCd / NiMh Akkus laden|Laden/NiLaden]]
* [[BleiAkkus laden|Laden/PbLaden]]
* [[Lithiumakkus laden|Laden/LiLaden]]
/***
|Name|SearchOptionsPlugin|
|Source|http://www.TiddlyTools.com/#SearchOptionsPlugin|
|Documentation|http://www.TiddlyTools.com/#SearchOptionsPluginInfo|
|Version|3.0.7|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|extend core search function with additional user-configurable options|
Adds extra options to core search function including selecting which data items to search, enabling/disabling incremental key-by-key searches, and generating a ''list of matching tiddlers'' instead of immediately displaying all matches.  This plugin also adds syntax for rendering 'search links' within tiddler content to embed one-click searches using pre-defined 'hard-coded' search terms.
!!!!!Documentation
>see [[SearchOptionsPluginInfo]]
!!!!!Configuration
<<<
Search in:
<<option chkSearchTitles>> titles <<option chkSearchText>> text <<option chkSearchTags>> tags <<option chkSearchFields>> fields <<option chkSearchShadows>> shadows
<<option chkSearchHighlight>> Highlight matching text in displayed tiddlers
<<option chkSearchList>> Show list of matches
<<option chkSearchListTiddler>> Write list to [[SearchResults]] tiddler
<<option chkSearchTitlesFirst>> Show title matches first
<<option chkSearchByDate>> Sort matching tiddlers by modification date (most recent first)
<<option chkSearchResultsOptions>> Include {{{options...}}} slider in "search again" form
<<option chkIncrementalSearch>> Incremental key-by-key search: {{twochar{<<option txtIncrementalSearchMin>>}}} or more characters,  {{threechar{<<option txtIncrementalSearchDelay>>}}} msec delay
<<option chkSearchOpenTiddlers>> Search only in tiddlers that are currently displayed
<<option chkSearchExcludeTags>> Exclude tiddlers tagged with: <<option txtSearchExcludeTags>>
<<<
!!!!!Revisions
<<<
2010.05.03 3.0.8 added chkSearchResultsOptions to allow/omit the "options..." slider from the "search again" form
|please see [[SearchOptionsPluginInfo]] for additional revision details|
2005.10.18 1.0.0 Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.SearchOptionsPlugin= {major: 3, minor: 0, revision: 8, date: new Date(2010,5,3)};

var defaults={
	chkSearchTitles:	true,
	chkSearchText:		true,
	chkSearchTags:		true,
	chkSearchFields:	true,
	chkSearchTitlesFirst:	true,
	chkSearchList:		true,
	chkSearchHighlight:	true,
	chkSearchListTiddler:	false,
	chkSearchByDate:	false,
	chkIncrementalSearch:	true,
	chkSearchShadows:	true,
	chkSearchOpenTiddlers:	false,
	chkSearchResultsOptions:true,
	chkSearchExcludeTags:	true,
	txtSearchExcludeTags:	'excludeSearch',
	txtIncrementalSearchDelay:	500,
	txtIncrementalSearchMin:	3
}; for (var id in defaults) if (config.options[id]===undefined)
	config.options[id]=defaults[id];

if (config.macros.search.reportTitle==undefined)
	config.macros.search.reportTitle="SearchResults"; // note: not a cookie!
config.macros.search.label+="\xa0"; // a little bit of space just because it looks better
//}}}
// // searchLink: {{{[search[text to find]] OR [search[text to display|text to find]]}}}
//{{{
config.formatters.push( {
	name: "searchLink",
	match: "\\[search\\[",
	lookaheadRegExp: /\[search\[(.*?)(?:\|(.*?))?\]\]/mg,
	prompt: "search for: '%0'",
	handler: function(w)
	{
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			var label=lookaheadMatch[1];
			var text=lookaheadMatch[2]||label;
			var prompt=this.prompt.format([text]);
			var btn=createTiddlyButton(w.output,label,prompt,
				function(){story.search(this.getAttribute("searchText"))},"searchLink");
			btn.setAttribute("searchText",text);
			w.nextMatch = this.lookaheadRegExp.lastIndex;
		}
	}
});
//}}}
// // incremental search uses option settings instead of hard-coded delay and minimum input values
//{{{
var fn=config.macros.search.onKeyPress;
fn=fn.toString().replace(/500/g, "config.options.txtIncrementalSearchDelay||500");
fn=fn.toString().replace(/> 2/g, ">=(config.options.txtIncrementalSearchMin||3)");
eval("config.macros.search.onKeyPress="+fn);
//}}}
// // REPLACE story.search() for option to "show search results in a list"
//{{{
Story.prototype.search = function(text,useCaseSensitive,useRegExp)
{
	var co=config.options; // abbrev
	var re=new RegExp(useRegExp ? text : text.escapeRegExp(),useCaseSensitive ? "mg" : "img");
	if (config.options.chkSearchHighlight) highlightHack=re;
	var matches = store.search(re,co.chkSearchByDate?"modified":"title","");
	if (co.chkSearchByDate) matches=matches.reverse(); // most recent first
	var q = useRegExp ? "/" : "'";
	clearMessage();
	if (!matches.length) {
		if (co.chkSearchListTiddler) discardSearchResults();
		displayMessage(config.macros.search.failureMsg.format([q+text+q]));
	} else {
		if (co.chkSearchList||co.chkSearchListTiddler) 
			reportSearchResults(text,matches);
		else {
			var titles = []; for(var t=0; t<matches.length; t++) titles.push(matches[t].title);
			this.closeAllTiddlers(); story.displayTiddlers(null,titles);
			displayMessage(config.macros.search.successMsg.format([matches.length, q+text+q]));
		}
	}
	highlightHack = null;
}
//}}}
// // REPLACE store.search() for enhanced searching/sorting options
//{{{
TiddlyWiki.prototype.search = function(searchRegExp,sortField,excludeTag,match)
{
	var co=config.options; // abbrev
	var tids = this.reverseLookup("tags",excludeTag,!!match,sortField);
	var opened=[]; story.forEachTiddler(function(tid,elem){opened.push(tid);});

	// eliminate tiddlers tagged with excluded tags
	if (co.chkSearchExcludeTags&&co.txtSearchExcludeTags.length) {
		var ex=co.txtSearchExcludeTags.readBracketedList();
		var temp=[]; for(var t=tids.length-1; t>=0; t--)
			if (!tids[t].tags.containsAny(ex)) temp.push(tids[t]);
		tids=temp;
	}

	// scan for matching titles first...
	var results = [];
	if (co.chkSearchTitles) {
		for(var t=0; t<tids.length; t++) {
			if (co.chkSearchOpenTiddlers && !opened.contains(tids[t].title)) continue; 
			if(tids[t].title.search(searchRegExp)!=-1) results.push(tids[t]);
		}
		if (co.chkSearchShadows)
			for (var t in config.shadowTiddlers) {
				if (co.chkSearchOpenTiddlers && !opened.contains(t)) continue; 
				if ((t.search(searchRegExp)!=-1) && !store.tiddlerExists(t))
					results.push((new Tiddler()).assign(t,config.shadowTiddlers[t]));
			}
	}
	// then scan for matching text, tags, or field data
	for(var t=0; t<tids.length; t++) {
		if (co.chkSearchOpenTiddlers && !opened.contains(tids[t].title)) continue; 
		if (co.chkSearchText && tids[t].text.search(searchRegExp)!=-1)
			results.pushUnique(tids[t]);
		if (co.chkSearchTags && tids[t].tags.join(" ").search(searchRegExp)!=-1)
			results.pushUnique(tids[t]);
		if (co.chkSearchFields && store.forEachField!=undefined)
			store.forEachField(tids[t],
				function(tid,field,val) {
					if (val.search(searchRegExp)!=-1) results.pushUnique(tids[t]);
				},
				true); // extended fields only
	}
	// then check for matching text in shadows
	if (co.chkSearchShadows)
		for (var t in config.shadowTiddlers) {
			if (co.chkSearchOpenTiddlers && !opened.contains(t)) continue; 
			if ((config.shadowTiddlers[t].search(searchRegExp)!=-1) && !store.tiddlerExists(t))
				results.pushUnique((new Tiddler()).assign(t,config.shadowTiddlers[t]));
		}

	// if not 'titles first', or sorting by modification date,
	// re-sort results to so titles, text, tag and field matches are mixed together
	if(!sortField) sortField = "title";
	var bySortField=function(a,b){
		if(a[sortField]==b[sortField])return(0);else return(a[sortField]<b[sortField])?-1:+1;
	}
	if (!co.chkSearchTitlesFirst || co.chkSearchByDate) results.sort(bySortField);

	return results;
}
//}}}
// // HIJACK core {{{<<search>>}}} macro to add "report" and "simple inline" output
//{{{
config.macros.search.SOP_handler=config.macros.search.handler;
config.macros.search.handler = function(place,macroName,params)
{
	// if "report", use SearchOptionsPlugin report generator for inline output
	if (params[1]&&params[1].substr(0,6)=="report") {
		var keyword=params[0];
		var options=params[1].split("=")[1]; // split "report=option+option+..."
		var heading=params[2]?params[2].unescapeLineBreaks():"";
		var matches=store.search(new RegExp(keyword.escapeRegExp(),"img"),"title","excludeSearch");
		if (matches.length) wikify(heading+window.formatSearchResults(keyword,matches,options),place);
	} else if (params[1]) {
		var keyword=params[0];
		var heading=params[1]?params[1].unescapeLineBreaks():"";
		var seperator=params[2]?params[2].unescapeLineBreaks():", ";
		var matches=store.search(new RegExp(keyword.escapeRegExp(),"img"),"title","excludeSearch");
		if (matches.length) {
			var out=[];
			for (var m=0; m<matches.length; m++) out.push("[["+matches[m].title+"]]");
			wikify(heading+out.join(seperator),place);
		}
	} else
		config.macros.search.SOP_handler.apply(this,arguments);
};
//}}}
// // SearchResults panel handling
//{{{
setStylesheet(".searchResults { padding:1em 1em 0 1em; }","searchResults"); // matches std tiddler padding

config.macros.search.createPanel=function(text,matches,body) {

	function getByClass(e,c) { var d=e.getElementsByTagName("div");
		for (var i=0;i<d.length;i++) if (hasClass(d[i],c)) return d[i]; }
	var panel=createTiddlyElement(null,"div","searchPanel","searchPanel");
	this.renderPanel(panel,text,matches,body);
	var oldpanel=document.getElementById("searchPanel");
	if (!oldpanel) { // insert new panel just above tiddlers
		var da=document.getElementById("displayArea");
		da.insertBefore(panel,da.firstChild);
	} else { // if panel exists
		var oldwrap=getByClass(oldpanel,"searchResults");
		var newwrap=getByClass(panel,"searchResults");
		// if no prior content, just insert new content
		if (!oldwrap) oldpanel.insertBefore(newwrap,null);
		else {	// swap search results content but leave containing panel intact
			oldwrap.style.display='block'; // unfold wrapper if needed
			var i=oldwrap.getElementsByTagName("input")[0]; // get input field
			if (i) { var pos=this.getCursorPos(i); i.onblur=null; } // get cursor pos, ignore blur
			oldpanel.replaceChild(newwrap,oldwrap);
			panel=oldpanel; // use existing panel
		} 
	}
	this.showPanel(true,pos);
	return panel;
}

config.macros.search.renderPanel=function(panel,text,matches,body) {

	var wrap=createTiddlyElement(panel,"div",null,"searchResults");
	wrap.onmouseover = function(e){ addClass(this,"selected"); }
	wrap.onmouseout = function(e){ removeClass(this,"selected"); }
	// create toolbar: "alle ", " falten/öffnen ", " schließen"
	var tb=createTiddlyElement(wrap,"div",null,"toolbar");
	var b=createTiddlyButton(tb, "alle", "open all matching tiddlers", function() {
		story.displayTiddlers(null,this.getAttribute("list").readBracketedList()); return false; },"button");
	var list=""; for(var t=0;t<matches.length;t++) list+='[['+matches[t].title+']] ';
	b.setAttribute("list",list);
	var b=createTiddlyButton(tb, "falten", "toggle display of search results", function() {
		config.macros.search.foldPanel(this); return false; },"button");
	var b=createTiddlyButton(tb, "schließen", "dismiss search results",	function() {
		config.macros.search.showPanel(false); return false; },"button");
	createTiddlyText(createTiddlyElement(wrap,"div",null,"title"),"Search for: "+text); // title
	wikify(body,createTiddlyElement(wrap,"div",null,"viewer")); // report
	return panel;
}

config.macros.search.showPanel=function(show,pos) {
	var panel=document.getElementById("searchPanel");
	var i=panel.getElementsByTagName("input")[0];
	i.onfocus=show?function(){config.macros.search.stayFocused(true);}:null;
	i.onblur=show?function(){config.macros.search.stayFocused(false);}:null;
	if (show && panel.style.display=="block") { // if shown, grab focus, restore cursor
		if (i&&this.stayFocused()) { i.focus(); this.setCursorPos(i,pos); }
		return;
	}
	if(!config.options.chkAnimate) {
		panel.style.display=show?"block":"none";
		if (!show) { removeChildren(panel); config.macros.search.stayFocused(false); }
	} else {
		var s=new Slider(panel,show,false,show?"none":"children");
		s.callback=function(e,p){e.style.overflow="visible";}
		anim.startAnimating(s);
	}
	return panel;
}

config.macros.search.foldPanel=function(button) {
	var d=document.getElementById("searchPanel").getElementsByTagName("div");
	for (var i=0;i<d.length;i++) if (hasClass(d[i],"viewer")) var v=d[i]; if (!v) return;
	var show=v.style.display=="none";
	if(!config.options.chkAnimate)
		v.style.display=show?"block":"none";
	else {
		var s=new Slider(v,show,false,"none");
		s.callback=function(e,p){e.style.overflow="visible";}
		anim.startAnimating(s);
	}
	button.innerHTML=show?"falten":"öffnen";
	return false;
}

config.macros.search.stayFocused=function(keep) { // TRUE/FALSE=set value, no args=get value
	if (keep===undefined) return this.keepReportInFocus;
	this.keepReportInFocus=keep;
	return keep
}	

config.macros.search.getCursorPos=function(i) {
	var s=0; var e=0; if (!i) return { start:s, end:e };
	try {
		if (i.setSelectionRange) // FF
			{ s=i.selectionStart; e=i.selectionEnd; }
		if (document.selection && document.selection.createRange) { // IE
			var r=document.selection.createRange().duplicate();
			var len=r.text.length; s=0-r.moveStart('character',-100000); e=s+len;
		}
	}catch(e){};
	return { start:s, end:e };
}
config.macros.search.setCursorPos=function(i,pos) {
	if (!i||!pos) return; var s=pos.start; var e=pos.end;
	if (i.setSelectionRange) //FF
		i.setSelectionRange(s,e);
	if (i.createTextRange) // IE
		{ var r=i.createTextRange(); r.collapse(true); r.moveStart("character",s); r.select(); }
}
//}}}
// // SearchResults report generation
// note: these functions are defined globally, so they can be more easily redefined to customize report formats//
//{{{
if (!window.reportSearchResults) window.reportSearchResults=function(text,matches)
{
	var cms=config.macros.search; // abbrev
	var body=window.formatSearchResults(text,matches);
	if (!config.options.chkSearchListTiddler) // show #searchResults panel
		window.scrollTo(0,ensureVisible(cms.createPanel(text,matches,body)));
	else { // write [[SearchResults]] tiddler
		var title=cms.reportTitle;
		var who=config.options.txtUserName;
		var when=new Date();
		var tags="excludeLists excludeSearch temporary";
		var tid=store.getTiddler(title); if (!tid) tid=new Tiddler();
		tid.set(title,body,who,when,tags);
		store.addTiddler(tid);
		story.closeTiddler(title);
		story.displayTiddler(null,title);
	}
}

if (!window.formatSearchResults) window.formatSearchResults=function(text,matches,opt)
{
	var body='';
	var title=config.macros.search.reportTitle
	var q = config.options.chkRegExpSearch ? "/" : "'";
	if (!opt) var opt="all";
	var parts=opt.split("+");
	for (var i=0; i<parts.length; i++) { var p=parts[i].toLowerCase();
		if (p=="again"||p=="all")   body+=window.formatSearchResults_again(text,matches);
		if (p=="summary"||p=="all") body+=window.formatSearchResults_summary(text,matches);
		if (p=="list"||p=="all")    body+=window.formatSearchResults_list(text,matches);
		if (p=="buttons"||p=="all") body+=window.formatSearchResults_buttons(text,matches);
	}
	return body;
}

if (!window.formatSearchResults_again) window.formatSearchResults_again=function(text,matches)
{
	var title=config.macros.search.reportTitle
	var body='';
	// search again
	body+='{{span{<<search "'+text.replace(/"/g,'&#x22;')+'">> /%\n';
	body+='%/<html><input type="button" value="search again"';
	body+=' onclick="var t=this.parentNode.parentNode.getElementsByTagName(\'input\')[0];';
	body+=' config.macros.search.doSearch(t); return false;">';
	if (!config.options.chkSearchResultsOptions) { // omit "options..."
		body+='</html>}}}\n\n';
		return body;
	}
	body+=' <a href="javascript:;" onclick="';
	body+=' var e=this.parentNode.nextSibling;';
	body+=' var show=e.style.display!=\'block\';';
	body+=' if(!config.options.chkAnimate) e.style.display=show?\'block\':\'none\';';
	body+=' else anim.startAnimating(new Slider(e,show,false,\'none\'));';
	body+=' return false;">options...</a>';
	body+='</html>@@display:none;border-left:1px dotted;margin-left:1em;padding:0;padding-left:.5em;font-size:90%;/%\n';
	body+='	%/<<option chkSearchTitles>>titles /%\n';
	body+='	%/<<option chkSearchText>>text /%\n';
	body+='	%/<<option chkSearchTags>>tags /%\n';
	body+='	%/<<option chkSearchFields>>fields /%\n';
	body+='	%/<<option chkSearchShadows>>shadows\n';
	body+='	<<option chkCaseSensitiveSearch>>case-sensitive /%\n';
	body+='	%/<<option chkRegExpSearch>>text patterns /%\n';
	body+='	%/<<option chkSearchByDate>>sorted by date\n';
	body+='	<<option chkSearchHighlight>> highlight matching text in displayed tiddlers\n';
	body+='	<<option chkIncrementalSearch>>incremental key-by-key search: /%\n';
	body+='	%/{{twochar{<<option txtIncrementalSearchMin>>}}} or more characters, /%\n';
	body+='	%/{{threechar{<<option txtIncrementalSearchDelay>>}}} msec delay\n';
	body+='	<<option chkSearchOpenTiddlers>> search only in tiddlers that are currently displayed\n';
	body+='	<<option chkSearchExcludeTags>>exclude tiddlers tagged with:\n';
	body+='	{{editor{<<option txtSearchExcludeTags>>}}}/%\n';
	body+='%/@@}}}\n\n';
	return body;
}

if (!window.formatSearchResults_summary) window.formatSearchResults_summary=function(text,matches)
{
	// summary: nn tiddlers found matching '...', options used
	var body='';
	var co=config.options; // abbrev
	var title=config.macros.search.reportTitle
	var q = co.chkRegExpSearch ? "/" : "'";
	body+="''"+config.macros.search.successMsg.format([matches.length,q+"{{{"+text+"}}}"+q])+"''\n";
	var opts=[];
	if (co.chkSearchTitles) opts.push("titles");
	if (co.chkSearchText) opts.push("text");
	if (co.chkSearchTags) opts.push("tags");
	if (co.chkSearchFields) opts.push("fields");
	if (co.chkSearchShadows) opts.push("shadows");
	if (co.chkSearchOpenTiddlers) body+="^^//search limited to displayed tiddlers only//^^\n";
	body+="~~&nbsp; searched in "+opts.join(" + ")+"~~\n";
	body+=(co.chkCaseSensitiveSearch||co.chkRegExpSearch?"^^&nbsp; using ":"")
		+(co.chkCaseSensitiveSearch?"case-sensitive ":"")
		+(co.chkRegExpSearch?"pattern ":"")
		+(co.chkCaseSensitiveSearch||co.chkRegExpSearch?"matching^^\n":"");
	return body;
}

if (!window.formatSearchResults_list) window.formatSearchResults_list=function(text,matches)
{
	// bullet list of links to matching tiddlers
	var body='';
	var co=config.options; // abbrev
	var pattern=co.chkRegExpSearch?text:text.escapeRegExp();
	var sensitive=co.chkCaseSensitiveSearch?"mg":"img";
	var link='{{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="'
		+'if(config.options.chkSearchHighlight)'
		+'	highlightHack=new RegExp(\x27'+pattern+'\x27.escapeRegExp(),\x27'+sensitive+'\x27);'
		+'story.displayTiddler(null,\x27%0\x27);'
		+'highlightHack = null; return false;'
		+'" title="%2">%1</a></html>}}}';
	for(var t=0;t<matches.length;t++) {
		body+="* ";
		if (co.chkSearchByDate)
			body+=matches[t].modified.formatString('YYYY.0MM.0DD 0hh:0mm')+" ";
		var title=matches[t].title;
		var fixup=title.replace(/'/g,"\\x27").replace(/"/g,"\\x22");
		var tid=store.getTiddler(title);
		var tip=tid?tid.getSubtitle():''; tip=tip.replace(/"/g,"&quot;");
		body+=link.format([fixup,title,tip])+'\n';
	}
	return body;
}

if (!window.formatSearchResults_buttons) window.formatSearchResults_buttons=function(text,matches)
{
	// embed buttons only if writing SearchResults to tiddler
	if (!config.options.chkSearchListTiddler) return "";
	// "alle" button
	var title=config.macros.search.reportTitle;
	var body="";
	body+="@@diplay:block;<html><input type=\"button\" href=\"javascript:;\" "
		+"onclick=\"story.displayTiddlers(null,[";
	for(var t=0;t<matches.length;t++)
		body+="'"+matches[t].title.replace(/\'/mg,"\\'")+"'"+((t<matches.length-1)?", ":"");
	body+="],1);\" accesskey=\"O\" value=\"open all matching tiddlers\"></html> ";
	// "discard SearchResults" button
	body+="<html><input type=\"button\" href=\"javascript:;\" "
		+"onclick=\"discardSearchResults()\" value=\"discard "+title+"\"></html>";
	body+="@@\n";
	return body;
}

if (!window.discardSearchResults) window.discardSearchResults=function()
{
	// remove the tiddler
	story.closeTiddler(config.macros.search.reportTitle);
	store.deleteTiddler(config.macros.search.reportTitle);
	store.notify(config.macros.search.reportTitle,true);
}
//}}}
!Akkus mit Schutzdiode laden (Senderakkus)
[img[Bild|http://www.akkumatiki.de/bilder/AM_sender.jpg]]
Fernsteuersender haben oft eine interne Schutzdiode, die das [[Entladen]] des eingebauten Senderakkus bzw. eine Spannungsmessung an der Ladebuchse verhindert. Mit Auswahl des Programms SENDER ist das [[Laden] von solchen Akkus trotzdem mit automatischer Vollerkennung möglich:
AkkuTyp xxxx muss passend vorgegeben werden
|[[Programm]]| [[SENDER|Sender]] |
|[[Stop|AbschaltMethode]]| xxxx | beliebig |
|[[Zellen|ZellenZahl]]| 6 | muss passend vorgegeben werden |
|I-Lade| xxxx | auf maximal 1500mA beschränkt |
|[[Menge|LadeEntMenge]]| 0 | oder [[Mengenlimit|LadeEntMenge]] |
Achtung:
* Schutzdiode und Anschlussleitungen der Senderakkus sind meist nur für kleine Ströme ausgelegt. Der LadeStrom wird deshalb bei "Senderladen" automatisch auf maximal 1500mA begrenzt, was aber bei manchen Sendern immer noch zu viel sein kann. Deshalb den AkkuParameter "LadeStrom" immer auf den vom Senderhersteller vorgeschriebenen Maximalstrom kontrollieren.
*Die Spannungsmessung erfolgt nicht stromlos und ist deshalb etwas ungenauer. Deshalb das [[Programm]] nur verwenden, wenn es wegen einer Schutzdiode am Akku unbedingt nötig ist. 
!Kalibrierung der Temperatursensoren
|bgcolor(#dddddd):SERVICE &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
|bgcolor(#dddddd):Sensorkalib.|
In diesem passwortgeschützten Menü erfolgt die gleichzeitige Kalibrierung der internen und externen [[TemperaturSensor]]en. Der Vorgang ist in der Bauanleitung beschrieben.
Achtung: Das Menü nur dann aufrufen, wenn die Sensoren auch tatsächlich kalibriert werden sollen. Beim Verlassen des Menüs werden die neuen Werte sofort automatisch gespeichert und müssen deshalb stimmen!
Das [[Akkumatik]] ist mit einer [[seriellen Schnittstelle|http://de.wikipedia.org/wiki/Serielle_Schnittstelle]] ausgestattet. Damit ist es möglich, das Ladegerät mit einem PC/Laptop zu verbinden. 
Verfügt der Rechner ebenfalls über eine serielle Schnittstelle, werden die Geräte mit einem normalen seriellen ~SUB-D Kabel miteinander verbunden. (=>PC_Schnittstelle)
Jüngere Rechner, insbesondere Laptops verfügen aber nicht mehr über eine serielle Schnittstelle, deshalb wird ein ~USB-Seriell-Adapter-Konverter eingesetzt, welcher die Signale der [[RS232-Schnittstelle|PC_Schnittstelle]] in ~USB-Signale wandelt. Damit kommunizieren beide Geräte wieder miteinander.

Dadurch werden folgende Vorgänge möglich:
* Aufwerten der Akkumatik[[software|SoftWare]] (UpDate)
* mittels LogView die Aktivitäten des Ladegerätes 
**darstellen (visualisieren) und 
**mitschreiben (loggen)
**[[Fernsteuern|Fernsteuerung]] des [[Akkumatik]]
**[[Parametrierung]] des [[Akkumatik]] in einer zukünftigen [[LogView]]-Version
!Das Servicemenü
Das Servicemenü wird vom Hauptmenü aus aufgerufen durch die [[kombinierte Tastenaktion|Tastatur/kombTastenaktion]]

''ESC''+''ENTER''
#PasswortAbfrage
** ''DN'' (runter)
#[[Werkeinstellungen wiederherstellen|RESET]]
** ''DN'' (runter)
#Einstellungen dauerhaft im EEPROM [[speichern|Sichern]]
** ''DN'' (runter)
#[[Kalibrierung]] allgemein
** ''DN'' (runter)
#Kalibrierung der [[Temperatursensoren|SensorKalib]]
** ''DN'' (runter)
#Die SystemParameter
/%
!info
|Name|SetTiddlerHeight|
|Source|http://www.TiddlyTools.com/#SetTiddlerHeight|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|use CSS to set a fixed or percentage height for each tiddler|
Usage
<<<
{{{
<<tiddler SetTiddlerHeight>>
}}}
Try it:
<<tiddler SetTiddlerHeight##show>>
<<<
!end

!show
<<tiddler {{
	if (config.options.txtTiddlerHeight===undefined)
		config.options.txtTiddlerHeight='auto';
'';}}>>tiddler height: {{smallform{<<option txtTiddlerHeight>><<tiddler {{
	var t=place.lastChild;
	t.style.width='4em'; t.style.textAlign='center';
	t.title='enter height using px, em, in, cm, %, or auto';
	t.onfocus=function(){this.select();};
	t.onblur=function(){this.onchange();}; /* for IE */
	t.coreOnChange=t.onchange; t.onchange=function() { // hijack: update CSS when field changes
		if (this.coreOnChange) this.coreOnChange();
		window.setTiddlerHeight();
	};
	window.setTiddlerHeight=function() {
		var opt='txtTiddlerHeight';
		var h=config.options[opt]; if (!h.length) h='auto';
		if (!h.replace(/[0-9]*/,'').length) h+='px';
		config.macros.option.propagateOption(opt,'value',h,'input');
		if (config.options[opt]=='auto') removeCookie(opt);
		var top=findPosY(document.getElementById('tiddlerDisplay'));
		if (h.indexOf('%')!=-1)
			h=((findWindowHeight()-top)*parseInt(h.replace(/[%]/,''))/100)+'px';
		var heightParam=(config.browser.isIE?'height':'max-height')+':'+h;
		var overflowParam='overflow:'+(h!='auto'?'auto':'visible')+' !important'; 
		var css='.viewer { '+heightParam+'; '+overflowParam+'; }';
		setStylesheet(css,'tiddlerHeightStyles');
	};
	if (window.addEventListener) // so % height can auto-adjust if window is resized
		window.addEventListener('resize',window.setTiddlerHeight,false);
	if (window.removeCookie===undefined) { // if not already defined by TW core...
		window.removeCookie=function(name) {
			document.cookie = name+'=; expires=Thu, 01-Jan-1970 00:00:01 UTC; path=/;'; 
		};
	}
'';}}>>}}}
!end

%/<<tiddler {{var src='SetTiddlerHeight'; src+(tiddler&&tiddler.title==src?'##info':'##show');}}>>
!1 Sicherheitshinweise
!!Allgemein:
*Vor der ersten Inbetriebnahme diese Bedienungsanleitung aufmerksam lesen.
*Das Gerät immer außerhalb der Reichweite von Kindern lagern und betreiben.
*Am Gerät und den angeschlossenen Akkus können Spannungen über 50V entstehen. Entsprechende Vorsichtsmaßnahmen sind zu beachten.
*Das Gerät und angeschlossene Akkus im laufenden Betrieb niemals unbeaufsichtigt lassen und nicht in der Nähe von brennbaren Gegenständen betreiben.
*Auf freie Luftzirkulation an Gerät und Akku achten. Die Kühlluftöffnungen nicht abdecken. Das Gerät nur bei Umgebungstemperaturen zwischen 0°C und 30°C betreiben.
*Am Gerät keine Änderungen vornehmen und es nur mit den originalen Anschlusskabel und Steckern bzw. [[Polklemmen|http://www.rc-network.de/magazin/artikel_08/art_08-041/art_041-01.html#54]] betreiben.
*Gerät vor Feuchtigkeit, Staub, Schmutz und direkter Sonneneinstrahlung schützen.
*Gerät vor jedem Gebrauch auf Beschädigungen an Kabeln, Steckern, Gehäuse und Display kontrollieren. Ein defektes Gerät darf nicht mehr in Betrieb genommen werden.
*Lade- und Sicherheitsvorschriften der Akkuhersteller beachten. Akkus nicht überladen, Explosions- und Brandgefahr.
!!Stromversorgung:
*Für die Stromversorgung eine leistungsfähige 12V Batterie oder ein geeignetes stabilisiertes Netzteil verwenden.
*Bei Versorgung aus einer im Fahrzeug eingebauten 12V Autobatterie den Motor abstellen.
*Nicht den Minuspol eines Ladeausgangs mit dem Pluspol der Versorgung (Autobatterie) verbinden. Kurzschlussgefahr!
*Nach Trennen der Versorgung darf am Ausgang-2 kein Akku verbleiben - dieser würde das Gerät mit Spannung versorgen und  unkontrolliert entladen werden.
*Bei Nichtgebrauch angeschlossene Akkus abstecken und das Gerät von der Versorgung trennen.
*Beim An-/Abstecken immer folgende Reihenfolge beachten:
# ggf. Netzteil einschalten
# Lader an Versorgung anstecken
# Akku an Lader anstecken
# Laden....
# Akku abstecken
# Lader von Versorgung trennen
# ggf. Netzteil ausschalten
Bei Nichtbeachtung kann u.U. das Gerät beschädigt werden.
!!Akkus:
*Folgende Batterien / Akkus dürfen nicht an das Gerät angeschlossen werden:
**Nicht aufladbare Batterien
**Im Modell oder anderswo eingebaute Akkus
**Stark erwärmte Akkus
**Bereits voll geladene Akkus
**Defekte Akkus
**Verbund unterschiedlicher Akkuzellen (Typ, Kapazität, Ladezustand, Alter, Fertigungscharge)
**Akkus mit integrierten Abschaltvorrichtungen
*Lithiumakkus nur mit geeigneten Schutzschaltungen (Balancern) laden.
*Beim Start eines Programms die eingestellten AkkuParameter (insbesondere Akkutyp und Zellenzahl) kontrollieren und die Ladevorschriften des Akkuherstellers beachten.
*Für die automatische Vollerkennung bei NiCd / [[NiMh-Akkus|NiMh]] ist ein Mindestladestrom von ca. 1C erforderlich (z.B. 1700mA Ladestrom bei einem Akku mit 1700mAh Nennkapazität).
*Nach dem Beenden des Ladevorgangs kontrollieren, ob die eingeladene Ladungsmenge ausreichend ist. Bei automatischer Vollerkennung kann unter ungünstigen Bedingungen (tief entladene oder defekte Akkus, starkes Zellenrauschen, etc.) die Ladung zu früh beendet werden.
!!Anschluss:
*Am [[Ausgang-2|TechnischeDaten/Ausgang2]] nie Akkus mit höherer Spannung als die Versorgung anschließen.
*Alle Verbindungen zwischen Versorgung + Ladegerät + Akkuzellen müssen niederohmig und fest sein. Sprunghafte Stromänderungen durch schlechte Kontakte können das Gerät beschädigen.
*Kabel zum Akku möglichst kurz und ausreichend stark. Um Störabstrahlung zu vermeiden, muss das Kabel durch einen Ferritkern geführt werden.
*Kurzschluss am Ladekabel und Akku vermeiden. Zuerst das Ladekabel am Gerät anstecken und dann den Akku am Ladekabel
** Abstecken in umgekehrter Reihenfolge. Nur isolierte und verpolungssichere Stecker verwenden.
*Akkus nicht während eines laufenden Programms vom Gerät trennen.
*Nicht mehrere Akkupacks gleichzeitig an einen Ladeausgang anschließen. Die beiden Ladeausgänge nicht miteinander verbinden.
!Einstellungen dauerhaft im EEPROM speichern
|bgcolor(#dddddd):SERVICE &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|
|bgcolor(#dddddd):Sichern|
In diesem [[passwort|PasswortAbfrage]]geschützten Menü werden die aktuellen SystemParameter und die [[Kalibrierung]]swerte in den nichtflüchtigen Speicher (EEPROM) geschrieben und damit dauerhaft gespeichert. Die Einstellungen sind somit beim nächsten Einschalten des Gerätes wieder vorhanden. 
<<closeAll>><<permaview>><<newTiddler>><<newJournal "DD. MMM YYYY" "Journal">><<saveChanges>><<tiddler TspotSidebar>><<slider chkSliderOptionsPanel OptionsPanel "Optionen »" "Optionen von TiddlyWiki ändern">>
!Einstellen des Signaltons
[img[Bild|http://www.akkumatiki.de/bilder/AM_signalton.jpg]]
* 0 kein Signalton
* 1 kurzes Signal bei Tastendruck
* 2 einmaliges Signal bei Ende/Fehler
* 3 einmaliges Signal bei Ende/Fehler, kurzes Signal bei Tastendruck
* 4 drei Minuten Intervallton bei Ende/Fehler
* 5 drei Minuten Intervallton bei Ende/Fehler, kurzes Signal bei Tastendruck
/***
|Name|SinglePageModePlugin|
|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|
|Documentation|http://www.TiddlyTools.com/#SinglePageModePluginInfo|
|Version|2.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Show tiddlers one at a time with automatic permalink, or always open tiddlers at top/bottom of page.|
This plugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one tiddler displayed at a time.
!!!!!Documentation
>see [[SinglePageModePluginInfo]]
!!!!!Configuration
<<<
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)

Notes:
* The "display one tiddler at a time" option can also be //temporarily// set/reset by including a 'paramifier' in the document URL: {{{#SPM:true}}} or {{{#SPM:false}}}.
* If more than one display mode is selected, 'one at a time' display takes precedence over both 'top' and 'bottom' settings, and if 'one at a time' setting is not used, 'top of page' takes precedence over 'bottom of page'.
* When using Apple's Safari browser, automatically setting the permalink causes an error and is disabled.
<<<
!!!!!Revisions
<<<
2008.10.17 [2.9.6] changed chkSinglePageAutoScroll default to false
| Please see [[SinglePageModePluginInfo]] for previous revision details |
2005.08.15 [1.0.0] Initial Release.  Support for BACK/FORWARD buttons adapted from code developed by Clint Checketts.
<<<
!!!!!Code
***/
//{{{
version.extensions.SinglePageModePlugin= {major: 2, minor: 9, revision: 6, date: new Date(2008,10,17)};
//}}}
//{{{
config.paramifiers.SPM = { onstart: function(v) {
        config.options.chkSinglePageMode=eval(v);
        if (config.options.chkSinglePageMode && config.options.chkSinglePagePermalink && !config.browser.isSafari) {
                config.lastURL = window.location.hash;
                if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
        }
} };
//}}}
//{{{
if (config.options.chkSinglePageMode==undefined)
        config.options.chkSinglePageMode=false;
if (config.options.chkSinglePagePermalink==undefined)
        config.options.chkSinglePagePermalink=true;
if (config.options.chkSinglePageKeepFoldedTiddlers==undefined)
        config.options.chkSinglePageKeepFoldedTiddlers=false;
if (config.options.chkSinglePageKeepEditedTiddlers==undefined)
        config.options.chkSinglePageKeepEditedTiddlers=false;
if (config.options.chkTopOfPageMode==undefined)
        config.options.chkTopOfPageMode=false;
if (config.options.chkBottomOfPageMode==undefined)
        config.options.chkBottomOfPageMode=false;
if (config.options.chkSinglePageAutoScroll==undefined)
        config.options.chkSinglePageAutoScroll=false;
//}}}
//{{{
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; // no change in hash
        var tids=decodeURIComponent(window.location.hash.substr(1)).readBracketedList();
        if (tids.length==1) // permalink (single tiddler in URL)
                story.displayTiddler(null,tids[0]);
        else { // restore permaview or default view
                config.lastURL = window.location.hash;
                if (!tids.length) tids=store.getTiddlerText("DefaultTiddlers").readBracketedList();
                story.closeAllTiddlers();
                story.displayTiddlers(null,tids);
        }
}


if (Story.prototype.SPM_coreDisplayTiddler==undefined)
        Story.prototype.SPM_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)
{
        var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
        var tiddlerElem=document.getElementById(story.idPrefix+title); // ==null unless tiddler is already displayed
        var opt=config.options;
        var single=opt.chkSinglePageMode && !startingUp;
        var top=opt.chkTopOfPageMode && !startingUp;
        var bottom=opt.chkBottomOfPageMode && !startingUp;
        if (single) {
                story.forEachTiddler(function(tid,elem) {
                        // skip current tiddler and, optionally, tiddlers that are folded.
                        if (        tid==title
                                || (opt.chkSinglePageKeepFoldedTiddlers && elem.getAttribute("folded")=="true"))
                                return;
                        // if a tiddler is being edited, ask before closing
                        if (elem.getAttribute("dirty")=="true") {
                                if (opt.chkSinglePageKeepEditedTiddlers) return;
                                // if tiddler to be displayed is already shown, then leave active tiddler editor as is
                                // (occurs when switching between view and edit modes)
                                if (tiddlerElem) return;
                                // otherwise, ask for permission
                                var msg="'"+tid+"' is currently being edited.\n\n";
                                msg+="Press OK to save and close this tiddler\nor press Cancel to leave it opened";
                                if (!confirm(msg)) return; else story.saveTiddler(tid);
                        }
                        story.closeTiddler(tid);
                });
        }
        else if (top)
                arguments[0]=null;
        else if (bottom)
                arguments[0]="bottom";
        if (single && opt.chkSinglePagePermalink && !config.browser.isSafari) {
                window.location.hash = encodeURIComponent(String.encodeTiddlyLink(title));
                config.lastURL = window.location.hash;
                document.title = wikifyPlain("SiteTitle") + " - " + title;
                if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);
        }
        if (tiddlerElem && tiddlerElem.getAttribute("dirty")=="true") { // editing... move tiddler without re-rendering
                var isTopTiddler=(tiddlerElem.previousSibling==null);
                if (!isTopTiddler && (single || top))
                        tiddlerElem.parentNode.insertBefore(tiddlerElem,tiddlerElem.parentNode.firstChild);
                else if (bottom)
                        tiddlerElem.parentNode.insertBefore(tiddlerElem,null);
                else this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
        } else
                this.SPM_coreDisplayTiddler.apply(this,arguments); // let CORE render tiddler
        var tiddlerElem=document.getElementById(story.idPrefix+title);
        if (tiddlerElem&&opt.chkSinglePageAutoScroll) {
                // scroll to top of page or top of tiddler
                var isTopTiddler=(tiddlerElem.previousSibling==null);
                var yPos=isTopTiddler?0:ensureVisible(tiddlerElem);
                // if animating, defer scroll until after animation completes
                var delay=opt.chkAnimate?config.animDuration+10:0;
                setTimeout("window.scrollTo(0,"+yPos+")",delay);
        }
}

if (Story.prototype.SPM_coreDisplayTiddlers==undefined)
        Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;
Story.prototype.displayTiddlers = function() {
        // suspend single/top/bottom modes when showing multiple tiddlers
        var opt=config.options;
        var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
        var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
        var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
        this.SPM_coreDisplayTiddlers.apply(this,arguments);
        opt.chkBottomOfPageMode=saveBPM;
        opt.chkTopOfPageMode=saveTPM;
        opt.chkSinglePageMode=saveSPM;
}
//}}}
{{block{{{floatright{<<option chkRandomTheme>><script>
	place.lastChild.title="select a random theme at startup";
</script><<switchTheme [[label:randomize]] [[prompt:select a random theme at startup]] [[*]]>>}}}++++(themes)[themes]
	<<switchTheme width:100%>>
===
}}}{{block{+++(displayoptions)[display]...
	{{borderleft{
	<<option chkSinglePageMode>> one tiddler at a time
	<<tiddler ToggleSiteMenu>>
	<<tiddler ToggleSiteTitles>>
	<<tiddler ToggleBreadcrumbs>>
	<<tiddler ToggleScrollingSidebars>>
	<<option chkAnimate>> enable animation effects
	<<option chkShowQuickEdit>><script>
		var chk=place.lastChild;
		chk.coreOnChange=chk.onchange;
		chk.onchange=function() {
			// refresh active editors when checkbox is toggled
			if (this.coreOnChange) this.coreOnChange.apply(this,arguments);
			story.forEachTiddler(function(t,e){if (story.isDirty(t)) refreshElements(e);});
		};
	</script> show ~QuickEdit toolbar
	<<option chkPopupPreviews>> shift-click previews links
	commands: <<option chkIconsShowText>>text <<option chkIconsShowImage>>icons
	}}}
===
}}}{{block{+++(displayoptions_page)[layout]
	{{borderleft{
	{{floatleft right{
	<<tiddler SetStoryHeight>>
	<<tiddler SetSidebarTabsHeight>>
	<<tiddler SetPopupsHeight>>
	<<tiddler SetTiddlerHeight>>
	<<tiddler SetTiddlerColumns>>}}}
	{{clear block{}}}}}}
===
}}}@@display:block;+++(saving)[saving]...
	{{borderleft{
	<<option chkAutoSave>> auto save
	<<option chkSaveBackups>> create backup file
	<<option chkTemporaryKeep>> keep temporary tiddlers
	<<option chkGenerateAnRssFeed>> create .xml file}}}===
@@@@display:block;+++(upload)[upload]...
	{{borderleft{
	<<tiddler SiteMenuOptionsUpload>>}}}===
@@@@display:block;+++[username]...
	<<option txtUserName>><script>
		place.lastChild.setAttribute("autocomplete","off");
		var s=place.lastChild.style;s.width="98%";s.fontSize="8pt";
	</script>===
@@@@display:block;+++(cookies)[cookies]...
	{{smallform{<<cookieManager>>}}}===
@@[[AdvancedOptions]]<script>
	place.lastChild.style.fontStyle="normal";
	place.lastChild.style.fontWeight="normal";
	place.lastChild.innerHTML="advanced options...";
</script>
ein [[Wiki|http://akkumtiki.tiddlyspot.com]]  zum ~Lade-Entlade-Diagnosesystem
<html>
<font size=8>
<a href=http://www.akkumatik.de>Akkumatik</a>
</font>
</html>
*Eine [[serielle Schnittstelle|PC_Schnittstelle]] verbindet das Ladegerät mit dem PC und ermöglicht über die Software LogView eine komfortable Auswertung des laufenden Programms. Die Daten können auch offline gespeichert und erst später zum PC gesendet werden.  
* Eine komplette [[Fernsteuerung]] und [[Parametrierung]] des Laders via PC ist ebenfalls realisiert.
* Die Steuersoftware ist in einem ~Flash-Memory gespeichert und kann jederzeit problemlos mit PC/Notebook an der [[seriellen Schnittstelle|PC_Schnittstelle]] aktualisiert werden. Softwareupdates gibt es kostenlos unter [[Akkumatik|www.akkumatik.de]]
!Sonderfunktionen
* [[Interner Balancer|Balancer]]/Equalizer
* [[Externer Balancer|Balancer]]/Equalizer
* Messung der [[Akkutemperatur|TemperaturSensor]]
* Entladen mit externem LastWiderstand
* Stromstabilisierte GlühkerzenHeizung
* Daten ohne PC aufzeichnen (OfflineLogging)
Bei Anschluss an die StromVersorgung erscheint in der obersten Zeile des [[Display]]s zunächst ein schwarzer Balken, dann der Startbildschirm:
| [img[Startbildschirm|http://hfranzw.de/Akkumatiki/pics/Akkumatik_009Version.jpg]] |>|
| __S__oft__w__are-Version | __H__ard__w__are-Version |
| hier: 1.23 | hier: 015 |
!Stop-Delay
[img[Bild|http://www.akkumatiki.de/bilder/AM_stopdelay.jpg]]
Hier kann die automatische [[Vollerkennung]] bei Ladebeginn unterdrückt werden. 
Wenn Stop-Delay z.B. auf 180 Sekunden eingestellt ist, gibt es während dieser Zeit auch bei starkem „Zellenrauschen“ des Akkus keine Frühabschaltung.
Die [[Lademengenbegrenzung|LadeEntMenge]] ([[Limiter]]) ist trotzdem aktiv.
! Einstellen der Strommethode
Mit dem AkkuParameter ''Stromwahl'' wird festgelegt, ob der [[Lade-|LadeStrom]]/[[EntladeStrom]] automatisch geregelt werden soll, oder ob vorgegebene Grenzen einzuhalten sind.
<part Auto>
!!Stromwahl AUTO
Bei Stromwahl AUTO wird der für den Akku optimale Lade-/Entladestrom automatisch entsprechend dem aktuellen Innenwiderstand des Akkus geregelt, wobei aber 5A nicht überschritten werden.
|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;AkkuParameter|
|bgcolor(#dddddd):Stromwahl  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AUTO|
</part>
<part Limit>
!!Stromwahl LIMIT
Bei Stromwahl LIMIT müssen Maximalwerte für Lade-/ Entladestrom vorgegeben werden. Der Stromwird etwas "aggressiver" als bei AUTO geregelt, wobei aber die vorgegebenen Maximalwerte nicht
überschritten werden.
|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;AkkuParameter|
|bgcolor(#dddddd):Stromwahl  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LIMIT|
</part>
<part Fest>
!!Stromwahl FEST
Bei Stromwahl FEST werden Lade- und Entladestrom fest vorgegeben.
|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;AkkuParameter|
|bgcolor(#dddddd):Stromwahl  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FEST|
Der Strom wird dann nicht automatisch, sondern entsprechend dieser Vorgabewerte geregelt. Falls im Lauf der vorgegebene Stromwert nicht erreicht wird, liegt das an der automatischen Leistungsbegrenzung, die das Gerät vor Überlastung schützt. Mit der Taste UP kann der Strom dann aber meistens noch etwas erhöht werden.
__Einstellung für Entladen mit externem LastWiderstand:__
|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;AkkuParameter|
|bgcolor(#dddddd):Stromwahl  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;~EXT-W|
Für hohe Entladeleistung kann mit einem externen LastWiderstand entladen werden. Die Einstellung ~EXT-W ist nur für Akku[[ausgang|Ausgang]]-1 beim Programm [[ENTLADEN|Entladen]] anwählbar.
Achtung: Wenn diese Option aktiviert wird, muss unbedingt ein passender externer Lastwiderstand in Reihe mit dem Akku angeschlossen werden. Der Entladetransistor schaltet beim Entladen voll durch und würde bei direkt angeschlossenen Akku einen Kurzschluss verursachen und zerstört werden. Vor Entladestart erfolgt deshalb aus Sicherheitsgründen eine zusätzliche PasswortAbfrage.
</part>
!Anschluss an die Stromversorgung
Zur Inbetriebnahme die [[Polklemmen|http://www.rc-network.de/magazin/artikel_08/art_08-041/art_041-01.html#54]] zügig ohne Wackeln an die Stromversorgung anschließen. Am [[Display]] wird der StartbildSchirm mit [[SoftWare]]- und Hardwareversion angezeigt. Zur Funktionskontrolle wird auch der [[Lüfter]] kurz eingeschaltet. Nach 3 Sekunden erscheint automatisch das HauptMenue und das Gerät ist betriebsbereit.

Das Gerät ist an Eingang und den [[Akkuausgängen|Ausgang]] gegen Falschpolung geschützt. Bei verpolter ~StromVersorgung bleibt das [[Display]] dunkel. Bei Falschpolung oder Kurzschluss am [[Akkuausgang|Ausgang]] erscheint beim Programmstart eine Fehlermeldung [["Polung"|FehlerMeldungen/Polung]].
 
__Achtung:__
* Niemals den Minuspol des [[Akkuausgang|Ausgang]]s mit dem Pluspol der ~StromVersorgung verbinden
* Am [[Ausgang-2|TechnischeDaten/Ausgang2]] keine Akkus mit höherer Spannung als die VersorgungsSpannung anschließen
* Nach Trennen der Stromversorgung darf am [[Ausgang-2|TechnischeDaten/Ausgang2]] kein Akku verbleiben, weil dieser sonst das Gerät mit Spannung versorgt und unkontrolliert entladen wird.
.gradient {margin-top:1em; background:#3371A3;}
.titleLine{padding: 30px 40px 15px 30px;}
.titleLine a:hover{color:#fff; border-bottom:1px dotted #eee; text-decoration:none;}
.titleLine a{color:#fff; border-bottom:1px dotted #ccc;}
.siteTitle { font-size: 2.0em; font-weight: bold; color:#fff;}
.siteSubtitle { font-size: 1.7em; margin: .3em auto 0em; color:#fff;}
.searchBar {float:right; font-size:1.0em;}
.searchBar .button {display:block; border:none; color:#fff;}
.searchBar .button:hover{border:none; color:#fff;}
.searchBar input{ border: 1px inset #1d65bc; background:#dbdee3;}
.searchBar input:focus { border: 1px inset #3371a3; background:#fff;}
.viewer { border: 1.5px solid; -moz-border-radius:1em; padding:1em; }
/*{{{*/
* 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:1.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:1.5em 0 1em 1em; left:0px; top:0px;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
|Name|SwitchThemePlugin|
|Source|http://www.TiddlyTools.com/#SwitchThemePlugin|
|Documentation|http://www.TiddlyTools.com/#SwitchThemePluginInfo|
|Version|5.4.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.3|
|Type|plugin|
|Description|Select alternative TiddlyWiki template/stylesheet 'themes' from a droplist|
!!!!!Documentation
>see [[SwitchThemePluginInfo]]
!!!!!Configuration
<<<
Current theme:<<switchTheme width:auto>>
<<option chkRandomTheme>> select a random theme at startup
//Note: to prevent a given theme from being chosen at random, tag it with <<tag excludeTheme>>//
<<<
!!!!!Installation Note
>As of 4/13/2008, a "core patch" function that provides backward-compatibility with TW2.3.x has been split into a separate tiddler, [[SwitchThemePluginPatch]], to reduce installation overhead for //this// plugin.  ''You should only install the patch tiddler when using this plugin in documents based on a core version prior to TW2.4.0''
!!!!!Revisions
<<<
2009.10.01 [5.4.1] changed 'noRandom' tag to 'excludeTheme' and recognize 'excludeLists' tag
| Please see [[SwitchThemePluginInfo]] for previous revision details |
2008.01.22 [5.0.0] Completely re-written and renamed from [[SelectStylesheetPlugin]] (now retired)
//history for retired SelectStylesheetPlugin omitted//
2005.07.20 [1.0.0] initial release (as SelectStylesheetPlugin)
<<<
!!!!!Code
***/
//{{{
version.extensions.SwitchThemePlugin= {major: 5, minor: 4, revision: 1, date: new Date(2009,10,1)};

config.macros.switchTheme = {
	handler: function(place,macroName,params) {
		setStylesheet(".switchTheme {width:100%;font-size:8pt;margin:0em}","switchThemePlugin");
		if (params[0] && (params[0].substr(0,6)=="width:"))	var width=(params.shift()).substr(6);
		if (params[0] && (params[0].substr(0,6)=="label:"))	var label=(params.shift()).substr(6);
		if (params[0] && (params[0].substr(0,7)=="prompt:"))	var prompt=(params.shift()).substr(7);
		if (params[0] && params[0].trim().length) // create a link that sets a specific theme
			createTiddlyButton(place,label?label:params[0],prompt?prompt:params[0],
				function(){ config.macros.switchTheme.set(params[0]); return false;});
		else { // create a select list of available themes
			var theList=createTiddlyElement(place,"select",null,"switchTheme",null);
			theList.size=1;
			if (width) theList.style.width=width;
			theList.onchange=function() { config.macros.switchTheme.set(this.value); return true; };
			this.refresh(theList);
		}
	},
	refresh: function(list) {
		var indent = String.fromCharCode(160)+String.fromCharCode(160);
		while(list.length > 0){list.options[0]=null;} // clear list
		list.options[list.length] = new Option("select a theme:","",true,true);
		list.options[list.length] = new Option(indent+"[default]","StyleSheet");
		list.options[list.length] = new Option(indent+"[random]","*");
		var themes=store.getTaggedTiddlers("systemTheme");
		for (var i=0; i<themes.length; i++)
			if (themes[i].title!="StyleSheet" && !themes[i].isTagged('excludeLists'))
				list.options[list.length]=new Option(indent+themes[i].title,themes[i].title);
		// show current selection
		for (var t=0; t<list.options.length; t++)
			if (list.options[t].value==config.options.txtTheme)
				{ list.selectedIndex=t; break; }
	},
	set: function(theme) {
		if (!theme||!theme.trim().length) return;
		if (theme=="*") { // select a random theme (except themes with "excludeTheme")
			var curr=config.options.txtTheme;
			var themes=store.getTaggedTiddlers("systemTheme");
			if (!themes.length) return false;
			var which=Math.floor(Math.random()*themes.length);
			while (themes[which].title==curr
				||themes[which].tags.contains('excludeTheme','excludeLists'))
					which=Math.floor(Math.random()*themes.length);
			theme=themes[which].title;
		}
		// apply selected theme
		story.switchTheme(theme);
		// sync theme droplists
		var elems=document.getElementsByTagName("select");
		var lists=[]; for (var i=0; i<elems.length; i++)
			if (hasClass(elems[i],"switchTheme")) lists.push(elems[i]);
		for (var k=0; k<lists.length; k++)
			for (var t=0; t<lists[k].options.length; t++)
				if (lists[k].options[t].value==config.options.txtTheme)
					{ lists[k].selectedIndex=t; break; }
		return;
	}
}
//}}}
// // option to select a random theme at startup (if enabled)
//{{{
if (config.options.chkRandomTheme===undefined)
	config.options.chkRandomTheme=false;
if (config.options.chkRandomTheme)
	config.macros.switchTheme.set("*");
//}}}
// // hijack switchTheme to add Check/Init/Reset code handlers
//{{{
if (Story.prototype.switchTheme_saved===undefined) { // only once
Story.prototype.switchTheme_saved=Story.prototype.switchTheme;
Story.prototype.switchTheme=function(t){
	function run(t,s){
		var f=store.getTiddlerText(store.getTiddlerSlice(t,s));
		return f?eval('(function(){\n'+f+'\n})()'):false;
	}
	if (!startingUp && (run(config.options.txtTheme,'Reset')||run(t,'Check'))) return;
	this.switchTheme_saved.apply(this,arguments);
	run(t,'Init');
}
}
//}}}
!Die Systemparameter
>werden erreicht über [[''Tastenfolge''|Tastatur]]
>''ESC+ENTER'' >DN >DN >DN >DN >DN

Die folgenden SystemParameter gelten für alle AkkuSpeicher und beide Ladeausgänge gemeinsam.
*[[Einstellen des Signalton|SignalTon]]
*[[Autostart|AutoStart]]
*[[Entladestromreduzierung|EntlReduz]]
*[[Leistungslimiter für die Stromversorgung|LeistungsLimiter]]
*ErhaltungsLaden
*[[Stop-Delay]]
*[[Minimale Versorgungsspannung|VersorgungsSpannung]]
*[[Deltapeakschwelle|DeltaPeakSchwelle]] für ~NIxx Akkus
*[[Entladeschlussspannung|NiMhEnt]] für NiMh Akkus
*[[Ladespannung|LadeSpannung]] für Akkutyp [[IUxx|LiFe]] Akkus
*[[Entladespannung für Akkutyp IUxx|IUxxEnt]]
*[[Ladespannung|Ladespannung_Li36/Li37]] für Akkutyp [[Li36|LiIo]] / [[Li37|LiPo]]
*[[Ladeende|Lith.Stop]] für Akkutyp [[Li36|LiIo]] / [[Li37|LiPo]] / LiFe / IUxx
*[[Alarmauswertung]] externer Balancer
*[[Alarmschwelle|Alarmschwelle_TempSensor]] der externen [[TemperaturSensor]]en
!Tag (Informatik)
aus Wikipedia, der freien Enzyklopädie

In der Datenverarbeitung und Informatik steht das englische Wort Tag [tæg] (Etikett, Anhänger, Aufkleber, Marke, Auszeichner) für die Auszeichnung eines Datenbestandes mit zusätzlichen Informationen. Die darin enthaltenen Informationen dienen je nach Verwendungsgebiet sehr unterschiedlichen Zwecken.
!Funktion der 4 Tasten
Die Bedienung erfolgt über die 4 Tasten ''__ESC__'' (links&#9668;), ''__ENTER__'' (rechts&#9658;), ''__UP__'' (hoch&#9650; ), ''__DN__'' (runter&#9660; ).
* Mit den Tasten UP&#9650; und DN&#9660; wird in Menüs geblättert oder [[Zahlenwerte|ZahlenParameter]] rauf-/runtergezählt.
* Mit der Taste ENTER&#9658; wird in Untermenüs verzweigt oder der Cursor nach rechts bewegt.
* Mit der Taste ESC&#9668; wird das aktuelle Menü verlassen oder der Cursor nach links bewegt.
Abhängig vom aktuellen [[Menü|Menues]] haben die Tasten auch noch andere Funktionen die weiter unten beschrieben werden. Jeder Tastendruck ist durch einen kurzen SignalTon hörbar. Wer diesen "Tastenpieps" nicht mag, kann ihn im ServiceMenue deaktivieren (SystemParameter "Beep" auf AUS oder FEHLER setzen).
*++++*[Kombinierte Tastenaktionen]>
<part kombTastenaktion>
beachtet man folgende Reihenfolge, 
# erste Taste drücken und noch nicht loslassen
# die zusätzliche Taste drücken
# beide Tasten loslassen
lösen __die 2 gleichzeitig gedrückten Tasten__ die folgenden Aktionen aus:
* ESC&#9668; + UP&#9650; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Start oder Anzeigen Akku[[ausgang|TechnischeDaten/Ausgang1]]-1
* ESC&#9668; + DN&#9660; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- Start oder Anzeigen Akku[[ausgang|TechnischeDaten/Ausgang2]]-2
* UP&#9650; + ENTER&#9658; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- InfoMenue für [[Ausgang|TechnischeDaten/Ausgang1]]-1 anzeigen (nur im HauptMenue)
* DN&#9660; + ENTER&#9658; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;- InfoMenue für [[Ausgang|TechnischeDaten/Ausgang2]]-2 anzeigen (nur im HauptMenue)
* ESC&#9668; + ENTER&#9658; &nbsp;&nbsp;&nbsp;- Wechsel ins ServiceMenue (nur im HauptMenue)
</part>
===

*+++*[Automatische Tastenwiederholung]>
<part autTastenwiederholung>
Durch längeres Drücken einer Taste wird die automatische Tastenwiederholung aktiv. Dabei wird die entsprechende Aktion solange wiederholt, bis die Taste wieder losgelassen wird. Jede Wiederholung ist durch einen kurzen SignalTon hörbar.
</part>
===
*+++*[Akkuausgang_1]
<part Ausgang1>
|>|!Akkuausgang 1|
|ZellenZahl bei NiCd, NiMh |1...34|
|ZellenZahl bei [[Blei, Blei-Gel|BleiAkku]] |1...20|
|Zellenzahl bei [[Li-Ionen|LiIo]], [[Li-Polymer|LiPo]] |1...12 / balancieren über [[internen Balancer|Balancer/IntBalancer]] oder [[externen Balancer|Balancer/ExtBalancer]]|
|Zellenzahl bei [[LiFePO4|LiFe]] (A123) |1…14 / balancieren über [[internen Balancer|Balancer/IntBalancer]] oder [[externen Balancer|Balancer/ExtBalancer]]|
|Ausgangsspannung |0,6...51V|
|LadeStrom |50mA...10A|
|EntladeStrom |50mA...5A|
|Maximale Ladeleistung |250W (im Dauerbetrieb möglich)|
|Maximale Entladeleistung |30W (bis zu 200W mit LastWiderstand|
|[[Abschaltverfahren beim Laden|AbschaltMethode]] |Automatisch oder mit definierter [[Ladungsmenge|LadeEntMenge]]|
|Stromeinstellung |Automatisch entsprechend InnenWiderstand des Akkus, oder nach Voreinstellung|
|LadeArt |[[Konstantstrom, Konstantspannung|LadeArt/Konst]], [[Puls|LadeArt/Puls]], [[Reflex (bis 50W)|LadeArt/Reflex]]|
|Funktion |GlühkerzenHeizung Glühkerzenstrom im Bereich 1200…4500mA einstellbar|
|[[integierter Balancer|Balancer/IntBalancer]] |2…12s, 300mA, für LiIo, LiPo, [[LiFePO (A123)|LiFe]], ~NiXX-Entl.|
</part>
===

*+++*[Akkuausgang_2]
<part Ausgang2>
|>|!Akkuausgang_2|
|Zellenzahl bei NiCd, NiMh |1...8 abhängig von der Versorgungsspannung|
|Zellenzahl bei [[Blei, Blei-Gel|BleiAkku]] |1...4 abhängig von der Versorgungsspannung|
|Zellenzahl bei [[Li-Ionen|LiIo]], [[Li-Polymer|LiPo]] |1…3 abhängig von der Versorgungsspannung / balancieren über [[externen Balancer|Balancer/ExtBalancer]]|
|ZellenZahl bei [[LiFePO4|LiFe]] |1…3 abhängig von der Versorgungsspannung / balancieren über [[externen Balancer|Balancer/ExtBalancer]]|
|Ausgangsspannung |0,6...13,4V abhängig von der VersorgungSpannung|
|LadeStrom |50mA...2600mA|
|Maximale Ladeleistung |30W|
|Abschaltverfahren beim Laden |Automatisch oder mit definierter [[Ladungsmenge|LadeEntMenge]]|
|Stromeinstellung |Automatisch entsprechend InnenWiderstand des Akkus, oder nach Voreinstellung|
|LadeArt |[[Konstantstrom, Konstantspannung|LadeArt/Konst]]|
</part>
===

*+++*[Allgemein]
<part Allgemein>
|>|!Allgemein|
|Mikroprozessor |ATMEL ~MEGA32, ~RISC-Controller, 8 MIPS Rechenleistung|
|Bedien- und Anzeigeelemente |Kontraststarkes 2x16 LCD Character Display, optional mit Beleuchtung, 4 Tasten UP / DN / ESC / ENTER|
|BetriebsSpannung |9V...15V stabilisierte Gleichspannung|
|Stromaufnahme |Max. 25 A|
|Serielle ~RS232 PC_Schnittstelle |9600 Baud, No Parity, 8 Datenbits, 1 Stopbit. Anschluss über normales serielles ~SUB-D Kabel (3 Adern, nicht gedreht, kein Nullmodemkabel)|
|Aktualisieren der Software |Über serielle Schnittstelle durch integrierten Bootloader|
|Schutzfunktionen |Verpolungsschutz, Überlastschutz, Kurzschlussfest, [[Lademengenbegrenzung|LadeEntMenge]], Timeoutüberwachung, [[Balancer]]/Equalizer, Entladeschutz der Autobatterie, Plausibilitätsprüfungen der eingegebenen Werte, Kontinuierliche Überwachung aller relevanten Werte, Temperaturgesteuerter [[Lüfter]], verdeckter Kühlkörper, Watchdog, Dutycycle, Begrenzung des Wandlers, interner und externe [[Temperatursensor|TemperaturSensor]]en|
|zulässige Umgebungstemperatur |0...30°C|
|Abmessungen |169mm x 180mm x 62mm|
|Gewicht (ohne Kabel) |Ca. 950g|
</part>
===
|>|!Akkuausgang_2|
|Zellenzahl bei NiCd, NiMh |1...8 abhängig von der Versorgungsspannung|
|Zellenzahl bei [[Blei, Blei-Gel|BleiAkku]] |1...4 abhängig von der Versorgungsspannung|
|Zellenzahl bei [[Li-Ionen|LiIo]], [[Li-Polymer|LiPo]] |1…3 abhängig von der Versorgungsspannung / balancieren über [[externen Balancer|Balancer/ExtBalancer]]|
|ZellenZahl bei [[LiFePO4|LiFe]] |1…3 abhängig von der Versorgungsspannung / balancieren über [[externen Balancer|Balancer/ExtBalancer]]|
|Ausgangsspannung |0,6...13,4V abhängig von der VersorgungsSpannung|
|LadeStrom |50mA...2600mA|
|Maximale Ladeleistung |30W|
|Abschaltverfahren beim Laden |Automatisch oder mit definierter Ladungsmenge|
|Stromeinstellung |Automatisch entsprechend InnenWiderstand des Akkus, oder nach Voreinstellung|
|LadeArt |[[Konstantstrom, Konstantspannung|LadeArt/Konst]]|
!Messung der Akkutemperatur
Für __zusätzliche__ Sicherheit beim [[Laden]] kann an jedem der beiden Akku[[ausgänge|Ausgang]] ein externer [[TemperaturSensor|http://www.rc-network.de/forum/showthread.php?t=103093&highlight=Akkumatik+Baubericht#14]] zum Überwachen der Akkutemperatur angeschlossen werden. Die maximal zulässige Temperatur ist im [[Servicemenü|Alarmschwelle_TempSensor]] einstellbar.
Mit dem Sensor wird die Temperatur am Akku während des Ladevorgangs überwacht und im InfoMenue in Grad Celsius angezeigt. Sobald die Temperatur den eingestellten [[Alarmschwellenwert|Alarmschwelle_TempSensor]] überschreitet,  wird die Ladung __bedingungslos__ mit Fehlermeldung [["Temp.Sens."|FehlerMeldungen/Temp.Sens.]] beendet. Für eine sichere Überwachung muss der Sensor guten Wärmekontakt zum Akku haben. Bei funktionierendem Sensor wird im Infomenü ein Wert größer 0 angezeigt.
/***
|''Name:''|TiddlerAliasPlugin|
|''Version:''|1.0.0 BETA 4 (2009-03-30)|
|''Source:''|http://tiddlywiki.abego-software.de/Beta.html#TiddlerAliasPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|&copy; 2009 [[abego Software|http://www.abego-software.de]]|
|''~CoreVersion:''|2.1.0|
|''Browser:''|Firefox 1.5.0.7 or better; InternetExplorer 6.0|
!Description

Reference a tiddler through an alias (or even through many aliases). E.g. a tiddler "William Shakespeare" may also be referenced as {{{[[Shaxper]]}}}.

When editing a tiddler you may enter alternative names for the tiddler in the "Alias" field (below the tags field), similar to the way you enter tags. You may even specify multiple alias names, separated by spaces. Alias names containing spaces must be written as {{{[[...]]}}}

Also this plugin implements the "Auto Non-Space Alias" feature: for tiddlers with titles containing whitespaces an alias is automatically created that has every whitespace replaced by a dash ("-"). E.g. a tiddler called [[Tiddler with no alias defined]] can also be referenced by [[Tiddler-with-no-alias-defined]].

!Revision history
* v1.0.0 Beta 4 (2009-03-30)
** Bugfix: ToggleLinks does not work when TiddlerAliasPlugin is installed (Thanks to Jonnan West for reporting the bug)
* v1.0.0 Beta 3 (2006-09-23)
** Support "Auto Non-Space Alias" feature: For tiddler with titles containing whitespaces an alias is automatically created that has every whitespace replaced by a dash ("-")
* v1.0.0 Beta 2 (2006-09-22)
** Bugfix: Tiddler is displayed more than once when opened both through title and alias (Thanks to KenGirard for reporting)
* v1.0.0 Beta 1 (2006-09-21)
** Beta 1 release
!Code
***/
//{{{
	
//============================================================================
//============================================================================
//		   TiddlerAliasPlugin
//============================================================================
//============================================================================

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

version.extensions.TiddlerAliasPlugin = {
	major: 1, minor: 0, revision: 0, beta: 4,
	date: new Date(2009,2,30), 
	source: "http://tiddlywiki.abego-software.de/Beta.html#TiddlerAliasPlugin",
	licence: "[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",
	copyright: "Copyright (c) abego Software GmbH, 2005-2009 (www.abego-software.de)"
};

(function() {

window.abegoTiddlerAlias = {
	lingo:  {
		aliasPrompt: "Type alias names (i.e. alternative names for this tiddler) separated with spaces, [[use double square brackets]] if necessary"
	}, 
	
	editTemplateExtension: "<div class='editor' macro='edit alias'></div><div class='editorFooter'><span macro='message abegoTiddlerAlias.lingo.aliasPrompt'></span></div>"
};

var oldFetchTiddler;
var oldSaveTiddler;
var oldDisplayTiddler;

var fWithAutoNonSpaceAlias = true;

function withAutoNonSpaceAlias() {
	return fWithAutoNonSpaceAlias;
}

function addNonSpaceAlias(map, title) {
	var s = title.replace(/\s/g,"-");
	if (s != title)
		map[s] = title;
}

function calcAliases() {
	var result = {};
	store.forEachTiddler(function(title,tiddler) {
		var s = store.getValue(tiddler,"alias");
		if (s) {
			var p = s.parseParams("list",null,false,true);
			for(var i=1; i<p.length; i++)
				result[p[i].value] = title;
		}
		if (withAutoNonSpaceAlias())
			addNonSpaceAlias(result,title);
	});
	return result;
}

// Returns a map that maps an alias name to the title of the tiddler
abegoTiddlerAlias.getAliases = function() {
	if (!store.aliases)
		store.aliases = calcAliases();
	return store.aliases;
}

// Returns the title of the tiddler for the given alias.
// When no such alias is defined but a tiddler with that name exists the alias is returned.
// Otherwise null is returned.
abegoTiddlerAlias.getAliasTitle = function(alias) {
	var t = abegoTiddlerAlias.getAliases()[alias];
	return t ? t : (store.fetchTiddler(alias) ? alias : null)
}

function hasEditTemplateExtension(s) {
	return s.indexOf(abegoTiddlerAlias.editTemplateExtension) >= 0;
}

function addEditTemplateExtension(s) {
	if (s && !hasEditTemplateExtension(s)) {
		var i = s.lastIndexOf("</div>");
		if (i >= 0)
			return s.slice(0,i+6)+"\n"+abegoTiddlerAlias.editTemplateExtension+s.slice(i+6);
	}
	return null;
}

function hijackFetchTiddler() {
	oldFetchTiddler = store.fetchTiddler;

	store.fetchTiddler = function(title) {
		var result = oldFetchTiddler.apply(this, arguments);
		if (!result && title) {
			title = abegoTiddlerAlias.getAliases()[title];
			if (title)
				result = oldFetchTiddler.apply(this, [title])
		}
		return result;	
	};
}

function hijackSaveTiddler() {
	oldSaveTiddler = TiddlyWiki.prototype.saveTiddler;
	TiddlyWiki.prototype.saveTiddler = function() {
		var result = oldSaveTiddler.apply(this, arguments);
		delete store.aliases;				
		return result;	
	}
}


function hijackDisplayTiddler() {
	oldDisplayTiddler = Story.prototype.displayTiddler;
	Story.prototype.displayTiddler = function(srcElement,title,template,animate,slowly,customFields,toggle,animationSrc) {
		// Ensure that a tiddler is always opened with its "original" title (not an alias)
		var tiddler = store.fetchTiddler(title);
		if (tiddler) 
			title = tiddler.title;
		return oldDisplayTiddler.apply(this, [srcElement,title,template,animate,slowly,customFields,toggle,animationSrc]);
	}
}
	

function modifyEditTemplate() {
	// The shadow tiddler
	var s = addEditTemplateExtension(config.shadowTiddlers["EditTemplate"]);
	if (s) 
		config.shadowTiddlers["EditTemplate"] = s;
	
	// The "real" tiddler (if defined)
	var t = store.getTiddler("EditTemplate");
    if (t && !hasEditTemplateExtension(t.text))
          t.set(null,addEditTemplateExtension(t.text));		
}

// Requires store is defined.
function doHijacking() {
	hijackFetchTiddler();
	hijackSaveTiddler();
	hijackDisplayTiddler();
	modifyEditTemplate();
}

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

// To support the access through the "message" macro
config.abegoTiddlerAlias = abegoTiddlerAlias;
})();
} // of "install only once"


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

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.

Neither the name of abego Software nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
***/

//}}}
/%
!info
|Name|ToggleFullScreen|
|Source|http://www.TiddlyTools.com/#ToggleFullScreen|
|Version|2.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|Create a link that shows/hides sidebars and page headers|
Usage
<<<
{{{
<<tiddler ToggleFullScreen>>
<<tiddler ToggleFullScreen with: label altlabel>>
}}}
<<<
Example
<<<
{{{<<tiddler ToggleFullScreen with: fullscreen restore>>}}}
<<tiddler ToggleFullScreen##show with: fullscreen restore>>
<<<
!end

!show
<html><nowiki><a href='javascript:;' title="FULLSCREEN: toggle sidebars and page header"
onmouseover="
	this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
	+encodeURIComponent(encodeURIComponent(this.onclick))
	+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
	var co=config.options;
	co.chkFullScreen=!co.chkFullScreen;
	var showmm=!co.chkFullScreen && co.chkShowLeftSidebar!==false;
	var showsb=!co.chkFullScreen && co.chkShowRightSidebar!==false;
	var showcrumbs=!co.chkFullScreen && co.chkShowBreadcrumbs!==false
		&& config.macros.breadcrumbs && config.macros.breadcrumbs.crumbs.length;
	var cw=document.getElementById('contentWrapper');
	var da=document.getElementById('displayArea');
	var mm=document.getElementById('mainMenu');
	var sb=document.getElementById('sidebar');
	var sm=document.getElementById('storyMenu');
	var bc=document.getElementById('breadCrumbs');
	if (cw){
		var elems=cw.getElementsByTagName('*');
		for (var i=0; i<elems.length; i++) if (hasClass(elems[i],'header')) 
			{ elems[i].style.display=co.chkFullScreen?'none':'block'; break; }
	}
	if (mm) {
		mm.style.display=showmm?'block':'none';
		da.style.marginLeft=showmm?(co.txtDisplayAreaLeftMargin||''):'1em';
	}
	if (sb) {
		sb.style.display=showsb?'block':'none';
		da.style.marginRight=showsb?(co.txtDisplayAreaRightMargin||''):'1em';
	}
	if (sm) sm.style.display=!co.chkFullScreen ?'block':'none';
	if (bc) bc.style.display=showcrumbs?'block':'none';

	this.innerHTML=!co.chkFullScreen?'$1':'$2';
	var b=document.getElementById('restoreFromFullscreenButton');
	if (b) removeNode(b);
	else { 
		setStylesheet(store.getTiddlerText('ToggleFullScreen##styles'),'fullScreenStyles');
		var b=createTiddlyElement(null,'span','restoreFromFullscreenButton','selected');
		b.innerHTML='&loz;';
		b.title='RESTORE: redisplay page header, menu and sidebar';
		b.onclick=this.onclick;
		document.body.insertBefore(b,null);
	}
	return false;
">$1</a></html>
!styles
#restoreFromFullscreenButton {
	position:fixed; top:.3em; right:.3em; z-index:10001;
	cursor:pointer; font-size:8pt; color:ButtonText !important;
	border:2px outset ButtonFace; padding:0px 3px;
	background-color:ButtonFace; -moz-appearance:button;
}
!end
%/<<tiddler {{var src='ToggleFullScreen'; src+(tiddler&&tiddler.title==src?'##info':'##show');}}
with:	{{'$'+'1'!='$1'?'$1':'fullscreen'}}
	{{'$'+'2'!='$2'?'$2':'restore'}}>>
/%
!info
|Name|ToggleLeftSidebar|
|Source|http://www.TiddlyTools.com/#ToggleLeftSidebar|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|show/hide left sidebar (MainMenu)|
Usage
<<<
{{{
<<tiddler ToggleLeftSidebar>>
<<tiddler ToggleLeftSidebar with: label tooltip>>
}}}
Try it: <<tiddler ToggleLeftSidebar##show
        with: {{config.options.chkShowLeftSidebar?'◄':'►'}}>>
<<<
Configuration:
<<<
{{{
config.options.chkShowLeftSidebar (true)
config.options.txtToggleLeftSideBarLabelShow (►)
config.options.txtToggleLeftSideBarLabelHide (◄)
}}}
<<<
!end
!show
<<tiddler {{
        var co=config.options;
        if (co.chkShowLeftSidebar===undefined) co.chkShowLeftSidebar=true;
        var mm=document.getElementById('mainMenu');
        var da=document.getElementById('displayArea');
        if (mm) {
                mm.style.display=co.chkShowLeftSidebar?'block':'none';
                da.style.marginLeft=co.chkShowLeftSidebar?'':'1em';
        }
'';}}>><html><nowiki><a href='javascript:;' title="$2"
onmouseover="
        this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
        +encodeURIComponent(encodeURIComponent(this.onclick))
        +')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
        var co=config.options;
        var opt='chkShowLeftSidebar';
        var show=co[opt]=!co[opt];
        var mm=document.getElementById('mainMenu');
        var da=document.getElementById('displayArea');
        if (mm) {
                mm.style.display=show?'block':'none';
                da.style.marginLeft=show?'':'1em';
        }
        saveOptionCookie(opt);
        var labelShow=co.txtToggleLeftSideBarLabelShow||'&#x25BA;';
        var labelHide=co.txtToggleLeftSideBarLabelHide||'&#x25C4;';
        if (this.innerHTML==labelShow||this.innerHTML==labelHide)
                this.innerHTML=show?labelHide:labelShow;
        this.title=(show?'hide':'show')+' left sidebar';
        var sm=document.getElementById('storyMenu');
        if (sm) config.refreshers.content(sm);
        return false;
">$1</a></html>
!end
%/<<tiddler {{
        var src='ToggleLeftSidebar';
        src+(tiddler&&tiddler.title==src?'##info':'##show');
}} with: {{
        var co=config.options;
        var labelShow=co.txtToggleLeftSideBarLabelShow||'&#x25BA;';
        var labelHide=co.txtToggleLeftSideBarLabelHide||'&#x25C4;';
        '$1'!='$'+'1'?'$1':(co.chkShowLeftSidebar?labelHide:labelShow);
}} {{
        var tip=(config.options.chkShowLeftSidebar?'hide':'show')+' left sidebar';
        '$2'!='$'+'2'?'$2':tip;
}}>>
/%
|Name|ToggleReadOnly|
|Source|http://www.TiddlyTools.com/#ToggleReadOnly|
|Version|1.1.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|enable/disable global read-only state without reloading your document|

Usage:
        <<tiddler ToggleReadOnly>> OR
        <<tiddler ToggleReadOnly with: label tip>>

!show
<<option chkHttpReadOnly>><<tiddler {{
        var chk=place.lastChild;
        chk.style.margin=chk.style.padding="0";
        chk.title="$2";
        chk.checked=readOnly;
        if (!chk.coreOnChange) { // only once
                chk.coreOnChange=chk.onchange;
                chk.onchange=function() {
                        if (this.coreOnChange) this.coreOnChange();
                        this.checked=config.options.chkHttpReadOnly;
                        readOnly=config.options.chkHttpReadOnly;
                        story.switchTheme(config.options.txtTheme);
                };
        }
'';}}>><html><a href="javascript:;"
        title="$2"
        onclick="this.parentNode.previousSibling.click(); return false;"
>$1</a><nowiki></html>
!end

%/<<tiddler ToggleReadOnly##show with:
        {{"$1"=="$"+"1"?"read-only":"$1"}}
        {{"$2"=="$"+"2"?"enable/disable editing functions":"$2"}}
>>
/%
!info
|Name|ToggleRightSidebar|
|Source|http://www.TiddlyTools.com/#ToggleRightSidebar|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|show/hide right sidebar (SideBarOptions)|
Usage
<<<
{{{
<<tiddler ToggleRightSidebar>>
<<tiddler ToggleRightSidebar with: label tooltip>>
}}}
Try it: <<tiddler ToggleRightSidebar##show
        with: {{config.options.chkShowRightSidebar?'►':'◄'}}>>
<<<
Configuration:
<<<
{{{
config.options.chkShowRightSidebar (true)
config.options.txtToggleRightSideBarLabelShow (◄)
config.options.txtToggleRightSideBarLabelHide (►)
}}}
<<<
!end
!show
<<tiddler {{
        var co=config.options;
        if (co.chkShowRightSidebar===undefined) co.chkShowRightSidebar=true;
        var sb=document.getElementById('sidebar');
        var da=document.getElementById('displayArea');
        if (sb) {
                sb.style.display=co.chkShowRightSidebar?'block':'none';
                da.style.marginRight=co.chkShowRightSidebar?'':'1em';
        }
'';}}>><html><nowiki><a href='javascript:;' title="$2"
onmouseover="
        this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
        +encodeURIComponent(encodeURIComponent(this.onclick))
        +')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="
        var co=config.options;
        var opt='chkShowRightSidebar';
        var show=co[opt]=!co[opt];
        var sb=document.getElementById('sidebar');
        var da=document.getElementById('displayArea');
        if (sb) {
                sb.style.display=show?'block':'none';
                da.style.marginRight=show?'':'1em';
        }
        saveOptionCookie(opt);
        var labelShow=co.txtToggleRightSideBarLabelShow||'&#x25C4;';
        var labelHide=co.txtToggleRightSideBarLabelHide||'&#x25BA;';
        if (this.innerHTML==labelShow||this.innerHTML==labelHide)
                this.innerHTML=show?labelHide:labelShow;
        this.title=(show?'hide':'show')+' right sidebar';
        var sm=document.getElementById('storyMenu');
        if (sm) config.refreshers.content(sm);
        return false;
">$1</a></html>
!end
%/<<tiddler {{
        var src='ToggleRightSidebar';
        src+(tiddler&&tiddler.title==src?'##info':'##show');
}} with: {{
        var co=config.options;
        var labelShow=co.txtToggleRightSideBarLabelShow||'&#x25C4;';
        var labelHide=co.txtToggleRightSideBarLabelHide||'&#x25BA;';
        '$1'!='$'+'1'?'$1':(co.chkShowRightSidebar?labelHide:labelShow);
}} {{
        var tip=(config.options.chkShowRightSidebar?'hide':'show')+' right sidebar';
        '$2'!='$'+'2'?'$2':tip;
}}>>
/%
!info
|Name|ToggleScrollingSidebars|
|Source|http://www.TiddlyTools.com/#ToggleScrollingSidebars|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|enable/disable 'fixed' positioning of left and right sidebars|
Usage
<<<
{{{
<<tiddler ToggleScrollingSidebars>>
<<tiddler ToggleScrollingSidebars with: label tip>>
}}}
<<<
Example
<<<
{{{<<tiddler ToggleScrollingSidebars>>}}}
<<tiddler ToggleScrollingSidebars##show with: "sidebars scroll with page">>
<<<
!end
!show
<<tiddler {{
	if (config.options.chkScrollSidebars==undefined)
		config.options.chkScrollSidebars=true;
	if (!config.options.txtOuterTabHeight||!config.options.txtOuterTabHeight.length)
		config.options.txtOuterTabHeight="25em";
	if (!config.options.txtInnerTabHeight||!config.options.txtInnerTabHeight.length)
		config.options.txtInnerTabHeight="21em";
	window.ToggleScrollingSidebars_setscroll = function() {
		var co=config.options;
		var scroll=co.chkScrollSidebars?'':'fixed';
		document.getElementById('mainMenu').style.position=scroll;
		document.getElementById('sidebar').style.position=scroll;
		var outer=co.chkScrollSidebars?'auto':co.txtOuterTabHeight;
		var inner=co.chkScrollSidebars?'auto':co.txtInnerTabHeight;
		var css= '#sidebarTabs .tabContents {height:%0;overflow:%1;width:92.5%;}'
			+'#sidebarTabs .tabContents .tabContents {height:%2 !important;}';
		css=css.format([outer,outer!='auto'?'auto':'visible',inner]);
		setStylesheet(css,'shortSidebarTabs');
	}
'';}}>><<option chkScrollSidebars>><<tiddler {{
	var chk=place.lastChild;
	if (!chk.coreOnChange) { // only once
		chk.coreOnChange=chk.onchange;
		chk.onchange=function() {
			if (this.coreOnChange) this.coreOnChange.apply(this,arguments);
			this.checked=config.options.chkScrollSidebars;
			window.ToggleScrollingSidebars_setscroll();
		};
	}
	window.ToggleScrollingSidebars_setscroll();
'';}}>> $1
!end

%/<<tiddler {{var src='ToggleScrollingSidebars'; src+(tiddler&&tiddler.title==src?'##info':'##show');}}
with:	{{'$1'!='$'+'1'?'$1':'sidebars scroll with page'}}
	{{'$2'!='$'+'2'?'$2':'sidebars scroll with page'}}>>
/%
!info
|Name|ToggleSiteTitles|
|Source|http://www.TiddlyTools.com/#ToggleSiteTitles|
|Version|1.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.5|
|Type|transclusion|
|Description|show/hide document 'header' area (containing SiteTitle and SiteSubtitle content)|
Usage:
<<<
{{{
<<tiddler ToggleSiteTitles>> OR
<<tiddler ToggleSiteTitles with: label tip>>
}}}
<<<
!end

!show
<<option chkHideSiteTitles>><<tiddler {{
	var chk=place.lastChild;
	if (!chk.coreOnChange) { // only once
		chk.coreOnChange=chk.onchange;
		chk.onchange=function() {
			if (this.coreOnChange) this.coreOnChange.apply(this,arguments);
			var h=jQuery('#contentWrapper .header')[0];
			var opt=this.getAttribute('option');
			if (h) h.style.display=config.options[opt]?'none':'block';
		};
	}
'';}}>> $1
!end

%/<<tiddler {{'ToggleSiteTitles##'+(tiddler&&tiddler.title=='ToggleSiteTitles'?'info':'show')}} with:
{{"$1"=="$"+"1"?"hide site titles":"$1"}}
{{"$2"=="$"+"2"?"toggle site title display":"$2"}}
{{	// init header display
	var opt='chkHideSiteTitles';
	if (config.options[opt]==undefined) config.options[opt]=false;
	var h=jQuery('#contentWrapper .header')[0];
	if (h) h.style.display=config.options[opt]?'none':'block';
}}
>>
/%
!info
|Name|ToggleTiddlerTags|
|Source|http://www.TiddlyTools.com/#ToggleTiddlerTags|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|command link to show/hide tiddler tags display in all tiddlers at once|
Usage:
<<<
in tiddler content:
{{{
<<tiddler ToggleTiddlerTags>>
<<tiddler ToggleTiddlerTags with: label>>
}}}
or, in ViewTemplate:
{{{
<span class='toolbar' macro='tiddler ToggleTiddlerTags'></span>
	OR, if TiddlyTools' CoreTweaks for ticket #610 is installed:
<span class='toolbar' macro='toolbar ... ToggleTiddlerTags...'></span>
}}}
or, in ToolbarCommands (with CoreTweaks #610 installed):
{{{
| ViewToolbar| ... ToggleTiddlerTags... |
| EditToolbar| ... ToggleTiddlerTags... |
}}}
<<<
!end

!show
<html><nowiki><a href='javascript:;' title='show/hide tiddler tags' onclick="
	config.options.chkHideTiddlerTags=!config.options.chkHideTiddlerTags;
	var show=config.options.chkHideTiddlerTags?'none':'block';
	setStylesheet('.tiddler .tagged { display:'+show+'; }','toggleTiddlerTags');
">$1</a></html>
!end
%/<<tiddler {{'ToggleTiddlerTags##'+(tiddler&&tiddler.title=='ToggleTiddlerTags'?'info':'show')}}
	with: {{"$1"=='$'+'1'?'tags':"$1"}}>>
/***
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.
***/
//{{{

// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'akkumatiki';

// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
window.showBackstage = true; // show backstage too

// disable autosave in d3
if (window.location.protocol != "file:")
	config.options.chkGTDLazyAutoSave = false;

// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
	SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
	SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
	OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
	DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
	MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");
}

// create some shadow tiddler content
merge(config.shadowTiddlers,{

'TspotOptions':[
 "tiddlyspot password:",
 "<<option pasUploadPassword>>",
 ""
].join("\n"),

'TspotControls':[
 "| tiddlyspot password:|<<option pasUploadPassword>>|",
 "| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<br>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
 "| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[blog|http://tiddlyspot.blogspot.com/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),

'WelcomeToTiddlyspot':[
 "This document is a ~TiddlyWiki from tiddlyspot.com.  A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //What now?// &nbsp;&nbsp;@@ Before you can save any changes, you need to enter your password in the form below.  Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
 "<<tiddler TspotControls>>",
 "See also GettingStarted.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick.  You can make changes and save them locally without being connected to the Internet.  When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Help!// &nbsp;&nbsp;@@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]].  Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help.  If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
 "",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site.  Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n"),

'TspotSidebar':[
 "<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n")

});
//}}}
Um das Akkumatik mit der neuesten Software aufzuwerten, ''__unbedingt__'' folgende Anweisungen befolgen:

----
	Akkumatik - Firmwareupdate
----

Um Schäden am Ladegerät während des Update Vorgangs zu vermeiden:
*Akkus und Balancer vom Ladegerät entfernen
*zur Strombegrenzung eine 12V Lampe in die Versorgungsleitung einschleifen 
dann:
# Ladegerät im STROMLOSEN Zustand an die serielle ~PC-Schnittstelle anschließen (z.B. ~COM1 - ~COM4)
# Am Ladegerät die Taste ENTER gedrückt halten
# Ladegerät an Versorgungsspannung anschließen
#Die Taste ENTER loslassen

|bgcolor(#dddddd):▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓|* Nach dem Loslassen der Enter Taste ist die obere Displayzeile mit 16 "Blöcken" gefüllt<br>* Die untere Zeile bleibt leer|
|bgcolor(#dddddd): &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;|~|

Das Ladegerät ist jetzt im "~Bootloader-Modus" und wartet auf Daten vom PC

----
	mit dem Windowsprogramm "~AVR-Update" 
----

5. [["AVR-Update"|http://www.akkumatik.de/download/AVR_Update.zip]] von www.akkumatik.de downloaden, entpacken und starten
6. im Programm mit "Datei laden" die Datei "lader.enc" auswählen
7. ~COM Port auswählen (Schreibweise z.B. ~COM1, ohne Leerzeichen)
8. "Akkumatik" auswählen
9. "Port aktivieren"
10. "Senden" startet den Updatevorgang
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 28/12/2013 20:26:23 | HeinrichW | [[index.html|http://akkumatiki.tiddlyspot.com/index.html#Akkumatik]] | [[store.cgi|http://akkumatiki.tiddlyspot.com/store.cgi]] | . | [[index.html | http://akkumatiki.tiddlyspot.com/index.html]] | . | ok |
| 28/12/2013 20:27:49 | HeinrichW | [[index.html|http://akkumatiki.tiddlyspot.com/index.html#Akkumatik]] | [[store.cgi|http://akkumatiki.tiddlyspot.com/store.cgi]] | . | [[index.html | http://akkumatiki.tiddlyspot.com/index.html]] | . | ok |
| 28/12/2013 20:58:10 | HeinrichW | [[index.html|http://akkumatiki.tiddlyspot.com/index.html#Akkumatik]] | [[store.cgi|http://akkumatiki.tiddlyspot.com/store.cgi]] | . | [[index.html | http://akkumatiki.tiddlyspot.com/index.html]] | . | ok |
| 28/12/2013 21:20:35 | HeinrichW | [[index.html|http://akkumatiki.tiddlyspot.com/index.html#Akkumatik]] | [[store.cgi|http://akkumatiki.tiddlyspot.com/store.cgi]] | . | [[index.html | http://akkumatiki.tiddlyspot.com/index.html]] | . |
| 08/02/2016 20:06:47 | akkumatiki | [[index.html|http://akkumatiki.tiddlyspot.com/index.html#Akkumatik]] | [[store.cgi|http://akkumatiki.tiddlyspot.com/store.cgi]] | . | [[index.html | http://akkumatiki.tiddlyspot.com/index.html]] | . | ok |
| 08/02/2016 21:01:53 | akkumatiki | [[index.html|http://akkumatiki.tiddlyspot.com/index.html#Akkumatik]] | [[store.cgi|http://akkumatiki.tiddlyspot.com/store.cgi]] | . | [[index.html | http://akkumatiki.tiddlyspot.com/index.html]] | . |
| 03/03/2016 16:33:25 | FlyHein | [[index.html|http://akkumatiki.tiddlyspot.com/index.html#Akkumatik]] | [[store.cgi|http://akkumatiki.tiddlyspot.com/store.cgi]] | . | [[index.html | http://akkumatiki.tiddlyspot.com/index.html]] | . |
| 03/03/2016 16:33:32 | FlyHein | [[index.html|http://akkumatiki.tiddlyspot.com/index.html#Akkumatik]] | [[store.cgi|http://akkumatiki.tiddlyspot.com/store.cgi]] | . | [[index.html | http://akkumatiki.tiddlyspot.com/index.html]] | . | failed | failed |
| 03/03/2016 18:11:04 | FlyHein | [[index.html|http://akkumatiki.tiddlyspot.com/index.html#Akkumatik]] | [[store.cgi|http://akkumatiki.tiddlyspot.com/store.cgi]] | . | [[index.html | http://akkumatiki.tiddlyspot.com/index.html]] | . | ok |
| 03/03/2016 22:16:49 | FlyHein | [[index.html|http://akkumatiki.tiddlyspot.com/index.html#Akkumatik]] | [[store.cgi|http://akkumatiki.tiddlyspot.com/store.cgi]] | . | [[index.html | http://akkumatiki.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.3|
|''Date:''|Feb 24, 2008|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 3,
	date: new Date("Feb 24, 2008"),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'
};

//
// Environment
//

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

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

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

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

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

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

//
// uploadOptions Macro
//

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

//
// upload functions
//

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

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

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

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

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

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

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

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

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

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

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

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

//
// Utilities
// 

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

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

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

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

//
// Initializations
//

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

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

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

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


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


//}}}
!Minimale Versorgungsspannung
[img[Bild|http://www.akkumatiki.de/bilder/AM_minvers.jpg]]
Dieser Parameter definiert die minimale Versorgungsspannung. 
Bei längerem Unterschreiten dieser Grenze wird ein laufendes [[Programm]] mit Fehlermeldung [[Min.Vers.|FehlerMeldungen/Min.Vers.]] beendet und eine zu starke Entladung der Versorgungsbatterie verhindert.
<div class='toolbar' >
      <span macro='toolbar -closeTiddler closeOthers +editTiddler intelliTagsEdit permalink references jump'></span>
</div>
<div class='title' macro='view title'></div>
<div class='subtitle'>
      <span macro='view modifier link'></span>, 
      <span macro='view modified date'></span>
</div>

<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
!!Sicherheitshinweise
* Für die automatische ''Vollerkennung'' bei NiCd / NiMh -Akkus ist ein Mindestladestrom von ca. 1[[C|NennKapazität]] erforderlich (z.B. 1700mA LadeStrom bei einem Akku mit 1700mAh [[Nennkapazität|Kapaz]]).
* Nach dem Beenden des Ladevorgangs kontrollieren, ob die eingeladene Ladungsmenge ausreichend ist. Bei automatischer ''Vollerkennung'' kann unter ungünstigen Bedingungen (tief entladene oder defekte Akkus, starkes Zellenrauschen, etc.) die Ladung zu früh beendet werden.
!!~SchnellEinstieg
*Mit den Standardwerten (ab Auslieferung/nach [[RESET]]) sind alle Speicher wie folgt voreingestellt und das Laden kann direkt ohne weitere Änderungen gestartet werden. Der Ladestrom wird entsprechend dem Innenwiderstand des Akkus geregelt und automatisch bei ''Vollerkennung'' abgeschaltet.
!!Abschaltmethoden beim Laden
*Achtung: Mit [[LADE-MENGE|AbschaltMethode]] gibt es keine ''Vollerkennung''. Deshalb darf diese Methode bei höheren Laderaten nur für entladene Akkus verwendet werden.
*Beim Abschaltkriterium GRADIENT erfolgt die ''Vollerkennung'' durch Analyse des Kurvenverlaufs der Akkuspannung. Dazu ist eine Mindestladerate von etwa 1[[C|NennKapazität]] erforderlich (d.h. bei einem 1700mAh Akku sollte 1700mA LadeStrom fließen).
!!Formieren von NIMH/NICD Akkus
Die [[Lademethode|LadeArt]] [[Formieren]] ist bei neuen oder länger gelagerten NiCd / NiMh Akkus sinnvoll. Dabei werden die einzelnen Zellen eines Akkupacks durch gezieltes "Überladen" mit kleiner Laderate (= langsames Laden ohne ''Vollerkennung'', auch Zeitladen genannt) auf den gleichen Vollzustand gebracht.
!!Akkus mit Schutzdiode laden (Senderakkus)
Fernsteuersender haben oft eine interne Schutzdiode, die das Entladen des eingebauten Senderakkus bzw. eine Spannungsmessung an der Ladebuchse verhindert. Mit Auswahl des Programms [[SENDER|Sender]] ist das Laden von solchen Akkus trotzdem mit automatischer ''Vollerkennung'' möglich
!!~Stop-Delay
*[[Hier|Stop-Delay]] kann die automatische ''Vollerkennung'' bei Ladebeginn unterdrückt werden.
!!~Delta-Peak-Schwelle für ~NiCd und ~NiMh Akkus
Dieser Parameter bestimmt die Empfindlichkeit der automatischen ''Vollerkennung'' bei NiCd und NiMh Akkus. Je kleiner der Wert gewählt wird, desto empfindlicher reagiert die [[automatische Abschaltung|automatAbschalt]]. Der Wert bezieht sich auf eine Zelle und sollte im Bereich zwischen 1…9mV liegen.
/***
|''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.<a href="#" telno="020051121" class="FB_Addon_TelNo" style="text-decoration: underline; color: rgb(0, 0, 0); background-color: rgb(255, 255, 0); -moz-border-radius: 1px 1px 1px 1px;">0 (2005/11/21</a>)
**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.<a href="#" telno="020051101" class="FB_Addon_TelNo" style="text-decoration: underline; color: rgb(0, 0, 0); background-color: rgb(255, 255, 0); -moz-border-radius: 1px 1px 1px 1px;">0 (2005/11/01</a>)
**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.<a href="#" telno="020051030" class="FB_Addon_TelNo" style="text-decoration: underline; color: rgb(0, 0, 0); background-color: rgb(255, 255, 0); -moz-border-radius: 1px 1px 1px 1px;">0 (2005/10/30</a>)
**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:    'horizontal line',
                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:     'bolder text',
                        CAPTION: '<strong>bolder</strong>',
                        syntax:  "''user_text''",
                        hint:                 'bold_text',
                        HANDLER:    wikibar_editFormatByWord
                },
                italic:{
                        TOOLTIP:    'italic text',
                        CAPTION: '<em>italic</em>',
                        syntax: '\/\/user_text\/\/',
                        hint:                'italic_text',
                        HANDLER: wikibar_editFormatByWord
                },
                underline:{
                        TOOLTIP:    'underline text',
                        CAPTION: '<u>underline</u>',
                        syntax: '__user_text__',
                        hint:                'underline_text',
                        HANDLER: wikibar_editFormatByWord
                },
                strikethrough:{
                        TOOLTIP:    'strikethrough text',
                        CAPTION: '<strike>strikethrough</strike>',
                        syntax: '==user_text==',
                        hint:                'strikethrough_text',
                        HANDLER: wikibar_editFormatByWord
                },
                superscript:{
                        TOOLTIP:    'superscript text',
                        CAPTION: 'X<sup>superscript</sup>',
                        syntax: '^^user_text^^',
                        hint:                'superscript_text',
                        HANDLER: wikibar_editFormatByWord
                },
                subscript:{
                        TOOLTIP:    'subscript text',
                        CAPTION: 'X<sub>subscript</sub>',
                        syntax: '~~user_text~~',
                        hint:                'subscript_text',
                        HANDLER: wikibar_editFormatByWord
                },
                comment:{
                        TOOLTIP:    'comment text',
                        CAPTION: 'comment text',
                        syntax: '/%user_text%/',
                        hint:                'comment_text',
                        HANDLER: wikibar_editFormatByWord
                },
                monospaced:{
                        TOOLTIP:    'monospaced text',
                        CAPTION: '<code>monospaced</code>',
                        syntax: '{{{user_text}}}',
                        hint:                'monospaced_text',
                        HANDLER: wikibar_editFormatByWord
                }
  },
  paragraph:{
    TYPE: 'MENU',
    TOOLTIP: 'paragarph formatters',
    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();
//}}}
/***
!WikiBar CSS 說明
*井號開頭表示 id, ex: #colorPicker
*點號開頭表示 class, ex: .wikibar

!WikiBar Colors Used
*@@bgcolor(#014):color(#fff): #014 - 選單邊框@@
*@@bgcolor(#014):color(#fff): #014 - 選單字體色@@
*@@bgcolor(#cef): #cef - 選單底色@@
*@@bgcolor(#eee): #eee - 選單字體色:游標滑過時@@
*@@bgcolor(#014):color(#fff): #014 - 選單底色:游標滑過時@@
*@@bgcolor(#888): #888 - 無效選單字體色@@
*@@bgcolor(#cef): #cef - 無效選單底色:游標滑過時@@
*@@bgcolor(#014):color(#fff): #014 - 分隔線顏色@@

!wikibar: 工具列, 繼承 .toolbar /%==============================================%/
***/
/*{{{*/
.wikibar {
  text-align: left;
  visibility: visible;
  margin:2px; padding:1px;
}
/*}}}*/

/***
!previewer: 預覽區, 繼承 .viewer /%==============================================%/
***/
/*{{{*/
.previewer {overflow:auto; display:block; border:1px solid;}
/*}}}*/

/***
!colorPicker 調色盤 /%==============================================%/
***/
/*{{{*/
#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 功能表選單 /%==============================================%/
***/
/*{{{*/
.wikibarPopup{
  position:absolute; z-index:10;
  border: 1px solid #014;
  color: #014; background-color: #cef;
  /*
  max-height:150px;
  overflow-x:hidden; overflow-y:auto;
  */
}

/* 彈出選單 */
.wikibarPopup table{
  margin:0; padding:0;
  border:0;
  border-spacing:0;
  border-collapse:collapse;
}

/* 選單上之按鈕 */
.wikibarPopup .button:hover{color:#eee; background-color: #014;}

/*
.wikibarPopup .selected {background-color: #cf6;}
*/

/* 停用選項 */
.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;
}

/*}}}*/
!Einstellen von Zahlenparametern
Ein Zahlenparameter kann innerhalb vordefinierter Grenzen einen beliebigen Wert annehmen (z.B. LadeStrom von 25...8000mA). Zu Beginn ist die Eingabe inaktiv. Der [[Cursor]] hat seine normale Form und steht ganz links:
/%|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;&nbsp;[[AKKUPARAMETER|AkkuParameter]]|%/
/%|bgcolor(#dddddd):&#9724;I-Lade  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0000mA|%/
[img[Zahlenwert|http://hfranzw.de/Akkumatiki/pics/Akkumatik_027I-Lade1.jpg]]
Mit der [[ENTER|Tastatur]] &#9658;-Taste wird die Eingabe aktiviert. Der Cursor ändert dabei seine Form und ist jetzt ein Strich. Mit den [[ENTER|Tastatur]] &#9658;-Eingaben wandert er unter die zubearbeitende Stelle des Eingabefeldes:
[img[Zahlenwert|http://hfranzw.de/Akkumatiki/pics/Akkumatik_028I-Lade2.jpg]]
/%|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;&nbsp;[[AKKUPARAMETER|AkkuParameter]]|%/
/%|bgcolor(#dddddd):&nbsp; I-Lade   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;''__0__''000mA|%/
Mit [[UP|Tastatur]]&#9650;  oder [[DN|Tastatur]]&#9660; wird die vom Cursor selektierte Stelle hoch- oder runtergezählt:
[img[Zahlenwert|http://hfranzw.de/Akkumatiki/pics/Akkumatik_029I-Lade3.jpg]]
/%|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;&nbsp;[[AKKUPARAMETER|AkkuParameter]]|%/
/%|bgcolor(#dddddd):&nbsp; I-Lade   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0''__1__''00mA|%/
Mit [[ENTER|Tastatur]]&#9658; oder [[ESC|Tastatur]]&#9668; wird der Cursor nach rechts oder links bewegt um weitere Zahlenwerte einzustellen.
[img[Zahlenwert|http://hfranzw.de/Akkumatiki/pics/Akkumatik_030I-Lade4.jpg]]
[img[Zahlenwert|http://hfranzw.de/Akkumatiki/pics/Akkumatik_031I-Lade5.jpg]]
Die Eingabe ist beendet, sobald der Cursor das Eingabefeld nach rechts oder links verlässt. Der Cursor ist jetzt wieder rechteckig und steht links:
|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;&nbsp;[[AKKUPARAMETER|AkkuParameter]]|
|bgcolor(#dddddd):&#9724;I-Lade   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0100mA|
Anzahl der Zellen, die in einem Akku verbaut sind.
Errechnet sich aus der NennSpannung des Akkupacks dividiert durch die NennSpannung des im Pack verbauten [[AkkuTyp]]s
Bei paralleler Zellenanordnung (z.B. 3s2p) vervielfacht sich die Zellenzahl entsprenchend der Anzahl der parallelen Stränge
!Zyklen (mehrmaliges [[Laden]] und [[Entladen]])
Die [[Anzahl der Zyklen|ZyklenZahl]] bestimmt, wie häufig das [[Programm]]en mehrmals hintereinander durchlaufen wird. Der Wert kann im Bereich 0…9 vorgegeben werden
Im folgenden Beispiel wird ein Akku 4x hintereinander [[entladen|Entladen]] und [[geladen|Laden]]:
|AkkuTyp:| NiMh |>|
|[[Programm]]:| [[E+L]] |>|
|ZyklenZahl: | 4 |>|
|[[Stop|AbschaltMethode]]: | xxxx | beliebig |
|LadeArt:| xxxx |  beliebig |
|ZellenZahl:| 0 | oder passend |
|[[Stromwahl|StromMethode]]:| xxxx | beliebig |
|I-Lade:| xxxx | beliebig |
|[[I-Entl|I-Entlade]]:| xxxx | beliebig |
|[[Menge|LadeEntMenge]]: | 0 | oder [[Mengenlimit|LadeEntMenge]] |

Nach jedem Entladen wird [[20 Minuten|Pause]] gewartet um den Akku vor der nächsten Ladung abkühlen zu lassen. Nach Programmende wird der letzte Zyklus angezeigt:
|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZYKLEN|
|bgcolor(#dddddd):Z4 +01311 –01067|
Durch Blättern mit den Tasten UP/DN können die Lademengen(+) und Entlademengen(-) aller durchlaufenen Zyklen angezeigt werden:
|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZYKLEN|
|bgcolor(#dddddd):Z3 +01298 –01065|

|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZYKLEN|
|bgcolor(#dddddd):Z2 +01245 –00979|

|bgcolor(#dddddd):1 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ZYKLEN|
|bgcolor(#dddddd):Z1 +01133 –00838|
!Einstellen der Zyklenzahl (Anzahl Programmdurchläufe)
Der Parameter Zyklenzahl erscheint nur bei [[Programm]]en, die __mehrmals hintereinander durchlaufen werden können:__
* [[E+L]] [[Entladen]] und [[Laden]] (je nach Zyklenzahl 1..9 mal)
* [[L+E]] [[Laden]] und [[Entladen]] (je nach Zyklenzahl 1..9 mal)
* [[(L)E+L]] erst [[Laden]], dann [[Entladen]] und [[Laden]] (je nach Zyklenzahl 1..9 mal)
* [[(E)L+E]] erst [[Entladen]], dann [[Laden]] und [[Entladen]] (je nach Zyklenzahl 1..9 mal)
Der Wert kann im Bereich 0…9 vorgegeben werden:
|bgcolor(#dddddd):1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AkkuParameter|
|bgcolor(#dddddd):Zyklenzahl   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1|
* Zyklenzahl ''0'' automatisch
** @@das gewählte Programm wird solange durchlaufen, bis keine weitere Kapazitätssteigerung mehr feststellbar ist (maximal 9 Zyklen)@@
* Zyklenzahl ''1'' das gewählte Programm wird 1x durchlaufen
* Zyklenzahl ''2'' das gewählte Programm wird 2x durchlaufen
* usw.
Die Empfindlichkeit der automatischen Abschaltung kann durch folgende zwei Parameter beeinflusst werden:
* Die [[Delta-Peak-Schwelle|DeltaPeakSchwelle]] ist als SystemParameter im ServiceMenue einstellbar.
* Die ''~Delta-Peak-Verzögerung'' ist pro AkkuSpeicher in 3 Stufen einstellbar:
** ~DELTA-PK-1 = frühes Abschalten  (ohne Verzögerung)
** ~DELTA-PK-2 = normales Abschalten  (mittlere Verzögerung)
** ~DELTA-PK-3 = spätes Abschalten  (große Verzögerung)
Diskrepanz zwischen Bild "MenueStruktur" und Bedienungsanleitung "ServiceMenue"
klären: ServiceMenue / GlühkerzenHeizung und Parametrierung

Foto: [[Kapaz]]ität
Fotos: FehlerMeldungen
Foto: (Balancer/ExtBalancer) angeschlossener ext. Balancer am Dateneingang
Foto: Displayanzeige bei Ladeende
Foto: Beginn und Ende der Zahlenwerteingabe
Bild: Delta-Peak von gmxhome rüberkopieren
config.options.chkHttpReadOnly = false;
config.options.chkAutoSave = false;
config.options.chkSaveBackups = false;
config.options.chkAnimate = true;
config.options.chkSinglePageMode= true;
config.options.chkSinglePagePermalink= false;
config.messages.backstage = {
	open: {text: " ", tooltip: "Öffnen"},
	close: {text: " ", tooltip: "Schließen"},
	prompt: "backstage: ",
	decal: {
		edit: {text: "edit", tooltip: "Edit the tiddler '%0'"}
	}
};
if (window.location.protocol!="file:") showBackstage=true;