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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

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

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='toolbar' role='navigation' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
/***
|''Name:''|BackstageSidebarPlugin|
|''Description:''|Moves the sidebar to the backstage, as suggested at http://www.tiddlywiki.org/wiki/Dev:Backstage#Customization|
|''Author''|JonathanLister|
|''CodeRepository:''|n/a |
|''Version:''|0.1|
|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
|''License''|[[BSD License|http://www.opensource.org/licenses/bsd-license.php]] |
|''~CoreVersion:''|2.4|

***/

//{{{
if(!version.extensions.BackstageSidebarPlugin) {
version.extensions.BackstageSidebarPlugin = {installed:true};

config.tasks.sidebar = {
	text: "sidebar",
	tooltip: "sidebar options",
	content: "<<tiddler SideBarOptions>><<tiddler SideBarTabs>>"
};
config.backstageTasks.push("sidebar");

config.macros.BackstageSidebarPlugin = {
	tiddler:tiddler
};

config.macros.BackstageSidebarPlugin.init = function() {
	var tiddler = this.tiddler;
	setStylesheet(store.getTiddlerText(tiddler.title+'##Stylesheet'),'BackstageSidebarPlugin');
};

} //# end of 'install only once'
//}}}

/***
!Stylesheet

#sidebar {
	display:none;
}

!(end of Stylesheet)
***/
[[search]]
{{{

a	ah!
abit	live (reside, inhabit)
adres	address
adulte	adult
afrika	Africa
agres	agression (assault)
aha	understand (realize)
ai	alas! (ouch!)
aina	mirror
aka	brother or sister
aksar	letter (character)
akse	axis
alah	Allah
ali	other
alkol	alcohol
almari	cabinet (cupboard)
almas	diamond
alu	potato
ama	but
amen	affirm (agree, concur, amen)
amerika	America (continent)
amor	love
amper	ampere
amuk	rage (fury)
analis	analyse
andjil	gospel
anime	animation (cartoon)
anma	spirit (soul)
anten	antenna
anus	anus
ara	saw tool
arabi	Arabic
arena	arena (stadium)
argentina	Argentina
armi	army
arte	art
asal	origin
asan	posture (asana)
asia	Asia
asket	ascetic
asma	asthma
aspirin	aspirin
ata	flour
atak	attack
atom	atom
audi	hear (listen)
australia	Australia
avar	damage (wreck)
aventur	adventure
ax	argh!
ayiti	Haiti
baca	language
baca logi	linguistics
bad	bad (not good)
bada	after (later)
badal	exchange (swap)
badam	almond
badan	body
bagaj	luggage (baggage)
bai	white
bal	strong (force)
baldi	bucket
balkon	balcony (porch)
balu	sand
bambu	bamboo
ban	child (offspring)
bana	build (construct)
banan	banana
banda	band (bandage)
bandera	flag (banner)
bandi	prisoner (jailbird)
bandi kan	prison
bangla	Bangladesh (Bengal)
banka	save (deposit, bank)
banko	bench
banya	bath
banya kamar	bathroom
bar	bar (pub)
barat	India
barbar	barbarian
barda	beard
barka	congratulate
baru	bear
barud	gunpowder
bas	enough (sufficient)
basen	pool (basin)
basket	basket
bat	eight (8)
batata	yam (sweet potato)
bateri	battery
batu	stone
bazar	market (bazaar)
baze	base (foundation)
bebe	baby
bed	bed
bei	undergo (verb of the passive voice)
belarus	Belarus
belgi	Belgium
beng	sick (ill)
benzin	gasoline (petrol)
beranda	veranda (porch)
beret	beret
bet	house
beton	concrete (material with cement)
bi	with (by)
bi no	without
bi tema de	about (concerning)
bi yang de	like (in the style of)
bibi	baby (darling)
biblia	Bible
bin	pot (bin)
bir	beer
bis	kiss
biskut	biscuit (cookie)
bite	ask (request; please)
bite lai in!	Come in!
bizar	weird (strange)
bizi	busy (occupied)
biznes	business (commercial activity)
biznes jen	businessperson (businessman)
blu	blue
bobo	fool (idiot)
boi	boy
boikot	boycott
boka	mouth
bola	ball
bolgaria	Bulgaria
bomba	bomb
bon	good
bor	drill (bore)
bot	boat (ship)
botol	bottle
boton	button
brazil	Brazil
britan	Britain (UK)
broc	brush
brun	brown
buda	Buddha
budan	Mercury
budi	intelligent
budjet	budget
buk	book
bul	forget
bumi	earth (soil)
bumi dou	peanut (groundnut)
bunduk	rifle
bus	bus
buton	key (push-button)
buton paban	keyboard
cabi	key
caca	rustle
cak	doubt (disbelief)
cakal	jackal
cal	scarf (shawl)
cam	evening
cam den	afternoon
cam salam	Good evening
cam yem	dinner
caman	shaman
camba	field (countryside)
campion	champion
can	mountain (hill)
cani	Saturn
cans	opportunity (chance)
canti	peace (calm)
carbon	coal (carbon)
caria	shari'a
catan	devil (Satan)
catur	chess
cau	few (little)
cef	chief
cef wazir	prime minister
centi	centi- (per cent)
cia	under (below)
cifu	master (sensei)
cigo	accident (mishap)
cik	elegant (chic)
cim	heart
cin	believe (faith, creed)
cir	poem
cirop	syrup
cok	shock (collide)
corab	sock (stocking)
culi	repair (fix)
cup	suck
dado	die (dice)
daftar	register
dai	big
daici	ambassador
daici kan	embassy
dama	checkers
dane	seed
dania	Denmark
danke	thanks (thank you)
dans	dance
dant	tooth
dant broc	tooth brush
dant doktor	dentist
dap	answer (response)
dar	give
darba	strike (punch)
daria	sea (ocean)
darma	dharma (piety)
darsa	learn (study, lesson)
darsa ban	student (pupil)
darsa guru	teacher
darsa kan	school (institution)
dau	way (road)
dawa	drug (medicine)
dawa kan	drugstore (pharmacy)
de	of (particle of possession)
debat	argue (debate)
deci	deci-
dem	point (spot)
demo krati	democracy
demon	demon
den	day (daytime)
den salam	Good day
den yem	lunch
deng	wait
des	ten (10)
desen	drawing (picture)
detal	detail
dev	god
dev logi	theology
deya	village
din	religion
din guru	priest (cleric)
ding	nail (spike)
diske	disc (disk)
djang	fight (war)
djangal	forest (jungle)
djara	jug (jar)
djeb	pocket
djen	birth
djen den	birthday
djidju	spider
djin	near (close)
djong	species
djuca	inject
djudo	judo
djungo	China
do	to (till, until)
doc	fault (guilt)
doitce	German
dok	read
doktor	doctor (physician)
dolar	dollar
dom	home (household)
domino	dominoes
dong	east
dou	bean or pea (legume)
doze	portion (dose)
drama	drama
du	two (2)
dua	pray
duan	short (not long)
duc	shower
duka	grief (sorrow)
dul	dust
dum	tail
duman	smoke
duna	dune
dunia	world
dur	last (take time)
e	be
eglis	church
ekran	screen
ekuador	Ecuador
eletre	electricity
eletron	electron
energi	energy
englic	English
eni	any (no matter which)
eris	Eris (dwarf planet)
eritra	Erithrea
espanya	Spain
esti	Estonia
eurasia	Eurasia
euro	euro
europa	Europe
europa uni	European Union (EU)
exo	echo
fai	fire
faida	use (utility, benefit)
fain	fine (delicate)
famil	family
famil nam	surname (family name)
fan	opposing (anti-)
fanat	fan (fanatic)
fantazi	fantasy (imagination)
fantom	ghost (fantom)
fanus	lantern
far	far
farsi	Persian (Farsi)
faru	rhinoceros
fasin	fascinate
feber	fiever
fei	fly
fem	woman (female)
fen	part (fraction)
fer	iron
festa	party (festival)
fet	fat (grease)
figur	figure (representation)
fiksa	fix (attach)
fila	line (row)
filme	film
filsofi	philosophy
filter	filter
fin	end
final	last (final)
finger	finger (toe)
fizik	physique
fizik logi	physics
fobi	fear (phobia)
forka	fork
forme	form (shape)
forum	forum
fosfor	phosphorus
foto	photograph
frans	France
fu	bah! (yuck!)
fubu	belly (abdomen)
fuk	clothing
fung	wind
funsi	function (to work)
futur	future
gabar	grave (tomb)
gada	donkey (ass)
gadja	elephant
galeri	gallery (exhibition hall)
gamel	camel
gami	marriage (matrimony)
gana	sing (song)
gandja	cannabis
gang	just (recently)
ganga	Ganges
gar	car (cart)
garam	warm
garanti	guarantee
gardin	garden
gas	gas
gau	high
gaun	dress
gayana	Guyana
gaze	gauze
gazel	gazelle
ge	own (particle of possession)
gem	game
gen	root
gida	drive
giga	billion (giga-)
gim	gold
ging	respect (esteem)
gitar	guitar
glas	glass
go	go
godjia	country (land)
gol	goal
gola	throat (gullet)
gom	rubber
gon	past (former, gone)
gong	work (labor)
gong jen	worker
gong kan	workplace
goro	pig
goro nama	pork
goton	cotton
grafik	graphic (image)
gram	gram
gras	grass
grimas	grimace
grom	thunder (roar)
grup	group
gua	cave
guanci	connection (relationship)
guang	light (illumination)
gubu	hippopotamus
gun	quality (attribute, property, characteristic, -ness)
guru	guru (mentor)
gusta	taste (sense the flavor)
gut	bone
ha	have
haha	laugh
hai	still (yet)
haide	let's
hak	right (justification, privilege)
hakim	judgment (sentence)
hakim guru	judge (referee)
hal	state (condition, situation, status)
halo	hello (hi)
hamak	hammock
hamar	hammer
hamir	yeast
handis	engineer (apply science to)
hanguk	South Korea
harmoni	harmony
hat	hand
hata	even (up to)
hawa	air
hazar	hazard (random)
helen	Greek (Hellenic)
helmet	helmet
hen	very
hewan	animal
hibride	hybrid (mongrel)
hima	snow
hima rose	frost
himalia	Himalayas
hindu	Hindu
hisab	calculation (arithmetic, computation)
histori	history
hobi	hobby
hon	hundred
hor	hour
hormon	hormone
horvat	Croatia
hotel	hotel
hua	flower
hua bin	vase (flower pot)
huli	fox
humus	chickpea
humus sos	hummus
hura	hooray (cheer)
i	and
ibri	Hebrew
idea	idea
imper	empire
in	inside (interior)
incala	hope (wish)
indji	ginger
indonesia	Indonesia
informa	inform (communicate)
ingai	should (ought)
inspira	inspire (inspiration)
interes	interest (interesting)
intervu	interview
irak	Iraq
iran	Iran
islam	Islam
island	Iceland
israel	Israel
it	brick
italia	Italy
itiopia	Ethiopia
izi	easy
ja	already (done)
jadi	if (suppose, assume)
jaket	jacket
janela	window
janu	knee
jele	gel (jelly)
jelos	jealous
jen	person (people)
jeni	genius
jeste	gesture
jiraf	giraffe
jiva	live (life)
jiva logi	biology (study of life)
joga	play (have fun)
jok	joke
jovan	young
jumla	sentence (phrase)
jung	melt
jup	skirt
jus	juice
ka	like (as, as if, than)
kabau	water buffalo
kabil	able (capable)
kabila	tribe
kabin	cabin (booth)
kaca	porridge
kafas	cage
kafe	coffee
kafe kan	cafe (coffee shop)
kafe kop	coffee cup
kai	open (not closed)
kaici	begin (commence)
kaka	excrement (shit)
kakau	cocoa
kalam	pen
kalsium	calcium (Ca)
kamar	room (chamber)
kamar tal	floor
kambudia	Cambodia
kamera	camera
kamis	shirt
kamp	camp
kan	workshop (place for...)
kanada	Canada
kanal	channel
kandi	candy (sweets)
kanguru	cangaroo
kanun	law
kap	get (take, receive)
kapa	cover (covering)
kapitan	captain
kaput	broken (out of order)
kar	make (do, act)
kara	black
karaoke	karaoke
karate	karate
kari	curry
karo	square
karot	carrot
karta	card
kasa	case (container)
kastan	chestnut
kat	cut
kata	story (tale)
katalunya	Catalonia
katca	catch (to hunt)
kati	knife
kava	dig (excavate)
kawai	cute
kazu	event (case, instance)
ke	what?
ke yang?	how?
kek	cake
kelele	noise
kemet	Ancient Egypt (Kemet)
ken	can (be able)
kenar	border (edge)
kenya	Kenya
ketcap	ketchup
ketci	polite
ketel	kettle
kia	ask (question)
kilo	thousand (kilo-)
kilo gram	kilogram (kg)
kimi	chemical
kimi logi	chemistry
kira	rent
kira dar	rent out (let, lease)
kira kap	rent (hire)
kirat	carat
kismat	fate (destiny)
kitab	write
kitab kan	library
kiwi	kiwi fruit
klar	clear (not obscured)
klas	class (category)
klub	club
kod	code (cipher)
kok	chicken
koko	coco
kolombia	Colombia
koloni	colony (settlemen)
kolun	column (pillar)
koma	comma
kompani	company (corporation)
komputer	computer
komun	common (shared)
kona	corner (angle)
konsel	advice (counsel)
konson	consonant
kontcung	insect
kontinu	continue (resume)
konus	cone
kop	cup
kopi	copy
korne	horn
kos	cough
kosmos	space (cosmos, universe)
kosta	shore (coast)
kot	coat
koz	reason (cause)
krem	cream
kri	cry (shout)
krus	cross
kuan	wide
kuang	mineral (ore)
kuang sui	mineral water
kul	cool
kuli	porter (coolie)
kultur	culture
kupa	dome (vault)
kuper	copper
kupon	coupon
kura	care (cure)
kuran	Quran (Koran)
kursi	chair
kurva	curve
kusen	cushion (pillow)
lab	lip
laba	horn (bugle)
lad	load (to charge)
ladji	rubbish (trash)
lai	come
lai salam	welcome
laka	lacquer (varnish)
lal	red
lala	lie (lie down)
lampa	lamp
lanka	Sri Lanka
lans	throw (launch)
lao	Laos
larva	larva (maggot, caterpillar)
lastik	elastic
lasun	garlic
lat	pungent (spicy, hot)
lat tcili	chili pepper
latvia	Latvia
lau	old (not young)
lava	lava
len	practice (to exercise)
leng	cold
leter	letter (message)
letis	lettuce
libel	dragonfly
liber	free (unchained)
licu	squirrel
lid	lead (direct)
lietuva	Lithuania
lig	connect (join, link)
lilak	lilac
lili	lily
lim	five (5)
limfa	lymph
limit	limit (boundary)
limun	lemon
lin	line (stripe)
lis	smooth
lista	list
lit	little (small)
litci	lychee (litchi)
liter	liter (litre)
lobak	radish
loga	say (word)
logi	science
lok	place (location)
long	long
losi	screw
lubnan	Lebanon
lulu	pearl
lun	argument (thesis)
luna	moon
lusun	asparagus
lut	rob (loot)
macin	machine
madjar	Hungary
madju	harness
maf	sorry (pardon)
mafan	trouble (disturbance, bother)
magi	magic
magnet	magnet
mai	commerce
mai dar	sell
mai kap	buy
maidan	square (plaza)
mais	corn (maize)
makala	article (writing)
makan	butter
makas	scissors
makedonia	Macedonia
mal	property (possession)
malaisia	Malaysia
malaria	malaria
mam	breast (boob)
mama	mother
man	man (male)
mana	mean (signify)
manga	comic (cartoon)
mango	mango
mangus	mangosteen
mani	mania (frenzy)
manioka	cassava (manioc)
mantu	dumpling
manuc	human being
mar	time (occasion)
mara	tree
maraton	marathon
marce	walk (march)
margarin	margarine
marka	mark (trace)
marmar	marble
marsi	Mars
mas	more
masa	mass (lump)
masala	issue
masim	most (maximally)
maska	mask (camouflage)
mat	forbid (don't!)
matce	match (contest)
matci	fish
mater	matter (substance)
matras	mattress
matur	mature (ripe, adult)
mau	cat
medalia	medallion (medal)
mede	help
medi	mean (medium)
medit	meditate (ponder)
medu	honey
mega	million (mega-)
melodi	melody
member	member
meme	sheep
memori	memory
men	surface
mes	month
mes 1 (mes un)	January
mes 10 (mes des)	October
mes 11 (mes des un)	November
mes 12 (mes des du)	December
mes 2 (mes du)	February
mes 3 (mes sam)	March
mes 4 (mes tcar)	April
mes 5 (mes lim)	May
mes 6 (mes sis)	June
mes 7 (mes set)	July
mes 8 (mes bat)	August
mes 9 (mes noi)	September
mesi	messiah (Christ)
metal	metal
metal nik	metalhead
meter	meter
metod	method
mexiko	Mexico
meza	table
mi	I (me)
mi ge	my
mien	noodle
migan	mandarin orange
mikro	micro-
mil	meet
mili	milli-
milke	milk
mimen	we
min	less
minara	tower
ming	bright (radiant)
minim	least (minimally)
minus	except (minus)
minut	minute
misal	example
miskin	poor (miserable)
misri	Egypt
mit	myth
mitcin	MSG (monosodium glutamate)
moda	fashion (trend)
moda nik	fashionista
model	model (design)
mogu	mushroom (fungus)
mol	soft
moli	jasmine
mongol	Mongolia
monster	monster
moral	morality (ethics)
mos	moss
mosim	season
moskit	mosquito
mot	death (dead)
motor	engine (motor)
mucing	Jupiter
mucu	mouse
mudan	peony
muhim	important
muka	face
mum	wax
mumia	mummy
mumu	cow
mumu nama	beef
mun	door (gate)
mungus	mongoose
munkin	possible (maybe)
mus	must
musik	music
musik nik	music fan
muskul	muscle
myanma	Myanmar (Burma)
na	at (in, on)
na cia	below (under)
na dur de	while (during)
na in	in (inside)
na men	on (on the surface)
na vis de	instead of
na wai	out (outside)
nabat	plant (vegetable)
nabi	prophet
nadi	river
nafas	breath
naidjiria	Nigeria
nale	tomorrow
nam	name
nama	meat (flesh)
nami	wave
nanas	pineapple
nano	nano-
narak	hell
nas	people (folk)
nasia	nation
nau	brain
naxun	nail (fingernail)
nederland	Netherlands
nen	year
nen festa	anniversary
nenufar	water lily (nenuphar)
nepal	Nepal
neptun	Neptune
neses	need
net	net
nic	niche (alcove)
nik	enthusiast (aficionado)
nilon	nylon
nipon	Japan
nitro	nitrogen
no	no (not)
noi	nine (9)
nong	cultivate
nor	north
norge	Norway
normal	norm (standard)
nos	nose
not	notice (observe)
notce	night
nov	new
nud	naked (bare)
nul	zero (none)
numer	number
numer un	first (number one)
nun	now
nuton	newton (N)
o	oh!
okei	okay (acceptable)
oksi	oxygen
oma	grandmother
oman	Oman
opa	grandfather
or	ear
ordu	horde (wandering troop)
orgazme	orgasm
oskur	dark (dim)
paban	board (plank)
pagri	turban
pai	pie (pastry)
pak	pack (package)
paket	packet
paki	bird
pakistan	Pakistan
pal	fruit
palma	palm tree
palo	pole (stake)
pan	bread
panda	panda
pandunia	Pandunia
pang	thick (fat)
panik	panic
pantalon	pants (trousers)
panyo	friend
papa	father
papagai	parrot (parakeet)
papaya	papaya
paper	paper
paraguay	Paraguay
parda	curtain
pas	pass (go by, go past)
pasa	pass (transfer, hand over)
paskal	pascal
pat	path
paunde	pound (£)
peca	job (occupation)
ped	foot
pei	pay (payment)
pende	hang (dangle)
penguin	penguin
penis	penis
pensa	think
penta	paint
pera	pear
perfet	perfect
peri	fairy
permis	allow (permit)
peru	Peru
pesa	money
piano	piano
pica	piss (urine)
pifu	skin
pigu	buttocks (butt)
piknik	picnic
pilipin	Philippines (Filipino)
pilot	pilot
pin	needle (pin)
ping	flat
pingo	apple
pinse	pliers (pincers)
pipa	pipe
piper	pepper
piping	criticize
pirat	pirate
pistol	pistol
pistol nik	gunslinger
pitsa	pizza
plan	plan
planet	planet
plastik	plastic
plat	plate
plus	also (plus, too)
pluto	Pluto (dwarf planet)
poker	poker
poli	much (many, lots)
polis	police
politik	politics
polska	Poland
pompa	pump (to)
pon	put (place)
pont	point (indicate)
por	for (in order to)
porta	carry (bear)
portugal	Portugal
posta	mail
posta cap	postal stamp
posta kan	post office
poto	mud (mire)
pratik	practical
presis	precise (exact, accurate)
proba	try (attempt)
problem	problem
program	program
projet	project (planned endeavour)
proses	process (procedure)
puder	powder
puding	pudding
pudja	worship
pul	bridge
pulo	island
punt	point (full stop)
pupe	doll (puppet)
puru	feather
putau	grape
putong	common (universal)
putong han	Mandarin Chinese (Putonghua)
radio	radio
ramazan	Ramadan
randa	plane (plane tool)
rang	color
rapid	fast (quick)
rasa	race (ethnicity)
rasti	grow
razon	reason (rational thinking)
re	again
rebel	rebellion
redi	ready (prepare)
repor	report (recount, relate)
reset	recipe
resid	receit
restoran	restaurant
rezin	resin
rik	rich
ris	rice
riske	risk
rit	ritual (ceremony)
ritme	rhythm (beat)
robot	robot
roket	rocket
rol	role
rola	roll
rom	rum
roma	Rome
ron	cry (weep)
rong	oriental dragon
rose	dew
rosia	Russia
rotor	rotor (rotator)
roza	rose
ruk	back
ruk sak	backpack (rucksack)
rup	appearance (looks)
ruski	Russian (ethnic Russian)
rutin	routine
sa	this or that
sa djin	this (this over here)
sa far	that (that over there)
sabat	Sabbath
sabun	soap
sabur	patient (composed)
sade	plain (simple)
saf	clean (pure)
safar	travel (voyage)
safar nik	tourist
sak	bag (sack)
sal	salt
salada	salad
salam	greeting (hello)
salim	surrender (to give up)
sam	three (3)
sama	sky (heaven)
san	make (produce, manufacture)
san kan	factory
sanduk	box (chest)
sang	blood
sani	sleigh (sledge)
sant	holy (sacred)
sap	know
sapat	shoe
sar	head
sar gut	skull
sat	time of day (moment)
se	self
seksi	sex (sexual intercourse)
sekun	second(s)
sekur	safe (secure)
sel	cell (biology)
selen	selenium
sem	same
sen	chest (thorax)
sens	sense
sensur	censor
senti	feel (emotion)
serbia	Serbia
seres	Ceres (dwarf planet)
seri	series
serva	serve (wait upon)
sesam	sesame
set	seven (7)
set var	week
sibir	Siberia
sifa	quality (charasteristic)
sigar	cigar
sigaret	cigarette
silsil	chain
sin	sign (signal)
singa	lion
singapur	Singapore
sir	secret
sis	six (6)
sismo	earthquake
sismo logi	seismology
sistem	system
sitat	quote (to cite)
siti	city (town)
sivil	civilian (civil)
slovenia	Slovenia
sofa	sofa (couch)
sofi	wise
sok	search (seek)
sol	only (just)
son	sleep (dream)
son kamar	bedroom
soni	sound
sos	sauce
sosis	sausage
sporte	sport (athletics)
stadion	stadium
stat	state
stop	stop
suan	sour
suba	morning
suba den	forenoon
suba salam	Good morning
suba yem	breakfast
sud	south
sudafrika	South Africa (republic)
sudan	Sudan
sui	water
suk	enjoy (like, be pleased, be happy)
sukar	sugar
sultan	power (authority, rule)
sum	sum (total)
sun	soon
sundar	beautiful (handsome)
suomi	Finland
sup	soup
super	superb (wonderful, super)
sura	chapter (section)
suriname	Suriname
surya	sun
suxa	dry
svedia	Sweden
ta	he or she or it
tabak	tobacco
tabar	axe (hatchet)
tabia	nature (environment)
tabul	table (matrix)
tai	Thai (Thailand)
taiga	taiga
taksi	taxi
taktik	tactics (strategy)
tal	bottom
tala	lock
talka	bee (communal work)
tamar	date fruit
tambur	drum
tamen	they
tanax	Tanakh (Jewish Bible)
tank	tank (container)
tanzania	Tanzania
tap	tap (stopper)
tara	star
tatu	tattoo
taul	towel
tava	frying pan
taza	fresh
tca	tea
tca wan	tea bowl
tcabuk	whip (lash)
tcakra	wheel
tcap	press (stamp)
tcar	four (4)
tcat	chat (informal conversation)
tcat kamar	chat room
tcatar	umbrella (parasol)
tcaya	shadow
tcek	check (to examine)
tcelo	cello
tceska	Czech
tcile	Chile
tcili	bell pepper
tciperia	Albania
tcis	cheese
tcoda	fuck
tcokolat	chocolate
tcuri	steal (theft)
tcuti	vacation (holiday)
tekni	technique (technology)
tekni logi	technology (study of techniques)
tela	cloth (fabric, textile)
tele	distant (tele-)
tema	topic (theme)
ten	hold (grasp)
tenis	tennis
tenta	tempt (entice)
tentci	weather
teori	theory
tep	tape
teror	terror
teste	test (challenge)
teyan	suggest (propose)
tez	intense (depending on context: strong, brisk, violent, swift, pungent, hot, fiery, sharp)
ti	you
tik	right (correct)
tiket	ticket
tim	team
timen	you
tin	can (tin can)
ting	thing
tip	type (category)
tira	pull
tiran	tyrant
titan	titanium
titcin	bow instrument (violin, etc.)
to	so (then, therefore)
togo	Togo
tomat	tomato
ton	tone (pitch or shade)
tong	barrel (can)
top	gun
tot	all
total	total (complete)
tren	train
tren dau	railway (railroad)
tsuka	vinegar
tualet	toilet (WC)
tub	tube (pipe)
tufan	storm (tempest)
tul	tool
tulip	tulip
tundra	tundra
tunel	tunnel
tunel tren	subway (metro)
tung	hurt (pain)
tunis	Tunisia
tur	tour (trip)
turkia	Turkey
tuzi	rabbit (hare)
u	or
udas	sad
ukrayina	Ukraine
ulu	howling
uma	horse
umur	age
un	one (1)
uni	unite
uni stat de amerika	United States of America
uran	Uranus
uranium	uranium
urdun	Jordan
uruguai	Uruguay
usa	USA
vaksin	vaccine
vale	valley
vanila	vanilla
var	day of the week
var 1 (var un)	Monday
var 2 (var du)	Tuesday
var 3 (var sam)	Wednesday
var 4 (var tcar)	Thursday
var 5 (var lim)	Friday
var 6 (var sis)	Saturday
var 7 (var set)	Sunday
vaza	vase
venen	poison (venom)
venesuela	Venezuela
venus	Venus
ver	true (real)
verme	worm
vide	look (see)
vide maidan	visual field (field of vision)
video	video
viet	Vietnam
viman	airplane
vin	wine
vinil	vinyl
virus	virus
virus logi	virology
vis	substitute (vice-)
visa	visa
visin	neighbour (vicinity)
viza	show (display)
vizit	visit
vodu	voodoo
vokal	vowel
vol	want (desire)
volta	volt
vos	voice
vot	vote
wa	wow! (gee!)
wac	wash
wac macin	washing machine
wad	promise (commitment)
wadi	canyon (gulch, gorge)
waf	dog
waha	oasis
wai	outside (exterior)
wai ting wazir kan	ministry of foreign affairs
wakil	represent (to)
wal	wall
wan	bowl (earless cup)
wang	yellow
waris	heritage (bequest)
wat	watt
wazir	minister (politician)
wazir kan	ministry
wen	circle (round)
weste	west
wiki	wiki
win	win (victory)
xabar	news
xabar paper	newspaper
xali	empty
xalif	caliph
xan	monarch (king, queen)
xaos	chaos (disorder, turmoil)
xarab	bad (ruined, spoiled)
xas	special (distinct)
xatar	danger (peril)
xazin	treasure (treasury)
xema	tent
xen	hate
xerub	cherub
xiyar	cucumber
xolera	cholera
xor	choir (chorus)
yak	yak
yakin	certain (sure)
yala	hurry (hasten)
yaman	Yemen
yang	kind (type, style)
yani	that is (in other words, i.e.)
yasen	ash tree
ye	yes (yeah)
yehudi	Jew
yem	eat
yen	eye
yen sui	tear drop
yep	leaf
yer	yesterday
yesu	Jesus
yo	some
yo jen	someone (somebody)
yo ting	something
yod	iodine
yoga	yoga
yoni	vagina
yumor	humor
yung	use (employ)
yungam	brave (courageous)
yureka	find (discover)
zafran	saffron
zaitun	olive
zalim	mean (cruel)
zaman	period (age, epoch)
zambia	Zambia
zarduc	Zoroaster
zarduc din	Zoroastrianism
zarura	necessary (critical)
ze	from (since)
zimbabwe	Zimbabwe
zina	adultery (infidelity)
zink	zinc
zira	cumin
zizi	fly (housefly)
zon	belt (zone)
zukam	cold (illness)
zulu	Zulu
zumrud	emerald

}}}
/***
|Name|DisableWikiLinksPlugin|
|Source|http://www.TiddlyTools.com/#DisableWikiLinksPlugin|
|Version|1.6.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|selectively disable TiddlyWiki's automatic ~WikiWord linking behavior|
This plugin allows you to disable TiddlyWiki's automatic ~WikiWord linking behavior, so that WikiWords embedded in tiddler content will be rendered as regular text, instead of being automatically converted to tiddler links.  To create a tiddler link when automatic linking is disabled, you must enclose the link text within {{{[[...]]}}}.
!!!!!Usage
<<<
You can block automatic WikiWord linking behavior for any specific tiddler by ''tagging it with<<tag excludeWikiWords>>'' (see configuration below) or, check a plugin option to disable automatic WikiWord links to non-existing tiddler titles, while still linking WikiWords that correspond to existing tiddlers titles or shadow tiddler titles.  You can also block specific selected WikiWords from being automatically linked by listing them in [[DisableWikiLinksList]] (see configuration below), separated by whitespace.  This tiddler is optional and, when present, causes the listed words to always be excluded, even if automatic linking of other WikiWords is being permitted.  

Note: WikiWords contained in default ''shadow'' tiddlers will be automatically linked unless you select an additional checkbox option lets you disable these automatic links as well, though this is not recommended, since it can make it more difficult to access some TiddlyWiki standard default content (such as AdvancedOptions or SideBarTabs)
<<<
!!!!!Configuration
<<<
<<option chkDisableWikiLinks>> Disable ALL automatic WikiWord tiddler links
<<option chkAllowLinksFromShadowTiddlers>> ... except for WikiWords //contained in// shadow tiddlers
<<option chkDisableNonExistingWikiLinks>> Disable automatic WikiWord links for non-existing tiddlers
Disable automatic WikiWord links for words listed in: <<option txtDisableWikiLinksList>>
Disable automatic WikiWord links for tiddlers tagged with: <<option txtDisableWikiLinksTag>>
<<<
!!!!!Revisions
<<<
2008.07.22 [1.6.0] hijack tiddler changed() method to filter disabled wiki words from internal links[] array (so they won't appear in the missing tiddlers list)
2007.06.09 [1.5.0] added configurable txtDisableWikiLinksTag (default value: "excludeWikiWords") to allows selective disabling of automatic WikiWord links for any tiddler tagged with that value.
2006.12.31 [1.4.0] in formatter, test for chkDisableNonExistingWikiLinks
2006.12.09 [1.3.0] in formatter, test for excluded wiki words specified in DisableWikiLinksList
2006.12.09 [1.2.2] fix logic in autoLinkWikiWords() (was allowing links TO shadow tiddlers, even when chkDisableWikiLinks is TRUE).  
2006.12.09 [1.2.1] revised logic for handling links in shadow content
2006.12.08 [1.2.0] added hijack of Tiddler.prototype.autoLinkWikiWords so regular (non-bracketed) WikiWords won't be added to the missing list
2006.05.24 [1.1.0] added option to NOT bypass automatic wikiword links when displaying default shadow content (default is to auto-link shadow content)
2006.02.05 [1.0.1] wrapped wikifier hijack in init function to eliminate globals and avoid FireFox 1.5.0.1 crash bug when referencing globals
2005.12.09 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.DisableWikiLinksPlugin= {major: 1, minor: 6, revision: 0, date: new Date(2008,7,22)};

if (config.options.chkDisableNonExistingWikiLinks==undefined) config.options.chkDisableNonExistingWikiLinks= false;
if (config.options.chkDisableWikiLinks==undefined) config.options.chkDisableWikiLinks=false;
if (config.options.txtDisableWikiLinksList==undefined) config.options.txtDisableWikiLinksList="DisableWikiLinksList";
if (config.options.chkAllowLinksFromShadowTiddlers==undefined) config.options.chkAllowLinksFromShadowTiddlers=true;
if (config.options.txtDisableWikiLinksTag==undefined) config.options.txtDisableWikiLinksTag="excludeWikiWords";

// find the formatter for wikiLink and replace handler with 'pass-thru' rendering
initDisableWikiLinksFormatter();
function initDisableWikiLinksFormatter() {
	for (var i=0; i<config.formatters.length && config.formatters[i].name!="wikiLink"; i++);
	config.formatters[i].coreHandler=config.formatters[i].handler;
	config.formatters[i].handler=function(w) {
		// supress any leading "~" (if present)
		var skip=(w.matchText.substr(0,1)==config.textPrimitives.unWikiLink)?1:0;
		var title=w.matchText.substr(skip);
		var exists=store.tiddlerExists(title);
		var inShadow=w.tiddler && store.isShadowTiddler(w.tiddler.title);
		// check for excluded Tiddler
		if (w.tiddler && w.tiddler.isTagged(config.options.txtDisableWikiLinksTag))
			{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }
		// check for specific excluded wiki words
		var t=store.getTiddlerText(config.options.txtDisableWikiLinksList);
		if (t && t.length && t.indexOf(w.matchText)!=-1)
			{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }
		// if not disabling links from shadows (default setting)
		if (config.options.chkAllowLinksFromShadowTiddlers && inShadow)
			return this.coreHandler(w);
		// check for non-existing non-shadow tiddler
		if (config.options.chkDisableNonExistingWikiLinks && !exists)
			{ w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }
		// if not enabled, just do standard WikiWord link formatting
		if (!config.options.chkDisableWikiLinks)
			return this.coreHandler(w);
		// just return text without linking
		w.outputText(w.output,w.matchStart+skip,w.nextMatch)
	}
}

Tiddler.prototype.coreAutoLinkWikiWords = Tiddler.prototype.autoLinkWikiWords;
Tiddler.prototype.autoLinkWikiWords = function()
{
	// if all automatic links are not disabled, just return results from core function
	if (!config.options.chkDisableWikiLinks)
		return this.coreAutoLinkWikiWords.apply(this,arguments);
	return false;
}

Tiddler.prototype.disableWikiLinks_changed = Tiddler.prototype.changed;
Tiddler.prototype.changed = function()
{
	this.disableWikiLinks_changed.apply(this,arguments);
	// remove excluded wiki words from links array
	var t=store.getTiddlerText(config.options.txtDisableWikiLinksList,"").readBracketedList();
	if (t.length) for (var i=0; i<t.length; i++)
		if (this.links.contains(t[i]))
			this.links.splice(this.links.indexOf(t[i]),1);
};
//}}}
/***
|''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);
}
//}}}
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<link rel="shortcut icon" href="http://upload.wikimedia.org/wikipedia/commons/thumb/9/97/The_Earth_seen_from_Apollo_17.jpg/240px-The_Earth_seen_from_Apollo_17.jpg" type="image/x-icon">
<!--}}}-->
<!--{{{-->
<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='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>
<!--}}}-->
/***
|''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"
	});
*/
//}}}
/%
!info
|Name|ReplaceDoubleClick|
|Source|http://www.TiddlyTools.com/#ReplaceDoubleClick|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|disable doubleclick-to-edit-tiddler or replace doubleclick with shift/ctrl/alt+singleclick|
Usage:
<<<
{{{
<<tiddler ReplaceDoubleClick>> or
<<tiddler ReplaceDoubleClick with: key trigger>>
}}}
*''key'' (optional)
**''none'' (default=disables double-click)
**''ctrl, shift,'' or ''alt'' invokes the action only when the indicated key is used in combination with the mouse.
*''trigger'' (optional)<br>is either 'click' or 'doubleclick' (default).
<<<
Example:
<<<
{{{<<tiddler ReplaceDoubleClick with: shift click>>}}}
<<tiddler ReplaceDoubleClick with: shift click>>//(use shift+click to edit this tiddler)//
<<<
!end
!show
<<tiddler {{
	var here=story.findContainingTiddler(place);
	if (here && here.ondblclick) {
		here.setAttribute('editKey','none');
		var key='$1'; if (key=='$'+'1') key='none'
		if (['shift','ctrl','alt'].contains(key))
			here.setAttribute('editKey',key+'Key');
		var trigger=('$2'=='click')?'onclick':'ondblclick';
		here.save_dblclick=here.ondblclick;
		here.ondblclick=null;
		if (here.getAttribute('editKey')!='none')
			here[trigger]=function(e) {
				var ev=e?e:window.event;
				if (ev[this.getAttribute('editKey')])
					this.save_dblclick.apply(this,arguments);
			}
	}'';}}>>
!end
%/<<tiddler {{var src='ReplaceDoubleClick';src+(tiddler&&tiddler.title==src?'##info':'##show')}} with: [[$1]] [[$2]]>>
//dictionary//
Pandunia - English
body {font-size:0.9em; font-family:verdana,arial,helvetica; margin:0; padding:0;}
.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:0em 0 0.1em .5em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:0em 0 .1em .5em; left:0px; top:0px;}
#displayArea {margin:-1em 4em 0em 4em; }
.viewer table, table.twtable {margin:0.8em 0;width:100%;}
.viewer a{color: #000;text-decoration:none;background:transparent;}
.viewer a:hover{color:#03f;text-decoration:underline;background:transparent;}
.toolbar {font-size:0em;}
|~ViewToolbar|+editTiddler|
|~EditToolbar|+saveTiddler -cancelTiddler copyTiddler deleteTiddler|
/***
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 = 'http://www.pandunia.info/english/tiddly.html';

// 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,{

'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"),

'TspotOptions':[
 "tiddlyspot password:",
 "<<option pasUploadPassword>>",
 ""
].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"),

'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")

});
//}}}
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 30/12/2015 16:20:21 | YourName | [[/|http://www.pandunia.info/english/]] | [[store.cgi|http://www.pandunia.info/english/store.cgi]] | . | [[index.html | http://www.pandunia.info/english/tiddly.html]] | . |
| 30/12/2015 16:51:02 | YourName | [[/|http://www.pandunia.info/english/]] | [[store.cgi|http://www.pandunia.info/english/store.cgi]] | . | [[index.html | http://www.pandunia.info/english/tiddly.html]] | . |
| 30/12/2015 16:56:17 | YourName | [[/|http://www.pandunia.info/english/]] | [[store.cgi|http://www.pandunia.info/english/store.cgi]] | . | [[index.html | http://www.pandunia.info/english/tiddly.html]] | . |
| 30/12/2015 16:57:36 | YourName | [[/|http://www.pandunia.info/english/]] | [[store.cgi|http://www.pandunia.info/english/store.cgi]] | . | [[index.html | http://www.pandunia.info/english/tiddly.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");


//}}}

<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<span macro="tiddler ReplaceDoubleClick with: alt click"></span></span>
<div class='title' macro='view title'></div>
<div class='viewer' macro='view text wikified'></div>
<!--}}}-->
<<tiddler HideTiddlerTags>>{{small smallform{
<html><a href='http://www.pandunia.info/english/tiddly.html' class='link'><u>Download the dictionary for offline</u></a><form style='display:inline;white-space:nowrap;' onsubmit='this.pavysisku.click();return false;'>
<table><tr><td style='width:33%;font-size:1.4em;'>
Search for <input name=pattern style='width:auto;font-size:1.4em;' value='' title='o lukin' autofocus>
<input type=button style='width:auto;font-size:1.0em;' name=pavysisku value='Go !' onclick="
var f=this.form;
var target=f.nextSibling; removeChildren(target);
var arrRestStr=[];
var outa=[];
var outb=[];
var outc=[];
var outd=[];
var oute=[];
var Couta=[];
var Coutb=[];
var Coutc=[];
var Coutd=[];
var Coute=[];
var zil=[];
var tempa;
var tempb='';
var tempc;
var tempd;
var tempe;
var tb='[^\t]*?\t';
var fpvd;
var zi='@@background-color:#7FFF00;$1@@';
var sle='>|>|@@margin-top:0px;padding-left:0.5em;padding-right:0.5em;font-size:1em;float:right;font-weight:normal;border:1px solid #393939;margin-top:-1px;color:#fff;background:#db4;display:block;//[[';
var slewhite='>|>|@@margin-top:0px;padding-left:0.5em;padding-right:0.5em;font-size:1em;float:right;font-weight:normal;border:1px solid #222;margin-top:-1px;color:#fff;background:#999;display:block;//[[';
Array.prototype.diff = function(a) {
    return this.filter(function(i) {return !(a.indexOf(i) > -1);});
};

var tids=store.getTaggedTiddlers('dic');
fpv = f.pattern.value.toLowerCase();
fpvd=fpv;
if(fpv.length == 0) return;
for (var t=0; t<tids.length; t++) {

	arrRestStr=store.getTiddlerText(tids[t].title,'').split('\n');
//precise
	tempa=arrRestStr.filter(/./.test.bind(new RegExp('^'+fpv+'\t','i')));
	arrRestStr = arrRestStr.diff(tempa);
	//tempb=arrRestStr.filter(/./.test.bind(new RegExp('^'+'(|[^\t]*?[;\.\042])'+fpv+'[!;\.\042\t]','i')));
	//arrRestStr = arrRestStr.diff(tempb);
	tempc=arrRestStr.filter(/./.test.bind(new RegExp('^'+'(|[^\t]*?[;\.\042, ])'+fpv+'[!;\.\042, \t]','i')));
	arrRestStr = arrRestStr.diff(tempc);
	if (tempa.length+tempb.length+tempc.length>0) outa = outa.concat([sle+tids[t].title+']]//@@']);
	zil = zil.concat(tempa.slice(0,30)).concat(tempc.slice(0,30)).map(function(somet){return somet.replace(new RegExp('('+fpv+')', 'gi'),zi);});
        outa = outa.concat(zil); zil=[];
//now vague
	tempd=arrRestStr.filter(/./.test.bind(new RegExp('^'+'(|[^\t]*?[;\.\042, ])'+fpv,'i')));
	arrRestStr = arrRestStr.diff(tempd);
	tempe=arrRestStr.filter(/./.test.bind(new RegExp('^'+'(|[^\t]*?)'+fpv,'i')));
	arrRestStr = arrRestStr.diff(tempe);
	if (tempd.length+tempe.length>0) outd = outd.concat([slewhite+tids[t].title+']]//@@']);
	zil = zil.concat(tempd.slice(0,30)).concat(tempe.slice(0,30)).map(function(somet){return somet.replace(new RegExp('('+fpv+')', 'gi'),zi);});
        outd = outd.concat(zil); zil=[];
//Cout precise
	tempa=arrRestStr.filter(/./.test.bind(new RegExp('^'+tb+tb+fpv+'([!;\.\042\t,]|$)','i')));
	arrRestStr = arrRestStr.diff(tempa);
	//tempb=arrRestStr.filter(/./.test.bind(new RegExp('^'+tb+'(|[^\t]*?[;\.\042])'+fpv+'([!;\.\042\t]|$)','i')));
	//arrRestStr = arrRestStr.diff(tempb);
	tempc=arrRestStr.filter(/./.test.bind(new RegExp('^'+tb+'(|[^\t]*?[;\.\042, ])'+fpv+'([!;\.\042, \t]|$)','i')));
	arrRestStr = arrRestStr.diff(tempc);
	if (tempa.length+tempb.length+tempc.length>0) Couta = Couta.concat([sle+tids[t].title+']]//@@']);
	zil = zil.concat(tempa.slice(0,30)).concat(tempc.slice(0,30)).map(function(somet){return somet.replace(new RegExp('('+fpv+')', 'gi'),zi);});
        Couta = Couta.concat(zil); zil=[];
//now vague
	tempd=arrRestStr.filter(/./.test.bind(new RegExp('^'+tb+'(|[^\t]*?[;\.\042, ])'+fpv+'([!;\.\042, \t]|$)','i')));
	arrRestStr = arrRestStr.diff(tempd);
	tempe=arrRestStr.filter(/./.test.bind(new RegExp('^'+tb+'(|[^\t]*?)'+fpv,'i')));
	arrRestStr = arrRestStr.diff(tempe);
	if (tempd.length+tempe.length>0) Coutd = Coutd.concat([slewhite+tids[t].title+']]//@@']);
	zil = zil.concat(tempd.slice(0,30)).concat(tempe.slice(0,30)).map(function(somet){return somet.replace(new RegExp('('+fpv+')', 'gi'),zi);});
        Coutd = Coutd.concat(zil); zil=[];
	//Coute = Coute.concat(tempe.slice(0,30));
}
//concat all arrays, reformat to tw-table formatting
if (outa.length>0) outa = ['>\t>\t!in source words:'].concat(outa);
if (Couta.length>0) Couta = ['>\t>\t!in translation:'].concat(Couta);
if (outa.length+Couta.length>0) outa = ['>\t>\t!PRECISE SEARCH'].concat(outa);

//vague search output
if (outd.length>0) outd = ['>\t>\tbackground-color:#999;!in source words:'].concat(outd);
if (Coutd.length>0) Coutd = ['>\t>\tbackground-color:#999;!in translation:'].concat(Coutd);
if (outd.length+Coutd.length>0) outd = ['>\t>\tbackground-color:#999;!SEQUENCE SEARCH'].concat(outd);
tids = outa.concat(Couta).concat(outd).concat(Coutd).join('\n').replace(/(^|\t|$)/img,'|');

//output this fucking string!
if (tids.length>3) wikify(tids,target);
"></td></tr></table></form><div></div></html>
}}}
config.messages.backstage.open.text="";
config.messages.backstage.close.text="";
config.options.chkShowRightSidebar=false;
config.options.txtToggleRightSideBarLabelShow="jbobau";
config.options.txtToggleRightSideBarLabelHide="jbobau";
config.options.chkSinglePageMode=true;
config.options.chkSinglePagePermalink=true;
config.options.chkDisableWikiLinks=true;
//{{{ 
// hacky solution to avoid scrolling header out of view 
window.ensureVisible = function(e) {return false} 

//}}}