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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

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

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='toolbar' role='navigation' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
|<html><img src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjwhRE9DVFlQRSBzdmcgIFBVQkxJQyAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nICAnaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkJz48c3ZnIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0cHgiIGlkPSJMYXllcl8xIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0cHgiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxwYXRoIGQ9Ik0yMi4yNDUsNC4wMTVjMC4zMTMsMC4zMTMsMC4zMTMsMC44MjYsMCwxLjEzOWwtNi4yNzYsNi4yN2MtMC4zMTMsMC4zMTItMC4zMTMsMC44MjYsMCwxLjE0bDYuMjczLDYuMjcyICBjMC4zMTMsMC4zMTMsMC4zMTMsMC44MjYsMCwxLjE0bC0yLjI4NSwyLjI3N2MtMC4zMTQsMC4zMTItMC44MjgsMC4zMTItMS4xNDIsMGwtNi4yNzEtNi4yNzFjLTAuMzEzLTAuMzEzLTAuODI4LTAuMzEzLTEuMTQxLDAgIGwtNi4yNzYsNi4yNjdjLTAuMzEzLDAuMzEzLTAuODI4LDAuMzEzLTEuMTQxLDBsLTIuMjgyLTIuMjhjLTAuMzEzLTAuMzEzLTAuMzEzLTAuODI2LDAtMS4xNGw2LjI3OC02LjI2OSAgYzAuMzEzLTAuMzEyLDAuMzEzLTAuODI2LDAtMS4xNEwxLjcwOSw1LjE0N2MtMC4zMTQtMC4zMTMtMC4zMTQtMC44MjcsMC0xLjE0bDIuMjg0LTIuMjc4QzQuMzA4LDEuNDE3LDQuODIxLDEuNDE3LDUuMTM1LDEuNzMgIEwxMS40MDUsOGMwLjMxNCwwLjMxNCwwLjgyOCwwLjMxNCwxLjE0MSwwLjAwMWw2LjI3Ni02LjI2N2MwLjMxMi0wLjMxMiwwLjgyNi0wLjMxMiwxLjE0MSwwTDIyLjI0NSw0LjAxNXoiLz48L3N2Zz4=" /></html>|
* get the SVG code back
<html>
<div class="course_description two_thirds">
	<p>Воплощение идей в&nbsp;пластике!
	</p>
	<p style="margin-bottom: 2em">Программа курса построена последовательно: сначала ребята научатся работать в&nbsp;3D-средах и&nbsp;свободно ориентироваться в&nbsp;трехмерном пространстве. Узнают, как создавать простые объекты из&nbsp;базовых фигур: кубиков, шариков, цилиндров. Школьники познакомятся с&nbsp;особенностями работы на&nbsp;3D-принтере и&nbsp;смогут напечатать свою уникальную модель из&nbsp;пластика.
	</p>
</div>
<div class="teacher_description third">
	<div class="small_two_thirds gekkon bordered">
		Кружок ведут преподаватели «<a href="http://gekkon-club.ru/">Геккон-клуба</a>»
	</div>
</div>
<div class="img_text half"><img src="images_others/39-2.jpg">Ребята научатся моделировать трехмерный объект из&nbsp;плоского рисунка, чтобы иметь возможность воплотить в&nbsp;жизнь любую свою идею</div>
<div class="img_text half"><img src="images_others/39-6.jpg">Готовая работа, напечатанная на&nbsp;3D-принтере</div>

<div class="process_description_2">
<h2>Группы</h2>
<table class="groups">
	<tr class="group_number">
		<td><span class="num">1</span></td>
		<td><span class="num">2</span></td>
		<td><span class="num">3</span></td>
	</tr>
	<tr class="group_age">
		<td>3D-графика 123Design<br>(1–2 класс)</td>
		<td>3D-графика 123Design<br>(3–4 класс)</td>
		<td>3D-графика Fusion<br>(5–7 класс)</td>
	</tr>
	<tr class="group_frequency">
		<td>1 раз в неделю,<br>по понедельникам в&nbsp;15:00</td>
		<td>1 раз в неделю,<br>по субботам в&nbsp;17:00</td>
		<td>1 раз в неделю,<br>по понедельникам в&nbsp;17:00</td>
	</tr>
	<tr class="group_duration">
		<td>90 минут</td>
		<td>90 минут</td>
		<td>90 минут</td>
	</tr>
	<tr class="group_price">
		<td><span class="extrabold">3400 &#8381;</span><br>за 4 занятия</td>
		<td><span class="extrabold">3400 &#8381;</span><br>за 4 занятия</td>
		<td><span class="extrabold">3400 &#8381;</span><br>за 4 занятия</td>
	</tr>
</table>

<div class="enter_block_2">
	<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter_2">Записаться</div></a>
	<div class="enter_text">Оставьте свои контакты,<br>и мы вам перезвоним!  
	</div>

</html>

/%
|контингент|1-7 класс|
|ФИО преподавателя|«Геккон-клуб»|
|id|39|
|видимое в адресной строке название|3d|
%/
/***
|Version|1.0|
|Short status|<<insertEditable container:"@stateComment" size:max cell>>|
tests: [[BRP 1]], [[BRP 2]], [[BRP 3]]
***/
//{{{
var orig_BRP_changed = Tiddler.prototype.changed;
// this recalcs links according to config.textPrimitives.tiddlerAnyLinkRegExp and
// config.textPrimitives.tiddlerForcedLinkRegExp , so temporarily hijack them
Tiddler.prototype.changed = function()
{
	var brackettedLinkRE = config.textPrimitives.brackettedLink,
//	    titledBrackettedLinkRE = config.textPrimitives.titledBrackettedLink,
	    sectionOrSliceAddition =
		"(?:(?:(?:"+config.textPrimitives.sliceSeparator+"[^\\|\\n\\]]+)|"+ //::
		   "(?:"+config.textPrimitives.sectionSeparator+"[^\\n\\]]+))?)",   //##
	    tiddlerForcedLinkRegExp = config.textPrimitives.tiddlerForcedLinkRegExp,
	    tiddlerAnyLinkRegExp    = config.textPrimitives.tiddlerAnyLinkRegExp;
	
	// hijack REs
	config.textPrimitives.brackettedLink = "\\[\\[([^\\]]+?)"+ // extra "?" is important here
		sectionOrSliceAddition+
		"\\]\\]";
		// core definition: "\\[\\[([^\\]]+)\\]\\]";

//	config.textPrimitives.titledBrackettedLink = "\\[\\[([^\\[\\]\\|]+)\\|([^\\[\\]\\|]+?)"+
//		sectionOrSliceAddition+
//		"\\]\\]";
		// core definition: "\\[\\[([^\\[\\]\\|]+)\\|([^\\[\\]\\|]+)\\]\\]";
	// recalc, as in the core:
	config.textPrimitives.tiddlerForcedLinkRegExp = new RegExp("(?:" +
		config.textPrimitives.titledBrackettedLink + ")|(?:" +
		config.textPrimitives.brackettedLink + ")|(?:" +
		config.textPrimitives.urlPattern + ")","mg");
	config.textPrimitives.tiddlerAnyLinkRegExp = new RegExp("("+
		config.textPrimitives.wikiLink + ")|(?:" +
		config.textPrimitives.titledBrackettedLink + ")|(?:" +
		config.textPrimitives.brackettedLink + ")|(?:" +
		config.textPrimitives.urlPattern + ")","mg");
	
	var result = orig_BRP_changed.apply(this,arguments);
	
	// unhijack REs
	config.textPrimitives.brackettedLink = brackettedLinkRE;
//	config.textPrimitives.titledBrackettedLink = titledBrackettedLinkRE;
	// recalc again
	config.textPrimitives.tiddlerForcedLinkRegExp = new RegExp("(?:" +
		config.textPrimitives.titledBrackettedLink + ")|(?:" +
		config.textPrimitives.brackettedLink + ")|(?:" +
		config.textPrimitives.urlPattern + ")","mg");
	config.textPrimitives.tiddlerAnyLinkRegExp = new RegExp("("+
		config.textPrimitives.wikiLink + ")|(?:" +
		config.textPrimitives.titledBrackettedLink + ")|(?:" +
		config.textPrimitives.brackettedLink + ")|(?:" +
		config.textPrimitives.urlPattern + ")","mg");

	return result; // in fact, there's no result, this is for possible future extensions
};
//}}}
<<tabs txtMainTab
	"Поиск" "Move to" CommonAggregationTools##MoveTo
	"Все записи" "All tiddlers" CommonAggregationTools##TabAllAll
	"Тэги" "All tags" CommonAggregationTools##TabTags
	"Ещё.." "More lists" CommonAggregationTools##TabsMore
>>/%
!MoveTo
<<search>>
!TabAllAll
<<tabs txtTabAll
	"Timeline" "Timeline" CommonAggregationTools##TabTimeline
	"All" "All tiddlers" CommonAggregationTools##TabAll
>>
!TabTimeline
<<timeline>>
!TabAll
<<list all>>
!TabTags
<<allTags excludeLists>>
!TabsMore
<<tabs txtMoreTab
	"Missing" "Missing tiddlers" CommonAggregationTools##TabMoreMissing
	"Orphans" "Orphaned tiddlers" CommonAggregationTools##TabMoreOrphans
	"Shadowed" "Shadowed tiddlers" CommonAggregationTools##TabMoreShadowed
>>
!TabMoreMissing
<<list missing>>
!TabMoreOrphans
<<list orphans>>
!TabMoreShadowed
<<list shadowed>>
!%/
<<permaview>><<closeAll>><<newTiddler label:"добавить tw-запись">><<slider chkSliNewElementInSideBarOptions [[CommonControlElements##NewElementsToolBar]] "добавить элемент »" "">><<saveChanges "сохранить">> [[Настройки]] <<slider chkSliOptionsPanel [[CommonControlElements##OptionsPanel]] "параметры »" "куки-параметры TW">> <<tiddler [[CommonsMenu]] noedit>> [[Технический журнал]]/%
!NewElementsToolBar
<<newTiddler label:"вопрос" tag:"вопрос" title:"Новый вопрос" text:
"|статус вопроса		 |  |
|предпринятые поиски	 |  |
|кому можно задать		 |  |
|куда, зачем ответ		 |  |"
>>
<<newTiddler label:"плагин" tag:"systemConfg" title:"Plugin" text:"/***
***/
//{{{
//}}}">>
<<newJournal "DD MMM YYYY" "journal" label:"журнальная запись">><<tiddler [[MoreElements]] noedit>>
!OptionsPanel
Имя пользователя:
<<option txtUserName>>
<<option chkSaveBackups>> сохранять резервные копии
<<option chkAutoSave>> автосохранение
<<option chkRegExpSearch>> поиск по регулярным выражениям
<<option chkCaseSensitiveSearch>> регистрозависимый поиск
<<option chkAnimate>> анимация
----
[[полный список пар-ров|AdvancedOptions]]
[[сохранённые параметры|SystemSettings]]
!%/
[[Манифест документа]]
[[Карта документа]]
!!!Параметры
* подпись автора: <<option txtUserName>>
* <<slider chkSliderAdvancedOptionsInMySettings AdvancedOptions "Прочие" "меню AdvancedOptions">>
* [[фиксированные параметры|SystemSettings]]
* [[список записей, появляющихся при открытии TiddlyWiki|DefaultTiddlers]]
!!!Тема
Текущая тема: <<option txtTheme>>

В стандартной теме:
* [[страница TW|PageTemplate]]
** [[заголовок|SiteTitle]] и [[подзаголовок|SiteSubtitle]] ~TiddlyWiki (обычно отображаются вверху страницы)
** [[tw-запись при просмотре|ViewTemplate]]
** [[tw-запись при редактировании|EditTemplate]]
*** [[инструменты на блоках tw-записей|ToolbarCommands]]
** [[главное меню|MainMenu]] (обычно слева)
** дополнительное меню (обычно справа):
*** SideBarOptions → CommonControlElements
**** [[кнопки добавления дополнительных элементов|MoreElements]]
*** SideBarTabs → CommonAggregationTools
* MarkupPreHead, MarkupPostHead, MarkupPreBody, MarkupPostBody

Настройки стилей
* [[пользовательский CSS|StyleSheet]]
* [[цветовая палитра|ColorPalette]]
* системные таблицы стилей: StyleSheetLayout, StyleSheetColors, StyleSheetLocale, StyleSheetPrint
!!!Управление плагинами
<<plugins>>
!!!Прочее
* [[подпись окна|WindowTitle]] (или вкладки, браузера)
* SiteUrl
/***
|Description|This plugin fixes a couple of macro params issues:<br>1) fixes macro error in some cases when a named param has {{{{{}}}-containing value;<br>2) makes "escaped" ' and " in macro params be really escaped (examples: {{{"some \"value\""}}} is parsed as {{{some "value"}}} and {{{'that\'s nice'}}} becomes {{{that's nice}}})|
|Version|1.0|
|Short status|<<insertEditable container:"@stateComment" size:max cell>>|
|Author|Yakov Litvin|
***/
//{{{
// fix the error rising for macros with '{{'-containing named param's value
String.prototype.readMacroParams = function(notAllowEval)
{
	// YL tweak: don't use "noNames"
	var p = this.parseParams("_default",null,!notAllowEval);
	var t, n = [];
	for(t = 1; t < p.length; t++)
		n.push(p[t].value);
	return n;
};

// implement escaping of ' and " in macro params
String.prototype.parseParams = function(defaultName,defaultValue,allowEval,noNames,cascadeDefaults)
{
	var parseToken = function(match,p) {
		var n;
		if(match[p]) // Double quoted
			// YL tweak: substitute escaped \" with "
			n = match[p].replace(/\\"/g,'"');
		else if(match[p+1]) // Single quoted
			// YL tweak: substitute escaped \' with '
			n = match[p+1].replace(/\\'/g,"'");
		else if(match[p+2]) // Double-square-bracket quoted
			n = match[p+2];
		else if(match[p+3]) // Double-brace quoted
			try {
				n = match[p+3];
				if(allowEval && config.evaluateMacroParameters != "none") {
					if(config.evaluateMacroParameters == "restricted") {
						if(window.restrictedEval)
							n = window.restrictedEval(n);
					} else
						n = window.eval(n);
				}
			} catch(ex) {
				throw "Unable to evaluate {{" + match[p+3] + "}}: " + exceptionText(ex);
			}
		else if(match[p+4]) // Unquoted
			n = match[p+4];
		else if(match[p+5]) // empty quote
			n = "";
		return n;
	};
	var r = [{}];
	var dblQuote = "(?:\"((?:(?:\\\\\")|[^\"])+)\")";
	var sngQuote = "(?:'((?:(?:\\\\\')|[^'])+)')";
	var dblSquare = "(?:\\[\\[((?:\\s|\\S)*?)\\]\\])";
	var dblBrace = "(?:\\{\\{((?:\\s|\\S)*?)\\}\\})";
	var unQuoted = noNames ? "([^\"'\\s]\\S*)" : "([^\"':\\s][^\\s:]*)";
	var emptyQuote = "((?:\"\")|(?:''))";
	var skipSpace = "(?:\\s*)";
	var token = "(?:" + dblQuote + "|" + sngQuote + "|" + dblSquare + "|" + dblBrace + "|" + unQuoted + "|" + emptyQuote + ")";
	var re = noNames ? new RegExp(token,"mg") : new RegExp(skipSpace + token + skipSpace + "(?:(\\:)" + skipSpace + token + ")?","mg");
	var match;
	do {
		match = re.exec(this);
		if(match) {
			var n = parseToken(match,1);
			if(noNames) {
				r.push({ name:"", value:n });
			} else {
				var v = parseToken(match,8);
				if(v == null && defaultName) {
					v = n;
					n = defaultName;
				} else if(v == null && defaultValue) {
					v = defaultValue;
				}
				r.push({ name:n, value:v });
				if(cascadeDefaults) {
					defaultName = n;
					defaultValue = v;
				}
			}
		}
	} while(match);
	
	// Summarise parameters into first element
	var t;
	for(t = 1; t < r.length; t++)
		if(r[0][r[t].name])
			r[0][r[t].name].push(r[t].value);
		else
			r[0][r[t].name] = [r[t].value];
	return r;
};
//}}}
/***
|Version |custom version for this site|
|Requires|FoldTiddlerPlugin|
* constant permaview option {{{chkKeepPermaview}}} <<option chkKeepPermaview>>
* reopenPermaview <<reopenPermaview>>
** {{{<<reopenPermaview [[label:]customLable] [prompt:customPrompt]>>}}}
* 

***/
// // ''config''
//{{{
config.options.chkKeepPermaview = true;
config.options.chkSinglePageMode = readOnly;
//}}}
// // ''code''
//{{{

config.macros.reopenPermaview =
{
	reopen: function()
	{
		var params = getParameters(); // paramifiers in hash
		story.closeAllTiddlers();
		if(!params)
			story.displayDefaultTiddlers();
		else {
			params = params.parseParams("open",null,false);
			invokeParamifier(params,"onstart");
		}
	},
	handler: function(place,macroName,params,wikifier,paramString)
	{
		// parse params
		var pParams = paramString.parseParams("label",null,true,false,true),
		    label = getParam(pParams,"label","⟳"),
		    prompt = getParam(pParams,"prompt","reopen permaview/default tiddlers");

		// create button
		createTiddlyButton(place,label,prompt,this.reopen);
	}
};

// keep permaview on any tiddler open/close:
story.HPVP_orig_displayTiddler = story.displayTiddler;
story.displayTiddler = function(srcElement,tiddler,template,animate,unused,customFields,toggle,animationSrc)
{
	if(config.options.chkSinglePageMode)
		story.closeAllTiddlers();
	var result = this.HPVP_orig_displayTiddler.apply(this,arguments);
	if(config.options.chkKeepPermaview)
		this.permaView();
	if(config.options.chkSinglePageMode) window.scroll(0,0);
	return result;
};
story.HPVP_orig_closeTiddler = story.closeTiddler;
story.closeTiddler = function(title,animate,unused)
{
	var result = story.HPVP_orig_closeTiddler.apply(this,arguments);
	if(config.options.chkKeepPermaview)
		// animated closing keeps tiddler visible for .permaView() for some time
		setTimeout("story.permaView()",config.animDuration+10);
//# debug: looks like permaview is appliedd before tiddler is actually closed
	return result;
};

// id is either title or slice value; returns tiddler title
config.addressAliasSlice = "видимое в адресной строке название";
var resolveTiddlerById = function(id)
{
	if(store.fetchTiddler(id)) return id;

	var theTiddler;
	store.forEachTiddler(function(tName,tiddler)
	{
		if(tiddler.getSlice(config.addressAliasSlice) == id)
			theTiddler = tName;
	});
	return theTiddler || id;
};
var getTiddlerAliasByTitle = function(title)
{
	var tid = store.fetchTiddler(title);
	return tid ? tid.getSlice(config.addressAliasSlice) : "";
};
	
// enable "back" button (both browser and keyboard) by regularly checking permaview
var ensureOpenedByURI = function()
{
	if(!config.options.chkKeepPermaview) return;
	
	var correctTiddlersAreOpen = true,
	    paramifiersString = getParameters(), paramifiers, tidId, filter, tiddlers,
	    exoticParamifiersPresent = false, i, currentlyOpenTiddlers = [];

	// check if some tiddlers are missing/extra compared to permaview
	if(paramifiersString) {
		paramifiers = paramifiersString.parseParams("open",null,false);
		filter = "";

		if(config.options.chkNoBracketsPermaview)
		{
			tidId = "";
			// paramifiers[0] is a "summary" object, skip that one
			for(i = 1; i < paramifiers.length; i++)
				tidId += (i == 1 ? "" : " ") + paramifiers[i].value;
			tidId = resolveTiddlerById(tidId);
			filter = "[["+tidId+"]]";
		} else {
			for(i = 1; i < paramifiers.length; i++)
			   switch(paramifiers[i].name) {
			// since permaview only generates either filter or open we only take them into account
				case "filter": filter += paramifiers[i].value; break;
				case "open": filter += "[["+paramifiers[i].value+"]]"; break;
				default: exoticParamifiersPresent = true;
			   }
		}
	} else
		filter = store.getTiddlerText("DefaultTiddlers");
	if(exoticParamifiersPresent) return;
	
	// compare the open tiddler set and the set suggested by paramifiers
	tiddlers = store.filterTiddlers(filter);
	story.forEachTiddler(function(title,e){currentlyOpenTiddlers.push(title);});
	if(tiddlers.length != currentlyOpenTiddlers.length)
		correctTiddlersAreOpen = false;
	else
		for(i = 0; i < tiddlers.length; i++)
			if(currentlyOpenTiddlers.indexOf(tiddlers[i].title) == -1)
				correctTiddlersAreOpen = false;

	// save scroll position
	var posX = findScrollX();
	var posY = findScrollY();

	// reopen if none are edited
	if(!story.areAnyDirty() && !correctTiddlersAreOpen)
	{
		config.macros.reopenPermaview.reopen();
		window.scrollTo(posX,posY);
	}
	// force aliases in hash
	if(config.options.chkNoBracketsPermaview && !tidId &&
	   getTiddlerAliasByTitle(currentlyOpenTiddlers[0]))
		story.permaView();
}
setInterval(ensureOpenedByURI,300);


// -----------------------------------------------
// make permaview omit [[...]] wrapper in the visitor mode

config.options.chkNoBracketsPermaview = readOnly;

// hijack invokeParamifier
var orig_invokeParamifier = invokeParamifier;
invokeParamifier = function(params,handler)
{
	if(config.options.chkNoBracketsPermaview && handler=="onstart")
	{
		var concatenatedParams = "", i;
		for(i = 1; i < params.length; i++)
			concatenatedParams += (i == 1 ? "" : " ") + params[i].value;
		concatenatedParams = resolveTiddlerById(concatenatedParams);
		return config.paramifiers.open["onstart"](concatenatedParams);
	}
	return orig_invokeParamifier.apply(this,arguments);
};

// hijack permaview
story.orig_CPVP_permaView = story.permaView;
story.permaView = function()
{
	if(config.options.chkNoBracketsPermaview)
	{
		// add only tiddler name to hash (no "[[" and "]]")
		var links = [];
		this.forEachTiddler(function(title,element) {
			var alias = getTiddlerAliasByTitle(title);
			links.push(alias || title);	// we don't wrap with [[...]]
		});
		var encodedLinks = encodeURIComponent(links.join(" "));
		if(window.location.hash != encodedLinks)
			window.location.hash = encodedLinks;
		return;
	}
	return this.orig_CPVP_permaView.apply(this,arguments);
};
//}}}
/***
|Requires|ForEachTiddlerPlugin|
***/
//{{{
readOnly = config.options.chkHttpReadOnly;
if(readOnly) {
	config.options.txtTheme = "WebTheme";
	story.switchTheme("WebTheme");
} else {
	config.options.txtTheme = "";
	story.switchTheme("");
}
config.options.chkAnimate = !readOnly;

/* doesn't work properly at first visit!!! (to reproduce, use private window)
var usedOnline = window.location.protocol != "file:",
    usedWithBackEnd  = !!window.saveOnlineChanges,
    visitorThemeName = "WebTheme",
    authorThemeName  = "";
// previously, config.options.chkHttpReadOnly was used, but wasn't working as expected offline
readOnly = usedOnline && !usedWithBackEnd;
config.options.chkAnimate = !readOnly;

// theme setting helpers
story.setVisitorTheme = function() {
	story.switchTheme(visitorThemeName);
	//# test (online auto-setting, including web config.options.txtTheme is saved)
};
story.setAuthorTheme = function() {
	story.switchTheme(authorThemeName);
	//# test (online auto-setting, including web config.options.txtTheme is saved)
};
story.toggleRoleTheme = function() {
	if(config.options.txtTheme == visitorThemeName)
		story.setAuthorTheme();
	else
		story.setVisitorTheme();
};

// set theme on startup
if(readOnly) {

	var ensureTheme = function(){
		if(config.options.txtTheme != visitorThemeName)
			story.setVisitorTheme();
	}
	setInterval(ensureTheme,100);
} else {
	var ensureTheme = function(){
		if(config.options.txtTheme != authorThemeName)
			story.setAuthorTheme();
	}
	story.setAuthorTheme();
//# dirty hacky way:
	setTimeout(ensureTheme,100);
	setTimeout(ensureTheme,200);
	setTimeout(ensureTheme,300);
	setTimeout(ensureTheme,400);
	setTimeout(ensureTheme,500);
	setTimeout(ensureTheme,600);
}

// enable theme switching by pressing ctrl+shift+t
jQuery(document).on('keydown',function(e){
	if(usedOnline && !usedWithBackEnd) return;
	if((e.which == 222 || e.which == 0) && e.ctrlKey && e.shiftKey) {
		story.toggleRoleTheme();
		if(e.preventDefault)
			e.preventDefault();
		return false;
	}
});
*/

story.orig_CSP_onTiddlerDblClick = story.onTiddlerDblClick;
story.onTiddlerDblClick = function(ev) {
	if(readOnly) return true;
	return story.orig_CSP_onTiddlerDblClick.apply(this,arguments);
};

// custom info macros
config.macros.showForWhom = {};
config.macros.showForWhom.handler = function(place,$0,$1,$2,paramString,tiddler)
{
	var pParams = paramString.parseParams("tiddler",null,true,false,true)
	    tid = getParam(pParams,"tiddler",tiddler);
	if(!tid) return;

	var forWhom = tid.getSlice("контингент","").replace("-","–").split("; ");
	if(forWhom.length < 3)
		forWhom = forWhom.join(", ");
	else
		forWhom = forWhom.join(", "); //# to be changed?
	createTiddlyText(place,forWhom);
};

config.macros.showSubjectTags =
{
	getTags: function(tiddler) {
		if(!tiddler) return [];
		var tags = tiddler.tags.concat([]), // don't modify tiddler's tags!
		    ageCategory, ageTag, subjectId, isGood, i;

		// for each tag, check if it's in at least one config.subjects[ageCategory].map
		for(i = 0; i < tags.length; i++)
		{
			isGood = false;
			for(ageCategory in config.subjects) {
				if(!ageCategory.contains("School")) continue;
				for(subjectId in config.subjects[ageCategory].map)
					isGood = isGood || (config.subjects[ageCategory].map[subjectId] == tags[i]);
			}
			if(!isGood) tags.splice(i--,1);
		}

		return tags;
	},
	handler: function(place,$0,$1,$2,paramString,tiddler)
	{
		// collect tags
		var pParams = paramString.parseParams("tiddler",null,true,false,true)
		    tid = getParam(pParams,"tiddler",tiddler),
		    tags = this.getTags(tid);
		if(!tags.length) return;

		// form text
		var text = tags[0], i;
		for(i = 1; i < tags.length; i++)
			text += ", "+tags[i];

		// insert text
		createTiddlyText(place,text);
	}
};

config.macros.courseSubTitle = {};
config.macros.courseSubTitle.handler = function(place,$0,$1,$2,paramString,tiddler)
{
	config.macros.showForWhom.handler(place,$0,$1,$2,paramString,tiddler);
	if(!tiddler.tags.contains("дошкольникам") || tiddler.tags.contains("начальная школа")) {
		createTiddlyText(place," | ");
		config.macros.showSubjectTags.handler(place,$0,$1,$2,paramString,tiddler);
	}
};

//# to be droped
config.macros.showAcquisionDetails = {};
config.macros.showAcquisionDetails.handler = function(place,$0,params,wikifier,paramString,tiddler)
{
	var pParams = paramString.parseParams("tiddler",null,true,false,true)
	    tid = getParam(pParams,"tiddler",tiddler);
	if(!tid) return;

	var formLink = tid.getSlice("ссылка на форму записи","");
	createTiddlyElement(place,"a",null,formLink ? "_button" : "__button","Записаться",{
		href: formLink
	});

	//# add price and details
}


// data model objects
config.subjects =
{
	beforeSchool: {
		tag: "дошкольникам",
		map: {
		}
	},
	primarySchool: {
		tag: "начальная школа",
		map: {
			Math:	"Математика",
			Hist:	"История",
			Art:	"Искусство",
			Sport:	"Спорт",
			Phyl:	"Филология и язык",
			NatSci:	"Естествознание",
			IT:	"Робототехника и IT"
		}
	},
	secondarySchool: {
		tag: "старшая школа",
		map: {
			Math:	"Математика",
			Phys:	"Физика",
			Chem:	"Химия",
			Bio:	"Биология",
			Hist:	"История",
			Soc:	"Обществознание",
			Geo:	"География",
			Lang:	"Иностранные языки",
			Rus:	"Русский язык",
			Lingvo:	"Лингвистика",
			Art:	"Искусство",
			IT:	"Робототехника и IT",
			Sport:	"Спорт",
			Psy:	"Психология"
		}
	},
	afterSchool: {
		tag: "взрослым",
		map: {
		}
	},
	getFilterOption: function(subjectKey) { return "chkFilter"+subjectKey; }
};

// set all subject filters to false (all false = all true)
var optionName, name;
for(var ageCategory in config.subjects)
	if(ageCategory.contains("School"))
		for(name in config.subjects[ageCategory].map) {
			optionName = config.subjects.getFilterOption(name);
			if(config.options[optionName] === undefined)
				config.options[optionName] = false;
		}

// and all age filters to false (all false = all true)
for(var form = 1; form <= 11; form++)
	if(config.options["chkAgeForm"+form] === undefined)
		config.options["chkAgeForm"+form] = false;

// highlight in the topLineMenu the link of the last opened tiddler
story.orig_highlightLinks_displayTiddler = story.displayTiddler;
story.displayTiddler = function (srcElement,tiddler,template,animate,unused,customFields,toggle,animationSrc)
{
	var result = this.orig_highlightLinks_displayTiddler.apply(this,arguments),
	    title = (tiddler instanceof Tiddler) ? tiddler.title: tiddler;
	if(config.options.chkSinglePageMode)
		document.title = title;
	jQuery('#topLineMenu .tiddlyLink').removeClass("chosenPageLink");
	jQuery('#topLineMenu [tiddlylink="'+title+'"]').addClass("chosenPageLink");
	return result;
};
//}}}
/***
|''Name''|DashesFormattersPlugin|
|''Version''|0.1|
|Short status|<<insertEditable container:"@stateComment" size:max cell>>|
test: a -- b, c --- d, --ef--
----
gh &mdash;
***/
//{{{
for(var i = 0; i < config.formatters.length; i++)
	if(config.formatters[i].name == "mdash") {		
		config.formatters[i].name = "ndash";
		config.formatters[i].handler = function(w) {
			createTiddlyElement(w.output,"span").innerHTML = "&ndash;";
		};
	};
/*config.formatters.splice(i,0,{
	name: "mdash",
	match: "---",
	handler: function(w)
	{
		createTiddlyElement(w.output,"span").innerHTML = "&mdash;";
	}
});*/
//}}}
[[Кружки «Интеллектуала»]]
Способ включения в узлах:
{{{
<<describeNode "commons" "./_commons.html">>
<<include "node: commons" filters:"[[DistributedInstallationHub]]" wikify noRefresh>>
}}}
<<describeNode "STP_repository" "./tWorld/extensions,%20assemblies%20and%20dev/my%20public%20reps/STP/STP.html">>
<<include "node: STP_repository" filters:"[[SharedTiddlersPlugin]]" import:4 noRefresh>>

<<include "node: CoreTweaksRepo" filters:"[tag[viewing]] [tag[editing]]" import:4 noRefresh>>
<<include "node: commons" filters:"[[FromPlaceToPlacePlugin]] [[ReturnSelectionOnEditBackTweakPlugin]] [[GotoPlugin]] [[NewTiddlerBelowPlugin]] [[YourSearchPlugin]] [[jQuery.Caret.min.js]] [[jQuery.AtWho.min.js]] [[AutoSuggestPlugin]] [[ActivateAutoSuggestTweak]] [[FixFireFoxTabSwitchingPlugin]]" eval noRefresh>>
<<include "node: commons" filters:"[[CommonsMenu]] [[Рекомендации к разработке]] [[Установка компонент]]" noRefresh>>
<<include "node: commons" filters:"[[CommonControlElements]] [[CommonAggregationTools]] [[CommonSemanticElements]] [[CommonSettingPanelElements]]" import:4>>

tw-web [nondev, no reps, no public, commons above]:
<<include "node: commons" filters:"[[MainNodesMap]]" noRefresh>>
<<tiddler [[MainNodesMap]]>>

Описания микрорепозиториев:
<<describeNode microrepCommons "./tWorld/extensions, assemblies and dev/microreps/zz microrep commons.html">>
<<include "node: microrepCommons" filters:"[[InnerReposMap]] [[OuterReposMap]]" wikify noRefresh>>
Обновление расширений (работает для установленных загрузчиков):
<<list filter "[tag[component installer]]" template:"DistributedInstallationHub##installer and updater template">>/%
!installer and updater template
installer and updater of <<view text wikified>>
!%/
<html>
<div class="course_description half">
		<p style="margin-bottom: 2em">Английский для подготовки к&nbsp;международным экзаменам. На&nbsp;занятиях мы&nbsp;будем тренировать необходимые навыки написания эссе, письменных заданий, отрабатывать тестовые вопросы и&nbsp;грамматику, выполнять упражнения на&nbsp;аудирование, а&nbsp;также другие обсуждать другие вопросы, необходимые для&nbsp;сдачи определенного экзамена. Мы работаем с&nbsp;учетом индивидуальных особенностей каждого школьника. Специфика занятий определяется после&nbsp;набора группы.
		</p>
	</div>
	
<div class="half">
		<div class="teacher_text small_half"><p class="name bordered">Артем Олегович Каменев</p>
			<p>Окончил МПГУ, магистр по&nbsp;направлению «Лингвистика»&nbsp;(2011&nbsp;г.). Преподаватель английского языка в&nbsp;школе «Интеллектуал» с&nbsp;2015 г. Преподавательский стаж&nbsp;—&nbsp;7&nbsp;лет.
			<br><a href="http://sch-int.ru/node/677">Подробнее</a>
			</p>
		</div>
		<img class="teacher_img small_half" src="images_teachers/kamenev.jpg">	
	</div>	

<div class="process_description closed">
	
		<div class="enter_block">
			<a><div class="enter">Запись закрыта</div></a>
			<div class="process_text">Ждем вас в январе!
			</div>
		</div><div class="process_block">
		<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div></div>
		<div class="process_column"><div class="bold_words">цена</div><div class="light_words">уточняется</div></div>
	</div></div>
</html>

/%
|контингент|7-11 класс; взрослые|
|ФИО преподавателя|Каменев Артем Олегович|
|id|60|
%/
<html>
<div class="course_description half">
		<p>Английский, которого всегда так не&nbsp;хватает в&nbsp;работе и&nbsp;учебе:</p>
		<ul>
		<li>термины IT-индустрии;</li>
		<li>научный английский для&nbsp;описания экспериментов и&nbsp;написания статей;</li>
		<li>лексика и&nbsp;особенности юридического дискурса, а&nbsp;также особенности юридических систем различных стран;</li>
		<li>бизнес-английский любого уровня.</li>
		</ul>
		<p style="margin-bottom: 2em">Специфика занятий определяется после&nbsp;набора группы.
		</p>
	</div>
	
<div class="half">
		<div class="teacher_text small_half"><p class="name bordered">Артем Олегович Каменев</p>
			<p>Окончил МПГУ, магистр по&nbsp;направлению "Лингвистика"&nbsp;(2011&nbsp;г.). Преподаватель английского языка в&nbsp;школе «Интеллектуал» с&nbsp;2015 г. Преподавательский стаж&nbsp;–&nbsp;7&nbsp;лет.
			<br><a href="http://sch-int.ru/node/677">Подробнее</a>
			</p>
		</div>
		<img class="teacher_img small_half" src="images_teachers/kamenev.jpg">	
	</div>	

<div class="process_description closed">
	
		<div class="enter_block">
			<a><div class="enter">Запись закрыта</div></a>
			<div class="process_text">Ждем вас в январе!
			</div>
		</div><div class="process_block">
		<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div></div>
		<div class="process_column"><div class="bold_words">цена</div><div class="light_words">уточняется</div></div>
	</div></div>
</html>

/%
|контингент|8-11 класс|
|ФИО преподавателя|Каменев Артем Олегович|
|id|59|
%/
/***
|Version|1.4|
{{PoGc{дописать метаданные!}}} Пока у плагина нет документации и т.п., он базируется в репозитории напару с ~GridPlugin
* в версии 1.2 исправлен тот факт, что ":" включался в slice name
* в версии 1.3 изменено поведение в отношении начальных/конечных пробелов/табуляций вокруг slice name
* в версии 1.4 исправлено поведение, когда пробелы в конце "второго столбца" добавляются в slice value
* когда пробел обязательно заменять на \x20? можно ли тут обойтись без этого?
***/
//{{{
TiddlyWiki.prototype.slicesRE = /(?:^([\'\/]{0,2})~?([\.\w]+)\:\1[\t\x20]*([^\n]+)[\t\x20]*$)|(?:^\|\x20?([\'\/]{0,2})~?([^\|\s\:\~\'\/]|(?:[^\|\s~\'\/][^\|\n\f\r]*[^\|\s\:\'\/]))\:?\4[\x20\t]*\|[\t\x20]*([^\n\t\x20](?:[^\n]*[^\n\t\x20])?)[\t\x20]*\|$)/gm;
store.slices = {};
//}}}
ExtendedSlicesPlugin
<<include "node: GridAndSlicesRepo" filters:"[[ExtendedSlicesPlugin installer and updater]] [[ExtendedSlicesPlugin]]" import:4 noRefresh>>
/*{{{*/
#master_classes {
	display: flex;
	width: 100%;
	background: #fdf4cd;
    padding: 2em 1% 2.5em 7%;
	font-size: 1.4em;
	line-height: 1.2em;
}
.master_classes_column {
	display: inline-block;
	padding-right: 3em;
}
.master_class {
	margin-bottom: .75em;
}
.margin_left {
	margin-left: .5em;
}
.master_class a {
	color: black;
	cursor: pointer;
}
.master_class a:hover {
	color: #a5b861;
}
.yellow_wrap {
	background: #f8c52c;
	padding: 1.2em 2em 2em;
}
#tiddlerКружки_«Интеллектуала», #tiddlerКружки_«Интеллектуала» .viewer {
	padding: 0;
}
#tiddlerКружки_«Интеллектуала» .courses {
	padding: 1em 0 2em;
	display: inline-block;
	width: 60%;
	margin-left: 7%;
}
#tiddlerКружки_«Интеллектуала» .coursesContainer span {
	width: 31%;
	min-width: 228px !important;
}
#tiddlerКружки_«Интеллектуала» .coursesContainer {
	padding: 20px 0 25px;
	width: 100%;
}
#tiddlerКружки_«Интеллектуала» .links {
	display: inline-block;
	max-width: 14%;
	padding: 1em 3% 0;
	font-family: Light;
	font-size: 1.5em;
	line-height: 1.2em;
	text-align: center;
}
#tiddlerКружки_«Интеллектуала» .links a {
	color: #000;
}
#tiddlerКружки_«Интеллектуала» .links img {
	max-width: 90%;
	margin: .3em 0;
}
/*}}}*/
/***
|Description|Makes ctrl+tab work for tab changing (when focused on an editarea) in ~FireFox (instead of inserting a tab symbol)|
|Version|1.0|
|Short status|<<insertEditable container:"@stateComment" size:max cell>>|
|Author|Yakov Litvin|
keep overwriting in mind! (hope this will move to the core soon)
***/
//{{{
Story.prototype.onTiddlerKeyPress = function(ev)
{
	var e = ev || window.event;
	clearMessage();
	var consume = false;
	var title = this.getAttribute("tiddler");
	var target = resolveTarget(e);
	switch(e.keyCode) {
	case 9: // Tab
		var ed = story.getTiddlerField(title,"text");
		if(target.tagName.toLowerCase() == "input" && ed.value == config.views.editor.defaultText.format([title])) {
			// moving from input field and editor still contains default text, so select it
			ed.focus();
			ed.select();
			consume = true;
		}
		if(config.options.chkInsertTabs && !e.ctrlKey && target.tagName.toLowerCase() == "textarea") {
			replaceSelection(target,String.fromCharCode(9));
			consume = true;
		}
		if(config.isOpera)
			target.onblur = function() {
				this.focus();
				this.onblur = null;
			};
		break;
	case 13: // Ctrl-Enter
	case 10: // Ctrl-Enter on IE PC
	case 77: // Ctrl-Enter is "M" on some platforms
		if(e.ctrlKey) {
			blurElement(this);
			config.macros.toolbar.invokeCommand(this,"defaultCommand",e);
			consume = true;
		}
		break;
	case 27: // Escape
		blurElement(this);
		config.macros.toolbar.invokeCommand(this,"cancelCommand",e);
		consume = true;
		break;
	}
	e.cancelBubble = consume;
	if(consume) {
		if(e.stopPropagation) e.stopPropagation(); // Stop Propagation
		e.returnValue = true; // Cancel The Event in IE
		if(e.preventDefault ) e.preventDefault(); // Cancel The Event in Moz
	}
	return !consume;
};
//}}}
/***
|status|works|
***/
//{{{
jQuery(window).on("scroll",function(){
	
	var menuElement = document.getElementById("mainMenu");
	if(!menuElement) return;
	var header = document.getElementsByClassName("header")[0],
	    headerBottom = header.offsetTop + header.offsetHeight - findScrollY(),
	    position = findScrollY() + Math.max(headerBottom,0)

	menuElement.style.top = position+"px";
});
//}}}
/***
|Version|1.0.3 customized for this site|
|Requires|CustomSettingsPlugin|
|Author|Yakov Litvin|
|Forked from|[[CollapseTiddlersPlugin|http://www.TiddlyTools.com/#CollapseTiddlersPlugin]] by Eric Shulman and previously Bradley Meck|
|~CoreVersion?|{{DDn{??, >=2.1}}}|
***/
//{{{
config.shadowTiddlers.CollapsedTemplate =
	"<!--{{{-->\
	<div class='toolbar' macro='toolbar [[CollapsedToolbarCommands]]'></div>\
	<div class='title' macro='view title'></div>\
	<!--}}}-->";
config.shadowTiddlers.CollapsedToolbarCommands =
	"closeTiddler closeOthers expandTiddler collapseOthers +editTiddler "+
	"jump > fields permalink references deleteTiddler";

// hijack config.macros.toolbar.handler to add collapseTiddler and collapseOthers
config.options.chkAddFoldingButtons = true;
config.foldTiddlers_orig_toolbarHandler = config.macros.toolbar.handler;
if(config.options.chkAddFoldingButtons)
	config.macros.toolbar.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	// warning: paramString is not changed as /currently/ it's not used by config.macros.toolbar.handler

		var i, doAdd = true,
		    mainCommandRegExp = /closeOthers/,
		    foldCommandRegExp  = /collapseTiddler/,
		    unfoldCommandRegExp = /expandTiddler/;

		// don't add in the folded condition (if expandTiddler is present)
		// or if collapseTiddler is already present (manually added to toolbar)
		for(i = 0; i < params.length; i++)
			if(unfoldCommandRegExp.exec(params[i]) ||
			   foldCommandRegExp.exec(params[i])) {
				doAdd = false;
				break;
			}
		if(!doAdd)
			return config.foldTiddlers_orig_toolbarHandler.apply(this,arguments);
		
		for(i = 0; i < params.length; i++)
			if(mainCommandRegExp.exec(params[i])) { // locate the "edit" command
				params.splice(i+1,0,"collapseTiddler","collapseOthers"); // add after "edit"
				break;
			}
		config.foldTiddlers_orig_toolbarHandler.apply(this,arguments);
	};
//}}}
//{{{
config.commands.collapseTiddler = {

	text: "fold",
	tooltip: "Collapse this tiddler",
	collapsedTemplate: "CollapsedTemplate",
	webCollapsedTemplate: "WebCollapsedTemplate",
	handler: function(event,src,title) {

		var e = story.findContainingTiddler(src); if (!e) return false;
		// don't fold tiddlers that are being edited!
		if(story.isDirty(e.getAttribute("tiddler"))) return false;
		var t = config.commands.collapseTiddler.getCollapsedTemplate();
		config.commands.collapseTiddler.saveTemplate(e);
		config.commands.collapseTiddler.display(title,t);
		e.setAttribute("folded","true");
		return false;
	},
	getCollapsedTemplate: function() {

		return (readOnly && store.tiddlerExists(this.webCollapsedTemplate)) ?
			this.webCollapsedTemplate :
			this.collapsedTemplate
	},
	saveTemplate: function(e) {

		if (e.getAttribute("savedTemplate") == undefined)
			e.setAttribute("savedTemplate", e.getAttribute("template"));
	},
	// fold/unfold tiddler with suspend/resume of single/top/bottom-of-page mode
	display: function(title,t) {

		var opt = config.options;
		var saveSPM = opt.chkSinglePageMode;   opt.chkSinglePageMode = false;
		var saveTPM = opt.chkTopOfPageMode;    opt.chkTopOfPageMode = false;
		var saveBPM = opt.chkBottomOfPageMode; opt.chkBottomOfPageMode = false;
		story.displayTiddler(null,title,t);
		opt.chkBottomOfPageMode = saveBPM;
		opt.chkTopOfPageMode = saveTPM;
		opt.chkSinglePageMode = saveSPM;
	}
}

config.commands.expandTiddler = {

	text: "unfold",
	tooltip: "Expand this tiddler",
	handler: function(event,src,title)
	{
		var e = story.findContainingTiddler(src); if (!e) return false;
		var t = e.getAttribute("savedTemplate");
		config.commands.collapseTiddler.display(title,t);
		e.setAttribute("folded","false");
		return false;
	}
}

config.macros.collapseAll = {

	text: "collapse all",
	tooltip: "Collapse all tiddlers",
	handler: function(place,macroName,params,wikifier,paramString,tiddler){
		createTiddlyButton(place,this.text,this.tooltip,function(){
			story.forEachTiddler(function(title,tiddler)
			{
				if(story.isDirty(title)) return;
				var t = config.commands.collapseTiddler.getCollapsedTemplate();

				config.commands.collapseTiddler.saveTemplate(tiddler);
				config.commands.collapseTiddler.display(title,t);
				tiddler.folded = true;
			});
			return false;
		})
	}
}

config.macros.expandAll = {

	text: "expand all",
	tooltip: "Expand all tiddlers",
	handler: function(place,macroName,params,wikifier,paramString,tiddler){
		createTiddlyButton(place,this.text,this.tooltip,function(){
			story.forEachTiddler(function(title,tiddler){
				var t = config.commands.collapseTiddler.getCollapsedTemplate();
				if(tiddler.getAttribute("template")!=t) return; // re-display only if collapsed
				var t = tiddler.getAttribute("savedTemplate");
				config.commands.collapseTiddler.display(title,t);
				tiddler.folded = false;
			});
			return false;
		})
	}
}

config.commands.collapseOthers = {

	text: "focus",
	tooltip: "Expand this tiddler and collapse all others",
	handler: function(event,src,title) {
		var e = story.findContainingTiddler(src); if (!e) return false;
		story.forEachTiddler(function(title,tiddler) {
			if(story.isDirty(title)) return;
			var t = config.commands.collapseTiddler.getCollapsedTemplate();
			if (e == tiddler) t = e.getAttribute("savedTemplate");
			config.commands.collapseTiddler.saveTemplate(tiddler);
			config.commands.collapseTiddler.display(title,t);
			tiddler.folded = (e != tiddler);
		})
		return false;
	}
}

// {{{<<foldFirst>>}}} macro forces tiddler to be folded when *initially* displayed.
// Subsequent re-render does NOT re-fold tiddler, but closing/re-opening tiddler DOES cause it to fold first again.
config.macros.foldFirst = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {

		var e = story.findContainingTiddler(place);
		if (e.getAttribute("foldedFirst") == "true") return; // already been folded once
		var title = e.getAttribute("tiddler")
		var t = config.commands.collapseTiddler.getCollapsedTemplate();
		config.commands.collapseTiddler.saveTemplate(e);
		config.commands.collapseTiddler.display(title,t);
		e.setAttribute("folded","true");
		e.setAttribute("foldedFirst","true"); // only when tiddler is first rendered
		return false;
	}
}
//}}}
//{{{
// [showFolded[n]] adds .openFolded = true to the last n tiddlers among results
config.filters.showFolded = function(results,match) {
	
	var number = parseInt(match[3]); // if NaN, the loop below just is not executed

	for(var i = 0; (i < number) && (results.length-1-i >= 0); i++)
		results[results.length-1-i].openFolded = true;
	
	return results;
}
// hijack chooseTemplateForTiddler to open tiddlers with .openFolded folded
config.foldTiddlers_orig_chooseTemplateForTiddler = Story.prototype.chooseTemplateForTiddler;
Story.prototype.chooseTemplateForTiddler = function(title,template) {

	var t = store.fetchTiddler(title);
	if(t && t.openFolded)
	{
		t.openFolded = false
		return "CollapsedTemplate";
	}
	
	return config.foldTiddlers_orig_chooseTemplateForTiddler.apply(this,arguments);
}
//# optionally change fold/unfold ~commands so that they change openFolded (the state is remembered during the session)

Story.prototype.isOpenedFolded = function(title) {
	
	var tiddlerElem = story.getTiddler(title);
	if(!tiddlerElem)
		return false;
	return tiddlerElem.getAttribute("template") == "CollapsedTemplate";
}
//# overwrite permaview to save which tiddlers are folded
//  use "filter" paramifier
if(!readOnly)
	Story.prototype.permaView = function()
	{
		var links = [];
		this.forEachTiddler(function(title,element) {
			links.push(String.encodeTiddlyLink(title) +
				   (story.isOpenedFolded(title) ? " [showFolded[1]]" : ""));
		});
		var t = links.join(" ");
		if(t == "")
			t = "#";
		else
			t = encodeURIComponent('filter:"'+t+'"');
		if(window.location.hash != t)
			window.location.hash = t;
	};
//}}}
FoldTiddlerPlugin
<<include "node: WhatsOpenRepo" filters:"[[FoldTiddlerPlugin installer and updater]] [[FoldTiddlerPlugin]]" import:4 noRefresh>>
/***
|''Name''|ForEachTiddlerPlugin|
|''Version''|1.3.1|
|''Forked from''|[[abego.ForEachTiddlerPlugin|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin]], by Udo Borkowski|
|''Author''|Yakov Litvin|
|''CoreVersion''|2.6.2|
|~|Although 2.6.2 is theoretically minimal TW version required for the correct operation, tests showed that the plugin works in 2.6.0, too.|
***/
//{{{
(function(){

// Only install once
if (version.extensions.ForEachTiddlerPlugin) {
	alert("Warning: more than one copy of ForEachTiddlerPlugin is set to be launched");
	return;
} else
	version.extensions.ForEachTiddlerPlugin = {
		source: "[repository url here]",
		licence: "[licence url here]",
		copyright: "Copyright (c) Yakov Litvin, 2012-2015 [url of the meta page]"
	};

//============================================================================
// forEachTiddler Macro
//============================================================================

// ---------------------------------------------------------------------------
// Configurations and constants
// ---------------------------------------------------------------------------

config.macros.forEachTiddler =
{
	actions: {
		addToList: {},
		write: {}
	}
};

// ---------------------------------------------------------------------------
//  The forEachTiddler Macro Handler
// ---------------------------------------------------------------------------

config.macros.forEachTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	// --- Pre-parsing for up-to-date params ----------------

	var preParsedParams = this.getUpToDateParams(paramString);
	// for backward compability, "params" are used as well

	// --- Parsing ------------------------------------------

	var parsedParams = this.parseParams(preParsedParams,params);
	if (parsedParams.errorText) {
		this.handleError(place, parsedParams.errorText);
		return;
	}//else
		parsedParams.place = place;
		parsedParams.inTiddler = tiddler ? tiddler : getContainingTiddler(place);

	// --- "Static" processing ------------------------------

	// Choose the action
	var actionName = parsedParams.actionName;
	var action = this.actions[actionName]; // no this is always a "known" action

	// Create the element
	var element = document.createElement(action.element);
	jQuery(element).attr({ refresh: "macro", macroName: macroName }).data(parsedParams);
	place.appendChild(element);

	// --- "Dynamic" processing -----------------------------

	this.refresh(element);
};

config.macros.forEachTiddler.refresh = function(element)
{
	var parsedParams = jQuery(element).data(),
	    action = this.actions[parsedParams.actionName];

	jQuery(element).empty();
	try {
		var tiddlersAndContext = this.getTiddlersAndContext(parsedParams);

		// Perform the action
		action.handler(element, tiddlersAndContext.tiddlers,
				parsedParams.actionParameter, tiddlersAndContext.context);
	} catch (e) {
		this.handleError(place, e);
	}
};

config.macros.forEachTiddler.oldFashionParams = ["in", "filter", "where", "sortBy",
	"script", "write", "begin", "end", "none", "toFile", "withLineSeparator"
//# add to docs: new actions are to be added here or used in name:param notation only
];

config.macros.forEachTiddler.getUpToDateParams = function(paramString)
// turns stuff like "... where 'tiddler.title.length < 20' ..."
//               to "... where:'tiddler.title.length < 20' ..." and then applies parseParams,
// which allows to use params in an arbitrary order and other goodies of parsed params
{
	var paramPairRegExp = new RegExp("("+this.oldFashionParams.join("|")+")\\s+"+
			"("+ // adapted from String.prototype.parseParams
			'(?:"(?:(?:\\\\")|[^"])+")|'+		// double-quoted param
			"(?:'(?:(?:\\\\')|[^'])+')|"+		// quoted param
			"(?:\\[\\[(?:\\s|\\S)*?\\]\\])|"+	// [[...]]-wrapped
			"(?:\\{\\{(?:\\s|\\S)*?\\}\\})|"+	// {{...}}-wrapped
			"(?:[^\"':\\s][^\\s:]*)|"+		// non-wrapped
			"(?:\"\")|(?:'')"+			// empty '' or ""
			")","g");
	paramString =
		paramString.replace(paramPairRegExp,function($0,$1,$2){ return $1+":"+$2; });

	return paramString.parseParams("filter",null,true,false,true);
	// the first unnamed param is now considered as the 'filter' param
};

// Returns an object with properties "tiddlers" and "context".
// tiddlers holds the (sorted) tiddlers selected by the parameter,
// context the context of the execution of the macro.
//
// The action is not yet performed.
//
// @param parameter  holds the parameter of the macro as separate properties.
//				  The following properties are supported:
//
//						place
//						filter
//						whereClause
//						sortClause
//						sortAscending
//						actionName
//						actionParameter
//						scriptText
//						tiddlyWikiPath
//
//					All properties are optional.
//					For most actions the place property must be defined.
//
config.macros.forEachTiddler.getTiddlersAndContext = function(parameter)
{
	var context = config.macros.forEachTiddler.createContext(parameter.place, parameter.filter, parameter.whereClause, parameter.sortClause, parameter.sortAscending, parameter.actionName, parameter.actionParameter, parameter.scriptText, parameter.tiddlyWikiPath, parameter.inTiddler);

	var tiddlyWiki = parameter.tiddlyWikiPath ? this.loadTiddlyWiki(parameter.tiddlyWikiPath) : store;
	context["tiddlyWiki"] = tiddlyWiki;
	
	// Get the tiddlers, as defined by the filter and the whereClause
	var tiddlers = this.findTiddlers(parameter.filter, parameter.whereClause, context, tiddlyWiki);
	context["tiddlers"] = tiddlers;

	// Sort the tiddlers, when sorting is required.
	if (parameter.sortClause)
		this.sortTiddlers(tiddlers, parameter.sortClause, parameter.sortAscending, context);

	return {tiddlers: tiddlers, context: context};
};

// ---------------------------------------------------------------------------
//  The actions 
// ---------------------------------------------------------------------------

// Internal.
//
// --- The addToList Action -----------------------------------------------
//
config.macros.forEachTiddler.actions.addToList.element = "ul";
config.macros.forEachTiddler.actions.addToList.handler = function(place, tiddlers, parameter, context)
{
	for (var i = 0; i < tiddlers.length; i++)
	{
		var tiddler = tiddlers[i];
		var listItem = document.createElement("li");
		place.appendChild(listItem);
		createTiddlyLink(listItem, tiddler.title, true);
	}
};

// Internal.
//
// --- The write Action ---------------------------------------------------
//
config.macros.forEachTiddler.actions.write.element = "span";
config.macros.forEachTiddler.actions.write.handler = function(place, tiddlers, parameter, context)
{
	var params = parameter[0].nonParsedParams;
	if(!parameter[0]["write"])
		return this.handleError(place, "Missing expression behind 'write'.");
	var textExpression = config.macros.forEachTiddler.paramEncode(getParam(parameter,["write"]));

	var getParamExpression = function(name)
	{
		if(params.contains(name) && !parameter[0][name])
			throw "Missing text behind '%0'".format([name]);
		return config.macros.forEachTiddler.paramEncode(getParam(parameter,name));
	};
	var beginExpression = getParamExpression("begin");
	var   endExpression = getParamExpression("end");
	var  noneExpression = getParamExpression("none");

	var lineSeparator = undefined;
	if(params.contains("toFile") && !parameter[0]["toFile"])
		return this.handleError(place, "Filename expected behind 'toFile' of 'write' action.");
	var filename = getParam(parameter,"toFile");
	filename = config.macros.forEachTiddler.paramEncode(filename);
	if(filename) {
		filename = config.macros.forEachTiddler.getLocalPath(filename);

		if(params.contains("withLineSeparator")&& !parameter[0]["withLineSeparator"])
			return this.handleError(place, "Line separator text expected behind 'withLineSeparator' of 'write' action.")
		lineSeparator = getParamExpression("withLineSeparator");
	}

	// Perform the action.
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(textExpression, context),
	    count = tiddlers.length,
	    text = "";
	if (count > 0 && beginExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(beginExpression, context)(undefined, context, count, undefined);

	for (var i = 0; i < count; i++) {
		var tiddler = tiddlers[i];
		text += func(tiddler, context, count, i);
	}

	if (count > 0 && endExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(endExpression, context)(undefined, context, count, undefined);

	if (count == 0 && noneExpression)
	{
		var beginAddition = beginExpression ? "("+beginExpression+")" : "",
		      endAddition =   endExpression ? "("+  endExpression+")" : "",
		     bothAddition = "("+beginAddition
				+((beginAddition && endAddition) ? "+" : "")+endAddition+")";
		noneExpression = noneExpression
				.replace(/(?=\W|^)begin(?=\W|$)/,beginAddition)
				.replace(/(?=\W|^)end(?=\W|$)/,    endAddition)
				.replace(/(?=\W|^)same(?=\W|$)/,  bothAddition);
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(noneExpression, context)(undefined, context, count, undefined);
	}

	if (filename) {
		if (lineSeparator !== undefined) {
			lineSeparator = lineSeparator.replace(/\\n/mg, "\n").replace(/\\r/mg, "\r");
			text = text.replace(/\n/mg,lineSeparator);
		}
		saveFile(filename, convertUnicodeToUTF8(text));
	} else
		wikify(text, place, null/* highlightRegExp */, context.inTiddler);
};


// ---------------------------------------------------------------------------
//  Helpers
// ---------------------------------------------------------------------------

config.macros.forEachTiddler.parseParams = function(preParsedParams,params)
{
	if(params.contains("in") && !preParsedParams[0]["in"])
		return { errorText: "TiddlyWiki path expected behind 'in'." };
	var TWpath = getParam(preParsedParams,"in");

	if(params.contains("filter") && !preParsedParams[0]["filter"])
		return { errorText: "No filter specified." };

	if(params.contains("where") && !preParsedParams[0]["where"])
		return { errorText: "whereClause missing behind 'where'." };
	var where = getParam(preParsedParams,"where");

	var ascending = true;
	if(params.contains("sortBy") && !preParsedParams[0]["sortBy"])
		return { errorText: "sortClause missing behind 'sortBy'." };
	var sortClause = getParam(preParsedParams,"sortBy");
	if(preParsedParams[0]["sortBy"] && preParsedParams[0]["sortBy"].length > 1)
		ascending = !(preParsedParams[0]["sortBy"][1] == "descending");

	if(params.contains("script") && !preParsedParams[0]["script"])
		return { errorText: "scriptText is not specified." };
	var scriptText = getParam(preParsedParams,"script");

	var actionName = "addToList";
	for(var knownActionName in this.actions)
		if(preParsedParams[0][knownActionName]) {
			actionName = knownActionName;
			break;
		}
	// no error handling if there's an unknown action
	// because now the order is not important and actionName can have another position
	preParsedParams[0].nonParsedParams = params; // for parsing inside actions

	return {
		tiddlyWikiPath:	this.paramEncode(TWpath),
		filter:		getParam(preParsedParams,"filter"),
		whereClause:	this.paramEncode(where) || true,
		sortClause:	this.paramEncode(sortClause),
		sortAscending:	ascending,
		scriptText:	this.paramEncode(scriptText),
		actionName:	actionName,
		actionParameter:preParsedParams // not much need to cut out other params
	}
};

var getContainingTiddler = function(e)
{
	while(e && !hasClass(e,"tiddler"))
		e = e.parentNode;
	var title = e ? e.getAttribute("tiddler") : null; 
	return title ? store.getTiddler(title) : null;
};


// Internal.
//
config.macros.forEachTiddler.createContext = function(placeParam, filterParam, whereClauseParam, sortClauseParam, sortAscendingParam, actionNameParam, actionParameterParam, scriptText, tiddlyWikiPathParam, inTiddlerParam) {
	return {
		place		: placeParam,
		filter		: filterParam,
		whereClause	: whereClauseParam,
		sortClause	: sortClauseParam,
		sortAscending	: sortAscendingParam,
		script		: scriptText,
		actionName	: actionNameParam,
		actionParameter	: actionParameterParam,
		tiddlyWikiPath	: tiddlyWikiPathParam,
		inTiddler	: inTiddlerParam, // the tiddler containing the <<forEachTiddler ...>> macro call.
		viewerTiddler	: getContainingTiddler(placeParam) //the tiddler showing the forEachTiddler result
	};
};


// Internal.
//
// Returns a TiddlyWiki with the tiddlers loaded from the TiddlyWiki of the given path.
//
config.macros.forEachTiddler.loadTiddlyWiki = function(path, idPrefix)
{
	if (!idPrefix)
		idPrefix = "store";

	var lenPrefix = idPrefix.length;
	
	// Read the content of the given file
	var content = loadFile(this.getLocalPath(path));
	if(content === null)
		throw "TiddlyWiki '"+path+"' not found.";
	
	var tiddlyWiki = new TiddlyWiki();

	if (!tiddlyWiki.importTiddlyWiki(content))
		throw "File '"+path+"' is not a TiddlyWiki.";
	tiddlyWiki.dirty = false;

	return tiddlyWiki;
};


// Internal.
//
// Returns a function that has a function body returning the given javaScriptExpression.
// The function has the parameters:
// 
//	 (tiddler, context, count, index)
//
config.macros.forEachTiddler.getEvalTiddlerFunction = function (javaScriptExpression, context) {
	var script = context["script"];
//	var functionText = "var theFunction = function(tiddler, context, count, index) { return "+javaScriptExpression+"}";
	var functionText = "var theFunction = function(tiddler, context, count, index) { "+(script ? script+";" : "")+"return "+javaScriptExpression+"}";
//	var fullText = (script ? script+";" : "")+functionText+";theFunction;";
	var fullText = functionText+";theFunction;";
	return eval(fullText);
};


// Internal.
//
config.macros.forEachTiddler.findTiddlers = function(filter, whereClause, context, tiddlyWiki) {
	var result = [];
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(whereClause, context);
	if(filter) {
		var tids = tiddlyWiki.filterTiddlers(filter);
		for(var i = 0; i < tids.length; i++)
			if(func(tids[i], context, undefined, undefined))
				result.push(tids[i]);
	} else
		tiddlyWiki.forEachTiddler(function(title,tiddler) {
			if(func(tiddler, context, undefined, undefined))
				result.push(tiddler);
		});
	return result;
};


// Internal.
//
config.macros.forEachTiddler.sortAscending = function(tiddlerA, tiddlerB)
{
	return ((tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue)
			? 0
			: ((tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
			   ? -1
			   : +1))
};

// Internal.
//
config.macros.forEachTiddler.sortDescending = function(tiddlerA, tiddlerB)
{
	return ((tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue)
			? 0
			: ((tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
			   ? +1
			   : -1))
};

// Internal.
//
config.macros.forEachTiddler.sortTiddlers = function(tiddlers, sortClause, ascending, context) {
	// To avoid evaluating the sortClause whenever two items are compared 
	// we pre-calculate the sortValue for every item in the array and store it in a 
	// temporary property ("forEachTiddlerSortValue") of the tiddlers.
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(sortClause, context);
	var count = tiddlers.length;
	var i;
	for (i = 0; i < count; i++) {
		var tiddler = tiddlers[i];
		tiddler.forEachTiddlerSortValue = func(tiddler,context, undefined, undefined);
	}

	// Do the sorting
	tiddlers.sort(ascending ? this.sortAscending : this.sortDescending);

	// Delete the temporary property that holds the sortValue.
	for (i = 0; i < tiddlers.length; i++)
		delete tiddlers[i].forEachTiddlerSortValue;
};


// Internal.
//
// Creates an element that holds an error message
// 
config.macros.forEachTiddler.createErrorElement = function(place, exception) {
	var message = (exception.description) ? exception.description : exception.toString();
	return createTiddlyElement(place,"span",null,"forEachTiddlerError","<<forEachTiddler ...>>: "+message);
};

// Internal.
//
// @param place [may be null]
//
config.macros.forEachTiddler.handleError = function(place, exception)
{
	if(place)
		this.createErrorElement(place, exception);
	else
		throw exception;
};


// Internal.
//
// Encodes the given string.
//
// Replaces 
//	 "$))" to ">>"
//	 "$)" to ">"
//
config.macros.forEachTiddler.paramEncode = function(s)
{
	if(!s) return s;
	var reGTGT = new RegExp("\\$\\)\\)","mg");
	var reGT = new RegExp("\\$\\)","mg");
	return s.replace(reGTGT, ">>").replace(reGT, ">");
};
//# document the .paramEncode transformation of the params; or get rid of it?

// Internal.
//
// Returns the given original path (that is a file path, starting with "file:")
// as a path to a local file, in the systems native file format.
//
// Handles relative links, too.
//
config.macros.forEachTiddler.getLocalPath = function(originalPath) {
// code adapted from SharedTiddlersPlugin to handle relative paths

	var originalAbsolutePath = originalPath;
	if(originalAbsolutePath.search(/^((http(s)?)|(file)):/) != 0) {
	// no protocol prefix..

		if (originalAbsolutePath.search(/^(.\:\\)|(\\\\)|(\/)/) != 0){// is relative?
		// as Unix filesystem root is "/", urls starting with it are not considered as relative

			var currentUrl  = document.location.toString();
			var currentPath = (currentUrl.lastIndexOf("/") > -1) ?
				currentUrl.substr(0, currentUrl.lastIndexOf("/") + 1) :
				currentUrl + "/";
			originalAbsolutePath = currentPath + originalAbsolutePath;
		} else
		// an "absolute" path to a local file. Prefix it with file://

			originalAbsolutePath = "file://" + originalAbsolutePath;

		// replace every \ by a /, to cover Windows style pathes
		originalAbsolutePath = originalAbsolutePath.replace(/\\/mg,"/");
	}
	return getLocalPath(originalAbsolutePath);
};


// ---------------------------------------------------------------------------
// Stylesheet Extensions (may be overridden by local StyleSheet)
// ---------------------------------------------------------------------------
//
setStylesheet(
	".forEachTiddlerError{color: #ffffff;background-color: #880000;}",
	"forEachTiddler");

// ---------------------------------------------------------------------------
// fet alias for the the forEachTiddler Macro
// ---------------------------------------------------------------------------

config.macros.fet = config.macros.forEachTiddler;

//============================================================================
// utilities for String and Tiddler objects useful in fet macros
//============================================================================

// Returns true if the string starts with the given prefix, false otherwise.
//
String.prototype.startsWith = function(prefix) {
	var n =  prefix.length;
	return (this.length >= n) && (this.slice(0, n) == prefix);
};

// Returns true if the string ends with the given suffix, false otherwise.
//
String.prototype.endsWith = function(suffix) {
	var n = suffix.length;
	return (this.length >= n) && (this.right(n) == suffix);
};

// Returns true when the string contains the given substring, false otherwise.
//
String.prototype.contains = function(substring) {
	return this.indexOf(substring) >= 0;
};
})();

// Returns the slice value if it is present or defaultText otherwise
//
Tiddler.prototype.getSlice = function(sliceName,defaultText)
{
	var re = TiddlyWiki.prototype.slicesRE;
	re.lastIndex = 0;
	var m = re.exec(this.text);
	while(m) {
		if(m[2]) {
			if(m[2] == sliceName)
				return m[3];
		} else {
			if(m[5] == sliceName)
				return m[6];
		}
		m = re.exec(this.text);
	}
	return defaultText;
};

// Returns the section value if it is present or defaultText otherwise
//
Tiddler.prototype.getSection = function(sectionName,defaultText)
{
	var beginSectionRegExp = new RegExp("(^!{1,6}[ \t]*" + sectionName.escapeRegExp() + "[ \t]*\n)","mg"),
	    sectionTerminatorRegExp = /^!/mg;

	var match = beginSectionRegExp.exec(this.text), sectionText;
	if(match) {
		sectionText = this.text.substr(match.index+match[1].length);
		match = sectionTerminatorRegExp.exec(sectionText);
		if(match)
			sectionText = sectionText.substr(0,match.index-1); // don't include final \n
		return sectionText;
	}
	return defaultText;
};

var transText = function(tiddlerOrGetTiddlerTextArg, moreArguments)
{
	var title = (tiddlerOrGetTiddlerTextArg instanceof Tiddler) ? tiddlerOrGetTiddlerTextArg.title : tiddlerOrGetTiddlerTextArg;
	return "<<tiddler [[" + title + "]] "+ (moreArguments||"") +">>"
};
//}}}
ForEachTiddlerPlugin
<<include "node: ForEachTiddlerPluginRepo"
filters:"[[ForEachTiddlerPlugin]] [[ForEachTiddlerPlugin installer and updater]]" import:4 noRefresh>>
<html>
<div class="course_description half">
		<p style="margin-bottom: 2em">Общий курс английского языка для школьников разных уровней. Занятия помогут уверенно овладеть школьной программой и углубить ее, развить все языковые навыки: чтение, письмо, аудирование и устную речь. Школьники будут работать индивидуально и в парах, тренировать разговорный английский в дискуссиях и диалогах на разные темы. По желанию учащихся занятия могут стать подготовкой к сдаче экзаменов KET или PET.
		</p>
	</div>

<div class="half">
		<div class="teacher_text small_half"><p class="name bordered">Нина Анатольевна Мороз</p>
			<p>Окончила филологический факультет МГУ им. М.В. Ломоносова (2003 г.), кандидат филологических наук (2006 г.). Учитель первой квалификационной категории (английский язык). Учитель английского языка в школе «Интеллектуал» с 2007 г. Преподаватель истории зарубежной литературы на филологическом факультете МГУ. Опыт работы на историческом факультете МГУ, в школе филологии НИУ ВШЭ.
			<br><a href="http://istina.msu.ru/profile/nina_moroz/">Полный список заслуг и публикаций</a>
			</p>
		</div>
	<img class="teacher_img small_half" src="images_teachers/moroz.jpg">	
	</div>

<div class="process_description_2 closed">
<h2>Группы</h2>
<table class="groups">
	<tr class="group_number">
		<td><span class="num">1</span></td>
		<td><span class="num">2</span></td>
		<td><span class="num">3</span></td>
	</tr>
	<tr class="group_age">
		<td>6–7 класс</td>
		<td>8–9 класс</td>
		<td>10–11 класс</td>
	</tr>
	<tr class="group_frequency">
		<td>1 раза в неделю,<br>по вторникам</td>
		<td>1 раза в неделю,<br>по вторникам</td>
		<td>1 раза в неделю,<br>по вторникам</td>
	</tr>
	<tr class="group_duration">
		<td>80 минут</td>
		<td>90 минут</td>
		<td>90 минут</td>
	</tr>
	<tr class="group_price">
		<td><span class="extrabold">5000 &#8381;</span><br>за 8 занятий</td>
		<td><span class="extrabold">5000 &#8381;</span><br>за 8 занятий</td>
		<td><span class="extrabold">5000 &#8381;</span><br>за 8 занятий</td>
	</tr>
</table>
<div class="enter_block_2">
	<a><div class="enter_2">Запись закрыта</div></a>
	<div class="enter_text">Ждем вас в январе!
	</div>

</div></div>
</html>

/%
|контингент|6-11 класс|
|ФИО преподавателя|Мороз Нина Анатольевна|
|id|61|
%/
<html>
<div class="course_description half">
		<p>Школьный английский на&nbsp;5 для&nbsp;пятиклассников!
		</p>
		<p style="margin-bottom: 2em">Как заинтересовать ребенка языком, если на&nbsp;уроках этот&nbsp;предмет не&nbsp;дается и&nbsp;вызывает тоску? На&nbsp;наших увлекательных занятиях ребята уверенно овладеют школьной программой и&nbsp;углубят&nbsp;ее, а&nbsp;также улучшат навыки современного письменного и&nbsp;разговорного английского.
		</p>
	</div>
	
<div class="half">
		<div class="teacher_text small_half"><p class="name bordered">Дарья Владимировна Архипова</p>
			<p>Окончила МГПУ, кафедру романо-германской филологии&nbsp;(2013&nbsp;г.) Педагогический стаж&nbsp;— 3&nbsp;года.
			</p>
		</div>
		<img class="teacher_img small_half" src="images_teachers/arkhipova.jpg">	
	</div>	

<div class="process_description closed">
	
		<div class="enter_block">
			<a><div class="enter">Запись закрыта</div></a>
			<div class="process_text">Ждем вас в январе!
			</div>
		</div><div class="process_block">
		<div class="process_column"><div class="large_number">60</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">2</div><div class="bold_words">раза<br>в неделю</div></div>
		<div class="process_column"><div class="large_number">5000 &#8381;</div><div class="light_words">за 8 занятий<br>в октябре</div></div>
	</div></div>
</html>

/%
|контингент|5-6 класс|
|ФИО преподавателя|Архипова Дарья Владимировна|
|id|62|
%/
<<describeNode "commons" "./_commons.html">>
<<include "node: commons" filters:"[[DistributedInstallationHub]]" wikify noRefresh>>
/***
|Description|This plugin introduces new formatters that generate sub- and superscripts|
|Version|1.0|
|Short status|<<insertEditable container:"@stateComment" size:max cell>>|
subscript syntax: {{{text,,with subscript,,}}} → text,,with subscript,,
superscript containing float syntaxes:
{{{10^1.1}}} → 10^1.1, {{{10^+1,1}}} → 10^+1,1, {{{10^-0.2}}} → 10^-0.2, {{{2^8}}} → 2^8, {{{n^3}}} → n^3
***/
//{{{
config.formatters.push({
	name: "subscript",
	match: ",,(?!\\s|$)",
	handler: function(w) {
		w.subWikifyTerm(createTiddlyElement(w.output,"sub"),/(,,)/mg);
	}
},{
	name: "power",
	match: "\\^(?:\\+|-|±|\\+-|∓|-\\+)?\\d+(?:(?:\\.|,)\\d+)?",
	lookaheadRegExp: /\^((?:\+|-|±|\+-|∓|-\+)?\d+(?:(?:\.|,)\d+)?)/g,
	handler: function(w) {
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source),
		    power = lookaheadMatch[1].replace("+-","±").replace("-+","∓");
		
		createTiddlyElement(w.output,'sup',null,null/*class*/,power);
		
		w.nextMatch = this.lookaheadRegExp.lastIndex;
	}
})
//}}}
<html>
	<div class="course_description half">
		<p style="margin-bottom: 2em">Как создать из домашнего конструктора робота мечты?
На кружке дети узнают, что такое шестерни, оси и шкивы, изучат работу мотора, датчика движения и наклона. Научатся собирать модели по инструкции и следовать своей фантазии. Параллельно ребята освоят основные блоки программирования, чтобы научить своих роботов выполнять последовательные действия.</p>
	</div>
	<img class="half" src="images_others/40-2.jpg">
	<div class="margin-top">
	<img class="half" src="images_others/40-3.jpg">
	<div class="half">
	<img class="small_half" src="images_others/40-6.jpg">
		<div class="small_half gekkon bordered">
			Кружок ведут преподаватели «<a href="http://gekkon-club.ru/">Геккон-клуба</a>»
		</div>
		<div class="wide course_description margin-top">
		С наборами Lego мы раскроем в ребенке потенциал проектировщика и убедимся, что программирование — это легко и весело!</div>
	</div>
	</div>

<div class="process_description_2">
<h2>Группы</h2>
<table class="groups">
	<tr class="group_number">
		<td><span class="num">1</span></td>
		<td><span class="num">2</span></td>
		<td><span class="num closed">3</span><span class="text-closed">Набор<br>закрыт</span></td>
	</tr>
	<tr class="group_age">
		<td>Lego "Простые механизмы" <br>(5–7 лет)</td>
		<td>Lego Wedo<br>(1–2 класс)<br>начинающие</td>
		<td>Lego Wedo<br>(1–2 класс)<br>продолжающие</td>
	</tr>
	<tr class="group_frequency">
		<td>1 раз в неделю,<br>по субботам в&nbsp;14:00</td>
		<td>1 раз в неделю,<br>по субботам в&nbsp;12:00</td>
		<td>1 раз в неделю,<br>по субботам в&nbsp;15:00</td>
	<tr class="group_duration">
		<td>60 минут</td>
		<td>90 минут</td>
		<td>90 минут</td>
	</tr>
	<tr class="group_price">
		<td><span class="extrabold">2600 &#8381;</span><br>за 4 занятия</td>
		<td><span class="extrabold">3400 &#8381;</span><br>за 4 занятия</td>
		<td><span class="extrabold">3400 &#8381;</span><br>за 4 занятия</td>
	</tr>
</table>

<div class="enter_block_2">
	<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter_2">Записаться</div></a>
	<div class="enter_text">Оставьте свои контакты,<br>и мы вам перезвоним!  
	</div>
</html>

/%
|контингент|1-2 класс|
|ФИО преподавателя|«Геккон-клуб»|
|id|40|
|видимое в адресной строке название|lego|
%/
[[Meta|Раз, два, три. Делаем сайт]]
----
MarkupPreHead
TopLineMenu
WebViewTemplate
[[курсViewTemplate]], [[w|курсWebViewTemplate]]
[[Начальная стр.|Кружки «Интеллектуала»]]
[[Курсы]]
[[Собака-барабака]]
[[Footer|SiteFooter]]
----
WebTheme
WebPageTemplate
WebStyleSheet
StyleSheet
<<option chkSinglePageMode>> single page mode
CustomSettingsPlugin
CustomPermaViewPlugin
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,800' rel='stylesheet' type='text/css'>
<style>
@font-face {
	font-family: Extrabold;
	src: url('fonts/Gilroy-ExtraBold.otf') format("opentype");
}
@font-face {
	font-family: Light;
	src: url(fonts/Gilroy-Light.otf);
}
@font-face {
    font-family: 'Open Sans';
    src: url('fonts/OpenSans-Regular.ttf');
}
@font-face {
    font-family: 'Open Sans';
	font-weight: 800;
    src: url('fonts/OpenSans-Extrabold.ttf');
}
</style>
<!--}}}-->
/***
|Name|NestedSlidersPlugin|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Documentation|http://www.TiddlyTools.com/#NestedSlidersPluginInfo|
|Version|2.4.9|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|show content in nest-able sliding/floating panels, without creating separate tiddlers for each panel's content|
!!!!!Configuration
<<<
<<option chkFloatingSlidersAnimate>> allow floating sliders to animate when opening/closing
Note: for floating slider animation to occur you must also allow animation in general (see [[AdvancedOptions]]).
<<<
!!!!!Code
***/
//{{{
version.extensions.NestedSlidersPlugin= {major: 2, minor: 4, revision: 9, date: new Date(2008,11,15)};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// TW2.2+
// hijack Morpher stop handler so sliderPanel/floatingPanel overflow is visible after animation has completed
if (version.major+.1*version.minor+.01*version.revision>=2.2) {
	Morpher.prototype.coreStop = Morpher.prototype.stop;
	Morpher.prototype.stop = function() {
		this.coreStop.apply(this,arguments);
		var e=this.element;
		if (hasClass(e,"sliderPanel")||hasClass(e,"floatingPanel")) {
			// adjust panel overflow and position after animation
			e.style.overflow = "visible";
			if (window.adjustSliderPos) window.adjustSliderPos(e.parentNode,e.button,e);
		}
	};
}
//}}}
NestedSlidersPlugin
<<include "node: NestedSlidersPluginRepo" filters:"[[NestedSlidersPlugin installer and updater]] [[NestedSlidersPlugin]]" import:4 noRefresh>>
/***
***/
//{{{
// tagging macro
config.macros.tagging.label = "записи с этим тэгом:";
config.macros.tagging.labelNotTag = "нет записей с этим тэгом";
config.macros.tagging.tooltip = "Список записей с тэгом '%0'";

// tags macro
config.views.wikified.tag.labelNoTags = "нет тэгов";
config.views.wikified.tag.labelTags = "тэги:";
config.views.wikified.tag.openTag = "Открыть тэг '%0'";
config.views.wikified.tag.tooltip = "Показать записи с тэгом '%0'";
config.views.wikified.tag.openAllText = "Открыть все";
config.views.wikified.tag.openAllTooltip = "Открыть все эти записи";
config.views.wikified.tag.popupNone = "Других записей с тэгом '%0' нет";

// closeAll macro
config.macros.closeAll.label = "закрыть все";
config.macros.closeAll.prompt = readOnly ? "закрыть все открытые записи" : "закрыть все открытые записи (кроме редактируемых)";

// search macro
config.macros.search.label = "искать";
config.macros.search.prompt = "Искать на этом сайте (в этой TiddlyWiki)";

// toolbar commands (some)
config.commands.closeTiddler.text = "закрыть";
config.commands.closeTiddler.tooltip = "закрыть эту запись";

// simple translation of view->date (uses numerical representation of months)
//# to do: convert to "13 июля 2016"
config.macros.view.views.date = function(value,place,params,wikifier,paramString,tiddler) {
	value = Date.convertFromYYYYMMDDHHMM(value);
	dateString = params[2] ? value.formatString(params[2]) : value.toLocaleDateString(); // "13.07.2016"
	createTiddlyText(place,dateString);
}

// "created" above tiddler's title
config.views.wikified.createdPrompt = "создано";
//}}}
/***
|''Version''|0.1.1|
|''Author''|Yakov Litvin|
|''Description''|This plugin fixes [[issue 146|https://github.com/TiddlyWiki/tiddlywiki/issues/146]] and ... [{{{TiddlyWiki.prototype.saveTiddler}}}]|
|''Overwriting notice''|This plugin overwrites the {{{Story.prototype.saveTiddler}}} and {{{TiddlyWiki.prototype.saveTiddler}}} methods. So any plugin that hijack any of these should use the {{{Requires}}} slice mentioning this plugin (if it is installed); plugins that overwrite these functions will likely cause conflicts/won't work.|
***/
//{{{
Story.prototype.saveTiddler = function(title,minorUpdate)
{
	var tiddlerElem = this.getTiddler(title);
	if(!tiddlerElem)
		return null;

	var fields = {};
	this.gatherSaveFields(tiddlerElem,fields);
	var newTitle = fields.title || title;
	if(!store.tiddlerExists(newTitle)) {
		newTitle = newTitle.trim();
		var creator = config.options.txtUserName;
	}
	if(store.tiddlerExists(newTitle) && newTitle != title) {
		if(!confirm(config.messages.overwriteWarning.format([newTitle.toString()])))
			return null;
// was:			title = newTitle;
//		title = newTitle; // this line causes the bug
// this line is to be deleted; learn when and why this was introduced
// the next 4 usages of "title" marked with "+>" should work fine without this
	}
/*+>*/	if(newTitle != title)
		this.closeTiddler(newTitle,false);
	tiddlerElem.id = this.tiddlerId(newTitle);
	tiddlerElem.setAttribute("tiddler",newTitle);
	tiddlerElem.setAttribute("template",DEFAULT_VIEW_TEMPLATE);
	tiddlerElem.setAttribute("dirty","false");
	if(config.options.chkForceMinorUpdate)
		minorUpdate = !minorUpdate;
	if(!store.tiddlerExists(newTitle))
		minorUpdate = false;
	var newDate = new Date();
/*+>*/	if(store.tiddlerExists(title)) {
/*+>*/		var t = store.fetchTiddler(title);
		var extendedFields = t.fields;
		creator = t.creator;
	} else
		extendedFields = merge({},config.defaultCustomFields);
	
	for(var n in fields)
		if(!TiddlyWiki.isStandardField(n))
			extendedFields[n] = fields[n];

/*+>*/	var tiddler = store.saveTiddler(title,newTitle,fields.text,minorUpdate ? undefined : config.options.txtUserName,minorUpdate ? undefined : newDate,fields.tags,extendedFields,null,null,creator);
	autoSaveChanges(null,[tiddler]);
	return newTitle;
};
//}}}

// // Ещё один, более мелкий фикс (делает более ясным код {{{TiddlyWiki.prototype.saveTiddler}}}, исправляет назначение custom fields в случае, когда ...); важен для renaming в SMP!
//{{{
TiddlyWiki.prototype.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created,creator)
{
	var tiddler;
	if(title instanceof Tiddler) {
		tiddler = title;
		title = tiddler.title;
	} else
		tiddler = this.fetchTiddler(title);

	if(tiddler) {
		created = created || tiddler.created; // Preserve created date
		creator = creator || tiddler.creator;
		this.deleteTiddler(title);
	} else {
		created = created || modified;
		tiddler = new Tiddler();
	}
	fields = merge(merge(tiddler ? tiddler.fields : {},fields), config.defaultCustomFields,true);
	tiddler.set(newTitle,newBody,modifier,modified,tags,created,fields,creator);

	this.addTiddler(tiddler);
	if(clearChangeCount)
		tiddler.clearChangeCount();
	else
		tiddler.incChangeCount();

	if(title != newTitle)
		this.notify(title,true);
	this.notify(newTitle,true);
	if(window.location.protocol == "file:")
		this.setDirty(true);
	return tiddler;
};
//}}}
/***
|''Version''|1.6.4 adapted for web-authoring|
***/
//{{{
// styling helpers
var getStylesFromSection = function(sectionName) {
	var css = store.getTiddlerText("SetCommonStylesPlugin##"+sectionName,"");
	return css.replace("{{{","/"+"*{{{*"+"/").replace("}}}","/"+"*}}}*"+"/");
};
var setCssShadow = function(sectionName,shadowName) {
	config.shadowTiddlers[shadowName] = getStylesFromSection(sectionName);
	store.addNotification(shadowName, refreshStyles);

	store.addNotification("ColorPalette",function(smth,doc) {
		refreshStyles(shadowName,doc);
	});
};

// set styles
setCssShadow("Semantics",		"CommonSemanticsStyleSheet");
setCssShadow("Representation",		"CommonRepresenationStyleSheet");
setCssShadow("Representation tools",	"CommonRepresToolsStyleSheet");
//if(jQuery.browser.mozilla) // now done via CSS
	setCssShadow("FireFox CSS",	"FireFoxFixesStyleSheet");

csp_old_wikify = wikify;
wikify = function(source,output,highlightRegExp,tiddler) {
	csp_old_wikify.apply(this,arguments);
	jQuery(".NTerm").each(function(){
		// avoid multiple wrapping because of ~ wikifications:
		if(!jQuery(this.parentNode).hasClass("NTermWrap"))
			jQuery(this).wrap("<span class='NTermWrap'></span>");
	});
	jQuery(".LimitGeneral").each(function(){
		// avoid multiple wrapping because of ~ wikifications:
		if(!jQuery(this.parentNode).hasClass("LimitGeneralWrap"))
			jQuery(this).wrap("<span class='LimitGeneralWrap'></span>");
	});
};
// to get green underlined, add a wrapper with the NTermWrap class; apply the styling to both wrappers (.NTermWrap) and the element itself (.NTerm)

// hide message area on click elsewhere (useful for touchscreen devices
var positiveClearMessage = function() {
	clearMessage();
	return true;
};
jQuery("body").on("click",positiveClearMessage);
if(!config.extensions.postponeMsg) {
	config.extensions.postponeMsg = true;
	config.extensions.orig_displayMessage = displayMessage;
	displayMessage = function(a,b) {
		var doDisplay = function() { config.extensions.orig_displayMessage(a,b); };
		setTimeout(doDisplay,100);
	};
}
//}}}
/***
!!!Semantics
{{{
div[tags~="code"] .editor, #tiddlerStyleSheet .editor,
div[tags~="systemConfig"] .editor
		{ font-family: monospace; }

.PoG, .PoGc	{ color: green; }

.DDn, .DDnc	{ color: purple; }

.FpG, .FpGc	{ color: blue; }

.PoGc:before, .DDnc:before, .FpGc:before,
.c:before	{ content: "["; color: [[ColorPalette::Foreground]]; }

.PoGc:after, .DDnc:after, .FpGc:after,
.c:after	{ content: "]"; color: [[ColorPalette::Foreground]]; }

.NTerm		  { color: [[ColorPalette::Foreground]]; font-weight: normal; }
.NTermWrap	  { color: #00aa00; text-decoration: underline; font-weight: bold; }
.LimitGeneral	  { color: [[ColorPalette::Foreground]]; font-weight: normal; }
.LimitGeneralWrap { color: #0000ff; text-decoration: underline; font-weight: bold; }
}}}
!!!Semantics details
* possibilities of growth (including comments): {{{.PoG}}}, {{{.PoGc}}}
* done [written] to be done, but not ideally: {{{.DDn}}}, {{{.DDnc}}}
* frozen possibilities of growth or things done/written not ideally: {{{.FpG}}}, {{{.FpGc}}}
* just comments or implied things: {{{.c}}}
* {{{code}}} tag is to be used in tiddlers with code (CSS, ~JavaScript etc) which changes representation when editing
* {{PoGc{лучше перевести все описания на русский -- слишком много неопределённости}}}
* {{PoGc{стоит что-то придумать с {{{[[ColorPalette::Foreground]]}}} на случай night mode}}}
!!!Representation
{{{
#sidebarOptions .sliderPanel	{ background-color:[[ColorPalette::Background]] !important;
				  font-size: 95% !important; }
#tiddlerStyleSheet .viewer	{ clear: both !important; }

.headerForeground,
.headerShadow			{ padding-top: 1em !important; }

.viewer .tabContents		{ background-color: inherit; }
}}}
!!!Representation details
* ...
* {{{margin-bottom}}} of {{{#displayArea}}} -- to be able to keep the content on the eye level
!!!Representation tools
{{{
table.borderless,
table.borderless tr,
table.borderless td,
table.borderless th	{ border: 0 !important; }

div[tags~="hideTagged"]
.tagging		{ display: none; }
div[tags~="hideTags"]
.tagged			{ display: none; }
}}}
!!!Representation tools details
* ...
!!!FireFox CSS
{{{
@-moz-document url-prefix() {
  pre, code, div[tags~="code"] .editor,
  div[tags~="systemConfig"] .editor,
  #tiddlerStyleSheet .editor
	{ font-family: Consolas !important; font-size: 100% !important; }
}
}}}
***/
/***
|Version|0.1|
|Short status|<<insertEditable container:"@stateComment" size:max cell>>|
***/
//{{{
// adapted from the 2.7.1 core:

// Sets the value of the given field of the tiddler to the value.
// Setting an ExtendedField's value to null or undefined removes the field.
// Setting a namespace to undefined removes all fields of that namespace.
// The fieldName is case-insensitive.
// All values will be converted to a string value.
TiddlyWiki.prototype.setValue = function(tiddler,fieldName,value,noNotify)
{
	TiddlyWiki.checkFieldName(fieldName);
	var t = this.resolveTiddler(tiddler);
	if(!t)
		return;
	fieldName = fieldName.toLowerCase();
	var isRemove = (value === undefined) || (value === null);
	var accessor = TiddlyWiki.standardFieldAccess[fieldName];
	if(accessor) {
		if(isRemove)
			// don't remove StandardFields
			return;
		var h = TiddlyWiki.standardFieldAccess[fieldName];
		if(!h.set(t,value))
			return;
	} else {
		var oldValue = t.fields[fieldName];
		if(isRemove) {
			if(oldValue !== undefined)
				// deletes a single field
				delete t.fields[fieldName];
			else {
				// no concrete value is defined for the fieldName
				// so we guess this is a namespace path.
				// delete all fields in a namespace
				var re = new RegExp("^"+fieldName+"\\.");
				var dirty = false;
				var n;
				for(n in t.fields)
					if(n.match(re)) {
						delete t.fields[n];
						dirty = true;
					}
				if(!dirty)
					return;
			}
		} else {
			// the "normal" set case. value is defined (not null/undefined)
			// For convenience provide a nicer conversion Date->String
			value = value instanceof Date ? value.convertToYYYYMMDDHHMMSSMMM() : String(value);
			if(oldValue == value)
				return;
			t.fields[fieldName] = value;
		}
	}
	// When we are here the tiddler/store really was changed.
	if(!noNotify)
		this.notify(t.title,true);
	if(!fieldName.match(/^temp\./))
		this.setDirty(true);
};
//}}}
/***
|Version|0.11.1|
|Requires|ForEachTiddlerPlugin SetFieldPlugin|
|~|ForEachTiddlerPlugin is not required for the operation of the plugin, but if FETP is present, it should be evaluated before this plugin; also, there's no other simple way to use this plugin aside with FETP; SetFieldPlugin is required for quality (removes extra refreshing which quickens some actions and removes some representation bugs|
|Documentation|[[SetManagerPluginInfo]]|
|Author|Yakov Litvin|
***/

//{{{
// for performance improving/debugging
var timeTester = {
	startTime: null,
	init: function() {
		this.startTime = new Date();
	},
	timePoints: [],
	calcElapsedTime: function() {
		var time = new Date() - this.startTime;
		this.timePoints.push(time);
		return time;
	}
};

// --------------------------------------------------------------------------------
// sort counters methods ("S" stands for "sort")
Tiddler.prototype.getSCounterPlace = function(storageName)
{
	storageName = storageName || config.macros.itemMenu.defaultField
	var withFieldNameRegExp = /(.*?)@@(.*)/,
	    withFieldNameMatch  = withFieldNameRegExp.exec(storageName);
	return {
		storageName: withFieldNameMatch ? withFieldNameMatch[1] : null,
		fieldName: withFieldNameMatch ? withFieldNameMatch[2] : storageName
	}
};
Tiddler.prototype.getRawSData = function(fieldName)
{
	fieldName = fieldName || config.macros.itemMenu.defaultField;

	if(!this.getIncludeURL || !this.getIncludeURL())
		return store.getValue(this,fieldName);
};
Tiddler.prototype.getSCounter = function(fieldName)
{
	var storageData  = this.getSCounterPlace(fieldName),
	    storageName  = storageData.storageName,
	    storageField = storageData.fieldName,
	    indexText;

	if(!this.getIncludeURL || !this.getIncludeURL())
		return parseInt(this.getRawSData(storageField));

	// for included tiddlers use a separate tiddler as a stored index
	if(storageName) {
		var storageTiddler = store.fetchTiddler(storageName);
		indexText = storageTiddler ?
				storageTiddler.getRawSData(storageField) : "";
	} else
		indexText = store.getTiddlerText(storageField);

	// find the line in the index which describes the tiddler, if present
	var indexLineRegExp = config.macros.itemMenu.getIndexLineRegExp(this.title),
	    indexMatch      = indexLineRegExp.exec(indexText);

	return indexMatch ? parseInt(indexMatch[1]) : undefined;
};
Tiddler.prototype.setRawSData = function(fieldName,value)
{
	fieldName = fieldName || config.macros.itemMenu.defaultField;

	// reduced version of store.setValue(this,fieldName,value) for SData
	TiddlyWiki.checkFieldName(fieldName);
	fieldName = fieldName.toLowerCase();
	if(TiddlyWiki.standardFieldAccess[fieldName])
		return;

	if(this.fields[fieldName] == value)
		return;
	this.fields[fieldName] = ""+value; // as a String, only string values are stored

	store.setDirty(true);
};
Tiddler.prototype.updateSIndex = function(indexText,value)
{
	// find the line in the index which describes the tiddler, if present
	var indexLineRegExp = config.macros.itemMenu.getIndexLineRegExp(this.title),
	    indexMatch      = indexLineRegExp.exec(indexText);

	var newIndexLine = config.macros.itemMenu.createIndexLine(this.title,value);
	if(indexMatch)
		indexText = indexText.replace(indexLineRegExp,newIndexLine);
	else
		indexText += (newIndexLine+"\n");
	return indexText;
};
Tiddler.prototype.setSCounter = function(fieldName,value)
{
	var storageData  = this.getSCounterPlace(fieldName),
	    storageName  = storageData.storageName,
	    storageField = storageData.fieldName,
	    indexText;

	if(!this.getIncludeURL || !this.getIncludeURL()) {
		this.setRawSData(storageField,value);
		return;
	};

	// for included tiddlers use a separate tiddler as a stored index
	// for orderField@@tiddlerName syntax, use the storageName tiddler
	//  for storage, otherwise use the fieldName tiddler
	var indexTid = store.fetchTiddler(storageName || fieldName);
	if(!indexTid)
		indexTid = store.createTiddler(storageName || fieldName);

	if(storageName) {
		indexText = indexTid.getRawSData(storageField) || "";
		indexText = this.updateSIndex(indexText,value);
		indexTid.setRawSData(storageField,indexText);
	} else
		indexTid.text = this.updateSIndex(indexTid.text,value);
};
Tiddler.prototype.deleteSCounter = function(fieldName)
{
	fieldName = fieldName.toLowerCase();
	if(TiddlyWiki.standardFieldAccess[fieldName])
		return; // use of StandardFields is unlikely, but don't remove them anyway

	if(this.getSCounter(fieldName) !== undefined)
		delete this.fields[fieldName];
};
// --------------------------------------------------------------------------------

TiddlyWiki.prototype.saveModifiedTiddler = function(title, newTitle, newBody, tags, fields, clearChangeCount, created, creator) {
	var tidBeingChanged = (title instanceof Tiddler) ? title : this.fetchTiddler(title);
	title = tidBeingChanged.title;
	var conflictingTiddler = this.fetchTiddler(newTitle) || this.fetchTiddler(title);
	if(conflictingTiddler && conflictingTiddler != tidBeingChanged)
		if(!confirm("A tiddler named \""+title+"\" already exists. Do you want to overwrite it?"))
			return;

	return this.saveTiddler(title,newTitle,newBody,
		config.options.txtUserName,
		new Date(),
	  tags,fields,clearChangeCount,created,creator)
};

var preventOtherHandling = window.preventOtherHandling = function(e)
{
	// prevent propagation
	if (e.stopPropagation)
		e.stopPropagation();
	e.cancelBubble = true;

	// prevent browser action from firing
	if(e.preventDefault)
		e.preventDefault();
	e.returnValue = false;
	// see https://learn.javascript.ru/default-browser-action
}

// helps to avoid popup closing on event
var wrapNoClose = window.wrapNoClose = function(func)
{
	return function(ev)
	{
		if(func) func.apply(this,arguments);

		var e = ev || window.event; // support old IE
		if(!e)
			return false;

		preventOtherHandling(e);
	};
};

// helps to make the height of textareas appropriate (a working prototype)
//#  defaultHeight should be calced as a height of one line;
//#  maxHeight - not more than 1/2 or 3/4 of the screen
//#  also, better to get rid of shrinking scrollbar..
var adjustHeightToContent = function()
{
	var defaultHeight = 30;
	var maxHeight = 400;
	jQuery(this).height(defaultHeight);
	jQuery(this).height(Math.min(this.scrollHeight , maxHeight));
};

// --------------------------------------------------------------------------------
// constants for using with jQuery .which()
var $tab =	9,
    $enter =	13,
    $esc =	27,
    $delete =	46,
    $home =	36,
    $end =	35,
    $up =	38,
    $down =	40,
    $pgUp =     33,
    $pgDn =     34,
    $plus =	61,
    $r =	82,
    $e =	69,
    $t =	84,
    $i =	73,
    $x =	88;

// --------------------------------------------------------------------------------
// detecting touch-screens (see http://stackoverflow.com/a/4819886/3995261)
window.isOpenedOnTouchScreen = function()
{
	return !!('ontouchstart' in this);
}
//}}}
//{{{
config.macros.itemMenu =
{
	getIndexLineRegExp: function(tiddlerName) {
		return new RegExp(tiddlerName.escapeRegExp() + ": ([0-9]+)");
	},
	createIndexLine: function(tiddlerName, value) {
		return tiddlerName+": "+value;
	},
	defaultField: "orderCounter",
	itemMenuClass: "listMenuButton",
	sortByCounter: function(tiddlerArray, fieldName)
	{
		var defaultValue = -1; // undefinedUp (1000 for undefinedDown)
		return tiddlerArray.sort(function(t1,t2){
			var c1 = t1.getSCounter(fieldName), c2 = t2.getSCounter(fieldName);
			c1 = (!c1 && c1 != 0) ? defaultValue : c1;
			c2 = (!c2 && c2 != 0) ? defaultValue : c2;
			return  c1 - c2;
		});
	},

	currentlyDragged: [],
	setCurrentlyDragged: function(tidName,sortField,dropAction,itemMenuElement,
					onKeyDown,onKeyUp)
	{
		this.currentlyDragged.push({
			name:		 tidName,
			field:		 sortField,
			dropAction:	 dropAction,
			itemMenuElement: itemMenuElement,
			onKeyDown:	 onKeyDown,
			onKeyUp:	 onKeyUp
		});

		if(itemMenuElement) {
			jQuery(itemMenuElement).bind("keyup",onKeyUp);
			jQuery(itemMenuElement).bind("keydown",onKeyDown);
		}
	},
	clearCurrentlyDragged: function()
	{
		if(!this.currentlyDragged[0]) return;
		var i, context, upHandler, downHandler;
		for(i = 0; i < this.currentlyDragged.length; i++)
		{
			context = this.currentlyDragged[i];
			upHandler = context.onKeyUp;
			downHandler = context.onKeyDown;

			if(!context.itemMenuElement) continue;

			if(downHandler)
			    jQuery(context.itemMenuElement).unbind("keydown",downHandler);
			if(upHandler)
			    jQuery(context.itemMenuElement).unbind("keyup",upHandler);
		}
		this.currentlyDragged = [];

		jQuery(".buttonSortState").parent().parent().removeClass("selected");
		//# check if /\ grandparent is <tr> and remove only in that case
		jQuery(".buttonSortState").removeClass("buttonSortState");
	},
	getCurrentlyDragged: function() {
	//# for now, works only with the first selection (if multiple)
		return this.currentlyDragged[0] ? this.currentlyDragged[0].name : null;
	},
	getCurrentSourceListContext: function() {
	//# for now, works only with the first selection (if multiple)
		return this.currentlyDragged[0];
	},
	markSelected: function(itemMenu)
	{
		if(!itemMenu) return;
		jQuery(itemMenu).addClass("buttonSortState").focus();
		if(itemMenu.parentElement.tagName.toLowerCase() == "td")
			jQuery(itemMenu).parent().parent().addClass("selected");
	},
	ensureFocusOnCurrentlyDragged: function()
	{
		var currentlyDragged = this.getCurrentSourceListContext();
console.log("currentlyDragged:");console.log(currentlyDragged);
		if(!currentlyDragged) return;

		var itemMenu = currentlyDragged.itemMenuElement;
		// because of refreshing, itemMenu can be no longer attached to the ~root
		// element (document? html?). If that's the case, find the new one
		var newItemMenu, itemMenus = jQuery("."+this.itemMenuClass+
			'[filter=\''+itemMenu.getAttribute("filter")+'\']')
			.each(function(i,el){
				if(el.tiddler == itemMenu.tiddler)
					newItemMenu = el;
			});
		if(newItemMenu != itemMenu) {
			// remember actual element, reattach onkeyup, onkeydown handlers
			currentlyDragged.itemMenuElement = newItemMenu;
			jQuery(newItemMenu).bind("keyup",currentlyDragged.onKeyUp);
			jQuery(newItemMenu).bind("keydown",currentlyDragged.onKeyDown);
		}
		this.markSelected(newItemMenu);
	},

	actionStepsWithArguments: {},
	actionStepsWithoutArguments: {},
	applyActionStep: function(tiddler, actionStep, rootElement)
	{
		var actionRegExp = /(.\w+)\.\.(.*)/,
		    match = actionRegExp.exec(actionStep),
		    actionStepName;

		if(match) { // action with an argument
			for(actionStepName in this.actionStepsWithArguments)
				if(actionStepName == match[1])
					return this.actionStepsWithArguments[actionStepName](tiddler,match[2],rootElement);
			//# may be throw an error/warning?
			return;
		} else      // actionStep without arguments
			for(actionStepName in this.actionStepsWithoutArguments)
				if(actionStepName == actionStep)
					return this.actionStepsWithoutArguments[actionStepName](tiddler,rootElement);

		//# may be throw an error/warning?
		return;
	},
	parseAndApplyAction: function(tiddler, actionLine, rootElement, noNotify)
	{
		if(!tiddler || !actionLine)
			return;
		var actionStepsArray = actionLine.split(",,");

		for(var i = 0; i < actionStepsArray.length; i++)
			this.applyActionStep(tiddler,jQuery.trim(actionStepsArray[i]), rootElement);

		if(!noNotify)
			store.notify(tiddler.title,true);
	},
	parseAndSeparateActions: function(actionsLine)
	{
		var actionsArray = actionsLine.split(";;");
		if(actionsArray.length == 1 && !actionsArray[0].contains("::"))
			return jQuery.trim(actionsArray[0]);

		var actionMap = {},
		    name_and_action_RegExp = /(.+?)::(.*)/, match;
		for(var i = 0; i < actionsArray.length; i++)
		{
			match = name_and_action_RegExp.exec(actionsArray[i]);
			if(!match || !match[1] || !match[2])
				//# may be throw an error/warning?
				continue;
			actionMap[jQuery.trim(match[1])] = jQuery.trim(match[2]);
			actionMap["default"] = actionMap["default"] || jQuery.trim(match[2]);
		}
		return actionMap;
	},

	// moving helpers
	checkCounters: function(filter,field)
	{
		var tids = store.filterTiddlers(filter);
		tids = this.sortByCounter(tids, field);
	
		for(var i = 0; i < tids.length; i++)
			tids[i].setSCounter(field,i);

		return tids;
	},
	moveToArbitraryPlace: function(filter,tiddler,field,index,doCycle)
	{
		var tids     = this.checkCounters(filter,field), i,
		    tidIndex = tids.indexOf(tiddler),
		    tidsNum  = tids.length;

		// parse "top"/"bottom" values
		index = (index == "top") ? 0 : (index == "bottom" ? tidsNum-1 : index);
		if(doCycle) {
			index = index % tidsNum;
			index = (index < 0) ? (index + tidsNum) : index;
		}
		// do nothing in cases.. ("tidIndex < 0" = "tiddler is not in the list")
		if(tidIndex == index || tidIndex < 0 || index < 0 || index >= tids.length)
			return;

//timeTester.init()
//console.log("~middle of moveToArbitraryPlace: time elapsed (ms): " + timeTester.calcElapsedTime())
		// move items
		tiddler.setSCounter(field,index);
		if(tidIndex > index)
			for(i = index; i < tidIndex; i++)
				tids[i].setSCounter(field,i+1);
		else
			for(i = index; i > tidIndex; i--)
				tids[i].setSCounter(field,i-1);
//console.log("pre-end of moveToArbitraryPlace: time elapsed (ms): " + timeTester.calcElapsedTime())

		// refresh the list (order)
		store.notify(field,true);
//console.log("end of moveToArbitraryPlace: time elapsed (ms): "+timeTester.calcElapsedTime())
// ~200 ms for notifying / in which browser?
	},
	moveToTop: function(filter,tiddler,field)
		{ this.moveToArbitraryPlace(filter,tiddler,field,"top"); },
	moveToBottom: function(filter,tiddler,field)
		{ this.moveToArbitraryPlace(filter,tiddler,field,"bottom"); },

	// syntax: <<itemMenu tiddlerName filter field:fieldName addAction:actionSyntax
	//		dropAction:actionSyntax switchActions:actionsSyntax>>
	handler: function(place,macroName,params,wikifier,paramString,tiddler)
	{
		// parse params: tiddlerName, context filter; field, noConflicts
		var pParams = paramString.parseParams("pP",null,true,false,true),
		    tName   = pParams[0]["pP"][0], // name of the tid governed by itemMenu
		    tid     = store.fetchTiddler(tName),
		    filter  = pParams[0]["pP"][1], // tids among which the sorting is done
		    field   = getParam(pParams,"field",this.defaultField), // field which holds the counter value
		    addAction     = getParam(pParams,"addAction",""),     // 
		    dropAction    = getParam(pParams,"dropAction",""),    // 
		    switchActions = getParam(pParams,"switchActions",""); // 

		var cmi = config.macros.itemMenu; // shortcut

		var serapartedSwitchActions = this.parseAndSeparateActions(switchActions);

		var checkCounters = function()
			{ return cmi.checkCounters(filter,field); };
		
		// selecting/rearranging helpers
		var cancelSelection = function()
		{
			cmi.clearCurrentlyDragged();
			Popup.remove(); // close the popup, including on esc
		};
		var getSelected = function()
		{
			// get currently "dragged" itemMenu element
			var draggedContext = cmi.getCurrentSourceListContext();
			return draggedContext ? draggedContext.itemMenuElement : null;
		};
		// jQuery of itemMenu elements with the same filter
		var getJMenus = function()
		{
			return jQuery("."+cmi.itemMenuClass+"[filter='"+filter+"']");
		};
		var reselectByIndex = function(jMenus,index) // jMenus is "jQuery(menus)"
		{
			var menuToSelect = jMenus[index];
			if(!menuToSelect) return;

			cancelSelection();

			// select (focus is needed for keyboard events to fire)
			jQuery(menuToSelect).focus().click();
console.log("click generated in reselectByIndex");

			//# may be optimize the two previous steps (do reselection directly)
		};
		var selectNext = function()
		{
			var itemMenu = getSelected();
			if(!itemMenu) return;

			// other item menus, found by the same filter
			var menus = getJMenus(),
			    currentIndex = menus.index(itemMenu);
			reselectByIndex(menus,currentIndex+1);
		};
		var selectPrev = function()
		{
			var itemMenu = getSelected();
			if(!itemMenu) return;

			// other item menus, found by the same filter
			var menus = getJMenus(),
			    currentIndex = menus.index(itemMenu);
			reselectByIndex(menus,currentIndex-1);
		};
		var selectNeighbour = function()
		{
			var itemMenu = getSelected();
			if(!itemMenu) return;

			// other item menus, found by the same filter
			var menus = getJMenus(),
			    currentIndex = menus.index(itemMenu);
			if(currentIndex > 0)
				reselectByIndex(menus,currentIndex-1);
			else
				reselectByIndex(menus,currentIndex+1);

			// returns true when successfully selected another item
			return getSelected() != itemMenu;
		};
		var selectFirst = function()
		{
			// other item menus, found by the same filter
			var menus = getJMenus();
			reselectByIndex(menus,0);
		};
		var selectLast = function()
		{
			// other item menus, found by the same filter
			var menus = getJMenus();
			reselectByIndex(menus,menus.length-1);
		};
		var moveDown = function(doReselect)
		{
			var tids = checkCounters(), i = tids.indexOf(tid);
			if(i < 0) return; // not among tids
			if(i >= tids.length-1) // out of boundaries
				return doReselect ? "" : cancelSelection();

			// make the switch with the neighbour
			tids[i].setSCounter(field,i+1);
			tids[i+1].setSCounter(field,i);

			// refresh the list (order)
			store.notify(field,true);
			//# try to avoid extra refreshing on long press down

			if(doReselect) reselectByIndex(getJMenus(),i+1);
		};
		var moveUp = function(doReselect)
		{
			var tids = checkCounters(), i = tids.indexOf(tid);
			if(i < 0) return; // not among tids
			if(i <= 0) // out of boundaries
				return doReselect ? "" : cancelSelection();

			// make the switch with the neighbour
			tids[i].setSCounter(field,i-1);
			tids[i-1].setSCounter(field,i);

			// refresh the list (order)
			store.notify(field,true);

			if(doReselect) reselectByIndex(getJMenus(),i-1);
		};
		var moveToTop = function(doReselect)
		{
			cmi.moveToTop(filter,tid,field);
			if(doReselect) reselectByIndex(getJMenus(),0);
		};
		var moveToBottom = function(doReselect)
		{
			cmi.moveToBottom(filter,tid,field);
			var menus = getJMenus();
			if(doReselect) reselectByIndex(menus,menus.length-1);
		};
		var moveToArbitraryPlace = function(movingTidName, above)
		{ // filter, targetTidName is got via enclosure
			var tids = checkCounters(),
			    movingTid = store.fetchTiddler(movingTidName),
			    targetTid = store.fetchTiddler(tName),
			    movingInd = tids.indexOf(movingTid),
			    targetInd = tids.indexOf(targetTid),
			    index = targetInd + ((movingInd > targetInd) ? (above ? 0 : 1) : (above ? -1 : 0));
			cmi.moveToArbitraryPlace(filter,movingTid,field, index);
		};
		var onClickItemMenu = wrapNoClose(function(e)
		{
console.log("onClickItemMenu");
console.log("e.which is "+e.which);
console.log(e);
			if(!cmi.getCurrentlyDragged())		// ~drag
			{
				clearMessage(); // useful on smartphones

				// open the popup menu:
				var manageButton = this;
				var popup = Popup.create(this);
				jQuery(popup).addClass("itemMenu");
				// then, add buttons there:

				// the "cancel selection" button
				createTiddlyButton(popup,"","cancel selection",
					cancelSelection,"cancelSelectionButton button");

				// switch action(s) button
				var createActionButtonInPopup = function(place,actionName)
				{
					var li = createTiddlyElement(place,"li"),
					    action = serapartedSwitchActions[actionName];

					createTiddlyButton(li,actionName,"",function(){
						cmi.parseAndApplyAction(tid,action,this);
						cancelSelection();
					},"listedDoActionButton button");
				};
				var bringActions = wrapNoClose(function() {
					if(serapartedSwitchActions["default"])
					{
						// named actions
						var dPopup = Popup.create(this), li, actName;
						for(actName in serapartedSwitchActions) {
							if(actName == "default")
								continue;
							createActionButtonInPopup(dPopup, actName);
						}
						Popup.show("bottom","left");
					} else { // single unnamed action is defined
						cmi.parseAndApplyAction(tid,switchActions, this);
						cancelSelection();
					}

					cmi.clearCurrentlyDragged();
					// no class removing since refreshing is applied
				});
				if(serapartedSwitchActions && tid)
					createTiddlyButton(popup,"","drop this item",
						bringActions,"doActionButton button");

				// tag toggler
				var macroText = "<<tagToggler [["+tName+"]] \"\">>";
				wikify(macroText, popup);
				var tagButton = popup.lastChild,
				    startTagToggling = function() {
					jQuery(tagButton).click();
console.log("click generated in startTagToggling");
				    };

				// the "info" button
				var showTiddlerInfo = wrapNoClose(function(){
					var infoPopup = Popup.create(popup);
					createTiddlyText(infoPopup,"references:");
					config.commands.references.handlePopup(infoPopup, tid.title);
					Popup.show("bottom","left");
					return false;
				});
				createTiddlyButton(popup,"","tiddler info", showTiddlerInfo,"tiddlerInfoButton button");

				// the "rename" button
				var startRenaming = wrapNoClose(function(){
					var renamePopup = Popup.create(popup),
					    li = createTiddlyElement(renamePopup,"li"),
					    initTitle = tid.title,
					    nameField = createTiddlyElement(li,"textarea",null,"nameInput"),
					    changeName = function(doSave,goOnSelected)
					    {
					       var newTitle = jQuery.trim(nameField.value);
					       store.saveModifiedTiddler(initTitle,newTitle);
					       story.refreshTiddler(tid.title,null,true);
					       if(doSave) autoSaveChanges();
					       if(!goOnSelected)
							cancelSelection();
					       else
							cmi.ensureFocusOnCurrentlyDragged();
					    };

					nameField.value = tid.title;
					createTiddlyButton(li,"rename","rename \""+tid.title
						+"\"",changeName,"button renameButton");
					nameField.onclick = wrapNoClose(); // prevent popup closing
					// press enter to apply or esc to exit
					// (shift and ctrl are also taken into account)
					nameField.onkeydown = function(ev)
					{
						var e = ev || window.event;
						if(e.which == $enter) {
							changeName(e.ctrlKey,e.shiftKey);
							Popup.remove(1); // renamePopup only

							window.preventOtherHandling(e);
						}
						if(e.which == $esc) {
						    if(e.shiftKey) {
							cmi.ensureFocusOnCurrentlyDragged();
							Popup.remove(1);
							window.preventOtherHandling(e);
						    } else
							cancelSelection();
						}
					};

					Popup.show("bottom","left");
					nameField.focus(); // put the cursor inside the name edit area
				});
				createTiddlyButton(popup,"","rename this tiddler", startRenaming,"renameTiddlerButton button");

				// the "edit text" button
				var startEditing = wrapNoClose(function()
				{
					var textEditPopup = Popup.create(popup),
					    li = createTiddlyElement(textEditPopup,"li"),
					    textField = createTiddlyElement(li,"textarea",null,"ttextInput"),
					    changeText = function(e)
					    // e is either click or keydown (enter) event
					    {
						var goOnSelected = e.shiftKey;
						tid.set(null,textField.value);
						store.saveModifiedTiddler(tid);
						story.refreshTiddler(tid.title,null,true);
						autoSaveChanges();
						if(goOnSelected)
							cmi.ensureFocusOnCurrentlyDragged();
						else
							cancelSelection();
					    };


					textField.value = tid.text;
					// change the width of the popup and hence of {{{textField}}}
					textEditPopup.style.width = "100%";
					createTiddlyButton(li,"save","save the text of \""+
								tid.title+"\"",changeText,
								"button saveTextButton");
					textField.onclick = wrapNoClose(); // prevent popup closing
					// press enter to apply or esc to exit
					// (shift and ctrl are also taken into account)
					textField.onkeydown = function(ev)
					{
						var e = ev || window.event;
						if(e.ctrlKey && e.which == $enter) {
							changeText(e);
							Popup.remove(1); //textEditPopup only

							window.preventOtherHandling(e);
						}
						if(e.which == $esc) {
						    if(e.shiftKey) {
							cmi.ensureFocusOnCurrentlyDragged();
							Popup.remove(1);
							window.preventOtherHandling(e);
						    } else {
							Popup.remove();
							cancelSelection();
						    }
						}
					};
					textField.onkeypress = function(e)
					{
						adjustHeightToContent.apply(this);
						// avoid firing of story.onTiddlerKeyPress
						if(e.which == $enter) {
							if(e.stopPropagation)
								e.stopPropagation();
							e.cancelBubble = true;
						}
						// don't return false to insert linebreaks
						// on enter (when typing)
					}

					Popup.show("bottom","left");
					adjustHeightToContent.apply(textField);
					textField.focus(); // put the cursor inside the text edit area
				});
				createTiddlyButton(popup,"","edit the tiddler text",
					startEditing,"editTiddlerTextButton button");

				// the "open" button
				var i = getTiddlyLinkInfo(tName,"openTiddlerButton button"),
				    openTiddler = function(e) {
					onClickTiddlerLink(e);
					cancelSelection();
				    },
				    openButton = createTiddlyButton(popup,"","open "+tName,
					openTiddler,i.classes,null,null,{
						refresh: "link", tiddlyLink: tName
					}), // see createTiddlyLink source
				    clickOpenTiddler = function(){
					jQuery(openButton).click();
console.log("click generated in clickOpenTiddler");
				    };

				// "add" button
				var cma = config.macros.addTiddler;
				if(cma && addAction) {
					var btn = createTiddlyButton(popup,"",
						"add tiddler here",cma.onClick,
						"addTiddlerButton button"),
					    currentIndex = getJMenus().index(this);
					btn.params = { title:"", text:"", commonTags:[],
						addAction:	addAction,
						orderCounter:	field,
						orderFilter:	filter,
						orderMode:	currentIndex
					}
					var addTiddler = function(e) { jQuery(btn).click();
window.preventOtherHandling(e);
console.log("click generated in addTiddler"); };
				}

				// the "delete" button
				var confirmDeleteMsg = config.commands.deleteTiddler.warning,
				    deleteTiddler = function(e,goOnSelected)
				    {
					if(e) // on click
						goOnSelected = goOnSelected || e.shiftKey;
					if(confirm(confirmDeleteMsg.format([tName]))) {
						if(goOnSelected)
							goOnSelected = selectNeighbour();
						  // if no neighbour, nothing to reselect
						store.removeTiddler(tName);
						autoSaveChanges();
					}
					if(goOnSelected)
						cmi.ensureFocusOnCurrentlyDragged();
					else
						cancelSelection();
				    };
				createTiddlyButton(popup,"","delete this tiddler",
					deleteTiddler,"deleteTiddlerButton button");

				// support keyboard
				//  keypress ignores "delete", arrows etc, hence keydown
				var onKeyDownItemMenu = function(e) {
					switch(e.which) {
						case $enter: clickOpenTiddler();break;
						case $down:
							if(e.ctrlKey) moveDown(true);
							else selectNext();
							break;
						case $up:
							if(e.ctrlKey) moveUp(true);
							else selectPrev();
							break;
						case $home:
							if(e.ctrlKey) moveToTop(true);
							else selectFirst();
							break;
						case $end:
							if(e.ctrlKey) moveToBottom(true);
							else selectLast();
							break;
						case $esc:
						// onkeydown here, because onkeyup ~can't be
						// prevented from ~propagation in subpopups
							if(!e.shiftKey)
								cancelSelection();
							else
								//for the info and tag popups
								Popup.remove(1);
							break;
						
//# add keyboard support for moving to the beginning/end (ctrl+)"Home"/"End"
					}
					// allow browser tab switching
					if(e.which != $tab || !e.ctrlKey)
						return false;
				};
				var onKeyUpItemMenu = function(e) {
					switch(e.which) {
						case $i:  showTiddlerInfo();	break;
						case $r:  startRenaming();	break;
						case $e:  startEditing();	break;
						case $t:  startTagToggling();	break;
						case $plus:
							if(cma && addAction)
								addTiddler(e);
						break;
						case $delete: case $x:
							// tries to reselect if e.shiftKey!
							deleteTiddler(null,e.shiftKey);
						break;
						
//# add keyboard support for actions D[A?]
					}
					return false;
				};

				cmi.setCurrentlyDragged(tName, field, dropAction, this, onKeyDownItemMenu, onKeyUpItemMenu);
				cmi.markSelected(this);

/*# create array of { handler: .. ,  label: .. , activationKeys: .. }
    and try to make button creation, keyboard support "for each ..", extendable set of .. */

				Popup.show("top","right");
			} else {				// ~drop
				// if taken from another list, the item must be changed by the drop+add actions
				var dragListContext = cmi.getCurrentSourceListContext(),
				    dropActionNow = dragListContext.dropAction,
/* not 100% accurate */		    sameList = (dropActionNow == dropAction) && (dragListContext.field == field),
					dropFromOtherList = !sameList && (dropActionNow || addAction),
					dropAndAddAction = (dropActionNow && addAction) ?
						(dropActionNow+",,"+addAction)
						: (dropActionNow || addAction);

				if(dropFromOtherList)
				{
					var draggedTid = store.fetchTiddler(cmi.getCurrentlyDragged());
					cmi.parseAndApplyAction(draggedTid,dropAndAddAction);
					draggedTid.deleteSCounter(dragListContext.field);
				}

				// move the item
				Popup.remove(); // close the popup
				if(cmi.getCurrentlyDragged() == tName) {
					jQuery(this).removeClass("buttonSortState");
					moveDown(); // on drop-on-self
				} else
					moveToArbitraryPlace(cmi.getCurrentlyDragged(),true);
					// refreshing removes the "buttonSortState" class
				cmi.clearCurrentlyDragged();
			}
		});

		// create the 2 sets of classes for the button and for the table row
		// (if itemMenu is inside a td element) based on the tiddler's tags
		var itemMenuClasses = this.itemMenuClass,
		    rowClasses = "",
		    badSymbolsRE = /[\.,;:`!@#\$%\^&\*\(\)\+=\[\]\{\}\|\\/'"~ ]/g;
		for(var i = 0 ; tid && i < tid.tags.length ; i++) {
			// process each tag: substitute spaces and symbols .,;:!'"()[]{}=+\|/*&^%$#@`~ with "_"
			itemMenuClasses += " marker_"+ tid.tags[i].replace(badSymbolsRE,"_");
			rowClasses += "line_"+ tid.tags[i].replace(badSymbolsRE,"_")+" ";
		}

		// create the button(s) // text is set via CSS
		var btn = createTiddlyButton(place,"", "",onClickItemMenu,itemMenuClasses);
		btn.setAttribute("filter",filter);
		btn.tiddler = tid;

		// in table, add the line_className classes based on the tiddler's tags
		if(place.tagName.toLowerCase() == "td")
			jQuery(place).parent().addClass(rowClasses);
	}
}

// define the actions
  // add tag
config.macros.itemMenu.actionStepsWithArguments["+tag"] = function(tiddler,tag)
{
	if(!tiddler.isTagged(tag)) {
		tiddler.tags.push(tag);
		tiddler.modifier = config.options.txtUserName;
		tiddler.modified = new Date();
	}
};
  // remove tag
config.macros.itemMenu.actionStepsWithArguments["-tag"] = function(tiddler,tag)
{
	if(tiddler.isTagged(tag)) {
		tiddler.tags.splice(tiddler.tags.indexOf(tag),1);
		tiddler.modifier = config.options.txtUserName;
		tiddler.modified = new Date();
	}
};
  // toggle tag
config.macros.itemMenu.actionStepsWithArguments["!tag"] = function(tiddler,tag)
{
	if(tiddler.isTagged(tag))
		tiddler.tags.splice(tiddler.tags.indexOf(tag),1);
	else
		tiddler.tags.push(tag);
	tiddler.modifier = config.options.txtUserName;
	tiddler.modified = new Date();
};
  // set field
config.macros.itemMenu.actionStepsWithArguments["setField"] = function(tiddler,argument)
{
	var argRE = /(\w+)\.\.(.*)/, argMatch = argRE.exec(argument);
	if(!argMatch) return;
	var field = argMatch[1], value = argMatch[2];
	value = value || null; // to remove the field if empty

	store.setValue(tiddler,field,value,true);
};
  // delete field
config.macros.itemMenu.actionStepsWithArguments["deleteField"] = function(tiddler,argument)
{
	store.setValue(tiddler,argument,null,true);
};
//config.macros.itemMenu.actionStepsWithArguments["<name>"] = function(tiddler,arg) {
//};
  // save changes
config.macros.itemMenu.actionStepsWithoutArguments["save"] = function() {
	saveChanges();
};
config.macros.itemMenu.actionStepsWithoutArguments["delete"] = function(tiddler) {
	var confirmDeleteMsg = config.commands.deleteTiddler.warning;
	if(confirm(confirmDeleteMsg.format([tiddler.name])))
	{
		store.removeTiddler(tiddler.title);
		autoSaveChanges();
	}
};
//config.macros.itemMenu.actionStepsWithoutArguments["<name>"] = function(tiddler) {
//};

// implement the styling
var iMenuClass = config.macros.itemMenu.itemMenuClass;
config.shadowTiddlers["StyleSheetManualSorter"] = "/*{{{*/\n"+
	".editTTextItem  { width: 100% }\n"+
	".ttextInput     { width:  99%; margin-right: 0.5%; margin-left: 0.5%; }\n\n"+

	"."+iMenuClass+"               { color: inherit; font-weight: bold; }\n"+
	"."+iMenuClass+":hover         { background-color: inherit; color: green; }\n"+ // use ColorPalette?
	"."+iMenuClass+":before        { content: \"⊙\"; }\n"+
	".cancelSelectionButton:before { content: \"⊗\"; }\n"+
	".doActionButton:before        { content: \"D\"; }\n"+
	".tiddlerInfoButton:before     { content: \"I\"; }\n"+
	".renameTiddlerButton:before   { content: \"R\"; }\n"+
	".editTiddlerTextButton:before { content: \"E\"; }\n"+
	".openTiddlerButton:before     { content: \"O\"; font-weight: normal; }\n"+
	".addTiddlerButton:before      { content: \"+\"; }\n"+
	".deleteTiddlerButton:before   { content: \"X\"; }\n"+
	".itemMenu .tagTogglerButton:before { content: \"T\"; }\n"+
	".itemMenu .button                  { padding-left: 0.25em; padding-right: 0.25em; }\n"+
	".buttonSortState:hover,\n"+
	".buttonSortState { background-color: inherit; color: #00B000; }\n"+
	// for "lists" with buttons as "markers" (using tables)
	".tableList,\n"+
	".tableList > tbody,\n"+
	".tableList > tbody > tr,\n"+
	".tableList > tbody > tr > td,\n"+
	".tableList .button { border: none !important; }\n"+
	".tableList td            { vertical-align: top; padding: 0px 3px; }\n"+
	".tableList ul,\n"+
	".tableList ol,\n"+
	"li .tableList,\n"+
	".tableList .tableList    { margin: 0; }\n"+
	".tableList > tbody > .selected { background-color: #ddddff; }\n\n"+

	// full width of table with minimal width of the first column
	".tableList { width: calc(100% - 2em); }\n"+ // 2em of margins on both sides
	".tableList > tbody > tr > td:first-child { width: 1px; }\n"+
	/* is some cases
	 *	.tableList td { width: 1px; }
	 *	.tableList td:last-child { width: 100%; }
	 * would be more suitable */
	"/*}}}*/";
store.addNotification("StyleSheetManualSorter", refreshStyles);
//}}}
/***
!!!Tagging helpers and tagToggler macro
***/
//{{{
config.filters.existingTags = function(results,match)
{
	var allTags = store.getTags();
	for(var i = 0; i < allTags.length; i++)
		allTags[i] = allTags[i][0];

	if(match[3] == "-") {
		for(i = 0; i < results.length; i++)
			if(!allTags.contains(results[i].title))
				results.splice(i--,1);
		return results;
	}

	for(var i = 0; i < allTags.length; i++)
		allTags[i] = store.fetchTiddler(allTags[i]) || new Tiddler(allTags[i]);

	// default action: add all the tags
	for(i = 0; i < allTags.length; i++)
		results.pushUnique(allTags[i]);
	return results;
};

config.filters.tagging = function(results,match)
{
	var prefix = match[3].substr(0,1), title = match[3].substr(1), tid = store.fetchTiddler(title),
	    tagging = [], notTagging = [];

	if(!tid)
		return [];
//# this behaviour may be changed after some testing

	for(var i = 0; i < results.length; i++)
		if(tid.tags.contains(results[i].title))
			tagging.push(results[i]);
		else
			notTagging.push(results[i]);

	switch(prefix) {
		case ">":
			return tagging.concat(notTagging)
		case "<":
			return notTagging.concat(tagging)
		case "+":
			return tagging
		case "-":
			return notTagging
	}
	displayMessage("Warning: the \"tagging\" filter must be used with one of the prefixes +, -, > or <, which is not the case.");
// use cookie to decide whether to suppress the message?
	return results;
};

config.macros.tagToggler = {};
config.macros.tagToggler.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	// parse params
	var pParams = paramString.parseParams("pParams",null,true,false,true),
	    tid     = store.fetchTiddler(pParams[0]["pParams"][0]) || tiddler; // tid. which tags will be toggled
	if(!tid) return;

	var label = pParams[0]["pParams"][1];
	if(label == "." || label == undefined)
		label = "toggle tags";

	var tooltip = getParam(pParams,"tooltip","toggle tags of "+tid.title),
	    doAutoSave = params.contains('doAutoSave') || false,
	    tagsSet = getParam(pParams,"tags","[existingTags[+]] [tagging[>"+tid.title+"]]");

	// for compability with SetManagerPlugin
	var cmi = config.macros.itemMenu,
	    clearSelected = function()
	    {
		if(cmi) cmi.clearCurrentlyDragged();
	    },
	    returnItemMenuSelection = function()
	    {
		if(cmi) cmi.ensureFocusOnCurrentlyDragged();
	    };

	var whereToScroll;
	var toggleTag = function(tid,tag,refreshTagListIfNotClosing)
	{
		if(tid.isTagged(tag))
			tid.tags.splice(tid.tags.indexOf(tag),1);
		else
			tid.tags.push(tag);

		if(refreshTagListIfNotClosing) return refreshTagListIfNotClosing();
		
		store.saveModifiedTiddler(tid);
		story.refreshTiddler(tid.title,null,true);
		if(doAutoSave)
			autoSaveChanges();
		
		if(whereToScroll)
			window.scrollTo(0,ensureVisible(whereToScroll));
		clearSelected();
	};

	// define the onclick handlers
	var onTagClick = wrapNoClose(function(e)
	{
		var tag = this.getAttribute("tag"),
		    shiftWasHold = (e || window.event).shiftKey;
		toggleTag(tid,tag,shiftWasHold ? this.refreshTagList : null);
		return false;
	});
	var onClick = wrapNoClose(function()
	{
		// form the list of the tags to choose from, all tags to start somewhere
		var availableTags = [],
		    allTags = store.getTags(),
		    noTagsMsg = "No tags found by the provided criterion";
		for(var i = 0; i < allTags.length; i++)
			availableTags.push(allTags[i][0]);

		// build the list of tags and labels
		var tagsToWorkWith = store.filterTiddlers(tagsSet);
		for(i = 0; i < tagsToWorkWith.length; i++)
			tagsToWorkWith[i] = tagsToWorkWith[i].title;
		var menuTags = [], menuLabels = [], menuItems = [], t;
		for(i = 0; i < tagsToWorkWith.length; i++) {
			t = tagsToWorkWith[i];
			menuItems.push({
				tag: t,
				label: t // '[x] ' or '[ ] ' addition is now defined via css
			})
		}

		// create the popup menu
		var popup = Popup.create(this), li, tagButton;

		// arbitrary tag toggler
		li = createTiddlyElement(popup,"li");
		var newTagField = createTiddlyElement(li,"input",null,"newTagInput",{type:"text"});
		newTagField.onclick = wrapNoClose(); // prevent the popup from closing on click here

		var selectedTagIndex = 0, // 0 means "not selected"
		    selectNextTag = function()
		    {
			var nextListItem = popup.childNodes[selectedTagIndex+1];
			if(!nextListItem) return // out of boundaries, won't move

			jQuery(popup).children().children().removeClass("selectedTag");
			selectedTagIndex++;
			nextListItem.childNodes[0].classList.add("selectedTag");
		    },
		    selectTag15ahead = function()
		    {
			var numberOfItems = jQuery(popup).children().length; // tags+1
			selectedTagIndex  = Math.min(selectedTagIndex + 15,numberOfItems-1);
			var newListItem   = popup.childNodes[selectedTagIndex];
			jQuery(popup).children().children().removeClass("selectedTag");
			newListItem.childNodes[0].classList.add("selectedTag");
		    },
		    selectPrevTag = function()
		    {
			var prevListItem = popup.childNodes[selectedTagIndex-1];
			if(selectedTagIndex == 0) return;

			jQuery(popup).children().children().removeClass("selectedTag");
			selectedTagIndex--;
			if(selectedTagIndex == 0) return; // don't color the main field
				//# or do so but color it in the beginning as well
			prevListItem.childNodes[0].classList.add("selectedTag");
		    },
		    selectTag15back = function()
		    {
			var numberOfItems = jQuery(popup).children().length; // tags+1
			selectedTagIndex  = Math.max(selectedTagIndex - 15,0);
			var newListItem   = popup.childNodes[selectedTagIndex];
			jQuery(popup).children().children().removeClass("selectedTag");
			if(selectedTagIndex > 0)
				newListItem.childNodes[0].classList.add("selectedTag");
		    },
		    selectTag = function(tag)
		    {
			var button = jQuery(popup).children().children("*[tag='"+tag+"']");
			if(!button.length) return;

			button.addClass("selectedTag");
			// get index, set selectedTagIndex
			selectedTagIndex = jQuery(popup).children().children().index(button)
				- 1;
		    },
		    getSelectedTagButton = function() {
			if(selectedTagIndex == 0) // fosuced on new tag field
				return null;
			return popup.childNodes[selectedTagIndex].childNodes[0];
		    },
		    toggleSelected = function(goOnToggling)
		    {
			var button = getSelectedTagButton();
			if(!button) return;
			tag = button.getAttribute("tag");
			fieldValue = newTagField.value;
			toggleTag(tid,tag,goOnToggling ? refreshTagList : null);

			newTagField.value = fieldValue;
			newTagField.select();
			selectTag(tag);
			return tag;
		    },
		    toggleNew = function(goOnToggling) {

			var tag = jQuery.trim(newTagField.value), isNewTag = true, i;

			// add the tag to the list if it's totally new:
			for(i = 0; i < menuItems.length; i++)
				if(menuItems[i].tag == tag)
					isNewTag = false;
			if(isNewTag)
				menuItems.push({ tag:tag, label:tag });

			toggleTag(tid,tag,goOnToggling ? refreshTagList : null);
		    };

		// push the button to apply/click elsewhere to cancel..
		createTiddlyButton(li,"toggle","toggle the entered tag in the tiddler",
						toggleNew,"button tagAdderButton");
		// ..or use keyboard (see below)

		// tags from the set
		var refreshTagList = function()
		{
//console.log("caller is " + arguments.callee.caller.toString());
			// clear the list (but don't remove the first item)
			while(popup.childNodes[1])
				popup.removeChild(popup.childNodes[1]);
			newTagField.focus();
			selectedTagIndex = 0;

			// refill the list
			if(menuItems.length == 0) {
				createTiddlyText(createTiddlyElement(popup,"li"),noTagsMsg);
				return;
			}

			var fieldValueLowered = newTagField.value.toLocaleLowerCase(),
			    sortedMenuItems = menuItems.concat([]).sort(function(a,b){
				if(!fieldValueLowered) return 0;
				// store where the value from the field starts in the tag
				a.index= a.tag.toLocaleLowerCase().search(fieldValueLowered);
				b.index= b.tag.toLocaleLowerCase().search(fieldValueLowered);
//				if(tid.tags.contains(a.tag) && a.index != -1) a.index = -2;
//				if(tid.tags.contains(b.tag) && b.index != -1) b.index = -2;
				return a.index > b.index;
			    }),
			    item;

			for(i = 0; i < sortedMenuItems.length; i++)
			{
				item = fieldValueLowered ? sortedMenuItems[i] : menuItems[i];
				if(fieldValueLowered && item.index == -1) continue;

				li = createTiddlyElement(popup,"li");
				tagButton = createTiddlyButton(li,item.label,
					"toggle '"+item.tag+"'",onTagClick,"button tag"+
					(tid.tags.contains(item.tag)? "" : "Not")+"Present");
				tagButton.setAttribute("tag",item.tag);
				tagButton.refreshTagList = refreshTagList;
			}
		};
		refreshTagList();

		// show the popup menu
		Popup.show("bottom","left");

		// support keyboard navigation
		jQuery(newTagField).bind('input',function(e)
		{
			refreshTagList();
		});
		jQuery(newTagField).bind('keyup',function(e)
		{
			goOnToggling = e.shiftKey;
			if(e.which == $enter) {
				toggleSelected(goOnToggling) || toggleNew(goOnToggling);
				if(!goOnToggling) Popup.remove();
//document.getElementById("displayArea").focus()
				return;
			}
			if(e.which == $esc) {
				if(whereToScroll)
					window.scrollTo(0,ensureVisible(whereToScroll));
				if(e.shiftKey) {
					returnItemMenuSelection();
					Popup.remove(1);
//# make sure doesn't get propagated?
				} else {
					clearSelected();
					Popup.remove();
				}
//document.getElementById("displayArea").focus()
			}
		});
		jQuery(newTagField).bind('keydown',function(e)
		{
			if(e.which == $down && !e.ctrlKey)
				selectNextTag();
			if(e.which == $up && !e.ctrlKey)
				selectPrevTag();
			if(e.which == $pgDn || (e.which == $down && e.ctrlKey))
				selectTag15ahead();
			if(e.which == $pgUp || (e.which == $up && e.ctrlKey))
				selectTag15back();
			if(selectedTagIndex)
				window.scrollTo(0,ensureVisible(getSelectedTagButton()));
			else
				window.scrollTo(0,ensureVisible(newTagField));
		});
	});

	// create the button
	whereToScroll = createTiddlyButton(place,label,tooltip,onClick,"button tagTogglerButton");
}

// set styling
config.shadowTiddlers["TagAdderStyleSheet"] = "/*{{{*/\n"+
	".tagPresent:before	{ content: \"[x] \"; }\n"+
	".tagNotPresent:before	{ content: \"[ ] \"; }\n"+
	".newTagInput		{ float: left; margin-right: 0.5em; }\n"+
	".tagAdderButton	{ text-align: center; }\n"+
	".selectedTag		{ color: blue !important; }\n"+
	"/*}}}*/";
store.addNotification("TagAdderStyleSheet", refreshStyles);
//}}}
/***
!!!Hijack forEachTiddler macro to enable the new params
***/
//{{{
// helper filter for hiding hidden tiddlers
config.filters.hideFromFet = function(results,match)
{
	var contextName = match[3], noContext = contextName == "-";
	for(var i = 0; i < results.length; i++)
		if(results[i].fields["hideInFet".toLowerCase()] &&
		   (results[i].fields["hideInFet".toLowerCase()] && noContext ||
		    results[i].fields["hideInFet".toLowerCase()]
							.split(" ").contains(contextName)))
			results.splice(i--,1);
	return results;
};

// hijack config.macros.forEachTiddler.parseParams so that it handles
//  "set", "sortable"/"sortableBy", "addAction", "dropAction", "switchAction" params
// the "params" array is not changed as its usages in parseParams don't need it,
//  same story for preParsedParams[i] (i > 0)
if(config.macros.forEachTiddler && !config.macros.forEachTiddler.hijacked_sortable)
{
//# check if the proper version of FET (1.3.0 or above) is used
	config.macros.forEachTiddler.hijacked_sortable = true;
	config.macros.forEachTiddler.oldFashionParams =
		config.macros.forEachTiddler.oldFashionParams.concat([
		"sortableBy", "addAction", "dropAction", "switchActions", "writeToList"]);

	config.extensions.ManualSortMacroPlugin = {
		orig_fet_parseParams: config.macros.forEachTiddler.parseParams
	};
	var origParse = config.extensions.ManualSortMacroPlugin.orig_fet_parseParams;
	config.macros.forEachTiddler.parseParams = function(preParsedParams,params)
	{
		// parse the "set" param
		var setDescription = getParam(preParsedParams,"set",""), filter, sortField,
		    setAddAction, setDropAction, cmd = config.macros.defineSet;
		if(setDescription) {
			if(!setDescription.contains("[")) {
				filter = "[set["+ setDescription +"]]"; // named set
				sortField = cmd.getSortFieldForNamedSet(setDescription);
				setAddAction = cmd.getAddToNamedSetAction(setDescription);
				setDropAction= cmd.getDropFromNamedSetAction(setDescription);
			} else {
				filter = "set: "+setDescription; // inline set
				var setDefinition = cmd.parseSetDefinition(setDescription);
				// don't overwrite setDefinition as it is passed to adder
				sortField = setDefinition.sortField;
				setAddAction = cmd.getAddToSetAction(setDefinition);
				setDropAction = cmd.getDropFromSetAction(setDefinition);
			}
			sortField = sortField || config.macros.itemMenu.defaultField;
		}

		// remember the filter (calc from both "set" and "filter" params)
		var filterParam = getParam(preParsedParams,"filter","") +
				 (setDescription ? " [hideFromFet[-]]" : "");
		if(filter && filterParam) {
			if(filter.indexOf("set: ") == 0) {
				filter = filter + " modify: " + filterParam;
			} else
				filter = filter + " " + filterParam;
		} else if(filterParam)
			filter = filterParam;
		if(!filter)
			return origParse.apply(this,arguments);

		// the "in", "where" params stay untouched; change the filter param
		preParsedParams[0]["filter"] = [filter];

		// hijack the "script" param (define the "insert" and "adder" helpers)
		var usedScript = getParam(preParsedParams,"script",""),
		    insertDefinition = "var insert = "+
		        "function(container,params,defaultText,preprocessScript) {"+
			"container = container || 't';"+
			"params = params || '';"+
			"if(defaultText)"+
				"params = 'showIfNoValue:\\''+defaultText+'\\' '+params;"+
			"if(preprocessScript)"+
				"params = 'preprocess:\\''+preprocessScript+'\\''+params;"+
			"return '<<insertEditable tiddler:['+'['+tiddler.title+']] container:\"'+container+'\" '+(params||'')+'>>';"+
		    "};";
		    adderDefinitionBegin = 'var adder = '+
			'function(args,label,orderMode,title) {'+
			'return "<<addTiddler"'+
			'	+(" label:\'"+(label || "+")+"\'")'+
			'	'+(setDescription ? ('+" set:\''+setDescription+'\'"') : ''),
		    adderDefinitionEnd =
			'	+(" title:\'"+(title || "")+"\'")'+ // empty by default
			'	+" "+(args||"")'+
			'	+">>"'+
		    '};',
		    adderDefinition = adderDefinitionBegin + adderDefinitionEnd,
			// unless sortableBy is defined, orderMode is ignored (see below)
		    fullScript = insertDefinition + adderDefinition + usedScript;

		preParsedParams[0]["script"] = [fullScript];

		// process and apply sortable/sortableBy params/sortField from set definition
		var sortableParamIndex = params.indexOf("sortable"),
		    justSortable       = sortableParamIndex != -1,
		    sortableBy         = getParam(preParsedParams,"sortableBy");

		if(params.contains("sortableBy") && !sortableBy)
			return { errorText: "Field name expected behind 'sortableBy'."};
		if(justSortable)
			sortableBy = config.macros.itemMenu.defaultField;

		 // support the deprecated {{{sortableBy '"orderCountName"'}}} syntax
		var fieldWithQuotsMatch = /^"(.+)"$/.exec(sortableBy);
		sortableBy = fieldWithQuotsMatch ? fieldWithQuotsMatch[1] : sortableBy;
		 // sortField can be defined directly or from the set (see above)
		sortField = sortableBy || sortField;

//# rethink from here: either move this stuff below actions parsing etc (more meaninglful)
//	or add "&& !setDescription" (this is to enable actions and other stuff for sets,
//	even if sortField is not defined)
//+ from here
		if(!justSortable && !sortField)
			return origParse.apply(this,arguments);

		// support the "extended scope for sorting"
//# is it extended or narrowed?
		var fieldAndFilterMatch = /^(\w+) (\[.+)$/.exec(sortField),
		    sortFilter = fieldAndFilterMatch ? fieldAndFilterMatch[2] : filter;
		sortField = fieldAndFilterMatch ? fieldAndFilterMatch[1] : sortField;

		// set the "sortBy" param
		var undefinedUp = true;
		var sortScript = "(function(){ var c = tiddler.getSCounter(\"" + sortField +
				"\"); return (c != 0 && !c)?" + (undefinedUp ? "-1" : "1000") + ": c; })()";
				// lists of 999+ tiddlers long are not supposed to be used with manual sorting

		preParsedParams[0]["sortBy"] = [sortScript];
		// the sortable/sortableBy part is left in preParsedParams[0] as is

		// extend the "adder" helper in the "script" param using specified sortField
		adderDefinition = adderDefinitionBegin +
			'	+(orderMode ? (" order:\''+sortField+','
					+filter.replace(/"/g,'\\"')
//# do smth about "'"s in filter (macro param parsing)
					+',"+orderMode+"\'") : "")'+
			adderDefinitionEnd;
		fullScript = insertDefinition + adderDefinition + usedScript;

		preParsedParams[0]["script"] = [fullScript];
//= up to here

		// for actions other than "write" (and "writeToList" ~action), do no more
		for(var knownActionName in config.macros.forEachTiddler.actions)
			if(knownActionName != "write" && params.contains(knownActionName))
				return origParse.apply(this,arguments);
		// in original FETP, that's "addToList" action only

		// parse the [SMP] actions-defining params
		var addAction     = getParam(preParsedParams,"addAction",setAddAction),
		    dropAction    = getParam(preParsedParams,"dropAction",setDropAction),
		    switchActions = preParsedParams ? (
				preParsedParams[0]["switchActions"] ?
					preParsedParams[0]["switchActions"].join(";;")
				: ""
			) : "";
		    // allow multiple switchActions params (but each must have a name..)

		var commonText = "description is expected behind";
		if(!addAction && !(addAction == "") && params.contains("addAction"))
			return { errorText: "An action "+commonText+" 'addAction'." };
		if(!dropAction && !(dropAction == "") && params.contains("dropAction"))
			return { errorText: "An action "+commonText+" 'dropAction'." };
		if(!switchActions && !(switchActions=="")&& params.contains("switchActions"))
			return { errorText: "An action(s) "+commonText+" 'switchActions'."};

		// parse [FET] action
		var action = "writeToList"; // default pseudo-action

		//  when action is not specified it is considered as writeToList with..
		var defaultText = '"["+"["+tiddler.title+"]]"';
//# unknown actions are considered as the default one.. which is bad for other extensions

		//  when "writeToList" is used, in fact it preparses the argument for "write"
		writeToListText = getParam(preParsedParams,"writeToList",defaultText);
		var writeText = '"| "+itemMenu()+" |"+(' +writeToListText+ ')+"|\\n"';

		//  when "write" is used, its argument is used after only "minimal"preparsing
		if(preParsedParams[0]["write"])
			action = "write";
		writeText = getParam(preParsedParams,"write",writeText);

		//  substitute all the "itemMenu()" expressions in the argument of "write"
		//   with their intended "meaning" (hence use non-greedy regexp)
		var itemMenuRegExp = /(.*?)itemMenu\(\)/g;
		var insertItemMenu = function($0,$1) {
			var escapedFilter = sortFilter.contains('"') ?
				('\\\''+sortFilter.replace(/"/g,'\\\"')+'\\\'') :
				("\\\""+sortFilter.replace(/'/g,"\\\'")+"\\\"") ;
// this is a semi-fix: tags with both ' and " will cause troubles with manual sorting..
// escape the actions as well

			return $1 + "\"<<itemMenu [[\"+tiddler.title+\"]] "+ escapedFilter +
				(sortField ? (" field:\\\""+ sortField +"\\\"") : "")+
				(addAction ? " addAction:\\\""+addAction+"\\\"" : "")+
				(dropAction ? " dropAction:\\\""+dropAction+"\\\"" : "")+
				(switchActions ? " switchActions:\\\""+switchActions+"\\\"" : "")+">>\"";
		}
		writeText = writeText.replace(itemMenuRegExp,insertItemMenu);

		//  change preParsedParams accordingly (use writeText, "write" action)
		preParsedParams[0]["write"] = [writeText];

		// change the begin argument (leave end, none, toFile parts unchanged)
		if(action == "writeToList")
			preParsedParams[0]["begin"] = [(preParsedParams[0]["begin"] ?
				preParsedParams[0]["begin"][0]:'""') + '+"|tableList|k\\n"'];

		// call the parser with the new arguments
		return origParse.apply(this,arguments);
	}
}
//}}}
/***
!!!addTiddler macro
***/
//{{{
config.macros.addTiddler = {
	handler: function(place,macroName,params,wikifier,paramString) {
		if(readOnly)
			return;

		// param parsing (partially taken from the newTiddler macro)
		params = paramString.parseParams("anon",null,true,false,false);
		var title  = params[1] && params[1].name == "anon" ? params[1].value : config.macros.newTiddler.title;
		    title  = getParam(params,"title",title);
		var label  = getParam(params,"label",label),
		    prompt = getParam(params,"prompt",config.macros.newTiddler.prompt),
		    text   = getParam(params,"text",""),
		    set    = getParam(params,"set",""),
		    commonTags = [], t,

		    orderParts      = getParam(params,"order",""),
		    orderPartsMatch = /^(\w*),(.+),([\w\d\-]+(?:,\w+)?)$/.exec(orderParts),
		    orderCounter    = orderPartsMatch ? orderPartsMatch[1] : undefined,
		    orderFilter     = orderPartsMatch ? orderPartsMatch[2] : undefined,
		    orderMode       = orderPartsMatch ? orderPartsMatch[3] : undefined,
		    orderParamDefault;
		if(orderMode) {
			orderPartsMatch = /^(\w+),(\w+)$/.exec(orderMode);
			orderMode = orderPartsMatch ? orderPartsMatch[1] : orderMode;
			orderParamDefault = orderPartsMatch ? orderPartsMatch[2] : undefined;
		}
		var cmd = config.macros.defineSet;
		// get addAction for the set and orderCounter
		if(set && cmd) {
			// set may be either set name or set definition
			if(!set.contains("[")) {
				orderCounter = orderCounter ||
					cmd.getSortFieldForNamedSet(set);
				var action = cmd.getAddToNamedSetAction(set);
			} else {
				var setDefinition = cmd.parseSetDefinition(set);
				orderCounter = orderCounter || setDefinition.sortField;
				var action = cmd.getAddToSetAction(setDefinition)
			}
		}

		for(t = 1; t < params.length; t++)
			if((params[t].name == "anon" && t != 1) || (params[t].name == "tag"))
				commonTags.push(params[t].value);
		if((orderCounter =="default" || orderCounter =="") && config.macros.itemMenu)
			orderCounter = config.macros.itemMenu.defaultField;

		// create button, attach params to it
		var btn = createTiddlyButton(place,label,prompt,this.onClick);
		btn.params =
		{
			title:		title,
			commonTags:	commonTags,
			addAction:	(set && cmd) ? action : "",
			text:		text,
			orderCounter:	orderCounter,
			orderFilter:	orderFilter,
			orderMode:	orderMode,
			orderParamDefault: orderParamDefault
		};
	},
	onClick: window.wrapNoClose(function()
	{
		// extract params
		var title = this.params.title,
		    text  = this.params.text,
		    tags  = [].concat(this.params.commonTags), // should be a new array
			//# do the same "copying" for fields, if are set here
		    addAction		= this.params.addAction,
		    orderCounter	= this.params.orderCounter,
		    orderFilter		= this.params.orderFilter,
		    orderMode		= this.params.orderMode,
		    orderParamDefault	= this.params.orderParamDefault,

		// create DOM
		    popup = Popup.create(this),
		    wrapper = createTiddlyElement(popup,"li"),
		    nameField = createTiddlyElement(wrapper,"input",null,"newTitleInput",{type:"text"});

		nameField.onclick = window.wrapNoClose();
		nameField.value = title;

		var cmi = config.macros.itemMenu,
		    addTidToSet = function(tiddler)
		    {
			if(!addAction || !cmi) return;
			cmi.parseAndApplyAction(tiddler, addAction);
		    };

		var createTheTiddler = function(goOnSelected)
		{
			var theTiddler = new Tiddler(jQuery.trim(nameField.value)),
			    modifier   = config.options.txtUserName;
			theTiddler.assign(null,text,modifier,null,tags);

			if(store.fetchTiddler(theTiddler.title) && !confirm("A tiddler named \""+theTiddler.title+"\" already exists. Do you want to overwrite it?"))
				return;
			store.saveTiddler(theTiddler);

//#			var theTiddler = new Tiddler(jQuery.trim(nameField.value));
//#			store.saveModifiedTiddler(theTiddler,null,text,tags);

			addTidToSet(theTiddler);

			if(orderCounter && Tiddler.prototype.setSCounter && cmi)
				if(orderMode == "top")
				    cmi.moveToTop(orderFilter, theTiddler, orderCounter);
				if(orderMode == "bottom")
				    cmi.moveToBottom(orderFilter, theTiddler, orderCounter);
				var orderModeIndex = parseInt(orderMode);
				if(!isNaN(orderModeIndex))
				    cmi.moveToArbitraryPlace(orderFilter,theTiddler, orderCounter,orderModeIndex,true);
//  use:  orderParamDefault
			autoSaveChanges();

			// for compability with SetManagerPlugin (usage in itemMenus)
			if(cmi && !goOnSelected) cmi.clearCurrentlyDragged();
		};

		// process enter/esc key presses
		// compatible with SetManagerPlugin (for usage in itemMenus)
		nameField.onkeydown = function(ev)
		{
			var e = ev || window.event;
			if(e.which == $enter) {
				createTheTiddler(e.shiftKey);
				Popup.remove();

				if(e.shiftKey && cmi)
					cmi.ensureFocusOnCurrentlyDragged();

				window.preventOtherHandling(e);
			}
			if(e.which == $esc) {
				if(e.shiftKey) {
					if(cmi) cmi.ensureFocusOnCurrentlyDragged();
					Popup.remove(1);
				} else {
					if(cmi) cmi.clearCurrentlyDragged();
					Popup.remove();
				}
			}
		};

if(orderMode == "checkboxes") {
// add possibilities to put the tiddler on top/bottom of a certain list (certain orderCounter):
//    create 2 checkboxes (t: [] b: []), add .. behaviour
			createTiddlyText(popup,"t:");
			var checkBoxTop = createTiddlyElement(popup,"input","test"/*null*/,null,null,{
				type:'checkbox',
				value:false
// calc the value the way it should be calced (chkAddToTop, ..)
			});
			checkBoxTop.onclick = window.wrapNoClose(function(){
				checkBoxTop.setAttribute(!checkBoxTop.value);
// checkboxes should deactivate each other, ..
			});
// add the onclick handler (change .., no close)
createTiddlyText(popup,"b:");
config.macros.option.handler(popup,"option",null,wikifier,"chkAddToBottom");
checkBox = popup.lastChild;
checkBox.onclick = window.wrapNoClose(checkBox.onclick);
// this works, but the checkbox being checked/unchecked is not displayed unless the popup is reopened
// - try config.macros.option.genericCreate(place,type,opt,className,desc)
// process the orderCounter taken from the check box
}

		// "ok" button
		createTiddlyButton(popup,"ok","create the tiddler",createTheTiddler);
		// cancel - on click elsewhere

		// show the popup menu, focus inside the text field
		Popup.show();
		nameField.focus();
		nameField.select()
	})
}
//}}}
/***
!!!insertEditable macro
***/
//{{{
// Sets the section value if it is present, appends otherwise
//  tip: if sectionName is "!!smth", then "!!!smth" is appended
//
Tiddler.prototype.setSection = function(sectionName,value)
{
	var beginSectionRegExp = new RegExp("(^!{1,6}[ \t]*" + sectionName.escapeRegExp() + "[ \t]*(\n|$))","mg"),
	    sectionTerminatorRegExp = /^!/mg,
	    match = beginSectionRegExp.exec(this.text);

	if(match) // edit existing section
	{
		var sectionTitle = match[1],
		    emptyAtEnd = match[2] != "\n",
		    beforeSection = this.text.substr(0,match.index),
		    sectionAndAfter = this.text.substr(match.index + match[1].length);

		match = sectionTerminatorRegExp.exec(sectionAndAfter);
		var afterSection = match ? sectionAndAfter.substr(match.index) : "";

		this.text = beforeSection + sectionTitle + (emptyAtEnd ? "\n" : "") + value
				+ (afterSection ? ("\n" + afterSection) : "");
	} else // add anew
		this.text = this.text + "\n!"+sectionName + "\n"+value;

	// setting dirty, notifying is not done here
};

// Sets the slice value if it is present, otherwise appends it as |name|value|
//  either after the last slice or to the beginning of the text (if no slices are present)
//
Tiddler.prototype.setSlice = function(sliceName,value)
{
	var replaceSliceSubPart = function(text,part,oldValue)
	{
		if(oldValue == value)
			return text;
		var eOldValue  = oldValue.escapeRegExp(),
		    eSliceName = sliceName.escapeRegExp();

		// "table" notation
		var simplifiedPattern = "^(.*"+eSliceName+".*\\|.*)"+eOldValue+"(.*\\|)$",
		    simplifiedRegExp = new RegExp(simplifiedPattern),
		    newPart = part.replace(simplifiedRegExp,function($0,$1,$2){
			return $1 + value + $2;
		    });
		if(newPart != part)
			return text.replace(part, newPart);

		// "sliceName: sliceValue" notation
		simplifiedPattern = "^(.*"+eSliceName+"\\:[\\s\\t])"+eOldValue+"(.*)$";
		simplifiedRegExp = new RegExp(simplifiedPattern),
		newPart = part.replace(simplifiedRegExp,function($0,$1,$2){
			return $1 + value + $2;
		});
		if(newPart != part)
			return text.replace(part, newPart);
	};
	// modification of TiddlyWiki.prototype.slicesRE to process "|..sliceName..||" syntax
	// empty slices in the "sliceName:" notation are not supported
	var re = /(?:^([\'\/]{0,2})~?([\.\w]+)\:\1[\t\x20]*([^\n]+)[\t\x20]*$)|(?:^\|\x20?([\'\/]{0,2})~?([^\|\s\:\~\'\/]|(?:[^\|\s~\'\/][^\|\n\f\r]*[^\|\s\:\'\/]))\:?\4[\x20\t]*\|[\t\x20]*([^\n\t\x20]?(?:[^\n]*[^\n\t\x20])?)[\t\x20]*\|$)/gm;
	re.lastIndex = 0;
	var m = re.exec(this.text);
	while(m) {
		if(m[2]) {
			if(m[2] == sliceName) {
				this.text = replaceSliceSubPart(this.text,m[0],m[3]);
				break;
			}
		} else {
			if(m[5] == sliceName) {
				this.text = replaceSliceSubPart(this.text,m[0],m[6]);
				break;
			}
		}
		m = re.exec(this.text);
	}

	if(!m || !m[2] && !m[5]) // if the slice is not present
	{
		// append after the last slice/to the start of text (adapted from GridPlugin)
		var matches = this.text.match(re),
		    lastSlice = matches ? matches[matches.length-1] : null,
		    where = lastSlice ? this.text.indexOf(lastSlice)+lastSlice.length : 0;

		this.text = this.text.substr(0,where)+
			(lastSlice ? '\n|%0|%1|' : '|%0|%1|\n').format(sliceName,value)+
			this.text.substr(where);
	}

	// recalc "stored" slices for this tiddler:
	delete store.slices[this.title];

	// setting dirty, notifying is not done here
};

config.macros.insertEditable = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler)
	{
		// parse and attach params to DOM
		var pParams   = paramString.parseParams("tiddler",null,true,false,true),
		    cell      = params.contains("cell"),
		    fill      = cell || params.contains("fillElement"),
		    wrapper   = fill ? place : createTiddlyElement(place,"span"),
		    tidName   = getParam(pParams,"tiddler",""),
		    partName  = getParam(pParams,"container","t"),
		    applyOnEnter = getParam(pParams,"applyOnEnter");

		wrapper.options = {
			tiddler:	tidName ? store.fetchTiddler(tidName) : tiddler,
			part:		partName,
			viewType:	getParam(pParams,"viewType","wikified"),
			withButton:	params.contains("button") || window.isOpenedOnTouchScreen(), // default for touch screens
			defaultShowText:  getParam(pParams,"showIfNoValue"),
			preprocess:	getParam(pParams,"preprocess",""),
			size:		getParam(pParams,"size",""),
			fill:		fill,
			transparentEmpty: cell || params.contains("transparentEmpty"),
			saveOnApply:	params.contains("saveOnApply"),
			applyOnEnter:	(partName[0] == ":") || (partName[0] == "!") ||
					(applyOnEnter === undefined ?
					params.contains("applyOnEnter") : applyOnEnter),
			keepOnBlur:	params.contains("keepOnBlur"),
			noNotify_partial: cell || params.contains("noNotify"),
			noedit:		params.contains("noedit")
		};

		this.turnViewMode(wrapper);
	},
	getData: function(tiddler, part)
	{
		var partName = part.substr(1);
		switch(part[0]) {
			case "t":
				return tiddler.text || "";
			case "!":
				return tiddler.title;
			case "#":
				return (tiddler.getSection ? tiddler.getSection(partName)
					: store.getTiddlerText(tiddler.title+"##"+partName))
						|| "";
			case ":":
				return (tiddler.getSlice ? tiddler.getSlice(partName)
					: store.getTiddlerText(tiddler.title+"::"+partName))
						|| "";
			case "@":
				return store.getValue(tiddler,partName) || "";
		}
	},
	setData: function(tiddler, part, value, noNotify_partial)
	{
		var partName = part.substr(1);
		//# deal with the case when tiddler doesn't exist yet

		switch(part[0]) {
			case "t":
				store.saveTiddler(tiddler,null,value);
				break;
			case "!":
				store.saveTiddler(tiddler,value); // requires my fix to .sT
				break;
			case "#":
				tiddler.setSection(partName,value);
				store.setDirty(true);
				// refresh display of the corresponding tiddler:
				if(!noNotify_partial) store.notify(tiddler.title,true);
				break;
			case ":":
				tiddler.setSlice(partName,value);
				store.setDirty(true);
				if(!noNotify_partial) store.notify(tiddler.title,true);
				break;
			case "@":
				store.setValue(tiddler,partName,value);
				break;
		}
		//# change the "modifier/d" fields?
	},
	turnViewMode: function(place)
	{
		if(place.options.part[0] != "c" && !place.options.tiddler)
			return;
		//# may be add warning; also, do same for unsupported container types

		var value  = this.getData(place.options.tiddler, place.options.part) ||
				place.options.defaultShowText || "",
		    fill   = place.options.fill,
		    noedit = place.options.noedit,
		    classEmpty = place.options.transparentEmpty ? "transparentEmptyViewer" : "emptyViewer";
 		var preprocessScript = place.options.preprocess;
 		if(preprocessScript) {
			var fullScript =
				"place.options.preprocessFunc = function(text){"+
				"var q = \"'\"\n"+
				preprocessScript+
				"\nreturn text;};";
			eval(fullScript);
			value = place.options.preprocessFunc(value);
		}
 		if(fill)
			place.style.padding = (place.options.initialPadding !== undefined)
 				? place.options.initialPadding
				: place.style.padding;
		if(fill && !noedit && !value)
			place.classList.add(classEmpty);
		var html = '<span'+
		(!fill && !value ? ' class="'+classEmpty+'"' : '')+
		'></span>';
		place.innerHTML = html;
		place.onclick = function(e)
		{	
			// prevent editor-containing popup closing etc:
			if(e.stopPropagation) e.stopPropagation();
			e.cancelBubble = true;
			// prevent editing when clicking on links,buttons,images; if noedit:
			if(noedit || e.target.tagName in {A:1,IMG:1}) return true;

			place.classList.remove(classEmpty);
			config.macros.insertEditable.turnEditMode(this);
			return false;
		}
		var container = fill ? place : place.firstChild;
		switch(place.options.viewType) {
			case "plain":
				createTiddlyText(container,value);
				break;
			case "html":
				container.innerHTML = value;
				break;
			case "wikified":
			default:
				wikify(value,container,null,place.options.tiddler);
		}
	},
	turnEditMode: function(place) {
		var applyChanges = function()
		    {
			config.macros.insertEditable.setData(place.options.tiddler, place.options.part, editarea.value, place.options.noNotify_partial);
			config.macros.insertEditable.turnViewMode(place);
			if(place.options.saveOnApply)
				autoSaveChanges();
		    },
		    applyingChanges = false,
		    value = this.getData(place.options.tiddler, place.options.part),
		    rowslimit = 1,
		    size = place.options.size,
		    html = (size == "minimal" || size == "min") ?
			   '<input type="text" class="mini-inline-editor"></input>'
			 :('<textarea class="inline-editor"' +
			   ' style="height: '+rowslimit+'.1em;'+
			   (size == "max" ? 'width:100%;' : 
			    (place.options.fill ? 'width:98%;' : ''))+'"' +
			   '></textarea>'),
		    button;
		place.innerHTML = html;
		place.onclick = null;
		if(place.options.withButton) {
			button = createTiddlyButton(place,"save",null,applyChanges);
			// fires before onblur, allowing to save:
			button.onmousedown = function(){applyingChanges = true;};
		}

		if(place.options.fill) {
			place.options.initialPadding = place.style.padding;
			place.style.padding = "0";
		}
		var editarea = place.firstChild;
		editarea.value = value;
		editarea.onkeydown = function(ev)
		{
			var e = ev || window.event;
			if(e.which == $esc) {
				// for now, don't check if was changed
				config.macros.insertEditable.turnViewMode(place);
				jQuery('html').off("click",switchToViewOnClick);
			}
			if((e.which == $enter) && (e.ctrlKey || place.options.applyOnEnter))
			{
				applyChanges();
				e.cancelBubble = true;
				if(e.stopPropagation) e.stopPropagation();
				return false;
			}
		};
		// on click outside the edit area, switch to the view mode (useful for touchscreens)
		var inside = false,
		    switchToViewOnClick = function(e) {
			if(applyingChanges || inside || place.options.keepOnBlur) {
				inside = false;
				return;
			}
			config.macros.insertEditable.turnViewMode(place);
			jQuery('html').off("click",switchToViewOnClick);
		};
		jQuery('html').click(switchToViewOnClick);
//# avoid creating of a "global" handler? (to remove extra code from .onkeydown handler)
		jQuery(editarea).click(function() {
			inside = true;
		});
		//# add handlers for touch? (ph: no ctrl+enter)
		editarea.focus();
		if(!window.isOpenedOnTouchScreen()) // with FF for Android, better not to
			editarea.select();

		editarea.onkeypress = adjustHeightToContent;
		adjustHeightToContent.apply(editarea);
	}
};

// define styles
var bgColor = store.getTiddlerText("ColorPalette::Background");
setStylesheet(
	'.emptyViewer { color: #dddddd; background-color: #dddddd; }\n'+
	'.emptyViewer:before, .transparentEmptyViewer:before { content: "__" }\n'+
	'.mini-inline-editor { width: 1.5em; }\n'+
	'@-moz-document url-prefix() {.inline-editor { font-family: Consolas !important; font-size: 100% !important; }}\n'+
	'.transparentEmptyViewer { color: '+bgColor+'; background-color: '+bgColor+'; }',
"StyleSheetInsertEditable");
//# think about better styling (no "__" when copying)

// =========== Extras ===========
// hijack edit macro to make tiddler titles editable inline
(function(){
/* config.macros.chkEditableTitles = (config.macros.chkEditableTitles === undefined) ?
	!('ontouchstart' in window) : config.macros.chkEditableTitles;
	// default for non-touch screens for now

 if(!config.macros.chkEditableTitles)
	return;

 config.macros.view.iep_orig_handler = config.macros.view.handler;
 config.macros.view.handler = function(place,macroName,params,wikifier,paramString,tiddler) {

	if(readOnly || !(tiddler instanceof Tiddler) || tiddler.isReadOnly() ||
	   params[0] != "title" || !place.classList.contains("title"))
	// the last is a hack for avoiding insertEditable in the <<list>> macro
		return this.iep_orig_handler.apply(this,arguments);

	wikify('<<insertEditable container:"!" size:max viewType:plain>>',place,null,tiddler);
	//story.setDirty(tiddler.title,true); ?
 };
*/
})()
//}}}
/***
!!!Sets API and macros
***/
//{{{
// overwrite filterTiddlers to enable different kinds of hijacking
//# to be incorporated into the core
TiddlyWiki.prototype.filterTiddlers = function(filter,results)
{
	var re = /([^\s\[\]]+)|(?:\[([ \w\.\-]+)\[([^\]]+)\]\])|(?:\[\[([^\]]+)\]\])/mg;

	results = results || [];
	var match, handler;
	if(filter)
		while(match = re.exec(filter)) {
			handler = ( match[1] || match[4] ) ? 'tiddler' :
					config.filters[match[2]] ? match[2] : 'field';
			results = config.filters[handler].call(this,results,match);
		}

	return results;
};

// extendable set of elementary sets definitions
// "?" is for the belongCheck, "+" - for addAction getter, "-" - for dropAction getter
config.elementarySets =
{
	tiddler: {
		"?": function(title,tiddler) {
			return tiddler.title == title;
		},
		"+": function(title) {
			return ""; // no action for now
		},
		"-": function(title) {
			return ""; // no action for now
		}
	},
	tag: {
		"?": function(tagName,tiddler) {
			return tiddler.tags.contains(tagName);
		},
		"+": function(tagName) {
			//# check the absence of ",,","::",";;"
			return "+tag.."+tagName;
		},
		"-": function(tagName) {
			//# check the absence of ",,","::",";;"
			return "-tag.."+tagName;
		}
	}
}

config.macros.defineSet =
{
	sets: {},

	add: function (setName, setDefinition, setTags)
	{
		if(this.sets[setName])
			displayMessage("the set \""+setName+"\" will be redifined");
		//# this behaviour may be changed if necessary

		this.sets[setName] = { definition: setDefinition, tags: setTags };
	},

	// this returns a function(tiddler) which checks if the tiddler is in the set;
	//  if there's some "do" parts, it ignores them if forceFunc and
	//  returns an array of tiddlers instead of a function otherwise
	//
	getIsInSet: function (setDefinition,forceFunc)
	{
		var returnFunc = true, definedPart, resultRecursive,
		    parts = setDefinition.parts, type, i,
		    singleTokenRE = /(?:(\w*)\[((?:[^\]]|(?:\]\]))*)\])/,
		    tokenMatch, tokenType, tokenValue;
//# precalc setDefinition.parts[i].definedPart in .parseSetDefinition? (although func/not func stuff ..)

		// for each part..
		for(i = 0; i < parts.length; i++)
		{
			definedPart = null;

			// process tokens first
			if(parts[i].token)
			{
				tokenMatch = singleTokenRE.exec(parts[i].token);
//# single tokens first; .oO when multiple are needed, implement parsing
				if(!tokenMatch) continue;
				tokenType  = tokenMatch[1];
				tokenValue = tokenMatch[2];
				definedPart = {
					type:  tokenType,
					value: tokenValue
				};

				// process elementaries with corresponding handlers
				if(config.elementarySets[tokenType]) {
					definedPart.checkTiddler = function(tiddler) {
						return config.elementarySets[this.type]["?"]
							(this.value, tiddler);
					};
					parts[i].definedPart = definedPart;
					continue;
				}

				//# process non-elementary tokens,
				//  for "set" and "setsTagged", launch recursively,
				//  if returns an array of tids instead of a function
				//  and !forceFunc, set returnFunc = false
			// in contrast to inline sets, named sets can cause infinite loops..
			}

			// next, process "sets" (defined for brackets)
			if(parts[i].set)
			{
				resultRecursive = this.getIsInSet(parts[i].set,forceFunc);
				parts[i].definedPart = resultRecursive instanceof Function ?
					{ checkTiddler: resultRecursive } : resultRecursive;
				// in the latter case resultRecursive is an array with tids
				continue;
			}

			//# for each "do" if !forceFunc, /skip/ it;
			//  set returnFunc = false otherwise
		}

		if(returnFunc) {
		// combine checks from parts via setDefinition.combine (example: "+4*1-3+5")
			return function(tiddler) {
				var re = /([\+\-\*])(\d+)/g, m, isGood = false, val;
//console.log(".combine: "+setDefinition.combine+", parts:");console.log(parts);
//console.log("find definedParts in parts[i].definedPart");
				while(m = re.exec(setDefinition.combine)) {
					i = parseInt(m[2]);
					val = parts[i].definedPart.checkTiddler(tiddler);
//console.log(i+": val is "+val+", isGood is "+isGood);
					switch(m[1])
					{
						case "+": isGood = isGood ||  val; break;
						case "*": isGood = isGood &&  val; break;
						case "-": isGood = isGood && !val; break;
					}
				}
				return isGood;
			};
		} //else
			//# build and return an array of tiddlers
	},
	getIsInNamedSet: function (setName,forceFunc)
	{
		var set = this.sets[setName];
		if(!set) return null;
		return this.getIsInSet(set.definition,forceFunc);
	},
	getSetTiddlers: function (setDefinition,results)
	{
		results = results || [];

		var check = this.getIsInSet(setDefinition);
		if(!check)
			return results;

		if(check instanceof Function)
			store.forEachTiddler(function(tName,tiddler) {
				if(check(tiddler)) results.pushUnique(tiddler);
			});
		else
			// check is not a function, but an array of tiddlers
			for(var i = 0; i < check.length; i++)
				results.pushUnique(check[i]);

		return results;
	},
	getNamedSetTiddlers: function (setName,results)
	{
		var set = this.sets[setName];
		if(!set) return results;
		return this.getSetTiddlers(set.definition,results);
	},
	calcActionStepsInDefinition: function (setDefinition)
	{
		var parts = setDefinition.parts, i,
		    singleTokenRE = /(?:(\w*)\[((?:[^\]]|(?:\]\]))*)\])/,
		    tokenMatch, tokenType, tokenValue;

		// for each part
		for(i = 0; i < parts.length; i++)
		{
			// create descriptions of 2 actions sequences:
			// one adds a tiddler to the set, another removes the tiddler from it

			// process tokens first
			if(parts[i].token)
			{
				tokenMatch = singleTokenRE.exec(parts[i].token);
//# single tokens first; .oO when multiple are needed, implement parsing
				if(!tokenMatch) continue;
				tokenType  = tokenMatch[1];
				tokenValue = tokenMatch[2];
				
				// process elementaries with corresponding handlers
				if(config.elementarySets[tokenType]) {
//# add "don't recalc if already calced"
					parts[i].addAction = config.elementarySets[tokenType]
						["+"](tokenValue);
					parts[i].dropAction= config.elementarySets[tokenType]
						["-"](tokenValue);
					continue;
				}

				//# process non-elementary tokens,
				//# ...
			}

			// next, process "sets" (defined for brackets)
			if(parts[i].set)
			{
//# add "don't recalc if already calced"
				parts[i].addAction = this.getAddToSetAction(parts[i].set);
				parts[i].dropAction= this.getDropFromSetAction(parts[i].set);
				continue;
			}

			//# do anything about "do"s?
		}
		return;
	},
	getAddToSetAction: function (setDefinition)
	{
		// combine the already calced actions into one
		var re = /([\+\-\*])(\d+)/g, m, i, partActions, actions = "";
		while(m = re.exec(setDefinition.combine))
		{
			i = parseInt(m[2]);
			partActions = setDefinition.parts[i];
			switch(m[1])
			{
				case "+":
					if(actions || !partActions.addAction) continue;
					// unless that's the ~first action~, do nothing
					// (we suppose that if one describes a set like
					// "this OR that", than add action adds to "this"
					actions = partActions.addAction;
				break;
				case "*":
					if(!partActions.addAction) continue;
					if(actions) actions += ",,";
					actions += partActions.addAction;
				break;
				case "-":
					if(!partActions.dropAction) continue;
					if(actions) actions += ",,";
					actions += partActions.dropAction;
				break;
			}
		}
		return actions;
	},
	getAddToNamedSetAction: function (setName)
	{
		var set = this.sets[setName];
		if(!set) return null;
		return this.getAddToSetAction(set.definition);
	},
	getDropFromSetAction: function (setDefinition)
	{
		// combine the already calced actions into one
		var re = /([\+\-\*])(\d+)/g, m, i, partActions, actions = "";
		while(m = re.exec(setDefinition.combine))
		{
			i = parseInt(m[2]);
			partActions = setDefinition.parts[i];
			switch(m[1])
			{
				// case "*": do nothing (if a tiddler is droped from "a",
				// it is dropped from "a OR b" 
				// case "-": same (consider "a" and "a AND NOT b")
				case "+":
					if(!partActions.dropAction) continue;
					if(actions) actions += ",,";
					actions += partActions.dropAction;
				break;
			}
		}
		return actions;
	},
	getDropFromNamedSetAction: function (setName)
	{
		var set = this.sets[setName];
		if(!set) return null;
		return this.getDropFromSetAction(set.definition);
	},
	getSortFieldForNamedSet: function (setName)
	{
		return this.sets[setName] ? this.sets[setName].definition.sortField : null;
	},

	parseSetDefinition: function (text)
	{
		var set = { parts: [], combine: null, sortField: null };

		// remember tokens (..[..]..[..]...), substitute them with their numbers
		var tokenRegExp = /(?:\w*\[(?:[^\]]|(?:\]\]))*\])+/, // "]]" = escaped "]"
		    tokenMatch, origTokenText, tokenText,
		    sortFieldRegExp = /sortField\[(.*)\]/, sortFieldMatch;

		while(tokenMatch = tokenRegExp.exec(text))
		{
			origTokenText = tokenMatch[0];
			tokenText = origTokenText[0]=="[" ?
				("tiddler"+origTokenText) : origTokenText;
			sortFieldMatch = sortFieldRegExp.exec(tokenText);
			if(sortFieldMatch) {
				text = text.replace(origTokenText,"");
				set.sortField = sortFieldMatch[1];
			} else {
				text = text.replace(origTokenText,set.parts.length);
				set.parts.push({ token: tokenText });
			}
		}

		// find first-level brackets, add definitions, substitute in text
		var openPosition = text.indexOf("("), i, level = 0, closePosition, setText;
		while(openPosition > -1)
		{
			// find closing bracket position
			level = 1; i = openPosition+1;
			while(level > 0) {
				if(text[i] == "(")
					level++;
				if(text[i] == ")")
					level--;
				i++;
			}
			closePosition = i;

			// add definition, parse it recursively, subsititute
			setText = text.substring(openPosition+1, closePosition-1)
					// substitute numbers in setText back with tokens:
					.replace(/\d+/g,function(match){
						return set.parts[parseInt(match)].token
					});

			set.parts.push({ set: this.parseSetDefinition(setText) });
			text = text.substring(0,openPosition) + (set.parts.length-1)
				+ text.substring(closePosition);

			// find next open
			openPosition = text.indexOf("(");
		}

		// find <num> DO <num>, add them to parts, substitute
		var doRegExp = /(\d+)\s+DO\s+(\d+)/m, doMatch, target, action;
		while(doMatch = doRegExp.exec(text))
		{
			action = parseInt(doMatch[2]); target = parseInt(doMatch[1]);
			action = set.parts[action].token;
			target = set.parts[target].token || target;

			// add the definition part, substitute the DO expression in the text
			set.parts.push({ do: action , to: target });
			text = text.replace(doMatch[0],set.parts.length-1);
		}

		set.combine = "+"+text.replace(/\s+AND\s+/g,"*")
				 .replace(/\s+NOT\s+/g,"-")
				.replace(/\s+OR\s+/g,"+")
				.replace(/^ +/,"").replace(/ +$/,"").replace(/ +/g,"+");

		this.calcActionStepsInDefinition(set);

		return set;
	},
	handler: function(place,macroName,params,wikifier,paramString,tiddler)
	{
		// parse params
		var parsedParams = paramString.parseParams("name",null,true,false,true),
		    setName = getParam(parsedParams,"name"),
		    setText = getParam(parsedParams,"tids"),
		    setSortField = getParam(parsedParams,"sortField",""),
		    setTagsLine = getParam(parsedParams,"tags",""),
		    setTags = setTagsLine.readBracketedList();
		if(!setName || !setText)
			return;
		if(setSortField) setText += " sortField["+ setSortField +"]";
		var setDefinition = this.parseSetDefinition(setText);

		// show macro text
		var w = wikifier, macroTWcode = w.source.substring(w.matchStart,w.nextMatch),
		    hide = getFlag(parsedParams, "hide", false) || params.contains('hide');
		if (!hide)
			createTiddlyText(createTiddlyElement(place,"code"),macroTWcode);

		// define the set
		this.add(setName, setDefinition, setTags);
	}
}

// hijack filterTiddlers so that if there's "set:..." part with an optional terminator
//  ":set", then that part is parsed as a definition of a set
TiddlyWiki.prototype.ds_orig_filterTiddlers = TiddlyWiki.prototype.filterTiddlers;
TiddlyWiki.prototype.filterTiddlers = function(filter,results)
{
	var beginSetMark = "set:", endSetMark = " modify:";

	// set definition starts with "set:", if no such thing, use ordinary filtering
	if(filter.indexOf(beginSetMark) != 0)
		return this.ds_orig_filterTiddlers(filter,results);

	// add tiddlers from the set
	results = results || [];
	var modifyPos = filter.indexOf(endSetMark), filterAsWell = (modifyPos != "-1"),
	    setDef = filterAsWell ? filter.substring(4,modifyPos) : filter.substr(4),
	    tids = config.macros.defineSet.getSetTiddlers(
		config.macros.defineSet.parseSetDefinition(setDef),results);

	// if necessary, apply the additional filters, return
	if(!filterAsWell)
		return results;
	filter = filter.substr(modifyPos + endSetMark.length);
	return this.ds_orig_filterTiddlers(filter,results);
};
config.filters.set = function(results,match)
{
	var setName = match[3];
	return config.macros.defineSet.getNamedSetTiddlers(setName,results);
};

//-------------------------------------------------------------------------------
// wikify SetsList on startup
//
var readSetsList = function()
{
	if(!window.store)
		return setTimeout(readSetsList,100);

	var setsList = store.fetchTiddler("SetsList"),
	    setsListText = setsList ? setsList.text : "";

	if(setsListText)
		wikify(setsListText,document.createElement("div"),null,setsList);
};
setTimeout(readSetsList,100);
//# test why this first timeout is needed (copied from CTP, STP)
//}}}
SetManagerPlugin + SavingWithRenamingFix + SetFieldPlugin
<<include "node: ForEachTiddlerPluginRepo" filters:"[[SetManagerPlugin installer and updater]] [[SetManagerPlugin]] [[SavingWithRenamingFix]] [[SetFieldPlugin]]" import:4 noRefresh>>
<<include "node: ForEachTiddlerPluginRepo" filters:"[[SetManagerPluginInfo]]" noRefresh>>
/***
|Requires|ForEachTiddlerPlugin SetManagerPlugin|
|Version|0.4|
этот плагин предназначен для дополнительных elementary sets, switch actions и др. необязательных расширений SetManagerPlugin
* ForEachTiddlerPlugin нужен, пока {{{.getSlice}}} и {{{.getSection}}} не определены в ядре

to do<<tiddler [[to do list template##main]] with:"set extras todo" with:orderSEtodo noedit>>
***/
//{{{
(function(){
if(!config.macros.itemMenu)
	return;

config.macros.itemMenu.actionStepsWithoutArguments["markChanged"] = function(tiddler)
{ // for coordinator
	tiddler.modifier = config.options.txtUserName;
	tiddler.modified = new Date();
};

config.elementarySets.hasPart =
{
	"?": function(param,tiddler)
	{
		var regExpText, re, type;

		switch(param.substr(0,2)) {
			case config.textPrimitives.sectionSeparator: // ##
				return !!(tiddler.getSection(param.substr(2)));
			case config.textPrimitives.sliceSeparator:   // ::
				return !!(tiddler.getSlice(param.substr(2)));
			case "@@":
				return !!(tiddler.fields[param.substr(2).toLowerCase()]);
			case "r@": // regExp (for tiddler.text) mode
			case "R@":
			case "t@": // title mode
			case "T@":
				regExpText = store.getTiddlerText(param.substr(2));
				type = param.substr(0,1);
				if(!regExpText) {
					if(type == "r" || type == "t")
						return true; // "forgiving mode", nothing is filtered out in this case
					else
						throw("RegExp for checkTiddler is not found in " + param.substr(2));
//# test this case out
				}
				// no break here
			case "r[":
			case "R[":
			case "t[":
			case "T[":
				if(!regExpText) {
					regExpText = param.substr(2);
					type = param.substr(0,1);
				}
				if(type == "r" || type == "t") {
					try {
						re = new RegExp(regExpText);
					} catch(e) {
						return false; // "forgiving mode"
					}
				} else
					re = new RegExp(regExpText);

				if(type == "r" || type == "R")
					return !!(tiddler.text.match(re));
				else
					return !!(tiddler.title.match(re));
		}
		return false;
	},
	"+": function(param) {
		return ""; // for now, no idea what to do here; this won't matter frequently
	},
	"-": function(param) {
		return ""; // for now, no idea what to do here; this won't matter frequently
	}
};

config.macros.itemMenu.actionStepsWithoutArguments["-tags"] = function(tiddler) {
	tiddler.tags = [];
};
config.elementarySets.taggedOnly = 
config.elementarySets.oTag = {
	"?": function(tag,tiddler) {
		return (tiddler.tags.length == 1) && (!tag || tag == tiddler.tags[0]);
	},
	"+": function(tag) {
		return "-tags,,+tag.."+tag;
	},
	"-": function(tag) { return "-tag.."+tag; }
};

config.elementarySets.unclassified = {
//# implemented "as was"; may be scanning the whole tree instead
	"?": function(metaTag,tiddler) {

		var tags = [], tag, i;
		for(i = 0; i < tiddler.tags.length; i++) {

			tag = store.fetchTiddler(tiddler.tags[i]);
			if(tag && tag.tags.contains(metaTag))
				return false;
		}
		return true;
	},
//# implement
	"+": function(metaTag) {
		return ""; /*<addToSetAction> - show "available" tags, ask for a tag to add
				(may be new; in that case create a tag-tid with metaTag) */
	},
	"-": function(metaTag) {
		return "" /*<dropFromSetAction> - remove tags tagged with metaTag*/;
	}
};

//config.macros.itemMenu.actionStepsWithArguments["<name>"] = function(tiddler,arg) {
//};
//config.macros.itemMenu.actionStepsWithoutArguments["<name>"] = function(tiddler) {
//};
//config.elementarySets["<name>"] = {
//	"?": function(param,tiddler) { return <isInSet> },
//	"+": function(param) { return <addToSetAction> },
//	"-": function(param) { return <dropFromSetAction> }
//}
})()
//}}}
SetsExtrasPlugin
<<include "node: ForEachTiddlerPluginRepo" filters:"[[SetsExtrasPlugin installer and updater]] [[SetsExtrasPlugin]] [[SetFieldPlugin]]" import:4 noRefresh>>
/***
|''Name''|SharedTiddlersPlugin|
|''Description''|Introduces a possibility to use tiddlers from other ~TiddlyWikis (with or without importing them)|
|''Documentation''|http://yakovl.bplaced.net/TW/STP/STP.html#SharedTiddlersPluginInfo|
|''Type''|plugin|
|''Version''|2.4.0""|
|''~CoreVersion''|2.2.6|
|''Requires''|UpToDateFiltersPlugin|
|''Requirements note''|[[UpToDateFiltersPlugin|http://yakovl.bplaced.net/TW/ExtraFilters.html#UpToDateFiltersPlugin]] is necessary only for TW below v2.6.2|
|''Source''|http://yakovl.bplaced.net/TW/STP/STP.html#SharedTiddlersPlugin|
|''Author''|Yakov Litvin|
|''Forked from''|[[IncludePlugin|http://tiddlywiki.abego-software.de/#IncludePlugin]], by Udo Borkowski|
|''Contact''|see [[docs|SharedTiddlersPluginInfo]]|
|''Copyright''|Yakov Litvin, 2013|
|''Licence''|[[BSD-like open source license|http://yakovl.bplaced.net/TW/STP/STP.html#%5B%5BYakov%20Litvin%20Public%20Licence%5D%5D]] |
|>| In this tiddler, the code is minified and hidden; the full code can be found [[here|http://yakovl.bplaced.net/TW/STP/STP.html#SharedTiddlersPluginCode]]. |
''Config:''
***/
//{{{
config.options.STP_hijackPrettyLink = true;
config.options.STP_hijackImageFormatter = true;
//}}}
// /%
config.filters.all = function(results,match) {
	if(match[3] == "with included") { // brings included tiddlers as well
		var m,matched = this.reverseLookup();
		for(m = 0; m < matched.length; m++)
			results.pushUnique(matched[m]);
	} else
		this.forEachTiddler(function(tName,tiddler){
			results.pushUnique(tiddler);
		});
	return results;
};
config.filters.includedFrom = function(results,match) {

	var url = twWeb.getStoreUrlById(match[3]);
	if(!url)
		return [];

	for(var i = 0; i < results.length; i++)
		if(results[i].getIncludeURL() != url)
			results.splice(i--,1);
	return results;
};
config.filters.external = function(results,match) {

	for(var i = 0; i < results.length; i++)
		if(!results[i].getIncludeURL())
			results.splice(i--,1);
	return results;
};
config.filters.internal = function(results,match) {

	for(var i = 0; i < results.length; i++)
		if(results[i].getIncludeURL())
			results.splice(i--,1);
	return results;
};

(function(){
//==============================================================================
// install only once stuff

// Ensure the global abego namespace is set up.
if (!window.abego) window.abego = {};

// Install only once (don't install if abego.IncludePlugin is installed as well)
if (abego.TiddlyWikiIncluder)
	return alert("Warning: abego.TiddlyWikiIncluder already exists, so probably two copies of SharedTiddlersPlugin and/or IncludePlugin are installed and activated. It is highly recommended to deactivate all but one copy. You can find those by searching 'abego.TiddlyWikiIncluder'.");

// abego.TiddlyWikiIncluder is defined near the end of the code

// Define the API namespace:
window.sharedTiddlersAPI = {};

//==============================================================================
// Helpers

// This is used instead of displayMessage, because the latter sometimes doesn't show the messages
var displayAndLogMessage = function(text,linkText) {
	displayMessage(text,linkText);
	console.log(text);
};

var invokeLater = function(func, delay, priority) {
	return setTimeout(func,delay);
};

//------------------------------------------------------------------------------
// url helpers

var isRelativeURL = function(url) {
// as Unix filesystem root is "/", urls starting with it are not considered as relative

	return (url.search(/^(?:((http(s)?)|(file)):)|(.\:\\)|(\\\\)|(\/)/) != 0);
};

var getPathFromURL = function(url) {

	return (url.lastIndexOf("/") > -1) ?
		url.substr(0, url.lastIndexOf("/") + 1) : "";
};

var resolveUrlFrom = function(urlToResolve, sourceUrl) {

	return (isRelativeURL(urlToResolve) && sourceUrl) ?
		getPathFromURL(sourceUrl) + urlToResolve : urlToResolve;
};

// limitedly turns URI (URL) reference into an absolute URI (URL) and windows paths into URL
var stp_resolveURL = function(url) {

	if (url.search(/^((http(s)?)|(file)):/) != 0) {
	// no protocol prefix..

		if (isRelativeURL(url))

			url = resolveUrlFrom(url, document.location.toString());
		else
		// "url" is an "absolute" path to a local file. Prefix it with file://

			url = "file://" + url;

		// replace every \ by a /, to cover Windows style pathes
		url = url.replace(/\\/mg,"/");
	}
	return url;
};

//------------------------------------------------------------------------------
// file/tw loading functions

// an evolution of the deprecated loadRemoteFile function with TW 2.7.0 codes
var stp_loadRemoteFile = function(url,callback,params) {
	if(version.major < 2 || version.major == 2 && version.minor < 7) {
		var httpSuccess = function(xhr) {
			try {
				return (!xhr.status && location.protocol === "file:") ||
					(xhr.status >= 200 && xhr.status < 300) ||
					xhr.status === 304 || xhr.status === 1223;
			} catch(e) {}
			return false;
		};
		var options = {
			type:"GET",
			url:url,
			processData:false,
			data:undefined, // cut off?
			cache:false,
			beforeSend: function(xhr) {;},
			complete: function(xhr,textStatus) {
				if(httpSuccess(xhr))
					callback(true,params,xhr.responseText,url,xhr);
				else
					callback(false,params,null,url,xhr);
			}
		};
		try {
			if(window.Components && window.netscape && window.netscape.security && document.location.protocol.indexOf("http") == -1)
				window.netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
		} catch (ex) {}
		return jQuery.ajax(options);
	} else
		return httpReq("GET",url,callback,params);
};

// Asynchronously load the given (local or remote) file.
// 
// @param	url
// value:	either an URL or a local file path to a file
//
//	Examples:
//	* http://www.abego-software.de/index.html
//	* file:///C:/abegoWebSite-Copy/index.html
//	* C:\abegoWebSite-Copy\index.html    (for Windows machines)
//
//	Notice: backslashes in JavaScript string constants must be escaped, 
//	i.e. the last example must be written as: "C:\\abegoWebSite-Copy\\index.html"
//	when "hardcoded" in JavaScript source code.
// 
// @param	callback
// value:	function(content,url,params,errorMessage) 
//		called at the end of the operation. 
//		On success content holds the content of the loaded file. 
//		On error content is undefined and errorMessage holds an error message. 
//		params is the params passed into stp_LoadFile.
//
// @param	params
//		passed through to the callback function
// 
var stp_LoadFile = function(url,callback,params) {

	var onLoad = function(status,params,responseText,url,xhr) {
		return status 
				? callback(responseText, url, params)
				: callback(undefined, url, params, "Error loading %0".format([url]));
	};

	// Make sure the URL is a real URL, with protocol prefix etc.
	url = stp_resolveURL(url);
	
	stp_loadRemoteFile(url,onLoad,params);
};

// Asynchronously load the given (local or remote) TiddlyWiki store.
// 
// @param	url
// value:	either an URL or a local file path to a TiddlyWiki file (absolute or relative)
//
//	Examples:
//	* http://www.abego-software.de/index.html
//	* file:///C:/abegoWebSite-Copy/index.html
//	* include/beta.html
//	* C:\abegoWebSite-Copy\index.html    (for Windows machines)
//
//	Notice: backslashes in JavaScript string constants must be escaped, 
//	i.e. the last example must be written as: "C:\\abegoWebSite-Copy\\index.html"
//	when "hardcoded" in JavaScript source code.
// 
// @param	callbackWithStore
// value:	function(theStore,url,params,errorMessage) 
//			called at the end of the operation. 
//			On success theStore holds the loaded store (a TiddlyWiki object). 
//			On error theStore is undefined and errorMessage holds an error message. 
//			params is the params passed into stp_loadTiddlyWikiStore
//
// @param	params
//		passed through to the callbackWithStore
//
// @param	progress	[optional]
// value:	function(message, sender, state, url, params)
//		called in various situations during the operation,
//		typically used to show "the progress" of the operation.
//		sender: the constant "stp_loadTiddlyWikiStore"
//		state: one of these: "Started", "Processing", "Done", "Failed"
//		"Processing" means the data has been received and in now processed.
// 
var stp_loadTiddlyWikiStore = function(url,callbackWithStore,params,progress) {
	
	var sendProgress = function(message, state) {
		if (progress)
			progress(message,"stp_loadTiddlyWikiStore",state,url,params);
	};
	
	var sendError = function(message) {
		sendProgress("Error when loading %0".format([url]),"Failed");
		callbackWithStore(undefined, url, params, message);
		return message;
	};

	var sendStore = function(store) {
		sendProgress("Loaded %0".format([url]),"Done");
		callbackWithStore(store, url, params);
		return null;
	};
	
	
	var callback = function(content,theURL,params,errorMessage) {
		if (content === undefined) {
			sendError(errorMessage);
			return;
		};
		
		sendProgress("Processing %0".format([url]),"Processing");
		var invalidFileErrorMsg = "The file '%0' does not appear to be a valid TiddlyWiki file";
		try {
			// Load the content from the "content" string into a TiddlyWiki() object
			var importStore = new TiddlyWiki();
			var errorText = importStore.importTiddlyWiki(content)? null :
				"Problem with importing TiddlyWiki, probable reason is: "+
				invalidFileErrorMsg.format([url]);
			if(errorText)
				sendError(errorText);
			else
				sendStore(importStore);
		} catch (ex) {
			sendError(exceptionText(ex));
		};
	};
	
	sendProgress("Start loading %0".format([url]),"Started");
	stp_LoadFile(url,callback,params);
};

//------------------------------------------------------------------------------
// plugin installation helpers

var getArbitraryPluginInfo = function(tiddler) {
// getPluginInfo can't be used (for included tiddlers) because of the ugly slice handling of the core
//  (it uses {store} where it could handle the tiddler directly)
	var pInfo = {};

	var slices = {};
	var requiredInfo = ["Name","Description","Version","Requires","CoreVersion","Date","Source", "Author","License","Browsers"];
	store.slicesRE.lastIndex = 0;
	var match = store.slicesRE.exec(tiddler.text);
	while(match) {
		if(match[2])
			slices[match[2]] = match[3];
		else
			slices[match[5]] = match[6];
		match = store.slicesRE.exec(tiddler.text);
	}
	for(var i = 0; i < requiredInfo.length; i++)
		if(slices[requiredInfo[i]])
			pInfo[requiredInfo[i]] = slices[requiredInfo[i]];
	pInfo.tiddler = tiddler;
	pInfo.title = tiddler.title;
	pInfo.log = [];

	return pInfo;
}

var checkPluginInstalled = function(pluginName) {
	for(var i = 0; i < installedPlugins.length; i++)
		if(installedPlugins[i].title == pluginName || installedPlugins[i].Name == pluginName)
			return true;
	return false;
}

var installPlugin = function(tiddler,force) {

	var pluginName = getArbitraryPluginInfo(tiddler).Name || tiddler.title;
	// check if such a plugin was installed previously, return if so
	if(!force) // two layers to improve the speed in the "force == true" case
		if(checkPluginInstalled(pluginName))
			return;

	// get the plugin info
	var pluginInfo = getArbitraryPluginInfo(tiddler);
	if(tiddler.getIncludeURL())
		pluginInfo.log.push("included from "+tiddler.getIncludeURL());

	// install the plugin
	pluginInfo.executed = true;
	var startTime = new Date();

	try {
		window.eval(tiddler.text);
	} catch(ex) {
		pluginInfo.log.push(config.messages.pluginError.format([exceptionText(ex)]));
		pluginInfo.error = true;
		console.log("error evaluating " + tiddler.title, ex);
		story.displayTiddler(null,"PluginManager");
		displayMessage(config.messages.customConfigError);
	}
	pluginInfo.startupTime = String((new Date()) - startTime) + "ms";

	// register the plugin
	installedPlugins.push(pluginInfo);
}


//==============================================================================
// Shared Tiddlers Plugin

// Constants

var WAITING = "waiting";
var LOADING = "loading";

var ANI_DURATION_HIDE_STATE = 1000;

var REFRESH_PRIORITY = -200;
var ANIMATION_PRIORITY = -100;
var UPDATE_STATE_PRIORITY = -300;

// --------------------------------------------------
// Variables

var useInclude;         // this variable can be used to control include enabling by other things than cookies
var includedStores = {};  // url(String) -> TiddlyWiki or String; if not (yet) loaded a status or an error string
var pendingOnLoadURLs = []; // [] of String: a list of urls that should be passed with the next "notifyListeners"
var refreshTiddlyWikiTimerID; // for delayed refresh
var listeners = [];
var progress;

// rules pointing which stores tiddlers with conflicting names should be fetched from
function FetchPreferences() {
	var prefs = {};
	
	this.add = function(tiddlerName,sourceUrl,substitute,substituteShadow) {
		if(!substitute && !substituteShadow)
			return;
		if(prefs[tiddlerName] == undefined)
			prefs[tiddlerName] = {urlsSubs: [], urlsSubsSh: []};
		if(substitute)
			prefs[tiddlerName].urlsSubs.pushUnique(sourceUrl);
		if(substituteShadow)
			prefs[tiddlerName].urlsSubsSh.pushUnique(sourceUrl);
	};
/*	this.getPrefs = function(tiddlerName) {
		return jQuery.extend(true, {}, prefs[tiddlerName]);
	};
*/	this.getSubsUrl = function(tiddlerName) {
		var pref = prefs[tiddlerName];
		if(pref == null)
			return null;
		if(pref.urlsSubs.length == 0)
			return null;
		return pref.urlsSubs[0];
	};
	this.getSubsShUrl = function(tiddlerName) {
		var pref = prefs[tiddlerName];
		if(pref == null)
			return null;
		if(pref.urlsSubsSh.length == 0)
			return null;

		// check if there's a tiddler with both preferences
		var i, j;
		for(i = 0; i < pref.urlsSubs.length; i++)
			for(j = 0; i < pref.urlsSubsSh.length; j++)
				if(pref.urlsSubs[i] == pref.urlsSubsSh[j])
					return pref.urlsSubs[i];

		return pref.urlsSubsSh[0];
	};
	this.containSubsUrl = function(tName,url) {
		var pref = prefs[tName];
		if(pref == null)
			return false;
		return pref.urlsSubs.contains(url);
	};
	this.containSubsShUrl = function(tName,url) {
		var pref = prefs[tName];
		if(pref == null)
			return false;
		return pref.urlsSubsSh.contains(url);
	};
	this.removeByUrl = function(url) {  // removes all priorities of tiddlers, included from the url

		var tName, pref, i;

		for(tName in prefs) {
			pref = prefs[tName]
			for(i = 0; i < pref.urlsSubs.length; i++)
				if(pref.urlsSubs[i] == url)
					pref.urlsSubs.splice(i--,1);
			for(i = 0; i < pref.urlsSubsSh.length; i++)
				if(pref.urlsSubsSh[i] == url)
					pref.urlsSubsSh.splice(i--,1);
			// if (pref.urlsSubs.length == 0 && pref.urlsSubsSh.length == 0), not nec. to delete pref
		}
	};
};
var fetchPreferences = new FetchPreferences();

function Conflicts() {

	// hashmaps by tiddler name of potentially conflicting tiddlers with that name;
	// each element is a hashmap by url of tiddlers with such names
	var pConfs = {},  // doesn't contain info about tiddlers in the main store
	    pSConfs = {}; // for tiddlers that may conflict when substituting a shadow

	this.init = function() {
		// notify of name conflicts in the whole set of initial and included tiddlers?
		if(config.options.chkWarnOnSharedTiddlersConflicts == undefined) config.options.chkWarnOnSharedTiddlersConflicts = true;
		// use alert() for notifications?
		if(config.options.chkAlertOnSharedTiddlersConflicts == undefined) config.options.chkAlertOnSharedTiddlersConflicts = false;
	};
	// check whether a new tiddler (not included yet) may cause a conflict (now or in the future)
	this.checkNew = function(tName, url, subs, subsSh) {

		// use to add when a tiddler with such name is already present
		var addData = function(confsMap, tidParams) {

			var includeData = function(tidParams) {		// better to create a separate class
				return { subs: tidParams.substitute, warned: false };
			};
			var getSubsPriority = function(data) {
				return data.subs;
			}

			var conf = confsMap[tidParams.title];
			if(!conf) {
				conf = confsMap[tidParams.title] = {};
				conf[tidParams.url] = includeData(tidParams);
			} else {
				var confPart = conf[tidParams.url];
				if(!confPart)
					conf[tidParams.url] = includeData(tidParams);
				else {
					if(!getSubsPriority(confPart) && tidParams.substitute)
						conf[tidParams.url] = includeData(tidParams);
						// better to set subs to true and warned to false
				}
			}
		}

		// check if there's a tiddler with such a name
		var existingTid = forEachLoadedStore(function(theStore, storeUrl) {	// in included stores
			if(storeUrl != url)
				return theStore.fetchTiddler(tName);
		}) || window.sharedTiddlersAPI.orig_fetchTiddler(tName);		// or in the main one
		// if the tiddler is added to the main store after exactly one tiddler is included, no conflict is
		// detected by this algorithm; also, it doesn't account deleting the tiddler from the main store

		if(!existingTid)
			return;
		var mainStoreId = "main store",
		    existingTidUrl = existingTid.getIncludeURL();

		// check conflicts among all included tiddlers (important when no shadow with such name exists)
		if(!pConfs[tName])
			addData(pConfs, {
				title: tName,
				url: existingTidUrl || mainStoreId,
				substitute: existingTidUrl ? fetchPreferences.containSubsUrl(tName,existingTidUrl) : undefined
			});
		addData(pConfs, { title: tName, url: url, substitute: subs });

		// check conflicts among tiddlers that substitute a shadow
		if(subsSh) {
			var existingTidSubsSh = forEachLoadedStore(function(theStore, storeUrl) {
				if(storeUrl != url && fetchPreferences.containSubsShUrl(tName,storeUrl))
					return theStore.fetchTiddler(tName);
			}) || window.sharedTiddlersAPI.orig_fetchTiddler(tName);
			// same problems
			
			if(!existingTidSubsSh)
				return;
			var existingTidSubsShUrl = existingTidSubsSh.getIncludeURL();

			// conflicts among substituting tiddlers are important when a shadow with such name exists
			if(!pSConfs[tName])
				addData(pSConfs, {
					title: tName,
					url: existingTidSubsShUrl || mainStoreId,
					substitute: existingTidSubsShUrl ? fetchPreferences.containSubsShUrl(tName,existingTidSubsShUrl) : undefined
				});
			addData(pSConfs, { title: tName, url: url, substitute: subs });
		}
	};
	this.markNodeUnloaded = function(url) {
		var t;
		for(t in pConfs)
			if(pConfs[t][url])
				delete pConfs[t][url];
		for(t in pSConfs)
			if(pSConfs[t][url])
				delete pSConfs[t][url];
	};
	this.notify = function() {
		var msgAndLog = config.options.chkWarnOnSharedTiddlersConflicts;
		var doAlert   = config.options.chkAlertOnSharedTiddlersConflicts;
		if(!doAlert && !msgAndLog)
			return; // no conflict is marked as "warned" - this is by intent
		var tName, tUrl;

		var checkOrDisplayConflicts = function(map,msgAndLog,markWarned) {
			var msg = ""; // message to return (for alerting etc)
			var addM = function(m) { // pushes all notification messages
				msg += ("\n"+m);
				if(msgAndLog)
					displayAndLogMessage(m);
			};
			var tName, tSources, tUrl, subs, nOfConflicting, newPresent,
				subsMsg = "  (with the subsitute priority)";
				// mark conflicts among tiddlers with the substitute priority

			// find out where necessary, notify
			for(tName in map) {
				tSources = map[tName];

				// find out which priority is of interest
				subs = false;
				for(tUrl in tSources)
					if(tSources[tUrl].subs)
						subs = true;

				// if there's only one tiddler with "substitute", there's no conflict
				nOfConflicting = 0;
				for(tUrl in tSources)
					if(tSources[tUrl].subs == subs)
						nOfConflicting++;
				if(nOfConflicting < 2)
					break;

				// find out if new conflicting tiddlers are present
				newPresent = false;
				for(tUrl in tSources)
					if(tSources[tUrl].subs == subs && !tSources[tUrl].warned)
						newPresent = true;

				// start notification
				if(newPresent) {
					addM("* "+tName+" in:");
					for(tUrl in tSources)
						if(tSources[tUrl].subs == subs && !tSources[tUrl].warned) {
							addM("** "+tUrl);
							if(markWarned)
								tSources[tUrl].warned = true;
						}
					if(subs)
						addM(subsMsg);
				}
			}
			return msg;
		};

		var msg = "";
		if(checkOrDisplayConflicts(pConfs,false,false)) { // new conflicts present
			msg += "New conflicts:";
			if(msgAndLog) displayAndLogMessage(msg);
			msg += checkOrDisplayConflicts(pConfs,msgAndLog,true);
		};
		if(checkOrDisplayConflicts(pSConfs,false,false)) { // new conflicts among tiddlers substituting shadows present
			if(msg) msg += "\n";
			var m = "New conflicts among tiddlers competing for substituting shadows:";
			msg += m;
			if(msgAndLog) displayAndLogMessage(m);
			msg += checkOrDisplayConflicts(pSConfs,msgAndLog,true);
		};
		if(doAlert && msg)
			alert(msg);
	};
//	this.state = // return current state as a string (for includeState)
};
conflicts = new Conflicts();
conflicts.init();

// --------------------------------------------------
// Helper functions

var isIncludeEnabled = function() {
	if (useInclude === undefined)
		useInclude = config.options.chkUseInclude === undefined || config.options.chkUseInclude;
	return useInclude;
};

var getMissingIncludeMsg = function(url) {
	return "No include specified for %0".format([url])
};

// Called after one or more included TiddlyWikis are loaded
//
var notifyListeners = function() {
	var urls = pendingOnLoadURLs;
	pendingOnLoadURLs = [];
	if (urls.length)
		for (var i = 0; i < listeners.length; i++)
			listeners[i](urls);
};

var idleCount; // Reset to 0 when the system is "not idle", incremented inside refreshTiddlyWiki

var refreshTiddlyWiki = function() {
	// To avoid to much refreshing/flickering don't refresh immediately 
	// but wait until the system was idle for a certain time.

	if (refreshTiddlyWikiTimerID !== undefined) clearInterval(refreshTiddlyWikiTimerID);

	idleCount = 0;

	var sendDone = function() {
		twWeb.sendProgress("","","Done");
	};

	refreshTiddlyWikiTimerID = setInterval(function() {
		idleCount++;
		if (idleCount <= 10)
			return;

		clearInterval(refreshTiddlyWikiTimerID);
		refreshTiddlyWikiTimerID = undefined;

		twWeb.sendProgress("Refreshing...","","");
		refreshDisplay();
		invokeLater(sendDone,0,REFRESH_PRIORITY);
	},1);
};

// Calls callback for every loaded store and returns the first non-false/null.. value returned by callback.
//
// @param	callback
// value:	function(store, url)
//
var forEachLoadedStore = function(callback) {
	var result;
	for(var url in includedStores) {
		var theStore = twWeb.getStore(url);
		if (theStore && (result = callback(theStore, url)))
			return result;
	}
};

// hijack fetchTiddler so that it works with tiddlers from included stores as well
var attachToStore = function() {
	if (!window.store)
		return invokeLater(attachToStore,100);

	var orig_fetchTiddler = store.fetchTiddler;
	window.sharedTiddlersAPI.orig_fetchTiddler = orig_fetchTiddler;
	// reserve access to the original method to be able to fetch tiddlers from main store,
	// including substituted ones

	store.fetchTiddler = function(title) {
		var t, subsUrl = fetchPreferences.getSubsUrl(title), subsShUrl;

		// first, look for the tiddler in the main store, unless there's nothing to substitute with
		if(!subsUrl) {
			t = orig_fetchTiddler.apply(this,arguments);
			if(t) return t;
		} else
			return includedStores[subsUrl].fetchTiddler(title);
		
		// then, look for shadowed tiddlers in main store and external ones to substitute those
		if(config.shadowTiddlers[title] !== undefined) {
			if(subsShUrl = fetchPreferences.getSubsShUrl(title))
				return includedStores[subsShUrl].fetchTiddler(title);
			else
				return undefined;
		};

		// Don't look for the "New Tiddler" tiddler in the included TiddlyWikis,
		// since returning such a tiddler (that is readonly) will make it impossible
		// in the Main TiddlyWiki to create new tiddlers via standart "new tiddler" button.
		if (title == config.macros.newTiddler.title) return undefined;

		// finally, look for an external one without "substitute" preference
		return forEachLoadedStore(function(theStore, url) {
			return theStore.fetchTiddler(title);
		});
	};

	// refresh TiddlyWiki to reflect the new included Tiddlers (if we have any).
	if(twWeb.getIncludedStoresUrls().length)
		refreshTiddlyWiki();
};

var includeFromIncludeList = function() {
	if (!window.store)
		return invokeLater(includeFromIncludeList,100);
	
	var includeListText = store.getTiddlerText("IncludeList");
	if (includeListText)
		wikify(includeListText,document.createElement("div"),undefined,store.fetchTiddler("IncludeList"));
};

var getFunctionUsingForReallyEachTiddler = function(func) {
	var wrapper = function() {
		var orig_forEachTiddler = store.forEachTiddler;

		var forEachTiddlerWithIncludes = function(callback) {
			var done = {};

			var callbackWrapper = function(title, tiddler) {
				// ensure every title is only processed once
				if(done[title]) 
					return;
				
				// do and set done for appropriate tiddlers
				if(!fetchPreferences.getSubsUrl(title)||
				   (fetchPreferences.getSubsUrl(title) == tiddler.getIncludeURL())) {
					done[title] = 1;
					callback.apply(this,arguments);
				};
			};
			
			// first, forEachTiddler over the original tiddlers
			orig_forEachTiddler.call(store, callbackWrapper);
			
			// add nonsubstituted shadowTiddler titles to done 
			// (to avoid an included store hide a shadow tiddler)
			for (var n in config.shadowTiddlers)
				if(!fetchPreferences.getSubsShUrl(n))
					done[n] = 1;

			// add the "New Tiddler" tiddler to done
			// to avoid an included store (with such tiddler) prevent creating new tiddlers
			done[config.macros.newTiddler.title] = 1;

			// forEachTiddler over every included store
			forEachLoadedStore(function(theStore, url) {
				theStore.forEachTiddler(callbackWrapper);
			});
		};
		
		store.forEachTiddler = forEachTiddlerWithIncludes;
		try {
			return func.apply(this,arguments);
		} finally {
			store.forEachTiddler = orig_forEachTiddler;
		};
	};
	
	return wrapper;
};

var useForReallyEachTiddler = function(object,property) {
	return object[property] = getFunctionUsingForReallyEachTiddler(object[property]);
};


//================================================================================
// config.extensions.SharedTiddlersPlugin (the "includer" engine)

config.extensions.SharedTiddlersPlugin = {

	// function config.extensions.SharedTiddlersPlugin.getFunctionUsingForReallyEachTiddler(func)
	//
	// Returns a function that behaves as func, but every call to store.forEachTiddler will actually 
	// be a call to forReallyEachTiddler (see below), i.e. iterate over the tiddlers of the main store 
	// and of the included TiddlyWikis
	//
	// @return the patched function
	//
	getFunctionUsingForReallyEachTiddler: getFunctionUsingForReallyEachTiddler,
	
	// function config.extensions.SharedTiddlersPlugin.useForReallyEachTiddler(object,property)
	//
	// Patches the function hold in the given property of the object in such a way that every call
	// to store.forEachTiddler will actually be a call to forReallyEachTiddler (see below), i.e.
	// iterate over the tiddlers of the main store and of the included TiddlyWikis
	//
	// @param  object
	// @param  property the name of the property of the object containing the function to be patched.
	// @return the patched function
	//
	useForReallyEachTiddler: useForReallyEachTiddler,
	
	// Add a listener function to the TiddlyWikiIncluder.
	//
	// @param  listener  function(urls)
	//			urls: [] of Strings, containing the urls of the TiddlyWiki just included
	//			(see url@config.extensions.SharedTiddlersPlugin.include)
	//			called whenever one or more TiddlyWiki store are successfully included.
	//
	addListener: function(listener) {
		listeners.push(listener);
	}
};


// -------------------------------------------------------------------------------
// TiddlyWikiIncluder initialization code

config.extensions.SharedTiddlersPlugin.addListener(refreshTiddlyWiki);

config.shadowTiddlers.AdvancedOptions +=
	("\n~IncludePlugin settings:"+
	 "\n<<option chkUseInclude>> Include ~TiddlyWikis"+
	 "\n<<option chkAlertOnSharedTiddlersConflicts>> Alert on tiddler name conflicts"+
	 "\n<<option chkWarnOnSharedTiddlersConflicts>> Display messages and write log in the browser console on conflicts"+
	 "\nIncludeList | IncludeState | ImportIncluded | [[help|http://yakovl.bplaced.net/TW/SharedTiddlersPlugin.html/#SharedTiddlersPluginInfo]]"+
	 "\n^^(Reload this ~TiddlyWiki to make changes become effective)^^");
config.shadowTiddlers.IncludeState = "<<includeState>>";

// add the "importer" engine
config.shadowTiddlers.ImportIncluded =
"| the url of the document to import from | <<option txtStoreUrl>>               |\n"+
"|    the filter of tiddlers to import    | <<option txtFilterTiddlersToImport>> |\n"+
"|           the importing mode           | <<option txtImportMode>>             |\n"+
"<html><a href='javascript:;' onclick='\n"+
"	var storeUrl = config.options.txtStoreUrl,\n"+
"	    params = {\n"+
"		filterLine: config.options.txtFilterTiddlersToImport,\n"+
"		importMode: config.options.txtImportMode,\n"+
"		noRefresh: true,\n"+
"	};\n"+

"	if(!storeUrl)\n"+
"		return displayMessage(\"please specify the url to import from\");\n"+
"	if(!params.filterLine)\n"+
"		return displayMessage(\"please specify the filter of tiddlers to import\");\n"+
"	if(!sharedTiddlersAPI.getStore(storeUrl))\n"+
"		displayMessage(\"warning: no store was loaded from \"+storeUrl+\" previously, trying now\");\n"+

"	twWeb.include(storeUrl,params);\n"+
"'>import (without saving)<a/></html>";

//================================================================================
// Tiddler extension/modification

Tiddler.prototype.isIncluded = function() {
	return this.includeURL != undefined;
};

Tiddler.prototype.getIncludeURL = function() {
	return this.includeURL;
};

Tiddler.prototype.setIncludeURL = function(url) {
	this.includeURL = url;
};

Tiddler.prototype.deleteIncludeURL = function() {
	delete this.includeURL;
};

// make included tiddlers readonly
config.extensions.SharedTiddlersPlugin.orig_Tiddler_isReadOnly = Tiddler.prototype.isReadOnly;

Tiddler.prototype.isReadOnly = function() {
	return config.extensions.SharedTiddlersPlugin.orig_Tiddler_isReadOnly.apply(this,arguments) || this.isIncluded();
}

//================================================================================
// TiddlyWiki modifications

// In some TiddlyWiki functions the "forEachTiddler" should work on all tiddlers, also those from 
// included store. (E.g. TiddlyWiki.prototype.getTags)
//
// But not for all (e.g. TiddlyWiki.prototype.getTiddlers is used for saving, but only the "own" tiddlers should be saved)
//
// Therefore explicitly list the functions that should be "wrapped" to use the "forReallyEachTiddler".
//
var tiddlyWikiFunctionsUsingForReallyEachTiddler = {
	getMissingLinks: 1, getOrphans: 1,
	getTags: 1, reverseLookup: 1, updateTiddlers: 1};
	
for (var n in tiddlyWikiFunctionsUsingForReallyEachTiddler)
	useForReallyEachTiddler(TiddlyWiki.prototype,n);

//================================================================================
// Web of TiddlyWikis

function IncludingMemorizer() { // the structure to store info about already handled include macros
	var used = {};
	this.isUsed  = function(line) { return used[line]? true : false; };
	this.setUsed = function(line) { used[line] = 1; };
	this.getUsed = function() { return jQuery.extend(true, {}, used) };
	this.markUnused = function(usedMap) {

		for(var u in usedMap)
			used[u] = undefined; // don't delete to keep the order of inclusion (for reloading)
	};
};

function TwWeb() {

	var nodes = {};			// hashmap by node name of nodes' metadata
	var nodeConflicts = {};		// hashmap by node name of arrays of conflicts
	var nodeWaitingTasks = {};	// hashmap by node name of arrays of Waiting Tasks
	var nodeDescription = function(url) { // PoG: can be turned into a separated "class"
		return { url : url };
	};
	var selfNodeName;
	var self = this;

	this.includeUsages = new IncludingMemorizer();

// ----- Nodes desctiptions part ---------------------------------------------------------------------

	// set/get the name of "main" (including) node
	this.setSelfNodeName = function(name) {
		selfNodeName = name;
	};
	this.getSelfNodeName = function() {
		return selfNodeName;
	};

	// set/get/delete node description
	this.setNodeDesc = function(nodeName, desc) {

		var existing = this.getNodeDesc(nodeName);

		// currently, doesn't change metadata on conflict
		if(existing)
			this.addConflict(nodeName, desc);
		else
			nodes[nodeName] = desc;

		this.callWaitingTasks(nodeName);
	};
	this.getNodeDesc = function(nodeName) {
		return nodes[nodeName];
	};
	this.deleteNodeDesc = function(nodeName) {
		nodes[nodeName] = null;
	};

	// "API" method to be used in the macro
	this.addNodeDesc = function(nodeName, url) {
		this.setNodeDesc(nodeName, nodeDescription(url));
	};

	// returns "better" description if one is "strictly better" than the other or "even" and null otherwise
	this.compareNodeDesc = function(desc1, desc2) {

// looks like here's a mistake: probably ": desc2" (?)
		return (desc1.url == desc2.url)? desc1 : null;
	};

	this.getNodeUrl = function(nodeName) {

		var desc = this.getNodeDesc(nodeName);
		return desc? desc.url : null;
	};

	// @param	nodeId
	//		url or "node: nodeName" id of the node
	// @return	url of the node (if it is defined) or null
	//
	this.getStoreUrlById = function(nodeId) {

		var node = self.checkNodeNotation(nodeId),
		    url  = node ? self.getNodeUrl(node) : nodeId;
		return url;
	}

	this.setNodeNotation = function(nodeName) {

		return "node: " + nodeName;
	};
	this.checkNodeNotation = function(urlParam) {

		var nodeCalcRE = /node: (.*)/,
		    nodeCalcMatch = nodeCalcRE.exec(urlParam);

		return nodeCalcMatch ? nodeCalcMatch[1] : null;
	};

	this.addConflict = function(nodeName, nodeDesciption) {

		var betterDesc = this.compareNodeDesc(nodeDesciption,this.getNodeDesc(nodeName));
		if(betterDesc) {
			this.deleteNodeDesc(nodeName);
			this.setNodeDesc(nodeName, betterDesc);
			return;
		}

		if(nodeConflicts[nodeName])
			nodeConflicts[nodeName].push(nodeDesciption);
		else
			nodeConflicts[nodeName] = [ nodeDesciption ];

		alert(  "Warning: more than one description of the "+nodeName+" node was pushed. "+
			"The earlier version is kept."  );
	};

// ----- Waiting tasks part --------------------------------------------------------------------------

	this.setWaitingTask = function(nodeName, waitingTaskFunc, waitingTaskSelf) {

		var waitingTask = { action: waitingTaskFunc, self: waitingTaskSelf };

		if(nodeWaitingTasks[nodeName])
			nodeWaitingTasks[nodeName].push(waitingTask);
		else
			nodeWaitingTasks[nodeName] = [ waitingTask ];

		if(this.getNodeUrl(nodeName))
			this.callWaitingTasks(nodeName);
	};
	this.callWaitingTasks = function(nodeName) {

		var toDo = nodeWaitingTasks[nodeName];

		if(toDo)
			for(var i = 0; i < toDo.length; i++)
				toDo[i].action.call(toDo[i].self);

		nodeWaitingTasks[nodeName] = null; // remove called Waiting Tasks
	};

// ----- Including stuff part ------------------------------------------------------------------------

	// ---- helpers ----

	this.setProgressFunction = function(func) {
		progress = func;
	};
/*	this.getProgressFunction = function() {	// is not in use
		return progress;
	};
*/	this.sendProgress = function(message, sender, state) {
		if (progress)
			progress.apply(this,arguments);
	};

	// Returns true when there are "pending" includes, i.e. TiddlyWiki that are not yet loaded.
	// A TiddlyWiki that failed loading is not pending.
	//
	this.hasPendingIncludes = function() {
		var state;
		for(var url in includedStores) {
			state = this.getState(url);
			if (state == WAITING || state == LOADING)
				return true;
		};
		return false;
	};

	// Called when an included TiddlyWiki could not be loaded.
	// By default an error message is displayed.
	//
	this.onError = function(url, errorMessage) {
		displayAndLogMessage("Error when including '%0':\n%1".format([url, errorMessage]));
	};

	// import a tiddler from an included store
	//
	// @param  tiddler - a tiddler to import
	// @param  mode: undefined or 1 - import anyway (other modes, like "don't substitute" will be supported)
	// @return the result object:
	//  .status means: -1 = error, 0 = tiddler is imported, >0 - reserved for other situations
	//  .errorText is not empty on error
	//  .tiddler is the tiddler with /the title/ which is in the store after "it is over" (may be null)
	//  .from is the url line equal to the includeURL of the imported tiddler
	//
	this.importIncluded = function(tiddler,mode) {

		if(mode == undefined)
			mode = 1;
		else
			mode = parseInt(mode);

		var t, tInMain, result = { tiddler: null };
		var doImport = function(t) {
			store.addTiddler(t);
			store.setDirty(true);
			result.status = 0;
			result.tiddler = t;
			result.from = url;
		};

		if(tiddler instanceof Tiddler) {
			// see return value, this is for the case when the import is not done
			result.tiddler = window.sharedTiddlersAPI.orig_fetchTiddler(tiddler.title);
			t = jQuery.extend(true, new Tiddler(), tiddler);
		} else {
			result.status = -1;
			result.errorText = "not a Tiddler instance";
			return result;
		};
		var url;
		if(url = t.getIncludeURL())
			t.deleteIncludeURL();

		switch(mode) {
			case 4: { // import only newer and on confirm
				tInMain = window.sharedTiddlersAPI.orig_fetchTiddler(t.title);
				if(!tInMain || tInMain.modified < t.modified)
					if(confirm("Up-to-date "+t.title+" from "+url+" is availabe, import?"))
						doImport(t);
				break
			}
			case 2: { // import only newer versions/unexisting tiddlers
				tInMain = window.sharedTiddlersAPI.orig_fetchTiddler(t.title);
				if(!tInMain || tInMain.modified < t.modified)
					doImport(t);
				break
			}
			case 3: { // import on confirm
				if(confirm(t.title+" from "+url+" is availabe, import?"))
					doImport(t);
				break
			}
			case 1: { // import anyway
				doImport(t);
				break
			}
			default: {
				result.status = -1;
				result.errorText = "unknown import mode";
			}
		};
		return result;
	};
	this.importAndLog = function(tiddler,mode) {

		var name   = tiddler.title,
		    result = twWeb.importIncluded(tiddler,mode);
		// this.importIncluded is not used to be able to pass the method to the API

		switch(result.status) {
			case 0:	 console.log("imported: "+name+" from "+result.from);
				 break
			case -1: console.log("error importing "+name+": "+result.errorText);
				 break
		}
	};

	// ---- main ----

	// Includes the (local or remote) TiddlyWiki store with the given url.
	//
	// @param url		see url@stp_loadTiddlyWikiStore
	// @param includeParams	a set of the following params for including:
	//	filterLine		a filter expression defining a set of tiddlers to include
	//	substituting		points whether an included tiddler should sustitute
	//				one in the main document if there's a conflict of names
	//	substituteShadows	points whether shadowed tiddlers of the main document with names equal to
	//				those of included ones should be substituted (in cases of conflicts);
	//				works only with (substituting == true)
	//	delayMilliSeconds	addition delay of loading
	//	noRefresh
	//	importMode
	//	evalTiddlers
	//	wikifyTiddlers
	//
	this.include = function(urlOrNodeParam, includeParams) {

		if (!isIncludeEnabled())
			return;
		var self = this;

		var includeOrHandleUrl = function(url) {

			var loadStoreCallback = function(theStore,urlInCallback,params,errorMessage) {

				if(theStore === undefined) {
				
					includedStores[url] = errorMessage;
					self.onError(url, errorMessage);
					return;
				} else
					includedStores[url] = theStore;

				// keep orig_store not to load tw-documents multiple times
				// because of multiple include macros:
				includedStores[url].orig_store = new TiddlyWiki();
				includedStores[url].forEachTiddler(function(tName,tiddler){
					tiddler.setIncludeURL(url);
					includedStores[url].orig_store.addTiddler(tiddler);
				});
				includedStores[url].clear();

				// include, create fetchPreferences and notify of conflicts; or import
				addFromLoadedStore();
			};

			var addFromLoadedStore = function() {
			// uses url and includeParams exploiting closure

				var substituting = includeParams.substitute,
				    substituteShadows = includeParams.substituteShadows,
				    importMode = includeParams.importMode;

				if(twWeb.getStore(url) === null)
					return invokeLater(addFromLoadedStore, 100);	// 100 milliseconds
				// new tiddlers should be added *when the store is loaded*

				// add tiddlers to included stores and check new conflicts (among non-subs. tids)
				var i, t,
				    new_tiddlers = includedStores[url].orig_store.filterTiddlers(includeParams.filterLine);

				for(i = 0; i < new_tiddlers.length; i++) {

					t = jQuery.extend(true, new Tiddler(), new_tiddlers[i]); //copy (by value)

					if(includedStores[url].orig_store.fetchTiddler(t.title)) {
					// ignore empty tiddlers created by the "tiddler" filter
					    if(importMode)
					        twWeb.importAndLog(t,importMode);
					    else {
					        // check for upcoming conflicts first
					        conflicts.checkNew(t.title, url, substituting, substituteShadows);
					        // then include
					        includedStores[url].addTiddler(t);
					    };
					    if(includeParams.evalTiddlers)
					        installPlugin(t);
					    if(includeParams.wikifyTiddlers)
					        wikify(t.text,document.createElement("div"),undefined,t);
					};
				};

				// add items to fetchPreferences if have to
				if(!importMode && (substituting || substituteShadows))
					for(i = 0; i < new_tiddlers.length; i++)
						fetchPreferences.add(new_tiddlers[i].title,url,substituting, substituteShadows);
				conflicts.notify();

				// "recalc" slices
				store.slices = {};
				// refresh things to get included stylesheets, PageTemplate and ViewTemplate applied
				if(!includeParams.noRefresh) {
					refreshAll();
					story.refreshAllTiddlers();
				}

				pendingOnLoadURLs.push(url);
				invokeLater(notifyListeners);
			};

			var loadStore = function() {
				includedStores[url] = LOADING;
				stp_loadTiddlyWikiStore(url,loadStoreCallback,null,progress);
				// {includeParams:includeParams} can be used instead of null so that
				// loadStoreCallback will have access to the includeParams
			};

			var urlIsNew = !(includedStores[url]);

			if(urlIsNew) {

				includedStores[url] = WAITING;

				if (includeParams.delayMilliSeconds)
					invokeLater(loadStore, includeParams.delayMilliSeconds);
				else
					loadStore();
			} else
				addFromLoadedStore();
		};

		var nodeName = this.checkNodeNotation(urlOrNodeParam);

		if(nodeName) {
			if(nodeName == this.getSelfNodeName()) // don't include from the main (self) TiddlyWiki
				return;
			this.setWaitingTask(nodeName,function(){
				var url = this.getNodeUrl(nodeName);
				includeOrHandleUrl(url);
			},this);
		} else
			includeOrHandleUrl(urlOrNodeParam);
	};
	
// ----- Methods for dealing with included stuff -----------------------------------------------------

	// @return [] of Strings, the URLs of the includes
	//
	this.getIncludedStoresUrls = function() { // in a form of an array

		var includes = [];
		for(var url in includedStores)
			includes.push(url);
		return includes;
	};
	// @return the (TiddlyWiki) store with the given URL or "node: nodeName", or null if not (yet) loaded.
	//
	this.getStore = function(nodeId) {

		var url = self.getStoreUrlById(nodeId)
		if(!url)
			return null;

		var s = includedStores[url];
		if(s && s instanceof TiddlyWiki)
			return s;
		return null;
	};
	// @return a state/error text of the store with the given URL, or null when the store is already loaded
	//
	this.getState = function(nodeId) {

		var url = self.getStoreUrlById(nodeId)
		if(!url)
			return "the node "+self.checkNodeNotation(nodeId)+" is not described yet, the address is unknown";

		var s = includedStores[url];
		if (!s)
			return getMissingIncludeMsg(url);
		return typeof s == "string" ? s : null;
	};
	// reload one included store or all of them
	// previous inclusions are done again, by default only those without eval and import
	// important: reload doesn't work correctly with <<include>> usages with multiple urls
	//
	// @param  reloadParams  an object containing some of these configuration properties:
	//	urlOrNodeList	an array of TWs' IDs (url or "node: nodeName") to reload;
	//			if undefined, all TWs are reloaded
	//	eval		points whether to redo inclusions with the "eval" parameter (undefined == false)
	//	import		same for the "import" parameter, but undefined/null -> true
	//	wikify		same for the "wikify" parameter
	this.reload = function(reloadParams) {

		// determine a TW(s) to reload (undefined => all)
		var i, twsToReload = reloadParams.urlOrNodeParam;

		// turn "IDs" into actual urls; filter out node names for which urls are not defined
		// so waiting tasks are not doubled
		if(twsToReload)
			for(i = 0; i < twsToReload.length; i++){ 
				nodeName = this.checkNodeNotation(twsToReload[i]);
				twsToReload[i] = nodeName ? this.getNodeUrl(nodeName) : twsToReload[i];
				if(!twsToReload[i])
					twsToReload.splice(i--,1);
			}

		if(reloadParams.import === undefined || reloadParams.import === null)
			reloadParams.import = true;
		if(reloadParams.wikify === undefined || reloadParams.wikify === null)
			reloadParams.wikify = true;

		// collect macro expressions to reload
			// may the order of including be important?
		var usage, usages = this.includeUsages.getUsed(),
		    paramString, params, pParams, urlParam, nodeName,
			dontReload, i;

		for(usage in usages) {

			// parsing copied from config.macros.include.handler (to get macro params)
			paramString = usage.substring(10,usage.length - 2);
			params = paramString.readMacroParams();
			pParams = paramString.parseParams("url",null,true,false,true);
			urlParam = pParams[0]["url"][0];
			nodeName = this.checkNodeNotation(urlParam);
			urlParam = nodeName ? this.getNodeUrl(nodeName) : urlParam;

			// keep only inclusions that contain IDs corresponding to urls from twsToReload
			dontReload = true;
			if(twsToReload) {
				for(i = 0; i < twsToReload.length; i++)
					if(urlParam == twsToReload[i])
						dontReload = false;
			} else
				dontReload = false;

			// exclude inclusions with import and eval, if necessary
			if(!reloadParams.import && getParam(pParams,"import",undefined) ||
			   !reloadParams.eval && params.contains('eval') ||
			   !reloadParams.wikify && params.contains('wikify'))
				dontReload = true;

			if(dontReload) {
				delete usages[usage];
				continue;
			}

			// clean stuff: unload included store, clear priorities, remove conflicts;
			// deleting "used" marks is outside this loop
			includedStores[urlParam] = undefined;
			fetchPreferences.removeByUrl(urlParam);
			conflicts.markNodeUnloaded(urlParam);
		}
		// delete "used" marks
		this.includeUsages.markUnused(usages);
		
		// include again
		for(usage in usages)
			wikify(usage,document.createElement("div"),undefined,null);
	};
};
twWeb = new TwWeb();

//================================================================================
// Default Progress Handling for config.extensions.SharedTiddlersPlugin

var showAnimated = function(e, showing, duration) {
//	if (!anim || !abego.ShowAnimation) {
		e.style.display = showing ? "block" : "none";
		return;
//	}
	
//	anim.startAnimating(new abego.ShowAnimation(e,showing,duration));
};

config.extensions.SharedTiddlersPlugin.getDefaultProgressFunction = function() {

	setStylesheet(
		".includeProgressState{\n"+
		"background-color:#FFCC00;\n"+
		"position:absolute;\n"+
		"right:0.2em;\n"+
		"top:0.2em;\n"+
		"width:7em;\n"+
		"padding-left:0.2em;\n"+
		"padding-right:0.2em\n"+
		"}\n",
		"stp_Include");

	var createStateElem = function() {
		var e = document.createElement("div");
		e.className = "includeProgressState";
		e.style.display = "none";
		document.body.appendChild(e);
		return e;
	};
	
	var stateElem = createStateElem();


	var showState = function(message) {
		removeChildren(stateElem);
		createTiddlyText(stateElem,message);
		showAnimated(stateElem,true,0);
	};

	var hideState = function() {
		// hide the state the next idle time 
		invokeLater(function() {
			showAnimated(stateElem,false,ANI_DURATION_HIDE_STATE);
		},100,ANIMATION_PRIORITY);
	};
	
	var myProgressFunction = function(message, sender, state, url, params) {
		
		if (state == "Done" || state == "Failed") {
			hideState();
			return;
		}
		
		if (sender == "stp_loadTiddlyWikiStore") {
			idleCount = 0;
			if (state == "Processing")
				showState("Including...");
		} else {
			showState(message);
		}
	};
	return myProgressFunction;
};

twWeb.setProgressFunction(config.extensions.SharedTiddlersPlugin.getDefaultProgressFunction());


//================================================================================
// The "describeNode" macro
//
// Syntax: <<describeNode nodeName {nodeUrl|self}>>
//
config.macros.describeNode = {};
config.macros.describeNode.handler = function(place,macroName,params,wikifier,paramString,tiddler) {

	var macroTWcode = wikifier.source.substring(wikifier.matchStart, wikifier.nextMatch);
	createTiddlyText(createTiddlyElement(place,"code"),macroTWcode);

	// node description duplicates are handled when adding, so no "handle only once" here

	var includeURL = tiddler.getIncludeURL(),
	    nodeName = params[0],
	    urlParam = params[1],
	    self = (urlParam == "self");

	if(self) {
		var oldSelf = twWeb.getSelfNodeName();
		if(oldSelf && (oldSelf != nodeName))
			return alert("The \'"+oldSelf+"\' alias is already assigned as the name of the current "+
					"TiddlyWiki; the new attempt to assign \'"+nodeName+"\' is ignored.");
		twWeb.setSelfNodeName(nodeName);
		return;
	}

	var url = resolveUrlFrom(urlParam, includeURL);
	url = stp_resolveURL(url); // if no includeURL

	twWeb.addNodeDesc(nodeName,url);
};

//================================================================================
// The "include" macro
//
// Syntax:	<<include [url:]url [filters:filterLine] [substitute]
//			  [substituteShadows] [hide:hideFlag] [delay:delayDuration]>>
//
config.macros.include = {};
config.macros.include.handler = function(place,macroName,params,wikifier,paramString,tiddler) {

	var macroTWcode = wikifier.source.substring(wikifier.matchStart, wikifier.nextMatch),
	    pParams = paramString.parseParams("url",null,true,false,true); // allowEval, cascadeDefaults, names allowed

	var hide = getFlag(pParams, "hide", false) || params.contains('hide');
	if (!hide)
		createTiddlyText(createTiddlyElement(place,"code"),macroTWcode);
	if (twWeb.includeUsages.isUsed(macroTWcode))
		return;
	twWeb.includeUsages.setUsed(macroTWcode);

	var urls = pParams[0]["url"],
	    includeParams = {
		delayMilliSeconds:	parseInt(getParam(pParams,"delay","0")),
		filterLine:		getParam(pParams,"filters","[all[-]]"),
		substitute:		params.contains('substitute'),
		substituteShadows:	params.contains('substituteShadows'),
		noRefresh:		params.contains('noRefresh'),
		importMode:		getParam(pParams,"import",undefined),
		evalTiddlers:		params.contains('eval'),
		wikifyTiddlers:		params.contains('wikify')
	};

	var checkUrlAndInclude = function(url) {

		if(url == 'hide' || url == 'substituteShadows' || url == 'substitute' || url == 'eval' ||
				url == 'wikify' || url == 'noRefresh')
			return;

		twWeb.include(url,includeParams);
	};

	for (var i = 0; urls && i < urls.length; i++)
		checkUrlAndInclude(urls[i]);
};

//================================================================================
// The "reloadIncluded" macro
//
// Syntax: <<reloadIncluded [urls:urlsJSON] [reloadParams:otherReloadParamsJSON]
//		[label:labelText] [tooltip:tooltipText] [class:className]>>
// (for reloadParams, see twWeb.reload)
//
config.macros.reloadIncluded = {};
config.macros.reloadIncluded.handler = function(place,macroName,params,wikifier,paramString,tiddler) {

	// parse params
	var pParams = paramString.parseParams("url",null,true,false,true),
	    label    = getParam(pParams,"label","refresh"),
	    tooltip  = getParam(pParams,"tooltip",undefined),
	    elClass  = getParam(pParams,"class"," "), // " " overwrites the default "button" class
	    urlsText = getParam(pParams,"urls",undefined),
	    otherReloadParamsText = getParam(pParams,"reloadParams","{}"),
	    reloadParams = JSON && JSON.parse(otherReloadParamsText) || jQuery.parseJSON(otherReloadParamsText);
	reloadParams.urlOrNodeList = !urlsText ? undefined :
			(JSON && JSON.parse(urlsText) || jQuery.parseJSON(urlsText));
	if(!tooltip) {
		if(reloadParams.urlOrNodeList) {
			tooltip = "refresh '"+reloadParams.urlOrNodeList[0]+"'";
			for(var i = 1; i < reloadParams.urlOrNodeList.length; i++)
				tooltip += ", '"+reloadParams.urlOrNodeList[i]+"'";
			tooltip += (i > 0) ? " nodes" : " node";
		} else
			tooltip = "refresh all included nodes";
	}

	// create button, add handler
	createTiddlyButton(place,label,tooltip,function(){
		var returnHere = function() {
			if(twWeb.hasPendingIncludes()) {
				invokeLater(returnHere,100);
				return;
			} // wait until all the stores are loaded and the page is refreshed
			var t = tiddler.title, te = DEFAULT_VIEW_TEMPLATE;
			story.displayTiddler(this,t,story.chooseTemplateForTiddler(t,te));
		}
		twWeb.reload(reloadParams);
		invokeLater(returnHere,100); // wait a bit for the nodes to unload
	},elClass);
};

//================================================================================
// The "includeState" macro
//
// Syntax: <<includeState>>
//
config.macros.includeState = {};
config.macros.includeState.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	var getFullState = function () {
		var s = "";
		var includes = twWeb.getIncludedStoresUrls();
		if (!includes.length)
			return "{{noIncludes{\nNo TiddlyWiki is included or including is disabled (see AdvancedOptions)\n}}}\n";
			
		s += "|!Address|!State|\n";
		for (var i = 0; i < includes.length; i++) {
			var inc = includes[i];
			s += "|{{{"+inc+"}}}|";
			var t = twWeb.getState(inc);
			s += t ? "{{{"+t+"}}}" : "included";
			s += "|\n"
		}
		s += "|includeState|k\n";
		return s;
	};
	
	var updateState = function(){
		removeChildren(div);
		wikify(getFullState(),div);
		if (twWeb.hasPendingIncludes())
			invokeLater(updateState,500,UPDATE_STATE_PRIORITY);
	};

	var div = createTiddlyElement(place,"div");
	
	invokeLater(updateState,0,UPDATE_STATE_PRIORITY);
};

//================================================================================
// Change standart formatters

var getFormatterIndex = function(formatterName) {
	for(var i = 0; i < config.formatters.length; i++)
		if(config.formatters[i].name == formatterName)
			return i;
	return null;
}

//--------------------------------------------------------------------------------
// Change the prettyLink formatter so that it
// * recognizes [[text|target]]@nodeName and [[target]]@nodeName syntax
// * takes into account includeURL of the tiddler and propagates inclusion

if(config.options.STP_hijackPrettyLink) {
	var prettyLinkFormatterIndex = getFormatterIndex("prettyLink");
	config.extensions.SharedTiddlersPlugin.orig_prettyLinkFormatter = config.formatters[prettyLinkFormatterIndex];
	config.formatters[prettyLinkFormatterIndex] = {

		name:  "prettyLink",
		match: "\\[\\[",
		lookaheadRegExp: /\[\[(.*?)(?:\|(~)?(.*?))?\]\](?:(?:@(\w+))(?:@([\w\s\:]+)@)?)?/mg,
		handler: function(w) {

			this.lookaheadRegExp.lastIndex = w.matchStart;
			var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
			if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {

				// call the formatter
				config.extensions.SharedTiddlersPlugin.orig_prettyLinkFormatter.handler(w);

				// call the include.handler, if necessary
				var node = lookaheadMatch[4]? lookaheadMatch[4] : undefined,
				    includeURL = w.tiddler? w.tiddler.getIncludeURL() : null,
				    urlParam = node? twWeb.setNodeNotation(node) : (includeURL? includeURL : undefined),
				    target = lookaheadMatch[3]? lookaheadMatch[3] : lookaheadMatch[1],
				    paramString = '"'+urlParam+'" filters:"[['+target+']]" hide noRefresh ';
				if(lookaheadMatch[5])
					paramString += lookaheadMatch[5];
				if(urlParam)
					config.macros.include.handler(w.output,"include",
						paramString.readMacroParams(true),w,paramString,w.tiddler);

				// move nextMatch according to this.lookaheadRegExp, not original prettyLink
				w.nextMatch = this.lookaheadRegExp.lastIndex;
			}
		}
	};
}

//--------------------------------------------------------------------------------
// Change the image formatter so that it
// * takes into account includeURL of the tiddler and recalcs relative urls

if(config.options.STP_hijackImageFormatter) {
	var imageFormatterIndex = getFormatterIndex("image");
	config.extensions.SharedTiddlersPlugin.orig_imageFormatterHandler = config.formatters[imageFormatterIndex].handler;
	config.formatters[imageFormatterIndex].handler = function(w) {

		var lastChildBeforeHandling = w.output.lastChild;
		config.extensions.SharedTiddlersPlugin.orig_imageFormatterHandler.apply(this,arguments);

		if(w.output.lastChild != lastChildBeforeHandling) {

			var elem = w.output.lastChild,
			    // sometimes elem is not the image itself, but a wrapper (<a>)
			    img = elem.tagName.toLowerCase() == "img" ? elem : jQuery(elem).find("img")[0],
			    includeURL = w.tiddler ? w.tiddler.getIncludeURL() : "",
			    imgSrc = jQuery(img).attr("src");

			// take includeURL into account:
			img.src = resolveUrlFrom(imgSrc, includeURL);
		}
	}
}

//================================================================================
// Add inline-management tools by hijacking .edit.handler

config.extensions.SharedTiddlersPlugin.orig_editHandler = config.macros.edit.handler;
config.macros.edit.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	var includeUrl = tiddler.getIncludeURL();
	if(params[0] == "text" && includeUrl){ // only for "text", not other fields
		var e = createTiddlyElement(null,"div");
		e.className = "manageIncludedPanel";
		createTiddlyText(e,"manage the included tiddler: ");

		// go to the source
		var sourceUrl = includeUrl + "#[["+tiddler.title+"]]";
		createExternalLink(e, sourceUrl, "open in the source TiddlyWiki");
		// view the link to the source
		createTiddlyText(e," (");
		createTiddlyButton(e,"view link","view the link to the source",function(e){
			var popup = Popup.create(this);
			createTiddlyText(popup,sourceUrl);
			Popup.show();
			var ev = e || window.event;
			ev.cancelBubble = true;
			if(ev.stopPropagation)
				ev.stopPropagation();
			return false;
		}," ");
		createTiddlyText(e,")");

		// import
		if(!readOnly) {
			createTiddlyText(e," | ");
			createTiddlyButton(e,"import","import this tiddler",function(){
				twWeb.importAndLog(tiddler,1);
			 }," ");
		}

		// reload
		createTiddlyText(e," | ");
		config.macros.reloadIncluded.handler(e,"",null,null,'urls:\'["'+includeUrl+'"]\'',tiddler);

		// other actions

		// if the read only mode is not set, display all tools otherwise ...
		place.appendChild(e);
	}
	return config.extensions.SharedTiddlersPlugin.orig_editHandler(place,macroName,params,wikifier,paramString,tiddler);
};

//================================================================================
// Perform plugin startup tasks

// add this for the "install only once" check (which also prevents conflicts with abego.IncludePlugin)
// (this is also deprecated API for backward compability)
abego.TiddlyWikiIncluder = {
	getIncludes:	twWeb.getIncludedStoresUrls,
	getState:	twWeb.getState,
	getStore:	twWeb.getStore
};
attachToStore();
invokeLater(includeFromIncludeList,100);

// add several more methods to the "API namespace"

window.sharedTiddlersAPI.getIncludes  = twWeb.getIncludedStoresUrls;
window.sharedTiddlersAPI.getState     = twWeb.getState;
window.sharedTiddlersAPI.getStore     = twWeb.getStore;
window.sharedTiddlersAPI.importAndLog = twWeb.importAndLog;

// iterates over all tiddlers of "the store" and all tiddlers of included (and loaded) stores
//
window.sharedTiddlersAPI.forReallyEachTiddler = function(callback) {
	var caller = function() {
		store.forEachTiddler(callback);
	};
	getFunctionUsingForReallyEachTiddler(caller).call(store);		
};
})();
//%/ //
/***
|Description|highlights saving button (bold red) when there's unsaved changes|
|Version|1.0|
|Short status|<<insertEditable container:"@stateComment" size:max cell>>|
|Author|Yakov Litvin|
***/
//{{{
// add the "saveChangesButton" class to the save changes button
config.macros.saveChanges.SCM_orig_handler = config.macros.saveChanges.handler;
config.macros.saveChanges.handler = function(place,macroName,params)
{
	this.SCM_orig_handler.apply(this,arguments);
	place.lastChild.classList.add("saveChangesButton");
};

// styles that highlight save button when there's something to save
var css = ".saveChangesButton { font-weight: bold; color: red !important; }";

TiddlyWiki.prototype.SCM_orig_setDirty = TiddlyWiki.prototype.setDirty;
TiddlyWiki.prototype.setDirty = function(dirty)
{
	if(dirty)
		setStylesheet(css,"highlightSaving");
	else
		removeStyleSheet("highlightSaving");
	return this.SCM_orig_setDirty.apply(this,arguments);
};
//}}}
<<tiddler [[CommonControlElements]] noedit>>
<<tiddler [[CommonAggregationTools]] noedit>>
<html>
<div class="footerBelt">
			<div class="curator img">	<img src="images_teachers/anikina.jpg"> </div>
			<div class="curator">
				<p style="font-family: Extrabold">Все вопросы о кружках</p>
				<p style="font-family: Light"> можете задать администратору
					<br>Аникиной Елизавете
					<br>по номеру +7-925-122-11-61
					<br>или по почте sch.int.dop@gmail.com.       
				</p>
</div>
		<div class="curator img">	<img src="images_teachers/berezkina.jpg">  </div>
		<div class="curator">
			<p style="font-family: Extrabold">Вопросы об оплате</p>
			<p style="font-family: Light">присылайте на&nbsp;почту
			<br>sch.int.dop@gmail.com
			<br>Светлане Геннадьевне Берёзкиной.
			</p>
</div>
		</div>

<div class="footerBeltText">
			<p class="footerBottom">Школа «Интеллектуал»
			<br>Москва, ул. Кременчугская, дом 13
			<br>Телефон приемной: +7 499 445-52-10</p>		
</div>
</div>
</html>
дополнительное образование
Школа «Интеллектуал»
[[StyleSheetYEGE]]
[[StyleSheetProcessTable]]
[[StyleSheetHowTo]]
/*{{{*/
/* parts of web theme that are needed in the admin mode as well */
.inlineBlock	{
	display: inline-block;
}
.margin-bottom {
	margin-bottom: 2em !important;
}
#topLineMenu .inlineBlock {
	padding: 0.5em;
}
#topLineMenu img {
	margin: .5em 1em .5em 3em;
}
#topLineMenu	{
	width: 100%; max-width: 100% !important;
	min-width: 994px;
	background-color: white;
	box-shadow: 0 2px 5px rgba(0,0,0,0.3);
	z-index: 2;
	position: relative;
}
#topLineMenu .inlineBlock a {
	display: inline-block;
	font-family: Extrabold;
	color: #3d3c36;
	font-size: 1.3em;
	margin: 14px 0 0;
	padding: 12px 1.4em;
}
#topLineMenu .inlineBlock a:hover {
	color: #F8C62D;
}
.chosenPageLink	{
	background-color: #f8c62d;
	text-decoration: none;
}
.coursesFilterPanel {
	font-size: 1.2em;
	line-height: 1.7em;
}
input[type="checkbox"] {
	margin: 10px 4px 0 0;
}
.tagged	{ display: none; }

/* courses ~list */
.courses		{
	width: 100%;
	display:flex;
	align-items: top;	/*  Vertical alignment  */
	justify-content: center;/* Horizontal alignment */
}
#tiddlerКурсы_для_дошкольников .coursesContainer { width: 100%; }
#tiddlerКурсы_для_дошкольников .coursesFilterPanel { display: none; }

.course:hover {
	box-shadow: 0 3px 12px rgba(99,112,44,.6);
}
.course > img		{
	width: 100%;
}
.courseFooter		{
	display: block;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	flex-grow: 1;
	width: calc(100% - 2em);
	padding: 0.7em 1em 1em;
	font-size: 1.15em;
}
.courseTitle, .ogeTitle		{
	font-family: Extrabold;
	font-size: 1.4em;
	line-height: 1.1em;
	display: block;
    	flex: 1 0 auto;
	margin: .2em 0 .7em;
}
.courseTitle > span, .ogeTitle > span {
	border-bottom: 1px solid rgba(0,0,0,.5);
}
.course:hover .courseTitle, .oge_course:hover .ogeTitle {
	color: #A5B861;
}
.course:hover .courseTitle > span, .oge_course:hover .ogeTitle > span {
	border-bottom: 1px solid rgba(165,184,97,.8);
}
.courseTeacher {
	display: inline;
}
.floatRight {
	display: inline-block;
	text-align: right;
	margin-left: 1em;
	flex: 1 0 auto;
}
.courseInf {
	display: flex;
	justify-content: flex-end;
	
}
body {
	font-family: 'Open Sans', sans-serif;
	font-size: 12.5px;
	background: #f2f2f2;
}
* {
	vertical-align: top;
	margin: 0;
	padding: 0;
}
p {
	max-width: 900px;
}
div[tags~="курс"], #contacts, #tiddlerЗапись_и_оплата {
	background: white;
	width: 90%;
	max-width: 1200px;
	padding: 4em 5em 6em;
	box-shadow: 0 2px 5px rgba(0,0,0,0.3);
	margin: 0 auto;
}
div[tags~="курс"] .title, #tiddlerЗапись_и_оплата .title {
	font-family: Extrabold;
	font-size: 3.8em;
	line-height: .9em;
	display: block;
	color: black;
}
div[tags~="курс"] .viewer, #contacts, .how_to {
	font-size: 1.5em;
	line-height: 1.3em;
}
#contacts .title {
	font-family: Extrabold;
	margin-bottom: .5em;
	display: block;
	font-size: 2.5em;
	color: black;
}
.wrap_colored {
	padding: 1em 1em 1.2em 1.5em;
	background: #fcf4cb;
}
div[tags~="курс"] p, #contacts p {
	margin-bottom: 0.5em;
}
.circle {
	border-radius: 50%;
}
.colored {
	background: #FFF2D7;
}
.wide {
	display: inline-block;
	width: 100%;
}
.half {
	width: 100%;
}
@media all and (min-width: 1194px) {
.half {
	display: inline-block;
	width: 46%;
	padding-right: 3%;
	min-width: 495px;
}
}
.third {
	display: inline-block;
	width: 31%;
	padding-right: 2%;
	min-width: 270px;
}
@media all and (min-width: 1094px) {
.third {
	padding-right: 1%;
}
}
.two_thirds {
	display: inline-block;
	width: 64%;
	padding-right: 2%;
	min-width: 660px;
}
.small_half {
	display: inline-block;
	width: 46%;
	padding-right: 3%;
}
.small_third {
	display: inline-block;
	width: 31%;
	padding-right: 2%;
}
.small_two_thirds {
	display: inline-block;
	width: 64%;
	padding-right: 2%;
}
.course_description {
}
.course_description li {
    list-style-type: none;
    margin-bottom: .5em;
    text-indent: -1.8em;
}
.course_description li:before {
    content: "— ";
	color: #f8c62d;
	margin-right: .5em;
}
.viewer ul {
    margin-left: 0.3em;
    padding-left: 1.5em;
}
.teacher_text {
	font-size: 0.8em;
	line-height: 1.3;
	padding-bottom: 1.5em;
}
.teacher_img { 
	max-width: 200px;
}
.name {
	font-family: Extrabold;
	font-size: 1.4em;
	line-height: 1.2em;
	padding: 0.5em 0 0;
}
.bordered {
	border-top: 2px solid #f8c62d;
}
.margin-top {
	margin-top: 2em;
}
a {
	color: #1890B5;
	text-decoration: underline;
}
a:hover {
	color: #A5B861;
	background: none;
	text-decoration: underline;
}
.process_description {
	margin-top: 3.5em; 
	padding: .8em 0 0;
	border-top: 2px solid #eee;
}
.img_text {
	display: inline-block;
	vertical-align: top;
	font-size: 0.8em;
	line-height: 1.3;
	margin-bottom: 1em;
}
.img_text img {
	width: 100%;
}
.process_column {
	vertical-align: top;
	display: inline-block;
	width: 28%;
	padding: 0 4.5% 2em 0;
	font-size: 1.05em;
	min-width: 215px;
}
.process_block {
	display: inline-block;
	width: 68%;

}
.enter_block {
	display: inline-block;
	width: 26%;
	padding-right: 5%;
}
.enter {
	display: inline-block;
	max-width: 100%;
	min-width: 210px;
	width: 280px;
	margin: 0 auto;
	text-align: center;
	background: #f8c62d;
	padding: .7em 0;
	font-size: 1.5em;
	border-radius: 5px;
	font-family: Extrabold;
	letter-spacing: .05em;
	text-decoration: none;
	color: #fff;
	margin: .2em 0 .3em;
}
.enter:hover {
	text-decoration: none;
	color: #000;
}
.process_text {
	text-align: left;
	font-size: 0.8em;
	line-height: 1.3;	
}
@media all and (max-width: 1256px) {
	.process_block {
		width: 100%;
	}
	.enter_block {
		width: 100%;
	}
}
@media all and (min-width: 859px) and (max-width: 1256px) {
	.process_text {
		display: inline-block;
		max-width: 50%;
		padding: .5em 0 2em 1em;
	}
}
@media all and (max-width: 858px) {
	.process-text {
		width: 100%;
	}
}
.large_number {
	line-height: 1em;
	display: inline-block;
	font-size: 2.8em;
	font-family: Extrabold;
	padding-right: .18em;
	color: #f8c62d;
}
.bold_words {
	font-size: 1.05em;
	vertical-align: bottom;
	padding: 0 0 .3em;
	line-height: 1em;
	display: inline-block;
	font-family: Extrabold;
}
.light_words {
	font-family: Light;
	line-height: 1.1em;
}
.subtitle {
	font-size: 1.1em;
	margin: .3em 0 1.5em;
}
#preface {
	background-image: url('images_others/main_page.jpg');
	background-size: cover;
	background-position: center center;
	padding: 130px 60% 10% 7%;
	min-height: 70%;
	color: #fff;
}
#preface_head {
	font-family: Light;
	line-height: 1;
	font-size: 3.5em;
	margin-bottom: 1em;
}
#preface_text {
	line-height: 1.3;
	font-family: Light;
	font-size: 1.9em;
}
.gekkon {
	font-family: Light;
	font-size: 1.4em;
	line-height: 1.25em;
	padding: 0.3em 0 2em;
}
.videoWrapper {
	position: relative;
	padding-bottom: 56.25%; /* 16:9 */
	padding-top: 25px;
	height: 0;
}
.videoWrapper iframe {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
}
.subtitle *	{ display: inline-block; }
.floatLeft	{ float: left; margin-right: 1em; }
.floatRight img	{ display: block; }
.floatLeft img	{ display: block; }

/* author's view */
#displayArea	{ margin-bottom: 30% !important; }
/*}}}*/
[[StyleSheetAdaptive]]
/*{{{*/
#topLineMenu > span > a {
	background: url('images_others/logo-22.png') !important;
	display: inline-block;
	height: 69px;
	width: 258px;
	box-sizing; border-box;
	margin: .6em 1em .6em 1.6em;
}
#topLineMenu > span > a:hover {
	background: url('images_others/logo-23.png')  !important;
}
.coursesContainer {
    display: flex;
    flex-flow: row wrap;
	justify-content: flex-start;
    align-content: flex-start;
	max-width: 1130px;
	float: left;
}
.coursesContainerWrap {
	justify-content: center;
	display: flex;
}
.courses {
	width: 100%;
	max-width: 1370px;
	margin: 0 auto;
	display: block;
	align-content: flex-start;
	justify-content: center;
}
.coursesContainer > span {
	display: inline-block;
	margin: 1%;
	max-width: 350px;
	min-width: 270px;
}
.course {
    background-color: white;
    position: relative;
	width: 100%;
	height: 100%;
    box-shadow: 0 2px 5px rgba(0,0,0,0.3);
    cursor: pointer;
	display: flex;
	flex-direction: column;
	justify-content: flex-end; 
}
.coursesFilterPanel {
    max-width: 200px;
	min-width: 200px;
    padding: 0 0 30px 20px;
	font-size: 1.3em;
	line-height: 2em;
	float: right;
}
.coursesContainer .YEGE {
	display: inline-block;
	background: url('images_others/yege.jpg') 100% 100% no-repeat #fcf4cb;
	background-size: cover;
    background-position: top right;
	width: 97%;
	font-size: 1.15em;
	box-shadow: 0 2px 15px rgba(0,0,0,0.2);
	max-width: 1090px;
}
.coursesContainer > span {
	width: 31%;
}
@media all and (max-width: 1123px) {
	.coursesContainer .YEGE {
		width: 98%;
		max-width: 720px;
		background-repeat: no-repeat;
		background-size: contain;
		background-position: bottom center;
	}
	.coursesContainer > span {
		width: 48%;
	}
	#topLineMenu .inlineBlock a {
		padding: 12px 1em;
	}
}
@media all and (min-width: 620px) and (max-width: 824px) {
	.coursesContainer > span, .coursesContainer .YEGE, .coursesFilterPanel {
		max-width: 600px;
	}
	.course {
		flex-direction: row;
		justify-content: flex-start;
	}
	.course img {
		max-height: none;
	}
	.courseInf {
		min-width: 200px;
	}
}
@media all and (max-width: 824px) {
	.coursesContainer > span {
		width: 100%;
	}
	.coursesContainer  {
		justify-content: center;
	}
	.courses {
		display: block;
	}
	.coursesFilterPanel {
		float: none;
		margin: 0 auto;
	}
	#topLineMenu > span > a {
		background: url('images_others/logo-34.png');
		width: 94px;
		margin-right: 0;
	}
	#topLineMenu > span > a:hover {
		background: url('images_others/logo-34.png');
	}
}
@media all and (max-width: 620px) {
	.coursesContainer .YEGE, .coursesFilterPanel {
		background-image: none;
		max-width: 350px;
	}
}
@media all and (min-width: 620px) and (max-width: 1230px) {
	#tiddlerКружки_«Интеллектуала» .coursesContainer > span {
		max-width: 600px;
		width: 100% !important;
	}
	#tiddlerКружки_«Интеллектуала» .course {
		flex-direction: row;
		justify-content: flex-start;
	}
	#tiddlerКружки_«Интеллектуала» .course img {
		max-height: none;
	}
	#tiddlerКружки_«Интеллектуала» .courseInf {
		min-width: 200px;
	}
}

/*}}}*/
/*{{{*/
#tiddlerЗапись_и_оплата
.how_to h2 {
	padding: .2em 0 .4em;
}
.how_to p{
} 
.how_to span {
	padding: .1em 0 0 .7em;
	display: inline-block;
}
.how_to .num {
	font-size: .6em;
	display: inline-block;
	color: #fff;
	background: #a5b861;
	padding: .2em 0 0 .7em;
	width: 1.3em;
	height: 1.8em;
	border-radius: 1em;
}
.step {
	display: inline-block;
	width: calc(100% - 4em);
	padding-bottom: 1.5em;
}
.step_num {
	font-family: Light;
	font-size: 3em;
	padding-top: .2em;
	color: #a5b861;
	display: inline-block;
	width: 1em;
}
/*}}}*/
/*{{{*/
h2 {
	padding: .3em 0 1em;
	font-family: Extrabold;
	color: #000;
	border: none;
	margin: 0;
}
.extrabold, .group_age {
	font-family: Extrabold;
}
.process_description_2 {
	background: #fcf4cb;
	padding: 1em;
	border-top: 2px solid #a5b861;
	margin-top: 2em;
}
.groups {
	line-height: 1.25em;
	font-family: Light;
	border: none !important;
	margin: 0 !important;
}
.groups tr {
	border: none;
}
.groups td {
	width: 290px;
	max-width: 320px;
	padding: .8em 5% 0 .3em;
	border: none;
}
.group_number td {
	font-family: Extrabold;
	color: #fcf4cb;
	font-size: 1.3em;
	padding: 0;
}
.num {
	background: #a5b861;
	padding: .6em 0 0 .7em;
	width: 1.3em;
	height: 1.4em;
	border-radius: 1em;
	display: inline-block;
}
.enter_text {
	font-size: 0.8em;
	line-height: 1.3;
	display: inline-block;
	padding: .8em 0;
}
.enter_block_2 {
	position: relative;
	margin: 3em 0 0;
}
.enter_2 {
	display: inline-block;
	min-width: 210px;
	width: 250px;
	margin: 0 1.5em .3em 0;
	text-align: center;
	background: #f8c62d;
	padding: .7em 0 .8em;
	font-size: 1.5em;
	border-radius: 5px;
	font-family: Extrabold;
	letter-spacing: .05em;
	text-decoration: none;
	color: #000;
}
.enter_2:hover {
	text-decoration: none;
	color: #000;
}
.process_description_2.closed {
	background: #f4f4f4;
	border-color: #cdcdd3;
}
.closed .enter {
	padding: .7em 0 .2em;
	font-size: 1.7em;
	color: #000;
	text-align: left;
	margin: 0;
	background: none;
	letter-spacing: 0;
}
.closed .enter_2 {
	padding: .2em 0 .7em;
	width: 280px;
	font-size: 1.7em;
	color: #000;
	text-align: left;
	margin: 0;
	background: none;
	letter-spacing: 0;
}
.closed .large_number {
	color: #cdcdd3;
}
.closed .process_text {
	font-family: Light;
	font-size: 1.05em;
}
.closed .num, .num.closed {
	background: #cdcdd3;
}
.closed .num {
	color: #f4f4f4;
}
.text-closed {
	color: black;
	padding: .2em 0 0 .7em;
	display: inline-block;
	font-size: .8em;
	color: #cdcdd3;
}
.first_lesson {
	background: url('images_others/rocket-yellow.png') no-repeat;
	padding: 7px 0 10px 40px;
	display: inline-block;
	margin: 1em 0;
	font-weight: 800;
}
td .first_lesson {
	background: url('images_others/rocket-green.png') no-repeat;
	border-top: 2px solid #a5b861;
	padding: 7px 0 10px 40px;
	display: inline-block;
	width: 150px;
	font-weight: 400;
}

/*}}}*/
/*{{{*/
.coursesContainer .YEGE {
	display: inline-block;
	background-image: url('images_others/yege.jpg');
	background-size: cover;
	background-position: top right;
	width: 99%;
	font-size: 1.15em;
	box-shadow: 0 2px 5px rgba(0,0,0,0.3);
	border-top: 2px solid #A5B861;
}
.YEGE > span {
	width: 100% !important;
	display: block;
	margin: 0 !important;
	padding: 0;
}
.YEGE .courseTitle {
	margin: 1.2em 0 0.3em;
	font-size: 1.6em;
}
.yege_courses {
	display: flex;
	justify-content: flex-start;
	flex-flow: row wrap;
	width: 50%;
	padding: 0 3em 3em;
}
.yege_courses .course, .course .course {
	display: inline-block;
	width: 40%;
	padding-right: 10%;
	box-shadow: none;
	background-color: transparent;
	min-width: 192px;
}
.yege_courses .course:hover, .course .course:hover, .course:hover .course {
	box-shadow: none;
}
.h2 {
	font-family: Extrabold;
	font-size: 1.1em;
	text-transform: uppercase;
	letter-spacing: .2em;
	padding: .8em 1.8em;
	background-color: #a5b861;
	display: inline-block;
	margin: -.7em .7em 0 -.7em;
	line-height: 1.4em;
}
.colored {
	padding: 1em 1.2em 1.1em;
	width: 78%;
	display: inline-block;
	margin-bottom: 2em;
}
.OGE {
	background-size: contain;
	background-position: bottom right;
	display: block;
	height: 100%;
}
.true_OGE {
	background: url('images_others/oge.jpg') 100% 100% no-repeat #fcf4cb;
}
.exams {
	background: url('images_others/exams.jpg') 100% 100% no-repeat #fcf4cb;
}
.OGE .course {
	background-color: transparent;
	display: inline-block;
}
.OGE .h2 {
	background: #F8C62D;
	margin-bottom: 1.5em;
}
.ogeTitle {
	margin-bottom: .4em !important;
}
.oge_course {
	padding: 0 1em 2em;
	font-size: 1.15em;
}
/*}}}*/
chkAutoSave: true
chkSaveBackups: false
txtUserName: Яков Литвин
chkInsertTabs: true
chkKeepPermaview: true
/***
|Name|TaggedTemplateTweak|
|Source|http://www.TiddlyTools.com/#TaggedTemplateTweak|
|Documentation|http://www.TiddlyTools.com/#TaggedTemplateTweakInfo|
|Version|1.6.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|use alternative ViewTemplate/EditTemplate for specific tiddlers|
This plugin extends the core function, {{{story.chooseTemplateForTiddler()}}}, so that any given tiddler can be viewed and/or edited using alternatives to the standard tiddler templates.
!!!!!Documentation
>see [[TaggedTemplateTweakInfo]]
!!!!!Code
***/
//{{{
version.extensions.TaggedTemplateTweak = {major: 1, minor: 6, revision: 1, date: new Date(2009,9,2)};

if (!config.options.txtTemplateTweakFieldname)	
	config.options.txtTemplateTweakFieldname = 'template';

Story.prototype.taggedTemplate_chooseTemplateForTiddler = Story.prototype.chooseTemplateForTiddler;
Story.prototype.chooseTemplateForTiddler = function(title,template)
{
	// get core template and split into theme and template name
	var coreTemplate = this.taggedTemplate_chooseTemplateForTiddler.apply(this,arguments);
	var theme = "", template = coreTemplate;
	var parts = template.split(config.textPrimitives.sectionSeparator);
	if (parts[1]) { theme = parts[0]; template = parts[1]; }
	else theme = config.options.txtTheme || ""; // if theme is not specified
	theme += config.textPrimitives.sectionSeparator;

	// look for template using title as prefix
	if (!store.getTaggedTiddlers(title).length) { // if tiddler is not a tag
		if (store.getTiddlerText(theme+title+template))
			return theme+title+template;	// theme##TitleTemplate
		if (store.getTiddlerText(title+template))
			return title+template;		// TitleTemplate
	}

	// look for templates using custom field value as prefix
	var v = store.getValue(title,config.options.txtTemplateTweakFieldname);
	if (store.getTiddlerText(theme+v+template))
		return theme+v+template;	// theme##valueTemplate
	if (store.getTiddlerText(v+template))
		return v+template;		// valueTemplate

	// look for template using tags as prefix
	var tiddler = store.getTiddler(title);
	if (!tiddler) return coreTemplate; // tiddler doesn't exist... use core result
	for (i = 0; i < tiddler.tags.length; i++) {
		var t = tiddler.tags[i]+template; // add tag prefix to template
		var c = t.substr(0,1).toUpperCase()+t.substr(1); // capitalized for WikiWord title
		if (store.getTiddlerText(theme+t))	{ return theme+t; } // theme##tagTemplate
		if (store.getTiddlerText(theme+c))	{ return theme+c; } // theme##TagTemplate
		if (store.getTiddlerText(t)) 		{ return t; }	    // tagTemplate
		if (store.getTiddlerText(c))		{ return c; }	    // TagTemplate
	}

	// no match... use core result
	return coreTemplate;
}
//}}}
TaggedTemplateTweak
<<include "node: TaggedTemplateRepo" filters:"[[TaggedTemplateTweak installer and updater]] [[TaggedTemplateTweak]]" import:4 noRefresh>>
<<include "node: TaggedTemplateRepo" filters:"[[TaggedTemplateTweakInfo]]" noRefresh>>
/***
Пример кода:
{{{
config.commands.closeTiddler.text = "close";
config.commands.closeTiddler.tooltip = "Close this tiddler";

config.commands.closeOthers.text = "close others";
config.commands.closeOthers.tooltip = "Close all other tiddlers";
}}}
(возможно, стоит заменить текст на картинки -- для mobile)
***/
//{{{

//}}}
|~ViewToolbar|closeTiddler closeOthers +editTiddler  jump > fields permalink references deleteTiddler|
|~EditToolbar|+saveTiddler -cancelTiddler references jump deleteTiddler|
[img[images_others/int_do_logo-35.png][Кружки «Интеллектуала»]] {{inlineBlock{
[[Дошкольникам|Кружки для дошкольников]] [[1–4 класс|Кружки для начальной школы]] [[5–11 класс|Кружки для старшей школы]] [[Взрослым|Кружки для взрослых]] [[Запись и оплата]] [[Контакты]]}}}
/***
|Version|0.9.5|
|state|ready; stickToTheTop option needs more refinement; meta to be written|
!~ToDo
* add style sheet for better positioning of items inside menu (~left/right/center classes)
* refine sticky menu behaviour (see the code, especially "when a tiddler is opened on top" issue)
* check how this interacts with TiddlersBarPlugin
To edit: [[TopLineMenu]]
!Code
***/
//{{{
// menu generating handler; create a macro instead?
config.macros.topLineMenu = {
	menuId: "topLineMenu",
	tiddlerName: "TopLineMenu",
	menuPlaceId: "displayArea",
	beforeSelector: "#tiddlerDisplay",
	stickToTheTop: false,
	handler: function() {

		if (document.getElementById(this.menuId))
			return;
		var place = document.getElementById(this.menuPlaceId);
		var theMenu = document.createElement("div");
		theMenu.setAttribute("id", this.menuId);
		place.insertBefore(theMenu, place.firstChild);

		wikify("<<tiddler [["+this.tiddlerName+"]]>>",theMenu);
		if(this.stickToTheTop) {
			theMenu.style.maxWidth = place.offsetWidth+"px";
			//# make this adapt when a sidebar is hidden
			
			var height = theMenu.offsetHeight;
			//# update on this.tiddlerName content edit
			
			jQuery(place).find(this.beforeSelector).css("margin-top",height+"px");
			//# fix: when a tiddler is opened on top, this doesn't ensures tiddler's
			//  title is visible
			
			// fix: with margins on startup theMenu was positioned
			// to the top of tiddlerDisplay, not to the top of displayArea
			jQuery(window).scroll();
			
			//# set z-index to hover above CodeMirror editor
			
			// may be of interest:
			// - http://stackoverflow.com/questions/37849710/making-one-navbar-sticky-when-user-scrolls
		}
	},
	init: function() {
		
		if(!this.stickToTheTop) return;
		
		jQuery(window).on("scroll",function(){
			
			var menuElement = document.getElementById(config.macros.topLineMenu.menuId),
			    header = document.getElementsByClassName("header")[0],
			    headerBottom = header.offsetHeight ? (header.offsetTop + header.offsetHeight - findScrollY()) : 0,
			    position = findScrollY() + Math.max(headerBottom,0);
			menuElement.style.top = position+"px";
		});
		setStylesheet("#"+config.macros.topLineMenu.menuId+" {"+
			      "position:absolute;"+
		"}","topLinePositionCSS")
	}
};

// old-fashioned way to launch handler, copied from http://tiddlywiki.squize.org/#HoverMenuPlugin
window.old_restart_before_topLineMenu = restart;
restart = function() {
	window.old_restart_before_topLineMenu();
	config.macros.topLineMenu.handler();
};

// make TopLineMenu resistant to refreshing (refreshPageTemplate)
window.old_refreshPageTemplate_before_topLineMenu = refreshPageTemplate;
refreshPageTemplate = function(title) {
	window.old_refreshPageTemplate_before_topLineMenu(title);
	config.macros.topLineMenu.handler();
};
//}}}
<!--{{{-->
<div id="topLineMenu">
  <span refresh="content" tiddler="TopLineMenu"></span>
</div>
<div class='header' role='banner'></div> <!-- for the TopLineMenu to work -->
<div id='displayArea' role='main'>
  <div id='messageArea'></div>
  <div id='tiddlerDisplay'></div>
</div>
<div id='footer' refresh='content' tiddler='SiteFooter'></div>
<!--}}}-->
[[StyleSheet]]
[[FirstPageStyleSheet]]
/*{{{*/
#displayArea	{ margin: 0 !important; }
#backstageButton{ display: none !important; }
.toolbar { display: none !important; }
.tiddler > .title {
	display: none;
}

#tiddlerКурсы		{
	background-color: #f1f1f1;
}
.tagged			{
	display: none;
}
#footer {
	margin: 50px 0 30px;
	padding: 10px 0;
}
.footerBelt {
	padding: 2em 5em;
	max-width: 1200px;
	margin: 0 auto;
	border-top: 2px solid #f8c62d;
}
.narrow {
	max-width: 978px !important;
}
.footerBeltText {
	font-family: Extrabold;
	font-size: 1.7em;
	text-align: left;
	display: inline-block;

}
.curator {
	font-family: Light;
	font-size: 1.5em;
	text-align: left;
	display: inline-block;
	width: 15%;
	max-width: 450px;
	min-width: 150px;
	margin: 0 1.2em 1em 1em;
}
.curator img {
	width: 100%;
}
.footerBottom	{
	font-size: 0.7em;
	font-family: 'Open Sans', sans-serif;
	font-weight: 400;
	margin: 5px 0 0 20em;
}

/* adaptive parts (font-size [use vw/vh/vmin/vmax] etc) */

	/* smartphones and tablets */

	/* smartphones */
/*@media screen and (max-width: 700px) {
	body { font-size: 0.6cm; }  not adaptive yet ; see also http://trentwalton.com/2011/05/10/fit-to-scale/ 
}*/
/*}}}*/
/***
см. также SetCommonStylesPlugin
***/
|PageTemplate|WebPageTemplate|
|ViewTemplate|WebViewTemplate|
|StyleSheet|WebStyleSheet|
<!--{{{-->
<!-- <div class='toolbar' role='navigation' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div> -->
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
|>|!Настройки поиска|
|>|<<option chkUseYourSearch>> Включить расширенный поиск|
|!|<<option chkPreviewText>> Предпросмотр найденного текста|
|!|<<option chkSearchAsYouType>> Искать по мере ввода (не нужно нажимать enter, чтобы начать поиск)|
|!|Использовать фильтры поиска {{DDnc{или наоборот, искать в этих полях, когда фильтр не задан? или и то, и то?}}}:<<option chkSearchInTitle>>В заголовке ('!')     <<option chkSearchInText>>В тексте ('%')     <<option chkSearchInTags>>В тэгах ('#')    <<option chkSearchExtendedFields>>В других полях<html><br><font size="-2">The fields of tiddlers that are searched when you don't explicitly specify a filter in the search text <br>(Explictly specify fields с помощью одного или нескольких префиксов '!', '%', '#' и 'fieldname:' перед искомым словом/текстом).</font></html>|
|!|Число результатов на странице результатов поиска: <<option txtItemsPerPage>>|
|!|Число результатов, отображаемое при включённом предпросмотре: <<option txtItemsPerPageWithPreview>>|
/***
|''Name:''|YourSearchPlugin|
|''Version:''|2.1.6 (2012-04-19)|
|''Summary:''|Search your TiddlyWiki with advanced search features such as result lists, tiddler preview, result ranking, search filters, combined searches and many more.|
|''Source:''|http://tiddlywiki.abego-software.de/#YourSearchPlugin|
|''~CoreVersion:''|2.1|
|''Requires:''|~SavingWithRenamingFix|
|~|~SavingWithRenamingFix is not required, but if is used, should be launched first|
|''Twitter:''|[[@abego|https://twitter.com/#!/abego]]|
|''GitHub:''|https://github.com/abego/YourSearchPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''License:''|[[BSD open source license|http://www.abego-software.de/legal/apl-v10.html]]|
!About ~YourSearch
~YourSearch gives you a bunch of new features to simplify and speed up your daily searches in ~TiddlyWiki. It seamlessly integrates into the standard ~TiddlyWiki search: just start typing into the 'search' field and explore!

For more information see [[Help|YourSearch Help]].
!Source Code
***/
/***
This plugin's source code is compressed (and hidden). 
Use this [[link|https://github.com/abego/YourSearchPlugin/blob/master/src/main/js/YourSearchPlugin-src.js]] to get the readable source code.
***/
///%
if(!version.extensions.YourSearchPlugin){version.extensions.YourSearchPlugin={major:2,minor:1,revision:6,source:"http://tiddlywiki.abego-software.de/#YourSearchPlugin",licence:"[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",copyright:"Copyright (c) abego Software GmbH, 2005-2012 (www.abego-software.de)"};if(!window.abego){window.abego={}}if(!Array.forEach){Array.forEach=function(c,e,d){for(var b=0,a=c.length;b<a;b++){e.call(d,c[b],b,c)}};Array.prototype.forEach=function(d,c){for(var b=0,a=this.length;b<a;b++){d.call(c,this[b],b,this)}}}abego.toInt=function(b,a){if(!b){return a}var c=parseInt(b);return(c==NaN)?a:c};abego.createEllipsis=function(a){var b=createTiddlyElement(a,"span");b.innerHTML="&hellip;"};abego.shallowCopy=function(b){if(!b){return b}var a={};for(var c in b){a[c]=b[c]}return a};abego.copyOptions=function(a){return !a?{}:abego.shallowCopy(a)};abego.countStrings=function(d,c){if(!c){return 0}var a=c.length;var f=0;var e=0;while(true){var b=d.indexOf(c,e);if(b<0){return f}f++;e=b+a}return f};abego.getBracedText=function(j,e,a){if(!e){e=0}var k=/\{([^\}]*)\}/gm;k.lastIndex=e;var d=k.exec(j);if(d){var l=d[1];var b=abego.countStrings(l,"{");if(!b){if(a){a.lastIndex=k.lastIndex}return l}var g=j.length;for(var f=k.lastIndex;f<g&&b;f++){var h=j.charAt(f);if(h=="{"){b++}else{if(h=="}"){b--}}}if(!b){if(a){a.lastIndex=f-1}return j.substring(d.index+1,f-1)}}};abego.select=function(d,c,b,a){if(!a){a=[]}d.forEach(function(e){if(c.call(b,e)){a.push(e)}});return a};abego.consumeEvent=function(a){if(a.stopPropagation){a.stopPropagation()}if(a.preventDefault){a.preventDefault()}a.cancelBubble=true;a.returnValue=true};abego.TiddlerFilterTerm=function(d,b){if(!b){b={}}var c=d;if(!b.textIsRegExp){c=d.escapeRegExp();if(b.fullWordMatch){c="\\b"+c+"\\b"}}var a=new RegExp(c,"m"+(b.caseSensitive?"":"i"));this.tester=new abego.MultiFieldRegExpTester(a,b.fields,b.withExtendedFields)};abego.TiddlerFilterTerm.prototype.test=function(a){return this.tester.test(a)};abego.parseNewTiddlerCommandLine=function(c){var a=/(.*?)\.(?:\s+|$)([^#]*)(#.*)?/.exec(c);if(!a){a=/([^#]*)()(#.*)?/.exec(c)}if(a){var d;if(a[3]){var b=a[3].replace(/#/g,"");d=b.parseParams("tag")}else{d=[[]]}var e=a[2]?a[2].trim():"";d.push({name:"text",value:e});d[0].text=[e];return{title:a[1].trim(),params:d}}else{return{title:c.trim(),params:[[]]}}};abego.parseTiddlerFilterTerm=function(queryText,offset,options){var re=/\s*(?:(?:\{([^\}]*)\})|(?:(=)|([#%!])|(?:(\w+)\s*\:(?!\/\/))|(?:(?:("(?:(?:\\")|[^"])+")|(?:\/((?:(?:\\\/)|[^\/])+)\/)|(\w+\:\/\/[^\s]+)|([^\s\)\-\"]+)))))/mg;var shortCuts={"!":"title","%":"text","#":"tags"};var fieldNames={};var fullWordMatch=false;re.lastIndex=offset;while(true){var i=re.lastIndex;var m=re.exec(queryText);if(!m||m.index!=i){throw"Word or String literal expected"}if(m[1]){var lastIndexRef={};var code=abego.getBracedText(queryText,0,lastIndexRef);if(!code){throw"Invalid {...} syntax"}var f=Function("tiddler","return ("+code+");");return{func:f,lastIndex:lastIndexRef.lastIndex,markRE:null}}if(m[2]){fullWordMatch=true}else{if(m[3]){fieldNames[shortCuts[m[3]]]=1}else{if(m[4]){fieldNames[m[4]]=1}else{var textIsRegExp=m[6];var text=m[5]?window.eval(m[5]):m[6]?m[6]:m[7]?m[7]:m[8];options=abego.copyOptions(options);options.fullWordMatch=fullWordMatch;options.textIsRegExp=textIsRegExp;var fields=[];for(var n in fieldNames){fields.push(n)}if(fields.length==0){options.fields=options.defaultFields}else{options.fields=fields;options.withExtendedFields=false}var term=new abego.TiddlerFilterTerm(text,options);var markREText=textIsRegExp?text:text.escapeRegExp();if(markREText&&fullWordMatch){markREText="\\b"+markREText+"\\b"}return{func:function(tiddler){return term.test(tiddler)},lastIndex:re.lastIndex,markRE:markREText?"(?:"+markREText+")":null}}}}}};abego.BoolExp=function(i,c,j){this.s=i;var h=j&&j.defaultOperationIs_OR;var e=/\s*\)/g;var f=/\s*(?:(and|\&\&)|(or|\|\|))/gi;var b=/\s*(\-|not)?(\s*\()?/gi;var a;var d=function(p){b.lastIndex=p;var l=b.exec(i);var o=false;var k=null;if(l&&l.index==p){p+=l[0].length;o=l[1];if(l[2]){var n=a(p);e.lastIndex=n.lastIndex;if(!e.exec(i)){throw"Missing ')'"}k={func:n.func,lastIndex:e.lastIndex,markRE:n.markRE}}}if(!k){k=c(i,p,j)}if(o){k.func=(function(m){return function(q){return !m(q)}})(k.func);k.markRE=null}return k};a=function(s){var n=d(s);while(true){var p=n.lastIndex;f.lastIndex=p;var k=f.exec(i);var o;var q;if(k&&k.index==p){o=!k[1];q=d(f.lastIndex)}else{try{q=d(p)}catch(r){return n}o=h}n.func=(function(t,m,l){return l?function(u){return t(u)||m(u)}:function(u){return t(u)&&m(u)}})(n.func,q.func,o);n.lastIndex=q.lastIndex;if(!n.markRE){n.markRE=q.markRE}else{if(q.markRE){n.markRE=n.markRE+"|"+q.markRE}}}};var g=a(0);this.evalFunc=g.func;if(g.markRE){this.markRegExp=new RegExp(g.markRE,j.caseSensitive?"mg":"img")}};abego.BoolExp.prototype.exec=function(){return this.evalFunc.apply(this,arguments)};abego.BoolExp.prototype.getMarkRegExp=function(){return this.markRegExp};abego.BoolExp.prototype.toString=function(){return this.s};abego.MultiFieldRegExpTester=function(b,a,c){this.re=b;this.fields=a?a:["title","text","tags"];this.withExtendedFields=c};abego.MultiFieldRegExpTester.prototype.test=function(b){var d=this.re;for(var a=0;a<this.fields.length;a++){var c=store.getValue(b,this.fields[a]);if(typeof c=="string"&&d.test(c)){return this.fields[a]}}if(this.withExtendedFields){return store.forEachField(b,function(e,g,f){return typeof f=="string"&&d.test(f)?g:null},true)}return null};abego.TiddlerQuery=function(b,a,d,c,e){if(d){this.regExp=new RegExp(b,a?"mg":"img");this.tester=new abego.MultiFieldRegExpTester(this.regExp,c,e)}else{this.expr=new abego.BoolExp(b,abego.parseTiddlerFilterTerm,{defaultFields:c,caseSensitive:a,withExtendedFields:e})}this.getQueryText=function(){return b};this.getUseRegExp=function(){return d};this.getCaseSensitive=function(){return a};this.getDefaultFields=function(){return c};this.getWithExtendedFields=function(){return e}};abego.TiddlerQuery.prototype.test=function(a){if(!a){return false}if(this.regExp){return this.tester.test(a)}return this.expr.exec(a)};abego.TiddlerQuery.prototype.filter=function(a){return abego.select(a,this.test,this)};abego.TiddlerQuery.prototype.getMarkRegExp=function(){if(this.regExp){return"".search(this.regExp)>=0?null:this.regExp}return this.expr.getMarkRegExp()};abego.TiddlerQuery.prototype.toString=function(){return(this.regExp?this.regExp:this.expr).toString()};abego.PageWiseRenderer=function(){this.firstIndexOnPage=0};merge(abego.PageWiseRenderer.prototype,{setItems:function(a){this.items=a;this.setFirstIndexOnPage(0)},getMaxPagesInNavigation:function(){return 10},getItemsCount:function(a){return this.items?this.items.length:0},getCurrentPageIndex:function(){return Math.floor(this.firstIndexOnPage/this.getItemsPerPage())},getLastPageIndex:function(){return Math.floor((this.getItemsCount()-1)/this.getItemsPerPage())},setFirstIndexOnPage:function(a){this.firstIndexOnPage=Math.min(Math.max(0,a),this.getItemsCount()-1)},getFirstIndexOnPage:function(){this.firstIndexOnPage=Math.floor(this.firstIndexOnPage/this.getItemsPerPage())*this.getItemsPerPage();return this.firstIndexOnPage},getLastIndexOnPage:function(){return Math.min(this.getFirstIndexOnPage()+this.getItemsPerPage()-1,this.getItemsCount()-1)},onPageChanged:function(a,b){},renderPage:function(a){if(a.beginRendering){a.beginRendering(this)}try{if(this.getItemsCount()){var d=this.getLastIndexOnPage();var c=-1;for(var b=this.getFirstIndexOnPage();b<=d;b++){c++;a.render(this,this.items[b],b,c)}}}finally{if(a.endRendering){a.endRendering(this)}}},addPageNavigation:function(c){if(!this.getItemsCount()){return}var k=this;var g=function(n){if(!n){n=window.event}abego.consumeEvent(n);var i=abego.toInt(this.getAttribute("page"),0);var m=k.getCurrentPageIndex();if(i==m){return}var l=i*k.getItemsPerPage();k.setFirstIndexOnPage(l);k.onPageChanged(i,m)};var e;var h=this.getCurrentPageIndex();var f=this.getLastPageIndex();if(h>0){e=createTiddlyButton(c,"Previous","Go to previous page (Shortcut: Alt-'<')",g,"prev");e.setAttribute("page",(h-1).toString());e.setAttribute("accessKey","<")}for(var d=-this.getMaxPagesInNavigation();d<this.getMaxPagesInNavigation();d++){var b=h+d;if(b<0){continue}if(b>f){break}var a=(d+h+1).toString();var j=b==h?"currentPage":"otherPage";e=createTiddlyButton(c,a,"Go to page %0".format([a]),g,j);e.setAttribute("page",(b).toString())}if(h<f){e=createTiddlyButton(c,"Next","Go to next page (Shortcut: Alt-'>')",g,"next");e.setAttribute("page",(h+1).toString());e.setAttribute("accessKey",">")}}});abego.LimitedTextRenderer=function(){var l=40;var c=4;var k=function(p,z,v){var q=p.length;if(q==0){p.push({start:z,end:v});return}var u=0;for(;u<q;u++){var w=p[u];if(w.start<=v&&z<=w.end){var o;var s=u+1;for(;s<q;s++){o=p[s];if(o.start>v||z>w.end){break}}var x=z;var y=v;for(var t=u;t<s;t++){o=p[t];x=Math.min(x,o.start);y=Math.max(y,o.end)}p.splice(u,s-u,{start:x,end:y});return}if(w.start>v){break}}p.splice(u,0,{start:z,end:v})};var d=function(n){var q=0;for(var p=0;p<n.length;p++){var o=n[p];q+=o.end-o.start}return q};var b=function(n){return(n>="a"&&n<="z")||(n>="A"&&n<="Z")||n=="_"};var f=function(p,r){if(!b(p[r])){return null}for(var o=r-1;o>=0&&b(p[o]);o--){}var q=o+1;var t=p.length;for(o=r+1;o<t&&b(p[o]);o++){}return{start:q,end:o}};var a=function(o,q,p){var n;if(p){n=f(o,q)}else{if(q<=0){return q}n=f(o,q-1)}if(!n){return q}if(p){if(n.start>=q-c){return n.start}if(n.end<=q+c){return n.end}}else{if(n.end<=q+c){return n.end}if(n.start>=q-c){return n.start}}return q};var j=function(r,q){var n=[];if(q){var u=0;do{q.lastIndex=u;var o=q.exec(r);if(o){if(u<o.index){var p=r.substring(u,o.index);n.push({text:p})}n.push({text:o[0],isMatch:true});u=o.index+o[0].length}else{n.push({text:r.substr(u)});break}}while(true)}else{n.push({text:r})}return n};var i=function(p){var n=0;for(var o=0;o<p.length;o++){if(p[o].isMatch){n++}}return n};var h=function(v,u,q,t,o){var w=Math.max(Math.floor(o/(t+1)),l);var n=Math.max(w-(q-u),0);var r=Math.min(Math.floor(q+n/3),v.length);var p=Math.max(r-w,0);p=a(v,p,true);r=a(v,r,false);return{start:p,end:r}};var m=function(r,y,o){var n=[];var v=i(r);var u=0;for(var p=0;p<r.length;p++){var x=r[p];var w=x.text;if(x.isMatch){var q=h(y,u,u+w.length,v,o);k(n,q.start,q.end)}u+=w.length}return n};var g=function(t,p,o){var n=o-d(p);while(n>0){if(p.length==0){k(p,0,a(t,o,false));return}else{var q=p[0];var v;var r;if(q.start==0){v=q.end;if(p.length>1){r=p[1].start}else{k(p,v,a(t,v+n,false));return}}else{v=0;r=q.start}var u=Math.min(r,v+n);k(p,v,u);n-=(u-v)}}};var e=function(p,x,w,n,o){if(n.length==0){return}var u=function(z,I,D,F,C){var H;var G;var E=0;var B=0;var A=0;for(;B<D.length;B++){H=D[B];G=H.text;if(F<E+G.length){A=F-E;break}E+=G.length}var y=C-F;for(;B<D.length&&y>0;B++){H=D[B];G=H.text.substr(A);A=0;if(G.length>y){G=G.substr(0,y)}if(H.isMatch){createTiddlyElement(z,"span",null,"marked",G)}else{createTiddlyText(z,G)}y-=G.length}if(C<I.length){abego.createEllipsis(z)}};if(n[0].start>0){abego.createEllipsis(p)}var q=o;for(var r=0;r<n.length&&q>0;r++){var t=n[r];var v=Math.min(t.end-t.start,q);u(p,x,w,t.start,t.start+v);q-=v}};this.render=function(p,q,o,t){if(q.length<o){o=q.length}var r=j(q,t);var n=m(r,q,o);g(q,n,o);e(p,q,r,n,o)}};(function(){function alertAndThrow(msg){alert(msg);throw msg}if(version.major<2||(version.major==2&&version.minor<1)){alertAndThrow("YourSearchPlugin requires TiddlyWiki 2.1 or newer.\n\nCheck the archive for YourSearch plugins\nsupporting older versions of TiddlyWiki.\n\nArchive: http://tiddlywiki.abego-software.de/archive")}abego.YourSearch={};var lastResults=undefined;var lastQuery=undefined;var setLastResults=function(array){lastResults=array};var getLastResults=function(){return lastResults?lastResults:[]};var getLastResultsCount=function(){return lastResults?lastResults.length:0};var matchInTitleWeight=4;var precisionInTitleWeight=10;var matchInTagsWeight=2;var getMatchCount=function(s,re){var m=s.match(re);return m?m.length:0};var standardRankFunction=function(tiddler,query){var markRE=query.getMarkRegExp();if(!markRE){return 1}var matchesInTitle=tiddler.title.match(markRE);var nMatchesInTitle=matchesInTitle?matchesInTitle.length:0;var nMatchesInTags=getMatchCount(tiddler.getTags(),markRE);var lengthOfMatchesInTitle=matchesInTitle?matchesInTitle.join("").length:0;var precisionInTitle=tiddler.title.length>0?lengthOfMatchesInTitle/tiddler.title.length:0;var rank=nMatchesInTitle*matchInTitleWeight+nMatchesInTags*matchInTagsWeight+precisionInTitle*precisionInTitleWeight+1;return rank};var findMatches=function(store,searchText,caseSensitive,useRegExp,sortField,excludeTag){lastQuery=null;var candidates=store.reverseLookup("tags",excludeTag,false);try{var defaultFields=[];if(config.options.chkSearchInTitle){defaultFields.push("title")}if(config.options.chkSearchInText){defaultFields.push("text")}if(config.options.chkSearchInTags){defaultFields.push("tags")}lastQuery=new abego.TiddlerQuery(searchText,caseSensitive,useRegExp,defaultFields,config.options.chkSearchExtendedFields)}catch(e){return[]}var results=lastQuery.filter(candidates);var rankFunction=abego.YourSearch.getRankFunction();for(var i=0;i<results.length;i++){var tiddler=results[i];var rank=rankFunction(tiddler,lastQuery);tiddler.searchRank=rank}if(!sortField){sortField="title"}var sortFunction=function(a,b){var searchRankDiff=a.searchRank-b.searchRank;if(searchRankDiff==0){if(a[sortField]==b[sortField]){return(0)}else{return(a[sortField]<b[sortField])?-1:+1}}else{return(searchRankDiff>0)?-1:+1}};results.sort(sortFunction);return results};var maxCharsInTitle=80;var maxCharsInTags=50;var maxCharsInText=250;var maxCharsInField=50;var itemsPerPageDefault=25;var itemsPerPageWithPreviewDefault=10;var yourSearchResultID="yourSearchResult";var yourSearchResultItemsID="yourSearchResultItems";var lastSearchText=null;var resultElement=null;var searchInputField=null;var searchButton=null;var lastNewTiddlerButton=null;var initStylesheet=function(){if(version.extensions.YourSearchPlugin.styleSheetInited){return}version.extensions.YourSearchPlugin.styleSheetInited=true;setStylesheet(store.getTiddlerText("YourSearchStyleSheet"),"yourSearch")};var isResultOpen=function(){return resultElement!=null&&resultElement.parentNode==document.body};var closeResult=function(){if(isResultOpen()){document.body.removeChild(resultElement)}};var closeResultAndDisplayTiddler=function(e){closeResult();var title=this.getAttribute("tiddlyLink");if(title){var withHilite=this.getAttribute("withHilite");var oldHighlightHack=highlightHack;if(withHilite&&withHilite=="true"&&lastQuery){highlightHack=lastQuery.getMarkRegExp()}story.displayTiddler(this,title);highlightHack=oldHighlightHack}return(false)};var adjustResultPositionAndSize=function(){if(!searchInputField){return}var root=searchInputField;var rootLeft=findPosX(root);var rootTop=findPosY(root);var rootHeight=root.offsetHeight;var popupLeft=rootLeft;var popupTop=rootTop+rootHeight;var winWidth=findWindowWidth();if(winWidth<resultElement.offsetWidth){resultElement.style.width=(winWidth-100)+"px";winWidth=findWindowWidth()}var popupWidth=resultElement.offsetWidth;if(popupLeft+popupWidth>winWidth){popupLeft=winWidth-popupWidth-30}if(popupLeft<0){popupLeft=0}resultElement.style.left=popupLeft+"px";resultElement.style.top=popupTop+"px";resultElement.style.display="block"};var scrollVisible=function(){if(resultElement){window.scrollTo(0,ensureVisible(resultElement))}if(searchInputField){window.scrollTo(0,ensureVisible(searchInputField))}};var ensureResultIsDisplayedNicely=function(){adjustResultPositionAndSize();scrollVisible()};var indexInPage=undefined;var currentTiddler=undefined;var pager=new abego.PageWiseRenderer();var MyItemRenderer=function(parent){this.itemHtml=store.getTiddlerText("YourSearchItemTemplate");if(!this.itemHtml){alertAndThrow("YourSearchItemTemplate not found")}this.place=document.getElementById(yourSearchResultItemsID);if(!this.place){this.place=createTiddlyElement(parent,"div",yourSearchResultItemsID)}};merge(MyItemRenderer.prototype,{render:function(pager,object,index,indexOnPage){indexInPage=indexOnPage;currentTiddler=object;var item=createTiddlyElement(this.place,"div",null,"yourSearchItem");item.innerHTML=this.itemHtml;applyHtmlMacros(item,null);refreshElements(item,null)},endRendering:function(pager){currentTiddler=null}});var refreshResult=function(){if(!resultElement||!searchInputField){return}var html=store.getTiddlerText("YourSearchResultTemplate");if(!html){html="<b>Tiddler YourSearchResultTemplate not found</b>"}resultElement.innerHTML=html;applyHtmlMacros(resultElement,null);refreshElements(resultElement,null);var itemRenderer=new MyItemRenderer(resultElement);pager.renderPage(itemRenderer);ensureResultIsDisplayedNicely()};pager.getItemsPerPage=function(){var n=(config.options.chkPreviewText)?abego.toInt(config.options.txtItemsPerPageWithPreview,itemsPerPageWithPreviewDefault):abego.toInt(config.options.txtItemsPerPage,itemsPerPageDefault);return(n>0)?n:1};pager.onPageChanged=function(){refreshResult()};var reopenResultIfApplicable=function(){if(searchInputField==null||!config.options.chkUseYourSearch){return}if((searchInputField.value==lastSearchText)&&lastSearchText&&!isResultOpen()){if(resultElement&&(resultElement.parentNode!=document.body)){document.body.appendChild(resultElement);ensureResultIsDisplayedNicely()}else{abego.YourSearch.onShowResult(true)}}};var invalidateResult=function(){closeResult();resultElement=null;lastSearchText=null};var isDescendantOrSelf=function(self,e){while(e!=null){if(self==e){return true}e=e.parentNode}return false};var onDocumentClick=function(e){if(e.target==searchInputField){return}if(e.target==searchButton){return}if(resultElement&&isDescendantOrSelf(resultElement,e.target)){return}closeResult()};var onDocumentKeyup=function(e){if(e.keyCode==27){closeResult()}};addEvent(document,"click",onDocumentClick);addEvent(document,"keyup",onDocumentKeyup);var myStorySearch=function(text,useCaseSensitive,useRegExp){lastSearchText=text;setLastResults(findMatches(store,text,useCaseSensitive,useRegExp,"title","excludeSearch"));abego.YourSearch.onShowResult()};var myMacroSearchHandler=function(place,macroName,params,wikifier,paramString,tiddler){initStylesheet();lastSearchText="";var searchTimeout=null;var doSearch=function(txt){if(config.options.chkUseYourSearch){myStorySearch(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch)}else{story.search(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch)}lastSearchText=txt.value};var clickHandler=function(e){doSearch(searchInputField);return false};var keyHandler=function(e){if(!e){e=window.event}searchInputField=this;switch(e.keyCode){case 13:if(e.ctrlKey&&lastNewTiddlerButton&&isResultOpen()){lastNewTiddlerButton.onclick.apply(lastNewTiddlerButton,[e])}else{doSearch(this)}break;case 27:if(isResultOpen()){closeResult()}else{this.value="";clearMessage()}break}if(String.fromCharCode(e.keyCode)==this.accessKey||e.altKey){reopenResultIfApplicable()}if(this.value.length<3&&searchTimeout){clearTimeout(searchTimeout)}if(this.value.length>2){if(this.value!=lastSearchText){if(!config.options.chkUseYourSearch||config.options.chkSearchAsYouType){if(searchTimeout){clearTimeout(searchTimeout)}var txt=this;searchTimeout=setTimeout(function(){doSearch(txt)},500)}}else{if(searchTimeout){clearTimeout(searchTimeout)}}}if(this.value.length==0){closeResult()}};var focusHandler=function(e){this.select();clearMessage();reopenResultIfApplicable()};var args=paramString.parseParams("list",null,true);var buttonAtRight=getFlag(args,"buttonAtRight");var sizeTextbox=getParam(args,"sizeTextbox",this.sizeTextbox);var txt=createTiddlyElement(null,"input",null,"txtOptionInput searchField",null);if(params[0]){txt.value=params[0]}txt.onkeyup=keyHandler;txt.onfocus=focusHandler;txt.setAttribute("size",sizeTextbox);txt.setAttribute("accessKey",this.accessKey);txt.setAttribute("autocomplete","off");if(config.browser.isSafari){txt.setAttribute("type","search");txt.setAttribute("results","5")}else{if(!config.browser.isIE){txt.setAttribute("type","text")}}var btn=createTiddlyButton(null,this.label,this.prompt,clickHandler);if(place){if(!buttonAtRight){place.appendChild(btn)}place.appendChild(txt);if(buttonAtRight){place.appendChild(btn)}}searchInputField=txt;searchButton=btn};var openAllFoundTiddlers=function(){closeResult();var results=getLastResults();var n=results.length;if(n){var titles=[];for(var i=0;i<n;i++){titles.push(results[i].title)}story.displayTiddlers(null,titles)}};var createOptionWithRefresh=function(place,optionParams,wikifier,tiddler){invokeMacro(place,"option",optionParams,wikifier,tiddler);var elem=place.lastChild;var oldOnClick=elem.onclick;elem.onclick=function(e){var result=oldOnClick.apply(this,arguments);refreshResult();return result};return elem};var removeTextDecoration=function(s){var removeThis=["''","{{{","}}}","//","<<<","/***","***/"];var reText="";for(var i=0;i<removeThis.length;i++){if(i!=0){reText+="|"}reText+="("+removeThis[i].escapeRegExp()+")"}return s.replace(new RegExp(reText,"mg"),"").trim()};var getShortCutNumber=function(){var i=indexInPage;return(i>=0&&i<=9)?(i<9?(i+1):0):-1};var limitedTextRenderer=new abego.LimitedTextRenderer();var renderLimitedText=function(place,s,maxLen){limitedTextRenderer.render(place,s,maxLen,lastQuery.getMarkRegExp())};var oldTiddlyWikiSaveTiddler=TiddlyWiki.prototype.saveTiddler;TiddlyWiki.prototype.saveTiddler=function(title,newTitle,newBody,modifier,modified,tags,fields){oldTiddlyWikiSaveTiddler.apply(this,arguments);invalidateResult()};var oldTiddlyWikiRemoveTiddler=TiddlyWiki.prototype.removeTiddler;TiddlyWiki.prototype.removeTiddler=function(title){oldTiddlyWikiRemoveTiddler.apply(this,arguments);invalidateResult()};config.macros.yourSearch={label:"yourSearch",prompt:"Gives access to the current/last YourSearch result",handler:function(place,macroName,params,wikifier,paramString,tiddler){if(params.length==0){return}var name=params[0];var func=config.macros.yourSearch.funcs[name];if(func){func(place,macroName,params,wikifier,paramString,tiddler)}},tests:{"true":function(){return true},"false":function(){return false},found:function(){return getLastResultsCount()>0},previewText:function(){return config.options.chkPreviewText}},funcs:{itemRange:function(place){if(getLastResultsCount()){var lastIndex=pager.getLastIndexOnPage();var s="%0 - %1".format([pager.getFirstIndexOnPage()+1,lastIndex+1]);createTiddlyText(place,s)}},count:function(place){createTiddlyText(place,getLastResultsCount().toString())},query:function(place){if(lastQuery){createTiddlyText(place,lastQuery.toString())}},version:function(place){var t="YourSearch %0.%1.%2".format([version.extensions.YourSearchPlugin.major,version.extensions.YourSearchPlugin.minor,version.extensions.YourSearchPlugin.revision]);var e=createTiddlyElement(place,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de/#YourSearchPlugin");e.innerHTML='<font color="black" face="Arial, Helvetica, sans-serif">'+t+"<font>"},copyright:function(place){var e=createTiddlyElement(place,"a");e.setAttribute("href","http://www.abego-software.de");e.innerHTML='<font color="black" face="Arial, Helvetica, sans-serif">&copy; 2005-2008 <b><font color="red">abego</font></b> Software<font>'},newTiddlerButton:function(place){if(lastQuery){var r=abego.parseNewTiddlerCommandLine(lastQuery.getQueryText());var btn=config.macros.newTiddler.createNewTiddlerButton(place,r.title,r.params,"new tiddler","Create a new tiddler based on search text. (Shortcut: Ctrl-Enter; Separators: '.', '#')",null,"text");var oldOnClick=btn.onclick;btn.onclick=function(){closeResult();oldOnClick.apply(this,arguments)};lastNewTiddlerButton=btn}},linkButton:function(place,macroName,params,wikifier,paramString,tiddler){if(params<2){return}var tiddlyLink=params[1];var text=params<3?tiddlyLink:params[2];var tooltip=params<4?text:params[3];var accessKey=params<5?null:params[4];var btn=createTiddlyButton(place,text,tooltip,closeResultAndDisplayTiddler,null,null,accessKey);btn.setAttribute("tiddlyLink",tiddlyLink)},closeButton:function(place,macroName,params,wikifier,paramString,tiddler){createTiddlyButton(place,"close","Close the Search Results (Shortcut: ESC)",closeResult)},openAllButton:function(place,macroName,params,wikifier,paramString,tiddler){var n=getLastResultsCount();if(n==0){return}var title=n==1?"open tiddler":"open all %0 tiddlers".format([n]);var button=createTiddlyButton(place,title,"Open all found tiddlers (Shortcut: Alt-O)",openAllFoundTiddlers);button.setAttribute("accessKey","O")},naviBar:function(place,macroName,params,wikifier,paramString,tiddler){pager.addPageNavigation(place)},"if":function(place,macroName,params,wikifier,paramString,tiddler){if(params.length<2){return}var testName=params[1];var negate=(testName=="not");if(negate){if(params.length<3){return}testName=params[2]}var test=config.macros.yourSearch.tests[testName];var showIt=false;try{if(test){showIt=test(place,macroName,params,wikifier,paramString,tiddler)!=negate}else{showIt=(!eval(testName))==negate}}catch(ex){}if(!showIt){place.style.display="none"}},chkPreviewText:function(place,macroName,params,wikifier,paramString,tiddler){var elem=createOptionWithRefresh(place,"chkPreviewText",wikifier,tiddler);elem.setAttribute("accessKey","P");elem.title="Show text preview of found tiddlers (Shortcut: Alt-P)";return elem}}};config.macros.foundTiddler={label:"foundTiddler",prompt:"Provides information on the tiddler currently processed on the YourSearch result page",handler:function(place,macroName,params,wikifier,paramString,tiddler){var name=params[0];var func=config.macros.foundTiddler.funcs[name];if(func){func(place,macroName,params,wikifier,paramString,tiddler)}},funcs:{title:function(place,macroName,params,wikifier,paramString,tiddler){if(!currentTiddler){return}var shortcutNumber=getShortCutNumber();var tooltip=shortcutNumber>=0?"Open tiddler (Shortcut: Alt-%0)".format([shortcutNumber.toString()]):"Open tiddler";var btn=createTiddlyButton(place,null,tooltip,closeResultAndDisplayTiddler,null);btn.setAttribute("tiddlyLink",currentTiddler.title);btn.setAttribute("withHilite","true");renderLimitedText(btn,currentTiddler.title,maxCharsInTitle);if(shortcutNumber>=0){btn.setAttribute("accessKey",shortcutNumber.toString())}},tags:function(place,macroName,params,wikifier,paramString,tiddler){if(!currentTiddler){return}renderLimitedText(place,currentTiddler.getTags(),maxCharsInTags)},text:function(place,macroName,params,wikifier,paramString,tiddler){if(!currentTiddler){return}renderLimitedText(place,removeTextDecoration(currentTiddler.text),maxCharsInText)},field:function(place,macroName,params,wikifier,paramString,tiddler){if(!currentTiddler){return}var name=params[1];var len=params.length>2?abego.toInt(params[2],maxCharsInField):maxCharsInField;var v=store.getValue(currentTiddler,name);if(v){renderLimitedText(place,removeTextDecoration(v),len)}},number:function(place,macroName,params,wikifier,paramString,tiddler){var numberToDisplay=getShortCutNumber();if(numberToDisplay>=0){var text="%0)".format([numberToDisplay.toString()]);createTiddlyElement(place,"span",null,"shortcutNumber",text)}}}};var opts={chkUseYourSearch:true,chkPreviewText:true,chkSearchAsYouType:true,chkSearchInTitle:true,chkSearchInText:true,chkSearchInTags:true,chkSearchExtendedFields:true,txtItemsPerPage:itemsPerPageDefault,txtItemsPerPageWithPreview:itemsPerPageWithPreviewDefault};for(var n in opts){if(config.options[n]==undefined){config.options[n]=opts[n]}}config.shadowTiddlers.AdvancedOptions+="\n<<option chkUseYourSearch>> Use 'Your Search' //([[more options|YourSearch Options]]) ([[help|YourSearch Help]])// ";config.shadowTiddlers["YourSearch Help"]="!Field Search\nWith the Field Search you can restrict your search to certain fields of a tiddler, e.g only search the tags or only the titles. The general form is //fieldname//'':''//textToSearch// (e.g. {{{title:intro}}}). In addition one-character shortcuts are also supported for the standard fields {{{title}}}, {{{text}}} and {{{tags}}}:\n|!What you want|!What you type|!Example|\n|Search ''titles only''|start word with ''!''|{{{!jonny}}} (shortcut for {{{title:jonny}}})|\n|Search ''contents/text only''|start word with ''%''|{{{%football}}} (shortcut for {{{text:football}}})|\n|Search ''tags only''|start word with ''#''|{{{#Plugin}}} (shortcut for {{{tags:Plugin}}})|\n\nUsing this feature you may also search the extended fields (\"Metadata\") introduced with TiddlyWiki 2.1, e.g. use {{{priority:1}}} to find all tiddlers with the priority field set to \"1\".\n\nYou may search a word in more than one field. E.g. {{{!#Plugin}}} (or {{{title:tags:Plugin}}} in the \"long form\") finds tiddlers containing \"Plugin\" either in the title or in the tags (but does not look for \"Plugin\" in the text). \n\n!Boolean Search\nThe Boolean Search is useful when searching for multiple words.\n|!What you want|!What you type|!Example|\n|''All words'' must exist|List of words|{{{jonny jeremy}}} (or {{{jonny and jeremy}}})|\n|''At least one word'' must exist|Separate words by ''or''|{{{jonny or jeremy}}}|\n|A word ''must not exist''|Start word with ''-''|{{{-jonny}}} (or {{{not jonny}}})|\n\n''Note:'' When you specify two words, separated with a space, YourSearch finds all tiddlers that contain both words, but not necessarily next to each other. If you want to find a sequence of word, e.g. '{{{John Brown}}}', you need to put the words into quotes. I.e. you type: {{{\"john brown\"}}}.\n\nUsing parenthesis you may change the default \"left to right\" evaluation of the boolean search. E.g. {{{not (jonny or jeremy)}}} finds all tiddlers that contain neither \"jonny\" nor \"jeremy. In contrast to this {{{not jonny or jeremy}}} (i.e. without parenthesis) finds all tiddlers that either don't contain \"jonny\" or that contain \"jeremy\".\n\n!'Exact Word' Search\nBy default a search result all matches that 'contain' the searched text. E.g. if you search for {{{Task}}} you will get all tiddlers containing 'Task', but also '~CompletedTask', '~TaskForce' etc.\n\nIf you only want to get the tiddlers that contain 'exactly the word' you need to prefix it with a '='. E.g. typing '=Task' will find the tiddlers that contain the word 'Task', ignoring words that just contain 'Task' as a substring.\n\n!~CaseSensitiveSearch and ~RegExpSearch\nThe standard search options ~CaseSensitiveSearch and ~RegExpSearch are fully supported by YourSearch. However when ''~RegExpSearch'' is on Filtered and Boolean Search are disabled.\n\nIn addition you may do a \"regular expression\" search even with the ''~RegExpSearch'' set to false by directly entering the regular expression into the search field, framed with {{{/.../}}}. \n\nExample: {{{/m[ae][iy]er/}}} will find all tiddlers that contain either \"maier\", \"mayer\", \"meier\" or \"meyer\".\n\n!~JavaScript Expression Filtering\nIf you are familiar with JavaScript programming and know some TiddlyWiki internals you may also use JavaScript expression for the search. Just enter a JavaScript boolean expression into the search field, framed with {{{ { ... } }}}. In the code refer to the variable tiddler and evaluate to {{{true}}} when the given tiddler should be included in the result. \n\nExample: {{{ { tiddler.modified > new Date(\"Jul 4, 2005\")} }}} returns all tiddler modified after July 4th, 2005.\n\n!Combined Search\nYou are free to combine the various search options. \n\n''Examples''\n|!What you type|!Result|\n|{{{!jonny !jeremy -%football}}}|all tiddlers with both {{{jonny}}} and {{{jeremy}}} in its titles, but no {{{football}}} in content.|\n|{{{#=Task}}}|All tiddlers tagged with 'Task' (the exact word). Tags named '~CompletedTask', '~TaskForce' etc. are not considered.|\n\n!Access Keys\nYou are encouraged to use the access keys (also called \"shortcut\" keys) for the most frequently used operations. For quick reference these shortcuts are also mentioned in the tooltip for the various buttons etc.\n\n|!Key|!Operation|\n|{{{Alt-F}}}|''The most important keystroke'': It moves the cursor to the search input field so you can directly start typing your query. Pressing {{{Alt-F}}} will also display the previous search result. This way you can quickly display multiple tiddlers using \"Press {{{Alt-F}}}. Select tiddler.\" sequences.|\n|{{{ESC}}}|Closes the [[YourSearch Result]]. When the [[YourSearch Result]] is already closed and the cursor is in the search input field the field's content is cleared so you start a new query.|\n|{{{Alt-1}}}, {{{Alt-2}}},... |Pressing these keys opens the first, second etc. tiddler from the result list.|\n|{{{Alt-O}}}|Opens all found tiddlers.|\n|{{{Alt-P}}}|Toggles the 'Preview Text' mode.|\n|{{{Alt-'<'}}}, {{{Alt-'>'}}}|Displays the previous or next page in the [[YourSearch Result]].|\n|{{{Return}}}|When you have turned off the 'as you type' search mode pressing the {{{Return}}} key actually starts the search (as does pressing the 'search' button).|\n\n//If some of these shortcuts don't work for you check your browser if you have other extensions installed that already \"use\" these shortcuts.//";config.shadowTiddlers["YourSearch Options"]="|>|!YourSearch Options|\n|>|<<option chkUseYourSearch>> Use 'Your Search'|\n|!|<<option chkPreviewText>> Show Text Preview|\n|!|<<option chkSearchAsYouType>> 'Search As You Type' Mode (No RETURN required to start search)|\n|!|Default Search Filter:<<option chkSearchInTitle>>Title ('!')     <<option chkSearchInText>>Text ('%')     <<option chkSearchInTags>>Tags ('#')    <<option chkSearchExtendedFields>>Extended Fields<html><br><font size=\"-2\">The fields of a tiddlers that are searched when you don't explicitly specify a filter in the search text <br>(Explictly specify fields using one or more '!', '%', '#' or 'fieldname:' prefix before the word/text to find).</font></html>|\n|!|Number of items on search result page: <<option txtItemsPerPage>>|\n|!|Number of items on search result page with preview text: <<option txtItemsPerPageWithPreview>>|\n";config.shadowTiddlers.YourSearchStyleSheet="/***\n!~YourSearchResult Stylesheet\n***/\n/*{{{*/\n.yourSearchResult {\n\tposition: absolute;\n\twidth: 800px;\n\n\tpadding: 0.2em;\n\tlist-style: none;\n\tmargin: 0;\n\n\tbackground: #ffd;\n\tborder: 1px solid DarkGray;\n}\n\n/*}}}*/\n/***\n!!Summary Section\n***/\n/*{{{*/\n.yourSearchResult .summary {\n\tborder-bottom-width: thin;\n\tborder-bottom-style: solid;\n\tborder-bottom-color: #999999;\n\tpadding-bottom: 4px;\n}\n\n.yourSearchRange, .yourSearchCount, .yourSearchQuery   {\n\tfont-weight: bold;\n}\n\n.yourSearchResult .summary .button {\n\tfont-size: 10px;\n\n\tpadding-left: 0.3em;\n\tpadding-right: 0.3em;\n}\n\n.yourSearchResult .summary .chkBoxLabel {\n\tfont-size: 10px;\n\n\tpadding-right: 0.3em;\n}\n\n/*}}}*/\n/***\n!!Items Area\n***/\n/*{{{*/\n.yourSearchResult .marked {\n\tbackground: none;\n\tfont-weight: bold;\n}\n\n.yourSearchItem {\n\tmargin-top: 2px;\n}\n\n.yourSearchNumber {\n\tcolor: #808080;\n}\n\n\n.yourSearchTags {\n\tcolor: #008000;\n}\n\n.yourSearchText {\n\tcolor: #808080;\n\tmargin-bottom: 6px;\n}\n\n/*}}}*/\n/***\n!!Footer\n***/\n/*{{{*/\n.yourSearchFooter {\n\tmargin-top: 8px;\n\tborder-top-width: thin;\n\tborder-top-style: solid;\n\tborder-top-color: #999999;\n}\n\n.yourSearchFooter a:hover{\n\tbackground: none;\n\tcolor: none;\n}\n/*}}}*/\n/***\n!!Navigation Bar\n***/\n/*{{{*/\n.yourSearchNaviBar a {\n\tfont-size: 16px;\n\tmargin-left: 4px;\n\tmargin-right: 4px;\n\tcolor: black;\n\ttext-decoration: underline;\n}\n\n.yourSearchNaviBar a:hover {\n\tbackground-color: none;\n}\n\n.yourSearchNaviBar .prev {\n\tfont-weight: bold;\n\tcolor: blue;\n}\n\n.yourSearchNaviBar .currentPage {\n\tcolor: #FF0000;\n\tfont-weight: bold;\n\ttext-decoration: none;\n}\n\n.yourSearchNaviBar .next {\n\tfont-weight: bold;\n\tcolor: blue;\n}\n/*}}}*/\n";config.shadowTiddlers.YourSearchResultTemplate='<!--\n{{{\n-->\n<span macro="yourSearch if found">\n<!-- The Summary Header ============================================ -->\n<table class="summary" border="0" width="100%" cellspacing="0" cellpadding="0"><tbody>\n  <tr>\n\t<td align="left">\n\t\tYourSearch Result <span class="yourSearchRange" macro="yourSearch itemRange"></span>\n\t\t&nbsp;of&nbsp;<span class="yourSearchCount" macro="yourSearch count"></span>\n\t\tfor&nbsp;<span class="yourSearchQuery" macro="yourSearch query"></span>\n\t</td>\n\t<td class="yourSearchButtons" align="right">\n\t\t<span macro="yourSearch chkPreviewText"></span><span class="chkBoxLabel">preview text</span>\n\t\t<span macro="yourSearch newTiddlerButton"></span>\n\t\t<span macro="yourSearch openAllButton"></span>\n\t\t<span macro="yourSearch linkButton \'YourSearch Options\' options \'Configure YourSearch\'"></span>\n\t\t<span macro="yourSearch linkButton \'YourSearch Help\' help \'Get help how to use YourSearch\'"></span>\n\t\t<span macro="yourSearch closeButton"></span>\n\t</td>\n  </tr>\n</tbody></table>\n\n<!-- The List of Found Tiddlers ============================================ -->\n<div id="yourSearchResultItems" itemsPerPage="25" itemsPerPageWithPreview="10"></div>\n\n<!-- The Footer (with the Navigation) ============================================ -->\n<table class="yourSearchFooter" border="0" width="100%" cellspacing="0" cellpadding="0"><tbody>\n  <tr>\n\t<td align="left">\n\t\tResult page: <span class="yourSearchNaviBar" macro="yourSearch naviBar"></span>\n\t</td>\n\t<td align="right"><span macro="yourSearch version"></span>, <span macro="yourSearch copyright"></span>\n\t</td>\n  </tr>\n</tbody></table>\n<!-- end of the \'tiddlers found\' case =========================================== -->\n</span>\n\n\n<!-- The "No tiddlers found" case =========================================== -->\n<span macro="yourSearch if not found">\n<table class="summary" border="0" width="100%" cellspacing="0" cellpadding="0"><tbody>\n  <tr>\n\t<td align="left">\n\t\tYourSearch Result: No tiddlers found for <span class="yourSearchQuery" macro="yourSearch query"></span>.\n\t</td>\n\t<td class="yourSearchButtons" align="right">\n\t\t<span macro="yourSearch newTiddlerButton"></span>\n\t\t<span macro="yourSearch linkButton \'YourSearch Options\' options \'Configure YourSearch\'"></span>\n\t\t<span macro="yourSearch linkButton \'YourSearch Help\' help \'Get help how to use YourSearch\'"></span>\n\t\t<span macro="yourSearch closeButton"></span>\n\t</td>\n  </tr>\n</tbody></table>\n</span>\n\n\n<!--\n}}}\n-->\n';config.shadowTiddlers.YourSearchItemTemplate="<!--\n{{{\n-->\n<span class='yourSearchNumber' macro='foundTiddler number'></span>\n<span class='yourSearchTitle' macro='foundTiddler title'/></span>&nbsp;-&nbsp;\n<span class='yourSearchTags' macro='foundTiddler field tags 50'/></span>\n<span macro=\"yourSearch if previewText\"><div class='yourSearchText' macro='foundTiddler field text 250'/></div></span>\n<!--\n}}}\n-->";config.shadowTiddlers.YourSearch="<<tiddler [[YourSearch Help]]>>";config.shadowTiddlers["YourSearch Result"]="The popup-like window displaying the result of a YourSearch query.";config.macros.search.handler=myMacroSearchHandler;var checkForOtherHijacker=function(){if(config.macros.search.handler!=myMacroSearchHandler){alert("Message from YourSearchPlugin:\n\n\nAnother plugin has disabled the 'Your Search' features.\n\n\nYou may disable the other plugin or change the load order of \nthe plugins (by changing the names of the tiddlers)\nto enable the 'Your Search' features.")}};setTimeout(checkForOtherHijacker,5000);abego.YourSearch.getStandardRankFunction=function(){return standardRankFunction};abego.YourSearch.getRankFunction=function(){return abego.YourSearch.getStandardRankFunction()};abego.YourSearch.getCurrentTiddler=function(){return currentTiddler};abego.YourSearch.closeResult=function(){closeResult()};abego.YourSearch.getFoundTiddlers=function(){return lastResults};abego.YourSearch.getQuery=function(){return lastQuery};abego.YourSearch.onShowResult=function(useOldResult){highlightHack=lastQuery?lastQuery.getMarkRegExp():null;if(!useOldResult){pager.setItems(getLastResults())}if(!resultElement){resultElement=createTiddlyElement(document.body,"div",yourSearchResultID,"yourSearchResult")}else{if(resultElement.parentNode!=document.body){document.body.appendChild(resultElement)}}refreshResult();highlightHack=null}})()};
//%/
<html>
<?xml version="1.0" ?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
<svg height="50" width="50">
  <circle cx="25" cy="25" r="20" stroke="black" stroke-width="4" fill="white" />
  <circle cx="25" cy="25" r="10" stroke="black" stroke-width="4" fill="white" />
</svg>
</html>
<html><iframe src="http://int.geekcrm.ru/base-lesson/schedule-embedded" width="100%" height="1000" frameBorder="0"></html>
<html>
	<div class="course_description two_thirds">
		<p >Попробуй себя в роли главного конструктора!</p>
<p>Почему самолет летает? Почему крыло выглядит именно так? Зачем самолету хвост?
Чтобы ответить на эти вопросы, мы поместим модель крыла в аэротрубу и отследим движение потоков воздуха.</p>
	</div>
		<div class="teacher_description third">
		<div class="small_two_thirds gekkon bordered">
			Кружок ведут преподаватели «<a href="">Геккон-клуба</a>»
		</div>
	</div>
		<div class="course_description third">
		<p >Затем по чертежам ребята вырежут фюзеляж и крылья самолета, напечатают на 3D-принтере детали двигателя и шасси, встроят в корпус мотор и другие электронные компоненты. После того как модель создана, дети запустят ее в воздух и научатся управлять полетом с помощью профессионального пульта!</p>
	</div>
	<img class="two_thirds" src="images_others/38-3.jpg">
	
	
	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
<div class="process_block">
		<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по пятницам в&nbsp;15:00<br>(3–4 класс)</div></div>
		<div class="process_column"><div class="large_number">3400 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div></div>
</html>

/%
|контингент|3-10 класс|
|ФИО преподавателя|«Геккон-клуб»|
|id|38|
|видимое в адресной строке название|aeromodelling|
%/
<html>
<div class="course_description half">
	<p style="margin-bottom: 2em">Айкидо&nbsp;—&nbsp;боевое искусство, созданное Морихеем Уэсибой в&nbsp;20-х&nbsp;годах XX&nbsp;в. В&nbsp;айкидо нет соревнований и&nbsp;соперничества, а&nbsp;также нет цели нанести противнику максимальный ущерб. Айкидо как боевое искусство учит прежде всего взаимодействию с&nbsp;партнёром. У&nbsp;людей, регулярно занимающихся айкидо, улучшается чувство равновесия, осанка, общее самочувствие и&nbsp;восприятие окружающего мира.
	</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Александр Евгеньевич Доброчаев</p>
		<p>Начал заниматься айкидо в 1997 году. 1-й дан. Занимается в московском клубе "Кенаге", окончил тренерские курсы при&nbsp;МПГУ.<br>
		Окончил Биолого-Химический факультет МПГУ&nbsp;(1995&nbsp;г.). Кандидат биологических наук&nbsp;(2003&nbsp;г.). Учитель биологии в&nbsp;школе «Интеллектуал» с&nbsp;2003&nbsp;года. Заведующий кафедрой биологии.<br><a href="http://sch-int.ru/s_dobrochaev">Подробнее</a></p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/dobrochaev.jpg">
</div>

<div class="process_description">
	<div class="enter_block">
		<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
		<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!  
		</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">80</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">2</div><div class="bold_words">раза<br>в неделю</div><div class="light_words">по&nbsp;вторникам и&nbsp;четвергам в&nbsp;7:20</div></div>
	<div class="process_column"><div class="large_number">1000 &#8381;</div><div class="light_words">в месяц</div></div>
	</div>
</div>
</html>

/%
|контингент|1-11 класс|
|ФИО преподавателя|Доброчаев Александр Евгеньевич|
|id|93|
|видимое в адресной строке название|aikido|
%/
<html>
<div class="course_description half">
	<p>Многие базовые и&nbsp;самые интересные вопросы биологии остаются за&nbsp;рамками школьной программы. </p>
<p>На&nbsp;занятиях мы обсудим, как могла возникнуть жизнь и могла&nbsp;ли она быть другой. Что такое эволюция? Может ли&nbsp;она не&nbsp;происходить? Является ли&nbsp;человек вершиной эволюции? Поговорим, как работают прививки, что такое ГМО, как его получают и может ли&nbsp;оно быть опасным.
	</p>
	<div class="first_lesson"><p style="margin-bottom: 2em">Занятия с января!</p></div>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Дарья Дмитриевна Смолярова</p>
		<p>Выпускница школы «Интеллектуал», студентка биологического факультета МГУ&nbsp;им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова, преподаватель летних образовательных лагерей, экскурсовод.</a></p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/smolyarova.JPG">
</div>

<div class="process_description">
	<div class="enter_block">
		<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
		<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!  
		</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по средам<br>в 17:00</div></div>
	<div class="process_column"><div class="large_number">4000 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div>
</div>
</html>

/%
|контингент|5-11 класс|
|ФИО преподавателя|Смолярова Дарья Дмитриевна|
|id|97|
|видимое в адресной строке название|modern_biology|
%/
<html>
<div class="course_description half">
		<p>Читаем в&nbsp;оригинале короткие рассказы американских писателей XX&nbsp;века (Хемингуэй, Фицджеральд, Сэлинджер, Брэдбери и другие). Получаем удовольствие от&nbsp;чтения хорошей литературы, учимся понимать текст и&nbsp;анализировать средства, которыми автор добивается нужных эффектов, а&nbsp;заодно&nbsp;— практикуемся в&nbsp;английском языке. 
		</p>
		<p>Для занятий необходимы минимальные навыки чтения на&nbsp;английском.</p>
	</div>

<div class="half">
		<div class="teacher_text small_half"><p class="name bordered">Нина Анатольевна Мороз</p>
			<p>Окончила филологический факультет МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова (2003&nbsp;г.), кандидат филологических наук (2006&nbsp;г.). Учитель первой квалификационной категории (английский язык). Учитель английского языка в&nbsp;школе «Интеллектуал» с&nbsp;2007&nbsp;г. Преподаватель истории зарубежной литературы на&nbsp;филологическом факультете МГУ. Опыт работы на&nbsp;историческом факультете МГУ, в&nbsp;школе филологии НИУ&nbsp;ВШЭ.
			<br><a href="http://istina.msu.ru/profile/nina_moroz/">Полный список заслуг и&nbsp;публикаций</a>
			</p>
		</div>
	<img class="teacher_img small_half" src="images_teachers/moroz.jpg">	
</div>

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по вторникам в&nbsp;17:30</div></div>
	<div class="process_column"><div class="large_number">бесплатно</div></div>
	</div>
</div>
</html>

/%
|контингент|7-11 класс|
|ФИО преподавателя|Мороз Нина Анатольевна|
|id|84|
%/
<html>
<div class="course_description half">
		<p>Невозможно оторваться от&nbsp;чтения любимой книги, а&nbsp;если ее&nbsp;читают вслух&nbsp;—&nbsp;тем&nbsp;более!
		</p>
		<p style="margin-bottom: 2em">Работа с&nbsp;аудиокнигами развивает слуховое восприятие, позволяет увереннее чувствовать себя в&nbsp;беседе, сразу схватывать суть высказывания и&nbsp;не&nbsp;бояться, если попадется незнакомое слово. Классическая англоязычная литература не&nbsp;только пополнит лексику вашего ребенка, но&nbsp;и&nbsp;незаметно научит правильным грамматическим конструкциям, которые при&nbsp;многократном прослушивании прочно откладываются в&nbsp;голове. На&nbsp;занятиях мы будем слушать отрывки аудиокниг, обсуждать&nbsp;их, писать загадки и&nbsp;разыгрывать диалоги любимых персонажей, а&nbsp;также отрабатывать грамматику с&nbsp;помощью упражнений.
		</p>
	</div>
	
<div class="half">
		<div class="teacher_text small_half"><p class="name bordered">Наталья Андреевна Михалина</p>
			<p>Окончила МПГУ. Преподаватель английского языка в школе «Интеллектуал» с 2003 г. Педагогический стаж – более 12 лет. Эксперт по ОГЭ.
			<br><a href="http://sch-int.ru/node/247">Подробнее</a>
			</p>
		</div>
		<img class="teacher_img small_half" src="images_teachers/mikhalina.jpg">	
	</div>	
	
<div class="process_description closed">
	
		<div class="enter_block">
			<a href=""><div class="enter">Кружок закрыт</div></a>
			<div class="process_text">Ждем вас на других кружках!
			</div>
		</div>
<div class="process_block">
		<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по пятницам<br>в 15:30</div></div>
		<div class="process_column"><div class="process_column"><div class="large_number">5000 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div></div>
</html>

/%
|контингент|5-6 класс|
|ФИО преподавателя|Михалина Наталья Андреевна|
|id|58|
%/
<html>
<div class="course_description">
	<p>Прикоснуться руками к&nbsp;истории и&nbsp;узнать, в&nbsp;чем заключается работа археолога!
	</p>
	<p>На&nbsp;занятиях школьники изучат историю археологических открытий и&nbsp;современных проблем, стоящих перед археологией как наукой. Мы&nbsp;съездим на&nbsp;экскурсии и&nbsp;познакомимся с&nbsp;памятниками разных эпох на&nbsp;территории современной Москвы. Будем работать с&nbsp;коллекциями учебного музея и&nbsp;освоим необходимые практические навыки полевой и&nbsp;камеральной работы археолога, чтобы летом отправиться в&nbsp;настоящую экспедицию.
	</p>
	<p>В&nbsp;течение курса возможно выполнение индивидуальных исследовательских проектов на&nbsp;археологическом материале.
	</p>
<div class="first_lesson">Первое занятие 1 октября, кабинет 204.</div>
</div>
<div class="wide margin-top">
	<div class="half">
		<img class="teacher_img small_half margin-bottom" src="images_teachers/krenke.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Николай Александрович Кренке</p>
			<p>Доктор исторических наук, археолог, старший научный сотрудник Института археологии&nbsp;РАН. Участник и&nbsp;руководитель ряда археологических экспедиций. Автор более 70&nbsp;научных работ.
		</p>
		</div>
	</div>
	<div class="half">	
		<img class="teacher_img small_half" src="images_teachers/evdokimov.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Павел Андреевич Евдокимов</p>
		<p>Окончил исторический факультет МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова. Кандидат исторических наук&nbsp;(2005&nbsp;г.) Работает в&nbsp;школе «Интеллектуал» с&nbsp;2003&nbsp;г. Заведующий кафедрой истории. Руководитель и&nbsp;организатор археологических экспедиций.<br><a href="http://sch-int.ru/node/187">Полный список заслуг и публикаций</a>
		</p>
		</div>
	</div>
</div>

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по субботам в&nbsp;12:30</div></div>
	<div class="process_column"><div class="large_number">бесплатно</div></div>
	</div>
</div>
</html>

/%
|контингент|5-10 класс|
|ФИО преподавателя|Кренке Николай Александрович, Евдокимов Павел Андреевич|
|id|83|
|видимое в адресной строке название|archeology|
%/
<html>
<div class="course_description two_thirds">
	<p>Пропустили какую-то тему на уроках? Не поняли или не запомнили материал? Хотите подготовиться к олимпиаде, поступлению в школу или выпускному экзамену? Базовый курс биологии призван повторить, систематизировать и расширить знания, полученные на уроках. Для того чтобы лучше запомнить материал, на занятиях мы будем проводить лабораторные работы и смотреть, трогать и рисовать предмет изучения.
	</p>
	<p>Продолжительность каждого тематического блока — 2–3 месяца. 
	</p>
		<p>Темы:
			<ul>
			<li>Грибы, бактерии, водоросли</li>
			<li>Строение и разнообразие растений</li>
			<li>Животные</li>
			<li>Человек</li>
			<li>Клетка</li>
			<li>Эволюция и экология</li>
			<li>Генетика</li>
			</ul>
		</p>
</div>
<div class="teacher_description third">
	<div class="small_two_thirds gekkon bordered">
		Кружок ведут преподаватели кафедры биологии школы «Интеллектуал»
	</div>
</div>

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по&nbsp;вторникам или&nbsp;пятницам в&nbsp;17:30</div></div>
	<div class="process_column"><div class="large_number">3000 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div>
</div>

</html>

/%
|контингент|6-11 класс|
|ФИО преподавателя||
|id|88|
|видимое в адресной строке название|basic_biology|
%/
<html>
<div class="course_description half">
	<p>Батик — техника ручной росписи ткани. Одни участки ткани художник защищает с&nbsp;помощью воска или специальных составов, а&nbsp;другие расписывает красками. Четкая граница рисунка и&nbsp;акварельная мягкость узоров открывают простор для фантазии и&nbsp;экспериментов.
	</p>
	<p>Традиция изготовления батика встречается в&nbsp;различных странах, в&nbsp;том&nbsp;числе Индонезии, Малайзии, Сингапуре, Индии и&nbsp;т.д. В&nbsp;каждой культуре существуют паттерны и&nbsp;мотивы, которыми мы будем вдохновляться при&nbsp;создании своих работ.
	</p>
	<p style="margin-bottom: 2em">Занятия подходят для&nbsp;детей разного возраста. Ребята научатся рисовать эскизы, заранее продумывать последовательность прокрашивания, попробуют свои силы в&nbsp;акварельной, трафаретной и&nbsp;графической технике. Даже малыши без&nbsp;художественной подготовки смогут освоить базовые приемы росписи шелка и&nbsp;создать настоящее сари индийской принцессы или платок для&nbsp;любимой мамы!
	</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Ольга Львовна Гзовская</p>
		<p>Преподаватель изобразительного искусства, член союза художников России, член союза дизайнеров Москвы. Окончила художественно-графический факультет МПГУ. Неоднократно принимала участие в&nbsp;художественных выставках в&nbsp;России и&nbsp;за&nbsp;рубежом. Автор пяти статей о&nbsp;развитии творческих способностей на&nbsp;занятиях по&nbsp;керамике.<br><a href="http://sch-int.ru/node/131">Полный список заслуг и публикаций</a></p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/gzovskaya.jpg">
</div>

<div class="process_description_2">
<h2>Группы</h2>
<table class="groups">
	<tr class="group_number">
		<td><span class="num">1</span></td>
		<td><span class="num">2</span></td>
	</tr>
	<tr class="group_age">
		<td>3–6 класс</td>
		<td>7–11 класс</td>
	</tr>
	<tr class="group_frequency">
		<td>1 раз в неделю,<br>по понедельникам в 16:30</td>
		<td>1 раз в неделю,<br>по понедельникам</td>
	</tr>
	<tr class="group_duration">
		<td>90 минут</td>
		<td>90 минут</td>
	</tr>
	<tr class="group_price">
		<td><span class="extrabold">5000 &#8381;</span><br>за 4 занятия</td>
		<td><span class="extrabold">5000 &#8381;</span><br>за 4 занятия</td>
	</tr>
</table>
<div class="enter_block_2">
	<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter_2">Записаться</div></a>
	<div class="enter_text">Оставьте свои контакты,<br>и мы вам перезвоним!  
	</div>

</html>

/%
|контингент|3-11 класс|
|ФИО преподавателя|Гзовская Ольга Львовна|
|id|10|
%/
<html>
<div class="course_description half">
		<p>Как историки узнают, что произошло много веков назад? Как понять, о&nbsp;чем думали и говорили люди, что они ели и&nbsp;чем занимались? В&nbsp;чем состоит работа настоящего историка? На&nbsp;нашем кружке школьники узнают ответы на&nbsp;все эти&nbsp;вопросы, познакомятся с&nbsp;понятием исторических источников, а&nbsp;также попробуют силы в&nbsp;составлении родословной своей семьи. Мы побываем в&nbsp;исторических местах и&nbsp;музеях Москвы.
		</p>
		<p>На&nbsp;кружке ребята смогут сделать проектную работу по&nbsp;одной из&nbsp;понравившихся тем.</p>
	<div class="first_lesson" style="margin-bottom: 2em">Первое занятие 10 октября.</div>
	</div>
	
<div class="half">
		<div class="teacher_text half"><p class="name bordered">Дина Борисовна Борухина</p>
			<p>Окончила исторический факультет МГПИ им.&nbsp;В.&nbsp;И.&nbsp;Ленина, факультет профессиональной переподготовки педагогических кадров МИОО по&nbsp;направлению «Философия религии и религиоведение». Имеет квалификацию учителя истории, обществоведения и&nbsp;права, преподавателя-религиоведа. Работает в&nbsp;школе «Интеллектуал» более 5&nbsp;лет. Организует школьные экскурсии.
			</p>
		</div>
	</div>

	<div class="process_description closed">
	<div class="enter_block">
		<a><div class="enter">Запись закрыта</div></a>
		<div class="process_text">Ждем вас в январе!  
		</div>
		</div><div class="process_block">
		<div class="process_column"><div class="large_number">40</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по понедельникам</div></div>
		<div class="process_column"><div class="large_number">2500 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div></div>
</html>

/%
|контингент|3 класс|
|ФИО преподавателя|Борухина Дина Борисовна|
|id|21|
%/
<html>
<div class="course_description half">
	<p >На занятиях вас ждет увлекательное путешествие по страницам любимых сказок. Ребята не просто познакомятся с выдающимися произведениями народов мира, но и узнают значения присказок, сказочных зачинов, концовок, научатся отличать фольклорную и авторскую сказку.
	</p>
	<p style="margin-bottom: 2em">На кружке предусмотрена работа не только с текстами, но и с репродукциями великих художников, с музыкальными произведениями русских и зарубежных композиторов, с отрывками из мультипликационных и художественных фильмов.
Занятия направлены на формирование грамотной письменной и устной речи, на развитие воображения и творческих способностей школьников. В конце курса ребята будут свободно составлять устные и письменные рецензии на художественные произведения и научатся сочинять собственные сказки.
	</p>
	
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Александра Анатольевна Абрамова</p>
		<p>Студентка филологического факультета МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова. Выпускница школы «Интеллектуал». Работает в&nbsp;школе с&nbsp;2011&nbsp;года. Автор методических разработок по&nbsp;языкознанию.<br><a href="http://www.sch-int.ru/s_abramova_a">Полный список заслуг и публикаций</a></p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/abramova.jpg">
</div>

<div class="process_description closed">
	<div class="enter_block">
		<a><div class="enter">Запись закрыта</div></a>
		<div class="process_text">Ждем вас в январе!
		</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">понедельник, 16:30</div></div>
	<div class="process_column"><div class="large_number">5000 &#8381;</div><div class="light_words">за 4 занятия<br>в октябре</div></div>
	</div>
</div>
</html>

/%
|контингент|2-4 класс|
|ФИО преподавателя|Абрамова Александра Анатольевна|
|id|16|
%/
<html>
<div class="course_description half">
	<p style="margin-bottom: 2em">Вы узнаете, почему не&nbsp;бывает двух абсолютно одинаковых людей (даже если они близнецы), и&nbsp;почему можно сказать, что с&nbsp;мышью у&nbsp;Вас 90%&nbsp;общих генов, а&nbsp;с&nbsp;мамой всего&nbsp;50%. Что такое эпигенетика и&nbsp;с&nbsp;чем ее&nbsp;едят? Как при одном и&nbsp;том&nbsp;же расщеплении могут получаться абсолютно разные типы наследования? Чем примечательны мяРНК? Есть&nbsp;ли у&nbsp;генов характер, и&nbsp;бывает&nbsp;ли эгоистичной ДНК? Вы&nbsp;научитесь объяснять самые невероятные вещи с&nbsp;точки зрения генетики.
	</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Екатерина Романовна Черткова</p>
		<p>Окончила кафедру генетики биологического факультета МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова&nbsp;(2014&nbsp;г.). Преподаватель кафедры молекулярной и&nbsp;клеточной генетики РНИМУ им.&nbsp;Н.&nbsp;И.&nbsp;Пирогова, преподаватель школы «Интеллектуал», член оргкомитета и&nbsp;жюри Школьной Биологической Олимпиады МГУ.
		</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/chertkova.jpg">
</div>

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по понедельникам в&nbsp;18:30</div></div>
	<div class="process_column"><div class="large_number">бесплатно</div></div>
	</div>
</div>
</html>

/%
|контингент|9-11 класс|
|ФИО преподавателя|Черткова Екатерина Романовна|
|id|47|
|видимое в адресной строке название|genetics|
%/
<html>
<div class="course_description">
	<p>Математика – это не&nbsp;только про&nbsp;то, как складывать и&nbsp;умножать, как находить площадь, периметр, скорость. Математика есть вокруг нас и&nbsp;она, прежде всего, призвана учить мыслить. Она может быть увлекательной, необычной, красивой, живой, загадочной и&nbsp;даже волшебной. Иногда она позволяет творить настоящие чудеса. Во&nbsp;всем этом нам предстоит убедиться. На&nbsp;занятиях мы будем решать нестандартные задачи, побываем в&nbsp;самых разных ситуациях, познакомимся с&nbsp;многообразием математики в&nbsp;увлекательной форме через различные жизненные сюжеты, поиграем в&nbsp;математические игры, увидим математические фокусы.
	</p>
	<p>Так открывается незнакомая многим математика через интерес, удивление, интуицию, поиски и&nbsp;находки.
</p>
</div>
<div class="wide margin-top">
	<div class="half">
		<img class="teacher_img small_half" src="images_teachers/sorokina.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Светлана Юрьевна Сорокина</p>
			<p>Окончила МИФИ, специальный факультет физики при&nbsp;ФИАН, диплом с&nbsp;отличием. Преподаватель курсов «Математика по&nbsp;методике Я.&nbsp;И.&nbsp;Абрамсона», «Олимпиадные задачи по&nbsp;математике» и&nbsp;«Занимательная математика» для&nbsp;начальной школы. Педагог дополнительного образования ЦО&nbsp;№&nbsp;57, ГБОУ&nbsp;СОШ&nbsp;1358 и&nbsp;школы «Интеллектуал».<br><a href="http://www.abramson.xyz/teachers/51-светлана-сорокина">Подробнее</a></p>
		</div>
	</div>
	<div class="half">	
		<img class="teacher_img small_half" src="images_teachers/zabelin.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Алексей Вадимович Забелин</p>
			<p>Преподаватель математики высшей квалификационной категории с&nbsp;опытом более 13 лет, руководитель кружков, методист, автор статей, задач, курсов, разработчик материалов и&nbsp;мероприятий, частый участник семинаров и&nbsp;конференций, имеет ряд публикаций по&nbsp;математике и&nbsp;ее&nbsp;преподаванию. Имеет математическое, педагогическое и&nbsp;психологическое образование (МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова и&nbsp;МГППУ), магистр психологии.<br><a href="http://www.sch-int.ru/s_zabelin">Полный список заслуг и&nbsp;публикаций</a></p>
		</div>
	</div>
</div>

<div class="process_description_2">
<h2>Группы</h2>
<table class="groups">
	<tr class="group_number">
		<td><span class="num closed">1</span><span class="text-closed">Набор<br>закрыт</span></td>
		<td><span class="num">2</span></td>
		<td><span class="num closed">3</span><span class="text-closed">Набор<br>закрыт</span></td>
	</tr>
	<tr class="group_age">
		<td>1–2 класс</td>
		<td>3–4 класс</td>
		<td>3–4 класс</td>
	</tr>
	<tr class="group_frequency">
		<td>1 раз в неделю,<br>по вторникам 16:20</td>
		<td>1 раз в неделю<br>по пятницам в&nbsp;15:30</td>
		<td>1 раз в неделю<br>по пятницам в&nbsp;16:20</td>
	</tr>
	<tr class="group_duration">
		<td>40 минут</td>
		<td>40 минут</td>
		<td>40 минут</td>
	</tr>
	<tr class="group_teacher">
		<td>С. Ю. Сорокина</td>
		<td>А. В. Забелин</td>
		<td>А. В. Забелин</td>
	</tr>
	<tr class="group_price">
		<td><span class="extrabold">2500 &#8381;</span><br>за 4 занятия</td>
		<td><span class="extrabold">2500 &#8381;</span><br>за 4 занятия</td>
		<td><span class="extrabold">2500 &#8381;</span><br>за 4 занятия</td>
	</tr>
</table>
<div class="enter_block_2">
	<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter_2">Записаться</div></a>
	<div class="enter_text">Оставьте свои контакты,<br>и мы вам перезвоним!  
	</div>
</div></div>
</html>


/%
|контингент|1-4 класс|
|ФИО преподавателя|Сорокина Светлана Юрьевна, Забелин Алексей Вадимович|
|id|24|
|видимое в адресной строке название|math|
%/
<html>
<div class="course_description half">
	<p>На других кружках изучают растения или&nbsp;животных, а&nbsp;на&nbsp;этом кружке школьники будут изучать изучение: смотреть на&nbsp;те способы, которыми исследуют живой мир, но&nbsp;не&nbsp;всерьез, а&nbsp;как&nbsp;бы с&nbsp;изнанки. Будут делать определители для&nbsp;ручек и&nbsp;карандашей, рисовать сагиттальный срез собственного пенала, составлять схемы всего на&nbsp;свете и&nbsp;делать много других неожиданных вещей.</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Вера Евгеньевна Башмакова</p>
		<p>Преподаватель биологии в&nbsp;школе «Интеллектуал». Аспирантка лаборатории генной инженерии Кардиоцентра&nbsp;РФ, редактор сайта «Биомолекула», заведующая лабораторией биохакинга в&nbsp;Политехническом музее.</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/bashmakova.jpg">
</div>

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">45</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по понедельникам в&nbsp;15:00 или&nbsp;16:00</div></div>
		<div class="process_column"><div class="large_number">2500 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div>
</div>
</html>

/%
|контингент|1 класс|
|ФИО преподавателя|Башмакова Вера Евгеньевна|
|id|36|
|видимое в адресной строке название|natural_science|
%/
<html>
<div class="title" style="margin-bottom: 1em">Как попасть на кружок «Интеллектуала»</div>
<div class="how_to">
	<div class="two_thirds">
	<div class="step_num">1</div>
	<div class="step">
		<h2>Запись</h2>
		Чтобы записаться на&nbsp;кружок, выберите понравившийся курс и&nbsp;нажмите кнопку «Записаться». Оставьте свои контакты, и&nbsp;наш администратор свяжется с&nbsp;вами в&nbsp;ближайшее время.
	</div>
	<div class="step_num">2</div>
	<div class="step">
		<h2>Договор</h2>
		До&nbsp;начала курса необходимо подписать договор у&nbsp;администратора в&nbsp;школе. Вы можете подъехать заранее или подойти к&nbsp;нему перед первым занятием кружка.<br>При&nbsp;подписании договора вам выдается многоразовый пропуск, который необходимо вернуть по&nbsp;окончании курса или&nbsp;при расторжении договора.
	</div>
	<div class="step_num">3</div>
	<div class="step">
		<h2>Оплата</h2>
		После подписания договора вы получите квитанцию, которую можно оплатить в&nbsp;удобном вам отделении Сбербанка или онлайн. Подтверждение оплаты нужно прислать на&nbsp;адрес sch.int.dop@gmail.com или&nbsp;принести на&nbsp;второе занятие кружка.
		<br><span style="display: inline-block; margin-top: 1em;"><a href="intellectual_payment.pdf" download>Образец квитанции (ПДФ, 70 КБ)</a> <i>Обратите внимание, 12.01.2017 квитанция была обновлена в связи с изменением кода в реквизитах.</i></span>
	</div>
</div>
<div class="third" style="background: #fdf3cd">
	<div class="wrap_colored">
	<div class="step_num">*</div><br>
		<h2>Первое занятие</h2>
		Первое занятие наших кружков&nbsp;— ознакомительное. Можно будет сначала попробовать, а&nbsp;потом решить. Если вам понравится, занятие будет засчитано как первое при&nbsp;оплате курса. Если нет&nbsp;— квитанцию оплачивать не&nbsp;нужно. А&nbsp;мы будем ждать вас на&nbsp;других кружках!
</div></div>
</div>
</html>
<html>
<div class="course_description two_thirds">
	<p>Мечтали ли&nbsp;вы когда-нибудь поступить в&nbsp;волшебную школу? Теперь эта возможность у&nbsp;вас есть! Ведь сказка и&nbsp;колдовство таится во&nbsp;всех предметах, которые нас окружают. В&nbsp;нашей школе вы&nbsp;прикоснетесь к&nbsp;таким волшебным наукам:
	</p>
	<ul>
		<li>Зельеварение</li>
		<li>Наука веером</li>
	</ul>
	<p style="margin-top: 1em">На&nbsp;занятиях&nbsp;по зельеварению вы&nbsp;приготовите настоящие, действенные снадобья. Для&nbsp;начала освоите волшебный инвентарь: научитесь работать с&nbsp;серьезной лабораторной техникой – ступками, колбами, пробирками, штативами. Затем познакомитесь с&nbsp;необходимыми ингредиентами, выучите заклинания и&nbsp;названия компонентов на&nbsp;волшебно-научном латинском языке. Ну&nbsp;а&nbsp;в&nbsp;финале, конечно, научитесь варить полный набор зелий, с&nbsp;которыми должен быть знаком юный маг!
	</p>
</div>
<div class="teacher_description third">
	<img class="teacher_img small_two_thirds" src="images_teachers/solovyev.jpg">
	<div class="teacher_text small_third" style="vertical-align: bottom; padding: 0"><p class="name" style="margin: 0">Роман Борисович Соловьев</p></div>
	<div class="teacher_text" style="margin-top: 1em;">
		<p>Немного волшебник и&nbsp;вполне себе учитель биологии.</p>
		<p>Окончил медучилище №&nbsp;2 (фельдшер), МПГУ им.&nbsp;Ленина (учитель биологии), Институт Педагогической психологии (магистр педагогики). Преподаватель биологии в&nbsp;Центре Педагогического Мастерства в&nbsp;Москве. Создатель курсов пропедевтики естествознания для&nbsp;дошкольников и&nbsp;младших школьников. Педагогический стаж — более 20&nbsp;лет. 
		</p>
	</div>
</div>
<div class="two_thirds"><img src="images_others/29-4.jpg" class="wide"></div>
<div class="third"><img class="wide" src="images_others/29-3.jpg" style="margin-bottom: .5em"><img class="wide" src="images_others/29-6.jpg"></div>


	<div class="process_description closed">
	
		<div class="enter_block">
			<a href=""><div class="enter">Кружок закрыт</div></a>
			<div class="process_text">Ждем вас на других кружках!
			</div>
		</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">45</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div></div>
	<div class="process_column"><div class="large_number">2500 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div>
</div>
</html>

/%
|контингент|1-4 класс|
|ФИО преподавателя|Соловьев Роман Борисович|
|id|29|
%/
<html>
<div class="course_description half">
	<p>Сложно понять, чем ты хочешь заниматься в&nbsp;жизни, когда тебе 16, за&nbsp;окном весна, а&nbsp;на&nbsp;носу вступительные экзамены. Даже&nbsp;хороший вуз не&nbsp;гарантирует, что работа тебе понравится, ведь первые шишки и&nbsp;опыт начинаешь получать только после выпуска. Система высшего образования не&nbsp;успевает за&nbsp;развитием технологий и&nbsp;появлением новых специальностей. В&nbsp;таких условиях на&nbsp;первый план выходят личностные качества, которые можно и&nbsp;нужно воспитать. 
	</p>
	<p style="margin-bottom: 2em">Под&nbsp;руководством кураторов и&nbsp;приглашенных специалистов ребята учатся на&nbsp;настоящих задачах, получают универсальные навыки и&nbsp;просто хорошо проводят время. А&nbsp;впоследствии могут более осознанно выбрать ВУЗ и&nbsp;профессию.
</p>
	</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">И-куб</p>
		<p>И-куб, информационно-инженерный инкубатор&nbsp;— пространство, в&nbsp;котором школьники могут получить первый опыт реальной работы. 
		</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/i3.png">
</div>
<div class="title" style="margin-bottom: 0.5em">Игра «Компас новых профессий»</div>

<div class="course_description half">
	<p>Настольная игра для&nbsp;детей и&nbsp;взрослых, в&nbsp;которой участники строят жизненную траекторию выдуманного персонажа от&nbsp;13 до&nbsp;40 лет. Это возможность в&nbsp;игровой форме рассмотреть важные этапы взросления, попробовать несколько вариантов развития событий и&nbsp;подумать, какой из&nbsp;них ближе ребенку. 
</p>
	</div>
<div class="half">	
	<div class="img_text wide"><img src="images_others/kompas.png"></div>
</div>
<div class="course_description" style="margin-bottom: 2em">
	<div class="bold_words" >Что дает?</div>
			<p><ul>
				<li><b>Тема для&nbsp;размышлений</b><br>Для родителей это может стать поводом, чтобы поговорить с&nbsp;ребенком о&nbsp;будущем, а&nbsp;для школьников&nbsp;— чтобы задуматься о&nbsp;своем жизненном пути, задать интересные вопросы и&nbsp;начать находить на&nbsp;них ответы.
				</li>
				<li><b>Знакомство с профессиями будущего</b>
					<br>
					Во&nbsp;время игры участники пользуются <a href="http://atlas100.ru/about">атласом новых профессий</a>, обсуждают, какие специальности будут востребованы через&nbsp;20&nbsp;лет, как к&nbsp;ним подготовиться и&nbsp;какой ВУЗ выбрать.
				</li>
				<li><b>Опыт командной работы</b>
					<br>
					Группа управляет одним персонажем, и&nbsp;все решения принимаются согласованно.
				</li>
			</ul>
		</p>
	</div>
	
<div class="course_description wrap_colored">
<div class="first_lesson"><pstyle="margin-up: 2em">Даты ближайшей игры: 2&nbsp;апреля (воскресенье) в&nbsp;12:00</p></div>
</div>		

<div class="process_description">
	<div class="enter_block">
		<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
		<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!  
		</div>
	</div>
	<div class="process_block">
	<div class="process_column" style="width: 320px"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">длится игра</div></div>
	<div class="process_column" style="width: 320px"><div class="large_number">500 &#8381;</div></div>
	</div>
</div>
</html>
/%
|контингент|6-11 класс|
|ФИО преподавателя|Полюга Вадим Олегович, Головацкий Борис |
|id|105|
|видимое в адресной строке название|i3|
%/
<html>
	<div class="course_description two_thirds">
<p>Это кружок для юных конструкторов и&nbsp;изобретателей. На&nbsp;занятиях используется уникальный авторский конструктор КриКоКо (Криволинейный Контурный Конструктор), который был создан Д.&nbsp;Н.&nbsp;Кожевниковым в&nbsp;1989&nbsp;году. </p>
		<p>
Под&nbsp;руководством опытного педагога дети осваивают способы соединения элементов и&nbsp;методы конструирования. Гибкие элементы позволяют ребенку собирать фигурки, изображающие животных, растения, разные абстрактные композиции. Работа с&nbsp;конструктором развивает фантазию, мелкую моторику, воображение, абстрактное и&nbsp;объемное мышление, мобилизует память.
		</p>
</div>
	
	<div class="teacher_description third">
		<img class="teacher_img small_two_thirds" src="images_teachers/kozhevnikov.jpg">
		<div class="teacher_text small_third" style="vertical-align: bottom; padding: 0"><p class="name" style="margin: 0">Дмитрий Николаевич Кожевников</p></div>
		<div class="teacher_text" style="margin-top: 1em;">
		<p>Кандидат педагогических наук, старший научный сотрудник Центра средств обучения в&nbsp;Институте стратегии развития образования Российской академии Образования.</p></div></div>
	
	
	
	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
<div class="process_block">
		<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words"><p>по субботам в&nbsp;12:00</p></div></div>
			<div class="process_column"><div class="large_number">5000 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div></div>
</html>

/%
|контингент|1-3 класс|
|ФИО преподавателя|Кожевников Дмитрий Николаевич|
|id|27|
|видимое в адресной строке название|ikm|
%/
<html>

<div class="course_description">
		<p>Консультации для&nbsp;определения уровня развития ребёнка, сформированности его&nbsp;речи, звукопроизношения, фонематического слуха, внимания, памяти, мышления, пространственных представлений, ведущей руки, причин трудностей обучения письму и&nbsp;чтению.
		</p>
		<p>Диагностика включает в&nbsp;себя логопедический и&nbsp;нейропсихологический аспект, что&nbsp;позволяет увидеть не&nbsp;только особенности развития ребёнка, сформированность высших психических функций, но&nbsp;и&nbsp;его&nbsp;потенциальные возможности и&nbsp;способности, найти пути наилучшей подготовки к&nbsp;школьному обучению.
		</p>
		<p style="margin-bottom: 2em">На&nbsp;консультации вы&nbsp;можете задать любые вопросы, касающиеся речевого и&nbsp;интеллектуального развития вашего ребёнка.
		</p>
	</div>
	
<div class="wide margin-top">
		<img class="teacher_img small_half" src="images_teachers/shachneva.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Светлана Геннадьевна Шачнева</p>
			<p>Окончила МГПИ&nbsp;им.&nbsp;Ленина, дефектологический факультет. Специальность&nbsp;—&nbsp;учитель­ логопед, учитель русского языка и&nbsp;литературы. Стаж 25 лет. Прошла несколько циклов повышения квалификации по&nbsp;детской нейропсихологии в&nbsp;ведущих научных центрах (МГУ, МГППУ, Научно­-исследовательском Центре детской нейропсихологии).</p>
		<p>Сфера деятельности и&nbsp;интересы&nbsp;—&nbsp;нейропсихологический подход к&nbsp;речевым проблемам и&nbsp;школьной неуспеваемости, коррекция речевых нарушений, развитие интеллекта, инновационные методики обучения детей, подготовка к&nbsp;школе. Автор курса «Тренинг речевого самовыражения», «Коррекционной программы для&nbsp;работы с&nbsp;детьми, имеющими высокий уровень развития интеллекта».</p>
		</div>
	</div>	

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
</div>
<div class="process_block">
		<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">длится консультация</div></div>
		<div class="process_column"><div class="large_number">3800 &#8381;</div><div class="light_words">за первичную консультацию</div></div>
		<div class="process_column"><div class="large_number">2500 &#8381;</div><div class="light_words">за 1 занятие</div></div>
	</div></div>
</html>
/%
|контингент|дошкольники; 1-4 класс|
|ФИО преподавателя|Шачнева Светлана Геннадьевна|
|id|19|
|видимое в адресной строке название|сonsultations|
%/
<html>
<div class="course_description two_thirds">
	<p>Весь путь от идеи до работающего устройства!</p>
	<p>На кружке ребята усвоят базовые знания инженерного ремесла: законы физики и мехатроники, правила работы с техникой и измерительными приборами. Обучение строится исключительно через практику, и для знакомства с инженерным делом дети самостоятельно решают элементарные задачи.
	</p>
	<p style="margin-bottom: 2em">После того как базовые понятия уложились в голове, ученики приступают к выполнению собственного проекта. Детали для придуманного механизма печатаются на 3D-принтере, вырезаются на лазерном и фрезерном станках. Затем собирается электронная схема — «мозг» нашего будущего устройства. В конце у каждого получится реальное работающее устройство, такое как калькулятор, сигнализация или часы.
	</p>
</div>
<div class="teacher_description third">
	<div class="small_two_thirds gekkon bordered">
		Кружок ведут преподаватели «<a href="http://gekkon-club.ru/">Геккон-клуба</a>»
	</div>
</div>

<div class="two_thirds"><img src="images_others/37-5.jpg" class="wide"></div>
<div class="third"><img class="wide" src="images_others/37-3.jpg" style="margin-bottom: .5em"><img class="wide" src="images_others/37-2.jpg"></div>
<div class="img_text wide" style="margin-top: .5em;">Ребята собирают готовый механизм, опираясь на теорию и собственные расчеты, а в финале закладывают алгоритм работы прибора с помощью языка С++
</div>

<div class="process_description_2">
<h2>Группы</h2>
<table class="groups">
	<tr class="group_number">
		<td><span class="num">1</span></td>
		<td><span class="num">2</span></td>
	</tr>
	<tr class="group_age">
		<td>3–4 класс</td>
		<td>5–10 класс</td>
	</tr>
	<tr class="group_frequency">
		<td>1 раз в неделю,<br>по средам в 15:00</td>
		<td>1 раз в неделю,<br>по средам в 17:00</td>
	</tr>
	<tr class="group_duration">
		<td>90 минут</td>
		<td>90 минут</td>
	</tr>
	<tr class="group_price">
		<td><span class="extrabold">3400 &#8381;</span><br>за 4 занятия</td>
		<td><span class="extrabold">3400 &#8381;</span><br>за 4 занятия</td>
	</tr>
</table>
<div class="enter_block_2">
	<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter_2">Записаться</div></a>
	<div class="enter_text">Оставьте свои контакты,<br>и мы вам перезвоним!  
	</div>
</html>


/%
|контингент|3-10 класс|
|ФИО преподавателя|«Геккон-клуб»|
|id|37|
|видимое в адресной строке название|engineers|
%/
<html>
	<div class="course_description half">
		<p>Приглашаем на&nbsp;занятия в клуб настольного тенниса всех, кто хочет развить меткий глаз и&nbsp;крепкую руку! Тренировки проходят с&nbsp;использованием авторской «Рабочей тетради по&nbsp;настольному теннису». На&nbsp;занятиях ребята учатся работать в&nbsp;команде, играют в&nbsp;спортивные игры, участвуют в&nbsp;соревнованиях и&nbsp;получают спортивные разряды. По&nbsp;выходным мы устраиваем семейные турниры вместе с&nbsp;родителями и&nbsp;старшими братьями!</p>
<p>Спортивный зал оснащен всем необходимым для занятий (столы Neotteс, Butterfly, робот-тренажер).</p>
</div>
	<div class="half">	
		<div class="teacher_text small_half"><p class="name bordered">Екатерина Владимировна Черникова</p>
		<p>Кандидат в мастера спорта по настольному теннису, учитель физической культуры в школе «Интеллектуал».</p>
		</div>
		<img class="teacher_img small_half" src="images_teachers/chernikova.jpg">
	</div>
	
	<div class="img_text half"><img src="images_others/7-2.jpg"></div>
<div class="half"><div class="videoWrapper">
    <iframe src="https://www.youtube.com/embed/KpuotIkAx0E" frameborder="0" allowfullscreen></iframe>
</div></div>
	
<div class="process_description_2">
<h2>Группы</h2>
<table class="groups">
	<tr class="group_number">
		<td><span class="num">1</span></td>
		<td><span class="num">2</span></td>
		<td><span class="num">3</span></td>
	</tr>
	<tr class="group_age">
		<td>начинающие<br>дошкольники</td>
		<td>начинающие<br>1–5 класс</td>
		<td>продолжающие<br>1–10 класс</td>
	</tr>
	<tr class="group_frequency">
		<td>1 раз в неделю,<br>по воскресеньям в 10:00</td>
		<td>2 раза в неделю,<br>по вторникам в 17:00<br>и по воскресеньям в 11:00</td>
		<td>2 раза в неделю,<br>по вторникам в 18:00<br>и по воскресеньям в 12:15</td>
	</tr>
	<tr class="group_duration">
		<td>60 минут</td>
		<td>60+105 минут</td>
		<td>90+120 минут</td>
	</tr>
	<tr class="group_price">
		<td><span class="extrabold">2500 &#8381;</span><br>за 4 занятия</td>
		<td><span class="extrabold">4000 &#8381;</span><br>за 8 занятий<br>или<br><span class="extrabold">3000 &#8381;</span><br>за 4 занятия</td>
		<td><span class="extrabold">4000 &#8381;</span><br>за 8 занятий<br>или<br><span class="extrabold">3000 &#8381;</span><br>за 4 занятия</td>
	</tr>
</table>

<div class="enter_block_2">
	<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter_2">Записаться</div></a>
	<div class="enter_text">Оставьте свои контакты,<br>и мы вам перезвоним!  
	</div>
</html>


/%
|контингент|дошкольники; 1-11 класс|
|ФИО преподавателя|Черникова Екатерина Владимировна|
|id|7|
|видимое в адресной строке название|tennis|
%/
<html>
<div class="course_description two_thirds">
		<p>Учим испанскому взрослых и&nbsp;детей с&nbsp;нуля!
		</p>
		<p style="margin-bottom: 2em;">Испанский&nbsp;— второй по&nbsp;распространенности язык в&nbsp;мире и&nbsp;второй неофициальный язык США. На&nbsp;испанском говорят в&nbsp;Испании, Аргентине, Мексике и&nbsp;более чем в&nbsp;20 странах Латинской Америки. После года обучения вы овладеете испанским на&nbsp;уровне&nbsp;А2: сможете спокойно заказать паэлью в&nbsp;Барселоне, спросить дорогу в&nbsp;Теотиуакан, чтобы увидеть пирамиды майя, поддержать беседу о&nbsp;танго в&nbsp;Буэнос-Айресе, написать письмо и&nbsp;понять текст любимой песни.
		</p>

<div class="img_text wide"><div class="videoWrapper">
    <iframe src="https://www.youtube.com/embed/_8ZHvCTCoAc" frameborder="0" allowfullscreen></iframe>
</div>
Этот клип — результат сотрудничества трёх исполнительниц этнической музыки из Испании (Niña Pastori), Мексики (Lila Downs) и Аргентины (Soledad Pastorutti). Каждая из них рассказывает о своей родине.
</div>
</div>

	<div class="teacher_description third">
		<img class="teacher_img small_two_thirds" src="images_teachers/ivanova.jpg">
		<div class="teacher_text small_third" style="vertical-align: bottom; padding: 0"><p class="name" style="margin: 0">Жанна Михайловна Иванова де&nbsp;Мендоса</p></div>
		<div class="teacher_text" style="margin-top: 1em;">
		<p>Окончила МГУ&nbsp;им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова, лингвист, специалист по межкультурной коммуникации, переводчик с&nbsp;английского и&nbsp;испанского языков. Преподаватель испанского языка, стаж работы&nbsp;—9&nbsp;лет. <a href="http://sch-int.ru/s_ivanova-de-mendosa">Подробнее</a></p>
		</div>
	</div>

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
<div class="process_block">
		<div class="process_column"><div class="large_number">60</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">2</div><div class="bold_words">раза<br>в неделю</div></div>
		<div class="process_column"><div class="large_number">5000 &#8381;</div><div class="light_words">за 8 занятий</div></div>
	</div></div>

</html>

/%
|контингент|5-11 класс; взрослые|
|ФИО преподавателя|Иванова де Мендоса Жанна Михайловна|
|id|65|
|видимое в адресной строке название|spanish|
%/
<html>
<div class="course_description two_thirds">
	<p>Киноклуб документальных и художественных фильмов с комментариями историков, специализирующихся на соответствующем периоде.</p>
	<p>Курс направлен на развитие навыков критики художественного произведения, а также изучение исторического контекста, повлиявшего на появление того или иного фильма, изучение образов и символов эпох в контексте массового сознания.
	</p>
</div>
<div class="teacher_description third">
	<div class="small_two_thirds gekkon bordered">
		Кружок ведут преподаватели <a href="http://www.sch-int.ru/k_hyst#about">кафедры истории</a> школы «Интеллектуал»
	</div>
</div>

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">120</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по&nbsp;понедельникам в&nbsp;17:30</div></div>
	<div class="process_column"><div class="large_number">бесплатно</div></div>
</div>
</html>

/%
|контингент|5-11 класс|
|ФИО преподавателя||
|id|51|
|видимое в адресной строке название|historical_movies|
%/
<html>
<div class="course_description two_thirds">
	<p>Занятия для&nbsp;храбрых сердцем! 
	</p>
	<p>Мы изучим различные боевые техники, тактику турнирного и&nbsp;группового боя и&nbsp;погрузимся в&nbsp;историю рыцарства. На&nbsp;практической части изучим основы техники фехтования <NOBR>щит – меч</NOBR>, <NOBR>меч – меч</NOBR>, <NOBR>меч – баклер</NOBR>, двуручный меч и&nbsp;два меча.
	</p>
	<img src="images_others/80-2.jpg" class="small_half">
	<img src="images_others/80-3.jpg" class="small_half">
	<div class="img_text wide">Самые отважные бойцы поедут защищать свою честь на&nbsp;дружественных турнирах.</div>
</div>
<div class="teacher_description third">
	<img class="teacher_img small_two_thirds" src="images_teachers/osipov.jpg">
	<div class="teacher_text small_third" style="vertical-align: bottom; padding: 0"><p class="name" style="margin: 0">Антон Дмитриевич Осипов</p></div>
	<div class="teacher_text" style="margin-top: 1em;">
		<p>Окончил МОСА по&nbsp;специальности «психолог, преподаватель психологии»&nbsp;(2010&nbsp;г.). Проходит профессиональную переподготовку в&nbsp;РГУФК (ГЦОЛИФК) по&nbsp;специальности «Тренер-преподаватель по&nbsp;стрелковым видам спорта». С&nbsp;2007&nbsp;года занимается историческим фехтованием в&nbsp;военно-историческом клубе Армэ, занимается тренерской деятельностью с&nbsp;2010&nbsp;г. Работал в&nbsp;НИИРПО в&nbsp;лаборатории Психологии и&nbsp;воспитания. Работает в&nbsp;школе «Интеллектуал» с&nbsp;2013&nbsp;г.
		</p>
	</div>
	<div class="course_description wrap_colored">
		<p>Набор проводится только в&nbsp;группу для продолжающих.</p>
	</div>
</div>

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div><div class="process_block">
		<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по четвергам в 19:30</div></div>
		<div class="process_column"><div class="large_number">1000 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div></div>
</html>

/%
|контингент|6-11 класс|
|ФИО преподавателя|Осипов Антон Дмитриевич|
|id|80|
|видимое в адресной строке название|fencing|
%/
<html>
<div class="course_description half">
		<p>Увлекательный краеведческий кружок с&nbsp;прогулками и&nbsp;экскурсиями по&nbsp;Москве. На&nbsp;занятиях школьники узнают, когда и&nbsp;как возникла Москва, как менялся облик города и&nbsp;как его&nbsp;историческое прошлое соседствует с&nbsp;настоящим. Ребята узнают, как жили москвичи несколько веков назад: чем занимались московские князья, бояре, купцы, ремесленники и&nbsp;обыкновенные горожане. Мы&nbsp;посетим музей археологии, Кремль, музей Москвы и&nbsp;другие достопримечательности. 
		</p>
		<p>На&nbsp;кружке ребята смогут сделать проектную работу по&nbsp;одной из&nbsp;понравившихся тем.</p>
	<div class="first_lesson" style="margin-bottom: 2em">Первое занятие 10 октября.</div>
	</div>

<div class="half">
		<div class="teacher_text half"><p class="name bordered">Дина Борисовна Борухина</p>
			<p>Окончила исторический факультет МГПИ им.&nbsp;В.&nbsp;И.&nbsp;Ленина, факультет профессиональной переподготовки педагогических кадров МИОО по&nbsp;направлению «Философия религии и религиоведение». Имеет квалификацию учителя истории, обществоведения и&nbsp;права, преподавателя-религиоведа. Работает в&nbsp;школе «Интеллектуал» более 5&nbsp;лет. Организует школьные экскурсии.
			</p>
		</div>
	</div>	

<div class="process_description_2 closed">
<h2>Группы</h2>
<table class="groups">
	<tr class="group_number">
		<td><span class="num">1</span></td>
		<td><span class="num">2</span></td>
	</tr>
	<tr class="group_age">
		<td>начинающие<br>(1 класс)</td>
		<td>продолжающие<br>(2 класс)</td>
	</tr>
	<tr class="group_frequency">
		<td>1 раз в неделю,<br>по понедельникам</td>
		<td>1 раз в неделю,<br>по понедельникам</td>
	</tr>
	<tr class="group_duration">
		<td>40 минут</td>
		<td>40 минут</td>
	</tr>
	<tr class="group_price">
		<td><span class="extrabold">2500 &#8381;</span><br>за 4 занятия</td>
		<td><span class="extrabold">2500 &#8381;</span><br>за 4 занятия</td>
	</tr>
</table>
<div class="enter_block_2">
	<a><div class="enter_2">Запись закрыта</div></a>
	<div class="enter_text">Ждем вас в январе!
	</div>

</div></div>
</html>

/%
|контингент|1-2 класс|
|ФИО преподавателя|Борухина Дина Борисовна|
|id|22|
%/
<html>
<div class="course_description half">
		<p>Кружок для тех, кто интересуется историей и&nbsp;хочет побольше узнать о&nbsp;том, что происходило на&nbsp;нашей земле много лет назад. Мы&nbsp;обсудим основные вехи истории России, представим, как жили и&nbsp;работали люди за&nbsp;много веков до&nbsp;нас, с&nbsp;головой окунемся в&nbsp;прошлое и&nbsp;станем свидетелями самых значимых событий. В&nbsp;качестве иллюстрации теоретических знаний мы&nbsp;побываем в&nbsp;исторических местах и&nbsp;музеях Москвы.
		</p>
		<p>На&nbsp;кружке ребята смогут сделать проектную работу по&nbsp;одной из&nbsp;понравившихся тем.</p>
	<div class="first_lesson" style="margin-bottom: 2em">Первое занятие 10 октября.</div>
	</div>
	
<div class="half">
		<div class="teacher_text half"><p class="name bordered">Дина Борисовна Борухина</p>
			<p>Окончила исторический факультет МГПИ им.&nbsp;В.&nbsp;И.&nbsp;Ленина, факультет профессиональной переподготовки педагогических кадров МИОО по&nbsp;направлению «Философия религии и религиоведение». Имеет квалификацию учителя истории, обществоведения и&nbsp;права, преподавателя-религиоведа. Работает в&nbsp;школе «Интеллектуал» более 5&nbsp;лет. Организует школьные экскурсии.
			</p>
		</div>
	</div>

<div class="process_description closed">
	<div class="enter_block">
		<a><div class="enter">Запись закрыта</div></a>
		<div class="process_text">Ждем вас в январе!  
		</div>
		</div><div class="process_block">
		<div class="process_column"><div class="large_number">40</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по понедельникам</div></div>
		<div class="process_column"><div class="large_number">2500 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div></div>
</html>

/%
|контингент|4 класс|
|ФИО преподавателя|Борухина Дина Борисовна|
|id|23|
%/
<html>
<div class="course_description half">
	<p>Откуда сердце знает, как ему биться?<br>Что происходит с&nbsp;пищей после того, как мы её съели?<br>С помощью каких веществ и&nbsp;сигналов общаются клетки внутри нашего организма?</p>
<p>Будем разбирать фильмы про&nbsp;наше тело, смотреть в&nbsp;микроскопы, решать логические задачки по&nbsp;анатомии и&nbsp;физиологии, чтобы самостоятельно суметь дать ответы на&nbsp;все эти вопросы.</p>
<div class="first_lesson"><p style="margin-bottom: 2em">Занятия с января!</p></div>
	</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Полина Алексеевна Чернышёва</p>
		<p>Выпускница школы «Интеллектуал», студентка факультета фундаментальной медицины МГУ&nbsp;им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова, преподаватель летних образовательных лагерей.</a></p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/chernysheva.jpeg">
</div>

<div class="process_description">
	<div class="enter_block">
		<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
		<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!  
		</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по средам<br>в 18:30</div></div>
	<div class="process_column"><div class="large_number">4000 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div>
</div>
</html>

/%
|контингент|5-8 класс|
|ФИО преподавателя|Чернышёва Полина Алексеевна|
|id|96|
|видимое в адресной строке название|anatomy|
%/
<html>
	<div class="course_description">
		<p>你好</p>
<p>Приглашаем вас на занятия китайским языком!</p>
<p>Кружок ведут носители языка — сотрудники Центра китайского языка и культуры, созданного в 2008 году на базе школы «Интеллектуал». Есть группы для разных возрастов, для начинающих и продолжающих.</p>
<p>На курсе для начинающих школьники выучат 150–200 наиболее употребляемых иероглифов; научатся читать, говорить и понимать на слух простые предложения.
		</p>
		<img src="images_others/8-3.jpg" class="half">
		<img src="images_others/8-5.jpg" class="half">
<div class="img_text wide margin-bottom">Чтобы лучше познакомиться с китайской культурой, ребята примут участие в мастер-классах: попробуют свои силы в каллиграфии, китайской акварельной живописи и народном танце с веерами.</div>
	</div>

<div class="third course_description">Каждый год в рамках сотрудничества с китайскими образовательными центрами мы организуем поездку в Китай, где ребята съездят на экскурсии, подружатся с китайскими школьниками и смогут вовсю применить полученные знания!</div>
<img class="third" src="images_others/8-2.jpg">
<img class="third" src="images_others/8-4.jpg">

	<div class="wide margin-top">
	<div class="half">
		<img class="teacher_img small_half margin-bottom" src="images_teachers/baoay.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Ван Баоай</p>
		<p>Лингвист,  доцент. Преподаватель китайского языка в школе «Интеллектуал». Стаж работы с русскими школьниками и студентами — более 15 лет. Свободное владение русским языком. <a href="http://sch-int.ru/node/230">Подробнее</a></p>
	</div>
	</div>
	<div class="half">	
		<img class="teacher_img small_half" src="images_teachers/syaovey.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Сунь Сяовэй</p>
		<p>Окончил МПГУ по специальности «Педагогическая психология». Кандидат психологических наук. Магистр делового администрирования (университет Тсинхуа).
Преподаватель китайского языка в школе «Интеллектуал». Педагогический стаж — более 7 лет. Директор Центра изучения китайского языка и культуры с 2008 г. <a href="http://sch-int.ru/node/229">Подробнее</a></p>
	</div>
	</div>
	</div>
<div class="process_description_2 closed">
<h2>Группы</h2>
<table class="groups">
	<tr class="group_number">
		<td><span class="num">1</span></td>
		<td><span class="num">2</span></td>
		<td><span class="num">3</span></td>
	</tr>
	<tr class="group_age">
		<td>начинающие<br>(дошкольники)</td>
		<td>начинающие<br>(1 класс)</td>
		<td>начинающие<br>(3–11 класс)</td>
	</tr>
	<tr class="group_frequency">
		<td>2 раза в неделю,<br>по&nbsp;понедельникам и&nbsp;пятницам<br>в 13:00</td>
		<td>2 раза в неделю,<br>по&nbsp;понедельникам и&nbsp;пятницам<br>в 14:30</td>
		<td>2 раза в неделю,<br>по&nbsp;понедельникам и&nbsp;пятницам<br>в 17:00</td>
	</tr>
	<tr class="group_duration">
		<td>40 минут</td>
		<td>50 минут</td>
		<td>60 минут</td>
	</tr>
	<tr class="group_price">
		<td><span class="extrabold">4000 &#8381;</span><br>за 8 занятий</td>
		<td><span class="extrabold">5000 &#8381;</span><br>за 8 занятий</td>
		<td><span class="extrabold">5000 &#8381;</span><br>за 8 занятий</td>
	</tr>
</table>
<div class="enter_block_2">
	<a href=""><div class="enter_2">Набор закрыт</div></a>
	<div class="enter_text">Ждем вас на других кружках!
	</div>

</html>

/%
|контингент|дошкольники с 4 лет; 1-11 класс|
|ФИО преподавателя|Ван Баоай, Сунь Сяовэй|
|id|8|
|видимое в адресной строке название|chinese|
%/
<html>
<div class="course_description half">
	<p>Обучение строится по&nbsp;классическому образцу: дети знакомятся с&nbsp;основами музыкальной теории и&nbsp;нотной грамотой, осваивают оцифровку&nbsp;—&nbsp;запись гитарных аккордов.</p>
	<p style="margin-bottom: 2em">Первый этап практической работы&nbsp;—&nbsp;постановочный. На&nbsp;простых упражнениях ставим правую, а&nbsp;затем левую руку. Дети учатся использовать перебор и&nbsp;аккорды, читать ноты с&nbsp;листа, играть соло и&nbsp;в&nbsp;ансамбле.
</p>
	</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Татьяна Валерьевна Левина</p>
		<p>Преподаватель классической гитары высшей квалификационной категории. Опыт работы&nbsp;—&nbsp;23&nbsp;года. Автор методики работы с&nbsp;детьми 5–7&nbsp;лет. Написала большое количество аранжировок и&nbsp;переложений для&nbsp;гитары. Ученики&nbsp;—&nbsp;ауреаты и&nbsp;дипломанты Всероссийских и&nbsp;международных конкурсов по&nbsp;классической гитаре.</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/levina.jpg">
</div>

<div class="process_description">
	<div class="enter_block">
		<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
		<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!  
		</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">60</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words" style="padding-right: .3em">или</div><div class="large_number">2</div><div class="bold_words">раза<br>в неделю</div><div class="light_words">по&nbsp;вторникам и&nbsp;четвергам с&nbsp;12:00 до&nbsp;18:00</div></div>
	<div class="process_column"><div class="large_number">1500 &#8381;</div><div class="light_words">за 1 занятие</div></div>
	</div>
</div>
</html>
/%
|контингент|дошкольники; 1-11 класс|
|ФИО преподавателя|Левина Татьяна Валерьевна|
|id|106|
|видимое в адресной строке название|guitar|
%/
<html>
<div id="contacts">
<div class="title">Контакты</div>
<div class="course_description">
<p>Адрес школы: 121357, г.&nbsp;Москва, ул.&nbsp;Кременчугская, д.&nbsp;13</p>
<p>Телефон: +7 (925) 122-11-61</p>
<p>e-mail: sch.int.dop@gmail.com</p>
<p>Пешком до&nbsp;школы ближе всего от&nbsp;метро «Славянский бульвар». На&nbsp;автобусе можно доехать от&nbsp;«Славянского бульвара» или&nbsp;«Юго-Западной»:</p>
<iframe src="https://api-maps.yandex.ru/frame/v1/-/CVhSBHO" width="100%" height="500px" frameborder="0"></iframe>
</div></div>
</html>
<html>
<div class="course_description two_thirds">
	<p>На&nbsp;кружке криволинейного контурного моделирования дети работают с&nbsp;уникальным авторским конструктором КриКоКо (Криволинейный Контурный Конструктор), который был создан Д.&nbsp;Н.&nbsp;Кожевниковым в&nbsp;1989&nbsp;году.</p>
	<p>На&nbsp;занятиях с&nbsp;помощью конструктора ребята познакомятся с&nbsp;основами стереометрии, изучат свойства объемных фигур. Интересные конструкторские задачи развивают объемное мышление, мелкую моторику и&nbsp;воображение, а&nbsp;множество вариантов решения таких задач тренирует восприятие абстрактных категорий. Кроме того, на&nbsp;примере простых моделей дети познакомятся со&nbsp;строением атомов, молекул и&nbsp;кристаллов.
	</p>
<div class="first_lesson wide">Первое занятие 22 октября.</div>
	<div class="img_text small_half"> <img  class="wide" src="images_others/28-2.jpg"></div>
	<div class="img_text small_half"> <img  class="wide" src="images_others/28-3.jpg"></div>
	<div class="img_text wide">Пример задачи: Собери тетраэдр («пирамидку») из палочек трех разных цветов так, чтобы палочки одного цвета не соприкасались.
	</div>
</div>
<div class="teacher_description third">
	<img class="teacher_img small_two_thirds" src="images_teachers/kozhevnikov.jpg">
	<div class="teacher_text small_third" style="vertical-align: bottom; padding: 0"><p class="name" style="margin: 0">Дмитрий Николаевич Кожевников</p></div>
	<div class="teacher_text" style="margin-top: 1em;">
		<p>Кандидат педагогических наук, старший научный сотрудник Центра средств обучения в&nbsp;Институте стратегии развития образования Российской академии Образования.</p>
	</div>
</div>	

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words"><p>по субботам в&nbsp;14:30</p></div></div>
		<div class="process_column"><div class="large_number">5000 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div>
</div>
</html>

/%
|контингент|2-7 класс|
|ФИО преподавателя|Кожевников Дмитрий Николаевич|
|id|28|
|видимое в адресной строке название|ks|
%/
<html>
<div id="preface">
	<div id="preface_head">«Интеллектуал»&nbsp;— <br>школа для&nbsp;тех, <br>кому интересно учиться</div>
	<div id="preface_text">
		<!-- У нас нет звонков и единого учебного плана&nbsp;— каждый ученик формирует его сам, выбирая профильные предметы. --> И&nbsp;мы заражаем этим интересом других! В&nbsp;школе работает больше сотни кружков и&nbsp;спецкурсов, на&nbsp;которые теперь можете записаться и&nbsp;вы.
	</div>
</div>
</html>

<<tiddler [[Курсы##template]] with:'на главную (дошкольники)' with:'beforeSchool'>>{{links{[img[images_others/backpacks-01.png][Кружки для дошкольников]][[Все кружки для дошкольников|Кружки для дошкольников]]}}}
<<tiddler [[Курсы##template]] with:'на главную (начальная школа)' with:'beforeSchool'>>{{links{[img[images_others/backpacks-02.png][Кружки для начальной школы]][[Все кружки для начальной школы|Кружки для начальной школы]]}}}
<<tiddler [[Курсы##template]] with:'на главную (старшая школа)' with:'beforeSchool'>>{{links{[img[images_others/backpacks-03.png][Кружки для старшей школы]][[Все кружки для средней и старшей школы|Кружки для старшей школы]]}}}
<<tiddler [[Курсы##template]] with:'взрослым' with:'afterSchool'>>
<<tiddler [[Курсы##template]] with:'дошкольникам' with:'beforeSchool'>>
<<tiddler [[Курсы##template]] with:'начальная школа' with:'primarySchool'>>
<<tiddler [[Курсы##template]] with:'старшая школа' with:'secondarySchool'>>
дошкольникам <<tiddler [[Курсы##template]] with:'дошкольникам' with:'beforeSchool'>>
начальная школа <<tiddler [[Курсы##template]] with:'начальная школа' with:'primarySchool'>>
старшая школа <<tiddler [[Курсы##template]] with:'старшая школа' with:'secondarySchool'>>
взрослым <<tiddler [[Курсы##template]] with:'взрослым' with:'afterSchool'>>/%
!!!template
<<fet set:'tag[курс] AND tag[$1]' sortable
	script '
	var isNowReadOnly = function(){return config.options.txtTheme == "WebTheme"};
	var getAvatarURL = function(tiddler) {
		var id = tiddler.getSlice("id");
		if(!id) return "0 attachments/square picture.jpg";
		return "images_others/"+id+"-1.jpg";
	};
	var getAvatar = function(tiddler) {
		return "[img["+getAvatarURL(tiddler)+"]["+tiddler.title+"]]";
	};
	var getShortFIO = function(tiddler) {
		var value = tiddler.getSlice("ФИО преподавателя");
		if(!value) return "";
		var names = value.split(", "), i, parts;
		for(i = 0; i < names.length; i++) {
			parts = names[i].split(" ");
			if(parts.length < 3) {
				names[i] = parts[1] ? (parts[1][0]+".&nbsp;"+parts[0]) : parts[0];
				if(tiddler.title == "Китайский язык")
					names[i] = parts.join("&nbsp;");
			} else {
				names[i] =  parts[parts.length-2][0]+".&nbsp;"+ // first name
					    parts[parts.length-1][0]+".&nbsp;"; // father s name
				parts.splice(parts.length-2,2);
				names[i] += parts.join(" ");	// complex surname
			}
		}
		return names.join(", ");
	};
	var getAges = function(tiddler) {
		var agesString = tiddler.getSlice("контингент",""),
		    agesCategories = agesString.split("; ");
		agesString = agesCategories[0];

		if("$2" == "afterSchool")
		{
			return "";
		}
		if("$2" == "beforeSchool")
		{
			var formattedAges = /дошкольники,? (.+)/.exec(agesString);
			return formattedAges ? formattedAges[1] : "";
		}

		var agesRE = /(\d+(?:\-\d+)? классы?)/gm,
		    agesMatch = agesRE.exec(agesString);
		if(!agesMatch) agesMatch = agesRE.exec(agesCategories[1]);
		if(!agesMatch) return "";

		return agesMatch[1].replace(/классы?/gm,"кл.").replace("-","–");
		//return tiddler.getSlice("контингент","").replace(/классы?/gm,"кл.").replace("-","–")
	};
	var getCourseAgesMap = function(tiddler) {
		var agesAsText = getAges(tiddler),
		    rangeRE = /(\d+)(?:–(\d+))?/,
		    range = rangeRE.exec(agesAsText);
		if(!range) return null;
		var map = {};
		map[range[1]] = range[1];
		if(!range[2]) return map;
		for(var i = parseInt(range[1]); i <= parseInt(range[2]); i++) map[i] = i;
		return map;
	};
	var getCategoryAgesMap = function() {
		if("$1" == "начальная школа") return {1:1,2:2,3:3,4:4};
		if("$1" == "старшая школа")   return {5:5,6:6,7:7,8:8,9:9,10:10,11:11};
		return null;
	};
	var getAgeFiltersOptions = function() {
		var text = "", ages = getCategoryAgesMap(), age;
		for(age in ages)
			text += "<<option chkAgeForm"+age+">"+"> "+age+" класс\n";
		return text;
	};
	var ageIsSelected = function(age)
	{
		if(config.options["chkAgeForm"+age]) return true;
		var noAgeIsSelected = true, ages = getCategoryAgesMap(), categoryAge;
		for(categoryAge in ages)
			if(config.options["chkAgeForm"+categoryAge])
				noAgeIsSelected = false;
		return noAgeIsSelected;
	};
	var subjectsMap = config.subjects["$2"].map;
	var getSubjectFiltersOptions = function()
	{
		var text = "";
		for(var name in subjectsMap)
			text += "<<option "+config.subjects.getFilterOption(name)+">"+"> "
			      + subjectsMap[name]+"\n"
		return text;
	};
	var subjectIsSelected = function(subjectKey)
	{
		if(config.options[config.subjects.getFilterOption(subjectKey)]) return true;
		var noSubjectIsSelected = true, subject;
		for(subject in subjectsMap)
			if(config.options[config.subjects.getFilterOption(subject)])
				noSubjectIsSelected = false;
		return noSubjectIsSelected;
	};
	var isSelected = function(tiddler) {
		if("$2" == "beforeSchool" || "$2" == "afterSchool") return true;

		var properSubject = false, name;
		for(name in subjectsMap)
			properSubject = properSubject || (subjectIsSelected(name) && tiddler.tags.contains(subjectsMap[name]));

		// when the course is created, but a subject is not set, show anyway
		var noSubjects = true;
		for(name in subjectsMap)
			noSubjects = noSubjects && !tiddler.tags.contains(subjectsMap[name]);

		var properAge = false, ages = getCategoryAgesMap(), age;
		if(!getCourseAgesMap(tiddler))
			properAge = true;	// no age specified
		else
			for(age in ages)
				properAge = properAge || (ageIsSelected(age) && 
					getCourseAgesMap(tiddler)[age]);

		return (properSubject || noSubjects) && properAge;
	};
	var isPreparingToExam = function(tiddler) {
		return tiddler.tags.contains("ЕГЭ") || tiddler.tags.contains("ОГЭ")
			|| tiddler.tags.contains("языковые экзамены");
	};
	var getSmallCourseBlock = function(tiddler,alias) {
		return	"<div class=\"course\" tiddlylink=\""+tiddler.title+
					"\" onclick=\"onClickTiddlerLink(event)\">"+
				"<div class=\"courseTitle\"><span>"+alias+"</span></div>"+
				"<div class=\"courseTeacher\">"+getShortFIO(tiddler)+"</div>"+
			"</div>";
	};
	var getSmallCourseBlocksEGE = function()
	{
		var tiddlers = store.filterTiddlers("[tag[ЕГЭ]]"), i,
		    openWrapper  = "{{YEGE{{{h2{\nУглублённые группы для&nbsp;11-классников\n}}}"+
			   "<html><div class=\"yege_courses\">",
		    closeWrapper = "</div></html>"+"}}}",
		    text = openWrapper;
		tiddlers.sort(function(tiddlerA, tiddlerB) {
			var getSortValue = function(tiddler){ var c = tiddler.getSCounter(); return (!c && c != 0)? -1 : c; }
			var a = getSortValue(tiddlerA), b = getSortValue(tiddlerB);
			return (a == b ? 0 : ((a < b) ? -1 : +1))
		});

		for(i = 0; i < tiddlers.length; i++)
			if(isSelected(tiddlers[i]))
				text += getSmallCourseBlock(tiddlers[i],tiddlers[i].getSlice("Короткое название" , tiddlers[i].title));
		if(text == openWrapper)
			return "";

		text += closeWrapper;
		return text;
	};
	var getCellColor = function(tiddler) {
		return isPreparingToExam(tiddler) ? "background-color:#cccccc;" : "";
	};
	if(!config.macros.option.orig_genericOnChange){
		config.macros.option.orig_genericOnChange = config.macros.option.genericOnChange;
		config.macros.option.genericOnChange = function(e) {
			var result = config.macros.option.orig_genericOnChange.apply(this,arguments),
			    wrappers = document.getElementsByClassName("tiddler"), i;
			for(i = 0; i < wrappers.length; i++)
				refreshElements(wrappers[i]);
			return result;
		};
		config.macros.option.types["chk"].onChange = config.macros.option.genericOnChange;
	}'
	where 'isSelected(tiddler) && (!isPreparingToExam(tiddler) || !isNowReadOnly())'
	write '(isNowReadOnly() ?
		(tiddler.title == "Углублённые группы для 9-х классов" ?

		 ("<html><span class=\"OGE true_OGE\"><div class=\"course\">"+
			"<div class=\"h2\">Углублённые группы<br>для 9-х классов</div>"+
			"<div class=\"oge_course\" tiddlylink=\"Углубленная физика для старшей школы\" onclick=\"onClickTiddlerLink(event)\">"+
				"<div class=\"ogeTitle\"><span>Физика</span></div>"+
				"<div class=\"courseTeacher\">И.&nbsp;Н.&nbsp;Николайшвили</div>"+
			"</div><div class=\"oge_course\" tiddlylink=\"Углубленная химия для старшей школы\" onclick=\"onClickTiddlerLink(event)\">"+
				"<div class=\"ogeTitle\"><span>Химия</span></div>"+
				"<div class=\"courseTeacher\">Е.&nbsp;В.&nbsp;Батаева</div>"+
			"</div><div class=\"oge_course\" tiddlylink=\"Углубленная история для старшей школы\" onclick=\"onClickTiddlerLink(event)\">"+
				"<div class=\"ogeTitle\"><span>История</span></div>"+
				"<div class=\"courseTeacher\">Д.&nbsp;А.&nbsp;Быков</div>"+
			"</div>"+
		  "</div></span></html>") :

		 (tiddler.title == "Подготовка к языковым экзаменам" ?
		  ("<html><span class=\"OGE exams\"><div class=\"course\">"+
			"<div class=\"h2\">Подготовка<br>к языковым экзаменам</div>"+
			"<div class=\"oge_course\" tiddlylink=\"English for Exams (Cambridge, TOEFL, IELTS)\" onclick=\"onClickTiddlerLink(event)\"><div class=\"ogeTitle\"><img src=\"images_others/flag-02.png\"><span>Cambridge, TOEFL, IELTS</span></div>"+
			"<div class=\"courseTeacher\">А.&nbsp;О.&nbsp;Каменев</div></div>"+
			("$2" == "afterSchool" ? "" : ("<div class=\"oge_course\" tiddlylink=\"Подготовка к DELF A2\" onclick=\"onClickTiddlerLink(event)\"><div class=\"ogeTitle\"><img src=\"images_others/flag-04.png\"><span>DELF A2</span></div>"+
			"<div class=\"courseTeacher\">Д.&nbsp;В.&nbsp;Архипова</div></div>"))+
			"<div class=\"oge_course\" tiddlylink=\"Подготовка к DELE A2 и В1\" onclick=\"onClickTiddlerLink(event)\"><div class=\"ogeTitle\"><img src=\"images_others/flag-03.png\"><span>DELE A2 и В1</span></div>"+
			"<div class=\"courseTeacher\">Ж.&nbsp;М.&nbsp;Иванова де Мендоса</div></div></div>"+
		   "</span></html>") :
 
		  ("<html><div class=\"course\" tiddlylink=\""+tiddler.title+"\" onclick=\"onClickTiddlerLink(event)\">"+
			"<img src=\""+getAvatarURL(tiddler)+"\"/><div class=\"courseFooter\">"+
				"<div class=\"courseTitle\"><span>"+tiddler.title+"</span></div><div class=\"courseInf\">"+"<div class=\"courseTeacher\">"+getShortFIO(tiddler)+"</div>"+
				"<div class=\"floatRight\">"+getAges(tiddler)+"</div></div>"+
		 "</div></div></html>"))) :

		("|"+getCellColor(tiddler)+itemMenu()+"|"+
		    getCellColor(tiddler)+insert("!")+
			" ("+insert(":"+config.addressAliasSlice)+")|"+
		    getCellColor(tiddler)+config.macros.showSubjectTags.getTags(tiddler).join(", ")+"|"+
		    getCellColor(tiddler)+insert(":контингент","fillElement")+"|"+
		    getCellColor(tiddler)+insert(":ФИО преподавателя","fillElement")+"|"+
		    getCellColor(tiddler)+insert(":id")+(tiddler.getSlice("id") ? ("+++^*[ava] " +getAvatar(tiddler)+ "=== ") : "")+"|"+
		/*	insert(":стоимость","fillElement")+"|"+
			insert(":пояснения к стоимости","fillElement")+"|"+
			" +++["+(tiddler.getSlice("ссылка на форму записи") ? "+" : "-")+"]"+ insert(":ссылка на форму записи","fillElement")+"=== |"+*/
		"\n"))'

	begin '(isNowReadOnly() ? "" : (adder(
		"text:\'/%\n|контингент||\n|ФИО преподавателя||\n|id||\n%"+"/\'"
		,"Добавить курс","top")+"\n"))+

		"{{courses{\n"+
			(("$1" != "начальная школа" && "$1" != "старшая школа") ? "" : 
			 ("{{coursesFilterPanelWrap{\n{{coursesFilterPanel{\n"+
			 "\'\'Предметы\'\'\n"+
			 getSubjectFiltersOptions()+
			 "\n\'\'Возраст\'\'\n"+
			 getAgeFiltersOptions()+
			 "}}}}}}\n"))+

		"{{coursesContainerWrap{\n"+
		"{{coursesContainer{\n"+
		(!isNowReadOnly() ?
		 ("|| Название | Предмет | Контингент | ФИО преподавателя | id |"/*+" Стоимость | Пояснения к стоимости | форма записи |"*/+"h\n") :
		 (("$1" == "старшая школа" && ageIsSelected(11)) ? /*getSmallCourseBlocksEGE()*/ "" : "")
		)'

	end '	"\n}}}"+"}}}"+"}}}"'
	none same
>>
!%/
<html>
<head>
<link rel="stylesheet" type="text/css" href="../0 attachments/style_ikub.css">
</head>
<div class="course_description half">
	<p>Сложно понять, чем ты хочешь заниматься в&nbsp;жизни, когда тебе 16, за&nbsp;окном весна, а&nbsp;на&nbsp;носу вступительные экзамены. Даже&nbsp;хороший вуз не&nbsp;гарантирует, что работа тебе понравится, ведь первые шишки и&nbsp;опыт начинаешь получать только после выпуска. Система высшего образования не&nbsp;успевает за&nbsp;развитием технологий и&nbsp;появлением новых специальностей. В&nbsp;таких условиях на&nbsp;первый план выходят личностные качества, которые можно и&nbsp;нужно воспитать. 
	</p>
	<p style="margin-bottom: 2em">Под&nbsp;руководством кураторов и&nbsp;приглашенных специалистов ребята учатся на&nbsp;настоящих задачах, получают универсальные навыки и&nbsp;просто хорошо проводят время. А&nbsp;впоследствии могут более осознанно выбрать ВУЗ и&nbsp;профессию.
</p>
	</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">И-куб</p>
		<p>И-куб, информационно-инженерный инкубатор&nbsp;— пространство, в&nbsp;котором школьники могут получить первый опыт реальной работы. 
		</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/i3.png">
</div>
<div class="navlinks">

<ul class="ch-grid">
<img class="rocket_1" src="../0 attachments/rocket_1.png"><li class="nav_li_1">
        <div class="ch-item ch-img-1-b">      
		<div class="ch-info">
			<a href="">
               			<h3>Компас<br>профессий</h3>
			</a>
            	</div>
        </div>
    </li><li class="nav_li_2">
        <div class="ch-item ch-img-2-w">      
		<div class="ch-info">
			<a href="">
               			<h3>Летний<br>лагерь</h3>
			</a>
            	</div>
        </div>
    </li><li class="nav_li_3">
        <div class="ch-item ch-img-3-w">      
		<div class="ch-info">
			<a href="">
               			<h3>Обучение<br>и стажировка</h3>
			</a>
            	</div>
        </div>
    </li><div id="right_white"></div>
</ul>


</div>






<div class="title" style="margin-bottom: 0.5em">Игра «Компас новых профессий»</div>

<div class="course_description half">
	<p>Настольная игра для&nbsp;детей и&nbsp;взрослых, в&nbsp;которой участники строят жизненную траекторию выдуманного персонажа от&nbsp;13 до&nbsp;40 лет. Это возможность в&nbsp;игровой форме рассмотреть важные этапы взросления, попробовать несколько вариантов развития событий и&nbsp;подумать, какой из&nbsp;них ближе ребенку. 
</p>
	</div>
<div class="half">	
	<div class="img_text wide"><img src="images_others/kompas.png"></div>
</div>
<div class="course_description" style="margin-bottom: 2em">
	<div class="bold_words" >Что дает?</div>
			<p><ul>
				<li><b>Тема для&nbsp;размышлений</b><br>Для родителей это может стать поводом, чтобы поговорить с&nbsp;ребенком о&nbsp;будущем, а&nbsp;для школьников&nbsp;— чтобы задуматься о&nbsp;своем жизненном пути, задать интересные вопросы и&nbsp;начать находить на&nbsp;них ответы.
				</li>
				<li><b>Знакомство с профессиями будущего</b>
					<br>
					Во&nbsp;время игры участники пользуются <a href="http://atlas100.ru/about">атласом новых профессий</a>, обсуждают, какие специальности будут востребованы через&nbsp;20&nbsp;лет, как к&nbsp;ним подготовиться и&nbsp;какой ВУЗ выбрать.
				</li>
				<li><b>Опыт командной работы</b>
					<br>
					Группа управляет одним персонажем, и&nbsp;все решения принимаются согласованно.
				</li>
			</ul>
		</p>
	</div>
	
<div class="course_description wrap_colored">
<div class="first_lesson"><pstyle="margin-up: 2em">Даты ближайшей игры: 2&nbsp;апреля (воскресенье) в&nbsp;12:00</p></div>
</div>		

<div class="process_description">
	<div class="enter_block">
		<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
		<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!  
		</div>
	</div>
	<div class="process_block">
	<div class="process_column" style="width: 320px"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">длится игра</div></div>
	<div class="process_column" style="width: 320px"><div class="large_number">500 &#8381;</div></div>
	</div>
</div>
</html>
/%
|контингент|6-11 класс|
|ФИО преподавателя|Полюга Вадим Олегович, Головацкий Борис |
|id||
|видимое в адресной строке название|cc_og|
%/
<html>
<div class="course_description half">
		<p style="margin-bottom: 2em">Кэмпо сочетает в&nbsp;себе элементы нескольких видов единоборств и&nbsp;акробатики. На&nbsp;занятиях мы будем гармонично развивать все группы мышц, тренировать специфические удары, заломы, захваты, удерживания и&nbsp;защиту от&nbsp;них. Регулярные тренировки позволяют выполнять физические нормативы, необходимые для&nbsp;аттестации и&nbsp;сдачи экзаменов на&nbsp;получение пояса, укрепляют здоровье, прививают интерес к&nbsp;здоровому образу жизни и&nbsp;воспитывают морально-волевые качества.
		</p>
	</div>
	
<div class="half">
		<div class="teacher_text small_half"><p class="name bordered">Диана Александровна Колоскова</p>
			<p>Педагог по&nbsp;истории, опыт работы&nbsp;— 5 лет. Преподаватель по&nbsp;кэмпо, инструктор.
			</p>
		</div>
		<img class="small_half" src="images_teachers/koloskova.jpg">	
	</div>	

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
<div class="process_block">
		<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">2</div><div class="bold_words">раза<br>в неделю</div><div class="light_words">по понедельникам и&nbsp;средам</div></div>
		<div class="process_column"><div class="bold_words">цена</div><div class="light_words">уточняется</div></div>
	</div></div>
</html>

/%
|контингент|1-11 класс|
|ФИО преподавателя|Колоскова Диана Александровна|
|id|20|
|видимое в адресной строке название|kempo|
%/
<html>
<div class="course_description half">
	<p>Этот кружок — уникальная возможность научиться говорить на&nbsp;живом латинском языке!
	</p>
	<p style="margin-bottom: 2em">Ребята полностью погрузятся в&nbsp;жизнь Древнего Рима: составят и&nbsp;разыграют множество смешных диалогов, обсудят любимые книги, театр, поход на&nbsp;рынок, ту&nbsp;девочку из&nbsp;параллельного класса и&nbsp;ярчайших представителей античной культуры. Такой подход позволяет привить чувство языка и&nbsp;играючи познакомиться с&nbsp;основами грамматики. Широкий пласт лексики и&nbsp;знание латинских корней станет прекрасной базой для&nbsp;изучения современных языков романской группы, а&nbsp;также основой понимания 
научных терминов в&nbsp;будущем.
	</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Мария Юрьевна Федорцова</p>
		<p>Окончила исторический факультет МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова с&nbsp;отличием , кафедра истории древнего мира (2016&nbsp;г). Обучается в&nbsp;магистратуре филологического факультета МГУ на&nbsp;кафедре классической филологии.
		</p>
		<p>Сфера научных интересов: культура древнего мира, становление истории как&nbsp;науки в&nbsp;Древней Греции и&nbsp;в&nbsp;Древнем Риме, античная риторика, методика преподавания древних языков, разговорная латынь.
		</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/fedorceva.jpg">
</div>

<div class="process_description closed">
	<div class="enter_block">
		<a><div class="enter">Запись закрыта</div></a>
		<div class="process_text">Ждем вас на других кружках!
		</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">40</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">2</div><div class="bold_words">раза<br>в неделю</div><div class="light_words">по средам и&nbsp;пятницам<br>в 15:00</div></div>
	<div class="process_column"><div class="large_number">5000 &#8381;</div><div class="light_words">за 8 занятий<br>в октябре</div></div>
	</div>
</div>
</html>

/%
|контингент|1-4 класс|
|ФИО преподавателя|Федорцова Мария Юрьевна|
|id|17|
%/
<html>
<div class="course_description">
	<p>Увлекательные лекции о&nbsp;литературе, истории и&nbsp;о&nbsp;том, как изменить свой взгляд на&nbsp;мир через призму культуры.
	</p>
	<p>С&nbsp;февраля стартует второй модуль курса «Интеллектуальные и&nbsp;культурные бренды», состоящий из&nbsp;трех тематических блоков: Тексты, Институты, Эпохи. Лекции читают известные ученые, писатели, журналисты и&nbsp;деятели культуры на&nbsp;базе трех городских культурных площадок: библиотека им.&nbsp;Ф.&nbsp;М.&nbsp;Достоевского, школа «Интеллектуал», Медиалофт РАНХиГС на&nbsp;Пречистенке.</p>
	<p style="margin-bottom: 2em">Полное расписание лекций и подробная информация на <a href="http://www.lektoriy.ion.ranepa.ru/">сайте</a> проекта.
</div>

<div class="wrap_colored">
	<div class="course_description half">
		<div class="first_lesson">
			<p>Ближайшая лекция состоится 30&nbsp;марта в&nbsp;17:30.</p>
		</div>
		<p>Тема лекции: «Великие книги итальянского Возрождения. Бокаччо "Декамерон"»</p>
		<p style="margin-bottom: 2em">Раньше эту книгу родители прятали от&nbsp;детей. Когда ее впервые, чуть&nbsp;больше ста лет назад, издали в&nbsp;России, пресса удивлялась: неужели не&nbsp;нашлось ничего поважнее? А&nbsp;цензура старательно вычеркивала все морально сомнительные места. Почему «Декамерон» стал одной из&nbsp;самых главных книг в&nbsp;европейской литературе?
		</p>
	</div>
	<div class="half">
		<img class="teacher_img small_half" src="images_teachers/andreev.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Михаил Леонидович Андреев</p>
			<p>Доктор филологических наук, член-корреспондент РАН.<br>Область научных интересов — история литератур Италии, Франции, Испании, Англии, сравнительное литературоведение, историческая поэтика, теория литературы, проблемы культурологии.</a></p>
		</div>
	</div>
</div>		
	
<div class="process_description">
	<div class="enter_block">
		<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
		<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!  
		</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div></div>
	<div class="process_column"><div class="large_number">3</div><div class="bold_words">лекции</div><div class="light_words">в&nbsp;«Интеллектуале»</div></div>
	<div class="process_column"><div class="large_number">бесплатно</div><div class="light_words">для&nbsp;школьников и&nbsp;родителей</div></div>
	</div>

</div>
</html>

/%
|контингент|5-11 класс; взрослые|
|ФИО преподавателя|Андреев Михаил Леонидович|
|id|101|
|видимое в адресной строке название|lectures|
%/
<html>
<div class="course_description two_thirds">
<p>В первой половине дня дети выбирают интересные им кружки и&nbsp;студии: ставят физические эксперименты с&nbsp;помощью подручных материалов, готовят арт-проекты, учатся танцевать или&nbsp;обсуждают логические парадоксы.</p>
<p>А&nbsp;вечером школьники играют в&nbsp;футбол, проходят квесты и&nbsp;участвуют в&nbsp;командных играх.</p>
<p style="margin-bottom: 2em">В&nbsp;прошлые годы мы проводили Летнюю Школу Интенсивного Обучения&nbsp;—&nbsp;<a href="http://www.sch-int.ru/summer/">ЛШИО</a>. В&nbsp;этом году лагерь проводится для&nbsp;школьников Москвы.</p>
</div>
<div class="teacher_description third">
	<div class="small_two_thirds gekkon bordered">
		Лагерь проводят учителя и&nbsp;выпускники «Интеллектуала»
	</div>
	</div>
	<div class="img_text half"><img src="images_others/104-2.jpg">Игра в «Скульптуры» на ЛШИО-2015</div>
	<div class="img_text half"><img src="images_others/104-3.jpg">Кружок каллиграфии на ЛШИО-2015
	</div>
	
<div class="process_description">
	<div class="enter_block">
		<a href="https://docs.google.com/forms/d/12TJuuRWjn62LiD9eLTNR8HU0QfsJOxsUi7yAye0dyug/viewform?chromeless=1&edit_requested=true"><div class="enter">Записаться</div></a>
		<div class="process_text">Оставьте свою электронную почту, если&nbsp;хотите участвовать. Подробная информация появится в&nbsp;начале апреля.  
		</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">5-16</div><div class="bold_words">июня</div></div>
	<div class="process_column"><div class="bold_words" style="padding-right: .3em">с</div><div class="large_number">9</div><div class="bold_words" style="padding-right: .3em">до</div><div class="large_number">18</div><div class="light_words">каждый день</div></div>
	<div class="process_column"><div class="bold_words">цена</div><div class="light_words">уточняется</div></div>
	</div>
</div>
</html>
/%
|контингент|5-7 класс|
|ФИО преподавателя||
|id|104|
|видимое в адресной строке название| summer_camp|
%/
<html>
<div class="course_description">
	<p>Литературная интернет-викторина от&nbsp;преподавателей школы «Интеллектуал».
	</p>
	<p>Каждый вопрос этой викторины&nbsp;—&nbsp;это не&nbsp;только конкурсное задание, но&nbsp;и&nbsp;рекомендация, совет прочитать книгу, по&nbsp;которой составлен вопрос.
	</p>
	<p style="margin-bottom: 2em">Если после первой попытки выполнить задания не&nbsp;удалось, можно прочитать те книги, по&nbsp;которым составлены вопросы, и&nbsp;попробовать еще раз! Количество попыток не&nbsp;ограничено.
	</p>
</div>

<div class="wrap_colored">
	<div class="course_description">
		<div class="first_lesson">
			<p>Игра начинается 15&nbsp;марта.</p>
		</div>
		<p>Для&nbsp;участия необходимо пройти стандартную регистрацию с&nbsp;подтверждением адреса электронной почты на&nbsp;<a href="http://www.bpanov.org/moodle/course/view.php?id=5/">сайте</a> викторины.</p>
		<p>Викторина продолжается в&nbsp;течение месяца, подведение итогов&nbsp;—&nbsp;15&nbsp;апреля.</p>
		<p>Победители получат в&nbsp;подарок книги. Награждение состоится  в&nbsp;школе «Интеллектуал» в&nbsp;<a href="http://biblionight.info/">библионочь</a> 21&nbsp;апреля.</p>
		
</div>
</div>
</html>
/%
|контингент|5-7 класс|
|ФИО преподавателя||
|id|103|
|видимое в адресной строке название|literary_quiz|
%/
<html>
<div class="course_description">
	<p>Курс математики Я.&nbsp;И.&nbsp;Абрамсона для&nbsp;начальной школы подойдет сильным и&nbsp;мотивированным детям, которые хотят не&nbsp;просто научиться складывать и&nbsp;вычитать, но&nbsp;по-настоящему чувствовать математику и&nbsp;не&nbsp;бояться сложных задач.
	</p>
	<p>Уже на&nbsp;первых занятиях школьники познакомятся с&nbsp;разными системами счисления, простейшей геометрией, узнают, что&nbsp;такое аксиома, теорема и&nbsp;доказательство. Ребята не&nbsp;учат законы и&nbsp;правила, а&nbsp;сами их&nbsp;находят и&nbsp;выводят. Порядок изучения тем в&nbsp;рамках курса продиктован внутренней логикой предмета, а&nbsp;не&nbsp;историческим подходом, принятым в&nbsp;традиционном обучении. В&nbsp;результате то, что&nbsp;с&nbsp;трудом дается старшеклассникам, оказывается легким и&nbsp;доступным для&nbsp;малышей!
	</p>
	<p>Для того чтобы успешно обучаться на&nbsp;кружке, ребенок обязательно должен уметь быстро читать и&nbsp;считать хотя&nbsp;бы&nbsp;в пределах сотни.
	</p>
	<p style="margin-bottom: 2em">Подробнее о методике вы можете прочитать на сайте <a href="www.abramson.xyz ">www.abramson.xyz</a>
	</p>

	<div class="img_text half"><img src="images_others/26-2.jpg"></div>
	<div class="img_text half"><img src="images_others/26-3.jpg"></div>
</div>
<div class="wide margin-bottom">	
		<img class="teacher_img small_half" src="images_teachers/berezkina.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Светлана Геннадьевна Березкина</p>
			<p>С отличием окончила РУДН по&nbsp;специальности "Прикладная математика" (1997&nbsp;г.), педагогический факультет МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова (2015). Работает в&nbsp;школе Интеллектуал с&nbsp;2012&nbsp;г. В&nbsp;2013&nbsp;году вышла книга Я.&nbsp;И.&nbsp;Абрамсона и С.&nbsp;Г.&nbsp;Березкиной "Уроки математике в&nbsp;первом классе".<br><a href="http://sch-int.ru/s_berezkina">Подробнее</a></div>
	</div>
</div>

<div class="process_description_2">
<h2>Группы</h2>
<table class="groups">
	<tr class="group_number">
		<td><span class="num">1</span></td>
		<td><span class="num">2</span></td>
		<td><span class="num">3</span></td>
	</tr>
	<tr class="group_age">
		<td>начинающие<br>1 год обучения<br>(1–2 класс)</td>
		<td>продолжающие<br>2 год обучения<br>(2–3 класс)</td>
		<td>продолжающие<br>3 год обучения<br>(3–4 класс)</td>
	</tr>
	<tr class="group_frequency">
		<td>2 раза в неделю,<br>по&nbsp;понедельникам и&nbsp;четвергам в&nbsp;14:40 или&nbsp;15:30</td>
		<td>2 раза в неделю,<br>по&nbsp;понедельникам и&nbsp;четвергам в&nbsp;16:20</td>
		<td>2 раза в неделю,<br>по&nbsp;понедельникам и&nbsp;четвергам в&nbsp;17:15</td>
	</tr>
	<tr class="group_duration">
		<td>45 минут</td>
		<td>45 минут</td>
		<td>45 минут</td>
	</tr>
	<tr class="group_teacher">
		<td>Н. А. Шестакова</td>
		<td>С. Г. Березкина</td>
		<td>С. Г. Березкина</td>
	</tr>
	<tr class="group_price">
		<td><span class="extrabold">6000 &#8381;</span><br>за 8 занятий</td>
		<td><span class="extrabold">6000 &#8381;</span><br>за 8 занятий</td>
		<td><span class="extrabold">6000 &#8381;</span><br>за 8 занятий</td>
	</tr>
</table>
<div class="enter_block_2">
	<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter_2">Записаться</div></a>
	<div class="enter_text">Оставьте свои контакты,<br>и мы вам перезвоним!  
	</div>
</div></div>
</html>

/%
|контингент|1-4 класс|
|ФИО преподавателя|Березкина Светлана Геннадьевна|
|id|26|
|видимое в адресной строке название|Abramson_math|
%/
<html>
	<div class="course_description two_thirds">
		<p >Многие школьники думают, что математика — это сухая, абстрактная наука, не&nbsp;имеющая отношения к&nbsp;жизни, а&nbsp;математики только и&nbsp; делают, что пишут в&nbsp;тетрадках. Мы&nbsp;предлагаем математический практикум, который изменит это отношение, покажет, что в&nbsp;математике нужно выдвигать идеи, проверять их, обсуждать и&nbsp;экспериментировать!</p>
<p style="margin-bottom: 2em">Серия увлекательных мастер-классов учит самостоятельному поиску и&nbsp;развивает вкус к&nbsp;красивым задачам. Каждое занятие посвящено отдельному математическому сюжету (например, найти все развертки куба, или проверить, какие суммы на&nbsp;двух костях выпадают чаще всего): мы будем экспериментировать и&nbsp;обсуждать результаты, строить модели и&nbsp;изучать их.</p>

<div class="course_description wrap_colored" style="margin-bottom: 2em">
<div class="first_lesson"><p>Ближайшее занятие 8&nbsp;апреля в&nbsp;11:00 (4&nbsp;класс) и&nbsp;в&nbsp;12:20 (5&nbsp;и&nbsp;6&nbsp;класс)</p></div>
<p>Тема занятия: «Геометрия на клетчатой бумаге»</p>
<p style="margin-bottom: 2em">Мы научимся отражать и&nbsp;поворачивать фигуры на&nbsp;клетчатой бумаге. А&nbsp;потом придумаем несколько задач друг для&nbsp;друга. Вам понадобятся тетрадь в&nbsp;клетку, карандаши и&nbsp;ластик для&nbsp;исправления ошибок!</p>
</div>		
	</div>
	<div class="teacher_description third">
		<img class="teacher_img small_two_thirds" src="images_teachers/sgibnev.jpg">
		<div class="teacher_text small_third" style="vertical-align: bottom; padding: 0"><p class="name" style="margin: 0">Алексей Иванович Сгибнев</p></div>
		<div class="teacher_text" style="margin-top: 1em;">
		<p>Окончил физический факультет (2002&nbsp;г.), факультета педагогического образования МГУ (2003). Кандидат физико-математических наук (2005). Заведующий кафедрой математики, работает в&nbsp;школе «Интеллектуал» с&nbsp;2003&nbsp;г.<br><a href="http://sch-int.ru/a_sgibnev">Полный список заслуг и&nbsp;публикаций</a></p>
		</div>
</div>
	
	<div class="two_thirds"><img src="images_others/25-2.jpg" class="wide"></div>
	<div class="third"><img class="wide" src="images_others/25-3.jpg" style="margin-bottom: .5em"><img class="wide" src="images_others/25-4.jpg"></div>

<div class="process_description">
<div class="enter_block">
<div class="large_number">Запись</div>
<div class="bold_words">при заключении договора в&nbsp;школе</div>
</div>
<div class="process_block">
		<div class="process_column"><div class="large_number">60</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в месяц</div></div>
		<div class="process_column"><div class="large_number">1000 &#8381;</div><div class="light_words">за 1 занятие</div></div>
<div class="course_description wrap_colored" style="margin-bottom: 1em;" >
<p>Желающим принять участие в&nbsp;семинаре необходимо заключить договор и&nbsp;оплатить занятие в&nbsp;период с&nbsp;20 марта по&nbsp;8&nbsp;апреля. Зачисление в&nbsp;группу производится только при наличии договора и&nbsp;оплаты. Если у&nbsp;ребенка уже имеется договор на&nbsp;платные образовательные услуги в&nbsp;школе «Интеллектуал», к&nbsp;имеющемуся договору будет оформлено дополнительное приложение.</p>
</div>
</div></div>
</html>

/%
|контингент|4-6 класс|
|ФИО преподавателя|Сгибнев Алексей Иванович|
|id|25|
|видимое в адресной строке название|math_seminars|
%/
<html>
<div class="course_description half">
	<p>Прокариоты — бактерии и&nbsp;археи — это те организмы, которые формируют облик нашей планеты, осуществляют все возможные переходы элементов и&nbsp;используют самые неожиданные соединение для&nbsp;важных процессов (например, дыхания).
	</p>
	<p>В&nbsp;этом курсе мы рассмотрим, как&nbsp;устроено большинство прокариотических клеток. Коснемся механизмов, которые обеспечивают глобальные процессы на&nbsp;планете Земля, и&nbsp;посмотрим, кто, что и&nbsp;каким образом принимает в&nbsp;этом участие.
	</p>
	<p style="margin-bottom: 2em">Теоретические занятия подкрепляются практикумом.
	</p>
</div>

<div class="half">
<div class="img_text wide"><img src="images_others/102-3.jpg"><p>Электронная фотография <i>Caulobacter&nbsp;crescetens</i></p><p style="margin-bottom: 2em">Эта бактерия каждый раз делится асимметрично и&nbsp;демонстрирует нам четкую клеточную дифференциацию. Обычно считается, что прокариотам это не&nbsp;свойственно.</p></div>
</div>

<div class="course_description">
<div class="img_text half"><img src="images_others/102-2.jpg"><p>Пересевы <i>E.&nbsp;coli</i></p><p>Мы пересеваем клетки кишечной палочки вместе с&nbsp;вирулентным бактериофагом много поколений подряд. Обычно считается, что вирулентные фаги так себя не&nbsp;ведут.</p></div>
<div class="img_text half"><img src="images_others/102-4.jpg"><p>Электрофорез ДНК бактериофага</p><p>И&nbsp;видим, что эта ДНК не&nbsp;была разрезана ферментом-рестриктазой, хотя место посадки для&nbsp;этого фермента в&nbsp;ДНК есть. Обычно считается, что это невозможно.</p></div>
</div>

<div class="wide margin-top">
	<div class="half">
		<img class="teacher_img small_half" src="images_teachers/letarova.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Мария Анатольевна Летарова</p>
			<p>Научный сотрудник Института микробиологии им.&nbsp;С.&nbsp;Н.&nbsp;Виноградского&nbsp;РАН, лаборатории вирусов микроорганизмов.<br>Курс «Молекулярная микробиология» создан в&nbsp;2010&nbsp;году для&nbsp;школы «Интеллектуал», с&nbsp;2011&nbsp;года читается в&nbsp;МФТИ для&nbsp;студентов четвертого курса.</p>
		</div>
	</div>
	<div class="half">	
		<img class="teacher_img small_half" src="images_teachers/martyanov.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Сергей Владиславович Мартьянов</p>
			<p>Аспирант Института микробиологии им.&nbsp;С.&nbsp;Н.&nbsp;Виноградского&nbsp;РАН.</p>
		</div>
	</div>
</div>
<div class="process_description">
	<div class="enter_block">
		<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
		<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!  
		</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по&nbsp;средам в&nbsp;17:30</div></div>
	<div class="process_column"><div class="large_number">3000 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div>
	</div>
</html>

/%
|контингент|9-11 класс|
|ФИО преподавателя|Летарова Мария Анатольевна, Мартьянов Сергей Владиславович|
|id|102|
|видимое в адресной строке название|microbiology|
%/
<html>
<div class="course_description two_thirds">
	<p>Кто водится в капле воды и&nbsp;как познакомиться с&nbsp;микробом Петькой? На&nbsp;кружке школьники будут смотреть на&nbsp;живые организмы и&nbsp;их&nbsp;части под&nbsp;увеличением, изучать и&nbsp;обсуждать их&nbsp;устройство. 
	</p>
	<p style="margin-bottom: 2em">Ребята научатся делать микропрепараты и пользоваться готовыми. А&nbsp;возможно, сами придумают, как определить скорость движения инфузории, как измерить амёбу и&nbsp;посчитают, сколько существ обитает в&nbsp;капле воды.
	</p>
	<div class="img_text small_half"><img class="wide" src="images_others/48-2.jpg"></div>
	<div class="img_text small_half"><img class="wide" src="images_others/48-3.jpg"></div>
</div>
<div class="teacher_description third">
	<img class="teacher_img small_two_thirds" src="images_teachers/khrushchova.jpg">
	<div class="teacher_text small_third" style="vertical-align: bottom; padding: 0"><p class="name" style="margin: 0">Анастасия Михайловна Хрущова</p></div>
	<div class="teacher_text" style="margin-top: 1em;">
		<p>Выпускница кафедры зоологии позвоночных биологического факультета МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова&nbsp;(2001), имеет диплом Экоцентра МГУ по специальности «экология, рациональное природопользование и охрана природы»&nbsp;(2002). Кандидат биологических наук (специальность «зоология»). Работает в школе «Интеллектуал» с 2004&nbsp;г.<br><a href="http://sch-int.ru/s_hrushova">Подробнее</a></p>
	</div>
</div>

<div class="process_description">
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по четвергам в&nbsp;16:00</div></div>
	<div class="process_column"><div class="large_number">2500 &#8381;</div><div class="light_words">за 4 занятия</div></div>
</div>
</div>

</html>
/%
|контингент|3-8 класс|
|ФИО преподавателя|Хрущова Анастасия Михайловна|
|id|48|
|видимое в адресной строке название|microscopy|
%/
<html>
<div class="course_description two_thirds">
	<p>Кружок по&nbsp;естествознанию для&nbsp;самых маленьких.</p>
	<p>Приглашаем вас в&nbsp;увлекательное путешествие по&nbsp;миру природных явлений и&nbsp;привычных вещей. Всё, что вы&nbsp;хотели узнать о&nbsp;химии на&nbsp;кухне, но&nbsp;боялись попробовать! Растворим нерастворимое, смешаем несочетаемое и&nbsp;на&nbsp;простых примерах поймем, как протекают базовые химические реакции. Узнаем, что такое атом и&nbsp;планета, как прорастают семена и&nbsp;зачем им для этого свет.</p>
	<p>На&nbsp;кружке ребята будут сами ставить эксперименты и&nbsp;много работать самостоятельно. Занятия направлены на&nbsp;формирование знаний на&nbsp;основе собственного опыта, работе в&nbsp;группах и&nbsp;развитию коммуникативных навыков.
	</p>
	<img src="images_others/6-3.jpg" class="small_half">
	<img src="images_others/6-2.jpg" class="small_half">
</div>
<div class="teacher_description third">
	<img class="teacher_img small_two_thirds" src="images_teachers/bakumova.jpg">
	<div class="teacher_text small_third" style="vertical-align: bottom; padding: 0"><p class="name" style="margin: 0">Анна Денисовна Бакумова</p></div>
	<div class="teacher_text" style="margin-top: 1em;">
		<p>Выпускница школы Интеллектуал (2013&nbsp;г.), училась на биохимическом отделении, участвовала в&nbsp;биопрактиках и&nbsp;летних школах. В&nbsp;течение нескольких лет посещала кружок натуралистов при&nbsp;кафедре зоологии и&nbsp;экологии МПГУ. Студентка психологического факультета МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова, кафедры нейропсихологии. Продолжает интересоваться полевой биологией, принимает участие в&nbsp;проведении кружков юннатов, преподает в&nbsp;детских летних лагерях.</p>
		<p>Научные интересы: мозговая организация речи и&nbsp;других когнитивных функций.</p>
	</div>
</div>


	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">40</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words"> 
		<p>по&nbsp;вторникам в&nbsp;17:10 или&nbsp;по&nbsp;субботам в&nbsp;12:00</p> 
	</div></div>
	<div class="process_column"><div class="large_number">2500 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div>
</div>
</html>

/%
|контингент|дошкольники|
|ФИО преподавателя|Бакумова Анна Денисовна|
|id|6|
|видимое в адресной строке название|world_around_us|
%/
<html>
<div class="course_description half">
		<p>Курс для тех, кто изучает испанский или&nbsp;интересуется культурой и&nbsp;историей испаноязычного мира. Также курс будет полезен школьникам, планирующим поступать в&nbsp;университеты Испании на&nbsp;специальности гуманитарного профиля, так&nbsp;как им предстоит сдавать экзамен по&nbsp;истории и&nbsp;литературе.
		</p>
		<p style="margin-bottom: 2em">Занятия позволяют расширить кругозор, повысить эрудицию и&nbsp;развить практические навыки анализа художественного текста. На&nbsp;кружке мы будем читать отрывки из&nbsp;классической испанской литературы, смотреть видео и&nbsp;обсуждать специфику культурных и&nbsp;исторических процессов. Активные дискуссии на&nbsp;испанском языке способствуют закреплению лингвистических навыков, полученных на&nbsp;уроках испанского языка. В&nbsp;конце занятий школьники по&nbsp;желанию могут выполнить проект по&nbsp;одному из&nbsp;аспектов курса.</p>
	</div>
	
<div class="half">
		<div class="teacher_text small_half"><p class="name bordered">Жанна Михайловна Иванова де Мендоса</p>
			<p>Окончила МГУ&nbsp;им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова, лингвист, специалист по межкультурной коммуникации, переводчик с&nbsp;английского и&nbsp;испанского языков. Преподаватель испанского языка, стаж работы&nbsp;— 9 лет.
			<br><a href="http://sch-int.ru/s_ivanova-de-mendosa">Подробнее</a>
			</p>
		</div>
		<img class="teacher_img small_half" src="images_teachers/ivanova.jpg">	
	</div>	

	<div class="process_description closed">
	
		<div class="enter_block">
			<a><div class="enter">Запись закрыта</div></a>
			<div class="process_text">Ждем вас в январе!
			</div>
		</div><div class="process_block">
		<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div></div>
		<div class="process_column"><div class="bold_words">цена</div><div class="light_words">уточняется</div></div>
	</div></div>
</html>

/%
|контингент|8-11 класс; взрослые|
|ФИО преподавателя|Иванова де Мендоса Жанна Михайловна|
|id|67|
%/
<html>
<div class="course_description half">
	<p>Большая часть информации, которую мы изучаем в&nbsp;школе, предстает перед&nbsp;нами в&nbsp;виде текстов: книг, фактов биографии и&nbsp;параграфов учебника. Даты, химические формулы, списки, таблицы&nbsp;—&nbsp;как все это прочитать и&nbsp;запомнить? 
</p>
<p style="margin-bottom: 2em">На&nbsp;цикле семинаров мы познакомимся с&nbsp;основными приемами мнемотехники, научимся основам скорочтения и&nbsp;самое главное&nbsp;—&nbsp;потренируемся с&nbsp;этим работать, чтобы домашнее задание больше не&nbsp;пугало, а&nbsp;знания оставались надолго.
	</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Анна Николаевна Черножукова</p>
		<p>Окончила факультет культурологии Государственного Академического Университета Гуманитарных Наук (2010&nbsp;г.). Руководитель и&nbsp;инструктор программ детского развивающего отдыха и&nbsp;туризма. В&nbsp;2015&nbsp;г. прошла обучение по&nbsp;программе «Преподаватель мнемотехники и&nbsp;скорочтения». С&nbsp;сентября 2016&nbsp;г. классный руководитель 5-го класса в&nbsp;школе «Интеллектуал».
		</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/chernozhukova.jpg">	
</div>
<div class="course_description wrap_colored" style="margin-bottom: 2em">
<div class="first_lesson"><p>Ближайшее занятие 5&nbsp;февраля с&nbsp;11:00 до&nbsp;15:00.</p></div>
<p>Тема занятия: «Запоминаем слова»</p>
<p>Для&nbsp;того, чтобы научиться быстро запоминать большие тексты, мы начнем с&nbsp;наименьшей единицы&nbsp;—&nbsp;с&nbsp;запоминания слов. Познакомимся с&nbsp;принципами мнемотехники, проверим свою память и&nbsp;освоим методы «Цепочки» и&nbsp;«Крючка». </p>
<p style="margin-bottom: 2em">С&nbsp;собой на занятие нужно взять альбом, цветные карандаши или&nbsp;фломастеры.</p>
</div>		
	</div>

<div class="process_description">
<div class="enter_block">
<div class="large_number">Запись</div>
<div class="bold_words">при заключении договора в&nbsp;школе</div>
</div>
<div class="process_block">
		<div class="process_column"><div class="large_number">4</div><div class="bold_words">часа</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в месяц</div></div>
		<div class="process_column"><div class="large_number">2000 &#8381;</div><div class="light_words">за 1 занятие</div></div>
</html>
/%
|контингент|6-7 класс|
|ФИО преподавателя|Черножукова Анна Николаевна|
|id|99|
%/
<html>
<div class="course_description wide">
	<p>Авторский курс для&nbsp;учеников 2–4&nbsp;классов, призванный систематизировать школьные знания, научить учиться и&nbsp;расширить кругозор в&nbsp;обстановке взаимного доверия и&nbsp;уважения.</p>
	<p>На&nbsp;занятиях мы:
		<ul>
			<li>изучаем мир не&nbsp;по&nbsp;учебнику, а&nbsp;через наблюдение и&nbsp;опыт;</li>
			<li>учимся добывать информацию из&nbsp;разных источников, проверять её, структурировать и&nbsp;передавать дальше;</li>
			<li>развиваем мышление и&nbsp;речь на&nbsp;авторских курсах по&nbsp;математике и&nbsp;языкам;</li>
			<li>виртуально путешествуем по&nbsp;городам и&nbsp;музеям.</li>
		</ul>
		</p>
	<p>Весенний семестр разбит на&nbsp;2 тематических модуля по 4 недели: естественнонаучный и&nbsp;гуманитарный.  В&nbsp;мае планируется поездка во&nbsp;Владимир и&nbsp;Суздаль, после&nbsp;которой следует блок обобщения и&nbsp;“сшивки” знаний, где ребята смогут попробовать свои силы в&nbsp;преподавании. 
	</p>
<div class="first_lesson"><p>Программу первого модуля можно скачать <a href="MATEMARIS_program_march.pdf" download>здесь</a>.</p></div>
</div>

	<div class="img_text half"><img src="images_others/100-2.jpg">Составляем карту наших знаний и&nbsp;грядущих открытий.</div>
	<div class="img_text half"><img src="images_others/100-3.jpg">Узнаем новое о человеке и мире вокруг.</div>

<div class="wide margin-top">
	<div class="half">
		<img class="teacher_img small_half" src="images_teachers/segineva.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Марис Сегинёва</p>
			<p>Автор курсов «Многоклеточная математика» и&nbsp;«Развитие познавательных способностей», организатор МультиМатических и&nbsp;Пуанкаре-школ.<br>
Училась в&nbsp;НИУ&nbsp;ВШЭ. Преподаёт в&nbsp;школе с&nbsp;2007&nbsp;г., участвует в&nbsp;образовательных мероприятиях для&nbsp;детей разного возраста (КЛШ, ЗПШ, ЛШИО на&nbsp;базе школы «Интеллектуал» и&nbsp;т.д.). С&nbsp;весны 2014&nbsp;года разрабатывает проект двухступенчатой начальной школы, апробируя идеи на&nbsp;нескольких площадках.
			</p>
		</div>
	</div>
	<div class="half">	
		<img class="teacher_img small_half" src="images_teachers/dmitriev.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Руслан Дмитриев</p>
			<p>Окончил химический факультет Казанского государственного университета (1991&nbsp;г.), несколько курсов повышения квалификации по&nbsp;практической психологии в&nbsp;Международной академии информатизации. Организатор МультиМатических Школ в&nbsp;содружестве с&nbsp;КЛШ, соавтор проекта «Астрана» для&nbsp;2–4 классов, преподаватель и&nbsp;вожатый в&nbsp;зимних выездных школах (ЗПШ, зимняя Пуанкаре-школа). Двукратный чемпион России по&nbsp;игре Го (в&nbsp;1994 и&nbsp;2001&nbsp;гг.).
			</p>
		</div>
	</div>
</div>

<div class="process_description">
	<div class="enter_block">
		<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
		<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!  
		</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">4</div><div class="bold_words">часа</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">2</div><div class="bold_words">раза<br>в неделю</div><div class="light_words">по&nbsp;понедельникам и&nbsp;четвергам <br>с&nbsp;9:00 или&nbsp;с&nbsp;15:00</div></div>
	<div class="process_column"><div class="large_number">14000 &#8381;</div><div class="light_words">за 8 занятий</div></div>
	</div>

	</div>
</html>

/%
|контингент|1-4 класс|
|ФИО преподавателя|Сегинёва Марис, Дмитриев Руслан|
|id|100|
|видимое в адресной строке название|matemaris_school|
%/
<<tabs txtSettingsPart
	"Параметры и начало работы" "" [[CommonSettingPanelElements##Параметры]]
	"Тема, стили, интерфейс" "" [[CommonSettingPanelElements##Тема]]
	"Управление плагинами" "" [[CommonSettingPanelElements##Управление плагинами]]
	"Прочее" "" [[CommonSettingPanelElements##Прочее]]
>>
<html>
<div class="course_description half">
	<p>Мечтали ли&nbsp;вы когда-нибудь поступить в&nbsp;волшебную школу? Теперь эта возможность у&nbsp;вас есть! Ведь сказка и&nbsp;колдовство таится во&nbsp;всех предметах, которые нас окружают. В&nbsp;нашей школе вы&nbsp;прикоснетесь к&nbsp;таким волшебным наукам:
	</p>
	<ul>
		<li>Зельеварение</li>
		<li>Наука веером</li>
	</ul>
	<p style="margin-top: 1em">Этот кружок подойдет для&nbsp;самых любознательных юных волшебников, которым не&nbsp;терпится всё изучить и&nbsp;измерить. Мы&nbsp;изготовим загадочные объекты под&nbsp;названием «приборы», от&nbsp;каждого из&nbsp;которых раскинется веер научных исследований. С&nbsp;одной стороны веера&nbsp;— курс «Сам&nbsp;себе кролик», на&nbsp;котором школьники поставят опыты и&nbsp;проведут самые настоящие исследования на&nbsp;себе и&nbsp;близких. С&nbsp;другой стороны веера&nbsp;— курс «Возвышенные приборы», где мы смастерим метеоприборы из&nbsp;подручных материалов.
</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Роман Борисович Соловьев</p>
		<p>Немного волшебник и&nbsp;вполне себе учитель биологии.</p>
		<p>Окончил медучилище №&nbsp;2 (фельдшер), МПГУ им.&nbsp;Ленина (учитель биологии), Институт Педагогической психологии (магистр педагогики). Преподаватель биологии в&nbsp;Центре Педагогического Мастерства в&nbsp;Москве. Создатель курсов пропедевтики естествознания для&nbsp;дошкольников и&nbsp;младших школьников. Педагогический стаж — более 20&nbsp;лет.
		</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/solovyev.jpg">
</div>

<div class="process_description closed">
	
		<div class="enter_block">
			<a href=""><div class="enter">Кружок закрыт</div></a>
			<div class="process_text">Приходите на другие кружки!
			</div>
		</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">45</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div></div>
	<div class="process_column"><div class="large_number">2500 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div>
</div>
</html>

/%
|контингент|1-4 класс|
|ФИО преподавателя|Соловьев Роман Борисович|
|id|30|
%/
<html>
<div class="course_description half">
	<p>На занятиях мы разберем устройство и&nbsp;работу мозга от&nbsp;простого к&nbsp;сложному: сначала узнаем, как&nbsp;работают отдельные нервные клетки и&nbsp;как они связаны. Потом обсудим, чем различаются отдельные части мозга и зачем они нужны. И,&nbsp;наконец,&nbsp;попробуем понять, как работает мозг в&nbsp;целом, и&nbsp;что бывает, если он работает неправильно.
	</p>
	<div class="first_lesson"><p style="margin-bottom: 2em">Занятия с февраля!</p></div>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Татьяна Сергеевна Овчинникова</p>
		<p>Студентка магистратуры биологического факультета МГУ&nbsp;им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова, кафедры высшей нервной деятельности. Преподавала на&nbsp;выездных школах, в&nbsp;летних образовательных лагерях. Область научных интересов&nbsp;— нейробиологические модели обучения, памяти и&nbsp;стресса, а&nbsp;также психофармакология и&nbsp;нейропсихология. 
</a></p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/ovchinnikova.jpg">
</div>

<div class="process_description">
	<div class="enter_block">
		<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
		<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!  
		</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по пятницам<br>в 17:30</div></div>
	<div class="process_column"><div class="large_number">4000 &#8381;</div><div class="light_words">за занятия </div></div>
	</div>
</div>
</html>

/%
|контингент|8-11 класс|
|ФИО преподавателя|Овчинникова Татьяна Сергеевна|
|id|98|
|видимое в адресной строке название|neurobiology|
%/
<html>
<div class="course_description half">
	<p>Вы когда-нибудь задумывались о&nbsp;монетах, как об&nbsp;источнике научного знания?</p>
	<p style="margin-bottom: 2em">Каждая монета может рассказать о&nbsp;стране, регионе, периоде и&nbsp;методе своего изготовления. Мы научимся определять сохранность монет, их&nbsp;подлинность, материал, номинал и&nbsp;датировку, сможем прочитать и&nbsp;расшифровать надписи, измерить физические параметры и&nbsp;проследить экономгеографический путь монеты. Курс активизирует метадисциплинарные и&nbsp;внешкольные знания, учит научному методу и&nbsp;структурированию информации. 
	</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Юрий Борисович Тихорский</p>
		<p>Окончил Московский Педагогический Университет (МОПИ&nbsp;им.&nbsp;Н.&nbsp;К.&nbsp;Крупской) специальность «география и&nbsp;экология» (2002&nbsp;г.).
		<br><a href="http://sch-int.ru/a_tihorsky">Подробнее</a>
		</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/tihorsky.jpg">
</div>

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, мы свяжемся с&nbsp;вами и&nbsp;расскажем, как присоединиться к&nbsp;занятиям.
			</div>
		</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">120</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по средам в 17:00<br>кабинет 301</div></div>
	<div class="process_column"><div class="large_number">бесплатно</div></div>
	</div>
</div>
</html>

/%
|контингент|5-11 класс|
|ФИО преподавателя|Тихорский Юрий Борисович|
|id|86|
|видимое в адресной строке название|numismatics|
%/
<html>
<div class="course_description two_thirds">
	<p>Классический кружок для тех, кто любит кисточки и&nbsp;карандаши и&nbsp;мечтает понять, чем отличается гуашь от&nbsp;акрила. На&nbsp;кружке дети узнают, почему акварель называется медовой, но&nbsp;есть ее нельзя, и&nbsp;как научиться рисовать кошку так, чтобы она не&nbsp;расстраивалась, глядя на&nbsp;свой портрет.
	</p>
	<p>Ребята попробуют работать с&nbsp;большим и&nbsp;маленьким форматом, будут писать с&nbsp;натуры и&nbsp;придумывать рисунок сами. Развитие воображения и&nbsp;мелкой моторики, много радости и&nbsp;шедевры, которые можно забрать домой — гарантированный результат наших занятий.
	</p>
<div class="first_lesson wide"><p style="margin-bottom: 2em">Занятия начинаются с 10 сентября.</p></div>
	<div class="img_text small_half"><img class="wide" src="images_others/2-2.jpg"></div>
	<div class="img_text small_half"><img class="wide" src="images_others/2-3.jpg"></div>
</div>
<div class="teacher_description third">
	<img class="teacher_img small_two_thirds" src="images_teachers/gzovskaya.jpg">
	<div class="teacher_text small_third" style="vertical-align: bottom; padding: 0"><p class="name" style="margin: 0">Ольга Львовна Гзовская</p></div>
	<div class="teacher_text" style="margin-top: 1em;">
		<p>Преподаватель изобразительного искусства, член союза художников России, член союза дизайнеров Москвы. Окончила художественно-графический факультет МПГУ. Неоднократно принимала участие в&nbsp;художественных выставках в&nbsp;России и&nbsp;за&nbsp;рубежом. Автор пяти статей о&nbsp;развитии творческих способностей на&nbsp;занятиях по&nbsp;керамике.<br><a href="http://sch-int.ru/node/131">Полный список заслуг и публикаций</a></p>
	</div>
</div>
<div class="course_description wrap_colored">
<div class="bold_words">
<p>К началу занятий необходимо купить:</p></div>
			<ul>
			<li>пастельную бумагу формата А3 («Бабочка»)</li>
			<li>бумагу для акварели формата А3 (плотность 200г/м2)</li>
			<li>цветную бумагу формата А4 (12 листов)</li>
			<li>полотенца нетканные</li>
			<li>гуашь «Гамма» 12 цветов (черная коробка)</li>
			<li>баночку белой гуаши</li>
			<li>устойчивый стакан для воды без крышки (квадратный в основании)</li>
			</ul>
<div class="bold_words">
<p style="margin-top: 1em">Положить в конверт на кнопке:</p></div>
			<ul>
			<li>карандаши Koh-i-Noor (2 карандаша HB, 1 карандаш B)</li>
			<li>ластик Koh-i-Noor (разрезать по диагонали)</li>
			<li>кисти №№ 2, 5, 10 (пони)</li>
			<li>большой клей-карандаш</li>
			<li>ножницы</li>
			</ul>
<p>Все художественные принадлежности нужно подписать (фамилию и имя ребенка), надпись заклеить скотчем и аккуратно сложить в сумку или пакет.</p>		
</div>


	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
</div>
<div class="process_block">
		<div class="process_column"><div class="large_number">45</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по&nbsp;пятницам в&nbsp;16:00<br>по субботам<br>в 14:00 или&nbsp;15:00</div></div>
		<div class="process_column"><div class="large_number">2500 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div></div>

</html>


/%
|контингент|дошкольники; 1-2 класс|
|ФИО преподавателя|Гзовская Ольга Львовна|
|id|2|
|видимое в адресной строке название|painting|
%/
<html>
<div class="course_description half">
		<p style="margin-bottom: 2em">Курс рассчитан на школьников, владеющих испанским на уровне А2 или В1 и готовых к интенсивной работе. Диплом DELE — престижный официальный сертификат международного уровня, который пригодится тем, кто задумывается о поступлении в иностранный ВУЗ или работе за рубежом.
		</p>
	</div>
	
<div class="half">
		<div class="teacher_text small_half"><p class="name bordered">Жанна Михайловна Иванова де Мендоса</p>
			<p>Окончила МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова, лингвист, специалист по&nbsp;межкультурной коммуникации, переводчик с&nbsp;английского и&nbsp;испанского языков. Преподаватель испанского языка, стаж работы&nbsp;— 9 лет.
			<br><a href="http://sch-int.ru/s_ivanova-de-mendosa">Подробнее</a>
			</p>
		</div>
		<img class="teacher_img small_half" src="images_teachers/ivanova.jpg">	
	</div>	

		<div class="process_description closed">
	
		<div class="enter_block">
			<a><div class="enter">Запись закрыта</div></a>
			<div class="process_text">Ждем вас в январе!
			</div>
		</div><div class="process_block">
		<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div></div>
		<div class="process_column"><div class="bold_words">цена</div><div class="light_words">уточняется</div></div>
	</div></div>
</html>

/%
|контингент|8-11 класс; взрослые|
|ФИО преподавателя|Иванова де Мендоса Жанна Михайловна|
|id|66|
%/
<html>
<div class="course_description half">
		<p style="margin-bottom: 2em">Для успешной сдачи экзамена школьник должен быть способен принять участие в&nbsp;небольшом диалоге на&nbsp;различные бытовые темы, ориентироваться в&nbsp;городе, запросить информацию или&nbsp;услугу, а&nbsp;также понимать тексты с&nbsp;небольшим количеством незнакомой лексики и&nbsp;составлять личные письма/записки/поздравительные открытки. Курс рассчитан на&nbsp;учащихся, уже&nbsp;имеющих уверенный уровень французского языка выше начального и&nbsp;готовых интенсивно заниматься в&nbsp;течение всего года.
		</p>
	</div>
	
<div class="half">
		<div class="teacher_text small_half"><p class="name bordered">Дарья Владимировна Архипова</p>
			<p>Окончила МГПУ, кафедру романо-германской филологии (2013&nbsp;г.) Педагогический стаж&nbsp;— 3&nbsp;года.
			</p>
		</div>
		<img class="teacher_img small_half" src="images_teachers/arkhipova.jpg">	
	</div>	

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и мы вам перезвоним!
			</div>
		</div><div class="process_block">
		<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">2</div><div class="bold_words">раза<br>в неделю</div><div class="light_words">по&nbsp;понедельникам<br>и&nbsp;средам в&nbsp;16:00</div></div>
		<div class="process_column"><div class="large_number">5000 &#8381;</div><div class="light_words">за 8 занятий</div></div>
	</div></div>
</html>

/%
|контингент|6-8 класс|
|ФИО преподавателя|Архипова Дарья Владимировна |
|id|64|
|видимое в адресной строке название|DELF|
%/
<html>
<div class="course_description half">
		<p>Кружок для&nbsp;юных географов, которые хотят углубить свои знания и&nbsp;успешно выступать на&nbsp;олимпиадах разного уровня. В&nbsp;течение курса школьники по&nbsp;индивидуальному плану будут работать с&nbsp;литературой, а&nbsp;на&nbsp;семинарских занятиях разбирать основные типы олимпиадных вопросов. Мы&nbsp;обсудим сложные или&nbsp;непонятные моменты, отработаем письменные задания, а&nbsp;еще&nbsp;поиграем и&nbsp;проведем интересные викторины, чтобы подготовка была в&nbsp;радость. А&nbsp;еще здесь вы&nbsp;сможете найти команду для&nbsp;совместного участия в&nbsp;интересных конкурсах и&nbsp;олимпиадах!
		</p>
		<p style="margin-bottom: 2em">На&nbsp;протяжении курса осуществляется поддержка школьников при&nbsp;регистрации и&nbsp;по&nbsp;вопросам участия в&nbsp;олимпиадах.
		</p>
</div>
	
<div class="half">
		<div class="teacher_text small_half"><p class="name bordered">Полина Алексеевна Хамитова</p>
			<p>Окончила географический и&nbsp;педагогический факультеты МГУ&nbsp;им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова (2011&nbsp;г.). В&nbsp;2014&nbsp;г. окончила магистратуру МГППУ по&nbsp;программе «Психология и&nbsp;педагогика образования одаренных детей». Преподаёт географию в&nbsp;5–9&nbsp;классах, ведёт кружок «Подготовка к&nbsp;олимпиадам по&nbsp;географии», помогает в&nbsp;организации проектно-исследовательской деятельности школы, руководит проектными работами школьников.<br><a href="http://www.sch-int.ru/s_bykova">Подробнее</a>
			</p>
		</div>
		<img class="teacher_img small_half" src="images_teachers/khamitova.jpg">	
	</div>	

	<div class="process_description closed">
	
		<div class="enter_block">
			<a><div class="enter">Запись закрыта</div></a>
			<div class="process_text">Ждем вас в январе!
			</div>
		</div><div class="process_block">
		<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по средам или пятницам</div></div>
		<div class="process_column"><div class="large_number">5000 &#8381;</div><div class="light_words">за 8 занятий<br>в октябре и ноябре</div></div>
	</div></div>
</html>

/%
|контингент|7-11 класс|
|ФИО преподавателя|Хамитова Полина Алексеевна|
|id|81|
%/
/%
|контингент||
|ФИО преподавателя||
|id||
%/
<html>
<div class="course_description half">
		<p>Что общего у&nbsp;Станислава Лема, Марии Складовской, Николая Коперника и&nbsp;Анны Герман? Все они родом из&nbsp;Польши! Если&nbsp;вы хотите поближе познакомится с&nbsp;культурой Польши и&nbsp;овладеть основами польского&nbsp;– эти занятия для вас.
		</p>
		<p>Мы обсудим основные моменты исторического прошлого Польши, познакомимся с&nbsp;ее литературой, культурой и&nbsp;представителями науки. Разберемся, где&nbsp;же находится резиденция магистров Тевтонского ордена&nbsp;— замок Мальборк, какую роль в&nbsp;истории Польши сыграли русалка, дракон и&nbsp;татарская стрела, и&nbsp;какие тайны скрывает 700-летняя соляная шахта «Величка».
		</p>
		<p style="margin-bottom: 2em">К&nbsp;концу курса школьники смогут свободно читать на&nbsp;польском языке и&nbsp;будут в&nbsp;состоянии воспроизвести минимальный набор фраз, позволяющих выжить в&nbsp;чужой стране.
		</p>
	</div>
	
<div class="half">
		<div class="teacher_text small_half"><p class="name bordered">Алина Айжарыковна Уразбекова</p>
			<p>Окончила МПГУ, факультет славянской и&nbsp;западноевропейской филологии, факультет иностранных языков. Магистр лингвистики. Окончила Педагогический университет им.&nbsp;Комиссии народного образования в&nbsp;Кракове по&nbsp;специальности «филология, лингвистика». Заместитель проректора по&nbsp;стратегическому развитию и&nbsp;международному сотрудничеству МПГУ.
			</p>
		</div>
		<img class="teacher_img small_half" src="images_teachers/urazbekova.jpg">	
	</div>	

	<div class="process_description closed">
	
		<div class="enter_block">
			<a><div class="enter">Запись закрыта</div></a>
			<div class="process_text">Ждем вас в январе!
			</div>
		</div><div class="process_block">
		<div class="process_column"><div class="large_number">180</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в 2 недели</div></div>
		<div class="process_column"><div class="bold_words">цена</div><div class="light_words">уточняется</div></div>
	</div></div>
</html>

/%
|контингент|8-11 класс; взрослые|
|ФИО преподавателя|Уразбекова Алина Айжарыковна |
|id|69|
%/
<html>
<div class="course_description half">
		<p style="margin-bottom: 2em">Вы овладеете основами португальского языка на&nbsp;уровне А2&nbsp;—&nbsp;В1: грамматикой, фонетикой, разговорной речью, основами речевого этикета и&nbsp;деловой переписки. На&nbsp;занятиях планируется введение в&nbsp;культурно-историческую панораму стран португальского языка, распространившегося на&nbsp;четырех континентах (Португалия в&nbsp;Европе, Бразилия в&nbsp;Южной Америке, Восточный Тимор в&nbsp;Азии, Ангола и&nbsp;Мозамбик в&nbsp;Африке).
		</p>
<div class="img_text wide"><div class="videoWrapper">
    <iframe src="https://www.youtube.com/embed/E1tOV7y94DY" frameborder="0" allowfullscreen></iframe>
</div>
Если вы не уверены, что знаете, как звучит португальский, послушайте: Элис Режина и&nbsp;Антониу Жобин поют о&nbsp;самом дождливом месяце в&nbsp;Рио-де-Жанейро.
</div>
	</div>
	
<div class="half">
		<div class="teacher_text small_half"><p class="name bordered">Антон Владимирович Чернов</p>
			<p>Окончил Институт истории культур, специальность&nbsp;— культурология&nbsp;(2009&nbsp;г.), Православный Свято-Тихоновский Гуманитарный Университет, специальность&nbsp;— искусства&nbsp;(2011&nbsp;г.), филологический факультет МГУ&nbsp;им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова, специальность&nbsp;— португальский язык&nbsp;(2013&nbsp;г.). Аспирант филологического факультета МГУ.
			</p>
		</div>
		<img class="teacher_img small_half" src="images_teachers/chernov.jpg">	
	</div>	

		<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div><div class="process_block">
		<div class="process_column"><div class="large_number">40</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">2</div><div class="bold_words">раза<br>в неделю</div></div>
		<div class="process_column"><div class="large_number">2500 &#8381;</div><div class="light_words">за 8 занятий</div></div>
	</div></div>
</html>

/%
|контингент|5-11 класс|
|ФИО преподавателя|Чернов Антон Владимирович|
|id|70|
|видимое в адресной строке название|portuguese|
%/
<html>
<div class="course_description half">
	<p>Разобраться во&nbsp;внешнем и&nbsp;внутреннем строении животных и&nbsp;представить, как на &nbsp;самом деле выглядит то, что нарисовано на&nbsp;схеме или&nbsp;описано словами в&nbsp;тексте учебника, довольно сложно.</p>
	<p>На&nbsp;нашем практикуме мы&nbsp;будем изучать строение разных позвоночных и&nbsp;беспозвоночных непосредственно на&nbsp;самих животных. Вас ждут черепа, скелеты, тушки, влажные препараты, окаменелости и&nbsp;многое другое. Попробуем сделать разные препараты самостоятельно. Посмотрим, как может выглядеть одна и&nbsp;та&nbsp;же кость у&nbsp;рыбы, лягушки, птицы и человека. Поговорим о&nbsp;разнообразии, поработаем с&nbsp;определителями.
	</p>
	<p style="margin-bottom: 2em">Курс рассчитан на&nbsp;тех, кто уже изучал школьную зоологию, а&nbsp;также на&nbsp;тех, кто интересуется анатомией.
</p>
</div>
<div class="half">
<div class="img_text wide"><img src="images_others/34-3.jpg"></div>
	<p class="bordered" style="margin-bottom: 2em">Если увидеть все собственными глазами, запоминается гораздо лучше!</p>
</div>
<div class="wide">
	<div class="img_text third"><img class="wide" src="images_others/34-4.jpg"></div>
	<div class="img_text third"><img class="wide" src="images_others/34-2.jpg"></div>
	<div class="img_text third"><img class="wide" src="images_others/34-6.jpg"></div>
</div>

<div class="wide margin-top">
	<div class="half">
		<img class="teacher_img small_half" src="images_teachers/khrushchova.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Хрущова Анастасия Михайловна</p>
			<p>Выпускница кафедры зоологии позвоночных биологического факультета МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова (2001), имеет диплом Экоцентра МГУ по&nbsp;специальности «экология, рациональное природопользование и&nbsp;охрана природы» (2002). Кандидат биологических наук (специальность «зоология»).<br><a href="http://sch-int.ru/s_hrushova">Работает в&nbsp;школе «Интеллектуал» с&nbsp;2004&nbsp;г.</a></p>
		</div>
	</div>
	<div class="half">	
		<div class="teacher_text small_half"><p class="name bordered">Надежда Владимировна Чистякова</p>
			<p>Выпускница кафедры зоологии позвоночных биологического факультета МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова. Разрабатывает биологический практикум для школы «Интеллектуал» и СП «Гимназия».</p>
		</div>
	</div>
</div>

	<div class="process_description closed">
	
		<div class="enter_block">
			<a href=""><div class="enter">Запись закрыта</div></a>
			<div class="process_text">Приходите на другие кружки!
			</div>
		</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по четвергам в&nbsp;17:30</div></div>
	<div class="process_column"><div class="large_number">бесплатно</div></div>
	</div>
</div>

</html>

/%
|контингент|4-10 класс|
|ФИО преподавателя|Хрущова Анастасия Михайловна|
|id|34|
|видимое в адресной строке название|zoology|
%/
<html>
<div class="course_description two_thirds">
	<p style="margin-bottom: 2em">Мы вместе узнаем, как осчастливить фикус и вырастить гиацинты к Новому году. Как заставить лимон плодоносить в комнате? Получится ли по-настоящему провести опыты, о которых пишут в учебнике ботаники? Научимся делать прививки и пересаживать даже самые колючие кактусы.</p>
</div>
<div class="teacher_description third">
	<img class="teacher_img small_two_thirds" src="images_teachers/egorova.jpg">
	<div class="teacher_text small_third" style="vertical-align: bottom; padding: 0"><p class="name" style="margin: 0">Анна Кирилловна Егорова</p></div>
</div>

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по средам в&nbsp;16:30</div></div>
	<div class="process_column"><div class="large_number">бесплатно</div></div>
</div>
</div>
</div>
</html>

/%
|контингент|1-11 класс; взрослые|
|ФИО преподавателя|Егорова Анна Кирилловна|
|id|35|
|видимое в адресной строке название|botany|
%/
theme is switched by ctrl+shift+' | enable single page mode: <<option chkSinglePageMode>>

{{DDn{''актуализировать нужные доработки (см. оффлайн заметки)''}}}

* [[ещё блок со ссылками]]
4. дорабатываем [[footer|SiteFooter]] (картинка -- на всю высоту, без лишнего padding снизу! ; при ~любом размере шрифта/экрана (адаптивность); *шрифт)
* спросить у Полины: такие подписи SiteTitle и SiteSubtitle -- норм.?
* components: TopLineMenuPlugin + see MainMenu
* ~мусор: SideBarOptions, SideBarTabs, CommonSettingPanelElements, CommonControlElements, CommonAggregationTools, ToolbarCommands, [[настройки|Настройки]] со стандартной [[начинкой|CommonSettingPanelElements]]
** [[от создания web-шаблона|Создание шаблона]]
+++[Идеалистическое]
* {{PoG{см. html5 и как стоит оформить WebPageTemplate}}}
* разобраться, почему whitespace в имени slice в theme приводит к тому, что стили не применяются
===
<html>
<div class="course_description half">
	<p>Чтобы в&nbsp;первом классе уверенно держать ручку и&nbsp;начать писать с&nbsp;удовольствием, приглашаем вас на&nbsp;кружок «Развитие мелкой моторики»!</p>
	<p> На&nbsp;занятиях ребята будут тренироваться прописывать и&nbsp;прорисовывать основные виды линий, необходимые для&nbsp;уверенного письма в&nbsp;будущем, и&nbsp;развивать зрительно-моторную координацию, чтобы глаз с&nbsp;рукой жили и&nbsp;работали в&nbsp;содружестве. Пальчиковая гимнастика и&nbsp;упражнения для&nbsp;крупной моторики помогут укрепить межполушарные связи, а&nbsp;регулярные занятия учат внимательности и&nbsp;усидчивости, которые пригодятся в&nbsp;школе.
	</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Толстых Инга Энриковна</p>
		<p>Окончила МГППУ, факультет «Психология образования», кафедра «Возрастная психология». Руководитель психологической службы школы «Интеллектуал». Линейный психолог 4, 8, 11&nbsp;классов.<br><a href="http://sch-int.ru/s_tolstyh">Полный список заслуг и&nbsp;публикаций</a></p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/tolstykh.jpg">
</div>

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">30</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по&nbsp;средам в&nbsp;15:00</div></div>
	<div class="process_column"><div class="large_number">2500 &#8381;</div><div class="light_words">за 4&nbsp;занятия</div></div>
	</div>
</div>
</html>

/%
|контингент|
|ФИО преподавателя|Толстых Инга Энриковна|
|id|5|
|контингент|дошкольники|
|видимое в адресной строке название|fine_motor_skills|
%/
<html>
<div class="course_description half">
	<p>Что такое память? Как она устроена, и&nbsp;как ее эффективно использовать? Почему какие-то знания теряются, а&nbsp;какие-то остаются в&nbsp;ней навсегда?
	</p>
	<p style="margin-bottom: 2em">Занятия построены от&nbsp;теории к&nbsp;практике: разберемся в&nbsp;работе головного мозга и&nbsp;свойствах памяти, а&nbsp;затем научимся с&nbsp;ней работать. Познакомимся с&nbsp;основами мнемотехники и&nbsp;попробуем несколько методик для&nbsp;запоминания разных видов информации, научимся работать с&nbsp;текстом, делать правильные конспекты и&nbsp;запоминать их. Старшая группа также освоит приемы скорочтения.
	</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Анна Николаевна Черножукова</p>
		<p>Окончила факультет культурологии Государственного Академического Университета Гуманитарных Наук (2010&nbsp;г.). Руководитель и&nbsp;инструктор программ детского развивающего отдыха и&nbsp;туризма. В&nbsp;2015&nbsp;г. прошла обучение по&nbsp;программе «Преподаватель мнемотехники и&nbsp;скорочтения». С&nbsp;сентября 2016&nbsp;г. классный руководитель 5-го класса в&nbsp;школе «Интеллектуал».
		</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/chernozhukova.jpg">	
</div>

<div class="process_description_2">
<h2>Группы</h2>
<table class="groups">
	<tr class="group_number">
		<td><span class="num">1</span></td>
		<td><span class="num">2</span></td>
	</tr>
	<tr class="group_age">
		<td>5–7 класс</td>
		<td>8–10 класс</td>
	</tr>
	<tr class="group_frequency">
		<td>1 раз в неделю,<br>по средам в 15:00</td>
		<td>1 раз в неделю,<br>по четвергам в 16:00</td>
	</tr>
	<tr class="group_duration">
		<td>90 минут</td>
		<td>90 минут</td>
	</tr>
	<tr class="group_price">
		<td><span class="extrabold">2500 &#8381;</span><br>за 4 занятия</td>
		<td><span class="extrabold">2500 &#8381;</span><br>за 4 занятия</td>
	</tr>
</table>
<div class="enter_block_2">
	<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter_2">Записаться</div></a>
	<div class="enter_text">Оставьте свои контакты,<br>и мы вам перезвоним!  
	</div>
</html>


/%
|контингент|5-10 класс|
|ФИО преподавателя|Черножукова Анна Николаевна |
|id|87|
%/
<html>
<div class="course_description half">
	<p>В рамках данного курса мы будем решать задачи по генетике, встречающиеся в различных олимпиадах прошлых лет. Будет рассмотрен общий принцип решения, основные подводные камни и особенности таких задач. Также мы обсудим генетику прокариот и вирусов.
	</p>
	<p style="margin-bottom: 2em">Для зачисления на курс необходимо хорошо написать входное тестирование.</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Екатерина Романовна Черткова</p>
		<p>Окончила кафедру генетики биологического факультета МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова&nbsp;(2014&nbsp;г.). Преподаватель кафедры молекулярной и&nbsp;клеточной генетики РНИМУ им.&nbsp;Н.&nbsp;И.&nbsp;Пирогова, преподаватель школы «Интеллектуал», член оргкомитета и&nbsp;жюри Школьной Биологической Олимпиады МГУ.
		</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/chertkova.jpg">
</div>

		<div class="process_description closed">
	
		<div class="enter_block">
			<a><div class="enter">Запись закрыта</div></a>
			<div class="process_text">Ждем вас в январе!
			</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div></div>
	<div class="process_column"><div class="bold_words">цена</div><div class="light_words">уточняется</div></div>
	</div>
</div>
</html>

/%
|контингент|9-11 класс|
|ФИО преподавателя|Черткова Екатерина Романовна|
|id|82|
%/
<html>
<div class="course_description">
	<p>Курс рассчитан на&nbsp;школьников, интересующихся юриспруденцией и&nbsp;правом. На&nbsp;занятиях будут рассмотрены основные вопросы и&nbsp;задачи, встречающиеся в&nbsp;разнообразных олимпиадах, а&nbsp;также методы их&nbsp;решения. Кружок подойдет и&nbsp;тем, кто хочет больше узнать о&nbsp;правовой норме в&nbsp;России, получить прекрасную зарядку для&nbsp;ума и&nbsp;не&nbsp;робеть при&nbsp;возникновении сложных правовых ситуаций.
	</p>
	<p style="margin-bottom: 2em">При&nbsp;разработке курса использован опыт кафедры по&nbsp;подготовке школьников к&nbsp;успешной сдаче экзаменов и&nbsp;победе на&nbsp;Всероссийских и&nbsp;международных олимпиадах.
	</p>
</div>
<div class="wide margin-top">
	<div class="half">
		<img class="teacher_img small_half" src="images_teachers/pogonina.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Ольга Геннадиевна Погонина</p>
			<p>Окончила исторический факультет Пермского государственного университета. Заведующая кафедрой социально-экономических дисциплин в&nbsp;школе Интеллектуал. MA&nbsp;in&nbsp;Political Science&nbsp;(University of Manchester). Педагогический стаж&nbsp;—&nbsp;более 10&nbsp;лет.<br><a href="http://sch-int.ru/node/744">Подробнее</a>
		</p>
		</div>
	</div>
	<div class="half">	
		<img class="teacher_img small_half" src="images_teachers/varlamov.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Юрий Евгеньевич Варламов</p>
			<p>Бакалавр юридических наук (факультет права НИУ&nbsp;ВШЭ,&nbsp;2016&nbsp;г., диплом с&nbsp;отличием), выпускник школы Интеллектуал&nbsp;(2012&nbsp;г.). Является автором спецкурса «Римское право», участвует в&nbsp;преподавании кружка «История судопроизводства».</p>
		</div>
	</div>
</div>

<div class="process_description closed">
	<div class="enter_block">
		<a><div class="enter">Запись закрыта</div></a>
		<div class="process_text">Ждем вас в январе!
		</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div></div>
	<div class="process_column"><div class="bold_words">цена</div><div class="light_words">уточняется</div></div>
	</div>
</div>
</html>

/%
|контингент|8-11 класс|
|ФИО преподавателя|Погонина Ольга Геннадиевна, Варламов Юрий Евгеньевич|
|id|56|
%/
<html>
	<div style="margin-bottom: -25em;">
	<div class="course_description two_thirds" >
	Набросок — универсальная техника, позволяющая научиться чувствовать композицию, видеть детали и&nbsp;схватывать настроение любого момента. В&nbsp;скетчинге нет жестких правил, он&nbsp;позволяет объединить в&nbsp;одном рисунке больший диапазон фактур, штрихов и конструкций. Пространство для эксперимента и&nbsp;постоянная практика позволит вам не&nbsp;бояться больше пустого листа и&nbsp;в&nbsp;итоге выработать свой индивидуальный стиль.
	</div>
		<div class="course_description margin-top" style="width: 40%;">
	<p style="font-weight: 800">Кому подойдет этот курс?</p><ul>
<li>новичкам, которые уже давно собираются научиться рисовать;</li>
<li>тем, кто имеет за&nbsp;плечами академическое художественное образование, но&nbsp;хотел бы позволить себе более раскованное, не&nbsp;стиснутое правилами творчество;</li>
<li>тем, кто время от&nbsp;времени занимается рисованием и&nbsp;хотел бы вывести свое творчество на&nbsp;качественно иной уровень;</li>
<li>опытным скетчерам, которые немного заскучали и&nbsp;желают возобновить свое творчество с&nbsp;былым энтузиазмом.</li></ul>
		</div>
	</div>

	<div style="text-align: right">
	<img style="max-width: 80%; margin-right: 0;" src="images_others/9-5.png">
	</div>	
	
	<div class="two_thirds margin-top">
			<img class="wide" src="images_others/9-3.jpg" style="margin-bottom: .5em">
	</div>
	<div class="teacher_description third margin-top">
	
		<img class="wide" src="images_teachers/kato.jpg">
		<div class="teacher_text"><p class="name" style="margin: 0">Екатерина Иванникова (Като)</p>
		<p>Свободный художник и педагог-гуманитарий.
Закончила МПГУ и&nbsp;аспирантуру Академии наук, много лет посвятила изучению истории Востока и&nbsp;изучению языков. Рисовала с&nbsp;детства, как это делают многие, однако второй профессией это стало на&nbsp;фоне научных исследований. Около трети года проводит в&nbsp;путешествиях, поэтому с&nbsp;радостью поделится секретами путевых зарисовок и&nbsp;нюансами выбора материалов. </p></div>
		</div>

<div class="process_description_2 closed">
<h2>Группы</h2>
<table class="groups">
	<tr class="group_number">
		<td><span class="num">1</span></td>
		<td><span class="num">2</span></td>
		<td><span class="num">2</span></td>
	</tr>
	<tr class="group_age">
		<td>4–7 класс</td>
		<td>8–11 класс</td>
		<td>взрослые</td>
	</tr>
	<tr class="group_frequency">
		<td>1 раз в неделю,<br>в 14:00</td>
		<td>1 раз в неделю,<br>в 16:15</td>
		<td>1 раз в неделю,<br>в 18:30</td>
	</tr>
	<tr class="group_duration">
		<td>120 минут</td>
		<td>120 минут</td>
		<td>120 минут</td>
	</tr>
	<tr class="group_price">
		<td><span class="extrabold">12000 &#8381;</span><br>за 8 занятий</td>
		<td><span class="extrabold">12000 &#8381;</span><br>за 8 занятий</td>
		<td><span class="extrabold">12000 &#8381;</span><br>за 8 занятий</td>
	</tr>
</table>
<div class="enter_block_2">
	<a><div class="enter_2">Запись закрыта.</div></a>
	<div class="enter_text">Ждем вас на других кружках!
	</div>

</div></div>
</html>
/%
|контингент|4-11 класс; взрослые|
|ФИО преподавателя|Иванникова Екатерина|
|id|9|
%/
<html>
<div class="course_description half">
		<p>Курс для&nbsp;детей 5–6&nbsp;лет, поступающих в&nbsp;первый класс в&nbsp;сентябре 2017&nbsp;года. Ребята подготовятся к&nbsp;изучению грамоты, письма и&nbsp;математики, будут решать как базовые, так&nbsp;и&nbsp;нестандартные задачи. Занятия развивают фонематический слух, работа в&nbsp;группе формирует умения и&nbsp;навыки, необходимые для&nbsp;начала обучения в&nbsp;школе, в&nbsp;том числе коммуникативные и&nbsp;социальные. Уроки проходят 2&nbsp;раза в&nbsp;неделю по&nbsp;2&nbsp;академических часа, что подготавливает ребенка к&nbsp;формату занятий в&nbsp;школе, развивает усидчивость и&nbsp;внимательность.</p>
	</div>
	
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Вера Валентиновна Добролюбова</p>
			<p>Окончила МГПУ, педагог начальных классов, Старший учитель, Отличник просвещения. Много лет преподавала в&nbsp;школе №&nbsp;19&nbsp;им.&nbsp;Белинского, известной своими традициями. С&nbsp;открытыми уроками участвовала в&nbsp;семинарах по&nbsp;методу активизации образовательного процесса, разработанному Г.&nbsp;А.&nbsp;Китайгородской, а&nbsp;также давала открытые уроки на&nbsp;семинарах Ш.&nbsp;А.&nbsp;Амонашвили для слушателей по&nbsp;гуманной педагогике. Проходила курсы повышения квалификации в&nbsp;МИУУ,&nbsp;МИОО.
			</p>
		</div>
		<img class="teacher_img small_half" src="images_teachers/dobrolyubova.jpg">
	</div>	
	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
		<div class="process_block">
		<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">2</div><div class="bold_words">раза<br>в неделю</div><div class="light_words">по понедельникам и&nbsp;четвергам<br>в 14:30</div></div>
		<div class="process_column"><div class="large_number">10000 &#8381;</div><div class="light_words">за 8 занятий</div></div>
	</div></div>
</html>
/%
|контингент|дошкольники|
|ФИО преподавателя|Добролюбова Вера Валентиновна|
|id|1|
|видимое в адресной строке название|preschool|
%/
{{floatRight{[img[0 attachments/doggy.jpg]] Описалово картинки}}} //Лай-ла-лай, такой классный курс.// 
* в этой записи вы можете увидеть основы разметки
** списки, в т.ч. многоуровневые
** картинки + обёртки из классов ({{{floatRight}}} -- для плавающей справа картинки с подписью, {{{floatLeft}}} -- для того же слева)
** строчные штуки типа выделения жирным, курсивом, подчёркиванием
* ниже -- некоторые заметки, которые лучше прочитать
{{floatLeft{[img[0 attachments/square picture.jpg]] Описалово второй картинки, подлиннее}}} Чтобы начать редактировать запись, нажмите кнопку ''edit'' свеху либо дважды кликните по тексту. Чтобы сохранить изменения в текущей записи, нажмите кнопку ''done'' или просто ctrl+enter (важно: __после сохранения изменения уже нельзя откатить, кроме как вручную__), а чтобы выйти, не сохраняя изменений, нажмите "cancel" или esc (вас, естественно, переспросят: "вы уверены, что хотите отказаться от внесённых изменений?"). Попробуйте на этой записи.

{{floatRight{<html><img src="0 attachments/square picture.jpg" style="width: 5em" /></html>Пример, например}}} Пока что ''размер картинки'' в тексте ровно такой, какой в оригинале, но на этот счёт надо будет договориться: скорее всего, задавать фиксированный размер для каждой отдельной картинки не сгодится -- в плане адаптивного дизайна, поэтому в качестве временного решения всем картинкам, видимо, надо будет задать какой-то фиксированный размер (скажем, в треть ширины экрана).

Хотя при желании можно таки делать картинки произвольного размера и сейчас, тогда надо сделать html-вставку: вместо
{{{[img[0 attachments/square picture.jpg]]}}}
писать
{{{<html><img src="0 attachments/square picture.jpg" style="width: ..." /></html>}}}
(вместо {{{...}}} нужно вставить размер)

# нумерованные списки тоже можно делать
# обратите внимание на закомментированную часть внизу ({{{/% %/}}}):
** во-первых, комментарии можно писать всюду, и читатели их не увидят. Это бывает полезно для пометок редактирования
** во-вторых, таблицу со значениями "контингент", "стоимость", "пояснения к стоимости" надо заполнять для каждого курса. Из них будут генериться как подписи на странице самого курса, так и в других местах (например, в сетке на странице "курсы")
*** сюда же относятся тэги: тэг "Математика" у данной записи означает, что он относится к этой дисциплине -- и для каждого курса надо добавлять нужный тэг (или тэги)
# я намеренно расположил картинки с выезжающими подписями и наезжающие друг на друга, чтобы показать
## текущий косяк с подписями (лучше делать их короткими, чтобы уместились в одну строку, но я исправлю, чтобы можно было и иначе -- когда договоримся о размерах картинок)
## сложность с выравниванием абзацев и плавающих картинок: даже если в десктопной версии сделать так, что картинка будет как раз размера, при котором абзац рядом совпадает по высоте, при изменении размер шрифта это равенство нарушится

/%
|контингент			|1-3 класс|
|стоимость			|7000|
|пояснения к стоимости	|стоимость 16 занятий с октября по декабрь|
|ФИО преподавателя	|Иванов Иван Иваныч|

|ссылка на форму записи||
|аватарка			|0 attachments/doggy.jpg|
%/
<html>
	<div class="course_description half">
		<p style="margin-bottom: 2em">Практические занятия для тех, кто хочет научиться ухаживать за&nbsp;аквариумными или террариумными животными. Рыбы, креветки, крабы, змеи, богомолы, гекконы, лягушки, улитки и&nbsp;многие другие существа ждут встречи с&nbsp;вами. Вы научитесь создавать аквариумы и&nbsp;террариумы «с&nbsp;нуля», кормить, чистить, наблюдать и&nbsp;приручать их удивительных обитателей.
		</p>
	</div>
	
	<div class="teacher_text half">
	<img class="wide" src="images_others/33-2.jpg">
	<p class="name">Игорь Леонидович Окштейн</p>
		<p>Окончил биологический факультет МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова, специальность&nbsp;— зоология и&nbsp;ботаника (1987&nbsp;г.). Один из&nbsp;создателей и&nbsp;руководителей детского летнего учебного лагеря «Летняя Экологическая Школа». Кандидат биологических наук (специальность «зоология»).<br><a href="http://sch-int.ru/node/172">Полный список заслуг и публикаций</a></p>
	</div>

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
<div class="process_block">
		<div class="process_column"><div class="bold_words">занятие проходит в&nbsp;форме консультаций</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по субботам с&nbsp;10:00 до&nbsp;14:00</div></div>
		<div class="process_column"><div class="large_number">2000 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div></div>
</html>
/%
|контингент|1-11 класс|
|ФИО преподавателя|Окштейн Игорь Леонидович|
|id|33|
|видимое в адресной строке название|terrariums|
%/
Здесь мы будем прорабатывать технологии, подходящие для публичной tw-страницы (в т.ч. для чужих проектов), для начала подготовив эту TW для исп-я в качестве сайта И про доп. образование. Что нужно сделать:
* убрать лишнее
** () STP: отключить либо избавиться от "failed to include" notifications, (когда over http либо вообще)
** () prevent opening edit mode (of tiddlers)
** () .oO убрать sideBar lists (SideBarTabs → CommonAggregationTools) или оставить и исп-ть {{{excludeLists}}}
* () сделать навигацию более привычной/понятной: [[single page|SinglePageModePlugin]] + [[constant permaview|HelpfulPermaViewPlugin]] + backspace handler? [[tabs|TiddlersBarPlugin]] {{DDnc{fix permaview}}}?
* [[перевести|RuTranslationPlugin]] на русский (done: макросы tags, tagging; --permaview--, close all, search; created/modified):
** (in progress) +++[YourSearch]
config.macros.yourSearch.label = "yourSearch";
config.macros.yourSearch.prompt = "Gives access to the current/last YourSearch result";
YourSearchResultTemplate
YourSearchItemTemplate
[[YourSearch Options]] {{DDnc{partially done, needs testing + перевести заголовок, в т.ч. в коде (в 5 местях)}}}
[[YourSearch Help]] (и ссылки оттуда)
=== 
** (in progress) [[tid toolbar|TiddlerToolbarTranslation]]
* доработать интерфейс (в первую очередь для mobile):
** () макросы tags, tagging; created/modified: {{DDn{hide?}}}
** () sidebar: --permaview--, close all, search -- {{DDn{может, лучше картинками? лупа; ??}}} {{PoG{см. символ лупы}}}
** () переделать header: добавить эмблему, .оО цвета
*** для начала взять какую-то картинку (можно прямо эмблему) и вставить в header "as is"
** () добавить footer -- может понадобиться в desktop-версии
** () продумать размещение (видимо, в top line menu) кнопок соцсетей
** (done [[for left|FloatingMainMenuPlugin]]) оставить 1 sidebar (left? если нет, доперевести вкладки!); float on the same height?
** pad
*** () left sidebar to top-line? ''hidable by a full-heigh button''?
** smartphone
*** () hide all sidebars, header (based on screen size)
*** () add top line menu (probably always-on-top-hover ([[implemented|TopLineMenuPlugin]], but to be tested with tabs))
**** {{PoGc{this may be helpful: [[non-hovering fixed top using flex|http://stackoverflow.com/questions/37847072/how-to-make-header-fixed-but-not-hiding-the-content-via-css-and-html]]}}}
** () скрывать header (и footer, если будет), начиная с //некоторого// размера экрана
** () adaptive font-size for dif. screen resolutions (see MTS)
* (implement [[here|./tWorld/extensions, assemblies and dev/microreps/WhatsOpenPack.html#PageTitleContentPlugin]]) попробовать добиться, чтобы при вставки ссылки на TW с опред. открытыми записями в пост вК показывался адекватный title
* возможно, понадобится настройка бэкапов, отличная от привычной
* вначале сделать ~сайт доп.образования~, а потом уже делать шаблон
+++[Если бы делал в TW5, что бы понадобилось там изменить, добавить:]
*  ''сохранение на сервер'' (аналог MTS/...)
*  customize toolbars: view: _; edit: _; page: _
*  убрать строчку подписи + даты (или перевести?)
*  убрать history? перевести подписи вкладок + скрыть системные записи?
*  создать механизмы фильтрации (??) [для сайта доп.образования И]
=== | +++[meta: based here]
По ходу дела ряд плагинов (новых, старых, адаптированных) оказался based here. Стоит по мере осмысленности переносить их в другие места (publication tools, what's open, ...).
=== 
<html>
<div class="course_description two_thirds">
	<p>Хочешь стрелять, как&nbsp;Робин Гуд? Тогда тебе сюда! 
	</p>
	<p>Мы знакомимся с&nbsp;различными видами луков, изучаем их строение и&nbsp;особенности использования. Пробуем свои силы в&nbsp;технике стендовой стрельбы — учимся стрелять с&nbsp;10 и&nbsp;с&nbsp;15&nbsp;метров в&nbsp;неподвижную мишень. Продолжающие лучники осваивают более сложные варианты: стрельба на&nbsp;скорость, залпами, с&nbsp;колена и&nbsp;парфянская стрельба.
	</p>
	<p style="margin-bottom: 2em">Занятия с&nbsp;традиционным луком благотворно сказываются на&nbsp;развитии мышц спины, улучшают координацию движений, меткость и&nbsp;сосредоточенность.
	</p>
	<img src="images_others/95-2.jpg" class="small_half">
	<img src="images_others/95-3.jpg" class="small_half">
	<div class="img_text wide">Опытные стрелки участвуют во&nbsp;внешних турнирах и&nbsp;соревнованиях.
</div>
</div>
<div class="teacher_description third">
	<img class="teacher_img small_two_thirds" src="images_teachers/volodin.jpg">
	<div class="teacher_text small_third" style="vertical-align: bottom; padding: 0"><p class="name" style="margin: 0">Илья Владимирович Володин</p></div>
	<div class="teacher_text" style="margin-top: 1em;">
		<p>Окончил биологический факультет МГУ&nbsp;им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова, кафедра генетики&nbsp;(2014&nbsp;г.). Преподает стрельбу из&nbsp;лука с&nbsp;2014&nbsp;г.
		</p>
	</div>
</div>

<div class="process_description_2">
<h2>Группы</h2>
<table class="groups">
	<tr class="group_number">
		<td><span class="num">1</span></td>
		<td><span class="num">2</span></td>
	</tr>
	<tr class="group_age">
		<td>начинающие</td>
		<td>продолжающие</td>
	</tr>
	<tr class="group_frequency">
		<td>1 раз в&nbsp;неделю,<br>по субботам в&nbsp;14:00</td>
		<td>2 раза в&nbsp;неделю,<br>по суботам в 15:30<br>и по&nbsp;воскресеньям в&nbsp;17:00</td>
	</tr>
	<tr class="group_duration">
		<td>60 минут</td>
		<td>90+90 минут</td>
	</tr>
	<tr class="group_price">
		<td><span class="extrabold">бесплатно</span></td>
		<td><span class="extrabold">бесплатно</span></td>
	</tr>
</table>
<div class="enter_block_2">
	<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter_2">Записаться</div></a>
	<div class="enter_text">Оставьте свои контакты, и мы вам перезвоним! 
	</div>
	</div></div>
</html>

/%
|контингент|1-11 класс|
|ФИО преподавателя|Володин Илья Владимирович|
|id|95|
%/
<html>
	<div class="course_description half">
		<p>Кружок театрального искусства позволит ребенку пожить и&nbsp;поиграть в&nbsp;мире воображения, стать ненадолго пиратом, мудрым волшебником или&nbsp;лесным зверем. На&nbsp;театральных занятиях дети учатся выражать свои эмоции и&nbsp;понимать эмоции других, получают опыт работы в&nbsp;коллективе, когда общий результат зависит от&nbsp;каждого участника. Занятия по&nbsp;актерскому мастерству помогают развивать у&nbsp;ребенка память, речь, координацию, музыкальный слух. Участие в&nbsp;постановках дает опыт успешного выступления перед публикой, который нужен каждому.</p>
<p>Программа занятий состоит из&nbsp;двух блоков:<br>
1)  театральная техника;<br>
2)  филологические занятия, на&nbsp;которых ребенок получит опыт глубокого понимания и&nbsp;анализа художественных текстов, расширит читательский кругозор.</p>
<p style="margin-bottom: 2em">Зачисление в&nbsp;группы происходит после встречи с&nbsp;педагогами.</p>
</div>
	<div class="half">	
		<div class="img_text wide"><img src="images_others/15-4.jpg"></div>
<p style="font-weight: 800" class="bordered">Приводите детей и&nbsp;приходите на&nbsp;финальный спектакль!</p>
	</div>
<div class="wide">
		<div class="img_text third"><img class="wide" src="images_others/15-2.jpg"></div>
		<div class="img_text third"><img class="wide" src="images_others/15-3.jpg"></div>
		<div class="img_text third"><img class="wide" src="images_others/15-5.jpg"></div>
</div>
	
	<div class="wide margin-top">
	<div class="half">
		<img class="teacher_img small_half" src="images_teachers/averin.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Евгений Геннадьевич Аверин</p>
		<p>Закончил факультет начальных классов МПГУ. Работая в&nbsp;школе, увлекся детской поэзией и&nbsp;театральными постановками. Руководил разнообразными постановками, от&nbsp;«Вредных советов» Остера и&nbsp;басен Крылова до&nbsp;полномасштабной постановки «Али-Бабы».</p>
	</div>
	</div>
	<div class="half">	
		<img class="teacher_img small_half" src="images_teachers/volkova.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Оксана Витальевна Волкова</p>
		<p>Заведующая библиотекой, работает в&nbsp;школе «Интеллектуал» с&nbsp;2003&nbsp;года. Окончила биологический факультет МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова, получает второе высшее образование на&nbsp;факультете культурологи РГГУ. <a href="http://sch-int.ru/s_volkova">Подробнее</a></p>
	</div>
	</div>
	</div>

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">60</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">2</div><div class="bold_words">раза<br>в неделю</div><div class="light_words">по четвергам в&nbsp;15:30 <br>и по субботам в&nbsp;10:00</div></div>
		<div class="process_column"><div class="bold_words">5000 &#8381;<div class="light_words">за 8 занятий</div></div><div class="bold_words">3750 &#8381;<div class="light_words">за 4 занятия</div></div>
</div>
	</div>
</div>
</html>


/%
|контингент|2-6 класс|
|ФИО преподавателя|Аверин Евгений Геннадьевич, Волкова Оксана Витальевна|
|id|15|
|видимое в адресной строке название|theater|
%/
* установлен SharedTiddlersPlugin, в IncludeList добавлена вставка из узла commons
* CustomSettingsPlugin
* YourSearchPlugin
<html>
	<div class="course_description">
		<p>«Тренинг речевого самовыражения»&nbsp;—&nbsp;это уникальный авторский курс по&nbsp;развитию речи и&nbsp;интеллекта для&nbsp;дошкольников и&nbsp;учеников начальных классов.
		</p>
		<p>На&nbsp;Тренинге ваши дети:
			<ul>
				<li>значительно расширят словарный запас;</li>
				<li>разовьют внимание, память, мышление;</li>
				<li>выработают красивое произношение, чёткую дикцию, чувство ритма;</li>
				<li>познакомятся с речевым этикетом, основами актёрского мастерства и&nbsp;секретами публичного выступления;</li>
				<li>смогут отлично подготовиться к&nbsp;школьной программе.</li>
			</ul>
		</p>
		<p>На&nbsp;занятиях много речевых и&nbsp;подвижных игр, которые сочетаются с&nbsp;разыгрыванием сценок, чтением стихов и&nbsp;орфоэпическими упражнениями. Тренинг развивает самостоятельность и&nbsp;любознательность: дети сами подготовят свои первые выступления и&nbsp;творческие работы, проявят свои способности. 
		</p>
	</div>
	
<div class="wide margin-top">
		<img class="teacher_img small_half" src="images_teachers/shachneva.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Светлана Геннадьевна Шачнева</p>
			<p>Окончила МГПИ&nbsp;им.&nbsp;Ленина, дефектологический факультет. Специальность&nbsp;—&nbsp;учитель­ логопед, учитель русского языка и&nbsp;литературы. Стаж 25 лет. Прошла несколько циклов повышения квалификации по&nbsp;детской нейропсихологии в&nbsp;ведущих научных центрах (МГУ, МГППУ, Научно­-исследовательском Центре детской нейропсихологии).</p>
		<p>Сфера деятельности и&nbsp;интересы&nbsp;—&nbsp;нейропсихологический подход к&nbsp;речевым проблемам и&nbsp;школьной неуспеваемости, коррекция речевых нарушений, развитие интеллекта, инновационные методики обучения детей, подготовка к&nbsp;школе. Автор курса «Тренинг речевого самовыражения», «Коррекционной программы для&nbsp;работы с&nbsp;детьми, имеющими высокий уровень развития интеллекта».</p>
		</div>
	</div>	

	<div class="process_description_2">
<h2>Группы</h2>
<table class="groups">
	<tr class="group_number">
		<td><span class="num">1</span></td>
		<td><span class="num closed">2</span><span class="text-closed">Набор<br>закрыт</span></td>
		<td><span class="num">3</span></td>
	</tr>
	<tr class="group_age">
		<td>дошкольники</td>
		<td>1–2 класс</td>
		<td>1 класс</td>
	</tr>
	<tr class="group_frequency">
		<td>1 раз в неделю,<br>по субботам<br>в 10:00, 10:50 или 11:40</td>
		<td>1 раз в неделю,<br>по субботам<br>в 12:30</td>
		<td>1 раз в неделю,<br>по субботам<br>в 13:20</td>
	</tr>
	<tr class="group_duration">
		<td>40 минут</td>
		<td>40 минут</td>
		<td>40 минут</td>
	</tr>
	<tr class="group_price">
		<td><span class="extrabold">2500 &#8381;</span><br>за 4 занятия</td>
		<td><span class="extrabold">2500 &#8381;</span><br>за 4 занятия</td>
		<td><span class="extrabold">2500 &#8381;</span><br>за 4 занятия</td>
	</tr>
</table>
<div class="enter_block_2">
	<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter_2">Записаться</div></a>
	<div class="enter_text">Оставьте свои контакты,<br>и мы вам перезвоним!  
	</div>

</html>
/%
|контингент|дошкольники; 1-2 класс|
|ФИО преподавателя|Шачнева Светлана Геннадьевна|
|id|4|
|видимое в адресной строке название|speech_class|
%/
<html>
<div class="course_description two_thirds">
		<p>На занятиях ребята узнают, зачем, как и&nbsp;из&nbsp;каких материалов делали в&nbsp;старину традиционных кукол. Увидят, как из&nbsp;нескольких лоскутков, мотка ниток и&nbsp;пряжи рождается маленький человечек со&nbsp;своим характером и&nbsp;настроением.
		</p>
		<p style="margin-bottom: 2em">Создать своими руками настоящую игрушку — живой опыт и радость, с которой не может сравниться ни одна покупка в магазине.
		</p>
		<div class="img_text small_half"><img src="images_others/11-2.jpg">Разнообразные по&nbsp;назначению, форме, материалам, тряпичные куклы&nbsp;— яркие образцы русского народного творчества и&nbsp;культуры</div>
		<div class="img_text small_half"><img src="images_others/11-3.jpg"></div>
	</div>
	
	<div class="teacher_description third">
		<img class="teacher_img small_two_thirds" src="images_teachers/gzovskaya.jpg">
		<div class="teacher_text small_third" style="vertical-align: bottom; padding: 0"><p class="name" style="margin: 0">Ольга Львовна Гзовская</p></div>
		<div class="teacher_text" style="margin-top: 1em;">
		<p>Преподаватель изобразительного искусства, член союза дизайнеров Москвы. Окончила художественно-графический факультет МПГУ, работала старшим преподавателем на&nbsp;кафедре Декоративно-прикладного искусства в МПГУ. Неоднократно принимала участие в&nbsp;художественных выставках в&nbsp;России и&nbsp;за&nbsp;рубежом. Автор пяти статей о&nbsp;развитии творческих способностей на&nbsp;занятиях по&nbsp;керамике.<br><a href="http://sch-int.ru/node/131">Полный список заслуг и публикаций</a></p>
		</div></div>
	</div>
	
	
	
	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>

	<div class="process_block">
	<div class="process_column"><div class="large_number">45</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по пятницам<br>в 18:00</div></div>
	<div class="process_column"><div class="large_number">2640 &#8381;</div><div class="light_words">за 4 занятия,<br>включая стоимость расходных материалов</div></div>
	</div>
</div>
</html>


/%
|контингент|1-3 класс|
|стоимость||
|пояснения к стоимости||
|ФИО преподавателя|Гзовская Ольга Львовна|
|аватарка|images_others/14-1.jpg|
|id|11|
%/
<html>
<div class="course_description half">
	<p>Занятия рассчитаны на&nbsp;школьников 11&nbsp;класса, планирующих сдавать ЕГЭ по&nbsp;истории. В&nbsp;течение года мы&nbsp;повторим все темы школьной программы, уделяя особое внимание вопросам, встречающимся в&nbsp;ЕГЭ. Подготовка предполагает интенсивную работу на&nbsp;семинарах и&nbsp;самостоятельное выполнение домашних заданий.
	</p>
	<p style="margin-bottom: 2em">Курс построен на&nbsp;основе многолетней практики подготовки школьников «Интеллектуала» к&nbsp;успешной сдаче ЕГЭ по&nbsp;истории. 
	</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Дмитрий Александрович Быков</p>
		<p>Окончил исторический факультет МГУ&nbsp;им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова. Кандидат исторических наук, доцент. Преподаватель истории в&nbsp;школе «Интеллектуал». Работает в&nbsp;сфере образования с&nbsp;2002&nbsp;г., автор учебно-методических работ по&nbsp;истории. Эксперт в&nbsp;области ЕГЭ.<br><a href="http://sch-int.ru/node/251">Полный список заслуг и публикаций</a>
		</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/bykov.jpg">
</div>


<div class="process_description closed">
	<div class="enter_block">
		<a><div class="enter">Запись закрыта</div></a>
		<div class="process_text">Ждем вас в январе!  
		</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div></div>
	<div class="process_column"><div class="large_number">10000 &#8381;</div><div class="light_words">за 8 занятий</div></div>
	</div>
</div>
</html>

/%
|контингент|11 класс|
|ФИО преподавателя|Быков Дмитрий Александрович|
|id|53|
|Короткое название|История|
%/
<html>
<div class="course_description half">
	<p>Программа курса включает повторение школьной программы по&nbsp;истории, рассматривает особенности тестовых вопросов и&nbsp;заданий ОГЭ, особенное внимание уделено письменной части экзамена. Занятия предполагают интенсивную работу на&nbsp;семинарах и&nbsp;самостоятельную работу дома.
	</p>
	<p style="margin-bottom: 2em">При&nbsp;подготовке курса использованы разработки кафедры истории школы «Интеллектуал», используемые для&nbsp;подготовки школьников к&nbsp;успешной сдаче ОГЭ.
	</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Дмитрий Александрович Быков</p>
		<p>Окончил исторический факультет МГУ&nbsp;им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова. Кандидат исторических наук, доцент. Преподаватель истории в&nbsp;школе «Интеллектуал». Работает в&nbsp;сфере образования с&nbsp;2002&nbsp;г., автор учебно-методических работ по&nbsp;истории. Эксперт в&nbsp;области ЕГЭ.<br><a href="http://sch-int.ru/node/251">Полный список заслуг и&nbsp;публикаций</a>
		</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/bykov.jpg">
</div>

<div class="process_description closed">
	<div class="enter_block">
		<a><div class="enter">Запись закрыта</div></a>
		<div class="process_text">Ждем вас в январе!  
		</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div></div>
	<div class="process_column"><div class="large_number">10000 &#8381;</div><div class="light_words">за 8 занятий</div></div>
	</div>
</div>
</html>

/%
|контингент|9 класс|
|ФИО преподавателя|Быков Дмитрий Александрович|
|id|54|
%/
<html>
<div class="course_description half">
	<p style="margin-bottom: 2em">Кружок ориентирован на школьников, которые хотят подготовиться к хорошей сдаче профильного ЕГЭ по математике. На занятиях планируется детальное обсуждение специфических вопросов ЕГЭ, в том числе заданий второй части, а также отработка навыков их написания на время. Курс разбит на блоки, каждый из которых посвящен определенному типу задач.
	</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Сергей Владимирович Ламзин</p>
		<p>Окончил физический факультет МГУ&nbsp;им&nbsp;М.&nbsp;В.&nbsp;Ломоносова. Преподаватель математики в&nbsp;школе Интеллектуал с&nbsp;2007&nbsp;г. Сотрудник Красноярской Летней Школы&nbsp;(КЛШ), Зимней Пущинской Школы&nbsp;(ЗПШ) и&nbsp;волонтёр организации "Мемориал".
		</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/lamzin.jpg">
</div>

<div class="process_description closed">
	<div class="enter_block">
		<a><div class="enter">Запись закрыта</div></a>
		<div class="process_text">Ждем вас в январе!  
		</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div></div>
	<div class="process_column"><div class="large_number">10000 &#8381;</div><div class="light_words">за 8 занятий</div></div>
	</div>
</div>
</html>

/%
|контингент|11 класс|
|ФИО преподавателя|Ламзин Сергей Владимирович|
|id|41|
|Короткое название|Математика|
%/
<html>
<div class="course_description half">
	<p style="margin-bottom: 2em">Занятия рассчитаны на&nbsp;школьников 11&nbsp;класса, планирующих сдавать ЕГЭ по&nbsp;физике. В&nbsp;течение года мы&nbsp;повторим все темы школьной программы, уделяя особое внимание вопросам, встречающимся в&nbsp;ЕГЭ. Подготовка предполагает решение большого числа физических задач, самостоятельно и&nbsp;в&nbsp;классе. Курс построен на&nbsp;основе многолетней практики подготовки школьников «Интеллектуала» к&nbsp;успешной сдаче&nbsp;ЕГЭ и&nbsp;участию в&nbsp;олимпиадах по&nbsp;физике.
	</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Илья Николаевич Николайшвили</p>
		<p>Окончил физический факультет МГУ&nbsp;им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова. Преподаватель физики, куратор курса физического практикума в&nbsp;школе «Интеллектуал».<br><a href="http://www.sch-int.ru/node/219">Подробнее</a>
		</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/nikolayshvili.jpg">
</div>

<div class="process_description closed">
	
		<div class="enter_block">
			<a><div class="enter">Запись закрыта</div></a>
			<div class="process_text">Ждем вас в январе!
			</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div></div>
	<div class="process_column"><div class="large_number">10000 &#8381;</div><div class="light_words">за 8 занятий</div></div>
	</div>
</div>
</html>

/%
|контингент|11 класс|
|ФИО преподавателя|Николайшвили Илья Николаевич|
|id|42|
|Короткое название|Физика|
%/
<html>
<div class="course_description half">
	<p>Программа курса охватывает все разделы физики <NOBR>за 7–9 классы</NOBR>, рассматривает особенности вопросов и&nbsp;заданий ОГЭ, особенное внимание уделено практической части экзамена. Занятия предполагают решение большого числа физических задач, в&nbsp;том числе самостоятельно в&nbsp;виде домашних заданий.
	</p>
	<p style="margin-bottom: 2em">При&nbsp;подготовке курса использованы разработки кафедры физики школы «Интеллектуал», используемые для&nbsp;подготовки школьников к&nbsp;успешной сдаче ОГЭ.
	</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Илья Николаевич Николайшвили</p>
		<p>Окончил физический факультет МГУ&nbsp;им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова. Преподаватель физики, куратор курса физического практикума в&nbsp;школе «Интеллектуал».<br><a href="http://www.sch-int.ru/node/219">Подробнее</a>
		</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/nikolayshvili.jpg">
</div>

<div class="process_description closed">
	
		<div class="enter_block">
			<a><div class="enter">Запись закрыта</div></a>
			<div class="process_text">Ждем вас в январе!
			</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div></div>
	<div class="process_column"><div class="large_number">10000 &#8381;</div><div class="light_words">за 8 занятий</div></div>
	</div>
</div>
</html>
/%
|контингент|9 класс|
|ФИО преподавателя|Николайшвили Илья Николаевич|
|id|43|
%/
<html>
<div class="course_description half">
	<p>Основной материал заданий ОГЭ — химия неметаллов, поэтому на занятиях мы подробно рассмотрим химию простых простых веществ и соединений кислорода, серы, азота, фосфора и галогенов.
	</p>
	<p>Занятия построены в&nbsp;виде семинаров с&nbsp;разбором большого числа заданий и&nbsp;демонстрацией химических опытов для&nbsp;закрепления пройденного материала. 
	</p>
	<p style="margin-bottom: 2em">Кружок ведут преподаватели с&nbsp;большим опытом подготовки школьников к&nbsp;успешной сдаче ОГЭ.
	</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Елена Викторовна Батаева</p>
		<p>Окончила химический факультет МГУ&nbsp;им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова. Кандидат педагогических наук. Заведующая кафедрой химии школы «Интеллектуал». Имеет более 110&nbsp;публикаций по&nbsp;методическим вопросам преподавания химии.<br><a href="http://www.sch-int.ru/s_bataeva_e">Подробнее</a>
		</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/bataeva.jpg">
</div>

<div class="process_description">
	<div class="enter_block">
		<a href="https://goo.gl/forms/VEGfjs4rkNjCPs0I3"><div class="enter">Записаться</div></a>
		<div class="process_text">Оставьте заявку, если хотите посещать кружок. Как только группа наберется, мы&nbsp;свяжемся с&nbsp;вами и&nbsp;расскажем о&nbsp;точном расписании и&nbsp;оплате.  
		</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div></div>
	<div class="process_column"><div class="bold_words">цена</div><div class="light_words">уточняется</div></div>
	</div>
</div>
</html>

/%
|контингент|9 класс|
|ФИО преподавателя|Батаева Елена Викторовна|
|id|45|
%/
<html>
<div class="course_description">
	<p>Обществознание – один из&nbsp;наиболее распространенных предметов, необходимых при&nbsp;поступлении на&nbsp;гуманитарные специальности. Однако,&nbsp;для&nbsp;успешного написания ЕГЭ по&nbsp;обществознанию часто бывает не&nbsp;достаточно знаний школьной программы, и&nbsp;требуются специальные навыки написания эссе и&nbsp;составления развернутых планов.
	</p>
	<p>В&nbsp;программе курса – отработка техники решения заданий ЕГЭ с&nbsp;развернутым ответом, а&nbsp;также повторение школьной программы по&nbsp;обществознанию, разбор сложных и&nbsp;спорных вопросов.
	</p>
	<p style="margin-bottom: 2em">При&nbsp;разработке курса использован опыт кафедры по&nbsp;подготовке школьников к&nbsp;успешной сдаче экзаменов и&nbsp;победе на&nbsp;многочисленных олимпиадах.
	</p>
</div>
<div class="wide margin-top">
	<div class="half">
		<img class="teacher_img small_half" src="images_teachers/pogonina.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Ольга Геннадиевна Погонина</p>
			<p>Окончила исторический факультет Пермского государственного университета. Заведующая кафедрой социально-экономических дисциплин в&nbsp;школе Интеллектуал. MA&nbsp;in&nbsp;Political Science&nbsp;(University of Manchester). Педагогический стаж&nbsp;—&nbsp;более 10&nbsp;лет.<br><a href="http://sch-int.ru/node/744">Подробнее</a>
		</p>
		</div>
	</div>
	<div class="half">	
		<img class="teacher_img small_half" src="images_teachers/varlamov.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Юрий Евгеньевич Варламов</p>
			<p>Бакалавр юридических наук (факультет права НИУ&nbsp;ВШЭ,&nbsp;2016&nbsp;г., диплом с&nbsp;отличием), выпускник школы Интеллектуал&nbsp;(2012&nbsp;г.). Является автором спецкурса «Римское право», участвует в&nbsp;преподавании кружка «История судопроизводства».</p>
		</div>
	</div>
</div>

<div class="process_description closed">
	<div class="enter_block">
		<a><div class="enter">Запись закрыта</div></a>
		<div class="process_text">Ждем вас в январе!
		</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div></div>
	<div class="process_column"><div class="large_number">10000 &#8381;</div><div class="light_words">за 8 занятий</div></div>
	</div>
</div>
</html>

/%
|контингент|11 класс|
|ФИО преподавателя|Погонина Ольга Геннадиевна, Варламов Юрий Евгеньевич|
|id|55|
|Короткое название|Обществознание|
%/
<html>
<div class="course_description half">
	<p>Кружок ориентирован на&nbsp;школьников, которые хотят подготовиться к&nbsp;хорошей сдаче ЕГЭ по&nbsp;русскому языку. В&nbsp;течение года мы&nbsp;повторим все темы школьной программы, уделяя особое внимание вопросам, встречающимся в&nbsp;ЕГЭ. На&nbsp;занятиях проводится отработка решения тестовых заданий ЕГЭ по&nbsp;русскому языку, а&nbsp;также детальный разбор техники написания сочинения.
	</p>
	<p style="margin-bottom: 2em">При&nbsp;планировании и&nbsp;проведении кружка используются разработки кафедры филологии школы «Интеллектуал», а&nbsp;также многолетний опыт подготовки выпускников, успешно сдавших ЕГЭ по&nbsp;русскому языку на&nbsp;высокий балл.
	</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Дарья Вильямовна Николаева</p>
		<p>Окончила Литературный институт им.&nbsp;Горького, отделение критики. Преподаватель русского языка и&nbsp;литературы в&nbsp;школе «Интеллектуал».<br><a href="http://sch-int.ru/node/163">Подробнее</a>
		</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/nikolaeva.jpg">
</div>

		<div class="process_description closed">
	
		<div class="enter_block">
			<a><div class="enter">Запись закрыта</div></a>
			<div class="process_text">Ждем вас в январе!
			</div>
	</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div></div>
	<div class="process_column"><div class="large_number">10000 &#8381;</div><div class="light_words">за 8 занятий</div></div>
	</div>
</div>
</html>

/%
|контингент|11 класс|
|ФИО преподавателя|Николаева Дарья Вильямовна|
|id|71|
|Короткое название|Русский язык|
%/
|контингент|9 класс|
<html>
<div class="course_description two_thirds">
	<p>Шахматы — это удивительная и&nbsp;увлекательная игра. Она учит концентрации внимания, логическому мышлению, развивает усидчивость и&nbsp;фантазию. Серьезная игра в&nbsp;шахматы совершенствует сильные черты личности: решительность, хладнокровие и&nbsp;находчивость.
	</p>
	<p>Структура занятия:
		<ul>
			<li><span style="font-family: Extrabold">Проверка домашнего задания</span><br>В конце каждого занятия ребенок получает специальные подготовленные задачи, который должен самостоятельно решить дома для&nbsp;закрепления умений. Время выполнения каждого ДЗ&nbsp;—&nbsp;не&nbsp;более получаса.<br>
			<li><span style="font-family: Extrabold">Теоретическая часть</span><br>Учимся стратегии и&nbsp;эндшпилю (то&nbsp;есть, малофигурным позициям), разбираем конкретные партии, решаем этюды и&nbsp;задачи.<br>
			<li><span style="font-family: Extrabold">Игровая часть</span><br>Легкие партии завершают занятие (и&nbsp;это самая большая его часть). Именно в&nbsp;процессе игры ребенок может научиться сам принимать решения и&nbsp;тут&nbsp;же понимать их&nbsp;последствия.
		</ul>
	</p>
	<p>Примерно раз в&nbsp;месяц проходят однодневные конкурсы&nbsp;—&nbsp;проверка знаний и&nbsp;турниры. Когда юные шахматисты приобретут необходимый опыт, они начнут участвовать во&nbsp;внутренних и&nbsp;выездных соревнованиях различного уровня.
	</p>
	<p style="margin-bottom: 2em">На&nbsp;наших занятиях ребенок сможет почувствовать красоту шахмат и&nbsp;научится создавать ее сам!
	</p>
</div>
<div class="teacher_description third">
	<p class="name bordered">Петр Николаевич Лавров</p>
		<p>Кандидат в&nbsp;мастера спорта по&nbsp;шахматам с&nbsp;2000&nbsp;года. Тренер по&nbsp;шахматам с&nbsp;2012&nbsp;года.
		</p>
</div>

<div class="process_description_2">
<h2>Группы</h2>
<table class="groups">
	<tr class="group_number">
		<td><span class="num closed">1</span><span class="text-closed">Набор<br>закрыт</span></td>
		<td><span class="num">2</span></td>
	</tr>
	<tr class="group_age">
		<td>1–3 класс<br>(начинающие)</td>
		<td>1–5 класс<br>(продолжающие)</td>
	</tr>
	<tr class="group_frequency">
		<td>2 раза в&nbsp;неделю,<br>по средам в 15:00<br>и по&nbsp;субботам в&nbsp;13:00</td>
		<td>2 раза в&nbsp;неделю,<br>по средам в 16:40<br>и по&nbsp;субботам в&nbsp;14:40</td>
	</tr>
	<tr class="group_duration">
		<td>90+90 минут</td>
		<td>90+90 минут</td>
	</tr>
	<tr class="group_price">
		<td><span class="extrabold">5000 &#8381;</span><br>за 4 занятия<br>или<br><span class="extrabold">6000 &#8381;</span><br>за 8 занятий</td>
		<td><span class="extrabold">5000 &#8381;</span><br>за 4 занятия<br>или<br><span class="extrabold">6000 &#8381;</span><br>за 8 занятий</td>
	</tr>
</table>
<div class="enter_block_2">
	<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter_2">Записаться</div></a>
	<div class="enter_text">Оставьте свои контакты,<br>и мы вам перезвоним! 
	</div>

</div></div>
</div>
</html>
/%
|контингент|1-5 класс|
|ФИО преподавателя|Лавров Петр Николаевич|
|id|92|
|видимое в адресной строке название|chess|
%/
<html>
<div class="course_description two_thirds">
	<p>
		На&nbsp;занятиях школьники учатся выполнять сложные исследовательские проекты, убедительно представлять свои решения, отстаивать их в&nbsp;научных дискуссиях, приобретают навыки оппонирования и&nbsp;рецензирования. Занятия проводятся на&nbsp;русском и&nbsp;английском языках. Это позволяет в&nbsp;дальнейшем участвовать <a href="http://www.rusypt.msu.ru/index.shtml">в&nbsp;Турнирах юных физиков</a> в&nbsp;России и&nbsp;за&nbsp;рубежом, успешно выступать в&nbsp;таких конкурсах, как, например, «Учёные будущего», «Будущие исследователи&nbsp;— будущее науки», «Московский городской конкурс научно-исследовательских и&nbsp;проектных работ обучающихся».
	</p>
	<p style="margin-bottom: 2em">Необходимо пройти собеседование.</p>
</div>
<div class="teacher_text third bordered">
<p class="name" style="margin: 0">Кружок ведут Елена Борисовна Стефанова и Александр Викторович Иванов</p>
</div>
<div class="third wrap_colored" style="box-sizing: border-box; font-size: .9em">
	<h2>Примеры задач ТЮФа</h2>
	<p class="extrabold" style="margin-bottom: 0">Синхронизация метрономов</p>
<p>Механические метрономы, стоящие рядом друг с&nbsp;другом и&nbsp;начинающие движение из&nbsp;случайных начальных положений, при определённых условиях синхронизируются за&nbsp;считанные минуты. Исследуйте явление.</p>
	<p class="extrabold" style="margin-bottom: 0">Вакуумная базука</p>
<p>Вакуумная базука может быть построена из&nbsp;простой пластиковой трубы, лёгкого снаряда и&nbsp;пылесоса. Сконструируйте такое устройство и&nbsp;максимизируйте скорость снаряда.
</p>
		
	</p>
</div>
<img class="two_thirds" src="images_others/91-2.jpg">

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, мы свяжемся с&nbsp;вами и&nbsp;расскажем, как присоединиться к&nbsp;занятиям.
			</div>
		</div>

		<div class="process_block" style="display: inline-block;">
		<div class="process_column"><div class="large_number">3</div><div class="bold_words">часа</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по вторникам, в 16:35
		</div></div>
		<div class="process_column"><div class="large_number">бесплатно</div></div></div>
</div>
</html>
/%
|контингент|7-10 класс|
|ФИО преподавателя|Стефанова Елена Борисовна, Иванов Александр Викторович|
|id|91|
|видимое в адресной строке название|projects|
%/
<html>
<div class="course_description half">
		<p style="margin-bottom: 2em">На&nbsp;занятиях ребенок познакомится с&nbsp;нотной грамотой и&nbsp;итальянскими обозначениями динамических оттенков: узнает, что&nbsp;такое crescendo, diminuendo и&nbsp;аdagio. Заглянет внутрь инструмента, чтобы понять, как он&nbsp;устроен. На&nbsp;практической части занятий мы поставим руку, узнаем, что такое регистры, научимся пользоваться педалями и&nbsp;подбирать на&nbsp;слух простейшие мелодии. Ребенок сможет играть не&nbsp;только самостоятельно, но&nbsp;и&nbsp;выступать в&nbsp;ансамбле и&nbsp;с&nbsp;учителем, научится разбирать и&nbsp;выучивать небольшие пьесы.
		</p>
	</div>
	
<div class="half">
		<div class="teacher_text small_half"><p class="name bordered">Валентина Владимировна Кузнецова</p>
			<p>Окончила МГИК, специальность&nbsp;— дирижер академического хора. Педагогический стаж&nbsp;— 35 лет. Преподаватель музыки в&nbsp;школе «Интеллектуал».
			</p>
		</div>
		<img class="teacher_img small_half" src="images_teachers/kuznecova.jpg">	
	</div>	

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div><div class="process_block">
		<div class="process_column"><div class="large_number">40</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по субботам после&nbsp;14:30</div></div>
		<div class="process_column"><div class="large_number">1000 &#8381;</div><div class="light_words">за 1 занятие</div></div>
	</div></div>
</html>

/%
|контингент|дошкольники; 1-2 класс|
|ФИО преподавателя|Кузнецова Валентина Владимировна|
|id|12|
|видимое в адресной строке название|piano|
%/
<html>
<div class="course_description half">
		<p>Базовый курс французского языка для начинающих. За&nbsp;год обучения школьники освоят правильное произношение и&nbsp;выучат обширный пласт лексики и&nbsp;грамматических конструкций, чтобы свободно поддерживать разговор и&nbsp;переписку на&nbsp;простые жизненные темы.
		</p>
		<p style="margin-bottom: 2em">Курс имеет коммуникативную направленность: с&nbsp;первого же&nbsp;занятия школьники будут общаться на&nbsp;французском языке, слушать аутентичную речь и&nbsp;делиться мнением в&nbsp;группах.
		</p>
	</div>
	
<div class="half">
		<div class="teacher_text small_half"><p class="name bordered">Дарья Владимировна Архипова</p>
			<p>Окончила МГПУ, кафедру романо-германской филологии&nbsp;(2013&nbsp;г.) Педагогический стаж&nbsp;— 3&nbsp;года.
			</p>
		</div>
		<img class="teacher_img small_half" src="images_teachers/arkhipova.jpg">	
	</div>	

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div><div class="process_block">
		<div class="process_column"><div class="large_number">60</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">2</div><div class="bold_words">раза<br>в неделю</div><div class="light_words">по вторникам и&nbsp;четвергам в&nbsp;16:00</div></div>
		<div class="process_column"><div class="large_number">4000 &#8381;</div><div class="light_words">за 8 занятий</div></div>
	</div></div>
</html>

/%
|контингент|5-6 класс|
|ФИО преподавателя|Архипова Дарья Владимировна|
|id|63|
|видимое в адресной строке название|french|
%/
<html>
<div class="course_description half">
		<p style="margin-bottom: 2em">Занятия хоровым пением для&nbsp;малышей — прекрасная возможность развить слух и&nbsp;голос ребенка, поработать над&nbsp;дикцией и&nbsp;чувством ритма. Занятия начинаются с&nbsp;небольших песен и&nbsp;закличек, чтобы ребята смогли почувствовать свой голос и&nbsp;научиться с&nbsp;ним работать. Затем мы&nbsp;перейдем к&nbsp;более сложным произведениям, потренируемся петь на&nbsp;несколько голосов, а&nbsp;капелла и&nbsp;сольно. Пение в&nbsp;нашем хоре — это не&nbsp;только работа с&nbsp;голосом, но&nbsp;и&nbsp;лучшее понимание музыки, развитие сценических навыков и&nbsp;даже игра на&nbsp;музыкальных инструментах.
		</p>
	</div>
	
<div class="half">
		<div class="teacher_text small_half"><p class="name bordered">Валентина Владимировна Кузнецова</p>
			<p>Окончила МГИК, специальность&nbsp;— дирижер академического хора. Педагогический стаж&nbsp;— 35 лет. Преподаватель музыки в&nbsp;школе «Интеллектуал».
			</p>
		</div>
		<img class="teacher_img small_half" src="images_teachers/kuznecova.jpg">	
	</div>	

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
<div class="process_block">
		<div class="process_column"><div class="large_number">40</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по субботам в&nbsp;12:00</div></div>
		<div class="process_column"><div class="large_number">2500 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div></div>

</html>


/%
|контингент|1-2 класс|
|ФИО преподавателя|Кузнецова Валентина Владимировна|
|id|14|
%/
<html>
	<div class="course_description two_thirds">
		<p>Чем отличается красная, белая и гончарная глина? Что такое шамот и роспись ангобами? Почему глазурь после обжига меняет цвет? Как работает гончарный круг? И можно, наконец, все это потрогать руками? Не только можно, но и обязательно нужно!</p>
<p>На кружке художественной керамики ваши дети окажутся в настоящей керамической мастерской, узнают ответы на все эти вопросы и, конечно же, первым делом сами попробуют работать с глиной. Занятия керамикой развивают художественный вкус, пространственное мышление и дают важный тактильный опыт. А если что-то не получится с первой попытки — глину всегда можно смять, размять, и повторить еще раз!
		</p>
	<img src="images_others/3-4.jpg" class="small_half">
	<img src="images_others/3-2.jpg" class="small_half">
	</div>
	
	<div class="teacher_description third">
		<img class="teacher_img small_two_thirds" src="images_teachers/gzovskaya.jpg">
		<div class="teacher_text small_third" style="vertical-align: bottom; padding: 0"><p class="name" style="margin: 0">Ольга Львовна Гзовская</p></div>
		<div class="teacher_text" style="margin-top: 1em;">
		<p>Преподаватель изобразительного искусства, член союза художников России, член союза дизайнеров Москвы. Окончила художественно-графический факультет МПГУ. Неоднократно принимала участие в&nbsp;художественных выставках в&nbsp;России и&nbsp;за&nbsp;рубежом. Автор пяти статей о&nbsp;развитии творческих способностей на&nbsp;занятиях по&nbsp;керамике.<br><a href="http://sch-int.ru/node/131">Полный список заслуг и публикаций</a></p>
	</div></div></div>
	
<div class="process_description_2">
<h2>Группы</h2>
<table class="groups">
	<tr class="group_number">
		<td><span class="num">1</span></td>
		<td><span class="num">2</span></td>
	</tr>
	<tr class="group_age">
		<td>дошкольники<br>(6–7 лет)</td>
		<td>3–5 класс</td>
	</tr>
	<tr class="group_frequency">
		<td>1 раз в неделю,<br>по субботам<br>в 10:00, 11:00, 12:00 или 13:00</td>
		<td>1 раз в неделю,<br>по средам в 17:00</td>
	</tr>
	<tr class="group_duration">
		<td>45 минут</td>
		<td>90 минут</td>
	</tr>
	<tr class="group_price">
		<td><span class="extrabold">4300 &#8381;</span><br>за 4 занятия</td>
		<td><span class="extrabold">6400 &#8381;</span><br>за 4 занятия</td>
	</tr>
	<tr> 
	<td colspan="4" class="extrabold">В цену кружка входит стоимость расходных материалов. 
	</td> 
	</tr> 
</table>

<div class="enter_block_2">
	<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter_2">Записаться</div></a>
	<div class="enter_text">Оставьте свои контакты,<br>и мы вам перезвоним!  
	</div>
</html>


/%
|контингент|дошкольники; 1-11 класс|
|ФИО преподавателя|Гзовская Ольга Львовна|
|id|3|
|видимое в адресной строке название|ceramics|
%/
<html>
<div class="course_description half">
	<p style="margin-bottom: 2em">Младшеклассникам редко объясняют подробности строения и&nbsp;работы живой клетки, так&nbsp;как для&nbsp;осознанного понимания необходимо знать основы физики и&nbsp;химии. На&nbsp;этом кружке мы не&nbsp;будем разделять физику, химию и&nbsp;биологию и&nbsp;разберёмся, как живёт клетка, по&nbsp;возможности не&nbsp;оставляя непонятных вопросов. 
</p>
</div>
<div class="teacher_text half">
	<img class="wide" src="images_others/49-2.jpg">
	<p class="name">Игорь Леонидович Окштейн</p>
	<p>Окончил биологический факультет МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова, специальность&nbsp;— зоология и&nbsp;ботаника (1987&nbsp;г.). Один из&nbsp;создателей и&nbsp;руководителей детского летнего учебного лагеря «Летняя Экологическая Школа». Кандидат биологических наук (специальность «зоология»).<br><a href="http://sch-int.ru/node/172">Полный список заслуг и публикаций</a></p>
</div>
	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по понедельникам в&nbsp;18:20</div></div>
		<div class="process_column"><div class="large_number">3000 &#8381;</div><div class="light_words">за 4 занятия</div></div>
</div>
</div>
</html>

/%
|контингент|6-8 класс|
|ФИО преподавателя|Окштейн Игорь Леонидович|
|id|49|
|видимое в адресной строке название|cytology|
%/
<html>
<div class="course_description half">
	<p>В&nbsp;центре курса лежит изучение исторического пути Кипра — ключевой точки в&nbsp;системе коммуникаций Восточного Средиземноморья, служившей перекрестком культур и&nbsp;цивилизаций. Кипр является своеобразным «Средиземноморьем в&nbsp;миниатюре» и&nbsp;позволяет проследить ключевые события мировой истории последних четырех тысяч лет.
	</p>
	<p style="margin-bottom: 2em">Курс адресован тем, кто хочет углубить знания по&nbsp;всеобщей истории и&nbsp;научиться ориентироваться в&nbsp;исторических источниках для&nbsp;самостоятельной исследовательской работы.
	</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Павел Андреевич Евдокимов</p>
		<p>Окончил исторический факультет МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова. Кандидат исторических наук&nbsp;(2005&nbsp;г.) Работает в&nbsp;школе «Интеллектуал» с&nbsp;2003&nbsp;г. Заведующий кафедрой истории. Руководитель и&nbsp;организатор археологических экспедиций.<br><a href="http://sch-int.ru/node/187">Полный список заслуг и публикаций</a>
		</p>
		</div>
	<img class="teacher_img small_half" src="images_teachers/evdokimov.jpg">
</div>

<div class="course_description third">
	<p>Курс основан на уникальных наработках, собранных в ходе систематической учебно-исследовательской деятельности на Кипре (6 лет практикума школы «Интеллектуал» в сотрудничестве с различными образовательными организациями).
	</p>
	<p>В феврале 2017 г. планируется выездной практикум по истории и культуре Средиземноморья на Кипр с выполнением индивидуальных исследовательских проектов.
	</p>
</div>
<img class="two_thirds" src="images_others/52-2.jpg">
	
	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
	<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по&nbsp;субботам в&nbsp;14:30</div></div>
	<div class="process_column"><div class="large_number">бесплатно</div></div>
</div>
</html>

/%
|контингент|6-10 класс|
|ФИО преподавателя|Евдокимов Павел Андреевич|
|id|52|
|видимое в адресной строке название|Cyprus|
%/
<html>
<div class="course_description half">
		<p>Музыка для самых маленьких!
		</p>
		<p style="margin-bottom: 2em">Ребята познакомятся с&nbsp;нотной грамотой и&nbsp;научатся играть на&nbsp;металлофоне. Чтобы играть в&nbsp;ансамбле, необходимо уметь слушать и&nbsp;слышать музыку и&nbsp;других исполнителей, чувствовать ритм, запоминать ноты. Мы&nbsp;будем петь и&nbsp;играть простейшие попевки, попробуем подбирать знакомые мелодии на&nbsp;слух, разучим небольшие произведения. Работа проходит в&nbsp;игровой форме с&nbsp;учетом возможностей каждого ребенка, небольшими группами и&nbsp;индивидуально.
		</p>
	</div>
	
<div class="half">
		<div class="teacher_text small_half"><p class="name bordered">Валентина Владимировна Кузнецова</p>
			<p>Окончила МГИК, специальность&nbsp;— дирижер академического хора. Педагогический стаж&nbsp;— 35 лет. Преподаватель музыки в&nbsp;школе «Интеллектуал».
			</p>
		</div>
		<img class="teacher_img small_half" src="images_teachers/kuznecova.jpg">	
	</div>	

<div class="process_description closed">
	<div class="enter_block">
		<a><div class="enter">Запись закрыта</div></a>
		<div class="process_text">Ждем вас в январе!  
		</div>
		</div><div class="process_block">
		<div class="process_column"><div class="large_number">40</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по субботам в&nbsp;11:00</div></div>
		<div class="process_column"><div class="large_number">2800 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div></div>
</html>

/%
|контингент|дошкольники|
|ФИО преподавателя|Кузнецова Валентина Владимировна|
|id|13|
%/
<html>
<div class="course_description half">
	<p style="margin-top: 1em">О&nbsp;чем может рассказать галька на&nbsp;пляже, горы, песок и просто земля под ногами? Как научиться их понимать?</p>
<p>На&nbsp;занятиях кружка мы совершаем увлекательные путешествия в&nbsp;пространстве: вглубь Земли и в&nbsp;космос, внутрь кристаллической структуры минералов, в&nbsp;шахты и карьеры, где добывают различные полезные ископаемые.</p>
<p>Путешествуем мы и во&nbsp;времени: на&nbsp;много миллионов лет назад, когда образовывалась наша Земля, когда поднимались и разрушались горы, росли кристаллы, а на&nbsp;Земле жили диковинные существа. Ребята узнают о&nbsp;поверхностных и глубинных процессах, происходивших на&nbsp;Земле миллионы лет назад и продолжающихся в&nbsp;наше время, они учатся видеть вокруг признаки этих процессов.</p>
<p>Школьники работают с&nbsp;коллекцией камней, учатся отличать их в&nbsp;природе, в&nbsp;обработанном виде, в&nbsp;ювелирных изделиях. Узнают они и о&nbsp;непростой, но удивительно интересной жизни геологов.</p>
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Екатерина Владимировна Ловская</p>
		<p>Окончила кафедру минералогии геологического факультета МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова. Кандидат геолого-минералогических наук. Ведёт спецкурс «Общая геология» в&nbsp;10&nbsp;классе и&nbsp;кружок «Юный геолог».<br><a href="http://www.sch-int.ru/s_lovskaya">Подробнее</a>
		</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/lovskaya.jpg">
</div>

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
</div><div class="process_block">
		<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по пятницам в&nbsp;17:00</div></div>
		<div class="process_column"><div class="large_number">2500 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div></div>
</html>


/%
|контингент|1-9 класс|
|ФИО преподавателя|Ловская Екатерина Владимировна|
|id|31|
|видимое в адресной строке название|geology|
%/
<html>
	<div class="course_description">
		<p>Классический кружок с&nbsp;изучением всего, что растёт и&nbsp;копошится как на&nbsp;школьном дворе, так и&nbsp;в&nbsp;ближайших парках (а&nbsp;для продолжающих — и&nbsp;в&nbsp;Подмосковье). Вы научитесь пользоваться определителями грибов, растений и&nbsp;животных, смотреть в&nbsp;бинокль и&nbsp;микроскоп, поработаете с&nbsp;коллекциями насекомых и&nbsp;гербарием, побываете на&nbsp;экскурсиях в&nbsp;Зоопарке и биологических музеях Москвы, поучаствуете в&nbsp;учётах птиц и&nbsp;полевых биологических олимпиадах для школьников. 
		</p>
		<p>Мы предлагаем родителям (или другим родственникам) присоединиться к семейной группе кружка по воскресеньям и побольше узнать о том, что увлекает вашего ребенка. Экскурсии и выездные занятия будут совместными, а во время лабораторных занятий у детей взрослые смогут послушать интересные лекции.
		</p>
		<div class="img_text half"><img src="images_others/32-2.jpg">Самые увлеченные юные натуралисты присоединяются к биологическим практикам на Черном море</div>
		<div class="img_text half"><img src="images_others/32-4.jpg">Один из самых крупных пауков в наших широтах</div>
	</div>
	
	<div class="wide margin-top">
	<div class="half">
		<img class="teacher_img small_half" src="images_teachers/tiunova.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Тиунова Мария Владимировна</p>
		<p>Выпускница кафедры зоологии беспозвоночных МГУ (2003) и факультета педагогического образования МГУ (2003). Преподаватель биологии в школе «Интеллектуал» с 2003 г. Принимала участие в организации и проведении Летней Экологической Школы и Школьной Биологической Олимпиады МГУ.</p>
	</div>
	</div>
	<div class="half">	
		<img class="teacher_img small_half" src="images_teachers/khrushchova.jpg">
		<div class="teacher_text small_half"><p class="name bordered">Хрущова Анастасия Михайловна</p>
		<p>Выпускница кафедры зоологии позвоночных биологического факультета МГУ им. М. В. Ломоносова (2001), имеет диплом Экоцентра МГУ по специальности «экология, рациональное природопользование и охрана природы» (2002). Кандидат биологических наук (специальность «зоология»). <a href="http://sch-int.ru/s_hrushova">Работает в школе «Интеллектуал» с 2004 г.</a></p>
	</div>
	</div>
	</div>
<div class="process_description_2">
<h2>Группы</h2>
<table class="groups">
	<tr class="group_number">
		<td><span class="num">1</span></td>
		<td><span class="num">2</span></td>
		<td><span class="num">3</span></td>
		<td><span class="num">4</span></td>
	</tr>
	<tr class="group_age">
		<td>1–2 класс</td>
		<td>2–3 класс</td>
		<td>4–6 класс</td>
		<td>семейная группа</td>
	</tr>
	<tr class="group_frequency">
		<td>1 раз в неделю,<br>по понедельникам в 16:00</td>
		<td>1 раз в неделю,<br>по вторникам в 17:30</td>
		<td>1 раз в неделю,<br>по четвергам в 16:30</td>
		<td>1 раз в неделю,<br>по воскресеньям в 11:00</td>
	</tr>
	<tr class="group_duration">
		<td>90 минут</td>
		<td>90 минут</td>
		<td>90 минут</td>
		<td>90-120 минут</td>
	</tr>
	<tr class="group_teacher">
		<td>А. Е. Доброчаев</td>
		<td>М. В. Тиунова <br>и А. Е. Доброчаев</td>
		<td>М. В. Тиунова <br>и А. Е. Доброчаев</td>
		<td>М. В. Тиунова,<br>Н. А. Тиунов<br>и А. Д. Бакумова</td>
	</tr>
	<tr class="group_price">
		<td><span class="extrabold">2500 &#8381;</span><br>за 4 занятия</td>
		<td><span class="extrabold">2500 &#8381;</span><br>за 4 занятия</td>
		<td><span class="extrabold">2500 &#8381;</span><br>за 4 занятия</td>
		<td><span class="extrabold">2500 &#8381;</span><br>за 4 занятия<br>(для 1 человека, взрослого или&nbsp;ребенка)</td>
	</tr>
</table>
<div class="enter_block_2">
	<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter_2">Записаться</div></a>
	<div class="enter_text">Оставьте свои контакты,<br>и мы вам перезвоним!  
	</div>

</html>
/%
|контингент|1-11 класс; взрослые|
|ФИО преподавателя|Тиунова Мария Владимировна, Хрущова Анастасия Михайловна|
|id|32|
|видимое в адресной строке название|young_naturalist|
%/
<html>
<div class="course_description wide">
	<p>Кружок для учеников 5–6 классов, у&nbsp;которых еще не&nbsp;началась школьная химия, но&nbsp;уже проснулся интерес к&nbsp;экспериментам. Что можно найти в&nbsp;химической лаборатории? Какие волшебные превращения могут случиться с&nbsp;веществом? Как вырастить кристалл и&nbsp;сделать свечу? Почему работает мыло, и&nbsp;чем лучше отстирывать пятна от&nbsp;вишни с&nbsp;коленок, пока мама не&nbsp;увидела? 
	</p>
	<p>На&nbsp;занятиях ребенок учится ставить задачи, делать выводы и&nbsp;оценивать полученные результаты. Опыт самостоятельной практической работы поможет в&nbsp;развитии критического мышления, исследовательской фантазии, навыка анализа и&nbsp;классификации полученной информации, а&nbsp;также просто станет хорошей эмпирической базой в&nbsp;последующем освоении школьного курса химии.
	</p>
</div>
<div class="wide margin-top">
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Татьяна Викторовна Игнатова</p>
		<p>Окончила химический факультет МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова. Дополнительная квалификация: преподаватель, педагогический факультет МГУ. Преподает химию в школе «Интеллектуал» у&nbsp;7, 8, 9, и&nbsp;10&nbsp;классов.</p>
	</div>
	<img class="teacher_img small_half" src="images_teachers/ignatova.jpg">
</div>
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Даниил Игоревич Провоторов </p>
		<p>Студент химического факультета МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова. Работал в ЛШИО, работает в школе с 2016 г.</p>
	</div>
</div>

	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>

<div class="process_block">
	<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
	<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по четвергам в&nbsp;17:30<br></div></div>
	<div class="process_column"><div class="large_number">2500 &#8381;</div><div class="light_words">за 4 занятия</div></div>
</div>
</div>
</html>

/%
|контингент|5-6 класс|
|ФИО преподавателя|Игнатова Татьяна Викторовна|
|id|46|
|видимое в адресной строке название|chemistry|
%/
<html>
<div class="course_description half">
		<ul><li>Почему лингвисты не&nbsp;могут посчитать, сколько в&nbsp;мире языков?</li><li>Откуда берутся исключения из&nbsp;правил?</li><li>Как объясниться с&nbsp;праиндоевропейцем?</li><li>Зачем нам нужна орфография?</li><li>О&nbsp;чем нельзя договориться с&nbsp;кошкой?</li><li>Какой язык легче всего выучить?</li></ul><p>Ответы на&nbsp;эти и&nbsp;многие другие вопросы вы найдете на&nbsp;занятиях по&nbsp;языкознанию! Мы будем сравнивать различные языки, составлять их&nbsp;древо родства, восстанавливать древние слова, переводить с&nbsp;латинского, греческого, китайского, эсперанто и&nbsp;других языков. В&nbsp;рамках курса каждый сможет провести собственное исследование, например, найти связь между звездами и&nbsp;гвоздями, шубой и&nbsp;юбкой, посохом и&nbsp;лосем.
		</p>
	</div>
	
<div class="half">	
	<div class="teacher_text small_half"><p class="name bordered">Татьяна Анатольевна Баранова</p>
			<p>Окончила филологический факультет МПГУ с&nbsp;дополнительной специальностью «История». Выпускница школы «Интеллектуал». Работает в&nbsp;школе с&nbsp;2010&nbsp;года.<br><a href="http://sch-int.ru/node/167">Полный список заслуг и&nbsp;публикаций</a></p>
		</div>
		<img class="teacher_img small_half" src="images_teachers/baranova.jpg">
	</div>	

<div class="process_description closed">
	<div class="enter_block">
		<a><div class="enter">Набор закрыт</div></a>
		<div class="process_text">Ждем вас на других кружках!
		</div>
		</div>
<div class="process_block">
		<div class="process_column"><div class="large_number">90</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в неделю</div><div class="light_words">по субботам в&nbsp;11:00</div></div>
		<div class="process_column"><div class="large_number">5000 &#8381;</div><div class="light_words">за 4 занятия</div></div>
	</div></div>
</html>

/%
|контингент|4-6 класс|
|ФИО преподавателя|Баранова Татьяна Анатольевна|
|id|18|
|видимое в адресной строке название|linguistics|
%/
<html>
	<div class="course_description half">
<p>Япония&nbsp;—&nbsp;загадочная и&nbsp;далекая страна с&nbsp;особенным этикетом и&nbsp;сложным языком. 
На&nbsp;кружке школьники познакомятся с&nbsp;культурой и&nbsp;историей Японии, с&nbsp;ее географией, особенностями экономики, а&nbsp;также с&nbsp;ключевыми городами и&nbsp;современным устройством страны.</p>
		<p>Курс включает в&nbsp;себя основы японского языка: к&nbsp;концу курса ребята смогут представиться, рассказать о&nbsp;себе, научаться работать со&nbsp;словарем и&nbsp;разбираться в&nbsp;японской письменности.</p>
</div>

	<div class="half">	
		<div class="teacher_text small_half"><p class="name bordered">Александра Сергеевна Стегниенко</p>
		<p>Окончила географический факультет МГУ им.&nbsp;М.&nbsp;В.&nbsp;Ломоносова, кафедру социально-экономической географии зарубежных стран. Защитила магистерскую диссертацию по&nbsp;теме «Туристские образы префектур Японии». Преподаватель географии в&nbsp;школе «Интеллектуал».
<br><a href="http://sch-int.ru/s_stegnienko">Полный список заслуг и публикаций</a></p>
		</div>
		<img class="teacher_img small_half" src="images_teachers/stegnienko.jpg">
	</div>
<div class="course_description wrap_colored" style="margin-bottom: 2em">
<div class="first_lesson"><p>Ближайший семинар состоится 9&nbsp;апреля с&nbsp;11:30 до&nbsp;14:00.</p></div>
<p>Тема занятия: «Воины Японии»</p>
<p style="margin-bottom: 2em">Поговорим о&nbsp;самураях, кодексе Бусидо, эпохе воюющих провинций, японских боевых искусствах, столицах сёгунатов.</p>
</div>		
	</div>
	<div class="process_description">
	
		<div class="enter_block">
			<a href="https://goo.gl/forms/VATsOIeJ8yNtqauw2"><div class="enter">Записаться</div></a>
			<div class="process_text">Оставьте свои контакты, и&nbsp;мы вам перезвоним!
			</div>
		</div>
<div class="process_block">
		<div class="process_column"><div class="large_number">150</div><div class="bold_words">минут</div><div class="light_words">идет занятие</div></div>
		<div class="process_column"><div class="large_number">1</div><div class="bold_words">раз<br>в месяц</div></div>
		<div class="process_column"><div class="large_number">1000 &#8381;</div><div class="light_words">за 1 занятие</div></div>
	</div></div>
</html>
/%
|контингент|7-11 класс|
|ФИО преподавателя|Стегниенко Александра Сергеевна|
|id|57|
|видимое в адресной строке название|japan|
%/
<html>
<div class="courses">
	<div class="coursesFilterPanelWrap"><div class="coursesFilterPanel">...</div></div>
	<br>
	<div class="coursesContainerWrap"><div class="coursesContainer">

	<span>
		<span class="OGE exams"><div class="course">
			<div class="h2">Подготовка<br>к языковым экзаменам</div>
			<div class="oge_course" tiddlylink="English for Exams (Cambridge, TOEFL, IELTS)" onclick="onClickTiddlerLink(event)"><div class="ogeTitle"><img src="images_others/flag-02.png"><span>Cambridge, TOEFL, IELTS</span></div>
			<div class="courseTeacher">А.&nbsp;О.&nbsp;Каменев</div></div>
			<div class="oge_course" tiddlylink="Подготовка к DELF A2" onclick="onClickTiddlerLink(event)"><div class="ogeTitle"><img src="images_others/flag-04.png"><span>DELF A2</span></div>
			<div class="courseTeacher">Д.&nbsp;В.&nbsp;Архипова</div></div>
			<div class="oge_course" tiddlylink="Подготовка к DELE A2 и В1" onclick="onClickTiddlerLink(event)"><div class="ogeTitle"><img src="images_others/flag-03.png"><span>DELE A2 и В1</span></div>
			<div class="courseTeacher">Ж.&nbsp;М.&nbsp;Иванова де Мендоса</div></div></div>
		</span>
	</span>
</div></div></div>
</html>
<!--{{{-->
<div class='toolbar' role='navigation' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'>
	<div macro='courseSubTitle'></div>
</div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!-- <div class='acquireData' macro='showAcquisionDetails'>
	!-- кнопка "записаться" --
	!-- подробности про длительность курса --
</div>-->
<!-- others in category widget -->
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' role='navigation' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'>
	<div macro='courseSubTitle'></div>
</div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!-- <div class='acquireData' macro='showAcquisionDetails'>
	!-- кнопка "записаться" --
	!-- подробности про длительность курса --
</div>-->
<!-- others in category widget -->
<div class='tagClear'></div>
<!--}}}-->