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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

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

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

----
Also see [[AdvancedOptions]]
<<importTiddlers>>
*Define organisational structure
**<<tiddler Organisation>>
* Match organisational roles to people
**<<tiddler People>>
<<accordion>>

<<slider chkPeopleSlider [[People]] [[Match organisational roles to people]] [[toggle view of diagram, add peoples' names]]>>
<<slider chkOrgSlider [[Organisation]] [[Define organisational structure]] [view a diagram add details]]>>
All the Archetype Titles are as before Patrick’s latest file (attached)

I am very willing to sit with you while we reconcile this

The ones you are using are . . . . Mine - updated

Strays:                                      Stray Lamb

Excessive Independence:           Baronies

Untested Assumptions:              Fantasists         (I do recall something about Fantasy Culture but not used it)

Shockwaves:                             The Shakes

Overlapping Responsibility:         Matrix               (I have omitted the “The”)           

Strategic Silos:                          Silo Decisions

Lack of Strategic Learning          Goldfish
<!--{{{-->
<!--TOOL BAR-->
<div macro="hideWhen readOnly">
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='tagged' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
</div>
<!--PRINT FOR PATOLOGIES - ALL TAGGED P-->
<div macro="showWhenTagged P">
<div class='toolbar'><span macro='tiddler PrintPathology'></span>
</div></div>
<div class='title'><span macro='view title'></span></div>
<!--RATINGS FOR PATOLOGIES - ALL TAGGED P-->
<div macro="showWhenTagged P" id="ratingToolBar"><div class='toolbar'>Add to Pathology Checklist <span macro="rating =here RatingSummary" ></span>
</div></div>
<div class='viewer' macro='view text wikified'></div>
<div macro="showWhenTagged Q">
<div class='Qtext' macro='tiddler {{tiddler.title+" Text"}}'></div>
<div class='Qscore' macro ='formTiddler ScoreTemplate'></div>
<div class='Qhelp' macro='tiddler {{tiddler.title+" Help"}}'></div>
<div class='Qnav' macro='tiddler {{tiddler.title+" Nav"}}'></div>
</div>
<!--QUESTIONS - ALL TAGGED Q-->
<div macro="showWhenTagged Q">
<div class='tagged'>Secondary: <span macro="view secondary wikified"></span></div>
<div class ='tagged'> Primary: <span macro="view primary wikified"></span></div>
</div>
<!--}}}-->
change organisation "manager" to "you"
[[Customising the Questionnaire]]
Amendments as per [[20 August 2010]].
For future: the diagram is produced in SVG so that it can be stored as data, thus removing the need for external image files.  see [[people_director.svg]]
-svg plugin needed.
-deply when on tiddlyweb


<<tiddler CloseOtherTiddlers>>
<<tiddler CloseOtherTiddlers>>
removed [[this cell script]]

config.macros.rating = {
  icon: "★",
  tooltip: "rate pathology ",
  ratings: ["not relevant","relevant", "highly relevant"],
  defaultStyle: ["color:#FFD9D9;text-decoration:none;background:none;"],
  colorOn: "orange",
  colorOff: "#CCC",
<!--PRINT FOR PATOLOGIES - ALL TAGGED P-->
<div macro="showWhenTagged P">
<div class='toolbar'><span macro='tiddler PrintPathology'></span>
</div></div>
The ~SCiO Organisational Maturity Model flags up possible archetypes that could lie behind the your observations of your organisation.

An archetype in the context <<tiddler OmmVersion>> can be seen as a frequently occurring state exhibited by an organisation. Brought about by systemic chains or circles of cause and effect, archetypal organisational behaviors are unconscious to the organisation. The organisation behaves as as though it is not aware that it could be suffering from remediable archetypal problems by changing its systemic structure.

The archetypes are suggested as 'Primary' or 'Secondary', the primary ones being generally more common than secondary ones.  As they are systemic in nature,  an archetype can be flagged by more than one aspect of maturity. It may show up in Operations - Capacity and Co-ordination - Capacity for example.

As you investigate Organisational Maturity from [[the results|Results]], you can asses these archetypes and rate them for relevance to your organisation (see [[How to rate archetypes]])
The Director version of the [[SCiO Organisational Maturity Model|ommhome.html]] (OMM Director) is designed specifically for directors and senior managers. The questionnaire section takes into account the perspective from which they  observe the activities in their organisation.
! Privacy
<<tiddler OmmVersion>> does not use any server-side technology. It is a [[single page application|http://en.wikipedia.org/wiki/Single-page_application]] so all the data you input is private to you: no information is transferred from your computer to any external source.

An enterprise version of OMM (under development) polls multiple perspectives of an organisation, and aggregates the results to provide a more complete picture. For more details please contact ~SCiO through the [[webpage|http://scio.org.uk/]].
!Customising the Questionnaire
The option  to customise the questionnaire – by entering the names of the people and departments in your organisation – is intended to  make it  easier to accurately relate  the questionnaire  to your specific organisation. Its relationship with partners, customers, suppliers, and the operating environment are also examined. This can be easier with a reminder.

If entered, custom entries will appear in the questionnaire in brackets:
*Within //your organisation// (‘The ABC Company’) to what extent …  
If you do not to customise, you will see something like this:
*Within //your organisation// to what extent  …
!Next
You have two options:
!![[Customise Questionnaire »|Customising the Questionnaire]]
!![[Start »|Q1]]
<<tiddler linkVisited>>
<<tiddler ShowIntroMenu>>
/***
|''Name:''|AccordionMenuPlugin|
|''Description:''|Turn an unordered list into an accordion style menu|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#AccordionMenuPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.0|
|''Date:''|03/11/2007|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.5|
!!Usage:
* put {{{<<accordion>>}}} on the line after your unordered list

!!Customizing:
* customize the css via the shadow tiddler StyleSheetAccordionMenuPlugin
* or give the list a custom class by passing the classes as parameters to the macro.
** Eg: {{{<<accordion ClassName1 ClassName2>>}}}

!!Examples:
*[[AccordionMenuPluginDemo]]

***/
// /%
//!BEGIN-PLUGIN-CODE
config.macros.accordion={
	dropchar : " \u00BB",
	handler : function(place,macroName,params,wikifier,paramString,tiddler){
		list = findRelated(place.lastChild,"UL","tagName","previousSibling");
		if (!list)
			return;
		addClass(list,"accordion");
		if (params.length){
			addClass(list,paramString);
		}
		this.fixLinks(list.childNodes);		
	},

	fixLinks : function(els){
		for (var i=0; i<els.length; i++){
			if(els[i].tagName.toLowerCase()=="li"){
				var link = findRelated(els[i].firstChild,"A","tagName","nextSibling");
				if(!link){
					var ih = els[i].firstChild.data;
					els[i].removeChild(els[i].firstChild);
					link = createTiddlyElement(null,"a",null,null,ih+this.dropchar,{href:"javascript:;"});
					els[i].insertBefore(link,els[i].firstChild);
				}
				else{
					link.firstChild.data = link.firstChild.data + this.dropchar;
					removeClass(link,"tiddlyLinkNonExisting");
				}
				link.onclick = this.show;
			}
		}
	},
	
	show : function(e){
		var list = this.parentNode.parentNode;
		var els = list.childNodes;
		for (var i=0; i<els.length; i++){
			removeClass(els[i],"accordion-active");
		}
		addClass(this.parentNode,"accordion-active");
	}	
};

config.shadowTiddlers["StyleSheetAccordionMenuPlugin"] = "/*{{{*/\n"+
	 "ul.accordion, ul.accordion li, ul.accordion li ul  {margin:0; padding:0; list-style-type:none;text-align:left;}\n"+
	 "ul.accordion li ul {display:none;}\n"+
	 "ul.accordion li.accordion-active ul {display:block;}\n"+
	 "\n"+
	 "ul.accordion li.accordion-active a {cursor:default;}\n"+
	 "ul.accordion li.accordion-active ul li a{cursor:pointer;}\n"+
	 "\n"+
	 "ul.accordion a {display:block; padding:0.5em;}\n"+
	 "ul.accordion li a.tiddlyLink, ul.accordion li a.tiddlyLinkNonExisting, ul.accordion li a {font-weight:bold;}\n"+
	 "ul.accordion li a {background:#0066aa; color:#FFF; border-bottom:1px solid #fff;}\n"+
	 "ul.accordion li.accordion-active a, ul.accordion li a:hover {background:#00558F;color:#FFF;}\n"+
	 "\n"+
	 "ul.accordion li ul li{display:inline-block;overflow:hidden;}\n"+
	 "ul.accordion li.accordion-active ul li {background:#eff3fa; color:#000; padding:0em;}\n"+
	 "ul.accordion li.accordion-active ul li div {padding:1em 1.5em; background:#eff3fa;}\n"+
	 "ul.accordion li.accordion-active ul a{background:#eff3fa; color:#000; padding:0.5em 0.5em 0.5em 1.0em;border:none;}\n"+
	 "ul.accordion li.accordion-active ul a:hover {background:#e0e8f5; color:#000;}\n" +
	 "/*}}}*/";
 
 store.addNotification("StyleSheetAccordionMenuPlugin",refreshStyles);
 //!END-PLUGIN-CODE
// %/
<<search>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">> [[more]]
Contact:  [[r.a.hough@googlemail.com|mailto:r.a.hough@googlemail.com]] 

!Personal Thanks
OMM would not have been possible by kind help from the ~TiddlyWiki community google group. In particular [[Eric Shulman|http://about.unamesa.org/Eric+Shulman]] has helped me to solve most of the technical problems I have come up against. Thanks Eric.
<script>
(function($){
	$("td:contains(2), td:contains(*) ").addClass('red');
})(jQuery); 
</script>
!Frequency
Very common
!Also Known As
Silo Management , Excessive Independence
!System Structure
The Baronies archetype occurs when one fractal level is made up of a set of sub-systems that are so viable in their own right and that don't see the synergy provided by the next level of the organisation of which they are a part.  In the tiered structure of autonomy that is a fractal organisation, baronies are a plateau.  Not recognising that what they get back from being a member of a larger whole is worth any constraint put upon them, barons resent and resist any curb to their autonomy.
!Symptoms
Baronies are difficult to create synergy from, they are immensely resistant to change other than in their own narrow interest, they are fiercely competitive for resources, can engage in fratricidal competition and are usually unwilling to share learning.  
!Solutions
A radical “solution” is to restructure to break up the baronies power base.  This can do more harm than good, since the strength of a Barony comes from the fact that it is an effective organisational unit.
A more creative approach is to re-examine the business case for the potential synergies that can be found at the next level up by getting baronies to work more for the whole system.  If these synergies are real, then a compelling business case can be made and the Barons can be convinced.  If not then the Barons are right to optimise their particular domain.  Many management teams are weak at understanding and building synergies.  Synergy is an emergent property of the system.
!Links
!Frequency
Very Common
!Also Known As
n/a
!System Structure
This archetype is an imbalance in decision making prioritising efficiency over effectiveness.  Good decision making balances efficiency (current operations) and effectiveness (the needs of the environment now and in the future).  
Organisations tend to be biased either towards present operations or future demands.  Bean counter management tries to optimise the current operations by the quickest and easiest method – cutting costs.  This sacrifices the organisation’s ability to face future challenges.  
!Symptoms
An obsessive fixation on efficiency and cost cutting is the most common symptom.  
Bean counter management teams see the future as just an extension of the past and change as “more or less of what they are currently doing".  So they can do growth, but it tends to be just an expansion of current operations rather than development into new areas, new markets or new technologies.  
Frequently bean counter strategies are framed in expansion or cuts expressed as large whole numbers, since despite the attention to detailed costing, they lack the tools to deal well with future uncertainties.  
!Solutions 
Rebalance management decision making towards better capability to understand the future environment.  This means strengthening the intelligence function and its connections into the strategic decision process.   
!Links
[[Death Spiral]] , [[Control Dilemma]] and [[Bricks without Straw]]
!Frequency
So common it’s proverbial
!Also Known As
Lack of Resources
!System Structure
Systemically what causes this is a structural failure in the decision process.  It is the separation of decisions about performance from decisions about resources.  Unless these two elements are taken together, then the "Bricks without Straw" archetype is almost inevitable.  Connecting resourcing to performance is easy to say, but less easy to do, because in many organisations, there are structural barriers in the way.  There are often barriers between those parts of management that decide on performance objectives and those that decide on resourcing and structural boundaries between the various parts of the organisation providing resources
!Symptoms
What we see with this archetype is managers willing and demanding outcomes and often promising outcomes, but without willing the resources needed to deliver those outcomes.  The consequences are obvious.  Without adequate resources, the organisation fails to deliver, but often staff come under enormous pressure to deliver the impossible.  Despite their efforts and the exhortations of managers however, the desired performance is not achieved and there is generally much embarrassment and the inevitable game of attributing blame.
!Solutions
The solution is to ensure the integrity of the decision process and specifically to ensure that the negotiating of performance and resourcing is conducted together as part of the same package.
!Links
[[Bean Counters]] and [[Castles in the Air]] are both archetypes of imbalances in the decision process which can trigger the [[Bricks without Straw]] archetype
!What it is
Ever been in a situation when things are really going wrong, and all you want to do is curl up, try to focus and take stock, make sense of what is going on?  You were in the bunker.  In times of crisis, many management teams ‘hide in the management bunker', isolating themselves from the outside world (and even from the rest of their organisation).  
These are not just emotionally based panic reactions to the crisis, but rather that when strategic risks hit, individuals and most management teams are woefully unprepared for them.
!Systemic Effects
Many managers have risen to the top because of their ability to ‘fire-fight’.  Fire-fighting managers are adept at dealing with operational risks by focusing on and actioning remedies, rather than seeking more information about the problem; but are often less adept at dealing with the strategic risks, when the organisation is in deep trouble, that impact at their own level.  Of course; these crises are the ones that have the capacity to seriously damage or destroy the organisation.  This reaction is so often extremely serious.  Just when the team need all the information that they can get about the crisis they face, they shut down communications with the world and deny themselves access to the very information that could save them.  
These same behaviour patterns emerge again and again.  Effectively what tends to happen is that the strategic function cuts communications with both the organisation and the environment.  In the bunker, management teams generally try to make sense of the situation and construct a model to deal with the crisis and save the organisation.  Dangerously they try to squeeze the crisis into their existing models, jumping to conclusions about solutions, without evidence, .and try to handle the crisis by controlling those internal things which they do know how to control (cash flow crisis = switch lights off or use less paper, or equally trivial ‘solutions’).  
This avoids looking at the risk and addressing it, and is doomed to failure and is often fatal because by its very nature, a strategic risk crisis is usually something you haven't handled before.  Better, is to try to work out what is going on and build a new model which is theoretically the right approach.  Under pressure and overwhelmed by the complexity they face, and with too much information to assimilate, this approach is also likely to fail.  
!Possible Ways Forward
One possible solution is to anticipate and practice (as with emergency teams).  A necessary pre-cursor is to undertake strategic risk assessments which model the sorts of things that are (or might) happen so you are prepared with the sorts of responses that are appropriate and can use management simulations to train the management team in behaving appropriately in crises.
 
!Frequency
Uncommon
!Also Known As
n/a
!System Structure
This archetype is an imbalance in decision making prioritising development for the future over delivery now.  Good decision making balances efficiency (current operations) and effectiveness (the needs of the environment now and in the future).  
Organisations tend to be biased either towards present operations or future demands.  Castle in the air management teams neglect current demands from customers in favour of new markets, new ideas and new developments.  
!Symptoms
There are two common results.  First, without a good grasp of the organisation’s strengths and weaknesses, strategies chosen are often impractical and fail.  Second, operations tend to be neglected, under-managed, under-resourced and are often chaotic.  The consequence of weak operations is that current customers are often neglected resulting in quality and delivery problems and cash-flow issues.  
!Solutions 
Rebalance the management team and management decision making.  Specifically, by strengthening the performance management regime to give a better grasp of strengths and weaknesses and prevent over-optimistic and impractical strategies being pursued and by strengthening operations management to improve delivery to existing customers.  
!Links
[[Shockwaves]]
/%
!info
|Name|CloseOtherTiddlers|
|Source|http://www.TiddlyTools.com/#CloseOtherTiddlers|
|Version|2.0.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|close all other tiddlers when a specific tiddler is viewed|
Usage:
<<<
{{{
<<tiddler CloseOtherTiddlers>>
}}}
<<<
!end
%/<<tiddler {{

<script>
here=story.findContainingTiddler(place); 
var link=here.getAttribute("tiddler");
jQuery("a[tiddlylink="+link+"]").removeClass("ommOrange");
</script>
	var out='CloseOtherTiddlers##info';
	if (!tiddler||tiddler.title!='CloseOtherTiddlers') {
		var here=story.findContainingTiddler(place);
		story.closeAllTiddlers(here?here.getAttribute("tiddler"):null);
		out='';
	}
out;}}>>
<script label="Close">
       var here=story.findContainingTiddler(place);
    
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
<<tiddler MaturityMatrixPathologyScript>>
<<tiddler MaturityMatrixPathologyScript>>
<<tiddler MaturityMatrixPathologyScript>>
<<tiddler MaturityMatrixPathologyScript>>
Type the text for 'Co-ordination: Capacity'
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

HeaderTop:#EFFFFD

FooterBottom:#D1DFDD
StrapLine:#454E4F
OmmTitle:#3B3F3F

OmmOrange:#FF6600;

LogoBlue:#303098
LogoRed:#C10808
VersionGreen:#3A6B00

RagRed: #FF0700
RagAmber: #FFCC00
RagGreen: #21A113

ChileRed: #C55D5A
<<slider chkSldr SideBarOptions [[Admin »]] more>>
!What it is
Operational managers with direct contact with external (and/or internal) customers are up to date and dealing with changes and developments in the organisation's environment at their own level and on an ongoing basis.  Senior managers are remote from these changes and developments as they take place (they are dealing with their own issues at their own senior level); and so they feel compelled to get involved in operational issues, to redress the balance and in doing so impact the effectiveness of their own operational managers. 
!Systemic Effects
This is one of the three most commonly encountered pathologies, and the most easily recognised,
Senior managers are charged with ensuring that the operation or department they manage delivers the performance the organisation requires.  This will involve issues like the increased levels of complexity in the environment: demands from customers to deliver improved levels of service: better quality: shorter lead times: higher volumes: better customer service etc.  As operations adapt, and change to try to match these increased expectations senior managers fear a loss of control of the situation, and press their sub-systems for information and reports, bombarding them with instructions, advice and initiatives.  
The sub-systems (operational departments) now face a double challenge.  Not only must they respond to the needs of their environment, but also to the increased demands from management.  So their ability to deal with real problems is actually undermined by the need to cope with demands from management. 
Senior management may also perceive there to be co-ordination issues between their people, or having received a request for help (which they may interpret as an admission of failure), they try to help (by taking over), so depriving their people of the autonomy they need to solve their own problems.  This can result in poorly informed day-to-day decisions and bottlenecks.  
The consequences of this are that, at the same time as inhibiting the organisation’s capacity to respond to new problems at an operational level, attempts to micro-manage also undermine senior manager’s ability to focus on the strategic issues that are their legitimate area of concern.  The organisation suffers at two levels often resulting in a spiral of failure: operations undermined by micro-management are seen to be failing, thus prompting ever more micro-management, and at the same time the diversion of senior managers from strategy and into micro management leaves the organisation unprepared for the next wave of change in the operating environment - which creates precisely the sort of failure that initiates the Control Dilemma in the first place.
Like many of the pathological archetypes, the control dilemma is often perceived as being an issue of personality.  In the control dilemma, managers are seen as acting like control freaks. But the control dilemma is a systemic problem; quite "normal" people get turned into control freaks when they are in its grip.  Generally, the solution lies not in personality, but in system design.  
!Possible Ways Forward
Solutions to the "Control Dilemma" aim to redress the balance between the manager’s and senior manager's contribution, perhaps by establishing a proper system of monitoring to support the performance reporting loop so that both operational managers and senior managers are better informed.  
As described above, one driver for the control dilemma is insufficient attention to the external environment and the future and hence remoteness from environmental changes. A focus on strategy can be very helpful for senior managers in this situation. 
A first step might be to agree and provide the necessary information to management, most importantly flagging up any unusual occurrence that requires their help.  In exchange senior managers might acknowledge that flagging up difficulties does not mean that things are failing but that they need to be kept in the picture.  
Peer to peer co-ordination mechanisms might also help, supported by an understanding that senior management are there to moderate if required.  
!Questions and Archetypes
OMM questions and pathologies developed by the ~SCiO OMM special interest group: Steve Hales, Alex Hough, Patrick Hoverstadt, Dave Mettam and Jane Searles.
!Webdesign
Alex Hough
The ~SCiO OMM is powered by [[TiddlyWiki|http://tiddlywiki.com]]
!Paper Version
A paper version of OMM Manager, maintained by Dave Mettam is also available [[here|http://scio.org.uk/OMM]] as a pdf.
!Feedback
We would appreciate your thoughts and feedback on the ~SCiO Organisational Maturity Model.
This feature is currently under development
{{Qhelp{
Here you can add organisation specific details which will be used to tailor the questionnaire. You can skip this section and start the questionnaire if you like.}}}
{{centeredTable noBorder{
!Match organisational roles to people
<<tiddler People>>
!Define organisational structure
<<tiddler Organisation>>

!![[First Question »|Q1]]
<data>{"OperationsManagers":"","Organisation":"","Operations":"","Partners":"","Customers":"","ExternalOperationalEnvironment":"","Suppliers":""}</data>
<<tiddler linkVisited>>

/***
|''Name:''|DataTiddlerPlugin|
|''Version:''|1.0.6 (2006-08-26)|
|''Source:''|http://tiddlywiki.abego-software.de/#DataTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license]]|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; InternetExplorer 6.0|
!Description
Enhance your tiddlers with structured data (such as strings, booleans, numbers, or even arrays and compound objects) that can be easily accessed and modified through named fields (in JavaScript code).

Such tiddler data can be used in various applications. E.g. you may create tables that collect data from various tiddlers. 

''//Example: "Table with all December Expenses"//''
{{{
<<forEachTiddler
    where
        'tiddler.tags.contains("expense") && tiddler.data("month") == "Dec"'
    write
        '"|[["+tiddler.title+"]]|"+tiddler.data("descr")+"| "+tiddler.data("amount")+"|\n"'
>>
}}}
//(This assumes that expenses are stored in tiddlers tagged with "expense".)//
<<forEachTiddler
    where
        'tiddler.tags.contains("expense") && tiddler.data("month") == "Dec"'
    write
        '"|[["+tiddler.title+"]]|"+tiddler.data("descr")+"| "+tiddler.data("amount")+"|\n"'
>>
For other examples see DataTiddlerExamples.




''Access and Modify Tiddler Data''

You can "attach" data to every tiddler by assigning a JavaScript value (such as a string, boolean, number, or even arrays and compound objects) to named fields. 

These values can be accessed and modified through the following Tiddler methods:
|!Method|!Example|!Description|
|{{{data(field)}}}|{{{t.data("age")}}}|Returns the value of the given data field of the tiddler. When no such field is defined or its value is undefined {{{undefined}}} is returned.|
|{{{data(field,defaultValue)}}}|{{{t.data("isVIP",false)}}}|Returns the value of the given data field of the tiddler. When no such field is defined or its value is undefined the defaultValue is returned.|
|{{{data()}}}|{{{t.data()}}}|Returns the data object of the tiddler, with a property for every field. The properties of the returned data object may only be read and not be modified. To modify the data use DataTiddler.setData(...) or the corresponding Tiddler method.|
|{{{setData(field,value)}}}|{{{t.setData("age",42)}}}|Sets the value of the given data field of the tiddler to the value. When the value is {{{undefined}}} the field is removed.|
|{{{setData(field,value,defaultValue)}}}|{{{t.setData("isVIP",flag,false)}}}|Sets the value of the given data field of the tiddler to the value. When the value is equal to the defaultValue no value is set (and the field is removed).|

Alternatively you may use the following functions to access and modify the data. In this case the tiddler argument is either a tiddler or the name of a tiddler.
|!Method|!Description|
|{{{DataTiddler.getData(tiddler,field)}}}|Returns the value of the given data field of the tiddler. When no such field is defined or its value is undefined {{{undefined}}} is returned.|
|{{{DataTiddler.getData(tiddler,field,defaultValue)}}}|Returns the value of the given data field of the tiddler. When no such field is defined or its value is undefined the defaultValue is returned.|
|{{{DataTiddler.getDataObject(tiddler)}}}|Returns the data object of the tiddler, with a property for every field. The properties of the returned data object may only be read and not be modified. To modify the data use DataTiddler.setData(...) or the corresponding Tiddler method.|
|{{{DataTiddler.setData(tiddler,field,value)}}}|Sets the value of the given data field of the tiddler to the value. When the value is {{{undefined}}} the field is removed.|
|{{{DataTiddler.setData(tiddler,field,value,defaultValue)}}}|Sets the value of the given data field of the tiddler to the value. When the value is equal to the defaultValue no value is set (and the field is removed).|
//(For details on the various functions see the detailed comments in the source code.)//


''Data Representation in a Tiddler''

The data of a tiddler is stored as plain text in the tiddler's content/text, inside a "data" section that is framed by a {{{<data>...</data>}}} block. Inside the data section the information is stored in the [[JSON format|http://www.crockford.com/JSON/index.html]]. 

//''Data Section Example:''//
{{{
<data>{"isVIP":true,"user":"John Brown","age":34}</data>
}}}

The data section is not displayed when viewing the tiddler (see also "The showData Macro").

Beside the data section a tiddler may have all kind of other content.

Typically you will not access the data section text directly but use the methods given above. Nevertheless you may retrieve the text of the data section's content through the {{{DataTiddler.getDataText(tiddler)}}} function.


''Saving Changes''

The "setData" methods respect the "ForceMinorUpdate" and "AutoSave" configuration values. I.e. when "ForceMinorUpdate" is true changing a value using setData will not affect the "modifier" and "modified" attributes. With "AutoSave" set to true every setData will directly save the changes after a setData.


''Notifications''

No notifications are sent when a tiddler's data value is changed through the "setData" methods. 

''Escape Data Section''
In case that you want to use the text {{{<data>}}} or {{{</data>}}} in a tiddler text you must prefix the text with a tilde ('~'). Otherwise it may be wrongly considered as the data section. The tiddler text {{{~<data>}}} is displayed as {{{<data>}}}.


''The showData Macro''

By default the data of a tiddler (that is stored in the {{{<data>...</data>}}} section of the tiddler) is not displayed. If you want to display this data you may used the {{{<<showData ...>>}}} macro:

''Syntax:'' 
|>|{{{<<}}}''showData '' [''JSON''] [//tiddlerName//] {{{>>}}}|
|''JSON''|By default the data is rendered as a table with a "Name" and "Value" column. When defining ''JSON'' the data is rendered in JSON format|
|//tiddlerName//|Defines the tiddler holding the data to be displayed. When no tiddler is given the tiddler containing the showData macro is used. When the tiddler name contains spaces you must quote the name (or use the {{{[[...]]}}} syntax.)|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|


!Revision history
* v1.0.6 (2006-08-26) 
** Removed misleading comment
* v1.0.5 (2006-02-27) (Internal Release Only)
** Internal
*** Make "JSLint" conform
* v1.0.4 (2006-02-05)
** Bugfix: showData fails in TiddlyWiki 2.0
* v1.0.3 (2006-01-06)
** Support TiddlyWiki 2.0
* v1.0.2 (2005-12-22)
** Enhancements:
*** Handle texts "<data>" or "</data>" more robust when used in a tiddler text or as a field value.
*** Improved (JSON) error messages.
** Bugs fixed: 
*** References are not updated when using the DataTiddler.
*** Changes to compound objects are not always saved.
*** "~</data>" is not rendered correctly (expected "</data>")
* v1.0.1 (2005-12-13)
** Features: 
*** The showData macro supports an optional "tiddlername" argument to specify the tiddler containing the data to be displayed
** Bugs fixed: 
*** A script immediately following a data section is deleted when the data is changed. (Thanks to GeoffS for reporting.)
* v1.0.0 (2005-12-12)
** initial version

!Code
***/
//{{{
//============================================================================
//============================================================================
//                           DataTiddlerPlugin
//============================================================================
//============================================================================

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



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

// For backward compatibility with v1.2.x
//
if (!window.story) window.story=window; 
if (!TiddlyWiki.prototype.getTiddler) {
	TiddlyWiki.prototype.getTiddler = function(title) { 
		var t = this.tiddlers[title]; 
		return (t !== undefined && t instanceof Tiddler) ? t : null; 
	};
}

//============================================================================
// DataTiddler Class
//============================================================================

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

function DataTiddler() {
}

DataTiddler = {
    // Function to stringify a JavaScript value, producing the text for the data section content.
    // (Must match the implementation of DataTiddler.parse.)
    //
    stringify : null,
    

    // Function to parse the text for the data section content, producing a JavaScript value.
    // (Must match the implementation of DataTiddler.stringify.)
    //
    parse : null
};

// Ensure access for IE
window.DataTiddler = DataTiddler;

// ---------------------------------------------------------------------------
// Data Accessor and Mutator
// ---------------------------------------------------------------------------


// Returns the value of the given data field of the tiddler.
// When no such field is defined or its value is undefined
// the defaultValue is returned.
// 
// @param tiddler either a tiddler name or a tiddler
//
DataTiddler.getData = function(tiddler, field, defaultValue) {
    var t = (typeof tiddler == "string") ? store.getTiddler(tiddler) : tiddler;
    if (!(t instanceof Tiddler)) {
        throw "Tiddler expected. Got "+tiddler;
    }

    return DataTiddler.getTiddlerDataValue(t, field, defaultValue);
};


// Sets the value of the given data field of the tiddler to
// the value. When the value is equal to the defaultValue
// no value is set (and the field is removed)
//
// Changing data of a tiddler will not trigger notifications.
// 
// @param tiddler either a tiddler name or a tiddler
//
DataTiddler.setData = function(tiddler, field, value, defaultValue) {
    var t = (typeof tiddler == "string") ? store.getTiddler(tiddler) : tiddler;
    if (!(t instanceof Tiddler)) {
        throw "Tiddler expected. Got "+tiddler+ "("+t+")";
    }

    DataTiddler.setTiddlerDataValue(t, field, value, defaultValue);
};


// Returns the data object of the tiddler, with a property for every field.
//
// The properties of the returned data object may only be read and
// not be modified. To modify the data use DataTiddler.setData(...) 
// or the corresponding Tiddler method.
//
// If no data section is defined a new (empty) object is returned.
//
// @param tiddler either a tiddler name or a Tiddler
//
DataTiddler.getDataObject = function(tiddler) {
    var t = (typeof tiddler == "string") ? store.getTiddler(tiddler) : tiddler;
    if (!(t instanceof Tiddler)) {
        throw "Tiddler expected. Got "+tiddler;
    }

    return DataTiddler.getTiddlerDataObject(t);
};

// Returns the text of the content of the data section of the tiddler.
//
// When no data section is defined for the tiddler null is returned 
//
// @param tiddler either a tiddler name or a Tiddler
// @return [may be null]
//
DataTiddler.getDataText = function(tiddler) {
    var t = (typeof tiddler == "string") ? store.getTiddler(tiddler) : tiddler;
    if (!(t instanceof Tiddler)) {
        throw "Tiddler expected. Got "+tiddler;
    }

    return DataTiddler.readDataSectionText(t);
};


// ---------------------------------------------------------------------------
// Internal helper methods (must not be used by code from outside this plugin)
// ---------------------------------------------------------------------------

// Internal.
//
// The original JSONError is not very user friendly, 
// especially it does not define a toString() method
// Therefore we extend it here.
//
DataTiddler.extendJSONError = function(ex) {
	if (ex.name == 'JSONError') {
        ex.toString = function() {
			return ex.name + ": "+ex.message+" ("+ex.text+")";
		};
	}
	return ex;
};

// Internal.
//
// @param t a Tiddler
//
DataTiddler.getTiddlerDataObject = function(t) {
    if (t.dataObject === undefined) {
        var data = DataTiddler.readData(t);
        t.dataObject = (data) ? data : {};
    }
    
    return t.dataObject;
};


// Internal.
//
// @param tiddler a Tiddler
//
DataTiddler.getTiddlerDataValue = function(tiddler, field, defaultValue) {
    var value = DataTiddler.getTiddlerDataObject(tiddler)[field];
    return (value === undefined) ? defaultValue : value;
};


// Internal.
//
// @param tiddler a Tiddler
//
DataTiddler.setTiddlerDataValue = function(tiddler, field, value, defaultValue) {
    var data = DataTiddler.getTiddlerDataObject(tiddler);
    var oldValue = data[field];
	
    if (value == defaultValue) {
        if (oldValue !== undefined) {
            delete data[field];
            DataTiddler.save(tiddler);
        }
        return;
    }
    data[field] = value;
    DataTiddler.save(tiddler);
};

// Internal.
//
// Reads the data section from the tiddler's content and returns its text
// (as a String).
//
// Returns null when no data is defined.
//
// @param tiddler a Tiddler
// @return [may be null]
//
DataTiddler.readDataSectionText = function(tiddler) {
    var matches = DataTiddler.getDataTiddlerMatches(tiddler);
    if (matches === null || !matches[2]) {
        return null;
    }
    return matches[2];
};

// Internal.
//
// Reads the data section from the tiddler's content and returns it
// (as an internalized object).
//
// Returns null when no data is defined.
//
// @param tiddler a Tiddler
// @return [may be null]
//
DataTiddler.readData = function(tiddler) {
    var text = DataTiddler.readDataSectionText(tiddler);
	try {
	    return text ? DataTiddler.parse(text) : null;
	} catch(ex) {
		throw DataTiddler.extendJSONError(ex);
	}
};

// Internal.
// 
// Returns the serialized text of the data of the given tiddler, as it
// should be stored in the data section.
//
// @param tiddler a Tiddler
//
DataTiddler.getDataTextOfTiddler = function(tiddler) {
    var data = DataTiddler.getTiddlerDataObject(tiddler);
    return DataTiddler.stringify(data);
};


// Internal.
// 
DataTiddler.indexOfNonEscapedText = function(s, subString, startIndex) {
	var index = s.indexOf(subString, startIndex);
	while ((index > 0) && (s[index-1] == '~')) { 
		index = s.indexOf(subString, index+1);
	}
	return index;
};

// Internal.
//
DataTiddler.getDataSectionInfo = function(text) {
	// Special care must be taken to handle "<data>" and "</data>" texts inside
	// a data section. 
	// Also take care not to use an escaped <data> (i.e. "~<data>") as the start 
	// of a data section. (Same for </data>)

    // NOTE: we are explicitly searching for a data section that contains a JSON
    // string, i.e. framed with braces. This way we are little bit more robust in
    // case the tiddler contains unescaped texts "<data>" or "</data>". This must
    // be changed when using a different stringifier.

	var startTagText = "<data>{";
	var endTagText = "}</data>";

	var startPos = 0;

	// Find the first not escaped "<data>".
	var startDataTagIndex = DataTiddler.indexOfNonEscapedText(text, startTagText, 0);
	if (startDataTagIndex < 0) {
		return null;
	}

	// Find the *last* not escaped "</data>".
	var endDataTagIndex = text.indexOf(endTagText, startDataTagIndex);
	if (endDataTagIndex < 0) {
		return null;
	}
	var nextEndDataTagIndex;
	while ((nextEndDataTagIndex = text.indexOf(endTagText, endDataTagIndex+1)) >= 0) {
		endDataTagIndex = nextEndDataTagIndex;
	}

	return {
		prefixEnd: startDataTagIndex, 
		dataStart: startDataTagIndex+(startTagText.length)-1, 
		dataEnd: endDataTagIndex, 
		suffixStart: endDataTagIndex+(endTagText.length)
	};
};

// Internal.
// 
// Returns the "matches" of a content of a DataTiddler on the
// "data" regular expression. Return null when no data is defined
// in the tiddler content.
//
// Group 1: text before data section (prefix)
// Group 2: content of data section
// Group 3: text behind data section (suffix)
//
// @param tiddler a Tiddler
// @return [may be null] null when the tiddler contains no data section, otherwise see above.
//
DataTiddler.getDataTiddlerMatches = function(tiddler) {
	var text = tiddler.text;
	var info = DataTiddler.getDataSectionInfo(text);
	if (!info) {
		return null;
	}

	var prefix = text.substr(0,info.prefixEnd);
	var data = text.substr(info.dataStart, info.dataEnd-info.dataStart+1);
	var suffix = text.substr(info.suffixStart);
	
	return [text, prefix, data, suffix];
};


// Internal.
//
// Saves the data in a <data> block of the given tiddler (as a minor change). 
//
// The "chkAutoSave" and "chkForceMinorUpdate" options are respected. 
// I.e. the TiddlyWiki *file* is only saved when AutoSave is on.
//
// Notifications are not send. 
//
// This method should only be called when the data really has changed. 
//
// @param tiddler
//             the tiddler to be saved.
//
DataTiddler.save = function(tiddler) {

    var matches = DataTiddler.getDataTiddlerMatches(tiddler);

    var prefix;
    var suffix;
    if (matches === null) {
        prefix = tiddler.text;
        suffix = "";
    } else {
        prefix = matches[1];
        suffix = matches[3];
    }

    var dataText = DataTiddler.getDataTextOfTiddler(tiddler);
    var newText = 
            (dataText !== null) 
                ? prefix + "<data>" + dataText + "</data>" + suffix
                : prefix + suffix;
    if (newText != tiddler.text) {
        // make the change in the tiddlers text
        
        // ... see DataTiddler.MyTiddlerChangedFunction
        tiddler.isDataTiddlerChange = true;
        
        // ... do the action change
        tiddler.set(
                tiddler.title,
                newText,
                config.options.txtUserName, 
                config.options.chkForceMinorUpdate? undefined : new Date(),
                tiddler.tags);

        // ... see DataTiddler.MyTiddlerChangedFunction
        delete tiddler.isDataTiddlerChange;

        // Mark the store as dirty.
        store.dirty = true;
 
        // AutoSave if option is selected
        if(config.options.chkAutoSave) {
           saveChanges();
        }
    }
};

// Internal.
//
DataTiddler.MyTiddlerChangedFunction = function() {
    // Remove the data object from the tiddler when the tiddler is changed
    // by code other than DataTiddler code. 
    //
    // This is necessary since the data object is just a "cached version" 
    // of the data defined in the data section of the tiddler and the 
    // "external" change may have changed the content of the data section.
    // Thus we are not sure if the data object reflects the data section 
    // contents. 
    // 
    // By deleting the data object we ensure that the data object is 
    // reconstructed the next time it is needed, with the data defined by
    // the data section in the tiddler's text.
    
    // To indicate that a change is a "DataTiddler change" a temporary
    // property "isDataTiddlerChange" is added to the tiddler.
    if (this.dataObject && !this.isDataTiddlerChange) {
        delete this.dataObject;
    }
    
    // call the original code.
	DataTiddler.originalTiddlerChangedFunction.apply(this, arguments);
};


//============================================================================
// Formatters
//============================================================================

// This formatter ensures that "~<data>" is rendered as "<data>". This is used to 
// escape the "<data>" of a data section, just in case someone really wants to use
// "<data>" as a text in a tiddler and not start a data section.
//
// Same for </data>.
//
config.formatters.push( {
    name: "data-escape",
    match: "~<\\/?data>",

    handler: function(w) {
            w.outputText(w.output,w.matchStart + 1,w.nextMatch);
    }
} );


// This formatter ensures that <data>...</data> sections are not rendered.
//
config.formatters.push( {
    name: "data",
    match: "<data>",

    handler: function(w) {
		var info = DataTiddler.getDataSectionInfo(w.source);
		if (info && info.prefixEnd == w.matchStart) {
            w.nextMatch = info.suffixStart;
		} else {
			w.outputText(w.output,w.matchStart,w.nextMatch);
		}
    }
} );


//============================================================================
// Tiddler Class Extension
//============================================================================

// "Hijack" the changed method ---------------------------------------------------

DataTiddler.originalTiddlerChangedFunction = Tiddler.prototype.changed;
Tiddler.prototype.changed = DataTiddler.MyTiddlerChangedFunction;

// Define accessor methods -------------------------------------------------------

// Returns the value of the given data field of the tiddler. When no such field 
// is defined or its value is undefined the defaultValue is returned.
//
// When field is undefined (or null) the data object is returned. (See 
// DataTiddler.getDataObject.)
//
// @param field [may be null, undefined]
// @param defaultValue [may be null, undefined]
// @return [may be null, undefined]
//
Tiddler.prototype.data = function(field, defaultValue) {
    return (field) 
         ? DataTiddler.getTiddlerDataValue(this, field, defaultValue)
         : DataTiddler.getTiddlerDataObject(this);
};

// Sets the value of the given data field of the tiddler to the value. When the 
// value is equal to the defaultValue no value is set (and the field is removed).
//
// @param value [may be null, undefined]
// @param defaultValue [may be null, undefined]
//
Tiddler.prototype.setData = function(field, value, defaultValue) {
    DataTiddler.setTiddlerDataValue(this, field, value, defaultValue);
};


//============================================================================
// showData Macro
//============================================================================

config.macros.showData = {
     // Standard Properties
     label: "showData",
     prompt: "Display the values stored in the data section of the tiddler"
};

config.macros.showData.handler = function(place,macroName,params) {
    // --- Parsing ------------------------------------------

    var i = 0; // index running over the params
    // Parse the optional "JSON"
    var showInJSONFormat = false;
    if ((i < params.length) && params[i] == "JSON") {
        i++;
        showInJSONFormat = true;
    }
    
    var tiddlerName = story.findContainingTiddler(place).id.substr(7);
    if (i < params.length) {
        tiddlerName = params[i];
        i++;
    }

    // --- Processing ------------------------------------------
    try {
        if (showInJSONFormat) {
            this.renderDataInJSONFormat(place, tiddlerName);
        } else {
            this.renderDataAsTable(place, tiddlerName);
        }
    } catch (e) {
        this.createErrorElement(place, e);
    }
};

config.macros.showData.renderDataInJSONFormat = function(place,tiddlerName) {
    var text = DataTiddler.getDataText(tiddlerName);
    if (text) {
        createTiddlyElement(place,"pre",null,null,text);
    }
};

config.macros.showData.renderDataAsTable = function(place,tiddlerName) {
    var text = "|!Name|!Value|\n";
    var data = DataTiddler.getDataObject(tiddlerName);
    if (data) {
        for (var i in data) {
            var value = data[i];
            text += "|"+i+"|"+DataTiddler.stringify(value)+"|\n";
        }
    }
    
    wikify(text, place);
};


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

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


} // of "install only once"
// Used Globals (for JSLint) ==============

// ... TiddlyWiki Core
/*global 	createTiddlyElement, saveChanges, store, story, wikify */
// ... DataTiddler
/*global 	DataTiddler */
// ... JSON
/*global 	JSON */
			

/***
!JSON Code, used to serialize the data
***/
/*
Copyright (c) 2005 JSON.org

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The Software shall be used for Good, not Evil.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/

/*
    The global object JSON contains two methods.

    JSON.stringify(value) takes a JavaScript value and produces a JSON text.
    The value must not be cyclical.

    JSON.parse(text) takes a JSON text and produces a JavaScript value. It will
    throw a 'JSONError' exception if there is an error.
*/
var JSON = {
    copyright: '(c)2005 JSON.org',
    license: 'http://www.crockford.com/JSON/license.html',
/*
    Stringify a JavaScript value, producing a JSON text.
*/
    stringify: function (v) {
        var a = [];

/*
    Emit a string.
*/
        function e(s) {
            a[a.length] = s;
        }

/*
    Convert a value.
*/
        function g(x) {
            var c, i, l, v;

            switch (typeof x) {
            case 'object':
                if (x) {
                    if (x instanceof Array) {
                        e('[');
                        l = a.length;
                        for (i = 0; i < x.length; i += 1) {
                            v = x[i];
                            if (typeof v != 'undefined' &&
                                    typeof v != 'function') {
                                if (l < a.length) {
                                    e(',');
                                }
                                g(v);
                            }
                        }
                        e(']');
                        return;
                    } else if (typeof x.toString != 'undefined') {
                        e('{');
                        l = a.length;
                        for (i in x) {
                            v = x[i];
                            if (x.hasOwnProperty(i) &&
                                    typeof v != 'undefined' &&
                                    typeof v != 'function') {
                                if (l < a.length) {
                                    e(',');
                                }
                                g(i);
                                e(':');
                                g(v);
                            }
                        }
                        return e('}');
                    }
                }
                e('null');
                return;
            case 'number':
                e(isFinite(x) ? +x : 'null');
                return;
            case 'string':
                l = x.length;
                e('"');
                for (i = 0; i < l; i += 1) {
                    c = x.charAt(i);
                    if (c >= ' ') {
                        if (c == '\\' || c == '"') {
                            e('\\');
                        }
                        e(c);
                    } else {
                        switch (c) {
                            case '\b':
                                e('\\b');
                                break;
                            case '\f':
                                e('\\f');
                                break;
                            case '\n':
                                e('\\n');
                                break;
                            case '\r':
                                e('\\r');
                                break;
                            case '\t':
                                e('\\t');
                                break;
                            default:
                                c = c.charCodeAt();
                                e('\\u00' + Math.floor(c / 16).toString(16) +
                                    (c % 16).toString(16));
                        }
                    }
                }
                e('"');
                return;
            case 'boolean':
                e(String(x));
                return;
            default:
                e('null');
                return;
            }
        }
        g(v);
        return a.join('');
    },
/*
    Parse a JSON text, producing a JavaScript value.
*/
    parse: function (text) {
        var p = /^\s*(([,:{}\[\]])|"(\\.|[^\x00-\x1f"\\])*"|-?\d+(\.\d*)?([eE][+-]?\d+)?|true|false|null)\s*/,
            token,
            operator;

        function error(m, t) {
            throw {
                name: 'JSONError',
                message: m,
                text: t || operator || token
            };
        }

        function next(b) {
            if (b && b != operator) {
                error("Expected '" + b + "'");
            }
            if (text) {
                var t = p.exec(text);
                if (t) {
                    if (t[2]) {
                        token = null;
                        operator = t[2];
                    } else {
                        operator = null;
                        try {
                            token = eval(t[1]);
                        } catch (e) {
                            error("Bad token", t[1]);
                        }
                    }
                    text = text.substring(t[0].length);
                } else {
                    error("Unrecognized token", text);
                }
            } else {
                token = operator = undefined;
            }
        }


        function val() {
            var k, o;
            switch (operator) {
            case '{':
                next('{');
                o = {};
                if (operator != '}') {
                    for (;;) {
                        if (operator || typeof token != 'string') {
                            error("Missing key");
                        }
                        k = token;
                        next();
                        next(':');
                        o[k] = val();
                        if (operator != ',') {
                            break;
                        }
                        next(',');
                    }
                }
                next('}');
                return o;
            case '[':
                next('[');
                o = [];
                if (operator != ']') {
                    for (;;) {
                        o.push(val());
                        if (operator != ',') {
                            break;
                        }
                        next(',');
                    }
                }
                next(']');
                return o;
            default:
                if (operator !== null) {
                    error("Missing value");
                }
                k = token;
                next();
                return k;
            }
        }
        next();
        return val();
    }
};

/***
!Setup the data serialization
***/

DataTiddler.format = "JSON";
DataTiddler.stringify = JSON.stringify;
DataTiddler.parse = JSON.parse;

//}}}

!Frequency
Common
!Also Known As
n/a
!System Structure
This is an archetype made up of several other archetypes.  Systemically, it starts with a failure of governance to maintain a balance in strategic decision making, particularly a failure to address external and future factors (Bean Counters).  When the of the environment changes, this isn't noticed.  Because of the failure to prepare adequately, operations respond to the environmental changes erratically.  This triggers either inter-unit instability (Shockwaves) or intervention by higher management (Control Dilemma) or both.  This reduces the ability of the organisation to respond at both the operational and the strategic level.  As a result, operational responses to environmental change are inadequate and the organisation starts to fail.  If management they usually go into crisis mode (Bunker Mentality).  This reduces their ability to address the problems and reinforces the initial isolation from external intelligence.  
!Symptoms
The symptoms are familiar once seen – not just the ostrich like behaviour of the Bunker Mentality, coupled with a realisation that the writing had been on the wall for some time, but also a rising sense of panic as management and staff realise that events are spiralling out of control.  
!Solutions 
Once the spiral kicks in, the organisation can usually only be saved by external intervention.  Either an injection to the management team, or a further change in the environment is needed.  In other words, organisations in this state only survive by luck.  
Prevention however is much easier, less painful and surer.  This consists of making sure that governance is functioning, that the organisation is actively scanning for strategic risks and preparing its management team to deal with expected and unexpected shocks.  
!Links
[[Shockwaves]] , [[Control Dilemma]] , [[Bunker Mentality]]
[[About OMM Director]]
<<tiddler MaturityMatrixPathologyScript>>
<<tiddler MaturityMatrixPathologyScript>>
<<tiddler MaturityMatrixPathologyScript>>
<<tiddler MaturityMatrixPathologyScript>>
!Frequency
Extremely common
!Also Known As
Stretch Targets, Salami Slicing, Arbitrary Cuts, Arbitrary Targets
!System Structure
Systemically, it is critically important to connect agreements about  performance to agreements about resources in a closed conversational loop.  The Dictators archetype occurs when this loop is broken and the two are dealt with separately and targets are set without reference to the resources needed to deliver that level of performance, or resources are cut without any reference to the effect on performance.  Usually this becomes a unilateral decision.
!Symptoms
Arbitrary setting of targets or arbitrary cuts in resources.  The effect is usually a fall in performance as the operations are starved of the resources necessary to achieve the level of performance being demanded of them.  Sometimes, under pressure efficiency (more for less) can go up as people work longer or harder to make up the shortfall, but this isn’t sustainable and soon the system stabilises at a new lower level of performance.
The symptoms for individuals are usually high levels of stress.
!Solutions
Ensure that the resource bargaining loop (agreement over performance to be delivered against agreement over resources available to achieve that) is carried out as a conversational loop.
!Links
[[Bricks without Straw]] , [[Missing Link]] , [[Castles in the Air]] , [[Bean Counters]]
/***
|Name|DisableWikiLinksPlugin|
|Source|http://www.TiddlyTools.com/#DisableWikiLinksPlugin|
|Version|1.6.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|selectively disable TiddlyWiki's automatic ~WikiWord linking behavior|
This plugin allows you to disable TiddlyWiki's automatic ~WikiWord linking behavior, so that WikiWords embedded in tiddler content will be rendered as regular text, instead of being automatically converted to tiddler links.  To create a tiddler link when automatic linking is disabled, you must enclose the link text within {{{[[...]]}}}.
!!!!!Usage
<<<
You can block automatic WikiWord linking behavior for any specific tiddler by ''tagging it with<<tag excludeWikiWords>>'' (see configuration below) or, check a plugin option to disable automatic WikiWord links to non-existing tiddler titles, while still linking WikiWords that correspond to existing tiddlers titles or shadow tiddler titles.  You can also block specific selected WikiWords from being automatically linked by listing them in [[DisableWikiLinksList]] (see configuration below), separated by whitespace.  This tiddler is optional and, when present, causes the listed words to always be excluded, even if automatic linking of other WikiWords is being permitted.  

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

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

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

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

Tiddler.prototype.disableWikiLinks_changed = Tiddler.prototype.changed;
Tiddler.prototype.changed = function()
{
	this.disableWikiLinks_changed.apply(this,arguments);
	// remove excluded wiki words from links array
	var t=store.getTiddlerText(config.options.txtDisableWikiLinksList,"").readBracketedList();
	if (t.length) for (var i=0; i<t.length; i++)
		if (this.links.contains(t[i]))
			this.links.splice(this.links.indexOf(t[i]),1);
};
//}}}
<!--{{{-->
<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 macro="showWhenTagged Q">
	<div class='hide' macro='tiddler {{tiddler.title+" Text"}}'></div>
	<div class='editor' ><div class='editorFooter'>Primary (surround primary and secondary pathologies with [[double brackets]])</div><span macro="edit primary"></span></div>
	<div class='editor' ><div class='editorFooter'>Secondary</div><span macro="edit secondary"></span></div>
<div class='editor' ><div class='editorFooter'>Aspect : Maturity</div><span macro="edit maturity"></span></div>
</div>

</div>
<div macro="showWhenTagged P">
	<div class='editor' ><div class='editorFooter'>Primary in(surround questions with [[double brackets]])</div><span macro="edit primaryin"></span></div>
	<div class='editor' ><div class='editorFooter'>Secondary in</div><span macro="edit secondaryin"></span></div>
</div>

<div class='editor' macro='edit tags'><div class='editorFooter'>Tag: Tag questions Q, pathologies P</div>


<!--}}}-->
You have now finished the questionnaire section.
The next section shows of organisational maturity and suggests some archetypes associated with your answers.
<<tiddler ShowOutputMenu>>


!Frequency
n/a
!Also Known As
Fantasists, Untested Assumptions
!System Structure
The Fantasy World archetype happens when managers don't bother to check their mental models against reality, don't collect the necessary research, or deny the evidence that they do have available.  It results from a failure to build adequate or appropriate feedback loops into the organisation or into the environment to allow learning to take place and results in the management having distorted or out of date models of reality.  Usually this is a chronic condition since it is self-reinforcing, instead of correcting flawed mental models means these are constantly re-affirmed and restated. 
!Symptoms
Confronted by a problem, an individual can act on intuition.  Generally though, management teams don't have the same intuition and even if they did, admitting to one another that they don't have a clue what's really happening isn't always acceptable.  So faced with a problem, they build models of reality to make sense of the world and to justify the actions they want to take
!Solutions
>“Don't believe what you want to believe until you know what you need to know”
The structural solution to the Fantasy World lies in building adequate feedback loops to provide evidence to confirm or deny mental models combined with a periodic testing of the assumptions our models are based on.  Both conditions are necessary.  Stepping outside the logic frame of the assumptions is critically important.
!Links
[[Castles in the Air]]
//{{{
version.extensions.favicon = {major: 0, minor: 1, revision: 0, date: new Date("Jul 18, 2005")};
var n = document.createElement("link");
n.rel = "shortcut icon";
n.href = "http://dl.dropbox.com/u/1316865/OMM/Director/favicon1.ico";
document.getElementsByTagName("head")[0].appendChild(n);
//}}}
!Frequency
Common
!Also Known As
N/A	
!System Structure
This unfocused behaviour starts with incoherent or //ad hoc// strategy. The organisation may for instance be unclear on its market strategy, resulting in operational staff responding in an //ad hoc// way to all perceived customer fads, leading to conflicting product pressures and //ad hoc// product developments. 
The same can apply to the organisation itself. Rather than carefully analysing its own needs, the organisation imports the latest management fad. When this does not address its issues it tries another one, etc. The rapid and unrelated changes of direction, sap organisational resources without achieving lasting improvements.  
!Symptoms 
This can be felt as wave after wave of diverse changes being imposed on the products or the organisation - often seeming to cancel each other out. The organisation feels like they are in a small sailing boat tacking upstream against a strong current, loosing any advantage gained on each change of direction. 
!Solutions
Aim to stay ahead of the game, by taking time when things are going (relatively) smoothly to examine future possibilities and opportunities, consider potential risks and develop robust strategies that will address the potential issues. React to external intelligence with consistent, researched, thought through and co-ordinated actions. 
!Links
[[Goldfish]] , [[Here be Dragons]], [[Bunker Mentality]]
/***
|Name|FontSizePlugin|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#FontSizePlugin|
|Version|1.0|
|Requires|~TW2.x|
!Description:
Resize tiddler text on the fly. The text size is remembered between sessions by use of a cookie.
You can customize the maximum and minimum allowed sizes.
(only affects tiddler content text, not any other text)

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

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

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

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

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

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

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

!Code
***/

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

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

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

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

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

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

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

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

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

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

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

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

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

config.paramifiers.font =
{
               onstart: function(v)
                  {
                   config.options.txtFontSize = v;
                   config.macros.fontSize.setFont();
                  }
};
//}}}
/***
<<checkForDataTiddlerPlugin>>
|''Name:''|FormTiddlerPlugin|
|''Version:''|1.0.6 (2007-06-24)|
|''Source:''|http://tiddlywiki.abego-software.de/#FormTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license]]|
|''Macros:''|formTiddler, checkForDataTiddlerPlugin, newTiddlerWithForm|
|''Requires:''|DataTiddlerPlugin|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; InternetExplorer 6.0|
!Description
Use form-based tiddlers to enter your tiddler data using text fields, listboxes, checkboxes etc. (All standard HTML Form input elements supported).

''Syntax:'' 
|>|{{{<<}}}''formTiddler'' //tiddlerName//{{{>>}}}|
|//tiddlerName//|The name of the FormTemplate tiddler to be used to edit the data of the tiddler containing the macro.|

|>|{{{<<}}}''newTiddlerWithForm'' //formTemplateName// //buttonLabel// [//titleExpression// [''askUser'']] {{{>>}}}|
|//formTemplateName//|The name of the tiddler that defines the form the new tiddler should use.|
|//buttonLabel//|The label of the button|
|//titleExpression//|A (quoted) JavaScript String expression that defines the title (/name) of the new tiddler.|
|''askUser''|Typically the user is not asked for the title when a title is specified (and not yet used). When ''askUser'' is given the user will be asked in any case. This may be used when the calculated title is just a suggestion that must be confirmed by the user|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|

For details and how to use the macros see the [[introduction|FormTiddler Introduction]] and the [[examples|FormTiddler Examples]].

!Revision history
* v1.0.6 (2007-06-24)
** Fixed problem when using SELECT component in Internet Explorer (thanks to MaikBoenig for reporting)
* v1.0.5 (2006-02-24)
** Removed "debugger;" instruction
* v1.0.4 (2006-02-07)
** Bug: On IE no data is written to data section when field values changed (thanks to KenGirard for reporting)
* v1.0.3 (2006-02-05)
** Bug: {{{"No form template specified in <<formTiddler>>"}}} when using formTiddler macro on InternetExplorer (thanks to KenGirard for reporting)
* v1.0.2 (2006-01-06)
** Support TiddlyWiki 2.0
* v1.0.1 (2005-12-22)
** Features: 
*** Support InternetExplorer
*** Added newTiddlerWithForm Macro
* v1.0.0 (2005-12-14)
** initial version

!Code
***/
//{{{

//============================================================================
//============================================================================
//						FormTiddlerPlugin
//============================================================================
//============================================================================

if (!window.abego) window.abego = {};

abego.getOptionsValue = function(element,i) {
	var v = element.options[i].value;
	if (!v && element.options[i].text)
		v = element.options[i].text;
	return v;
};

version.extensions.FormTiddlerPlugin = {
	major: 1, minor: 0, revision: 5,
	date: new Date(2006, 2, 24), 
	type: 'plugin',
	source: "http://tiddlywiki.abego-software.de/#FormTiddlerPlugin"
};

// For backward compatibility with v1.2.x
//
if (!window.story) window.story=window; 
if (!TiddlyWiki.prototype.getTiddler) TiddlyWiki.prototype.getTiddler = function(title) { return t = this.tiddlers[title]; return (t != undefined && t instanceof Tiddler) ? t : null; } 

//============================================================================
// formTiddler Macro
//============================================================================

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

config.macros.formTiddler = {
	// Standard Properties
	label: "formTiddler",
	version: {major: 1, minor: 0, revision: 4, date: new Date(2006, 2, 7)},
	prompt: "Edit tiddler data using forms",

	// Define the "setters" that set the values of INPUT elements of a given type
	// (must match the corresponding "getter")
	setter: {  
		button:				function(e, value) {/*contains no data */ },
		checkbox:			function(e, value) {e.checked = value;},
		file:				function(e, value) {try {e.value = value;} catch(e) {/* ignore, possibly security error*/}},
		hidden:				function(e, value) {e.value = value;},
		password:			function(e, value) {e.value = value;},
		radio:				function(e, value) {e.checked = (e.value == value);},
		reset:				function(e, value) {/*contains no data */ },
		"select-one":		function(e, value) {config.macros.formTiddler.setSelectOneValue(e,value);},
		"select-multiple":	function(e, value) {config.macros.formTiddler.setSelectMultipleValue(e,value);},
		submit:				function(e, value) {/*contains no data */},
		text:				function(e, value) {e.value = value;},
		textarea:			function(e, value) {e.value = value;}
	},

	// Define the "getters" that return the value of INPUT elements of a given type
	// Return undefined to not store any data.
	getter: {  
		button:				function(e, value) {return undefined;},
		checkbox:			function(e, value) {return e.checked;},
		file:				function(e, value) {return e.value;},
		hidden:				function(e, value) {return e.value;},
		password:			function(e, value) {return e.value;},
		radio:				function(e, value) {return e.checked ? e.value : undefined;},
		reset:				function(e, value) {return undefined;},
		"select-one":		function(e, value) {return config.macros.formTiddler.getSelectOneValue(e);},
		"select-multiple":	function(e, value) {return config.macros.formTiddler.getSelectMultipleValue(e);},
		submit:				function(e, value) {return undefined;},
		text:				function(e, value) {return e.value;},
		textarea:			function(e, value) {return e.value;}
	}
};


// -------------------------------------------------------------------------------
// The formTiddler Macro Handler 
// -------------------------------------------------------------------------------

config.macros.formTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	if (!config.macros.formTiddler.checkForExtensions(place, macroName)) {
		return;
	}
	// --- Parsing ------------------------------------------

	var i = 0; // index running over the params

	// get the name of the form template tiddler
	var formTemplateName = undefined;
	if (i < params.length) {
		formTemplateName = params[i];
		i++;
	}

	if (!formTemplateName) {
		config.macros.formTiddler.createErrorElement(place, "No form template specified in <<" + macroName + ">>.");
		return;
	}


	// --- Processing ------------------------------------------

	// Get the form template text. 
	// (This contains the INPUT elements for the form.)
	var formTemplateTiddler = store.getTiddler(formTemplateName);
	if (!formTemplateTiddler) {
		config.macros.formTiddler.createErrorElement(place, "Form template '" + formTemplateName + "' not found.");
		return;
	}
	var templateText = formTemplateTiddler.text;
	if(!templateText) {
		// Shortcut: when template text is empty we do nothing.
		return;
	}

	// Get the name of the tiddler containing this "formTiddler" macro
	// (i.e. the tiddler, that will be edited and that contains the data)
	var tiddlerName = config.macros.formTiddler.getContainingTiddlerName(place);

	// Append a "form" element. 
	var formName = "form"+formTemplateName+"__"+tiddlerName;
	var e = document.createElement("form");
	e.setAttribute("name", formName);
	place.appendChild(e);

	// "Embed" the elements defined by the templateText (i.e. the INPUT elements) 
	// into the "form" element we just created
	wikify(templateText, e);

	// Initialize the INPUT elements.
	config.macros.formTiddler.initValuesAndHandlersInFormElements(formName, DataTiddler.getDataObject(tiddlerName));
}


// -------------------------------------------------------------------------------
// Form Data Access 
// -------------------------------------------------------------------------------

// Internal.
//
// Initialize the INPUT elements of the form with the values of their "matching"
// data fields in the tiddler. Also setup the onChange handler to ensure that
// changes in the INPUT elements are stored in the tiddler's data.
//
config.macros.formTiddler.initValuesAndHandlersInFormElements = function(formName, data) {
	// config.macros.formTiddler.trace("initValuesAndHandlersInFormElements(formName="+formName+", data="+data+")");

	// find the form
	var form = config.macros.formTiddler.findForm(formName);
	if (!form) {
		return;
	}

	try {
		var elems = form.elements;
		for (var i = 0; i < elems.length; i++) {
			var c = elems[i];
		
			var setter = config.macros.formTiddler.setter[c.type];
			if (setter) {
				var value = data[c.name];
				if (value != null) {
					setter(c, value);
				}
				c.onchange = onFormTiddlerChange;
			} else {
				config.macros.formTiddler.displayFormTiddlerError("No setter defined for INPUT element of type '"+c.type+"'. (Element '"+c.name+"' in form '"+formName+"')");
			}
		}
	} catch(e) {
		config.macros.formTiddler.displayFormTiddlerError("Error when updating elements with new formData. "+e);
	}
}


// Internal.
//
// @return [may be null]
//
config.macros.formTiddler.findForm = function(formName) {
	// We must manually iterate through the document's forms, since
	// IE does not support the "document[formName]" approach

	var forms = window.document.forms;
	for (var i = 0; i < forms.length; i++) {
		var form = forms[i];
		if (form.name == formName) {
			return form;
		}
	}

	return null;
}


// Internal.
//
config.macros.formTiddler.setSelectOneValue = function(element,value) {
	var n = element.options.length;
	for (var i = 0; i < n; i++) {
		element.options[i].selected = abego.getOptionsValue(element,i) == value;
	}
}

// Internal.
//
config.macros.formTiddler.setSelectMultipleValue = function(element,value) {
	var values = {};
	for (var i = 0; i < value.length; i++) {
		values[value[i]] = true;
	}
	
	var n = element.length;
	for (var i = 0; i < n; i++) {
		element.options[i].selected = !(!values[abego.getOptionsValue(element,i)]);
	}
}

// Internal.
//
config.macros.formTiddler.getSelectOneValue = function(element) {
	var i = element.selectedIndex;
	return (i >= 0) ? abego.getOptionsValue(element,i) : null;
}

// Internal.
//
config.macros.formTiddler.getSelectMultipleValue = function(element) {
	var values = [];
	var n = element.length;
	for (var i = 0; i < n; i++) {
		if (element.options[i].selected) {
			values.push(abego.getOptionsValue(element,i));
		}
	}
	return values;
}



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

// Internal.
//
config.macros.formTiddler.checkForExtensions = function(place,macroName) {
	if (!version.extensions.DataTiddlerPlugin) {
		config.macros.formTiddler.createErrorElement(place, "<<" + macroName + ">> requires the DataTiddlerPlugin. (You can get it from http://tiddlywiki.abego-software.de/#DataTiddlerPlugin)");
		return false;
	}
	return true;
}

// Internal.
//
// Displays a trace message in the "TiddlyWiki" message pane.
// (used for debugging)
//
config.macros.formTiddler.trace = function(s) {
	displayMessage("Trace: "+s);
}

// Internal.
//
// Display some error message in the "TiddlyWiki" message pane.
//
config.macros.formTiddler.displayFormTiddlerError = function(s) {
	alert("FormTiddlerPlugin Error: "+s);
}

// Internal.
//
// Creates an element that holds an error message
// 
config.macros.formTiddler.createErrorElement = function(place, message) {
	return createTiddlyElement(place,"span",null,"formTiddlerError",message);
}

// Internal.
//
// Returns the name of the tiddler containing the given element.
// 
config.macros.formTiddler.getContainingTiddlerName = function(element) {
	return story.findContainingTiddler(element).id.substr(7);
}

// -------------------------------------------------------------------------------
// Event Handlers 
// -------------------------------------------------------------------------------

// This function must be called by the INPUT elements whenever their
// data changes. Typically this is done through an "onChange" handler.
//
function onFormTiddlerChange (e) {
	// config.macros.formTiddler.trace("onFormTiddlerChange "+e);

	if (!e) var e = window.event;

	var target = resolveTarget(e);
	var tiddlerName = config.macros.formTiddler.getContainingTiddlerName(target);
	var getter = config.macros.formTiddler.getter[target.type];
	if (getter) {
		var value = getter(target);
		DataTiddler.setData(tiddlerName, target.name, value);
	} else {
		config.macros.formTiddler.displayFormTiddlerError("No getter defined for INPUT element of type '"+target.type+"'. (Element '"+target.name+"' used in tiddler '"+tiddlerName+"')");
	}
}

// ensure that the function can be used in HTML event handler
window.onFormTiddlerChange = onFormTiddlerChange;


// -------------------------------------------------------------------------------
// Stylesheet Extensions (may be overridden by local StyleSheet)
// -------------------------------------------------------------------------------

setStylesheet(
	".formTiddlerError{color: #ffffff;background-color: #880000;}",
	"formTiddler");


//============================================================================
// checkForDataTiddlerPlugin Macro
//============================================================================

config.macros.checkForDataTiddlerPlugin = {
	// Standard Properties
	label: "checkForDataTiddlerPlugin",
	version: {major: 1, minor: 0, revision: 0, date: new Date(2005, 12, 14)},
	prompt: "Check if the DataTiddlerPlugin exists"
}

config.macros.checkForDataTiddlerPlugin.handler = function(place,macroName,params) {
	config.macros.formTiddler.checkForExtensions(place, config.macros.formTiddler.label);
}



//============================================================================
// newTiddlerWithForm Macro
//============================================================================

config.macros.newTiddlerWithForm = {
	// Standard Properties
	label: "newTiddlerWithForm",
	version: {major: 1, minor: 0, revision: 1, date: new Date(2006, 1, 6)},
	prompt: "Creates a new Tiddler with a <<formTiddler ...>> macro"
}

config.macros.newTiddlerWithForm.handler = function(place,macroName,params) {
	// --- Parsing ------------------------------------------

	var i = 0; // index running over the params

	// get the name of the form template tiddler
	var formTemplateName = undefined;
	if (i < params.length) {
		formTemplateName = params[i];
		i++;
	}

	if (!formTemplateName) {
		config.macros.formTiddler.createErrorElement(place, "No form template specified in <<" + macroName + ">>.");
		return;
	}

	// get the button label
	var buttonLabel = undefined;
	if (i < params.length) {
		buttonLabel = params[i];
		i++;
	}

	if (!buttonLabel) {
		config.macros.formTiddler.createErrorElement(place, "No button label specified in <<" + macroName + ">>.");
		return;
	}

	// get the (optional) tiddlerName script and "askUser"
	var tiddlerNameScript = undefined;
	var askUser = false;
	if (i < params.length) {
		tiddlerNameScript = params[i];
		i++;

		if (i < params.length && params[i] == "askUser") {
			askUser = true;
			i++;
		}
	}

	// --- Processing ------------------------------------------

	if(!readOnly) {
		var onClick = function() {
			var tiddlerName;
			if (tiddlerNameScript) {
				try {
					tiddlerName = eval(tiddlerNameScript);
				} catch (ex) {
				}
			}
			if (!tiddlerName || askUser) {
				tiddlerName = prompt("Please specify a tiddler name.", askUser ? tiddlerName : "");
			}
			while (tiddlerName && store.getTiddler(tiddlerName)) {
				tiddlerName = prompt("A tiddler named '"+tiddlerName+"' already exists.\n\n"+"Please specify a tiddler name.", tiddlerName);
			}

			// tiddlerName is either null (user canceled) or a name that is not yet in the store.
			if (tiddlerName) {
				var body = "<<formTiddler [["+formTemplateName+"]]>>";
				var tags = [];
				store.saveTiddler(tiddlerName,tiddlerName,body,config.options.txtUserName,new Date(),tags);
				story.displayTiddler(null,tiddlerName,1);
			}
		}

		createTiddlyButton(place,buttonLabel,buttonLabel,onClick);
    }
}

//}}}


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

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

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

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

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

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
***/
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>>
!Frequency
N/A
!Also Known As
Ivory Towers	
!System Structure
This is a failure of effective operational monitoring. The operational units do a good job, act responsibly and co-ordinate well. Over time, senior management loose touch with operations, focussing instead on politics at their own level. They impose strategy (see [[Dictators]]), with little knowledge of the impacts of the changes that they are setting in motion. They become divorced from the workplace and therefore are of little help when unforeseen operational issues arise. 
!Symptoms 
Often a flaw in an otherwise competent organisation. Staff at the operational level are undermined by an inability to influence strategy with their access to operationally sourced intelligence. They receive limited or unrealistic help from managers when unexpected changes occur in their environment. 
!Solutions
Design regular two way communications mechanisms between senior management and operations and take their input seriously. Ensure light touch, but comprehensive monitoring to build a good understanding of what is going on, even when things are going well. 
!Links
[[Open Loops and Reverse Polarity]] , [[Dictators]], [[Fantasy World]] , [[Bricks without Straw]] , [[Re-inventing the Wheel]]
!Frequency
Common
!Also Known As
Lack of Strategic Learning
!System Structure
So called because of Goldfishes alleged lack of memory.  This is a failure of organisational learning, so managers have to re-learn the lesson again and again.  Similar to the "wheel inventors", which is repetitive problem solving at an operational level, here, the systemic failure is of the intelligence function to learn about strategic issues in the environment.
!Symptoms
Organisations encountering the same strategic problems again and again, e.g. repeated cash crises, or repeated failures to anticipate the market or to maintain critical partnership relationships.
Heroic leader cultures are both a symptom and a cause.  A symptom because repeated crises breed heroic leaders and because heroic leaders require repeated crises to provide meaning for the leadership.
!Solutions
This is a failure to manage the intelligence function which models the fit between the organisation and its environment.  It can be a lack of resource for this key function, or a failure to model strategic issues adequately (both capacity problems), or a failure to gather the intelligence (a connection problem) or a failure to integrate intelligence into strategic decision making (ultimately a governance problem).  Identify where in the information loop the failure is and repair it
!Links
[[Fantasy World]] , [[Death Spiral]] , [[Bean Counters]] , [[Castles in the Air]].
| SiteTitle | SiteSubtitle | ColorPalette |
| StyleSheet|>|>|
| IntroMenu | QuestionsMenu | OutputMenu |

!What it is
The old charts drawn by navigators allegedly had, "Here be Dragons", in those areas that had not been explored, but which were thought to contain unknown dangers.  These days it is organisations that have to navigate their future course with very little information of what lurks in their environment and the future.  
!Systemic Effects
To some extent, this is inevitable.  It is difficult to discover information about the environment, as it exists today, and even more difficult to discover factors that are likely to emerge in the future.
An organisation needs to understand how factors in the current and future environment and also within the organisation might affect its future viability.  To adapt to these changes it needs to anticipate them, which means synthesising intelligence and performance into both opportunities and risks, recognising the potential impact and responding in time.
Failure to do this, either ignoring a key area or factor, or misinterpreting a factor that has been recognised can cause problems? 
As the pace of change speeds up, it becomes even more critical.  
One survey showed that 35% of critical strategic risks to hit organisations were never anticipated by them.  Not only did they not see them coming, they didn't even know that there was anything that might hit them.  Risks might include: dissatisfied customers, emerging new technology, product life cycles, lack of agility in dealing with sudden external impacts.  There might also be missed development opportunities (new products, partners, customers, favourable legislation). 
!Possible Ways Forward
One possible solution is to just begin asking questions.  Even better perhaps is to set up a scanning and risk assessment process to scan the environment and systematically feed balanced information into strategy development. 
It might also be helpful to consider the response times required to meet possible changes (and how these might be speeded up if needed, and review any fixed cycles that might affect the business.
 
/***
|Name:|HideWhenPlugin|
|Description:|Allows conditional inclusion/exclusion in templates|
|Version:|3.1 ($Rev: 3919 $)|
|Date:|$Date: 2008-03-13 02:03:12 +1000 (Thu, 13 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
For use in ViewTemplate and EditTemplate. Example usage:
{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}
{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}
***/
//{{{

window.hideWhenLastTest = false;

window.removeElementWhen = function(test,place) {
	window.hideWhenLastTest = test;
	if (test) {
		removeChildren(place);
		place.parentNode.removeChild(place);
	}
};


merge(config.macros,{

	hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( eval(paramString), place);
	}},

	showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !eval(paramString), place);
	}},

	hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.tags.containsAll(params), place);
	}},

	showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !tiddler.tags.containsAll(params), place);
	}},

	hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.tags.containsAny(params), place);
	}},

	showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !tiddler.tags.containsAny(params), place);
	}},

	hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.tags.containsAll(params), place);
	}},

	showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !tiddler.tags.containsAll(params), place);
	}},

	hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place);
	}},

	showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place);
	}},

	hideWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.title == params[0], place);
	}},

	showWhenTitleIs: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( tiddler.title != params[0], place);
	}},

	'else': { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		removeElementWhen( !window.hideWhenLastTest, place);
	}}

});

//}}}
!Archetypes Relevant to your organisation

While browsing the archetypes you can keep track of and re-visit those which have been flagged up by <<tiddler OmmVersion>>: You can rate their relevance to your organisation with either one or two red stars
!Star System

Clicking on the red stars places an archetype in a table of archetypes in the [[Summary of Rated Archetypes]], clicking the gray star removes it.

{{Relevant{*}}}  {{asterix{relevant}}}
{{Relevant{**}}} {{asterix{highly relevant}}} 
{{notRelevant{*}}}  {{asterix{not relevant}}}

!Frequency
Very Common
!Also Known As 
At Sixes and Sevens 	
!System Structure
This issue originates in a failing change programme, one or more parts of the organisation do not understand why they exist or who they need to work with. They may see overlaps or underlaps with other parts of the organisation or lack of demand for what they do. The lack of cohesion may mean that they are operationally stretched, through trying to cover over the cracks on behalf of the customers and ineffective use of resources as they attempt new roles.  The issue may be resolved by fixing two way communication links. In some cases, It may however reflect serious strategic issues and operation design flaws which are hard to correct and lead to inadequate delivery and a downward spiral of performance. 
!Symptoms 
An ongoing barrage of operational issues, which fails to reduce as the new organisation beds in. Continuing questions to management about responsibilities and seeming inability of staff to co-ordinate their efforts for themselves. It can sometimes emerge as a major rift through a number of organisational levels.
!Solutions
Prevention lies in well thought out, cohesive organisational design and incremental implementation of small packages of change, with learning loops at all levels, supported by effective two way communication. 

Once it has occurred, the way out is effective two way communication. This may mean explaining what is intended and supporting staff to solve their own problems and also to create improved co-ordination mechanisms. It is just as important to listen and to take on board unexpected operational issues and respond to them. There may also be a management ‘turf war’ which is creating mixed messages and requires resolution.
!Links  
[[Bricks without Straw]] , [[Re-inventing the Wheel]] , [[Open Loops and Reverse Polarity]]
/***
|Name|ImageSizePlugin|
|Source|http://www.TiddlyTools.com/#ImageSizePlugin|
|Version|1.2.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|adds support for resizing images|
This plugin adds optional syntax to scale an image to a specified width and height and/or interactively resize the image with the mouse.
!!!!!Usage
<<<
The extended image syntax is:
{{{
[img(w+,h+)[...][...]]
}}}
where ''(w,h)'' indicates the desired width and height (in CSS units, e.g., px, em, cm, in, or %). Use ''auto'' (or a blank value) for either dimension to scale that dimension proportionally (i.e., maintain the aspect ratio). You can also calculate a CSS value 'on-the-fly' by using a //javascript expression// enclosed between """{{""" and """}}""". Appending a plus sign (+) to a dimension enables interactive resizing in that dimension (by dragging the mouse inside the image). Use ~SHIFT-click to show the full-sized (un-scaled) image. Use ~CTRL-click to restore the starting size (either scaled or full-sized).
<<<
!!!!!Examples
<<<
{{{
[img(100px+,75px+)[images/meow2.jpg]]
}}}
[img(100px+,75px+)[images/meow2.jpg]]
{{{
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
}}}
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
{{tagClear{
}}}
<<<
!!!!!Revisions
<<<
2009.02.24 [1.2.1] cleanup width/height regexp, use '+' suffix for resizing
2009.02.22 [1.2.0] added stretchable images
2008.01.19 [1.1.0] added evaluated width/height values
2008.01.18 [1.0.1] regexp for "(width,height)" now passes all CSS values to browser for validation
2008.01.17 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImageSizePlugin= {major: 1, minor: 2, revision: 1, date: new Date(2009,2,24)};
//}}}
//{{{
var f=config.formatters[config.formatters.findByField("name","image")];
f.match="\\[[<>]?[Ii][Mm][Gg](?:\\([^,]*,[^\\)]*\\))?\\[";
f.lookaheadRegExp=/\[([<]?)(>?)[Ii][Mm][Gg](?:\(([^,]*),([^\)]*)\))?\[(?:([^\|\]]+)\|)?([^\[\]\|]+)\](?:\[([^\]]*)\])?\]/mg;
f.handler=function(w) {
	this.lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		var floatLeft=lookaheadMatch[1];
		var floatRight=lookaheadMatch[2];
		var width=lookaheadMatch[3];
		var height=lookaheadMatch[4];
		var tooltip=lookaheadMatch[5];
		var src=lookaheadMatch[6];
		var link=lookaheadMatch[7];

		// Simple bracketted link
		var e = w.output;
		if(link) { // LINKED IMAGE
			if (config.formatterHelpers.isExternalLink(link)) {
				if (config.macros.attach && config.macros.attach.isAttachment(link)) {
					// see [[AttachFilePluginFormatters]]
					e = createExternalLink(w.output,link);
					e.href=config.macros.attach.getAttachment(link);
					e.title = config.macros.attach.linkTooltip + link;
				} else
					e = createExternalLink(w.output,link);
			} else 
				e = createTiddlyLink(w.output,link,false,null,w.isStatic);
			addClass(e,"imageLink");
		}

		var img = createTiddlyElement(e,"img");
		if(floatLeft) img.align="left"; else if(floatRight) img.align="right";
		if(width||height) {
			var x=width.trim(); var y=height.trim();
			var stretchW=(x.substr(x.length-1,1)=='+'); if (stretchW) x=x.substr(0,x.length-1);
			var stretchH=(y.substr(y.length-1,1)=='+'); if (stretchH) y=y.substr(0,y.length-1);
			if (x.substr(0,2)=="{{")
				{ try{x=eval(x.substr(2,x.length-4))} catch(e){displayMessage(e.description||e.toString())} }
			if (y.substr(0,2)=="{{")
				{ try{y=eval(y.substr(2,y.length-4))} catch(e){displayMessage(e.description||e.toString())} }
			img.style.width=x.trim(); img.style.height=y.trim();
			config.formatterHelpers.addStretchHandlers(img,stretchW,stretchH);
		}
		if(tooltip) img.title = tooltip;

		// GET IMAGE SOURCE
		if (config.macros.attach && config.macros.attach.isAttachment(src))
			src=config.macros.attach.getAttachment(src); // see [[AttachFilePluginFormatters]]
		else if (config.formatterHelpers.resolvePath) { // see [[ImagePathPlugin]]
			if (config.browser.isIE || config.browser.isSafari) {
				img.onerror=(function(){
					this.src=config.formatterHelpers.resolvePath(this.src,false);
					return false;
				});
			} else
				src=config.formatterHelpers.resolvePath(src,true);
		}
		img.src=src;
		w.nextMatch = this.lookaheadRegExp.lastIndex;
	}
}

config.formatterHelpers.addStretchHandlers=function(e,stretchW,stretchH) {
	e.title=((stretchW||stretchH)?'DRAG=stretch/shrink, ':'')
		+'SHIFT-CLICK=show full size, CTRL-CLICK=restore initial size';
	e.statusMsg='width=%0, height=%1';
	e.style.cursor='move';
	e.originalW=e.style.width;
	e.originalH=e.style.height;
	e.minW=Math.max(e.offsetWidth/20,10);
	e.minH=Math.max(e.offsetHeight/20,10);
	e.stretchW=stretchW;
	e.stretchH=stretchH;
	e.onmousedown=function(ev) { var ev=ev||window.event;
		this.sizing=true;
		this.startX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
		this.startY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
		this.startW=this.offsetWidth;
		this.startH=this.offsetHeight;
		return false;
	};
	e.onmousemove=function(ev) { var ev=ev||window.event;
		if (this.sizing) {
			var s=this.style;
			var currX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
			var currY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
			var newW=(currX-this.offsetLeft)/(this.startX-this.offsetLeft)*this.startW;
			var newH=(currY-this.offsetTop )/(this.startY-this.offsetTop )*this.startH;
			if (this.stretchW) s.width =Math.floor(Math.max(newW,this.minW))+'px';
			if (this.stretchH) s.height=Math.floor(Math.max(newH,this.minH))+'px';
			clearMessage(); displayMessage(this.statusMsg.format([s.width,s.height]));
		}
		return false;
	};
	e.onmouseup=function(ev) { var ev=ev||window.event;
		if (ev.shiftKey) { this.style.width=this.style.height=''; }
		if (ev.ctrlKey)  { this.style.width=this.originalW; this.style.height=this.originalH; }
		this.sizing=false;
		clearMessage();
		return false;
	};
	e.onmouseout=function(ev) { var ev=ev||window.event;
		this.sizing=false;
		clearMessage();
		return false;
	};
}
//}}}
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.5|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2009.04.11 [1.9.5] pass current tiddler object into wrapper code so it can be referenced from within 'onclick' scripts
2009.02.26 [1.9.4] in $(), handle leading '#' on ID for compatibility with JQuery syntax
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 5, date: new Date(2009,4,11)};

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

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

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

// // GLOBAL FUNCTION: $(...) -- 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=='undefined') { function $(id) { return document.getElementById(id.replace(/^#/,'')); } }
//}}}
!!Introduction
[[About|About OMM Director]]
[[Customise|Customising the Questionnaire]]

!![[Start »|Q1]]

/***
|Name:|LessBackupsPlugin|
|Description:|Intelligently limit the number of backup files you create|
|Version:|3.0.1 ($Rev: 2320 $)|
|Date:|$Date: 2007-06-18 22:37:46 +1000 (Mon, 18 Jun 2007) $|
|Source:|http://mptw.tiddlyspot.com/#LessBackupsPlugin|
|Author:|Simon Baird|
|Email:|simon.baird@gmail.com|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Description
You end up with just backup one per year, per month, per weekday, per hour, minute, and second.  So total number won't exceed about 200 or so. Can be reduced by commenting out the seconds/minutes/hours line from modes array
!!Notes
Works in IE and Firefox only.  Algorithm by Daniel Baird. IE specific code by by Saq Imtiaz.
***/
//{{{

var MINS  = 60 * 1000;
var HOURS = 60 * MINS;
var DAYS  = 24 * HOURS;

if (!config.lessBackups) {
	config.lessBackups = {
		// comment out the ones you don't want or set config.lessBackups.modes in your 'tweaks' plugin
		modes: [
			["YYYY",  365*DAYS], // one per year for ever
			["MMM",   31*DAYS],  // one per month
			["ddd",   7*DAYS],   // one per weekday
			//["d0DD",  1*DAYS],   // one per day of month
			//["h0hh",  24*HOURS], // one per hour
			//["m0mm",  1*HOURS],  // one per minute
			//["s0ss",  1*MINS],   // one per second
			["latest",0]         // always keep last version. (leave this).
		]
	};
}

window.getSpecialBackupPath = function(backupPath) {

	var now = new Date();

	var modes = config.lessBackups.modes;

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

		// the filename we will try
		var specialBackupPath = backupPath.replace(/(\.)([0-9]+\.[0-9]+)(\.html)$/,
				'$1'+now.formatString(modes[i][0]).toLowerCase()+'$3')

		// open the file
		try {
			if (config.browser.isIE) {
				var fsobject = new ActiveXObject("Scripting.FileSystemObject")
				var fileExists  = fsobject.FileExists(specialBackupPath);
				if (fileExists) {
					var fileObject = fsobject.GetFile(specialBackupPath);
					var modDate = new Date(fileObject.DateLastModified).valueOf();
				}
			}
			else {
				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
				var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
				file.initWithPath(specialBackupPath);
				var fileExists = file.exists();
				if (fileExists) {
					var modDate = file.lastModifiedTime;
				}
			}
		}
		catch(e) {
			// give up
			return backupPath;
		}

		// expiry is used to tell if it's an 'old' one. Eg, if the month is June and there is a
		// June file on disk that's more than an month old then it must be stale so overwrite
		// note that "latest" should be always written because the expiration period is zero (see above)
		var expiry = new Date(modDate + modes[i][1]);
		if (!fileExists || now > expiry)
			return specialBackupPath;
	}
}

// hijack the core function
window.getBackupPath_mptw_orig = window.getBackupPath;
window.getBackupPath = function(localPath) {
	return getSpecialBackupPath(getBackupPath_mptw_orig(localPath));
}

//}}}

/***
|''Name''|<...>|
|''Description''|<...>|
|''Author''|FND|
|''Version''|<#.#.#>|
|''Status''|<//unknown//; @@experimental@@; @@beta@@; //obsolete//; stable>|
|''Source''|http://devpad.tiddlyspot.com/#<...>|
|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/contributors/FND/|
|''License''|[[BSD|http://www.opensource.org/licenses/bsd-license.php]]|
|''CoreVersion''|2.5.0|
|''Requires''|<...>|
|''Keywords''|<...>|
!Description
<...>
!Notes
<...>
!Usage
{{{
<<...>>
}}}
!!Parameters
<...>
!!Examples
<<...>>
!Configuration Options
<...>
!Revision History
!!v<#.#> (<yyyy-mm-dd>)
* <...>
!To Do
<...>
!Code
***/
//{{{
(function($) {

var ignore = null; // XXX: hacky; required due to async closing animation lacking callback

config.macros.highlightify = {
	className: "tiddlyLinkVisible",

	handler: function(place, macroName, params, wikifier, paramString, tiddler) {
		var container = $(place);
		$('<span class="highlightify" />').data("params", params).
			appendTo(container);
		var tiddlerEls = [];
		story.forEachTiddler(function(title, el) {
			if(title !== ignore) {
				tiddlerEls.push(title);
			}
		});
		var self = this;
		container.find("a").
			removeClass(this.className).
			each(function(i, item) {
				var title = $(item).attr("tiddlylink");
				if(tiddlerEls.contains(title)) {
					$(item).addClass(self.className);
				}
			});
	}
};

// hijack story methods to manually triggger macro refresh -- XXX: DICW

var _displayTiddler = Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement, tiddler, template, animate, unused, customFields, toggle, animationSrc) {
	var status = _displayTiddler.apply(this, arguments);
	refreshMacro();
	return status;
};

var _closeTiddler = Story.prototype.closeTiddler;
Story.prototype.closeTiddler = function(title,animate,unused) {
	var status = _closeTiddler.apply(this, arguments);
	ignore = title;
	refreshMacro();
	ignore = null;
	return status;
};

var refreshMacro = function() {
	$(".highlightify").each(function(i, item) {
		item = $(item);
		place = item.parent()[0];
		params = item.data("params").join(" ");
		invokeMacro(place, "highlightify", params);
		item.remove();
	});
};

})(jQuery);
//}}}

<<tiddler MaturityMatrixPathologyScript>>
<<tiddler MaturityMatrixPathologyScript>>
<script>
(function($){
	$("td:contains(2), td:contains(1) ").addClass('red');
	$("td:contains(3), td:contains(4) , td:contains(5)").addClass('amber');
	$("td:contains(6), td:contains(7) ").addClass('green');
})(jQuery); 
</script>
<<tiddler MaturityMatrixPathologyScript>>
<<tiddler MaturityMatrixPathologyScript>>
Type the text for 'Managing Strategy: Capacity'
<script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-19280920-2']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>

!Organisational Maturity Matrix
{{matrix{<<tiddler MaturityMatrixTable>>}}}<<tiddler MaturityMatrixScript>>
<<tiddler OmmPossibleArchetypes>>
<<tiddler [[Maturity Matrix]]>>
<<tiddler OmmSummary>>

<script>
(function($){
	$("td:contains(2), td:contains(1) ").addClass('red');
	$("td:contains(3), td:contains(4) , td:contains(5)").addClass('amber');
	$("td:contains(6), td:contains(7) ").addClass('green');
})(jQuery); 
</script>
<script>
var out = [];
var Aspects=["Operations - ","Co-ordination - ","Resource & Performance Delivery - ","Monitoring - ","Development - ","Managing Strategy - "];
var Stages= ["Capacity","Connectivity","Balance","Consciousness"];


for(var i = 0; i < Stages.length; i++) {
 var col1 = ("| "+Stages[i]);

var a=0;
    var score=DataTiddler.getData(Questions[i],"score");
    var col2 = (' | [['+score+'|'+Aspects[a]+Stages[i]+']]');

var a=1;
   var j = i+4;
   var score=DataTiddler.getData(Questions[j],"score");
   var col3 = (' | [['+score+'|'+Aspects[a]+Stages[i]+']]');

var a=2;
  var j = j+4;
  var score=DataTiddler.getData(Questions[j],"score");
  var col4 = (' | [['+score+'|'+Aspects[a]+Stages[i]+']]');

var a=3;
  var j = j+4;
  var score=DataTiddler.getData(Questions[j],"score");
  var col5 = ( ' | [['+score+'|'+Aspects[a]+Stages[i]+']]');

var a=4;
  var j = j+4;
  var score=DataTiddler.getData(Questions[j],"score");
  var col6 = ( ' | [['+score+'|'+Aspects[a]+Stages[i]+']]');

var a=5;
  var j = j+4;
  var score=DataTiddler.getData(Questions[j],"score");
  var col7 = ( ' | [['+score+'|'+Aspects[a]+Stages[i]+']] |');

var row1 = col1 + col2 + col3 + col4 + col5 + col6 + col7;
out.push(row1);
}
out.push("| | Operations  | Co-ordination | Resource & Performance Delivery | Monitoring | Development | Managing Strategy |h");
out.push("|aspects of organisational maturity |c");
out.push("{{Qhelp{Click on the coloured table cells to explore organisational maturity and select [[archetypes|About Archetypes]]}}}")
return out.join('\n');
</script>
// by Tobias Beer http://tbgtd.tiddlyspot.com/#MessageFadeOut
//{{{
config.options.txtFadeTimer = 500; // 0.2 seconds 

window.displayMessage=function(text,linkText,fadeTimer) { 
        var e = getMessageDiv(); 
        if(!e) { 
                alert(text); 
                return; 
        } 
        if(linkText) { 
                var link = createTiddlyElement(e,"a",null,null,text); 
                link.href = linkText; 
                link.target = "_blank"; 
        } else { 
                e.appendChild(document.createTextNode(text)); 
        } 
        if(config.options.txtFadeTimer > 0) { 
                setTimeout(clearMessage, config.options.txtFadeTimer); 
        } 
}
//}}}
!Frequency
Extremely common
!Also Known As
Management “Black Holes”
!System Structure
This is a gap in the management structure, particularly the reporting or resourcing structure, so levels of management simply don’t exist, or exist without the information or capability to actually function effectively as a manager, i.e. incapable of taking well informed decisions and putting them into effect.
The result is that decisions are frequently taken by too high a level of management and consequently are often not well grounded in reality and are impractical.  The missing link archetype results in information that is divorced from its context, so management doesn’t really understand its meaning and this results in poor decision making.
!Symptoms
No clarity on line management structure, reporting to the “boss’s boss” or to head office whilst bypassing local management.
!Solutions
Ensure that each operational activity is linked to the appropriate level of management and feeds information to that level and negotiates resources there, rather than reporting up several levels.
!Links
[[Bricks without Straw]] , [[Dictators]]
<<tiddler MaturityMatrixPathologyScript>>
<<tiddler MaturityMatrixPathologyScript>>
<<tiddler MaturityMatrixPathologyScript>>
<<tiddler MaturityMatrixPathologyScript>>
((_[[try to open the desk|desk]](doesn't open the tiddler!)))
<script>
jQuery('#tiddlersBar').slideUp('slow');
</script>
!Frequency
Common
!Also Known As
Whistleblowers Charter
!System Structure
This archetype concerns collusion to keep more senior managers in the dark. It is unlikely to exist if effective monitoring is in place. It either reflects lack of trust in a supportive management relationship, or is the outcome of inter-peer politics. Management relationship issues may stem from imposed targets and lack of opportunities to respond resulting in fear of admitting failure or fear of reprisals. Relationship issues may alternatively stem from a management tendency to interfere or to remain too distant. Peer politics arise in an internally competitive environment or could be due to unclear responsibilities.
!Symptoms
Generally quiet, ‘nothing to report’ style management meetings, interrupted every now and then by massive issues appearing to materialise ‘out of the blue’. 
!Solutions
This problem is detected by effective monitoring and is addressed by improving two-way dialogue between manager and managed. Conversations need to cover inter-peer co-operation as well as individual responsibilities. A combination of both 1:1s and group meetings may shed light on what is actually happening. 
!Links
[[Dictators]], [[Open Loops and Reverse Polarity]] , [[Control Dilemma]] , [[Giraffe]] , [[Strategic Silos]]

<script>
var out=[];
var here=story.findContainingTiddler(place);
var thisTid=here.getAttribute("tiddler");
var tids=['Q1','Q2','Q3','Q4','Q5','Q6','Q7','Q8','Q9','Q10','Q11','Q12','Q13','Q14','Q15','Q16','Q17','Q18','Q19','Q20','Q21','Q22','Q23','Q24'];
for (var i=0; i<tids.length; i++) {
var t=tids[i].title;
	var score=DataTiddler.getData(tids[i],"score");
        var val=store.getValue(tids[i],"primary");
	var val1=store.getValue(tids[i],"secondary");
	var val3=store.getValue(tids[i],"maturity");
	var filter="[tag["+val.readBracketedList().join("]][tag[")+"]]";
	var filter1="[tag["+val1.readBracketedList().join("]][tag[")+"]]";
	var list=store.filterTiddlers(filter).map(function(t){return"[["+t.title+"]]"});
	var list1=store.filterTiddlers(filter1).map(function(t){return"[["+t.title+"]]"});
if (val3 == thisTid){
out.push('|'+list.join(" ")+'|'+list1.join(" ")+'|');
	}
}
out.push('|Primary Archetype|Secondary Archetype|h');
out.push('|Possible archetypes for ' + thisTid +'|c');
return out.join("\n");
</script>
<script>
var out=[];
tids=['Q1','Q2','Q3','Q4','Q5','Q6','Q7','Q8','Q9','Q10','Q11','Q12','Q13','Q14','Q15','Q16','Q17','Q18','Q19','Q20','Q21','Q22','Q23','Q24'];
for (var i=0; i<tids.length; i++) {
        var t=tids[i].title;
	var score=DataTiddler.getData(tids[i],"score");
	var val=store.getValue(tids[i],"primary");
	var val1=store.getValue(tids[i],"secondary");
	var filter="[tag["+val.readBracketedList().join("]][tag[")+"]]";
	var filter1="[tag["+val1.readBracketedList().join("]][tag[")+"]]";
	var list=store.filterTiddlers(filter).map(function(t){return"[["+t.title+"]]"});
	var list1=store.filterTiddlers(filter1).map(function(t){return"[["+t.title+"]]"});
		if (score <= 2) {
		out.push('| '+tids[i]+' |<<tiddler [['+tids[i]+' Text]]>>|'+list.join("<br />")+'|'+list1.join("<br />")+'|');
		}
}

out.push('|Table of all questions and archetypes|c');
out.push('| Question No | Question |Primary Pathology | Secondary Pathology |h');
return out.join("\n");
</script>
!User Rated Archetypes
{{Qhelp{
[[Archetypes|About Archetypes]] you have rated relevant to <<tiddler [[your organisation]]>> appear below
}}}
<<tiddler RatingSummary with:"names icons">>
OMM Director
!Frequency
Extremely common
!Also Known As
N/A
!System Structure
A feedback loop starts with a process and information about the process performance which is fed back and used to inform decisions to change the process, to do more, or less or something different.  There are two common problems – open loops and reverse polarity.
The first is a failure to close the loop, e.g., information on a process is collected, but there is no way to use the information to change the process.
“Reverse Polarity” happens when the feedback signal is run in reverse.  So instead of collecting information about how an operation is running, which is a feedback loop from the operations to management, the opposite happens and the information flows the other way.  So the operations are informed about management (particularly their aspirations) but not the other way round.
!Symptoms
“Open Loops” is very common in collecting so called “feedback” from staff or customers.  It isn’t actually feedback unless there is a mechanism that allows it to change the process.  The "Dictators" is a particular systemic example of the open loop.
This problem is common in performance management when performance measures are used not to inform about a process, but instead used to do the opposite, to drive the process.  Typically this results in operational staff “gaming the system” to give management the answers that management have said they want.  The result is organisations where management’s aspirations are not informed by real information and decision making becomes increasingly ungrounded and divorced from reality.
!Solutions
Careful design of feedback loops to check that they do actually connect to  decision makers and that the information is flowing the right way to allow grounded decision making.
!Links
[[Fantasy World]], [[Dictators]], [[Bricks without Straw]]
<<tiddler MaturityMatrixPathologyScript>>
<<tiddler MaturityMatrixPathologyScript>>
<<tiddler MaturityMatrixPathologyScript>>
<<tiddler MaturityMatrixPathologyScript>>
[img(25em,auto)[ommimages/dirorg.jpg]]
<<formTiddler OrganisationTemplate>><data>{"Organisation":"","Operations":"","Partners":"","Suppliers":"","Customers":"","ExternalOperationalEnvironment":""}</data>
<html>
<div class="organisation">
 <b>The organisation</b> e.g. ABC Company<br>
 <input name=Organisation type=text /><br>
 <b>Operations</b> e.g. D Unit , E Unit,  F Unit<br>
 <input name=Operations type=text /><br>
 <b>Partners:</b> e.g. Warwick & Sons<br/>
 <input name=Partners type=text /><br/>
<b>Customers:</b> e.g. Urban dwellers 18-40<br/>
 <input name=Customers type=text /><br/>
 <b>Suppliers:</b> e.g. Ashwood Wholesale<br/>
 <input name=Suppliers type=text /><br/>
 <b>The Operational Environment</b> e.g. Food Retail<br>
 <input name=ExternalOperationalEnvironment type=text /><br>
</div>
</html>
!Analysis
[[Results]]
[[Triggered Archetypes]]
[[About Archetypes|About Archetypes]]
[[Rating Archetypes|How to rate archetypes]]
[[Summary of Rated Archetypes]]
[[Custom Report]]
[[Where Next?]]
[[Credits]]

<<print print "print what you see" printButton>>


{{Qhelp{
Please use the print button to print aspects of <<tiddler OmmVersion>> you see to the right
}}}
|Name|IntroTheme|
|Description|for ~SCiO OMM|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|StyleSheet|##StyleSheet|

!PageTemplate

<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='outputMenu' refresh='content' tiddler='OutputMenu'></div>
<div id='displayArea'>
<div id='tiddlerDisplay'></div>

<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>

!ViewTemplate
<!--{{{-->
<div class='title' macro='view title'></div>
<div macro="showWhenTagged Q">
	<div class='Qtext' macro='tiddler {{tiddler.title+" Text"}}'></div>
	<div class='Qnav' macro='tiddler {{tiddler.title+" Nav"}}'></div>
	<div class='Qscore' macro ='formTiddler ScoreTemplate'</div>
	<div class='Qhelp' macro='tiddler {{tiddler.title+" Help"}}'></div>
</div>
<div class='viewer' macro='view text wikified'></div>
<!--}}}-->

!StyleSheet
#mainMenu {display:none}
#displayArea {margin:2em 5em 0em 25em;}
.people input , .organisation input {width:26em;}
.subtitle {display:none;}
.Qnav {text-align:right; font-size:1.5em;}
Notes
Add notes to the keys , [[P1]], [[P2]],  [[P3]] etc

!AKA
Fantasy Org


!AKA
[[The Goldfish]]







Note: differnece between dilemma and pathology.



!AKA
[[The Stray Lamb]]
!Notes
primary in 24?




<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::HeaderTop]] [[ColorPalette::Background]]'>
<div macro="hideWhen readOnly"><div class='admin' refresh='content' tiddler='Admin'></div></div>
	<div class='headerShadow'>
	<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
			<div class='straplineWrapper'>
			<span class='ommVersion' refresh='content' tiddler='OmmVersion'></span>
			<div class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></div>
</div>
</div>
</div>
<div id='introMenu' refresh='content' tiddler='IntroMenu'></div>
<div id='questionsMenu' refresh='content' tiddler='QuestionsMenu'></div>
<div id='outputMenu' refresh='content' tiddler='OutputMenu'></div>
<div id='sidebar'>
	<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>

	<div id='sidebarChecklist' class='output'  refresh='content' force='true' tiddler='Sum'></div>
</div>

<div id='displayArea'>
<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>

<div id='messageArea'></div>


<div id='tiddlerDisplay'></div>
<div class='ommFooter'>
	<span class='ZZommFooter' refresh='content' tiddler='ommFooter'></span>
</div>
</div>
</div>

<!--}}}--> 
function getPageTitle() { return "OMM Director"; }
When you have looked at a pathology you can decide whether relevant to your organisation.
You can rate a pathology three ways;

    * possibly relevant ( * - one star)
    * certainly relevant (** - two stars),
    * not relevant (
[[help|Rating Guide]]

[img(25em,auto)[ommimages/dirpeople.jpg]]
<<formTiddler PeopleTemplate>><data>{"You":"","OperationsManagers":""}</data>
Separate names with commas if necessary.
<html>
<div class="people">
<b>Operations Managers</b> e.g. Alice, Brian, Christopher<br/>
 <input name=OperationsManagers type=text /><br/>
</div>
</html>
<<plugins>>
/***
|''Name''|PrintMacro|
|''Version''|0.1|
|''Status''|@@experimental@@|
|''Author''|FND|
|''Source''|[[FND's DevPad|http://devpad.tiddlyspot.com/#PrintMacro]]|
|''License''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion''|2.1|
|''Type''|macro|
|''Requires''|N/A|
|''Overrides''|N/A|
|''Description''|prints the current document|
!Usage
{{{
<<print [label] [tooltip] [class] [access key]>>
}}}
<<print>>
!Revision History
!!v0.1 (2007-12-10)
* initial release
!Code
***/
//{{{
config.macros.print = {
	label: "print",
	prompt: "print document",
	buttonClass: "",
	accessKey: ""
};

config.macros.print.handler = function(place, macroName, params, wikifier, paramString, tiddler) {
	var label = params[0] || this.label;
	var prompt = params[1] || this.prompt;
	var buttonClass = params[2] || this.buttonClass;
	var accessKey = params[3] || this.accessKey;
	createTiddlyButton(place, label, prompt,
		function() { window.print(); },
		buttonClass, null, accessKey);
}
//}}}
''<<snapshot print label:'Print' prompt:'click to print this pathology' id:here>>''
<data>{"score":"2"}</data>
*Within your organisation, do you have the people, equipment and funding to provide the services and / or products to your customers that they need?
<<tiddler Q1NavNext>><<tiddler ShowQuestionsMenu>>
Within <<tiddler [[your organisation]]>> to what extent do you have enough resources to meet the needs of <<tiddler [[your customers]]>>?
<data>{"score":"2"}</data>
*Do you take input into – or do you consult about – the resource and performance decisions for your organisation, so that your organisation is appropriately resourced and measured?
<script label="Next »">
	var score=DataTiddler.getData('Q10','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Q13' : 'Q11');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent do <<tiddler [[your operations managers]]>> input into the resource and performance decision process to ensure that the resources are adequate to enable them to meet their performance obligations?
<data>{"score":"2"}</data>
*Do operations managers get a fair hearing when they make requests for resource or report on performance? 
*Are their requests taken seriously by your organisation and acted on when appropriate, or do they think it seems like going through the motions? 
*Do external factors override the right decisions?
<script label="Next »">
	var score=DataTiddler.getData('Q11','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Q13' : 'Q12');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent are <<tiddler [[your operations managers]]>> able to take decisions about resources and performance so that <<tiddler [[your organisation]]>> is able to deliver to meet users’ needs? 
<data>{"score":"2"}</data>
*Is there enough understanding in your organisation of how the units within the operations do – or might – work together to deliver synergy?

<script label="Next »">
	var score=DataTiddler.getData('Q12','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Q13' : 'Q13');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent are the potential synergies within <<tiddler [[your operations]]>> in <<tiddler [[your organisation]]>> realised?
<data>{"score":"2"}</data>
*Do you ever go to find out what is going on in operations? 
*Are you able to understand your managers’ operational issues?
<script label="Next »">
	var score=DataTiddler.getData('Q13','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Q17' : 'Q14');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent do you allocate time and have a process to understand how things work within the operations of <<tiddler [[your organisation]]>>?
<data>{"score":"2"}</data>
*Do you make a point of routinely (but not regularly nor too frequently) talking to the staff in operations to see what goes on and how well things are running?
<script label="Next »">
	var score=DataTiddler.getData('Q14','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Q17' : 'Q15');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent do you directly observe, over a period of time, the workings of every operation in <<tiddler [[your organisation]]>>?
<data>{"score":"2"}</data>
*Are you involved (perhaps unhelpfully?) in the day-to-day running of your organisation?
*Are you ‘interested but hands-off’ or is it inappropriate, perhaps verging on micro-management?
<script label="Next »">
	var score=DataTiddler.getData('Q15','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Q17' : 'Q16');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent do you refrain from micro-management to enable <<tiddler [[your operations managers]]>> to get on with running the business.
<data>{"score":"2"}</data>
*Do your managers (and other directors) understand the need to understand what your people do and how this knowledge can help you in your own role?
<script label="Next »">
	var score=DataTiddler.getData('Q16','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Q17' : 'Q17');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent is the need for directors to understand operational processes recognised?
<data>{"score":"2"}</data>
*Does your organisation dedicate resource to understanding what is going on outside it, looking at new developments and how they may affect it; identifying both opportunities and threats?
<script label="Next »">
	var score=DataTiddler.getData('Q17','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Q21' : 'Q18');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent does <<tiddler [[your organisation]]>> have resources to understand <<tiddler [[the external operational environment]]>>, predict future opportunities and risks, and plan change?
<data>{"score":"2"}</data>
*Does your organisation have clear processes for looking at new developments, within your business / organisation and outside it, and mechanisms for reporting on them and reacting to them?
<script label="Next »">
	var score=DataTiddler.getData('Q18','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Q21' : 'Q19');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent does <<tiddler [[your organisation]]>> access information on all the key features of <<tiddler [[the external operational environment]]>>?
<data>{"score":"2"}</data>
*Can your organisation change quickly enough to match changes in the world outside, in technology, in your customer group and in the wider organisation?
<script label="Next »">
	var score=DataTiddler.getData('Q19','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Q21' : 'Q20');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent can <<tiddler [[your organisation]]>> implement responsive changes rapidly enough to meet changes within <<tiddler [[the external operational environment]]>>?
<script label="Next »">
       var score=DataTiddler.getData('Q1','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Q5' : 'Q2');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
<data>{"score":"2"}</data>
*Does your organisation have mechanisms and processes to communicate effectively enough with your customers for receiving orders precisely and with enough information, and for receiving feedback from customers? 
*Does your organisation also have mechanisms and processes for dealing with your suppliers - for ensuring that they deliver the right products and / or services to the right quality, cost and in a timely manner?
<script label="Next »">
       var score=DataTiddler.getData('Q2','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Q5' : 'Q3');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent does <<tiddler [[your organisation]]>>  have ways, or routes, for two-way communication with  both <<tiddler [[your customers]]>>  and with <<tiddler [[your suppliers]]>>?
<data>{"score":"2"}</data>
*Is your organisation aware of the importance of changes in the outside world – both within your business and outside it – that impact on its future success and even survival?
<script label="Next »">
	var score=DataTiddler.getData('Q20','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Results' : 'Q21');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent is there a process to identify key future risks to the relationships <<tiddler [[your organisation]]>> has with <<tiddler [[the external operational environment]]>> and to what extent does it have plans which can be deployed for its survival if these risks occur?
<data>{"score":"2"}</data>
*Does your organisation understand the full implications of its role in the wider environment?
<script label="Next »">
	var score=DataTiddler.getData('Q21','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Results' : 'Q22');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent is <<tiddler [[your organisation]]>> clear how it fits with changes in <<tiddler [[the external operational environment]]>>?
<data>{"score":"2"}</data>
*Does your organisation have a strategy for delivering services or products to its environment over the longer term?
<script label="Next »">
       var score=DataTiddler.getData('Q22','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Results' : 'Q23');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent does <<tiddler [[your organisation]]>> have a way to reconcile the needs of the future in <<tiddler [[the external operational environment]]>>  with the capabilities it has today?
<data>{"score":"2"}</data>
*Does your organisation have a way of balancing the always present needs of the delivery of operational services or products with the longer term view?
<script label="Next »">
	var score=DataTiddler.getData('Q23','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Results' : 'Q24');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent can <<tiddler [[your organisation]]>> develop strategy that is practicable and appropriate for the future demands of <<tiddler [[the external operational environment]]>>?
<data>{"score":"2"}</data>
*Does your organisation have an up-to-date strategy that is meaningful to your staff, is referred to by them, and is consistent with that of the organisation as a whole? 
<script label="Next »">
       var score=DataTiddler.getData('Q24','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Results' : 'Results');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script><data>{"score":"2"}</data>
To what extent does your strategy create a purpose for your organisation that is consistent with the purposes of units within <<tiddler [[your operations]]>>?
<data>{"score":"2"}</data>
*Are you able to deliver the full service that your customer(s) require within your target market?
<script label="Next »">
	var score=DataTiddler.getData('Q3','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Q5' : 'Q4');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent can <<tiddler [[your organisation]]>> meet the needs of <<tiddler [[your customers]]>> to their satisfaction?
<data>{"score":"2"}</data>
*How well do your operational staff understand what is important about their roles and in particular, the key features of the services and / or products from the customers' perspective and from your business’ perspective?
<script label="Next »">
	var score=DataTiddler.getData('Q4','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Q5' : 'Q5');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent do operations share an up-to-date understanding of how they deliver their products or services, and how well they deliver them?
<data>{"score":"2"}</data>
*Do you have mechanisms to ensure that your organisation works smoothly within itself and when working with partners, whether working as part of a bigger process or a supply chain, or collaborating to provide a shared service?
<script label="Next »">
	var score=DataTiddler.getData('Q5','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Q9' : 'Q6');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script><data>{"score":"1"}</data>
To what extent do <<tiddler [[your operations]]>>  and <<tiddler [[partners]]>> have operating between them the necessary standards, IT support tools, common plans, schedules, agreements, knowledge or other ways to ensure a smooth flow of delivery?
<data>{"score":"2"}</data>
*Do the other organisations that your organisation interacts with, co-operate with you in co-ordinating the areas of overlap and interaction in resource, work, processes and so forth?
<script label="Next »">
	var score=DataTiddler.getData('Q6','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Q9' : 'Q7');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent are all <<tiddler [[your operations]]>> and <<tiddler [[partners]]>> using these ways of co-ordinating?
<data>{"score":"2"}</data>
*In day-to-day operations, is your organisation able to get on with its work without unreasonable disturbance by other organisations? 
*Equally, do you provide the support to other organisations that they could reasonably expect from shared requirements? 
*Does this effectively ensure that work bottlenecks and work ‘feasts and famines’ are avoided?
<script label="Next »">
	var score=DataTiddler.getData('Q7','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Q9' : 'Q8');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent is <<tiddler [[your organisation]]>> free from unreasonable disturbance caused by lack of co-ordination within <<tiddler [[your operations]]>>?
<data>{"score":"2"}</data>
*Are you aware of the areas where conflicts for resource, materials etc. could arise within your organisation or between your organisation and other organisations that you work alongside?
<script label="Next »">
	var score=DataTiddler.getData('Q8','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Q9' : 'Q9');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent do you understand the potential conflicts that could occur within <<tiddler [[your operations]]>> and does <<tiddler [[your organisation]]>> have ways of addressing these?
<data>{"score":"2"}</data>
*Are there processes in your organisation for taking decisions about resourcing?
*Are they linked to and based on the performance of operations? 
*Are there processes for measuring performance and rational processes for allocating resource?
<script label="Next »">
	var score=DataTiddler.getData('Q9','score');
       var here=story.findContainingTiddler(place);
       story.displayTiddler(here, score<3 ? 'Q13' : 'Q10');
       story.closeTiddler(here.getAttribute("tiddler")); /* close self */
       return false;
</script>
To what extent are there processes in <<tiddler [[your organisation]]>> for deciding the levels of resourcing and performance required of <<tiddler [[your operations]]>>?
<<omm>>
!Question 1
Within ''<<tiddler [[Organisation::organisation]]>>'' to what extent do you have enough resources to meet the needs of ''<<tiddler [[Organisation::customers]]>>''?
!!Question 1 more
*Within your organisation, do you have the people, equipment and funding to provide the services and/or products to your customers that they need?
!Question 2
To what extent does ''<<tiddler [[Organisation::organisation]]>>'' have ways, or routes, for two-way communication with  both ''<<tiddler [[Organisation::customers]]>>'' and with ''<<tiddler [[Organisation::suppliers]]>>''?
!!Question 2 more
*Does your organisation have mechanisms and processes to communicate effectively enough with your customers for receiving orders precisely and with enough information, and for receiving feedback from customers? 
*Does your organisation also have mechanisms and processes for dealing with your suppliers - for ensuring that they deliver the right products and/or services to the right quality, cost and in a timely manner?
!Question 3
To what extent can ''<<tiddler [[Organisation::organisation]]>>'' meet the needs of ''<<tiddler [[Organisation::customers]]>>'' to their satisfaction?
!!Question 3 more
*Are you able to deliver the full service that your customer(s) require within your target market?
!Question 4
To what extent do operations share an up-to-date understanding of how they deliver their products or services, and how well they deliver them?
!!Question 4 more
*How well do your operational staff understand what is important about their roles and in particular, the key features of the services and/or products from the customers' perspective and from your businesses perspective?
!Question 5
To what extent do ''<<tiddler [[Organisation::operations]]>>'' and ''<<tiddler [[Organisation::partners]]>>'' have operating between them the necessary: standards, IT support tools, common plans, schedules, agreements, knowledge or other ways to ensure a smooth flow of delivery?
!!Question 5 more
*Do you have mechanisms to ensure that your organisation works smoothly within itself and when working with partners, whether working as part of a bigger process or a supply chain, or collaborating to provide a shared service?
!Question 6
To what extent are all ''<<tiddler [[Organisation::operations]]>>'' and ''<<tiddler [[Organisation::partners]]>>'' using these ways of co-ordinating?
!!Question 6 more
*Do the other organisations that your organisation interacts with, co-operate with you in co-ordinating the areas of overlap and interaction in resource, work, processes and so forth?
!Question 7
To what extent is ''<<tiddler [[Organisation::organisation]]>>'' free from unreasonable disturbance caused by lack of co-ordination within ''<<tiddler [[Organisation::operations]]>>''?
!!Question 7 more
*In day-to-day operations, is your organisation able to get on with its work without unreasonable disturbance by other organisations? Equally, do you provide the support to other organisations that they could reasonably expect from shared requirements? Does this effectively ensure that work bottlenecks and work "feasts and famines" are avoided?
!Question 8
To what extent do you understand the potential conflicts that could occur within ''<<tiddler [[Organisation::operations]]>>'' and does ''<<tiddler [[Organisation::organisation]]>>'' have ways of addressing these?
!!Question 8 more
*Are you aware of the areas where conflicts for resource, materials etc.. could arise within your organisation or between your organisation and other organisations that you work alongside?
!Question 9
To what extent are there processes in ''<<tiddler [[Organisation::organisation]]>>'' for deciding the levels of resourcing and performance required of ''<<tiddler [[Organisation::operations]]>>''?
!!Question 9 more
*Are there processes in your organisation for taking decisions about resourcing.  
*Are they linked to and based on the performance of operations? 
*Are there processes for measuring performance and rational processes for allocating resource?
!Question 10
To what extent do ''<<tiddler [[Organisation::managers]]>>'' input into the resource and performance decision process to ensure that the resources are adequate to enable them to meet their performance obligations?
!!Question 10 more
*Do you take input into / do you consulted about, the resource and performance decisions for your organisation, so that your organisation is appropriately resourced and measured?
!Question 11
To what extent are ''<<tiddler [[Organisation::managers]]>>'' able to take decisions about resources and performance so that ''<<tiddler [[Organisation::organisation]]>>'' is able to deliver to meet users’ needs? 
!!Question 11 more
*Do operations managers get a fair hearing when they make requests for resource or report on performance? 
*Are their requests taken seriously by your organisation and acted on when appropriate, or do they think it seem like going through the motions? 
*Do external factors override the right decisions?
!Question 12
To what extent are the potential synergies within ''<<tiddler [[Organisation::operations]]>>'' in ''<<tiddler [[Organisation::organisation]]>>'' realised?
!!Question 12 more
*Is there enough understanding in your organisation of how the units within the operations do or might work together to deliver synergy?
!Question 13
To what extent do you allocate time and have a process to understand how the operations in ''<<tiddler [[Organisation::organisation]]>>'' work?
!!Question 13 more
*Do you ever go to find out what is going on in operations? 
*Are you able to understand your managers operational issues?
!Question 14
To what extent do you directly observe, over a period of time, how each operation in ''<<tiddler [[Organisation::organisation]]>>'' works?
!!Question 14 more
*Do you make a point of routinely (but not regularly or too frequently) talking to the staff in operations to see what goes on and how well things are running?
!Question 15
To what extent do you refrain from micro-management to enable ''<<tiddler [[Organisation::managers]]>>'' to get on with running the business.
!!Question 15 more
*Are you involved in the day-to-day running of your organisation. 
*Are you "interested but hands-off" or is it inappropriate, perhaps verging on micro-management?
!Question 16
To what extent is the need for directors to understand operational processes recognised?
!!Question 16 more
*Do your managers (and other directors) understand the need to understand what your people do and how this knowledge can help you in your own role?
!Question 17
To what extent does ''<<tiddler [[Organisation::organisation]]>>'' have resources to understand ''<<tiddler [[Organisation::environment]]>>'', predict future opportunities and risks and plan change?
!!Question 17 more
*Does your organisation dedicate resource to understanding what is going on outside it, looking at new developments and how they may affect it; identifying opportunities and threats?
!Question 18
To what extent does ''<<tiddler [[Organisation::organisation]]>>'' access information on all the key features of ''<<tiddler [[Organisation::environment]]>>''?
!!Question 18 more
*Does your organisation have clear processes for looking at new developments, within your business / organisation and outside it, and mechanisms for reporting on them and reacting to them?
!Question 19
To what extent can ''<<tiddler [[Organisation::organisation]]>>'' implement responsive changes rapidly enough to meet changes within ''<<tiddler [[Organisation::environment]]>>''?
!!Question 19 more
*Can your organisation change quickly enough to match changes in the world outside, in technology, in your customer group and in the wider organisation?
!Question 20
To what extent is there a process to identify key future risks to the relationships ''<<tiddler [[Organisation::organisation]]>>'' has with ''<<tiddler [[Organisation::environment]]>>'' and to what extent does it have plans which can be deployed for its survival if these risks occur?
!!Question 20 more
*Is your organisation aware of the importance of changes in the outside world - both within your business / organisation and outside it - impacting its future success and even survival?
!Question 21
To what extent is ''<<tiddler [[Organisation::organisation]]>>'' clear how it fits with changes in ''<<tiddler [[Organisation::environment]]>>''?
!!Question 21 more
*Does your unit have a strategy for delivering services or products over the longer term?
!Question 22
To what extent does ''<<tiddler [[Organisation::organisation]]>>'' have a way to reconcile the needs of the future in ''<<tiddler [[Organisation::environment]]>>'' with the capabilities it has today?
!!Question 22 more
*Does your unit have a strategy for delivering services or products over the longer term?
!Question 23
To what extent can ''<<tiddler [[Organisation::organisation]]>>'' develop strategy that is both practicable and appropriate for the future demands of ''<<tiddler [[Organisation::environment]]>>''?
!!Question 23 more
*Does your unit have a way of balancing the always present needs of the delivery of operational services or products with the longer term view?
!Question 24
To what extent does strategy create a purpose for ''<<tiddler [[Organisation::operations]]>>'' that is consistent with the purpose of ''<<tiddler [[Organisation::operations]]>>''?
To what extent does your strategy create a purpose for your organisation which is consistent with the purposes of units within ''<<tiddler [[Organisation::operations]]>>''?
!!Question 24 more
*Does your unit have an up-to-date strategy that is meaningful to your staff, referred to by them and which is consistent with that of the organisation as a whole? 
!!Questionnaire

Guide to scoring
1 - ‘barely’
7 - 'entirely'
(Please use the 
full scale  from 1-7)
!!Options
!![[Reset »|Re-start]]
{{Qhelp{
reset scores
start again
}}}
!![[Results »|Results]]
{{Qhelp{
skip questionnaire
}}}




<<tiddler SliderUpQuestionsMenu>>
<script>
jQuery ("td:contains(1)").css("background-color", "#FF000A");
jQuery ("td:contains(2)").css("background-color", "#FF000A");
jQuery ("td:contains(3)").css("background-color", "#FFB900");
jQuery ("td:contains(4)").css("background-color", "#FFB900");
jQuery ("td:contains(5)").css("background-color", "#FFB900");
jQuery ("td:contains(6)").css("background-color", "#089F00");
jQuery ("td:contains(7)").css("background-color", "#089F00");
jQuery ("tr").css("color","#FFFFFF").css("font-weight","bold");
</script>
((rating (How accurate is this pathology in relation to your organisation?)))
/***
|''Name:''|RatingMacro|
|''Description''|allows to rate tiddlers. e.g. via stars|
|''Version:''|0.1.0|
|''Type''|macro|
|''Author:''|[[TobiasBeer]]|
|''Info:''|http://lastfm.tiddlyspot.com/#RatingMacroInfo [[RatingMacroInfo]]|
|''Source:''|http://lastfm.tiddlyspot.com/#RatingMacro [[RatingMacro]]|
|''License''|[[Creative Commons Attribution-Share Alike 3.0|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''Feedback:''|[[here|http://groups.google.com/group/tiddlywiki/browse_frm/thread/35b6e27237f1749b]]|
|''~CoreVersion''|2.2|
Inspired by http://sinojellyempty.tiddlyspot.com/#FiveStarsPlugin
!Code
***/

//{{{
config.macros.rating = {
  icon: "*",
  cssClass: "rating",
  tooltip: "this is ",
  ratings: ["not relevant","Relevant", "Highly Relevant"],
  defaultStyle: ["color:#BBBBBB;text-decoration:none;background:none;"],
  colorOn: "#C10808",
  colorOff: "#FFD9D9",

  update: function(obj,action){
    //actions --> 0:refresh 1:highlight 2:save
    p=obj.parentNode;
    var r=obj.getAttribute("rel");
    var tidName=obj.getAttribute("tiddler");
    var tid=store.getTiddler(tidName);
    if (tid==null) return;
    if (action==2) {
      tid.fields["rating"]=r;
      store.setDirty(true);
      tids=obj.getAttribute("update").readBracketedList();
      for (i=0;i<tids.length;i++) {
        story.refreshTiddler(tids[i],null,true);
        refreshDisplay(tids[i]);
      }
      story.refreshTiddler(tidName,null,true);
    }
    var last=parseInt(tid.fields["rating"]||0);
    for (i=1;i<this.ratings.length;i++){
      p.childNodes[i].style.color=((action>0&&i<=r)||(action==0&&i<=last))?this.colorOn:this.colorOff;
    }
  },

  handler: function(place, macroName, params, wikifier, paramString, tiddler) {
    var t=params.shift();
    if (t===undefined||t=='=here') t=story.findContainingTiddler(place).getAttribute('tiddler');
    var sHTML='<span title="rating" class="'+this.cssClass+'">';
    for (var i=0; i<this.ratings.length; i++){
      sHTML += '<a href="#" onmouseover="config.macros.rating.update(this,1)" onclick="config.macros.rating.update(this,2)" onmouseout="config.macros.rating.update(this,0)" title="'+this.tooltip+this.ratings[i]+'" rel="'+i+'" update="[['+params.join(']] [[')+']]" tiddler="'+t+'" style="'+this.defaultStyle+'">'+this.icon+'</a>';
    }
    place.innerHTML+=sHTML+'</span>';
    this.update(place.lastChild.firstChild,0);
  }
}
//}}}
!What for
[[RatingMacro]] [[(source)|RatingMacro]] is a macro allowing you to add a simple rating mechanism, e.g. via stars.
The rating is stored in a tiddler field called {{{rating}}} as an integer value.
!Usage
|where|scope|how|h
|in a tiddler|current tiddler|{{{<<rating>>}}}|
|in the ViewTemplate|all tiddlers|{{{<span macro="rating" style="margin-left:10px;"></span>}}}|
!!Parameter section in the sourcecode
There are several parameters that allow you to define the rating levels as well as the look and feel of your rating mechanism:
|Parameter|Comment|h
|icon|the symbol used for rating a tiddler, default: {{{★}}} |
|tooltip|the prefix displayed in the tooltip for each symbol, default: {{{rating: }}}  |
|ratings|the array defining allowed ratings;<br />the first entry {{{ratings[0]}}} is reserved for the initial state, meaning: "not rated yet" or "reset rating" |
|defaultStyle|the css style applied to all characters in the rating sequence |
|colorOn|the color used for the highlight {{{(rate achieved)}}} |
|colorOff|the color used for the base {{{(rate not achieved)}}} |
!List rated tiddlers
!!GetRating
GetRating is a [[script|InlineJavascriptPluginInfo]]-tiddler that allows you to get a list of all tiddlers with a given rating. Invoke it using: {{{<<tiddler GetRating with:rate>>}}}. If you do not specify {{{with:rate}}}, all tiddlers rated with the highest possible rating are returned. {{{with:0}}} returns all unrated tiddlers.

Example to retrieve all tiddlers rated excellent: {{{<<tiddler GetRating with:5>>}}}
<<tiddler GetRating with:5>>
!!GetRatingOverview
GetRatingOverview is a [[script|InlineJavascriptPluginInfo]]-tiddler that lists all rated tiddlers in a table.
Invoke it using: {{{<<tiddler GetRatingOverview with:"icons names count byTitle range[fromRating:toRating]">>}}}

Example: {{{<<tiddler GetRatingOverview with:"icons names count range[3:-1]">>}}}
{{Qhelp{
Click on the stars add or remove this archetype to the [[Summary of Rated Archetypes]] For help see [[How to rate archetypes]]
}}}
/%
|Name|RatingSummary|
|Source|http://lastfm.tiddlyspot.com/#RatingSummary|
|Version|0.2|
|Author|TobiasBeer|
|''License''|[[Creative Commons Attribution-Share Alike 3.0|http://creativecommons.org/licenses/by-sa/3.0/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|generates an overview of rated tiddlers, see RatingMacro|

Usage: <<tiddler GetRatingOverview with:"icons names count range[fromRating:toRating]">>
...all parameters optional, order irrelevant

%/<script>
var bIco,bNames,bCount,bByTit,bounds,c,cats,cTids=[],from,num,out,prms,r,rng,s,stars,t,to,upper;
var tiddlerFormat='[[%0]]';//%0=tiddlerName
prms='$1';
bIco=prms.indexOf("icons")>=0;
bNames=prms.indexOf("names")>=0;
bCount=prms.indexOf("count")>=0;
bByTit=prms.indexOf("byTitle");
rng=prms.split("range[");
from=1;to=-1;
if(rng[1]!=undefined){
	bounds=rng[1].split(":");
	if(!isNaN(bounds[0]))from=bounds[0];
	upper=bounds[1].split("]")[0];if(!isNaN(upper))to=upper;
}
num=config.macros.rating.ratings.length-1;
to=to<0?num:Math.min(to,num);
from=Math.min(Math.max(from,0),num,to);
cols=to-from+1;

tids=bByTit?window.store.getTiddlers('title'):window.store.getTiddlers('modified').reverse();
cats=config.macros.rating.ratings;
for(c=0;c<cats.length;c++)cTids[c]=[];
for(t=0;t<tids.length; t++){
	r=parseInt(store.getValue(tids[t],"rating"));
	r=isNaN(r)?0:Math.min(r,num);
	cTids[r].push(tids[t].title);
}

out="|"; var pre="|ratingTable"+cols+"|k\n|";
for(c=0;c<Math.min(cats.length,to+1);c++){
	switch(c){
	case 0: s=cats[0];break;
	case 1: s="";
	default: s+=config.macros.rating.icon; break;
	}
	if(c>=from){
		bIco=bIco||!bNames;
		sep=bNames?'<br>':sep=' ';
		stars=bIco?s+sep:'';
		sName=bNames&&c>0?cats[c]+' ':'';
		sCount=bCount?' ('+cTids[c].length.toString()+') ':sCount=' ';
		hdStyle='text-align:center;width:'+Math.floor(95/cols).toString()+'%;';
		pre+=hdStyle+stars+sName+sCount+"|";
		out+='';
		for(t=0;t<cTids[c].length; t++)out+=tiddlerFormat.format([cTids[c][t]])+'<br />';
		out+="|";
	}
}
setStylesheet('.ratingTable'+cols+'{width:'+Math.floor(90*cols/num)+'%;}'+
'.ratingTable'+cols+' td{padding-left:5px;vertical-align:top;}','RatingTableStyles'+cols);
return(pre+"h\n"+out);
</script>
!Frequency
Common
!Also Known As
n/a
!System Structure
This is a failure of coordination between operational activities and specifically a failure to transfer learning from one activity to another.  As a result, common tasks are treated as if they were unique and the same set of problems is solved over and over again.  As well as being inefficient, this often results in senior management getting pulled down to directing or redesigning operations.  Probably the biggest impact, though one that is less easy to spot and quantify, is that in carrying out essentially the same operations differently, it becomes more difficult to transfer staff between teams or projects and it becomes difficult to maintain service levels once the initial team have disbanded.
!Symptoms
Teams assembled to do a task that is generically similar to others in the past, having to design their approach each time.
Absence of standard processes, or the “standard” process being ignored.  Multiple processes within the same organisation to do essentially the same task.
!Solutions
Where possible / appropriate, establish common processes and operating procedures.  This may require an asymmetric approach with common processes for common jobs and a more flexible approach for “one offs”, but with a very clear differentiation between the two
!Links
[[Shockwaves]] , [[Control Dilemma]]
The scores have now been reset. You have the following options:
!![[Re-start Questionnaire »|Q1]]
!![[Introduction »|About OMM Director]]

<<tiddler ResetScoreScript>>
<<tiddler CloseOtherTiddlers>>
<<tiddler SliderUpQuestionsMenu>>
[[your organisation]]
[[your operations]]
ColorPalette
StyleSheet
StyleSheetTiddler

[[HeaderMenu]]

ShowIntroMenu
ShowQuestionsMenu
ShowOutputMenu
 

IntroMenu
QuestionsMenu
OutputMenu

MaturityMatrixTable


[[Reg]]
<script>
(function($){
	$("td:contains(1)").removeClass('red');
})(jQuery); 
</script>
Please e-mail [[r.a.hough@googlemail.com|mailto:r.a.hough@googlemail.com]] to report any bugs.
The scores have now been reset. You have the following options
!![[Restart Questionnaire »|Q1]]
!![[About OMM Director »|About OMM Director]]

<<tiddler ResetScoreScript>>
<<tiddler CloseOtherTiddlers>>
<<tiddler SliderUpQuestionsMenu>>
<script>
var out=[];
tids=['Q1','Q2','Q3','Q4','Q5','Q6','Q7','Q8','Q9','Q10','Q11','Q12','Q13','Q14','Q15','Q16','Q17','Q18','Q19','Q20','Q21','Q22','Q23','Q24'];
for (var i=0; i<tids.length; i++) {
DataTiddler.setData(tids[i],"score","2");
}
</script>
<<tiddler MaturityMatrixPathologyScript>>
<<tiddler MaturityMatrixPathologyScript>>

<<tiddler MaturityMatrixPathologyScript>>
<<tiddler MaturityMatrixPathologyScript>>
''Version'': <<tiddler OmmVersion>>
''Date'': <<today [[ DDD DDth MMM YYYY hh:0mm]]>>
''Organisation'' : <<tiddler YourOrgSans>>
<<tiddler [[Maturity Matrix]]>>
<<tiddler ShowOutputMenu>>
This is included in the RatingSummary as a demonstration. 
Click on the stars to rate the pathology,"possibly relevant " or "certainly relevant" 
It will then be added to the RatingSummary.
<html>
<div id="scoreTemplate">
<input name=score type=radio value="1" />1
<input name=score type=radio value="2" />2
<input name=score type=radio value="3" />3
<input name=score type=radio value="4" />4
<input name=score type=radio value="5" />5
<input name=score type=radio value="6" />6
<input name=score type=radio value="7" />7
</div>
</html>
!Frequency
Very common
!Also Known As
Bottlenecks, Beer game, The Shakes
!System Structure
Shockwaves happen because of a failure of coordination between operational units that causes oscillations in performance for one or more operations.
The coordination failure can be due to differences in processing times and therefore “lags” in the system, it can equally be because of failure to balance resources, or simply a failure to plan operational flow at a whole system level, or to communicate between operations.
!Symptoms
Typical symptoms are unexpected or unmanageable surges in workload being passed from one operation to another.  So backlogs in orders, or large stocks in WIP are often evidence of Shockwaves.
The Beer game is an example of this problem in action.
!Solutions
The solution is to build adequate coordination mechanisms between operations to smooth the flow between them.
!Links
n/a
<script>
(function($){
	$('#questionsMenu , #outputMenu , #tiddlersBar , #matrixArea , #checklistArea , #sidebarChecklist, #maturityMatrixMenu').hide();
	$('#topMenu, #introMenu').show();
})(jQuery); 
</script>


<script>
(function($){
	$('#introMenu , #questionsMenu').hide();
	$('#outputMenu, #checklistArea , #sidebarChecklist , #maturityMatrixMenu').slideDown('fast');

})(jQuery); 
</script>

<script>
(function($){
	$('#outputMenu , #introMenu, #tiddlersBar').hide();
	$('#questionsMenu').slideDown('slow');
})(jQuery); 
</script>

<<tabs txtMainTab "Reg" "Reg" "Reg" "Timeline" "Timeline" TabTimeline "All" "All tiddlers" TabAll "Tags" "All tags" TabTags "More" "More lists" TabMore>>
/***
|''Name''|SimpleSearchPlugin|
|''Description''|displays search results as a simple list of matching tiddlers|
|''Authors''|FND|
|''Version''|0.4.1|
|''Status''|stable|
|''Source''|http://devpad.tiddlyspot.com/#SimpleSearchPlugin|
|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/contributors/FND/plugins/SimpleSearchPlugin.js|
|''License''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''Keywords''|search|
!Revision History
!!v0.2.0 (2008-08-18)
* initial release
!!v0.3.0 (2008-08-19)
* added Open All button (renders Classic Search option obsolete)
* sorting by relevance (title matches before content matches)
!!v0.4.0 (2008-08-26)
* added tag matching
!To Do
* tag matching optional
* animations for container creation and removal
* when clicking on search results, do not scroll to the respective tiddler (optional)
* use template for search results
!Code
***/
//{{{
if(!version.extensions.SimpleSearchPlugin) { //# ensure that the plugin is only installed once
version.extensions.SimpleSearchPlugin = { installed: true };

if(!config.extensions) { config.extensions = {}; }

config.extensions.SimpleSearchPlugin = {
	heading: "Search Results",
	containerId: "searchResults",
	btnCloseLabel: "close",
	btnCloseTooltip: "dismiss search results",
	btnCloseId: "search_close",
	btnOpenLabel: "Open all",
	btnOpenTooltip: "open all search results",
	btnOpenId: "search_open",

	displayResults: function(matches, query) {
		story.refreshAllTiddlers(true); // update highlighting within story tiddlers
		var el = document.getElementById(this.containerId);
		query = '"""' + query + '"""'; // prevent WikiLinks
		if(el) {
			removeChildren(el);
		} else { //# fallback: use displayArea as parent
			var container = document.getElementById("displayArea");
			el = document.createElement("div");
			el.id = this.containerId;
			el = container.insertBefore(el, container.firstChild);
		}
		var msg = "!" + this.heading + "\n";
		if(matches.length > 0) {
			msg += "''" + config.macros.search.successMsg.format([matches.length.toString(), query]) + ":''\n";
			this.results = [];
			for(var i = 0 ; i < matches.length; i++) {
				this.results.push(matches[i].title);
				msg += "* [[" + matches[i].title + "]]\n";
			}
		} else {
			msg += "''" + config.macros.search.failureMsg.format([query]) + "''"; // XXX: do not use bold here!?
		}
		createTiddlyButton(el, this.btnCloseLabel, this.btnCloseTooltip, config.extensions.SimpleSearchPlugin.closeResults, "button", this.btnCloseId);
		wikify(msg, el);
		if(matches.length > 0) { // XXX: redundant!?
			createTiddlyButton(el, this.btnOpenLabel, this.btnOpenTooltip, config.extensions.SimpleSearchPlugin.openAll, "button", this.btnOpenId);
		}
	},

	closeResults: function() {
		var el = document.getElementById(config.extensions.SimpleSearchPlugin.containerId);
		removeNode(el);
		config.extensions.SimpleSearchPlugin.results = null;
		highlightHack = null;
	},

	openAll: function(ev) {
		story.displayTiddlers(null, config.extensions.SimpleSearchPlugin.results);
		return false;
	}
};

config.shadowTiddlers.StyleSheetSimpleSearch = "/*{{{*/\n" +
	"#" + config.extensions.SimpleSearchPlugin.containerId + " {\n" +
	"\toverflow: auto;\n" +
	"\tpadding: 5px 1em 10px;\n" +
	"\tbackground-color: [[ColorPalette::TertiaryPale]];\n" +
	"}\n\n" +
	"#" + config.extensions.SimpleSearchPlugin.containerId + " h1 {\n" +
	"\tmargin-top: 0;\n" +
	"\tborder: none;\n" +
	"}\n\n" +
	"#" + config.extensions.SimpleSearchPlugin.containerId + " ul {\n" +
	"\tmargin: 0.5em;\n" +
	"\tpadding-left: 1.5em;\n" +
	"}\n\n" +
	"#" + config.extensions.SimpleSearchPlugin.containerId + " .button {\n" +
	"\tdisplay: block;\n" +
	"\tborder-color: [[ColorPalette::TertiaryDark]];\n" +
	"\tpadding: 5px;\n" +
	"\tbackground-color: [[ColorPalette::TertiaryLight]];\n" +
	"}\n\n" +
	"#" + config.extensions.SimpleSearchPlugin.containerId + " .button:hover {\n" +
	"\tborder-color: [[ColorPalette::SecondaryMid]];\n" +
	"\tbackground-color: [[ColorPalette::SecondaryLight]];\n" +
	"}\n\n" +
	"#" + config.extensions.SimpleSearchPlugin.btnCloseId + " {\n" +
	"\tfloat: right;\n" +
	"\tmargin: -5px -1em 5px 5px;\n" +
	"}\n\n" +
	"#" + config.extensions.SimpleSearchPlugin.btnOpenId + " {\n" +
	"\tfloat: left;\n" +
	"\tmargin-top: 5px;\n" +
	"}\n" +
	"/*}}}*/";
store.addNotification("StyleSheetSimpleSearch", refreshStyles);

// override Story.search()
Story.prototype.search = function(text, useCaseSensitive, useRegExp) {
	highlightHack = new RegExp(useRegExp ? text : text.escapeRegExp(), useCaseSensitive ? "mg" : "img");
	var matches = store.search(highlightHack, null, "excludeSearch");
	var q = useRegExp ? "/" : "'";
	config.extensions.SimpleSearchPlugin.displayResults(matches, q + text + q);
};

// override TiddlyWiki.search() to sort by relevance
TiddlyWiki.prototype.search = function(searchRegExp, sortField, excludeTag, match) {
	var candidates = this.reverseLookup("tags", excludeTag, !!match);
	var primary = [];
	var secondary = [];
	var tertiary = [];
	for(var t = 0; t < candidates.length; t++) {
		if(candidates[t].title.search(searchRegExp) != -1) {
			primary.push(candidates[t]);
		} else if(candidates[t].tags.join(" ").search(searchRegExp) != -1) {
			secondary.push(candidates[t]);
		} else if(candidates[t].text.search(searchRegExp) != -1) {
			tertiary.push(candidates[t]);
		}
	}
	var results = primary.concat(secondary).concat(tertiary);
	if(sortField) {
		results.sort(function(a, b) {
			return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);
		});
	}
	return results;
};

} //# end of "install only once"
//}}}
/***
|Name|SinglePageModePlugin|
|Source|http://www.TiddlyTools.com/#SinglePageModePlugin|
|Documentation|http://www.TiddlyTools.com/#SinglePageModePluginInfo|
|Version|2.9.6|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Show tiddlers one at a time with automatic permalink, or always open tiddlers at top/bottom of page.|
This plugin allows you to configure TiddlyWiki to navigate more like a traditional multipage web site with only one tiddler displayed at a time.
!!!!!Documentation
>see [[SinglePageModePluginInfo]]
!!!!!Configuration
<<<
<<option chkSinglePageMode>> Display one tiddler at a time
><<option chkSinglePagePermalink>> Automatically permalink current tiddler
><<option chkSinglePageKeepFoldedTiddlers>> Don't close tiddlers that are folded
><<option chkSinglePageKeepEditedTiddlers>> Don't close tiddlers that are being edited
<<option chkTopOfPageMode>> Open tiddlers at the top of the page
<<option chkBottomOfPageMode>> Open tiddlers at the bottom of the page
<<option chkSinglePageAutoScroll>> Automatically scroll tiddler into view (if needed)

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


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

if (Story.prototype.SPM_coreDisplayTiddlers==undefined)
	Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;
Story.prototype.displayTiddlers = function() {
	// suspend single/top/bottom modes when showing multiple tiddlers
	var opt=config.options;
	var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
	var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
	var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
	this.SPM_coreDisplayTiddlers.apply(this,arguments);
	opt.chkBottomOfPageMode=saveBPM;
	opt.chkTopOfPageMode=saveTPM;
	opt.chkSinglePageMode=saveSPM;
}
//}}}
//The Organisational Maturity Model for directors//
~SCiO
http://www.tiddlywiki.com/
<script>
(function($){
	$('#outputMenu , #introMenu, #tiddlersBar').hide();
	$('#questionsMenu .sliderPanel').slideUp('slow');
	
})(jQuery); 
</script>
/***
|Name|SnapshotPlugin|
|Source|http://www.TiddlyTools.com/#SnapshotPlugin|
|Documentation|http://www.TiddlyTools.com/#SnapshotPluginInfo|
|Version|1.3.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|save or print HTML+CSS image of rendered document content|
This plugin provides a macro as well as tiddler toolbar commands to create a file or browser window containing the //rendered// CSS-and-HTML that is currently being displayed for selected elements of the current document.
!!!!!Documentation
>see [[SnapshotPluginInfo]]
!!!!!Configuration
<<<
<<option chkSnapshotHTMLOnly>> output HTML only (omit CSS)
<<<
!!!!!Revisions
<<<
2009.10.12 1.3.0 added multi-file story snapshot
|please see [[SnapshotPluginInfo]] for additional revision details|
2008.04.21 1.0.0 initial release - derived from [[NewDocumentPlugin]] with many improvements...
<<<
!!!!!Code
***/
//{{{
version.extensions.SnapshotPlugin= {major: 1, minor: 3, revision: 0, date: new Date(2009,10,12)};

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

config.macros.snapshot = {
	snapLabel: "save a snapshot",
	printLabel: "print a snapshot",
	snapPrompt: "save an HTML image",
	printPrompt: "print an HTML image",
	hereID: "here",
	viewerID: "viewer",
	storyID: "story",
	allID: "all",
	askID: "ask",
	askTiddlerID: "askTiddler",
	askDOMID: "askDOM",
	askMsg: "select an element...",
	hereItem: "tiddler: '%0'",
	viewerItem: "tiddler: '%0' (content only)",
	storyItem: "story column (one file)",
	storyFilesItem: "story column (multiple files)",
	allItem: "entire document",
	tiddlerItem: "select a tiddler...",
	IDItem: "select a DOM element by ID...",
	HTMLItem: "[%0] output HTML only (omit CSS)",
	fileMsg: "select or enter a target path/filename",
	defaultFilename: "snapshot.html",
	okmsg: "snapshot written to %0",
	failmsg: "An error occurred while creating %0",
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var printing=params[0]&&params[0]=="print"; if (printing) params.shift();
		params = paramString.parseParams("anon",null,true,false,false);
		var id=getParam(params,"id","here");
		var label=getParam(params,"label",printing?this.printLabel:this.snapLabel);
		var prompt=getParam(params,"prompt",printing?this.printPrompt:this.snapPrompt);
		var btn=createTiddlyButton(place,label,prompt, function(ev){
			this.setAttribute("snapID",this.getAttribute("startID"));
			config.macros.snapshot.go(this,ev)
		});
		btn.setAttribute("startID",id);
		btn.setAttribute("snapID",id);
		btn.setAttribute("printing",printing?"true":"false");
		btn.setAttribute("HTMLOnly",config.options.chkSnapshotHTMLOnly?"true":"false");
	},
	go: function(here,ev) {
		var cms=config.macros.snapshot; // abbreviation
		var id=here.getAttribute("snapID");
		var printing=here.getAttribute("printing")=="true";
		var HTMLOnly=here.getAttribute("HTMLOnly")=="true";

		if (id==cms.askID||id==cms.askTiddlerID||id==cms.askDOMID) {
			cms.askForID(here,ev);
		} else if (id==cms.storyID) {
			story.forEachTiddler(function(t,e) {
				var out=cms.getsnap(e,e.id,printing,HTMLOnly);
				if (printing) cms.printsnap(out);
				else cms.savesnap(out,e.getAttribute('tiddler')+'.html');
			});
		} else {
			if (id==cms.allID) id="contentWrapper";
			var snapElem=document.getElementById(id);
			if (id==cms.hereID || id==cms.viewerID)
				var snapElem=story.findContainingTiddler(here);
			if (snapElem && hasClass(snapElem,"tiddler") && (id==cms.viewerID || HTMLOnly)) {
				// find viewer class element within tiddler element
				var nodes=snapElem.getElementsByTagName("*");
				for (var i=0; i<nodes.length; i++)
					if (hasClass(nodes[i],"viewer")) { snapElem=nodes[i]; break; }
			}
			if (!snapElem) // not in a tiddler or no viewer element or unknown ID
				{ e.cancelBubble=true; if(e.stopPropagation)e.stopPropagation(); return(false); }
			// write or print snapshot
			var out=cms.getsnap(snapElem,id,printing,HTMLOnly);
			if (printing) cms.printsnap(out); else cms.savesnap(out);
		}
		return false;
	},
	askForID: function(here,ev) {
		var ev = ev ? ev : window.event; 
		var cms=config.macros.snapshot; // abbreviation
		var id=here.getAttribute("snapID");
		var indent='\xa0\xa0\xa0\xa0';
		var p=Popup.create(here); if (!p) return false; p.className+=' sticky smallform';
		var s=createTiddlyElement(p,'select'); s.button=here;
		if (id==cms.askID) {
			s.options[s.length]=new Option(cms.askMsg,cms.askID);
			var tid=story.findContainingTiddler(here);
			if(tid) { 
				var title=tid.getAttribute("tiddler");
				if (here.getAttribute("HTMLOnly")!="true")
					s.options[s.length]=new Option(indent+cms.hereItem.format([title]),cms.hereID);
				s.options[s.length]=new Option(indent+cms.viewerItem.format([title]),cms.viewerID);
			}
			s.options[s.length]=new Option(indent+cms.tiddlerItem,cms.askTiddlerID);
			s.options[s.length]=new Option(indent+cms.IDItem,cms.askDOMID);
			s.options[s.length]=new Option(indent+cms.storyItem,"tiddlerDisplay");
			s.options[s.length]=new Option(indent+cms.storyFilesItem,cms.storyID);
			s.options[s.length]=new Option(indent+cms.allItem,"contentWrapper");
		}
		if (id==cms.askDOMID) {
			s.options[s.length]=new Option(cms.IDItem,cms.askDOMID);
			var elems=document.getElementsByTagName("*");
			var ids=[];
			for (var i=0;i<elems.length;i++)
				if (elems[i].id.length && elems[i].className!="animationContainer")
					ids.push(elems[i].id);
			ids.sort();
			for (var i=0;i<ids.length;i++) s.options[s.length]=new Option(indent+ids[i],ids[i]);
		}
		if (id==cms.askTiddlerID) {
			s.options[s.length]=new Option(cms.tiddlerItem,cms.askTiddlerID);
			var elems=document.getElementsByTagName("div");
			var ids=[];
			for (var i=0;i<elems.length;i++) { var id=elems[i].id;
				if (id.length && id.substr(0,story.idPrefix.length)==story.idPrefix && id!="tiddlerDisplay")
					ids.push(id);
			}
			ids.sort();
			for (var i=0;i<ids.length;i++) s.options[s.length]=new Option(indent+ids[i].substr(story.idPrefix.length),ids[i]);
		}
		s.options[s.length]=new Option(cms.HTMLItem.format([here.getAttribute("HTMLOnly")=="true"?"\u221a":"_"]),cms.HTMLItem);
		s.onchange=function(ev){
			var ev = ev ? ev : window.event; 
			var cms=config.macros.snapshot; // abbreviation
			var here=this.button;
			if (this.value==cms.HTMLItem) {
				config.options.chkSnapshotHTMLOnly=!config.options.chkSnapshotHTMLOnly;
				here.setAttribute("HTMLOnly",config.options.chkSnapshotHTMLOnly?"true":"false");
				config.macros.option.propagateOption("chkSnapshotHTMLOnly","checked",
					config.options.chkSnapshotHTMLOnly,"input");
			} else
				here.setAttribute("snapID",this.value);
			config.macros.snapshot.go(here,ev);
			return false;
		};
		Popup.show();
		ev.cancelBubble=true;
		if(ev.stopPropagation)ev.stopPropagation();
		return false;
	},
	getpath: function() {
		// get current path
		var path=getLocalPath(window.location.href);
		var slashpos=path.lastIndexOf("/");
		if (slashpos==-1) slashpos=path.lastIndexOf("\\"); 
		if (slashpos!=-1) path=path.substr(0,slashpos+1); // trim filename
		return path;
	},
	getsnap: function(snapElem,id,printing,HTMLOnly) {
		var cms=config.macros.snapshot; // abbreviation
		var out='<head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" />';
		if (printing)
			out+='<base href="file:///'+cms.getpath().replace(/\\/g,'/')+'"></base>\n';
		if (!HTMLOnly) {
			var styles=document.getElementsByTagName('style');
			var fmt='<style>\n/* stylesheet=%0 */\n%1\n\n</style>\n';
			for(var i=0; i < styles.length; i++)
				out+=fmt.format([styles[i].getAttribute('id'),styles[i].innerHTML]);
		}
		out+='</head>\n';

		var elems=snapElem.getElementsByTagName('input');
		for (var i=0; i<elems.length; i++) { var e=elems[i];
			if (e.type=='text')		e.defaultValue=e.value;
			if (e.type=='checkbox')	 	e.defaultChecked=e.checked;
			if (e.type=='radiobutton')	e.defaultChecked=e.checked;
		}
		var elems=snapElem.getElementsByTagName('textarea');
		for (var i=0; i<elems.length; i++)	elems[i].defaultValue=elems[i].value;

		var fmt='<body>\n\n<div class="%0">%1</div>\n\n</body>\n';
		out+=fmt.format([(id==cms.viewerID?'tiddler viewer':''),snapElem.innerHTML]);

		return '<html>\n'+out+'</html>';
	},
	printsnap: function(out) {
		var win=window.open("","_blank","");
		win.document.open();
		win.document.writeln(out);
		win.document.close();
		win.focus(); // bring to front
		win.print(); // trigger print dialog
	},
	savesnap: function(out,target) {
		var cms=config.macros.snapshot; // abbreviation
		// make sure we are local
		if (window.location.protocol!="file:")
			{ alert(config.messages.notFileUrlError); return; }
		var target=target||cms.askForFilename(cms.fileMsg,cms.getpath(),cms.defaultFilename);
		if (!target) return; // cancelled by user
		// if specified file does not include a path, assemble fully qualified path and filename
		var slashpos=target.lastIndexOf("/"); if (slashpos==-1) slashpos=target.lastIndexOf("\\");
		if (slashpos==-1) {
			var h=document.location.href;
			var cwd=getLocalPath(decodeURIComponent(h.substr(0,h.lastIndexOf('/')+1)));
			target=cwd+target;
		}
		var link="file:///"+target.replace(/\\/g,'/'); // link for message text
		var ok=saveFile(target,convertUnicodeToUTF8(out));
		var msg=ok?cms.okmsg.format([target]):cms.failmsg.format([target]);
		displayMessage(msg,link);
	},
	askForFilename: function(msg,path,file) {
		if(window.Components) { // moz
			try {
				netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
				var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
				var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
				picker.init(window, msg, nsIFilePicker.modeSave);
				var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
				thispath.initWithPath(path);
				picker.displayDirectory=thispath;
				picker.defaultExtension='html';
				picker.defaultString=file;
				picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
				if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.persistentDescriptor;
			}
			catch(e) { alert('error during local file access: '+e.toString()) }
		}
		else { // IE
			try { // XP/Vista only
				var s = new ActiveXObject('UserAccounts.CommonDialog');
				s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
				s.FilterIndex=3; // default to HTML files;
				s.InitialDir=path;
				s.FileName=file;
				if (s.showOpen()) var result=s.FileName;
			}
			catch(e) { var result=prompt(msg,path+file); } // fallback for non-XP IE
		}
		return result;
	}
};
//}}}

// // TOOLBAR DEFINITIONS
//{{{
config.commands.snapshotSave = {
	text: "snap",
	tooltip: config.macros.snapshot.snapPrompt,
	handler: function(ev,src,title) {
		src.setAttribute("snapID","ask");
		src.setAttribute("printing","false");
		src.setAttribute("HTMLOnly",config.options.chkSnapshotHTMLOnly?"true":"false");
		config.macros.snapshot.go(src,ev);
		return false;
	}
};
config.commands.snapshotPrint = {
	text: "print",
	tooltip: config.macros.snapshot.printPrompt,
	handler: function(ev,src,title) {
		src.setAttribute("snapID","ask");
		src.setAttribute("printing","true");
		src.setAttribute("HTMLOnly",config.options.chkSnapshotHTMLOnly?"true":"false");
		config.macros.snapshot.go(src,ev);
		return false;
	}
};
//}}}

// // COPIED FROM [[StickyPopupPlugin]] TO ELIMINATE PLUGIN DEPENDENCY
//{{{
if (config.options.chkStickyPopups==undefined) config.options.chkStickyPopups=false;
Popup.stickyPopup_onDocumentClick = function(ev)
{
	// if click is in a sticky popup, ignore it so popup will remain visible
	var e = ev ? ev : window.event; var target = resolveTarget(e);
	var p=target; while (p) {
		if (hasClass(p,"popup") && (hasClass(p,"sticky")||config.options.chkStickyPopups)) break;
		else p=p.parentNode;
	}
	if (!p) // not in sticky popup (or sticky popups disabled)... use normal click handling
		Popup.onDocumentClick(ev);
	return true;
};
try{removeEvent(document,"click",Popup.onDocumentClick);}catch(e){};
try{addEvent(document,"click",Popup.stickyPopup_onDocumentClick);}catch(e){};
//}}}
!What it is
Good strategic decisions require input from a wide range of management disciplines.  This requires a series of conversations between disciplines to evaluate possibilities and constraints.  When this is missing, we get flawed decisions that have an impact throughout the organisation.  
!Systemic Effects
This happens when functions within the organisation develop their strategy / policy without checking its practicality with other functions, so there is no co-operation with target setting or the allocation of resources.  As each function works in isolation no joint strategies can be developed to help internal effectiveness, or to counter the wider risks that are threatening the organisation as a whole.  
We all know of situations where products are developed with no markets (like the Sinclair C5); or where markets are created but are lost to competitors because the company is unable to deliver (like Land Rover and the 4x4 market); or products developed that the company cannot afford to make (several UK motorbike companies).
We also see the same in large organisations (utilities and local government) where departmental structures and decisions make collaboration at the ‘sharp end’ almost impossible.  
!Possible Ways Forward
One way forward might be to use a more balanced and evidence based approach to decision making taking on external information (customer or wider environmental needs) which can then be processed internally to establish how the external needs can be met effectively.  This often needs a range of individuals from different functions creating a joint dialogue at all levels and between levels to set coherent policy and strategy.
!Frequency
Unknown – believed to be relatively infrequent
!Also Known As
Strays
!System Structure
The "Stray Lamb" archetype consists of primary activities that have been missed out of the management or formal organisational structure.  Because it's about what managers have missed or ignored, it is inevitably one of the most difficult archetypes to spot.
!Symptoms
Stray Lamb primary activities are invisible in the management structure and are starved of resource, their potential and performance are unrecognised, or they are unmanaged.
!Solutions
This can happen because of a failure to maintain an adequate or up to date model of the organisation and how it is evolving.  A reliance on traditional organisation charts which don’t describe activities doesn’t help.  So the solution lies in proper modeling of the organisations actual activities.
!Links
[[Missing Link]] , [[Shockwaves]] , [[Re-inventing the Wheel]] , [[Bricks without Straw]]
.printButton {
font-weight:bold;
color:[[ColorPalette::LogoRed]];
font-size:2em;
border: solid 2px;
margin:0.5em 0 0;
padding:0.5em 0.5em 0.5em 0.5em;
border-color:[[ColorPalette::VersionGreen]];
}

.highlightCell {
border: 4px solid black;
color:red;
}

/* TABLES*/

.viewer table {
border:2px solid;
}
.twtable {
width:100%;
}

td {text-align:left;}

.viewer th, .viewer thead td, .twtable th, .twtable thead td {
	background:white;
	color: black;
}

div[tags~="customise"] {
	height:100em;
	overflow:auto;
}

div[tags~="summary"] thead td {
	color:orange;
	font-size:2em;
}
div[tags~="matrix"] thead td {
	width:7em;height:4em;
}



#displayArea {
 width:48em;
 padding:0em 0em 0.5em 0em;
 margin:1em 0 0 15em !important;
 position:absolute;
}

#introMenu h2 .tiddlyLinkExisting {font-weight:bold;}

#questionsMenu h2 {color:[[ColorPalette::OmmTitle]];}



.linkVisited {
color:#868F8F;
}

.viewer .button {
border:0px solid [[ColorPalette::OmmOrange]];
color:#0044BB;
font-size:1.1em;
}

#questionsMenu .centeredTable {
text-align: center;
}

.viewer div.centeredTable table {
margin: 0 auto;
text-align: left;
}

#topMenu {
color:[[ColorPalette::OmmOrange]];
}

.versionGreen {
color:[[ColorPalette::VersionGreen]];
}

.ommFooter {
text-align:center;
padding:1em 3em 2em 0em;
color:[[ColorPalette::OmmTitle]];
}

.title , h1 {
color:[[ColorPalette::OmmTitle]];
}


ZZ#topMenu {display:none;}

h2 .tiddlyLinkExisting, .viewer h2 .tiddlyLinkExisting, #questionsMenu h2 .tiddlyLinkExisting {
	font-size:1.25em;
	color:[[ColorPalette::LogoRed]];
	font-weight:bold;
	font-family:Consolas, ‘Andale Mono WT’, ‘Andale Mono’, ‘Lucida Console’, ‘Lucida Sans Typewriter’, ‘DejaVu Sans Mono’, ‘Bitstream Vera Sans Mono’, ‘Liberation Mono’, ‘Nimbus Mono L’, Monaco, ‘Courier New’, Courier, monospace;
}





/* MENUS*/

#introMenu h2 .tiddlyLinkExisting {
	font-size:1.25em;
}
#introMenu h2 {
color:[[ColorPalette::OmmTitle]];
}

#introMenu, #questionsMenu, #outputMenu {
left:3em;
line-height:1.6em;
padding:2em 0 0;
position:absolute;
text-align:left;
width:12em;
}

#introMenu .tiddlyLinkExisting ,
#questionsMenu .tiddlyLinkExisting ,
#outputMenu .tiddlyLinkExisting 
{font-weight:normal; font-style:normal;}


.tiddlyLinkVisible {
	background-color: [[ColorPalette::PrimaryMid]];
	color: [[ColorPalette::Background]];
}



h2 {border:none;}




#ratingToolBar .sliderPanel  {
background:#FFFFCC;
border:1px solid #FFEE88;
padding:0.5em 1em 1em 1em;
}

.Relevant {
font-size:3em;
color:#C10808;
}

.notRelevant {
font-size:3em;
color:#BBBBBB;
}


.asterix {
position:relative;
 top:-1.5em;
}

#pathologyRelevanceTip .button {
color:#C10808;
position:relative;
 top:-1.5em;

}


#ratingToolBar .rating{
padding:0em 0em 0em 0em;
font-size:3em;
color:#C10808;
}
 
.toolbar {
font-size:1em;
color:#C10808;
}

div[tags~="P"] .viewer {text-align:justify;}

.viewer .red a {
	color:white;
	border:1px solid red;
	background-color:[[ColorPalette::RagRed]];
	padding:0em 3em 0em 3em;}

.viewer .amber a {
	color:white;
	background-color:[[ColorPalette::RagAmber]];
	padding:0em 3em 0em 3em;}

.viewer .green  a{
	color:white;
	background-color:[[ColorPalette::RagGreen]];
	padding:0em 3em 0em 3em;}



#tiddlersBar .tabSelected {
background:[[ColorPalette::Background]];
}

#tiddlersBar .tabUnselected {
background:[[ColorPalette::TertiaryLight]];
color:red;
}




#sidebar {position:absolute; right:2em; width:19em; font-size:.9em;}
#sidebarChecklist h1{ text-align:right;}


#sidebarChecklist {
padding:1em 0em 0em 0em;}

#sidebarChecklist .toolbar{
font-size:1.6em;
}

#checklistArea {
position:absolute;top:19em;left10em;
width:19em;
padding:0em 1em 1em 1em;
}

[[StyleSheetHeader]]
[[StyleSheetTiddler]]

[[StyleSheetTiddler]]
/* HEADER*/

.headerShadow  {
	padding:1em 0em 0em 3em;
}

.siteTitle {
color:[[ColorPalette::LogoBlue]];
font-size:4em;
font-weight:bold;
font-family:"Times New Roman", Times, serif;} 
}

.straplineWrapper {
margin-top:-0.7em;
}

.ommVersion {
font-family:"Gill Sans MT";
font-size:1.5em;
font-weight:bold;
font-variant:small-caps;
letter-spacing:0.4em;
color:[[ColorPalette::LogoRed]];
}

.siteSubtitle {
font-family:"Gill Sans MT";
font-size:1.2em;
color:[[ColorPalete::StrapLine]];
word-spacing:0.2em;
}
/*{{{*/
* html .tiddler {height:1%;}

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

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

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

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

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/*{{{*/
@media print {
.headerForeground, #tiddlersBar, #mainMenu,  #introMenu, #questionMenu, #outputMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea,  .Qhelp, .ratingToolBar, .admin, .rating {display: none !important;}

.tiddler {
overflow:visible;

.viewer  a {color:black;}
}



.tiddler, .tabContents {border:0px [[ColorPalette::TertiaryPale]] solid;}

#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/



.Qnav .tiddlyLinkExisting {
font-weight:normal;
color:#C10808;
font-size:1.25em;
font-weight:bold;
}

.tiddler  h1{
	padding-bottom:1px;
	border:none;
}

#tiddlerEnd .title {display:none;}

.Qhelp {
	background:#FFFFCC none repeat scroll 0 0;
	padding:1em 1em 1em 1em;
	border:1px solid #FFEE88;

}

.Qnav {
	text-align:
	left; font-size:1.0em;
	padding:1em 1em 1em 1em;
}

#scoreTemplate {
	padding:1em 1em 2em 0em;
}

#scoreHelp {
	color:#C10808;
	padding:0em 1em 0.2em 4em;
}

.people input , .organisation input {width:26em;}

.tabContents {
	background:white none repeat scroll 0 0;
}

.tiddler, .tabContents {
	border:0px [[ColorPalette::TertiaryPale]] solid;}

.tagged ,.subtitle {
	display:none;
}




/*{{{*/
#tiddlersBar .button {border:0}
#tiddlersBar .tab {white-space:nowrap}

#tiddlersBar {padding : 0em 0.5em 2px 1em}
.tabUnselected .tabButton, .tabSelected .tabButton {padding : 0 2px 0 2px; margin: 0 0 0 4px;}

/*}}}*/

!User Rated Archetypes

{{Qhelp{
[[Archetypes|About Archetypes]] you have rated relevant to <<tiddler [[your organisation]]>> appear below. Discover more via the [[Organisational Maturity Matrix|Results]] or [[Triggered Archetypes]]
}}}
<<tiddler RatingSummary with:"names range[2:2]">>
<<tiddler RatingSummary with:"names range[1:1]">>
<<tiddler ThisCellScript>>
[[Test]]
/***
|Name|TextAreaPlugin|
|Source|http://www.TiddlyTools.com/#TextAreaPlugin|
|Documentation|http://www.TiddlyTools.com/#TextAreaPluginInfo|
|Version|2.1.9|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.focusTiddler|
|Options|##Configuration|
|Description|Adds Find/Again keyboard search, autosize, and 'stretch bar' resize for textarea controls|
* ''Control-F'' and ''control-G'' will ''"Find text"'' and ''"find text aGain"'', respectively, allowing you to copy, find, paste, findagain, paste, etc to perform "search-and-replace" actions.  
* ''autosizeEditor'' - toggles the tiddler editor textarea height between fixed-height and "automatically fit the contents".
* ''resizeEditor'' - adds 'grab handle' below textarea to stretch field height
!!!!!Documentation
>see [[TextAreaPluginInfo]]
!!!!!Configuration
<<<
<<option chkTextAreaExtensions>> use control-f (find), control-g (find again) inside text area
<<option chkDisableAutoSelect>> place cursor at start of textarea instead of pre-selecting content
<<option chkResizeEditor>> modify shadow EditTemplate to add resizeable text area (and autosize command)
<<<
!!!!!Revisions
<<<
2008.01.08 [2.1.9] fixed default setting of uninitialized option values so that "false" is not treated as "undefined"
|please see [[TextAreaPluginInfo]] for additional revision details|
2006.01.22 [1.0.0] Moved from temporary "System Tweaks" tiddler into 'real' TextAreaPlugin tiddler.
<<<
!!!!!Code
***/
//{{{
version.extensions.TextAreaPlugin= {major: 2, minor: 1, revision: 9, date: new Date(2008,1,8)};

if (config.options.chkTextAreaExtensions===undefined) config.options.chkTextAreaExtensions=true;
if (config.options.chkDisableAutoSelect===undefined) config.options.chkDisableAutoSelect=true;
if (config.options.chkResizeEditor===undefined) config.options.chkResizeEditor=true;

// automatically tweak shadow EditTemplate to add "autosizeEditor" toolbar command
if (config.options.chkResizeEditor)
	config.shadowTiddlers.EditTemplate=config.shadowTiddlers.EditTemplate.replace(/deleteTiddler/,"deleteTiddler autosizeEditor");
// automatically tweak shadow EditTemplate to add "resizeEditor" macro
if (config.options.chkResizeEditor)
	config.shadowTiddlers.EditTemplate+="<span macro='resizeEditor'></span>";

// Put focus in a specified tiddler field
Story.prototype.TextAreaExtensions_focusTiddler=Story.prototype.focusTiddler;
Story.prototype.focusTiddler = function(title,field)
{
	this.TextAreaExtensions_focusTiddler.apply(this,arguments); // first call core
	var e = this.getTiddlerField(title,field);
	if (e && config.options.chkDisableAutoSelect) {
		if (e.setSelectionRange) // FF
			e.setSelectionRange(0,0);
		else if (e.createTextRange) // IE
			{ var r=e.createTextRange(); r.collapse(true); r.select(); }
	}
	if (e && config.options.chkTextAreaExtensions) addKeyDownHandlers(e);
}
//}}}

//{{{
function addKeyDownHandlers(e)
{
	// exit if not textarea or element doesn't allow selections
	if (e.tagName.toLowerCase()!="textarea"||!e.setSelectionRange||e.initialized) return;

	// utility function: exits keydown handler and prevents browser from processing the keystroke
	var processed=function(ev) {
		ev.cancelBubble=true; // IE4+
		try{event.keyCode=0;}catch(e){}; // IE5
		if (window.event) ev.returnValue=false; // IE6
		if (ev.preventDefault) ev.preventDefault(); // moz/opera/konqueror
		if (ev.stopPropagation) ev.stopPropagation(); // all
		return false;
	}
	// capture keydown in edit field
	e.saved_onkeydown=e.onkeydown; // save current keydown handler (if any)
	e.onkeydown=function(ev) { if (!ev) var ev=window.event;
		var key=ev.keyCode;
		if (!key) {
			var char=event.which?event.which:event.charCode;
			if (char==102) key=70;
			if (char==103) key=71;
		}
		// process CTRL-F (find matching text) or CTRL-G (find next match)
		if (ev.ctrlKey && (key==70||key==71)) {

			// prompt for text to find
			var defFind=e.findText?e.findText:e.value.substring(e.selectionStart,e.selectionEnd);
			if (key==70||!e.findText||!e.findText.length) // ctrl-f or no saved search text
				{ var f=prompt("find:", defFind); e.focus(); if (f) e.findText=f; }
			if (!e.findText||!e.findText.length) return processed(ev); //  if no search text, exit

			// do case-insensitive match with 'wraparound'...  if not found, alert and exit 
			var newstart=e.value.toLowerCase().indexOf(e.findText.toLowerCase(),e.selectionStart+1);
			if (newstart==-1) newstart=e.value.toLowerCase().indexOf(e.findText.toLowerCase());
			if (newstart==-1) { alert("'"+e.findText+"' not found"); e.focus(); return processed(ev); }

			// set new selection, scroll it into view, and report line position in status bar
			e.setSelectionRange(newstart,newstart+e.findText.length);
			var linecount=e.value.split('\n').length;
			var thisline=e.value.substr(0,e.selectionStart).split('\n').length;
			e.scrollTop=Math.floor((thisline-1-e.rows/2)*e.scrollHeight/linecount);
			window.status="line: "+thisline+"/"+linecount;
			return processed(ev);
		}
		if (e.saved_onkeydown) // call previous keydown handler (if any)
			e.saved_onkeydown(ev);
	}
	e.initialized=true;
}
//}}}

// // 'autosize' toolbar command
//{{{
config.commands.autosizeEditor = {
	text: 'autosize',
	tooltip: 'automatically adjust the editor height to fit the contents',
	text_alt: '\u221Aautosize',
	hideReadOnly: false,
	handler: function(event,src,title) {
		var here=story.findContainingTiddler(src); if (!here) return;
		var ta=here.getElementsByTagName('textarea'); if (!ta) return;
		for (i=0;i<ta.length;i++) {
			// only autosize textareas actually used to edit tiddler fields
			if (ta[i].getAttribute("edit")==undefined) continue;
			ta[i].button=src;
			if (!ta[i].maxed)
				config.commands.autosizeEditor.on(ta[i]);
			else
				config.commands.autosizeEditor.off(ta[i],true);
		}
		return false;
	},
	on: function(e) {
		if (e.maxed) return; // already autosizing!
		if (e.savedheight==undefined)
			e.savedheight=e.style.height;
		if (e.savedkeyup==undefined) {
			e.savedkeyup=e.onkeyup;
			e.onkeyup=function(ev) {
				if (!ev) var ev=window.event; var e=resolveTarget(ev);
				e.style.height=e.scrollHeight+'px';
				if (e.savedkeyup) e.savedkeyup();
			}
		}
		// IE reports error: "not implemented" for onkeypress
		if (!config.browser.isIE && e.savedkeypress==undefined) {
			e.savedkeypress=e.onkeypress;
			e.onkeypress=function(ev) {
				if (!ev) var ev=window.event; var e=resolveTarget(ev);
				if (ev.keyCode==33) { // PGUP
					if (window.scrollByPages) window.scrollByPages(-1);
					return false;
				}
				if (ev.keyCode==34) { // PGDN
					if (window.scrollByPages) window.scrollByPages(1);
					return false;
				}
				if (e.savedkeypress) e.savedkeypress();
			}
		}
		e.style.height=e.scrollHeight+'px';
		e.button.innerHTML=config.commands.autosizeEditor.text_alt;
		e.maxed=true;
	},
	off: function(e,resetHeight) {
		if (resetHeight) e.style.height=e.savedheight;
		e.onkeyup=e.savedkeyup;
		// IE reports error: "not implemented" for onkeypress
		if (!config.browser.isIE) e.onkeypress=e.savedkeypress;
		e.button.innerHTML=config.commands.autosizeEditor.text;
		e.maxed=false;
	}
};
//}}}

// // grab-and-stretch handle
//{{{
config.macros.resizeEditor = { // add stretch bar to editor textarea
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var here=story.findContainingTiddler(place); if (!here) return;
		var ta=here.getElementsByTagName('textarea');
		if (ta) for (i=0;i<ta.length;i++) {
			// only resize tiddler editor textareas
			if (ta[i].getAttribute("edit")==undefined) continue;
			new window.TextAreaResizer(ta[i]);
		}
	}
}

config.macros.resizeTiddler = { // add stretch bar to tiddler viewer element
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var here=story.findContainingTiddler(place); if (!here) return;
		var elems=here.getElementsByTagName('div');
		if (elems) for (i=0;i<elems.length;i++) if (hasClass(elems[i],'viewer')) break;
		if (i<elems.length) new window.TextAreaResizer(elems[i]);
	}
}

config.macros.resizeFrame = { // add stretch bar to iframes
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var here=story.findContainingTiddler(place); if (!here) return;
		var fr=here.getElementsByTagName('iframe');
		if (fr) for (i=0;i<fr.length;i++) new window.TextAreaResizer(fr[i]);
	}
}

// TextAreaResizer script by Jason Johnston (jj@lojjic.net)
// Created August 2003.  Use freely, but give me credit.
// adds a handle below textareas that the user can drag with the mouse to resize the textarea.
// MODIFIED by ELS for cross-browser (IE) compatibility, including:
//    fixups and adjustments to CSS styles,
//    use 'old style' assignment of mouse event handlers instead of using addEventListener(),
//    use window.event if event param is null,
//    use offsetHeight instead of getComputedStyle()
//    use explicit window.* global scope declaration for functions called from event handlers

window.TextAreaResizer = function(elt) {
	this.element = elt;
	this.create();
}
window.TextAreaResizer.prototype = {
	create : function() {
		var elt = this.element;
		var thisRef = this;
		var h = this.handle = document.createElement("div");
		h.style.height = "3px"; // was 4px... looked too fat!
		h.style.overflow = "hidden"; // ELS: force IE to trim height to < 1em
		h.style.width="auto";
		h.style.backgroundColor = "#999"; // ELS: standard mid-tone (dark) gray
		h.style.cursor = "s-resize";
		h.title = "Drag to resize text box";
		h.onmousedown=function(evt){thisRef.dragStart(evt)};
		elt.parentNode.insertBefore(h, elt.nextSibling);
	},
	dragStart : function(evt) {
		if (!evt) var evt=window.event;
		this.dragStop(evt); // ELS: stop any current drag processing first
		var thisRef = this;
		this.dragStartY = evt.clientY;
		this.dragStartH = this.element.offsetHeight;
		document.savedmousemove=document.onmousemove;
		document.onmousemove=this.dragMoveHdlr=function(evt){thisRef.dragMove(evt)};
		document.savedmouseup=document.onmouseup;
		document.onmouseup=this.dragStopHdlr=function(evt){thisRef.dragStop(evt)};
	},
	dragMove : function(evt) {
		if (!evt) var evt=window.event;
		// ELS: make sure height is at least 10px
		var h=this.dragStartH+evt.clientY-this.dragStartY;
		if (h<10) h=10; this.element.style.height=h+"px";
		// ELS: match handle to textarea width (which may have changed due to document scrollbars)
		this.handle.style.width=(this.element.offsetWidth-4)+"px"; // 4-pixel fudge factor for textarea border edge
		// ELS: when manually resizing, disable autoresizing (without restoring saved height)
		if (this.element.maxed!=undefined && this.element.maxed)
			config.commands.autosizeEditor.off(this.element,false);
	},
	dragStop : function(evt) {
		if (!evt) var evt=window.event;
		document.onmousemove=(document.savedmousemove!=undefined)?document.savedmousemove:null;
		document.onmousemove=(document.savedmouseup!=undefined)?document.savedmouseup:null;
	},
	destroy : function() {
		var elt = this.element;
		elt.parentNode.removeChild(this.handle);
		elt.style.height = "";
	}
};
//}}}
!Frequency
Common
!Also Known As
Dotted line relationship
!System Structure
Systemically this the substitution of a co-ordination link with another line reporting link 
Matrix structures were developed as an attempt to address the coordination issue but by different means.  Recognising that it was becoming increasingly common for one set of operations to disrupt other operations, the matrix tries to resolve this by making each operational manager answerable to two sets of "line" management.  The cybernetics of this are so bad that in a true matrix organisation of any size, it is technically impossible to get stable decisions.
!Symptoms
The matrix structure forces managers and staff in organisations to choose between the conflicting demands of two management streams, or to engage in endless meetings to try to resolve these conflicting demands.
Making each decision contingent on other decisions which are in turn contingent on still more decisions, is a recipe for having managers tied up in lots of meetings in which it is very hard to come to a decision.
!Solutions
The only reason they work at all is because a lot of matrix organisations are not true matrices and in the ones that are, managers learn how to bypass some decision nodes.
The solution is to distinguish clearly between the reporting relationship and coordination relationships – often called “Dotted Line Relationships” on organisation charts.
!Links
[[Shockwaves]]
<script>
var here=story.findContainingTiddler(place);
var thisTid=here.getAttribute("tiddler");
var selector = "a[tiddlylink=%0]".format([thisTid]);
jQuery(selector).addClass("highlightCell"); 
</script>


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

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

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

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

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

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

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

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

//}}}
http://goto.bplaced.net/omm.html#
|~OmmToolbar| closeTiddler|
|~ViewToolbar|closeTiddler > closeOthers +editTiddler  fields syncing permalink references jump|
|~EditToolbar|+saveTiddler -cancelTiddler deleteTiddler|
[[About|About OMM Director]] ''|''  [[Customise Questionnaire]] ''|'' [[Start Questionnaire »|Q1]]
<script>
(function($){
	$('#outputMenu , #introMenu, #tiddlersBar').hide();
	$("#topMenu").slideUp('slow');
	
})(jQuery); 
</script>
{{Qhelp{
The table below shows [[archetypes|About Archetypes]] triggered by scores given to you from your responses. Note that some scores differentiating between higher levels of maturity are skipped so you may not have seen some of these questions while answering the questionnaire. You can explore the archetypes from here as well as from the [[Organisational Maturity Matrix|Results]].
}}}
<script>
var out=[];
tids=['Q1','Q2','Q3','Q4','Q5','Q6','Q7','Q8','Q9','Q10','Q11','Q12','Q13','Q14','Q15','Q16','Q17','Q18','Q19','Q20','Q21','Q22','Q23','Q24'];
for (var i=0; i<tids.length; i++) {
        var t=tids[i].title;
	var score=DataTiddler.getData(tids[i],"score");
	var val=store.getValue(tids[i],"primary");
	var val1=store.getValue(tids[i],"secondary");
	var filter="[tag["+val.readBracketedList().join("]][tag[")+"]]";
	var filter1="[tag["+val1.readBracketedList().join("]][tag[")+"]]";
	var list=store.filterTiddlers(filter).map(function(t){return"[["+t.title+"]]"});
	var list1=store.filterTiddlers(filter1).map(function(t){return"[["+t.title+"]]"});
		if (score <= 2) {
		out.push('| '+tids[i]+' |'+score+' |<<tiddler [['+tids[i]+' Text]]>>|'+list.join("<br />")+'|'+list1.join("<br />")+'|');
		}
}

out.push('|Table of archetypes triggered by responses to questions|c');
out.push("| ''Question No.'' | ''Score'' | ''Question'' | ''Primary Archetype'' | ''Secondary Archetype'' |h");
return out.join("\n");
</script>
<!--{{{-->
<!--TOOL BAR-->
<div macro="hideWhen readOnly">
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='tagged' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
</div>
<div macro="showWhenTagged P"><div class='toolbar' macro='toolbar [[ToolbarCommands::OmmToolbar]]'></div></div>
<!--RATINGS FOR PATOLOGIES - ALL TAGGED P-->
<div class='title'><span macro='view title'></span>
<span macro="showWhenTagged P" id="ratingToolBar"><span macro="rating =here RatingSummary" ></span></span></div>
</span>
<div>
<div class='viewer' macro="showWhenTagged P" <span macro='tiddler RatingPrompt'></span></div>
<div class='viewer' macro='view text wikified'></div>
<div macro="showWhenTagged Q">
<div class='Qtext' macro='tiddler {{tiddler.title+" Text"}}'></div>
<div class='Qscore' macro ='formTiddler ScoreTemplate'></div>
<div class='Qhelp' macro='tiddler {{tiddler.title+" Help"}}'></div>
<div class='Qnav' macro='tiddler {{tiddler.title+" Nav"}}'></div>
</div>
<!--QUESTIONS - ALL TAGGED Q-->
<div macro="showWhenTagged Q">
<div class='tagged'>Secondary: <span macro="view secondary wikified"></span></div>
<div class ='tagged'> Primary: <span macro="view primary wikified"></span></div>
</div>
<!--}}}-->
You have now completed OMM Director, which has given you a measure of  the maturity of your organisation and identified a number of possible organisational archetypes relevant to your organisation.

There are other versions of OMM for people in differing positions in an organisation available at the [[OMM Homepage|ommhome.html]]
!Ways Forward
Some possible ways forward are to decide:
*which problems to tackle
*which areas of organisational maturity you want to address

If you want help with either of these contact ~SCiO though the website (http://scio.org.uk) or speak to a ~SCiO member
OMM Director
<script>
var out=DataTiddler.getData("Customising the Questionnaire","Organisation");
if (out.length>0){
	q1='&#8216;';
	q2='&#8217;'; 
}
else {
	q1='';
	q2='';
}
return q1 +out+ q2
return out
</script>
/***
|''Name:''|YourSearchPlugin|
|''Version:''|2.1.4 (2009-09-04)|
|''Source:''|http://tiddlywiki.abego-software.de/#YourSearchPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|&copy; 2005-2009 [[abego Software|http://www.abego-software.de]]|
|''~CoreVersion:''|2.1.0|
|''Community:''|[[del.icio.us|http://del.icio.us/post?url=http://tiddlywiki.abego-software.de/index.html%23YourSearchPlugin]]|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; ~InternetExplorer 6.0|
!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]].
!Compatibility
This plugin requires TiddlyWiki 2.1. 
Check the [[archive|http://tiddlywiki.abego-software.de/archive]] for ~YourSearchPlugins supporting older versions of TiddlyWiki.
!Source Code
***/
/***
This plugin's source code is compressed (and hidden). Use this [[link|http://tiddlywiki.abego-software.de/archive/YourSearchPlugin/Plugin-YourSearch-src.2.1.4.js]] to get the readable source code.
***/
///%
if(!version.extensions.YourSearchPlugin){version.extensions.YourSearchPlugin={major:2,minor:1,revision:4,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-2009 (www.abego-software.de)"};if(!window.abego){window.abego={};}if(!Array.forEach){Array.forEach=function(_1,_2,_3){for(var i=0,_4=_1.length;i<_4;i++){_2.call(_3,_1[i],i,_1);}};Array.prototype.forEach=function(_5,_6){for(var i=0,_7=this.length;i<_7;i++){_5.call(_6,this[i],i,this);}};}abego.toInt=function(s,_8){if(!s){return _8;}var n=parseInt(s);return (n==NaN)?_8:n;};abego.createEllipsis=function(_9){var e=createTiddlyElement(_9,"span");e.innerHTML="&hellip;";};abego.shallowCopy=function(_a){if(!_a){return _a;}var _b={};for(var n in _a){_b[n]=_a[n];}return _b;};abego.copyOptions=function(_c){return !_c?{}:abego.shallowCopy(_c);};abego.countStrings=function(_d,s){if(!s){return 0;}var _e=s.length;var n=0;var _f=0;while(1){var i=_d.indexOf(s,_f);if(i<0){return n;}n++;_f=i+_e;}return n;};abego.getBracedText=function(_10,_11,_12){if(!_11){_11=0;}var re=/\{([^\}]*)\}/gm;re.lastIndex=_11;var m=re.exec(_10);if(m){var s=m[1];var _13=abego.countStrings(s,"{");if(!_13){if(_12){_12.lastIndex=re.lastIndex;}return s;}var len=_10.length;for(var i=re.lastIndex;i<len&&_13;i++){var c=_10.charAt(i);if(c=="{"){_13++;}else{if(c=="}"){_13--;}}}if(!_13){if(_12){_12.lastIndex=i-1;}return _10.substring(m.index+1,i-1);}}};abego.select=function(_14,_15,_16,_17){if(!_17){_17=[];}_14.forEach(function(t){if(_15.call(_16,t)){_17.push(t);}});return _17;};abego.consumeEvent=function(e){if(e.stopPropagation){e.stopPropagation();}if(e.preventDefault){e.preventDefault();}e.cancelBubble=true;e.returnValue=true;};abego.TiddlerFilterTerm=function(_18,_19){if(!_19){_19={};}var _1a=_18;if(!_19.textIsRegExp){_1a=_18.escapeRegExp();if(_19.fullWordMatch){_1a="\\b"+_1a+"\\b";}}var _1b=new RegExp(_1a,"m"+(_19.caseSensitive?"":"i"));this.tester=new abego.MultiFieldRegExpTester(_1b,_19.fields,_19.withExtendedFields);};abego.TiddlerFilterTerm.prototype.test=function(_1c){return this.tester.test(_1c);};abego.parseNewTiddlerCommandLine=function(s){var m=/(.*?)\.(?:\s+|$)([^#]*)(#.*)?/.exec(s);if(!m){m=/([^#]*)()(#.*)?/.exec(s);}if(m){var r;if(m[3]){var s2=m[3].replace(/#/g,"");r=s2.parseParams("tag");}else{r=[[]];}var _1d=m[2]?m[2].trim():"";r.push({name:"text",value:_1d});r[0].text=[_1d];return {title:m[1].trim(),params:r};}else{return {title:s.trim(),params:[[]]};}};abego.parseTiddlerFilterTerm=function(_1e,_1f,_20){var re=/\s*(?:(?:\{([^\}]*)\})|(?:(=)|([#%!])|(?:(\w+)\s*\:(?!\/\/))|(?:(?:("(?:(?:\\")|[^"])+")|(?:\/((?:(?:\\\/)|[^\/])+)\/)|(\w+\:\/\/[^\s]+)|([^\s\)\-\"]+)))))/mg;var _21={"!":"title","%":"text","#":"tags"};var _22={};var _23;re.lastIndex=_1f;while(1){var i=re.lastIndex;var m=re.exec(_1e);if(!m||m.index!=i){throw "Word or String literal expected";}if(m[1]){var _24={};var _25=abego.getBracedText(_1e,0,_24);if(!_25){throw "Invalid {...} syntax";}var f=Function("tiddler","return ("+_25+");");return {func:f,lastIndex:_24.lastIndex,markRE:null};}if(m[2]){_23=true;}else{if(m[3]){_22[_21[m[3]]]=1;}else{if(m[4]){_22[m[4]]=1;}else{var _26=m[6];var _27=m[5]?window.eval(m[5]):m[6]?m[6]:m[7]?m[7]:m[8];var _20=abego.copyOptions(_20);_20.fullWordMatch=_23;_20.textIsRegExp=_26;var _28=[];for(var n in _22){_28.push(n);}if(_28.length==0){_20.fields=_20.defaultFields;}else{_20.fields=_28;_20.withExtendedFields=false;}var _29=new abego.TiddlerFilterTerm(_27,_20);var _2a=_26?_27:_27.escapeRegExp();if(_2a&&_23){_2a="\\b"+_2a+"\\b";}return {func:function(_2b){return _29.test(_2b);},lastIndex:re.lastIndex,markRE:_2a?"(?:"+_2a+")":null};}}}}};abego.BoolExp=function(s,_2c,_2d){this.s=s;var _2e=_2d&&_2d.defaultOperationIs_OR;var _2f=/\s*(?:(\-|not)|(\())/gi;var _30=/\s*\)/g;var _31=/\s*(?:(and|\&\&)|(or|\|\|))/gi;var _32=/\s*[^\)\s]/g;var _33=/\s*(\-|not)?(\s*\()?/gi;var _34;var _35=function(_36){_33.lastIndex=_36;var m=_33.exec(s);var _37;var _38;if(m&&m.index==_36){_36+=m[0].length;_37=m[1];if(m[2]){var e=_34(_36);_30.lastIndex=e.lastIndex;if(!_30.exec(s)){throw "Missing ')'";}_38={func:e.func,lastIndex:_30.lastIndex,markRE:e.markRE};}}if(!_38){_38=_2c(s,_36,_2d);}if(_37){_38.func=(function(f){return function(_39){return !f(_39);};})(_38.func);_38.markRE=null;}return _38;};_34=function(_3a){var _3b=_35(_3a);while(1){var l=_3b.lastIndex;_31.lastIndex=l;var m=_31.exec(s);var _3c;var _3d;if(m&&m.index==l){_3c=!m[1];_3d=_35(_31.lastIndex);}else{try{_3d=_35(l);}catch(e){return _3b;}_3c=_2e;}_3b.func=(function(_3e,_3f,_40){return _40?function(_41){return _3e(_41)||_3f(_41);}:function(_42){return _3e(_42)&&_3f(_42);};})(_3b.func,_3d.func,_3c);_3b.lastIndex=_3d.lastIndex;if(!_3b.markRE){_3b.markRE=_3d.markRE;}else{if(_3d.markRE){_3b.markRE=_3b.markRE+"|"+_3d.markRE;}}}};var _43=_34(0);this.evalFunc=_43.func;if(_43.markRE){this.markRegExp=new RegExp(_43.markRE,_2d.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(re,_44,_45){this.re=re;this.fields=_44?_44:["title","text","tags"];this.withExtendedFields=_45;};abego.MultiFieldRegExpTester.prototype.test=function(_46){var re=this.re;for(var i=0;i<this.fields.length;i++){var s=store.getValue(_46,this.fields[i]);if(typeof s=="string"&&re.test(s)){return this.fields[i];}}if(this.withExtendedFields){return store.forEachField(_46,function(_47,_48,_49){return typeof _49=="string"&&re.test(_49)?_48:null;},true);}return null;};abego.TiddlerQuery=function(_4a,_4b,_4c,_4d,_4e){if(_4c){this.regExp=new RegExp(_4a,_4b?"mg":"img");this.tester=new abego.MultiFieldRegExpTester(this.regExp,_4d,_4e);}else{this.expr=new abego.BoolExp(_4a,abego.parseTiddlerFilterTerm,{defaultFields:_4d,caseSensitive:_4b,withExtendedFields:_4e});}this.getQueryText=function(){return _4a;};this.getUseRegExp=function(){return _4c;};this.getCaseSensitive=function(){return _4b;};this.getDefaultFields=function(){return _4d;};this.getWithExtendedFields=function(){return _4e;};};abego.TiddlerQuery.prototype.test=function(_4f){if(!_4f){return false;}if(this.regExp){return this.tester.test(_4f);}return this.expr.exec(_4f);};abego.TiddlerQuery.prototype.filter=function(_50){return abego.select(_50,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(_51){this.items=_51;this.setFirstIndexOnPage(0);},getMaxPagesInNavigation:function(){return 10;},getItemsCount:function(_52){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(_53){this.firstIndexOnPage=Math.min(Math.max(0,_53),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(_54,_55){},renderPage:function(_56){if(_56.beginRendering){_56.beginRendering(this);}try{if(this.getItemsCount()){var _57=this.getLastIndexOnPage();var _58=-1;for(var i=this.getFirstIndexOnPage();i<=_57;i++){_58++;_56.render(this,this.items[i],i,_58);}}}finally{if(_56.endRendering){_56.endRendering(this);}}},addPageNavigation:function(_59){if(!this.getItemsCount()){return;}var _5a=this;var _5b=function(e){if(!e){var e=window.event;}abego.consumeEvent(e);var _5c=abego.toInt(this.getAttribute("page"),0);var _5d=_5a.getCurrentPageIndex();if(_5c==_5d){return;}var _5e=_5c*_5a.getItemsPerPage();_5a.setFirstIndexOnPage(_5e);_5a.onPageChanged(_5c,_5d);};var _5f;var _60=this.getCurrentPageIndex();var _61=this.getLastPageIndex();if(_60>0){_5f=createTiddlyButton(_59,"Previous","Go to previous page (Shortcut: Alt-'<')",_5b,"prev");_5f.setAttribute("page",(_60-1).toString());_5f.setAttribute("accessKey","<");}for(var i=-this.getMaxPagesInNavigation();i<this.getMaxPagesInNavigation();i++){var _62=_60+i;if(_62<0){continue;}if(_62>_61){break;}var _63=(i+_60+1).toString();var _64=_62==_60?"currentPage":"otherPage";_5f=createTiddlyButton(_59,_63,"Go to page %0".format([_63]),_5b,_64);_5f.setAttribute("page",(_62).toString());}if(_60<_61){_5f=createTiddlyButton(_59,"Next","Go to next page (Shortcut: Alt-'>')",_5b,"next");_5f.setAttribute("page",(_60+1).toString());_5f.setAttribute("accessKey",">");}}});abego.LimitedTextRenderer=function(){var _65=40;var _66=4;var _67=function(_68,_69,_6a){var n=_68.length;if(n==0){_68.push({start:_69,end:_6a});return;}var i=0;for(;i<n;i++){var _6b=_68[i];if(_6b.start<=_6a&&_69<=_6b.end){var r;var _6c=i+1;for(;_6c<n;_6c++){r=_68[_6c];if(r.start>_6a||_69>_6b.end){break;}}var _6d=_69;var _6e=_6a;for(var j=i;j<_6c;j++){r=_68[j];_6d=Math.min(_6d,r.start);_6e=Math.max(_6e,r.end);}_68.splice(i,_6c-i,{start:_6d,end:_6e});return;}if(_6b.start>_6a){break;}}_68.splice(i,0,{start:_69,end:_6a});};var _6f=function(_70){var _71=0;for(var i=0;i<_70.length;i++){var _72=_70[i];_71+=_72.end-_72.start;}return _71;};var _73=function(c){return (c>="a"&&c<="z")||(c>="A"&&c<="Z")||c=="_";};var _74=function(s,_75){if(!_73(s[_75])){return null;}for(var i=_75-1;i>=0&&_73(s[i]);i--){}var _76=i+1;var n=s.length;for(i=_75+1;i<n&&_73(s[i]);i++){}return {start:_76,end:i};};var _77=function(s,_78,_79){var _7a;if(_79){_7a=_74(s,_78);}else{if(_78<=0){return _78;}_7a=_74(s,_78-1);}if(!_7a){return _78;}if(_79){if(_7a.start>=_78-_66){return _7a.start;}if(_7a.end<=_78+_66){return _7a.end;}}else{if(_7a.end<=_78+_66){return _7a.end;}if(_7a.start>=_78-_66){return _7a.start;}}return _78;};var _7b=function(s,_7c){var _7d=[];if(_7c){var _7e=0;var n=s.length;var _7f=0;do{_7c.lastIndex=_7e;var _80=_7c.exec(s);if(_80){if(_7e<_80.index){var t=s.substring(_7e,_80.index);_7d.push({text:t});}_7d.push({text:_80[0],isMatch:true});_7e=_80.index+_80[0].length;}else{_7d.push({text:s.substr(_7e)});break;}}while(true);}else{_7d.push({text:s});}return _7d;};var _81=function(_82){var _83=0;for(var i=0;i<_82.length;i++){if(_82[i].isMatch){_83++;}}return _83;};var _84=function(s,_85,_86,_87,_88){var _89=Math.max(Math.floor(_88/(_87+1)),_65);var _8a=Math.max(_89-(_86-_85),0);var _8b=Math.min(Math.floor(_86+_8a/3),s.length);var _8c=Math.max(_8b-_89,0);_8c=_77(s,_8c,true);_8b=_77(s,_8b,false);return {start:_8c,end:_8b};};var _8d=function(_8e,s,_8f){var _90=[];var _91=_81(_8e);var pos=0;for(var i=0;i<_8e.length;i++){var t=_8e[i];var _92=t.text;if(t.isMatch){var _93=_84(s,pos,pos+_92.length,_91,_8f);_67(_90,_93.start,_93.end);}pos+=_92.length;}return _90;};var _94=function(s,_95,_96){var _97=_96-_6f(_95);while(_97>0){if(_95.length==0){_67(_95,0,_77(s,_96,false));return;}else{var _98=_95[0];var _99;var _9a;if(_98.start==0){_99=_98.end;if(_95.length>1){_9a=_95[1].start;}else{_67(_95,_99,_77(s,_99+_97,false));return;}}else{_99=0;_9a=_98.start;}var _9b=Math.min(_9a,_99+_97);_67(_95,_99,_9b);_97-=(_9b-_99);}}};var _9c=function(_9d,s,_9e,_9f,_a0){if(_9f.length==0){return;}var _a1=function(_a2,s,_a3,_a4,_a5){var t;var _a6;var pos=0;var i=0;var _a7=0;for(;i<_a3.length;i++){t=_a3[i];_a6=t.text;if(_a4<pos+_a6.length){_a7=_a4-pos;break;}pos+=_a6.length;}var _a8=_a5-_a4;for(;i<_a3.length&&_a8>0;i++){t=_a3[i];_a6=t.text.substr(_a7);_a7=0;if(_a6.length>_a8){_a6=_a6.substr(0,_a8);}if(t.isMatch){createTiddlyElement(_a2,"span",null,"marked",_a6);}else{createTiddlyText(_a2,_a6);}_a8-=_a6.length;}if(_a5<s.length){abego.createEllipsis(_a2);}};if(_9f[0].start>0){abego.createEllipsis(_9d);}var _a9=_a0;for(var i=0;i<_9f.length&&_a9>0;i++){var _aa=_9f[i];var len=Math.min(_aa.end-_aa.start,_a9);_a1(_9d,s,_9e,_aa.start,_aa.start+len);_a9-=len;}};this.render=function(_ab,s,_ac,_ad){if(s.length<_ac){_ac=s.length;}var _ae=_7b(s,_ad);var _af=_8d(_ae,s,_ac);_94(s,_af,_ac);_9c(_ab,s,_ae,_af,_ac);};};(function(){function _b0(msg){alert(msg);throw msg;};if(version.major<2||(version.major==2&&version.minor<1)){_b0("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 _b1;var _b2;var _b3=function(_b4){_b1=_b4;};var _b5=function(){return _b1?_b1:[];};var _b6=function(){return _b1?_b1.length:0;};var _b7=4;var _b8=10;var _b9=2;var _ba=function(s,re){var m=s.match(re);return m?m.length:0;};var _bb=function(_bc,_bd){var _be=_bd.getMarkRegExp();if(!_be){return 1;}var _bf=_bc.title.match(_be);var _c0=_bf?_bf.length:0;var _c1=_ba(_bc.getTags(),_be);var _c2=_bf?_bf.join("").length:0;var _c3=_bc.title.length>0?_c2/_bc.title.length:0;var _c4=_c0*_b7+_c1*_b9+_c3*_b8+1;return _c4;};var _c5=function(_c6,_c7,_c8,_c9,_ca,_cb){_b2=null;var _cc=_c6.reverseLookup("tags",_cb,false);try{var _cd=[];if(config.options.chkSearchInTitle){_cd.push("title");}if(config.options.chkSearchInText){_cd.push("text");}if(config.options.chkSearchInTags){_cd.push("tags");}_b2=new abego.TiddlerQuery(_c7,_c8,_c9,_cd,config.options.chkSearchExtendedFields);}catch(e){return [];}var _ce=_b2.filter(_cc);var _cf=abego.YourSearch.getRankFunction();for(var i=0;i<_ce.length;i++){var _d0=_ce[i];var _d1=_cf(_d0,_b2);_d0.searchRank=_d1;}if(!_ca){_ca="title";}var _d2=function(a,b){var _d3=a.searchRank-b.searchRank;if(_d3==0){if(a[_ca]==b[_ca]){return (0);}else{return (a[_ca]<b[_ca])?-1:+1;}}else{return (_d3>0)?-1:+1;}};_ce.sort(_d2);return _ce;};var _d4=80;var _d5=50;var _d6=250;var _d7=50;var _d8=25;var _d9=10;var _da="yourSearchResult";var _db="yourSearchResultItems";var _dc;var _dd;var _de;var _df;var _e0;var _e1=function(){if(version.extensions.YourSearchPlugin.styleSheetInited){return;}version.extensions.YourSearchPlugin.styleSheetInited=true;setStylesheet(store.getTiddlerText("YourSearchStyleSheet"),"yourSearch");};var _e2=function(){return _dd!=null&&_dd.parentNode==document.body;};var _e3=function(){if(_e2()){document.body.removeChild(_dd);}};var _e4=function(e){_e3();var _e5=this.getAttribute("tiddlyLink");if(_e5){var _e6=this.getAttribute("withHilite");var _e7=highlightHack;if(_e6&&_e6=="true"&&_b2){highlightHack=_b2.getMarkRegExp();}story.displayTiddler(this,_e5);highlightHack=_e7;}return (false);};var _e8=function(){if(!_de){return;}var _e9=_de;var _ea=findPosX(_e9);var _eb=findPosY(_e9);var _ec=_e9.offsetHeight;var _ed=_ea;var _ee=_eb+_ec;var _ef=findWindowWidth();if(_ef<_dd.offsetWidth){_dd.style.width=(_ef-100)+"px";_ef=findWindowWidth();}var _f0=_dd.offsetWidth;if(_ed+_f0>_ef){_ed=_ef-_f0-30;}if(_ed<0){_ed=0;}_dd.style.left=_ed+"px";_dd.style.top=_ee+"px";_dd.style.display="block";};var _f1=function(){if(_dd){window.scrollTo(0,ensureVisible(_dd));}if(_de){window.scrollTo(0,ensureVisible(_de));}};var _f2=function(){_e8();_f1();};var _f3;var _f4;var _f5=new abego.PageWiseRenderer();var _f6=function(_f7){this.itemHtml=store.getTiddlerText("YourSearchItemTemplate");if(!this.itemHtml){_b0("YourSearchItemTemplate not found");}this.place=document.getElementById(_db);if(!this.place){this.place=createTiddlyElement(_f7,"div",_db);}};merge(_f6.prototype,{render:function(_f8,_f9,_fa,_fb){_f3=_fb;_f4=_f9;var _fc=createTiddlyElement(this.place,"div",null,"yourSearchItem");_fc.innerHTML=this.itemHtml;applyHtmlMacros(_fc,null);refreshElements(_fc,null);},endRendering:function(_fd){_f4=null;}});var _fe=function(){if(!_dd||!_de){return;}var _ff=store.getTiddlerText("YourSearchResultTemplate");if(!_ff){_ff="<b>Tiddler YourSearchResultTemplate not found</b>";}_dd.innerHTML=_ff;applyHtmlMacros(_dd,null);refreshElements(_dd,null);var _100=new _f6(_dd);_f5.renderPage(_100);_f2();};_f5.getItemsPerPage=function(){var n=(config.options.chkPreviewText)?abego.toInt(config.options.txtItemsPerPageWithPreview,_d9):abego.toInt(config.options.txtItemsPerPage,_d8);return (n>0)?n:1;};_f5.onPageChanged=function(){_fe();};var _101=function(){if(_de==null||!config.options.chkUseYourSearch){return;}if((_de.value==_dc)&&_dc&&!_e2()){if(_dd&&(_dd.parentNode!=document.body)){document.body.appendChild(_dd);_f2();}else{abego.YourSearch.onShowResult(true);}}};var _102=function(){_e3();_dd=null;_dc=null;};var _103=function(self,e){while(e!=null){if(self==e){return true;}e=e.parentNode;}return false;};var _104=function(e){if(e.target==_de){return;}if(e.target==_df){return;}if(_dd&&_103(_dd,e.target)){return;}_e3();};var _105=function(e){if(e.keyCode==27){_e3();}};addEvent(document,"click",_104);addEvent(document,"keyup",_105);var _106=function(text,_107,_108){_dc=text;_b3(_c5(store,text,_107,_108,"title","excludeSearch"));abego.YourSearch.onShowResult();};var _109=function(_10a,_10b,_10c,_10d,_10e,_10f){_e1();_dc="";var _110=null;var _111=function(txt){if(config.options.chkUseYourSearch){_106(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);}else{story.search(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);}_dc=txt.value;};var _112=function(e){_111(_de);return false;};var _113=function(e){if(!e){var e=window.event;}_de=this;switch(e.keyCode){case 13:if(e.ctrlKey&&_e0&&_e2()){_e0.onclick.apply(_e0,[e]);}else{_111(this);}break;case 27:if(_e2()){_e3();}else{this.value="";clearMessage();}break;}if(String.fromCharCode(e.keyCode)==this.accessKey||e.altKey){_101();}if(this.value.length<3&&_110){clearTimeout(_110);}if(this.value.length>2){if(this.value!=_dc){if(!config.options.chkUseYourSearch||config.options.chkSearchAsYouType){if(_110){clearTimeout(_110);}var txt=this;_110=setTimeout(function(){_111(txt);},500);}}else{if(_110){clearTimeout(_110);}}}if(this.value.length==0){_e3();}};var _114=function(e){this.select();clearMessage();_101();};var args=_10e.parseParams("list",null,true);var _115=getFlag(args,"buttonAtRight");var _116=getParam(args,"sizeTextbox",this.sizeTextbox);var btn;if(!_115){btn=createTiddlyButton(_10a,this.label,this.prompt,_112);}var txt=createTiddlyElement(null,"input",null,null,null);if(_10c[0]){txt.value=_10c[0];}txt.onkeyup=_113;txt.onfocus=_114;txt.setAttribute("size",_116);txt.setAttribute("accessKey",this.accessKey);txt.setAttribute("autocomplete","off");if(config.browser.isSafari){txt.setAttribute("type","search");txt.setAttribute("results","5");}else{txt.setAttribute("type","text");}if(_10a){_10a.appendChild(txt);}if(_115){btn=createTiddlyButton(_10a,this.label,this.prompt,_112);}_de=txt;_df=btn;};var _117=function(){_e3();var _118=_b5();var n=_118.length;if(n){var _119=[];for(var i=0;i<n;i++){_119.push(_118[i].title);}story.displayTiddlers(null,_119);}};var _11a=function(_11b,_11c,_11d,_11e){invokeMacro(_11b,"option",_11c,_11d,_11e);var elem=_11b.lastChild;var _11f=elem.onclick;elem.onclick=function(e){var _120=_11f.apply(this,arguments);_fe();return _120;};return elem;};var _121=function(s){var _122=["''","{{{","}}}","//","<<<","/***","***/"];var _123="";for(var i=0;i<_122.length;i++){if(i!=0){_123+="|";}_123+="("+_122[i].escapeRegExp()+")";}return s.replace(new RegExp(_123,"mg"),"").trim();};var _124=function(){var i=_f3;return (i>=0&&i<=9)?(i<9?(i+1):0):-1;};var _125=new abego.LimitedTextRenderer();var _126=function(_127,s,_128){_125.render(_127,s,_128,_b2.getMarkRegExp());};var _129=TiddlyWiki.prototype.saveTiddler;TiddlyWiki.prototype.saveTiddler=function(_12a,_12b,_12c,_12d,_12e,tags,_12f){_129.apply(this,arguments);_102();};var _130=TiddlyWiki.prototype.removeTiddler;TiddlyWiki.prototype.removeTiddler=function(_131){_130.apply(this,arguments);_102();};config.macros.yourSearch={label:"yourSearch",prompt:"Gives access to the current/last YourSearch result",handler:function(_132,_133,_134,_135,_136,_137){if(_134.length==0){return;}var name=_134[0];var func=config.macros.yourSearch.funcs[name];if(func){func(_132,_133,_134,_135,_136,_137);}},tests:{"true":function(){return true;},"false":function(){return false;},"found":function(){return _b6()>0;},"previewText":function(){return config.options.chkPreviewText;}},funcs:{itemRange:function(_138){if(_b6()){var _139=_f5.getLastIndexOnPage();var s="%0 - %1".format([_f5.getFirstIndexOnPage()+1,_139+1]);createTiddlyText(_138,s);}},count:function(_13a){createTiddlyText(_13a,_b6().toString());},query:function(_13b){if(_b2){createTiddlyText(_13b,_b2.toString());}},version:function(_13c){var t="YourSearch %0.%1.%2".format([version.extensions.YourSearchPlugin.major,version.extensions.YourSearchPlugin.minor,version.extensions.YourSearchPlugin.revision]);var e=createTiddlyElement(_13c,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de/#YourSearchPlugin");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">"+t+"<font>";},copyright:function(_13d){var e=createTiddlyElement(_13d,"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(_13e){if(_b2){var r=abego.parseNewTiddlerCommandLine(_b2.getQueryText());var btn=config.macros.newTiddler.createNewTiddlerButton(_13e,r.title,r.params,"new tiddler","Create a new tiddler based on search text. (Shortcut: Ctrl-Enter; Separators: '.', '#')",null,"text");var _13f=btn.onclick;btn.onclick=function(){_e3();_13f.apply(this,arguments);};_e0=btn;}},linkButton:function(_140,_141,_142,_143,_144,_145){if(_142<2){return;}var _146=_142[1];var text=_142<3?_146:_142[2];var _147=_142<4?text:_142[3];var _148=_142<5?null:_142[4];var btn=createTiddlyButton(_140,text,_147,_e4,null,null,_148);btn.setAttribute("tiddlyLink",_146);},closeButton:function(_149,_14a,_14b,_14c,_14d,_14e){var _14f=createTiddlyButton(_149,"close","Close the Search Results (Shortcut: ESC)",_e3);},openAllButton:function(_150,_151,_152,_153,_154,_155){var n=_b6();if(n==0){return;}var _156=n==1?"open tiddler":"open all %0 tiddlers".format([n]);var _157=createTiddlyButton(_150,_156,"Open all found tiddlers (Shortcut: Alt-O)",_117);_157.setAttribute("accessKey","O");},naviBar:function(_158,_159,_15a,_15b,_15c,_15d){_f5.addPageNavigation(_158);},"if":function(_15e,_15f,_160,_161,_162,_163){if(_160.length<2){return;}var _164=_160[1];var _165=(_164=="not");if(_165){if(_160.length<3){return;}_164=_160[2];}var test=config.macros.yourSearch.tests[_164];var _166=false;try{if(test){_166=test(_15e,_15f,_160,_161,_162,_163)!=_165;}else{_166=(!eval(_164))==_165;}}catch(ex){}if(!_166){_15e.style.display="none";}},chkPreviewText:function(_167,_168,_169,_16a,_16b,_16c){var _16d=_169.slice(1).join(" ");var elem=_11a(_167,"chkPreviewText",_16a,_16c);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(_16e,_16f,_170,_171,_172,_173){var name=_170[0];var func=config.macros.foundTiddler.funcs[name];if(func){func(_16e,_16f,_170,_171,_172,_173);}},funcs:{title:function(_174,_175,_176,_177,_178,_179){if(!_f4){return;}var _17a=_124();var _17b=_17a>=0?"Open tiddler (Shortcut: Alt-%0)".format([_17a.toString()]):"Open tiddler";var btn=createTiddlyButton(_174,null,_17b,_e4,null);btn.setAttribute("tiddlyLink",_f4.title);btn.setAttribute("withHilite","true");_126(btn,_f4.title,_d4);if(_17a>=0){btn.setAttribute("accessKey",_17a.toString());}},tags:function(_17c,_17d,_17e,_17f,_180,_181){if(!_f4){return;}_126(_17c,_f4.getTags(),_d5);},text:function(_182,_183,_184,_185,_186,_187){if(!_f4){return;}_126(_182,_121(_f4.text),_d6);},field:function(_188,_189,_18a,_18b,_18c,_18d){if(!_f4){return;}var name=_18a[1];var len=_18a.length>2?abego.toInt(_18a[2],_d7):_d7;var v=store.getValue(_f4,name);if(v){_126(_188,_121(v),len);}},number:function(_18e,_18f,_190,_191,_192,_193){var _194=_124();if(_194>=0){var text="%0)".format([_194.toString()]);createTiddlyElement(_18e,"span",null,"shortcutNumber",text);}}}};var opts={chkUseYourSearch:true,chkPreviewText:true,chkSearchAsYouType:true,chkSearchInTitle:true,chkSearchInText:true,chkSearchInTags:true,chkSearchExtendedFields:true,txtItemsPerPage:_d8,txtItemsPerPageWithPreview:_d9};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 field"+"s {{{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 containin"+"g \"Plugin\" either in the title or in the tags (but does not look for \"Plugin\" in the text). \n\n!Boole"+"an 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 neces"+"sarily 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 \"j"+"eremy\".\n\n!'Exact Word' Search\nBy default a search result all matches that 'contain' the searched tex"+"t. E.g. if you search for {{{Task}}} you will get all tiddlers containing 'Task', but also '~Complet"+"edTask', '~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 'Tas"+"k', 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 YourSearc"+"h. However when ''~RegExpSearch'' is on Filtered and Boolean Search are disabled.\n\nIn addition you m"+"ay do a \"regular expression\" search even with the ''~RegExpSearch'' set to false by directly enterin"+"g 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 E"+"xpression Filtering\nIf you are familiar with JavaScript programming and know some TiddlyWiki interna"+"ls 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 e"+"valuate to {{{true}}} when the given tiddler should be included in the result. \n\nExample: {{{ { tidd"+"ler.modified > new Date(\"Jul 4, 2005\")} }}} returns all tiddler modified after July 4th, 2005.\n\n!Com"+"bined Search\nYou are free to combine the various search options. \n\n''Examples''\n|!What you type|!Res"+"ult|\n|{{{!jonny !jeremy -%football}}}|all tiddlers with both {{{jonny}}} and {{{jeremy}}} in its tit"+"les, but no {{{football}}} in content.|\n|{{{#=Task}}}|All tiddlers tagged with 'Task' (the exact wor"+"d). Tags named '~CompletedTask', '~TaskForce' etc. are not considered.|\n\n!Access Keys\nYou are encour"+"aged to use the access keys (also called \"shortcut\" keys) for the most frequently used operations. F"+"or 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 in"+"put field so you can directly start typing your query. Pressing {{{Alt-F}}} will also display the pr"+"evious search result. This way you can quickly display multiple tiddlers using \"Press {{{Alt-F}}}. S"+"elect tiddler.\" sequences.|\n|{{{ESC}}}|Closes the [[YourSearch Result]]. When the [[YourSearch Resul"+"t]] 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 e"+"tc. 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 [[Your"+"Search 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 t"+"hese shortcuts don't work for you check your browser if you have other extensions installed that alr"+"eady \"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 chk"+"SearchInText>>Text ('%')     <<option chkSearchInTags>>Tags ('#')    <<option chkSearchExtendedFiel"+"ds>>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 pre"+"view text: <<option txtItemsPerPageWithPreview>>|\n";config.shadowTiddlers["YourSearchStyleSheet"]="/***\n!~YourSearchResult Stylesheet\n***/\n/*{{{*/\n.yourSearchResult {\n\tposition: absolute;\n\twidth: 800"+"px;\n\n\tpadding: 0.2em;\n\tlist-style: none;\n\tmargin: 0;\n\n\tbackground: #ffd;\n\tborder: 1px solid DarkGra"+"y;\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.yourSea"+"rchRange, .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 .summa"+"ry .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-to"+"p: 2px;\n}\n\n.yourSearchNumber {\n\tcolor: #808080;\n}\n\n\n.yourSearchTags {\n\tcolor: #008000;\n}\n\n.yourSearc"+"hText {\n\tcolor: #808080;\n\tmargin-bottom: 6px;\n}\n\n/*}}}*/\n/***\n!!Footer\n***/\n/*{{{*/\n.yourSearchFoote"+"r {\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: bla"+"ck;\n\ttext-decoration: underline;\n}\n\n.yourSearchNaviBar a:hover {\n\tbackground-color: none;\n}\n\n.yourSe"+"archNaviBar .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=\"yourSearc"+"h 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=\"yourSea"+"rchButtons\" 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 lin"+"kButton 'YourSearch Options' options 'Configure YourSearch'\"></span>\n\t\t<span macro=\"yourSearch linkB"+"utton 'YourSearch Help' help 'Get help how to use YourSearch'\"></span>\n\t\t<span macro=\"yourSearch clo"+"seButton\"></span>\n\t</td>\n  </tr>\n</tbody></table>\n\n<!-- The List of Found Tiddlers ================="+"=========================== -->\n<div id=\"yourSearchResultItems\" itemsPerPage=\"25\" itemsPerPageWithPr"+"eview=\"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=\"yourSearc"+"h 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 Resu"+"lt: No tiddlers found for <span class=\"yourSearchQuery\" macro=\"yourSearch query\"></span>.\n\t</td>\n\t<t"+"d 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='yourSea"+"rchTitle' macro='foundTiddler title'/></span>&nbsp;-&nbsp;\n<span class='yourSearchTags' macro='found"+"Tiddler field tags 50'/></span>\n<span macro=\"yourSearch if previewText\"><div class='yourSearchText' macro='fo"+"undTiddler 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=_109;var _195=function(){if(config.macros.search.handler!=_109){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 tidd"+"lers)\nto enable the 'Your Search' features.");}};setTimeout(_195,5000);abego.YourSearch.getStandardRankFunction=function(){return _bb;};abego.YourSearch.getRankFunction=function(){return abego.YourSearch.getStandardRankFunction();};abego.YourSearch.getCurrentTiddler=function(){return _f4;};abego.YourSearch.closeResult=function(){_e3();};abego.YourSearch.getFoundTiddlers=function(){return _b1;};abego.YourSearch.getQuery=function(){return _b2;};abego.YourSearch.onShowResult=function(_196){highlightHack=_b2?_b2.getMarkRegExp():null;if(!_196){_f5.setItems(_b5());}if(!_dd){_dd=createTiddlyElement(document.body,"div",_da,"yourSearchResult");}else{if(_dd.parentNode!=document.body){document.body.appendChild(_dd);}}_fe();highlightHack=null;};})();}
//%/
|Name|aaa|
|Description|for ~SCiO OMM|
|PageTemplate|##PageTemplate|
|ViewTemplate|##ViewTemplate|
|StyleSheet|##StyleSheet|

!PageTemplate

<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>

<div id='directorMenu' refresh='content' tiddler='DirectorMenu'></div>
<div id='outputMenu' refresh='content' tiddler='OutputMenu'></div>

<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>
<div id='tiddlerDisplay'></div>
</div>

!ViewTemplate
<!--{{{-->
<div class='title' macro='view title'></div>
<div macro="showWhenTagged Q">
	<div class='Qtext' macro='tiddler {{tiddler.title+" Text"}}'></div>
	<div class='Qnav' macro='tiddler {{tiddler.title+" Nav"}}'></div>
	<div class='Qscore' macro ='formTiddler ScoreTemplate'</div>
	<div class='Qhelp' macro='tiddler {{tiddler.title+" Help"}}'></div>
</div>
<div class='viewer' macro='view text wikified'></div>
<!--}}}-->

!StyleSheet
#mainMenu {position:absolute; left:2em; width:20em; text-align:left; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}
#displayArea {margin:2em 5em 0em 25em;}
.people input , .organisation input {width:26em;}
.subtitle {display:none;}
.Qnav {text-align:right; font-size:1.5em;}

//{{{
version.extensions.favicon = {major: 0, minor: 1, revision: 0, date: new Date("Jul 18, 2005")};
var n = document.createElement("link");
n.rel = "shortcut icon";
n.href = "http://dl.dropbox.com/u/1316865/OMM/Director/favicon1.ico";
document.getElementsByTagName("head")[0].appendChild(n);
//}}}
/***
|''Name:''|jQueryPopup|
|''Description:''|Inline annotations for tiddler text with a 'jQueryfied' popup|
|''Author:''|Tobias Beer (original AnnotationsPlugin by Saq Imtiaz)|
|''Source:''|http://tbGTD.tiddlyspot.com/#jQueryPopup|
|''Version:''|0.1|
|''Date:''|2009.10.19|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|
|''incompatible with!!!''|AnnotationsPlugin|

((@@color:red;background:transparent;mod of ~AnnotationsPlugin@@(^strongly modded for tbGTD<br />*added delay<br />*wikified annotated & annotation<br />*used general tw Popup<br />*jQuery magic)))
!!Usage:
*{{{((text to annotate(annotation goes here)))}}}
* To include the text being annotated, in the popup as a title, put {{{^}}} as the first letter of the annotation text.
** {{{((text to annotate(^annotation goes here)))}}}
!!Examples:
Mouse over, the text below:
* ((_banana(the best fruit in the world)))
* ((_banana(^the best fruit in the world)))
***/
//{{{
config.extensions.anno={
	show:function(id){
		var el=document.getElementById(id);
		el.timerA=false;
		
		var wrap=document.getElementById('annowrap');
		if (wrap==undefined)wrap=createTiddlyElement(document.body,"div","annowrap",null);
		else wrap.innerHTML='';
		wrap.style.display='none';
		
		var stackPosition = Popup.find(el,"popup");
		Popup.remove(stackPosition+1);
		var popup = createTiddlyElement(wrap,"ol","popup","popup");
		popup.stackPosition = stackPosition;
		Popup.stack.push({root: el, popup: popup});
		
		if(el.subject)wikify("!"+el.subject+"\n",popup);
		wikify(el.anno,popup);
		Popup.show();
		
		popup.annoId=id;
		popup.onmouseover=this.mouseover;
		popup.onmouseout=this.mouseout;
		jQuery(wrap).fadeIn('slow');
		addClass(el,"annosubover");
		el.wrap=wrap;
	},
	hide:function(id){var el=document.getElementById(id);if(el.keepAnno)return;else this.remove(id);
	},
	mouseover:function(e){
		var el=document.getElementById(this.annoId);el.keepAnno=true;if(annoHideTimer)clearTimeout(annoHideTimer);
	},
	mouseout:function(e){
		annoHideTimer=setTimeout("config.extensions.anno.remove("+this.annoId+")",200);
	},
	remove:function(id){
		var el=document.getElementById(id);
		Popup.remove();
		removeNode(el.wrap);
		el.wrap=null;
		el.keepAnno=false;		
		removeClass(el,"annosubover");
	}
}
config.formatters.unshift({
	name:"annotations",
	match:"\\(\\(",
	lookaheadRegExp:/\(\((\_{0,2})(.*?)\((\^?)((?:.|\n)*?)\)\)\)/g,
	handler:function(w){
		this.lookaheadRegExp.lastIndex=w.matchStart;
		var an=this.lookaheadRegExp.exec(w.source);
		if(an&&an.index==w.matchStart){
			var el=createTiddlyElement(w.output,"span",null,"annosub");
			if (an[1]) el=createTiddlyElement(el,"span",null,null);
			wikify('xxx'+an[2],el);
			el.innerHTML=el.innerHTML.replace(/xxx/,'',1);
			el.anno=an[4];
			if(an[3])el.subject=an[2];
			el.onmouseover=this.onmouseover;
			el.onmouseout=this.onmouseout;
			el.ondblclick=this.onmouseout;
			w.nextMatch=an.index+an[0].length;
		}
	},
	onmouseover:function(e){
		if (!this.id) this.id=new Date().getTime()+Math.random();
		if(this.timerA)return;
		this.timerA=true;
		annoTimer=setTimeout("config.extensions.anno.show("+this.id+")",300);
	},
	onmouseout:function(e){
		this.timerA=false;
		if(!this.wrap||this.keep)clearTimeout(annoTimer);
		var id=this.id;
		annoHideTimer=setTimeout("config.extensions.anno.hide("+this.id+")",200);
	}
});
setStylesheet(".anno{position:absolute;padding:0.5em;max-width:15em;z-index:101;width:expression(document.body.clientWidth > (255/12) *parseInt(document.body.currentStyle.fontSize)?'15em':'auto' );}.anno h1, .anno h2{margin-top:0;}.annosubover{cursor:text;}","AnnotationStyles");
//}}}
<script>
here=story.findContainingTiddler(place); 
var link=here.getAttribute("tiddler");
jQuery("a[tiddlylink="+link+"]").addClass("linkVisited")
</script>
[img(100px+,75px+)[sciologo.jpg]]
<<tiddler SideBarTabs>>
<<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
''&copy; ~SCiO 2010'' 
Report a Problem, or make suggestions [[here|mailto:r.a.hough@gmail.com]]. 
Read more about other versions of OMM on the [[OMM Homepage|ommhome.html]]
Download a printable version of OMM Director from the [[SCiO Website|http://scio.org.uk/OMM]]


//{{{
config.macros.omm={
questions:'Questions',
questionary:'Questionary',
numQuestions:24,
numPathologies:22,
potentialTreshold:2,
showNextBtn:'>',
showNextTip:'show next potential pathology',
showFirstBtn:'<<',
showFirstTip:'show first potential pathology',
noPotential:'@@color:#FAA;(This pathology is __not in the list__ of potential pathologies.)@@',
isPrimary:'@@color:#F55;(This is a potential __primary__ pathology.)@@',
isSecondary:'@@color:#F88;(This is a potential __secondary__ pathology.)@@',
rateTip:'assign score ',
rateInfo:'(1 = barely,  7 = entirely )',
startOver:'Do you really want to start over? All previous answers will be lost!',
mxHead:'OMM Maturity Matrix showing aspects of the OMM and their stages of maturity',
mxStages:["Capacity","Connectivity","Balance","Consciousness"],
mxAspects:['Operations','Co-ordination','Resource & Performance Delivery','Monitoring','Development','Managing Strategy'], 

P1:'Untested Assumptions',//pathology 1
P2:'Control Dilemma',
P3:'Strays',
P4:'Excessive Independence',
P5:'Shockwaves',
P6:'Re-inventing the Wheel',
P7:'Overlapping Responsibility',
P8:'Missing Link',
P9:'Lack of Resources',
P10:'Dictators',
P11:'Open Loops and Reverse Polarity',
P12:'Lack of Strategic Learning',
P13:'Here be Dragons',
P14:'Bunker Mentality',
P15:'Bean Counters',
P16:'Castles in the Air',
P17:'Strategic Silos',
P18:'Sample Pathology',
P19:'No Grassing',
P20:'Identity Crisis',
P21:'Following all the Fads',
P22:'Giraffe',

Q1:[		//question 1
	[9,16],	//primary pathologies
	[3,20],	//secondary pathologies
	[7,3,5,2]	//navigation: [scoreRange,lessThanScore?,thenGoHere,elseGoHere] or [scoreRange,alwaysGoHere]
], 
Q2:[
	[9,8,10,11],
	[],
	[7,3,5,3]
], 
Q3:[
	[9,8,10,11],
	[17],
	[7,3,5,4]
], 
Q4:[
	[4],
	[5],
	[7,5]
], 
Q5:[
	[],
	[22,1,2],
	[7,3,9,6]
], 
Q6:[
	[22],
	[2,1],
	[7,3,9,7]
], 
Q7:[
	[2],
	[],
	[7,3,9,8]
], 
Q8:[
	[19],
	[1],
	[7,9]
], 
Q9:[
	[15],
	[13,12,14,18],
	[7,10]
], 
Q10:[
	[13],
	[14,12,14,18],
	[7,3,13,11]
], 
Q11:[
	[],
	[21,12,13,14,18],
	[7,3,13,12]
], 
Q12:[
	[11],
	[4,3],
	[7,13]
], 
Q13:[
	[],
	[14,12,14,18],
	[7,3,17,14]
], 
Q14:[
	[20],
	[],
	[7,3,17,15]
], 
Q15:[
	[16,15],
	[17],
	[7,3,17,16]
], 
Q16:[
	[16,15,18],
	[17],
	[7,17]
], 
Q17:[
	[20],
	[],
	[7,3,21,18]
], 
Q18:[
	[11],
	[1,21],
	[7,3,21,19]
], 
Q19:[
	[1],
	[6,3],
	[7,3,21,20]
], 
Q20:[
	[6,5],
	[4],
	[7,21]
], 
Q21:[
	[6,5],
	[4],
	[7,3,0,22]
], 
Q22:[
	[6,5],
	[4,7],
	[7,3,0,23]
], 
Q23:[
	[6,5],
	[4],
	[7,3,0,24]
], 
Q24:[
	[9,8,10],
	[17],
	[7,0]
],
handler:function(place,macroName,params,wikifier,paramString,tiddler){
	var b,a=params.shift(),el=place,id=new Date().getTime()+(''+Math.random()).substr(5);
	switch(a){//action
	case 'summary':this.summary(el);break;
	case 'matrix':this.matrix(el);break;
	case 'cycle':this.cycle(el);break;
	case 'reset':
		b=createTiddlyElement(el,'a',null,'tiddlyLinkExisting','Start Over',{title:'click to start over'});
		b.onclick=this.reset;b.style.cursor='pointer';
		break;
	default:this.update('omm'+id,el);//render questionary
	}
},
update:function(id,el){
	var a,btn,curr,ctn,done,last,nxt,mcr=config.macros.omm,num=mcr.numQuestions,pry,q,r,rts,sry,ti;
	btn=typeof(id)=='object';
	ti=story.findContainingTiddler(btn?this:el).getAttribute('tiddler');
	if(btn){
		r=this.getAttribute('rate');//read rate & question from button attributes
		last=parseInt(this.getAttribute('question'));
		store.setValue(ti,'omm_q'+last,r);
		q=mcr['Q'+last];rts=q[2];//get rules for next question
		nxt=(rts.length>2?(r<rts[1]?rts[2]:rts[3]):rts[1]);//find next
		if(nxt==rts[2]){
			while(last<nxt){
				last++;if(store.getValue(ti,'omm_q'+last)){nxt=last;break;}
			}
		}
		omm=this.parentNode.parentNode;
		mcr.summary();//recalc stats
		store.setValue(ti,'omm_q',nxt);
		if(config.options.chkAutoSave)saveChanges(true);
		return;
	}else{
		nxt=store.getValue(ti,'omm_q');nxt=nxt?nxt:1;nxt>num?1:nxt;
		if(nxt==0){setTimeout("story.displayTiddler(null,'End of questionary');",500);return;}
		omm=createTiddlyElement(place,'div',id,'omm');
	}
	q=mcr['Q'+nxt];pry=q[0];sry=q[1],rts=q[2];
	omm.setAttribute('question',nxt);
	wikify('!Question '+nxt+'\n'+store.getTiddlerText(mcr.questions+'##Question '+nxt),omm);
	ctn=createTiddlyElement(omm,'div',null,'omm_btns');
	for(r=1;r<rts[0]+1;r++){ //create buttons
		curr=parseInt(store.getValue(ti,'omm_q'+nxt))==r?' current':'';
		btn=createTiddlyElement(ctn,'a',null,'button'+curr,r,{'rate':r,'question':nxt,'title':this.rateTip+(r)});
		btn.onclick=mcr.update;
	}
	createTiddlyElement(ctn,'span',null,'omm_rng',mcr.rateInfo);
	wikify('{{Qhelp{<<slider chkMoreOmm "'+mcr.questions+'##Question '+nxt+' more" "more info" "toggle more info on question '+nxt+'">>}}}',ctn);
},
summary:function(el){
	var ap=[],as=[],lp={},ls={},out='',p,pa,pry,q,qs,qry=this.questionary,rls,s,score,sry,wgt;
	for(q=1;q<this.numQuestions+2;q++){
	  score=store.getValue(qry,'omm_q'+q);
		if(score&&score<=this.potentialTreshold){
			qs=this['Q'+q];pry=qs[0];sry=qs[1];rls=qs[2];
			if(el){
				ls=[];lp=[];
		  	for(p=0;p<pry.length;p++)lp.push('[['+this["P"+pry[p]]+']]');
		  	for(s=0;s<sry.length;s++)ls.push('[['+this["P"+sry[s]]+']]');
				out+='\n| '+q+' |<<tiddler [['+this.questions+'##Question '+q+']]>>|'+lp.join("<br />")+'|'+ls.join("<br />")+'|';
			}else{
				for(p=0;p<pry.length;p++){
					pa='P'+pry[p];wgt=1-score/rls[0];
					if(lp[pa]>=0)ap[lp[pa]][0]+=wgt;else{lp[pa]=ap.length;ap.push([wgt,pa]);}
				}
				for(p=0;p<sry.length;p++){
					pa='P'+sry[p];wgt=1-score/rls[0];
					if(ls[pa]>=0)as[ls[pa]][0]+=wgt;else{ls[pa]=as.length;as.push([wgt,pa]);}
				}
			}
		}
	}
	if(el){wikify(
		'!!Pathologies triggered by given answers\n'+
		'|width:4%; !# |width:40%; !Question |width:18%; !Primary Pathology |width:18%; !Secondary Pathology |h'
		+out,el);
	}else{
		ap.sort();as.sort();
		lp='';for(p=ap.length-1;p>-1;p--)lp+=ap[p][1]+' ';
		ls='';for(p=as.length-1;p>-1;p--){pa=as[p][1]+' ';if(lp.indexOf(pa)<0)ls+=as[p][1]+' ';}
		store.setValue(qry,'omm_pry',lp);
		store.setValue(qry,'omm_sry',ls);
	}
},
matrix:function(el){
var i,c,clr,cols=6,out='',row,scr,sgs=this.mxStages,qry=this.questionary;
for(i=0;i<sgs.length;i++) {
	j=i;c=0;row='| '+sgs[i];
	while(c<cols){
		scr=store.getValue(qry,'omm_q'+(j+1));
		row+=' | '+(scr?scr:'');
		c++;j=j+4;
	}
	out+=row+' |\n';
}
wikify(out+'|'+this.mxHead+'|c\n| |width:15%; '+this.mxAspects.join(' |width:15%; ')+' |h',el);
jQuery("td:contains(2),td:contains(1)",el).addClass('red');
jQuery("td:contains(3),td:contains(4),td:contains(5)",el).addClass('amber');
jQuery("td:contains(6),td:contains(7)",el).addClass('green');
},
reset:function(){
		var mcr=config.macros.omm,np=mcr.numPathologies,ok,p,qry=mcr.questionary;
		ok=confirm(mcr.startOver);
		if(ok){
			for(p=1;p<np+1;p++)store.fetchTiddler(mcr['P'+p]).fields={};
			store.fetchTiddler(qry).fields={};story.saveTiddler(qry);
			setTimeout('story.displayTiddler(null,"'+qry+'");',1000);
		}
		return ok;
},
cycle:function(el){
	var btn,cls,f,isPry,isSry,mcr=this,np=this.numPathologies,p,qry=this.questionary,pry,sry,tid,what;
	tid=story.findContainingTiddler(el).getAttribute('tiddler');
	for(p=0;p<np+1;p++)if(this['P'+p]==tid)break;
	pa=(this['P'+p]==tid)?'P'+p:'';
	if(!pa){alert('Could not find pathology '+tid+' in pathology list in ommPlugin!');return;}
	fn=function(str){
		var i,n,s=str;
		if(!s)return;
		if(!pa)return s.substr(0,s.indexOf(' '));
		i=s.indexOf(pa+' ');
		if(i>-1){
			if(s==pry)isPry=true;else if(s==sry)isSry=true;
			s=s.substr(i+pa.length+1);
			i=s.indexOf(' ');
			if(i)n=s.substr(0,i);
			if(!n)pa='';
		}
		return n;
	}
	pry=store.getValue(qry,'omm_pry');pry=pry?pry:'';
	sry=store.getValue(qry,'omm_sry');sry=sry?sry:'';
	nxt=fn(pry);if(!nxt)nxt=fn(sry);
	what='Next';
	if(!nxt){
		what='First';
		nxt=pry?pry.substr(0,pry.indexOf(' ')):sry.substr(0,pry.indexOf(' '));
	}
	btn=createTiddlyButton(el,mcr['show'+what+'Btn'],mcr['show'+what+'Tip'],function(){story.displayTiddler(el,mcr[nxt])},null);
	wikify(isPry?mcr.isPrimary:(isSry?mcr.isSecondary:mcr.noPotential),el);
}
}
setStylesheet(
	'#tiddler'+config.macros.omm.questions+' h2{display:none;}'+
	'.omm_rng{color:#933;margin:0 20px;}'+
	'.omm_btns{margin-top:20px;}'+
	'.viewer .omm_btns .current{font-weight:bold;background:#FDD;}'+
	'.viewer .omm_btns .button{padding:5px 15px;cursor:pointer;margin:0 5px 0 0;}','ommStyles');
//}}}
<script>
var out=DataTiddler.getData("Customising the Questionnaire","Partners");
if (out.length>0){
	q1=' (‘';
	q2='’)';

}
else {
	q1='';
	q2='';
}
return '//partners// ' +  q1 +out + q2
</script>
<<tiddler PrintPathology>> 
[[Ratings|RatingSummary]]
<svg width="600" height="400" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg">
 <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
 <g>
  <title>Layer 1</title>
  <rect ry="5" rx="5" stroke-width="3" stroke="#3a6b00" fill="#e5e5e5" id="svg_28" height="181" width="513.000011" y="42.833336" x="59.876483"/>
  <text font-weight="bold" xml:space="preserve" text-anchor="middle" font-family="Sans-serif" font-size="24" stroke-width="0" stroke="#000000" fill="#3a6b00" id="svg_1" y="94.517" x="315.017">You</text>
  <text transform="matrix(1.55779, 0, 0, 4.28, -27.2055, -585.531)" xml:space="preserve" text-anchor="middle" font-family="Sans-serif" font-size="24" stroke-width="0" stroke="#000000" fill="#d40000" id="svg_2" y="190.508" x="184.336"/>
  <g id="svg_11">
   <text id="svg_9" xml:space="preserve" text-anchor="middle" font-family="Sans-serif" font-size="24" stroke-width="0" stroke="#000000" fill="#d40000" y="154.517" x="315.017">Operations</text>
   <text id="svg_10" xml:space="preserve" text-anchor="middle" font-family="Sans-serif" font-size="24" stroke-width="0" stroke="#000000" fill="#d40000" y="183.517" x="315.017">Manager</text>
  </g>
  <g id="svg_12">
   <text id="svg_13" xml:space="preserve" text-anchor="middle" font-family="Sans-serif" font-size="24" stroke-width="0" stroke="#000000" fill="#d40000" y="150.517" x="473.017">Operations</text>
   <text id="svg_14" xml:space="preserve" text-anchor="middle" font-family="Sans-serif" font-size="24" stroke-width="0" stroke="#000000" fill="#d40000" y="179.517" x="473.017">Manager</text>
  </g>
  <g id="svg_15">
   <text id="svg_16" xml:space="preserve" text-anchor="middle" font-family="Sans-serif" font-size="24" stroke-width="0" stroke="#000000" fill="#d40000" y="150.517" x="137.017">Operations</text>
   <text id="svg_17" xml:space="preserve" text-anchor="middle" font-family="Sans-serif" font-size="24" stroke-width="0" stroke="#000000" fill="#d40000" y="179.517" x="137.017">Manager</text>
  </g>
  <line fill="none" stroke-width="2" stroke="#000000" id="svg_24" y2="109.683334" x2="476.183451" y1="109.683334" x1="138.183443"/>
  <line fill="none" stroke-width="2" stroke="#000000" id="svg_25" y2="126.683334" x2="315.183334" y1="109.683334" x1="315.183334"/>
  <line fill="none" stroke-width="2" stroke="#000000" id="svg_26" y2="124.683334" x2="139.183334" y1="110.683334" x1="139.183334"/>
  <line fill="none" stroke-width="2" stroke="#000000" id="svg_27" y2="125.5" x2="475.5" y1="109.5" x1="475.5"/>
 </g>
</svg>
kjgkhkjhkjhkjh
<script>
var out=DataTiddler.getData("Customising the Questionnaire","ExternalOperationalEnvironment");
if (out.length>0){
	q1=' (‘';
	q2='’)';

}
else {
	q1='';
	q2='';
}
return 'its //external operational environment// ' +  q1 +out + q2
</script>
<div id='tiddlersBar' refresh='none' ondblclick='config.macros.tiddlersBar.onTiddlersBarAction(event)'></div>
<script>
var out=DataTiddler.getData("Customising the Questionnaire","Customers");
if (out.length>0){
	q1=' (‘';
	q2='’)';

}
else {
	q1='';
	q2='';
}

return "//your customers//" +  q1 +out + q2
</script>
<script>
var out=DataTiddler.getData("Customising the Questionnaire","YourManager");
if (out.length>0){
	q1=' (‘';
	q2='’)'; 
}
else {
	q1='';
	q2='';
}
return //your manager// ' +  q1 +out + q2
</script>
<script>
var out=DataTiddler.getData("Customising the Questionnaire","Operations");
if (out.length>0){
	q1=' (‘';
	q2='’)';

}
else {
	q1='';
	q2='';
}
return '//your operations//' +  q1 +out + q2
</script>
<script>
var out=DataTiddler.getData("Customising the Questionnaire","OperationsManagers");
if (out.length>0){
	q1=' (‘';
	q2='’)'; 
}
else {
	q1='';
	q2='';
}
return "//your operations managers //" +  q1 +out+ q2
</script>
<script>
var out=DataTiddler.getData("Customising the Questionnaire","Organisation");
if (out.length>0){
	q1=' (‘';
	q2='’)'; 
}
else {
	q1='';
	q2='';
}
return "//your organisation //" +  q1 +out+ q2
</script>
<script>
var out=DataTiddler.getData("Customising the Questionnaire","Suppliers");
if (out.length>0){
	q1=' ("';
	q2='")';

}
else {
	q1='';
	q2='';
}

return '//your suppliers//' +  q1 +out + q2
</script>
{{{
var Questions = ['Q1','Q2','Q3','Q4','Q5','Q6','Q7','Q8','Q9','Q10','Q11','Q12','Q13','Q14','Q15','Q16','Q17','Q18','Q19','Q20','Q21','Q22','Q23','Q24'];

config.messages.tiddlerLinkTooltip='%0';
// set tooltip on 'close' to be title of button // 
config.macros.toolbar.getCommandTooltip = function(command,tiddler)
{
	return (tiddler.isReadOnly() && command.readOnlyTooltip || command.tooltip).format([tiddler.title]);
};

merge(config.commands.closeTiddler,{
        text: "close",
        tooltip: "close '%0'"});

merge(config.commands.closeOthers,{
	text: "close others",
	tooltip: "close all others"});

config.options.txtBackupFolder = 'BackUp';
merge(config.commands.references,{
	text: "references",
	tooltip: "Show archetypes that link to this one",
	popupNone: "No references"});

}}}
if(config.options.txtUserName != "AlexHough") {
	readOnly = true;
	showBackstage = false;
}