Грамматика английского языка: источник здесь Учебник английского языка
<!--{{{-->
<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>>
<<options>>{{smallform{{{wrap{<<tiddler PluginOptions>>}}}}}}
/***
|Name|AdvancedOptionsPlugin|
|Source|http://www.TiddlyTools.com/#AdvancedOptionsPlugin|
|Documentation|http://www.TiddlyTools.com/#AdvancedOptionsPlugin|
|Version|1.2.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.3|
|Type|plugin|
|Description|automatically add plugin-defined options to the [[AdvancedOptions]] shadow tiddler|
!!!!!Usage
<<<
At document startup, this plugin examines each tiddler tagged with <<tag systemConfig>> and looks for a tiddler slice named "Options" whose value refers to a tiddler section (or separate tiddler) that contains an 'advanced options control panel' for configuring that plugin's features and behavior.  For each plugin that contains an "Options" slice, a tabbed entry is automatically created in the [[AdvancedOptions]] shadow tiddler to display that plugin's control panel.

As an optional fallback for backward-compatibility with plugin tiddlers that do not define the "Options" slice, this plugin will also look for a section heading named "Configuration" within those tiddlers, so that older plugins that define this section can automatically have their settings added to the [[AdvancedOptions]] tiddler without requiring the "Options" slice to be added.

This plugin also extends the standard {{{<<option>>}}} macro syntax so you can directly set the internal value of a boolean or text option, without displaying a corresponding checkbox or input field control simply by appending {{{=value}}} syntax to the end of the option ID parameter:
{{{
<<option "txtSomeOption=some text">>
<<option chkSomeOtherOption=true>> OR <<option chkSomeOtherOption=false>>
}}}
Example: {{{<<option chkAnimate=false>>}}}
<<<
!!!!!Configuration
<<<
<<option chkAdvancedOptions>> automatically add plugin-defined options to the [[AdvancedOptions]] shadow tiddler
<<option chkAdvancedOptionsBackstage>> automatically add plugin-defined options to Backstage menu
<<option chkAdvancedOptionsFallback>> use <<option txtAdvancedOptionsFallback>> section as a fallback for plugins that don't define an ~AdvancedOptions slice
//note: these settings only take effect after reloading the document//
<<<
!!!!!Revisions
<<<
2009.07.23 [1.2.0] added support for enhanced {{{<<option id=value>>}}} 'direct assignment' syntax
2008.05.09 [1.1.0] add "options" panel to backstage
2008.04.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.AdvancedOptionsPlugin= {major: 1, minor: 2, revision: 0, date: new Date(2009,7,23)};

if (config.options.chkAdvancedOptions===undefined)
	config.options.chkAdvancedOptions=true;
if (config.options.chkAdvancedOptionsBackstage===undefined)
	config.options.chkAdvancedOptionsBackstage=true;
if (config.options.chkAdvancedOptionsFallback===undefined)
	config.options.chkAdvancedOptionsFallback=true;
if (config.options.txtAdvancedOptionsFallback===undefined)
	config.options.txtAdvancedOptionsFallback="Configuration";
if (config.optionsDesc) config.optionsDesc.chkAdvancedOptions=
	"automatically add plugin-defined options to [[AdvancedOptions]]";
//}}}
//{{{
var items=[];
var fmt="[[%0 ]] [[view options for %0]] [[%1]]\n";
var section=config.options.txtAdvancedOptionsFallback;
var plugins=store.getTaggedTiddlers("systemConfig");
for (var p=0; p<plugins.length; p++) {
	var tid=plugins[p].title;
	var settings=store.getTiddlerSlice(tid,"Options");
	if (!settings && config.options.chkAdvancedOptionsFallback && store.getTiddlerText(tid+"##"+section))
		settings="##"+section; // fallback handling for older plugins
	if (settings&&settings.length) {
		if (settings.substr(0,2)=="##") settings=tid+settings;
		items.push(fmt.format([tid,settings]));
	}
}
if (items.length) config.shadowTiddlers.PluginOptions=
	"!![[Plugin-defined options|PluginManager]]\n>@@text-align:left;<<tabs '' \n"+items.join(' ')+">>@@";
if (config.options.chkAdvancedOptions)
	config.shadowTiddlers.AdvancedOptions+="{{smallform{{{wrap{<<tiddler PluginOptions>>}}}}}}";
//}}}
//{{{
// // add "options" backstage task
if (config.tasks && config.options.chkAdvancedOptionsBackstage) { // for TW2.2b3 or above
	config.tasks.options = {
		text: "options",
		tooltip: "manage plugin-defined option settings",
		content: "{{smallform{{{groupbox{{{wrap{<<tiddler PluginOptions>>}}}}}}\n{{groupbox small {<<options>>}}}}}}"
	}
	config.backstageTasks.splice(config.backstageTasks.indexOf("plugins")+1,0,"options");
}
//}}}
//{{{
config.macros.option.AOPsave_handler=config.macros.option.handler;
config.macros.option.handler=function(place,macroName,params,wikifier,paramString,tiddler) {
	var parts=params[0].split('=');
	if (parts.length==1) return this.AOPsave_handler.apply(this,arguments);
	var id=parts[0]; var val=(id.substr(0,3)=='txt')?parts[1]:(parts[1]=='true');
	config.options[id]=val;
}
//}}}
<<allTags excludeLists>>
tracker: UA-22108732-2
|!Format|!Markup|!Example|
|Bold|{{{''Bold''}}} (2 single quotes)|''Bold''|
|Italic|{{{//Italic//}}}|//Italic//|
|Bold Italic|{{{''//Bold Italic//''}}}|''//Bold Italic//''|
|Underlined|{{{__Underline__}}}(2 underscores)|__Underlined__|
|Strikethough|{{{--Strikethrough--}}}<br />{{{--}}} replaced {{{==}}} for Stikethrough in TiddlyWiki 2.1|--Strikethrough--|
|Superscript|{{{Text^^Superscript^^}}}|Text^^Superscript^^|
|Subscript|{{{Text~~Subscript~~}}}|Text~~Subscript~~|
|Monospaced text|<html><code>{{{Monospaced}}}</code></html>|{{{Monospaced}}}|
|Monospaced multiline block|Put <html><code>{{{</code></html> and <html><code>}}}</code></html> on their own lines|<html><pre>{{{<br/>Monospaced<br/>Multi-line<br/>Block<br/>}}}</pre></html>|
|Highlight|{{{@@Highlight@@}}}|@@Highlight@@|
|Color|{{{@@color(green):green text@@}}}|@@color(green):green text@@ |
|~|{{{@@bgcolor(green):text@@}}}|@@bgcolor(green):text@@ |
|~|{{{@@bgcolor(#3399ff):text@@}}}|@@bgcolor(#3399ff):text@@|
|~|{{{@@bgcolor(#39f):text@@}}}|@@bgcolor(#39f):text@@|
|CSS Extended Highlights|{{{@@some css;Highlight@@}}}<br />For backwards compatibility, the following highlight syntax is also accepted:<br />{{{@@bgcolor(#ff0000):color(#ffffff):red coloured@@}}}|@@background-color:#ff0000;color:#ffffff;red coloured@@<br /><<slider AtEg ./atEg 'Extended example ...'>>|
|Custom CSS Class|<html><code>{{wrappingClass{Text that is now accentuated}}}</code></html><br />By default, the text is placed in a <span>. To use a <div> instead, insert a line break before the text (after the single {)<br />In the CSS:<br />{{{.wrappingClass {color: red;} }}}|Add .wrappingClass to StyleSheet|
|Any HTML|{{{<html><span>any</span><br />}}}<br />{{{<b>valid</b> <em>xhtml</em></html>}}}|<html><span>any</span><br /><b>valid</b> <em>xhtml</em></html>|
var macros =config.macros; macros.search.label="поиск"; 
Closes the current tiddler, regardless of whether it is being editted. It is used with the ToolbarMacro like this:
{{{
<<toolbar closeTiddler>>
}}}
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

GettingStarted
WelcomeToTiddlyspot

SiteUrl
PluginManager &nbsp; &nbsp; &nbsp; PluginOptions
|PageTemplate |>|>|
|>|>|SiteTitle - SiteSubtitle &nbsp; &nbsp; &nbsp; TopMenu|
|MainMenu<br><br>EnGrammMenu<br><br>TiddlyWikiMenu<br><br>[[SearchOptionsCut]]<br>|TspotSetupPlugin|>|
|~|DefaultTiddlers<br><br>ViewTemplate<br>EditTemplate<br>&nbsp;  ToolbarCommands<br>&nbsp; <<tag QuickEditPackage>><br>|SideBarOptions|
|~|~|OptionsPanel|
|~|~|AdvancedOptions|
|~|~|<<tiddler Configuration.SideBarTabs>> ScrollToTopOfPage|
CustomMarkup &nbsp; &nbsp; &nbsp;  HiddenTags
StyleSheet &nbsp; &nbsp; &nbsp;  StyleSheetTiddlersBar &nbsp; &nbsp; &nbsp;  StyleSheetLocale &nbsp; &nbsp; &nbsp;  StyleSheetShortcuts &nbsp; &nbsp; &nbsp; EnGrammStyleSheet
ColorPalette
*PageTemplate -- Contains the overall structure of the page, including the gradient macro for the masthead.
*EditTemplate -- Contains the structure and order of the tiddler editor screen
*ViewTemplate -- Contains the structure and order of the tiddler view screen
*StyleSheetColors -- Contains the CSS for the colors used by the TiddlyWiki
*StyleSheetLayout -- Contains the CSS for the layout of the TiddlyWiki
*StyleSheetPrint -- Contains the CSS used when printing from the TiddlyWiki

SideBarTabs
|[[Timeline|TabTimeline]]|[[All|TabAll]]|[[Tags|TabTags]]|>|>|[[More|TabMore]] |
|>|>||[[Missing|TabMoreMissing]]|[[Orphans|TabMoreOrphans]]|[[Shadowed|TabMoreShadowed]]|
Sometimes it's necessary to include custom HTML markup in the {{{<head>}}} of a TiddlyWiki file - typically for compatibility with ad serving software, external libraries, or for custom meta tags. The CustomMarkup operation defines four shadow tiddlers whose contents are spliced into the saved HTML file. (If you do a view/source you'll see the markers referred to below).
|!Title |!Location |!Marker |
|MarkupPreHead |Start of the {{{<head>}}} section |{{{<!--PRE-HEAD-START-->}}} |
|MarkupPostHead |End of the {{{<head>}}} section |{{{<!--POST-HEAD-START-->}}} |
|MarkupPreBody |Start of the {{{<body>}}} section |{{{<!--PRE-BODY-START-->}}} |
|MarkupPostBody |End of the {{{<body>}}} section |{{{<!--POST-BODY-START-->}}} |
MarkupPreHead is the only one with shadow content: a link to the default location of the RSS feed.
/***
|Name|CustomTrackerPlugin|
|Created by|see http://ganalytics.tiddlyspace.com/|
|Location|http://engramm.tiddlyspot.com/#CustomTrackerPlugin|
|Version|last modified on 8 November 2010|
|Requires| |
!Description:
Taken from http://ganalytics.tiddlyspace.com/
This Plugin allow  [[Google Analytics|http://www.google.com/analytics/]] to define as a tiddler being opened for display.
!Installation:
Using the plugin requires some setup:
* Create a tiddler in your space called [[AnalyticsConfig]] containing your tracker number (from original script provide by Google Analytics)
* Copy script from MarkupPostHead to your own:
!Code
***/
//{{{

(function() {

try {
    var pageTracker = _gat._getTracker(store.getTiddlerText("AnalyticsConfig::tracker"));
    pageTracker._trackPageview();
} catch(err) {}

// CustomTracker as a namespace for tracking related functions
var CustomTracker = {};

CustomTracker.track = function() {
//    if (readOnly) {
        try {
            pageTracker._trackPageview.apply(this, arguments);
        } catch(err) {}
//    }
};

// hijack displayTiddler to trigger tracking
var _displayTiddler = Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement, tiddler, template,
        animate, unused, customFields, toggle, animationSrc) {
    // log with the tracker
    CustomTracker.track("/" + tiddler);
    // call the original displayTiddler function
    return _displayTiddler.apply(this,arguments);
};

// Call once for the initial page load
CustomTracker.track();

})();

//}}}
[[Сайт переехал на http://engramm.su/index.html]]

|!Format|!Markup|!Example|
|''Headings''|{{{!!Heading 2}}}<br />{{{!!!Heading 3}}}<br />{{{!!!!Heading 4}}}<br />{{{!!!!!Heading 5}}}<br /><br />Usually avoid Heading1 as Tiddler titles are nominally Heading1.|<html><h2>Heading 2</h2><h3>Heading 3</h3><h4>Heading 4</h4><h5>Heading 5</h5></html>|
|''Lists''|{{{*Bulleted list}}}|<html><ul><li>Bulleted List</li></ul></html>|
|~|{{{#Numbered list}}}|<html><ol><li>Numbered List</li></ol></html>|
|~|Definition list<br />{{{;Term}}}<br />{{{:definition}}}|<html><dl><dt>Term</dt><dd>definition</dd></dl></html>|
|~|Lists can be mixed and nested<br />{{{*}}}Bullet<br />{{{*#}}}Number<br />{{{*#;}}}Item<br />{{{*#:}}}Definition|<html><ul><li>Bullet<ol><li>Numbered<dl><dt></dt>Item<dd>Definition</dd></dl></li></ol></li></ul></html>|
|''Block quotes''|{{{>Blockquote}}}<br />{{{>>Nested quote}}}|<html><blockquote>Blockquote<blockquote>Nested<br/> quote</blockquote></blockquote></html>|
|~|{{{<<<}}}<br />{{{multi-line}}}<br />{{{blockquote}}}<br />{{{<<<}}}|<html><blockquote>multi-line<br/>blockquote</blockquote></html>|
|''Horizontal Rule''|{{{----}}} (4 dashes on a line of their own)|<html><hr></html>|
|''Links''|Any {{{WikiWord}}} creates a link to a tiddler (whether it exists or not).<br />Note that a WikiWord has to start with a capital letter and have a further mix of upper and lower case.|[[WikiWord]]|
|~|Manual link<br />{{{[[Table of Contents]]}}} (Especially for tiddlers with spaces in their titles)|[[Table of Contents]]|
|~|{{{[[Pretty Link|Link]]}}}|[[Pretty Link|Link]]|
|~|Automatic external link {{{http://www.tiddlywiki.com}}}|http://www.tiddlywiki.com|
|~|Pretty external link<br />{{{[[My Home Page|http://www.tiddlywiki.com]]}}}|[[My Home Page|http://www.tiddlywiki.com]]|
|~|OS Folder link<br />Windows Share: {{{file://///server/share}}}<br />Windows Local: {{{file:///c:/folder/file}}}<br />Un*x Local File: {{{file://folder/file}}}<br />Relative File: {{{[[folder/file]]}}}|file://///server/share <br />file:///c:/folder/file <br />file://folder/file <br /> [[folder/file]]|
|''Images''|{{{[img[favicon.ico]]}}}<br />Note that image files are always external to the TW file|[img[http://www.tiddlywiki.com/favicon.ico]]|
|~|Right aligned<br />{{{[>img[favicon.ico]]}}}|[>img[http://www.tiddlywiki.com/favicon.ico]]|
|~|Left aligned<br />{{{[<img[favicon.ico]]}}}|[<img[http://www.tiddlywiki.com/favicon.ico]]|
|''Image Links''|{{{[img[fav.ico][TiddlerName]]}}}|[img[http://www.tiddlywiki.com/favicon.ico][TiddlerName]]|
|~|{{{[img[fav.ico][Alias|TiddlerName]]}}}|[img[http://www.tiddlywiki.com/favicon.ico][Alias|TiddlerName]]|
|~|{{{[img[fav.ico][http://www.aa.com]]}}}|[img[http://www.tiddlywiki.com/favicon.ico][http://www.tiddlywiki.com]]|
|~|>|also see ''Links'' and ''Images'' sections in this table|
|''Inline''<br />''Comments''|{{{Not shown: /% hidden comment %/}}}<br />Text between the markers will not be shown|Not shown:/% hidden text %/|
<!--{{{-->
<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 macro='tiddler QuickEditToolbar'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div>
<div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<!--}}}-->
[[Грамматика|Грамматика английского языка (English Grammar)]] [[Статьи|Статьи (Articles)]] [[о Сайте|Read Me]]
/***
!!Header styles
***/
/*{{{*/

.header {background:none;}
.headerShadow {display:none;}
.headerForeground {display:none;}

/*}}}*/
/***
!!~TopMenu styles
***/
/*{{{*/
#topMenu {padding:2px; text-align: right;}
#topMenu .button, #topMenu .tiddlyLink, #topMenu a {
padding-left: 5px;
padding-right: 5px;
}
#GoogleAdsense_bar2 {
outline-width: 1px; 
outline-style: solid;
outline-color:[[ColorPalette::TertiaryPale]];
}
/*}}}*/
/***
!!Tiddler Display styles
***/
/*{{{*/

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

.title {color:#000;font-size:1.4em;border-bottom: 3px solid #04b;}

h1,h2,h3,h4,h5,h6 {margin-top:0em;margin-bottom:0em;}
h1, h2, h3, h4, h5 {color: #000;}
h1 {border-bottom: 3px solid #04b;}
h2 {border-bottom: 2px solid #04b;}
h3, h4, h5 {border-bottom: 1px solid #04b;}


.tagging {float:none; display:none;}
.isTag .tagging {display:block;}
.isTag .tagging li, .isTag .tagging ul  {display:inline;}

.isTag .tagging a {color:[[ColorPalette::PrimaryDark]]; font-weight:normal;}
.isTag .tagging a:hover {color:[[ColorPalette::PrimaryDark]]; background-color:[[ColorPalette::SecondaryLight]];
font-weight:normal;
outline-width: 2px; 
outline-style: solid;
outline-color:[[ColorPalette::SecondaryLight]];
}

.tagged {float:none; margin-top:-5px;}
.tagged li, .tagged ul {
display:inline;
}

/***Hide the tiddler tagging display***/
.isTag .tagging {display:none;}

/***Move tiddler title higher by floating toolbar to the rihgt***/
/*.toolbar {float:right;}*/

ul,ol,dl { margin:0;}

.tiddler .subtitle { text-align:right; font-size:95%;}

/*}}}*/
/***
|''Name:''|ExamplePlugin|
|''Description:''|My Description|
|''Author:''|My Name|
|''Source:''|http://www.MyWebSite.com/#ExamplePlugin |
|''CodeRepository:''|http://svn.tiddlywiki.org/Trunk/contributors/MyDirectory/plugins/ExamplePlugin.js |
|''Version:''|0.0.1|
|''Status:''|Not for release - this is a template for creating new plugins|
|''Date:''|Jan 25, 2008|
|''Comments:''|Please make comments at http://groups.google.co.uk/group/TiddlyWikiDev |
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]] |
|''~CoreVersion:''|2.3|

To make this example into a real TiddlyWiki plugin, you need to:

# Globally search and replace ExamplePlugin with the name of your plugin
# Globally search and replace example with the name of your macro
# Update the header text above with your description, name etc
# Do the actions indicated by the !!TODO comments, namely:
## Write the code for the plugin
## Write the documentation for the plugin

!!Description
//!!TODO write a brief description of the plugin here

!!Usage
//!!TODO describe how to use the plugin - how a user should include it in their TiddlyWiki, parameters to the plugin etc

***/

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

config.macros.example = {};
config.macros.example.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	//!!TODO write the code for the macro here
};

} //# end of 'install only once'
//}}}
/***
|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();
                  }
};
//}}}
[[Basic Formatting]]
[[Document Formatting]]
[[Table Formatting]]
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>>
/***
|Name|HelloWorldMacro|
|Created by|SimonBaird|
|Location|http://simonbaird.com/mptw/#HelloWorldMacro|
|Version|1.0.3|
|Requires|~TW2.x|
!Description
It's a Hello World TiddlyWiki macro.

!History
* 03-Mar-06, version 1.0.3, added version.extensions data
* 13-Jan-06, version 1.0.2, added shout macro example
* 11-Jan-06, version 1.0.1, updated for ~TW2.0

!Examples
|!Source|!Output|h
|{{{<<helloWorld dude>>}}}|<<helloWorld dude>>|
|{{{<<helloWorld 'to everyone'>>}}}|<<helloWorld 'to everyone'>>|
(You can use (single or double) quotes or double square brackets for params with spaces)

!Notes
This is intended to help you get started with customising your TW. To make the macro work you have to give this tiddler a tag of systemConfig then save and reload. To learn more about customising Tiddlywiki you can look at other people's plugins or click View, Source in your browser and start reading. :)

!Code
***/
//{{{

// this part is not actually required but useful to other people using your plugin
version.extensions.HelloWorldMacro = { major: 1, minor: 0, revision: 3, date: new Date(2006,3,3),
	source: "http://simonbaird.com/mptw/#HelloWorldMacro"
};

config.macros.helloWorld = {};
config.macros.helloWorld.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
	var who = params.length > 0 ? params[0] : "world";
	wikify("Hello //" + who + "// from the '" + macroName + "' macro in tiddler [[" + tiddler.title + "]].", place);
}

// a one liner...
config.macros.shout = { handler: function(place,name,params) { wikify("//''@@font-size:5em;color:#696;"+ params[0] + "!@@''//", place); } };


//}}}

/***

!Another example
{{{<<shout Yeah>>}}}

<<shout Yeah>>

***/
[[Multicolumn]]
TiddlyWiki lets you write ordinary HTML by enclosing it in {{{<html>}}} and {{{</html>}}}:

<html>
<a href="javascript:;" onclick="onClickTiddlerLink(event);" tiddlyLink="TiddlyWiki" style="background-color: yellow;">Link to wikiwords from HTML</a>
</html>

The source for the above is:

{{{
<html>
<div style="background-color: yellow;">
<a href="javascript:;" onclick="onClickTiddlerLink(event);" tiddlyLink="Macros">Link to wikiwords from HTML</a>
</div>
</html>
}}}

HTML can enable some exotic new features (like [[embedding GMail and Outlook|http://groups.google.com/group/TiddlyWiki/browse_thread/thread/d363303aff5868d0/056269d8409d121f?lnk=st&q=embedding+gmail&rnum=1#056269d8409d121f]] in a TiddlyWiki). However it doesn't work for some JavaScript code libraries; see CustomMarkup for another way to include custom HTML in your TiddlyWiki.
/***
|Name|JumpToTopMacro|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#JumpToTopMacro|
|Version|1.0|
|Requires|~TW2.x|
!Description:
Provides a toolbar command and a macro, that create a button for quickly jumping to the top of your TW.
Handy to place in the tiddler toolbar (edit the ViewTemplate)

Note: You can add an extra toolbar to the bottom of tiddlers as well with buttons of your choice, to allow easy access to the buttons/commands in it.

!Demo:
{{{<<top>>}}}<<top>>

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

!History:
*23-07-06: ver 1.0

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

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

config.commands.top.handler = function(event,src,title)
{
               window.scrollTo(0,0);
}
//}}}
<<tiddler [[Read Me]]>>
<html>
<div style="text-align: center;"><big><big><big><strong><span
style="color: rgb(255, 0, 0);">E</span><span
style="color: rgb(255, 127, 0);">n</span><span
style="color: rgb(255, 255, 0);">G</span><span
style="color: rgb(0, 255, 0);">r</span><span
style="color: rgb(0, 255, 255);">a</span><span
style="color: rgb(0, 12, 255);">m</span><span
style="color: rgb(255, 0, 255); font-style: italic;">m</span></strong></big></big></div>
</html><<slider chkEGmenu EnGrammMenu 'EnGramm »'>><<slider chkTWmenu TiddlyWikiMenu 'TWMenu »'>><<tiddler TspotSidebar>><<fontSize>><<search>>{{left{<<slider chkSearchOptionsCut SearchOptionsCut 'искать в:'>>}}}<hr>{{center{<html>
<!--Rating@Mail.ru counter-->
<a target="_top" href="http://top.mail.ru/jump?from=2017157">
<img src="http://d7.cc.be.a1.top.mail.ru/counter?id=2017157;t=97" 
border="0" height="18" width="88" alt="Рейтинг@Mail.ru"></a>
<!--// Rating@Mail.ru counter-->
</html>
<html>
<a href="http://ws.md/in/2616/" target=_blank><img src="http://b88x15nc.ws.md/c.png?i=2616&p=10" alt="Каталог-Молдова - Ranker, Statistics" border=0 width=88 height=15></a></html>
----
<html>
<style type="text/css">
   .layer1 {
    float: left; /* Обтекание по правому краю */
    /*background: #fd0;*/  /* Цвет фона */
    border: 1px solid black;  /* Параметры рамки */
    padding: 2px;  /* Поля вокруг текста */
    margin: 2px;  /* Отступ справа */
    /*width: 10%;*/ /* Ширина блока */
   }
 </style>
<div class="layer1">Здесь может быть Ваша реклама
<a href="mailto:kuzshev@yandex.ru">kuzshev@yandex.ru</a></div>
</html>
<!--{{{-->
<div id="GoogleAdsense_box" style="display:none;">
<script type="text/javascript"><!--
google_ad_client = "pub-1911435401192709";
/* 160x600 forEnGramm_v1 */
google_ad_slot = "3369114620";
google_ad_width = 160;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</div>
<!--}}}-->

<!--{{{-->
<div id="GoogleAdsense_bar2" style="display:none; float:left;">
<script type="text/javascript"><!--
google_ad_client = "ca-pub-1911435401192709";
/* 468x15 */
google_ad_slot = "5819366435";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<!--}}}-->

<!--{{{-->
<script type="text/javascript">
//<![CDATA[
window.refreshPageTemplate_orig_ads	= window.refreshPageTemplate;
window.refreshPageTemplate = function(title) {

	window.refreshPageTemplate_orig_ads(title);

	var	box	= document.getElementById('GoogleAdsense_box');
	var	bar	= document.getElementById('GoogleAdsense_bar');
        var	bar2	= document.getElementById('GoogleAdsense_bar2');

	var	googleAdsensePanel	= document.getElementById('googleAdsensePanel');
        var	googleAdsensePanel2	= document.getElementById('googleAdsensePanel2');
	var	displayArea	= document.getElementById('displayArea');

	if (googleAdsensePanel	&& box)	{
		googleAdsensePanel.insertBefore(box,googleAdsensePanel.childNodes[0]);
		box.style.display =	'block';
	}

        if (googleAdsensePanel2	&& bar2)	{
		//googleAdsensePanel2.insertBefore(bar2,googleAdsensePanel2.childNodes[0]);
		googleAdsensePanel2.appendChild(bar2);
		bar2.style.display =	'block';
	}

	if (displayArea	&& bar)	{
		//displayArea.insertBefore(bar,displayArea.childNodes[0]);
		displayArea.appendChild(bar);
		bar.style.display =	'block';
	}
};

var t=config.notifyTiddlers.findByField('name','PageTemplate');
if (t)
	config.notifyTiddlers[t].notify	= refreshPageTemplate;
var t;
//]]>
</script>
<!--}}}-->
<!--{{{-->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<!--}}}-->

<!--{{{-->
<meta name="google-site-verification" content="N-X3VMItB-d8D3DSK5wqLLb6_p7ySyA2f2-aAW-wfQ4" />
<meta name='yandex-verification' content='7289fe26f8361cfa' />
<!--}}}-->
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
Created to hide tag ''Multicolumn''
Type the text for 'New Tiddler' <<tagChooser>>
Release 2.6.0 provides a variety of bugfixes and enhancements:
* Added //WindowTitle// shadow tiddler
* Added //creator// tiddler field
* Upgraded to [[jQuery|http://jquery.com]] 1.4.2

For the full release notes see:
http://trac.tiddlywiki.org/wiki/History
<!--{{{-->
<div class='header'>
<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='googleAdsensePanel'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='googleAdsensePanel2'></div>
<div id='topMenu' refresh='content' tiddler='TopMenu'></div>
<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></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"
	});
*/
//}}}
<<plugins>>
!![[Plugin-defined options|PluginManager]]
>@@text-align:left;<<tabs '' 
[[AdvancedOptionsPlugin ]] [[view options for AdvancedOptionsPlugin]] [[AdvancedOptionsPlugin##Configuration]]
 [[EasyEditPlugin ]] [[view options for EasyEditPlugin]] [[EasyEditPlugin##Configuration]]
 [[SearchOptionsPlugin ]] [[view options for SearchOptionsPlugin]] [[SearchOptionsPlugin##Configuration]]
>>@@
This package provides a toolbar of interactive 'power tools' that you can use while editing a tiddler to quickly insert TiddlyWiki tiddler links, images, macros, etc. or common formatting sequences directly into tiddler content, as well as perform other functions (such as find/replace, sort, split, convert, etc.) that can be used to modify the current tiddler's source content in a variety of ways.

<<tiddler QuickEditToolbar with: show>>
!!!!!Installation:
<<<
Individual ~QuickEdit buttons are defined in separate tiddlers (e.g., [[QuickEdit_replace]]) that have also been //transcluded// into a single toolbar definition named [[QuickEditToolbar]].  You can edit this definition to add, remove, or rearrange the toolbar buttons to best suit your needs, and then embed the [[QuickEditToolbar]] tiddler into your document's [[EditTemplate]], like this:
{{{
<div macro='tiddler QuickEditToolbar'></div>
}}}
Next, in order to support some of the formatting 'shortcuts' provided by the toolbar, add a reference to the shortcuts CSS class definitions in your [[StyleSheet]]:
{{{
[[StyleSheetShortcuts]]
}}}
By default, the QuickEdit toolbar is hidden until you enable it by using the ''toggleQuickEdit'' command, which you can add to the ~EditToolbar definition in [[ToolbarCommands]]:
{{{
|EditToolbar|... toggleQuickEdit ...|
}}}
You can also toggle the ~QuickEdit toolbar display via a single checkbox option that can be added to [[SideBarOptions]] (or any other desired location):
{{{
<<option chkShowQuickEdit>> show QuickEdit toolbar
}}}
Note: You can 'hard-code' the ''chkShowQuickEdit'' setting, so that the toolbar will be //initially// displayed, by creating a tiddler (e.g., ConfigTweaks), tagged with <<tag systemConfig>>, containing:
{{{
config.options.chkShowQuickEdit=true;
}}}
Alternatively, if you want the toolbar to //always// be displayed, regardless of the option setting, you can add a special keyword, ''show'', to the [[EditTemplate]] syntax, like this:
{{{
<div macro='tiddler QuickEditToolbar with: show'></div>
}}}
<<<
/***
|Name|QuickEditPlugin|
|Source|http://engramm.tiddlyspot.com/#QuickEditPlugin|
|Documentation|http://engramm.tiddlyspot.com/#QuickEditPlugin|
|Version|2.4.4|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Support functions for ~QuickEdit package: styles, utility functions, and 'toggleQuickEdit' command|
!!!!!Revisions
<<<
2011.02.14 2.4.4 fix OSX error: use picker.file.path
2009.06.11 2.4.3 added keyup() function to abbreviate listbox handling for CR and ESC
2009.05.07 2.4.2 added processed() function to abbreviate event handler code
2008.09.07 2.4.1 added removeCookie() function for compatibility with [[CookieManagerPlugin]]
2008.05.17 2.4.0 copied code from StickyPopupPlugin to remove dependency
2008.05.12 2.3.0 added "toggleQuickEdit" command handler (replaces inline script command)
2008.01.11 2.2.0 converted from inline script
2007.03.29 1.0.0 initial release (as inline script)
<<<
!!!!!Code
***/
//{{{
version.extensions.QuickEditPlugin= {major: 2, minor: 4, revision: 4, date: new Date(2011,2,14)};

// SET STYLESHEET
setStylesheet("\
.quickEdit a { border:2px outset ButtonFace; padding:0px 3px !important; \
	-moz-border-radius:.5em; -webkit-border-radius:.5em; \
	-moz-appearance:button !important; -webkit-appearance:push-button !important; \
	background-color:ButtonFace; color:ButtonText !important;  \
	line-height:200%; font-weight:normal; } \
.quickEdit a:hover { border: 2px inset ButtonFace; background-color:ButtonFace; }\
", "quickEditStyles");

// REMOVE COOKIE
if (window.removeCookie===undefined) {
	window.removeCookie=function(name) {
		document.cookie = name+'=; expires=Thu, 01-Jan-1970 00:00:01 UTC; path=/;'; 
	}
}

// UTILITY FUNCTIONS
config.quickEdit = {
	processed: function(ev) { ev=ev||window.event;
		ev.cancelBubble=true;
		if(ev.stopPropagation) ev.stopPropagation();
		return false;
	},
	keyup: function(ev){ var k=(ev||window.event).keyCode;
		if (k==13) this.onclick();
		if (k==27) Popup.remove();
	},
	getField: function(where) {
		var here=story.findContainingTiddler(where); if (!here) return null;
		var e=story.getTiddlerField(here.getAttribute("tiddler"),"text");
		if (e&&e.getAttribute("edit")=="text") return e;
		return null;
	},
	setSelection: function(where,newtext) {
		var e=this.getField(where); if (!e) return false;
		e.focus(); replaceSelection(e,newtext);
		return false;
	},
	wrapSelection: function(where,before,after) {
		var e=this.getField(where); if (!e) return false;
		e.focus(); replaceSelection(e,before+config.quickEdit.getSelection(e)+after);
		return false;
	},
	getSelection: function(e) {
		var seltext="";
		if (e&&e.setSelectionRange)
			seltext=e.value.substr(e.selectionStart,e.selectionEnd-e.selectionStart);
		else if (document.selection) {
			var range = document.selection.createRange();
			if (range.parentElement()==e) seltext=range.text
		}
		return seltext;
	},
	promptForFilename: function(msg,path,file) {
		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='jpg';
				picker.defaultString=file;
				picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterImages);
				if (picker.show()!=nsIFilePicker.returnCancel)
					var result="file:///"+picker.file.path.replace(/\\/g,'/');
			}
			catch(e) { alert('error during local file access: '+e.toString()) }
		}
		else { // IE
			try { // XP only
				var s = new ActiveXObject('UserAccounts.CommonDialog');
				s.Filter='All files|*.*|JPG files|*.jpg|GIF files|*.gif|PNG files|*.png|';
				s.FilterIndex=1; // default to JPG
				s.InitialDir=path;
				s.FileName=file;
				if (s.showOpen()) var result=s.FileName;
			}
			catch(e) { var result=prompt(msg,path+file); } // fallback for non-XP IE
		}
		return result;
	}
}
//}}}

//{{{
if (config.options.chkShowQuickEdit===undefined) config.options.chkShowQuickEdit=false;
config.commands.toggleQuickEdit = {
	hideReadOnly: true,
	getText: function() { return config.options.chkShowQuickEdit?'\u221Aquickedit':'quickedit'; },

	tooltip: 'show QuickEdit toolbar buttons',
	handler: function(event,src,title) {
		var opt='chkShowQuickEdit';
		config.options[opt]=!config.options[opt];
		config.macros.option.propagateOption(opt,"checked", config.options[opt],"input");
		if (config.options[opt]) saveOptionCookie(opt);	else removeCookie(opt);
		src.innerHTML=config.commands.toggleQuickEdit.getText();
		story.forEachTiddler(function(t,e){if (story.isDirty(t)) refreshElements(e);});
		return false;
	}
};
//}}}

// // COPIED FROM [[StickyPopupPlugin]] TO ELIMINATE PLUGIN DEPENDENCY
//{{{
if (config.options.chkStickyPopups==undefined) config.options.chkStickyPopups=false;
Popup.stickyPopup_onDocumentClick = function(ev)
{
	// if click is in a sticky popup, ignore it so popup will remain visible
	var e = ev ? ev : window.event; var target = resolveTarget(e);
	var p=target; while (p) {
		if (hasClass(p,"popup") && (hasClass(p,"sticky")||config.options.chkStickyPopups)) break;
		else p=p.parentNode;
	}
	if (!p) // not in sticky popup (or sticky popups disabled)... use normal click handling
		Popup.onDocumentClick(ev);
	return true;
};
try{removeEvent(document,"click",Popup.onDocumentClick);}catch(e){};
try{addEvent(document,"click",Popup.stickyPopup_onDocumentClick);}catch(e){};
//}}}
This package provides a toolbar of interactive 'power tools' that you can use while editing a tiddler to quickly insert TiddlyWiki tiddler links, images, macros, etc. or common formatting sequences directly into tiddler content, as well as perform other functions (such as find/replace, sort, split, convert, etc.) that can be used to modify the current tiddler's source content in a variety of ways.

<<tiddler QuickEditToolbar with: show>>
!!!!!Installation:
<<<
Individual ~QuickEdit buttons are defined in separate tiddlers (e.g., [[QuickEdit_replace]]) that have also been //transcluded// into a single toolbar definition named [[QuickEditToolbar]].  You can edit this definition to add, remove, or rearrange the toolbar buttons to best suit your needs, and then embed the [[QuickEditToolbar]] tiddler into your document's [[EditTemplate]], like this:
{{{
<div macro='tiddler QuickEditToolbar'></div>
}}}
Next, in order to support some of the formatting 'shortcuts' provided by the toolbar, add a reference to the shortcuts CSS class definitions in your [[StyleSheet]]:
{{{
[[StyleSheetShortcuts]]
}}}
By default, the QuickEdit toolbar is hidden until you enable it by using the ''toggleQuickEdit'' command, which you can add to the ~EditToolbar definition in [[ToolbarCommands]]:
{{{
|EditToolbar|... toggleQuickEdit ...|
}}}
You can also toggle the ~QuickEdit toolbar display via a single checkbox option that can be added to [[SideBarOptions]] (or any other desired location):
{{{
<<option chkShowQuickEdit>> show QuickEdit toolbar
}}}
Note: You can 'hard-code' the ''chkShowQuickEdit'' setting, so that the toolbar will be //initially// displayed, by creating a tiddler (e.g., ConfigTweaks), tagged with <<tag systemConfig>>, containing:
{{{
config.options.chkShowQuickEdit=true;
}}}
Alternatively, if you want the toolbar to //always// be displayed, regardless of the option setting, you can add a special keyword, ''show'', to the [[EditTemplate]] syntax, like this:
{{{
<div macro='tiddler QuickEditToolbar with: show'></div>
}}}
<<<
/%
|Name|QuickEditToolbar|
|Source|http://www.TiddlyTools.com/#QuickEditToolbar|
|Version|2.4.4|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.2|
|Type|transclusion|
|Requires|QuickEditPlugin|
|Optional|QuickEdit_*|
|Description|format/insert TiddlyWiki content using toolbar buttons|

Usage:
* install [[QuickEditPlugin]] (runtime support functions)

* add the toolbar to [[EditTemplate]]:
	<div macro='tiddler QuickEditToolbar with: show'></div>

* 'show' (optional) forces the toolbar to always be displayed or,
  omit keyword and use <<option chkShowQuickEdit>> setting

* selected QuickEdit buttons can also be added individually to the
  regular tiddler toolbar by adding references directly in [[EditTemplate]]:
	<span class='toolbar' macro='tiddler QuickEdit_...'></span>

* see [[QuickEditPackage]] for additional installation options

%/{{hidden fine center quickEdit{
<<tiddler {{ // show/hide toolbar
	var here=story.findContainingTiddler(place); if (here) var tid=here.getAttribute('tiddler');
	var show='$1'!='$'+'1'||config.options.chkShowQuickEdit||tid=='QuickEditToolbar'; 
	place.style.display=show?'block':'none';
'';}}>>/%

TOOLBAR DEFINITION - add, remove, or re-order items as desired:
= = = = = = = = = =
%/<<tiddler QuickEdit_hash>>/%
%/<<tiddler QuickEdit_asterisk>>/%
%/ &nbsp;/% (SPACER)
%/ &nbsp;/% (SPACER)
%/<<tiddler QuickEdit_format>>/%
%/<<tiddler QuickEdit_align>>/%
%/<<tiddler QuickEdit_color>>/%
%/<<tiddler QuickEdit_font>>/%
%/<<tiddler QuickEdit_custom>>/%
%/ &nbsp;/% (SPACER)
%/<<tiddler QuickEdit_replace>>/%
%/<<tiddler QuickEdit_split>>/%
%/<<tiddler QuickEdit_sort>>/%
%/<<tiddler QuickEdit_convert>>/%
%/ &nbsp;/% (SPACER)
%/<<tiddler QuickEdit_link>>/%
%/<<tiddler QuickEdit_insert>>/%
%/<<tiddler QuickEdit_macro>>/%
%/<<tiddler QuickEdit_image>>/%
%/}}}
/%
|Name|QuickEdit_align|
|Source|http://www.TiddlyTools.com/#QuickEdit_align|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - text alignment|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="aline text"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select text alignment...','');
	s.options[s.length]=new Option('left','left');
	s.options[s.length-1].title='{{left{...}}}';
	s.options[s.length]=new Option('center','center');
	s.options[s.length-1].title='{{center{...}}}';
	s.options[s.length]=new Option('right','right');
	s.options[s.length-1].title='{{right{...}}}';
	s.options[s.length]=new Option('justify','justify');
	s.options[s.length-1].title='{{justify{...}}}';
	s.options[s.length]=new Option('float left','floatleft');
	s.options[s.length-1].title='{{floatleft{...}}}';
	s.options[s.length]=new Option('float right','floatright');
	s.options[s.length-1].title='{{floatright{...}}}';
	s.size=s.length;
	s.onclick=function(){ if (!this.value.length) return;
		config.quickEdit.wrapSelection(this.button,'{{'+this.value+'{','}}}');
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>aline</a></html>
/%
|Name|QuickEdit_asterisk|
|Source|http://engramm.tiddlyspot.com/#QuickEdit_asterisk|
|Version|2.4.3|
|Author|Eric Shulman, modified Vladimir Kuzmin|
|License|see http://engramm.tiddlyspot.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - insert *|

Usage: see  http://engramm.tiddlyspot.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
	title="insert * "
	onclick="
	return config.quickEdit.setSelection(this,'*');"
> * </a></html>
/%
|Name|QuickEdit_color|
|Source|http://www.TiddlyTools.com/#QuickEdit_color|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - text/background color|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="text/background color - @@color:#RGB;background-color:#RGB;...@@"
onclick="var p=Popup.create(this,null,'popup sticky smallform'); if (!p) return false;
 	p.style.padding='2px';
	function hex(d) { return '0123456789ABCDEF'.substr(d,1); }
	var fg=createTiddlyElement(p,'select'); fg.button=this;
	fg.style.width='12em';
	fg.options[0]=new Option('text color...','');
	fg.options[1]=new Option('\xa0 or enter a value','_ask');
	fg.options[2]=new Option('\xa0 or use default color','');
	for (var r=0;r<16;r+=3) for (var g=0;g<16;g+=3) for (var b=0;b<16;b+=3) {
		var label=hex(r)+hex(g)+hex(b);
		fg.options[fg.length]=new Option(label,'#'+label);
		fg.options[fg.length-1].style.color='#'+label;
	}
	fg.onchange=function(){ var val=this.value;
		if (val=='_ask') { val=prompt('Enter a CSS color value');
		if (!val||!val.length) return false; }
		this.options[0].value=val; this.options[0].text=val.length?'text: '+val:'text color...';
		var bg=this.nextSibling;
		for (var i=3;i<bg.options.length;i++) bg.options[i].style.color=val;
		var preview=this.nextSibling.nextSibling.nextSibling;
		var t=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
		t=t.replace(/^@@(color\:.+;)?(background-color\:.+;)?/,'').replace(/@@$/,'');
		if (!t.length) t='~AaBbCcDdEeFfGgHhIiJj 1234567890';
		var fg=this.value; if (fg.length) fg='color:'+fg+';';
		var bg=this.nextSibling.value; if (bg.length) bg='background-color:'+bg+';';
		if (fg.length||bg.length) t='@@'+fg+bg+t+'@@';
		removeChildren(preview); wikify(t,preview);
		this.selectedIndex=0; return false;
	};
	var bg=createTiddlyElement(p,'select'); bg.button=this;
	bg.style.width='12em';
	bg.options[0]=new Option('background color...','');
	bg.options[1]=new Option('\xa0 or enter a value','_ask');
	bg.options[2]=new Option('\xa0 or use default color','');
	for (var r=0;r<16;r+=3) for (var g=0;g<16;g+=3) for (var b=0;b<16;b+=3) {
		var label=hex(15-r)+hex(15-g)+hex(15-b);
		bg.options[bg.length]=new Option(label,'#'+label);
		bg.options[bg.length-1].style.backgroundColor='#'+label;
	}
	bg.onchange=function(){ var val=this.value;
		if (val=='_ask') { val=prompt('Enter a CSS color value');
		if (!val||!val.length) return false; }
		this.options[0].value=val;
		this.options[0].text=val.length?'background: '+val:'background color...';
		var fg=this.previousSibling;
		for (var i=3;i<fg.options.length;i++) fg.options[i].style.backgroundColor=val;
		var preview=this.nextSibling.nextSibling;
		var t=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
		t=t.replace(/^@@(color\:.+;)?(background-color\:.+;)?/,'').replace(/@@$/,'');
		if (!t.length) t='~AaBbCcDdEeFfGgHhIiJj 1234567890';
		var fg=this.previousSibling.value; if (fg.length) fg='color:'+fg+';';
		var bg=this.value; if (bg.length) bg='background-color:'+bg+';';
		if (fg.length||bg.length) t='@@'+fg+bg+t+'@@';
		removeChildren(preview); wikify(t,preview);
		this.selectedIndex=0; return false;
	};
	var b=createTiddlyElement(p,'input',null,null,null,{type:'button'}); b.button=this;
	b.value='ok'; b.style.width='4em';
	b.onclick=function() {
		var fg=this.previousSibling.previousSibling.value; if (fg.length) fg='color:'+fg+';';
		var bg=this.previousSibling.value; if (bg.length) bg='background-color:'+bg+';';
		var t=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
		t=t.replace(/^@@(color\:.+;)?(background-color\:.+;)?/,'').replace(/@@$/,'');
		if (fg.length||bg.length) config.quickEdit.setSelection(this.button,'@@'+fg+bg+t+'@@');
		Popup.remove(); return false;
	};
	var preview=createTiddlyElement(p,'div',null,'viewer'); var s=preview.style;
	s.border='1px solid'; s.margin='2px'; s.width='24em'; s.padding='3px'; s.MozBorderRadius='3px';
	s.overflow='hidden'; s.textAlign='center'; s.whiteSpace='normal';
	var t=config.quickEdit.getSelection(config.quickEdit.getField(this));
	wikify(t.length?t:'~AaBbCcDdEeFfGgHhIiJj 1234567890',preview);
	Popup.show();
	event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>color</a></html>
/%
|Name|QuickEdit_convert|
|Source|http://www.TiddlyTools.com/#QuickEdit_convert|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - convert between comma/tab-separated and TW table format|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="convert between comma/tab-separated and TW table format"
onclick="var e=config.quickEdit.getField(this);
	if (e) e.focus(); var txt=config.quickEdit.getSelection(e);
	if (txt.indexOf(',')+txt.indexOf('\t')+txt.indexOf('|')==-3) {
		alert('Please select text containing tabs, commas, or TiddlyWiki table syntax.');
		return false;
	}
	var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select a converter...','');
	if (txt.indexOf(',')!=-1) {
		s.options[s.length]=new Option('commas -> table','commasToTable');
		s.options[s.length]=new Option('commas -> tabs','commasToTabs');
	}
	if (txt.indexOf('\t')!=-1) {
		s.options[s.length]=new Option('tabs -> table','tabsToTable');
		s.options[s.length]=new Option('tabs -> commas','tabsToCommas');
	}
	if (txt.indexOf('|')!=-1) {
		s.options[s.length]=new Option('table -> tabs','tableToTabs');
		s.options[s.length]=new Option('table -> commas','tableToCommas');
	}
	s.size=s.length;
	s.onclick=function(){ if (!this.value.length) return;
	        var e=config.quickEdit.getField(this.button); if (!e) return false;
		e.focus(); var txt=config.quickEdit.getSelection(e);
		switch(this.value) {
			case 'tabsToTable':
				txt=txt.replace(/\t/g,'|').replace(/^|$/g,'|');
				txt=txt.replace(/\n/g,'|\n|').replace(/^\|$/g,'');
				break;
			case 'tableToTabs':
				txt=txt.replace(/\t/g,' ').replace(/\|/g,'\t');
				txt=txt.replace(/^\t/g,'').replace(/\t$/g,'');
				txt=txt.replace(/\n\t/g,'\n').replace(/\t\n/g,'\n');
				break;
			case 'commasToTable':
				txt=txt.replace(/,/g,'|').replace(/^|$/g,'|');
				txt=txt.replace(/\n/g,'|\n|').replace(/^\|$/g,''); 
				break;
			case 'tableToCommas':
				txt=txt.replace(/,/g,' ').replace(/\|/g,',');
				txt=txt.replace(/^,/g,'').replace(/,$/g,''); 
				txt=txt.replace(/\n,/g,'\n').replace(/,\n/g,'\n'); 
				break;
			case 'tabsToCommas':
				txt=txt.replace(/\t/g,',');
				break;
			case 'commasToTabs':
				txt=txt.replace(/,/g,'\t');
				break;
		}
		replaceSelection(e,txt);
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>convert</a></html>
/%
|Name|QuickEdit_css|
|Source|http://www.TiddlyTools.com/#QuickEdit_css|
|Version|2.2.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2|
|Type|script|
|Requires|QuickEditPlugin|
|Overrides||
|Description|definition for toolbar button for inline css and css class wrappers|

Usage:
QuickEditToolbar: <<tiddler QuickEdit_css>>
OR
EditTemplate: <span class='toolbar' macro='tiddler QuickEdit_css'></span>

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink"
	title="inline CSS styles - @@attr:value;attr:value;...@@"
	onclick="var css=prompt('Enter CSS attribute/value pairs (attr:val;attr:val;...;)','');
		if (!css) return false; /* cancelled by user */
		return config.quickEdit.wrapSelection(this,'@@'+css+';','@@');"
>style</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink"
	title="CSS class wrapper - {{classname classname etc{...}}}"
	onclick="var c=prompt('Enter a CSS classname','');
		if (!c) return false; /* cancelled by user */
		return config.quickEdit.wrapSelection(this,'{{'+c+'{','}}}');"
>class</a></html>
/%
|Name|QuickEdit_custom|
|Source|http://www.TiddlyTools.com/#QuickEdit_custom|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - custom defined formats|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

!help
Reminders:

Custom formats are stored as an "HR-separated list" in [[QuickEdit_customList]], where the first line of each list item is the text 'label' to show in the droplist, followed by one or more lines of wiki content to be inserted into the tiddler source.

Substitution markers can be used to dynamically insert values into the formatted output: $1 inserts the tiddler editor's current selected text. $[[message|default value]] interactively prompts for a value to be inserted. $[[message|$1]] uses the selected text as the default value. $[[message|{{javascript}}]] calculates the default value using javascript code.
!end help

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" title="custom defined formats"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select a custom format...','');
	var items=store.getTiddlerText('QuickEdit_customList','').split('\n----\n');
	for (var i=0; i<items.length; i++) {
		if (!items[i].length) continue; var lines=items[i].split('\n');
		var label=lines.shift(); var val=lines.join('\n');
		s.options[s.length]=new Option(label,val); s.options[s.length-1].title=val;
	}
	s.options[s.length]=new Option('[Edit custom formats...]','_edit');
	s.options[s.length-1].title='add/change custom format definitions...';
	s.size=Math.min(s.length,15);
	s.onclick=function(){ if (!this.value.length) return;
		if (this.value=='_edit') {
			alert(store.getTiddlerText('QuickEdit_custom##help'));
			story.displayTiddler(story.findContainingTiddler(this.button),
				'QuickEdit_customList',DEFAULT_EDIT_TEMPLATE);
		} else {
		        var e=config.quickEdit.getField(this.button); if (!e) return false;
			e.focus(); var txt=config.quickEdit.getSelection(e);
			replaceSelection(e, this.value.replace(/\$\x31/g,txt)
				.replace(/\$\[\[[^\]]+\]\]/g, function(t){
					x=t.substr(3,t.length-5).split('|');
					var msg=x[0]; var def=x[1]||'';
					if (def.startsWith('{{')) {
						try{def=eval(def.substr(2,def.length-4))} catch(ex){showException(ex)}
					}
					return prompt(msg,def)||'';
				})
			);
		}
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>custom</a></html>
timestamp
$[[enter a date|{{new Date().formatString('DDD, MMM DDth, YYYY hh12:0mm:0ssam')}}]]
----
scrollbox
@@display:block;height:10em;overflow:auto;$[[enter scrolling content|$1]]@@@@display:block;text-align:right;^^scroll for more...^^@@
----
nested slider
+++[$1]<<tiddler $1>>===
----
big red
@@font-size:36pt;color:red;$1@@
----
blue font of Comic Sans MS
@@font-family:"Comic Sans MS";color:#00F;$1@@
----
space
&nbsp; &nbsp; &nbsp; 
----
image size
[<img(50%+,50%+)[images/meow.gif]]
----
fold head
!!!
----
<<<
<<<
$1
<<<
----
color:#900
@@color:#900;$1@@
----
block
{{block{$1}}}
----
twocolumns
{{twocolumns{
$1
}}}
----
threecolumns
{{threecolumns{
$1
}}}
/%
|Name|QuickEdit_file|
|Source|http://www.TiddlyTools.com/#QuickEdit_file|
|Version|2.2.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2|
|Type|script|
|Requires|QuickEditPlugin|
|Overrides||
|Description|definition for toolbar buttons that insert content from external files|

Usage:
QuickEditToolbar: <<tiddler QuickEdit_file>>
OR
EditTemplate: <span class='toolbar' macro='tiddler QuickEdit_file'></span>

**** INSERT FILE ****
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink"
	title="insert content from an external text file"
	onclick="var fn=config.quickEdit.promptForFilename('Enter/select a text file',getLocalPath(document.location.href),'');
	if (!fn) return false; /* cancelled by user */
	var text=loadFile(getLocalPath(fn)); if (!text) { alert('Error: unable to read contents from \0027'+fn+'\0027'); return; }
	return config.quickEdit.setSelection(place,text);"
>file</a></html>
/%
|Name|QuickEdit_font|
|Source|http://www.TiddlyTools.com/#QuickEdit_font|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - select font family|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="set font-family CSS attribute - @@font-family:facename;...@@"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select a font family...','');
	var fonts=store.getTiddlerText('QuickEdit_fontList','').split('\n');
	for (var i=0; i<fonts.length; i++) {
		if (!fonts[i].length) continue;
		s.options[s.length]=new Option(fonts[i],fonts[i]);
		s.options[s.length-1].style.fontFamily=fonts[i];
	}
	s.options[s.length]=new Option('[Edit font list...]','_edit');
	s.options[s.length-1].title='enter fonts, one per line...';
	s.size=Math.min(s.length,15);
	s.onclick=function(){
		if (this.value=='_edit')
			story.displayTiddler(story.findContainingTiddler(this.button),'QuickEdit_fontList',DEFAULT_EDIT_TEMPLATE);			
		else
			config.quickEdit.wrapSelection(this.button,'@@font-family:\x22'+this.value+'\x22;','@@');
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>font</a></html>
Arial,helvetica,sans-serif
Times New Roman,times,serif
Courier,monospaced
/%
|Name|QuickEdit_format|
|Source|http://www.TiddlyTools.com/#QuickEdit_format|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - basic text formats, headings, blockquotes, etc.|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="plain text (remove ALL formatting)" accesskey="P" 
onclick="var e=config.quickEdit.getField(this); if (e) e.focus(); var txt=config.quickEdit.getSelection(e);
	config.quickEdit.setSelection(e,wikifyPlainText(txt)); return false;"
>&nbsp;~&nbsp;</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="''bold''" accesskey="B"
onclick="config.quickEdit.wrapSelection(this,'\x27\x27','\x27\x27'); return false;"
>&nbsp;B&nbsp;</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="//italics//" accesskey="I" 
onclick="config.quickEdit.wrapSelection(this,'//','//'); return false;"
>&nbsp;I&nbsp;</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="__underline__" accesskey="U" 
onclick="config.quickEdit.wrapSelection(this,'__','__'); return false;"
>&nbsp;U&nbsp;</a></html>/%

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="--strikethrough--" accesskey="S" 
onclick="config.quickEdit.wrapSelection(this,'--','--'); return false;"
>&nbsp;S&nbsp;</a></html>/%

%/ &nbsp;/%  SPACER

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="format text"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select text format...','');
	s.options[s.length]=new Option('CSS class wrapper','{{$1{,}}},Enter a CSS classname');
	s.options[s.length-1].title='CSS class wrapper - {{classname classname etc{...}}}';
	s.options[s.length]=new Option('inline CSS styles','@@$1,@@,Enter CSS (attribute:value;attribute:value;...;)');
	s.options[s.length-1].title='inline CSS styles - @@attr:value;attr:value;...@@';
	s.options[s.length]=new Option('heading 1','\n!,\n');
	s.options[s.length-1].title='H1 heading - !';
	s.options[s.length]=new Option('heading 2','\n!!,\n');
	s.options[s.length-1].title='H2 heading - !!';
	s.options[s.length]=new Option('heading 3','\n!!!,\n');
	s.options[s.length-1].title='H3 heading - !!!';
	s.options[s.length]=new Option('heading 4','\n!!!!,\n');
	s.options[s.length-1].title='H4 heading - !!!!';
	s.options[s.length]=new Option('heading 5','\n!!!!!,\n');
	s.options[s.length-1].title='H5 heading - !!!!!';
	s.options[s.length]=new Option('blockquote','\n\<\<\<\n,\n\<\<\<\n');
	s.options[s.length-1].title='indented blockquote - \<\<\<';
	s.options[s.length]=new Option('monospaced','{{{,}}}');
	s.options[s.length-1].title='inline monospaced text - {{{...}}}';
	s.options[s.length]=new Option('plain text','\n{{{\n,\n}}}\n');
	s.options[s.length-1].title='multi-line monospaced text box - {{{...}}}';
	s.options[s.length]=new Option('superscript','^^,^^');
	s.options[s.length-1].title='^^superscript^^';
	s.options[s.length]=new Option('subscript','~~,~~');
	s.options[s.length-1].title='~~subscript~~';
	s.options[s.length]=new Option('HTML','<html>,<\x2fhtml>');
	s.options[s.length-1].title='HTML syntax - <html>...<\x2fhtml>';
	s.options[s.length]=new Option('comment','/%,%/');
	s.options[s.length-1].title='comment (hidden content) - /%...%/';
	s.size=s.length;
	s.onclick=function(){ if (!this.value.length) return;
		var parts=this.value.split(',');
		var prefix=parts[0]; var suffix=parts[1]; var ask=parts[2];
		if (ask) {
			var val=prompt(ask); if (!val) { Popup.remove(); return false; }
			prefix=prefix.replace(/\$1/g,val); suffix=suffix.replace(/\$1/g,val);
		}
		config.quickEdit.wrapSelection(this.button,prefix,suffix);
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>format</a></html>
/%
|Name|QuickEdit_hash|
|Source|http://engramm.tiddlyspot.com/#QuickEdit_hash|
|Version|2.4.3|
|Author|Eric Shulman, modified Vladimir Kuzmin|
|License|see http://engramm.tiddlyspot.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - insert #|

Usage: see  http://engramm.tiddlyspot.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
	title="insert #"
	onclick="
	return config.quickEdit.setSelection(this,'#');"
> # </a></html>
/%
|Name|QuickEdit_image|
|Source|http://www.TiddlyTools.com/#QuickEdit_image|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - embed an image|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
	title="embed an image (jpg/gif/png) - [img[tooltip|URL]] or [img[tooltip|path/to/file.ext]]"
	onclick="var fn=config.quickEdit.promptForFilename(
		'Enter/select an image file',getLocalPath(document.location.href),'');
	if (!fn) return false;  /* cancelled by user */
	var h=document.location.href; var p=decodeURIComponent(h.substr(0,h.lastIndexOf('/')+1));
	if (fn.startsWith(p)) fn=fn.substr(p.length); /* use RELATIVE path/filename.ext */
	var tip=prompt('Enter a tooltip for this image',''); if (!tip) tip=''; else tip+='|';
	return config.quickEdit.setSelection(this,'[img['+tip+fn+']]');"
>image</a></html>
/%
|Name|QuickEdit_insert|
|Source|http://www.TiddlyTools.com/#QuickEdit_insert|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - insert content from another tiddler or external file|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="insert content from another tiddler or external file"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';

	var s2=createTiddlyElement(p,'select'); s2.title='filter by tag';
	s2.options[0]=new Option('filter by tag...','');
	s2.options[s2.length]=new Option('[all tiddlers]','');
	var tags=store.getTags();
	for (var t=0; t<tags.length; t++) s2.options[s2.length]=new Option(tags[t][0],tags[t][0]);
	s2.onchange=function(){
		var tag=this.value;
		var tids=tag.length?store.reverseLookup('tags',tag,true):store.reverseLookup('tags','excludeLists');
		var list=this.nextSibling.nextSibling;
		while (list.length) list.options[0]=null;
		var prompt='select a tiddler or file...';
		if (tag.length) prompt='select a tagged tiddler ['+tids.length+' matches]...';
		list.options[0]=new Option(prompt,'');
		if (!tag.length) list.options[list.length]=new Option('[browse for file...]','_file');
		for (var t=0; t<tids.length; t++) {
			list.options[list.length]=new Option(tids[t].title,tids[t].title);
			list.options[list.length-1].title=tids[t].getSubtitle();
		}
		list.size=Math.min(list.length,10);
		list.selectedIndex=0; list.focus();
		this.style.width=list.offsetWidth+'px';
		if (!tag.length) this.selectedIndex=0;
	};
	createTiddlyElement(p,'br');

	var s=createTiddlyElement(p,'select'); s.button=this;
	s.title='select a tiddler or file';
	s.options[0]=new Option('select a tiddler or file...','');
	s.options[s.length]=new Option('[browse for file...]','_file');
	var tids=store.reverseLookup('tags','excludeLists');
	for (var t=0; t<tids.length; t++) {
		s.options[s.length]=new Option(tids[t].title,tids[t].title);
		s.options[s.length-1].title=tids[t].getSubtitle();
	}
	s.size=Math.min(s.length,10);
	s.onclick=function(){ if (!this.value.length) return false;
		if (this.value=='_file') {
			var fn=config.quickEdit.promptForFilename(
				'Enter/select a text file',getLocalPath(document.location.href),'');
			if (!fn) return false; /* cancelled by user */
			var txt=loadFile(getLocalPath(fn));
			if (!txt) { alert('Error: unable to read contents from \0027'+fn+'\0027'); return; }
		}
		else var txt=store.getTiddlerText(this.value);
		if (!txt) {
			displayMessage(this.value+' not found');
			this.selectedIndex=0; this.focus();
			return false;
		}
		config.quickEdit.setSelection(this.button,txt);
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s2.style.width=s.offsetWidth+'px';
	s.focus();
	return config.quickEdit.processed(event);"
>insert</a></html>
/%
|Name|QuickEdit_link|
|Source|http://www.TiddlyTools.com/#QuickEdit_link|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - link to tiddler or external file|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="add a link to a tiddler or external file - [[link text|TiddlerName]]"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';

	var s2=createTiddlyElement(p,'select'); s2.title='filter by tag';
	s2.options[0]=new Option('filter by tag...','');
	s2.options[s2.length]=new Option('[all tiddlers]','');
	var tags=store.getTags();
	for (var t=0; t<tags.length; t++) s2.options[s2.length]=new Option(tags[t][0],tags[t][0]);
	s2.onchange=function(){
		var tag=this.value;
		var tids=tag.length?store.reverseLookup('tags',tag,true):store.reverseLookup('tags','excludeLists');
		var list=this.nextSibling.nextSibling;
		while (list.length) list.options[0]=null;
		var prompt='select a tiddler or file...';
		if (tag.length) prompt='select a tagged tiddler ['+tids.length+' matches]...';
		list.options[0]=new Option(prompt,'');
		if (!tag.length) list.options[list.length]=new Option('[browse for file...]','_file');
		for (var t=0; t<tids.length; t++) {
			list.options[list.length]=new Option(tids[t].title,tids[t].title);
			list.options[list.length-1].title=tids[t].getSubtitle();
		}
		list.size=Math.min(list.length,10);
		list.selectedIndex=0; list.focus();
		this.style.width=list.offsetWidth+'px';
		if (!tag.length) this.selectedIndex=0;
	};
	createTiddlyElement(p,'br');

	var s=createTiddlyElement(p,'select'); s.button=this;
	s.title='select a tiddler or file';
	s.options[0]=new Option('select a tiddler or file...','');
	s.options[s.length]=new Option('[browse for file...]','_file');
	var tids=store.reverseLookup('tags','excludeLists');
	for (var t=0; t<tids.length; t++) {
		s.options[s.length]=new Option(tids[t].title,tids[t].title);
		s.options[s.length-1].title=tids[t].getSubtitle();
	}
	s.size=Math.min(s.length,10);
	s.onclick=function(){ if (!this.value.length) return false;
		var title=this.value; var txt=title;
		if (title=='_file') {
			title=config.quickEdit.promptForFilename('Select a file',
				getLocalPath(document.location.href),'');
			if (!title) { this.selectedIndex=0; this.focus(); return false; }
			var txt=title.substr(title.lastIndexOf('/')+1);
		}
		var txt=prompt('Enter the text to display for this link',txt);
		if (!txt) { this.selectedIndex=0; this.focus(); return false; }
		config.quickEdit.setSelection(this.button,'[['+txt+'|'+title+']]');
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s2.style.width=s.offsetWidth+'px';
	s.focus();
	return config.quickEdit.processed(event);"
>link</a></html>
/%
|Name|QuickEdit_macro|
|Source|http://www.TiddlyTools.com/#QuickEdit_macro|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - embed a macro with 'guide text'|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

Note:
Optional 'guideText' can be used to add suggested defaults/placeholders for specific macro parameters.
Add guideText to your own plugin-defined macros using:
	config.macros.macroName.guideText='guide text goes here';

%/<<tiddler {{
	/* define guide text for a few common TW core macros */
	config.macros.edit.guideText='fieldname #rows';
	config.macros.view.guideText='fieldname (link,wikified,date) format';
	config.macros.slider.guideText='cookie TiddlerName label tooltip';
	config.macros.option.guideText='(txtCookieName,chkCookieName)';
	config.macros.tiddler.guideText='TiddlerName with: params...';
	''; /* must return blank to suppress output */ }}>>/%

%/<html><hide linebreaks><a href='javascript:;' class='tiddlyLink' tabindex='-1' 
title='add a macro - \<\<macroName ...\>\>'
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select a macro...','');
	var macros=[]; for (var m in config.macros) if (config.macros[m].handler) macros.push(m); macros.sort();
	for (var i=0; i<macros.length; i++) { var m=macros[i];
		var help=config.macros[m].guideText; if (!help) help=''; else help=' '+help;
		s.options[s.length]=new Option(m,m+help);
		s.options[s.length-1].title='\<\<'+m+help+'\>\>';
	}
	s.size=Math.min(s.length,15);
	s.onclick=function(){ if (!this.value.length) return;
		config.quickEdit.setSelection(this.button,'\<\<'+this.value+'\>\>');
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>macro</a></html>
/%
|Name|QuickEdit_replace|
|Source|http://www.TiddlyTools.com/#QuickEdit_replace|
|Version|2.4.5|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - find/replace selected text with replacement text|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar
!!!Revisions
<<<
2010.12.26 2.4.5 fix use getField(this) to support hijacks by editSectionPlugin
<<<
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="find/replace selected text with replacement text"
onclick="var p=Popup.create(this,null,'popup sticky smallform'); if (!p) return false;
	var e=config.quickEdit.getField(this);
	var s=config.quickEdit.getSelection(e); 
	var t=createTiddlyElement(p,'input'); t.onfocus=function(){this.select()};
	t.value=s.length?s:'enter target text';
	var r=createTiddlyElement(p,'input'); r.onfocus=function(){this.select()};
	r.value='enter replacement text';
	var b=createTiddlyElement(p,'button',null,null,'?');
	b.style.width='2em';
	b.title='FIND/FIND NEXT target text';
	b.root=this;
	b.onclick=function(ev) { /* FIND */
		var e=config.quickEdit.getField(this.root);
		var t=this.previousSibling.previousSibling;
		var tv=t.value.replace(/\\t/mg,'\t').unescapeLineBreaks();
		e.focus();
		if (e.setSelectionRange) { /* MOZ */
			var newstart=e.value.indexOf(tv,e.selectionStart+1);
			if (newstart==-1) newstart=e.value.indexOf(tv); /* wrap around */
			if (newstart==-1) { alert('\u0022'+t.value+'\u0022 not found'); t.focus(); return; }
			e.setSelectionRange(newstart,newstart+tv.length);
			var linecount=e.value.split('\n').length;
			var thisline=e.value.substr(0,e.selectionStart).split('\n').length;
			e.scrollTop=Math.floor((thisline-1-e.rows/2)*e.scrollHeight/linecount);
		} else if (document.selection) { /* IE */
			var range=document.selection.createRange();
			if(range.parentElement()==e) {
				range.collapse(false);
				var found=false; try{found=range.findText(v,e.value.length,4)}catch(e){}
				if (found) range.select();
				else { alert('\u0022'+t.value+'\u0022 not found'); t.focus(); }
			}
		}
	};
	b=createTiddlyElement(p,'button',null,null,'=');
	b.style.width='2em';
	b.title='REPLACE selected text';
	b.root=this;
	b.onclick=function(ev) { /* REPLACE */
		var e=config.quickEdit.getField(this.root);
		var t=this.previousSibling.previousSibling.previousSibling;
		var r=this.previousSibling.previousSibling;
		var rv=r.value.replace(/\\t/mg,'\t').unescapeLineBreaks();
		if (   (e.selectionStart!==undefined && e.selectionEnd==e.selectionStart)
		    || (document.selection && document.selection.createRange().text==''))
			this.previousSibling.click(); /* no selection... do FIND first */
		if (   (e.selectionStart!==undefined && e.selectionEnd==e.selectionStart)
		    || (document.selection && document.selection.createRange().text==''))
			{ t.focus(); return; } /* still no selection... goto target input */
		e.focus(); replaceSelection(e,rv);
	};
	b=createTiddlyElement(p,'button',null,null,'+');
	b.style.width='2em';
	b.title='REPLACE selected text AND FIND NEXT target text';
	b.onclick=function(ev) { /* REPLACE and FIND NEXT */
		this.previousSibling.click();
		this.previousSibling.previousSibling.click();
	};
	b=createTiddlyElement(p,'button',null,null,'!');
	b.style.width='2em';
	b.title='REPLACE ALL occurrences of target text';
	b.root=this;
	b.onclick=function(ev) { /* REPLACE ALL */
		var e=config.quickEdit.getField(this.root);
		var t=this.previousSibling.previousSibling.previousSibling.previousSibling.previousSibling;
		var r=this.previousSibling.previousSibling.previousSibling.previousSibling;
		var tv=t.value.replace(/\\t/mg,'\t').unescapeLineBreaks();
		var rv=r.value.replace(/\\t/mg,'\t').unescapeLineBreaks();
		if (!tv.length) { alert('Please enter the target text'); t.focus(); return; }
		var m='This will replace all occurrences of:\n\n'+tv+'\n\nwith:\n\n'+rv+'\n\nAre you sure?';
		if (!confirm(m)) { r.focus(); r.select(); return; }
		e.value=e.value.replace(new RegExp(tv.escapeRegExp(),'gm'),rv);
		e.focus(); e.select(); Popup.remove();
	};
	Popup.show();
	if (!s.length) {t.focus();t.select()} else {r.focus();r.select()}
	event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>replace</a></html>
/%
|Name|QuickEdit_sort|
|Source|http://www.TiddlyTools.com/#QuickEdit_sort|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - sort lines of text|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="sort lines of text"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select sort order...','');
	s.options[s.length]=new Option('ascending','A');
	s.options[s.length-1].title='ascending';
	s.options[s.length]=new Option('descending','D');
	s.options[s.length-1].title='descending';
	s.size=s.length;
	s.onclick=function(){ if (!this.value.length) return;
		var e=config.quickEdit.getField(this.button); if (!e) return false;
		var lines=config.quickEdit.getSelection(e).split('\n').sort();
		if (this.value=='D') lines=lines.reverse();
		replaceSelection(e,lines.join('\n'));
		e.focus();
		Popup.remove(); return false;
	};
	s.onkeyup=config.quickEdit.keyup;
	Popup.show();
	s.focus();
	return config.quickEdit.processed(event);"
>sort</a></html>
/%
|Name|QuickEdit_split|
|Source|http://www.TiddlyTools.com/#QuickEdit_split|
|Version|2.4.3|
|Author|Eric Shulman|
|License|see http://www.TiddlyTools.com/#QuickEditPlugin|
|Type|html|
|Requires|QuickEditPlugin|
|Description|quickedit - move selection to new tiddler and insert link, embedded tiddler, or slider|

Usage: see  http://www.TiddlyTools.com/#QuickEditToolbar

Based on ideas originally developed by YannPerrin
(http://yann.perrin.googlepages.com/twkd.html#easySlicer)

%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink" tabindex="-1" 
title="move selection to new tiddler and insert link, embedded tiddler, or slider"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	p.style.whiteSpace='nowrap';
	var i=createTiddlyElement(p,'input');
	i.defaultValue='Enter a new tiddler title';
	i.onfocus=function(){this.select()};
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select type...','');
	s.options[0].title='select split type';
	s.options[1]=new Option('link','link');
	s.options[1].title='replace with [[TiddlerName]]';
	s.options[2]=new Option('embed','embed');
	s.options[2].title='replace with \<\<tiddler TiddlerName\>\>';
	s.options[3]=new Option('slider','slider');
	s.options[3].title='replace with \<\<slider \u0022\u0022 [[TiddlerName]] [[label]] [[tooltip]]\>\>';
	s.onchange=function(){
		if (s.previousSibling.value==s.previousSibling.defaultValue)
			{ alert('A tiddler title is required'); s.selectedIndex=0; s.previousSibling.focus(); return false; }
		var tid=s.previousSibling.value;
		if (store.tiddlerExists(tid) && !confirm(config.messages.overwriteWarning.format([tid])))
			{ s.previousSibling.focus(); return false; }
		switch(s.value) {
			case 'link':
				var newtxt='[['+tid+']]';
				break;
			case 'embed':
				var newtxt='\<\<tiddler [['+tid+']]\>\>';
				break;
			case 'slider':
				var label=prompt('Enter a slider label',tid);
				if (!label) { Popup.remove(); return false; }
				var tip=prompt('Enter a slider tooltip',label);
				if (!tip) { Popup.remove(); return false; }
				var newtxt='\<\<slider \u0022\u0022 [['+tid+']] [['+label+']] [['+tip+']]\>\>';
				break;
		}
		var txt=config.quickEdit.getSelection(config.quickEdit.getField(this.button));
		store.saveTiddler(tid,tid,txt,config.options.txtUserName,new Date(),[],{});
		story.displayTiddler(story.findContainingTiddler(this.button),tid);
		config.quickEdit.setSelection(this.button,newtxt);
		Popup.remove(); return false;
	};
	Popup.show();
	event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>split</a></html>
/%
|Name|QuickEdit_tiddler|
|Source|http://www.TiddlyTools.com/#QuickEdit_tiddler|
|Version|2.2.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2|
|Type|script|
|Requires|QuickEditPlugin|
|Overrides||
|Description|definition for toolbar button that inserts content from another tiddler|

Usage:
QuickEditToolbar: <<tiddler QuickEdit_tiddler>>
OR
EditTemplate: <span class='toolbar' macro='tiddler QuickEdit_tiddler'></span>

**** INSERT TIDDLER ****
%/<html><hide linebreaks><a href="javascript:;" class="tiddlyLink"
title="copy content from another tiddler"
onclick="var p=Popup.create(this); if (!p) return false; p.className+=' sticky smallform';
	var s=createTiddlyElement(p,'select'); s.button=this;
	s.options[0]=new Option('select a tiddler...','');
	s.onchange=function(){
		var txt=store.getTiddlerText(this.value);
		if (!txt) { displayMessage(this.value+' not found'); this.selectedIndex=0; this.focus(); return false; }
		config.quickEdit.setSelection(this.button,txt);
		Popup.remove(); return false;
	};
	var tids=store.getTiddlers('title');
	for (var t=0; t<tids.length; t++) {
		s.options[s.length]=new Option(tids[t].title,tids[t].title);
		s.options[s.length-1].title=tids[t].getSubtitle();
	}
	var s=createTiddlyElement(p,'select');
	s.options[0]=new Option('match tag...','');
	s.onchange=function(){
		var tag=this.value;
		var tids=tag.length?store.getTaggedTiddlers(tag,'title'):store.getTiddlers('title');
		var list=this.previousSibling;
		while (list.length) list.options[0]=null;
		var prompt='select a '+(tag.length?'tagged ':'')+'tiddler'+(tag.length?(' ['+tids.length+' matches]'):'')+'...';
		list.options[0]=new Option(prompt,'');
		for (var t=0; t<tids.length; t++) {
			list.options[list.length]=new Option(tids[t].title,tids[t].title);
			list.options[list.length-1].title=tids[t].getSubtitle();
		}
	};
	var tags=store.getTags();
	for (var t=0; t<tags.length; t++) s.options[s.length]=new Option(tags[t][0],tags[t][0]);
	Popup.show(p,false);
	event.cancelBubble=true;if(event.stopPropagation)event.stopPropagation();return false;"
>tiddler</a></html>
Сайт создан на движке [[TiddlyWiki|http://www.tiddlywiki.com/]], дополнительная информация о движке на [[Википедии|http://ru.wikipedia.org/wiki/TiddlyWiki]].

Автор будет благодарен за указание на наличие ошибок и неточностей ''e-mail'' ''kuzshev@yandex.ru'' .

Также буду благодарен если при использовании статей с этого учебника, в качестве авторства, укажите ссылкой на URL http://engramm.su .

!!Авторские права
Содержание статей (тидлеров) "Учебника английского языка" распространяется свободно: __внимание__! только статьи помеченные тегом <<tag [[CC BY 3.0]]>>. Вы имеете право на копирование, редактирование и распространение данных статей, при условии указания авторства: [["Creative Commons Attribution 3.0 Unported  (CC BY 3.0)"|http://creativecommons.org/licenses/by/3.0]].


<html><a href="mailto:kuzshev@yandex.ru">kuzshev@yandex.ru</a></html>
''Creative Commons Attribution 3.0 Unported''  (''CC BY 3.0'') - Эта лицензия позволяет другим распространять, редактировать, поправлять и брать за основу ваше произведение, даже коммерчески, до тех пор пока они указывают ваше авторство. Это самая разрешительная из предлагаемых лицензий. Рекомендована для максимального распространения и использования лицензированных материалов. http://creativecommons.org/licenses/
/***
|Name:|RenameTagsPlugin|
|Description:|Allows you to easily rename or delete tags across multiple tiddlers|
|Version:|3.0 ($Rev: 5501 $)|
|Date:|$Date: 2008-06-10 23:11:55 +1000 (Tue, 10 Jun 2008) $|
|Source:|http://mptw.tiddlyspot.com/#RenameTagsPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
Rename a tag and you will be prompted to rename it in all its tagged tiddlers.
***/
//{{{
config.renameTags = {

	prompts: {
		rename: "Rename the tag '%0' to '%1' in %2 tidder%3?",
		remove: "Remove the tag '%0' from %1 tidder%2?"
	},

	removeTag: function(tag,tiddlers) {
		store.suspendNotifications();
		for (var i=0;i<tiddlers.length;i++) {
			store.setTiddlerTag(tiddlers[i].title,false,tag);
		}
		store.resumeNotifications();
		store.notifyAll();
	},

	renameTag: function(oldTag,newTag,tiddlers) {
		store.suspendNotifications();
		for (var i=0;i<tiddlers.length;i++) {
			store.setTiddlerTag(tiddlers[i].title,false,oldTag); // remove old
			store.setTiddlerTag(tiddlers[i].title,true,newTag);  // add new
		}
		store.resumeNotifications();
		store.notifyAll();
	},

	storeMethods: {

		saveTiddler_orig_renameTags: TiddlyWiki.prototype.saveTiddler,

		saveTiddler: function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created) {
			if (title != newTitle) {
				var tagged = this.getTaggedTiddlers(title);
				if (tagged.length > 0) {
					// then we are renaming a tag
					if (confirm(config.renameTags.prompts.rename.format([title,newTitle,tagged.length,tagged.length>1?"s":""])))
						config.renameTags.renameTag(title,newTitle,tagged);

					if (!this.tiddlerExists(title) && newBody == "")
						// dont create unwanted tiddler
						return null;
				}
			}
			return this.saveTiddler_orig_renameTags(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created);
		},

		removeTiddler_orig_renameTags: TiddlyWiki.prototype.removeTiddler,

		removeTiddler: function(title) {
			var tagged = this.getTaggedTiddlers(title);
			if (tagged.length > 0)
				if (confirm(config.renameTags.prompts.remove.format([title,tagged.length,tagged.length>1?"s":""])))
					config.renameTags.removeTag(title,tagged);
			return this.removeTiddler_orig_renameTags(title);
		}

	},

	init: function() {
		merge(TiddlyWiki.prototype,this.storeMethods);
	}
}

config.renameTags.init();

//}}}

@@font-size:8pt;<<option chkSearchTitles>>заголовки
<<option chkSearchText>>текст
<<option chkSearchTags>>тэги
<<option chkSearchHighlight>>подсветить найденное
<<option chkSearchTitlesFirst>>совпадения по заголовкам в перёд
<<option chkIncrementalSearch>>поиск при вводе
<<option chkSearchOpenTiddlers>>поиск только в открытых@@
/***
|Name|SearchOptionsPlugin|
|Source|http://engramm.tiddlyspot.com/#SearchOptionsPlugin|
|Documentation|http://engramm.tiddlyspot.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 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.02.25 3.0.7 in formatSearchResults_list, added declaration of local 'co' variable
|please see [[SearchOptionsPluginInfo]] for additional revision details|
2005.10.18 1.0.0 Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.SearchOptionsPlugin= {major: 3, minor: 0, revision: 7, date: new Date(2010,2,25)};

var defaults={
	chkSearchTitles:	true,
	chkSearchText:		true,
	chkSearchTags:		true,
	chkSearchFields:	false,
	chkSearchTitlesFirst:	true,
	chkSearchList:		true,
	chkSearchHighlight:	true,
	chkSearchListTiddler:	true,
	chkSearchByDate:	false,
	chkIncrementalSearch:	true,
	chkSearchShadows:	false,
	chkSearchOpenTiddlers:	false,
	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: "open all", "fold/unfold", "close"
	var tb=createTiddlyElement(wrap,"div",null,"toolbar");
	var b=createTiddlyButton(tb, "open all", "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, "fold", "toggle display of search results", function() {
		config.macros.search.foldPanel(this); return false; },"button");
	var b=createTiddlyButton(tb, "close", "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?"fold":"unfold";
	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;">';
	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 "";
	// "open all" 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);
}
//}}}
/***
|Name|SearchOptionsPluginInfo|
|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|documentation|
|Description|Documentation for SearchOptionsPlugin|
Extend core search function with additional user-configurable options including selecting which data items to search, enabling/disabling incremental key-by-key searches, and generating a ''list of matching tiddler'' 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.
!!!!!Search link Syntax
<<<
To insert a 'search link' into tiddler content, you can write:
{{{
[search[text to find]]
}}}
or
{{{
[search[text to display|text to find]]
}}}
Clicking on the resulting search link will trigger the search functionality, just as if the specified 'text to find' had been entered into the standard search input field usually displayed in the document sidebar.
<<<
!!!!!Inline output: search macro syntax
<<<
Alternatively, to embed search results lists directly into your tiddler content, you can use:
{{{
<<search "text" report>> (report is a literal keyword)
<<search "text" "heading" "separator">> (simple inline generator)
}}}
<<<
!!!!!Inline output examples:
<<<
*+++*[&lt;&lt;search "wood"&gt;&gt;]>...
<<search "wood">>
===

*+++*[&lt;&lt;search "wood" "/%%/"&gt;&gt;]>...
<<search "wood" "/%%/">>
===

*+++*[&lt;&lt;search "wood" "See also: "&gt;&gt;]>...
<<search "wood" "See also: ">>
===

*+++*[&lt;&lt;search "wood" "See also:\n*" "\n*"&gt;&gt;]>...
<<search "wood" "See also:\n*" "\n*">>
===

*+++*[&lt;&lt;search "wood" report=list "See also:"&gt;&gt;]>...
<<search "wood" report=list "See Also:" >>
===

*+++*[&lt;&lt;search "wood" report&gt;&gt;]>...
<<search "wood" report>>
===

*+++*[&lt;&lt;search "wood" report=&gt;&gt;]>...
<<search "wood" report=>>
===

*+++*[&lt;&lt;search "wood" report=all&gt;&gt;]>...
<<search "wood" report=all>>
===

*+++*[&lt;&lt;search "wood" report=summary+buttons+again+list&gt;&gt;]>...
<<search "wood" report=summary+buttons+again+list>>
===

*+++*[&lt;&lt;search "wood" report=summary+again&gt;&gt;]>...
<<search "wood" report=summary+again>>
===

*+++*[&lt;&lt;search "wood" report=summary&gt;&gt;]>...
<<search "wood" report=summary>>
===

<<<
!!!!!Configuration
<<<
Search in:
<<option chkSearchTitles>> titles <<option chkSearchText>> text <<option chkSearchTags>> tags <<option chkSearchFields>> fields <<option chkSearchShadows>> shadows
{{{<<option chkSearchTitles>> <<option chkSearchText>> <<option chkSearchTags>>}}}
{{{<<option chkSearchFields>> <<option chkSearchShadows>>}}}
<<option chkSearchHighlight>> Highlight matching text in displayed tiddlers {{{<<option chkSearchHighlight>>}}}
<<option chkSearchList>> Show list of matches {{{<<option chkSearchList>>}}}
<<option chkSearchListTiddler>> Write list to [[SearchResults]] tiddler {{{<<option chkSearchListTiddler>>}}}
<<option chkSearchTitlesFirst>> Show title matches first {{{<<option chkSearchTitlesFirst>>}}}
<<option chkSearchByDate>> Sort matching tiddlers by date {{{<<option chkSearchByDate>>}}}
<<option chkIncrementalSearch>> Incremental key-by-key search: {{twochar{<<option txtIncrementalSearchMin>>}}} or more characters,  {{threechar{<<option txtIncrementalSearchDelay>>}}} msec delay
{{{<<option chkSearchIncremental>> <<option txtSearchIncrementalMin>> <<option txtSearchIncrementalDelay>>}}}
<<option chkSearchOpenTiddlers>> Search only in tiddlers that are currently displayed {{{<<option chkSearchOpenTiddlers>>}}}
<<option chkSearchExcludeTags>> Exclude tiddlers tagged with: <<option txtSearchExcludeTags>>
{{{<<option chkSearchExcludeTags>>}}} {{{<<option txtSearchExcludeTags>>}}}
<<<
!!!!!Revisions
<<<
2010.02.25 3.0.7 in formatSearchResults_list, added declaration of local 'co' variable
2009.09.22 3.0.6 in TiddlyWiki.prototype.search, added 'match' param for core compatibility
2009.01.16 3.0.5 added chkSearchOpenTiddlers option to limit searches to displayed tiddlers only
2009.01.15 3.0.4 in formatSearchResults_list(), corrected link generation to properly handle single-quotes and double-quotes in tiddler titles
2009.01.09 3.0.3 added chkSearchHighlight to optionally disable highlighting of matched text
2009.01.05 3.0.2 in formatSearchResults_list(), set/clear 'highlightHack' via HTML links so that search term will be highlighted when displaying tiddlers.
2008.10.14 3.0.1 changed panel class from "tiddler" to "searchPanel" and added style definition for "searchPanel".  Fixes ticket #771 (in IE, links from search results were reporting errors due to "fake" tiddler class wrapper)
2008.10.02 3.0.0 added optional list of tags to use for excluding tiddler from searches (default="excludeLists").
2008.09.24 2.9.9 performance improvment to reportSearchResults(): when rendering a real SearchResults tiddler, store.notify() isn't needed since the results tiddler is always explicitly closed and redrawn each time.
2008.09.20 2.9.8 corrected createPanel() and renderPanel() so toolbar will be correctly shown/hidden on mouseover/mouseout.
2008.09.19 2.9.7 fixes to panel handling for IE, Safari, and others.  Changed panel id to #searchPanel and added .searchResults CSS class wrapper around panel content.  Fixed fold/unfold handling.
2008.09.18 2.9.6 refactored panel handling code, added 'fold/unfold' panel toolbar command, added dynamic 'title' (shows search term), added txtIncrementalSearchMin option
2008.09.17 2.9.5 added focus and cursor handling for 'search again' field in #searchResults DIV report so that an incremental key-by-key search doesn't interfere with continuous typing into the field.
2008.09.17 2.9.4 fix 'flicker' when updating #searchResults DIV by wikify()ing to an 'offscreen' DIV and then using replaceChild() instead of using removeChildren() followed by wikify()
2008.09.16 2.9.3 changed report layout, added "search again" and collapsible 'options' section with incremental search checkbox and "txtIncrementalSearchDelay" timer tweak to onKeyPress()
2008.08.25 2.9.2 added animation to search results DIV.  Also, the #searchResults DOM element is only auto-created if it does not exist ... and when closed, the DIV is simply hidden rather than removed.  This allows custom placement of search results report in the PageTemplate definition.
2008.08.23 2.9.1 story column search results uses {{{<<moveablePanel>>}}}
2008.08.22 2.9.0 default is now to show search results at top of story column, similar to FND's SimpleSearchPlugin display, with an option to generate SearchResults tiddler as before.  Also changed 'chkSearchIncremental' to 'chkIncrementalSearch' to match core option variable
2008.08.12 2.8.2 change default for chkSearchByDate back to FALSE, and adjusted "list" and "again" output formats (minor tweaks requested by PhilWhitehouse for use on TiddlyWiki.com)
2008.08.11 2.8.1 changed defaults for chkSearchTitlesFirst, chkSearchList and chkSearchShadows to TRUE to enable enhanced search results output as soon as plugin is installed.
2008.06.21 2.8.0 added extended syntax for {{{<<search "text" report heading>> and <<search "text" "heading" "seperator">>}}}
2008.05.03 2.7.1 in searchLink formatter handler(), use separate setAttribute() call instead of passing attribs to createTiddlyButton().  Avoids conflict with errant code in TiddlerNotesPlugin (v2.1 26/10/07)
2008.04.29 2.7.0 added searchLink formatter (syntax: {{{[search[text]]}}} or {{{[search[display|text]]}}})
2008.04.08 2.6.2 don't automatically add options to AdvancedOptions shadow tiddler
2007.02.17 2.6.1 added redefinition of config.macros.search.onKeyPress() to restore check to bypass key-by-key searching (i.e., when chkSearchIncremental==false), which had been unintentionally removed with v2.6.0
2007.02.13 2.6.0 remove redefinition of config.macros.search.handler since core now includes handling for ENTER key.
2007.02.08 2.5.1 include 'temporary' tag when creating SearchResults (for use with TemporaryTiddlersPlugin)
2007.01.29 2.5.0 added support for "sort results by date".  Default is to sort alphabetically (standard).  When sorted by dates, most recent changes are shown first
2006.10.10 2.4.0 added support for "search in tiddler data" (tiddler.fields)  Default is to search extended data.
2006.04.06 2.3.0 added support for "search in shadow tiddlers".  Default is *not* to search in the shadows (i.e. standard TW behavior).  Note: if a shadow tiddler has a 'real' counterpart, only the real tiddler is searched, since the shadow is inaccessible for viewing/editing.
2006.02.03 2.2.1 rewrite timeout clearing code and blank search text handling to match 2.0.4 core release changes.  note that core no longer permits "blank=all" searches, so neither does this plugin.  To search for all, use "." with text patterns enabled.
2006.02.02 2.2.0 in search.handler(), KeyHandler() function clears 'left over' timeout when search input is < 3 chars.  Prevents searching on shorter text when shortened by rapid backspaces (<500msec)
2006.02.01 2.1.9 in Story.prototype.search(), correct inverted logic for using/not using regular expressions when searching
also, blank search text now presents "No search text.  Continue anyway?" confirm() message box, so search on blank can still be processed if desired by user.
2006.02.01 2.1.8 in doSearch(), added alert/return if search text is blank
2006.01.20 2.1.7 fixed setting of config.macros.search.reportTitle so that Tweaks can override it.
2006.01.19 2.1.6 improved SearchResults formatting, added a "search again" form to the report (based on a suggestion from MorrisGray)
define results report title using config.macros.search.reportTitle instead of hard-coding the tiddler title
2006.01.18 2.1.5 Created separate functions for reportSearchResults(text,matches) and discardSearchResults(), so that other developers can create alternative report generators.
2006.01.17 2.1.4 Use regExp.search() instead of regExp.test() to scan for matches.  Correctd the problem where only half the matching tiddlers (the odd-numbered ones) were being reported.
2006.01.15 2.1.3 Added information (date/time, username, search options used) to SearchResults output
2006.01.10 2.1.2 use displayTiddlers() to render matched tiddlers.  This lets you display multiple matching tiddlers, even if SinglePageModePlugin is enabled.
2006.01.08 2.1.1 corrected invalid variable reference, "txt.value" to "text" in story.search()
2006.01.08 2.1.0 re-write to match new store.search(), store.search.handler() and story.search() functions.
2005.12.30 2.0.0 Upgraded to TW2.0.  When rendering SearchResults tiddler, closeTiddler() first to ensure display is refreshed.
2005.12.26 1.4.0 added option to search for matching text in tiddler tags
2005.12.21 1.3.7 use \\ to 'escape' single quotes in tiddler titles when generating "Open all matching tiddlers" link.  Also, added access key: "O", to trigger "open all" link.  Based on a suggestion by UdoBorkowski.
2005.12.18 1.3.6 call displayMessage() AFTER showing matching tiddlers so message is not cleared too soon
2005.12.17 1.3.5 if no matches found, just display message and delete any existing SearchResults tiddler.
2005.12.17 1.3.4 use {/%%/{/%%/{  and }/%%/}/%%/} to 'escape' display text in SearchResults tiddler to ensure that formatting contained in search string is not rendered.  Based on a suggestion by UdoBorkowski.
2005.12.14 1.3.3 tag SearchResults tiddler with 'excludeSearch' so it won't list itself in subsequent searches. Based on a suggestion by UdoBorkowski.
2005.12.14 1.3.2 added "open all matching tiddlers..." link to search results output. Based on a suggestion by UdoBorkowski.
2005.12.10 1.3.1 added "discard search results" link to end of search list tiddler output for quick self-removal of 'SearchResults' tiddler.
2005.12.01 1.3.0 added chkSearchIncremental to enable/disable 'incremental' searching (i.e., search after each keystroke) (default is ENABLED).
added handling for Enter key so it can be used to start a search. Based on a suggestion by LyallPearce
2005.11.25 1.2.1 renamed from SearchTitleOrTextPlugin to SearchOptionsPlugin
2005.11.25 1.2.0 added chkSearchList option.  Based on a suggestion by RodneyGomes
2005.10.19 1.1.0 added chkSearchTitlesFirst option.  Based on a suggestion by ChristianHauck
2005.10.18 1.0.0 Initial Release.  Based on a suggestion by LyallPearce.
<<<
{{span{<<search "язык">> /%
%/<html><input type="button" value="search again" onclick="var t=this.parentNode.parentNode.getElementsByTagName('input')[0]; config.macros.search.doSearch(t); return false;"> <a href="javascript:;" onclick=" var e=this.parentNode.nextSibling; var show=e.style.display!='block'; if(!config.options.chkAnimate) e.style.display=show?'block':'none'; else anim.startAnimating(new Slider(e,show,false,'none')); return false;">options...</a></html>@@display:none;border-left:1px dotted;margin-left:1em;padding:0;padding-left:.5em;font-size:90%;/%
	%/<<option chkSearchTitles>>titles /%
	%/<<option chkSearchText>>text /%
	%/<<option chkSearchTags>>tags /%
	%/<<option chkSearchFields>>fields /%
	%/<<option chkSearchShadows>>shadows
	<<option chkCaseSensitiveSearch>>case-sensitive /%
	%/<<option chkRegExpSearch>>text patterns /%
	%/<<option chkSearchByDate>>sorted by date
	<<option chkSearchHighlight>> highlight matching text in displayed tiddlers
	<<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:
	{{editor{<<option txtSearchExcludeTags>>}}}/%
%/@@}}}

''40 tiddlers found matching '{{{язык}}}'''
~~&nbsp; searched in titles + text + tags~~
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Фонетика английского языка (English Phonetic)');highlightHack = null; return false;" title="Фонетика английского языка (English Phonetic) - KuzShevVI, Птн 15 Апр 2011 11:45:00">Фонетика английского языка (English Phonetic)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Список глаголов-связок в английском языке (List of English copulae)');highlightHack = null; return false;" title="Список глаголов-связок в английском языке (List of English copulae) - YourName, Пнд 21 Мар 2011 21:20:00">Список глаголов-связок в английском языке (List of English copulae)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Советы для начинающих изучать английский язык (Hints for beginners on learning English)-Notes');highlightHack = null; return false;" title="Советы для начинающих изучать английский язык (Hints for beginners on learning English)-Notes - YourName, Втр 29 Мар 2011 13:44:00">Советы для начинающих изучать английский язык (Hints for beginners on learning English)-Notes</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Советы для начинающих изучать английский язык (Hints for beginners on learning English)');highlightHack = null; return false;" title="Советы для начинающих изучать английский язык (Hints for beginners on learning English) - KuzShevVI, Вск 15 Май 2011 16:46:00">Советы для начинающих изучать английский язык (Hints for beginners on learning English)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Канадский вариант английского языка');highlightHack = null; return false;" title="Канадский вариант английского языка - (unknown), Птн 02 Июл 2010 13:39:00">Канадский вариант английского языка</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Диалекты английского языка (Dialects of English)');highlightHack = null; return false;" title="Диалекты английского языка (Dialects of English) - KuzShevVI, Втр 04 Янв 2011 16:07:00">Диалекты английского языка (Dialects of English)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Грамматика английского языка (English Grammar)');highlightHack = null; return false;" title="Грамматика английского языка (English Grammar) - KuzShevVI, Вск 15 Май 2011 09:27:00">Грамматика английского языка (English Grammar)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Английский язык (English language)');highlightHack = null; return false;" title="Английский язык (English language) - KuzShevVI, Птн 22 Апр 2011 18:14:00">Английский язык (English language)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Австралийский вариант английского языка');highlightHack = null; return false;" title="Австралийский вариант английского языка - (unknown), Птн 02 Июл 2010 13:50:00">Австралийский вариант английского языка</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Число имен существительных (The Number of Nouns)');highlightHack = null; return false;" title="Число имен существительных (The Number of Nouns) - KuzShevVI, Срд 11 Май 2011 14:54:00">Число имен существительных (The Number of Nouns)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Части речи (Parts of Speech)');highlightHack = null; return false;" title="Части речи (Parts of Speech) - KuzShevVI, Вск 15 Май 2011 10:35:00">Части речи (Parts of Speech)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Фразовые глаголы (The Phrasal Verbs)');highlightHack = null; return false;" title="Фразовые глаголы (The Phrasal Verbs) - KuzShevVI, Чтв 21 Апр 2011 14:44:00">Фразовые глаголы (The Phrasal Verbs)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Фонология (Phonology)');highlightHack = null; return false;" title="Фонология (Phonology) - KuzShevVI, Втр 10 Май 2011 22:24:00">Фонология (Phonology)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Фонетическая транскрипция (Phonetic Transcription)');highlightHack = null; return false;" title="Фонетическая транскрипция (Phonetic Transcription) - KuzShevVI, Срд 11 Май 2011 13:13:00">Фонетическая транскрипция (Phonetic Transcription)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Употребление притяжательного падежа (Usage of Possessive Case)');highlightHack = null; return false;" title="Употребление притяжательного падежа (Usage of Possessive Case) - KuzShevVI, Чтв 14 Апр 2011 08:27:00">Употребление притяжательного падежа (Usage of Possessive Case)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Указательные местоимения (Demonstrative Pronouns)');highlightHack = null; return false;" title="Указательные местоимения (Demonstrative Pronouns) - KuzShevVI, Срд 11 Май 2011 22:29:00">Указательные местоимения (Demonstrative Pronouns)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Существительные с неправильными формами множественного числа (Irregular Plurals)');highlightHack = null; return false;" title="Существительные с неправильными формами множественного числа (Irregular Plurals) - KuzShevVI, Сбт 16 Апр 2011 19:09:00">Существительные с неправильными формами множественного числа (Irregular Plurals)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Статьи (Articles)');highlightHack = null; return false;" title="Статьи (Articles) - KuzShevVI, Вск 15 Май 2011 16:46:00">Статьи (Articles)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Словосочетание (The Phrase)');highlightHack = null; return false;" title="Словосочетание (The Phrase) - KuzShevVI, Вск 24 Апр 2011 08:56:00">Словосочетание (The Phrase)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Род имен существительных (The Gender of Nouns)');highlightHack = null; return false;" title="Род имен существительных (The Gender of Nouns) - KuzShevVI, Чтв 14 Апр 2011 08:23:00">Род имен существительных (The Gender of Nouns)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Притяжательные местоимения (Possessive Pronouns)');highlightHack = null; return false;" title="Притяжательные местоимения (Possessive Pronouns) - KuzShevVI, Сбт 14 Май 2011 17:10:00">Притяжательные местоимения (Possessive Pronouns)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Предложение (The Sentence)');highlightHack = null; return false;" title="Предложение (The Sentence) - KuzShevVI, Птн 22 Апр 2011 17:46:00">Предложение (The Sentence)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Падеж имен существительных (The Case of Nouns)');highlightHack = null; return false;" title="Падеж имен существительных (The Case of Nouns) - KuzShevVI, Чтв 12 Май 2011 20:38:00">Падеж имен существительных (The Case of Nouns)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Образование наречий (Formation of Adverbs)');highlightHack = null; return false;" title="Образование наречий (Formation of Adverbs) - KuzShevVI, Чтв 21 Апр 2011 11:41:00">Образование наречий (Formation of Adverbs)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Образование множественного числа (Formation of Plurals)');highlightHack = null; return false;" title="Образование множественного числа (Formation of Plurals) - KuzShevVI, Чтв 14 Апр 2011 08:19:00">Образование множественного числа (Formation of Plurals)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Множественное число иностранных слов (Plural of Foreign Words)');highlightHack = null; return false;" title="Множественное число иностранных слов (Plural of Foreign Words) - KuzShevVI, Сбт 16 Апр 2011 19:13:00">Множественное число иностранных слов (Plural of Foreign Words)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Классификация наречий (Classification of Adverbs)');highlightHack = null; return false;" title="Классификация наречий (Classification of Adverbs) - YourName, Пнд 21 Мар 2011 20:05:00">Классификация наречий (Classification of Adverbs)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Испанизмы в США');highlightHack = null; return false;" title="Испанизмы в США - YourName, Сбт 18 Дек 2010 13:28:00">Испанизмы в США</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Заметки');highlightHack = null; return false;" title="Заметки - YourName, Срд 30 Мар 2011 18:30:00">Заметки</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Двойной притяжательный падеж (The Double Possessive)');highlightHack = null; return false;" title="Двойной притяжательный падеж (The Double Possessive) - KuzShevVI, Чтв 14 Апр 2011 08:27:00">Двойной притяжательный падеж (The Double Possessive)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Галлицизмы в США');highlightHack = null; return false;" title="Галлицизмы в США - (unknown), Сбт 24 Апр 2010 14:00:00">Галлицизмы в США</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Возвратные местоимения (Reflexive pronouns)');highlightHack = null; return false;" title="Возвратные местоимения (Reflexive pronouns) - KuzShevVI, Чтв 14 Апр 2011 09:04:00">Возвратные местоимения (Reflexive pronouns)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Взаимные местоимения (Reciprocal Pronouns)');highlightHack = null; return false;" title="Взаимные местоимения (Reciprocal Pronouns) - KuzShevVI, Чтв 14 Апр 2011 08:29:00">Взаимные местоимения (Reciprocal Pronouns)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Бейсик-инглиш (Basic English)');highlightHack = null; return false;" title="Бейсик-инглиш (Basic English) - YourName, Сбт 20 Ноя 2010 10:18:00">Бейсик-инглиш (Basic English)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Артикль (The Article)');highlightHack = null; return false;" title="Артикль (The Article) - KuzShevVI, Чтв 12 Май 2011 19:37:00">Артикль (The Article)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Английский алфавит (The English Alphabet)');highlightHack = null; return false;" title="Английский алфавит (The English Alphabet) - KuzShevVI, Чтв 14 Апр 2011 08:05:00">Английский алфавит (The English Alphabet)</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Американский английский');highlightHack = null; return false;" title="Американский английский - KuzShevVI, Втр 04 Янв 2011 16:12:00">Американский английский</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'Американизмы');highlightHack = null; return false;" title="Американизмы - (unknown), Сбт 24 Апр 2010 07:53:00">Американизмы</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'some, any, no (их производные с body, one, thing), one, none');highlightHack = null; return false;" title="some, any, no (их производные с body, one, thing), one, none - KuzShevVI, Срд 11 Май 2011 18:13:00">some, any, no (их производные с body, one, thing), one, none</a></html>}}}
* {{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="if(config.options.chkSearchHighlight)	highlightHack=new RegExp('язык'.escapeRegExp(),'img');story.displayTiddler(null,'\x22and I\x22 и \x22and me\x22');highlightHack = null; return false;" title="&quot;and I&quot; и &quot;and me&quot; - KuzShevVI, Птн 15 Апр 2011 23:20:00">"and I" и "and me"</a></html>}}}
@@diplay:block;<html><input type="button" href="javascript:;" onclick="story.displayTiddlers(null,['Фонетика английского языка (English Phonetic)', 'Список глаголов-связок в английском языке (List of English copulae)', 'Советы для начинающих изучать английский язык (Hints for beginners on learning English)-Notes', 'Советы для начинающих изучать английский язык (Hints for beginners on learning English)', 'Канадский вариант английского языка', 'Диалекты английского языка (Dialects of English)', 'Грамматика английского языка (English Grammar)', 'Английский язык (English language)', 'Австралийский вариант английского языка', 'Число имен существительных (The Number of Nouns)', 'Части речи (Parts of Speech)', 'Фразовые глаголы (The Phrasal Verbs)', 'Фонология (Phonology)', 'Фонетическая транскрипция (Phonetic Transcription)', 'Употребление притяжательного падежа (Usage of Possessive Case)', 'Указательные местоимения (Demonstrative Pronouns)', 'Существительные с неправильными формами множественного числа (Irregular Plurals)', 'Статьи (Articles)', 'Словосочетание (The Phrase)', 'Род имен существительных (The Gender of Nouns)', 'Притяжательные местоимения (Possessive Pronouns)', 'Предложение (The Sentence)', 'Падеж имен существительных (The Case of Nouns)', 'Образование наречий (Formation of Adverbs)', 'Образование множественного числа (Formation of Plurals)', 'Множественное число иностранных слов (Plural of Foreign Words)', 'Классификация наречий (Classification of Adverbs)', 'Испанизмы в США', 'Заметки', 'Двойной притяжательный падеж (The Double Possessive)', 'Галлицизмы в США', 'Возвратные местоимения (Reflexive pronouns)', 'Взаимные местоимения (Reciprocal Pronouns)', 'Бейсик-инглиш (Basic English)', 'Артикль (The Article)', 'Английский алфавит (The English Alphabet)', 'Американский английский', 'Американизмы', 'some, any, no (их производные с body, one, thing), one, none', '"and I" и "and me"'],1);" accesskey="O" value="open all matching tiddlers"></html> <html><input type="button" href="javascript:;" onclick="discardSearchResults()" value="discard SearchResults"></html>@@

Учебник английского языка
EnGramm
http://engramm.tiddlyspot.com/
/***
|Name|SnapshotPluginInfo|
|Source|http://www.TiddlyTools.com/#SnapshotPlugin|
|Documentation|http://www.TiddlyTools.com/#SnapshotPluginInfo|
|Version|1.3.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|Documentation for SnapshotPlugin|
This plugin provides a macro as well as tiddler toolbar commands that creates a file or opens a new browser window containing the //rendered// HTML and CSS style definitions that are being displayed for selected elements of the current document.
!!!!!Usage:
<<<
As a macro embedded in tiddler content:
{{{
<<snapshot print label:text prompt:text id:elementID|here|viewer|story|all|ask>
}}}
where:
*''print'' //(optional)//<br>when present, causes the snapshot output to be directed to a new browser tab/window instead of saving it to a file.  In addition, the print dialog for that tab/window is automatically invoked.
*''label'' //(optional)//<br>is the text to be displayed for the command link generated by the macro
*''prompt'' //(optional)//<br>is the 'tool tip' message displayed when you mouseover the command link
*''id:...'' //(optional)//<br>specifies the document element to be captured, and can be one of:
**''elementID''<br>is a specific DOM element ID, such as "displayArea", "mainMenu", "contentWrapper", etc.
**''here''<br>the containing tiddler in which the macro (or toolbar command) occurs, including the tiddler title and subtitle (date/time/author) information.
**''viewer''<br>same as ''here'', but omits the tiddler title, subtitle and toolbar elements (i.e., it includes //only// the content of the tiddler)
**''story''<br>selects all currently displayed tiddlers (i.e., the 'story column')
**''all''<br>selects the entire document contents, including page header, main menu and sidebar displays
**''ask''<br>when the snapshot command link is clicked, a droplist is displayed so you can choose from several pre-defined elements: "current tiddler", "story column", or "entire document", or "DOM element ID..."  When DOM element ID is chosen, the droplist is refreshed to show the individual ID's for all currently rendered DOM elements (at least, the ones that have ID's).  For any given DOM element ID, only the portions of the document that are contained //within// the specified DOM element will be transcribed to the resulting snapshot or print output.  
//''NOTE: when no parameters are specified, the macro creates a snapshot file using the containing tiddler as the default element.'' (e.g., equivalent to {{{<<snapshot id:here>>}}}//

The snapshot/print functions can also be embedded as tiddler toolbar commands in [[ViewTemplate]]:
{{{
<span class='toolbar' macro='toolbar snapshotSave'></span>
<span class='toolbar' macro='toolbar snapshotPrint'></span>
}}}
* when invoked via toolbar commands, the "id:ask" option is automatically applied, and a droplist of elements to choose from is displayed.

Please note that, although the snapshot/print that is created using the HTML+CSS of the displayed content, ''there is NO javascript code'' written into the snapshot.  As a result, the snapshot only ''reproduces the //appearance// of the displayed content, allowing you to //view// or //print// the result'', but does not permit you to interact with it in other ways.

For example, even simple processing (such as mouseover highlighting) will not function from the snapshot.  You can't click a TiddlyLink to open other tiddlers, because A) there is no code that handles the click and B) there is no underlying 'storeArea' (and core code) to retrieve and render anything!  You also can't use ANY command links, since these also require javascript code (and the core) to operate. 
<<<
!!!!!Examples:
<<<
{{{<<snapshot>>}}}: <<snapshot>>
{{{<<snapshot id:mainMenu>>}}}: <<snapshot id:mainMenu>>
{{{<<snapshot print id:story>>}}}: <<snapshot print id:story>>
{{{<<snapshot print id:ask>>}}}: <<snapshot print id:ask>>
{{{<<snapshot print noCSS id:viewer>>}}}: <<snapshot print noCSS id:viewer>>
<<<
!!!!!Configuration
<<<
<<option chkSnapshotHTMLOnly>> output HTML only (omit CSS)
<<<
!!!!!Revisions
<<<
2009.10.12 1.3.0 added multi-file story snapshot
2009.09.25 1.2.1 in getSnap(), added META tag to set UTF-8 encoding for I18N support
2009.06.04 1.2.0 added handling in getSnap() so current form input values are shown in snapshots
2008.05.16 1.1.1 added try..catch around addEvent/removeEvent calls to avoid error in Opera
2008.04.28 1.1.0 removed 'viewerHTML' from 'ask' droplist and replaced with toggle for "output HTML only".  Removed 'noCSS' parameter and replaced with config.options.chkSnapshotHTMLOnly global option.  Added "select a tiddler..." to 'ask' droplist
2008.04.24 1.0.1 in saveSnap(), convert output from Unicode to UTF before passing to saveFile().  Fixes "unknown name" error in IE's file.Write() function.
2008.04.21 1.0.0 initial release - derived from [[NewDocumentPlugin]] with many improvements, including: "ask for ID" using droplist of available DOM elements, use "<base href=...>" for correctly resolving image references, wrap 'viewer only' output in class="tiddler viewer" for proper application of inherited CSS styles, snapshotSave and snapshotPrint tiddler toolbar command definitions, and more...

__Excerpted revisions from [[NewDocumentPlugin]] (obsolete)__
2008.04.20 1.8.0 added support for 'noCSS' and 'viewer' params for alternative snapshot output
2007.03.30 1.7.0 added support for "print" param as alternative for "snap".  When "print" is used, the filename is ignored and ouput is directed to another browser tab/window, where the print dialog is then automatically triggered.
2007.03.30 1.6.1 added support for "here" keyword for current tiddler elementID and "prompt:text" param for specifying tooltip text
2006.10.18 1.5.0 new optional param for 'snap'... specify alternative DOM element ID (default is still "contentWrapper").  Based on a suggestion from Xavier Verges.
2006.03.09 1.2.0 added special "snap" filter parameter to generate and write "snapshot" files containing static HTML+CSS for currently rendered document.
2006.02.03 1.0.0 Created.
<<<
[[StyleSheetShortcuts]]
[[EnGrammStyleSheet]]


#backstageButton a {background:none; color:[[ColorPalette::Foreground]]; border:none;}

.TiddlerNotes {background:#FFF; border:none;padding:3px;margin:5px;}
.TiddlerNotes.editor textarea{border:1px solid #04b;}

.cancelNotesButton, .editNotesButton, .saveNotesButton  {float:right; border:none; margin:0 0.25em; padding:0 0.25em;}
.cancelNotesButton, .editNotesButton, .saveNotesButton {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.cancelNotesButton:hover, .editNotesButton:hover, .saveNotesButton:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.cancelNotesButton:active, .editNotesButton:active, .saveNotesButton:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

#googleAdsensePanel {position:absolute;padding:8px; padding-bottom:2px; padding-top:1em;}


#mainMenu {color:#777; background:#f3f3f3;}
#mainMenu {width:11.1em; padding:0.3em 0.5em 0.5em 0.5em; font-size:1.1em;}

#mainMenu .button { display: block; text-align: left;
font-weight: bold;
background: [[ColorPalette::TertiaryPale]];
margin-right: -0.4em;
padding: 0 1px 1px 10px;
}
#mainMenu .button:hover{
color: #000;
border: solid 1px #000;
background: #ccc;
}
#mainMenu a:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryLight]];
outline-width: 1px; 
outline-style: solid;
outline-color:[[ColorPalette::Foreground]];
}

#mainMenu .sliderPanel .tiddlyLink{ display: block;
color:#000;
text-align: left;
border: 0;
background: [[ColorPalette::TertiaryPale]];
padding: 0 1px 1px 15px;
border-bottom: solid 1px #fff;

}
#mainMenu .sliderPanel .tiddlyLink:hover{
color: #000;
background: #ccc;
outline-width: 1px; 
outline-style: solid;
outline-color:[[ColorPalette::Foreground]];
}

/***Hide the title of a tiddler***/
/***.tiddler .title { display:none; }***/

/***Hide the date and the autor of a tiddler***/
/***.tiddler .subtitle { display:none; } ***/

/***Hide the tiddler tag display***/
/***.tagged { display:none; }***/

/***Scroll list of tags if it's too long***/
/***.popup { max-height:275px; min-height:auto; width: auto; overflow: auto; margin:auto;}***/

/*** Anything with the tag "Multicolumn" gets a new multi-column format ***/
/***div[tags~="Multicolumn"] .viewer {-moz-column-width:30em; -moz-column-gap:2em; padding-top: 0em;}***/
/*{{{*/
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 */
}
/*}}}*/
/***
|Name|StyleSheetShortcuts|
|Source|http://www.TiddlyTools.com/#StyleSheetShortcuts|
|Version||
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|CSS|
|Description|'convenience' classes for common formatting, alignment, boxes, tables, etc.|

These 'style tweaks' can be easily included in other stylesheet tiddler so they can share a baseline look-and-feel that can then be customized to create a wide variety of 'flavors'.
***/
/*{{{*/

/* text alignments */
.left
	{ display:block;text-align:left; }
.center
	{ display:block;text-align:center; }
.center table
	{ margin:auto !important; }
.right	
	{ display:block;text-align:right; }
.justify
	{ display:block;text-align:justify; }
.indent
	{ display:block;margin:0;padding:0;border:0;margin-left:2em; }
.floatleft
	{ float:left; }
.floatright
	{ float:right; }
.valignTop, .valignTop table, .valignTop tbody, .valignTop th, .valignTop tr, .valignTop td
	{ vertical-align:top; }
.valignBottom, .valignBottom table, .valignBottom tbody, .valignBottom th, .valignBottom tr, .valignBottom td
	{ vertical-align:bottom; }
.clear
	{ clear:both; }
.wrap
	{ white-space:normal; }
.nowrap
	{ white-space:nowrap; }
.hidden
	{ display:none; }
.show
	{ display:inline !important; }
.span
	{ display:span; }
.block
	{ display:block; }
.relative
	{ position:relative; }
.absolute
	{ position:absolute; }

/* font sizes */
.big
	{ font-size:14pt;line-height:120% }
.medium
	{ font-size:12pt;line-height:120% }
.normal
	{ font-size:9pt;line-height:120% }
.small
	{ font-size:8pt;line-height:120% }
.fine
	{ font-size:7pt;line-height:120% }
.tiny
	{ font-size:6pt;line-height:120% }
.larger
	{ font-size:120%; }
.smaller
	{ font-size:80%; }

/* font styles */
.bold
	{ font-weight:bold; }
.italic
	{ font-style:italic; }
.underline
	{ text-decoration:underline; }

/* plain list items (no bullets or indent) */
.nobullets li { list-style-type: none; margin-left:-2em; }

/* vertical tabsets - courtesy of Tobias Beer */
.vTabs .tabset {float:left;display:block;padding:0px;margin-top:.5em;min-width:20%;}
.vTabs .tabset .tab {display:block;text-align:right;padding:2px 3px 2px 7px; margin:0 1px 1px 0;}
.vTabs .tabContents {margin-left:20%;max-width:80%;padding:5px;}
.vTabs .tabContents .tabContents {border:none; background:transparent;}

/* multi-column tiddler content (not supported in Internet Explorer) */
.twocolumns { display:block;
	-moz-column-count:2; -moz-column-gap:1em; -moz-column-width:50%; /* FireFox */
	-webkit-column-count:2; -webkit-column-gap:1em; -webkit-column-width:50%; /* Safari */
	column-count:2; column-gap:1em; column-width:50%; /* Opera */
}
.threecolumns { display:block;
	-moz-column-count:3; -moz-column-gap:1em; -moz-column-width:33%; /* FireFox */
	-webkit-column-count:3; -webkit-column-gap:1em; -webkit-column-width:33%; /* Safari */
	column-count:3; column-gap:1em; column-width:33%; /* Opera */
}
.fourcolumns { display:block;
	-moz-column-count:4; -moz-column-gap:1em; -moz-column-width:25%; /* FireFox */
	-webkit-column-count:4; -webkit-column-gap:1em; -webkit-column-width:25%; /* Safari */
	column-count:4; column-gap:1em; column-width:25%; /* Opera */
}

/* page breaks */
.breakbefore { page-break-before:always; }
.breakafter { page-break-before:always; } 

/* show/hide browser-specific content for InternetExplorer vs. non-IE ("moz") browsers */
*[class="ieOnly"]
	{ display:none; } /* hide in moz (uses CSS selector) */
* html .mozOnly, *:first-child+html .mozOnly
	{ display: none; } /* hide in IE (uses IE6/IE7 CSS hacks) */

/* borderless tables */
.borderless, .borderless table, .borderless td, .borderless tr, .borderless th, .borderless tbody
	{ border:0 !important; margin:0 !important; padding:0 !important; }
.widetable, .widetable table
	{ width:100%; }

/* thumbnail images (fixed-sized scaled images) */
.thumbnail img { height:5em !important; }

/* stretchable images (auto-size to fit tiddler) */
.stretch img { width:95%; }

/* grouped content */
.outline
	{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; }
.menubox
	{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#fff; color:#000; }
.menubox .button, .menubox .tiddlyLinkExisting, .menubox .tiddlyLinkNonExisting
	{ color:#009 !important; }
.groupbox
	{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#ffe; color:#000; }
.groupbox a, .groupbox .button, .groupbox .tiddlyLinkExisting, .groupbox .tiddlyLinkNonExisting
	{ color:#009 !important; }
.groupbox code
	{ color:#333 !important; }
.borderleft
	{ margin:0;padding:0;border:0;margin-left:1em; border-left:1px dotted; padding-left:.5em; }
.borderright
	{ margin:0;padding:0;border:0;margin-right:1em; border-right:1px dotted; padding-right:.5em; }
.borderbottom
	{ margin:0;padding:1px 0;border:0;border-bottom:1px dotted; margin-bottom:1px; padding-bottom:1px; }
.bordertop
	{ margin:0;padding:0;border:0;border-top:1px dotted; margin-top:1px; padding-top:1px; }

/* scrolled content */
.scrollbars { overflow:auto; }
.height10em { height:10em; }
.height15em { height:15em; }
.height20em { height:20em; }
.height25em { height:25em; }
.height30em { height:30em; }
.height35em { height:35em; }
.height40em { height:40em; }

/* compact form */
.smallform
	{ white-space:nowrap; }
.smallform input, .smallform textarea, .smallform button, .smallform checkbox, .smallform radio, .smallform select
	{ font-size:8pt; }

/* stretchable edit fields and textareas (auto-size to fit tiddler) */
.stretch input { width:99%; }
.stretch textarea { width:99%; }

/* compact input fields (limited to a few characters for entering percentages and other small values) */
.onechar input   { width:1em; }
.twochar input   { width:2em; }
.threechar input { width:3em; }
.fourchar input  { width:4em; }
.fivechar input  { width:5em; }

/* text colors */
.white { color:#fff !important }
.gray  { color:#999 !important }
.black { color:#000 !important }
.red   { color:#f66 !important }
.green { color:#0c0 !important }
.blue  { color:#99f !important }

/* rollover highlighting */
.mouseover 
	{color:[[ColorPalette::TertiaryLight]] !important;}
.mouseover a
	{color:[[ColorPalette::TertiaryLight]] !important;}
.selected .mouseover
	{color:[[ColorPalette::Foreground]] !important;}
.selected .mouseover .button, .selected .mouseover a
	{color:[[ColorPalette::PrimaryDark]] !important;}

/* rollover zoom text */
.zoomover
	{ font-size:80% !important; }
.selected .zoomover
	{ font-size:100% !important; }

/* [[ColorPalette]] text colors */
.Background	{ color:[[ColorPalette::Background]];	 }
.Foreground	{ color:[[ColorPalette::Foreground]];	 }
.PrimaryPale	{ color:[[ColorPalette::PrimaryPale]];	 }
.PrimaryLight	{ color:[[ColorPalette::PrimaryLight]];	 }
.PrimaryMid	{ color:[[ColorPalette::PrimaryMid]];	 }
.PrimaryDark	{ color:[[ColorPalette::PrimaryDark]];	 }
.SecondaryPale	{ color:[[ColorPalette::SecondaryPale]]; }
.SecondaryLight	{ color:[[ColorPalette::SecondaryLight]];}
.SecondaryMid	{ color:[[ColorPalette::SecondaryMid]];	 }
.SecondaryDark	{ color:[[ColorPalette::SecondaryDark]]; }
.TertiaryPale	{ color:[[ColorPalette::TertiaryPale]];	 }
.TertiaryLight	{ color:[[ColorPalette::TertiaryLight]]; }
.TertiaryMid	{ color:[[ColorPalette::TertiaryMid]];	 }
.TertiaryDark	{ color:[[ColorPalette::TertiaryDark]];	 }
.Error		{ color:[[ColorPalette::Error]];	 }

/* [[ColorPalette]] background colors */
.BGBackground	  { background-color:[[ColorPalette::Background]];	}
.BGForeground	  { background-color:[[ColorPalette::Foreground]];	}
.BGPrimaryPale	  { background-color:[[ColorPalette::PrimaryPale]];	}
.BGPrimaryLight	  { background-color:[[ColorPalette::PrimaryLight]];	}
.BGPrimaryMid	  { background-color:[[ColorPalette::PrimaryMid]];	}
.BGPrimaryDark	  { background-color:[[ColorPalette::PrimaryDark]];	}
.BGSecondaryPale  { background-color:[[ColorPalette::SecondaryPale]]; 	}
.BGSecondaryLight { background-color:[[ColorPalette::SecondaryLight]];	}
.BGSecondaryMid	  { background-color:[[ColorPalette::SecondaryMid]];	}
.BGSecondaryDark  { background-color:[[ColorPalette::SecondaryDark]]; 	}
.BGTertiaryPale	  { background-color:[[ColorPalette::TertiaryPale]];	}
.BGTertiaryLight  { background-color:[[ColorPalette::TertiaryLight]]; 	}
.BGTertiaryMid	  { background-color:[[ColorPalette::TertiaryMid]];	}
.BGTertiaryDark	  { background-color:[[ColorPalette::TertiaryDark]];	}
.BGError	  { background-color:[[ColorPalette::Error]];	 	}
/*}}}*/
/*{{{*/
#tiddlersBar .button {border:0}
#tiddlersBar .tab {white-space:nowrap}
#tiddlersBar {padding : 1em 0.5em 2px 0.5em}
.tabUnselected .tabButton, .tabSelected .tabButton {padding : 0 2px 0 2px; margin: 0 0 0 4px;}
.tiddler, .tabContents {border:1px [[ColorPalette::TertiaryPale]] solid;}
/*}}}*/
<<list orphans>>
<<allTags excludeLists>>
|!Markup|!Explanation|
| {{{|}}} |Column Seperator |
| {{{!}}} |Heading (Row or Column) |
| {{{>}}} |Column Span |
| {{{~}}} |Row Span |
| {{{|Left |}}} |Left Align |
| {{{| Right|}}} |Right Align|
| {{{| Center |}}} |Center Align |
| {{{|Caption|c}}} |Table Caption (Can be at top or bottom)|
| {{{|Header|h}}} |Marks the row as being a header row (will be wrapped with a {{{<thead>}}} and so all entries are automatically formatted as per {{{|!}}} cells)|
| {{{|Footer|f}}} |Marks the row as being a footer row (will be wrapped with a {{{<tfoot>}}}, no special formatting is pre-defined for this but can be added to your own CSS)|
| {{{|CSSclass|k}}} |Applies a CSS class to the table to allow additional formatting (NB: only works if no whitespace after the k)|
|>|To have a table with no borders at all. Use {{{|noBorder|k}}} with the CSS (in your StyleSheet tiddler):<br />{{{ .noBorder,.noBorder td,.noBorder th,.noBorder tr{border:0} }}}|
|>|!Sample Table|
|>|{{{|table caption|c}}}<br />{{{|header|header|h}}}<br />{{{|text|more text|}}}<br />{{{|!heading|!heading|}}}<br />{{{|>|colspan|}}}<br />{{{|rowspan|left align |}}}<br />{{{|~| center |}}}<br />{{{|bgcolor(green):green| right|}}}<br />{{{|footer|footer|f}}} |
|>|<<tiddler ./tblShow>>|

!Notes
You can use the custom CSS formatter in combination with headers and lists to allow new lines within the entry. e.g.:
{{{
#{{block{
Bullet 1
Some text in the same bullet
(Note that "block" can be anything, it is the formatters CSS class name)
 }}}
# Bullet 2 
}}}
#{{block{
Bullet 1
Some text in the same bullet
}}}
# Bullet 2 

(Julian Knight, 2006-05-11)
<part atEg hidden>
{{{
This is before the indented text
@@display:block;margin-left:2em;This text will be indented...
...and can even span across several lines...

...or even include blank lines.
@@This is after the indented text 
}}}
This is before the indented text
@@display:block;margin-left:2em;This text will be indented...
...and can even span across several lines...

...or even include blank lines.
@@This is after the indented text 
</part>
<part tblMarkup hidden>
{{{
|table caption|c
|header|header|h
|text|more text|
|!heading|!heading|
|>|colspan|
|rowspan|left align |
|~| center |
|bgcolor(green):green| right|
|footer|footer|f
}}}
</part>
<part tblShow hidden>
|table caption|c
|header|header|h
|text|more text|
|!heading|!heading|
|>|colspan|
|rowspan|left align |
|~| center |
|bgcolor(green):green| right|
|footer|footer|f
</part>
/***
|''Name:''|TiddlerNotesPlugin|
|''Description:''|Add notes to tiddlers without modifying the original content|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#TiddlerNotesPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.1|
|''Date:''|26/10/07|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|

!!Concept:
*The TiddlerNotesPlugin allows you to add notes to tiddlers, without needing to edit the original tiddler. This means that your original content will remain unaltered, and if you update it in the future, you won’t lose your notes. Notes are stored in separate tiddlers, but can be viewed and edited from within the original tiddler.
*For a tiddler titled "~MySlide", the notes are by default saved in a tiddler titled "~MySlide-Notes" and is given a tag of "Notes". The suffix and tags of the notes tiddlers are customizable. You can have one or multiple notes per tiddlers. So it is possible to have for example, teacher's notes and student's notes in the same file.
*Notes can be configured to start off blank, or pre-filled with the contents of the original tiddler.

!!Usage:
*{{{<<notes>>}}} is the simplest usage form.
* additional optional parameters include:
**{{{heading:}}} the heading to use for the notes box
**{{{tag:}}} the tag to be given to the notes tiddler
**{{{suffix:}}} the suffix to be used when naming the notes tiddler
* a full macro call could look like: {{{<<notes heading:"My Notes" tag:"NoteTiddlers" suffix:"Comments">>}}}
* To avoid adding {{{<<notes>>}}} to each tiddler you want notes for, you could add the macro call to the ViewTemplate
** below the line {{{<div class='viewer' macro='view text wikified'></div>}}} add the following line: <br> {{{<div class='viewer' macro='notes'></div>}}}
** Used in combination with the ~HideWhenPlugin or ~PublisherPlugin, you could have notes be shown only for tiddlers with specific tags. The ~PublisherPlugin would allow you for instance to only have the ~TeachersNotes visible to the teacher, and the ~StudentsNotes for the same tiddler visible to the Student.

!!Configuration
*<<option chkPrefillNotes>> Enable to pre-fill notes with the original tiddler's contents

!!Demo:
* [[MySlide]]

***/
// /%
//!BEGIN-PLUGIN-CODE

if (!config.options.chkPrefillNotes)
	config.options.chkPrefillNotes = false;
	
function createTiddlyElement(theParent,theElement,theID,theClass,theText,attribs)
{
	var e = document.createElement(theElement);
	if(theClass != null)
		e.className = theClass;
	if(theID != null)
		e.setAttribute("id",theID);
	if(theText != null)
		e.appendChild(document.createTextNode(theText));
	if(attribs){
		for(var n in attribs){
			e.setAttribute(n,attribs[n]);
		}
	}
	if(theParent != null)
		theParent.appendChild(e);
	return e;
}

function createTiddlyButton(theParent,theText,theTooltip,theAction,theClass,theId,theAccessKey,attribs)
{
	var theButton = document.createElement("a");
	if(theAction) {
		theButton.onclick = theAction;
		theButton.setAttribute("href","javascript:;");
	}
	if(theTooltip)
		theButton.setAttribute("title",theTooltip);
	if(theText)
		theButton.appendChild(document.createTextNode(theText));
	if(theClass)
		theButton.className = theClass;
	else
		theButton.className = "button";
	if(theId)
		theButton.id = theId;
	if(attribs){
		for(var n in attribs){
			e.setAttribute(n,attribs[n]);
		}
	}
	if(theParent)
		theParent.appendChild(theButton);
	if(theAccessKey)
		theButton.setAttribute("accessKey",theAccessKey);
	return theButton;
}

config.macros.notes={
	
	cancelWarning: "Are you sure you want to abandon changes to your notes for '%0'?",
	editLabel: "edit notes",
	editTitle: "double click to edit",
	saveLabel: "save notes",
	saveTitle: "double click to save",
	cancelLabel: "cancel",
	heading: "Notes",
	suffix: "Notes",
	tag: "Notes",
	
	saveNotes: function(ev){
		e = ev? ev : window.event;
		var theTarget = resolveTarget(e);
		if (theTarget.nodeName.toLowerCase() == "textarea")
			return false;
		var title = story.findContainingTiddler(theTarget).getAttribute("tiddler");
		story.setDirty(title,false);
		var box = document.getElementById("notesContainer"+title);
		var textarea = document.getElementById("notesTextArea"+title);
		if(textarea.getAttribute("oldText")!=textarea.value && !hasClass(theTarget,"cancelNotesButton")){
			var suffix = box.getAttribute("suffix");
			var t = store.getTiddler(title+"-"+suffix);
			store.saveTiddler(title+"-"+suffix,title+"-"+suffix,textarea.value,config.options.txtUserName,new Date(),t?t.tags:box.getAttribute("tag"),t?t.fields:{});
		}
		story.refreshTiddler(title,1,true);
		autoSaveChanges(true);
		return false;
	},
	
	editNotes: function(box,tiddler){
		removeChildren(box);
		story.setDirty(tiddler,true);
		box.title = this.saveTitle;
		box.ondblclick = this.saveNotes;
		createTiddlyButton(box,this.cancelLabel,this.cancelLabel,this.saveNotes,"cancelNotesButton");
		createTiddlyButton(box,this.saveLabel,this.saveLabel,this.saveNotes,"saveNotesButton");
		wikify("!!"+box.getAttribute("heading")+"\n",box);
		addClass(box,"editor");
		var wrapper1 = createTiddlyElement(null,"fieldset",null,"fieldsetFix");
		var wrapper2 = createTiddlyElement(wrapper1,"div");
		var e = createTiddlyElement(wrapper2,"textarea","notesTextArea"+tiddler);
		var v = store.getValue(tiddler+"-"+box.getAttribute("suffix"),"text");
		if(!v) 
			v = config.options.chkPrefillNotes? store.getValue(tiddler,"text"):'';
		e.value = v;
		e.setAttribute("oldText",v);
		var rows = 10;
		var lines = v.match(/\n/mg);
		var maxLines = Math.max(parseInt(config.options.txtMaxEditRows),5);
		if(lines != null && lines.length > rows)
			rows = lines.length + 5;
		rows = Math.min(rows,maxLines);
		e.setAttribute("rows",rows);
		box.appendChild(wrapper1);
	},
	
	editNotesButtonOnclick: function(e){
		var title = story.findContainingTiddler(this).getAttribute("tiddler");
		var box = document.getElementById("notesContainer"+title);
		config.macros.notes.editNotes(box,title);
		return false;
	},
	
	ondblclick : function(ev){
		e = ev? ev : window.event;
		var theTarget = resolveTarget(e);
		var title = story.findContainingTiddler(theTarget).getAttribute("tiddler");
		var box = document.getElementById("notesContainer"+title);
		config.macros.notes.editNotes(box,title);
		e.cancelBubble = true;
		if(e.stopPropagation) e.stopPropagation();
		return false;
	},
	
	handler : function(place,macroName,params,wikifier,paramString,tiddler){
		
		params = paramString.parseParams("anon",null,true,false,false);
		var heading = getParam(params,"heading",this.heading);
		var tag = getParam(params,"tag",this.tag);
		var suffix = getParam(params,"suffix",this.suffix);
		var box = createTiddlyElement(place,"div","notesContainer"+tiddler.title,"TiddlerNotes",null,{"source":tiddler.title,params:paramString,heading:heading,tag:tag,suffix:suffix});
		createTiddlyButton(box,this.editLabel,this.editLabel,this.editNotesButtonOnclick,"editNotesButton");
		wikify("!!"+heading+"\n",box);
		box.title=this.editTitle;
		box.ondblclick = this.ondblclick;
		wikify("<<tiddler [["+tiddler.title+"-"+suffix+"]]>>",box);
	}		
};

Story.prototype.old_notes_closeTiddler = Story.prototype.closeTiddler;
Story.prototype.closeTiddler = function(title,animate,unused){
	if(story.isDirty(title)) {
		if(!confirm(config.macros.notes.cancelWarning.format([title])))
			return false;
	}
	return this.old_notes_closeTiddler.apply(this,arguments);
}

setStylesheet(".TiddlerNotes {\n"+ " background:#eee;\n"+ " border:1px solid #ccc;\n"+ " padding:3px;\n"+ " margin:15px;\n"+ "}\n"+ "\n"+ ".cancelNotesButton,.editNotesButton, .saveNotesButton {\n"+ " float:right;\n"+ " border:1px solid #ccc;\n"+ " padding:2px 5px;\n"+ "}\n"+ "\n"+ ".saveNotesButton{\n"+ " margin-right:0.5em;\n"+ "}\n"+ "\n"+ ".TiddlerNotes.editor textarea{\n"+ " border:1px solid #ccc;\n"+ "}","NotesPluginStyles");
//!END-PLUGIN-CODE
// %/
/***
|''Name:''|TiddlersBarPlugin|
|''Description:''|A bar to switch between tiddlers through tabs (like browser tabs bar).|
|''Version:''|1.2.5|
|''Date:''|Jan 18,2008|
|''Source:''|http://engramm.tiddlyspot.com/#TiddlersBarPlugin|
|''Author:''|Pascal Collin|
|''License:''|[[BSD open source license|License]]|
|''~CoreVersion:''|2.1.0|
|''Browser:''|Firefox 2.0; InternetExplorer 6.0, others|
!Demos
On [[homepage|http://visualtw.ouvaton.org/VisualTW.html]], open several tiddlers to use the tabs bar.
!Installation
#import this tiddler from [[homepage|http://visualtw.ouvaton.org/VisualTW.html]] (tagged as systemConfig)
#save and reload
#''if you're using a custom [[PageTemplate]]'', add {{{<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>}}} before {{{<div id='tiddlerDisplay'></div>}}}
#optionally, adjust StyleSheetTiddlersBar
!Tips
*Doubleclick on the tiddlers bar (where there is no tab) create a new tiddler.
*Tabs include a button to close {{{x}}} or save {{{!}}} their tiddler.
*By default, click on the current tab close all others tiddlers.
!Configuration options 
<<option chkDisableTabsBar>> Disable the tabs bar (to print, by example).
<<option chkHideTabsBarWhenSingleTab >> Automatically hide the tabs bar when only one tiddler is displayed. 
<<option txtSelectedTiddlerTabButton>> ''selected'' tab command button.
<<option txtPreviousTabKey>> previous tab access key.
<<option txtNextTabKey>> next tab access key.
!Code
***/
//{{{
config.options.chkDisableTabsBar = config.options.chkDisableTabsBar ? config.options.chkDisableTabsBar : false;
config.options.chkHideTabsBarWhenSingleTab  = config.options.chkHideTabsBarWhenSingleTab  ? config.options.chkHideTabsBarWhenSingleTab  : false;
config.options.txtSelectedTiddlerTabButton = config.options.txtSelectedTiddlerTabButton ? config.options.txtSelectedTiddlerTabButton : "closeOthers";
config.options.txtPreviousTabKey = config.options.txtPreviousTabKey ? config.options.txtPreviousTabKey : "";
config.options.txtNextTabKey = config.options.txtNextTabKey ? config.options.txtNextTabKey : "";
config.macros.tiddlersBar = {
	tooltip : "see ",
	tooltipClose : "click here to close this tab",
	tooltipSave : "click here to save this tab",
	promptRename : "Enter tiddler new name",
	currentTiddler : "",
	previousState : false,
	previousKey : config.options.txtPreviousTabKey,
	nextKey : config.options.txtNextTabKey,	
	tabsAnimationSource : null, //use document.getElementById("tiddlerDisplay") if you need animation on tab switching.
	handler: function(place,macroName,params) {
		var previous = null;
		if (config.macros.tiddlersBar.isShown())
			story.forEachTiddler(function(title,e){
				if (title==config.macros.tiddlersBar.currentTiddler){
					var d = createTiddlyElement(null,"span",null,"tab tabSelected");
					config.macros.tiddlersBar.createActiveTabButton(d,title);
					if (previous && config.macros.tiddlersBar.previousKey) previous.setAttribute("accessKey",config.macros.tiddlersBar.nextKey);
					previous = "active";
				}
				else {
					var d = createTiddlyElement(place,"span",null,"tab tabUnselected");
					var btn = createTiddlyButton(d,title,config.macros.tiddlersBar.tooltip + title,config.macros.tiddlersBar.onSelectTab);
					btn.setAttribute("tiddler", title);
					if (previous=="active" && config.macros.tiddlersBar.nextKey) btn.setAttribute("accessKey",config.macros.tiddlersBar.previousKey);
					previous=btn;
				}
				var isDirty =story.isDirty(title);
				var c = createTiddlyButton(d,isDirty ?"!":"x",isDirty?config.macros.tiddlersBar.tooltipSave:config.macros.tiddlersBar.tooltipClose, isDirty ? config.macros.tiddlersBar.onTabSave : config.macros.tiddlersBar.onTabClose,"tabButton");
				c.setAttribute("tiddler", title);
				if (place.childNodes) {
					place.insertBefore(document.createTextNode(" "),place.firstChild); // to allow break line here when many tiddlers are open
					place.insertBefore(d,place.firstChild); 
				}
				else place.appendChild(d);
			})
	}, 
	refresh: function(place,params){
		removeChildren(place);
		config.macros.tiddlersBar.handler(place,"tiddlersBar",params);
		if (config.macros.tiddlersBar.previousState!=config.macros.tiddlersBar.isShown()) {
			story.refreshAllTiddlers();
			if (config.macros.tiddlersBar.previousState) story.forEachTiddler(function(t,e){e.style.display="";});
			config.macros.tiddlersBar.previousState = !config.macros.tiddlersBar.previousState;
		}
	},
	isShown : function(){
		if (config.options.chkDisableTabsBar) return false;
		if (!config.options.chkHideTabsBarWhenSingleTab) return true;
		var cpt=0;
		story.forEachTiddler(function(){cpt++});
		return (cpt>1);
	},
	selectNextTab : function(){  //used when the current tab is closed (to select another tab)
		var previous="";
		story.forEachTiddler(function(title){
			if (!config.macros.tiddlersBar.currentTiddler) {
				story.displayTiddler(null,title);
				return;
			}
			if (title==config.macros.tiddlersBar.currentTiddler) {
				if (previous) {
					story.displayTiddler(null,previous);
					return;
				}
				else config.macros.tiddlersBar.currentTiddler=""; 	// so next tab will be selected
			}
			else previous=title;
			});		
	},
	onSelectTab : function(e){
		var t = this.getAttribute("tiddler");
		if (t) story.displayTiddler(null,t);
		return false;
	},
	onTabClose : function(e){
		var t = this.getAttribute("tiddler");
		if (t) {
			if(story.hasChanges(t) && !readOnly) {
				if(!confirm(config.commands.cancelTiddler.warning.format([t])))
				return false;
			}
			story.closeTiddler(t);
		}
		return false;
	},
	onTabSave : function(e) {
		var t = this.getAttribute("tiddler");
		if (!e) e=window.event;
		if (t) config.commands.saveTiddler.handler(e,null,t);
		return false;
	},
	onSelectedTabButtonClick : function(event,src,title) {
		var t = this.getAttribute("tiddler");
		if (!event) event=window.event;
		if (t && config.options.txtSelectedTiddlerTabButton && config.commands[config.options.txtSelectedTiddlerTabButton])
			config.commands[config.options.txtSelectedTiddlerTabButton].handler(event, src, t);
		return false;
	},
	onTiddlersBarAction: function(event) {
		var source = event.target ? event.target.id : event.srcElement.id; // FF uses target and IE uses srcElement;
		if (source=="tiddlersBar") story.displayTiddler(null,'New Tiddler',DEFAULT_EDIT_TEMPLATE,false,null,null);
	},
	createActiveTabButton : function(place,title) {
		if (config.options.txtSelectedTiddlerTabButton && config.commands[config.options.txtSelectedTiddlerTabButton]) {
			var btn = createTiddlyButton(place, title, config.commands[config.options.txtSelectedTiddlerTabButton].tooltip ,config.macros.tiddlersBar.onSelectedTabButtonClick);
			btn.setAttribute("tiddler", title);
		}
		else
			createTiddlyText(place,title);
	}
}

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

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

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

var coreRefreshPageTemplate = coreRefreshPageTemplate ? coreRefreshPageTemplate : refreshPageTemplate;
refreshPageTemplate = function(title) {
	coreRefreshPageTemplate(title);
	if (config.macros.tiddlersBar) config.macros.tiddlersBar.refresh(document.getElementById("tiddlersBar"));
}



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

config.refreshers.none = function(){return true;}
config.shadowTiddlers.PageTemplate=config.shadowTiddlers.PageTemplate.replace(/<div id='tiddlerDisplay'><\/div>/m,"<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>\n<div id='tiddlerDisplay'></div>");

//}}}
[[Formatting]] [[Configuration]]
|~ViewToolbar|closeTiddler closeOthers copyTiddler editTiddler > fields syncing permalink references jump|
|~EditToolbar|+saveTiddler -cancelTiddler copyTiddler deleteTiddler toggleQuickEdit|
<<closeAll>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>>
/***
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 = 'engramm';

// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = true;
// window.readOnly = true; // make sure of it (for tw 2.2)
// window.showBackstage = false; // 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")

});
//}}}
<<upload http://engramm.tiddlyspot.com/store.cgi index.html . .  engramm>><html><a href='http://engramm.tiddlyspot.com/download' class='button'>download</a></html>
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 15/05/2011 17:23:06 | KuzShevVI | [[engramm.html|file:///home/v/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%81%D1%82%D0%BE%D0%BB/engramm.html]] | [[store.cgi|http://engramm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://engramm.tiddlyspot.com/index.html]] | . | ok |
| 18/05/2011 14:06:42 | KuzShevVI | [[engramm.html|file:///home/v/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%81%D1%82%D0%BE%D0%BB/empty/publication/engramm.html]] | [[store.cgi|http://engramm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://engramm.tiddlyspot.com/index.html]] | . | ok |
| 11/07/2011 10:23:48 | KuzShevVI | [[engramm.html|file:///home/v/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%81%D1%82%D0%BE%D0%BB/empty/publication/engramm.html]] | [[|file:///home/v/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%81%D1%82%D0%BE%D0%BB/empty/publication/]] | . | [[engramm.html | file:///home/v/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%81%D1%82%D0%BE%D0%BB/empty/publication/engramm.html]] |  | failed |
| 11/07/2011 10:24:27 | KuzShevVI | [[engramm.html|file:///home/v/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%81%D1%82%D0%BE%D0%BB/empty/publication/engramm.html]] | [[|file:///home/v/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%81%D1%82%D0%BE%D0%BB/empty/publication/]] | . | [[engramm.html | file:///home/v/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%81%D1%82%D0%BE%D0%BB/empty/publication/engramm.html]] |  | failed |
| 11/07/2011 10:25:11 | KuzShevVI | [[engramm.html|file:///home/v/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%81%D1%82%D0%BE%D0%BB/empty/publication/engramm.html]] | [[store.cgi|http://engramm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://engramm.tiddlyspot.com/index.html]] | . | failed |
| 11/07/2011 10:26:17 | KuzShevVI | [[engramm.html|file:///home/v/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%81%D1%82%D0%BE%D0%BB/empty/publication/engramm.html]] | [[store.cgi|http://engramm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://engramm.tiddlyspot.com/index.html]] | . | failed |
| 11/07/2011 10:27:13 | KuzShevVI | [[engramm.html|file:///home/v/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%81%D1%82%D0%BE%D0%BB/empty/publication/engramm.html]] | [[store.cgi|http://engramm.tiddlyspot.com/store.cgi]] | . | [[index.html | http://engramm.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");


//}}}

<!--{{{-->
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></span></div>
<div class='title' macro='view title'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></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='tiddlerNotes' macro='notes'></div>
<!--}}}-->
''all'' [ɔ:l], ''each'' [i:tʃ];
''every'' ['evrɪ], ''everybody'' ['evrɪbɔdɪ], ''everyone'' ['evrɪwʌn], ''everything'' ['evrɪθɪŋ];

!!Употребление местоимения "all"
Местоимение ''all'' может выполнять роль [[определителя|Определяющее слово (The Determiner)]] и [[существительного|Существительное (The Noun)]]:

Местоимение ''all'' употребляется как определитель к существительному или личному местоимению, со значением:
* ''все'' с исчисляемыми существительными во множественном числе 
* и со значением ''весь'', ''вся'', ''все'' с неисчисляемыми существительными.
Определенный артикль ''the''  (если нужен)  как и притяжательные и указательные местоимения ставятся после ''all'':
: //@@color:#900;''All'' plants need water.@@ - Все растения нуждаются в воде.
@@color:#900;''All'' the plants need much sun.@@ - Все эти растения нуждаются в большом количестве солнечного света.
@@color:#900;''All'' my friends like to dance.@@ - Все мои друзья любят танцевать.//
В функции  определения к личным местоимениям (''we'', ''you'', ''they'') местоимение ''all'' ставится после определяемого местоимения;
: //@@color:#900;__We__ ''all'' know him.@@ - Мы все знаем его.
@@color:#900;__They__ ''all'' went there.@@ - Они все пошли туда.//
Если в предложении используется вспомогательный или модальный глагол то местоимение ''all'' ставится после него:
: //@@color:#900;You __must__ ''all'' go there.@@ - Вы все должны пойти туда.
@@color:#900;We __are__ ''all'' glad to see you.@@ - Мы все рады видеть вас.
@@color:#900;We __have__ ''all'' read the book.@@ - Мы все читали эту книгу.//
Перед исчисляемыми существительными в единственном числе вместо ''all'' как правило употребляться слова ''whole'' [həul] или ''entire'' [ɪn'taɪə] в значении ''весь'', ''целый'':
: //@@color:#900;The ''whole'' world knows this famous writer.@@ - Весь  мир знает этого знаменитого писателя.
@@color:#900;The ''entire'' world knows this famous writer.@@ - ...
@@color:#900;''All'' the world knows this famous writer.@@ - ...//
Слово ''entire'' имеет более официальный оттенок и может звучать не к месту со словами используемые в быту:
: //@@color:#900;Do you want to eat that ''whole'' pizza?@@ - Ты хочешь съесть всю эту пиццу?//
В данном случаи использование прилагательного ''entire'' вместо ''whole'' будет не совсем к месту.

Прилагательное ''whole'' может употребляться c предлогом ''of'', прилагательное ''entire'' в подобной конструкции с ''of'' не употребляется:
* ''all'' the morning = ''all'' morning = the ''whole'' morning = the ''whole of'' the morning = the ''entire'' morning - всё утро

Выполняя функцию существительного ''all'' употребляется со значением ''все'', ''всё'' (согласуется с глаголом в единственном числе или во множественном числе в зависимости от смысла):
: //@@color:#900;I want to know ''all'' about her.@@ - Я хочу знать всё о ней.
@@color:#900;''All of'' the plants need much sun.@@ - Все эти растения нуждаются в большом количестве солнечного света.
@@color:#900;''All of'' my friends like to dance.@@ - Все мои друзья любят танцевать.
@@color:#900;''All of'' us know him.@@ - Мы все знаем его.
@@color:#900;''All'' are ready.@@ - Все готовы.
@@color:#900;''All'' is ready.@@ - Всё готово.
@@color:#900;''All'' is lost.@@ - Все пропало.//

Вместо ''all'' в том же значении, часто употребляются местоимения ''everybody'', ''everyone'', ''everything'';
: //@@color:#900;''All'' were of the same opinion on this problem.@@ - Все были одного мнения по этой проблеме.
@@color:#900;''Everybody'' was of the same opinion on this problem.@@ - Все были (каждый был) одного мнения по этой проблеме.
@@color:#900;''All'' is lost.@@ - Все пропало.
@@color:#900;''Everything'' is lost.@@ - Все пропало.//

!!Употребление местоимения "every"
Местоимение ''every'' (каждый) употребляется только в качестве определителя;
: //@@color:#900;She knew by heart ''every'' word in his letter.@@ - Она знала каждое слово в его письме наизусть.
@@color:#900;Not ''every'' man could do it.@@ - Не всякий человек мог бы это сделать.
@@color:#900;I come here ''every'' three days.@@ = @@color:#900;I come here ''every'' third day.@@ - Я прихожу суда раз в три дня.//

Обратите внимание на употребление ''every'' в идиомах ''every other'' (каждый второй, около половины) и ''every few'' (каждые несколько):
: //@@color:#900;I come here ''every other'' day.@@ - Я прихожу суда через день.
@@color:#900;''Every other'' house was ruined.@@ - Около половины домов было разрушено.
@@color:#900;The car starts up  ''every other'' time.@@ - Машина заводится через раз.
@@color:#900;They had a rest ''every few'' miles.@@ - Они отдыхали через каждые несколько миль.
@@color:#900;The video freezes ''every few'' minutes for a few seconds.@@ - Видео замирает на несколько секунд через каждые несколько минут.//

!!Производные от "every";  "everybody", "everyone", "everything"
Производные от ''every'';  ''everybody'', ''everyone'', ''everything'' употребляются вместо существительного.

''everybody'' и ''everyone'' употребляются только в отношении людей, ''everything'' употребляется в отношении неодушевленных предметов и понятий:
: //@@color:#900;''Everyone'' has a right to their own opinion.@@ - Каждый имеет право на свое мнение.
@@color:#900;I'll tell you ''everything'' later.@@ - Я разкажу все (каждую вещь) попозже.//
Неопределенные местоимения ''everyone'' и ''everybody'' имеют два падежа: общий и притяжательный (как и имя существительное):
: //@@color:#900;He is sure of ''everybody's'' consent.@@ - Он уверен что все согласны. (Он уверен в согласии каждого.)//

!!Употребление местоимения "each"
Местоимение ''each'' употребляется по отношению к ограниченному числу лиц или предметов, подразумевая  "каждый в отдельности".

потребляется в качестве определителя перед  исчисляемыми существительными в единственном числе, ''each'' исключает употребление артикля перед существительным, к которому оно относится;
: //@@color:#900;''Each'' child in our group got a present.@@ - Каждый ребенок в нашей группе получил подарок.
@@color:#900;I meet him ''each'' time I go to work.@@ - Я встречаю его каждый раз, когда иду на работу.//

Вместо существительного ''each'' употребляется:
* с предлогом ''of'' к существительному  во множественном числе, требующие определенный артикль ''the'' или местоимение:
*: //@@color:#900;''Each of'' __the__ children got a present.@@ - Каждый из этих детей получил подарок.
@@color:#900;I'll send ''each of'' __you__ some money.@@ - Я вышлю каждому из Вас некоторую сумму.//
* самостоятельно, подразумевая каждого в отдельности если известно о ком или о чем идет речь;
*: //@@color:#900;I told __them__ what ''each'' was to do in case of an emergency.@@ - Я рассказал им, что каждому делать в случае нештатной ситуации. //

Местоимение ''both'' [bəuθ] (оба, обе) употребляется как в качестве местоимения-прилагательного, так и местоимения-существительного, имеет форму множественного числа;
: //@@color:#900;He came up to her, and took ''both'' her hands.@@ - Он подошел к ней, и взял ее за обе руки.
@@color:#900;They are ''both'' doctors.@@ =  @@color:#900;''Both'' of them are doctors.@@ - Оба они врачи.
@@color:#900;''Both'' the men were bald.@@ = @@color:#900;''Both'' of the men were bald.@@ - Оба мужчины были лысыми.
@@color:#900;We have ''both'' seen the movie.@@ - Мы оба видели этот фильм.
@@color:#900;Which pen dost thou want, a black or a blue one?@@ - I'll have ''both''. - Какая тебе нужна ручка, черная или синяя. - Я хочу вять обе.
@@color:#900;''Both'' my children are girls.@@ - У меня оба ребенка - девочки.//
Местоимение ''both'' не употребляется в негативных предложениях, в этом случае употребляется местоимение ''either'' или ''neither'':
: //@@color:#900;I have two bosses at work and I don't like ''either'' of them.@@ - У меня на работе два шефа и оба мне не нравятся.//
Местоимение ''either'' ['aɪðər] ['i:ðər] (каждый из двух, и тот и другой, тот или другой, любой, один из двух, кто-либо из двух) употребляется как в качестве местоимения-прилагательного, так и местоимения-существительного, имеет отрицательную форму ''neither'' ['naɪðər] ['ni:ðər] (ни один из двух, ни тот ни другой), употребляется только в единственном числе;
: //@@color:#900;He came up to the beach with a girl on ''either'' arm.@@ - Он подошел к пляжу, неся девушку на обоих руках.
@@color:#900;Which pen dost thou want, a black or a blue one?@@ - ''Either'' will do. - Какая тебе нужна ручка, черная или синяя. - Любая из них сойдет.
@@color:#900;''Neither'' statement is true.@@ - Ни то, ни другое (из двух) утверждение не верно.
@@color:#900;''Neither'' of the statements are true.@@ - Оба утверждения не верны.
@@color:#900;''Neither'' of us believed it.@@ - Никто из нас (двоих) в это не поверил.
@@color:#900;I can agree in ''neither'' case.@@ - Я не могу согласиться ни в том, ни другом случае.//
<html><a name="[[much, many и их аналоги]]"></a></html>Местоимения ''much'' [mʌtʃ], ''many'' ['menɪ] (много, многое, многие) употребляются как в качестве [[определителя|Определяющее слово (The Determiner)]], так и [[существительного|Существительное (The Noun)]]:

''Much'' употребляется только с неисчисляемыми существительными:
: //@@color:#900;How ''much''  time dost thou need?@@ - Сколько времени тебе нужно?
@@color:#900;You haven't ''much'' time if you want to catch the bus.@@ - У тебя не много времени если хочешь успеть на этот автобус.
@@color:#900;My father meant ''much'' to me.@@ - Мой отец возлагал на меня большие надежды. 
@@color:#900;''Much'' depends on what answer he will give.@@ - Многое зависит от того, какой он даст ответ.
@@color:#900;''Much'' of what he says is true.@@ - Многое из того что он сказал - правда.
@@color:#900;''Much'' of the snow has already melted.@@ - Много этого снега уже растаяло.//

''Many'' употребляется только с исчисляемыми существительными:
: //@@color:#900;Do you have ''many'' freinds?@@ - У тебя много друзей?
@@color:#900;I haven't ''many'' friends now. @@- У меня с'час не много друзей.
@@color:#900;''Many'' of them were late.@@ - Многие из них опоздали.
@@color:#900;''Many'' think that the situation will improve.@@ - Многие думают что ситуация улучшится.
@@color:#900;Not ''many'' knew about it.@@ - Не многие знали об этом.//
В современном английском местоимения ''much'' и ''many'' в качестве определителя как правило употребляются только в вопросительных и отрицательных предложениях, в утвердительных предложениях им соответствует ''a lot of'' (''lots of''), которое употребляется с исчисляемыми и неисчисляемыми существительными:
: //@@color:#900;Ye have ''a lot of'' time to catch the bus.@@ - У тебя еще много времени попасть на этот автобус.
@@color:#900;I have ''a lot of'' friends.@@ - У меня много друзей.//

Местоимения ''much'' и ''many'' употребляются в утвердительных предложениях если им предшествуют; ''too'', ''far too'' (слишком), ''very'' (очень), ''so'' (так), ''how'' (как), ''as'' (также) а также словосочетания; ''a good many'' (порядочное количество, довольно много) и ''a great many'' (огромное количество, великое множество) и их аналоги; ''plenty of'' (много, достаточно много, более чем достаточно), ''a great deal of'' (много), ''a large namber'' (большой число - употребляется только с исчисляемыми):
: //@@color:#900;I can’t drink this tea. There’s ''too much'' sugar in it.@@ – Я не могу пить этот чай, в нем слишком много сахара.
@@color:#900;You can have ''as much'' fruit as you wish.@@ - Вы можете взять столько фруктов сколько пожелаете.
@@color:#900;I’ve got ''plenty of'' time.@@ - У меня полно времени.
@@color:#900;There is ''a great deal of'' oil and gas production in Russia.@@ - В России добывается много нефти и газа.
@@color:#900;You have made ''a great many'' mistakes.@@ - Вы сделали огромное количество ошибок.//

Местоимение ''many'' может служить определителем к существительному в единственном числе с неопределенным артиклем, передает более индивидуализирующее отношение к каждому из большого множества:
: //@@color:#900;''Many a'' girl wishes she could sing like Tina Turner. @@- Множество девчонок желало бы петь как Тина Тернер.
@@color:#900;''Many a'' thing may change during all the days.@@ - Много чего может изменится в течении всех этих дней.
@@color:#900;''Many a'' thousand years ago.@@ - Много тысячелетий тому назад.
@@color:#900;I haven’t seen him for ''many a'' day.@@ -  Я столько дней его не видел.
@@color:#900;''Many a'' good cow has a bad calf.@@ - Плохие телята и от хороших коров родятся. (поговорка: В семье не без урода.)
@@color:#900;for ''many a'' long day and night@@ - на много долгих дней и ночей//

!!"many other" и "many another"
Частой ошибкой является смешивание ''many other'' и ''many another'', хоть и имеют один перевод (много других), но ''many another'' (an + other) требует после себя существительное в единственном числе:
: //@@color:#900;There existed ''many another'' problem.@@ - Существовало и много других проблем.
@@color:#900;I, like ''many another'' man, was charmed with Mary.@@ - Я как и многие другие был очарован Марией.
@@color:#900;It will still happen in ''many another'' place and time.@@ - Это по прежнему будет случатся во многих других местах и много раз. 
@@color:#900;''Many another'' has seen it.@@ - Это видели и многие другие.//

!!Сравнительная и превосходная степень
Местоимения ''much'' и ''many'' имеют сравнительную (The comparative) и превосходную (The superlative) степень: ''more'' (больше) и ''most'' (больше всего, наибольшее количество), ''more'' и ''most'' употребляется с исчисляемыми и неисчисляемыми существительными, перед превосходной степенью местоимения ''most'' при конкретизации употребляется определенный артикль ''the'';
: //@@color:#900;People eat ''more'' food  than they should.@@ - Люди съедают больше пищи, чем следовала бы.
@@color:#900;''Much'' money is spent on education, ''more'' on health services but ''the most'' is spent on national defence.@@ - Много денег уходит на образование, еще больше на систему здравоохранения но больше всего уходит на национальную оборону.
@@color:#900;Who can find ''the most'' differences?@@ - Кто может найти большее количество отличий.
@@color:#900;''The most'' interesting book I have ever read.@@ - Самая интересная книга, какую я когда-либо читал.
@@color:#900;The Moscow metro is ''the most'' beautiful in the world.@@ - Московское метро самое красивое в мире.
@@color:#900;You are ''the most'' unreliable person of all.@@ - Вы самый ненадежный человек.//

При обобщении, перед местоимением ''most'', употребляемого с исчисляемыми существительными, определенный артикль обычно не используется:
: //@@color:#900;I don't know how to use ''most'' of the functions on my phone.@@ - Я не знаю как использовать большинство функций в моем телефоне. 
@@color:#900;''Most'' of my friends learn English.@@ - Большинство моих друзей изучает английский.//
Местоимение ''most'' может употребляется перед прилагательными не только при образовании превосходной степени, но также в значении; очень, такой, крайне и т.п.;
: //@@color:#900;This is a ''most'' interesting book.@@ - Это весьма интересная книга.
@@color:#900;These are ''most'' interesting books.@@ - Это весьма интересные книги.//
Для усиления местоимения ''more'', перед ним могут употреблятся; ''much'', ''many'', ''a lot'';
: //@@color:#900;People eat ''much more'' food  than they should.@@ - Люди едят намного больше еды, чем следовала бы.
@@color:#900;People take in ''many more'' calories than they need.@@ - Люди принимают намного больше калорий, чем необходимо. 
@@color:#900;We were ''a lot more'' careful this time.@@ - В это время мы были намного более острожные.//

!!Фигуральные или метафорические заменители much и many
В устной речи и художественной литературе вместо ''much'' и ''many'' возможно использование выражений; ''a world of'' (world [wɔ:rld]  - мир), ''heaps of'' (heap [hi:p] - куча, груда), ''an ocean of'', ''oceans of'' (ocean [ˈəuʃən] - океан) и т.п.
: //@@color:#900;He covered me with ''an ocean of'' kisses.@@ - Он покрыл меня морем поцелуев.// (дословно: океаном поцелуев)

Местоимение ''other'' ['ʌðər] (другой, другие, остальные) употребляется как в качестве местоимения-прилагательного, так и местоимения-существительного. Если перед местоимением стоит неопределенный артикль то словосочетание пишется одним словом ''another'' [ə'nʌðər] (другой, еще один):
: //@@color:#900;My house is on the ''other'' side of the street.@@ - Мой дом на другой стороне улицы.
@@color:#900;I went into ''another'' room. @@- Я вошел в другую комнату.
@@color:#900;Would you like ''another'' glass of tea.@@ - Не желаете еще чая. (Не хотите еще стакан чая.)
@@color:#900;I have no ''other'' friends but you.@@ - У меня нет других друзей кроме тебя.//
В качестве местоимения-существительного ''other'' если из контекста понятно о чем идет речь, имеет множественное число в форме ''others'':
: //@@color:#900;If the cigar is too strong, try ''another''.@@ - Если сигара слишком крепкая, попробуй другую.
@@color:#900;It is your opinion, but the ''others'' think differently.@@ - Это твоё мнение, но остальные думают по другому.
@@color:#900;I liked this one more than ''others''.@@ - Вот это мне понравилось больше чем остальные.//
''Other'' может употребляться в  притяжательном падеже (как и имя существительное) ''other's'', во множественном числе обозначается только апострофом ''others''':
: //@@color:#900;One of his daughters is married to a lawyer. The ''other's'' husband is a doctor.@@ - Одна из его дочерей замужем за адвоката. Муж другой - врач.
@@color:#900;I liked his show more than ''others'''.@@ - Его показ мне понравился больше чем у остальных.//
''some'' [sʌm], ''any'' ['enɪ], ''no'' [nəu];
''someone'' ['sʌmwʌn], ''anyone'' ['enɪwʌn], ''no one'' [nəu wʌn];
''somebody'' ['sʌmbədɪ], ''anybody'' ['enɪbədɪ], ''nobody'' ['nəubədɪ];
''something'' ['sʌmθɪŋ], ''anything'' ['enɪθɪŋ], ''nothing'' ['nʌθɪŋ];
''one'' [wʌn], ''none'' [nʌn];

!!Общие замечания
* Местоимения ''some'', ''any'' и ''no'' обычно служат [[определителем|Определяющее слово (The Determiner)]] существительного. Существительные, определяемые этими местоимениями, всегда употребляются без артикля.
* Местоимения, образованные с помощью ''-body'' и ''-one'' употребляются только в отношении людей. Местоимения, образованные с помощью ''-thing'', употребляются в отношении неодушевленных предметов и понятий. Местоимения, образованные с помощью ''-body'', ''-one'' и ''-thing'' выполняют в предложении функцию существительного и сочетаются с глаголом только в единственном числе.
* Неопределенные местоимения ''someone'', ''anyone'', ''no one'', ''one'', ''somebody'', ''anybody'', ''nobody'' имеют два падежа: общий и притяжательный (как и имя существительное);
*:
**: // @@color:#900;There was ''somebody'' in the room.@@// - В комнате кто-то был.
**: //@@color:#900;This is ''somebody's'' pencil.@@ // - Это чей-то карандаш.
*** Если после этих местоимений следует слово ''else'' то '''s'' образующая притяжательный падеж ставится после него;
***:// @@color:#900;That is not my gun. It is ''somebody else's''@@// - Это не моя пушка. Она чья-то еще(чужая).

!!Неопределенные местоимения "some", "someone", "somebody" и "something"
* Неопределенные местоимения ''some'', ''someone'', ''somebody'' и ''something''  употребляются в значениях: какой-то, какой-нибудь, некий, что-то;
*:// @@color:#900;''Some'' man wants to see you.@@//- Какой-то человек хочет видеть вас.
*: //@@color:#900;''Somebody'' is knocking at the door.@@// - Кто-то стучит в дверь.
*: //@@color:#900;I can do ''something'' for you.@@// - Я могу для тебя кое-что сделать.
*: //@@color:#900;''Something'' has fallen to the floor.@@// - Что-то упало на пол. 
* ''Some''  может сочетаться с глаголом в единственном и множественном числе. Перед  неисчисляемыми существительными и исчисляемыми существительными во множественном числе означает некоторое количество, сколько-нибудь, немного, несколько, некоторые (при переводе на русский может опускаться):
*: {{block{//@@color:#900;Give me ''some'' water, please.@@ //- Дайте мне воды, пожалуйста.
//@@color:#900;I have ''some'' money.@@// - У меня есть (кое-какие) деньги.
//@@color:#900;I have ''some'' English books.@@// - У меня есть какие-то книги на английском языке.
//@@color:#900;I don't have ''some'' English books for my studies. @@//- У меня нет кое-каких книг, на английском языке, для моей учебы.
//@@color:#900;Where can I buy ''some'' cigarettes?@@// - Где мне купить сигареты?
//@@color:#900;Why do ''some'' children hate milk?@@ //- Почему некоторые дети не лю­бят молоко?}}}
* Местоимения  ''some'' и ''any'' могут употребляться вместо существительного:
** во избежание повторения ранее упомя­нутого существительного;
**://@@color:#900; Not all your answers are correct. ''Some'' are, ''some'' aren't.@@ - Не все Ваши ответы правильные, некоторые правильные а некоторые нет.
@@color:#900;I want some paper. Please give me ''some''.@@ - Мне нужна бумага. Дайте мне, пожалуйста, бумаги. //
** если местоимение ''some'' употребляется для выделения лица, предмета известного (или предполагаемого) из контекста или если необходимо использовать личное, притяжательное или указательное местоимение, то тогда используют конструкцию ''some of'';
**:// ''Some'' talk too much - Некоторые слишком много говорят.
@@color:#900;''Some of'' __his__ opinions were hard to accept.@@ - С некоторыми из его убеждений было трудно согласиться.
@@color:#900;''Some of'' __the__ food was packed into waterproof bags. @@- Некоторое количество еды было упаковано в непромокаемые сумки. //

!!Неопределенные местоимения "any", "anyone", "anybody" и "anything"
* Неопределенные местоимения ''any'', ''anyone'', ''anybody'' и ''anything''  употребляется в значениях: какой(кто)-нибудь - любой, какие-нибудь - любые.Местоимение ''any''  может сочетаться с глаголом в единственном и множественном числе;
*:// @@color:#900;Do you have ''any'' English books?@@ - У тебя есть какие-нибудь (любые) книги на английском языке?
@@color:#900;Is there ''anyone'' at home?@@ - Дома кто-нибудь есть?
@@color:#900;Come ''any'' day you like.@@ - Приходите в любой день, какой пожелаете.
@@color:#900;Today we do not have ''any'' lessons.@@ - Сегодня у нас нет каких-либо занятий. (Сегодня у нас нет никаких занятий.)
@@color:#900;I can do ''anything'' for you @@- Я сделаю для тебя все, что угодно. //
* Местоимение  ''any'' может употребляться вместо существительного;
** во избежание повторения ранее упомя­нутого существительного;
**:// @@color:#900;Which of these books may I take? - ''Any''. @@- Какую из этих книг можно мне взять? - Любую.
@@color:#900;I want some nails. Do you have ''any''?@@ - Мне нужны гвозди. У тебя есть (гвозди)?//
** если местоимение ''any'' употребляется для выделения лица, предмета известного из контекста или необходимо использовать личное, притяжательное или указательное местоимение, то используют конструкцию ''any of'';
**:// @@color:#900;I have never had a problem with ''any of'' __the__ trees I have bought from them.@@ - У меня никогда не было проблемы с каким либо из деревьев купленных у них.
@@color:#900;''Any of'' __our__ children could do this.@@ - Любой из наших детей мог это сделать.
@@color:#900;Do  ''any of'' __you__ want to go with me?@@ - Кто-нибудь из вас хочет пойти со мной?
@@color:#900;Do you believe ''any of'' __these__ myths?@@ - Ты веришь в какой-нибудь из этих мифов. //
* Сравните;
*:// {{block{I'd like to ask you, "Do you have ''any'' English books"?}}} - Я хотел спросить у тебя: "У тебя есть какие-нибудь книги на английском языке"? (хоть какие (любые), может их вообще нет)
@@color:#900;I'd like to ask you, "Do you have ''some'' English books"?@@ - Я хотел спросить у тебя: "У тебя есть кое-какие книги на английском языке"? (подразумевается что книги на английском есть, но нужны некоторые (кое-какие) из них)
@@color:#900;Where can I buy ''some'' cigarettes?@@ - Где мне купить сигареты?(каких-то, некое количество)
@@color:#900;Where can I buy ''any'' cigarettes?@@ - Где мне купить любые сигареты? (любые, какие пожелаю)
@@color:#900;I can do ''something'' for you.@@ - Я могу для тебя кое-что сделать.
@@color:#900;I can do ''anything'' for you.@@ - Для (Ради) тебя я могу сделать все что угодно.
@@color:#900;Could I have ''some'' more water?@@ - Можно мне еще воды?
@@color:#900;You can have ''any'' more water.@@ - Вы можете пить сколько пожелаете. //

!!Неопределенные местоимения "no", "no one", "nobody" и "nothing"
* Неопределенные местоимения ''no'', ''no one'', ''nobody'' и ''nothing''  указывают на отсутствие чего(кого)-либо;
*://@@color:#900;I have ''no'' English books.@@ - У меня нет (никаких) книг на английском языке.
@@color:#900;There are ''no'' new words in the text.@@ - В тексте нет (никаких) новых слов. 
@@color:#900;There is ''nothing'' in the box.@@ - В ящике ничего нет.//
* Отрицательное предложение можно также построить с помощью ''not any'' и ''not a''.
*:// @@color:#900;I have ''no'' car @@/@@color:#900; I don't have ''any'' car@@ / @@color:#900;I ''don't'' have ''a'' car @@- У меня нет (ни одной, никакой) машины.//
* В нормативной лексике в английском не используется двойное отрицание;
*: //@@color:#900;''Nobody'' __knows__ __anything__ about it.@@ - Никто ничего не знает об этом.//

!!Употребление местоимения "one"
* Разница в употреблении местоимения, образованные с помощью ''-body'' и ''-one'' состоит в том что; ''-body'' ,как правило, ссылается на кого-то как часть коллектива, группы, ''-one'' подразумевает более индивидуальное обозначение кого-либо;
*://@@color:#900; ''Somebody'' is sure to come.@@ - Кто-ни'дь обязательно придет.
@@color:#900;It has been left by ''someone'' who came today.@@ - Это оставил кто-нибудь, кто приходил сегодня.
@@color:#900;''Nobody'' knew about our meeting. ''No one'' had come. @@- Никто не знал о нашем собрании. Никто не пришел. //
* Поэтому местоимение образованное с помощью ''-body'' не употребляется с последующим ''of'';
*:// @@color:#900;Does ''anyone of'' you know where she lives?@@ - Кто-ни'дь из Вас знает, где она живет.//
* Местоимение ''one'' может употребляется  для обозначения неопределенного лица в предложениях, для построения высказывания общего характера (в предложениях этого типа употребляется только форма единственного числа ''one''). В данном случае ''one'' означает ''всякий'', ''каждый'', ''любой'';
*://@@color:#900; ''One'' should be careful when crossing the street.@@ - Следует быть осторожным при переходе через улицу.
@@color:#900;''One'' shouldn’t get upset about stupid things. @@- Не нужно расстраиваться из-за глупостей.
@@color:#900;''One'' must always keep ''one's'' word. @@- Нужно всегда держать свое слово.
@@color:#900;No ''One'' lives forever.@@ - Никто не живёт вечно. //
** В разговорной речи в данном случае предпочтение чаще отдается менее официальному местоимению ''you'';
**: //@@color:#900;''One'' should be careful when crossing the street.@@ = @@color:#900;''You'' should be careful when crossing the street.@@ - Следует быть осторожным при переходе через улицу.
@@color:#900;''One'' shouldn’t drive faster then ''one’s'' guardian angel can fly.@@ = @@color:#900;''You'' shouldn’t drive faster then ''your'' guardian angel can fly.@@ - Не следует ездить быстрее, чем ангел-хранитель может летать. //
* ''One'' употребляется во избежание повторения ранее упомя­нутого исчисляемого существительного (во множественном числе ''ones'');
*:// @@color:#900;That's not my umbrella. Mine is a black ''one''.@@ - Это не мой зонт, мой черного цвета.
@@color:#900;She prefers red roses to white ''ones''.@@ - Она предпочитает красные розы а не белые.
@@color:#900;This story is more interesting than that ''one''. @@- Этот рассказ более интересный, чем тот.
@@color:#900;I'v never seen such big roses as these ''ones''.@@ - Я никогда не видел таких больших роз как эти.
@@color:#900;My house is the first ''one'' on the left.@@ - Мой дом первый с лева.//
* ''One'' не употребляется для замены неисчислимого существительного;
*://@@color:#900; I prefer warm milk to cold.@@ - Я предпочитаю теплое молоко холодному.//
*''One'' как правило не употребляется после сравнительной и превосходной степени сравнения;
*: //@@color:#900;Of the two armchairs I chose the __softer__.@@ - Из двух кресел я выбираю то что помягче. //
* Местоимение ''one'' может подразумевать некоторое лицо, человека в предложении;
*://@@color:#900; He is not ''one'' to be easily frightend.@@ - Он не такой, чтобы его легко было напугать.
@@color:#900;I’m  the ''one'' who did it.@@ - Я - тот, кто это сделал. //

!!Употребление местоимения "none"
* ''None'' (ни один, нисколько) употребляется в отношении лиц и неодушевленных предметов, может сочетаться с глаголом в единственном и множественном числе. Местоимение "none" функционирует в предложении только как существительное;
*:// @@color:#900;I wanted some more coffee but ''none'' was left.@@ - Я хотел еще немного кофе, но ничего не осталось.//
* После местоимений ''nobody'' и ''nо one'' предлог ''of'' не употребляется, используется конструкция ''none of'';
*:// @@color:#900;''None'' of us knows about it.@@ - Никто из нас об этом не знает. //

''Австрали́йский вариа́нт англи́йского языка''́ ( ''Australian English'') - один из языковых вариантов английского языка, широко распространённый в Австралии.

Общеупотребительное слово forest - лес практически не употребляется по отношению к лесам Австралии, так как это светлые эвкалиптовые леса и кустарники. Лесистую местность в Австралии называют the bush - буш
Американский английский создал тысячи слов и фраз, которые вошли как в общеанглийский (hitchhike, landslide), так и в мировой лексикон (окей, тинейджер).

Особое влияние на язык оказали существенные различия в жизни и быте колонистов в США и Великобритании. Иной климат, природа, окружение и быт привели к адаптации и возникновению в местном английском новых слов и понятий. В эту категорию входят слова, возникшие именно в США и не получившие распространения в Англии: названия растений и животных североамериканского континента (moose — «североамериканский лось» при английском elk, которое в США получило значение изюбрь), различных явлений, связанных с государственным и политическим строем США (dixiecrat — «демократ из южного штата»), с бытом американцев (drugstore — «аптека-закусочная»).

Особую группу составляют слова, которыми пользуются как в Англии, так и в США и в которых специфически американским является лишь одно из присущих им значений (market — «продовольственный магазин», career — «профессиональный»). Слово faculty в Англии употребляется в значении «факультет», а в Америке «профессорско-преподавательский состав». Существительное pavement для англичанина означает «тротуар», а для американца «мостовая». К разряду американизмов относятся также слова, которые в Англии превратились в архаизмы или диалектизмы, но по-прежнему широко распространены в США: fall — «осень» вместо франко-норманского autumn, apartment — «квартира» вместо flat, tardy — «запоздалый» и прочие.

Кроме того, существуют слова, имеющие разные значения в американском английском и британском английском:
* block амер. квартал брит. здание
* pavement амер. мостовая брит. тротуар
Есть масса вариантов, когда русское выражение можно по разному перевести на английский, с учетом различий американского и британского диалектов:
* аптека амер. drugstore брит. chemist’s shop
* бензин амер. gasoline, gas брит. petrol
В процессе заимствования некоторые американизмы в Британии подвергаются переосмыслению. Например, caucus — «закрытое собрание партийных лидеров» приобрело в Англии новое значение: «политика подтасовки выборов», «давление на избирателей» и пр.

Некоторое влияние оказали на лексикон американского английского и другие европейские языки.
''Американский английский'' ( American English, часто встречаемое сокращение: ''~AmE'', ''AE'', ''~AmEng'', ''~USEng'', ''en-US'') - самый распространённый языковой вариант английского языка, принятый национальный стандарт этого языка на территории США. . В США американский английский является родным для 80 % населения страны и имеет стандартный, закреплённый в образовательной системе и СМИ ряд свойств в области орфографии, грамматики, лексики. Тем не менее, он, равно как и английский вообще, не закреплён в федеральной конституции как официальный язык США, хотя фактически им является.

''История английского языка в США''

Первые значительные англоязычные группы прибыли Северную Америку в начале XVII века и они продолжали преобладать в миграционном потоке вплоть до начала Войны за независимость в 1776 году, когда из 2,8 миллионов американцев абсолютное большинство (82 % белых) были англичанами-протестантами. Помимо этого в США на начальном этапе прибыло заметное количество других, преимущественно германских языков, среди которых наиболее выделялись нидерландский, немецкий, шведский, норвежский, а также кельтских языков: ирландский, валлийский, гэльский. Близость германских языков к английскому, а также усиливающееся двуязычие кельтских народов, большинство из которых уже тогда находилась под властью британской короны, привела к быстрой ассимиляции мигрантов, но их языки оказали влияние на некоторые тенденции в английском языке США.
После получения независимости, в условиях отсутствия средств массовой коммуникации, изменения произошедшие в языке Британии в XIX - начале XX веков (к примеру, утрата ретрофлексного r), как правило, не нашли своего отражение в речи США, фонология и лексика которой по-прежнему носят архаичный характер.
Английский алфавит состоит из 26 букв - 5 гласных и 20 согласных, буква ''y'' может обозначать как согласный, так и гласный звук.

Двадцать шесть букв английского языка передают 44 звука: 12 простых гласных звуков, 8 двугласных (дифтонгов - соединение двух гласных в один слог) и 24 согласных звука. Одна и та же буква в различных положениях может обозначать разные звуки, и один и тот же звук может изображаться разными буквами и их сочетаниями. В связи с этим в английских словарях используется [[транскрипция|Фонетическая транскрипция (Phonetic Transcription)]].

|bgcolor(#8cf): # |bgcolor(#8cf): буква |bgcolor(#8cf): название |bgcolor(#8cf): произношение |bgcolor(#8cf): # |bgcolor(#8cf): буква |bgcolor(#8cf): название |bgcolor(#8cf): произношение |
| 1 | ''A a'' | a | [eɪ] | 14 | ''N n'' | en | [en] |
| 2 | ''B b'' | bee | [bi:] | 15 | ''O o'' | o | [ou] |
| 3 | ''C c'' | cee | [si:] | 16 | ''P p'' | pee | [pi:] |
| 4 | ''D d'' | dee | [di:] | 17 | ''Q q'' | cue | [kju:] |
| 5 | ''E e'' | e | [i:] | 18 | ''R r'' | ar | [ɑr] |
| 6 | ''F f'' | ef ^^1^^ | [ef] | 19 | ''S s'' | ess ^^3^^ | [es] |
| 7 | ''G g'' | gee | [dʒi:] | 20 | ''T t'' | tee | [ti:] |
| 8 | ''H h'' | aitch ^^2^^ | [eɪtʃ] | 21 | ''U u'' | u | [ju:] |
| 9 | ''I i'' | i | [aɪ] | 22 | ''V v'' | vee | [vi:] |
| 10 | ''J j'' | jay | [dʒeɪ] | 23 | ''W w'' | double-u | [ˈdʌb(ə)l ju:] |
| 11 | ''K k'' | kay | [keɪ] | 24 | ''X x'' | ex | [eks] |
| 12 | ''L l'' | el | [el] | 25 | ''Y y'' | wy | [waɪ] |
| 13 | ''M m'' | em | [em] | 26 | ''Z z'' | zed, zee ^^4^^ | [zed], [zi:] |
1. как глагол пишется ''eff'' (например "eff off" где ''eff'' первая буква в слове fuck = fuck off)
2. ''haitch'' [heɪtʃ] в Ирландии и часто в Австралии
3. пишется ''es''- в сочетаниях типа ''es-hook''
4. ''zee'' - американский вариант
''Английский язык'' (''English, English language'') - язык англичан (официальный язык Англии и фактически всей Великобритании), жителей США (официальный язык тридцати одного штата), один из двух официальных языков Ирландии, Канады и Мальты, официальный язык Австралии, Новой Зеландии. Он используется как официальный в некоторых государствах Азии (Индия, Пакистан и др.) и Африки.

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

Письменность на основе латинского алфавита. В орфографии значительное место занимают традиционные написания.

В английском языке перед существительным обычно стоит [[определенный артикль ''the''|Определенный артикль (The Definite Article)]] или [[неопределенный артикль a (an)|Неопределенный артикль (The Indefinite Article)]], отсутствие артикля перед существительным является значимым.

Артикль уточняет значение существительного, а также смысл всего предложения, при этом собственного отдельного значения не имеет.

Также следует различать "значимое" отсутствие артикля и опущение артикля в стилистических целях, в газетных заголовках, в инструкциях (мануалах),  в поэзии - если при этом не нарушается смысл предложения.
''Бе́йсик-и́нглиш'' (''Basic English'') - международный искусственный язык на основе английского языка, созданный в 1925 году британским лингвистом Чарльзом Огденом.

Основное отличие от английского языка - сокращённый словарь (850 слов). Английская грамматика в бейсик-инглиш осталась в основном без изменений.
В английском языке два взаимных местоимения ''each other'' и ''one another'' (друг друга). ''Each other'' обычно употребляется относительно к двух лиц или предметов, ''one another'' употребляется когда говорят о большом количестве лиц или предметов и при обобщении (эти правила часто игнорируются и эти местоимения могут использоваться как абсолютные синонимы);
: //@@color:#900;I think they love ''each other''.@@ - Я думаю, что они любят друг друга. (о паре)
@@color:#900;People should help ''one another'' @@- Людям нужно помогать друг другу. (обобщение)//

''One another'' также предпочтительней когда хотят указать на порядочную серию событий и состояний;
: //@@color:#900;Both visitors followed ''one another'' into the house.@@ - Оба посетителя проследовали друг за другом в дом.//

''Each other'' и ''one another'' могут употребляться в притяжательном падеже;
: //@@color:#900;We couldn't hear ''each other's'' words for the wind.@@ - Мы не могли слышать слова друг друга из-за ветра.//

При употреблении местоимений ''each other'' и ''one another'' с предлогом, предлог ставится перед ними; ''about each other'' (друг о друге), ''for each other'' (друг для друга) и т.п.;
: //@@color:#900;We know everything ''about each other''.@@ - Мы знаем все друг о друге.//

Возвратные местоимения образуются путем прибавления к притяжательным местоимениям ''my'', ''thy'', ''our'', ''your'', личным местоимениям ''him'', ''her'', ''it'', ''them'' и неопределенному местоимению ''one'' окончания -''self'' (в единственном числе) и -''selves'' (во множественном числе).

!!Таблица возвратных местоимений
|bgcolor(#8cf): Лицо (Person) |bgcolor(#8cf): Единственное число <br> (Singular Number) |bgcolor(#8cf): Множественное число <br> (Plural Number |
|bgcolor(#8cf): 1(st) | ''myself'' [maɪ'self] | ''ourselvez'' [auər'selvz] |
|bgcolor(#8cf): 2(nd) | ''thyself''^^1^^ [ðaɪ'self] / ''yourself'' [jɔ:r'self] | ''yourselves'' [jɔ:r'selvz] |
|bgcolor(#8cf): 3(rd) | ''himself'' [hɪm'self] | ''themselves'' [ðəm'selvz] |
|~| ''herself'' [hə:r'self] |~|
|~| ''itself'' [ɪt'self] |~|
|bgcolor(#8cf): неопределенная форма | ''oneself'' [wʌn'self] | (не употребляется) |
1. вышло из употребления, в настоящее время употребляется в некоторых диалектах.

!!Употребление возвратных местоимений
Английским возвратным местоимениям в русском языке соответствуют частица -''ся'' (''сь'') в возвратных глаголах и местоимения ''себя'', ''собой'', ''себе'';
: //@@color:#900;I have hurt ''myself''.@@// - Я ушибся.
: //@@color:#900;Do it ''yourself''.@@// - Сделай (это) сам.
: //@@color:#900;She came to ''herself''.@@// - Она пришла в себя.
: //@@color:#900;It is ''thyself'' I want, not thy money.@@// - Ты сам мне нужен, а не твои деньги.
: //@@color:#900;He drives the car ''himself''.@@// -  Он сам водит машину.
: //@@color:#900;They have built ''themselves'' a house.@@// - Они выстроили себе дом.

Местоимение ''oneself'' употребляется для обозначения неопределенного лица в предложениях, для построения высказывания общего характера, см. ''one'' в [[some, any, no (их производные с body, one, thing), one, none]].
: //@@color:#900;One must not live for ''oneself'' only.@@// - Нужно жить не только для себя.

!!
Возвратные местоимения также употребляются для усиления их значения, чтобы придать особую значимость;
: //@@color:#900;I saw it ''myself''.@@ //- Я видел это сам.
: //@@color:#900;I saw the house ''itself''.@@// - Я видел сам дом.
: //@@color:#900;I saw the house ''myself''.@@// - Я сам видел дом.

Для усиления, подчеркивания индивидуального действия возвратное местоимение может употреблятся с предшествующим предлогом (''all'') ''by'';
: //@@color:#900;I did it ''by myself''.@@// - Я сделал это сам.
: //@@color:#900;I came (''all'') ''by myself''.@@// - Я приехал (совсем) один.

''who'' [hu:] (кто), ''whom'' [hu:m], ''whose'' [hu:z] (чей), ''what'' [wɔt] (что, какой), ''which'' [wɪtʃ] (который).

Данные местоимения употребляются для построения вопросительного предложения:
://@@color:#900; ''Who'' is there?@@ //- Кто там?
: //@@color:#900;''What'' is it?@@// - Что это такое?
: //@@color:#900;''What'' colour is it?@@// - Какой это цвет?
: //''Whose'' kitten is it? //- Чей это котенок?
: //''Which'' of you?// - Который из вас?

!!!
Местоимение ''who'' имеет три падежа: именительный падеж ''who'', объектный падеж ''whom'' (кому, кого) и притяжательный падеж ''whose'' . Именительный падеж употребляется как подлежащее, объективный - как дополнение:
: //@@color:#900;''Who'' is here?@@// - Кто здесь?
: //@@color:#900;''Whom'' do you know here?@@ - Кого ты здесь знаешь?//

В разговорном варианте ''whom'' может заменятся на ''who'':
: //@@color:#900;''Who'' do you know here?@@ - Кого ты здесь знаешь?//

''Whose'' - это притяжательное вопросительное местоимение, может употребляться по отношению как к человеку так и предметам или животным :
: //@@color:#900;''Whose'' room is it going to be.@@ / @@color:#900;''Whose'' is the room going to be. @@- Чья это будет комната.//

!!!

Вопросительное местоимение ''what'' может употребляться как местоимение-существительное (что (о неодушевленных предметах)) и как местоимение-прилагательное (какой, -ая, -ое, -ие (по отношению к лицам и предметам)):
: //@@color:#900;''What'' is the date today?@@// - Какое сегодня число? (Что за число сегодня?)
: //@@color:#900;''What'' date is it today?@@// - Какое сегодня число?

!!!
Если к вопросительному местоимению относится предлог, то он может стоять как перед вопросительным местоимением (более литературный вариант), или в конце предложения (как более разговорный вариант):
: //@@color:#900;''About what'' do you worry?@@ //- О чем Вы беспокоитесь? (более литературный вариант)
: //@@color:#900;''What'' do you worry ''about''?@@// - О чем Вы беспокоитесь? (более разговорный вариант)
: //@@color:#900;''Of whom'' are you thinking?@@ //- О ком ты думаешь.
: //@@color:#900;''Who'' (''whom'') are you thinking ''of''?@@ //- ...
: //@@color:#900;''In whose'' car do you prefer to go?@@// - В чьей машине вы предпочитаете поехать.
: //@@color:#900;''Whose'' car do you prefer to go ''in''?@@ //- ...

!!!
Местоимения ''who'', ''what'', ''which'' в вопросительных предложениях относительно какой-либо персоны, имеют разное значения:
: //@@color:#900;''Who'' is he?@@ //- Кто он? (кто это такой, как его зовут)
: //@@color:#900;''What'' is he?@@ //- Кто он? (по профессии)
: //@@color:#900;''Which'' is he?@@ //- Кто - он? (который из них он?)

''Галлицизм'' (лат. gallicismus, фр. gallicisme) — слово или выражение, заимствованное из французского языка.

Галлицизмы, широко представленные в английском языке в целом, имеют в американском английском несколько иную частотность. Наиболее часты ''канцеляризмы''```слово или оборот речи, характерное для стиля деловых бумаг и документов``` с французским суффиксом причастия [éе] контрастируемым с [er] для разграничения субъекта и объекта действия: tutor (репетитор) и tutee (ученик), employer (работодатель) и employee (служащий, рабочий).
''Глагол'' (The Verb) - это часть речи, которая обозначает действие   или состояние субъекта;
: {{block{
''to be'' [tə bi:] (быть)
''to look'' [tə luk] (выглядеть)
''to lack'' [tə læk] (не иметь)
}}}


''Глаголы-связки'' (Copulative verbs, Link-verbs, Linking verbs) - это глаголы выполняющий функции связки. Связка (Copula) специальное слово для связи подлежащего и сказуемого, в английском выраженного глаголом, как правило это глаголы: ''to be'' (быть), ''to become'' (становиться), ''to seem'' (казаться), ''to look'' (выглядеть), ''to feel'', ''to sound'' (звучать), ''to taste'' (иметь вкус), ''to smell'' (пахнуть). Можно сказать что глагол-связка сопоставляет два предмета из некоторых множеств;
: //@@color:#900;__I__ only want ''to be'' __myself__.@@ - Я хочу быть только собой.
@@color:#900;__Dogs__ ''are'' __canines__.@@ - Собаки входят в (семейство) псовых.//
Следует различать когда глагол не выполняет функцию связки:
://@@color:#900; I ''was'' __told__ that you wanted to see me.@@ - Мне сказали, что ты хотел меня видеть.// (глагол ''to be'' в качестве вспомогательного глагола) см. длительные формы глагола (continuous)
:// @@color:#900;I ''am'' __going__ home.@@ - Я иду (еду) домой.// (глагол ''to be'' в качестве вспомогательного глагола)
: @@background-color:#FCF;но:@@ @@color:#900;__It__ ''was getting'' __lighter__.@@ - Становилось светлее. (здесь глагол ''to get'' выступает в роли глагола-связки со значением ''становиться'')
://@@color:#900; ''To be'' or not ''to be'', that is the question@@ - Быть или не быть, вот в чем вопрос.// (to be в значении существовать)
://@@color:#900; I think therefore I ''am''.@@ - Я думаю, следовательно, существую.// (to be в значении существовать)
* [[Английский язык (English language)]]
* [[Краткая история английского языка]]
* [[Фонетика английского языка (English Phonetic)]]
** [[Английский алфавит (The English Alphabet)]]
** [[Фонетическая транскрипция (Phonetic Transcription)]]
* [[Части речи (Parts of Speech)]]
*# [[Существительное (The Noun)]]
*## [[Род имен существительных (The Gender of Nouns)]]
*## [[Число имен существительных (The Number of Nouns)]]
*### [[Образование множественного числа (Formation of Plurals)]]
*### [[Существительные с неправильными формами множественного числа (Irregular Plurals)]]
*### [[Множественное число иностранных слов|Множественное число иностранных слов (Plural of Foreign Words)]]
*### [[Множественное число составных существительных (Plural Forms of Compound Nouns)]]
*### [[Употребление числа существительного|Употребление числа существительного (Noun Number Usage)]]
*## [[Падеж имен существительных (The Case of Nouns)]]
*### [[Образование притяжательного падежа (Formation of the Possessive Case)]]
*### [[Употребление притяжательного падежа (Usage of Possessive Case)]]
*### [[Двойной притяжательный падеж (The Double Possessive)]]
*# [[Определяющее слово (The Determiner)]]
*#* [[Артикль (The Article)]]
*### [[Неопределенный артикль (The Indefinite Article)]]
*###* [[Употребление неопределенного артикля (The Use of The Indefinite Article)]]
*### [[Определенный артикль (The Definite Article)]]
*###* [[Употребление определенного артикля (The Use of The Definite Article)]]
*### [[Отсутствие артикля (Absence of the Article)]]
*# [[Местоимение (The Pronoun)]]
*## [[Личные местоимения (Personal Pronouns)]]
*##* [[Таблица личных и притяжательных местоимений]]
*## [[Притяжательные местоимения (Possessive Pronouns)]]
*## [[Возвратные местоимения (Reflexive pronouns)]]
*## [[Указательные местоимения (Demonstrative Pronouns)]]
*## [[Вопросительные местоимения (Interrogative Pronouns)]]
*## [[Неопределенные местоимения (Indefinite Pronouns)]]
*##* [[some, any, no (их производные с body, one, thing), one, none]]
*##* [[all, each, every, everybody, everyone, everything]]
*##* [[other]]
*##* [[either, neither]]
*##* [[both]]
*##* [[much, many и их аналоги]]
*##* [[little, few, a little, a few]]
*## [[Взаимные местоимения (Reciprocal Pronouns)]]
*## [[Относительные местоимения (Relative pronouns)]]
*## [[Соединительные местоимения (Connective Pronouns)]]
*# [[Прилагательное (The Adjective)]]
*## [[Образование степеней сравнения прилагательных (Degrees of Comparison of Adjectives)]]
*## [[Употребление прилагательных (The Use of Adjectives)]]
*# [[Числительное (The Numeral)]]
*## [[Количественные числительные (Cardinal Numerals)]]
*## [[Порядковые числительные (Ordinal Numerals)]]
*# [[Глагол (The Verb)]]
*## [[Переходные и непереходные глаголы (Transitive and Intransitive Verbs)]]
*## [[Глагол-связка (The Copulative Verb)]]
*##* [[Список глаголов-связок в английском языке (List of English copulae)]]
*## [[Модальные глаголы (The Modal Verbs) и их эквиваленты]]
*## [[Фразовые глаголы (The Phrasal Verbs)]]
*# [[Наречие (The Adverb)]]
*## [[Образование наречий (Formation of Adverbs)]]
*## [[Классификация наречий (Classification of Adverbs)]]
*## [[Наречия места и направления (Adverbs of Place and Direction)]]
*## [[Наречия времени (Adverbs of Time)]]
*## [[Наречия образа действия (Adverbs of Manner)]]
*## [[Наречия частотности (Adverbs of Frequency)]]
*## [[Наречия степени (Adverbs of Degree)]]
*## [[Поясняющие наречия (Comment Adverbs)]]
*## [[Наречия точки зрения (Viewpoint Adverbs)]]
*## [[Соединительные наречия (Connecting Adverbs)]]
*## [[Вопросительные наречия (Interrogative Adverbs)]]
*## [[Степени сравнения наречий (Degrees of Comparison of Adverbs)]]
*## [[Место наречия в предложении (Adverb Sentence Placement)]]
*## [[Употребление наречий (The Use of Adverbs)]]
*# [[Клитика (The Clitic)]]
*# [[Модальные слова (Modal Words)]]
*# [[Предлог (The Preposition)]]
*# [[Союз (The Conjunction)]]
*# [[Частица (The Particle)]]
*# [[Междометие (The Interjection)]]
* [[Словосочетание (The Phrase)]]
*# [[Именная группа (The Noun Phrase)]]
*# [[Глагольная группа (The Verb Phrase)]]
*# [[Наречная группа (The Adverb Phrase)]]
*# [[Адъективная группа (The Adjective Phrase)]]
*# [[Герундиальная группа (The Gerund Phrase)]]
*# [[Предложная группа (The Prepositional Phrase)]]
* [[Предложение (The Sentence)]]
** [[Члены предложения (The Parts of the Sentence)]]
** [[Простое предложение (The Clause)]]
** [[Неличный оборот (The Non-finite Clause)]]
** [[Определительные предложения (Relative Clauses)]]
* [[Греческий алфавит с транскрипцией]]
* [[Заметки]]
* [[Англо-русский разговорник (English-Russian Phrasebook)]]
* [[Термины (Terms)]]
* [[Условные сокращения (Abbreviations)]]
* [[Список используемых источников]]

''Copyright © 2010 Kuzmin Vladimir Ilyich.''  [[Creative Commons Attribution 3.0 Unported  (CC BY 3.0)|http://creativecommons.org/licenses/by/3.0]].
!!
[[Submitter.ru - Регистрация в поисковых системах|http://submitter.ru/go.php?id=124011]] Раскрутись! Самый надежный способ бесплатно, добавить свой ресурс сразу к 128 поисковым системам и каталогам.
''Α'', 	''α'' 	Alpha [′ælfə] - альфа
''Β'', 	''β'' 	Beta [′bi:tə] - бета
''Γ'', 	''γ'' 	Gamma [′gæmə] - гамма
''Δ'', 	''δ'' 	Delta [′deltə] - дельта
''Ε'', 	''ε'' 	Epsilon [′epsəֽlɔn], Brit: [ep′sailən] - эпсилон
''Ζ'', 	''ζ'' 	Zeta [′zeitə], [′zi:tə] - дзета
''Η'', 	''η'' 	Eta [′eitə], [′i:tə] - эта
''Θ'', 	''θ'' 	Theta [′θeitə],[′θi:tə] - тхэта
''Ι'', 	''ι'' 	Iota [ai′outə] - йота
''Κ'', 	''κ'' 	Kappa [′kæpə] - каппа
''Λ'',	''λ'' 	Lambda [′læmdə] - ламбда
''Μ'', 	''μ'' 	Mu [mju:], [mu:] - мю
''Ν'', 	''ν'' 	Nu [nju:], [nu:] - ню
''Ξ'', 	''ξ'' 	Xi [zai], [sai], [ksi:] - кси
''Ο'', 	''ο'' 	Omicron [′ɔməֽkrɔn] - омикрон
''Π'', 	''π'' 	Pi [pai] - пи
''Ρ'', 	''ρ'' 	Rho [rou] - ро
''Σ'', 	''ς'' 	Sigma [′sigmə] - сигма
''Τ'', 	''τ'' 	Tau [tɔ:], [tou]  тау
''Υ'', 	''υ'' 	Upsilon [′ju:psəֽlɔn], [′ʌpsəֽlɔn], Brit :[jup′sailən] - ипсилон
''Φ'', 	''φ'' 	Phi  [fai], [fi:] - фи
''Χ'', 	''χ'' 	Chi [kai] - хи
''Ψ'', 	''ψ'' 	Psi [(p)sai], [psi:] - пси
''Ω'', 	''ω'' 	Omega [ou′mi:gə], [ou′meigə], [ou′megə], [′oumegə] - омега
[["and I" и "and me"]]
[["It is I" и "It is me"]]
[[Speak, Talk, Say or Tell]]
[[Some symbols]]
[[Австралийский вариант английского языка]]
[[Канадский вариант английского языка]]
[[Американский английский]]
[[Американизмы]]
[[Испанизмы в США]]
[[Галлицизмы в США]]
[[Бейсик-инглиш (Basic English)]]
[[Диалекты английского языка (Dialects of English)]]
compound noun
Более интенсивно в США влияние испанского языка, особенно на юго-западе. Такие стандартные испанские и испанизированные индейские заимствования как adios, solo, rancho, buckaroo, tapas, tacos, guacomole, latino широко используются в речи и литературе для придания ей разного рода стилистических, иронических и прочих оттенков. Получили распространение и разного рода ложные испанизмы типа chitos, doritos и т. д.
''Английский язык в Канаде'' (также ''канадский английский''; англ. ''Canadian English''; фр. ''L'anglais canadien'') — название разновидностей, составляющих языковой вариант английского языка на территории Канады. Близок стандартному английскому языку США.
 Английский язык является одним из двух официальных языков Канады на федеральном уровне (наряду с французским). Только в провинции Квебек он не имеет официального статуса, хотя англо говорящее население провинции составляет 8 % и за ними сохраняются определённые языковые права.



Классификацию наречий в английском языке можно разделить по двум категориям: по форме и по значению.
----
Согласно классификации наречий по значению в предложении (одно и тоже наречие может иметь разное значение в предложении), они образуют следующие группы:
* ''Наречия места или направления'' (Adverbs of place or direction) - отвечают на вопрос, ''Где''? ''Куда''? ''Откуда''?
** here (здесь), there (там), where (где), above (выше), at home (дома) и т.п.
*: // I looked for him ''everywhere''. - Я везде его искал?//
* ''Наречия времени'' (Adverbs of time) - отвечают на вопрос, ''Когда''? ''Как долго''? ''Как скоро''? 
** now (сейчас), late (поздно), yesterday (вчера) и т.п.
*: //Will you come home ''late'' today? - Ты сегодня придешь поздно?//
* ''Наречия образа действия'' (Adverbs of manner) -  отвечают на вопрос, ''Как происходит действие''?
** well (хорошо), fast (быстро, крепко), quickly (быстро), easily (легко), carefully (осторожно) и т.п.
*: //I speak English ''badly''. - Я плохо говорю на английском.//
* ''Наречия частотности'' (Adverbs of frequency) - отвечают на вопрос, ''Как часто''? ''Сколько раз''?
** seldom (редко), once (однажды), always ['ɔ:lwəz] (всегда), thrice [θraɪs] (трижды), never (никогда) и т.п.
*: //They ''sometimes'' stay up all night. - Они иногда не спали всю ночь. (просиживали всю ночь на пролет.)//
* ''Наречия степени'' (Adverbs of degree) - отвечают на вопрос, ''Сколько''? ''Насколько (более или менее)''?
** rather (достаточно), a little (немного), too [tu:] (слишком) и т.п.
*://He did it quickly ''enough''. - Он сделал это достаточно быстро.//
* ''Поясняющие  наречия'' (Comment Adverbs) - выражают наше отношение, суждение,  к чему-либо или мнение о чем-либо:
** certainly (конечно), obviously (очевидно), presumably (предположительно), probably (вероятно), undoubtedly (несомненно), sadly (к сожалению), surprisingly (удивительно), unbelievably (невероятно), carelessly (беспечно), foolishly (глупо), rightly (должным образом) и т.п..
*: // ''Apparently'', he didn't hear me when I called. - Очевидно, он не слышал меня когда я кричал.//
* ''Наречия точки зрения'' (Viewpoint Adverbs) - наречие уточняющие с какой-либо точки зрения:
** morally (с моральной точки зрения), visually (наглядно, визуально), technically, geographically, linguistically, outwardly (внешне, снаружи), politically:
*:// ''Morally'', he is all that can be desired. -  В отношении его моральных качеств, лучшего и желать нельзя.//
*:// It makes sense ''politically'' as well as ''economically''. - Это имеет смысл как с политической так и экономической точки зрения.//
* ''Соединительные наречия'' (Connecting Adverbs) - используются для соединения независимых предложений и для присоединения придаточных предложений к главному: then (затем, тогда), in addition (вдобавок), besides (кроме того), moreover, likewise (более того), furthermore (далее), apart from (не говоря уже о), notwithstanding (тем не менее), meanwhile (тем временем), in conclusion (в заключение) и т.п.:
*:// She was very busy; ''nevertheless'', she found time to go skiing. Она была очень занята, тем не менее она время прокатится на лыжах.
It was late, so I went to bed. - Было поздно, поэтому я пошел спать.//
----
Классификацию наречий по форме т.е. способу их образования см. [[Образование наречий (Formation of Adverbs)]]
''Клитика'' (''A Clitic'') -  слово, грамматически самостоятельное, но фонологически зависимое, не имеет ударения и примыкает к другим словам (слову), образуя вместе с ними одно фонетическое слово. Клитики произносятся как [[аффиксы]] но функционируют на уровне фразы а не слова. Клитика может принадлежать любой части речи.

!! Некоторые формы клитиков
* клитики сокращенных  форм глагола ''to be'':
: //@@color:#900;I'''m'', you'''re'', she'''s''@@// и т.п.
* сокращения вспомогательных глаголов:
: //@@color:#900;they'''ll'', they'''ve''@@//
* артикль как правило сливается с определяемым словом:
: //@@color:#900;''a'' desk, ''an'' egg, ''the'' house@@//
* буква '''s'' при образовании притяжательного падежа по определению является клитиком (а не аффиксом) так как может маркировать не одно существительное а [[именную группу слов|Именная группа (The Noun Phrase)]]:
: //@@color:#900;__The Queen of England'''s''__ crown@@ - Корона королевы Англии//

''Количественные числительные'' (''Cardinal Numerals'') обозначают количество предметов и отвечают на вопрос Сколько? (''How many''?)

!!Простые и производные числительные
Количественные числительные от 1 до 12 представляют собой простые слова,  числительные от 13 до 19 оканчиваются на - ''teen'', числительные, обозначающие десятки, оканчиваются на -''ty'';

|0|''zero'' ['zɪərəu] ноль|10|''ten'' [ten] (десять)|||
|1|''one'' [wʌn] (один)|11|''eleven'' [ɪ'levn] (одиннадцать)|||
|2|''two'' [tu:] (два)|12|''twelve'' [twelv] (двенадцать)|20|''twenty'' ['twentɪ] (двадцать)|
|3|''three'' [θri:] (три)|13|''thirteen'' ['θə:r'ti:n] (тринадцать)|30|''thirty'' ['θə:rtɪ] (тридцать)|
|4|''four'' [fɔ:r] (четыре)|14|''fourteen'' ['fɔ:r'ti:n] (четырнадцать)|40|''fo''(''u'')''rty'' ['fɔ:rtɪ] (сорок)|
|5|''five'' [faɪv] (пять)|15|''fifteen'' ['fɪf'ti:n] (пятнадцать)|50|''fifty'' ['fɪftɪ] (пятьдесят)|
|6|''six'' [sɪks] (шесть)|16|''sixteen'' ['sɪks'ti:n] (шестнадцать)|60|''sixty'' ['sɪkstɪ] (шестьдесят)|
|7|''seven'' ['sevn] (семь)|17|''seventeen'' ['sevn'ti:n] (семнадцать)|70|''seventy'' ['sevntɪ] (семьдесят)|
|8|''eight'' [eɪt] (восемь)|18|''eighteen'' ['eɪ'ti:n] (восемнадцать)|80|''eighty'' ['eɪtɪ] (восемьдесят)|
|9|''nine'' [naɪn] (девять)|19|''nineteen'' ['naɪn'ti:n] (девятнадцать)|90|''ninety'' ['naɪntɪ] (девяносто)|

Следующие числительные употребляются только как существительные и требуют перед собой или артикль или другое числительное;
|12|''a dozen'' / ''one dozen'' ['dʌzn] (дюжина) |
|144| ''a gross'' / ''one gross'' [ɡrəus] (12 × 12, ''a dozen dozen'') |
|20|''a score'' / ''one score'' [skɔ:r] (два десятка) |
|100|''a hundred'' / ''one hundred'' ['hʌndrəd] |
|1.000|''a thousand'' / ''one thousand'' ['θauzənd] |
|1.000.000 |''a million'' / ''one million''  ['mɪljən] и т.д. |

Числительные не образуют множественного числа см. ''Существительные меры'' в [[Употребление числа существительного (Noun Number Usage)]];
: //@@color:#900;two ''hundred''@@ - двести
@@color:#900;ten ''thousand''@@ - десять тысяч
@@color:#900;one ''hundred thousand''@@ - сто тысяч
@@color:#900;ten ''million''@@ - десять миллионов и т.д//

!!Составные числительные
К составным относятся числительные начиная со второго десятка, пишутся через дефис;
: {{block{
''twenty-one'' - 21
''thirty-two'' - 32
''fifty-eight'' - 58
''ninety-nine'' - 99
}}}

Примеры образования составных числительных (в американском варианте ''and'' как правило опускается);
: {{block{
''twenty-one thousand'' - 21.000
''a hundred'' (''and'') ''seventeen'' - 117
''three hundred'' (''and'') ''thirty-four'' - 334
''nine hundred'' (''and'') ''ninety-nine thousand'' - 999.000
}}}

!!!Два варианта наименования чисел
В европейской традиции исторически сложились два варианта построения системы наименования чисел; ''короткая шкала'' (''short scale'' - используется в США и все чаще в Великобритании) и ''длинная шкала'' (''long scale'' - все реже используется в Великобритании);
|bgcolor(#8cf): Численное представление |bgcolor(#8cf): Короткая шкала |bgcolor(#8cf): Длинная шкала |
|1.000.000 |''one million''  ['mɪljən] |''one million'' |
|1.000.000.000 |''one billion'' ['bɪljən] или ''a thousand million'' |''one milliard'' ['mɪljɑ:rd] или ''a thousand million'' |
|1.000.000.000.000 |''one trillion'' ['trɪljən] или ''a thousand billion'' |''one billion'' или ''a million million'' |
|1.000.000.000.000.000 |''one quadrillion'' [kwɔ'drɪljən]  или ''a thousand trillion'' |''one billiard'' или ''a thousand billion'' |
|1.000.000.000.000.000.000 |''one quintillion'' [kwɪn'tɪljən] или ''a thousand quadrillion'' |''one trillion'' или ''a million billion'' |
|1.000.000.000.000.000.000.000 |''one sextillion'' [seks'tɪljən] или ''a thousand quintillion'' |''one trilliard'' или ''a thousand trillion'' |

Личные местоимения имеют два падежа; ''именительный падеж'' (''The Nominative case'') и ''объектный падеж'' (''The Objective case''); См. [[Таблица личных и притяжательных местоимений]]

!!Именительный падеж (The Nominative case)
Личные местоимения в ''именительном падеже'' выполняют функцию подлежащего и именной части составного сказуемого;
* В качестве  подлежащего;
*: //@@color:#900;''I'' know him very well.@@ //- Я знаю его очень хорошо.
*: //@@color:#900;''She'' doesn’t understand me.@@ //- Она меня не понимает.
* В качестве  именной части составного сказуемого;
*: //@@color:#900;Who is there? – It is ''I''.@@// - Кто там? – Это я.

Местоимение ''I'' всегда пишется с прописной буквы независимо от места, занимаемого в предложении. Если оно находится в одном предложении с другими личными местоимениями или существительными, то ставится после них;
*: //@@color:#900;My __friend__ and ''I'' are having a conflict.@@ //- У меня с моим другом, сей час конфликт.

Местоимения ''he'', ''she'' употребляются в отношении одушевлённых лиц, ''it'' - в отношении неодушевлённых предметов, абстрактных понятий и животных см. [[Род имен существительных (The Gender of Nouns)]].

!!Объектный падеж (The Objective case)
Личные местоимения в ''объектном падеже'' выполняют функцию дополнения; 
: //@@color:#900;I know ''him'' very well. @@//- Я знаю его очень хорошо.
: //@@color:#900;She doesn’t understand ''me''.@@// - Она меня не понимает.
: //@@color:#900;I sent a letter to ''them''.@@// - Я послал им письмо.

!!
Местоимение множественного числа может ссылаться на неопределенное местоимение в единственном числе или на собирательное существительное.
: //@@color:#900;If __anybody comes__, tell ''them'' I'm not in.@@// - Если кто придет, говори им, что меня нет.
: //@@color:#900;__His family was__ waiting in the next room and ''they'' had not yet been informed.@@ //- Его семья ждала в соседней комнате и они еще небыли проинформированы.

!!Примеры употребления местоимений в именительном и объектном падеже
: //@@color:#900;Mary likes grapes more than ''I''.@@ //- Мария любит виноград больше чем я.
: //@@color:#900;Mary likes grapes more than ''me''.@@// - Мария любит виноград больше чем меня.
: //@@color:#900;I'll be ''you'' and you'll be ''me''.@@// - Я буду тобою а ты мною.(но не: I'll be you and you'll be I.)

Уточнить форму местоимения помогает разворачивание предложения;
: //@@color:#900;Who told him that? It was ''I'' (__who did it__). @@//- Кто ему сказал это? - Я.
: //@@color:#900;She is as tall as ''he'' (__is__).@@ //- Она того же роста, что и он.
: //@@color:#900;Mary likes grapes more than ''I'' (__do__).@@// - Мария любит виноград больше чем я.
: //@@color:#900;Mary likes grapes more than (__Mary likes__) ''me''.@@ //- Мария любит виноград больше чем меня.

Сравните;
: //@@color:#900;It was ''I'' __who__ finished first. @@//- Это  я, тот кто закончил первый.
: //@@color:#900;It was ''me'' __(whom) they elected__ class president.@@// - Это меня выбрали старшиной группы.
: //@@color:#900;It was ''she'' __who__ stole the tart.@@ //- Это - она украла пирог.
: //@@color:#900;It was ''her'' __(whom) they saw__ steal the tart.@@// - Это она, тот кого они видели как воровала пирог.
: //@@color:#900;It was ''I'' __who__ did it.@@// - Это я сделал это.

Место наречия в предложении (Position of Adverbs in English Sentences):
----
# Если наречие является уточнением к прилагательному или другому наречию то оно ставится перед уточняемым словом:
#:// You are driving ''too'' __slowly__. - Ты едешь слишком медленно.//
#:// I'm ''absolutely'' __delighted__. - Я совершенно удовлетворен.//
#:// I bought an ''incredibly'' __expensive__ dress yesterday. - Я вчера купила невероятно дорогое платье.//
#* __У этого правила есть два исключения__, наречия: ''enough'' [ɪ'nʌf] (достаточно), ''indeed'':
#:// I got up quite early but not __early__ ''enough'' to catch him at home. - Я встал достаточно рано, но не достаточно рано чтобы застать его дома.//
##* если в предложении имеется дополнение то наречие ''enough'' может ставится как до так и после него:
###://  I have __got__ ''enough'' __money__ to buy the book. - У меня достаточно денег на покупку этой книги.
I have __got money__ ''enough'' to buy the book.//
#:
#В остальных случаях возможны три варианта расположения наречия в предложении :
#* ''в начале предложения (или части сложного предложения, далее просто "предложение")'',
#* ''в конце предложения'',
#* ''в середине предложения'' - между подлежащим и сказуемом, если сказуемое имеет вспомогательный глагол ''to be'', ''to have'', ''to do'', ''will'', ''shall'', или модальный глагол ''can'', ''may'', ''must'' и т.д. то наречие ставится после первого вспомогательного или модального глагола:
#*:// I __am__ not ''often'' at home nowadays. - Теперь я нечасто бываю дома.//
#*:// He __will__ ''soon'' be back. - Он скоро вернется.//
#*:// We __don’t__ ''often'' meet now. - Мы с'час не часто видимся.//
#** исключением является случай когда наречие служит для того чтобы подчеркнуть, придавать особое значение сказуемому, в этом случае наречие может стоять перед вспомогательным или модальным глаголом:
#**: // I ''just'' __can't__ understand it. - Я просто этого не понимаю.//
#**:// I ''really'' __don't__ know what she wants. - Я действительно не знаю чего она хочет.//
#**: // I ''simply'' __wouldn't__ stand it. - Я просто не мог перенести это. (У меня не было ни какого желания терпеть это.)//
: В этих трех случаях, положение наречия в предложении как правило определяется согласно классификации наречий по значению, и часто имеет вариации обусловленные традицией употребления конкретного наречия:
# ''Наречия времени'' (Adverbs of time) и наречия определенной частотности (Definite Frequency) (такие как: ''last week'', ''every year'')  могут стоять либо в самом начале (если их надо выделить по смыслу), либо в конце предложения:
#: //''Tomorrow'' I'll show you my work. - Завтра, я покажу тебе свою работу.//
#: //How long have you been ''here''? Not long. We arrived ''about five minutes ago''.//
#* Некоторые наречие времени (''now'', ''already'') могут стоять в середине предложения:
##: // He is ''now'' in the office. - Он с'час в конторе.
He is in the office ''now''.
''Now'' he is in the office.
He is ''already'' at work. - Он уже на работе.
He is at work ''already''. Он уже на работе.//
#* Наречия неопределенного времени, частоты, длительности (''usually'', ''always'', ''soon'', ''never'', ''ever'', ''often'', ''forever'', ''occasionally'', ''sometimes'' и др.) как правило стоят в середине предложения:
##: // He __will__ ''soon'' be back. - Он скоро вернется.
Не ''usually'' rings me up in the morning. - Обычно он звонит мне (по телефону) утром. / Обычно он будит меня звонком по утрам.
We don’t ''often'' meet now. - Мы с'час не часто видимся.//
# ''Наречия образа действия'' (Adverbs of manner) употребляемые с пе­реходным глаголом, ставятся в конце предложения:
#:// She drives __the car__ ''carefully''. - Она управляет машиной аккуратно.
She drives ''carefully''. - Она ездит осторожно.
He doesn't speak ''much''. - Он много не разговаривает.
It rains ''hard''. - Дождь льет очень сильно.
You speak English ''perfectly''. - Вы отлично разговариваете по-английски.//
#* наречия образа действия с суффиксом -''ly'', уточняющие переходные глаголы (глаголы, обозначающие действие, которое прямо направлено на предмет), ставятся как в середине, так и в конце предложения:
##:// I had ''completely'' forgotten it. - Я совершенно забыл об этом.
I had forgotten it ''completely''.//
#* в предложениях начинающихся с ''how'', наречие образа действия ставится после ''how'', а не в конце предложения:
##:// __How__ ''beautifully'' she sings. - Как чудесно она поет.//
# ''Наречия места или направления'' (Adverbs of place or direction) ставятся в конце предложения:
#:// I didn't see him ''here''. - Я не видел его здесь
My son will be ''home'' soon. - Мой сын скоро будет дома. (в данном случае ''soon'' тоже наречие, см. порядок из нескольких наречий ниже)
We always spend our holiday ''abroad''. - Мы всегда проводим отпуск за границей.//
# ''Наречия частотности'' (Adverbs of frequency) ставятся в середине предложения:
#:// She ''often'' go shopping in the evenings. - Она часто ходит по магазинам по вечерам.
We are ''usually'' here in summer. - Мы обычно бываем здесь летом.
I have ''never'' been abroad. - Я ни когда не был заграницей.
I ''hardly ever'' watches TV. - Я практически не (едва когда-либо) смотрю телевизор.//
# ''Наречия степени'' (Adverbs of degree) ставятся в середине предложения:
#:// We ''rather'' like it. - Пожалуй. это нам нравится.
They didn't ''even'' try to help me. - Они даже не пытались мне помочь.
He ''hardly'' works. - Он еле-еле (едва) работает.//
#* Наречия степени ''badly'' и ''very much'', ''so much'', ''hard'', ''a bit'', ''a lot'', ''a little'' обычно стоят в конце предложения:
##:// He needs a new coat ''badly'' - Ему крайне необходима новая куртка.
##: We enjoyed the concert ''very much''. - Нам очень понравился концерт.
The ice is frozen ''hard''. - Лед замёрз напрочь.
I can ride a bike ''a little''. - Я могу немного ездить на мотоцикле.//
# ''Поясняющие наречия'' (Comment Adverbs) и ''наречия точки зрения'' (Viewpoint Adverbs) как правило ставятся в начале предложения или реже в конце предложения (выделяются на письме запятыми):
#:// ''Astonishingly'', it does work. - Удивительно, но это (оно) работает.
''Economically'', the project is bound to fail. - С экономической точки зрения, проект обречен на провал (обязан провалится).
The book was based on his experience, ''apparently''. - Несомненно, основой для книги является его (жизненный) опыт.//
----
Порядок нескольких наречий в предложении:
# Если уточняемый глагол является глаголом движения (''come'', ''go'', ''arrive'', ''leave'', ''walk'', ''run'', ''fly'' и т.п.) то наречия употребляются в следующем порядке: наречие места или направления -> наречие образа действия -> наречие времени:
#://  I will __go__ ''there slowly tomorrow''. - Я завтра медленно поеду туда.//
# Если уточняемый глагол не является глаголом движения то наречия употребляются в следующем порядке: наречие образа действия -> наречие места или направления -> наречие времени:
#:// We __waited__ him ''patiently outside yesterday''// - Мы вчера терпеливо прождали его снаружи.
----
Некоторые особые случаи расположения наречий в предложении:
# Для придания эмоциональной окраски и усиления предложения, наречие ставится на первое место за которым следует уточняемый глагол (как правило это наречия; ''seldom'', ''rarely'', ''never'', ''hardly ever'', ''not even once''):
#:// ''Never'' __have__ I seen such a sight. - Никогда не доводилось мне становиться свидетелем такого зрелища.
''Seldom'' __do__ we hear such sensible songs nowadays.- Редко в наши дни мы можем слышать осмысленные песни .//
# Если наречие требуется выделить по смыслу, подчеркнуть его значимость то наречие ставится в начало предложения:
#:// ''Normally'' I get up at 7 o'clock. But today I am on holiday. - Обычно я встаю в 7 часов. Но сегодня у меня выходной. 
''Sometimes'' I read esoteric books. - Иногда я читаю эзотерические книги.
''Once a week'' I go for a swim. - Раз в неделю я хожу на плавание (поплавать).
''Last'' time we met, he was well. Крайний раз, когда мы виделись, он был в порядке (здоров).//
# Наречия места ''here'', ''there'' могут употребляться как вступительное, усилительное, указывающее на присутствие или расположение слово, при этом смысловой глагол  следует после наречия (если подлежащие выражено местоимением то сохраняется обычный порядок слов):
#:// ''Here'' __are__ your spectacles - Вот и твои очки.
''There'' __come__ your friends - Вот идут твои друзья.
''Here'' __comes__ your coffee. - А вот и Ваше кофе.
''Here'' they __are__. - А вот и они.
''There'' he __comes__ - Вон он, идет.//
# Наречие ''there'' может употребляться как вступительное, вводное слово указывающее на существование чего-либо, при этом смысловой глагол следует после наречия (употребляется как правило с глаголами ''to be'', ''to appear'', ''to seem''):
#:// ''There'' __is__ a book on the table. На столе лежит книга.
''There'' __are__ only twenty-four hours in a day. - В сутках только 24 часа.
''There'' __will__ be a party tomorrow. - Завтра будет вечеринка.
''There'' __seems__ to be a message for you. - Кажется для Вас есть сообщение.
''There'' __lived__ an old woman. - Жила была старуха.//
#*В вопросительных предложениях глагол ставится перед наречием ''there'', если  сказуемое содержит вспомогательный или модальный глагол, то перед наречием выносится только первый вспомогательный или модальный глагол:
#:// __Can__ ''there'' __be__ any doubt about it? - Разве могут быть, насчет этого, какие то сомнения.
__Will__ ''there'' __be__ a bus at six o'clock? - Будет ли автобус в 6 часов.
__Is__ ''there'' any difference there - Если там какая-либо разница.


''Местоимение'' - часть речи, употребляемая вместо имени существительного, прилагательного, имени числительного или наречия. Местоимение не называет лицо, предмет, определение или признак оно лишь указывает на лицо, предмет, определение или признак уже известного из контекста.
: //@@color:#900;Mary gave __Peter__ a __magazine__. ''He'' took ''it''.@@// - Мариша дала Петру журнал. Он его взял.
: //@@color:#900;These are __coloured pecils__. I'd like to have ''such'' pencils. @@//- Это цветные карандаши. Я хотел бы такие карандаши.

# [[Личные местоимения (Personal Pronouns)]]
#* [[Таблица личных и притяжательных местоимений]]
# [[Притяжательные местоимения (Possessive Pronouns)]]
# [[Возвратные местоимения (Reflexive pronouns)]]
# [[Указательные местоимения (Demonstrative Pronouns)]]
# [[Вопросительные местоимения (Interrogative Pronouns)]]
# [[Неопределенные местоимения (Indefinite Pronouns)]]
#* [[some, any, no (их производные с body, one, thing), one, none]]
#* [[all, each, every, everybody, everyone, everything]]
#* [[other]]
#* [[either, neither]]
#* [[both]]
#* [[much, many и их аналоги]]
#* [[little, few, a little, a few]]
# [[Взаимные местоимения (Reciprocal Pronouns)]]
# [[Относительные местоимения (Relative pronouns)]]
# [[Соединительные местоимения (Connective Pronouns)]]

!!Форма множественного числа существительных заимствованных из латинского и греческого языка
Некоторые имена существительные латинского и греческого происхождения сохранили латинскую или греческую форму множественного числа как правило в научной литературе, но в зависимости от контекста и традиций могут образовывать множественное число по общим правилам;
* Окончание -''a'' меняется на -''ae'' (или -''æ'');
*: ''alumna'' - ''alumnae''
*: ''formula'' [ˈfɔ:rmjulə] - ''formulae'' ['fɔ:rmjuli:], ''formulas'' ['fɔ:rmjuləz] (формула - формулы)
*: ''encyclopedia'' - ''encyclopediae'' (встречается редко) - ''encyclopedias''
* Окончание -ex меняется на -ices;
*: ''index'' - ''indices'' - ''indexes''
*: ''matrix'' - ''matrices''
*: ''vertex'' - ''vertices''
* Окончание -''is'' меняется на -''es'';
*: ''analysis'' [ə'næləsɪs] - ''analyses'' [ə'næləsi:z] (анализ - анализы)
*: ''axis'' ['æksɪs] - ''axes'' ['æksɪz] (ось - оси)
*: ''basis'' ['beɪsɪs] - ''bases'' ['beɪsi:z] (основа - основы)
*: ''crisis'' ['kraɪsɪs] - ''crises'' ['kraɪsi:z] (кризис - кризисы)
*: ''testis'' - ''testes''
*: ''thesis'' - ''theses'' (тезис - тезисы)
* Окончание -''ies'' остается не изменой;
*: ''series'' ['sɪəri:z] (серия - серии)
*: ''species''['spi:ʃi:z] (биол. вид - виды)
* Окончание -''on'' меняется на -''a'';
*: ''automaton'' - ''automata''
*: ''criterion'' - ''criteria''
*: ''phenomenon'' [fɪ'nɔmɪnən] - ''phenomena'' [fɪ'nɔmɪnə] (явление - явления)
*: ''polyhedron'' - ''polyhedra''
* Окончание -''um'' меняется на -''a'';
*: ''addendum'' - ''addenda''
*: ''datum'' ['deɪtəm] - ''data'' ['deɪtə] (данная величина - данные)(в современном английском ''data'' часто употребляется как неисчисляемое сущ.)
*: ''erratum'' [e'rɑ:təm] - ''errata'' [e'rɑ:tə] (опечатка - список опечаток)
*: ''forum'' - ''fora'' - ''forums''
*: ''medium'' ['mi:djəm] - ''media'' (в современном английском ''media'' часто употребляется как неисчисляемое сущ.) - mediums (в значении: спиритуалист)
*: ''corrigendum'' - ''corrigenda''
*: ''memorandum'' [,memə'rændəm] - ''memoranda'' [,memə'rændə], ''memorandums'' [,memə'rændəmz] (запись 'на память', чтобы не забыть - записки)
*: ''millennium'' - ''millennia''
* Окончание -''us'' меняется на -''i'', -''era'' или -''ora'';
*: ''alumnus'' - ''alumni''
*: ''corpus'' - ''corpora''
*: ''census'' - ''censuses''
*: ''focus'' - ''foci''
*: ''genus'' - ''genera''
*: ''locus'' ['ləukəs] - ''loci'' ['ləusaɪ] (местоположение - местоположения)
*: ''radius'' ['reɪdɪəs], [ˈreɪdjəs] - ''radii'' ['reɪdɪaɪ] (радиус - радиусы)
*: ''syllabus'' - ''syllabi'' - ''syllabuses''
*: ''viscus'' - ''viscera''
*: ''cactus'' - ''cacti'' - ''cactuses''
*: ''fungus'' - ''fungi''
*: ''hippopotamus'' - ''hippopotami'' - ''hippopotamuses''
*: ''nucleus'' - ''nuclei'' (ячейка - ячейки)
*: ''octopus'' - ''octopi'' (редко) -''octopodes'' - ''octopuses''
*: ''platypus'' - ''platypi'' (редко) - ''octopodes'' - ''platypuses''
*: ''terminus'' - ''termini'' - ''terminuses''
*: ''uterus'' - ''uteri'' - ''uteruses''
* Окончание -''us'' остается не изменой;
*: ''meatus'' - ''meatus''
*: ''status'' - ''status''
* Окончание -''ma'' в греческих словах меняется на -''ta'', но обычно множественное число образуется по общим правилам;
*: ''stigma'' - ''stigmata'' - ''stigmas''
*: ''stoma'' - ''stomata'' - ''stomas''
*: ''schema'' - ''schemata'' - ''schemas''
*: ''dogma'' - ''dogmata'' - ''dogmas''
*: ''lemma'' - ''lemmata'' - ''lemmas''
*: ''anathema'' - ''anathemata'' - ''anathemas''



Сложные имена существительные образуют множественное число следующим образом:
* Когда сложное имя существительное образовано от существительного общего рода для уточнения пола то оба элемента сложного существительного принимают форму множественного числа;
: ''man-servant'' - ''men-servants'' (слуга - слуги)
: ''woman-writer'' - ''women-writers'' (писательница - писательницы)
* Существительные обозначающие человека какой-нибудь профессии образованные от существительных обозначающие определенную службу, род занятия или объект деятельности с помощью -''man'', -''woman'' и т.п., изменяют число с помощью основного слова;
: ''policeman'' [pə'li:smən] (полицейский) - ''policemen'' [pə'li:smən] (полицейские)
: ''sportswoman'' ['spɔ:ts,wumən] (спортсменка) - ''sportswomen'' ['spɔ:ts,wɪmɪn] (спортсменки)
: ''schoolgirl'' (школьница) - ''schoolgirls'' (школьницы)
: ''fisherman'' (рыбак) - ''fishermen'' (рыбаки)
* Множественное число сложных имен существительных образуется путем прибавления окончания множественного числа к существительным с более общим значением:
: ''family-name'' - ''family-names'' (фамилия - фамилии)
: ''ball-bearing'' - ''ball-bearings'' (шарикоподшипник - шарикоподшипники)
: ''commander-in-chief'' - ''commanders-in-chief'' (главнокомандующий - главнокомандующии)
: ''looker-on'' - ''lookers-on'' (зритель, наблюдатель - зрители, наблюдатели)
: ''passer-by'' - ''passers-by'' (прохожий - прохожие)
: ''teaspoonful'' - ''teaspoonsful'' (полная чайная ложка (чего-л.) - полные чайные ложки) (в разговорном варианте; ''teaspoonfuls'')
* При отсутствии существительного в составе комплекса, -''s'' добавляется к последнему элементу:
: ''forget-me-not'' - ''forget-me-nots'' (незабудка - незабудки)
: ''merry-go-round'' - ''merry-go-rounds'' (карусель - карусели)
: ''good-for-nothing'' ['ɡudfɔr,nʌθɪŋ] - ''good-for-nothings'' ['ɡudfɔr,nʌθɪŋs] (бездельник - бездельники)

''Наречие'' (''The Adverb'') - часть речи, которая обозначает признак действия или другого признака, наречие уточняет значение любой части речи (глагола, прилагательного, другого наречия, всего предложения или простого предложения в сложном предложении) за исключением существительного (определителем которого является прилагательное или детерминатив (определяющее слово)). Наречие как правило отвечает на вопрос Как? Каким образом? Когда? Где? и До каких пределов? (as how?, in what way?, when?, where?, and to what extent?). Эту же функцию выполняют 
: to __run__ ''quickly'' - бегать быстро,
: ''very'' __brave__ - очень храбрый,
: ''too'' __frequently__ - слишком часто.
: ''Normally'' __I get up at 7 o'clock__. But today I am on holiday. - Обычно я встаю в 7 часов. Но сегодня у меня выходной. 

Adverbs typically answer questions such as how?, in what way?, when?, where?, and to what extent?. This function is called the adverbial function, and is realized not just by single words (i.e., adverbs) but by adverbial phrases and adverbial clauses.http://en.wikipedia.org/wiki/Adverb

''Наречия места и направления'' (Adverbs of place and direction) -наречия места и направления обозначают место действия или его направление, отвечают на вопрос, ''Где''? ''Куда''? ''Откуда''?

К ним относятся: ''here'' (здесь, сюда), ''there'' (там), ''near'' (близко, около), ''far'' (далеко), ''where'' (где, куда), ''somewhere'' (где-то, куда-то), ''anywhere'' (где-нибудь, куда-нибудь), ''nowhere'' (нигде, никуда), ''elsewhere'' (где-нибудь еще), ''upstairs'' (наверху, наверх), ''downstairs'' (внизу, вниз), ''aboard'' (на борту, на борт), ''afloat'' (на плаву) и др.
: // I looked for him ''everywhere''. - Я везде его искал?//
Наречие ''somewhere'' (где-то, куда-то) употребляется в утвердительных предложениях, ''anywhere'' (где-нибудь, куда-то) – в вопросительных и отрицательных предложениях; ''nowhere'' употребляется преимущественно в сокращенных отрицательных ответах.

Неличный, или нефинитный оборот (Non-finite Clause) - это придаточное предложение, в качестве сказуемого которого выступает [[неличная форма глагола]]. В зависимости от употребляемой неличной формы глагола выделяют следующие обороты:
* [[Инфинитивный оборот (The Infinitive Clause)]]. Сказуемое - инфинитив:
: //@@color:#900;He went to London ''to see his parents''.@@ - Он поехал в Лондон навестить родителей.//
* [[Причастный оборот (The Participle Clause)]]. Сказуемое - причастие:
:: //@@color:#900;The grandfather was sitting upon a stool, ''reading a newspaper''.@@ - Дед сидел на табуретке и читал газету.//

''Неопределенные местоимения'' в роли [[определителя|Определяющее слово (The Determiner)]] указывают на неопределенное количество или качество, а в роли [[существительного|Существительное (The Noun)]] - на неопределенные или неизвестные предметы и лица:
* [[some, any, no (их производные с body, one, thing), one, none]]
* [[all, each, every, everybody, everyone, everything]]
* [[other]]
* [[either, neither]]
* [[both]]
* [[much, many и их аналоги]]
* [[little, few, a little, a few]]
Неопределенный артикль ''a'' (''an'') употребляется перед конкретными и исчисляемыми существительными в единственном числе.
Неопределенный артикль имеет форму a [ə] перед существительными, начинающимися с согласной, и форму an [en] перед существительными, начинающимися с гласной или с согласной буквы h, если она не произносится;
: ''a'' lamp [ə 'læmp] (лампа)
: ''a'' unicorn [ə 'ju:nɪkɔ:n] (единорог)
: ''an'' umbrella [en əm'brelə] (зонтик)
: ''an'' apple [en 'æpəl] (яблоко)
: ''an'' hour [en 'auər] (час)
Используя существительное с неопределенным артиклем мы представляем предмет как один из ему подобных;
: //@@color:#900;It is a lamp and not a candle.@@ - Это (какая то, одна) лампа а не (какая то, не важно какая) свеча.
@@color:#900;He is a student.@@ - Он студент.// (один студент среди многих других студентов)
Если перед существительным в единственном числе стоит неопределённый артикль, то во множественном числе он не употребляется;
: //@@color:#900;These are lamps and not candles.@@ - Это лампы а не свечи.
@@color:#900;They are students.@@ - Они студенты.//
Употребление неопределенного артикля с именем существительным вещественным, отвлеченным, неисчисляемым означает изменение значения слова и переход его  в конкретное существительное;
: ''iron'' (железо) - ''an iron'' (утюг)
: ''work'' (работа) - ''a work'' (произведение)
: ''silence'' (тишина) - ''a silence'' (пауза, тишина)
: ''kindness'' (доброта) - ''a kindness'' (доброе дело)
: ''beer'' (пиво) - ''a beer'' (банка / кружка пива)
: ''ice'' (лед) - ''an ice'' (мороженое)
Форма множественного числа как правило образуется с помощью окончания ''-s'' или ''-es'', которое прибавляется к основе единственного числа: ''book'' [buk]- ''books'' [buks], ''boy'' [bɔɪ] - ''boys'' [bɔɪz], ''house'' ['haus] - ''houses'' ['hausiz].

Окончание множественного числа читается как [s] после глухих согласных, как [z] после звонких согласных и гласных, и как [iz] после ''s''; ''ss'' [s]; ''sh'' [ʃ]; ''ch'', ''tch'' [tʃ]; ''x'' [ks]; ''books'' [buks], ''boys'' [bɔɪz], ''rains'' [reɪnz], ''classes'' ['klɑːsiz]. В некоторых диалектах возможен  переход согласной, на которую оканчивается слово в единственном числе,  из глухой в звонкую: ''house'' ['haus] - ''houses'' ['hauziz], ''bath'' ['bæθ] ['bɑ:θ] - ''baths'' ['bæðz] ['bɑ:ðz], ''mouth'' ['mauθ] -''mouths'' ['mauðz].

!!Изменение на письме
Окончание ''-es'' во множественном числе имеют:
* Существительные, оканчивающиеся в единственном числе на ''s'', ''ss'', ''sh'', ''ch'', ''tch'', ''x'';
*: ''bus'' - ''buses''
*: ''class'' - ''classes''
*: ''bush'' - ''bushes''
*:''speech'' - ''speeches''
*:''match'' - ''matches''
*: ''box'' - ''boxes''.
* Существительные, оканчивающиеся на ''y'', перед которым стоит согласная (при этом ''y'' меняется на ''i'') образуют множественное число окончанием ''-es'';
*: ''army'' - ''armies''
*: ''factory'' - ''factories''
** Если букве у предшествует гласная, то прибавляется окончание -''s'', и ''у'' не меняется;
**: ''way'' - ''ways''
**: ''key'' - ''keys''
**: ''boy'' - ''boys''.
* Ряд существительных оканчивающихся в единственном числе на  -''f'' или -''fe'' образуют множественное число окончанием ''-es'', ''f'' при этом меняется на -''v''. Данное правило касается только следующих существительных;
** ''calf'' - ''calves'' (теленок - телята)
** ''half'' - ''halves'' (половина - половинки)
** ''elf'' [elf] - ''elves'' [elvz] (эльф - эльфы)
** ''knife'' - ''knives'' (нож - ножи)
** ''leaf'' - ''leaves'' (лист дерева - листья)
** ''life'' - ''lives'' (жизнь - жизни)
** ''loaf'' - ''loaves'' (каравай - караваи)
** ''self'' - ''selves'' (собственная личность - мы сами)
** ''sheaf'' - ''sheaves'' (связка - связки)
** ''shelf'' - ''shelves'' (полка - полки)
** ''thief'' - ''thieves'' (вор - воры)
** ''wife'' - ''wives'' (жена - жены)
** ''wolf'' - ''wolves'' (волк - волки)
*** в ряде случаев наблюдается вариация между формами с окончанием ''f'' и ''v'';
***: ''hoof'' [hu:f]  - ''hoofs'', ''hooves''
***: ''scarf'' - ''scarfs'', ''scarves''
***: ''wharf'' - ''wharfs'', ''wharves''
* Существительные, оканчивающиеся в единственном числе на ''o'';
*: ''hero'' - ''heroes''
*: ''potato'' - ''potatoes''
*: ''tomato'' - ''tomatoes''
*: ''cargo'' - ''cargoes''

Существительные оканчивающиеся на -''о'' образуют множественное число при помощи окончания -''s'' в следующих случаях:
* Когда конечному -о предшествует гласная:
*: ''radio'' - ''radios'' (радиоприемник - радиоприемники)
*: ''kangaroo'' - ''kangaroos'' (кенгуру - кенгуру)
* Когда существительное на ''-о'' является сокращением:
*:''photo''(''graph'') - ''photos'' (фото(графия) - фото(графии))
*: ''kilo''(''gramme'') - ''kilos'' (кило(грамм)- кило(граммы))
* Заимствованные из иностранных языков слова;
*: ''canto'' - ''cantos''
*: ''homo'' - ''homos''
*: ''photo'' - ''photos''
*: ''zero'' - ''zeros''
*: ''piano'' - ''pianos''
*: ''portico'' - ''porticos''
*: ''pro'' - ''pros''
*: ''kimono'' - ''kimonos''
** в ряде случаев наблюдается вариация с -''s'' и -''es'';
**: ''flamingo'' - ''flamingos'' - ''flamingoes''
**: ''mango'' - ''mangos'' - ''mangoes''
**: ''volcano'' - ''volcanos'' - ''volcanoes''

----
# В английском языке есть простые наречия (simple), которые состоят только из одного корня:
#: ''often'' [ˈɔfn] (часто)
#: ''seldom'' [ˈseldəm] (редко)
#: ''never'' ['nevər] (никогда)
#: ''still'' ['stɪl] (все еще)
# Производные (derived), образованные с помощью префиксов или специального суффикса -''ly'' (см. ниже):
#: ''downstairs'' (down+stairs) ['daun'stɛərz] (внизу, вниз)
#: ''slowly'' (slow+ly) ['sləulɪ] (медленно)
# Сложные (compound), состоящие из нескольких корней:
#: ''anywhere'' (any+where) ['enɪwɛər] (где угодно)
#: ''somehow'' (some+how) ['sʌmhau] (как-нибудь)
# Составные (composite), состоящие из нескольких слов:
#: ''from time to time'' (время от времени)
#: ''at last'' (наконец)
----
Большинство производных наречий образуется от других частей речи, чаще от прилагательных при помощи суффикса -''ly'' [lɪ] (происходит от слова ''like'' (подобный)):
: ''month'' [mʌnθ] (месяц) - ''monthly'' ['mʌnθlɪ] ((еже)месячный)
: ''quick''  [kwɪk] (быстрый) - ''quickly'' ['kwɪklɪ] (быстро)
При образовании наречий при помощи суффикса -''ly'' соблюдаются следующие правила:
# Если слово оканчивается на букву  -''y'', то она меняется на -''i'' + ''ly'':
#: ''day'' [deɪ] (день) - ''daily'' ['deɪlɪ] (ежедневно)
#: ''easy'' ['i:zɪ] (легкий) - ''easily'' ['i:zɪlɪ] (легко)
# Если слово оканчивается на -''le'', то конечное -''e''  заменяется на -''y'' без прибавления -''ly'':
#: ''probable'' ['prɔbəbl] (вероятный) - ''probably'' ['prɔbəblɪ] (вероятно)
#: ''gentle'' ['dʒentl] (нежный) - ''gently'' ['dʒentlɪ] (нежно)
# Если прилогательное оканчивается на -''ic'', то наречие образуется прибавлением окончанием -''ally'':
#: ''basic'' ['beɪsɪk] (основной) - ''basically'' ['beɪsɪkəlɪ] (по существу, в основном)
#: ''economic'' [,i:kə'nɔmɪk] (экономический) - ''economically'' [,i:kə'nɔmɪkəlɪ] (экономно)
#: @@background-color:#FCF;в этом правиле есть исключение:@@ ''public'' ['pʌblɪk] (общественный) - ''publicly'' ['pʌblɪklɪ] (публично)
# Во всех других случаях наречие образуется простым прибавлением к основе суффикса -''ly'':
#: ''beautiful'' ['bju:təful] (красивый) - ''beautifully'' ['bju:təfulɪ] (красиво)
#: ''brave'' [breɪv] (смелый) - ''bravely'' ['breɪvlɪ] (смело)
''Примечание''. Некоторые слова, образуемые от существительных при помощи суффикса -lу, являются не наречиями, а прилагательными: ''friendly'' (дружественный), ''brotherly'' (братский), ''manly'' (мужественный) и т. д.
----
*Некоторые наречия образуются от прилагательных не изменяя его форму (как правило короткие и общеупотребительные наречия):
*:
**: ''well'' [wel] (хороший) - ''well'' (хорошо)
**: ''much'' [mʌtʃ] (много - очень)
**: ''long'' ['lɔŋ] (долгий, длинный - долго, давно)
**: ''fast'' ['fɑ:st] (быстрый, крепкий - быстро, крепко)
**: ''little'' ['lɪtl] (маленький - мало)
**: ''hard'', ''early'', ''late'', ''far'', ''straight''
*: //I'm quite ''well''. - я прекрасно себя чувствую.(Я есть вполне __хороший__(о самочувствии))// (прилагательное) [[см. употребление наречий|Употребление наречий (The Use of Adverbs)]]
*: //He paints ''well''. - Он хорошо рисует.// (наречие)
* Наречия, образованные присоединением суффикса -''ly'' от существительных, обозначающих период времени, совпадают по форме с прилагательными:
*:
**: ''hourly''
**: ''daily'' ['deɪlɪ] (ежедневный) - ''daily'' (ежедневно)
**: ''weekly''
**: ''fortnightly''
**: ''monthly''
**: ''quarterly''
**: ''yearly'' и т. п.
*:// The buses run ''hourly'', - Автобусы ходят ежечасно.//
----
* Некоторые наречия образованные от прилагательных имеют две формы: одну совпадающую с прилагательным а другую образованную с помощью суффикса -''ly'', и часто отличаются по значению:
*:
**: ''hard'' [hɑ:rd] (твердый, трудный) - ''hard'' (упорно, твердо) - ''hardly'' ['hɑ:dlɪ] (едва, еле-еле)
**: ''short'' [ʃɔ:rt] (короткий) - ''short'' (внезапно, преждевременно) - ''shortly'' ['ʃɔ:tlɪ] (кратко, резко, вскоре)
*: //@@color:#900;She has a very ''short'' memory.@@ - У неё очень короткая память. //(прилагательное)
*: //@@color:#900;He stoped ''short''.@@ -  Он внезапно остановился.// (наречие)
*: //I'll be ready ''shortly''. - Я скоро буду готов.// (наречие)
*: //Nelly works ''hard''. - Нелли усердно (много) работает.
Nelly ''hardly'' works. - Нелли еле-еле (едва) работает.//
* Употребление общеупотребительных наречий с суффиксом -''ly'' и наречий того же корня без суффикса не подчиняется определенным правилам и обусловлено традицией (значение этих наречий могут не отличатся или передавать некоторые оттенки).
*: //He guessed ''wrong'' - Он не угадал.
I was ''wrongly'' informed - Меня неверно информировали.//


Neither written nor spoken English generally marks words as belonging to one part of speech or another, as they tend to be understood in the context of the sentence. Words like neigh, break, outlaw, laser, microwave and telephone might all be either verb forms or nouns. Although -ly is a frequent adverb marker, not all adverbs end in -ly (-wise is another common adverb marker) and not all words ending in -ly are adverbs. For instance, tomorrow, fast, very can all be adverbs, while early, friendly, ugly are all adjectives (though early can also function as an adverb).
Окончание притяжательного падежа читается как [s] после глухих согласных, как [z] после звонких согласных и гласных и как [iz] после ''s''; ''ss'' [s]; ''sh'' [ʃ]; ''ch'', ''tch'' [tʃ]; ''x'' [ks];
: ''cat's'' ['kæts]
: ''dog's'' ['dɔ:gz]
: ''Mary's'' ['meri:z]
: ''actress's'' ['æktrəsiz]

Для существительных, образующих множественное число с помощью ''s'', притяжательный падеж обозначается только апострофом. При этом звучание общего и притяжательного падежей совпадает:
: the ''cats'' [ðə 'kæts] - кошки,
: the ''cats' ''tails [ðə 'kæts 'teilz] - хвосты кошек.

Те существительные, которые во множественном числе не имеют окончания ''s'', образуют притяжательный падеж при помощи окончания ''s'', перед которым ставится апостроф:
: the ''children'' [ðə 'tʃildrən] - дети
: the ''children's'' books [ðə 'tʃildrənz buks] - книги детей

Имена собственные, оканчивающиеся на ''-s'', ''-x'', в единственном числе в притяжательном падеже, на письме, иногда обозначаются только апострофом, при этом в произношении сохраняется окончание [iz];
: Engels'(s) works&nbsp;['eŋgəlziz 'wə:rks] (работы Энгельса),
: Marx'(s) "Capital" ['mα:rksiz 'kæpətəl] ("Капитал" Маркса).

Основная форма прилагательного - положительная степень. Формы сравнительной и превосходной степени обычно образуются от основной двумя способами:
* Если прилагательное в основной форме состоит из одного слога, его сравнительная степень образуется при помощи суффикса -''er'', а форма превосходной степени - при помощи суффикса -''est''
*: ''cold'' - ''colder'' - ''coldest'' (холодный - более холодный - самый холодный)
* Прилагательные, основная форма которых состоит из трёх и более слогов,сравнительная и превосходная форма образуются при помощи слов ''more'' и ''most'' соответственно:
*: ''difficult'' - ''more difficult'' - ''most difficult'' (трудный - более трудный - самый трудный)
* От двусложных прилагательных формы сравнительной и превосходной степени также образуются при помощи more и most но с некоторыми исключениями:
*: ''famous'' - ''more famous'' - ''most famous'' (знаменитый - более знаменитый - самый знаменитый)
*: исключения:
**: ''easy'' - ''easier'' - ''easiest'' (легкий - более легкий - самый легкий )
**: ''clever'' - ''cleverer'' - ''cleverest'' (умный - ...)
**: ''narrow'' - ''narrower'' - ''narrowest'' (узкий - ...)
Некоторые прилагательные образуют степени сравнения особо:
*:
**: ''good'' - ''better'' - ''best'' (хороший - ...)
**: ''bad'' / ''ill'' - ''worse'' - ''worst'' (плохой / дурной, вредный - ...)
**: ''little'' - ''less'' - ''least'' (маленький - ...)
**: ''much'' / ''many'' - ''more'' - ''most'' (много - ...)
**: ''old'' - ''older'' / ''elder'' - ''oldest'' / ''eldest'' (старый - более старый / старший по возрасту - самый старый / самый старший)
*:// @@color:#900;I have a wife, the ''worst'' that may be.@@// Chaucer. [1913 Webster] - Мая жена самая отвратительная из возможных.
*: // @@color:#900;Love betters what is ''best''.@@// Wordsworth. [1913 Webster] - Любовь улучшает лучшее.
*: // @@color:#900;''Less'' noise, please!@@ //- (По)тише, пожалуйста!
*: // @@color:#900;Let the ''elder'' men among us emulate their own earlier deeds.@@ // Jowett (Thucyd. ) [1913 Webster] - Пусть более старшие из нас посостязаются в своих былых делах.
При прибавлении суффиксов -''er'' и -''est'' к основной форме прилагательного при письме происходят следующие изменения:
* ''y'' меняется на ''i'' после согласной;
*: ''dry'' - ''drier'' - ''driest'' (сухой -...)
*: ''gay'' - ''gayer'' - ''gayest''  (веселый - ...)
* ''e'' в конце слова опускается:
*: ''nice'' - ''nicer'' - ''nicest'' (милый - ...)
* в односложных прилагательных после краткого гласного согласная удваивается:
*: ''big'' - ''bigger'' - ''biggest'' (большой - ...)

When talking about jobs that are traditionally done by the other sex, some people say: a male secretary/nurse/model (NOT man) or a woman/female doctor/barrister/driver. However this is now not usually used unless you need to emphasize which sex the person is, or it is still unusual for the job to be done by a man/woman: My daughter prefers to see a woman doctor. * They have a male nanny for their kids. * a female racing driver.
''Определённый артикль the'' может употребляется перед любым нарицательным существительным, как в единственном , так и во множественном числе.

''the'' произносится как [ðə] перед именами существительными, начинающимися с согласной буквы и как [ði:] - перед именами существительными, начинающимися с гласной буквы или с согласной, когда она не произносится;
: ''the'' lamp [ðə 'læmp] (лампа)
: ''the'' unicorn [ðə 'ju:nɪkɔ:n] (единорог)
: ''the'' umbrella [ði: əm'brelə] (зонтик)
: ''the'' apple [ði: 'æpəl] (яблоко)
: ''the'' hour [ði: 'auər] (час)

Определённый артикль ''the'' происходит от указательного местоимения ''that''. Часто переводится словами этот, эта, это, эти. 

Употребляется перед существительным, обозначающий предмет уже известный из контекста (a) или единственный в данном контексте (b) или единственный вообще (c);
## //@@color:#900;There is __a book__ on the shelf. Give me __the book__.@@ - На полке лежит книга. Дай-ка мне эту книгу.//
## //@@color:#900;It was __a new house__. __The roof__ was red, __the door__ was  brown.@@- Это был новый дом. Крыша была красной, дверь коричневой.//
## //@@color:#900;__The moon__ was down. It was dark.@@ - Луна зашла. Было темно.//
''Определительное предложение'' (''The Relative Clause'') - это [[придаточное предложение]] (a dependent clause) которое модифицирует именную группу главного предложения.

Например в [[именной группе|Именная группа (The Noun Phrase)]]:
: //@@color:#900;the man who wasn't there@@ - мужчина, которого там не было//
именная группа ''the man'' модифицируется определительным предложением ''who wasn't there''.

Опущение определительного предложения часто ведет к неясности смысла главного предложения:
: //@@color:#900;People ''who smoke'' live shorter.@@ - Люди, которые курят, живут меньше.//

''Относительные местоимения'' (''Relative pronouns'') служат для связи придаточных предложений с главным. Они связаны с конкретным словом из главной части предложения. В придаточной части являются подлежащим или дополнением.

В качестве относительных местоимений употребляются вопросительные местоимения (Interrogative Pronouns); ''who'' (''whom''), ''whose'', ''which'' и указательное местоимение ''that''. __Вопросительное местоимение ''what'' в качестве относительного местоимения не употребляется__ (однако в просторечии ''what'' может заменять ''who'', ''whom'', ''which'' в роли относительного местоимения).

В качестве относительного местоимения ''who'' употребляется по отношению к лицам, ''which'' и ''that'' употребляется в отношении обезличенных объектов, ''whose'' употребляется в обоих случаях. В неформальной лексике ''that'' может употребляться вместо ''who'' (''whom''), ''which'';
: //@@color:#900;It is the man ''who'' came yesterday.@@ - Это тот мужчина, который приходил вчера.
@@color:#900;This is the girl ''whose'' voice is very beautiful.@@ - Это та девушка, у которой очень красивый голос.
@@color:#900;The book ''which'' (''that'') you are reading is mine.@@ - Книга, которую ты читаешь - моя.//

Отсутствие артикля иногда называемое ''Нулевой артикль'' (''The Zero Article'').
Отсутствие артикля используется;
* перед неисчисляемыми, вещественными, отвлеченными существительными;
*: //@@color:#900;Tere is __milk__ in the cup.@@ - В чашке молоко.
@@color:#900;__Friendship__ is founded on __trust__ and __respect__.@@ - Дружба основывается на доверии и уважении.//
* перед исчисляемыми существительными во множественном числе;
*: //@@color:#900;It is a lamp and not a candle.@@ - @@color:#900;These are __lamps__ and not __candles__.@@
@@color:#900;He is a student. - They are __students__.@@//
* перед именами собственными;
*: //@@color:#900;London is the capital of England.@@ - Столица Англии - Лондон.//
* перед существительным, служащим обращением;
*: //@@color:#900;How old are you, young man?@@ - Сколько те' лет, молодой человек?//

Существительное в английском языке имеет два падежа: ''общий'' (''The Common Case'') и ''притяжательный'' (''The Possessive Case'').

!!Общий падеж (The Common Case)
Общий падеж имеют все существительные. Эта форма слова, в которой существительное дается в словаре, его отношение к другим словам в предложении определяется предлогом;
: //@@color:#900;the child - ребёнок@@// (Кто? Что?),
: //@@color:#900;of the child - ребёнка @@//(Кого? Чего?),
: //@@color:#900;to the child - ребёнку@@// (Кому? Чему?),
: //@@color:#900;the child - ребёнка@@// (Кого? Что?),
: //@@color:#900;by the child - ребёнком@@// (Кем? Чем?),
: //@@color:#900;about the child - о ребёнке@@// (О ком? О чём?).

!!Притяжательный падеж (The Possessive Case)
Существительное в притяжательном падеже является [[определяющим словом|Определяющее слово (The Determiner)]] к другому существительному и
отвечает на вопрос whose? (чей?), обозначая принадлежность предмета. Существительные в единственном числе образует притяжательный падеж при помощи окончания ''s'', перед которым ставится апостроф: 
: //@@color:#900;the child'''s'' toy@@// [ðə 'tʃaildz 'tɔi]// - игрушка ребенка,//
: //@@color:#900;the girl'''s'' voice@@// [ðə 'gə:lz 'vɔis]// - голос девочки.//

!!!Притяжательный падеж личных местоимений (The Possessive Case of Personal Pronouns)
Притяжательный падеж личных местоимений образуется не регулярным способом и их нужно просто запомнить см. [[Таблица личных и притяжательных местоимений|Таблица личных и притяжательных местоимений]]
: //@@color:#900;''his'' toy@@ - его игрушка,//
: //@@color:#900;''her'' voice@@ - её голос.//

Источник http://engramm.su/index.html
По значению глаголы подразделяются на ''переходные'' (''transitive'') и ''непереходные'' (''Intransitive''), причём основой для их различения служит отношение к объекту действия, которое выражено глаголом.

!!Переходные глаголы (Transitive Verbs)
''Переходные глаголы'' (''Transitive Verbs'') - это глаголы со значением действия, направленного на предмет, изменяющего или производящего этот предмет - объект действия. Без прямого дополнения смысл предложения остается не завершенным;
: //@@color:#900;The strong man ''holds''.@@ - Силач хватает. ( фраза, незаконченное предложение)
@@color:#900;The strong man ''holds'' me in his grasp and I am helpless as a child.@@ (Agatha Christie "Murder on the Links") - Силач хватает меня в свои объятия и я становлюсь беспомощный как дитя. 
@@color:#900;He ''sent''.@@ - Он отправил. (фраза, незаконченное предложение )
@@color:#900;He ''sent'' __the letter__. @@- Он отправил письмо.//

!!Непереходные глаголы (Intransitive Verbs)
''Непереходные глаголы'' (''Intransitive Verbs'') обозначают движение и положение в пространстве, физическое и нравственное состояние.
: //@@color:#900;She ''talks'' too much.@@ - Она слишком много говорит.
@@color:#900;The sun ''rose''.@@ - Солнце взошло.//
''Порядковые числительные'' (''Ordinal Numerals'') обозначают порядок объектов при счете.

Порядковые числительные образуются от соответствующих количественных числительных прибавлением суффикса -''th'' [-θ], за исключением первых трех;
: {{block{
''first'' [fə:rst] первый
''second'' ['sekənd] второй
''third'' [θə:rd] третий
}}}

Изменение написания некоторых числительных нужно запомнить;
: {{block{
''five'' - ''fifth'' [fɪfθ] (буква ''ve''  меняется на ''f'')
''twelve'' - ''twelfth'' [twelfθ] (буква ''ve''  меняется на ''f'')
''eight'' - ''eighth'' [eɪtθ] (прибавляется только буква ''h'')
''nine'' - ''ninth'' [naɪnθ] (опускается буква ''e'')
}}}

У числительных обозначающие десятки, конечная ''y'' меняется на ''ie'';
: {{block{
''twentieth'' ['twentɪɪθ] (двадцатый)
''thirtieth'' ['θə:rtɪɪθ] (тридцатый)
''fortieth'' ['fɔ:rtɪɪθ] (сороковой)
''fiftieth'' ['fɪftɪɪθ] (пятидесятый)
''sixtieth'' ['sɪkstɪɪθ] (шестидесятый)
''seventieth'' ['sevntɪɪθ] (семидесятый)
''eightieth'' ['eɪtɪɪθ] (восьмидесятый)
''ninetieth'' ['naɪntɪɪθ] (девяностый)
}}}

Составные числительные при образовании порядкового числительного изменяют форму только последнего числа;
: ''twenty-one'' - ''twenty-first'' (двадцать первый)

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

В английском языке по синтаксической структуре различают четыре вида предложений;
* ''повествовательное'' (''declarative'')
* ''вопросительное'' (''interrogative'')
* ''побудительное'' (''imperative'')
* ''восклицательное'' (''exclamatory'')

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

В грамматике, прилагательное (''The Adjective'') - это слово которое указывает на определенный признак объекта, таким образом предоставляя больше информации о объекте в предложении.
: //@@color:#900;a ''clever'' boy@@ - умный мальчик
@@color:#900;an ''English'' book@@ - английская книга
@@color:#900;''sour'' milk@@ - кислое молоко//

Личным местоимениям соответствуют притяжательные местоимения, выражающие принадлежность и отвечающие на вопрос ''whose''? - чей?

Притяжательные местоимения имеют две формы;
* ''основную'' - выполняет функцию [[определяющего слова (a determiner)|Определяющее слово (The Determiner)]],
* ''абсолютную'' (''absolute form'') - выполняет функцию [[существительного (a Noun)|Существительное (The Noun)]], см. [[Таблица личных и притяжательных местоимений]]
Основная форма употребляется в случае, если за притяжательным местоимением стоит определяемое им существительное, местоимение исключает употребление артикля перед этим существительным;
: //@@color:#900;I like your skirt. Do you like ''my'' skirt?@@// - Мне нравится твоя юбка. А как тебе моя юбка?
Абсолютная форма местоимения употребляется вместо определяемого существительного;
: //@@color:#900;I like your skirt. Do you like ''mine''?@@// - Мне нравится твоя юбка. А как тебе моя?

!!
В английском языке нет формы притяжательного местоимения, соответствующей русскому местоимению ''свой'', в данном случае используется одно из притяжательных местоимений или реже определенный артикль ''the''.
: //@@color:#900;Take off ''your'' coat.@@// - Снимите пальто!
: //@@color:#900;Не put ''his'' keys into ''his'' pocket.@@// - Он положил (свои) ключи в (свой) карман.
: //@@color:#900;Не put ''the'' keys into ''his'' pocket.@@ //- Он положил ключи в (свой) карман.

!!
Притяжательное местоимение, как и артикль, ставится после ''all'' и ''both'';
: //@@color:#900;He has lost ''all his'' money.@@// - Он потерял все свои деньги.
: //@@color:#900;''Both the'' women were French. @@//- Обе женщины были француженки. 
''Простое предложение'' (''a clause'') - это предложение которое состоит только из субъекта и его активной части (действия субъекта), в терминах грамматических категорий это называется субъект (''subject'') и предикат (''predicate'');
:  //@@color:#900;I love you.@@ - Я люблю тебя. // (элементарное предложение в котором; "''I''" - субъект и  "''love you''" - предикат)


<html><a name="[[Род имен существительных (The Gender of Nouns)]]"></a></html>Род имен существительных в английском языке определяется не формой слова, а его соотнесённостью с родовыми признаками обозначаемого предмета или их отсутствием, несущественностью.


@@font-size:30pt;Сайт переехал на http://engramm.su/@@


В лингвистике английского языка  ''phrase'' - это ''словосочетание'' (группа слов), составные элементы которого функционируют как единое целое в предложении, и сохраняют свою конструкцию не зависимо от выполняемой функции в предложении;
:{{block{
//@@color:#900;''Many good books'' were lost in wars.@@ - Много хороших книг было утеряно в войнах.// (подлежащее)
//@@color:#900;Mark Twain wrote  ''many good books''.@@ - Марк Твен написал много хороших книг.// (дополнение)
}}}

''who'', ''whom'' , ''what'', ''whose'', ''which''.

Соединительные местоимения служат для соединения главных предложений с придаточными.
: //@@color:#900;This music is exactly ''what'' we need for the party.@@ - Это как раз та музыка, которая нам нужна для вечеринки.
@@color:#900;I don’t want to know, ''whose'' fault is this.@@ - Я не хочу знать, чья в этом вина.
@@color:#900;I have no idea ''what'' you have come for.@@ - Представления не имею зачем вы пришли.//
Список глаголов которые могут употребляться в качестве глаголов-связок в английском языке и примеры их употребления:
* ''act'': He acted ill. - Он прикинулся больным.
* ''appear'': She appears satisfied, but really is not. - Она кажется (ведет себя) довольной, но на самом деле это не так.
* ''be'': She is shy. - Она застенчивая.
* ''become'': She became wealthy. - Она становится состоятельной.
* ''bleed'': She bleeds blue. -  Она ведет себя как аристократ. 
* ''burn'': She burned bright.
* ''come'': The prediction came true. - Предсказание сбылось. 
* ''come out'': It came out burnt.
* ''end up'': I ended up broke. Я кончил тем что разорился.  
* ''get'': She got angry. - Она обозлилась.
* ''glow'': The ingot glowed orange.
* ''go'': The man went crazy - Человек сошел с ума.
* ''grow'': She grew insistent. - Она стала настойчивой / необычной.
* ''fade'': He faded away.
* ''fall'': She fell ill with the flu.
* ''feel'': She felt nauseated.
* ''keep'': She kept quiet.
* ''leave'': They left happy.
* ''lie'': The paper lies crumpled up on the floor.
* ''look'': She looks upset.
* ''play'': The opossum played dead.
* ''plead'': She pleaded innocent.
* ''prove'': She's behavior proves difficult to understand.
* ''remain'': She remained unsatisfied.
* ''rest'': Rest assured.
* ''run'': The dog runs wild. - Собака дичает.
* ''sink'': It sank deep.
* ''seem'': She seems happy. - Она кажется счастливой.
* ''shine'': Her smile shines bright.
* ''sit'': The car sat idle all winter. - Машина простояла всю зиму. (Побыла в бездейственном состоянии всю зиму)
* ''smell'': She smelled sweet. - Она сладко пахнет.
* ''sound'': It sounds serious. - Это звучит серьезно.
* ''stay'': She stayed happy.
* ''stand'': She stands tall. - Она стояла в рост.
* ''taste'': The food tastes fresh. - Еда на вкус, свежая.
* ''test'': She tested positive. - На поверку она оказалась "конкретной". 
* ''turn'': She turned angry. - Она обозлилась.
* ''turn out'': The cookies turned out great.
* ''turn up'': The prime minister turned up missing.
* ''wax'': She waxed poetic. - Она становится поэтична (романтичной, одухотворенной).
# Wikipedia, the free encyclopedia. - URL: http://en.wikipedia.org/wiki
#  Википедия, свободная энциклопедия. -URL: http://ru.wikipedia.org/wiki

Наречия имеют три степени сравнения: положительную (positive degree), сравнительную (comparative degree) и превосходную (superlative degree).
----
Наречия образуют степени сравнения тем же образом, что и прилагательные:
# односложные наречия (monosyllabic adverbs) и наречие ''early''  образуют сравнительную степень при помощи суффикса -''er'' и превосходную степень при помощи суффикса -''est''.
#:
##: ''soon'' - ''sooner'' - ''soonest''
##: скоро - скорее / быстрее (раньше какого-либо события) - самое ранее (ближайшее по времени событие) 
##: ''early'' - ''earlier'' - ''earliest''
##: рано - ранее - раньше всех 
##: ''hard'' - ''harder'' - ''hardest'' (упорно)
#:// @@font-family:"Comic Sans MS";color:#00F;He runs ''faster'' than the wind. - Он бегает быстрее ветра.@@//
# степени сравнения других наречий образуется при помощи слов more (сравнительная степень) и most (превосходная степень):
#:
##: ''slowly'' - ''more slowly'' - ''most slowly'' (медленно)
##: ''beautifully'' - ''more beautifully'' - ''most beautifully'' (красиво)
# наречия образующие степени сравнения не по правилам:
#:
##: ''little'' – ''less'' – ''least'' (мало)
##: ''much'' – ''more'' – ''most'' (много)
##: ''well'' – ''better'' – ''best'' (хорошо)
##:
##:
##:
##: ''badly'' – ''worse'' – ''worst'' (плохо)
##: ''far'' – ''farther'' – ''farthest'' (далеко)
##: ''far'' – ''further'' – ''furthest'' (далеко)

''Имя существительное'' (''The Noun'') - часть речи, обозначающая предмет и отвечающая на вопросы: who is this? (кто это?) или what is this? (что это?)
!!Некоторые существительные имеют форму множественного числа, совпадающую с формой единственного числа;
*:
**: ''craft'' [krɑ:ft]  (корабль - корабли) и его производные:
***: ''aircraft'' ['ɛərkrɑ:ft] (самолёт - самолёты)
***: ''hovercraft'' ['hɔvərkrɑ:ft] (транспортное средство на воздушной подушке - транспортные средства ...)
***: ''spacecraft'' ['speɪskrɑ:ft] (космический корабль - космические корабли)
**: ''alms'' (подаяние - подаяния)
**: ''barracks'' (казарма - казармы)
**: ''corps'' [kɔ:r] (воен. дипл. корпус - корпусы)
**: ''crossroads'' (пересечение дорог - перекрестки)
**: ''deer'' (олень - олени)
**: ''fish'' ['fɪʃ]  (рыба - рыбы)
**: ''fruit'' [fru:t] (фрукт - фрукты)
**: ''gallows'' (виселица - виселицы)
**: ''grouse'' (куропатка - куропатки)
**: ''headquarters'' ['hed'kwɔ:tərz] (главное управление - центральные органы)
**: ''means'' (средство - средства)
**: ''sheep'' (овца - овцы)
**: ''swine'' (свинья - свиньи), (в переносном смысле применительно к человеку образует множественное число с помощью окончания -''s'';
***: //@@color:#900;My neighbours are just such ''swines''!@@// - Мои соседи - просто такие свиньи!)
**: ''works'' (завод - заводы)
:// @@color:#900;There is one ''aircraft'' left on the runway.@@// - На взлетно-посадочной полосе остался один самолет.
: //@@color:#900;There are many ''aircraft'' in the sky today.@@// - Сегодня в небе много самолетов.
:// @@color:#900;Some ''fish'' are dangerous.@@// - Некоторые рыбы опасны.
Слово ''fish'' может образовывать множественное число также с помощью окончания -''es'', в современном разговорном практически не используется;
://@@color:#900; I've caught many ''fish''.@@ = @@color:#900;I've caught many ''fishes''@@//. - Я поймал много рыбы.
''fish'' может употребляться как исчисляемое и неисчисляемое существительное;
://@@color:#900; I've caught much ''fish''.@@// - Я поймал много рыбы.
Почти все существительные обозначающие виды рыб имеют форму множественного числа совпадающую с единственным числом за исключением; ''rays'', ''sharks'', ''lampreys'';
: ''cod'' ['kɔd] (треска)
: ''salmon'' ['sæmən] (лосось)
: ''trout'' (форель)

!!Образования множественного числа путем прибавления окончания -''en''
В английском языке некоторые существительные сохранили древние формы образования множественного числа путем прибавления окончания -"en";
: ''child'' - ''children''
: ''brother'' ['brʌðər] - ''brethren'' ['breðrɪn] (собрат - собратья)
: ''ox'' - ''oxen''
: ''cow'' - ''kine'' (устаревшее)
: ''eye'' - ''eyen'' (редко, встречается в диалектах)
: ''shoe'' - ''shoon'' (редко, встречается в диалектах)
: ''house'' - ''housen'' (редко, встречается в диалектах)
: ''hose'' - ''hosen'' (редко, устаревшее)

!!Образования множественного числа путем изменения корневого гласного
Некоторые существительные сохранили древние формы образования множественного числа путем изменения корневого гласного;
: ''foot'' - ''feet''
: ''tooth'' - ''teeth''
: ''goose'' - ''geese''
: ''louse'' ['laus] - ''lice'' [laɪs]  (вошь)
: ''mouse'' - ''mice''
: ''man'' - ''men''
: ''woman'' - ''women''

|bgcolor(#8cf): Лицо <br> (Person) |bgcolor(#8cf): Число (Number) |bgcolor(#8cf): Именительный падеж <br> {{center{(Nominative case)}}} |bgcolor(#8cf): Объектный падеж <br> {{center{(Objective case)}}} |>|bgcolor(#8cf): Притяжательный падеж (Possessive) |
|~|~|~|~|bgcolor(#8cf): Основная форма |bgcolor(#8cf): Абсолютная форма |
|bgcolor(#8cf): 1(st) | единственное (singular) | ''I'' [aɪ]  | ''me'' [mi:] | ''my'' [maɪ] / ''mine''^^1^^ | ''mine'' [maɪn] |
|~| множественное (plural) | ''we'' [wi:] | ''us'' [ʌs] | ''our'' ['auər] | ''ours'' ['auərz] |
|bgcolor(#8cf): 2(nd) | singular ^^2^^ | ''thou'' [ðau] | ''thee'' [ði:] | ''thy'' [ðaɪ] / ''thine''^^1^^ | ''thine'' [ðaɪn] |
|~| plural  | ''you'' [ju:] / ''ye''^^3^^ [ji:] | ''you'' | ''your'' [jɔ:r] | ''yours'' [jɔ:rz] |
|bgcolor(#8cf): 3(rd) | singular	 | ''he'' [hi:] | ''him'' [hɪm] | ''his'' [hɪz] | ''his'' |
|~|~| ''she'' [ʃi:] | ''her'' [hə:r] | ''her'' | ''hers'' [hə:rz] |
|~|~| ''it'' [ɪt] | ''it'' | ''its'' [ɪts] | ''its'' |
|~| plural | they [''ðeɪ''] | ''them'' [ðəm] | ''their'' [ðɛər] | ''theirs'' [ðɛərz] |
&nbsp; &nbsp; &nbsp; 1. вышло из употребления, исп, перед сущ. начинающегося с гласной или с "h" немого: thine eyes.
&nbsp; &nbsp; &nbsp; 2. вышло из употребления, в настоящее время употребляется в некоторых диалектах, в современном английском ''you'' употребляется как местоимение второго лица в единственном и во множественном числе.
&nbsp; &nbsp; &nbsp; 3. как правило вышло из употребления, используется в некоторых диалектах .
В английском языке четыре указательных местоимения: ''this'' [ðɪs], ''that'' [ðæt], ''such'' [sʌtʃ].
Местоимения ''this'' и ''that'' имеют формы множественного числа, соответственно: ''these'' [ði:z] и ''those'' [ðəuz].
: //@@color:#900;''This'' boy is my brother.@@ //- Этот мальчик - мой брат.
: //@@color:#900;Take ''those'' apples.@@// - Возьми те яблоки.

Указательное местоимение ''such'' имеет одну неизменяемую форму;
: //@@color:#900;I like ''such'' apples.@@ //- Я люблю такие яблоки.

За указательным местоимением обычно следует определяемое им существительное, для избежания повторения, вместо существительного после ''this'' и ''that'' может употребляться слово ''one'' или слово ''ones'' для множественного числа местоимений ''these'' и ''those'';
: //@@color:#900;I have ''this book'' and you have ''that one''.@@// - У меня есть эта книга, а у тебя та.
: //@@color:#900;''These shoes'' don't fit. Show me ''those ones'', please. @@//- Эти туфли мне не подходят. Покажите мне те, пожалуйста.

Наречия  образа действия (Adverbs of manner) не употребляются после [[глаголов-связкок:|Глагол-связка (The copulative verb)]] ''to be'' (быть), ''to become'' / ''get'' / ''turn'' / ''grow'' / ''go'' (становиться), ''to seem'' (казаться), ''to look'' (выглядеть), ''to feel'', ''to sound'' (звучать), ''to taste'' (иметь вкус), ''to smell'' (пахнуть) и т.д., вместо них употребляются прилагательные.
#:// I __feel__ ''good''. - Чувствовать себя хорошо. (о эмоциональном состоянии, дословно: Чувствовать себя хорошим).
I __feel__ ''well''. - Чувствовать себя хорошо. (о состоянии здоровья)
I __feel__ ''happy''. - Я чувствую себя счастливым.
I always __feel__ ''bored'' at work - На работе мне всегда скучно. (чувствую себя скучающим)
She __is__ ''kind''. - Она добрая (добрая).
She __seems__ ''shy''. - Он кажется застенчивой.
She __looks__ ''angry''. - Она рассерженна. 
It's __getting__ ''cold''. - Холодает.
The milk __went__ / __turned__ ''sour''. Молоко прокисло.
I __got__ / __became__ ''older''. - Я стал старше.
It __smells__ ''wonderful''. - Это великолепно пахнет.
It __sounds__ ''serious''. - Это звучит серьезно.
It __tastes__ ''delicious''. - Это вкусно.//

Неопределенный артикль может использоваться в качестве;
* числительного ''one'';
*: //@@color:#900;Не did not say a word.@@ - Он не сказал ни (одного) слова.
@@color:#900;It isn`t worth a dollar.@@ - Это не стоит одного доллара.
@@color:#900;two dollars a pack@@ - два доллара за пачку.
@@color:#900;for a day or two@@ - на один, два дня.
@@color:#900;two days a week@@ - два дня в неде­лю.
@@color:#900;twice a day@@ - два раза в день.//
* образует множественное число в оборотах с ''many'':
*: //@@color:#900;many a year@@ - многие годы.// см. [[much, many и их аналоги]]
* перед неисчисляемыми и абстрактными существительными, если им предше­ствует описательное определение или они указыва­ют на сорт, разновидность чего-либо или подразумевают единичный экземпляр;
*: //@@color:#900;a very good cheese@@ - очень хороший (сорт) сыр(а)
@@color:#900;a very heavy rain@@ - очень сильный дождь
@@color:#900;a perfect knowledge of the subject@@ - прекрасное знание предмета
@@color:#900;give me a milk@@ - дайте мне (бутылку, пакет) молока.//
Определенный артикль the употребляется пе­ред именами существительными;
* Для обозначения предмета уже известного из контекста или единственного в данном контексте;
*: //@@color:#900;It was a new house. ''The roof'' was red, ''the door'' was brown.@@- Это был новый дом. Крыша была красной, дверь коричневой.
@@color:#900;''the  Saratov''  road@@ - дорога "в Саратов"//
* Для указания на то, что данный предмет или лицо является уникальным, единственном в своем роде:
*: //@@color:#900;the sun@@ - солнце
@@color:#900;the moon@@ - луна
@@color:#900;the White Sea@@ - Белое море
@@color:#900;the Lake of Geneva@@ - Женевское озеро
@@color:#900;the student Fritjof@@ - студент Фритьоф//
* Если существительное употребляется с определением в виде порядкового числительного, прилагательного в превосходной форме или словами; ''the same'' (тот же самый, одинаковой), ''the very'' (тот самый), ''the only'' (единственный), ''the following'', ''the next'' (следующий), ''the previous'' (предыдущий), ''the last'' (последний), ''the other'' (в значении другой, второй), ''the  coming'' (предстоящий);
*: //@@color:#900;This is ''the first'' English book I read.@@ - Это первая английская книга, которую я прочел.
@@color:#900;She is ''the best'' pupil in our class.@@ - Она лучший ученик нашего класса.
@@color:#900;You are ''the very'' man I am looking for.@@ - Вы тот самый человек, которого я ищу.//
* Для оформления субстантивации прилага­тельных и причастий (Субстантивация - переход в разряд имён существительных других частей речи): the deaf (глухие), the wounded (раненые), the rich (богачи), the British (британцы), the Irish (ирландцы);
*: //@@color:#900;''The young'' should help ''the old''.@@ - Молодые должны помогать старым.
@@color:#900;In what country do ''the English'' live?@@ - В какой стране живут англичане?//
* С названиями видов искусств;
*: //@@color:#900;to go to ''the cinema''@@ - ходить в кино//
*: //@@color:#900;to be fond of ''the opera''@@ - любить оперу//
* С названиями частей света: ''in''/''to the north'' (''south'', ''east'', ''west'').
* С названиями среды обитания, условий обитания окружаю­щих Землю: ''in the air''; ''in the mud''; ''in the rain''.
* С названиями частей тела, вместо притя­жательного местоимения в сочетании с предло­гом: ''in the back'', ''by the hand'', ''by the shoulder''.
Имя прилагательное в предложении обычно является уточнением к существительному и стоит перед уточняемым словом, Прилагательное также может быть именным членом составного именного сказуемого (предикативом) и стоять в этом случае после глагола выполняющего функцию [[глагола-связки|Глагол-связка (The copulative verb)]].
:// @@color:#900;Buck is a ''clever'' dog.@@ - Бак умная собака. (уточнение)
@@color:#900;The dog is ''clever''.@@ - Это собака умная. (именной член составного именного сказуемого)//
Некоторые прилагательные употребляются только в качестве именного члена составного именного сказуемого:
*:
**: ''alive'' (живой)
**: ''afraid'' (испуганный)
**: ''asleep'' (спящий)
**: ''awake'' (проснувшийся)
**: ''ill'' (в значении "больной")
*://@@color:#900;I was glad to hear you're ''alive'' and well.@@// - Я был рад услышать, что ты жив и здоров
*: //@@color:#900;He was ''afraid'' to dive from the high board.@@// - Он боялся нырять с самой высокой вышки.
*: //@@color:#900;They fell ''asleep'' into delicious dreams.@@// - Они погрузились в царство приятных сновидений.
Для сравнения двух объектов употребляется конструкция; ''as'' ... ''as'' (такой же ... как):
: //@@color:#900;He is ''as'' tall ''as'' you are.@@// - Он такого же роста, как и вы.
: //@@color:#900;He was ''as'' white ''as'' a sheet.@@// - Он был белый как простынь.
: //@@color:#900;You horse is twice ''as'' expensive ''as'' my house.@@// - Твоя лошадь в два раза дороже моего дома.
!!Конкретизация неисчисляемых существительных
Некоторые неисчисляемые существительные могут употребляться как исчисляемые когда речь идет о различных видах, сортах, разновидностях, при конкретизации:
*:
**: ''science'' - наука (вообще) , ''a science'' - отрасль науки, ''sciences'' - отрасли науки.
**: ''success'' - удача, успех (вообще), ''a success'' - удача, удачный результат, ''successes'' - удачные результаты.
**: ''hair'' - ''a hair'' (волос - волосок)
**: ''coal'' - ''a coal'' (уголь - уголек)
*://@@color:#900; ''Success'' is in the details. @@//- Удача находится в деталях. (Скрупулезное отношение к делу - путь к успеху)
*://@@color:#900; My new job is a ''success''@@ //- Моя новая работа - просто счастливый случай.
*:// @@color:#900;We learn from our ''successes'' and failures.@@ //- Мы учимся на наших удачах и ошибках.
*:// @@color:#900;Jon is losing his ''hair''.@@ //- Джон лысеет.
*://@@color:#900; I found ''a hair'' in my soup.@@// - В супе мне попался волос.
*://@@color:#900; I can’t work here. There’s too much ''noise''.@@ //- Я не могу здесь работать. Здесь так шумно.
*://@@color:#900; Did you hear a ''noise'' just now?@@// - Ты слышал с'час этот шум?
*:// @@color:#900;The ''teas'' of India.@@// - Виды индийского чая.
*://@@color:#900; mineral ''waters''@@// - минеральные воды
*:// @@color:#900;Low-carbon ''steels'' are known as mild steel.@@ //- Сорта стали с низким содержанием углерода известны как "мягкая сталь".

Существительное может быть исчисляемым в одном значении и не исчисляемым в другом:
: ''iron'' - a ''iron'' (железо - утюг)
: ''beauty'' - a ''beauty'' (красота - красавица)

!!Собирательные существительные (Collective nouns)
Собирательные существительные не изменяя своей формы, могут согласовываться как с глаголом в единственном числе, так и во множественном;
* Если существительное обозначает группу людей, представленную как единое целое, это слово согласуется с глаголом в единственном числе:
*: //@@color:#900;My ''family is'' large.@@// - Моя семья большая.
* Это же существительное согласуется с глаголом во множественном числе, если оно обозначает отдельных членов коллектива:
*:// @@color:#900;My ''family are'' early risers.@@ //- У нас в семье все встают рано.
*:// @@color:#900;The ''staff are'' full of enthusiasm.@@// - Персонал полон энтузиазма.

!!Существительные меры
Имена существительные, обозначающие различные счетные значения, в сочетании с количественными числительными употребляются только в форме единственного числа;
: //@@color:#900;three ''dozen'' eggs@@ - три дюжины яиц;
@@color:#900;three ''score'' years@@ - шестьдесят лет.
@@color:#900;two ''hundred''@@ - двести
@@color:#900;ten ''thousand''@@ - десять тысяч
@@color:#900;one ''hundred thousand''@@ - сто тысяч
@@color:#900;ten ''million''@@ - десять миллионов и т.д//
Если эти имена существительные указывают на большое число, без точного количественного значения, то он как и обычные существительные, принимают форму множественного числа;
:// @@color:#900;''dozens'' of times@@ - множество раз
@@color:#900;''hundreds'' of people flew in@@ - сотни людей перелетело на самолете//

Существительные используемые в качестве счетных слов; ''stone'' (используемое для указания меры веса человека или большого животного, около 6,36 кг), ''head'' (используемое для подсчета cкота) - не употребляются в форме множественного числа;
: //@@color:#900;A man of 12 ''stone''. @@//- Человек весом 76 кг.

: //@@color:#900;That night the 100 ''head'' of cattle were driven up from the prairie.@@ //- В ту ночь 100 голов скота были пригнаны из прерий.
Если группа числительное плюс существительное меры, протяженности является определением к другому существительному. то существительное, которое следует за числительным, употребляется только в единственном числе;
:// @@color:#900;a ''five-year'' plan@@// - пятилетний план
:// @@color:#900;a ''two-year'' child@@// - двухлетний ребенок
:// @@color:#900;a ''two-meter'' man@@// - двухметровый человек

!!Парные предметы
Некоторые имена существительные по своему значению могут употребляться только в форме множественного числа. К ним относятся существительные, которые обозначают парные предметы, например:
*:
**: ''binoculars'' - бинокль
**: ''breeches'' ['brɪtʃɪz] - бриджи
**: ''briefs'' [bri:fs] - разг. шорты, трусы
**: ''goggles'' ['ɡɔɡlz] - защитные очки от ветра, пыли, воды и т.д.
**: ''jeans'' - джинсы
**: ''pantaloons'' [,pæntə'lu:nz] - панталоны (детские или женские)
**: ''pants'' [pænts] - собир. штаны
**: ''panties'' ['pæntɪz] - разг. детские штанишки
**: ''pajamas'', ''pyjamas'' [pəˈdʒɑ:məz] - пижама
**: ''pincers'' [эpɪnsəz] - зоол. клешни
**: ''pliers'' [ˈplaɪəz] - плоскогубцы
**: ''scissors'' - ножницы
**: ''shorts'' - шорты, трусы
**: ''slacks'' [slæks] - слаксы, брюки свободного покроя из плотной хлопчатобумажной ткани
**: ''spectacles'' ['spektəklz], (eye-)glasses ['aɪglɑːsɪz] - очки
**: ''stockings'' - носки
**: ''tights'' [taɪts] - трико
**: ''tongs'' - щипцы
**: ''trousers'' - брюки
*:  //@@color:#900;Where are my ''glasses''?@@// - Где мой очки?

Если перед такими существительными стоит неопределенный артикль или числительное, то перед ними употребляется оборот ''pair of'' - пара. Во множественном числе слово ''pair'' в данном случае не имеет окончания ''-s'':
: //@@color:#900;This is a new ''pair'' of jeans.@@// - Это новые джинсы.(Это новая пара джинсов).
:// @@color:#900;He has two ''pair'' of scissors.@@ //- У него две пары ножниц.

Если слово ''pair'' употребляется в значении ''пара'' относительно парных предметов или лиц, объединенных по двое, то слово ''pair'' во множественном числе имеет окончание ''-s'':
://@@color:#900; I have ''five pairs'' of shoes.@@// - У меня пять пар обуви.
://@@color:#900; ''Two pairs'' of newlyweds rode on a bus.@@ //- Две пары молодожен катались на автобусе.

Ряд существительных употребляется только во множественном числе, в единственном числе имеют другое значение или не употребляются;
*:
**: ''contents'' - содержимое
**: ''proceeds'' - доход
**: ''riches'' - богатство
**: ''savings'' - сбережения
**: ''surroundings'' - окрестности
**: ''thanks'' - благодарность
**: ''wages'' - заработок
*: //@@color:#900;What are the ''proceeds'' from this shop?@@ //- Какой доход с этого магазина?
*: //@@color:#900;These are nice ''surroundings''.@@// - Это милые окрестности.
*: //@@color:#900;I gave him my ''thanks''.@@// - Я поблагодарил его.
*: //@@color:#900;Their ''wages'' are good.@@// - У них хорошие заработки.
*:// @@color:#900;His riches are known to all of us.@@// - Нам всем известно о его богатстве.

!!Похожие на множественное число существительные
Некоторые имена существительные, оканчивающиеся на ''-s'', имеют значение единственного числа и согласуются с глаголом в единственном числе. К ним относятся существительные;
*:
**: ''news'' - новость, новости
**: a ''works'' - завод
**: a ''barracks'' - казармы и др.
*:некоторые названия наук;
**: ''mathematics''
**: ''economics''
**: ''physics''
**: ''phonetics''
**: ''statistics'' и др:
*: //@@color:#900;The ''news'' was received with loud applause.@@ //- Эта новость была встречена громкими аплодисментами.
*://@@color:#900; ''Thermodynamics'' is a science that deals with energy.@@// - Термодинамика - наука которая имеет дело с энергией.

Существительное с предшествующим числительным, служащее определением, обычно стоит в форме единственного числа: the five-year plan пятилетний план, a ten-year old girl десятилетняя девочка, a ten-pound note банкнота в десять фунтов?
''Фонетика'' (''Phonetics'') (от греч. φωνή - "звук", φωνηεντικός - "звуковой") - ответвление лингвистики изучающая звуки речи и звуковое строение языка, физику человеческой речи, акустические свойства, слуховое восприятие и связанные с ними нейрофизиологические процессы.



''Фонетическая транскрипция'' (''Phonetic Transcription'') - графическая запись звучания слова, предназначена для точной графической записи произношения. Каждый отдельный звук обозначается определенным знаком исключающий двоякое чтение. В основном в английских словарях используют международный фонетический алфавит (International Phonetic Alphabet) на основе латинского алфавита.

!!Гласные
&nbsp; &nbsp; &nbsp;     [i:] - долгое и;(как в слове "__и__ва")
&nbsp; &nbsp; &nbsp;     [ɪ] - краткий звук и, отрывистый;(как в слове "__и__гра")
&nbsp; &nbsp; &nbsp;     [e] - русский звук е в слове "св__е__т";
&nbsp; &nbsp; &nbsp;     [æ] - более открытый звук э, чем в слове "__э__тот", напоминает что-то среднее между русскими звуками [э] и [а].
&nbsp; &nbsp; &nbsp;     [α:] - долгий, глубокий звук а;("к__а__к")
&nbsp; &nbsp; &nbsp;     [ɔ:] - долгое о;
&nbsp; &nbsp; &nbsp;     [ɔ] - безударное о;
&nbsp; &nbsp; &nbsp;     [u] - краткое у;
&nbsp; &nbsp; &nbsp;     [u:] - долгое у;
&nbsp; &nbsp; &nbsp;     [ʌ] - краткий, отрывистый звук а;
&nbsp; &nbsp; &nbsp;     [ə] - безударный звук, средний между о, а, е;
&nbsp; &nbsp; &nbsp;     [ə:] - долгий звук, напоминающий звук ё.
Две точки [:] после знака обозначает, что звук произносится долго.

!!!Двугласные
&nbsp; &nbsp; &nbsp;  [eɪ] - ей  в слове "л__ей__"
&nbsp; &nbsp; &nbsp;  [ɔɪ] - ой в слове "б__ой__"  
&nbsp; &nbsp; &nbsp;  [əu] - оу  в слове "кл__оу__н"    
&nbsp; &nbsp; &nbsp;  [ɪə] - иа
&nbsp; &nbsp; &nbsp;  [aɪ] - ай в слове "д__ай__"   
&nbsp; &nbsp; &nbsp;  [εə] - эа
&nbsp; &nbsp; &nbsp;  [au] - ау  в слове "п__ау__за"
&nbsp; &nbsp; &nbsp;  [uə] - уа
В двугласных звуках ударение падает на первый звук, второй произносится не так сильно, например [ai] как в слове  май.

!!Согласные звуки
&nbsp; &nbsp; &nbsp;     [p] - п
&nbsp; &nbsp; &nbsp;     [b] - б
&nbsp; &nbsp; &nbsp;     [m] - м
&nbsp; &nbsp; &nbsp;     [w] - звук близкий к у, некоторые люди, которые не выговаривают звук л, произносят этот звук в слове лошадь ( уошадь);
&nbsp; &nbsp; &nbsp;     [f] - ф
&nbsp; &nbsp; &nbsp;     [v] - в
&nbsp; &nbsp; &nbsp;     [θ] - зажать кончик языка и произнести звук с;
&nbsp; &nbsp; &nbsp;     [ð] - зажать кончик языка и произнести звук з;
&nbsp; &nbsp; &nbsp;     [s] - с
&nbsp; &nbsp; &nbsp;     [z] - з
&nbsp; &nbsp; &nbsp;     [t] - т, при произношении звука t язык расположен как при произношении русской буквы ц;
&nbsp; &nbsp; &nbsp;     [d] - д, при произношении звука d язык расположен как при произношении русской буквы ц;
&nbsp; &nbsp; &nbsp;     [n] - н
&nbsp; &nbsp; &nbsp;     [l] - л
&nbsp; &nbsp; &nbsp;    [r] - нераскатестое, невибрирующее, слабое р, при произношении звука r язык расположен как при произношении русской буквы ж;
&nbsp; &nbsp; &nbsp;     [ʃ] - мягкое ш
&nbsp; &nbsp; &nbsp;     [ʒ] - мягкое ж
&nbsp; &nbsp; &nbsp;    [tʃ] - ч
&nbsp; &nbsp; &nbsp;     [dʒ] - слитное мягкое дж, иными словами звонкое ч;
&nbsp; &nbsp; &nbsp;     [k] - к
&nbsp; &nbsp; &nbsp;     [g] - г
&nbsp; &nbsp; &nbsp;     [ŋ] - задненебное н произнесенное не кончиком языка а задней частью;
&nbsp; &nbsp; &nbsp;     [h] - простой выдох
&nbsp; &nbsp; &nbsp;     [j] - слабое й

!!!Знаки препинания

&nbsp; &nbsp; &nbsp;    ['] - апостроф, указывает на то, что следующий слог находится под ударением.

''Фразовые глаголы'' (The Phrasal verbs) - это сочитание глагола с предлогом, глагола с наречием или глагола вместе с наречием и предлогом, данное сочетание является идиоматическим и его смысловое значение отличается от изначального значения глагола. Предлоги и наречия в фразовых глаголах называются также частицами.

Альтернативные названия для фразовых глаголов на английском языке; ''compound verb'', ''verb-adverb combination'', ''verb-particle construction''.
Фразовые глаголы в английском языке чаще используются в повседневном общении, в противоположность латинским глаголам, принадлежащим скорее письменной речи:
: to ''get together'' = to ''congregate'' (собирать(ся))
: to ''put off'' = to ''postpone'' (отложить)
: to ''get out'' = to ''exit'' (выйти)
В некоторых случаях смысловое значение фразового глагола можно узнать из непосредственного значения глагола и частицы:
:// @@color:#900;She opened the shutters and ''looked outside''@@. - Она открыла жалюзи и посмотрела во двор (наружу).
@@color:#900;When he heard the crash, he ''looked up''.@@ - Когда он услышал треск он посмотрел вверх. //



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

Согласно выполняемой словом функции выделяют следующие ''части речи'' (''parts of speech'', ''word classes'');
* ''Изменяемые части речи'' (''Open word classes''):
** [[Существительное (The Noun)]]
** [[Прилагательное (The Adjective)]]
** [[Наречие (The Adverb)]]
** [[Глагол (The Verb)]]
** [[Междометие (The Interjection)]]
* ''Неизменяемые части речи'' (''Closed word classes''):
** [[Союз (The Conjunction)]]
** [[Определяющее слово (The Determiner)|Определяющее слово (The Determiner)]]
*** [[Артикль (The Article)]]
** particles
** measure words
** adpositions
*** [[Предлог (The Preposition)]]
** contractions
** cardinal numbers

* [[Местоимение (The Pronoun)]]
* [[Числительное (The Numeral)]]


''Числительное'' (''The Numeral'') - часть речи, которая обозначает количество предметов [["количественные числительные (cardinal numerals)"|Количественные числительные (Cardinal Numerals)]] или порядок предметов при счете [["порядковые числительные (ordinal numerals)"|Порядковые числительные (Ordinal Numerals)]].

В английском языке существительное может быть исчисляемым и неисчисляемым;
* Неисчисляемые существительные (''uncountable'', ''mass'') - те существительные, которые сосчитать нельзя, это как правило существительные обозначающие вещественные, собирательные и абстрактные понятия; ''water'', ''crowd'', ''beauty'':
*:// @@color:#900;The ''milk'' is fresh.@@ //- Молоко свежее.
*://@@color:#900; ''Kindness'' is a good quality. @@//- Доброта - хорошее качество.
* Исчисляемыми существительными (''countable'') называются существительные, обозначающие предметы которые можно сосчитать, т.е. от них можно образовать множественное число. Исчисляемые существительные имеют два числа: ''единственное'' (''singular'') и ''множественное'' (''plural'').
** Следует отметить что перед исчисляемым существительным в единственном числе как правило всегда стоит [[определитель|Определяющее слово (The Determiner)]]:
*: //@@color:#900;I have ''a'' car.@@ - У меня есть машина.//

Как правило одно и тоже существительное может функционировать как исчисляемое и неисчисляемое:
*:// @@color:#900;Jon is losing his ''hair''.@@ //- Джон лысеет (теряет свой волос).
*://@@color:#900; I found ''a hair'' in my soup.@@// - В супе мне попался волос.

Источник http://engramm.su/index.html
Для того чтобы создать законченное предложение оно должно состоять из субъекта и его активной части (действия субъекта), в терминах грамматических категорий это называется ''подлежащее'' (''subject'') и ''сказуемое'' (''predicate''). Так как обе эти грамматические категории необходимы для оформления законченного предложения то они иногда выделяются как главные члены предложения (principal parts of the sentence).