Community Gardens & Climate Change

A TiddlyWiki Creative Commons learning environment
in climate change and community diversity
centered in La Perla Garden


is loading ...

Requires Javascript.

This web site is being developed for Climate Change 2.0 and the NGO Committee on Education by Information Habitat: Where Information Lives
Climate Change 2.0 logo of Conference Of NGOs

Community Gardens & Climate Change - Urban oases & creative commons learning environment - where the garden is the teacher
<!--{{{-->
<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]];}

#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 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 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:0em 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 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

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

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

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 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 0em;}
.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 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 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 0em 14em;}

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

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

.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:0em 0.25em; padding:0em 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 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 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 0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em 0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0em; right:0em;}
#backstageButton a {padding:0.1em 0.4em 0.1em 0.4em; margin:0.1em 0.1em 0.1em 0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin:0em 3em 0em 3em; padding:1em 1em 1em 1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em 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 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
<!--{{{-->
<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'></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>>
The ''60dpingo'' tag is for tiddlers relating to the [[60th Annual DPI/NGO Conference]].

|<<siteMap "un dpi">> |<<siteMap  ngo-dpi>> |

The ''60th Annual DPI/NGO Conference'', organized by an NGO '''Planning Committee''' in partnership with the United Nations Department of Public Information, will be held from September 5-7, 2007 at UN Headquarters in New York on the theme: ''Climate Change: How It Impacts Us All''.  http://www.undpingoconference.org

The ''60th Annual DPI/NGO Conference'' will be the last to be held at UN Headquarters for several years, and this site is being developed with the vision of building a prototype of an online framework  that would facilitate broad-based NGO participation in future Annual DPI/NGO Conferences.
!! Conference participants
Approximately 2,000 representatives of ~NGOs from around the world are expected to participate in the Conference.
!! Conference Agenda
!!!  Plenary & Roundtable Sessions
<<<
!!!! Opening Session
!!!! Climate Change: The Scientific Evidence
!!!! Climate Change: Indigenous Peoples, Culture & Traditional Knowledge
!!!! Water Security & Climate Change
!!!! [[Coping With Climate Change: Best Land Use Practices]]
!!!! The Economics & Politics of Climate Change
!!!! Climate Change: Streamlining the System
!!!! Sustainable Development & the Responsibility to Protect
!!!! Closing Session
<<<
!!!  ~Mid-Day Workshops
In addition to the roundtable sessions, 33 workshops addressing issues relating to the roundtable themes and organized by ~NGOs, will be held between 1:15 and 2:45 pm each day of the conference.
!! See also
* [[Draft DPI/NGO 2007 Declaration on Climate Change]]
* [[NGO Framework for Action on Climate Change]]
* [[Climate Change Summer]]
!! Climate Change Threats - An NGO Framework for Action
The Preparatory Committee of the [[60th Annual DPI/NGO Conference]] (September 5-7, 2007) invites all participants to concur by consensus on September 7th with the Declaration on the reverse of this sheet.

Substantive suggestions for improvement are also invited; but they must be received by 6pm on September 6th and should foster a consensus. Recommendation forms should be placed into the boxes in Conference Rooms 1 and 4, or given to the Drafting Committee members, Mr. Larry Roeder, Dr. William Gellermann and Ms. Moki Kokoris, who will often be in the UN Cafeteria near the windows overlooking the East River. Recommended suggestions MUST BE 25 words or less.

The Drafting Committee's work is supervised by a Senior Review Committee made up of Sister Joan Kirby (outgoing Chairperson of the NGO/DPI Executive Committee), Jeffery Huffines (incoming Chair of the NGO/DPI Executive Committee), and Richard Jordan (Chair of the 60th NGO/DPI Conference)

Members of the NGO/DPI and ECOSOC NGO communities deal with a spectrum of issues that might not normally involve collaboration; but networking will be crucial to dealing with Climate Change, especially as it challenges all of us. The purpose of the Declaration is to provide a framework for action and collaborative networking, a tool to enable us to work together on the threats of climate change, which is essential to serving all of our particular mandates.

The Declaration envisages that over the next 12 months, we will collaborate and report our efforts to the ~Secretary-General, while continuing our collaboration in coping with the threats. The process by which this is to be done will be facilitated by the NGO/DPI Executive Committee. The recommendations that come out of the process do not need to have full consensus support across the entire NGO community; but they do need to be developed in the spirit of collaboration with and among all ~NGOs.
The ''60th Annual DPI/NGO Conference Planning Committee'' was responsible for planning the [[60th Annual DPI/NGO Conference]] and met on a weekly basis - with occasional exceptions - each Thursday at United Nations from February ? 2007 until the conference took place on September 5-7, 2007.
!! ~Co-Chairs 
<<<
[[Juan Carlos Brandt]], Chief, NGO Section, United Nations Department of Public Information
[[Richard Jordan]], 
''6BC Botanical Garden'' - on 6th Street between Avenues B & C in New York's [[Lower East Side]] is a place to enjoy nature without leaving the city and to relax in a setting that a local garden guide called "colorful, complex, and elegantly designed."
+++[6BC Botanical Garden Web site]
{{iframe{''Note'': This is a "framed" page from the ''6BC Botanical Garden'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.6bc.org/}}}
<html><iframe
	src = "http://www.6bc.org/"
	title = ""
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
===

+++[6BC Botanical Garden Slide Show]
<<tiddler "6BC Botanical Garden Slide Show">>
===

+++[6BC Botanical Garden History Slide Show]
<<tiddler "6BC Botanical Garden History Slide Show">>
===
<html>
<div><embed src="http://widget-66.slide.com/widgets/slideticker.swf" type="application/x-shockwave-flash" quality="high" scale="noscale" salign="l" wmode="transparent" flashvars="cy=lt&il=1&channel=504403158288928870&site=widget-66.slide.com" style="width:426px;height:320px" name="flashticker" align="middle"></embed><div style="width:426px;text-align:left;"><a href="http://www.slide.com/pivot?cy=lt&at=un&id=504403158288928870&map=1" target="_blank"><img src="http://widget-66.slide.com/p1/504403158288928870/lt_t046_v000_s0un_f00/images/xslide1.gif" border="0" ismap="ismap" /></a> <a href="http://www.slide.com/pivot?cy=lt&at=un&id=504403158288928870&map=2" target="_blank"><img src="http://widget-66.slide.com/p2/504403158288928870/lt_t046_v000_s0un_f00/images/xslide2.gif" border="0" ismap="ismap" /></a> <a href="http://www.slide.com/pivot?cy=lt&at=un&id=504403158288928870&map=F" target="_blank"><img src="http://widget-66.slide.com/p4/504403158288928870/lt_t046_v000_s0un_f00/images/xslide42.gif" border="0" ismap="ismap" /></a></div></div></html>
<html>
<div><embed src="http://widget-4b.slide.com/widgets/slideticker.swf" type="application/x-shockwave-flash" quality="high" scale="noscale" salign="l" wmode="transparent" flashvars="cy=lt&il=1&channel=504403158288886603&site=widget-4b.slide.com" style="width:600px;height:475px" name="flashticker" align="middle"></embed><div style="width:600px;text-align:left;"><a href="http://www.slide.com/pivot?cy=lt&at=un&id=504403158288886603&map=1" target="_blank"><img src="http://widget-4b.slide.com/p1/504403158288886603/lt_t001_v000_s0un_f00/images/xslide1.gif" border="0" ismap="ismap" /></a> <a href="http://www.slide.com/pivot?cy=lt&at=un&id=504403158288886603&map=2" target="_blank"><img src="http://widget-4b.slide.com/p2/504403158288886603/lt_t001_v000_s0un_f00/images/xslide2.gif" border="0" ismap="ismap" /></a> <a href="http://www.slide.com/pivot?cy=lt&at=un&id=504403158288886603&map=F" target="_blank"><img src="http://widget-4b.slide.com/p4/504403158288886603/lt_t001_v000_s0un_f00/images/xslide42.gif" border="0" ismap="ismap" /></a></div></div>
</html>
The tag ''6bc'' is used for content relating to the [[6BC Botanical Garden]], on 6th Street between Avenue B & Avenue C in Manhattan's Lower East Side.
A brief and poorly shot 6 1/2 minute flipvideo excerpt from "Conversations with Harold Channer" with Robert Pollard, information ecologist and urban composter, at La Perla Garden. The full, hour-long conversation was broadcast on Manhattan Neighborhood Network]] (MNN}, Channel 34, on Wednesday, April 30 and can also be seen [[here|Conversations with Harold Channer: Robert Pollard]]. [[Joe Friendly]], Executive Producer, [[Truth For A Change]], broadcast daily on MNN from 9:30 to 10:30 am, who videotaped the full conversation has been a major contributor to [[La Perla Garden's compost piles]]. The Flip Video used in this and other brief videos of the garden was made available by [[Dolly Nielsen]], Executive Producer, [[Metro City Media]].
<html>
<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/KzuK57-3T9g"></param><embed src="http://www.youtube.com/v/KzuK57-3T9g" type="application/x-shockwave-flash" width="425" height="350"></embed></object>
</html>
A brief look around as I prepare to leave La Perla Garden for the day, with a last look at the blossoms on the peach tree and the pink confetti sprinkled over the surrounding bed.
<html>
<object width="425" height="350">
<param name="movie" value="http://www.youtube.com/v/TCJ8BcbvKIo"></param>
<embed src="http://www.youtube.com/v/TCJ8BcbvKIo" type="application/x-shockwave-flash" width="425" height="350"></embed>
</object>
</html>
Filmed by [[Robert Pollard]], [[Information Habitat: Where Information Lives]]
Made by Faith Community Participants during the United Nations Climate Change Conference (~COP11 and COP/~MOP1), St. Joseph ’s Oratory, Montreal December 4, 2005
* We hear the call of the Earth.
* We believe that caring for life on Earth is a spiritual commitment.
* People and other species have the right to life unthreatened by human greed and destructiveness.
* Pollution, particularly from the energy-intensive wealthy industrialised countries, is warming the atmosphere. A warmer atmosphere is leading to major climate changes. The poor and vulnerable in the world and future generations will suffer the most.
* We commit ourselves to help reduce the threat of climate change through actions in our own lives, pressure on governments and industries and standing in solidarity with those most affected by climate change.
* We pray for spiritual support in responding to the call of the Earth.
> From [[Protecting Creation: People of faith acting together for climate justice|http://protectingcreation.org/ccdeclaration.htm]]
<html>
<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/aLGRr_kYJTg"></param><embed src="http://www.youtube.com/v/aLGRr_kYJTg" type="application/x-shockwave-flash" width="425" height="350"></embed></object>
</html>
<html>
<object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/6pBxQIfV9J4&hl=en"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/6pBxQIfV9J4&hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object>
</html>
<html>
<object width="425" height="350"> <param name="movie" value="http://www.youtube.com/v/k90TWRqJJn4"> </param> <embed src="http://www.youtube.com/v/k90TWRqJJn4" type="application/x-shockwave-flash" width="425" height="350"> </embed> </object>
</html>
<html>
<object width="425" height="350"> <param name="movie" value="http://www.youtube.com/v/vysSqzlWO1A"> </param> <embed src="http://www.youtube.com/v/vysSqzlWO1A" type="application/x-shockwave-flash" width="425" height="350"> </embed> </object>
</html>
This web site is based on a TiddlyWiki platform - a unique and brilliant design for a self-contained, [[Creative Commons]] "Wiki". Wiki is a Hawaiian word meaning //swift// or //swiftly//, and TiddlyWiki is the wikiest wiki to date., Unlike most web sites that consist of multiple, linked web pages, all of the content in a TiddlyWiki is contained in a single web page, that contains numerous sub-pages, known as "tiddlers".

A TiddlyWiki page uses simple formatting codes for its tiddlers - similar, but not identical to the codes used in <<wikipedia Wikipedia>> and each tiddler can have one or more "tags" or "key words" that are displayed adjacent to the tiddler. This makes TiddlyWiki the easiest and quickest platform for creating and maintaining a web site.

From a design standpoint, what makes TiddlyWiki unique is that not only can tiddlers contain and siplay text, images, links, etc, but the appearance and format of a TiddlyWiki is defined by "style sheets and "styles" that are themselves contained in tiddlers. In addition, a tiddler can include Javascript - the language that powers TiddlyWiki - that can add very useful features over and above those in the standard TiddlyWiki.

!!Expected Climatic Trigger for the Transition
> Increasing temperatures are leading to accelerated melting of mountain glaciers, a higher snowline, and earlier melting of seasonal snowpack. Very limited warming can thus cause significant changes in the amounts of snow and ice. Widespread melting is already occurring and of the order of one-quarter of the global glacier mass (including most glaciers in low latitude mountains) could melt during the 21st century.
!!Expected Environmental Consequences
> Changes in the timing of snowmelt are leading to earlier runoff, changing the temperature and flows of rivers and streams, and, in the summer, causing warmer temperatures and lower flow rates. All of these changes will disrupt aquatic ecosystems, fish, and wildlife.
!!Likely Societal Significance
> Snowmelt is a vital contributor to water resources for many regions around the world, especially for those depending on rivers originating in high mountain regions and for water systems relying on seasonal snowpack to refill reservoirs in spring and summer. Relatively little warming can in some situations cause very large changes in water availability with significant impact on both human health and agricultural productivity.
!!Expected Climatic Trigger for the Transition
> Global warming adds to the rate of sea-level rise by increasing the pace of melting of land ice and thermal expansion of ocean waters. Until the Industrial Revolution, sea level had been roughly constant for a few millennia. During the 20th century, sea level rose almost 0.2 m; over the past decade the rate of rise has been 50% higher. Accelerated deterioration of the Greenland and West Antarctic Ice Sheets could cause a significant further acceleration during the 21st century (see subsequent entries).
!!Expected Environmental Consequences
> An accelerating rate of sea-level rise will inundate important coastal wetlands that are breeding grounds for both aquatic life and birds of many types. The landward push of ocean waters will make coastal estuaries more saline, altering the delicate balances upon which much shell and fish life depends. Higher sea level will make storm surges more damaging and increase coastal erosion rates.
!!Likely Societal Significance
> Many cities, communities, and important urban and transportation infrastructure are built right along the coast, often not far above sea level. Accelerating rates of sea-level rise, especially in areas where coasts are subsiding or are very flat, will pose very serious problems, requiring increasing levels of protection in the near term and very costly retreat and relocation in the long term. Already some communities built on indefensible barrier islands are being forced to move, at great expense.
This web site has been made possible thanks to a set of powerful software tools and languages that serve a wide variety of aspects of the task of gathering, organizing and disseminating information and documents relating to climate change, sustainable development and information and communications technology.

The software that has contributed to site can be separated into several categories the following is a partial list:
!! TiddlyWikiPerfect
* TiddlyWiki
* [[Cascading Style Sheets]]
* [[Plugin Macros]]
* [[HyperText Markup Language]]
!! Database
* [[DataPerfect]] - Brilliant relational database software (companion of the legendary ~WordPerfect for DOS) that has served as the principal database engine - ''Free''. Use
!!Word processing
* ''~WordPerfect 5.1+'' - Still unsurpassed as a word processor in its power and elegance
** ''WP Program Editor 3.1'' - versatile DOS editor for text and for ~WordPerfect macros - ''Free''
** ''Corel ~WordPerfect'' - 
** ''Corel ~WordPerfect X3'' - Converts pdf files to ~WordPerfect format - Free 30 day evaluation
* ''Notepad'' - versatile program, mostly used as a bridge between DOS and Windows documents and for simple text editing
!! Wiki software & sites
* ''TiddlyWiki'' -
** ~TiddlyWiki plugins
* ''Wikipedia''
* ''The Wealth of Networks Wiki notes''
!! Web browsers
* ''~FireFox'' - Recommended web browser - ''Open Source''
** ''~FireFox extensions''
!! Search tools
* ''Google''
** Personalized search
** Cooperative Search Engine
** ''Google News''
** ''Google Groups''
** ''Google Video''
** ''GMail''
** ''~YouTube''
!! PDF Tools
* ''Adobe Acrobat Reader'' - Free reader for pdf files
** ''Adobe Acrobat Professional'' - Free 30 day evaluation
** PrimoPDF'' - Free printer driver for creating pdf files
* ''pdf995 Suite'' - pdf printer driver 
** ''ABBYY Fine Reader'' - Optical Character Recognition with support for pdf files - Free 30 day evaluation
** ''ABBYY PDF Transformer'' - Converts pdf files to Rich Text Format, HTML, etc.
* ''WS_FTP Limited Edition''
!! Graphics software
* ''Graphics Workstation Professional''
** ''Camera Screen Capture''
* ''Adobe Photoshop''
!! Social Bookmarking
* ''Blue Dot''
** ''del.icio.us''
!! Utility software
* ''Total Commander''
* ''Norton Utilities''
* ''System Mechanic''
* ''~SpyBot''
<<tiddler "Search Box">>
<<jump>><<renameButton 'jump to an open tiddler'>>
<<closeAll>><<renameButton 'close all tiddlers'>>
<<permaview>>
<<newDocument ask print>><<renameButton 'print open tiddlers'>>
<<newTiddler "New Tiddler" >>
<<newTiddler text:{{store.getTiddlerText("iframe template","")}}>><<renameButton 'new iframe tiddler'>>
<<saveChanges>>
<<option txtUserName>>
[[User Options]] +++
[[Search Options]] -
<<fontSize "font-size:">> -
[[Editing Options]] -
===

[[Tiddler Administration]] +++
[[Recent Tiddlers]] -
[[Main Menu|MainMenu]] -
[[Setup Menu]] -
[[Administrative Menu]] -
[[Template snippets]] -
[[Basic Tiddler Lists]] -
[[Formatting Tiddlers]] +++
[[Formatting Text]] --
[[iframe template]] --
[[Headers & Outlines]] --
[[Tiddly Links]] --
[[Tables]] --
[[Images]] --
===

[[Tiddler Lists]] +++
[[Basic Tiddler Lists]] -
[[Alphabetical Tiddlers]] -
[[Recent Tiddlers]] -
[[Tiddler Timelines]] +++
[[Tiddler Timeline]] -
[[Reverse Timeline]] -
[[Event Timeline]] -
===

[[Shadow Tiddlers]] -
[[Missing Tiddlers]] -
[[Imported Tiddlers]] -
[[Included TiddlyWikis]] -
===

[[Menus]] +++
[[Main Menu|MainMenu]] -
[[Administrative Menu]] -
[[Hover Menu|HoverMenu]] -
[[Setup Menu]] -
===

[[Default Tiddlers|DefaultTiddlers]] -
[[Import Tiddlers]] -
[[Plugin Macros]] -
[[Templates & Stylesheets]] +++
[[PageTemplate]] -
[[ViewTemplate]] -
[[EditTemplate]] -
[[StyleSheet]] -
[[MainMenuStyles]] -
[[TagglyTaggingStyles]] -
[[Colour Palette]] -
===

===

[img[http://www.climate-change-two.net/cc2-151x43.jpg][Climate Change 2.0]]
[img[http://www.ngo-framework.net/congo-74x54.png][Conference Of NGOs]]
<<tiddler "Menu Widgets">>
[img[http://www.tiddlywiki.com/favicon.ico]] TiddlyWiki <<version>>
[img[http://i.creativecommons.org/l/by-nc-sa/3.0/us/88x31.png][Creative Commons Attribution Non-Commercial Share-Alike Licence]]
[[Creative Commons|Creative Commons Attribution Non-Commercial Share-Alike Licence]]
|>|>|>|<<search>> |
|>|>| look for in |>|>|
| <<option chkSearchTitles>> | <<option chkSearchText>> | <<option chkSearchTags>> | <<option chkHoldSearches>> |
| titles |  text  | tags | hold |

|[[Site Maps]]|
|@@[[About this web site]]@@ +++ [[TiddlyWikiPerfect]] -<br>[[TiddlyWikiPerfect Sites]] -<br>TiddlyWiki -<br>DataPerfect -<br>[[Tiddlers]] - ===||
|[[User Options]] +++ [[Search Options]] -<br><<fontSize "font-size:">> -<br>[[Editing Options]] - ===|
|<<jump>><<renameButton 'jump to an open tiddler'>>|
|<<closeAll>><<renameButton 'close all tiddlers'>>|
|<<permaview>>|
|<<newTiddler "New Tiddler" >>|
|<<saveChanges>>|
| <<option txtUserName>>|
|[[Tiddler Administration]] +++ [[Main Menu|MainMenu]] -<br>[[Setup Menu]] -<br>[[Template snippets]] -<br>[[Basic Tiddler Lists]] -<br>[[Formatting Tiddlers]] +++ [[Formatting Text]] -<br>[[iframe template]] -<br>[[Headers & Outlines]] -<br>[[Tiddly Links]] - <br>[[Tables]] -<br>[[Images]] - === <br>[[Tiddler Lists]] +++ [[Basic Tiddler Lists]] -<br>[[Alphabetical Tiddlers]] -<br>[[Recent Tiddlers]] -<br>[[Tiddler Timelines]] +++ [[Tiddler Timeline]] -<br>[[Reverse Timeline]] -<br>[[Event Timeline]] - === <br>[[Shadow Tiddlers]] -<br>[[Missing Tiddlers]] -<br>[[Imported Tiddlers]] -<br>[[Included TiddlyWikis]] - === <br>[[Menus]] +++ [[Main Menu|MainMenu]] -<br>[[Administrative Menu]] -<br>[[Hover Menu|HoverMenu]] -<br>[[Setup Menu]] -<br>[[DataPerfect Menus]] -<br>[[Browser Menus]] -<br>[[Building Menus]] -<br>[[Desktop Menus]] - === <br>[[Default Tiddlers|DefaultTiddlers]] -<br>[[Import Tiddlers]] -<br> [[Tagging]] +++ [[Tiddler Tags]] -<br>[[IntelliTagger]] -<br>[[Toggle Tags]] -<br>[[Site Maps]] -<br>[[Tag Adder]] -<br>[[TagglyTagging]] -<br>[[Monkey Tagger]] - === -<br>[[Plugin Macros]] -<br> [[Templates & Stylesheets]] +++ PageTemplate -<br>ViewTemplate -<br>EditTemplate -<br>StyleSheetLayout -<br>StyleSheetColors -<br>[[MainMenuStyles]] -<br>[[TagglyTaggingStyles]] -<br>[[View ColorPalette]] - <br>[[iframe template]] - ===  ===|
|<html><a href="http://bluedot.us/Authoring.aspx" onclick="{var w=window;w.l=w.location;w.SdP='';w.bU=(w.l.protocol=='https:'?'https://'+w.SdP:'http://')+'bluedot.us';w.eUC=encodeURIComponent;function fBkF(){w.l.href=w.bU+'/Authoring.aspx?u='+w.eUC(w.l.href)+'&amp;t='+w.eUC(document.title);}w.gT=w.setTimeout(fBkF,6999);w.d=w.document;w.sT=w.d.body;w.o=w.d.createElement('scri'+'pt');if(typeof w.o!='object')fBkF();w.o.setAttribute('src',w.bU+'/js/Authoring.js');w.o.setAttribute('type','text/javascript');void(w.sT.appendChild(w.o));if(w.event){w.event.returnValue=false;}return false;}" id="BlueDotPartner"><img src="http://bluedot.us/images/partner_79x16_blue.gif" style="border:none"/></a> - <a href="http://del.icio.us/post" onclick="window.open('http://del.icio.us/post?v=4&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title), 'delicious','toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif"> del.icio.us</a></html> [img[http://www.climate-change-two.net/rss-small.jpg][Site RSS feeds]]&nbsp;[[Site RSS feeds]]|
|[img[http://www.climate-change-two.net/cc2-151x43.jpg][Climate Change 2.0]]|
|[[NGO Committee on Education]]|
|[[Information Habitat: Where Information Lives|Information Habitat: Where Information Lives]]|
|[img[http://www.tiddlywiki.com/favicon.ico]] @@font-size:90%;TiddlyWiki <<version>>@@|
|[img[http://i.creativecommons.org/l/by-nc-sa/3.0/us/88x31.png][Creative Commons Attribution Non-Commercial Share-Alike License]]
[[Creative Commons|Creative Commons Attribution Non-Commercial Share-Alike Licence]]|
|@@ont-size:90%;&copy; [[Copy rights notice]]@@|
|@@color:#ffffff;mmmmmmmmmmmmmmmmm@@|
[[Administrative Menu]] - attached to base of the [[Main Menu|MainMenu]]
<<tiddler "Administrative Menu">>
[[Alice Slater]] is the //New York Director// of the [[Nuclear Age Peace Foundation|http://www.wagingpeace.org/]] and recently joined the [[NGO/DPI Executive Committee]].  She serves on the Global Council of [[Abolition 2000|http://www.abolition2000.org/]], a global network working for a treaty to eliminate nuclear weapons and directs the network’s Sustainable Energy Working Group which produced a model statute for an International Sustainable Energy Agency.  She is a Consultant to the [[Global Policy Forum|http://www.globalpolicy.org]] and serves on the Board of the Lawyer’s Committee for Nuclear Policy and the Executive Committee of the Middle Powers Initiative, working to create pressure on nuclear weapons states for swifter nuclear disarmament.  She is a member of the Advisory Boards of the Nuclear Policy Research Institute and the Global Network Against Weapons and Nuclear Power in Space and serves on the Steering Committee of the Indian Point Safe Energy Coalition.  Ms. Slater has organized numerous conferences, panels, and roundtables at the UN on nuclear and environmental issues and has spoken frequently at meetings and conferences in the US and internationally.  She has written numerous articles and op-eds, and has appeared frequently on local and national media

Email  [[aslater.rcn.com|mailto:aslater.rcn.com]]
<<list all>>
!!Expected Climatic Trigger for the Transition
> Warming and increased evaporation in the tropics enhance the Hadley circulation, which involves upward movement of air at low latitudes and descent over the subtropics, pushing the subtropics and polar jets poleward, tending to warm the mid-latitudes, and shifting fronts and storm tracks.
!!Expected Environmental Consequences
> Ecosystems are generally attuned to the prevailing weather regimes, and shifts in the location of these regimes will lead to shifts in ecosystem locations as the warm edges contract and poleward edges become more conducive to growth. The differing pace of movement will likely cause significant disruption of ecosystems and their important services.
!!Likely Societal Significance
> In regions where weather regimes shift, societal tuning to particular types of conditions will be upset, possibly requiring adjustments to buildings, infrastructure, transportation, health care, and community lifestyle. Globally, the weather and its seasonal pattern in each region will become more like that hundreds of kilometers toward the equator, necessitating a wide range of adjustments.
!!Expected Climatic Trigger for the Transition
> Greater warming of land areas is expected to increase monsoon rains and flooding. By diminishing the amount of solar radiation warming the surface, air pollution could alternatively cause a weakening of the monsoon.
!!Expected Environmental Consequences
> For most subtropical regions, monsoon rainfall provides most of the water and soil moisture needed by agriculture. Significantly heavier rains would make the fields too muddy, whereas significantly less would make the fields too dry.
!!Likely Societal Significance
> Societies in the region are structured based on past experience with the monsoons, so altered conditions would create disruption until adjustments were made. Larger year-to-year fluctuations in intensity would be likely to stress available systems. Worldwide, monsoons provide water for billions of people, and monsoons redirect atmospheric circulation, affecting global weather.
<html>
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="600" height="400" flashvars="host=picasaweb.google.com&noautoplay=1&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fecology2001%2Falbumid%2F5079353583314154449%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</html>
<<tabs txtMainTab Timeline Timeline TabTimeline Alphabetical 'All tiddlers' TabAll Tags 'All tags' TabTags  Missing 'Missing tiddlers' TabMoreMissing Orphans 'Orphaned tiddlers' TabMoreOrphans Shadowed 'Shadowed tiddlers' TabMoreShadowed>>
/***
|Name|''timeline''|h
|Author|[[Saq Imtiaz]]|
|Version|0.5 bet|
|Description|A replacement for the core timeline macro that offers more features|
|Source|http://lewcid.googlepages.com/lewcid.html#BetterTimelineMacro|
|TW Version|2.x|
***/
/***
!!!Features:
*list tiddlers with only specific tag
*exclude tiddlers with a particular tag
*limit entries to any number of days, for example one week
*specify a start date for the timeline, only tiddlers after that date will be listed.

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

!!!Syntax:
{{{<<timeline better:true>>}}}
''the param better:true enables the advanced features, without it you will get the old timeline behaviour.''

additonal params:
(use only the ones you want)
{{{<<timeline better:true  onlyTag:Tag1 excludeTag:Tag2 sortBy:modified/created firstDay:YYYYMMDD maxDays:7 maxEntries:30>>}}}

''explanation of syntax:''
onlyTag: only tiddlers with this tag will be listed. Default is to list all tiddlers.
excludeTag: tiddlers with this tag will not be listed.
sortBy: sort tiddlers by date modified or date created. Possible values are modified or created.
firstDay: useful for starting timeline from a specific date. Example: 20060701 for 1st of July, 2006
maxDays: limits timeline to include only tiddlers from the specified number of days. If you use a value of 7 for example, only tiddlers from the last 7 days will be listed.
maxEntries: limit the total number of entries in the timeline.


!!!History:
*28-07-06: ver 0.5 beta, first release

!!!Code
***/
//{{{
// Return the tiddlers as a sorted array
TiddlyWiki.prototype.getTiddlers = function(field,excludeTag,includeTag)
{
          var results = [];
          this.forEachTiddler(function(title,tiddler)
          {
          if(excludeTag == undefined || tiddler.tags.find(excludeTag) == null)
                        if(includeTag == undefined || tiddler.tags.find(includeTag)!=null)
                                      results.push(tiddler);
          });
          if(field)
                   results.sort(function (a,b) {if(a[field] == b[field]) return(0); else return (a[field] < b[field]) ? -1 : +1; });
          return results;
}



//this function by Udo
function getParam(params, name, defaultValue)
{
          if (!params)
          return defaultValue;
          var p = params[0][name];
          return p ? p[0] : defaultValue;
}

window.old_timeline_handler= config.macros.timeline.handler;
config.macros.timeline.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
          var args = paramString.parseParams("list",null,true);
          var betterMode = getParam(args, "better", "false");
          if (betterMode == 'true')
          {
          var sortBy = getParam(args,"sortBy","modified");
          var excludeTag = getParam(args,"excludeTag",undefined);
          var includeTag = getParam(args,"onlyTag",undefined);
          var tiddlers = store.getTiddlers(sortBy,excludeTag,includeTag);
          var firstDayParam = getParam(args,"firstDay",undefined);
          var firstDay = (firstDayParam!=undefined)? firstDayParam: "00010101";
          var lastDay = "";
          var field= sortBy;
          var maxDaysParam = getParam(args,"maxDays",undefined);
          var maxDays = (maxDaysParam!=undefined)? maxDaysParam*24*60*60*1000: (new Date()).getTime() ;
          var maxEntries = getParam(args,"maxEntries",undefined);
          var last = (maxEntries!=undefined) ? tiddlers.length-Math.min(tiddlers.length,parseInt(maxEntries)) : 0;
          for(var t=tiddlers.length-1; t>=last; t--)
                  {
                  var tiddler = tiddlers[t];
                  var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);
                  if ((theDay>=firstDay)&& (tiddler[field].getTime()> (new Date()).getTime() - maxDays))
                     {
                     if(theDay != lastDay)
                               {
                               var theDateList = document.createElement("ul");
                               place.appendChild(theDateList);
                               createTiddlyElement(theDateList,"li",null,"listTitle",tiddler[field].formatString(this.dateFormat));
                               lastDay = theDay;
                               }
                  var theDateListItem = createTiddlyElement(theDateList,"li",null,"listLink",null);
                  theDateListItem.appendChild(createTiddlyLink(place,tiddler.title,true));
                  }
                  }
          }

          else
              {
              window.old_timeline_handler.apply(this,arguments);
              }
}
//}}}
!!Expected Climatic Trigger for the Transition
> An increase in rainfall is projected that, over periods of the order of a century, could cause the transition of 9 million km^^2^^ (3.5 million mi^^2^^) of the Sahara from desert to a green, vegetated landscape
!!Expected Environmental Consequences
> Increased vegetation would decrease the albedo and increase soil moisture and carbon storage. Reduced dust blown out over marine areas would diminish marine biological activity and carbon transfer to the deep ocean.
!!Likely Societal Significance
> In the region, the changes would provide a significantly better opportunity to grow food, although also causing a greater threat of locusts. In the West Indies, an increased likelihood of severe hurricanes.
<html>
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="600" height="400" flashvars="host=picasaweb.google.com&noautoplay=1&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fecology2001%2Falbumid%2F5083413615986947505%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</html>
A brief narrative tour of the East side of La Perla Garden, starting with the brick path in front of the compost piles and a temporary wall of recently-dug bricks, then on to the rose bushes, the 9/11 memorial, brambles. ends with daffodils. //3:34 minutes//. This admittedly amateur video was recorded on a [[Flip Video]] made available by [[Dolly Nielsen]], Executive Producer, [[Metro City Media]].

<html>
<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/_DSO5HRn1oQ"></param><embed src="http://www.youtube.com/v/_DSO5HRn1oQ" type="application/x-shockwave-flash" width="425" height="350"></embed></object>
</html>
{{iframe{''Note'': This is a "framed" page from the ''Information Ecologist's Picasa Web Albums'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://picasaweb.google.com/ecology2001/BrickPathsAndViewsFromTheCompostAtLaPerlaGarden#}}}
<html><iframe
	src = "http://picasaweb.google.com/ecology2001/BrickPathsAndViewsFromTheCompostAtLaPerlaGarden#"
	title = "Brick paths and views from the compost at La Perla Garden, August 24, 2008"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
{{iframe{''Note'': This is a "framed" page from the ''The New York Botanical Garden'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.nybg.org/bgu/compost.html}}}
<html><iframe
	src = "http://www.nybg.org/bgu/compost.html"
	title = "Bronx Green-Up: Composting Education"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
@@font-size:90%;''Note'': This is a "framed" page from the ''New York City Open Accessible Space Information System (OASIS) '' web site.
You can view this page in a separate browser tab or window at http://www.oasisnyc.net/gardens/cenycmapsearch.asp@@
<html><iframe
	src = "http://www.oasisnyc.net/gardens/cenycmapsearch.asp"
	title = "CENYC Community Garden Locator"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
{{iframe{''Note'': This is a "framed" page from the ''New York Times'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.nytimes.com/2008/06/29/magazine/29weeds-t.html}}}
<html><iframe
	src = "http://www.nytimes.com/2008/06/29/magazine/29weeds-t.html?ref=magazine&pagewanted=all"
	title = ""
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
<html>
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="600" height="400" flashvars="host=picasaweb.google.com&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fecology2001%2Falbumid%2F5205165516694435713%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</html>
Photos by Isobel Lowther, ''Kaleidoscope Experience''
{{iframe{''Note'': This is a "framed" page from the ''City Farmer'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window athttp://homepage.mac.com/cityfarmer/comiclife/}}}
<html><iframe
	src = "http://homepage.mac.com/cityfarmer/comiclife/"
	title = "City Farmer Comics"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "400"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
<<<
"No problem can be solved from the same level of consciousness that created it."
//Albert Einstein// (1879 - 1955) Physicist & Nobel Laureate 
<<<
''Climate Change 2.0'' is being developed from a vision of a collaborative application of ''Web 2.0'' methodologies to the global climate change crisis and incorporating a transition to an  Open Source, Creative Commons climate. ''Climate Change 2.0'' is based on the recognition of the vital contribution that the combination of the [[economics of information|Economics of information]] and information and communications technologies (ICT) can contribute - and already are contributing - to addressing what is increasingly recognized as the greatest challenges to a sustainable common future, both through the power of the technologies and through the progressive discovery and realization of the fundamental properties and nature of a digital knowledge-based universe and the accompanying profound freedoms and transformation of human consciousness and the emergence of digitally-connected global civil society that has been growing rapidly since the early stages of preparations for the 1992 Earth Summit - of which the [[United Nations Framework Convention on Climate Change]] was a key component.
<<<
"''The Interlocking Crises''
Until recently, the planet was a large world in which human activities and their effects were neatly compartmentalized within nations, within sectors (energy, agriculture, trade), and within broad areas of concern (environment, economics, social). These compartments have begun to dissolve. This applies in particular to the various global 'crises' that have seized public concern, particularly over the past decade. These are not separate crises: an environmental crisis, a development crisis, an energy crisis. They are all one."
//[[Our Common Future, From One Earth to One World|http://www.un-documents.net/ocf-ov.htm]]//
<<<
!! See also:
* [[Climate Change 2.0 - Elements]]
A number of  elements have been developed under the auspices of [[Climate Change 2.0]], with an initial focus on the development of an online platform for the September 2007 [[60th Annual DPI/NGO Conference]] to be held at UN Headquarters on the theme "Climate Change: How It Impacts Us All", and in the broader context of  the [[United Nations Decade of Education for Sustainable Development]], 2005-2014, and related international decades.

The DPI/NGO Climate Change Conference offers a unique opportunity for a demonstration project of [[Climate Change 2.0]] as it will be the last to be held at the United Nations Headquarters before major renovations begin, and there is strong interest in developing a prototype interactive online framework that would provide for real-time participation in the Conference, for this Conference, and as a model to be used for future Annual DPI/NGO Conferences.

Among the elements that are under development are the following:
!! ~TiddlyWiki sites
* [[Climate Change 2.0]]<br>[[www.climate-change-two.net/|http://www.climate-change-two.net/]]
** [[Climate Change Impacts, Adaptation and Vulnerability]]<br>[[www.climate-change-two.net/ar4-wg2-spm|http://www.climate-change-two.net/ar4-wg2-spm]]
** [[Peace Caucus: The Wild Cards in Climate Change]]<br>[[www.peacecaucus.net|htt[://www.peacecaucus.net]]
* [[NGO Committee on Education]]<br>[[www.ngo-education.net/|http://www.ngo-education.net/]]
** [[Education, Youth & Technology for Sustainable Development]]<br>[[www.ngo-education.net/workshop/|http://www.ngo-education.net/workshop/]]
!!! ~TiddlyWikiPerfect sites
* [[TiddlyWikiPerfect: An emerging hybrid information species]]<br>[[www.tiddlywikiperfect.net/|http://www.tiddlywikiperfect.net/]]
** [[Rescuing a Planet Under Stress and a Civilization in Trouble: Plan B 2.1 (beta)]]<br>[[www.climate-change-two.net/plan-b/|http://www.climate-change-two.net/plan-b/]]
** [[Economics of Climate Change: The Stern Review]]<br>[[www.climate-change-two.net/stern-review/|http://www.climate-change-two.net/stern-review/]]
** ~TiddlyWikiPerfect sites under development
** Confronting Climate Change
*** Silken Valleys - Digital relief post-Kashmir earthquake
*** ~DataPerfect Manual
*** Information Habitat 2.0
!! "Normal" - HTML - web sites
* [[UN Documents Cooperation Circles: Gathering a Body of Global Agreements]]<br>[[www.un-documents.net/|http://www.un-documents.net/]]
** [[Our Common Future]]<br>[[www.un-documents.net/wced-ocf.htm|http://www.un-documents.net/wced-ocf.htm]]
* [[The Wealth of Networks: How Social Production Transforms Markets and Freedom]]<br>[[www.climate-change-two.net/wealth-of-networks/|http://www.climate-change-two.net/wealth-of-networks/]]
!! Related Google Groups
* [[Climate Change Summer|climate-change-summer@googlegroups.com]]
* [[Climate Change 2.0|climate-change-two@googlegroups.com]]
* [[Networking Sub-Committee, Planning Committee|ngo-networking@googlegroups.com]]
* [[NGO Committee on Education|ngo-education@googlegroups.com]]
* [[TiddlyWiki|tiddlywiki@googlegroups.com]]
!! Other sites
* [[The Wealth of Networks wiki notes]]<br>[[www.benkler.org/wealth_of_networks|http://www.benkler.org/wealth_of_networks/]]
* [[Information Ecologist @ Blue Dot]]<br>[[bluedot.us/users/Information-Ecologist|http://bluedot.us/users/Information-Ecologist]] - social bookmarking
* H2O Playlist
The ''Information Ecology of Climate Change'' is intended to harness the power of the Internet, and particularly of ''Web 2.0'' tools to the challenge of climate change, with a focus on the use of Free and Open Source software and through a focused and systematic expansion of the global [[Creative Commons]].

There is a vast amount of information and documents on the many aspects of climate change freely available online, and while it is relatively easy to find information and specific documents using search engines, it is also very easy to be overwhelmed by the sheer volume - a Google search for "climate change" currently generate approximately 85,000,000 hits, for "global warming" and "sustainable development", the numbers are 70,000,000 and 60,000,000 respectively.

Most of the major documents on climate change are published - and freely available - as pdf files; however, pdf is optimized for printing, not for online accessibility; page breaks make reading a pdf document online a discontinuous process, and the use of hyperlinks in pdf files - when they are included - makes for a very cumbersome navigation process. One of the key initial tasks for ''Climate Change 2.0'' is the translation of these pdf documents into a format optimized for a web-based environment.

When HTML versions of climate change reports are also published, e.g. with copies of the [[Third Assessment Review|IPCC Third Assessment Review]] of the [[Intergovernmental Panel on Climate Change]], the HTML pages are frequently in a fragmented form. The adoption of simple, no-cost, measures such as the creation of dedicated sub-domains for the publication of each  report could provide significant benefits by enabling site-specific searches.

Frequently, lengthy reports, e.g. the 659 page [[Stern Review on the Economics of Climate Change|Economics of Climate Change: The Stern Review]], are published without the inclusion of any bookmarks. Incidentally, the Stern Review, in addressing the economics of climate change gave very scant attention to the role of information technology, and offered no analysis of the economics of information.

Many climate change-related research papers are only available through subscription to professional journals; while individual copies can generally be purchased, typically at the price of $9.00 per article (compared to a zero marginal cost), the number of articles that a serious lay investigator might have a legitimate interest in reading makes for a prohibitive cost for most people; a cooperative initiative among professional societies to waive the charge for papers on climate change, 

Yochai Benkler's acclaimed book, [[The Wealth of Networks: How Social Production Transforms Markets and Freedom]] offers exceptional insight and examples as to the profound transformation that are taking place, through "peer production" and new forms of collaboration  in the accelerating transition to a "networked information economy"; it seems clear that a systematic effort to harness these powerful processes in a broad-based mobilization of creative intelligence to address the global climate change crisis would pay handsome dividends.

The Wealth of Networks also highlights the opportunities for significant contributions to bodies of knowledge that can be made by individuals, often without formal credentials, who are able to develop online centers of excellence through a systematic process of gathering and organizing information from multiple online sources. Given the increasingly narrow specialization in scientific research, the free availability of scientific research on climate change could provide an excellent opportunity for a generalist, with a holistic perspective and a broad general understanding of different scientific fields to make a major contribution to the body of knowledge on climate change.

The example of ''Oscar'' - an open source design for an environmentally-sound automobile - offers another example of how the adoption of open source, creative commons approaches to technology offer the possibility of making significant contributions to addressing climate change. In a different vein, the combination of WalMart's recent commitment to address climate change and its extensive use of RFID technology could serve as a demonstration model for the establishment of full-cost accounting in the traditional economic sphere by making visible, and accountable, previously undocumented external costs, including environmental impacts, of economic activity. The Stern Review correctly recognizes the failure of conventional markets to acknowledge external costs as a fundamental market failure that has been a major economic driver in supporting unsustainable energy use and the corresponding increases in the emission of greenhouse gases.

There would be great value in developing and implementing a comprehensive initiative to gather and organize the available information on climate change - and on a broad range of sustainable development issues, and while the cost would not be trivial, the effort could pay great dividends in the challenge of addressing climate change. There is a clear need for the development and utilizations of a climate change taxonomy, and corresponding enhancements to search engine methodology, that could play a valuable role in targeted search for relevant information.

A web-based campaign to make use of social bookmarking sites - e.g. [[del.icio.us|http://del.icio.us]] and [[Blue Dot|http://bluedot.us]] - as platforms for collaborative gathering and sharing of key online information and resources, together with the progressive development of a structured framework for climate change-related tags offers significant opportunities for rapid and effective dissemination of critical information.

Likewise, the development of a collaborative wiki site, provided it incorporates an accountability and clear commitment to, and monitoring of, guidelines for participation that are unfortunately missing from <<wikipedia Wikipedia>>, could offer an invaluable participatory forum within which a rigorous, comprehensive body of climate change information could be assembled..

TiddlyPerfect offers a very promising platform for managing, organizing and sharing climate change information. TiddlyPerfect is an emerging hybrid information species combining the power of two exceptional software platforms - TiddlyWiki - [[www.tiddlywiki.com|http://www.tiddlywiki.com]] - a brilliant and rapidly-evolving self-contained wiki that serves as a prime example of the "peer production" model described by Yochai Benkler - and DataPerfect, lesser-known companion of the classic WordPerfect for DOS and arguably the most brilliant relational database yet to see the light of day, whose genius was largely obscured by the transition to a Windows platform, but has remained alive, supported by a brilliant and dedicated group of developers - see [[www.dataperfect.nl|http://www.dataperfect.nl]] - and has now been adapted to an online environment where it is now able to function as a web server.

In a broader context, the radical change in an in increasingly networked information economy - touched on but not fully developed in Yochai Benkler's [[The Wealth of Networks|The Wealth of Networks: How Social Production Transforms Markets and Freedom]] is the largely unappreciated reality that in a networked knowledge-based universe, a universe in which knowledge is the central basis for wealth and in which the zero-based properties of information become increasingly self-evident and appreciated - i.e. that information has zero mass, zero physical size and takes virtually zero time and cost to travel - accessibility to wealth is no longer constrained the laws of conservation of mass and energy.
A Creative Commons TiddlyWiki edition of the Summary for Policymakers of the November 2007 Synthesis Report from the Intergovernmental Panel on Climate Change.
+++[Climate Change 2007: IPCC Fourth Assessment Report - TiddlyWiki edition]
{{iframe{''Note'': This is a "framed" page from the ''Climate Change 2.0'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.climate-change-two.net/ar4-spm/}}}
<html><iframe
	src = "http://www.climate-change-two.net/ar4-spm/"
	title = "Climate Change 2007: IPCC Fourth Assessment Report - TiddlyWiki edition"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
===
In response to the [[NGO/DPI Declaration on Climate Change]], the [[NGO/DPI Executive Committee]] established a ''Climate Change ~Sub-Committee'', charged with the responsibility of implementing the NGO Framework for Action as a tool for the NGO community to participate in an open, practical and transparent collaborative approach based on networking; ...

!! Chair
> [[Richard Jordan]], //~Co-Chair//, [[Planning Committee|60th Annual DPI/NGO Conference Planning Committee]] for the [[60th Annual DPI/NGO Conference]], //UN Representative//, International Council of Caring Communities
!! Editor
> [[Larry Roeder]], //UN Representative//, World Society for Protection of Animals
!! Members
<<<
[[William Gellermann]], //~Co-Chair//, Communications Coordination Committee for the United Nations
[[Moki Kokoris]], //UN Representative//, World Federation of Ukrainian Women's Organizations
<<<
!! ~Ex-Officio
<<<
[[Jeffrey Huffines]]. //Chair//, [[NGO/DPI Executive Committee]], //UN Representative//, National Spiritual Assembly of the Baha'is of the US
[[Joan Kirby]], //Past Chair//, [[NGO/DPI Executive Committee]], //UN Representative//, Temple of Understanding
<<<
!! Invited Members
<<<
[[Renate Bloem]], //President//, [[Conference Of NGOs]]
[[Alice Slater]], //New York Director//, Nuclear Age Peace Foundation

<<<
We, over 1726 participants representing over 500 ~Non-Governmental Organisations from more than 62 countries,
* recognising that we share one planet and its environment, as well as a responsibility to protect future generations,
* recognising the special vulnerabilities of the indigenous, poor, coastal and rural populations,
* having met at the [[60th Annual DPI/NGO Conference]] at UN Headquarters from 5-7 September, 2007, with representatives of Member States, UN agencies and programs, the scientific community, the private sector, media and civil society, and
* having reviewed the latest scientific evidence from a wide variety of experts as well as hearing about the experiences of indigenous peoples to better understand climate change, its threats and how ~NGOs can broaden the base for knowledge and action to reduce those threats; make the following declaration:
# We affirm that climate change is mainly anthropogenic and is one of the most serious threats humanity and our environment have ever faced which if not addressed will cause:
## catastrophic effects to Earth's ecosystems, biodiversity and infrastructure;
## significantly reduced availability of food, water, energy and transport;
## massive migration of populations and the possible destruction of entire cultures and small island nations,
## significant damage to our economic, political, cultural, social and spiritual structures,
## increased local, national and international violence,
## significant psychological and emotional distress to individuals and communities
## irreversible harm to the lifestyles of indigenous peoples,
## increased spread of vector-borne diseases such as malaria and dengue fever, and
## negative impacts on human health and life expectancy.
# We commit ourselves over the next 12 months to a Framework for Action that will propose NGO solutions to these threats before they become irreversible:
## unify behind a common vision of collaboration - even if we disagree on tactics - to develop and implement plans for adaptation and mitigation1 taking into account the full range of consequences;
## act as vocal, active partners for change with the UN, governments at all levels, ~NGOs and other members of our global community;
## develop, implement and publicize individual and collaborative action plans for personal, economic and political change.
# We commend ~Secretary-General Ban Ki-moon's leadership in highlighting climate change as a major priority. We urge government, industry, and UN leaders, in partnership with the NGO community to emphasise proactive climate change priorities for the greater good in preparation for the [[UN Climate Change Conference in Bali]], December, 2007, and subsequent negotiations.
# We strongly recommend, for the sake of future generations, that government and industry leaders, the UN, other international organizations and the whole of civil society partner behind and implement concrete solutions, taking into account recommendations that emerge from the Framework for Action.
# We also strongly recommend that:
## all governments and civil society foster an ethical, moral foundation for ongoing sustainable development in our interdependent world making the well-being of all of humankind our priority.
## all educational institutions and media organizations more effectively educate about the issue of climate change with special emphasis on youth,
## governmental authorities consider penalties for excessive consumption and pollution as a method of financing climate change improvements, as well as financial incentives to foster climate-friendly technologies so that fossil fuel and nuclear based technologies can be phased out.
## governments recognize that war is damaging to the climate.
## all governments ratify UN conventions on climate change, the Kyoto protocol and other relevant climate conventions
# Finally, in order to implement the Framework for Action - recognizing that our views on challenges and opportunities will evolve as this process continues - we request that:
## the [[NGO/DPI Executive Committee]] and the [[Conference of NGOs in Consultative Relationship with the United Nations|Conference Of NGOs]] (CONGO) foster a plan as soon as possible to implement the Framework as a tool for the NGO community to participate in an open, practical and transparent collaborative approach based on networking;
## the Framework discussion culminate in an internet-based progress report to be submitted to the ~Secretary-General in one year and that a long-term dialogue for future action be fostered thereafter;
## the Framework process should network ~NGOs that might not otherwise typically collaborate by bridging the spectrum of NGO concerns interconnected by climate change, such as sustainable development, agriculture, forestry, issues affecting indigenous peoples, biodiversity, livestock and animal welfare, nuclear proliferation, the end of war, justice, ethnic groups, multigenerational issues, youth, gender equality, education, poverty, food and water security, culture of peace, interfaith cooperation, national global security and economic justice, as well as mental, spiritual and physical health.

----
//Note: Adaptation implies making lifestyle adjustments. Mitigation implies alleviating the problem.
/***
| Name:|CloseOnCancelPlugin|
| Description:|Closes the tiddler if you click new tiddler then cancel. Default behaviour is to leave it open|
| Version:|6.9.3|
| Date:|30-Sep-2006|
| Source:|http://mptw.tiddlyspot.com/#CloseOnCancelPlugin|
| Author:|Simon Baird <simon.baird@gmail.com>|
| CoreVersion:|2.1.x|
***/
//{{{
merge(config.commands.cancelTiddler,{

	handler_orig_closeUnsaved: config.commands.cancelTiddler.handler,

	handler: function(event,src,title) {
		this.handler_orig_closeUnsaved(event,src,title);
		if (!store.tiddlerExists(title) && !store.isShadowTiddler(title))
			story.closeTiddler(title,true);
	 	return false;
	}

});

//}}}

Foreground: #000
Background: #fff
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
The [[ColorPalette]] tiddler is used in TiddlyWiki to define a set of colours - fifteen by default - whose names are then used in the [[StyleSheetColors]] tiddler. This system allow one to easily change the entire colour scheme of a TiddlyWiki site far more quickly than if one were to have change the colour for each style element.

|Background |#fff |@@bgcolor(#000000):color(#ffffff):Background@@ |@@bgcolor(#ffffff): &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @@|
|Foreground |#000 |@@color(#000000):Foreground@@ |@@bgcolor(#000000): &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @@|
|PrimaryPale |#8cf |@@color(#88ccff):~PrimaryPale@@ |@@bgcolor(#88ccff): &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @@|
|PrimaryLight |#18f |@@color(#1188ff):~PrimaryLight@@ |@@bgcolor(#1188ff): &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @@|
|PrimaryMid |#04b |@@color(#0044bb):~PrimaryMid@@ |@@bgcolor(#0044bb): &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @@|
|PrimaryDark |#017 |@@color(#001177):~PrimaryDark@@ |@@bgcolor(#001177): &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @@|
|SecondaryPale |#ffc |@@color(#ffffcc):~SecondaryPale@@ |@@bgcolor(#ffffcc): &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @@|
|SecondaryLight |#fe7 |@@color(#ffee77):~SecondaryLight@@ |@@bgcolor(#ffee77): &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @@|
|SecondaryMid |#db4 |@@color(#ddbb44):~SecondaryMid@@ |@@bgcolor(#ddbb44): &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @@|
|SecondaryDark  |#841 |@@color(#884411):~SecondaryDark@@ |@@bgcolor(#884411): &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @@|
|TertiaryPale |#eee |@@color(#eeeeee):~TertiaryPale@@ |@@bgcolor(#eeeeee): &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @@|
|TertiaryLight  |#ccc |@@color(#cccccc):~TertiaryLight@@ |@@bgcolor(#cccccc): &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @@|
|TertiaryMid |#999 |@@color(#999999):~TertiaryMid@@ |@@bgcolor(#999999): &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @@|
|TertiaryDark |#666 |@@color(#666666):~TertiaryDark@@ |@@bgcolor(#666666): &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @@|
|Error |#f77 |@@color(#ff7777):Error@@ |@@bgcolor(#ff7777): &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @@|
/*{{{*/
.large {
font-size:120%;
font-weight:bold;
}
.larger {
font-size:130%;
font-weight:bold;
}
.medium-large {
font-size:110%;
font-weight:bold;
}
.small {
font-size:85%;
font-weight:normal;
}
.smaller {
font-size:70%;
font-weight:normal;
}
.right {
text-align:right;
align:right;
}
.center {
text-align:center;
align:center;
}
.iframe {
font-size:85%;
}
.border-right {
padding-right:10px;
}
/* ''Header Levels'' */

h1, h2, h3, h4, h5 {
font-weight: bold;
text-decoration: none;
}

h1 {font-size: 1.35em;}
h2 {font-size: 1.25em;}
h3 {font-size: 1.1em;}
h4 {font-size: 1em;}
h5 {font-size: .9em;}

/*}}}*/
/* ''Borderless Table'' /*
/*{{{*/
.cleartable table {
border: 0;
}
/*}}}*/
You are invited to participate in a workshop& discussion at [[La Perla Garden]] on ''Compost & Water Conservation'' on Saturday, August 2, 2008.
!! Rooftop composting - 949 Amsterdam Avenue
The workshop will begin with a visit to the rooftop composting bins of [[Peter Arndtsen]] - no elevator - where Peter will describe how he composts his kitchen waste, and feeds his rooftop garden.
!! Garden Composting - La Perla Garden
The workshop will then move to La Perla Garden, for a description and demonstration of the three compost piles by [[Robert  Pollard]], who has been managing the compost at La Perla for the last four years.

!! Water Conservation & Climate Change
La Perla Garden has a 1,000 gallon rainwater collection tank, which will be the focus of a planned beautification process, to be completed by September 2008
!!! How a rainwater tank works
!!!! Collecting rainwater
!!!! Using
!!!The garden as a water body





{{iframe{''Note'': This is a "framed" page from the ''Compost Guide'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.compostguide.com/}}}
<html><iframe
	src = "http://www.compostguide.com/"
	title = "Compost Guide: A complete Guide to composting"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
<html>
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="600" height="400" flashvars="host=picasaweb.google.com&noautoplay=1&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fecology2001%2Falbumid%2F5079320499181072289%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</html>
Composting - the process by which garden and kitchen waste is transformed into rich humus - has played the central role in [[Robert Pollard]]'s involvement with ''La Perla Garden''.

!! Slide Shows
* [[Compost piles at La Perla Garden, May 8, 2007]]
* [[Composting at La Perla Garden, May 13, 2007]]
<html>
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="600" height="400" flashvars="host=picasaweb.google.com&noautoplay=1&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fecology2001%2Falbumid%2F5079290979870846753%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</html>
{{iframe{''Note'': This is a "framed" page from the ''Cornell Waste Management Institute'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://compost.css.cornell.edu/schools.html}}}
<html><iframe
	src = "http://compost.css.cornell.edu/schools.html"
	title = "Composting in Schools"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
{{iframe{''Note'': This is a "framed" page from the ''Cornell Waste Management Institute'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://compost.css.cornell.edu/CIC.html}}}
<html><iframe
	src = "http://compost.css.cornell.edu/CIC.html"
	title = ""
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
"Yard trimmings and food residuals together constitute 24 percent of the U.S. municipal solid waste stream. That's a lot of waste to send to landfills when it could become useful and environmentally beneficial compost instead!

Composting offers the obvious benefits of resource efficiency and creating a useful product from organic waste that would otherwise have been landfilled. ..."

+++[U.S. Environmental Protection Agency Composting web site]
{{iframe{''Note'': This is a "framed" page from the ''U.S. Environmental Protextion Agency'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.epa.gov/compost/}}}
<html><iframe
	src = "http://www.epa.gov/compost/"
	title = "Composting: U.S. Environmental Protection Agency"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
===
''CONGO'' - the ''C''onference ''O''f ''N''on-''G''overnmental ''O''rganizations in Consultative Relationship with the United Nations - is an independent, international, not-for-profit membership association of nongovernmental organizations that facilitates the participation of ~NGOs in United Nations debates and decisions. CONGO is most active in the major UN centers of New York, Geneva, and Vienna, but extends its work to all regions of the world. In 2002. CONGO became accredited in its own right as an NGO in General Consultative Status with the United Nations Economic and Social Council.
* [[www.ngocongo.org/|http://www.ngocongo.org]]
config.options.chkDisableNonExistingWikiLinks=true;
config.options.chkSearchTitles=true;
config.options.chkSearchText=false;
config.options.chkSearchTags=false;
<html><hide linebreaks>
Please use this form to send any messages, comments or questions about this site, or send an email to <a href="mailto:webster@climate-change-two.net">webster@climate-change-two.net</a>:
<p>
<form method=post target=email action="http://cgi.eytv4sfc.net/gdform.cgi" style="display:inline">
<input type=hidden name=to value="seasons-of-peace@earthlink.net.net">
<input type=hidden name=subject value="Climate Change 2.0 feedback">
<input type=hidden name=prefix value="The Economics of Climate Change">
<input type=hidden name=url value="javascript:window.close();">
<input type=text name=from style="width:49%" value="your name" onfocus="this.select()">
<input type=text name=reply style="width:49%" value="your email address" onfocus="this.select()"><br>
<input type=text name=organization style="width:99%" value="your organization (optional)" onfocus="this.select()"><br>
<font size=-2>Your message:</font><br>
<textarea rows=7 cols=50 name=text style="width:98%" onfocus="this.select()"></textarea><br>
<font size=-2>Enter your information, comments or questions, then press </font><input type=submit value="send"></form>
<p>
Please note that your message will probably remain here are you have sent it, and that doesn't mean the message hasn't been sent!
</html>
A 58-minute conversation in [[La PerlaGarden]] that was broadcast on [[Manhattan Neighborhood Network]]on April 30, 2008. Video by [[JoeFriendly]].
<html>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/kF_fBmZt-Ak&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/kF_fBmZt-Ak&hl=en&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object>
</html>
The ''Council on the Environment of NYC'' (CENYC) is a hands-on non-profit that has been improving New York City's environment for over thirty years. CENYCs dedicated staff green our neighborhoods, create the environmental leaders of the future, promote waste prevention and recycling, and run the largest farmers market program in the country.
+++[Council on the Environment of New York City Web site]
{{iframe{''Note'': This is a "framed" page from the ''Council on the Environment of New York City'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.cenyc.org/@@
<html><iframe
	src = "http://www.cenyc.org/"
	title = "Council on the Environment of New York City"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
===
This website is made available under a ''Creative Commons Attribution Non-Commercial Share-Alike Licence 3.0'', and registered as [[Common Content]] at 

@@font-size:90%;''Note'': This is a "framed" page from the [[Creative Commons]] web site.
You can view this page in a separate browser tab or window at http://creativecommons.org/licenses/by-nc-sa/3.0/@@
<html><iframe
	src = "http://creativecommons.org/licenses/by-nc-sa/3.0/"
	title = "Creative Commons Attribution Non-Commercial Share-Alike Licence 3.0"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
[[61st Annual DPI/NGO Conference]]
[[Information Bulletin #2|Information Bulletin #2 - 12 March 2008]]
[[Provisional Conference Agenda|Reaffirming Human Rights: The Universal Declaration at 60 - Provisional Conference Agenda]]
[[Planning Committee Minutes]] +++
[[4 January 2008|61st Annual DPI/NGO Conference Planning Committee Meeting Minutes: 4 January 2008]] -
[[31 January 2008|61st Annual DPI/NGO Conference Planning Committee Meeting Minutes: 31 January 2008]] -
[[12 March 2008|61st Annual DPI/NGO Conference Planning Committee Meeting Minutes: 12 March 2008]] -
===

[[Minutes of Co-Chairs Meetings]] +++
[[14 February 2008 Minutes|Minutes of the 14 February 2008 Meeting of Co-Chairs]] -
[[28 February 2008 Minutes|Minutes of the 28 February 2008 Meeting of Co-Chairs]] -
[[Planning Committee Co-Chairs]] -
===

[[Book Travel & Accommodations]]
[[Universal Declaration|Universal Declaration of Human Rights]]
[[Key Human Rights documents]] +++
[[Universal Declaration of Human Rights]] -
[[International Covenants]] -
[[Geneva Conventions]] -
===

[[UN Human Rights sites]]
[[60th Anniversary Launch Kit|10 December 2007 Launch of a Year-Long Celebration of the 60th Anniversary of the UDHR]]
[[The UDHR@60+ icon]]
[[Link to this site]]
/*{{{*/
p {
text-indent: 25px;
}
#displayArea {
margin-left: 16em;
margin-right: 3em;
}

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: none;
font-weight: bold;
}

.indent {
margin-left: 0.5em;
padding-left: 1.5em;
}

.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 a bold */
a.tiddlyLinkNonExisting.shadow {
font-weight: bold;
}

.wizard {
padding: 0.1em 0em 0em 2em;
}

.wizard h1 {
font-size: 2em;
font-weight: bold;
background: none;
padding: 0em 0em 0em 0em;
margin: 0.4em 0em 0.2em 0em;
}

.wizard h2 {
font-size: 1.2em;
font-weight: bold;
background: none;
padding: 0em 0em 0em 0em;
margin: 0.2em 0em 0.2em 0em;
}

.wizardStep {
padding: 1em 1em 1em 1em;
}

.wizard .button {
margin: 0.5em 0em 0em 0em;
font-size: 1.2em;
}

#messageArea {
position:absolute; top:0; right:0; margin: 0.5em; padding: 0.5em;
}

*[id='messageArea'] {
position:fixed !important; z-index:99;}

.messageToolbar {
display: block;
text-align: right;
}

#messageArea a{
text-decoration: underline;
}

.popup {
font-size: .9em;
padding: 0.2em;
list-style: none;
margin: 0;
}

.popup hr {
display: block;
height: 1px;
width: auto;
padding: 0;
margin: 0.2em 0em;
}

.listBreak {
font-size: 1px;
line-height: 1px;
}

.listBreak div {
margin: 2px 0;
}

.popup li.disabled {
padding: 0.2em;
}

.popup li a{
display: block;
padding: 0.2em;
}

.tabset {
padding: 1em 0em 0em 0.5em;
}

.tab {
margin: 0em 0em 0em 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;
}

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

.selected .toolbar {
visibility: visible;
}

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

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

.title {
font-size: 1.6em;
font-weight: bold;
padding-left: 1px;
}

.missing .subtitle {
display: none;
}

.subtitle {
font-size: 1.1em;
padding-left: 2px;
}

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

.tagging {
margin: 0.5em 0.5em 0.5em 0;
float: right;
display: none;
}

.isTag .tagging {
display: block;
}

.tagged {
margin: 0.5em;
}

.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;
}

* html .viewer pre {
width: 99%;
padding: 0 0 1em 0;
}

.viewer {
line-height: 1.4em;
padding-left: 1em;
}

.viewer .button {
margin: 0em 0.25em;
padding: 0em 0.25em;
}

.viewer blockquote {
margin-left: 0.5em;
padding-left: 1.5em;
}

.viewer ul, .viewer ol{
margin-left: 0.5em;
padding-left: 1.5em;
}

.viewer li {
margin-top: 0.8em;
}

.viewer table {
border-collapse: collapse;
margin: 0.5em 0.5em;
}

.viewer th, .viewer td, .viewer tr,.viewer caption{
vertical-align: top;
padding: 1px;
}

.viewer table.listView {
font-size: 0.85em;
margin: 0.8em 1.0em;
}

.viewer table.listView th, .viewer table.listView td, .viewer table.listView tr {
padding: 0px 2px 0px 2px;
}

.viewer pre {
padding: 0.2em;
font-size: 0.9em;
line-height: 110%;
overflow: auto;
}

.viewer code {
font-size: 90%;
}

.editor {
font-size: 1.1em;
}

.editor input, .editor textarea {
display: block;
width: 100%;
font: inherit;
}

.editorFooter {
padding: 0.25em 0em;
font-size: .9em;
}

.editorFooter .button {
padding-top: 0px; padding-bottom: 0px;}

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

.sparkline {
line-height: 1em;
}

.sparktick {
outline: 0;
}

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

.cascade {
font-size: 1.1em;
position: absolute;
overflow: hidden;
}
/*}}}*/
/*{{{*/
body {
	background: [[ColorPalette::Background]];
	color: [[ColorPalette::Foreground]];
}

[[TiddlerColors]]

.title {
	color: [[ColorPalette::PrimaryDark]];
}

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

.toolbar {
	color: [[ColorPalette::PrimaryMid]];
}
a.externalLink {
 color: #007700;
}
a {
	color: [[ColorPalette::SecondaryDark]];
}

a:hover {
	background: [[ColorPalette::SecondaryDark]];
	color: [[ColorPalette::Background]];
}
a img {
	border: 0;
}
.searchresults th {
	background: [[ColorPalette::SecondaryLight]];
	color: [[ColorPalette::SecondaryDark]];
}

.cleartable table {
border: 1px solid [[ColorPalette::Background]];
width:100%;
}

..viewer table {
	padding: 1px;
}

.viewer th, thead td {
	background: [[ColorPalette::SecondaryLight]];
	color: [[ColorPalette::SecondaryaryDark]];
}
.clear td, .clear tr {
	border:1px solid [[ColorPalette::Background]];
	padding: 0px;
}
.clear th, .clear td, .clear tr,.clear caption{
vertical-align: top;
}

.viewer table.listView {
font-size: 0.85em;
margin: 0.8em 1.0em;
}

.viewer table.listView th, .viewer table.listView td, .viewer table.listView tr {
padding: 0px 2px 0px 2px;
}

h1,h2,h3,h4,h5 {
	color: [[ColorPalette::PrimaryDark]];
}

.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]];
}

.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::SecondaryLight]];
	border-top: 1px solid [[ColorPalette::SecondaryMid]];
	border-left: 1px solid [[ColorPalette::SecondaryMid]];
}

.wizard h1 {
	color: [[ColorPalette::SecondaryDark]];
}

.wizard h2 {
	color: [[ColorPalette::Foreground]];
}

.wizardStep {
	background: [[ColorPalette::Background]];
	border-top: 1px solid [[ColorPalette::SecondaryMid]];
	border-bottom: 1px solid [[ColorPalette::SecondaryMid]];
	border-left: 1px solid [[ColorPalette::SecondaryMid]];
}

.wizard .button {
	color: [[ColorPalette::Background]];
	background: [[ColorPalette::PrimaryMid]];
	border-top: 1px solid [[ColorPalette::PrimaryLight]];
	border-right: 1px solid [[ColorPalette::PrimaryDark]];
	border-bottom: 1px solid [[ColorPalette::PrimaryDark]];
	border-left: 1px solid [[ColorPalette::PrimaryLight]];
}

.wizard .button:hover {
	color: [[ColorPalette::PrimaryLight]];
	background: [[ColorPalette::PrimaryDark]];
	border-color: [[ColorPalette::SecondaryMid]];
}

.wizard .button:active {
	color: [[ColorPalette::Background]];
	background: [[ColorPalette::PrimaryMid]];
	border-top: 1px solid [[ColorPalette::PrimaryLight]];
	border-right: 1px solid [[ColorPalette::PrimaryDark]];
	border-bottom: 1px solid [[ColorPalette::PrimaryDark]];
	border-left: 1px solid [[ColorPalette::PrimaryLight]];
}

#messageArea {
	border: 1px solid [[ColorPalette::SecondaryDark]];
	background: [[ColorPalette::SecondaryMid]];
	color: [[ColorPalette::PrimaryDark]];
}

#messageArea .button {
	padding: 0.2em 0.2em 0.2em 0.2em;
	color: [[ColorPalette::PrimaryDark]];
	background: [[ColorPalette::Background]];
}

.popup {
	color: [[ColorPalette::SecondaryLight]];
	background: [[ColorPalette::SecondaryDark]];
	border: 1px solid [[ColorPalette::SecondaryMid]];
}

.popup hr {
	color: [[ColorPalette::PrimaryDark]];
	background: [[ColorPalette::PrimaryDark]];
	border-bottom: 1px;
}

.listBreak div{
	border-bottom: 1px solid [[ColorPalette::PrimaryDark]];
}

.popup li.disabled {
	color: [[ColorPalette::PrimaryMid]];
}

.popup li a, .popup li a:visited {
	color: [[ColorPalette::TertiaryPale]];
	border: none;
}

.popup li a:hover {
	background: [[ColorPalette::PrimaryDark]];
	color: [[ColorPalette::Background]];
	border: none;
}

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

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

.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]];
}

.cascade {
	background: [[ColorPalette::TertiaryPale]];
	color: [[ColorPalette::TertiaryMid]];
	border: 1px solid [[ColorPalette::TertiaryMid]];
}

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

.box {
	background: #ccecff;
	border; 1px;
}

#mainMenu .highlight, #mainMenu .marked {
	background: [[ColorPalette::PrimaryPale]];
}

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

.editor input {
	border: 1px solid [[ColorPalette::PrimaryMid]];
}

.editor textarea {
	border: 1px solid [[ColorPalette::PrimaryMid]];
	width: 100%;
}

.editorFooter {
	color: [[ColorPalette::TertiaryMid]];
}

/*}}}*/
The ''DPI/NGO Conference Planning Committee'' has the responsibility of planning the Annual DPI/NGO Conference. The Planning Committee for the 60th Conference is chaired by ''Richard Jordan'' and meets on a weekly basis - with occasional exceptions - each Thursday at United Nations Headquarters in New York. To be added to the list for receiving meeting announcements, minutes, etc, please send an email to ''section5 (at) un (dot) org''.

The [[NGO Committee on Education]] was a co-sponsor and organizer - with [[Rotary International]], [[UNESCO|http://www.unesco.org]], [[Information Habitat: Where Information Lives]], [[Earthwatch Institute]] and the [[Armenian Assembly of America]] - of ''Education, Youth & Technology for Sustainable Development'', a workshop at the ''59th Annual DPI/NGO Conference'' in September 2005 that focused on the [[United Nations Decade of Education for Sustainable Development]].  For additional information on the workshop, please visit [[www.ngo-education.net/workshop|http://www.ngo-education.net/workshop]] - a site that was the Information and Communications Sub-Committee's first experiment with the TiddlyWiki software platform.  

Note that an earlier web site has been created for the workshop, using the open source  educational software platform ''Moodle''- an acronym for Modular Object-Oriented Dynamic Learning Environment - see [[www.moodle.org|http://www.moodle.org]]. However. while Moodle offers some exceptional features, it is a much more complex platform, and unlike TiddlyWiki, which is a self-contained web site requiring only a browser to create, edit and/or view a pages, Moodle requires the installation of server-side software - and a web hosting service that permits the installation of the necessary software. You may be able to access the Moodle site for the Workshop - currently hosted sporadically on a home computer running Windows XP - at http://24.215.188.100/index.php

Daphne Cohen received han Ed.D. from Yeshiva University in New York in Administration and Supervision in 2006 , having conducted doctoral research on children’s views on basic concepts in morality.  Building upon the work of Piaget, Kohlberg, Vygotsky, and Gilligan, Daphne was awarded a Schupf Foundation Fellowship that funded her doctoral research - undertaken with students at the United Nations International School.

In addition to pursuing her post-graduate education, Daphne is a Professor at the Graduate School of General and Special Education at Touro College. Professor Cohen teaches a variety of methods courses at Touro integrating technology into various disciplines such as math and science for elementary and middle school teachers. Dr. Cohen also teaches courses for CITE (Center for Integrated Teacher Education) and has taught educational technology and library programs in a variety of day schools. In addition, Professor Cohen has taught online courses for Axia College of the University of Phoenix and Touro College.  Daphne is facilitating online courses in the areas of Educational methods integrating technology, math and science for elementary school teachers and critical thinking.

A strong proponent of ongoing professional development with an overriding belief in the importance of utilizing the latest educational resources and technology to meet students’ needs and maintain a challenging, stimulating academic environment, Daphne spearheaded the development of a broad range of educational technology training workshops for school’s, serving as an invaluable resource to assist educators in integrating leading-edge technologies into the core curriculum. She created a comprehensive resource manual encapsulating educational software for early childhood through high school students.

Since 1996, Daphne has developed educational programming and curriculum, established library media centers for educational organizations, and published educational materials. A key highlight in Daphne’s career was the publication of her coauthored work In Search of the Seven Wonders of Noah, a children’s book exploring moral and character education, and a companion educator’s resource guide. Daphne has developed and continues to deliver both teacher and student workshops delving into these publications.

An enthusiastic and dedicated educator committed to developing responsible, caring, and productive contributors to society, Daphne has a long track record of developing educational curriculum that sparks students’ curiosity, creativity, and critical thinking skills and encourages a life-long love of learning.

Prior to pursuing her doctoral studies, Daphne obtained a Master of Science in Education from Yeshiva University and a Bachelor of Science
in Elementary Education from Touro College in New York. She holds an Elementary and Early Childhood Education Certification through the
State of New York as well as a Principal and Teacher’s License from the National Board of License for Teachers and Principals of Private
Schools in North America. Finally, Dr. Cohen spent a year studying at Jerusalem College in Israel.

Dr. Cohen serves as treasurer of the NGO Committee on Education. Dr. Cohen is also a member of the Ethical Union, CEP {Character Education Partnership), AME {Association for Moral Education}, and the APA {American Psychological Association}.
The contents of this TiddlyWiki web page were generated from a ''~DataPerfect'' database. ~DataPerfect is a little-known, brilliant relational database compantion of the legendary ''~WordPerfect for DOS'', which was used to prepare the text from the pdf files of The Stern Review for input into the ~DataPerfect database. The design of ~DataPerfect makes it an exceptional vehicle for generating content for TiddlyWiki web pages. 

~DataPerfect was written, and is still maintained by, ''Lew Bastian'' - older brother of ~WordPerfect's author; before joinging the ''~WordPerfect Corporation'', Lew had worked for ''IBM'', where he had written some of the early disk-caching patents. The development of ~DataPerfect was discontinued by the ''~WordPerfect Corporation'' after the introduction of Windows, and subsequently, Novell made the program freely available; an active ''~DataPerfect Users Group'' - [[www.dataperfect.nl|http://www.dataperfect.nl]] - of which Lew Bastian is a leading member - provides exceptional support.
/***
|''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;

//}}}

<<<
Women's Environment and Development Organization (WEDO)
Council of Women World Leaders (CWWL)
Heinrich B&ouml;ll Foundation
> //The following recommendations in the area of climate change and gender equality were developed on the occasion of the UN Secretary General's [[High-Level Climate Change Event|High-Level Event on Climate Change, September 24, 2007]] and the ~High-Level Roundtable "How a Changing Climate Impacts Women" organized by the partners above.^^/1^^//
>> //September 2007//
<<<
* The UN ~Secretary-General and governments should send a strong message to this year's UNFCCC COP-13 in Bali that gender equality is to be integrated as a crosscutting issue in the negotiations and debates and that women's equal participation must be ensured. Governments should draw on the innumerable global agreements that relate directly or indirectly to gender equality and climate change^^/2^^, as well as gender expertise within the UN system and at the national level.
* Given that women's knowledge and participation has been critical to the survival of entire communities in disaster situations, governments should take advantage of women's specialized skills in various aspects of their livelihood and natural resource management strategies that lend themselves to mitigation and adaptation.
* Since climate change disproportionately affects poor women, governments should analyze and identify gender-specific impacts and protection measures related to floods, droughts, heat waves, diseases, and other environmental changes and disasters. The global community should prioritize reducing the high levels of female mortality rates resulting from climate-induced disasters and livelihood changes.
* Given the vulnerability of the poor, and particularly women, to climate change, adequate funds must be allocated by Annex I countries to help these groups adapt to the impacts.
* Practical tools should be developed that allow governments and institutions to incorporate gender equality in climate change initiatives.
* Governments at national and local levels should develop strategies to enhance women's access to and control over natural resources, in order to reduce poverty, protect environmental resources, and ensure that women and poor communities can better cope with climate change.
* Governments and institutions should enhance opportunities for education and training in climate change mitigation and adaptation. Capacity building and technology transfer measures should draw on priorities put forward by women and poor communities.
* Women's participation in climate change related debates and planning must be enhanced by tools and procedures that augment their capacity and sensitize decision- makers to the advantages of equal participation.
* The UNFCCC should develop a gender strategy, invest in gender-specific climate change research, and establish a system for the use of gender-sensitive indicators and criteria for governments to use in national reporting to the UNFCCC Secretariat, adaptation planning, or projects under the Clean Development Mechanism (CDM).
* Market-based approaches to curbing climate change, such as the Clean Development Mechanism, should be made accessible to both women and men and ensure equitable benefits, considering that women and men do not have equal access to natural resources such as water and energy, land titles, credit, or information. In particular, the CDM should fund projects that make renewable energy technologies more available to women and meet their household needs.
* The gendered impacts of biofuels and nuclear energy as a solution to reducing greenhouse gas emissions should be assessed, in cooperation with gender experts and women's organizations.
* Since the UNFCCC emerged from UNCED, which outlines nine major groups that are essential to sustainable development, women and all major groups should be included as official focal points in the UNFCCC.

1/ These recommendations also draw on policy recommendations developed by the UNFCCC women's caucus and the CSD Women's Major Group.

2/ [[Chapter 24 of Agenda 21|Agenda 21, Chapter 24]] (UNCED 1992); [[Johannesburg Plan of Action|Johannesburg Plan of Implementation]] (WSSD 2002); Paragraph K of the [[Beijing Platform for Action]] (4th World Conference on Women 1995); World Conference on Human Rights (1993); International Conference on Population and Development (1994); World Summit for Social Development (1995); [[Millennium Declaration]] (2000); Convention on the Elimination of All Forms of Discrimination Against Women (1979); [[Convention on Biodiversity|Convention on Biological Diversity]] (1992); Convention to Combat Desertification (1994); Ministerial Declaration of the 3rd World Water Forum (2003); Children's World Summit (1990); [[Second United Nations Conference on Human Settlements|Habitat II]] (1996); World Summit on Food (1996); [[Hyogo Framework for Action]] (UN World Conference on Disaster Reduction 2005)

For more information, contact: Rebecca Pearl, WEDO  -  rebecca@wedo.org or 212-973-0325 More information: www.wedo.org ([[sustainable development section|http://www.wedo.org/programs.aspx?mode=development]])
[[Welcome]]
[[La Perla Garden Summer School]]
[[Most Recent Tiddlers]]
/***
|''Name:''|DeprecatedFunctionsPlugin|
|''Description:''|Support for deprecated functions removed from core|
***/
//{{{
if(!version.extensions.DeprecatedFunctionsPlugin) {
version.extensions.DeprecatedFunctionsPlugin = {installed:true};

//--
//-- Deprecated code
//--

// @Deprecated: Use createElementAndWikify and this.termRegExp instead
config.formatterHelpers.charFormatHelper = function(w)
{
	w.subWikify(createTiddlyElement(w.output,this.element),this.terminator);
};

// @Deprecated: Use enclosedTextHelper and this.lookaheadRegExp instead
config.formatterHelpers.monospacedByLineHelper = 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 text = lookaheadMatch[1];
		if(config.browser.isIE)
			text = text.replace(/\n/g,"\r");
		createTiddlyElement(w.output,"pre",null,null,text);
		w.nextMatch = lookaheadRegExp.lastIndex;
	}
};

// @Deprecated: Use <br> or <br /> instead of <<br>>
config.macros.br = {};
config.macros.br.handler = function(place)
{
	createTiddlyElement(place,"br");
};

// Find an entry in an array. Returns the array index or null
// @Deprecated: Use indexOf instead
Array.prototype.find = function(item)
{
	var i = this.indexOf(item);
	return i == -1 ? null : i;
};

// Load a tiddler from an HTML DIV. The caller should make sure to later call Tiddler.changed()
// @Deprecated: Use store.getLoader().internalizeTiddler instead
Tiddler.prototype.loadFromDiv = function(divRef,title)
{
	return store.getLoader().internalizeTiddler(store,this,title,divRef);
};

// Format the text for storage in an HTML DIV
// @Deprecated Use store.getSaver().externalizeTiddler instead.
Tiddler.prototype.saveToDiv = function()
{
	return store.getSaver().externalizeTiddler(store,this);
};

// @Deprecated: Use store.allTiddlersAsHtml() instead
function allTiddlersAsHtml()
{
	return store.allTiddlersAsHtml();
}

// @Deprecated: Use refreshPageTemplate instead
function applyPageTemplate(title)
{
	refreshPageTemplate(title);
}

// @Deprecated: Use story.displayTiddlers instead
function displayTiddlers(srcElement,titles,template,unused1,unused2,animate,unused3)
{
	story.displayTiddlers(srcElement,titles,template,animate);
}

// @Deprecated: Use story.displayTiddler instead
function displayTiddler(srcElement,title,template,unused1,unused2,animate,unused3)
{
	story.displayTiddler(srcElement,title,template,animate);
}

// @Deprecated: Use functions on right hand side directly instead
var createTiddlerPopup = Popup.create;
var scrollToTiddlerPopup = Popup.show;
var hideTiddlerPopup = Popup.remove;

// @Deprecated: Use right hand side directly instead
var regexpBackSlashEn = new RegExp("\\\\n","mg");
var regexpBackSlash = new RegExp("\\\\","mg");
var regexpBackSlashEss = new RegExp("\\\\s","mg");
var regexpNewLine = new RegExp("\n","mg");
var regexpCarriageReturn = new RegExp("\r","mg");

}
//}}}
Diane Paravazian has had more than twenty years of experience in language and cross-cultural education and training both in academic and business settings.  She has worked for the Port Authority of New York and New Jersey and Pace University as the Director of the World Trade Institute Language Center.  As Director of the Language Center, she has created innovative and customized language and culture programs for major corporations. As Director and Adjunct Professor of French at Pace University, with Pace University's Department of Modern Languages, she designed a new undergraduate major, and a related bridge program at Murry Bergtraum High School. Currently Ms. Paravazian is a Professor of French at St. John's University, is working on her Doctoral Dissertation in at New York University and serves on a number of boards, including the Business Advisory Board of Murry Bergtraum High School, and the American Association of Teachers of French, Metropolitan Chapter. She is Treasurer of the Société des Professeurs Français et Francophones d'Amérique, a foundation which offers grants to students studying French. Ms. Paravazian has received a number of academic fellowships and awards, including the French Government's "Chevalier des Palmes Académiques."

At the United Nations, Ms. Paravazian serves as UN Representative for the [[World Association of Girl Guides and Girl Scouts]]; she had previously represented the [[Armenian Assembly of America]] since 2000. During this time she has been a member of the DPI/NGO Planning Committee, Media Co-Chair for the Conference, member of the NGO Committees on Sustainable Development and Human Rights, Secretary of the NGO Committee on Education . She is currently active as  member at large on the NGO Committee on the Status of Women and Acting Co-Chair of the [[NGO Committee on Education]].
!!Expected Climatic Trigger for the Transition
> A decrease in rainfall is projected that would lead to the gradual death of the forest as fires become more frequent and extensive. Changes could occur over periods of decades once they started.
!!Expected Environmental Consequences
> Forest death would lead to loss of many ecosystems rich in biodiversity and significantly reduce carbon storage, amplifying global warming.
!!Likely Societal Significance
> In the region, loss of a very productive ecosystem and diminution of water storage. Globally, greater warming and significant loss of biodiversity
[[La Perla Garden]] is located at 76-80 West 105th Street, New York, NY, between Columbus and Manhattan Avenues, and is readily accessible by public transportation - just a few blocks from the ''1'' train at 103rd and Broadway, or from the ''B'' or ''C'' trains at 103rd and Central Park West. In addition, the  ''7'' and ''11'' buses stop at 104th & Amsterdam (uptown) and at 106th and Columbus (downtown). The map below is from Google Maps.

<html>
<center>
<iframe  width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps/ms?ie=UTF8&amp;oe=utf-8&amp;msa=0&amp;msid=100732368296564182313.00043ed2b02ff10a38734&amp;ll=40.798442,-73.96312&amp;spn=0.0064,0.01442&amp;om=1&amp;output=embed&amp;s=AARTsJqbhSCa-WREPcSUuUdbU6A9RMuQUg"></iframe>
</center>
</html>
/***
|''Name:''|DisableWikiLinksPlugin|
|''Source:''|http://www.TiddlyTools.com/#DisableWikiLinksPlugin|
|''Author:''|Eric Shulman - ELS Design Studios|
|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|''~CoreVersion:''|2.0.10|

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 {{{[[...]]}}}.

You can also block automatic WikiWord linking behavior only for non-existing tiddler titles, while still automatically 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]], 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
<<<
Self-contained control panel:
<<option chkDisableNonExistingWikiLinks>> Disable automatic WikiWord links for non-existing tiddlers
<<option chkDisableWikiLinks>> Disable ALL automatic WikiWord tiddler links
<<option chkAllowLinksFromShadowTiddlers>> ... except for WikiWords contained in shadow tiddlers
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''DisableWikiLinksPlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''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
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
<<<
!!!!!Code
***/
//{{{
version.extensions.disableWikiLinks= {major: 1, minor: 4, revision: 0, date: new Date(2006,12,31)};

if (config.options.chkDisableNonExistingWikiLinks==undefined) config.options.chkDisableNonExistingWikiLinks= false;
if (config.options.chkDisableWikiLinks==undefined) config.options.chkDisableWikiLinks= false;
if (config.options.chkAllowLinksFromShadowTiddlers==undefined) config.options.chkAllowLinksFromShadowTiddlers=true;

// 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 specific excluded wiki words
		var t=store.getTiddlerText("DisableWikiLinksList")
		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()
{
	// DEBUG alert("processing: "+this.title);
	// 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;
}
//}}}
Title:  Title
Author: Author
Date: Date
You are welcome to download this TiddlyWiki web site and to customize it for your own purposes. All you need to do is ''save this page'' - as a //Web page, HTML only// onto your local hard drive, or to a USB memory card. 

Once you have downloaded the page, and opened the local copy of the web site, you will be able to explore the wonderful world of TiddlyWiki in far greater depth than is possible if you only navigate the page on a web site. Go to the [[Setup Menu]] that shows you how to take the simple steps to customize this web site and make it into an information habitat that you can then add on to, rebuild, re-organize - and share and exchange with others what we have collected and learned about the scope and dimensions of the climate change crisis - and how we are called to respond.

This site is part of an evolving network of sites and initiatives of [[Climate Change 2.0]] that is  based on appreciation of the transformative characteristics of a knowledge-based universe and the remarkable evolution of software and related resources - from email and email groups/lists, web browsing and Google searches to blogs, wikis & tiddlywikis, streaming media and ~YouTube, increasingly inexpensive devices - from cell phones to Ipods, video cameras, often in a wireless environment - is transforming our ability to gather and organize information, to exchange it freely with friends and colleagues and to collaborate on anything from writing enhanced software to developing and facilitating a global framework for action to come to terms with the [[climate change crisis|Climate change crisis]]

/%Wikis - wiki is a Hawaiian word the means swift or swiftly - have been playing a vital role in the evoling global commons, both by the 
within which there is a progressive emergence of free and open source software that serves as a vital foundation for an Earth community that recognizes knowledge as being at the heart of wealth, and in a networked information economy in which software, free software, playing a role in the digital economy that streeel mills did in the industrial revolution.%/
{{iframe{''Note'': This is a "framed" page from the '' '' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at }}}
<html><iframe
	src = "http://www.bbg.org/gar2/topics/sustainable/handbooks/easycompost/1.html"
	title = "Easy Compost - Brooklyn Botanic Garden"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
''Economics of Climate Change: The Stern Review'' is a major publication, published in October 2006, that was commissioned by the Treasury Department of the British Government with the mandate of reviewing the issue of the economic dimensions of climate change - a key area that has not previously gained sufficient attention. 

The web-based version of the ''Stern Review'' has been "translated" by the [[NGO Committee on Education]] into the "language" of a TiddlyPerfect platform, with the contents housed in a DataPerfect database from which the tiddlers and tags were generated, and is designed to optimize the accessibility and navigability of the contents of the report for reading in a digital environment, and to begin to raise the vital issue of the economics of information as it relates to climate change. The original, official version of the report was published in a pdf version. - a format that is optimized for print rather than for on-screen reading, and that is relatively cumbersome to navigate through the contents; to improve the online value of the pdf files of the Stern Review, an extensive set of bookmarks have been added to the pdf files - none having been included in the official pdf files - to make it easier for those who prefer to read the online version to find their way around the lengthy review..

The TiddlyPerfect version of the Stern Review also includes a shortened Executive Summary - the original being more than thirty pages long, and highlights the key concepts

http://www.climate-change-two.net/stern-review/
/***
|Name|EditFieldPlugin|
|Source|http://www.TiddlyTools.com/#EditFieldPlugin|
|Version|1.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|extend core edit macro for use in ViewTemplates or direct embedding in tiddler content|

This HIJACK extends the core {{{<<edit fieldname>>}}} macro for use in a ViewTemplate or directly embedded in tiddler content.  Enter single- or multi- line text from 'view mode' tiddler displays and save/discard your input using ENTER, ESC, or automatic 'blur' handling.
!!!!!Usage
<<<
Normally, when you edit a tiddler, any changes you make are only saved (or discarded) when you press the "done" (or "cancel") command in the tiddler editor's toolbar.  However, when in a 'view mode' context, these command items are not available, and so cannot be used to trigger the 'save/discard' handling once you have decided that your input activities are complete.  Instead, you will be automatically prompted to save/discard your changes (if any) as soon as you move away from a text edit field or multi-line text area.  Alternatively, pressing ENTER while in an edit field will save your input, while pressing ESCAPE will abandon your input (after prompting for confirmation).  
<<<
!!!!!Examples
<<<
{{{<<edit foobar>>}}}
<<edit foobar>>
{{{<<edit mumble 5>>}}}
<<edit mumble 5>>
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document: [[EditFieldPlugin]]
<<<
!!!!!Revision History
<<<
''2007.08.22 [1.0.0]'' initial release
<<<
!!!!!Credits
<<<
This feature was developed by Eric L Shulman / ELS Design Studios
<<<
!!!!!Code
***/
//{{{
version.extensions.editFieldPlugin= {major: 1, minor: 0, revision: 0, date: new Date(2007,8,22)};

config.macros.edit.editFieldPlugin_savedHandler=config.macros.edit.handler;
config.macros.edit.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	// let core create edit field
	config.macros.edit.editFieldPlugin_savedHandler.apply(this,arguments);
	// get edit field or textarea
	var ins=place.getElementsByTagName(params[0]=="text"||params[1]?'textarea':'input');
	var e=ins[ins.length-1];
	// if viewing tiddler, add autosave handlers
	var here=story.findContainingTiddler(place);
	if (here && here.getAttribute("template").indexOf("ViewTemplate")!=-1) {
		story.setDirty(tiddler.title,false); // clear tiddler ("dirty") flag set by core when field was created
		var field=e.getAttribute("edit");
		var val=store.getValue(tiddler.title,field); if (!val) val="";
		e.setAttribute("currval",val); // remember starting value
		e.setAttribute("tiddler",tiddler.title); // remember target tiddler
		e.onkeydown=function(ev) { // ENTER key=save (for single-line edit fields only)
			var event=ev?ev:window.event;
			this.setAttribute("keyCode",event.keyCode); // save last keyCode for blur() handler
			if (event.keyCode==13 && this.nodeName.toUpperCase()!="TEXTAREA")
				this.saveField(); // save input to tiddler field
		}
		e.onblur=function(ev) { // accept or reject input when focus moves away from field
			var event=ev?ev:window.event;
			var tid=this.getAttribute("tiddler"); if (!tid || !tid.length) return;
			var field=this.getAttribute("edit");
			if (this.value!=this.getAttribute("currval")) { // if value has changed
				if (this.getAttribute("keyCode")=="27") { // if user pressed ESC
					var msg="Abandon changes to %0@%1?".format([field,tid]);
					if (confirm(msg)) this.value=this.getAttribute("currval"); // reset to starting value
					this.id=new Date().getTime(); // set unique ID
					setTimeout("document.getElementById('"+this.id+"').focus()",1); // restore focus (after blur completes)
				} else { // other focus change events
					var msg="Save changes to %0@%1?".format([field,tid]);
					if (confirm(msg)) this.saveField(); // save input to tiddler field, then continue blur
					else this.value=this.getAttribute("currval"); // reset to starting value, then continue blur
				}
			}
		};
		e.saveField=function() { // save input value to tiddler field (create, touch or rename tiddler as needed)
			var tid=this.getAttribute("tiddler"); if (!tid || !tid.length) return;
			var field=this.getAttribute("edit");
			var title=(field=="title")?this.value:tid;
			if (!title.length) { // prevent blank tiddler title from being used
				this.value=this.getAttribute("currval"); // reset to starting value
				this.id=new Date().getTime(); // set unique ID
				setTimeout("displayMessage('Please enter a non-blank value')",1); // notify user
				setTimeout("document.getElementById('"+this.id+"').focus()",2); // set focus to continue editing
				return;
			}
			var t=store.getTiddler(tid);
			store.suspendNotifications();
			var anim=config.options.chkAnimate; config.options.chkAnimate=false; // suspend animation
			store.saveTiddler(t?tid:title,title,t?t.body:"",config.options.txtUserName,new Date(),t?t.tags:[],t?t.fields:null);
			store.setValue(title,field,this.value); // save value in tiddler field
			this.setAttribute("currval",this.value); // remember new starting value
			if (tid!=title) // if title changed, display renamed tiddler in place of current one
				{ story.displayTiddler(story.findContainingTiddler(this),title); story.closeTiddler(tid); }
			if (field=="text") // if tiddler content changed, refresh tiddler display
				{ story.refreshTiddler(title,null,true); }
			config.options.chkAnimate=anim; // resume animation
			store.resumeNotifications();
		};
	}
}
//}}}
<!--{{{-->
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler jump'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div>
<div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler jump'></div>
<!--}}}-->
<<tiddler "DPI/NGO Workshop">> [[edit contents|DPI/NGO Workshop]]
{{iframe{''Note'': This is a "framed" page from the ''Wildlife Conservation Society'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.wcs.org/sw-high_tech_tools/landscapeecology/mannahatta/downloads?preview=&psid=&ph=class%253DAWC-14877272}}}
<html><iframe
	src = "http://www.wcs.org/sw-high_tech_tools/landscapeecology/mannahatta/downloads?preview=&psid=&ph=class%253DAWC-14877272"
	title = "Educational Resources of the Mannahatta Project!"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
!!!Expected Climatic Trigger for the Transition
Cooling of the stratosphere caused by the increasing concentrations of greenhouse gases will create temperatures conducive to sharper reductions in springtime ozone.
!!!Expected Environmental Consequences
Reduced springtime ozone levels will significantly increase the intensity of ultraviolet (UV) radiation at the surface, adversely affecting both marine and terrestrial ecosystems and food chains
!!!Likely Societal Significance
In high-latitude regions, the heightened levels of UV radiation will adversely affect human health, especially as warming promotes greater outdoor activity without appropriate protection.
<html>
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="600" height="400" flashvars="host=picasaweb.google.com&noautoplay=1&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fecology2001%2Falbumid%2F5079318862798532401%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</html>
The Executive Committee of the [[NGO Committee on Education]] consists of the Officers, Members-at-Large, and Sub-Committee Chairs (//ex officio//):
!!! Co-Chairs
* [[Diane Paravazian]], [[World Association of Girl Guides and Girl Scouts]]
* [[Faye C. Feller]], [[Information Habitat: Where Information Lives]]
!!! Secretary
* ''Catherine Waters'', [[Catholic International Education Office]]
!!! Treasurer
* [[Daphne Cohen]], [[International Humanist and Ethical Union]]
!!!Members-at-Large
* ''Catherine Moore''. [[International Federation of University Women]]
* ''Doris Sargeant'', [[Rotary International]]
* ''Cora Weiss'', [[The Hague Appeal for Peace]]
!!!Sub-Committee Chairs
* ''Information & Communications Sub-Committee''
** [[Robert Pollard]], [[Information Habitat: Where Information Lives]]
/***
|Name|ExportTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#ExportTiddlersPlugin|
|Version|2.4.1|
|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||
|Description|select and extract tiddlers from your ~TiddlyWiki documents and save them to a local file|

When many people edit copies of the same TiddlyWiki document, the ability to easily copy and share these changes so they can then be redistributed to the entire group is very important.  This ability is also very useful when moving your own tiddlers from document to document (e.g., when upgrading to the latest version of TiddlyWiki, or 'pre-loading' your favorite stylesheets into a new 'empty' TiddlyWiki document.)

ExportTiddlersPlugin let you ''select and extract tiddlers from your ~TiddlyWiki documents and save them to a local file'' or a remote server (requires installation of compatible server-side scripting, still under development...).  An interactive control panel lets you specify a destination, and then select which tiddlers to export.  A convenient 'selection filter' helps you pick desired tiddlers by specifying a combination of modification dates, tags, or tiddler text to be matched or excluded.  ''Tiddler data can be output as ~TiddlyWiki "storeArea ~DIVs" that can be imported into another ~TiddlyWiki or as ~RSS-compatible XML that can be published for RSS syndication.''

!!!!!Inline interface (live)
<<<
<<exportTiddlers inline>>
<<<
!!!!!Usage
<<<
Optional "special tiddlers" used by this plugin:
* SiteUrl^^
URL for official server-published version of document being viewed (used in XML export)
default: //none//^^
* SiteHost^^
host name/address for remote server (e.g., "www.server.com" or "192.168.1.27")
default: //none//^^
* SitePost^^
remote path/filename for submitting changes (e.g., "/cgi-bin/submit.cgi")
default: //none//^^
* SiteParams^^
arguments (if any) for server-side receiving script
default: //none//^^
* SiteNotify^^
addresses (if any) for sending automatic server-side email notices
default: //none//^^
* SiteID^^
username or other authorization identifier for login-controlled access to remote server
default: current TiddlyWiki username (e.g., "YourName")^^
* SiteDate^^
stored date/time stamp for most recent published version of document
default: current document.modified value (i.e., the 'file date')^^
<<<
!!!!!Example
<<<
<<exportTiddlers>>
<<<
!!!!!Installation
<<<
Import (or copy/paste) the following tiddlers into your document:
''ExportTiddlersPlugin'' (tagged with <<tag systemConfig>>)

create/edit ''SideBarOptions'': (sidebar menu items) 
^^Add {{{<<exportTiddlers>>}}} macro^^
<<<
!!!!!Revision History
<<<
''2007.07.16 [2.4.1]'' in exportTWHeader(), reset HTML source 'markup' so installed markup is NOT copied to new file.
''2007.06.30 [2.4.0]'' added "select related tiddlers" feature.  Recursively scans the tiddler links[] info to find all tiddlers referenced by any of the currently selected tiddler, and then selects them all (including the original tiddlers).  ''//Theoretically//'', selecting all related tiddlers should ensure that the exported file contains all tiddlers needed to properly render all of the originally selected tiddlers.
''2007.04.19 [2.3.0]'' in exportData(), pass SiteURL value as param to saveToRss().  Fixes 'undefined' appearing in tiddler link in XML output.  Also, in refreshExportList(), added 'sort by tags'.  Also, added 'group select'... selecting a heading (date,author,tag) auto-selects all tiddlers in that group.
''2007.03.02 [2.2.6]'' in onClickExportButton(), when selecting open tiddlers for TW2.2, look for "storyDisplay" instead of "tiddlerDisplay" but keep fallback to "tiddlerDisplay" for TW2.1 or earlier
''2007.03.01 [2.2.5]'' removed hijack of store.saveChanges() (was catching save on http:, but there are other solutions that do a much better job of handling save to server.
|please see [[ExportTiddlersPluginHistory]] for additional revision details|
''2005.10.09 [0.0.0]'' development started
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
<<<
!!!!!Code
***/
// // version
//{{{
version.extensions.exportTiddlers = {major: 2, minor: 4, revision: 1, date: new Date(2007,7,16)};
//}}}

// // macro handler
//{{{
config.macros.exportTiddlers = {
	label: "export tiddlers",
	prompt: "Copy selected tiddlers to an export document",
	newdefault: "export.html",
	datetimefmt: "0MM/0DD/YYYY 0hh:0mm:0ss" // for "filter date/time" edit fields
};

config.macros.exportTiddlers.handler = function(place,macroName,params) {
	if (params[0]!="inline")
		{ createTiddlyButton(place,this.label,this.prompt,onClickExportMenu); return; }
	var panel=createExportPanel(place);
	panel.style.position="static";
	panel.style.display="block";
}

function createExportPanel(place) {
	var panel=document.getElementById("exportPanel");
	if (panel) { panel.parentNode.removeChild(panel); }
	setStylesheet(config.macros.exportTiddlers.css,"exportTiddlers");
	panel=createTiddlyElement(place,"span","exportPanel",null,null)
	panel.innerHTML=config.macros.exportTiddlers.html;
	exportShowPanel(document.location.protocol);
	exportInitFilter();
	refreshExportList(0);
	return panel;
}

function onClickExportMenu(e)
{
	if (!e) var e = window.event;
	var parent=resolveTarget(e).parentNode;
	var panel = document.getElementById("exportPanel");
	if (panel==undefined || panel.parentNode!=parent)
		panel=createExportPanel(parent);
	var isOpen = panel.style.display=="block";
	if(config.options.chkAnimate)
		anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));
	else
		panel.style.display = isOpen ? "none" : "block" ;
	if (panel.style.display!="none") refreshExportList(0); // update list when panel is made visible
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
	return(false);
}
//}}}

// // IE needs explicit scoping for functions called by browser events
//{{{
window.onClickExportMenu=onClickExportMenu;
window.onClickExportButton=onClickExportButton;
window.exportShowPanel=exportShowPanel;
window.exportShowFilterFields=exportShowFilterFields;
window.refreshExportList=refreshExportList;
//}}}

// // CSS for floating export control panel
//{{{
config.macros.exportTiddlers.css = '\
#exportPanel {\
	display: none; position:absolute; z-index:12; width:35em; right:105%; top:6em;\
	background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\
	border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\
	padding: 0.5em; margin:0em; -moz-border-radius:1em;\
}\
#exportPanel a, #exportPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\
#exportPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }\
#exportPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\
#exportPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\
#exportPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}\
#exportPanel input  { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%; }\
#exportPanel textarea  { width:98%;padding:0px;margin:0px;overflow:auto;font-size:8pt; }\
#exportPanel .box { border:1px solid black; padding:3px; margin-bottom:5px; background:#f8f8f8; -moz-border-radius:5px; }\
#exportPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }\
#exportPanel .rad { width:auto;border:0 }\
#exportPanel .chk { width:auto;border:0 }\
#exportPanel .btn { width:auto; }\
#exportPanel .btn1 { width:98%; }\
#exportPanel .btn2 { width:48%; }\
#exportPanel .btn3 { width:32%; }\
#exportPanel .btn4 { width:24%; }\
#exportPanel .btn5 { width:19%; }\
';
//}}}

// // HTML for export control panel interface
//{{{
config.macros.exportTiddlers.html = '\
<!-- output target and format -->\
<table cellpadding="0" cellspacing="0"><tr><td width=50%>\
	export to\
	<select size=1 id="exportTo" onchange="exportShowPanel(this.value);">\
	<option value="file:" SELECTED>this computer</option>\
	<option value="http:">web server (http)</option>\
	<option value="https:">secure web server (https)</option>\
	<option value="ftp:">file server (ftp)</option>\
	</select>\
</td><td width=50%>\
	output format\
	<select id="exportFormat" size=1>\
	<option value="DIV">TiddlyWiki export file</option>\
	<option value="TW">TiddlyWiki document</option>\
	<option value="XML">RSS feed (XML)</option>\
	</select>\
</td></tr></table>\
\
<!-- export to local file  -->\
<div id="exportLocalPanel" style="margin-top:5px;">\
local path/filename<br>\
<input type="text" id="exportFilename" size=40 style="width:93%"><input \
	type="button" id="exportBrowse" value="..." title="select or enter a local folder/file..." style="width:5%" \
	onclick="this.previousSibling.value=window.promptForExportFilename(this);">\
<!--<input type="file" id="exportFilename" size=57 style="width:100%"><br>-->\
</div><!--panel-->\
\
<!-- export to http server -->\
<div id="exportHTTPPanel" style="display:none;margin-top:5px;">\
<table><tr><td align=left>\
	server location, script, and parameters<br>\
</td><td align=right>\
	<input type="checkbox" class="chk" id="exportNotify"\
		onClick="document.getElementById(\'exportSetNotifyPanel\').style.display=this.checked?\'block\':\'none\'"> notify\
</td></tr></table>\
<input type="text" id="exportHTTPServerURL" onfocus="this.select()"><br>\
<div id="exportSetNotifyPanel" style="display:none">\
	send email notices to<br>\
	<input type="text" id="exportNotifyTo" onfocus="this.select()"><br>\
</div>\
</div><!--panel-->\
\
<!-- export to ftp server -->\
<div id="exportFTPPanel" style="display:none;margin-top:5px;">\
<table cellpadding="0" cellspacing="0" width="32%"><tr valign="top"><td>\
	host server<br>\
	<input type="text" id="exportFTPHost" onfocus="this.select()"><br>\
</td><td width="32%">\
	username<br>\
	<input type="text" id="exportFTPID" onfocus="this.select()"><br>\
</td><td width="32%">\
	password<br>\
	<input type="password" id="exportFTPPW" onfocus="this.select()"><br>\
</td></tr></table>\
FTP path/filename<br>\
<input type="text" id="exportFTPFilename" onfocus="this.select()"><br>\
</div><!--panel-->\
\
<!-- notes -->\
notes<br>\
<textarea id="exportNotes" rows=3 cols=40 style="height:4em;margin-bottom:5px;" onfocus="this.select()"></textarea> \
\
<!-- list of tiddlers -->\
<table><tr align="left"><td>\
	select:\
	<a href="JavaScript:;" id="exportSelectAll"\
		onclick="onClickExportButton(this)" title="select all tiddlers">\
		&nbsp;all&nbsp;</a>\
	<a href="JavaScript:;" id="exportSelectChanges"\
		onclick="onClickExportButton(this)" title="select tiddlers changed since last save">\
		&nbsp;changes&nbsp;</a> \
	<a href="JavaScript:;" id="exportSelectOpened"\
		onclick="onClickExportButton(this)" title="select tiddlers currently being displayed">\
		&nbsp;opened&nbsp;</a> \
	<a href="JavaScript:;" id="exportSelectRelated"\
		onclick="onClickExportButton(this)" title="select all tiddlers related (by link or transclusion) to the currently selected tiddlers">\
		&nbsp;related&nbsp;</a> \
	<a href="JavaScript:;" id="exportToggleFilter"\
		onclick="onClickExportButton(this)" title="show/hide selection filter">\
		&nbsp;filter&nbsp;</a>  \
</td><td align="right">\
	<a href="JavaScript:;" id="exportListSmaller"\
		onclick="onClickExportButton(this)" title="reduce list size">\
		&nbsp;&#150;&nbsp;</a>\
	<a href="JavaScript:;" id="exportListLarger"\
		onclick="onClickExportButton(this)" title="increase list size">\
		&nbsp;+&nbsp;</a>\
</td></tr></table>\
<select id="exportList" multiple size="10" style="margin-bottom:5px;"\
	onchange="refreshExportList(this.selectedIndex)">\
</select><br>\
</div><!--box-->\
\
<!-- selection filter -->\
<div id="exportFilterPanel" style="display:none">\
<table><tr align="left"><td>\
	selection filter\
</td><td align="right">\
	<a href="JavaScript:;" id="exportHideFilter"\
		onclick="onClickExportButton(this)" title="hide selection filter">hide</a>\
</td></tr></table>\
<div class="box">\
<input type="checkbox" class="chk" id="exportFilterStart" value="1"\
	onclick="exportShowFilterFields(this)"> starting date/time<br>\
<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">\
	<select size=1 id="exportFilterStartBy" onchange="exportShowFilterFields(this);">\
		<option value="0">today</option>\
		<option value="1">yesterday</option>\
		<option value="7">a week ago</option>\
		<option value="30">a month ago</option>\
		<option value="site">SiteDate</option>\
		<option value="file">file date</option>\
		<option value="other">other (mm/dd/yyyy hh:mm)</option>\
	</select>\
</td><td width="50%">\
	<input type="text" id="exportStartDate" onfocus="this.select()"\
		onchange="document.getElementById(\'exportFilterStartBy\').value=\'other\';">\
</td></tr></table>\
<input type="checkbox" class="chk" id="exportFilterEnd" value="1"\
	onclick="exportShowFilterFields(this)"> ending date/time<br>\
<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">\
	<select size=1 id="exportFilterEndBy" onchange="exportShowFilterFields(this);">\
		<option value="0">today</option>\
		<option value="1">yesterday</option>\
		<option value="7">a week ago</option>\
		<option value="30">a month ago</option>\
		<option value="site">SiteDate</option>\
		<option value="file">file date</option>\
		<option value="other">other (mm/dd/yyyy hh:mm)</option>\
	</select>\
</td><td width="50%">\
	<input type="text" id="exportEndDate" onfocus="this.select()"\
		onchange="document.getElementById(\'exportFilterEndBy\').value=\'other\';">\
</td></tr></table>\
<input type="checkbox" class="chk" id=exportFilterTags value="1"\
	onclick="exportShowFilterFields(this)"> match tags<br>\
<input type="text" id="exportTags" onfocus="this.select()">\
<input type="checkbox" class="chk" id=exportFilterText value="1"\
	onclick="exportShowFilterFields(this)"> match titles/tiddler text<br>\
<input type="text" id="exportText" onfocus="this.select()">\
</div> <!--box-->\
</div> <!--panel-->\
\
<!-- action buttons -->\
<div style="text-align:center">\
<input type=button class="btn3" onclick="onClickExportButton(this)"\
	id="exportFilter" value="apply filter">\
<input type=button class="btn3" onclick="onClickExportButton(this)"\
	id="exportStart" value="export tiddlers">\
<input type=button class="btn3" onclick="onClickExportButton(this)"\
	id="exportClose" value="close">\
</div><!--center-->\
';
//}}}

// // initialize interface
// // exportShowPanel(which)
//{{{
function exportShowPanel(which) {
	var index=0; var panel='exportLocalPanel';
	switch (which) {
		case 'file:':
		case undefined:
			index=0; panel='exportLocalPanel'; break;
		case 'http:':
			index=1; panel='exportHTTPPanel'; break;
		case 'https:':
			index=2; panel='exportHTTPPanel'; break;
		case 'ftp:':
			index=3; panel='exportFTPPanel'; break;
		default:
			alert("Sorry, export to "+which+" is not yet available");
			break;
	}
	exportInitPanel(which);
	document.getElementById('exportTo').selectedIndex=index;
	document.getElementById('exportLocalPanel').style.display='none';
	document.getElementById('exportHTTPPanel').style.display='none';
	document.getElementById('exportFTPPanel').style.display='none';
	document.getElementById(panel).style.display='block';
}
//}}}

// // exportInitPanel(which)
//{{{
function exportInitPanel(which) {
	switch (which) {
		case "file:": // LOCAL EXPORT PANEL: file/path:
			// ** no init - security issues in IE **
			break;
		case "http:": // WEB EXPORT PANEL
		case "https:": // SECURE WEB EXPORT PANEL
			// url
			if (store.tiddlerExists("unawiki_download")) {
				var theURL=store.getTiddlerText("unawiki_download");
				theURL=theURL.replace(/\[\[download\|/,'').replace(/\]\]/,'');
				var title=(store.tiddlerExists("unawiki_host"))?"unawiki_host":"SiteHost";
				var theHost=store.getTiddlerText(title);
				if (!theHost || !theHost.length) theHost=document.location.host;
				if (!theHost || !theHost.length) theHost=title;
			}
			// server script/params
			var title=(store.tiddlerExists("unawiki_host"))?"unawiki_host":"SiteHost";
			var theHost=store.getTiddlerText(title);
			if (!theHost || !theHost.length) theHost=document.location.host;
			if (!theHost || !theHost.length) theHost=title;
			// get POST
			var title=(store.tiddlerExists("unawiki_post"))?"unawiki_post":"SitePost";
			var thePost=store.getTiddlerText(title);
			if (!thePost || !thePost.length) thePost="/"+title;
			// get PARAMS
			var title=(store.tiddlerExists("unawiki_params"))?"unawiki_params":"SiteParams";
			var theParams=store.getTiddlerText(title);
			if (!theParams|| !theParams.length) theParams=title;
			var serverURL = which+"//"+theHost+thePost+"?"+theParams;
			document.getElementById("exportHTTPServerURL").value=serverURL;
			// get NOTIFY
			var theAddresses=store.getTiddlerText("SiteNotify");
			if (!theAddresses|| !theAddresses.length) theAddresses="SiteNotify";
			document.getElementById("exportNotifyTo").value=theAddresses;
			break;
		case "ftp:": // FTP EXPORT PANEL
			// host
			var siteHost=store.getTiddlerText("SiteHost");
			if (!siteHost || !siteHost.length) siteHost=document.location.host;
			if (!siteHost || !siteHost.length) siteHost="SiteHost";
			document.getElementById("exportFTPHost").value=siteHost;
			// username
			var siteID=store.getTiddlerText("SiteID");
			if (!siteID || !siteID.length) siteID=config.options.txtUserName;
			document.getElementById("exportFTPID").value=siteID;
			// password
			document.getElementById("exportFTPPW").value="";
			// file/path
			document.getElementById("exportFTPFilename").value="";
			break;
	}
}
//}}}

// // exportInitFilter()
//{{{
function exportInitFilter() {
	// start date
	document.getElementById("exportFilterStart").checked=false;
	document.getElementById("exportStartDate").value="";
	// end date
	document.getElementById("exportFilterEnd").checked=false;
	document.getElementById("exportEndDate").value="";
	// tags
	document.getElementById("exportFilterTags").checked=false;
	document.getElementById("exportTags").value="";
	// text
	document.getElementById("exportFilterText").checked=false;
	document.getElementById("exportText").value="";
	// show/hide filter input fields
	exportShowFilterFields();
}
//}}}

// // exportShowFilterFields(which)
//{{{
function exportShowFilterFields(which) {
	var show;

	show=document.getElementById('exportFilterStart').checked;
	document.getElementById('exportFilterStartBy').style.display=show?"block":"none";
	document.getElementById('exportStartDate').style.display=show?"block":"none";
	var val=document.getElementById('exportFilterStartBy').value;
	document.getElementById('exportStartDate').value
		=getFilterDate(val,'exportStartDate').formatString(config.macros.exportTiddlers.datetimefmt);
	 if (which && (which.id=='exportFilterStartBy') && (val=='other'))
		document.getElementById('exportStartDate').focus();

	show=document.getElementById('exportFilterEnd').checked;
	document.getElementById('exportFilterEndBy').style.display=show?"block":"none";
	document.getElementById('exportEndDate').style.display=show?"block":"none";
	var val=document.getElementById('exportFilterEndBy').value;
	document.getElementById('exportEndDate').value
		=getFilterDate(val,'exportEndDate').formatString(config.macros.exportTiddlers.datetimefmt);
	 if (which && (which.id=='exportFilterEndBy') && (val=='other'))
		document.getElementById('exportEndDate').focus();

	show=document.getElementById('exportFilterTags').checked;
	document.getElementById('exportTags').style.display=show?"block":"none";

	show=document.getElementById('exportFilterText').checked;
	document.getElementById('exportText').style.display=show?"block":"none";
}
//}}}

// // onClickExportButton(which): control interactions
//{{{
function onClickExportButton(which)
{
	// DEBUG alert(which.id);
	var theList=document.getElementById('exportList'); if (!theList) return;
	var count = 0;
	var total = store.getTiddlers('title').length;
	switch (which.id)
		{
		case 'exportFilter':
			count=filterExportList();
			var panel=document.getElementById('exportFilterPanel');
			if (count==-1) { panel.style.display='block'; break; }
			document.getElementById("exportStart").disabled=(count==0);
			clearMessage(); displayMessage("filtered "+formatExportMessage(count,total));
			if (count==0) { alert("No tiddlers were selected"); panel.style.display='block'; }
			break;
		case 'exportStart':
			exportTiddlers();
			break;
		case 'exportHideFilter':
		case 'exportToggleFilter':
			var panel=document.getElementById('exportFilterPanel')
			panel.style.display=(panel.style.display=='block')?'none':'block';
			break;
		case 'exportSelectChanges':
			var lastmod=new Date(document.lastModified);
			for (var t = 0; t < theList.options.length; t++) {
				if (theList.options[t].value=="") continue;
				var tiddler=store.getTiddler(theList.options[t].value); if (!tiddler) continue;
				theList.options[t].selected=(tiddler.modified>lastmod);
				count += (tiddler.modified>lastmod)?1:0;
			}
			document.getElementById("exportStart").disabled=(count==0);
			clearMessage(); displayMessage(formatExportMessage(count,total));
			if (count==0) alert("There are no unsaved changes");
			break;
		case 'exportSelectAll':
			for (var t = 0; t < theList.options.length; t++) {
				if (theList.options[t].value=="") continue;
				theList.options[t].selected=true;
				count += 1;
			}
			document.getElementById("exportStart").disabled=(count==0);
			clearMessage(); displayMessage(formatExportMessage(count,count));
			break;
		case 'exportSelectOpened':
			for (var t = 0; t < theList.options.length; t++) theList.options[t].selected=false;
			var tiddlerDisplay = document.getElementById("tiddlerDisplay"); // for TW2.1-
			if (!tiddlerDisplay) tiddlerDisplay = document.getElementById("storyDisplay"); // for TW2.2+
			for (var t=0;t<tiddlerDisplay.childNodes.length;t++) {
				var tiddler=tiddlerDisplay.childNodes[t].id.substr(7);
				for (var i = 0; i < theList.options.length; i++) {
					if (theList.options[i].value!=tiddler) continue;
					theList.options[i].selected=true; count++; break;
				}
			}
			document.getElementById("exportStart").disabled=(count==0);
			clearMessage(); displayMessage(formatExportMessage(count,total));
			if (count==0) alert("There are no tiddlers currently opened");
			break;
		case 'exportSelectRelated':
			// recursively build list of related tiddlers
			function getRelatedTiddlers(tid,tids) {
				var t=store.getTiddler(tid); if (!t || tids.contains(tid)) return tids;
				tids.push(t.title);
				if (!t.linksUpdated) t.changed();
				for (var i=0; i<t.links.length; i++)
					if (t.links[i]!=tid) tids=getRelatedTiddlers(t.links[i],tids);
				return tids;
			}
			// for all currently selected tiddlers, gather up the related tiddlers (including self) and select them as well
			var tids=[];
			for (var i=0; i<theList.options.length; i++)
				if (theList.options[i].selected) tids=getRelatedTiddlers(theList.options[i].value,tids);
			// select related tiddlers (includes original selected tiddlers)
			for (var i=0; i<theList.options.length; i++)
				theList.options[i].selected=tids.contains(theList.options[i].value);
			clearMessage(); displayMessage(formatExportMessage(tids.length,total));
			break;
		case 'exportListSmaller':	// decrease current listbox size
			var min=5;
			theList.size-=(theList.size>min)?1:0;
			break;
		case 'exportListLarger':	// increase current listbox size
			var max=(theList.options.length>25)?theList.options.length:25;
			theList.size+=(theList.size<max)?1:0;
			break;
		case 'exportClose':
			document.getElementById('exportPanel').style.display='none';
			break;
		}
}
//}}}

// // list display
//{{{
function formatExportMessage(count,total)
{
	var txt=total+' tiddler'+((total!=1)?'s':'')+" - ";
	txt += (count==0)?"none":(count==total)?"all":count;
	txt += " selected for export";
	return txt;
}

function refreshExportList(selectedIndex)
{
	var theList  = document.getElementById("exportList");
	var sort;
	if (!theList) return;
	// get the sort order
	if (!selectedIndex)   selectedIndex=0;
	if (selectedIndex==0) sort='modified';
	if (selectedIndex==1) sort='title';
	if (selectedIndex==2) sort='modified';
	if (selectedIndex==3) sort='modifier';
	if (selectedIndex==4) sort='tags';

	// unselect headings and count number of tiddlers actually selected
	for (var t=0,count=0; t < theList.options.length; t++) {
		if (!theList.options[t].selected) continue;
		if (theList.options[t].value!="")
			count++;
		else { // if heading is selected, deselect it, and then select and count all in section
			theList.options[t].selected=false;
			for ( t++; t<theList.options.length && theList.options[t].value!=""; t++) {
				theList.options[t].selected=true;
				count++;
			}
		}
	}

	// disable "export" button if no tiddlers selected
	document.getElementById("exportStart").disabled=(count==0);
	// show selection count
	var tiddlers = store.getTiddlers('title');
	if (theList.options.length) { clearMessage(); displayMessage(formatExportMessage(count,tiddlers.length)); }

	// if a [command] item, reload list... otherwise, no further refresh needed
	if (selectedIndex>4)  return;

	// clear current list contents
	while (theList.length > 0) { theList.options[0] = null; }
	// add heading and control items to list
	var i=0;
	var indent=String.fromCharCode(160)+String.fromCharCode(160);
	theList.options[i++]=
		new Option(tiddlers.length+" tiddlers in document", "",false,false);
	theList.options[i++]=
		new Option(((sort=="title"        )?">":indent)+' [by title]', "",false,false);
	theList.options[i++]=
		new Option(((sort=="modified")?">":indent)+' [by date]', "",false,false);
	theList.options[i++]=
		new Option(((sort=="modifier")?">":indent)+' [by author]', "",false,false);
	theList.options[i++]=
		new Option(((sort=="tags"	)?">":indent)+' [by tags]', "",false,false);
	// output the tiddler list
	switch(sort)
		{
		case "title":
			for(var t = 0; t < tiddlers.length; t++)
				theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);
			break;
		case "modifier":
		case "modified":
			var tiddlers = store.getTiddlers(sort);
			// sort descending for newest date first
			tiddlers.sort(function (a,b) {if(a[sort] == b[sort]) return(0); else return (a[sort] > b[sort]) ? -1 : +1; });
			var lastSection = "";
			for(var t = 0; t < tiddlers.length; t++)
				{
				var tiddler = tiddlers[t];
				var theSection = "";
				if (sort=="modified") theSection=tiddler.modified.toLocaleDateString();
				if (sort=="modifier") theSection=tiddler.modifier;
				if (theSection != lastSection)
					{
					theList.options[i++] = new Option(theSection,"",false,false);
					lastSection = theSection;
					}
				theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);
				}
			 break;
		case "tags":
			var theTitles = {}; // all tiddler titles, hash indexed by tag value
			var theTags = new Array();
			for(var t=0; t<tiddlers.length; t++) {
				var title=tiddlers[t].title;
				var tags=tiddlers[t].tags;
				if (!tags || !tags.length) {
					if (theTitles["untagged"]==undefined) { theTags.push("untagged"); theTitles["untagged"]=new Array(); }
					theTitles["untagged"].push(title);
				}
				else for(var s=0; s<tags.length; s++) {
					if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }
					theTitles[tags[s]].push(title);
				}
			}
			theTags.sort();
			for(var tagindex=0; tagindex<theTags.length; tagindex++) {
				var theTag=theTags[tagindex];
				theList.options[i++]=new Option(theTag,"",false,false);
				for(var t=0; t<theTitles[theTag].length; t++)
					theList.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);
			}
			break;
		}
	theList.selectedIndex=selectedIndex;		  // select current control item
}
//}}}

// // list filtering
//{{{
function getFilterDate(val,id)
{
	var result=0;
	switch (val) {
		case 'site':
			var timestamp=store.getTiddlerText("SiteDate");
			if (!timestamp) timestamp=document.lastModified;
			result=new Date(timestamp);
			break;
		case 'file':
			result=new Date(document.lastModified);
			break;
		case 'other':
			result=new Date(document.getElementById(id).value);
			break;
		default: // today=0, yesterday=1, one week=7, two weeks=14, a month=31
			var now=new Date(); var tz=now.getTimezoneOffset()*60000; now-=tz;
			var oneday=86400000;
			if (id=='exportStartDate')
				result=new Date((Math.floor(now/oneday)-val)*oneday+tz);
			else
				result=new Date((Math.floor(now/oneday)-val+1)*oneday+tz-1);
			break;
	}
	// DEBUG alert('getFilterDate('+val+','+id+')=='+result+"\nnow="+now);
	return result;
}

function filterExportList()
{
	var theList  = document.getElementById("exportList"); if (!theList) return -1;

	var filterStart=document.getElementById("exportFilterStart").checked;
	var val=document.getElementById("exportFilterStartBy").value;
	var startDate=getFilterDate(val,'exportStartDate');

	var filterEnd=document.getElementById("exportFilterEnd").checked;
	var val=document.getElementById("exportFilterEndBy").value;
	var endDate=getFilterDate(val,'exportEndDate');

	var filterTags=document.getElementById("exportFilterTags").checked;
	var tags=document.getElementById("exportTags").value;

	var filterText=document.getElementById("exportFilterText").checked;
	var text=document.getElementById("exportText").value;

	if (!(filterStart||filterEnd||filterTags||filterText)) {
		alert("Please set the selection filter");
		document.getElementById('exportFilterPanel').style.display="block";
		return -1;
	}
	if (filterStart&&filterEnd&&(startDate>endDate)) {
		var msg="starting date/time:\n"
		msg+=startDate.toLocaleString()+"\n";
		msg+="is later than ending date/time:\n"
		msg+=endDate.toLocaleString()
		alert(msg);
		return -1;
	}

	// scan list and select tiddlers that match all applicable criteria
	var total=0;
	var count=0;
	for (var i=0; i<theList.options.length; i++) {
		// get item, skip non-tiddler list items (section headings)
		var opt=theList.options[i]; if (opt.value=="") continue;
		// get tiddler, skip missing tiddlers (this should NOT happen)
		var tiddler=store.getTiddler(opt.value); if (!tiddler) continue; 
		var sel=true;
		if ( (filterStart && tiddler.modified<startDate)
		|| (filterEnd && tiddler.modified>endDate)
		|| (filterTags && !matchTags(tiddler,tags))
		|| (filterText && (tiddler.text.indexOf(text)==-1) && (tiddler.title.indexOf(text)==-1)))
			sel=false;
		opt.selected=sel;
		count+=sel?1:0;
		total++;
	}
	return count;
}
//}}}

//{{{
function matchTags(tiddler,cond)
{
	if (!cond||!cond.trim().length) return false;

	// build a regex of all tags as a big-old regex that 
	// OR's the tags together (tag1|tag2|tag3...) in length order
	var tgs = store.getTags();
	if ( tgs.length == 0 ) return results ;
	var tags = tgs.sort( function(a,b){return (a[0].length<b[0].length)-(a[0].length>b[0].length);});
	var exp = "(" + tags.join("|") + ")" ;
	exp = exp.replace( /(,[\d]+)/g, "" ) ;
	var regex = new RegExp( exp, "ig" );

	// build a string such that an expression that looks like this: tag1 AND tag2 OR NOT tag3
	// turns into : /tag1/.test(...) && /tag2/.test(...) || ! /tag2/.test(...)
	cond = cond.replace( regex, "/$1\\|/.test(tiddlerTags)" );
	cond = cond.replace( /\sand\s/ig, " && " ) ;
	cond = cond.replace( /\sor\s/ig, " || " ) ;
	cond = cond.replace( /\s?not\s/ig, " ! " ) ;

	// if a boolean uses a tag that doesn't exist - it will get left alone 
	// (we only turn existing tags into actual tests).
	// replace anything that wasn't found as a tag, AND, OR, or NOT with the string "false"
	// if the tag doesn't exist then /tag/.test(...) will always return false.
	cond = cond.replace( /(\s|^)+[^\/\|&!][^\s]*/g, "false" ) ;

	// make a string of the tags in the tiddler and eval the 'cond' string against that string 
	// if it's TRUE then the tiddler qualifies!
	var tiddlerTags = (tiddler.tags?tiddler.tags.join("|"):"")+"|" ;
	try { if ( eval( cond ) ) return true; }
	catch( e ) { displayMessage("Error in tag filter '" + e + "'" ); }
	return false;
}
//}}}

// // output data formatting
// // exportHeader(format)
//{{{
function exportHeader(format)
{
	switch (format) {
		case "TW":	return exportTWHeader();
		case "DIV":	return exportDIVHeader();
		case "XML":	return exportXMLHeader();
	}
}
//}}}

// // exportFooter(format)
//{{{
function exportFooter(format)
{
	switch (format) {
		case "TW":	return exportDIVFooter();
		case "DIV":	return exportDIVFooter();
		case "XML":	return exportXMLFooter();
	}
}
//}}}

// // exportTWHeader()
//{{{
function exportTWHeader()
{
	// Get the URL of the document
	var originalPath = document.location.href;
	// Check we were loaded from a file URL
	if(originalPath.substr(0,5) != "file:")
		{ alert(config.messages.notFileUrlError); return; }
	// Remove any location part of the URL
	var hashPos = originalPath.indexOf("#"); if(hashPos != -1) originalPath = originalPath.substr(0,hashPos);
	// Convert to a native file format assuming
	// "file:///x:/path/path/path..." - pc local file --> "x:\path\path\path..."
	// "file://///server/share/path/path/path..." - FireFox pc network file --> "\\server\share\path\path\path..."
	// "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."
	// "file://server/share/path/path/path..." - pc network file --> "\\server\share\path\path\path..."
	var localPath;
	if(originalPath.charAt(9) == ":") // pc local file
		localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\\");
	else if(originalPath.indexOf("file://///") == 0) // FireFox pc network file
		localPath = "\\\\" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\\");
	else if(originalPath.indexOf("file:///") == 0) // mac/unix local file
		localPath = unescape(originalPath.substr(7));
	else if(originalPath.indexOf("file:/") == 0) // mac/unix local file
		localPath = unescape(originalPath.substr(5));
	else // pc network file
		localPath = "\\\\" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\\");
	// Load the original file
	var original = loadFile(localPath);
	if(original == null)
		{ alert(config.messages.cantSaveError); return; }
	// reset existing HTML source markup
	original=updateMarkupBlock(original,"PRE-HEAD");
	original=updateMarkupBlock(original,"POST-HEAD");
	original=updateMarkupBlock(original,"PRE-BODY");
	original=updateMarkupBlock(original,"POST-BODY");
	// Locate the storeArea div's
	var posOpeningDiv = original.indexOf(startSaveArea);
	var posClosingDiv = original.lastIndexOf(endSaveArea);
	if((posOpeningDiv == -1) || (posClosingDiv == -1))
		{ alert(config.messages.invalidFileError.format([localPath])); return; }
	return original.substr(0,posOpeningDiv+startSaveArea.length)
}
//}}}

// // exportDIVHeader()
//{{{
function exportDIVHeader()
{
	var out=[];
	var now = new Date();
	var title = convertUnicodeToUTF8(wikifyPlain("SiteTitle").htmlEncode());
	var subtitle = convertUnicodeToUTF8(wikifyPlain("SiteSubtitle").htmlEncode());
	var user = convertUnicodeToUTF8(config.options.txtUserName.htmlEncode());
	var twver = version.major+"."+version.minor+"."+version.revision;
	var pver = version.extensions.exportTiddlers.major+"."
		+version.extensions.exportTiddlers.minor+"."+version.extensions.exportTiddlers.revision;
	out.push("<html><body>");
	out.push("<style type=\"text/css\">");
	out.push("#storeArea {display:block;margin:1em;}");
	out.push("#storeArea div");
	out.push("{padding:0.5em;margin:1em;border:2px solid black;height:10em;overflow:auto;}");
	out.push("#javascriptWarning");
	out.push("{width:100%;text-align:left;background-color:#eeeeee;padding:1em;}");
	out.push("</style>");
	out.push("<div id=\"javascriptWarning\">");
	out.push("TiddlyWiki export file<br>");
	out.push("Source"+": <b>"+convertUnicodeToUTF8(document.location.href)+"</b><br>");
	out.push("Title: <b>"+title+"</b><br>");
	out.push("Subtitle: <b>"+subtitle+"</b><br>");
	out.push("Created: <b>"+now.toLocaleString()+"</b> by <b>"+user+"</b><br>");
	out.push("TiddlyWiki "+twver+" / "+"ExportTiddlersPlugin "+pver+"<br>");
	out.push("Notes:<hr><pre>"+document.getElementById("exportNotes").value.replace(regexpNewLine,"<br>")+"</pre>");
	out.push("</div>");
	out.push("<div id=\"storeArea\">");
	return out;
}
//}}}

// // exportDIVFooter()
//{{{
function exportDIVFooter()
{
	var out=[];
	out.push("</div><!--POST-BODY-START-->\n<!--POST-BODY-END--></body></html>");
	return out;
}
//}}}

// // exportXMLHeader()
//{{{
function exportXMLHeader()
{
	var out=[];
	var now = new Date();
	var u = store.getTiddlerText("SiteUrl",null);
	var title = convertUnicodeToUTF8(wikifyPlain("SiteTitle").htmlEncode());
	var subtitle = convertUnicodeToUTF8(wikifyPlain("SiteSubtitle").htmlEncode());
	var user = convertUnicodeToUTF8(config.options.txtUserName.htmlEncode());
	var twver = version.major+"."+version.minor+"."+version.revision;
	var pver = version.extensions.exportTiddlers.major+"."
		+version.extensions.exportTiddlers.minor+"."+version.extensions.exportTiddlers.revision;
	out.push("<" + "?xml version=\"1.0\"?" + ">");
	out.push("<rss version=\"2.0\">");
	out.push("<channel>");
	out.push("<title>" + title + "</title>");
	if(u) out.push("<link>" + convertUnicodeToUTF8(u.htmlEncode()) + "</link>");
	out.push("<description>" + subtitle + "</description>");
	out.push("<language>en-us</language>");
	out.push("<copyright>Copyright " + now.getFullYear() + " " + user + "</copyright>");
	out.push("<pubDate>" + now.toGMTString() + "</pubDate>");
	out.push("<lastBuildDate>" + now.toGMTString() + "</lastBuildDate>");
	out.push("<docs>http://blogs.law.harvard.edu/tech/rss</docs>");
	out.push("<generator>TiddlyWiki "+twver+" plus ExportTiddlersPlugin "+pver+"</generator>");
	return out;
}
//}}}

// // exportXMLFooter()
//{{{
function exportXMLFooter()
{
	var out=[];
	out.push("</channel></rss>");
	return out;
}
//}}}

// // exportData()
//{{{
function exportData(theList,theFormat)
{
	// scan export listbox and collect DIVs or XML for selected tiddler content
	var out=[];
	for (var i=0; i<theList.options.length; i++) {
		// get item, skip non-selected items and section headings
		var opt=theList.options[i]; if (!opt.selected||(opt.value=="")) continue;
		// get tiddler, skip missing tiddlers (this should NOT happen)
		var thisTiddler=store.getTiddler(opt.value); if (!thisTiddler) continue; 
		if (theFormat=="TW")	out.push(convertUnicodeToUTF8(thisTiddler.saveToDiv()));
		if (theFormat=="DIV")	out.push(convertUnicodeToUTF8(thisTiddler.title+"\n"+thisTiddler.saveToDiv()));
		if (theFormat=="XML")	out.push(convertUnicodeToUTF8(thisTiddler.saveToRss(store.getTiddlerText("SiteUrl",""))));
	}
	return out;
}
//}}}

// // exportTiddlers(): output selected data to local or server
//{{{
function exportTiddlers()
{
	var theList  = document.getElementById("exportList"); if (!theList) return;

	// get the export settings
	var theProtocol = document.getElementById("exportTo").value;
	var theFormat = document.getElementById("exportFormat").value;

	// assemble output: header + tiddlers + footer
	var theData=exportData(theList,theFormat);
	var count=theData.length;
	var out=[]; var txt=out.concat(exportHeader(theFormat),theData,exportFooter(theFormat)).join("\n");
	var msg="";
	switch (theProtocol) {
		case "file:":
			var theTarget = document.getElementById("exportFilename").value.trim();
			if (!theTarget.length) msg = "A local path/filename is required\n";
			if (!msg && saveFile(theTarget,txt))
				msg=count+" tiddler"+((count!=1)?"s":"")+" exported to local file";
			else if (!msg)
				msg+="An error occurred while saving to "+theTarget;
			break;
		case "http:":
		case "https:":
			var theTarget = document.getElementById("exportHTTPServerURL").value.trim();
			if (!theTarget.length) msg = "A server URL is required\n";
			if (document.getElementById('exportNotify').checked)
				theTarget+="&notify="+encodeURIComponent(document.getElementById('exportNotifyTo').value);
			if (document.getElementById('exportNotes').value.trim().length)
				theTarget+="&notes="+encodeURIComponent(document.getElementById('exportNotes').value);
			if (!msg && exportPost(theTarget+encodeURIComponent(txt)))
				msg=count+" tiddler"+((count!=1)?"s":"")+" exported to "+theProtocol+" server";
			else if (!msg)
				msg+="An error occurred while saving to "+theTarget;
			break;
		case "ftp:":
		default:
			msg="Sorry, export to "+theLocation+" is not yet available";
			break;
	}
	clearMessage(); displayMessage(msg,theTarget);
}
//}}}

// // exportPost(url): cross-domain post uses hidden iframe to submit url and capture responses
//{{{
function exportPost(url)
{
	var f=document.getElementById("exportFrame"); if (f) document.body.removeChild(f);
	f=document.createElement("iframe"); f.id="exportFrame";
	f.style.width="0px"; f.style.height="0px"; f.style.border="0px";
	document.body.appendChild(f);
	var d=f.document;
	if (f.contentDocument) d=f.contentDocument; // For NS6
	else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6
 	d.location.replace(url);
 	return true;
}
//}}}

// // promptForFilename(msg,path,file) uses platform/browser specific functions to get local filespec
//{{{
function promptForExportFilename(here)
{
	var msg=here.title; // use tooltip as dialog box message
	var path=getLocalPath(document.location.href);
	var slashpos=path.lastIndexOf("/"); if (slashpos==-1) slashpos=path.lastIndexOf("\\"); 
	if (slashpos!=-1) path = path.substr(0,slashpos+1); // remove filename from path, leave the trailing slash
	var file=config.macros.exportTiddlers.newdefault;
	var result="";
	if(window.Components) { // moz
		try {
			netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
			var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
			var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
			picker.init(window, msg, nsIFilePicker.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 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;
}
//}}}
//{{{
//  WebSnapr - Preview Bubble Javascript
//  Written by Juan Xavier Larrea
//  Adapted for TW by Saq Imtiaz
// requires [[this image|bg.png]]

function applyStyleString(obj,str) {
	if(document.all && !window.opera) {
		obj.style.setAttribute("cssText",str);
	} else {
		obj.setAttribute("style",str);
	}
}

// Point this variable to the correct location of the bg.png file
var bubbleImagePath = 'bg.png';

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}

function bindBubbles(e){
    lbActions=getElementsByClassName(document,"a","externalLink");
    for(i=0;i<lbActions.length;i++){
        addEvent(lbActions[i],"mouseover",attachBubble,false);
        addEvent(lbActions[i],"mouseout",detachBubble,false);
        lbActions[i].title = '';
        }
}

function attachBubble(_b){
    var _c;
    if(_b["srcElement"]){
        _c=_b["srcElement"];
    }else{
        _c=_b["target"];
    }
    if (_c.href == undefined){
	    _c=_c.parentNode;
     }
    var _d=_c.href;
    var _e=findPosX(_c) +5;
    var _f=findPosY(_c) +17;  
    var _10=document.createElement("div");
    document.getElementsByTagName("body")[0].appendChild(_10);
    _10.className="previewbubble";
    applyStyleString(_10,"text-align: center; z-index: 99999; position: absolute; top: "+_f+"px ; left: "+_e+"px ;  width: 240px; height: 190px; padding: 0; margin: 0;");
    if (config.browser.isIE)
        _10.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bubbleImagePath + "',sizingMethod='image')";
   else
       _10.style.background= "url("+ bubbleImagePath +") no-repeat";
   var img=document.createElement("img");
   _10.appendChild(img);

    applyStyleString(img,"padding-top: 0; padding-left: 0; padding-right: 0; padding-bottom: 0; margin-top: 27px; margin-left: 12px; margin-bottom: 0; margin-right: 0; border: 0");
    img.setAttribute("src","http://images.websnapr.com/?url="+_d);
    img.setAttribute("width",202);
    img.setAttribute("height",152);
    img.setAttribute("alt","Snapshot");
}

function detachBubble(_12){
    lbActions=getElementsByClassName(document,"div","previewbubble");
    for(i=0;i<lbActions.length;i++){
        lbActions[i].parentNode.removeChild(lbActions[i]);
    }
}

old_websnapr_refreshTiddler = Story.prototype.refreshTiddler;
Story.prototype.refreshTiddler = function(title,template,force)
{
    var tiddlerElem = old_websnapr_refreshTiddler.apply(this,arguments);
    bindBubbles();
    return tiddlerElem;
}
//}}}
Faye C. Feller has had a lifelong involvement with multi-cultural arts and education programs for children and youth. She is currently Executive Director of the National Association of Women for the Arts, and serves as ~Co-Chair of the [[NGO Committee on Education]] at the United Nations and as a U.N. Representative for [[Information Habitat: Where Information Lives]], an NGO in Special Consultative Status with ECOSOC that has focused on the transformative opportunities of the Internet revolution.

Faye’s work with the NGO Committee on Education is focused on a major initiative in support of the UN Decade of Education for Sustainable Development, the International Decade for a Culture of Peace and ~Non-Violence for the Children of the World, the Decade of Action: Water for Life and the Second Decade of the World’s Indigenous People.

Faye developed a prototype Science Seekers program as an after-school program for Middle School students at the Rotary Learning Lab in East Harlem; she has worked with student-led initiatives Peace in Public Places and Pumped up for Peace, which is featured on the U.N.'s Cyberschoolbus web site. Faye has served on the New York City Task Force for the ~Gandhi-King Season of Nonviolence.
''~FeedBlitz'' - [[www.feedblitz.com/|http://www.feedblitz.com/]] - is a powerful two-way broadcasting tool that you can use in conjunction with [[RSS feeds]] to publish a set of newsletters to which readers are able to subscribe,  either - or both - of two ways: via an email subscription - [img[http://www.feedblitz.com/images/email.gif]], or through an [[RSS feed|RSS feeds]] - [img[http://www.feedblitz.com/images/rss.gif]]. ''~FeedBlitz'' offers free publishing services, in which advertisements are included, as well as ad-free premium services.
{{iframe{''Note'': This is a "framed" page from the ''OASIS NYC'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.oasisnyc.net/gardens/cenycmapsearch.asp}}}
<html><iframe
	src = "http://www.oasisnyc.net/gardens/cenycmapsearch.asp"
	title = "Find a Community Garden in New York City"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
<html>
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="600" height="400" flashvars="host=picasaweb.google.com&noautoplay=1&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fecology2001%2Falbumid%2F5079345079278907809%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</html>
<html>
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="600" height="400" flashvars="host=picasaweb.google.com&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fecology2001%2Falbumid%2F5083412288842052817%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</html>
Here are some examples that show the usage of the write action in the ForEachTiddlerMacro.

//''Select and Sort Examples''//
* InClauseExamples
* WhereClauseExamples
* SortClauseExamples
* ScriptClauseExamples
//''Action Examples''//
* AddToListActionExamples
* WriteActionExamples


Of cause you may also combine the examples, e.g. taking the whereClause of one example, the sortClause of a second and the action of a third.
//~~(Part of the [[ForEachTiddlerPlugin]])~~//

Create customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.

''Syntax:'' 
|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|
|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|
|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|
|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|
|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|
|//action//|The action that should be performed on every selected tiddler, in the given order. By default the actions [[addToList|AddToListAction]] and [[write|WriteAction]] are supported. When no action is specified [[addToList|AddToListAction]] is used.|
|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|


''Using JavaScript''

To give you a lot of flexibility the [[ForEachTiddlerMacro]] uses JavaScript in its arguments. Even if you are not that familiar with JavaScript you may find forEachTiddler useful. Just have a look at the various ready-to-use [[ForEachTiddlerExamples]] and adapt them to your needs.

''The Elements of the Macro''

The arguments of the ForEachTiddlerMacro consist of multiple parts, each of them being optional.

<<slider chkFETInClause [[inClause]] "inClause" "inClause">>
<<slider chkFETWhereClause [[whereClause]] "whereClause" "whereClause">>
<<slider chkFETSortClause [[sortClause]] "sortClause" "sortClause">>
<<slider chkFETScriptClause [[scriptClause]] "scriptClause" "scriptClause">>
<<slider chkFETActions [[Action Specification]] "Action Specification" "Action Specification">>

''Using Macros and ">" inside the forEachTiddler Macro''

You may use other macro calls into the expression, especially in the actionParameters. To avoid that the {{{>>}}} of such a macro call is misinterpreted as the end of the {{{<<forEachTiddler...>>}}} macro you must escape the {{{>>}}} of the inner macro with {{{$))}}} E.g. if you want to use {{{<<tiddler ...>>}}} inside the {{{forEachTiddler}}} macro you have to write {{{<<tiddler ...$))}}}.

In addition it is necessary to escape single {{{>}}} with the text {{{$)}}}.

''Using {{{<<tiddler ... with: ...>>}}} to re-use ForEachTiddler definitions''

Sometimes you may want to use a certain ForEachTiddler definition in slight variations. E.g. you may want to list either the tiddlers tagged with "ToDo" and in the other case with "Done". To do so you may use "Tiddler parameters". Here an example:

Replace the variable part of the ForEachTiddler definition with $1 ($2,... $9 are supported). E.g. you may create the tiddler "ListTaggedTiddlers" like this
{{{
<<forEachTiddler 
 where 
 'tiddler.tags.contains("$1")'
>>
}}}

Now you can use the ListTaggedTiddlers for various specific tags, using the {{{<<tiddler ...>>}}} macro:
{{{
<<tiddler ListTaggedTiddlers with: "systemConfig">>
}}}
{{{
<<tiddler ListTaggedTiddlers with: "Plugin">>
}}}


See also [[ForEachTiddlerExamples]].
/***
|''Name:''|ForEachTiddlerPlugin|
|''Version:''|1.0.8 (2007-04-12)|
|''Source:''|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin|
|''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-2007 [[abego Software|http://www.abego-software.de]]|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
!Description

Create customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.

''Syntax:'' 
|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|
|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|
|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and  {{{context}}}.|
|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and  {{{context}}}.|
|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|
|//action//|The action that should be performed on every selected tiddler, in the given order. By default the actions [[addToList|AddToListAction]] and [[write|WriteAction]] are supported. When no action is specified [[addToList|AddToListAction]]  is used.|
|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|

See details see [[ForEachTiddlerMacro]] and [[ForEachTiddlerExamples]].

!Revision history
* v1.0.8 (2007-04-12)
** Adapted to latest TiddlyWiki 2.2 Beta importTiddlyWiki API (introduced with changeset 2004). TiddlyWiki 2.2 Beta builds prior to changeset 2004 are no longer supported (but TiddlyWiki 2.1 and earlier, of cause)
* v1.0.7 (2007-03-28)
** Also support "pre" formatted TiddlyWikis (introduced with TW 2.2) (when using "in" clause to work on external tiddlers)
* v1.0.6 (2006-09-16)
** Context provides "viewerTiddler", i.e. the tiddler used to view the macro. Most times this is equal to the "inTiddler", but when using the "tiddler" macro both may be different.
** Support "begin", "end" and "none" expressions in "write" action
* v1.0.5 (2006-02-05)
** Pass tiddler containing the macro with wikify, context object also holds reference to tiddler containing the macro ("inTiddler"). Thanks to SimonBaird.
** Support Firefox 1.5.0.1
** Internal
*** Make "JSLint" conform
*** "Only install once"
* v1.0.4 (2006-01-06)
** Support TiddlyWiki 2.0
* v1.0.3 (2005-12-22)
** Features: 
*** Write output to a file supports multi-byte environments (Thanks to Bram Chen) 
*** Provide API to access the forEachTiddler functionality directly through JavaScript (see getTiddlers and performMacro)
** Enhancements:
*** Improved error messages on InternetExplorer.
* v1.0.2 (2005-12-10)
** Features: 
*** context object also holds reference to store (TiddlyWiki)
** Fixed Bugs: 
*** ForEachTiddler 1.0.1 has broken support on win32 Opera 8.51 (Thanks to BrunoSabin for reporting)
* v1.0.1 (2005-12-08)
** Features: 
*** Access tiddlers stored in separated TiddlyWikis through the "in" option. I.e. you are no longer limited to only work on the "current TiddlyWiki".
*** Write output to an external file using the "toFile" option of the "write" action. With this option you may write your customized tiddler exports.
*** Use the "script" section to define "helper" JavaScript functions etc. to be used in the various JavaScript expressions (whereClause, sortClause, action arguments,...).
*** Access and store context information for the current forEachTiddler invocation (through the build-in "context" object) .
*** Improved script evaluation (for where/sort clause and write scripts).
* v1.0.0 (2005-11-20)
** initial version

!Code
***/
//{{{

	
//============================================================================
//============================================================================
//		   ForEachTiddlerPlugin
//============================================================================
//============================================================================

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

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

version.extensions.ForEachTiddlerPlugin = {
	major: 1, minor: 0, revision: 8, 
	date: new Date(2007,3,12), 
	source: "http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin",
	licence: "[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",
	copyright: "Copyright (c) abego Software GmbH, 2005-2007 (www.abego-software.de)"
};

// For backward compatibility with TW 1.2.x
//
if (!TiddlyWiki.prototype.forEachTiddler) {
	TiddlyWiki.prototype.forEachTiddler = function(callback) {
		for(var t in this.tiddlers) {
			callback.call(this,t,this.tiddlers[t]);
		}
	};
}

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

version.extensions.forEachTiddler = {
	major: 1, minor: 0, revision: 8, date: new Date(2007,3,12), provider: "http://tiddlywiki.abego-software.de"};

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

config.macros.forEachTiddler = {
	 // Standard Properties
	 label: "forEachTiddler",
	 prompt: "Perform actions on a (sorted) selection of tiddlers",

	 // actions
	 actions: {
		 addToList: {},
		 write: {}
	 }
};

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

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

config.macros.forEachTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	// config.macros.forEachTiddler.traceMacroCall(place,macroName,params,wikifier,paramString,tiddler);

	if (!tiddler) tiddler = config.macros.forEachTiddler.getContainingTiddler(place);
	// --- Parsing ------------------------------------------

	var i = 0; // index running over the params
	// Parse the "in" clause
	var tiddlyWikiPath = undefined;
	if ((i < params.length) && params[i] == "in") {
		i++;
		if (i >= params.length) {
			this.handleError(place, "TiddlyWiki path expected behind 'in'.");
			return;
		}
		tiddlyWikiPath = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the where clause
	var whereClause ="true";
	if ((i < params.length) && params[i] == "where") {
		i++;
		whereClause = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the sort stuff
	var sortClause = null;
	var sortAscending = true; 
	if ((i < params.length) && params[i] == "sortBy") {
		i++;
		if (i >= params.length) {
			this.handleError(place, "sortClause missing behind 'sortBy'.");
			return;
		}
		sortClause = this.paramEncode(params[i]);
		i++;

		if ((i < params.length) && (params[i] == "ascending" || params[i] == "descending")) {
			 sortAscending = params[i] == "ascending";
			 i++;
		}
	}

	// Parse the script
	var scriptText = null;
	if ((i < params.length) && params[i] == "script") {
		i++;
		scriptText = this.paramEncode((i < params.length) ? params[i] : "");
		i++;
	}

	// Parse the action. 
	// When we are already at the end use the default action
	var actionName = "addToList";
	if (i < params.length) {
	   if (!config.macros.forEachTiddler.actions[params[i]]) {
			this.handleError(place, "Unknown action '"+params[i]+"'.");
			return;
		} else {
			actionName = params[i]; 
			i++;
		}
	} 
	
	// Get the action parameter
	// (the parsing is done inside the individual action implementation.)
	var actionParameter = params.slice(i);


	// --- Processing ------------------------------------------
	try {
		this.performMacro({
				place: place, 
				inTiddler: tiddler,
				whereClause: whereClause, 
				sortClause: sortClause, 
				sortAscending: sortAscending, 
				actionName: actionName, 
				actionParameter: actionParameter, 
				scriptText: scriptText, 
				tiddlyWikiPath: tiddlyWikiPath});

	} catch (e) {
		this.handleError(place, e);
	}
};

// Returns an object with properties "tiddlers" and "context".
// tiddlers holds the (sorted) tiddlers selected by the parameter,
// context the context of the execution of the macro.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlersAndContext = function(parameter) {

	var context = config.macros.forEachTiddler.createContext(parameter.place, parameter.whereClause, parameter.sortClause, parameter.sortAscending, parameter.actionName, parameter.actionParameter, parameter.scriptText, parameter.tiddlyWikiPath, parameter.inTiddler);

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

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

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

// Returns the (sorted) tiddlers selected by the parameter.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlers = function(parameter) {
	return this.getTiddlersAndContext(parameter).tiddlers;
};

// Performs the macros with the given parameter.
//
// @param parameter holds the parameter of the macro as separate properties.
//				  The following properties are supported:
//
//						place
//						whereClause
//						sortClause
//						sortAscending
//						actionName
//						actionParameter
//						scriptText
//						tiddlyWikiPath
//
//					All properties are optional. 
//					For most actions the place property must be defined.
//
config.macros.forEachTiddler.performMacro = function(parameter) {
	var tiddlersAndContext = this.getTiddlersAndContext(parameter);

	// Perform the action
	var actionName = parameter.actionName ? parameter.actionName : "addToList";
	var action = config.macros.forEachTiddler.actions[actionName];
	if (!action) {
		this.handleError(parameter.place, "Unknown action '"+actionName+"'.");
		return;
	}

	var actionHandler = action.handler;
	actionHandler(parameter.place, tiddlersAndContext.tiddlers, parameter.actionParameter, tiddlersAndContext.context);
};

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

// Internal.
//
// --- The addToList Action -----------------------------------------------
//
config.macros.forEachTiddler.actions.addToList.handler = function(place, tiddlers, parameter, context) {
	// Parse the parameter
	var p = 0;

	// Check for extra parameters
	if (parameter.length > p) {
		config.macros.forEachTiddler.createExtraParameterErrorElement(place, "addToList", parameter, p);
		return;
	}

	// Perform the action.
	var list = document.createElement("ul");
	place.appendChild(list);
	for (var i = 0; i < tiddlers.length; i++) {
		var tiddler = tiddlers[i];
		var listItem = document.createElement("li");
		list.appendChild(listItem);
		createTiddlyLink(listItem, tiddler.title, true);
	}
};

abego.parseNamedParameter = function(name, parameter, i) {
	var beginExpression = null;
	if ((i < parameter.length) && parameter[i] == name) {
		i++;
		if (i >= parameter.length) {
			throw "Missing text behind '%0'".format([name]);
		}
		
		return config.macros.forEachTiddler.paramEncode(parameter[i]);
	}
	return null;
}

// Internal.
//
// --- The write Action ---------------------------------------------------
//
config.macros.forEachTiddler.actions.write.handler = function(place, tiddlers, parameter, context) {
	// Parse the parameter
	var p = 0;
	if (p >= parameter.length) {
		this.handleError(place, "Missing expression behind 'write'.");
		return;
	}

	var textExpression = config.macros.forEachTiddler.paramEncode(parameter[p]);
	p++;

	// Parse the "begin" option
	var beginExpression = abego.parseNamedParameter("begin", parameter, p);
	if (beginExpression !== null) 
		p += 2;
	var endExpression = abego.parseNamedParameter("end", parameter, p);
	if (endExpression !== null) 
		p += 2;
	var noneExpression = abego.parseNamedParameter("none", parameter, p);
	if (noneExpression !== null) 
		p += 2;

	// Parse the "toFile" option
	var filename = null;
	var lineSeparator = undefined;
	if ((p < parameter.length) && parameter[p] == "toFile") {
		p++;
		if (p >= parameter.length) {
			this.handleError(place, "Filename expected behind 'toFile' of 'write' action.");
			return;
		}
		
		filename = config.macros.forEachTiddler.getLocalPath(config.macros.forEachTiddler.paramEncode(parameter[p]));
		p++;
		if ((p < parameter.length) && parameter[p] == "withLineSeparator") {
			p++;
			if (p >= parameter.length) {
				this.handleError(place, "Line separator text expected behind 'withLineSeparator' of 'write' action.");
				return;
			}
			lineSeparator = config.macros.forEachTiddler.paramEncode(parameter[p]);
			p++;
		}
	}
	
	// Check for extra parameters
	if (parameter.length > p) {
		config.macros.forEachTiddler.createExtraParameterErrorElement(place, "write", parameter, p);
		return;
	}

	// Perform the action.
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(textExpression, context);
	var count = tiddlers.length;
	var text = "";
	if (count > 0 && beginExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(beginExpression, context)(undefined, context, count, undefined);
	
	for (var i = 0; i < count; i++) {
		var tiddler = tiddlers[i];
		text += func(tiddler, context, count, i);
	}
	
	if (count > 0 && endExpression)
		text += config.macros.forEachTiddler.getEvalTiddlerFunction(endExpression, context)(undefined, context, count, undefined);

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

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


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

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

// Internal.
//
// Returns a TiddlyWiki with the tiddlers loaded from the TiddlyWiki of 
// the given path.
//
config.macros.forEachTiddler.loadTiddlyWiki = function(path, idPrefix) {
	if (!idPrefix) {
		idPrefix = "store";
	}
	var lenPrefix = idPrefix.length;
	
	// Read the content of the given file
	var content = loadFile(this.getLocalPath(path));
	if(content === null) {
		throw "TiddlyWiki '"+path+"' not found.";
	}
	
	var tiddlyWiki = new TiddlyWiki();

	// Starting with TW 2.2 there is a helper function to import the tiddlers
	if (tiddlyWiki.importTiddlyWiki) {
		if (!tiddlyWiki.importTiddlyWiki(content))
			throw "File '"+path+"' is not a TiddlyWiki.";
		tiddlyWiki.dirty = false;
		return tiddlyWiki;
	}
	
	// The legacy code, for TW < 2.2
	
	// Locate the storeArea div's
	var posOpeningDiv = content.indexOf(startSaveArea);
	var posClosingDiv = content.lastIndexOf(endSaveArea);
	if((posOpeningDiv == -1) || (posClosingDiv == -1)) {
		throw "File '"+path+"' is not a TiddlyWiki.";
	}
	var storageText = content.substr(posOpeningDiv + startSaveArea.length, posClosingDiv);
	
	// Create a "div" element that contains the storage text
	var myStorageDiv = document.createElement("div");
	myStorageDiv.innerHTML = storageText;
	myStorageDiv.normalize();
	
	// Create all tiddlers in a new TiddlyWiki
	// (following code is modified copy of TiddlyWiki.prototype.loadFromDiv)
	var store = myStorageDiv.childNodes;
	for(var t = 0; t < store.length; t++) {
		var e = store[t];
		var title = null;
		if(e.getAttribute)
			title = e.getAttribute("tiddler");
		if(!title && e.id && e.id.substr(0,lenPrefix) == idPrefix)
			title = e.id.substr(lenPrefix);
		if(title && title !== "") {
			var tiddler = tiddlyWiki.createTiddler(title);
			tiddler.loadFromDiv(e,title);
		}
	}
	tiddlyWiki.dirty = false;

	return tiddlyWiki;
};


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

// Internal.
//
config.macros.forEachTiddler.findTiddlers = function(whereClause, context, tiddlyWiki) {
	var result = [];
	var func = config.macros.forEachTiddler.getEvalTiddlerFunction(whereClause, context);
	tiddlyWiki.forEachTiddler(function(title,tiddler) {
		if (func(tiddler, context, undefined, undefined)) {
			result.push(tiddler);
		}
	});
	return result;
};

// Internal.
//
config.macros.forEachTiddler.createExtraParameterErrorElement = function(place, actionName, parameter, firstUnusedIndex) {
	var message = "Extra parameter behind '"+actionName+"':";
	for (var i = firstUnusedIndex; i < parameter.length; i++) {
		message += " "+parameter[i];
	}
	this.handleError(place, message);
};

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

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

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

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

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


// Internal.
//
config.macros.forEachTiddler.trace = function(message) {
	displayMessage(message);
};

// Internal.
//
config.macros.forEachTiddler.traceMacroCall = function(place,macroName,params) {
	var message ="<<"+macroName;
	for (var i = 0; i < params.length; i++) {
		message += " "+params[i];
	}
	message += ">>";
	displayMessage(message);
};


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

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

// Internal.
//
// Encodes the given string.
//
// Replaces 
//	 "$))" to ">>"
//	 "$)" to ">"
//
config.macros.forEachTiddler.paramEncode = function(s) {
	var reGTGT = new RegExp("\\$\\)\\)","mg");
	var reGT = new RegExp("\\$\\)","mg");
	return s.replace(reGTGT, ">>").replace(reGT, ">");
};

// Internal.
//
// Returns the given original path (that is a file path, starting with "file:")
// as a path to a local file, in the systems native file format.
//
// Location information in the originalPath (i.e. the "#" and stuff following)
// is stripped.
// 
config.macros.forEachTiddler.getLocalPath = function(originalPath) {
	// Remove any location part of the URL
	var hashPos = originalPath.indexOf("#");
	if(hashPos != -1)
		originalPath = originalPath.substr(0,hashPos);
	// Convert to a native file format assuming
	// "file:///x:/path/path/path..." - pc local file --> "x:\path\path\path..."
	// "file://///server/share/path/path/path..." - FireFox pc network file --> "\\server\share\path\path\path..."
	// "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."
	// "file://server/share/path/path/path..." - pc network file --> "\\server\share\path\path\path..."
	var localPath;
	if(originalPath.charAt(9) == ":") // pc local file
		localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\\");
	else if(originalPath.indexOf("file://///") === 0) // FireFox pc network file
		localPath = "\\\\" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\\");
	else if(originalPath.indexOf("file:///") === 0) // mac/unix local file
		localPath = unescape(originalPath.substr(7));
	else if(originalPath.indexOf("file:/") === 0) // mac/unix local file
		localPath = unescape(originalPath.substr(5));
	else // pc network file
		localPath = "\\\\" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\\");	
	return localPath;
};

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

//============================================================================
// End of forEachTiddler Macro
//============================================================================


//============================================================================
// String.startsWith Function
//============================================================================
//
// Returns true if the string starts with the given prefix, false otherwise.
//
version.extensions["String.startsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.startsWith = function(prefix) {
	var n =  prefix.length;
	return (this.length >= n) && (this.slice(0, n) == prefix);
};



//============================================================================
// String.endsWith Function
//============================================================================
//
// Returns true if the string ends with the given suffix, false otherwise.
//
version.extensions["String.endsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.endsWith = function(suffix) {
	var n = suffix.length;
	return (this.length >= n) && (this.right(n) == suffix);
};


//============================================================================
// String.contains Function
//============================================================================
//
// Returns true when the string contains the given substring, false otherwise.
//
version.extensions["String.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.contains = function(substring) {
	return this.indexOf(substring) >= 0;
};

//============================================================================
// Array.indexOf Function
//============================================================================
//
// Returns the index of the first occurance of the given item in the array or 
// -1 when no such item exists.
//
// @param item [may be null]
//
version.extensions["Array.indexOf"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.indexOf = function(item) {
	for (var i = 0; i < this.length; i++) {
		if (this[i] == item) {
			return i;
		}
	}
	return -1;
};

//============================================================================
// Array.contains Function
//============================================================================
//
// Returns true when the array contains the given item, otherwise false. 
//
// @param item [may be null]
//
version.extensions["Array.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.contains = function(item) {
	return (this.indexOf(item) >= 0);
};

//============================================================================
// Array.containsAny Function
//============================================================================
//
// Returns true when the array contains at least one of the elements 
// of the item. Otherwise (or when items contains no elements) false is returned.
//
version.extensions["Array.containsAny"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAny = function(items) {
	for(var i = 0; i < items.length; i++) {
		if (this.contains(items[i])) {
			return true;
		}
	}
	return false;
};


//============================================================================
// Array.containsAll Function
//============================================================================
//
// Returns true when the array contains all the items, otherwise false.
// 
// When items is null false is returned (even if the array contains a null).
//
// @param items [may be null] 
//
version.extensions["Array.containsAll"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAll = function(items) {
	for(var i = 0; i < items.length; i++) {
		if (!this.contains(items[i])) {
			return false;
		}
	}
	return true;
};


} // of "install only once"

// Used Globals (for JSLint) ==============
// ... DOM
/*global 	document */
// ... TiddlyWiki Core
/*global 	convertUnicodeToUTF8, createTiddlyElement, createTiddlyLink, 
			displayMessage, endSaveArea, hasClass, loadFile, saveFile, 
			startSaveArea, store, wikify */
//}}}


/***
!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.
***/

The {{{<<formTiddler ...>>}}} macro defined by the FormTiddlerPlugin. 

When a tiddler T1 references the (FormTemplate) tiddler T2 in the FormTiddlerMacro, the data of T1 can be edited through the INPUT elements defined by T2.
/***
<<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.
***/
TiddyWiki offers a simple, powerful & versatile markup language for formatting the contents of a site. Here are some of the basic features:

|Effect|To get|Type this|h
|Bold Text|''Bold''|{{{''Bold''}}}|
|Underlined Text|__Underline__|{{{__Underline__}}}|
|Italic Text|//Italic//|{{{//Italic//}}}|
|Superscript|e^^2πi^^ = 1|{{{e^^2πi^^ = 1}}}|
|Subscript|a~~ij~~ = - a~~ji~~|{{{a~~ij~~ = - a~~ji~~}}}|
|Hidden Text|/%hidden comments%/|{{{/%hidden comments%/}}}|
|Highlighted Text|@@highlight@@|{{{@@highlight@@}}}|
|Styled Text|@@font-family:Bookman Old Style;Bookman Old Style@@|{{{@@font-family:Bookman Old Style;Bookman Old Style@@}}}|
|~|@@font-size:120%;font-weight:bold;larger font, in bold@@|{{{@@font-size:120%;font-weight:bold;larger font, in bold@@}}}|
|~|@@color(#ffffff):bgcolor(#ff0000):white text, red background@@|{{{@@color(#ffffff):bgcolor(#ff0000):white text, red background@@}}}}|

See [[Formatting Tiddlers]] for additional formatting features.

In addition, the overall appearance of a TiddlyWiki site - layout, colours, fonts, font sizes, etc. -  can be edited by way of a set of [[Templates & Stylesheets]]
''Double-click'' on this tiddler to see more detail, or follow the links to the specific formatting types.

|!Effect|!To get|!Type this|h
|>|>|[[Formatting Text]]|h
|Bold Text|''Bold''|{{{''Bold''}}}|
|Underlined Text|__Underline__|{{{__Underline__}}}|
|Italic Text|//Italic//|{{{//Italic//}}}|
|Superscript|e^^2πi^^ = 1|{{{e^^2πi^^ = 1}}}|
|Subscript|a~~ij~~ = - a~~ji~~|{{{a~~ij~~ = - a~~ji~~}}}|
|Strikethrough|--Strikethrough--|{{{--Strikethrough--}}}|
|Hidden Text|/%hidden comments%/|{{{/%hidden comments%/}}}|
|Highlighted Text|@@highlight@@|{{{@@highlight@@}}}|
|Styled Text|@@font-family:Bookman Old Style;Bookman Old Style@@|{{{@@font-family:Bookman Old Style;Bookman Old Style@@}}}|
|~|@@font-size:120%;font-weight:bold;larger font, in bold@@|{{{@@font-size:120%;font-weight:bold;larger font, in bold@@}}}|
|~|@@color(#ffffff):bgcolor(#ff0000):white text, red background@@|{{{@@color(#ffffff):bgcolor(#ff0000):white text, red background@@}}}}|
|>|>|[[Plugin Formatting]]|h
|JavaScript code ||<html>//{{{</html> ... <html>//}}}</html> |
|[[HTML templates]] ||<html>&lt;!--{{{--&gt;</html> .... <html>&lt;!--{{{--&gt;</html> |
|[[Cascading Style Sheets]] ||<html>/*{{{*/</html> ... <html>/*}}}*/</html> |
|>|>|''Links''|h
|~CamelCase|CamelCase links|{{{CamelCase links}}}|
|Tiddly Links|[[Simple links]]|{{{[[Simple links]]}}}|
|Alias Tiddly Links|[[Alias to Tiddly links|Tiddly links]]|{{{[[Alias to Tiddly links|Tiddly links]]}}}|
|External Links|http://www.tiddlywiki.com|{{{http://www.tiddlywiki.com}}}|
|Alias External Links|[[Tiddly Wiki|http://www.tiddywiki.com]]|{{{[[Tiddly Wiki|http://www.tiddlywiki.com]]}}}|
|Redirect Links|<<redirect TW TiddlyWiki>>|{{{<<redirect TW TiddlyWiki>>}}} redirects [[TW]] to TiddlyWiki|
|>|>|''Headings & Outlines''|h
|Sub Headings||{{{! !! !!!}}} etc. at beginning of line|
|[[Bullets]]||{{{* ** ***}}} etc. at beginning of line|
|Numbered Bullets||{{{# ## ###}}} etc. at beginning of line|
|Block Quotes||{{{<<< ... <<< }}}|
|[[Multilevel Blockquote]]||{{{> >> >>>}}} etc. at beginning of line|
|>|>|''Tables''|h
|[[Tables]]||{{{|}}} .... {{{|}}} separates cells|
|[[Cell Alignment|left|{{{|left|}}}|
|| center |{{{| center |}}}|
|| right|{{{| right|}}}|
|[[Header Rows||{{{|h}}} at end of row|h
|InlineHTML|<html><p align="right">right-aligned text</p></html>|{{{<html><p align="right">right-aligned text</p></html>}}}|
|InvokeMacro|''importTiddlers'' macro|{{{<<importTiddlers>>}}}|

''Note'' this needs some additional editing / revision - and addressing the question of consistent / clear naming of the specific formatting types (in left column) and ideally a consistent format for each formatting type
[[Manhattan Land Trust]]
[[Trust for Public Land]]
[[GreenThumb, New York City Department of Parks & Recreation]]
[[Council on the Environment of New York City]]
[[Green Map System]]
[[The New York City Compost Project]]
[[New York Botanical Gardens]]
[[Brooklyn Botanical Gardens]]
To get started with this customized TiddlyWiki, you'll need to modify the following tiddlers, or you can use the [[Setup Menu]] for more details:
* 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) that includes here the [[Administrative Menu]]
* 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>>
Here are some examples of one person's [[FeedBlitz]] subscriptions. You can see the feed in this frame by clicking on the link, or in a separate tab or window by right-clicking on the link. You can subscribe either - or both - of two ways: via an email subscription - [img[http://www.feedblitz.com/images/email.gif]], or through an [[RSS feed]] - [img[http://www.feedblitz.com/images/rss.gif]]. 

<html><iframe width=100% height=800 frameborder=0 src="http://www.feedblitz.com/blogroll.asp?bb377e3567fa6ceef680a3466195a54a727679/html">
</iframe></html>
This set of 6 education resources (nicknamed the EEE Modules) is designed to help middle and high school age youth experience and interpret New York City's energy and environment from a sustainability perspective.

+++[Green Map Education Modules Web site]
{{iframe{''Note'': This is a "framed" page from the ''Green Apple Map'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://greenapplemap.org/page/modules}}}
<html><iframe
	src = "http://greenapplemap.org/page/modules"
	title = "Green Map Education Modules"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
===
{{iframe{''Note'': This is a "framed" page from the '' '' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.greenapplemap.org/gui/assets/pdf/gms_module_show9_07.pdf}}}
<html><iframe
	src = "http://www.greenapplemap.org/gui/assets/pdf/gms_module_show9_07.pdf"
	title = "Green Map Energy & Environment Exploration Modules"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
''Green Map System'' energizes a diverse global movement of local mapmaking teams charting their community's natural, cultural and green living resources with our award-winning universal icons and adaptable multi-lingual resources. Explore hundreds of perspective-changing Green Maps created by local Map teams in 50 countries. Take part and support Green Maps us as we chart a sustainable future!

+++[Green Map System Web site]
{{iframe{''Note'': This is a "framed" page from the ''Green Maps'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at  http://www.greenmap.org/}}}
<html><iframe
	src = "http://www.greenmap.org/"
	title = "Green Maps"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
===

+++[Green Map Education Modules]
<<tiddler "Green Map Education Modules">>
===

+++[Green Map Energy & Environment Exploration Modules - Overview]
<<tiddler "Green Map Energy & Environment Exploration Modules - Overview">>
===
The ''GreenThumb'' program of the [[New York City Department of Parks & Recreation]]
+++[GreenThumb Website]
{{iframe{''Note'': This is a "framed" page from the '' '' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.greenthumbnyc.org/
To close this "iframe" site, click on the link above.}}}
<html><iframe
	src = "http://www.greenthumbnyc.org/"
	title = "GreenThumb, New York City Department of Parks & Recreation"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>

===
{{iframe{''Note'': This is a "framed" page from the web site of [[Information Habitat: Where Information Lives]]. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://habitat.igc.org/journey/}}}
<html><iframe
	src = "http://habitat.igc.org/journey/"
	title = "Habitat II Online: Invitation to A Journey"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
This set of tiddlers allows you to edit and manage the title and sub-title of the page, and key information about the page;  Others are easily read by browsers in particular, information that it is valuable to make available to Internet search engines. The first of these two are visible to the viewer - in the browser window, and in the banner at the top of the page.the others are read by search engines and browsers, but are only visible to the reader if she or he looks at the source code af a web page
* [[Site Title|SiteTitle]] - appears at the head of the page banner, and the 
* [[Site Subtitle|SiteSubtitle]] - included in the browser bar and search results and at the bottom right of the site banner
* [[MarkupPreHead]] - this contents of this shadowed tiddler contains the concatenation of information - each of them representing a "meta tag". Ideally, this tiddler would use the syntax- using the syntax {{{<<tiddler "Site Keywords">>}}}, etc.
** [[Site Keywords]] - a list of comma-separated keywords, also a first read for search engines
** [[Site Description]] - a concise description of the site, stored in the HEAD of the HTML page, and is generally one of the first items to be read by intelligent search engines. As a rule, it should not be more that 256 characters, or about 40 words.
>>>Each of these tiddlers contains what is known as a "meta tag", e,.g.
<<<
>> {{{<meta name="description" content="Climate Change 2.0: A convenient TiddlyPerfect response to Truth in a rapidly-changing Creative Commons, Open Source Climate">}}} 
<<<
** [[Site Owner]] - this tiddler records the ownership of the page itself: not to be confused with the various copyrights associated with the page, included in the tiddler that follows
** [[Site Copyrights]] - this tiddler provides attribution to the rights holders 
** [[Site Url|SiteUrl]] - this tiddler conytains the Url of the site, e.g. http:///climate-change-two.net
** [[Site Splash Screen]] - this page contains the HTML tags for the Splash Screen that appears when the page is opened,
>> //Technical note//: In a TiddlyPerfect site, this tiddler would be automatically generated by the DataPerfect engine from its sub-tiddlers - using the syntax:
>>> {{{<<tiddler "Site Keywords">>}}},
>>> {{{<<tiddler "Site Decription">>}}}, etc.
>> under TiddlyWiki, this does not work, as the contents of the tiddler would not be readable by the browser, not having been translated - wikified - until the relevant javascript in TiddlyWiki had been loaded.
/*{{{*/
.header {
position: relative;
}
.header a:hover {
	background: transparent;
}
.headerShadow {
	position: relative;
	padding: 1.5em 0em 1em 1em;
	left: -1px;
	top: -1px;
}
.headerForeground {
position: absolute;
padding: 1.5em 0em 1em 1em;
left: 0px;
top: 0px;
}
.headerShadow .left,
.headerShadow .right {
    position: absolute;
    top:5px;
    left:5px;
}
.headerShadow .right {
    right: 0;
}
.headerForeground .left,
.headerForeground .right {
    display: none;
}
.header .siteTitle {
font-size: 2em;
position:absolute;
margin-left:80px;
margin-right:3px;
color: #007700;
}

.header .siteSubtitle {
font-size: 1.3em;
position:absolute;
margin-left:80px;
margin-right:3px;
color: #007700;
}

.headerShadow {
	color: [[ColorPalette::SecondaryLight]];
}

.headerShadow a {
	font-weight: normal;
	color: [[ColorPalette::Foreground]];
}

.headerForeground {
	color: [[ColorPalette::Background]];
}

.headerForeground a {
	font-weight: normal;
}
/*}}}*/
There are a number of simple ways you can create headings & sub-headings, create bulleted lists, numbered outlines or block quotes

|Feature |Type this|h
|[[Headings]] |{{{! !! !!!}}} etc. at beginning of line|
|[[Bullets]] |{{{* ** ***}}} etc. at beginning of line|
|[[Numbered Outline]] |{{{# ## ###}}} etc. at beginning of line|
|[[Block Quotes]] |{{{<<< ... <<< }}}|
|[[Multi-level Block Quote]] |{{{> >> >>>}}} etc. at beginning of line|

See also [[Formatting Tiddlers]]
/***
| Name:|HideWhenPlugin|
| Description:|Allows conditional inclusion/exclusion in templates|
| Version:|6.1.2|
| Date:|20-Oct-2006|
| Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|
| Author:|Simon Baird <simon.baird@gmail.com>|
For use in ViewTemplate and EditTemplate. Eg
{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}
{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}
***/
//{{{

window.removeElementWhen = function(test,place) {
	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);
	}},

	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);
	}}

});

//}}}

<<top>>
@@border:0;padding:0;margin:0;[[?|TWHelp-SearchResults]]@@
<<jump j '' top>>
<<fullscreen>>

<<fontSize>>



<<newTiddler ">><<renameButton n>>
<<newTiddler text:{{store.getTiddlerText("iframe template","")}}>><<renameButton i 'Create a new iframe template'>>
<<saveChanges>><<renameButton s 'Save TiddlyWiki'>>
/***
|Name|HoverMenuPlugin|
|Created by|[[Saq Imtiaz]]|
|Location|http://tw.lewcid.org/#HoverMenuPlugin|
|Version|1.11|
|Requires|~TW2.x|
|Description: |Provides a hovering menu on the edge of the screen for commonly used commands, that scrolls with the page. |
|Demo: |Observe the hovering menu on the right edge of the screen. |
|Installation: |Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW. |
To customize your HoverMenu, edit the HoverMenu shadow tiddler.

To customize whether the menu sticks to the right or left edge of the screen, and its start position, edit the HoverMenu configuration settings part of the code below. It's well documented, so don't be scared!

The menu has an id of hoverMenu, in case you want to style the buttons in it using css.

!Notes:
Since the default HoverMenu contains buttons for toggling the side bar and jumping to the top of the screen and to open tiddlers, the ToggleSideBarMacro, JumpMacro and the JumpToTopMacro are included in this tiddler, so you dont need to install them separately. Having them installed separately as well could lead to complications.

If you dont intend to use these three macros at all, feel free to remove those sections of code in this tiddler.

!To Do:
* rework code to allow multiple hovering menus in different positions, horizontal etc.
* incorporate code for keyboard shortcuts that correspond to the buttons in the hovermenu

!History:
*03-08-06, ver 1.1.2: compatibility fix with SelectThemePlugin
*03-08-06,  ver 1.11: fixed error with button tooltips
*27-07-06, ver 1.1 : added JumpMacro to hoverMenu
*23-07-06

!Code
***/

/***
start HoverMenu plugin code
***/
//{{{
config.hoverMenu={};
//}}}

/***
HoverMenu configuration settings
***/
//{{{
config.hoverMenu.settings={
               align: 'right',    //align menu to right or left side of screen, possible values are 'right' and 'left'               
               x: 18,              // horizontal distance of menu from side of screen, increase to your liking.
               y: 200            //vertical distance of menu from top of screen at start, increase or decrease to your liking
               };
//}}}

//{{{
//continue HoverMenu plugin code
config.hoverMenu.handler=function()
{              
               if (!document.getElementById("hoverMenu"))
               {
               var theMenu = createTiddlyElement(document.getElementById("contentWrapper"), "div","hoverMenu");
               theMenu.setAttribute("refresh","content");
               theMenu.setAttribute("tiddler","HoverMenu");
               var menuContent = store.getTiddlerText("HoverMenu");
               wikify(menuContent,theMenu);
              }

	       var Xloc = this.settings.x;
	       Yloc =this.settings.y;
	       var ns = (navigator.appName.indexOf("Netscape") != -1);
	       function SetMenu(id)
                        {
		        var GetElements=document.getElementById?document.getElementById(id):document.all?document.all[id]:document.layers[id];
		        if(document.layers)GetElements.style=GetElements;
		        GetElements.sP=function(x,y){this.style[config.hoverMenu.settings.align]=x +"px";this.style.top=y +"px";};
		        GetElements.x = Xloc;
		        GetElements.y = findScrollY();
		        GetElements.y += Yloc;
		        return GetElements;
	                }
               window.LoCate_XY=function()
                        {
		        var pY =  findScrollY();
                        ftlObj.y += (pY + Yloc - ftlObj.y)/15;
		        ftlObj.sP(ftlObj.x, ftlObj.y);
		        setTimeout("LoCate_XY()", 10);
	                }
               ftlObj = SetMenu("hoverMenu");
	       LoCate_XY();
};

window.old_lewcid_hovermenu_restart = restart;
restart = function()
{
               window.old_lewcid_hovermenu_restart();
               config.hoverMenu.handler();
};

setStylesheet(
"#hoverMenu .imgLink, #hoverMenu .imgLink:hover {border:none; padding:0px; float:right; margin-bottom:2px; margin-top:0px;}\n"+
"#hoverMenu  .button, #hoverMenu  .tiddlyLink {border:none; font-weight:bold; background:#18f; color:#FFF; padding:0 5px; float:right; margin-bottom:4px;}\n"+
"#hoverMenu .button:hover, #hoverMenu .tiddlyLink:hover {font-weight:bold; border:none; color:#fff; background:#000; padding:0 5px; float:right; margin-bottom:4px;}\n"+
"#hoverMenu .button {width:100%; text-align:center}"+
"#hoverMenu { position:absolute; width:7px;}\n"+
"\n","hoverMenuStyles");


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

               if (place.lastChild.tagName!="BR")
                     {
                      place.lastChild.firstChild.data = params[0];
                      if (params[1]) {place.lastChild.title = params[1];}
                     }
};

config.shadowTiddlers["HoverMenu"]="<<top>>\n<<toggleSideBar>><<renameButton '>' >>\n<<jump j '' top>>\n<<saveChanges>><<renameButton s 'Save TiddlyWiki'>>\n<<newTiddler>><<renameButton n>>\n";
//}}}
//end HoverMenu plugin code

//Start ToggleSideBarMacro code
//{{{
config.macros.toggleSideBar={};

config.macros.toggleSideBar.settings={
         styleHide :  "#sidebar { display: none;}\n"+"#contentWrapper #displayArea { margin-right: 1em;}\n"+"",
         styleShow : " ",
         arrow1: "«",
         arrow2: "»"
};

config.macros.toggleSideBar.handler=function (place,macroName,params,wikifier,paramString,tiddler)
{
          var tooltip= params[1]||'toggle sidebar';
          var mode = (params[2] && params[2]=="hide")? "hide":"show";
          var arrow = (mode == "hide")? this.settings.arrow1:this.settings.arrow2;
          var label= (params[0]&&params[0]!='.')?params[0]+" "+arrow:arrow;
          var theBtn = createTiddlyButton(place,label,tooltip,this.onToggleSideBar,"button HideSideBarButton");
          if (mode == "hide")
             { 
             (document.getElementById("sidebar")).setAttribute("toggle","hide");
              setStylesheet(this.settings.styleHide,"ToggleSideBarStyles");
             }
};

config.macros.toggleSideBar.onToggleSideBar = function(){
          var sidebar = document.getElementById("sidebar");
          var settings = config.macros.toggleSideBar.settings;
          if (sidebar.getAttribute("toggle")=='hide')
             {
              setStylesheet(settings.styleShow,"ToggleSideBarStyles");
              sidebar.setAttribute("toggle","show");
              this.firstChild.data= (this.firstChild.data).replace(settings.arrow1,settings.arrow2);
              }
          else
              {    
               setStylesheet(settings.styleHide,"ToggleSideBarStyles");
               sidebar.setAttribute("toggle","hide");
               this.firstChild.data= (this.firstChild.data).replace(settings.arrow2,settings.arrow1);
              }

     return false;
}

setStylesheet(".HideSideBarButton .button {font-weight:bold; padding: 0 5px;}\n","ToggleSideBarButtonStyles");
//}}}
//end ToggleSideBarMacro code

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

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

config.commands.top.handler = function(event,src,title)
{
               window.scrollTo(0,0);
}
//}}}
//end JumpToStartMacro code

//start JumpMacro code
//{{{
config.macros.jump= {};
config.macros.jump.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{
        var label = (params[0] && params[0]!=".")? params[0]: 'jump';
        var tooltip = (params[1] && params[1]!=".")? params[1]: 'jump to an open tiddler';
        var top = (params[2] && params[2]=='top') ? true: false;        

        var btn =createTiddlyButton(place,label,tooltip,this.onclick);
        if (top==true)
              btn.setAttribute("top","true")
}

config.macros.jump.onclick = function(e)
{
        if (!e) var e = window.event;
        var theTarget = resolveTarget(e);
        var top = theTarget.getAttribute("top");
	var popup = Popup.create(this);
	if(popup)
		{
                 if(top=="true")
                                {createTiddlyButton(createTiddlyElement(popup,"li"),'Top ↑','Top of TW',config.macros.jump.top);
                                 createTiddlyElement(popup,"hr");}
		
		story.forEachTiddler(function(title,element) {
			createTiddlyLink(createTiddlyElement(popup,"li"),title,true);
			});
                }
	Popup.show(popup,false);
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
	return false;
}

config.macros.jump.top = function()
{
       window.scrollTo(0,0);
}
//}}}
//end JumpMacro code

//utility functions
//{{{
Popup.show = function(unused,slowly)
{
	var curr = Popup.stack[Popup.stack.length-1];
	var rootLeft = findPosX(curr.root);
	var rootTop = findPosY(curr.root);
	var rootHeight = curr.root.offsetHeight;
	var popupLeft = rootLeft;
	var popupTop = rootTop + rootHeight;
	var popupWidth = curr.popup.offsetWidth;
	var winWidth = findWindowWidth();
        if (isChild(curr.root,'hoverMenu'))
              var x = config.hoverMenu.settings.x;
        else
              var x = 0;
	if(popupLeft + popupWidth+x > winWidth)
		popupLeft = winWidth - popupWidth -x;
        if (isChild(curr.root,'hoverMenu'))
  	        {curr.popup.style.right = x + "px";}
        else
                curr.popup.style.left = popupLeft + "px";
	curr.popup.style.top = popupTop + "px";
	curr.popup.style.display = "block";
	addClass(curr.root,"highlight");
	if(config.options.chkAnimate)
		anim.startAnimating(new Scroller(curr.popup,slowly));
	else
		window.scrollTo(0,ensureVisible(curr.popup));
}

window.isChild = function(e,parentId) {
        while (e != null) {
                var parent = document.getElementById(parentId);
                if (parent == e) return true;
                e = e.parentNode;
                }
        return false;
};
//}}}


/*{{{*/
#hoverMenu .imgLink, #hoverMenu .imgLink:hover {border:none; padding:0px; float:right; margin-bottom:2px; margin-top:0px;}
#hoverMenu .button, #hoverMenu .tiddlyLink {border:none; font-weight:bold; background:[[ColorPalette::SecondaryDark]]; color:[[ColorPalette::SecondaryLight]]; padding:0 5px; float:right; margin-bottom:3px;}
#hoverMenu .button:hover, #hoverMenu .tiddlyLink:hover {font-weight:bold; border:none; color:[[ColorPalette::SecondaryDark]]; background:[[ColorPalette::SecondaryMid]]; padding:0 5px; float:right; margin-bottom:4px;}
#hoverMenu .button {width:100%; text-align:center}#hoverMenu { position:absolute; width:7px;}
@media print #hoverMenu .imgLink, #hoverMenu .imgLink:hover, #hoverMenu .button, #hoverMenu .tiddlyLink, #hoverMenu .button:hover, #hoverMenu .tiddlyLink:hover, #hoverMenu .button {display: none;}

/*}}}*/
{{iframe{''Note'': This is a "framed" page from the '' '' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.howtocompost.org/}}}
<html><iframe
	src = "http://www.howtocompost.org/"
	title = "HowToCompost.org"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
{{{
[img[title|filename]]
[img[filename]]
[img[title|filename][link]]
[img[filename][link]]
}}}
Images can be included by their filename or full URL. It's good practice to include a title for the image to be shown as a tooltip, and when the image isn't available. An image can also link to another tiddler or or a URL, e.g.
[img[Twin Light & Colour Cube|http://www.climate-change-two.net/light-cube-0-075.png][Twin Light & Colour Cubes]]
{{{
[img[Twin Light & Colour Cube|http://www.climate-change-two.net/light-cube-0-075.png][Twin Light & Colour Cubes]]
}}}

You can also float images to the right or left: use {{{[<img[}}} for left-floating images and {{{[>img[}}} for right-floated images; you can use CSS to clear the floats.
[<img[Twin Light & Colour Cube - floating left|http://www.climate-change-two.net/light-cube-1-075.png][http://www.digital-bridges.net/]] [>img[Twin Light & Colour Cube - floating right|http://www.climate-change-two.net/light-cube-0-075.png][http://www.digital-bridges.net/]]
@@clear(left):clear(right):display(block):@@
{{{
[<img[Twin Light & Colour Cube - floated left|http://www.climate-change-two.net/light-cube-1-075.png][http://www.digital-bridges.net/]]
[>img[Twin Light & Colour Cube - floated right|http://www.climate-change-two.net/light-cube-0-075.png][http://www.digital-bridges.net/]]
@@clear(left):clear(right):display(block):@@
}}}
The ''Import Tiddlers'' tiddler uses the [[ImportTiddlers|ImportTiddlersPlugin]] plugin macro that allows you to import tiddlers from other TiddlyWiki pages, with the syntax {{{<<importTiddlers inline>>}}}.

<<importTiddlers inline>>
/***
|Name|ImportTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#ImportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ImportTiddlersPluginInfo|
|Version|4.3.1|
|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|config.macros.importTiddlers.handler|
|Description|interactive controls for import/export with filtering.|
This plugin lets you selectively combine tiddlers from any two TiddlyWiki documents.  An interactive control panel lets you pick a document to import from, and then select which tiddlers to import, with prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles.  Automatically add tags to imported tiddlers so they are easy to find later on.  Generates a detailed report of import 'history' in ImportedTiddlers.
!!!!!Documentation
<<<
see [[ImportTiddlersPluginInfo]] for details
<<<
!!!!!interactive control panel:
<<<
<<tiddler ImportTiddlers>>
{{clear{
^^(see [[ImportTiddlers]] shadow tiddler)^^}}}
<<<
!!!!!Installation Notes
<<<
* As of 6/27/2007, "patch" functions that provide backward-compatibility with TW2.1.x and earlier have been split into a separate [[ImportTiddlersPluginPatch]] tiddler to reduce installation overhead for //this// plugin.  You only need to install the additional plugin tiddler when using ImportTiddlersPlugin in documents using TW2.1.x or earlier.
* As of 3/21/2007, the interactive {{{<<importTiddlers>>}}} and non-interactive {{{<<loadTiddlers>>}}} macro definitions and related code have been split into separate [[ImportTiddlersPlugin]] and [[LoadTiddlersPlugin]] to permit selective installation of either the interactive and/or non-interactive macro functions.
* Quick Installation Tip: If you are using an unmodified version of TiddlyWiki (core release version <<version>>), you can get a new, empty TiddlyWiki with the Import Tiddlers plugin pre-installed (''[[download from here|TW+ImportExport.html]]''), and then simply import all your content from your old document into this new, empty document.
<<<
!!!!!Revisions
<<<
2008.06.29 [4.3.1] More layout/animation work for simpler sequential interaction.  Code reduction/cleanup
|please see [[ImportTiddlersPluginInfo]] for additional revision details|
2005.07.20 [1.0.0] Initial Release
<<<
!!!!!Code
***/
// // ''MACRO DEFINITION''
//{{{
// Version
version.extensions.importTiddlers = {major: 4, minor: 3, revision: 0, date: new Date(2008,6,28)};

// add ImportTiddlerPlugin controls to built-in backstage import task
if (config.tasks) { // TW2.2 or above
	config.tasks.importTask.content="Use ~TiddlyWiki built-in importer (below) or, ";
	config.tasks.importTask.content+="<<importTiddlers link 'Use ImportTiddlersPlugin control panel...'>>\n";
	config.tasks.importTask.content+="<<importTiddlers core>>"
}

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

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

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

merge(config.macros.importTiddlers,{
	label: "import tiddlers",
	prompt: "Copy tiddlers from another document",
	openMsg: "Opening %0",
	openErrMsg: "Could not open %0 - error=%1",
	readMsg: "Read %0 bytes from %1",
	foundMsg: "Found %0 tiddlers in %1",
	filterMsg: "Filtered %0 tiddlers matching '%1'",
	summaryMsg: "%0 tiddler%1 in the list",
	summaryFilteredMsg: "%0 of %1 tiddler%2 in the list",
	plural: "s are",
	single: " is",
	countMsg: "%0 tiddlers selected for import",
	processedMsg: "Processed %0 tiddlers",
	importedMsg: "Imported %0 of %1 tiddlers from %2",
	loadText: "please load a document...",
	closeText: "close",	// text for close button when file is loaded
	doneText: "done",	// text for close button when file is not loaded
	startText: "import",	// text for import button
	stopText: "stop",	// text for import button while importing
	local: true,		// default to import from local file
	src: "",		// path/filename or URL of document to import (retrieved from SiteUrl tiddler)
	proxy: "",		// URL for remote proxy script (retrieved from SiteProxy tiddler)
	useProxy: false,	// use specific proxy script in front of remote URL
	inbound: null,		// hash-indexed array of tiddlers from other document
	newTags: "",		// text of tags added to imported tiddlers
	addTags: true,		// add new tags to imported tiddlers
	listsize: 20,		// # of lines to show in imported tiddler list
	importTags: true,	// include tags from remote source document when importing a tiddler
	keepTags: true,		// retain existing tags when replacing a tiddler
	sync: false,		// add 'server' fields to imported tiddlers (for sync function)
	lastFilter: "",		// most recent filter (URL hash) applied
	lastAction: null,	// most recent collision button performed
	index: 0,		// current processing index in import list
	sort: ""		// sort order for imported tiddler listbox
});

if (config.macros.importTiddlers.coreHandler==undefined)
	config.macros.importTiddlers.coreHandler=config.macros.importTiddlers.handler; // save built-in handler
config.macros.importTiddlers.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	if (!params[0] || params[0].toLowerCase()=='core') { // default to built in
		if (config.macros.importTiddlers.coreHandler)
			config.macros.importTiddlers.coreHandler.apply(this,arguments);
		else 
			createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);
	} else if (params[0]=='link') { // show link to floating panel
		createTiddlyButton(place,params[1]||this.label,params[2]||this.prompt,onClickImportMenu);
	} else if (params[0]=='inline') {// show panel as INLINE tiddler content
		createImportPanel(place);
		document.getElementById("importPanel").style.position="static";
		document.getElementById("importPanel").style.display="block";
	} else if (config.macros.loadTiddlers)
		config.macros.loadTiddlers.handler(place,macroName,params); // any other params: loadtiddlers
}

// // ''INTERFACE DEFINITION''
// // Handle link click to create/show/hide control panel
//{{{
function onClickImportMenu(e)
{
	if (!e) var e = window.event;
	var parent=resolveTarget(e).parentNode;
	var panel = document.getElementById("importPanel");
	if (panel==undefined || panel.parentNode!=parent)
		panel=createImportPanel(parent);
	var isOpen = panel.style.display=="block";
	if(config.options.chkAnimate)
		anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));
	else
		panel.style.display = isOpen ? "none" : "block" ;
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
	return(false);
}
//}}}

// // Create control panel: HTML, CSS
//{{{
function createImportPanel(place) {
	var cmi=config.macros.importTiddlers; // abbreviation
	var panel=document.getElementById("importPanel");
	if (panel) { panel.parentNode.removeChild(panel); }
	setStylesheet(cmi.css,"importTiddlers");
	panel=createTiddlyElement(place,"span","importPanel",null,null)
	panel.innerHTML=cmi.html;
	refreshImportList();
	var siteURL=store.getTiddlerText("SiteUrl"); if (!siteURL) siteURL="";
	document.getElementById("importSourceURL").value=siteURL;
	cmi.src=siteURL;
	var siteProxy=store.getTiddlerText("SiteProxy"); if (!siteProxy) siteProxy="SiteProxy";
	document.getElementById("importSiteProxy").value=siteProxy;
	cmi.proxy=siteProxy;
	if (config.browser.isGecko) { // FF3 FIXUP
		document.getElementById("fileImportSource").style.display="none";
		document.getElementById("importLocalPanelFix").style.display="block";
	}
	return panel;
}
//}}}

// // CSS
//{{{
config.macros.importTiddlers.css = '\
#importPanel {\
	display: none; position:absolute; z-index:11; width:35em; right:105%; top:3em;\
	background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\
	border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\
	padding: 0.5em; margin:0em; -moz-border-radius:1em;\
}\
#importPanel a, #importPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\
#importPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }\
#importPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\
#importPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\
#importPanel select { width:100%;margin:0px;font-size:8pt;line-height:110%;}\
#importPanel input  { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\
#importPanel .box { border:1px solid #000; background-color:#eee; padding:3px 5px; margin-bottom:5px; -moz-border-radius:5px;}\
#importPanel .topline { border-top:1px solid #999; padding-top:2px; margin-top:2px; }\
#importPanel .rad { width:auto; }\
#importPanel .chk { width:auto; margin:1px;border:0; }\
#importPanel .btn { width:auto; }\
#importPanel .btn1 { width:98%; }\
#importPanel .btn2 { width:48%; }\
#importPanel .btn3 { width:32%; }\
#importPanel .btn4 { width:23%; }\
#importPanel .btn5 { width:19%; }\
#importPanel .importButton { padding: 0em; margin: 0px; font-size:8pt; }\
#importPanel .importListButton { padding:0em 0.25em 0em 0.25em; color: #000000; display:inline }\
#backstagePanel #importPanel { left:10%; right:auto; }\
';
//}}}

// // HTML 
//{{{
config.macros.importTiddlers.html = '\
<!-- source and report -->\
<table><tr><td align=left>\
	import from\
	<input type="radio" class="rad" name="importFrom" id="importFromFile" value="file" CHECKED\
		onclick="onClickImportButton(this,event)" title="show file controls"> local file\
	<input type="radio" class="rad" name="importFrom" id="importFromWeb"  value="http"\
		onclick="onClickImportButton(this,event)" title="show web controls"> web server\
</td><td align=right>\
	<input type=checkbox class="chk" id="chkImportReport" checked\
		onClick="config.options[\'chkImportReport\']=this.checked;"> create report\
</td></tr></table>\
\
<div class="box" id="importSourcePanel" style="margin:.5em">\
<div id="importLocalPanel" style="display:block;margin-bottom:2px;"><!-- import from local file  -->\
enter or browse for source path/filename<br>\
<input type="file" id="fileImportSource" size=57 style="width:100%"\
	onKeyUp="config.macros.importTiddlers.src=this.value"\
	onChange="config.macros.importTiddlers.src=this.value;document.getElementById(\'importLoad\').onclick()">\
<div id="importLocalPanelFix" style="display:none"><!-- FF3 FIXUP -->\
	<input type="text" id="fileImportSourceFix" style="width:90%"\
		title="Enter a path/file to import"\
		onKeyUp="config.macros.importTiddlers.src=this.value"\
		onChange="config.macros.importTiddlers.src=this.value; document.getElementById(\'importLoad\').onclick()">\
	<input type="button" id="fileImportSourceFixButton" style="width:7%" value="..."\
		title="Select a path/file to import"\
		onClick="var r=config.macros.importTiddlers.askForFilename(this); if (!r||!r.length) return;\
			document.getElementById(\'fileImportSourceFix\').value=r;\
			config.macros.importTiddlers.src=r;\
			document.getElementById(\'importLoad\').onclick()">\
</div><!--end FF3 FIXUP-->\
</div><!--end local-->\
<div id="importHTTPPanel" style="display:none;margin-bottom:2px;"><!-- import from http server -->\
<table><tr><td align=left>\
	enter a URL or <a href="javascript:;" id="importSelectFeed"\
		onclick="onClickImportButton(this,event)" title="select a pre-defined \'systemServer\' URL">\
		select a server</a><br>\
</td><td align=right>\
	<input type="checkbox" class="chk" id="importUsePassword"\
		onClick="config.macros.importTiddlers.usePassword=this.checked;\
			config.macros.importTiddlers.showPanel(\'importIDPWPanel\',this.checked,true);">password\
	<input type="checkbox" class="chk" id="importUseProxy"\
		onClick="config.macros.importTiddlers.useProxy=this.checked;\
			config.macros.importTiddlers.showPanel(\'importSiteProxy\',this.checked,true);">proxy\
</td></tr></table>\
<input type="text" id="importSiteProxy" style="display:none;margin-bottom:1px" onfocus="this.select()" value="SiteProxy"\
	onKeyUp="config.macros.importTiddlers.proxy=this.value"\
	onChange="config.macros.importTiddlers.proxy=this.value;">\
<input type="text" id="importSourceURL" onfocus="this.select()" value="SiteUrl"\
	onKeyUp="config.macros.importTiddlers.src=this.value"\
	onChange="config.macros.importTiddlers.src=this.value;">\
<div id="importIDPWPanel" style="text-align:center;margin-top:2px;display:none";>\
username: <input type=text id="txtImportID" style="width:25%" \
	onChange="config.options.txtRemoteUsername=this.value;">\
 password: <input type=password id="txtImportPW" style="width:25%" \
	onChange="config.options.txtRemotePassword=this.value;">\
</div><!--end idpw-->\
</div><!--end http-->\
</div><!--end source-->\
\
<div class="box" id="importSelectPanel" style="display:none;margin:.5em;">\
<table><tr><td align=left>\
select:\
<a href="javascript:;" id="importSelectAll"\
	onclick="onClickImportButton(this);return false;" title="SELECT all tiddlers">\
	all</a>\
&nbsp;<a href="javascript:;" id="importSelectNew"\
	onclick="onClickImportButton(this);return false;" title="SELECT tiddlers not already in destination document">\
	added</a>\
&nbsp;<a href="javascript:;" id="importSelectChanges"\
	onclick="onClickImportButton(this);return false;" title="SELECT tiddlers that have been updated in source document">\
	changes</a>\
&nbsp;<a href="javascript:;" id="importSelectDifferences"\
	onclick="onClickImportButton(this);return false;" title="SELECT tiddlers that have been added or are different from existing tiddlers">\
	differences</a>\
</td><td align=right>\
<a href="javascript:;" id="importListSmaller"\
	onclick="onClickImportButton(this);return false;" title="SHRINK list size">\
	&nbsp;&#150;&nbsp;</a>\
<a href="javascript:;" id="importListLarger"\
	onclick="onClickImportButton(this);return false;" title="GROW list size">\
	&nbsp;+&nbsp;</a>\
<a href="javascript:;" id="importListMaximize"\
	onclick="onClickImportButton(this);return false;" title="MAXIMIZE/RESTORE list size">\
	&nbsp;=&nbsp;</a>\
</td></tr></table>\
<select id="importList" size=8 multiple\
	onchange="setTimeout(\'refreshImportList(\'+this.selectedIndex+\')\',1)">\
	<!-- NOTE: delay refresh so list is updated AFTER onchange event is handled -->\
</select>\
<div style="text-align:center">\
	<a href="javascript:;"\
		title="click for help using filters..."\
		onclick="alert(\'A filter consists of one or more space-separated combinations of:\\n\\ntiddler titles\\ntag:[[tagvalue]]\\ntag:[[tag expression]] (requires MatchTagsPlugin)\\nstory:[[TiddlerName]]\\nsearch:[[searchtext]]\\n\\nUse a blank filter for all tiddlers.\')"\
	>filter</a>\
	<input type="text" id="importLastFilter" style="margin-bottom:1px; width:65%"\
		title="Enter a combination of one or more filters. Use a blank filter for all tiddlers."\
		onfocus="this.select()" value=""\
		onKeyUp="config.macros.importTiddlers.lastFilter=this.value"\
		onChange="config.macros.importTiddlers.lastFilter=this.value;">\
	<input type="button" id="importApplyFilter" style="width:20%" value="apply"\
		title="filter list of tiddlers to include only those that match certain criteria"\
		onclick="onClickImportButton(this)">\
	</div>\
</div><!--end select-->\
\
<div class="box" id="importOptionsPanel" style="text-align:center;margin:.5em;display:none;">\
	apply tags: <input type=checkbox class="chk" id="chkImportTags" checked\
		onClick="config.macros.importTiddlers.importTags=this.checked;">from source&nbsp;\
	<input type=checkbox class="chk" id="chkKeepTags" checked\
		onClick="config.macros.importTiddlers.keepTags=this.checked;">keep existing&nbsp;\
	<input type=checkbox class="chk" id="chkAddTags" \
		onClick="config.macros.importTiddlers.addTags=this.checked;\
			config.macros.importTiddlers.showPanel(\'txtNewTags\',this.checked,true);\
			if (this.checked) document.getElementById(\'txtNewTags\').focus();">add tags<br>\
	<input type=text id="txtNewTags" style="margin-top:4px;display:none;" size=15\ onfocus="this.select()" \
		title="enter tags to be added to imported tiddlers" \
		onKeyUp="config.macros.importTiddlers.newTags=this.value;\
		document.getElementById(\'chkAddTags\').checked=this.value.length>0;" autocomplete=off>\
	<nobr><input type=checkbox class="chk" id="chkSync" \
		onClick="config.macros.importTiddlers.sync=this.checked;">\
		link imported tiddlers to source document (for sync later)</nobr>\
</div><!--end options-->\
\
<div id="importButtonPanel" style="text-align:center">\
	<input type=button id="importLoad"	class="importButton btn3" value="open"\
		title="load listbox with tiddlers from source document"\
		onclick="onClickImportButton(this)">\
	<input type=button id="importOptions"	class="importButton btn3" value="options..."\
		title="set options for tags, sync, etc."\
		onclick="onClickImportButton(this)">\
	<input type=button id="importStart"	class="importButton btn3" value="import"\
		title="start/stop import of selected source tiddlers into current document"\
		onclick="onClickImportButton(this)">\
	<input type=button id="importClose"	class="importButton btn3" value="done"\
		title="clear listbox or hide control panel"\
		onclick="onClickImportButton(this)">\
</div>\
\
<div class="none" id="importCollisionPanel" style="display:none;margin:.5em 0 .5em .5em;">\
	<table><tr><td style="width:65%" align="left">\
		<table><tr><td align=left>\
			tiddler already exists:\
		</td><td align=right>\
			<input type=checkbox class="chk" id="importApplyToAll" \
			onclick="document.getElementById(\'importRename\').disabled=this.checked;"\
			checked>apply to all\
		</td></tr></table>\
		<input type=text id="importNewTitle" size=15 autocomplete=off">\
	</td><td style="width:34%" align="center">\
		<input type=button id="importMerge"\
			class="importButton" style="width:47%" value="merge"\
			title="append the incoming tiddler to the existing tiddler"\
			onclick="onClickImportButton(this)"><!--\
		--><input type=button id="importSkip"\
			class="importButton" style="width:47%" value="skip"\
			title="do not import this tiddler"\
			onclick="onClickImportButton(this)"><!--\
		--><br><input type=button id="importRename"\
			class="importButton" style="width:47%" value="rename"\
			title="rename the incoming tiddler"\
			onclick="onClickImportButton(this)"><!--\
		--><input type=button id="importReplace"\
			class="importButton" style="width:47%" value="replace"\
			title="discard the existing tiddler"\
			onclick="onClickImportButton(this)">\
	</td></tr></table>\
</div><!--end collision-->\
';
//}}}

// // Control interactions
//{{{
function onClickImportButton(which,event)
{
	var cmi=config.macros.importTiddlers; // abbreviation

	var list = document.getElementById('importList');
	if (!list) return;
	var thePanel = document.getElementById('importPanel');
	var theCollisionPanel = document.getElementById('importCollisionPanel');
	var theNewTitle = document.getElementById('importNewTitle');
	var count=0;
	switch (which.id)
		{
		case 'importFromFile':	// show local panel
		case 'importFromWeb':	// show HTTP panel
			cmi.local=(which.id=='importFromFile');
			cmi.showPanel('importLocalPanel',cmi.local);
			cmi.showPanel('importHTTPPanel',!cmi.local);
			break;
		case 'importOptions':	// show/hide options panel
			cmi.showPanel('importOptionsPanel',document.getElementById('importOptionsPanel').style.display=='none');
			break;
		case 'fileImportSource':
		case 'importLoad':		// load import source into hidden frame
			importReport();		// if an import was in progress, generate a report
			cmi.inbound=null;	// clear the imported tiddler buffer
			refreshImportList();	// reset/resize the listbox
			if (cmi.src=="") break;
			// Load document, read it's DOM and fill the list
			cmi.loadRemoteFile(cmi.src,cmi.filterTiddlerList);
			break;
		case 'importSelectFeed':	// select a pre-defined systemServer feed URL
			var p=Popup.create(which); if (!p) return;
			var tids=store.getTaggedTiddlers('systemServer');
			if (!tids.length)
				createTiddlyText(createTiddlyElement(p,'li'),'no pre-defined server feeds');
			for (var t=0; t<tids.length; t++) {
				var u=store.getTiddlerSlice(tids[t].title,"URL");
				var d=store.getTiddlerSlice(tids[t].title,"Description");
				if (!d||!d.length) d=store.getTiddlerSlice(tids[t].title,"description");
				if (!d||!d.length) d=u;
				createTiddlyButton(createTiddlyElement(p,'li'),tids[t].title,d,
					function(){
						var u=this.getAttribute('url');
						document.getElementById('importSourceURL').value=u;
						config.macros.importTiddlers.src=u;
						document.getElementById('importLoad').onclick();
					},
					null,null,null,{url:u});
			}
			Popup.show(p,false);
			event.cancelBubble = true;
			if (event.stopPropagation) event.stopPropagation();
			return(false);
			// create popup with feed list
			// onselect, insert feed URL into input field.
			break;
		case 'importSelectAll':		// select all tiddler list items (i.e., not headings)
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				if (list.options[t].value=="") continue;
				list.options[t].selected=true;
				count++;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			document.getElementById('importStart').disabled=!count;
			break;
		case 'importSelectNew':		// select tiddlers not in current document
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				list.options[t].selected=false;
				if (list.options[t].value=="") continue;
				list.options[t].selected=!store.tiddlerExists(list.options[t].value);
				count+=list.options[t].selected?1:0;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			document.getElementById('importStart').disabled=!count;
			break;
		case 'importSelectChanges':		// select tiddlers that are updated from existing tiddlers
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				list.options[t].selected=false;
				if (list.options[t].value==""||!store.tiddlerExists(list.options[t].value)) continue;
				for (var i=0; i<cmi.inbound.length; i++) // find matching inbound tiddler
					{ var inbound=cmi.inbound[i]; if (inbound.title==list.options[t].value) break; }
				list.options[t].selected=(inbound.modified-store.getTiddler(list.options[t].value).modified>0); // updated tiddler
				count+=list.options[t].selected?1:0;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			document.getElementById('importStart').disabled=!count;
			break;
		case 'importSelectDifferences':		// select tiddlers that are new or different from existing tiddlers
			importReport();		// if an import was in progress, generate a report
			for (var t=0,count=0; t < list.options.length; t++) {
				list.options[t].selected=false;
				if (list.options[t].value=="") continue;
				if (!store.tiddlerExists(list.options[t].value)) { list.options[t].selected=true; count++; continue; }
				for (var i=0; i<cmi.inbound.length; i++) // find matching inbound tiddler
					{ var inbound=cmi.inbound[i]; if (inbound.title==list.options[t].value) break; }
				list.options[t].selected=(inbound.modified-store.getTiddler(list.options[t].value).modified!=0); // changed tiddler
				count+=list.options[t].selected?1:0;
			}
			clearMessage(); displayMessage(cmi.countMsg.format([count]));
			document.getElementById('importStart').disabled=!count;
			break;
		case 'importApplyFilter':	// filter list to include only matching tiddlers
			importReport();		// if an import was in progress, generate a report
			clearMessage();
			if (!cmi.all) // no tiddlers loaded = "0 selected"
				{ displayMessage(cmi.countMsg.format([0])); return false; }
			var hash=document.getElementById('importLastFilter').value;
			cmi.inbound=cmi.filterByHash("#"+hash,cmi.all);
			refreshImportList();	// reset/resize the listbox
			break;
		case 'importStart':		// initiate the import processing
			importReport();		// if an import was in progress, generate a report
			document.getElementById('importApplyToAll').checked=false;
			document.getElementById('importStart').value=cmi.stopText;
			if (cmi.index>0) cmi.index=-1; // stop processing
			else cmi.index=importTiddlers(0); // or begin processing
			importStopped();
			break;
		case 'importClose':		// unload imported tiddlers or hide the import control panel
			// if imported tiddlers not loaded, close the import control panel
			if (!cmi.inbound) { thePanel.style.display='none'; break; }
			importReport();		// if an import was in progress, generate a report
			cmi.inbound=null;	// clear the imported tiddler buffer
			refreshImportList();	// reset/resize the listbox
			break;
		case 'importSkip':	// don't import the tiddler
			cmi.lastAction=which;
			var theItem	= list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported = cmi.inbound[j];
			theImported.status='skipped after asking';			// mark item as skipped
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index+1);	// resume with NEXT item
			importStopped();
			break;
		case 'importRename':		// change name of imported tiddler
			cmi.lastAction=which;
			var theItem		= list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported		= cmi.inbound[j];
			theImported.status	= 'renamed from '+theImported.title;	// mark item as renamed
			theImported.set(theNewTitle.value,null,null,null,null);		// change the tiddler title
			theItem.value		= theNewTitle.value;			// change the listbox item text
			theItem.text		= theNewTitle.value;			// change the listbox item text
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index);	// resume with THIS item
			importStopped();
			break;
		case 'importMerge':	// join existing and imported tiddler content
			cmi.lastAction=which;
			var theItem	= list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported	= cmi.inbound[j];
			var theExisting	= store.getTiddler(theItem.value);
			var theText	= theExisting.text+'\n----\n^^merged from: ';
			theText		+='[['+cmi.src+'#'+theItem.value+'|'+cmi.src+'#'+theItem.value+']]^^\n';
			theText		+='^^'+theImported.modified.toLocaleString()+' by '+theImported.modifier+'^^\n'+theImported.text;
			var theDate	= new Date();
			var theTags	= theExisting.getTags()+' '+theImported.getTags();
			theImported.set(null,theText,null,theDate,theTags);
			theImported.status   = 'merged with '+theExisting.title;	// mark item as merged
			theImported.status  += ' - '+theExisting.modified.formatString("MM/DD/YYYY 0hh:0mm:0ss");
			theImported.status  += ' by '+theExisting.modifier;
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index);	// resume with this item
			importStopped();
			break;
		case 'importReplace':		// substitute imported tiddler for existing tiddler
			cmi.lastAction=which;
			var theItem		  = list.options[cmi.index];
			for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==theItem.value) break;
			var theImported     = cmi.inbound[j];
			var theExisting	  = store.getTiddler(theItem.value);
			theImported.status  = 'replaces '+theExisting.title;		// mark item for replace
			theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY 0hh:0mm:0ss");
			theImported.status += ' by '+theExisting.modifier;
			theCollisionPanel.style.display='none';
			cmi.index=importTiddlers(cmi.index);	// resume with THIS item
			importStopped();
			break;
		case 'importListSmaller':		// decrease current listbox size, minimum=5
			if (list.options.length==1) break;
			list.size-=(list.size>5)?1:0;
			cmi.listsize=list.size;
			break;
		case 'importListLarger':		// increase current listbox size, maximum=number of items in list
			if (list.options.length==1) break;
			list.size+=(list.size<list.options.length)?1:0;
			cmi.listsize=list.size;
			break;
		case 'importListMaximize':	// toggle listbox size between current and maximum
			if (list.options.length==1) break;
			list.size=(list.size==list.options.length)?cmi.listsize:list.options.length;
			break;
		}
}
//}}}

// // toggle panel
//{{{
config.macros.importTiddlers.showPanel=function(place,show,skipAnim) {
	if (typeof place == "string") var place=document.getElementById(place);
	if (!place||!place.style) return;
	if(!skipAnim && anim && config.options.chkAnimate) anim.startAnimating(new Slider(place,show,false,"none"));
	else place.style.display=show?"block":"none";
}
//}}}

// // refresh listbox
//{{{
function refreshImportList(selectedIndex)
{
	var cmi=config.macros.importTiddlers; // abbreviation

	var list  = document.getElementById("importList");
	if (!list) return;
	// if nothing to show, reset list content and size
	if (!cmi.inbound) 
	{
		while (list.length > 0) { list.options[0] = null; }
		list.options[0]=new Option(cmi.loadText,"",false,false);
		list.size=cmi.listsize;

		// toggle buttons and panels
		document.getElementById('importLoad').disabled=false;
		document.getElementById('importLoad').style.display='inline';
		document.getElementById('importStart').disabled=true;
		document.getElementById('importOptions').disabled=true;
		document.getElementById('importOptions').style.display='none';
		document.getElementById('fileImportSource').disabled=false;
		document.getElementById('importFromFile').disabled=false;
		document.getElementById('importFromWeb').disabled=false;
		document.getElementById('importStart').value=cmi.startText;
		document.getElementById('importClose').value=cmi.doneText;
		document.getElementById('importSelectPanel').style.display='none';
		document.getElementById('importOptionsPanel').style.display='none';
		return;
	}
	// there are inbound tiddlers loaded...
	// toggle buttons and panels
	document.getElementById('importLoad').disabled=true;
	document.getElementById('importLoad').style.display='none';
	document.getElementById('importOptions').style.display='inline';
	document.getElementById('importOptions').disabled=false;
	document.getElementById('fileImportSource').disabled=true;
	document.getElementById('importFromFile').disabled=true;
	document.getElementById('importFromWeb').disabled=true;
	document.getElementById('importClose').value=cmi.closeText;
	if (document.getElementById('importSelectPanel').style.display=='none')
		cmi.showPanel('importSelectPanel',true);

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

	// get the alphasorted list of tiddlers
	var tiddlers=cmi.inbound;
	tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });
	// clear current list contents
	while (list.length > 0) { list.options[0] = null; }
	// add heading and control items to list
	var i=0;
	var indent=String.fromCharCode(160)+String.fromCharCode(160);
	if (cmi.all.length==tiddlers.length)
		var summary=cmi.summaryMsg.format([tiddlers.length,(tiddlers.length!=1)?cmi.plural:cmi.single]);
	else
		var summary=cmi.summaryFilteredMsg.format([tiddlers.length,cmi.all.length,(cmi.all.length!=1)?cmi.plural:cmi.single]);
	list.options[i++]=new Option(summary,"",false,false);
	list.options[i++]=new Option(((cmi.sort=="title"   )?">":indent)+' [by title]',"",false,false);
	list.options[i++]=new Option(((cmi.sort=="modified")?">":indent)+' [by date]',"",false,false);
	list.options[i++]=new Option(((cmi.sort=="tags")?">":indent)+' [by tags]',"",false,false);
	// output the tiddler list
	switch(cmi.sort) {
		case "title":
			for(var t = 0; t < tiddlers.length; t++)
				list.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);
			break;
		case "modified":
			// sort descending for newest date first
			tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });
			var lastSection = "";
			for(var t = 0; t < tiddlers.length; t++) {
				var tiddler = tiddlers[t];
				var theSection = tiddler.modified.toLocaleDateString();
				if (theSection != lastSection) {
					list.options[i++] = new Option(theSection,"",false,false);
					lastSection = theSection;
				}
				list.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);
			}
			break;
		case "tags":
			var theTitles = {}; // all tiddler titles, hash indexed by tag value
			var theTags = new Array();
			for(var t=0; t<tiddlers.length; t++) {
				var title=tiddlers[t].title;
				var tags=tiddlers[t].tags;
				if (!tags || !tags.length) {
					if (theTitles["untagged"]==undefined) { theTags.push("untagged"); theTitles["untagged"]=new Array(); }
					theTitles["untagged"].push(title);
				}
				else for(var s=0; s<tags.length; s++) {
					if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }
					theTitles[tags[s]].push(title);
				}
			}
			theTags.sort();
			for(var tagindex=0; tagindex<theTags.length; tagindex++) {
				var theTag=theTags[tagindex];
				list.options[i++]=new Option(theTag,"",false,false);
				for(var t=0; t<theTitles[theTag].length; t++)
					list.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);
			}
			break;
		}
	list.selectedIndex=selectedIndex;		  // select current control item
	if (list.size<cmi.listsize) list.size=cmi.listsize;
	if (list.size>list.options.length) list.size=list.options.length;
}

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

config.macros.importTiddlers.filterByHash=function(src,tiddlers)
{
	var hashpos=src.lastIndexOf("#"); if (hashpos==-1) return tiddlers;
	var hash=src.substr(hashpos+1); if (!hash.length) return tiddlers;
	var tids=[];
	var params=hash.parseParams("anon",null,true,false,false);
	for (var p=1; p<params.length; p++) {
		switch (params[p].name) {
			case "anon":
			case "open":
				tids.pushUnique(params[p].value);
				break;
			case "tag":
				if (store.getMatchingTiddlers) { // for boolean expressions - see MatchTagsPlugin
					var r=store.getMatchingTiddlers(params[p].value,null,tiddlers);
					for (var t=0; t<r.length; t++) tids.pushUnique(r[t].title);
				} else for (var t=0; t<tiddlers.length; t++)
					if (tiddlers[t].isTagged(params[p].value))
						tids.pushUnique(tiddlers[t].title);
				break;
			case "story":
				for (var t=0; t<tiddlers.length; t++)
					if (tiddlers[t].title==params[p].value) {
						tiddlers[t].changed();
						for (var s=0; s<tiddlers[t].links.length; s++)
							tids.pushUnique(tiddlers[t].links[s]);
						break;
					}
				break;
			case "search":
				for (var t=0; t<tiddlers.length; t++)
					if (tiddlers[t].text.indexOf(params[p].value)!=-1)
						tids.pushUnique(tiddlers[t].title);
				break;
		}
	}
	var matches=[];
	for (var t=0; t<tiddlers.length; t++)
		if (tids.contains(tiddlers[t].title))
			matches.push(tiddlers[t]);
	displayMessage(config.macros.importTiddlers.filterMsg.format([matches.length,hash]));
	config.macros.importTiddlers.lastFilter=hash;
	return matches;
}
//}}}

// // re-entrant processing for handling import with interactive collision prompting
//{{{
function importTiddlers(startIndex)
{
	var cmi=config.macros.importTiddlers; // abbreviation

	if (!cmi.inbound) return -1;

	var list = document.getElementById('importList');
	if (!list) return;
	var t;
	// if starting new import, reset import status flags
	if (startIndex==0)
		for (var t=0;t<cmi.inbound.length;t++)
			cmi.inbound[t].status="";
	for (var i=startIndex; i<list.options.length; i++)
		{
		// if list item is not selected or is a heading (i.e., has no value), skip it
		if ((!list.options[i].selected) || ((t=list.options[i].value)==""))
			continue;
		for (var j=0;j<cmi.inbound.length;j++)
			if (cmi.inbound[j].title==t) break;
		var inbound = cmi.inbound[j];
		var theExisting = store.getTiddler(inbound.title);
		// avoid redundant import for tiddlers that are listed multiple times (when 'by tags')
		if (inbound.status=="added")
			continue;
		// don't import the "ImportedTiddlers" history from the other document...
		if (inbound.title=='ImportedTiddlers')
			continue;
		// if tiddler exists and import not marked for replace or merge, stop importing
		if (theExisting && (inbound.status.substr(0,7)!="replace") && (inbound.status.substr(0,5)!="merge"))
			return i;
		// assemble tags (remote + existing + added)
		var newTags = "";
		if (cmi.importTags)
			newTags+=inbound.getTags()	// import remote tags
		if (cmi.keepTags && theExisting)
			newTags+=" "+theExisting.getTags(); // keep existing tags
		if (cmi.addTags && cmi.newTags.trim().length)
			newTags+=" "+cmi.newTags; // add new tags
		inbound.set(null,null,null,null,newTags.trim());
		// set the status to 'added' (if not already set by the 'ask the user' UI)
		inbound.status=(inbound.status=="")?'added':inbound.status;
		// set sync fields
		if (cmi.sync) {
			if (!inbound.fields) inbound.fields={}; // for TW2.1.x backward-compatibility
			inbound.fields["server.page.revision"]=inbound.modified.convertToYYYYMMDDHHMM();
			inbound.fields["server.type"]="file";
			inbound.fields["server.host"]=(cmi.local?"file://":"")+cmi.src;
		}
		// do the import!
		store.suspendNotifications();
		store.saveTiddler(inbound.title, inbound.title, inbound.text, inbound.modifier, inbound.modified, inbound.tags, inbound.fields, true, inbound.created);
                store.fetchTiddler(inbound.title).created = inbound.created; // force creation date to imported value (needed for TW2.1.x and earlier)
		store.resumeNotifications();
		}
	return(-1);	// signals that we really finished the entire list
}
//}}}

//{{{
function importStopped()
{
	var cmi=config.macros.importTiddlers; // abbreviation
	var list = document.getElementById('importList');
	var theNewTitle = document.getElementById('importNewTitle');
	if (!list) return;
	if (cmi.index==-1){ 
		document.getElementById('importStart').value=cmi.startText;
		importReport();		// import finished... generate the report
	} else {
		// import collision...
		// show the collision panel and set the title edit field
		document.getElementById('importStart').value=cmi.stopText;
		cmi.showPanel('importCollisionPanel',true);
		theNewTitle.value=list.options[cmi.index].value;
		if (document.getElementById('importApplyToAll').checked
			&& cmi.lastAction
			&& cmi.lastAction.id!="importRename") {
			onClickImportButton(cmi.lastAction);
		}
	}
}
//}}}

// // ''REPORT GENERATOR''
//{{{
function importReport()
{
	var cmi=config.macros.importTiddlers; // abbreviation
	if (!cmi.inbound) return;

	// if import was not completed, the collision panel will still be open... close it now.
	var panel=document.getElementById('importCollisionPanel'); if (panel) panel.style.display='none';

	// get the alphasorted list of tiddlers
	var tiddlers = cmi.inbound;
	// gather the statistics
	var count=0; var total=0;
	for (var t=0; t<tiddlers.length; t++) {
		if (!tiddlers[t].status || !tiddlers[t].status.trim().length) continue;
		if (tiddlers[t].status.substr(0,7)!="skipped") count++;
		total++;
	}
	// generate a report
	if (total) displayMessage(cmi.processedMsg.format([total]));
	if (count && config.options.chkImportReport) {
		// get/create the report tiddler
		var theReport = store.getTiddler('ImportedTiddlers');
		if (!theReport) { theReport= new Tiddler(); theReport.title = 'ImportedTiddlers'; theReport.text  = ""; }
		// format the report content
		var now = new Date();
		var newText = "On "+now.toLocaleString()+", "+config.options.txtUserName
		newText +=" imported "+count+" tiddler"+(count==1?"":"s")+" from\n[["+cmi.src+"|"+cmi.src+"]]:\n";
		if (cmi.addTags && cmi.newTags.trim().length)
			newText += "imported tiddlers were tagged with: \""+cmi.newTags+"\"\n";
		newText += "<<<\n";
		for (var t=0; t<tiddlers.length; t++) if (tiddlers[t].status) newText += "#[["+tiddlers[t].title+"]] - "+tiddlers[t].status+"\n";
		newText += "<<<\n";
		// update the ImportedTiddlers content and show the tiddler
		theReport.text	 = newText+((theReport.text!="")?'\n----\n':"")+theReport.text;
		theReport.modifier = config.options.txtUserName;
		theReport.modified = new Date();
                store.saveTiddler(theReport.title, theReport.title, theReport.text, theReport.modifier, theReport.modified, theReport.tags, theReport.fields);
		story.displayTiddler(null,theReport.title,1,null,null,false);
		story.refreshTiddler(theReport.title,1,true);
	}

	// reset status flags
	for (var t=0; t<cmi.inbound.length; t++) cmi.inbound[t].status="";

	// mark document as dirty and let display update as needed
	if (count) { store.setDirty(true); store.notifyAll(); }

	// always show final message when tiddlers were actually loaded
	if (count) displayMessage(cmi.importedMsg.format([count,tiddlers.length,cmi.src.replace(/%20/g," ")]));
}
//}}}

// // File and XMLHttpRequest I/O
//{{{
config.macros.importTiddlers.askForFilename=function(here) {
	var msg=here.title; // use tooltip as dialog box message
	var path=getLocalPath(document.location.href);
	var slashpos=path.lastIndexOf("/"); if (slashpos==-1) slashpos=path.lastIndexOf("\\"); 
	if (slashpos!=-1) path = path.substr(0,slashpos+1); // remove filename from path, leave the trailing slash
	var file="";
	var result="";
	if(window.Components) { // moz
		try {
			netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
			var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
			var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
			picker.init(window, msg, nsIFilePicker.modeOpen);
			var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
			thispath.initWithPath(path);
			picker.displayDirectory=thispath;
			picker.defaultExtension='html';
			picker.defaultString=file;
			picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
			if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.persistentDescriptor;
		}
		catch(e) { alert('error during local file access: '+e.toString()) }
	}
	else { // IE
		try { // XPSP2 IE only
			var s = new ActiveXObject('UserAccounts.CommonDialog');
			s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
			s.FilterIndex=3; // default to HTML files;
			s.InitialDir=path;
			s.FileName=file;
			if (s.showOpen()) var result=s.FileName;
		}
		catch(e) {  // fallback
			var result=prompt(msg,path+file);
		}
	}
	return result;
}

config.macros.importTiddlers.fileExists=function(theFile) {
	var found=false;
	if(window.Components) {
		try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
		catch(e) { return false; } // security access denied
		var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
		try { file.initWithPath(theFile); }
		catch(e) { return false; } // invalid directory
		found = file.exists();
	}
	else { // use ActiveX FSO object for MSIE 
		var fso = new ActiveXObject("Scripting.FileSystemObject");
		found = fso.FileExists(theFile)
	}
	return found;
}

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

config.macros.importTiddlers.readTiddlersFromHTML=function(html)
{
	var remoteStore=new TiddlyWiki();
	remoteStore.importTiddlyWiki(html);
	return remoteStore.getTiddlers("title");	
}
//}}}
This tiddler incorporates the ImportedTiddlers tiddler that is automatically created by the ImportTiddlersPlugin macro, and that provides a cumulativee log of tiddlers imported from other TiddyWiki pages.

<<tiddler ImportedTiddlers>>'
On Thursday, August 14, 2008 07:09:55 PM, Webster imported 1 tiddler from
[[http://www.tiddlytools.com/|http://www.tiddlytools.com/]]:
<<<
#[[StyleSheetShortcuts]] - added
<<<

----
On Saturday, July 26, 2008 12:38:15 PM, Webster imported 1 tiddler from
[[http://mptw.tiddlyspot.com|http://mptw.tiddlyspot.com]]:
<<<
#[[NewMeansNewPlugin]] - added
<<<

----
On Saturday, July 26, 2008 12:37:46 PM, Webster imported 1 tiddler from
[[http://mptw.tiddlyspot.com|http://mptw.tiddlyspot.com]]:
<<<
#[[TagglyTaggingPlugin]] - replaces TagglyTaggingPlugin - 2/11/2007 19:17:00 by Information Habitat
<<<

----
On Wednesday, July 16, 2008 11:47:25 PM, Webster imported 3 tiddlers from
[[file:///J:/joefriendly.com/index.htm|file:///J:/joefriendly.com/index.htm]]:
<<<
#[[DataTiddlerPlugin]] - added
#[[FormTiddlerMacro]] - added
#[[FormTiddlerPlugin]] - added
#[[ImportTiddlersPlugin]] - skipped after asking
<<<

----
On Wednesday, July 16, 2008 04:28:34 PM, Webster imported 1 tiddler from
[[http://www.TiddlyTools.com/|http://www.TiddlyTools.com/]]:
<<<
#[[ImportTiddlersPlugin 4.5.3]] - renamed from ImportTiddlersPlugin
<<<

----
On Saturday, June 28, 2008 12:57:06 PM, Webster imported 1 tiddler from
[[http://tiddlywiki.abego-software.de/|http://tiddlywiki.abego-software.de/]]:
<<<
#[[ForEachTiddlerExamples]] - added
<<<

----
On Saturday, June 28, 2008 12:56:14 PM, Webster imported 2 tiddlers from
[[http://tiddlywiki.abego-software.de/|http://tiddlywiki.abego-software.de/]]:
<<<
#[[ForEachTiddlerMacro]] - added
#[[ForEachTiddlerPlugin]] - added
<<<

----
On Tuesday, June 17, 2008 10:24:28 AM, Webster imported 1 tiddler from
[[J:\joefriendly.com\admin\index.htm|J:\joefriendly.com\admin\index.htm]]:
<<<
#[[Config Tweaks]] - replaces Config Tweaks - 1/30/2008 20:18:00 by Webster
<<<

----
On Tuesday, June 17, 2008 10:00:56 AM, Webster imported 1 tiddler from
[[T:\ngo-framework.net\index.htm|T:\ngo-framework.net\index.htm]]:
<<<
#[[Config Tweaks]] - added
<<<

----
On Tuesday, June 10, 2008 01:05:07 PM, Webster imported 1 tiddler from
[[T:\ngo-framework.net\index.htm|T:\ngo-framework.net\index.htm]]:
<<<
#[[TwHelpSearchPlugin]] - replaces TwHelpSearchPlugin - 10/31/2007 14:31:00 by Webster
<<<

----
On Sunday, June 08, 2008 02:07:25 PM, Webster imported 1 tiddler from
[[T:\ngo-framework.net\index.htm|T:\ngo-framework.net\index.htm]]:
<<<
#[[iframe template]] - replaces iframe template - 9/22/2007 15:24:00 by Webster
<<<

----
On Sunday, June 08, 2008 02:02:26 PM, Webster imported 1 tiddler from
[[T:\ngo-framework.net\index.htm|T:\ngo-framework.net\index.htm]]:
<<<
#[[Search Box]] - added
<<<

----
On Sunday, June 08, 2008 02:01:14 PM, Webster imported 1 tiddler from
[[T:\ngo-framework.net\index.htm|T:\ngo-framework.net\index.htm]]:
<<<
#[[Menu Widgets]] - added
<<<

----
On Sunday, June 01, 2008 06:55:05 PM, Webster imported 2 tiddlers from
[[T:\ngo-framework.net\index.htm|T:\ngo-framework.net\index.htm]]:
<<<
#[[DeprecatedFunctionsPlugin]] - added
#[[NewDocumentPlugin]] - added
<<<

----
On Sunday, June 01, 2008 06:51:48 PM, Webster imported 5 tiddlers from
[[T:\ngo-framework.net\index.htm|T:\ngo-framework.net\index.htm]]:
<<<
#[[Administrative Menu]] - replaces Administrative Menu - 6/1/2008 18:44:37 by Webster
#[[Custom Main Menu]] - added
#[[HoverMenu]] - replaces HoverMenu - 4/19/2008 15:56:00 by Webster
#[[Menus]] - replaces Menus - 9/21/2007 13:46:00 by Webster
#[[Setup Menu]] - replaces Setup Menu - 11/11/2007 09:04:00 by Webster
<<<

----
On Sunday, June 01, 2008 05:33:46 PM, Webster imported 1 tiddler from
[[T:\ngo-framework.net\index.htm|T:\ngo-framework.net\index.htm]]:
<<<
#[[ColorPalette]] - replaces ColorPalette - 2/26/2007 18:35:00 by Information Habitat
<<<

----
On Sunday, June 01, 2008 05:33:24 PM, Webster imported 1 tiddler from
[[T:\ngo-framework.net\index.htm|T:\ngo-framework.net\index.htm]]:
<<<
#[[HoverMenu]] - replaces HoverMenu - 9/19/2007 10:10:00 by Webster
<<<

----
On Sunday, June 01, 2008 05:29:22 PM, Webster imported 11 tiddlers from
[[T:\ngo-framework.net\index.htm|T:\ngo-framework.net\index.htm]]:
<<<
#[[CommonStyles]] - replaces CommonStyles - 4/2/2008 18:26:00 by Webster
#[[CustomStyleSheet]] - replaces CustomStyleSheet - 2/25/2008 23:01:00 by Webster
#[[CustomStyleSheetColors]] - replaces CustomStyleSheetColors - 2/25/2008 17:16:00 by Webster
#[[HeaderStyles]] - replaces HeaderStyles - 3/15/2008 17:59:00 by Webster
#[[HoverMenuStyles]] - replaces HoverMenuStyles - 2/26/2008 10:46:00 by Webster
#[[MainMenuStyles]] - replaces MainMenuStyles - 2/17/2008 07:03:00 by Webster
#[[PrintStyles]] - added
#[[SidebarStyles]] - replaces SidebarStyles - 3/11/2007 18:21:00 by Information Habitat
#[[StyleSheet]] - replaces StyleSheet - 12/30/2007 22:00:00 by Webster
#[[StyleSheetColors]] - replaces StyleSheetColors - 2/25/2008 17:17:00 by Webster
#[[TagglyTaggingStyles]] - replaces TagglyTaggingStyles - 9/22/2007 11:37:00 by Webster
<<<

----
On Sunday, April 13, 2008 01:31:01 PM, Webster imported 1 tiddler from
[[T:\ngo-framework.net\INDEX.HTM|T:\ngo-framework.net\INDEX.HTM]]:
<<<
#[[StyleSheetColors]] - replaces StyleSheetColors - 9/22/2007 11:09:00 by Webster
<<<

----
On Sunday, April 13, 2008 01:30:31 PM, Webster imported 1 tiddler from
[[T:\ngo-framework.net\INDEX.HTM|T:\ngo-framework.net\INDEX.HTM]]:
<<<
#[[ModifiedStyleSheetColors]] - added
<<<

----
On Sunday, April 13, 2008 01:29:43 PM, Webster imported 2 tiddlers from
[[T:\ngo-framework.net\INDEX.HTM|T:\ngo-framework.net\INDEX.HTM]]:
<<<
#[[CustomStyleSheetColors]] - added
#[[MainMenuStyles]] - replaces MainMenuStyles - 9/22/2007 11:04:00 by Webster
<<<

----
On Sunday, April 13, 2008 01:28:40 PM, Webster imported 2 tiddlers from
[[T:\ngo-framework.net\INDEX.HTM|T:\ngo-framework.net\INDEX.HTM]]:
<<<
#[[CommonStyles]] - added
#[[CustomStyleSheet]] - added
<<<

----
On Sunday, April 13, 2008 01:28:04 PM, Webster imported 2 tiddlers from
[[T:\ngo-framework.net\INDEX.HTM|T:\ngo-framework.net\INDEX.HTM]]:
<<<
#[[HeaderStyles]] - added
#[[HoverMenuStyles]] - added
<<<

----
On Sunday, April 13, 2008 01:12:38 PM, Webster imported 1 tiddler from
[[http://www.climate-chnage-two.net/garden/|http://www.climate-chnage-two.net/garden/]]:
<<<
#[[ColorPalette]] - replaces ColorPalette - 2/26/2007 18:35:00 by Information Habitat
<<<

----
On Sunday, April 13, 2008 01:09:48 PM, Webster imported 1 tiddler from
[[http://www.climate-chnage-two.net/garden/|http://www.climate-chnage-two.net/garden/]]:
<<<
#[[ImportTiddlersPlugin]] - replaces ImportTiddlersPlugin - 9/23/2007 13:30:00 by Webster
<<<

----
On Sunday, December 30, 2007 10:04:30 PM, Webster imported 1 tiddler from
[[T:\climate-change-two.net\index.htm|T:\climate-change-two.net\index.htm]]:
<<<
#[[TWHelpSearchDoc]] - skipped after asking
#[[TwHelpSearchPlugin]] - added
<<<

----
On Monday, November 12, 2007 9:03:30 PM, Webster imported 3 tiddlers from
[[F:\climate-change-two.net\index.htm|F:\climate-change-two.net\index.htm]]:
<<<
#[[Education, Youth & Technology for Sustainable Development]] - added
#[[FeedBlitz]] - skipped after asking
#[[Grandpa Ruh's FeedBlitz subscriptions]] - added
#[[RSS feeds]] - replaces RSS feeds - 9/21/2007 14:19:00 by Webster
<<<

----
On Monday, November 12, 2007 7:59:41 PM, Webster imported 2 tiddlers from
[[F:\climate-change-two.net\index.htm|F:\climate-change-two.net\index.htm]]:
<<<
#[[Economics of Climate Change: The Stern Review]] - added
#[[United Nations Decade of Education for Sustainable Development]] - added
<<<

----
On Monday, November 12, 2007 7:58:17 PM, Webster imported 1 tiddler from
[[F:\climate-change-two.net\index.htm|F:\climate-change-two.net\index.htm]]:
<<<
#[[Key Documents on Education for Sustainable Development]] - added
<<<
!!Expected Climatic Trigger for the Transition
> Increasing the average temperature tends to shift the distribution of daily conditions, and this generally leads to a greatly increased likelihood of exceeding a health-threshold temperature for a day or sequence of days. Because relative humidity tends to remain about the same, increased temperature leads to a higher absolute humidity and therefore a much higher heat (or discomfort) index. The 2003 European heat wave provided an early indication of the type of event that could become more prevalent.
!!Expected Environmental Consequences
> Ecosystems are generally most affected by extreme conditions, so an increased frequency of occurrence of high temperatures can create levels of stress that weaken and kill off susceptible flora and fauna. In the oceans, excessively high ocean-water temperatures contribute to coral bleaching, and geological and biogeochemical conditions are such that coral cannot simply relocate to cooler, higher-latitude waters.
!!Likely Societal Significance
> As the average temperature rises, temperature and humidity thresholds of importance to human health will be more and more frequently exceeded, requiring much more aggressive measures to limit illness and death, and more frequent restriction of outdoor activities. Globally, warmer temperatures tend to increase the survival rates of disease vectors, exacerbating the occurrence of vector-borne disease unless more aggressive preventative measures are taken.
''Information ecology'' is a holistic life science for a knowledge-based universe - based on the concept of information and information systems as evolving life forms whose behaviour can best be understood by considering the nature and dynamics of information ecosystems in conjunction with an appreciation of the fundamental nature and properties of information and of a knowledge-based universe and the premise of the existence of 'one light in all of creation'.
!!Properties of information
Information has:
* has zero mass
* has zero physical size 
* takes virtually zero time to travel
* enables common access to properties of the whole
!!Principles of information
* value is enhanced by intelligent organization
* flow is enhanced by intelligent networks
* management is enhanced by intelligent protocols
* understanding is enhanced by intelligent practice 
From the perspective of economics, the virtually zero marginal cost of information has profound significance, and, in conjunction with the progressive evolution of information and communications technology has given rise to the accelerating development and adoption of open source software, the emergence of a rapidly-growing information commons in the broader context of a cascading global transition to a knowledge-based universe. 

This transition represents no less than an inexorable and progressive transition to a profound new, stable ''Nash equilibrium'' for economic behaviour in which the intelligent adoption of information systems and strategies is the critical factor, accompanied by the emergence of a radically new form of ''free market economics'' for information in which the free exchange of information is free of monetary constraints.

The concept of "information ecology" has been gaining increasing recognition and usage - e.g. see <<wikipedia "Information ecology">> in Wikipedia. The framework for information ecology that underlies TiddlyPerfect has been progressively developed by [[Information Habitat: Where Information Lives]], an Non-Governmental Organization in Special Consultative Status with the UN Economic and Social Council, in the course of Information Habitat's support and promotion of broad-based participation and access to and exchnage of information in the series of UN global conferences beginning with preparations for the 1992 Earth Summit, held in Rio de Janeiro, Brazil. through the 1996 Habitat II conference in Istanbul and in the follow-up to these and related conferences.
> From [[Towards Earth Summit II: Recommendations for Actions and Commitments at Earth Summit II|http://habitat.igc.org/csdngo/1997/es2ngo1.html]], June 1997
!!!Information Ecology
''We call for'': A major commitment to analyze and explore the opportunities and implications of the rapidly evolving "information and communication ecosystem" and to identify critical information ecology issues relating to sustainability. We call for the design and establishment of, and support for participatory enabling environments - from community and interlocal networks to national and global frameworks - within which information and communications technologies, systems and processes - including traditional and non-electronic forms - can facilitate a transition to more open, equitable and sustainable communities and society.

''Implementation'': The Commission on Sustainable Development - CSD - should convene an Ad Hoc, Open-Ended Working Group on Information Ecology - with participation of non-governmental organizations as well as of member states and from within United Nations agencies, programmes and centres. The mandate of the Working Group should include the following:
* to conduct a systematic review of the opportunities and implications for sustainability and equity of an ecologically sound approach to information flow;
* to identify and address critical sustainability issues from a whole systems, full life-cycle costs, perspective regarding the transition from a predominantly material to an increasingly digital economy - including resource and capital cost implications.
* to examine the development of effective mechanisms to support access to and transfer of ecologically and socially sound technologies;
* to identify and address actual and prospective, direct and indirect economic, cultural, social and environmental impacts of the introduction of information technology;
* to consider how information and communication technology can be used to strengthen effective community-based, participatory planning, decision-making and implementation processes relating to sustainability and equitable development, focussing on the use of information exchange mechanisms that are accessible at a grassroots level;
* to examine the destabilizing potentials of modern information, communication and automation technologies, and to develop provisions to prevent the undermining of traditional and sustainable cultures and practices, or the jeopardizing of human, economic, social cultural and political rights;
* to undertake an examination of the evolving information ecosystem in terms of equitable access to information in the North and the South, addressing intellectual property rights, trends towards concentration of ownership and control in information and communication technology and electronic media, access to information and communication infrastructure, and democratic, participatory processes, rights and freedoms;
* to review, in the light of the rapidly increasing proportion of capital formation that is in the realm of intellectual property, and the need for development strategies that enable access to information and communication infrastructure as a critical means of enabling access to resources;
* to set in process the design of a comprehensive sustainability information and communication environment. This should be designed to facilitate partnership-based integrative coordination of monitoring and implementation of the agreements of the "Rio cluster" series of global conferences;
''Rationale'': The evolution of information and communication technology - the progressive emergence of an "information age" - has been dramatic in the five years since the first Earth Summit. The integrative power of information technology is increasingly clear, as is its progressively growing capacity to model and map the properties of whole systems, however, the pursuit of a specific trend in technology can become unsustainable. Meanwhile, the increasing scale and role of information and communication technology in the global economy and the increasing impact of automation, the rapid growth in both access and inequities in access confirm that the implications of information technology extend far beyond the role envisioned in [[Chapter 40 of Agenda 21 |http://www.un-documents.net/a21-40.htm]] as a support system for decision-makers and require comprehensive re-assessment by the CSD.
''Information Habitat: Where Information Lives'' - an ''NGO in Consultative Status with the United Nations Economic and Social Council'' - was founded in May 1990 in the context of preparations for the 1992 Earth Summit, held in Rio de Janeiro, Brazil. Information Habitat has focused on the transformative opportunities of information and communications technology (ICT) in support of broad-based participation of NGOs in the work of the United Nations, and the critical role of ICT in offering a path towards sustainable development.

+++[Information Habitat web site]
{{iframe{''Note'': This is a "framed" page of the web site of [[Information Habitat: Where Information Lives]]. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://habitat.igc.org/}}}
<html><iframe
	src = "http://habitat.igc.org/"
	title = "Information Habitat: Where Information Lives"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
===
The principal focus of the ''Information and Communications ~Sub-Committee'' of the [[NGO Committee on Education]] has been the development and implementation of a [[Creative Commons]], [[Free and Open Source]] collaborative learning framework designed to mobilize the powers and freedoms of an evolving knowledge-based universe
!! Membership
''Chair''
* [[Robert Pollard]], [[Information Habitat: Where Information Lives]]
''Members''
* [[Daphne Cohen]], [[International Humanist and Ethical Union]]
* [[Joe Friendly]], [[Truth for a Change]]
* [[Avy Gonzales]], [[Tutor.com]]
* [[Judith Lantigua]], [[Information Habitat: Where Information Lives]]
* [[Kathleen Quain]], [[Foundation for Health and the Environment]]
* [[Charles Vasquez]], [[Pace University]]
''Ex-officio Members''
* [[Faye Feller|Faye C. Feller]], [[National Association of Women for the Arts]]
* [[Diane Paravazian]], [[World Association of Girl Guides & Girl Scouts]]
''Strategic Partners''
* [[Dolly Nielsen]], [[Metro City Media ]]
* [[Marc Wishengrad]], [[Healing World Foundation]]
''Senior Advisors''
* [[Barbara Ann O'Leary]], [[Authenticity]]
* [[Anthony Judge]], [[Union of International Associations]] (retired)
!! Web sites
* [[NGO Committee on Education]] - [[www.ngo-education.net/|http://www.ngo-education.net/]]
** [[Education, Youth & Technology for Sustainable Development]] - [[www.ngo-education.net/workshop/|http://www.ngo-education.net/workshop/]]
* [[UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] - [[www.un-documents.net/|http://www.un-documents.net/]]
** [[Our Common Future]] - [[www.un-documents.net/wced-ocf.htm|http://www.un-documents.net/wced-ocf.htm]]
* [[Climate Change 2.0]] - [[www.climate-change-two.net/|http://www.climate-change-two.net/]]
** [[The Wealth of Networks: How Social Production Transforms Markets and Freedom]] - [[www.climate-change-two.net/wealth-of-networks/|http://www.climate-change-two.net/wealth-of-networks/]]
** [[Economics of Climate Change: The Stern Review]] - [[www.climate-change-two.net/stern-review/|http://www.climate-changetwo.net/stern-review/]]
** [[Rescuing a Planet Under Stress and a Civilization in Trouble: Plan B 2.1 (beta)]] - [[www.climate-change-two.net/plan-b/|http://www.climate-change-two.net/plan-b/]]
** [[Climate Change Summer]] - [[www.climate-change-summer.net/|http://www.climate-change-summer.net/]]
** [[Peace Caucus: The Wild Cards in Climate Change]] - [[www.peacecaucus.net/|http://www.peacecaucus.net/]]
* [[TiddlyWikiPerfect: An emerging hybrid information species]] - [[www.tiddlywikiperfect.net/|http://www.tiddlywikiperfect.net/]]
* [[Gandhi-King Season for Nonviolence]] - [[www.gandhi-king-season.net/|http://www.gandhi-king-season.net/]]
* [[Seasons of Peace Cooperation Circles]] - [[www.seasons-of-peace.net/|http://www.seasons-of-peace.net/]]
* [[Twin Light & Colour Cubes]] - [[www.peace-cubes.net/|http://www.peace-cubes.net/]]
!! ''E-mail lists''
** [[ngo-education@googlegroups.com]]
** [[climate-chsnge-two@googlegroups.com]]
** [[ngo-networking@googlegroups.com]]
** [[information-ecology@yahoogroups.com]]
A central concept in [[Climate Change 2.0]] is a focus on climate change //information ecosystems// - a focus that has grown out of the evolving holistic discipline of [[information ecology|Information ecology]] as developed and practiced by [[Information Habitat: Where Information Lives]] in the course of participation of [[NGOs|Non-governmental organizations]] in the work of the United Nations, beginning with the early stages of preparation for the 1992 Earth Summit and based on an appreciation of the.

Information ecology has been conceived as a holistic, ecological life science based on observation of the nature and properties of an information- and knowledge-based universe that is perceived and understood as a multi-level "nested" and networked ecosystem.

In the science of ecology, the key components of ecosystems are specimens, species and habitats, within which food and food chain, territory, behaviour, intelligence, adaptability, evolution,  and relationships are key elements and processes. In an information ecosystem, the corresponding components are [[information specimens|Information specimens]], [[information species|Information species]] and [[information habitats|Information habitats]]; information - specimens, species and habitats - forms the basis of food and food chains and the same key elements and processes in ecology are also relevant.

A vital distinction between information ecosystems and "real world" ecosystems derives from key "zero-based' properties of information. Specifically:
* Information has zero mass;
* Information has zero physical size.
Historically the behaviour of information specimens had been constrained by the material properties of information habitats - e.g. libraries, books, etc. - however, through progressive advances in information and communications technology,
* Information can travel in virtually zero time.
By virtue of its zero mass and zero physical size, and the unfolding powers of information technology. the behaviour of information is essentially free from the constraints of the laws of conservation of mass and energy, and the marginal cost of reproducing information is virtually zero. The economic implications of the //zero marginal cost// of information are profound.

Any entity, process, structure or phenomenon that exists can be represented as an information specimen and a member of one or more information species. A preliminary framework is under development of a [[taxonomy of information species]], in a framework modeled on the Linnaean taxonomy.

In an information ecosystem:
* An information specimen is also an information habitat
** As an information habitat, it contains one or information specimens - including the specimen's relationships with other information specimens and information habitats. //Examples// +++
* ''Business card'': Your business cards - and those you collect from colleagues, associates, clients, etc. - are information specimens, each of which serves as a habitat for a set of information specimens such as: name, role, affiliation, a logo, address, phone & fax numbers, email address and URL. The business card as a habitat also contains a relationship with memories of  the "human information specimen" - person who is rep[resented by the business card.
* ''Climate Change 2007: Fourth Assessment Report'': This example of a far more complex nested information specimen - the consideration, analysis, treatment and morphology of which play a key role in [[Climate Change 2.0]] - contains the reports of each of the three IPCC Working Groups and a Synthesis Report, with each Report contains a cover page. authors, editors, bibliographic information, "front matter", chapters, annexes, etc; each chapter in turn contains multiple sections, that in turn contain paragraphs, sentences, figures - photos, charts, maps, etc - tables, boxes, footnotes, references, each of which in turn contains information specimens - consider, for example the authors, maps, charts or references - and on and on. The relationships of the Fourth Assessment Report include an extensive set of prior relationships with the previous three assessment reports from the IPCC, that in turn embody relationships with a myriad of observations and measurements of geophysical, biological, economic and social phenomena  observations and measurements of climate change, observations and measurements that in turn  See [[Anatomy of Climate Change 2007]] for more details.
* ''A smile'': An easier example?
===

* Each information specimen "lives" within one or more [[information habitats]]
* The smallest information specimen is the empty, or null specimen - that can also be described as the ''singular information specimen''.
//{{{
config.formatters.unshift( {
    name: "inlinesliders",
    match: "\\+\\+\\+\\+|\\<slider",
    lookaheadRegExp: /(?:\+\+\+\+|<slider) (\w*)(?:>?)\n((?:.|\n)*?)\n(?:====|<\/slider>)/mg,
    handler: function(w)
    {
        this.lookaheadRegExp.lastIndex = w.matchStart;
        var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
        if(lookaheadMatch && lookaheadMatch.index == w.matchStart )
            {
            var btn = createTiddlyButton(w.output,lookaheadMatch[1] + " "+"\u00BB",lookaheadMatch[1],this.onClickSlider,"button sliderButton");
	        var panel = createTiddlyElement(w.output,"div",null,"sliderPanel");
	        panel.style.display = "none";
            wikify(lookaheadMatch[2],panel);
            w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
            }
    },
    onClickSlider : function(e)
    {
        if(!e) var e = window.event;
	    var n = this.nextSibling;
        n.style.display = (n.style.display=="none") ? "block" : "none";
        return false;
    }
})
//}}}
> From [[Towards Earth Summit II: Recommendations for Actions and Commitments at Earth Summit II|http://habitat.igc.org/csdngo/1997/es2ngo1.html]], June 1997
!!!Integrated Monitoring Frameworks
''We call for'': The establishment through DPCSD (now the Department of Economic and Social Affairs) of an integrated comprehensive framework - making effective use of modern information and communications technology - for systematic monitoring of the implementation of all the Rio agreements as well as the agreements of the other recent global conferences.
* Information that the UN has available at web-sites and other new information technologies should be made accessible to the public on a no-cost basis
* The development of indicators and criteria shall in no way undermine obligations incurred under treaties, covenants conventions or commitments made in conference action plans.
''Implementation'':
* Develop a comprehensive framework - to be accessible online - to enable the systematic monitoring and implementation of the agreements of the "Rio cluster" of United Nations conferences and proceedings;
* develop an integrated, fully searchable database that incorporates the text of all these agreements, that documents initiatives - including best practices - taken by intergovernmental agencies, governments and major groups, and that incorporates data and indicators that can help show current status and trends towards sustainability;
* the use of geographic information systems as a tool to assist in organizing and integrating information on measures; and
* measures to support capacity-building in the use of information and communications technology - including the strengthening of information and communications infrastructure in developing countries
''Rationale'': There is currently no systematic framework in place by which it is possible to assess and monitor the extent and specifics of implementation of the Rio agreements. Modern information and communications technology offers a range of powerful tools to organize and integrate a broad base of diverse information, and to make it widely accessible. There are many areas of overlap between the Rio agreements and the other "Rio cluster" agreements - all of which, in one way or another relate to the attainment of a sustainable common future - so there is a need for an integrated process of monitoring implementation of the whole set of agreements. 
!!!Expected Climatic Trigger for the Transition
Warmer temperatures increase the rate of evaporation, bringing on soil moisture stress more rapidly and, if conditions persist, drought. With a greater percentage of rainfall coming in heavy events, runoff is faster and there is less time for recharging groundwater and soil moisture.
!!!Expected Environmental Consequences
Warmer temperatures increase evapotranspiration, although the higher CO~~2~~ levels alleviate this somewhat. Low moisture conditions first weaken plants, making them more susceptible to pests, desiccation, and wildfire.
!!!Likely Societal Significance
With more and more people living (and vacationing) in fire-prone environments, increases in the intensity and duration of very dry conditions increase the likelihood and impacts of fire and of times when restrictions limit use and economic gain in these regions.
!!!Expected Climatic Trigger for the Transition
Tropical cyclones generally form over subtropical waters warmer than about 27.5°C. Global warming will lengthen the period during which such oceanic conditions prevail, and diminish the subduing influence of mixing cooler waters upward. Increased concentrations of atmospheric water vapor will lead, on average, to stronger cyclones producing more rainfall, likely increasing overall destructive power. Indications of a number of these types of change appear to be emerging.
!!!Expected Environmental Consequences
Higher rainfall rates will lead to greater flood potential, and, on average, more powerful winds will lead to higher storm surges and higher waves, causing more severe flooding, greater coastal inundation, and more destructive erosion.
!!!Likely Societal Significance
With coastal populations and development increasing, an increase in the duration during which tropical cyclones can form and an increase in their average power and duration will greatly compound the damage done and, unless evacuations are made more effective, the loss of life. Globally, storms of all types are likely to similarly intensify, leading to more intense periods of precipitation and, depending on local circumstances, greater flooding and loss of life.
Jeffrey Huffines is //Chair// of the [[NGO/DPI Executive Committee]] and //UN Representative//, [[National Spiritual Assembly of the Baha'is of the US|http://www.bahai.us/]]

E-mail: [[jhuffines@ngodpiexecom.org|mailto:jhuffines@ngodpiexecom.org]]
Joan Kirby is the previous //Chair// of the [[NGO/DPI Executive Committee]].

Ms Kirby has represented the [[Temple of Understanding|http://www.templeofunderstanding.org]] at the UN since April 2000 where her focus has been on sustainable development financing for development and children in armed conflict. From 1994 until 2000, she was the Executive Director of the Temple of Understanding where she developed educational interfaith programmes for people of different religious traditions. 

Ms Kirby served as //Secretary// for the NGO Committee on Human Rights and is the //~Vice-President// of the Committee of Religious ~NGOs at the UN where she works with the ~Tri-Partite Forum for Interfaith Cooperation for Peace. She was //Chair// of the DPI/NGO Conference in September 2004: The Millennium Development Goals: Civil Society Takes Action. 

Joan Kirby is a national of the United States.
!!!From our origins to the future
1. We, the representatives of the peoples of the world, assembled at the World Summit on Sustainable Development in Johannesburg, South Africa, from 2 to 4 September 2002, reaffirm our commitment to sustainable development.

2. We commit ourselves to building a humane, equitable and caring global society, cognizant of the need for human dignity for all.

3. At the beginning of this Summit, the children of the world spoke to us in a simple yet clear voice that the future belongs to them, and accordingly challenged all of us to ensure that through our actions they will inherit a world free of the indignity and indecency occasioned by poverty, environmental degradation and patterns of unsustainable development.

4. As part of our response to these children, who represent our collective future, all of us, coming from every corner of the world, informed by different life experiences, are united and moved by a deeply felt sense that we urgently need to create a new and brighter world of hope.

5. Accordingly, we assume a collective responsibility to advance and strengthen the interdependent and mutually reinforcing pillars of sustainable development - economic development, social development and environmental protection - at the local, national, regional and global levels.

6. From this continent, the cradle of humanity, we declare, through the [[Plan of Implementation of the World Summit on Sustainable Development|http://www.un-documents.net/jburgpln.htm]] and the present Declaration, our responsibility to one another, to the greater community of life and to our children.

7. Recognizing that humankind is at a crossroads, we have united in a common resolve to make a determined effort to respond positively to the need to produce a practical and visible plan to bring about poverty eradication and human development.
!!!From Stockholm to Rio de Janeiro to Johannesburg
8. Thirty years ago, in Stockholm, we agreed on the urgent need to respond to the problem of environmental deterioration.^^[[1|Declaration of the United Nations Conference on the Human Environment]]^^ Ten years ago, at the United Nations Conference on Environment and Development, held in Rio de Janeiro, we agreed that the protection of the environment and social and economic development are fundamental to sustainable development, based on the Rio Principles. To achieve such development, we adopted the global programme entitled [[Agenda 21]] and the [[Rio Declaration on Environment and Development]], to which we reaffirm our commitment. The Rio Conference was a significant milestone that set a new agenda for sustainable development.

9. Between Rio and Johannesburg, the world's nations have met in several major conferences under the auspices of the United Nations, including the International Conference on Financing for Development, as well as the Doha Ministerial Conference. These conferences defined for the world a comprehensive vision for the future of humanity.

10. At the Johannesburg Summit, we have achieved much in bringing together a rich tapestry of peoples and views in a constructive search for a common path towards a world that respects and implements the vision of sustainable development. The Johannesburg Summit has also confirmed that significant progress has been made towards achieving a global consensus and partnership among all the people of our planet.
!!!The challenges we face
11. We recognize that poverty eradication, changing consumption and production patterns and protecting and managing the natural resource base for economic and social development are overarching objectives of and essential requirements for sustainable development.

12. The deep fault line that divides human society between the rich and the poor and the ever-increasing gap between the developed and developing worlds pose a major threat to global prosperity, security and stability.

13. The global environment continues to suffer. Loss of biodiversity continues, fish stocks continue to be depleted, desertification claims more and more fertile land, the adverse effects of climate change are already evident, natural disasters are more frequent and more devastating, and developing countries more vulnerable, and air, water and marine pollution continue to rob millions of a decent life.

14. Globalization has added a new dimension to these challenges. The rapid integration of markets, mobility of capital and significant increases in investment flows around the world have opened new challenges and opportunities for the pursuit of sustainable development. But the benefits and costs of globalization are unevenly distributed, with developing countries facing special difficulties in meeting this challenge.

15. We risk the entrenchment of these global disparities and unless we act in a manner that fundamentally changes their lives the poor of the world may lose confidence in their representatives and the democratic systems to which we remain committed, seeing their representatives as nothing more than sounding brass or tinkling cymbals.
!!!Our commitment to sustainable development
16. We are determined to ensure that our rich diversity, which is our collective strength, will be used for constructive partnership for change and for the achievement of the common goal of sustainable development.

17. Recognizing the importance of building human solidarity, we urge the promotion of dialogue and cooperation among the world's civilizations and peoples, irrespective of race, disabilities, religion, language, culture or tradition.

18. We welcome the focus of the Johannesburg Summit on the indivisibility of human dignity and are resolved, through decisions on targets, timetables and partnerships, to speedily increase access to such basic requirements as clean water, sanitation, adequate shelter, energy, health care, food security and the protection of biodiversity. At the same time, we will work together to help one another gain access to financial resources, benefit from the opening of markets, ensure capacity- building, use modern technology to bring about development and make sure that there is technology transfer, human resource development, education and training to banish underdevelopment forever.

19. We reaffirm our pledge to place particular focus on, and give priority attention to, the fight against the worldwide conditions that pose severe threats to the sustainable development of our people, which include: chronic hunger; malnutrition; foreign occupation; armed conflict; illicit drug problems; organized crime; corruption; natural disasters; illicit arms trafficking; trafficking in persons; terrorism; intolerance and incitement to racial, ethnic, religious and other hatreds; xenophobia; and endemic, communicable and chronic diseases, in particular HIV/AIDS, malaria and tuberculosis.

20. We are committed to ensuring that women's empowerment, emancipation and gender equality are integrated in all the activities encompassed within [[Agenda 21]], the [[Millennium Development Goals]] and the [[Plan of Implementation of the Summit|http://www.un-documents.net/jburgpln.htm]].

21. We recognize the reality that global society has the means and is endowed with the resources to address the challenges of poverty eradication and sustainable development confronting all humanity. Together, we will take extra steps to ensure that these available resources are used to the benefit of humanity.

22. In this regard, to contribute to the achievement of our development goals and targets, we urge developed countries that have not done so to make concrete efforts reach the internationally agreed levels of official development assistance.

23. We welcome and support the emergence of stronger regional groupings and alliances, such as the [[New Partnership for Africa's Development|http://www.un-documents.net/nepad.htm]], to promote regional cooperation, improved international cooperation and sustainable development.

24. We shall continue to pay special attention to the developmental needs of small island developing States and the least developed countries.

25. We reaffirm the vital role of the indigenous peoples in sustainable development.

26. We recognize that sustainable development requires a long-term perspective and broad-based participation in policy formulation, decision-making and implementation at all levels. As social partners, we will continue to work for stable partnerships with all major groups, respecting the independent, important roles of each of them.

27. We agree that in pursuit of its legitimate activities the private sector, including both large and small companies, has a duty to contribute to the evolution of equitable and sustainable communities and societies.

28. We also agree to provide assistance to increase income-generating employment opportunities, taking into account the [[Declaration on Fundamental Principles and Rights at Work|http://www.un-documents.net/dfprw.htm]] of the International Labour Organization.

29. We agree that there is a need for private sector corporations to enforce corporate accountability, which should take place within a transparent and stable regulatory environment.

30. We undertake to strengthen and improve governance at all levels for the effective implementation of [[Agenda 21]], the [[Millennium Development Goals]] and the [[Plan of Implementation of the Summit|http://www.un-documents.net/jburgpln.htm]].
!!!Multilateralism is the future
31. To achieve our goals of sustainable development, we need more effective, democratic and accountable international and multilateral institutions.

32. We reaffirm our commitment to the [[principles and purposes of the Charter of the United Nations|Purposes and Principles of the United Nations]] and international law, as well as to the strengthening of multilateralism. We support the leadership role of the United Nations as the most universal and representative organization in the world, which is best placed to promote sustainable development.

33. We further commit ourselves to monitor progress at regular intervals towards the achievement of our sustainable development goals and objectives.
!!!Making it happen!
34. We are in agreement that this must be an inclusive process, involving all the major groups and Governments that participated in the historic Johannesburg Summit.

35. We commit ourselves to act together, united by a common determination to save our planet, promote human development and achieve universal prosperity and peace.

36. We commit ourselves to the [[Plan of Implementation of the World Summit on Sustainable Development|http://www.un-documents.net/jburgpln.htm]] and to expediting the achievement of the time-bound, socio-economic and environmental targets contained therein.

37. From the African continent, the cradle of humankind, we solemnly pledge to the peoples of the world and the generations that will surely inherit this Earth that we are determined to ensure that our collective hope for sustainable development is realized.
* ''United Nations Conference on the Human Environment'' - Stockholm, Sweden, June 1972
** [[Declaration of the United Nations Conference on the Human Environment]]
** [[Action Plan for the Human Environment|http://www.un-documents.net/unche.htm]]
* ''Intergovernmental Conference on Environmental Education'' - Tbilisi, Georgia, October, 1977
** [[Declaration of the Tbilisi Intergovernmental Conference on Environmental Education]]
** [[Recommendations of the Tbilisi Intergovernmental Conference on Environmental Education]]
* ''World Commission on Environment & Development''
** [[Our Common Future]] - Geneva, Switzerland, June 1987
* ''World Conference on Education for All''. Jomtien, Thailand, March, 1990
** [[World Declaration on Education For All: Meeting Basic Learning Needs]]
* ''United Nations Conference on Environment & Development'' - Rio de Janeiro, Brazil, June 1992
** [[Rio Declaration on Environment and Development]]
** [[Agenda 21]]
*** [[Agenda 21, Chapter 36|http://www.un-documents.net/a21-36.htm]]: Promoting Education, Public Awareness And Training
*** [[References to Education in Agenda 21|http://habitat.igc.org/agenda21/eea.htm]]
* ''Habitat II: Second United Nations Conference on Human Settlements'', Istanbul, Turkey, June 1996
** [[Istanbul Declaration on Human Settlements]]
** [[The Habitat Agenda]]
* ''~Mid-Term Meeting of the International Consultative Forum on Education for All'', Amman, Jordan, June 1996
** [[The Amman Affirmation: Education for All: Achieving the goal]]
* ''World Education Forum'' - Dakar, Senegal, April, 2000
** [[Dakar Framework for Education For All]]
* ''World Summit on Sustainable Development'' - Johannesburg, South Africa, September 2002
** [[Johannesburg Declaration on Sustainable Development]]
** [["Education" in the Johannesburg Plan of Implementation]]
** [[Plan of Implementation of the World Summit on Sustainable Development|http://www.un-documents.net/jburgpln.htm]] 
* ''United Nations General Assembly'' - New York, NY, December 2002
** [[Resolution 57/254. United Nations Decade of Education for Sustainable Development|57/254. United Nations Decade of Education for Sustainable Development]]
* ''World Summit on the Information Society'' - Geneva, Switzerland, December 2003
** [[Planetary Sustainability in the Age of the Information and Knowledge Society|http://www.un-documents.net/psaiks.pdf]] - UNESCO contribution
** [["Capacity building" in the World Summit on the Information Society Plan of Action]]
''La Familia Verde'' is a coalition of community gardens in the Crotona, East Tremont, and West Farms neighborhoods in the Bronx. Formed in 1998, our mission is to sustain the environment and culture of our neighborhood through education, community service, and horticulture.
+++[La Familia Verde Web site]
{{iframe{''Note'': This is a "framed" page from the ''La Familia Verde'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.lafamiliaverde.org/}}}
<html><iframe
	src = "http://www.lafamiliaverde.org/"
	title = "La Familia Verde Coalition"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
===
''La Perla Garden'', located at West 105th Street and Columbus Avenue in New York's Upper West Side was established in 1991 and is one of over 600 registered [[GreenThumb|GreenThumb, New York City Department of Parks & Recreation]] community gardens in New York City, and is affiliated with the [[Manhattan Land Trust]].
* [[La Perla Garden Photo Albums]]
* [[Directions to La Perla Garden]]
<<forEachTiddler 
 where 
 'tiddler.tags.containsAll(["la perla garden","compost"])'
>>
{{iframe{''Note'': This is a "framed" page from the '' '' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://groups.google.com/group/la-perla-garden}}}
<html><iframe
	src = "http://groups.google.com/group/la-perla-garden"
	title = ""
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
<<forEachTiddler 
 where 
 'tiddler.tags.containsAll(["la perla garden","picasa album"])'
>>
!! [[The garden as teacher]]
!!! To know and not to do is not to know

!! Getting to know
* ''Biodiversity''
** Flowers
** Shrubs
** Trees
** Birds, butterflies & bees
** Worms, centipedes & insects
** Visitors
* ''Sensory diversity''
** Light & color
** Texture & feel
** Shapes & patterns
** Wind & rain
** Movement
!! Learning & doing 
* Composting
* Water conservation
* Pruning & weeding
* Touching the earth
* Building green paths
* Walking meditation
!! Remembering
* Mindfulness
* Writing
* Drawing & painting
* Photography
* Reading
* Conversations
!! Communicating & sharing
Re-opened a few days before the photos were taken, the new wheelchair accessible patio was made possible by the [[Manhattan Land Trust]] and a community grant from Home Depot.
<html>
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="600" height="400" flashvars="host=picasaweb.google.com&noautoplay=1&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fecology2001%2Falbumid%2F5079350722865935217%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</html>
Larry Winter Roeder, Jr., was selected as //Editor// for the [[Climate Change Sub-Committee]] of the [[NGO/DPI Executive Committee]]. Larry promoted the adoption of an [[NGO/DPI Declaration on Climate Change]]

Larry Roeder received an M.Sc. in Library Information Science, at Catholic University, Washington , with post graduate work in comparative economics). Larry retured from the US Department of State as Policy Adviser on Disaster Management with 35 years experience in conflict reduction, disaster management, information management, peace keeping, science and technology, economics, indigenous peoples, refugees, ~IDPs and human rights.  He currently serves as Director for United Nations Affairs, [[World Society for the Protection of Animals|http://www.wspa.org/]] (WSPA). Managed creation of [[ReliefWeb.int|http://www.reliefweb.int]] after the Rwanda crisis (the UN's first major disaster web site) and received Superior Honor Award for fostering the [[Global Disaster Information Network|http://www.gdin.org/]] (GDIN), a web-based  project developed with the office of Vice President Al Gore. Larry was a frequent author of articles and a former news anchor for international peacekeeping force in Sinai, Egypt. Larry is also an Honorary member of the Alegat tribe.

Email: [[lroeder@climatecaucus.net|lroeder@climatecaucus.net]]
Phone: 1.703.327.0057
The Liz Christy Community Garden was the First Community Garden in New York City founded in 1973. It is located on the northeast corner of Bowery and Houston Streets in Manhattan.

+++[Liz Christy Community Garden web site]
{{iframe{''Note'': This is a "framed" page from the ''Liz Christy Community Garden'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.lizchristygarden.org/}}}
<html><iframe
	src = "http://www.lizchristygarden.org/"
	title = "Liz Christy Community Garden"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
===
/***
|Name|LoadTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#LoadTiddlersPlugin|
|Version|3.4.8|
|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||
|Description|macro for automated updates or one-click installations of tiddlers from remote sources|

!!!!!Usage
<<<
Syntax:
{{{<<loadTiddlers label:text prompt:text filter source quiet confirm force noreport tag tag tag...>>}}}

Example:
{{{<<loadTiddlers "label:load tiddlers from %0" example.html confirm temporary>>}}}
<<loadTiddlers "label:load tiddlers from %0" example.html confirm temporary>>

Where:
''"""label:text"""'' and ''"""prompt:text"""''
>defines link text and tooltip (prompt) that can be clicked to trigger the load tiddler processing.  If a label is NOT provided, then no link is created and the loadTiddlers function is performed whenever the containing tiddler is rendered.
''filter'' (optional) determines which tiddlers will be automatically selected for importing.  Use one of the following keywords:
>''"all"'' retrieves ALL tiddlers from the import source document, even if they have not been changed.
>''"new"'' retrieves only tiddlers that are found in the import source document, but do not yet exist in the destination document
>''"changes"'' retrieves only tiddlers that exist in both documents for which the import source tiddler is newer than the existing tiddler
>''"updates"'' retrieves both ''new'' and ''changed'' tiddlers (this is the default action when none is specified)
>''""""tiddler:TiddlerName""""'' retrieves only the specific tiddler named in the parameter.
>''""""tag:text""""'' retrieves only the tiddlers tagged with the indicated text.
>> Note: ''if an existing tiddler is tagged with 'noReload', then it will not be overwritten'', even if the inbound tiddler has been selected by the filtering process.  This allows you to make local changes to imported tiddlers while ensuring that those changes won't be lost due to automatic tiddler updates retrieved from the import source document.
''source'' (required) is the location of the imported document.  It can be either a local document path/filename in whatever format your system requires, or a remote web location (starting with "http://" or "https://")
>use the keyword ''ask'' to prompt for a source location whenever the macro is invoked
''"quiet"'' (optional)
>supresses all status message during the import processing (e.g., "opening local file...", "found NN tiddlers..." etc).  Note that if ANY tiddlers are actualy imported, a final information message will still be displayed (along with the ImportedTiddlers report), even when 'quiet' is specified.  This ensures that changes to your document cannot occur without any visible indication at all.
''"confirm"'' (optional)
>adds interactive confirmation.  A browser message box (OK/Cancel) is displayed for each tiddler that will be imported, so that you can manually bypass any tiddlers that you do not want to import.
''"force"'' (optional)
>import all matching tiddlers, even if unchanged
''"noreport"'' (optional)
>suppress generation of [[ImportedTiddlers]] report
''"tag tag tag..."'' (optional)
>any remaining parameters are used as tag values to be added to each imported tiddler (i.e., "tag-on-import")
<<<
!!!!!Installation
<<<
copy/paste the following tiddlers into your document:
''LoadTiddlersPlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''2007.06.27 [3.4.8]'' added missing 'fields' params to saveTiddler() call. Fixes problem where importing tiddlers would lose the custom fields.
''2007.06.25 [3.4.7]'' add calls to store.suspendNotifications() and store.resumeNotifications() to eliminate redisplay overhead DURING import activities.
''2007.05.27 [3.4.6]'' in handler(),  loadRemoteFile() and doImport(), added 'noreport' flag to suppress generation of ImportedTiddlers
''2007.05.27 [3.4.5]'' in handler(),  initialize 'newTags' to [] (empty array) instead of null... fixes fatal error when loading tiddler without autotagging.
''2007.04.22 [3.4.4]'' in readTiddlersFromHTML(), for TW2.2 and above, use importTiddlyWiki() (new core functionality) to get tiddlers from remote file content.  Also, copied updated TW21Loader.prototype.internalizeTiddler() definition from TW2.2b5 so plugin can read tiddlers from TW2.2+ even when running under TW2.1.x
''2007.04.05 [3.4.3]'' in doImport(), changed this.readTiddlersFromHTML(html) to config.macros.loadTiddlers.readTiddlersFromHTML(html).  Fixes error caused when ImportTiddlersPlugin has NOT been installed along side this plugin.
''2007.03.26 [3.4.2]'' renamed import() to doImport() to fix IE load-time error ("identifier expected").  This may also cause a problem with FF1.5.0.x.... Apparently, "import" is a reserved word in some browsers...
''2007.03.22 [3.4.1]'' code cleanup: moved all functions inside object def'n, re-wrote report function
''2007.03.21 [3.4.0]'' split ImportTiddlersPlugin and LoadTiddlersPlugin functionality into separate plugins
|please see [[ImportTiddlersPluginHistory]] for additional revision details|
''2005.07.20 [1.0.0]'' Initial Release
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
<<<
!!!!!Code
***/
// // ''MACRO DEFINITION''
//{{{
// Version
version.extensions.loadTiddlers = {major: 3, minor: 4, revision: 8, date: new Date(2007,6,27)};
//{{{
config.macros.loadTiddlers = {
	label: "",
	prompt: "add/update tiddlers from '%0'",
	lockedTag: "noReload",	// if existing tiddler has this tag value, don't overwrite it, even if inbound tiddler is newer
	askMsg: "Please enter a local path/filename or a remote URL",
	openMsg: "Opening %0",
	openErrMsg: "Could not open %0 - error=%1",
	readMsg: "Read %0 bytes from %1",
	foundMsg: "Found %0 tiddlers in %1",
	nochangeMsg: "'%0' is up-to-date... skipped.",
	lockedMsg: "'%0' is tagged '%1'... skipped.",
	skippedMsg: "skipped (cancelled by user)",
	loadedMsg: "Loaded %0 of %1 tiddlers from %2",
	reportTitle: "ImportedTiddlers",
	handler: function(place,macroName,params) {
		var label=(params[0] && params[0].substr(0,6)=='label:')?params.shift().substr(6):this.label;
		var prompt=(params[0] && params[0].substr(0,7)=='prompt:')?params.shift().substr(7):this.prompt;
		var filter="updates";
		if (params[0] && (params[0]=='all' || params[0]=='new' || params[0]=='changes' || params[0]=='updates'
			|| params[0].substr(0,8)=='tiddler:' || params[0].substr(0,4)=='tag:'))
			filter=params.shift();
		var src=params.shift(); if (!src || !src.length) return; // filename is required
		var quiet=(params[0]=="quiet"); if (quiet) params.shift();
		var ask=(params[0]=="confirm"); if (ask) params.shift();
		var force=(params[0]=="force"); if (force) params.shift();
		var noreport=(params[0]=="noreport"); if (noreport) params.shift();
		this.newTags=[]; if (params[0]) this.newTags=params; // any remaining params are used as "autotags"
		if (label.trim().length) {
			// link triggers load tiddlers from another file/URL and then applies filtering rules to add/replace tiddlers in the store
			createTiddlyButton(place,label.format([src.replace(/%20/g," ")]),prompt.format([src.replace(/%20/g," ")]), function() {
				if (src=="ask") src=prompt(this.askMsg);
				config.macros.loadTiddlers.loadFile(src,config.macros.loadTiddlers.doImport,{quiet:quiet,ask:ask,filter:filter,force:force,noreport:noreport});
			})
		}
		else {
			// load tiddlers from another file/URL and then apply filtering rules to add/replace tiddlers in the store
			if (src=="ask") src=prompt(this.askMsg);
			config.macros.loadTiddlers.loadFile(src,config.macros.loadTiddlers.doImport,{quiet:quiet,ask:ask,filter:filter,force:force,noreport:noreport});
		}
	},
	fileExists: function(theFile) {
		var found=false;
		// DEBUG: alert('testing fileExists('+theFile+')...');
		if(window.Components) {
			try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
			catch(e) { return false; } // security access denied
			var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
			try { file.initWithPath(theFile); }
			catch(e) { return false; } // invalid directory
			found = file.exists();
		}
		else { // use ActiveX FSO object for MSIE 
			var fso = new ActiveXObject("Scripting.FileSystemObject");
			found = fso.FileExists(theFile)
		}
		// DEBUG: alert(theFile+" "+(found?"exists":"not found"));
		return found;
	},
	loadFile: function(src,callback,params) {
		var quiet=params.quiet;
		if (src==undefined || !src.length) return null; // filename is required
		if (!quiet) clearMessage();
		if (!quiet) displayMessage(this.openMsg.format([src.replace(/%20/g," ")]));
		if (src.substr(0,5)!="http:" && src.substr(0,5)!="file:") { // if src is relative (i.e., not a URL)
			if (!this.fileExists(src)) { // if file cannot be found, might be relative path.. try fixup
				var pathPrefix=document.location.href;  // get current document path and trim off filename
				var slashpos=pathPrefix.lastIndexOf("/"); if (slashpos==-1) slashpos=pathPrefix.lastIndexOf("\\"); 
				if (slashpos!=-1 && slashpos!=pathPrefix.length-1) pathPrefix=pathPrefix.substr(0,slashpos+1);
				src=pathPrefix+src;
				if (pathPrefix.substr(0,5)!="http:") src=getLocalPath(src);
			}
		}
		if (src.substr(0,4)!="http" && src.substr(0,4)!="file") { // if not a URL, read from local filesystem
			var txt=loadFile(src);
			if ((txt==null)||(txt==false)) // file didn't load
				{ if (!quiet) displayMessage(this.openErrMsg.format([src.replace(/%20/g," "),"(unknown)"])); }
			else {
				if (!quiet) displayMessage(this.readMsg.format([txt.length,src.replace(/%20/g," ")]));
				if (callback) callback(true,params,convertUTF8ToUnicode(txt),src,null);
			}
		}
		else 
			loadRemoteFile(src,callback,params);
	},
	readTiddlersFromHTML: function(html) {
		// for TW2.2+
		if (TiddlyWiki.prototype.importTiddlyWiki!=undefined) {
			var remoteStore=new TiddlyWiki();
			remoteStore.importTiddlyWiki(html);
			return remoteStore.getTiddlers("title");	
		}
	},
	doImport: function(status,params,html,src,xhr) {
		var quiet=params.quiet;
		var ask=params.ask;
		var filter=params.filter;
		var force=params.force;
		var noreport=params.noreport;
		var tiddlers = config.macros.loadTiddlers.readTiddlersFromHTML(html);
		var count=tiddlers?tiddlers.length:0;
		var querypos=src.lastIndexOf("?"); if (querypos!=-1) src=src.substr(0,querypos);
		if (!quiet) displayMessage(config.macros.loadTiddlers.foundMsg.format([count,src.replace(/%20/g," ")]));
		store.suspendNotifications();
		var count=0;
		if (tiddlers) for (var t=0;t<tiddlers.length;t++) {
			var inbound = tiddlers[t];
			var theExisting = store.getTiddler(inbound.title);
			if (inbound.title==config.macros.loadTiddlers.reportTitle)
				continue; // skip "ImportedTiddlers" history from the other document...
			if (theExisting && theExisting.tags.contains(config.macros.loadTiddlers.lockedTag)) {
				if (!quiet) displayMessage(config.macros.loadTiddlers.lockedMsg.format([theExisting.title,config.macros.loadTiddlers.lockedTag]));
				continue; // skip existing tiddler if tagged with 'noReload'
			}
			// apply the all/new/changes/updates filter (if any)
			if (filter && filter!="all") {
				if ((filter=="new") && theExisting) // skip existing tiddlers
					continue;
				if ((filter=="changes") && !theExisting) // skip new tiddlers
					continue;
				if ((filter.substr(0,4)=="tag:") && inbound.tags.find(filter.substr(4))==null) // must match specific tag value
					continue;
				if ((filter.substr(0,8)=="tiddler:") && inbound.title!=filter.substr(8)) // must match specific tiddler name
					continue;
				if (!force && store.tiddlerExists(inbound.title) && ((theExisting.modified.getTime()-inbound.modified.getTime())>=0))
					{ if (!quiet) displayMessage(config.macros.loadTiddlers.nochangeMsg.format([inbound.title])); continue; }
			}
			// get confirmation if required
			if (ask && !confirm((theExisting?"Update":"Add")+" tiddler '"+inbound.title+"'\nfrom "+src.replace(/%20/g," ")))
				{ tiddlers[t].status=config.macros.loadTiddlers.skippedMsg; continue; }
			// DO IT!
			var tags=Array.concat(inbound.tags,config.macros.loadTiddlers.newTags);
	                store.saveTiddler(inbound.title, inbound.title, inbound.text, inbound.modifier, inbound.modified, tags, inbound.fields, true, inbound.created);
	                store.fetchTiddler(inbound.title).created = inbound.created; // force creation date to imported value - needed for TW2.1.3 or earlier
			tiddlers[t].status=theExisting?"updated":"added"
			count++;
		}
		store.resumeNotifications();
		if (count) {
			// refresh display
			store.setDirty(true); store.notifyAll();
			// generate a report
			if (!noreport) config.macros.loadTiddlers.report(src,tiddlers,count,quiet);
		}
		// always show final message when tiddlers were actually loaded
		if (!quiet||count) displayMessage(config.macros.loadTiddlers.loadedMsg.format([count,tiddlers.length,src.replace(/%20/g," ")]));
	},
	report: function(src,tiddlers,count,quiet) {
		// format the new report content
		var newText = "On "+(new Date()).toLocaleString()+", ";
		newText += config.options.txtUserName+" loaded "+count+" tiddlers ";
		newText += "from\n[["+src+"|"+src+"]]:\n";
		newText += "<<<\n";
		for (var t=0; t<tiddlers.length; t++)
			if (tiddlers[t].status)
				newText += "#[["+tiddlers[t].title+"]] - "+tiddlers[t].status+"\n";
		newText += "<<<\n";
		// get current report (if any)
		var title=config.macros.loadTiddlers.reportTitle;
		var currText="";
		var theReport = store.getTiddler(title);
		if (theReport) currText=((theReport.text!="")?'\n----\n':"")+theReport.text;
		// update the ImportedTiddlers content and show the tiddler
		store.saveTiddler(title, title, newText+currText, config.options.txtUserName, new Date(), theReport?theReport.tags:null, theReport?theReport.fields:null);
		if (!quiet) { story.displayTiddler(null,title,1,null,null,false); story.refreshTiddler(title,1,true); }
	}
}
//}}}
!!Expected Climatic Trigger for the Transition
> Warming of about 1°C in the Arctic has already led to significant reduction of sea ice. As further warming melts more ice, the open ocean waters are able to absorb more solar radiation, accelerating and sustaining the melting, especially in summer, of sea ice, mountain glaciers, and the Greenland Ice Sheet.
!!Expected Environmental Consequences
> Decreasing the period of ice cover increases summer storage of heat in the Arctic Ocean, providing the energy to keep the Arctic region warmer the rest of the year, and causing changes in atmospheric circulation and in winter weather at mid-latitudes. The shorter ice-in season and thinner ice adversely affects neighboring ecosystems and arctic wildlife such as polar bears and seals.
!!Likely Societal Significance
> Loss of arctic sea ice leads to substantial warming in the region, adversely affecting subsistence harvesting and allowing larger winter waves to erode shorelines. Increased maritime access will enhance trans-polar shipping and regional resource utilization.
<html><a href="http://picasaweb.google.com/ecology2001/EnteringLaPerlaGarden/photo#5079318897158270786"><img src="http://lh6.google.com/ecology2001/Rn1doCYML0I/AAAAAAAAAA0/JP6zhgDDnT8/s144/lpg-2007.05.08-80-1152x864.jpg" /></a></html>
[[La Perla Garden]]
[[Rainwater Harvesting|Rainwater Harvesting System at La Perla Garden]] *
[[Composting at La Perla *|Composting at La Perla Garden]]
[[Photo Gallery *|La Perla Garden Photo Albums]]
[[Directions to La Perla *|Directions to La Perla Garden]]
[[Manhattan Land Trust]]
[[Trust for Public Land]]
[[Council on the Environment of New York City]]
[[Green Map System]]
[[Compost NYC|The New York City Compost Project]]
[[GreenThumb Gardens|GreenThumb, New York City Department of Parks & Recreation]]
[[NGO Committee on Education]]
[[Information Habitat|Information Habitat: Where Information Lives]]
<<tiddler "Administrative Menu">>
/*{{{*/
#mainMenu {
font-family:'Arial Narrow', 'sans serif';
position: absolute;
left: 0;
width: 16em;
text-align: right;
line-height: 1.6em;
padding-left: 0.2em;
padding-right: 0.5em;
padding-top: 0.5em;
font-size: 85%;
}

#mainMenu .tiddlyLinkExisting, 
#mainMenu .tiddlyLinkNonExisting,
#sidebarTabs .tiddlyLinkNonExisting{
font-weight: normal;
font-style: normal;
}
#mainMenu .highlight {
background: [[ColorPalette::SecondaryLight]]
}
#mainMenu table {
text-align: right;
width: 100%;
}
#mainMenu .center {
align:center;
text-align:center;
}
/*}}}*/
The ''Manhattan Land Trust'' is one of five New York City affiliates - one for each borough - of the [[Trust for Public Land]] that together own 64 community gardens throughout New York City - 14 in Manhattan - which the organization saved from a city auction and eventual destruction in 1999.
+++[Map of Manhattan Land Trust Gardens]
[img[mlt.jpg]]
===

+++[Listing of Manhattan Land Trust Gardens]
<<tiddler "Manhattan Land Trust Gardens">>
===

!! Northern Manhattan Gardens
1. ''Mo' Pals Garden'' - West 147th Street between Broadway & Amsterdam
2. ''Serenity Garden'' - West 146th Street between Broadway & Amsterdam
3. ''The Hope Steven Garden'' - Amsterdam Avenue, corner of Hamilton Place & 146th Street
4. ''Clayton Williams Community Garden'' - Northwest corner of 126th Street & Eighth Avenue
5. ''Five Star Garden'' - West 121st Street between St. Nicholas & Seventh Avenues
6. ''Carver Community Garden'' - East 124th Street between Second & Third Avenues
7. ''Papo's Garden'' - East 119th Street between Second & Third Avenues
8. ''East Harlem Community Garden'' - East 117th Street between Pleasant & First Avenues
9. ''La Perla Garden'' - West 105th Street between Columbus & Manhattan Avenues
!! Lower East Side Gardens
10. ''11th Street Community Garden'' - East 11th Street between First Avenue & Avenue A
11. ''Albert's Garden'' - East 2nd Street between Second Avenue & Bowery
12. ''Parque Tranquilidad'' - East 4th Street between Avenue C & Avenue D
13. ''All People's Garden'' - East 3rd Street between Avenue C & Avenue D
14. ''Lower East Side People Care Garden'' - Rutgers Street between Henry & Madison Streets
@@font-size:90%;''Note'': This is a "framed" page from the web site of the [[Trust for Public Land]].
You can view this page in a separate browser tab or window at http://www.tpl.org/tier3_cdl.cfm?content_item_id=18995&folder_id=2928@@
<html><iframe
	src = "http://www.tpl.org/tier3_cdl.cfm?content_item_id=18995&folder_id=2928"
	title = "Manhattan Land Trust "
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
<!--{{{-->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-2759737-1");
pageTracker._trackPageview();
} catch(err) {}</script>
<!--}}}-->
<!--{{{-->
<meta name="description" content="A prototype creative commons community-based learning environment on community gardens and climate change, centred in La Perla Garden, a Manhattan Land Trust & GreenThumb community garden in New York's Upper West Side">
<meta name="keywords" content="La Perla Garden, community garden, community biodiversity, biodiversity, new york city, information ecology, climate change">
<link rel='alternate' type='application/rss+xml' title='RSS' href='rss.xml'/>
<style type="text/css">#contentWrapper {display:none;}</style>
<div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 90%; margin: 10px auto; padding: 10px; color:#000;  font-family:Bookman Old Style; background-color:#eee;">
<span style="font-size: 30px;"><b>Community Gardens & Climate Change</b></span>
<br>
<br>
<span style="font-size: 18px;"><b>A TiddlyWiki Creative Commons learning environment
<br>
in climate change and community diversity
<br>
centered in La Perla Garden</b></span>
<p>
<img src="http://lh6.google.com/ecology2001/Rn1doCYML0I/AAAAAAAAAA0/JP6zhgDDnT8/s400/lpg-2007.05.08-80-1152x864.jpg" />
<br />
is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span>
<p>
<span style="font-size: 14px;">This web site is being developed for <b>Climate Change 2.0</b> and the <b>NGO Committee on Education</b>  by <b>Information Habitat: Where Information Lives</b>
<br>
<img src="http://www.climate-change-two.net/cc2-151x43.jpg" width="151" height="43" alt="Climate Change 2.0">
<img src="http://www.ngo-framework.net/congo-74x54.png" width="74" height="54" alt="logo of Conference Of NGOs">
</div>
<!--}}}-->
{{center{<html><a href="http://bluedot.us/Authoring.aspx" onclick="{var w=window;w.l=w.location;w.SdP='';w.bU=(w.l.protocol=='https:'?'https://'+w.SdP:'http://')+'bluedot.us';w.eUC=encodeURIComponent;function fBkF(){w.l.href=w.bU+'/Authoring.aspx?u='+w.eUC(w.l.href)+'&amp;t='+w.eUC(document.title);}w.gT=w.setTimeout(fBkF,6999);w.d=w.document;w.sT=w.d.body;w.o=w.d.createElement('scri'+'pt');if(typeof w.o!='object')fBkF();w.o.setAttribute('src',w.bU+'/js/Authoring.js');w.o.setAttribute('type','text/javascript');void(w.sT.appendChild(w.o));if(w.event){w.event.returnValue=false;}return false;}" id="BlueDotPartner"><img src="http://www.climate-change-two.net/blue-ribbon-24.jpg" alt="Give a blue Ribbon bookmark to this site" style="border:none"></a> <a href="http://del.icio.us/post" onclick="window.open('http://del.icio.us/post?v=4&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title), 'delicious','toolbar=no,width=700,height=400'); return false;"><img src="http://www.climate-change-two.net/delicious.32px.gif" alt="bookmark this site at del.icio.us"></a></html>  [img[http://www.climate-change-two.net/rss-small.jpg][Site RSS feed]]
}}}
''Menus'' - and the versatility of menus - - if understood and used creatively and systematically - play a key role in TiddlyPerfect site - and open up a plethora of opportunities to organize, present, and find the wealth of information that can live in the structured tiddlers of a TiddlyPerfect world. In a digital knowledge-based universe, the use of digital tools that offer you  clear and simple hierarchical user-defined menus can play an invaluable role in easing one's journey in a digital world.

The [[NestedSlidersPlugin]], written by [[Udo Borkowski]] plays a vital role in [[TiddlyPerfect Menus]] - allowing the easy expansion or collapsing of  multi-level menus.

* [[Main Menu|MainMenu]] 
* [[Administrative Menus]]
** [[Head Menu]]
** [[Hover Menu|HoverMenu]] 
** [[Nesting Menus]]
* [[Changing Menus]]
* [[DataPerfect Menus]] 
* [[Browser Menus]] 
* [[Designing Menus]]
* [[Building Menus]]
* [[Desktop Menus]] 
* [[Digital Navigation]]
* [[Learning Menus]]
[[TiddlyWiki|http://www.tiddlywiki.com]] says:
<<<
"MicroContent being a fashionable word for self-contained fragments of content that are typically smaller than entire pages. Often MicroContent is presented via some kind of aggregation that reduces the perceptual shock and resource cost of context switching (eg Blogs aggregating several entries onto a page or Flickr presenting photos in an album). This TiddlyWiki aggregates MicroContent items that I call 'tiddlers' into pages that are loaded in one gulp and progressively displayed as the user clicks hypertext links to read them."
<<<
By the year 2015, all 191 UN Member States have pledged to meet these goals.
# ''Eradicate extreme poverty and hunger''
** Reduce by half the proportion of people living on less than a dollar a day.
** Reduce by half the proportion of people who suffer from hunger
# ''Achieve universal primary education''
** Ensure that all boys and girls complete a full course of primary schooling
# ''Promote gender equality and empower women''
** Eliminate gender disparity in primary and secondary education preferably by 2005, and at all levels by 2015
# ''Reduce child mortality''
** Reduce by two thirds the mortality rate among children under five
# ''Improve maternal health''
** Reduce by three quarters the maternal mortality ratio
# ''Combat HIV/AIDS, malaria and other diseases''
** Halt and begin to reverse the spread of HIV/AIDS
** Halt and begin to reverse the incidence of malaria and other major diseases
# ''Ensure environmental sustainability''
** Integrate the principles of sustainable development into country policies and programmes; reverse loss of environmental resources
** Reduce by half the proportion of people without sustainable access to safe drinking water
** Achieve significant improvement in lives of at least 100 million slum dwellers, by 2020
# ''Develop a global partnership for development''
** Develop further an open trading and financial system that is rule-based, predictable and non-discriminatory. Includes a commitment to good governance, development and poverty reduction-nationally and internationally
** Address the least developed countries' special needs. This includes tariff- and quota-free access for their exports; enhanced debt relief for heavily indebted poor countries; cancellation of official bilateral debt; and more generous official development assistance for countries committed to poverty reduction
** Address the special needs of landlocked and small island developing States
** Deal comprehensively with developing countries' debt problems through national and international measures to make debt sustainable in the long term
** In cooperation with the developing countries, develop decent and productive work for youth
** In cooperation with pharmaceutical companies, provide access to affordable essential drugs in developing countries
** In cooperation with the private sector, make available the benefits of new technologies - especially information and communications technologies
<<list missing>>
/*{{{*/
body {
	background: [[ColorPalette::Background]];
	color: [[ColorPalette::Foreground]];
}

a.externalLink {
 color: #007700;
}
a {
	color: [[ColorPalette::PrimaryMid]];
}

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

.cleartable table {
border: 1px solid #fff;
}
h1,h2,h3,h4,h5 {
	color: [[ColorPalette::PrimaryDark]];
}


.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]];
}

.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::SecondaryLight]];
	border-top: 1px solid [[ColorPalette::SecondaryMid]];
	border-left: 1px solid [[ColorPalette::SecondaryMid]];
}

.wizard h1 {
	color: [[ColorPalette::SecondaryDark]];
}

.wizard h2 {
	color: [[ColorPalette::Foreground]];
}

.wizardStep {
	background: [[ColorPalette::Background]];
	border-top: 1px solid [[ColorPalette::SecondaryMid]];
	border-bottom: 1px solid [[ColorPalette::SecondaryMid]];
	border-left: 1px solid [[ColorPalette::SecondaryMid]];
}

.wizard .button {
	color: [[ColorPalette::Background]];
	background: [[ColorPalette::PrimaryMid]];
	border-top: 1px solid [[ColorPalette::PrimaryLight]];
	border-right: 1px solid [[ColorPalette::PrimaryDark]];
	border-bottom: 1px solid [[ColorPalette::PrimaryDark]];
	border-left: 1px solid [[ColorPalette::PrimaryLight]];
}

.wizard .button:hover {
	color: [[ColorPalette::PrimaryLight]];
	background: [[ColorPalette::PrimaryDark]];
	border-color: [[ColorPalette::PrimaryLight]];
}

.wizard .button:active {
	color: [[ColorPalette::Background]];
	background: [[ColorPalette::PrimaryMid]];
	border-top: 1px solid [[ColorPalette::PrimaryLight]];
	border-right: 1px solid [[ColorPalette::PrimaryDark]];
	border-bottom: 1px solid [[ColorPalette::PrimaryDark]];
	border-left: 1px solid [[ColorPalette::PrimaryLight]];
}

#messageArea {
	border: 1px solid [[ColorPalette::SecondaryDark]];
	background: [[ColorPalette::SecondaryMid]];
	color: [[ColorPalette::PrimaryDark]];
}

#messageArea .button {
	padding: 0.2em 0.2em 0.2em 0.2em;
	color: [[ColorPalette::PrimaryDark]];
	background: [[ColorPalette::Background]];
}

.popup {
	background: [[ColorPalette::PrimaryLight]];
	border: 1px solid [[ColorPalette::PrimaryMid]];
}

.popup hr {
	color: [[ColorPalette::PrimaryDark]];
	background: [[ColorPalette::PrimaryDark]];
	border-bottom: 1px;
}

.listBreak div{
	border-bottom: 1px solid [[ColorPalette::PrimaryDark]];
}

.popup li.disabled {
	color: [[ColorPalette::PrimaryMid]];
}

.popup li a, .popup li a:visited {
	color: [[ColorPalette::TertiaryPale]];
	border: none;
}

.popup li a:hover {
	background: [[ColorPalette::PrimaryDark]];
	color: [[ColorPalette::Background]];
	border: none;
}

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

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

.title {
	color: [[ColorPalette::PrimaryDark]];
}

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

.toolbar {
	color: [[ColorPalette::PrimaryMid]];
}

.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]];
}

.cascade {
	background: [[ColorPalette::TertiaryPale]];
	color: [[ColorPalette::TertiaryMid]];
	border: 1px solid [[ColorPalette::TertiaryMid]];
}

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

.viewer .listTitle {list-style-type: none; margin-left: -2em;}

.viewer .button {
	border: 1px solid [[ColorPalette::SecondaryMid]];
}

.viewer blockquote {
	[[ColorPalette::Foeground]];
}

.viewer table {
	border: 2px solid [[ColorPalette::TertiaryDark]];
}

.viewer th, thead td {
	background: [[ColorPalette::PrimaryPale]];
	color: [[ColorPalette::PrimaryDark]];
}

.viewer td, .viewer 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: solid2px [[ColorPalette::TertiaryDark]];
	color: [[ColorPalette::TertiaryDark]];
}

.box {
	background: #ccecff;
	border; 1px;
}

#mainMenu .highlight, #mainMenu .marked {
	background: [[ColorPalette::PrimaryPale]];
}

.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]];
}

/*}}}*/
Moki Kokoris is UN/DPI representative for the [[World Federation of Ukrainian Women's Organizations|http://www.wfuwo.org/]] and was the 14th woman to reach the North Pole and the first Ukrainian. Moki is the //Founder// of [[90 North|http://www.90-north.org]], an environmental educational program, the objective of which is to teach young students about the polar biospheres and how climate change affects them - with a specific focus on the indigenous peoples of the Arctic. Moki is a Contributing Arctic Editor to "The Polar Times", the journal of the American Polar Society. Partial affiliations list: American Himalayan Foundation, Children of Chernobyl Relief Fund, North American Association for Environmental Education, Will Steger Institute for Climate Change Education, Polar Bears International, Byrd Polar Research Center.

Email: [[moki@cloud9.net|http://moki@cloud9.net]]
<html>
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="600" height="400" flashvars="host=picasaweb.google.com&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fecology2001%2Falbumid%2F5205156492968145169%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</html>
Photos by Isobel Lowther, ''Kaleidoscope Experience''
<<forEachTiddler
    sortBy 
        tiddler.modified
    descending
    write 
        '(index < 10) ? "* [["+tiddler.title+"]]\n" : ""'
>>
//{{{
config.macros.saveRss = {};
config.macros.saveRss.handler = function(place)
{
	if(!readOnly)
		createTiddlyButton(place,'save rss','save rss',function(e){saveMultiRss();return false;});
}

window.getRssMarkers = function()
{
    var s = [];
    myregexp=/\|(?:.*?)\|(?:.*?)\|(.*?)\|(?:.*?)\|(.*?)\|/g;
    while((m = myregexp.exec(store.getTiddlerText("MultiRssConfig"))) != null)
         s.push("<link rel='alternate' type='application/rss+xml' title='%0' href='%1'>".format([m[1].trim(),m[2].trim()]));
    return s.splice(1,s.length).join("\n");
}

updateMarkupBlock_old_multirss = window.updateMarkupBlock;
window.updateMarkupBlock = function (s,blockName,tiddlerName)
{
    s = updateMarkupBlock_old_multirss.apply(this,arguments);
    if (blockName == "PRE-HEAD")
        s = lewcidRSSAddToMarkupBlock(s);
    return s;
}

window.lewcidRSSAddToMarkupBlock = function (s)
{
    var pos = s.indexOf("<!--PRE-HEAD-END-->");
    return ( s.substring(0,pos).replace("<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'>","") + "\n" + getRssMarkers() + "\n" + s.substring(pos) );
}

TiddlyWiki.prototype.rssgetTiddlers = function(field,includeTag,excludeTag)
{
          var results = [];
          this.forEachTiddler(function(title,tiddler)
          {
          if(excludeTag == undefined || excludeTag == '' || tiddler.tags.find(excludeTag) == null)
                        if(includeTag == undefined || includeTag == '' || tiddler.tags.find(includeTag)!=null)
                                      results.push(tiddler);
          });
          if(field)
                   results.sort(function (a,b) {if(a[field] == b[field]) return(0); else return (a[field] < b[field]) ? -1 : +1; });
          return results;
}

window.generateRss = function (tiddlers,title,subtitle)
{
	var s = [];
	var d = new Date();
	var u = store.getTiddlerText("SiteUrl");
	s.push("<" + "?xml version=\"1.0\"?" + ">");
	s.push("<rss version=\"2.0\">");
	s.push("<channel>");
	s.push("<title" + ">" + ((title && title != '') ? wikifyPlain("SiteTitle").htmlEncode()+ " | "+ title: wikifyPlain("SiteTitle").htmlEncode()) + "</title" + ">");
	if(u)
		s.push("<link>" + u.htmlEncode() + "</link>");
	s.push("<description>" + ((subtitle && subtitle != '')? subtitle : wikifyPlain("SiteSubtitle").htmlEncode()) + "</description>");
	s.push("<language>en-us</language>");
	s.push("<copyright>Copyright " + d.getFullYear() + " " + config.options.txtUserName.htmlEncode() + "</copyright>");
	s.push("<pubDate>" + d.toGMTString() + "</pubDate>");
	s.push("<lastBuildDate>" + d.toGMTString() + "</lastBuildDate>");
	s.push("<docs>http://blogs.law.harvard.edu/tech/rss</docs>");
	s.push("<generator>TiddlyWiki " + version.major + "." + version.minor + "." + version.revision + "</generator>");
	if (!tiddlers)
        var tiddlers = store.getTiddlers("modified","excludeLists");
	var n = config.numRssItems > tiddlers.length ? 0 : tiddlers.length-config.numRssItems;
	for (var t=tiddlers.length-1; t>=n; t--)
		s.push(tiddlers[t].saveToRss(u));
	s.push("</channel>");
	s.push("</rss>");
	return s.join("\n");
}


old_multiRss_saveChanges = window.saveChanges;
window.saveChanges = function(onlyIfDirty)
{
    var rssStatus = config.options.chkGenerateAnRssFeed;
    config.options.chkGenerateAnRssFeed = false;
    old_multiRss_saveChanges.apply(this,arguments);
    config.options.chkGenerateAnRssFeed = rssStatus;
    if(config.options.chkGenerateAnRssFeed)
        saveMultiRss();
}

window.saveMultiRss = function()
{
      var rssIndex = store.getTiddlerText("MultiRssConfig").split("\n");
      rssIndex = rssIndex.splice(1,rssIndex.length);
      for (var i=0; i<rssIndex.length; i++)
          {
          var rss = rssIndex[i].split("|");
          var localPath = getLocalPath(document.location.toString());
          var rssPath = getRssPath(localPath)+ (rss[5].trim());
          var rssSave = saveFile(rssPath,convertUnicodeToUTF8(generateRss(store.rssgetTiddlers("modified",rss[1].trim(),rss[2].trim()),rss[3].trim(),rss[4].trim())));
          if(rssSave)
              displayMessage(config.messages.rssSaved,"file://" + rssPath);
          else
              alert(config.messages.rssFailed);
          }
}

window.getRssPath = function(str) {
    var slash = (str.indexOf('/')!=-1)? '/':'\\';
    return str.substring(0,str.lastIndexOf(slash) + 1);
}

config.shadowTiddlers.MultiRssConfig = "| !includeTag | !excludeTag | !title | !description | !filename |\n| rss | |rss only| this feed has rss tiddlers only | rss-feed.xml |\n| lewcidExtension| |plugins| yiddlywiki plugins only |plugins.xml|\n| | systemConfig| Main RSS feed | everything but plugins | rss.xml|";
//}}}
The ''NGO Committee on Education'' is a New York-based Substantive Committee of [[CONGO|Conference Of NGOs]] - the ''C''onference ''O''f ''N''on-''G''overnmental ''O''rganizations in Consultative Relationship with the United Nations - and was founded in November 2000.

The Committee normally holds its meetings on the third Thursday of each month between September and June.  Please contact the Co-Chairs at [[co-chairs@ngo-education.net|mailto:co-chairs@ngo-education.net]], or use the [[contact form|Contact form]] if you would like to receive information on upcoming meetings, and/or to be added to the email list for the Committee.

The ''NGO Committee on Education'' has made a priority commitment to the [[United Nations Decade of Education for Sustainable Development]] (2005-2014) throughout the Decade. This commitment was launched with our co-sponsorship of a workshop on ''Education, Youth & Technology for Sustainable Development'' at the ''59th Annual DPI/NGO Conference'' on September 9, 2007. For more details on the workshop, please visit http://www.congo-education.net/workshop
* [[Executive Committee]]
* [[Information and Communications Sub-Committee]]
* [[Web sites|Committee web sites]]
** [[NGO Committee on Education Web site]] - [[www.congo-education.net/|http://www.congo-education.net/]]
*** [[Education, Youth & Technology for Sustainable Development]] - [[www.congo-education.net/workshop/|http://www.congo-education.net/workshop/]]
*** [[UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] - [[www.un-documents.net/|http://www.un-documents.net/]]
*** [[Climate Change 2.0]] - [[www.climate-change-two.net/|http://www.climate-change-two.net/]]
*** [[Climate Change 2007: IPCC Fourth Assessment Report]] - [[www.climate-change-two.net/ar4-spm/|www.climate-change-two.net/ar4-spm/]] 
*** [[The Wealth of Networks: How Social Production Transforms Markets and Freedom]] - [[www.climate-change-two.net/wealth-of-networks|http://www.climate-change-two.net/wealth-of-networks/]]
*** [[Economics of Climate Change: The Stern Review]] - [[www.climate-change-two.net/stern-review/|http://www.climate-changetwo.net/stern-review/]]
*** [[Rescuing a Planet Under Stress and a Civilization in Trouble: Plan B 2.1 (beta)]] - [[www.climate-change-two.net/plan-b/|http://www.climate-change-two.net/plan-b/]]
*** [[udhr@60+ Protection and realization of human rights in a knowledge-based universe]] - [[www.ngo-framework.net/|http://www.ngo-framework.net/]]
*** [[TiddlyWikiPerfect: An emerging hybrid information species]] - [[www.tiddlywikiperfect.net/|http://www.tiddlywikiperfect.net/]]
** ''E-mail lists''
*** [[ngo-education@googlegroups.com]]
The main web site of the [[NGO Committee on Education]] includes an extensive collection of documents relating to education for sustainable development.
+++[NGO Committee on Education Web site]
{{iframe{''Note'': This is a "framed" page from the '' '' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.congo-education.net/}}}
<html><iframe
	src = "http://www.congo-education.net/"
	title = "NGO Committee on Education"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
===
The mandate for the [[Climate Change Sub-Committee]] is based on the common commitments made in [[Climate Change Threats - An NGO Framework for Action]], below:
!!Climate Change Threats - An NGO Framework for Action
<<<
<<tiddler "Climate Change Threats - An NGO Framework for Action">>
<<<
[img[http://www.climate-change-two.net/climate.png]]
> //Adopted at United Nations Headquarters, New York, NY. Friday 6 September, 2007//
@@font-size:150%;font-weight:bold;Climate Change Threats - An NGO Framework for Action@@ ^^/1^^
<<<
<<tiddler "Climate Change Threats - An NGO Framework for Action">>
<<<
1/ Adaptation implies making lifestyle adjustments. Mitigation implies alleviating the problem.

[[Declaration Process|60th Annual DPI/NGO Conference Declaration: Process]]
http://www.ngodpiexecom.org/
/***
|''Name:''|NestedSlidersPlugin|
|''Source:''|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|''Author:''|Eric Shulman - ELS Design Studios|
|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|''~CoreVersion:''|2.0.10|

Quickly make any tiddler content into an expandable 'slider' panel, without needing to create a separate tiddler to contain the slider content.  Optional syntax allows ''default to open'', ''custom button label/tooltip'' and ''automatic blockquote formatting.''

You can also 'nest' these sliders as deep as you like (see complex nesting example below), so that expandable 'tree-like' hierarchical displays can be created.  This is most useful when converting existing in-line text content to create in-line annotations, footnotes, context-sensitive help, or other subordinate information displays.

For more details, please click on a section headline below:
++++!!!!![Configuration]>
Debugging messages for 'lazy sliders' deferred rendering:
<<option chkDebugLazySliderDefer>> show debugging alert when deferring slider rendering
<<option chkDebugLazySliderRender>> show debugging alert when deferred slider is actually rendered
===
++++!!!!![Usage and Options]>
When installed, this plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content.  Use {{{+++}}} and {{{===}}} to delimit the slider content.  Additional optional syntax elements let you specify
*default to open
** closed  {{{+++}}} and  {{{===}}}
** open {{{++++}}} and {{{===}}}
>> mark the start and end of the slider definition, respectively.  When the extra {{{+}}} is used, the slider will be open when initially displayed.
*cookiename: {{{(cookiename)}}} - saves the slider opened/closed state, and restores this state whenever the slider is re-rendered.
*heading level
*floater: (with optional CSS width value)
*mouse auto rollover: {{{*}}} ^^ automatically opens/closes slider on "rollover" as well as when clicked^^
*custom class/label/tooltip/accesskey: {{{{{class{[label=key|tooltip]}}}}}} ^^uses custom label/tooltip/accesskey.  {{{{{class{...}}}}}}, {{{=key}}} and {{{|tooltip}}} are optional.  'class' is any valid CSS class name, used to style the slider label text.  'key' must be a ''single letter only''.  Default labels/tootips are: ">" (more) and "<" (less), with no default access key assignment.^^
*automatic blockquote:  {{{">"}}} //(without the quotes)// ^^automatically adds blockquote formatting to slider content^^
*deferred rendering
The complete syntax, using all options, is:
//{{{
++++(cookiename)!!!!!^width^*{{class{[label=key|tooltip]}}}>...
content goes here
===
//}}}

* {{{!}}} through {{{!!!!!}}}^^
displays the slider label using a formatted headline (Hn) style instead of a button/link style^^
* {{{^width^}}} (or just {{{^}}})^^
makes the slider 'float' on top of other content rather than shifting that content downward.  'width' must be a valid CSS value (e.g., "30em", "180px", "50%", etc.).  If omitted, the default width is "auto" (i.e., fit to content)^^

* 
*
* {{{"..."}}} //(without the quotes)//^^
defers rendering of closed sliders until the first time they are opened.  //Note: deferred rendering may produce unexpected results in some cases.  Use with care.//^^

//Note: to make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the {{{+++}}} 'start slider' or preceding the {{{===}}} 'end slider' sequence are automatically suppressed so that excess whitespace is eliminated from the output.//
===
++++!!!!![Examples]>
simple in-line slider: 
{{{
+++
   content
===
}}}
+++
   content
===
----
use a custom label and tooltip: 
{{{
+++[label|tooltip]
   content
===
}}}
+++[label|tooltip]
   content
===
----
content automatically blockquoted: 
{{{
+++>
   content
===
}}}
+++>
   content
===
----
all options combined //(default open, cookie, heading, sized floater, rollover, class, label/tooltip/key, blockquoted, deferred)//
{{{
++++(testcookie)!!!^30em^*{{big{[label=Z|click or press Alt-Z to open]}}}>...
   content
===
}}}
++++(testcookie)!!!^30em^*{{big{[label=Z|click or press Alt-Z to open]}}}>...
   content
===
----
complex nesting example:
{{{
+++^[get info...=I|click for information or press Alt-I]
   put some general information here, plus a floating slider with more specific info:
   +++^10em^[view details...|click for details]
      put some detail here, which could include a rollover with a +++^25em^*[glossary definition]explaining technical terms===
   ===
===
}}}
+++^[get info...=I|click for information or press Alt-I]
   put some general information here, plus a floating slider with more specific info:
   +++^10em^[view details...|click for details]
      put some detail here, which could include a rollover with a +++^25em^*[glossary definition]explaining technical terms===
   ===
===
===
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''NestedSlidersPlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''2006.07.28 - 2.0.0'' added custom class syntax around label/tip/key syntax: {{{{{classname{[label=key|tip]}}}}}}
''2006.07.25 - 1.9.3'' when parsing slider, save default open/closed state in button element, then in onClickNestedSlider(), if slider state matches saved default, instead of saving cookie, delete it.  Significantly reduces the 'cookie overhead' when default slider states are used.
''2006.06.29 - 1.9.2'' in onClickNestedSlider(), when setting focus to first control, skip over type="hidden"
''2006.06.22 - 1.9.1'' added panel.defaultPanelWidth to save requested panel width, even after resizing has changed the style value
''2006.05.11 - 1.9.0'' added optional '^width^' syntax for floating sliders and '=key' syntax for setting an access key on a slider label
''2006.05.09 - 1.8.0'' in onClickNestedSlider(), when showing panel, set focus to first child input/textarea/select element
''2006.04.24 - 1.7.8'' in adjustSliderPos(), if floating panel is contained inside another floating panel, subtract offset of containing panel to find correct position
''2006.02.16 - 1.7.7'' corrected deferred rendering to account for use-case where show/hide state is tracked in a cookie
''2006.02.15 - 1.7.6'' in adjustSliderPos(), ensure that floating panel is positioned completely within the browser window (i.e., does not go beyond the right edge of the browser window)
''2006.02.04 - 1.7.5'' add 'var' to unintended global variable declarations to avoid FireFox 1.5.0.1 crash bug when assigning to globals
''2006.01.18 - 1.7.4'' only define adjustSliderPos() function if it has not already been provided by another plugin.  This lets other plugins 'hijack' the function even when they are loaded first.
''2006.01.16 - 1.7.3'' added adjustSliderPos(place,btn,panel,panelClass) function to permit specialized logic for placement of floating panels.  While it provides improved placement for many uses of floating panels, it exhibits a relative offset positioning error when used within *nested* floating panels.  Short-term workaround is to only adjust the position for 'top-level' floaters.
''2006.01.16 - 1.7.2'' added button property to slider panel elements so that slider panel can tell which button it belongs to.  Also, re-activated and corrected animation handling so that nested sliders aren't clipped by hijacking Slider.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends
''2006.01.14 - 1.7.1'' added optional "^" syntax for floating panels.  Defines new CSS class, ".floatingPanel", as an alternative for standard in-line ".sliderPanel" styles.
''2006.01.14 - 1.7.0'' added optional "*" syntax for rollover handling to show/hide slider without requiring a click (Based on a suggestion by tw4efl)
''2006.01.03 - 1.6.2'' When using optional "!" heading style, instead of creating a clickable "Hn" element, create an "A" element inside the "Hn" element.  (allows click-through in SlideShowPlugin, which captures nearly all click events, except for hyperlinks)
''2005.12.15 - 1.6.1'' added optional "..." syntax to invoke deferred ('lazy') rendering for initially hidden sliders
removed checkbox option for 'global' application of lazy sliders
''2005.11.25 - 1.6.0'' added optional handling for 'lazy sliders' (deferred rendering for initially hidden sliders)
''2005.11.21 - 1.5.1'' revised regular expressions: if present, a single newline //preceding// and/or //following// a slider definition will be suppressed so start/end syntax can be place on separate lines in the tiddler 'source' for improved readability.  Similarly, any whitespace (newlines, tabs, spaces, etc.) trailing the 'start slider' syntax or preceding the 'end slider' syntax is also suppressed.
''2005.11.20 - 1.5.0'' added (cookiename) syntax for optional tracking and restoring of slider open/close state
''2005.11.11 - 1.4.0'' added !!!!! syntax to render slider label as a header (Hn) style instead of a button/link style
''2005.11.07 - 1.3.0'' removed alternative syntax {{{(((}}} and {{{)))}}} (so they can be used by other
formatting extensions) and simplified/improved regular expressions to trim multiple excess newlines
''2005.11.05 - 1.2.1'' changed name to NestedSlidersPlugin
more documentation
''2005.11.04 - 1.2.0'' added alternative character-mode syntax {{{(((}}} and {{{)))}}}
tweaked "eat newlines" logic for line-mode {{{+++}}} and {{{===}}} syntax
''2005.11.03 - 1.1.1'' fixed toggling of default tooltips ("more..." and "less...") when a non-default button label is used
code cleanup, added documentation
''2005.11.03 - 1.1.0'' changed delimiter syntax from {{{(((}}} and {{{)))}}} to {{{+++}}} and {{{===}}}
changed name to EasySlidersPlugin
''2005.11.03 - 1.0.0'' initial public release
<<<
!!!!!Credits
<<<
This feature was implemented by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]] with initial research and suggestions from RodneyGomes, GeoffSlocock, and PaulPetterson.
<<<
!!!!!Code
***/
//{{{
version.extensions.nestedSliders = {major: 2, minor: 0, revision: 0, date: new Date(2006,7,28)};
//}}}

//{{{
// options for deferred rendering of sliders that are not initially displayed
if (config.options.chkDebugLazySliderDefer==undefined) config.options.chkDebugLazySliderDefer=false;
if (config.options.chkDebugLazySliderRender==undefined) config.options.chkDebugLazySliderRender=false;

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

//{{{
config.formatters.push( {
	name: "nestedSliders",
	match: "\\n?\\+{3}",
	terminator: "\\s*\\={3}\\n?",
	lookahead: "\\n?\\+{3}(\\+)?(\\([^\\)]*\\))?(\\!*)?(\\^(?:[^\\^\\*\\[\\>]*\\^)?)?(\\*)?(?:\\{\\{([\\w]+[\\s\\w]*)\\{)?(\\[[^\\]]*\\])?(?:\\}{3})?(\\>)?(\\.\\.\\.)?\\s*",
	handler: function(w)
		{
			// defopen=lookaheadMatch[1]
			// cookiename=lookaheadMatch[2]
			// header=lookaheadMatch[3]
			// panelwidth=lookaheadMatch[4]
			// rollover=lookaheadMatch[5]
			// class=lookaheadMatch[6]
			// label=lookaheadMatch[7]
			// blockquote=lookaheadMatch[8]
			// deferred=lookaheadMatch[9]

			 lookaheadRegExp = new RegExp(this.lookahead,"mg");
			lookaheadRegExp.lastIndex = w.matchStart;
			var lookaheadMatch = lookaheadRegExp.exec(w.source)
			if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
			{
				// location for rendering button and panel
				var place=w.output;

				// default to closed, no cookie, no accesskey
				var show="none"; var title=">"; var tooltip="show"; var cookie=""; var key="";

				// extra "+", default to open
				if (lookaheadMatch[1])
					{ show="block"; title="<"; tooltip="hide"; }

				// cookie, use saved open/closed state
				if (lookaheadMatch[2]) {
					cookie=lookaheadMatch[2].trim().slice(1,-1);
					cookie="chkSlider"+cookie;
					if (config.options[cookie]==undefined)
						{ config.options[cookie] = (show=="block") }
					if (config.options[cookie])
						{ show="block"; title="<"; tooltip="hide"; }
					else
						{ show="none"; title=">"; tooltip="show"; }
				}

				// parse custom label/tooltip/accesskey: [label=X|tooltip]
				if (lookaheadMatch[7]) {
					title = lookaheadMatch[7].trim().slice(1,-1);
					var pos=title.indexOf("|");
					if (pos!=-1) { tooltip = title.substr(pos+1,title.length); title=title.substr(0,pos); }
					if (title.substr(title.length-2,1)=="=") { key=title.substr(title.length-1,1); title=title.slice(0,-2); }
					if (pos==-1) tooltip += " "+title; // default tooltip: "show/hide <title>"
				}

				// create the button
				if (lookaheadMatch[3]) { // use "Hn" header format instead of button/link
					var lvl=(lookaheadMatch[3].length>6)?6:lookaheadMatch[3].length;
					var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,lookaheadMatch[6],title);
					btn.onclick=onClickNestedSlider;
					btn.setAttribute("href","javascript:;");
					btn.setAttribute("title",tooltip);
				}
				else
					var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider,lookaheadMatch[6]);

				// set extra button attributes
				btn.sliderCookie = cookie; // save the cookiename (if any) in the button object
				btn.defOpen=lookaheadMatch[1]!=null; // save default open/closed state (boolean)
				btn.keyparam=key; // save the access key letter ("" if none)
				if (key.length) {
					btn.setAttribute("accessKey",key); // init access key
					btn.onfocus=function(){this.setAttribute("accessKey",this.keyparam);}; // **reclaim** access key on focus
				}

				// "non-click" MouseOver open/close slider
				if (lookaheadMatch[5]) btn.onmouseover=onClickNestedSlider;

				// create slider panel
				var panelClass=lookaheadMatch[4]?"floatingPanel":"sliderPanel";
				var panel=createTiddlyElement(place,"div",null,panelClass,null);
				panel.button = btn; // so the slider panel know which button it belongs to
				panel.defaultPanelWidth=(lookaheadMatch[4] && lookaheadMatch[4].length>2)?lookaheadMatch[4].slice(1,-1):""; // save requested panel size
				btn.sliderPanel=panel;
				panel.style.display = show;
				panel.style.width=panel.defaultPanelWidth;

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

// TBD: ignore 'quoted' delimiters (e.g., "{{{+++foo===}}}" isn't really a slider)
function findMatchingDelimiter(src,starttext,endtext) {
	var startpos = 0;
	var endpos = src.indexOf(endtext);
	// check for nested delimiters
	while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {
		// count number of nested 'starts'
		var startcount=0;
		var temp = src.substring(startpos,endpos-1);
		var pos=temp.indexOf(starttext);
		while (pos!=-1)  { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }
		// set up to check for additional 'starts' after adjusting endpos
		startpos=endpos+endtext.length;
		// find endpos for corresponding number of matching 'ends'
		while (startcount && endpos!=-1) {
			endpos = src.indexOf(endtext,endpos+endtext.length);
			startcount--;
		}
	}
	return (endpos==-1)?src.length:endpos;
}
//}}}

//{{{
window.onClickNestedSlider=function(e)
{
	if (!e) var e = window.event;
	var theTarget = resolveTarget(e);
	var theLabel = theTarget.firstChild.data;
	var theSlider = theTarget.sliderPanel
	var isOpen = theSlider.style.display!="none";
	// if using default button labels, toggle labels
	if (theLabel==">") theTarget.firstChild.data = "<";
	else if (theLabel=="<") theTarget.firstChild.data = ">";
	// if using default tooltips, toggle tooltips
	if (theTarget.getAttribute("title")=="show")
		theTarget.setAttribute("title","hide");
	else if (theTarget.getAttribute("title")=="hide")
		theTarget.setAttribute("title","show");
	if (theTarget.getAttribute("title")=="show "+theLabel)
		theTarget.setAttribute("title","hide "+theLabel);
	else if (theTarget.getAttribute("title")=="hide "+theLabel)
		theTarget.setAttribute("title","show "+theLabel);
	// deferred rendering (if needed)
	if (theSlider.getAttribute("rendered")=="false") {
		if (config.options.chkDebugLazySliderRender)
			alert("rendering '"+theLabel+"':\n\n"+theSlider.getAttribute("raw"));
		var place=theSlider;
		if (theSlider.getAttribute("blockquote")=="true")
			place=createTiddlyElement(place,"blockquote");
		wikify(theSlider.getAttribute("raw"),place);
		theSlider.setAttribute("rendered","true");
	}
	// show/hide the slider
	if(config.options.chkAnimate)
		anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));
	else
		theSlider.style.display = isOpen ? "none" : "block";
	// reset to default width (might have been changed via plugin code)
	theSlider.style.width=theSlider.defaultPanelWidth;
	// align slider/floater position with target button
	if (!isOpen) adjustSliderPos(theSlider.parentNode,theTarget,theSlider,theSlider.className);
	// if showing panel, set focus to first 'focus-able' element in panel
	if (theSlider.style.display!="none") {
		var ctrls=theSlider.getElementsByTagName("*");
		for (var c=0; c<ctrls.length; c++) {
			var t=ctrls[c].tagName.toLowerCase();
			if ((t=="input" && ctrls[c].type!="hidden") || t=="textarea" || t=="select")
				{ ctrls[c].focus(); break; }
		}
	}
	if (this.sliderCookie && this.sliderCookie.length) {
		config.options[this.sliderCookie]=!isOpen;
		if (config.options[this.sliderCookie]!=this.defOpen)
			saveOptionCookie(this.sliderCookie);
		else { // remove cookie if slider is in default display state
			var ex=new Date(); ex.setTime(ex.getTime()-1000);
			document.cookie = this.sliderCookie+"=novalue; path=/; expires="+ex.toGMTString();
		}
	}
	return false;
}

// hijack animation handler 'stop' handler so overflow is visible after animation has completed
Slider.prototype.coreStop = Slider.prototype.stop;
Slider.prototype.stop = function() { this.coreStop(); this.element.style.overflow = "visible"; }

// adjust panel position based on button position
if (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel,panelClass) {
	if (panelClass=="floatingPanel") {
		var left=0;
		var top=btn.offsetHeight; 
		if (place.style.position!="relative") {
			var left=findPosX(btn);
			var top=findPosY(btn)+btn.offsetHeight;
			var p=place; while (p && p.className!='floatingPanel') p=p.parentNode;
			if (p) { left-=findPosX(p); top-=findPosY(p); }
		}
		if (left+panel.offsetWidth > getWindowWidth()) left=getWindowWidth()-panel.offsetWidth-10;
		panel.style.left=left+"px"; panel.style.top=top+"px";
	}
}

function getWindowWidth() {
	if(document.width!=undefined)
		return document.width; // moz (FF)
	if(document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
		return document.documentElement.clientWidth; // IE6
	if(document.body && ( document.body.clientWidth || document.body.clientHeight ) )
		return document.body.clientWidth; // IE4
	if(window.innerWidth!=undefined)
		return window.innerWidth; // IE - general
	return 0; // unknown
}
//}}}
/***
|Name|NewDocumentPlugin|
|Source|http://www.TiddlyTools.com/#NewDocumentPlugin|
|Version|1.7.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Quickly create new TiddlyWiki documents from your existing document, with just one click|

Use the {{{<<newDocument>>}}} macro to place a "new document" link into your sidebar/mainmenu/any tiddler (wherever you like).  Select this command to automatically create a "new.html" document containing a specific set of tagged tiddlers.  Optional parameters let you specify an alternate path/filename for the new file, or different tags to match.  You can also indicate "ask" for either parameter, which will  trigger a prompt for input when the command is selected.

!!!!!Usage
<<<
{{{<<newDocument label:text prompt:text filename tag tag tag...>>}}}
{{{<<newDocument label:text prompt:text filename all>>}}}
{{{<<newDocument label:text prompt:text filename snap ID>>}}}
{{{<<newDocument label:text prompt:text filename snap here>>}}}
{{{<<newDocument label:text prompt:text nofile print ID>>}}}
{{{<<newDocument label:text prompt:text nofile print here>>}}}
 where:
* ''label:text'' defines //optional// alternative link text (replaces default "new document" display)
* ''prompt:text'' defines //optional// alternative tooltip text for 'mouseover' prompting (replaces default hard-coded tooltip text)
* ''filename'' is any local path-and-filename.  If no parameters are provided, the default is to create the file "new.html" in the current directory.  If a filename is provided without a path (i.e., there is no "/" in the input), then the current directory is also assumed.  Otherwise, this parameter is expected to contain the complete path and filename needed to write the file to your local hard disk.  If ''ask'' is used in place of the filename parameter then, when the command link is selected, a message box will be automatically displayed so you can select/enter the path and filename.
* ''tag tag tag...'' is a list of one or more space-separated tags (use quotes or {{{[[]]}}} around tags that contain spaces).  The new document will include all tiddlers that match at least one of the tags in the list.  The default is to include tiddlers tagged with <<tag includeNew>>.    The special value ''all'' may be used to match every tiddler (even those without tags).   If ''ask'' is used in place of the tags then, when the command link is selected, a message box will be automatically displayed so you can enter the desired tags at that time.
* When you use the keyword ''snap'' in place of the tags, you can generate a file containing the //rendered//  CSS-and-HTML that is currently being displayed in browser.  By default, the snapshop uses the 'contentWrapper' DOM element ID to automatically include all the TiddlyWiki elements, such as the sidebars and header, in addition to the center 'story' column containing the tiddler content.
* When you use the keyword ''print'' in place of the tags, a snapshot is generated, but the contents are not written to a file.  Instead, they are displayed in a separate browser tab/window, and the print dialog for that tab/window is automatically invoked.
* You can limit the snapshot to capture only a portion of the rendered TiddlyWiki elements by specifiying an optional alternate DOM element ID, such as "displayArea" (the entire center 'story' column) or even just a single tiddler (e.g., "tidderMyTiddlerTitle", assuming that "MyTiddlerTitle" is currently displayed).  Only the portions of the document that are contained //within// the specified DOM element will be transcribed to the resulting snapshot file.  If ''ask'' is used in place of a DOM element ID, you will be prompted to enter the ID (default is "contentWrapper") when the snapshot is being taken.  This allows you to easily enter the ID of any currently displayed tiddler to make quick snapshots of specific tiddlers.  If ''here'' is used in place of a DOM element ID, the current tiddler id is used.

Note: as of version 1.4.0 of this plugin, support for selecting tiddlers by using tag *expressions* has been replaced with simpler, more efficient "containsAny()" logic.  To create new ~TiddlyWiki documents that contain only those tiddlers selected with advanced AND/OR/NOT Boolean expressions, you can use the filtering features provided by the ExportTiddlersPlugin (see www.TiddlyTools.com/#ExportTiddlersPlugin).
<<<
!!!!!Examples:
<<<
{{{<<newDocument>>}}}
equivalent to {{{<<newDocument new.htm includeNew systemTiddlers>>}}}
creates default "new.html" containing tiddlers tagged with either<<tag includeNew>>or<<tag systemTiddlers>>
try it: <<newDocument>>

{{{<<newDocument empty.html systemTiddlers>>}}}
creates "empty.html" containing only tiddlers tagged with<<tag systemTiddlers>>
//(reproduces old-style (pre 2.0.2) empty file)//
try it: <<newDocument empty.html systemTiddlers>>

{{{<<newDocument "label:create Import/Export starter" ask importexport>>}}}
save importexport tiddlers to a new file, prompts for path/file
try it: <<newDocument "label:create Import/Export starter" ask importexport>>

{{{<<newDocument ask ask>>}}}
prompts for path/file, prompts for tags to match
try it: <<newDocument ask ask>>

{{{<<newDocument ask all>>}}}
save all current TiddlyWiki contents to a new file, prompts for path/file
try it: <<newDocument ask all>>

{{{<<newDocument ask snap>>}}}
generates snapshot of currently displayed document, prompts for path/file
try it: <<newDocument ask snap>>

{{{<<newDocument ask snap here>>}}}
generates snapshot of this tiddler ONLY, prompts for path/file
try it: <<newDocument ask snap here>>

{{{<<newDocument ask print here>>}}}
prints a snapshot of this tiddler ONLY
try it: <<newDocument nofile print here>>

<<<
!!!!!Installation
<<<
Import (or copy/paste) the following tiddlers into your document:
''NewDocumentPlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''2007.12.04 [*.*.*]'' update for TW2.3.0: replaced deprecated core functions, regexps, and macros
''2007.03.30 [1.7.0]'' added support for "print" param as alternative for "snap".  When "print" is used, the filename is ignored and ouput is directed to another browser tab/window, where the print dialog is then automatically triggered.
''2007.03.30 [1.6.1]'' added support for "here" keyword for current tiddler elementID and "prompt:text" param for specifying tooltip text
''2007.02.12 [1.6.0]'' in onClickNewDocument(), reset HTML source 'markup'
''2006.10.23 [1.5.1]'' in onClickNewDocument(), get saved parameter value for snapID instead of using default "contentWrapper" (oops!)
''2006.10.18 [1.5.0]'' new optional param for 'snap'... specify alternative DOM element ID (default is still "contentWrapper").  Based on a suggestion from Xavier Verges.
''2006.08.03 [1.4.3]'' in promptForFilename(), for IE (WinXP only), added handling for UserAccounts.CommonDialog
''2006.07.29 [1.4.2]'' in onClickNewDocument(), okmsg display is now linked to newly created file
''2006.07.24 [1.4.1]'' in promptForFilename(), check for nsIFilePicker.returnCancel to allow nsIFilePicker.returnOK **OR** nsIFilePicker.returnReplace to be processed.
''2006.05.23 [1.4.0]'' due to very poor performance, support for tag *expressions* has been removed, in favor of a simpler "containsAny()" scan for tags.
''2006.04.09 [1.3.6]'' in onClickNewDocument, added call to convertUnicodeToUTF8() to better handle international characters.
''2006.03.15 [1.3.5]'' added nsIFilePicker() handler for selecting filename in moz-based browsers.  IE and other non-moz browsers still use simple prompt() dialog
''2006.03.15 [1.3.0]'' added "label:text" param for custom link text.  added special "all" filter parameter for "save as..." handling (writes all tiddlers to output file)
''2006.03.09 [1.2.0]'' added special "snap" filter parameter to generate and write "snapshot" files containing static HTML+CSS for currently rendered document.
''2006.02.24 [1.1.2]'' Fix incompatiblity with TW 2.0.5 by removing custom definition of getLocalPath() (which is now part of TW core)
''2006.02.03 [1.1.1]'' concatentate 'extra' params so that tag expressions don't have to be quoted.   moved all text to 'formatted' string definitions for easier translation.
''2006.02.03 [1.1.0]'' added support for tag EXPRESSIONS.  plus improved documentation and code cleanup
''2006.02.03 [1.0.0]'' Created.
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
<<<
!!!!!Code
***/
//{{{
version.extensions.newDocument = {major: 1, minor: 7, revision: 0, date: new Date(2007,3,30)};

config.macros.newDocument = {
	newlabel: "new document",
	newprompt: "Create a new TiddlyWiki 'starter' document",
	newdefault: "new.html",
	allparam: "all",
	saveaslabel: "save as...",
	saveasprompt: "Save current TiddlyWiki to a different file",
	printparam: "print",
	snapparam: "snap",
	snaplabel: "create a snapshot",
	snapprompt: "Create a 'snapshot' of the current TiddlyWiki display",
	snapdefault: "snapshot.html",
	snapID: "contentWrapper",
	snapIDprompt: "Please enter a DOM element ID for the desired content",
	snapIDerrmsg: "Unrecognized document element ID: '%0'",
	askparam: "ask",
	hereparam: "here",
	labelparam: "label:",
	promptparam: "prompt:",
	fileprompt: "Please enter a filename",
	filter: "includeNew",
	filterprompt: "Match one or more tags:\n(space-separated, use [[...]] around tags containing spaces)",
	filtererrmsg: "Error in tag filter '%0'",
	snapmsg: "Document snapshot written to %1",
	okmsg: "%0 tiddlers written to %1",
	failmsg: "An error occurred while creating %0"
};

config.macros.newDocument.handler = function(place,macroName,params) {

	var path=getLocalPath(document.location.href);
	var slashpos=path.lastIndexOf("/"); if (slashpos==-1) slashpos=path.lastIndexOf("\\"); 
	if (slashpos!=-1) path = path.substr(0,slashpos+1); // remove filename from path, leave the trailing slash

	if (params[0] && params[0].substr(0,config.macros.newDocument.labelparam.length)==config.macros.newDocument.labelparam)
		var label=params.shift().substr(config.macros.newDocument.labelparam.length)
	if (params[0] && params[0].substr(0,config.macros.newDocument.promptparam.length)==config.macros.newDocument.promptparam)
		var prompt=params.shift().substr(config.macros.newDocument.promptparam.length)
	var filename=params.shift(); if (!filename) filename=config.macros.newDocument.newdefault;
	if (params[0]==config.macros.newDocument.snapparam || params[0]==config.macros.newDocument.printparam) {
		var printmode=(params[0]==config.macros.newDocument.printparam);
		params.shift();
		if (!label) var label=config.macros.newDocument.snaplabel;
		if (!prompt) var prompt=config.macros.newDocument.snapprompt;
		var defaultfile=config.macros.newDocument.snapdefault;
		var snapID=config.macros.newDocument.snapID;// default to "contentWrapper"
		if (params[0]) var snapID=params.shift(); // alternate DOM element for snapshot
	}
	if (params[0]==config.macros.newDocument.allparam) {
		if (!label) var label=config.macros.newDocument.saveaslabel;
		if (!prompt) var prompt=config.macros.newDocument.saveasprompt;
		var defaultfile=getLocalPath(document.location.href);
		var slashpos=defaultfile.lastIndexOf("/"); if (slashpos==-1) slashpos=defaultfile.lastIndexOf("\\");
		if (slashpos!=-1) defaultfile=defaultfile.substr(slashpos+1); // get filename only
	}
	if (!prompt) var prompt=config.macros.newDocument.newprompt;
	if (!label) var label=config.macros.newDocument.newlabel;
	if (!defaultfile) var defaultfile=config.macros.newDocument.newdefault;

	var btn=createTiddlyButton(place,label,prompt,onClickNewDocument);
	btn.path=path;
	btn.file=filename;
	btn.defaultfile=defaultfile;
	btn.snapID=snapID; // NULL unless snapshot is being taken
	btn.printmode=printmode;
	btn.filter=params.length?params:[config.macros.newDocument.filter]; 
}

// IE needs explicit global scoping for functions called by browser events
window.onClickNewDocument=function(e)
{
	if (!e) var e = window.event; var btn=resolveTarget(e);

	// assemble document content, write file, report result
	var okmsg=config.macros.newDocument.okmsg;
	var failmsg=config.macros.newDocument.failmsg;
	var count=0;
	var out="";
	if (btn.snapID) { // HTML+CSS snapshot
		var snapID=btn.snapID;
		if (btn.snapID==config.macros.newDocument.askparam)
			snapID=prompt(config.macros.newDocument.snapIDprompt,config.macros.newDocument.snapID);
		if (btn.snapID==config.macros.newDocument.hereparam)
			{ var here=story.findContainingTiddler(btn); if (here) snapID=here.id; }
		if (!document.getElementById(snapID)) { // if specified element does not exist
			if (snapID) // ID=null if prompt was cancelled by user
				displayMessage(config.macros.newDocument.snapIDerrmsg.format([snapID]));
			e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return(false);
		}
		var styles=document.getElementsByTagName("style");
		out+="<html>\n<head>\n<style>\n";
		for(var i=0; i < styles.length; i++)
			out +="/* stylesheet from tiddler:"+styles[i].getAttribute("id")+" */\n"+styles[i].innerHTML+"\n\n";
		out+="</style>\n</head>\n<body>\n\n"+document.getElementById(snapID).innerHTML+"\n\n</body>\n</html>";
		okmsg=config.macros.newDocument.snapmsg;
	} else { // TW starter document
		// get the TiddlyWiki core code source
		var sourcefile=getLocalPath(document.location.href);
		var source=loadFile(sourcefile);
		if(source==null) { alert(config.messages.cantSaveError); return null; }
		// reset existing HTML source markup
		source=updateMarkupBlock(source,"PRE-HEAD");
		source=updateMarkupBlock(source,"POST-HEAD");
		source=updateMarkupBlock(source,"PRE-BODY");
		source=updateMarkupBlock(source,"POST-BODY");
		// find store area
		var posOpeningDiv=source.indexOf(startSaveArea);
		var posClosingDiv=source.lastIndexOf(endSaveArea);
		if((posOpeningDiv==-1)||(posClosingDiv==-1)) { alert(config.messages.invalidFileError.format([sourcefile])); return; }
		// get the matching tiddler divs
		var match=btn.filter;
		if (match[0]==config.macros.newDocument.askparam) { // ask user for tags
			var newfilt=prompt(config.macros.newDocument.filterprompt,config.macros.newDocument.filter);
			if (!newfilt) return;  // cancelled by user
			match=newfilt.readMacroParams();
		}
		var storeAreaDivs=[];
		var tiddlers=store.getTiddlers('title');
		for (var i=0; i<tiddlers.length; i++)
			if (match[0]==config.macros.newDocument.allparam || (tiddlers[i].tags && tiddlers[i].tags.containsAny(match)) )
				storeAreaDivs.push(store.getSaver().externalizeTiddler(store,tiddlers[i]));
		out+=source.substr(0,posOpeningDiv+startSaveArea.length);
		out+=convertUnicodeToUTF8(storeAreaDivs.join("\n"))+"\n\t\t";
		out+=source.substr(posClosingDiv);
		count=storeAreaDivs.length;
	}
	if (btn.printmode) {
		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
	} else {
		// get output path/filename
		var filename=btn.file;
		if (filename==config.macros.newDocument.askparam)
			filename=promptForFilename(config.macros.newDocument.fileprompt,btn.path,btn.defaultfile);
		if (!filename) return; // cancelled by user
		// if specified file does not include a path, assemble fully qualified path and filename
		var slashpos=filename.lastIndexOf("/"); if (slashpos==-1) slashpos=filename.lastIndexOf("\\");
		if (slashpos==-1) filename=btn.path+filename;
		var ok=saveFile(filename,out);
		var msg=ok?okmsg.format([count,filename]):failmsg.format([filename]);
		var link=ok?"file:///"+filename.replace(/\\/g,'/'):""; // change local path to link text
		clearMessage(); displayMessage(msg,link);
	}
	e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return(false);
}
//}}}

//{{{
function promptForFilename(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 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;
}
//}}}
/***
|Name:|NewMeansNewPlugin|
|Description:|If 'New Tiddler' already exists then create 'New Tiddler (1)' and so on|
|Version:|1.1 ($Rev: 2263 $)|
|Date:|$Date: 2007-06-13 04:22:32 +1000 (Wed, 13 Jun 2007) $|
|Source:|http://mptw.tiddlyspot.com/empty.html#NewMeansNewPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!Note: I think this should be in the core
***/
//{{{

String.prototype.getNextFreeName = function() {
       var numberRegExp = / \(([0-9]+)\)$/;
       var match = numberRegExp.exec(this);
       if (match) {
               var num = parseInt(match[1]) + 1;
               return this.replace(numberRegExp," ("+num+")");
       }
       else {
               return this + " (1)";
       }
}

config.macros.newTiddler.checkForUnsaved = function(newName) {
	var r = false;
	story.forEachTiddler(function(title,element) {
		if (title == newName)
			r = true;
	});
	return r;
}

config.macros.newTiddler.getName = function(newName) {
       while (store.getTiddler(newName) || config.macros.newTiddler.checkForUnsaved(newName))
               newName = newName.getNextFreeName();
       return newName;
}


config.macros.newTiddler.onClickNewTiddler = function()
{
	var title = this.getAttribute("newTitle");
	if(this.getAttribute("isJournal") == "true") {
		var now = new Date();
		title = now.formatString(title.trim());
	}

	title = config.macros.newTiddler.getName(title); // <--- only changed bit

	var params = this.getAttribute("params");
	var tags = params ? params.split("|") : [];
	var focus = this.getAttribute("newFocus");
	var template = this.getAttribute("newTemplate");
	var customFields = this.getAttribute("customFields");
	story.displayTiddler(null,title,template,false,null,null);
	var tiddlerElem = document.getElementById(story.idPrefix + title);
	if(customFields)
		story.addCustomFields(tiddlerElem,customFields);
	var text = this.getAttribute("newText");
	if(typeof text == "string")
		story.getTiddlerField(title,"text").value = text.format([title]);
	for(var t=0;t<tags.length;t++)
		story.setTiddlerTag(title,tags[t],+1);
	story.focusTiddler(title,focus);
	return false;
};

//}}}

!!!Expected Climatic Trigger for the Transition
The rising atmospheric concentration of CO~~2~~ forces more oceanic uptake to achieve chemical equilibrium. Reaction with water forms carbonic acid, bicarbonate, and carbonate, lowering the pH (i.e., increasing the hydrogen ion concentration) to a degree determined by the temperature and salinity. Changes in pH in the polar oceans could have significant influences on marine species by the mid-21st century.
!!!Expected Environmental Consequences
The present rise in the CO~~2~~ concentration has reduced global average pH by 0.1, and significant further reductions will occur as the CO~~2~~ concentration keeps rising during the 21st century. In colder waters, a larger decrease will occur. Because the change is occurring so rapidly (in geological terms), natural buffering is not able to moderate the changes. As a result, calcifying organisms are expected to be severely stressed or be unable to survive.
!!!Likely Societal Significance
While ocean absorption of CO~~2~~ limits its atmospheric build-up and associated climate change, the marine web of life and society are highly dependent on calcifying organisms, including corals, crustaceans, some mollusks, and many organisms lower on the food chain. The full ecological consequences remain quite uncertain, but there appears to be little likelihood of a process that can limit near-term acidification.
''Our Common Future'', the Report of the World Commission on Environment and Development, also known as the ''Brundtland Report'' after ''Gro Harlem Brundtland'', Chair of the Commission. placed sustainable development at the center of the UN agenda when it was published in 1987 and laid the groundwork for the 1992 Earth Summit and its key outcomes: the [[Rio Declaration on Environment and Development]], [[Agenda 21]], the [[Convention on Biological Diversity]] and the [[United Nations Framework Convention on Climate Change]].

''See also'':
* [[Our Common Future: Table of Contents]]

@@font-size:90%;''Note'': Right-click and select "This Frame" and then ''Open Frame in New Tab"' to see this page in a separate browser tab@@
<html>
<iframe style="background-color:#ffffff; border-color:#ffffff; border:none;" width="660" height="1000" frameborder="0" scrolling="yes" src="http://www.google.com/search?q=%22Our+Common+Future%22&button=google+search&domains=http%3A%2F%2Fwww.un-documents.net&sitesearch=http%3A%2F%2Fwww.un-documents.net&ie=iso-8859-1&oe=iso-8859-1]]
" title="Our Common Future - Google site search @ www.UN-documents.net">
</iframe> </html>
|UN Document Symbol: |A/42/427 |
|Issuing Body / Session: |A/ 42 (General Assembly. 43rd Session) |
|Title: |Report of the World Commission on Environment and Development : note / by the Secretary-General. |
|Author / Contributors: |UN. Secretary-General<br>World Commission on Environment and Development |
|Other Title: |Report of the World Commission on Environment and Development (1987)<br>Report of the World Commission on Environment and Development : "Our common future"<br>Our Common Future.<br>Brundtland report. |
|Summary: |Transmits report of the World Commission on Environment and Development entitled "Our common future". |
|Notes: |Includes bibliographical references. |
|Imprint: |New York : UN, 4 Aug. 1987. |
|Description: |374 p. : tables |
|Subjects: |Environment<br>Population<br>Development<br>Human Resources<br>Food Security<br>Ecosystems<br>Energy Resources<br>Industrial Development<br>Urbanization<br>Environmental Protection<br>Institutional Machinery<br>Environmental Law<br>International Economic Relations<br>Environmental Management<br>Military Activity<br>Work Organization<br>World Commission on Environment and Development -- Work Organization.<br>Report of the World Commission on Environment and Development (1987) |
|Agenda Information: |A/42/251 82e - Environment. - Environment |
|Type of Material: |Reports/studies B16<br>Reports/letters (UN Secretary-General) B15 |
|Distribution: |General |
|Job Number: |N8718467 E |
|>|United Nations |h
|Document ID |A/42/427 Annex |
|Online publisher |Official Document System of the United Nations - http://ods.un.org |
|UN publication date |4 August 1987 |
|>|Bodleian Library, Oxford University |h
|Uniform Title |Our common future |
|Title |Our common future / World Commission on Environment and Development : Chairman, Gro Harlem Brundtland. |
|Publisher |Oxford : Oxford University Press, 1987. |
|Description |xv, 383 p. ; 21 cm. |
|Notes |"April 1987."  (Webster's note: this is a curious note, as the Report was not released until June 16, 1987, and was approved by the Governing Council of UNEP on 19 June 1987) |
|ISBN |019282080X (pbk.) |
|Subjects |Economic development -- Environmental aspects<br>Environmental policy<br>Human ecology<br>Nature -- Effect of human beings on |
|Other Names |Brundtland, Gro Harlem<br>World Commission on Environment and Development |
''Our Common Future'' - the ''Report of the World Commission on Environment and Development'' : 
Transmitted to the General Assembly as an Annex to document [[A/42/427 - Development and International Co-operation: Environment|http://www.un-documents.net/a47-427.htm]] 
!!Table of Contents
<<<
!!![[Chairman's Foreword|http://www.un-documents.net/ocf-cf.htm]]
!!![[From One Earth to One World|http://www.un-documents.net/ocf-ov.htm]]
<<<
!!Part I. Common Concerns
<<<
!!![[1. A Threatened Future|http://www.un-documents.net/ocf-01.htm]] +++
> [[Symptoms and Causes|http://www.un-documents.net/ocf-01.htm#I]]
> [[New Approaches to Environment and Development|http://www.un-documents.net/ocf-01.htm#II]]
===

!!![[2. Towards Sustainable Development|http://www.un-documents.net/ocf-02.htm]] +++
> [[The Concept of Sustainable Development|http://www.un-documents.net/ocf-02.htm#I]]
> [[Equity and the Common Interest|http://www.un-documents.net/ocf-02.htm#II]]
> [[Strategic Imperatives|http://www.un-documents.net/ocf-02.htm#III]]
> [[Conclusion|http://www.un-documents.net/ocf-02.htm#IV]]
===

!!![[3. The Role of the International Economy|http://www.un-documents.net/ocf-03.htm]] +++
> [[The International Economy, the Environment, and Development|http://www.un-documents.net/ocf-03.htm#I]]
> [[Decline in the 1980s|http://www.un-documents.net/ocf-03.htm#II]]
> [[Enabling Sustainable Development|http://www.un-documents.net/ocf-03.htm#III]]
> [[A Sustainable World Economy|http://www.un-documents.net/ocf-03.htm#IV]]
===

<<<
!!Part II. Common Challenges
<<<
!!![[4. Population and Human Resources|http://www.un-documents.net/ocf-04.htm]] +++
> [[The Links with Environment and Development|http://www.un-documents.net/ocf-04.htm#I]]
> [[The Population Perspective|http://www.un-documents.net/ocf-04.htm#II]] 
> [[A Policy Framework|http://www.un-documents.net/ocf-04.htm#III]]
===

!!![[5. Food Security: Sustaining the Potential|http://www.un-documents.net/ocf-05.htm]]  +++
> Achievements|http://www.un-documents.net/ocf-05.htm#I]]
> Signs of Crisis|http://www.un-documents.net/ocf-05.htm#II]]
> The Challenge|http://www.un-documents.net/ocf-05.htm#III]]
> Strategies for Sustainable Food Security|http://www.un-documents.net/ocf-05.htm#IV]]
> Food for the Future|http://www.un-documents.net/ocf-05.htm#V]]
===

!!![[6. Species and Ecosystems: Resources for Development|http://www.un-documents.net/ocf-06.htm]] +++
> [[The Problem: Character and Extent|http://www.un-documents.net/ocf-06.htm#I]]
> [[Extinction Patterns and Trends|http://www.un-documents.net/ocf-06.htm#II]]
> [[Some Causes of Extinction|http://www.un-documents.net/ocf-06.htm#III]]
> [[Economic Values at Stake|http://www.un-documents.net/ocf-06.htm#IV]]
> [[New Approach: Anticipate and Prevent|http://www.un-documents.net/ocf-06.htm#V]]
> [[International Action for National Species|http://www.un-documents.net/ocf-06.htm#VI]]
> [[Scope for National Action|http://www.un-documents.net/ocf-06.htm#VII]]
> [[The Need for Action|http://www.un-documents.net/ocf-06.htm#VIII]]
===

!!![[7. Energy: Choices for Environment and Development|http://www.un-documents.net/ocf-07.htm]] +++
> [[Energy, Economy, and Environment|http://www.un-documents.net/ocf-07.htm#I]]
> [[Fossil Fuels: The Continuing Dilemma|http://www.un-documents.net/ocf-07.htm#II]]
> [[Nuclear Energy: Unsolved Problems|http://www.un-documents.net/ocf-07.htm#III]]
> [[Wood Fuels: The Vanishing Resource|http://www.un-documents.net/ocf-07.htm#IV]]
> [[Renewable Energy: The Untapped Potential|http://www.un-documents.net/ocf-07.htm#V]]
> [[Energy Efficiency: Maintaining the Momentum|http://www.un-documents.net/ocf-07.htm#VI]]
> [[Energy Conservation Measures|http://www.un-documents.net/ocf-07.htm#VII]]
> [[Conclusion|http://www.un-documents.net/ocf-07.htm#VIII]]
===

!!![[8. Industry: Producing More With Less|http://www.un-documents.net/ocf-08.htm]] +++
> [[Industrial Growth and its Impact|http://www.un-documents.net/ocf-08.htm#I]]
> [[Sustainable Industrial Development in a Global Context|http://www.un-documents.net/ocf-08.htm#II]]
> [[Strategies for Sustainable Industrial Development|http://www.un-documents.net/ocf-08.htm#III]]
===

!!![[9. The Urban Challenge|http://www.un-documents.net/ocf-09.htm]] +++
> [[The Growth of Cities|http://www.un-documents.net/ocf-09.htm#I]]
> [[The Urban Challenge in Developing Countries|http://www.un-documents.net/ocf-09.htm#II]]
> [[International Cooperation|http://www.un-documents.net/ocf-09.htm#III]]
===

<<<
!!Part III. Common Endeavours
<<<
!!![[10. Managing The Commons|http://www.un-documents.net/ocf-10.htm]] +++
> [[Oceans: The Balance of Life|http://www.un-documents.net/ocf-10.htm#I]]
> [[Space: A Key to Planetary Management|http://www.un-documents.net/ocf-10.htm#II]]
> [[Antarctica: Towards Global Cooperation|http://www.un-documents.net/ocf-10.htm#III]]
===

!!![[11. Peace, Security, Development, and the Environment|http://www.un-documents.net/ocf-11.htm]] +++
> [[Environmental Stress as a Source of Conflict|http://www.un-documents.net/ocf-11.htm#I]]
> [[Conflict as a Cause of Unsustainable Development|http://www.un-documents.net/ocf-11.htm#II]]
> [[Towards Security and Sustainable Development|http://www.un-documents.net/ocf-11.htm#III]]
===

!!![[12. Towards Common Action: Proposals For Institutional and Legal Change|http://www.un-documents.net/ocf-12.htm]] +++
> [[The Challenge for Institutional and Legal Change|http://www.un-documents.net/ocf-12.htm#I]]
> [[Proposals for Institutional and Legal Change|http://www.un-documents.net/ocf-12.htm#II]]
> [[A Call for Action|http://www.un-documents.net/ocf-12.htm#III]]
===

<<<
!!Annexes 
<<<
!!![[Annexe 1: Summary of Proposed Legal Principles for Environmental Protection and Sustainable Development|http://www.un-documents.net/ocf-a1.htm]]
!!![[Annexe 2: The Commission and its Work|http://www.un-documents.net/ocf-a2.htm]]
!!![[Acronyms and Note on Terminology|http://www.un-documents.net/ocf-acr.htm]]
<<<
|>|United Nations |h
|Document ID |A/42/427 Annex |
|Published in |[[General Assembly document A/42/427|http://www.n-documents.net/a42-427]] |
|Unpublication date |4 August 1987 |
|Online publisher |Official Document System of the United Nations - http://ods.un.org |
<<<
Most of today's decision makers will be dead before the planet suffers the full consequences of acid rain, global warning, ozone depletion, widespread desertification, and species loss. Most of today's young voters, however, will be alive.

In this, perhaps the most important document of the decade on the future of the world, the urgency of changing certain policy decisions, some of which threaten the very survival of the human race, is made abundantly clear.

The World Commission on Environment and Development, headed by Gro Harlem Brundtland, Prime Minister of Norway, was set up as an independent body in 1983 by the United Nations. Its brief was to re-examine the critical environment, to develop proposals to solve them, and to ensure that human progress will be sustained through development without bankrupting the resources of future generations.

In Our Common Future , the Commission serves notice that the time has come for a marriage of economy and ecology, so that governments and their people can take responsibility not just for environmental damage, but for the policies that cause the damage. It is not too late to change these policies; but, it warns, we must act now.
> ''Publisher's description - Oxford University Press''
<<<
''References''
<<<
[[UN-documents.net - Our Common Future - Google site search[[|http://www.google.com/search?q=%22Our+Common+Future%22&button=google+search&domains=http%3A%2F%2Fwww.un-documents.net&sitesearch=http%3A%2F%2Fwww.un-documents.net&ie=iso-8859-1&oe=iso-8859-1]]
[[Our Common Future @ Oxford University Press|http://www.oup.com/uk/catalogue/?ci=9780192820808]] - Look and/or buy at the publisher's web site
[[Our Common Future @ Google Book Search|http://books.google.com/books?id=w_HKWEq1K68C&dq=%22Our+Common+Future%22]]
* [[Our Common Future @ Amazon.com|http://www.amazon.com/Common-Future-Oxford-Paperback-Reference/dp/019282080X]] - Buy new or used at Amazon.com
** [[Look Inside Our Common Future|http://www.amazon.com/gp/reader/019282080X/ref=sib_dp_pt/105-6913217-5433235#reader-link]] at Amazon/com
[[Sustainable Development @ ''UN-Documents.net''|http://www.un-documents.net/k-001303.htm]]
<!--{{{-->
<div class='header' macro='gradient vert #505 #fc0'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<br>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<br>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<html>
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="600" height="400" flashvars="host=picasaweb.google.com&noautoplay=1&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fecology2001%2Falbumid%2F5079347200992752289%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</html>
<<siteMap picasa>>
<<plugins>>
The ''Plugin Manager'' tiddler uses the ''<html>&lt;&lt;plugins&gt;&gt;</html>'' built-in macro that displays all the plugin macros - tiddlers marked with the ''systemConfig'' tag - with links to the plugins and an indication of their status.

<<plugins>>
/*{{{*/
@media print #hoverMenu {
display: none;
}
@media print {
font-family: arial;
}
@media print .header .siteTitle {
font-size: 1em;
}
/*}}}*/
!!United Nations Charter
!!Chapter I: Purposes and Principles
!!!Article 1
The Purposes of the United Nations are:
# To maintain international peace and security, and to that end: to take effective collective measures for the prevention and removal of threats to the peace, and for the suppression of acts of aggression or other breaches of the peace, and to bring about by peaceful means, and in conformity with the principles of justice and international law, adjustment or settlement of international disputes or situations which might lead to a breach of the peace;
# To develop friendly relations among nations based on respect for the principle of equal rights and self-determination of peoples, and to take other appropriate measures to strengthen universal peace;
# To achieve international co-operation in solving international problems of an economic, social, cultural, or humanitarian character, and in promoting and encouraging respect for human rights and for fundamental freedoms for all without distinction as to race, sex, language, or religion; and
# To be a centre for harmonizing the actions of nations in the attainment of these common ends.
!!!Article 2
The Organization and its Members, in pursuit of the Purposes stated in Article 1, shall act in accordance with the following Principles.
# The Organization is based on the principle of the sovereign equality of all its Members.
# All Members, in order to ensure to all of them the rights and benefits resulting from membership, shall fulfil in good faith the obligations assumed by them in accordance with the present Charter.
# All Members shall settle their international disputes by peaceful means in such a manner that international peace and security, and justice, are not endangered.
# All Members shall refrain in their international relations from the threat or use of force against the territorial integrity or political independence of any state, or in any other manner inconsistent with the Purposes of the United Nations.
# All Members shall give the United Nations every assistance in any action it takes in accordance with the present Charter, and shall refrain from giving assistance to any state against which the United Nations is taking preventive or enforcement action.
# The Organization shall ensure that states which are not Members of the United Nations act in accordance with these Principles so far as may be necessary for the maintenance of international peace and security.
# Nothing contained in the present Charter shall authorize the United Nations to intervene in matters which are essentially within the domestic jurisdiction of any state or shall require the Members to submit such matters to settlement under the present Charter; but this principle shall not prejudice the application of enforcement measures under [[Chapter VII|http://www.un-documents.net/ch-04.htm]].
<<forEachTiddler 
 where 
 'tiddler.tags.contains(["queries"])'
>>
{{iframe{''Note'': This is a "framed" page from the '' '' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://habitat.igc.org/queries/qed.htm}}}
<html><iframe
	src = "http://habitat.igc.org/queries/qed.htm"
	title = "Queries on Environment and Development"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
{{iframe{''Note'': This is a "framed" page from the web site of [[Information Habitat: Where Information Lives]]. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://habitat.igc.org/queries/}}}
<html><iframe
	src = "http://habitat.igc.org/queries/"
	title = "Queries on Opening to the Light "
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
{{iframe{''Note'': This is a "framed" page from the web site of [[Information Habitat: Where Information Lives]]. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://habitat.igc.org/queries/uwn.htm}}}
<html><iframe
	src = "http://habitat.igc.org/queries/uwn.htm"
	title = "Queries on Unity With Nature"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
/***
| Name:|QuickOpenTagPlugin|
| Description:|Changes tag links to make it easier to open tags as tiddlers|
| Version:|6.1.1|
| Date:|01-Oct-2006|
| Source:|http://mptw.tiddlyspot.com/#QuickOpenTagPlugin|
| Author:|Simon Baird <simon.baird@gmail.com>|
| CoreVersion:|2.1.x|
***/
//{{{
config.quickOpenTag = {

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

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

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

	allTagsHandler: function(place,macroName,params) {
		var tags = store.getTags();
		var theDateList = createTiddlyElement(place,"ul");
		if(tags.length == 0)
			createTiddlyElement(theDateList,"li",null,"listTitle",this.noTags);
		for (var t=0; t<tags.length; t++) {
			var theListItem = createTiddlyElement(theDateList,"li");
			var theLink = createTiddlyLink(theListItem,tags[t][0],true);
			var theCount = " (" + tags[t][1] + ")";
			theLink.appendChild(document.createTextNode(theCount));
			var theDropDownBtn = createTiddlyButton(theListItem," " +
			config.quickOpenTag.dropdownChar,this.tooltip.format([tags[t][0]]),onClickTag);
			theDropDownBtn.setAttribute("tag",tags[t][0]);
		}
	},

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

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

}

config.quickOpenTag.init();

//}}}
''RSS feeds'' - //Really Simple Syndication// - offer a wide variety of tools that automatically generate sets of news feeds - that can be selected for tags / key words - for your own online web sites, and from web sites, blogs, bookmark collections, etc. published by other people and organizations.

<<siteMap rss>>
Among the highlights of La Perla Garden is a 1,000 gallon rainwater tank, that captures the rumoff from the roof of the adjacent building. The rainwater tank will also serve as a focal point of a beautification contest organized by the Water Resource Group; plans are under development to move the tank to higher ground and to reorganize the overflow system to capture more water.

<html>
<table style="width:194px;"><tr><td align="center" style="height:194px;background:url(http://picasaweb.google.com/f/img/transparent_album_background.gif) no-repeat left"><a target="_blank" href="http://picasaweb.google.com/ecology2001/RainwaterTankLaPerlaGardenJuly312008"><img src="http://lh5.ggpht.com/ecology2001/SJxwbV4QRkE/AAAAAAAAB4M/aUBtMpew8EA/s160-c/RainwaterTankLaPerlaGardenJuly312008.jpg" width="160" height="160" style="margin:1px 0 0 4px;"></a></td></tr><tr><td style="text-align:center;font-family:arial,sans-serif;font-size:11px"><a href="http://picasaweb.google.com/ecology2001/RainwaterTankLaPerlaGardenJuly312008" style="color:#4D4D4D;font-weight:bold;text-decoration:none;">Rainwater Tank, La Perla Garden, July 31, 2008</a></td></tr></table>
</html>
!!!Expected Climatic Trigger for the Transition
Persistent warming of 1°C to 3°C is likely to trigger rapid deterioration of the southern half of the Greenland Ice Sheet over a period of several centuries; greater warming could trigger loss of the full ice sheet over up to a few millennia.
!!!Expected Environmental Consequences
Loss of the southern half of the Greenland Ice Sheet would raise global sea level by 2 m to 3 m; full melting would lead to sea-level rise of roughly 7 m. Meltwater from Greenland would freshen the North Atlantic, likely altering oceanic temperature and flow regimes.
!!!Likely Societal Significance
In the region, the reduced altitude of Greenland would alter regional storm tracks and weather. Throughout the world, a sea-level rise of a few meters would inundate many coastal regions and require significant efforts to protect many coastal cities.
!!!Expected Climatic Trigger for the Transition
Persistent warming of Southern Ocean waters and/or sea-level rise has the potential to accelerate the flow of ice streams, initiating an increasing loss of ice from the WAIS that would likely last for several millennia.
!!!Expected Environmental Consequences
The WAIS contains the equivalent of about 6 m of sea-level rise, and is much more vulnerable to loss of ice than East Antarctica because it is mainly grounded below sea level.
!!!Likely Societal Significance
In the region, retreat of antarctic sea ice and even partial loss of the WAIS will alter ocean circulation, weather, and the survivability of key species. Throughout the world, the rise in sea level would significantly alter ocean currents while inundating coastal communities.
The following recently created or updated tiddler uses the syntax {{{<<timeline better:true firstDay:20080601>>}}} to display tiddlers that have been edited since August 15, 2007 - using the [[Better timeline plugin macro]] - may give you a little insight both into some of the recently-added contents of the site, as well as into the "underworld" of shadowed tiddlers, cascading styles, menus, features, plugins, formatting, etc. that lie beneath the surface of TiddlyWiki and that contribute to the genius of TiddlyWiki, the software platform that serves as one of the foundations of this web site and of the companion sites of the [[Climate Change 2.0]] initiative. If you would like to look at a complete listing of tiddlers on this site, visit [[Basic Tiddler Lists]].

<<timeline better:true firstDay:20080601>>
/***
***/

//{{{

config.commands.refresh = {
 text: 'refresh',
 tooltip: 'Refresh this tiddler',
 handler: function(e,src,title) {
  clearMessage();
  story.refreshTiddler(title,false,true); // force=true
  return false;
 }
};

//}}}
Renate Bloem is the //President// of [[CONGO|Conference Of NGOs]], the Conference of ~Non-Governmental Organizations in Consultative Relationship with the United Nations .

Madam Bloem has led CONGO delegations to the World Conference against Racism and to the World Summit on Sustainable Development. She also organized through the CONGO Working Group on Asia, the Asian Civil Society Forum 2002 and 2004 in Bangkok, Thailand and, together with Latin American NGO networks, the NGO Seminar in Santiago, Chile. 

Under Madam Bloem’s strong leadership, CONGO has gained prominence in the international civil society landscape and became the main counterpart of ~NGOs in relationship with the United Nations. She follows a Strategic Plan for CONGO, based on her priorities for the civil society: Outreach, Dialogue, Training, Communication and Membership Drive and Services. 

Madam Bloem is also strong advocate for human rights, in particular for the human rights of women and children. She was actively involved in the Drafting of the Convention on the Rights of the Child, (Art. 37d) and, after its adoption, in the promotion of children's rights. She is married with two children, lives and works in Geneva, Switzerland. 

Renate Bloem is a national of Switzerland. 
''Rescuing a Planet Under Stress and a Civilization in Trouble: Plan B 2.1'' //(beta)//  is a TiddlyPerfect "translation" of ''Plan B 2.0: Rescuing a Planet Under Stress and a Civilization in Trouble'' by [[Lester Brown]] of the [[Earth Policy Institute]], and is one of the key initial elements of [[Climate Change 2.0: Information Ecology of Climate Change]].

''Plan B 2.0'' is a brilliant and easy-to-read book that not offers an insightful, down-to-earth perspective on the planetary crisis but also provides an outline of a roadmap of what is needed to address and resolve the current crisis - a crisis whose significance is gaining much needed attention in the face of growing evidence of catastrophic climate change.

''Plan 2.1'' //(beta)// is designed to harness the powers of a free knowledge universe in support of the development of a new economy called for by Lester Brown, and to affirm the vital role of information & communications technology in that new economy It is also the intention of ''Plan B 2/1'' to make the contents of Lester Brown's brilliant book more readily available and its contents more readily searchable.  ''Plan B 2.1'' is still in a //beta // version; a more extensive elaboration of the role of information and communications in the addition of a structured set of key words / tags remains among the unfinished tasks.

http://www.climate-change-summer.net/plan-b/
Richard Jordan is the //Chair// of the [[Climate Change Sub-Committee]] of the [[NGO/DPI Executive Committee]] and had served as the //Conference ~Co-Chair// of the [[60th Annual DPI/NGO Conference]], and //~Co-Chair// of its [[Planning Committee|60th Annual DPI/NGO Conference Planning Committee]]. Over the course of his 22 years at the UN, Richard has represented a number of ~NGOs affiliated with DPI and ECOSOC, most notably Global Education Associates and currently the [[International Council for Caring Communities]]. Among his most notable achievements is having been one of the five co-founding editors of the Earth Negotiations Bulletin (ENB), the journal of record at environment and development meetings worldwide.

Richard Jordan has also been a member of the Boards of the [[NGO Committee on Peace, Development and Security]], [[Symphony for United Nations]] and [[Friends of the United Nations]], and is the Chairman of the CONGO [[NGO Committee on the UN and Sports]].

Email:  [[dpiconference@yahoo.com|mailto:dpiconference@yahoo.com]]
The United Nations Conference on Environment and Development,

//Having met// at Rio de Janeiro from 3 to 14 June 1992,

//Reaffirming// the [[Declaration of the United Nations Conference on the Human Environment]], adopted at Stockholm on 16 June 1972, and seeking to build upon it,

//With the goal// of establishing a new and equitable global partnership through the creation of new levels of cooperation among States, key sectors of societies and people,

//Working towards// international agreements which respect the interests of all and protect the integrity of the global environmental and developmental system,

//Recognizing// the integral and interdependent nature of the Earth, our home,

//Proclaims// that:

''Principle 1''

Human beings are at the centre of concerns for sustainable development. They are entitled to a healthy and productive life in harmony with nature.

''Principle 2''

States have, in accordance with the Charter of the United Nations and the principles of international law, the sovereign right to exploit their own resources pursuant to their own environmental and developmental policies, and the responsibility to ensure that activities within their jurisdiction or control do not cause damage to the environment of other States or of areas beyond the limits of national jurisdiction.

''Principle 3''

The right to development must be fulfilled so as to equitably meet developmental and environmental needs of present and future generations.

''Principle 4''

In order to achieve sustainable development, environmental protection shall constitute an integral part of the development process and cannot be considered in isolation from it.

''Principle 5''

All States and all people shall cooperate in the essential task of eradicating poverty as an indispensable requirement for sustainable development, in order to decrease the disparities in standards of living and better meet the needs of the majority of the people of the world.

''Principle 6''

The special situation and needs of developing countries, particularly the least developed and those most environmentally vulnerable, shall be given special priority. International actions in the field of environment and development should also address the interests and needs of all countries.

''Principle 7''

States shall cooperate in a spirit of global partnership to conserve, protect and restore the health and integrity of the Earth's ecosystem. In view of the different contributions to global environmental degradation, States have common but differentiated responsibilities. The developed countries acknowledge the responsibility that they bear in the international pursuit of sustainable development in view of the pressures their societies place on the global environment and of the technologies and financial resources they command.

''Principle 8''

To achieve sustainable development and a higher quality of life for all people, States should reduce and eliminate unsustainable patterns of production and consumption and promote appropriate demographic policies.

''Principle 9''

States should cooperate to strengthen endogenous capacity-building for sustainable development by improving scientific understanding through exchanges of scientific and technological knowledge, and by enhancing the development, adaptation, diffusion and transfer of technologies, including new and innovative technologies.

''Principle 10''

Environmental issues are best handled with the participation of all concerned citizens, at the relevant level. At the national level, each individual shall have appropriate access to information concerning the environment that is held by public authorities, including information on hazardous materials and activities in their communities, and the opportunity to participate in decision-making processes. States shall facilitate and encourage public awareness and participation by making information widely available. Effective access to judicial and administrative proceedings, including redress and remedy, shall be provided.

''Principle 11''

States shall enact effective environmental legislation. Environmental standards, management objectives and priorities should reflect the environmental and developmental context to which they apply. Standards applied by some countries may be inappropriate and of unwarranted economic and social cost to other countries, in particular developing countries.

''Principle 12''

States should cooperate to promote a supportive and open international economic system that would lead to economic growth and sustainable development in all countries, to better address the problems of environmental degradation. Trade policy measures for environmental purposes should not constitute a means of arbitrary or unjustifiable discrimination or a disguised restriction on international trade. Unilateral actions to deal with environmental challenges outside the jurisdiction of the importing country should be avoided. Environmental measures addressing transboundary or global environmental problems should, as far as possible, be based on an international consensus.

''Principle 13''

States shall develop national law regarding liability and compensation for the victims of pollution and other environmental damage. States shall also cooperate in an expeditious and more determined manner to develop further international law regarding liability and compensation for adverse effects of environmental damage caused by activities within their jurisdiction or control to areas beyond their jurisdiction.

''Principle 14''

States should effectively cooperate to discourage or prevent the relocation and transfer to other States of any activities and substances that cause severe environmental degradation or are found to be harmful to human health.

''Principle 15''

In order to protect the environment, the precautionary approach shall be widely applied by States according to their capabilities. Where there are threats of serious or irreversible damage, lack of full scientific certainty shall not be used as a reason for postponing cost-effective measures to prevent environmental degradation.

''Principle 16''

National authorities should endeavour to promote the internalization of environmental costs and the use of economic instruments, taking into account the approach that the polluter should, in principle, bear the cost of pollution, with due regard to the public interest and without distorting international trade and investment.

''Principle 17''

Environmental impact assessment, as a national instrument, shall be undertaken for proposed activities that are likely to have a significant adverse impact on the environment and are subject to a decision of a competent national authority.

''Principle 18''

States shall immediately notify other States of any natural disasters or other emergencies that are likely to produce sudden harmful effects on the environment of those States. Every effort shall be made by the international community to help States so afflicted.

''Principle 19''

States shall provide prior and timely notification and relevant information to potentially affected States on activities that may have a significant adverse transboundary environmental effect and shall consult with those States at an early stage and in good faith.

''Principle 20''

Women have a vital role in environmental management and development. Their full participation is therefore essential to achieve sustainable development.

''Principle 21''

The creativity, ideals and courage of the youth of the world should be mobilized to forge a global partnership in order to achieve sustainable development and ensure a better future for all.

''Principle 22''

Indigenous people and their communities and other local communities have a vital role in environmental management and development because of their knowledge and traditional practices. States should recognize and duly support their identity, culture and interests and enable their effective participation in the achievement of sustainable development.

''Principle 23''

The environment and natural resources of people under oppression, domination and occupation shall be protected.

''Principle 24''

Warfare is inherently destructive of sustainable development. States shall therefore respect international law providing protection for the environment in times of armed conflict and cooperate in its further development, as necessary.

''Principle 25''

Peace, development and environmental protection are interdependent and indivisible.

''Principle 26''

States shall resolve all their environmental disputes peacefully and by appropriate means in accordance with the Charter of the United Nations.

''Principle 27''

States and people shall cooperate in good faith and in a spirit of partnership in the fulfilment of the principles embodied in this Declaration and in the further development of international law in the field of sustainable development.
Robert Pollard, Chair of the Information and Communications Sub-Committee of the NGO Committee on Education, is Professor of Information Ecology at [[Information Habitat: Where Information Lives]], an organization he founded in 1990 shortly after becoming involved in the preparations for the 1992 ''Earth Summit'' / ''UN Conference on Environment and Development'' (UNCED), and that was granted Special Consultative Status with the Economic and Social Council in 1995.  Through Information Habitat - and through NGO Committees, Networks and Caucuses he has worked with - he was a pioneer in the adoption, promotion and support of systematic and innovative use of information and communication technologies (ICT) in support of broad-based, informed and collaborative participation of non-governmental organizations in the series of United Nations global conferences during the 1990s - culminating with Habitat II, for which he was the architect and developer of the information and communications strategy for the conference,  managing key email lists and databases and building the official Habitat II web site.

Since Habitat II, he has been actively involved in the NGO follow-up to the global conferences, while increasingly focusing on the development of information ecology as a holistic life science for the information age and on the critical contribution of ICT that he is convinced holds a key to a successful transition to a sustainable development path. Building on his earlier experience and inclinations as a librarian, he has devoted considerable attention to gathering and organizing extensive archives of documents relating to sustainable development and to the United Nations, and has generated a unique hyperlinked collection of more than five hundred such documents at [[www.un-documents.net|http://www.un-documents.net]].

Before becoming involved with the United Nations NGO community, he had been active with environmental, peace and community development organizations in Baltimore for more than twenty years, and in 1981 had been a co-founder of the ''Baltimore Information Cooperative'' that provided support to grassroots and progressive organizations in the use of microcomputers.  He served as Librarian at Baltimore City Jail for more than eight years and as Administrative Analyst for an additional five years, for much of that time using his microcomputer as an administrative tool. He was educated at Whitgift School and Cambridge University, where he read Mathematics and Political Economy, having received an Open Exhibition (scholarship) in Mathematics at Corpus Christi College and moved to the U.S. in 1996 for a Research Assistantship on a Quantitative Analysis of the French Revolution and to The Johns Hopkins University on a Graduate Fellowship in Social Relations, where he focused on methodology, research design, data analysis and mathematical sociology and on small group dynamics. He left academia in 1972 in the context of his involvement with the Vietnam Peace movement and his concern with the ties between academia and the military-industrial complex.

A passionate organic gardener, he had to give up his large - third of an acre - garden when he moved to New York in 1993; however he has recently discovered a nearby community garden where he has reconnected to the earth and where he manages the compost piles, fed with a steady stream of kitchen 'waste'.
//{{{
// location of server-side 'reflector' script. Can be on ANY domain... 
config.options.txtSaveFromWebScriptURL="savefromweb.php";

// use alternative document URL for retrieving TiddlyWiki core source code.
// Using *empty* TW minimizes data transfer for retrieving TW core.
// Can be on ANY domain... If blank, uses current document URL
config.options.txtSaveFromWebSourceFile="http://www.TiddlyTools.com/empty.html";

// use alternative target filename for the downloaded document.
// Can be any valid filename for local filesystem.  If blank, uses current filename
config.options.txtSaveFromWebTargetFilename="";

// Pre-fetch option
// true=get (and cache) TW core code when document is first loaded (i.e., when plugin is initialized)
// false=get  and cache core code the first time the file is being saved
// pre-fetching and caching the core code permits "save changes" to still be performed,
// even if the connection to the net is dropped during the session.
config.options.chkSaveFromWebPreFetch=false;

// Local I/O option (requires browser security permissions, i.e., "trusted site" settings)
config.options.chkSaveFromWebAttemptLocalIO=false;

// enable editing features over http so that 'save changes' is available online by default
config.options.chkHttpReadOnly=readOnly=false;
//}}}
/***
|Name|SaveFromWebPlugin|
|Source|http://www.TiddlyTools.com/#SaveFromWebPlugin|
|Version|1.3.5|
|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||
|Description|extend 'save changes' to get remote document contents and save to local filesystem |
|Status| BETA/EXPERIMENTAL - USE WITH CAUTION - VERIFY ALL SAVED CHANGES - RETAIN BACKUPS |

Normally, when you are viewing a TiddlyWiki document over the web (i.e., not via {{{file://}}}) and you select the "save changes" (or "save to disk") command, an error message is displayed: //__"You need to save this TiddlyWiki to a file before you can save changes."__//  This plugin extends the use of {{{<<saveChanges>>}}} so that when you are viewing and/or editing a remote TiddlyWiki document, instead of receiving this somewhat confusing and unhelpful message, you can still click the "save changes" (or "save to disk") command to ''store a copy of the remote document directly onto your local filesystem'', //including any unsaved tiddler changes/additions you have made while working on-line.//
!!!!!Usage
<<<
When you select <<saveChanges>> while viewing a remote document (i.e., a URL starting with http: rather than file:), the plugin first ''retrieves the TiddlyWiki core source code from the original document'' file stored on the remote server.  Then, it ''combines that core source with the tiddlers'' contained in the currently loaded document, ''including any changes you have made.''

While the next step //should// be to simply write the merged core+tiddler data directly to your hard drive, certain JavaScript features, such as reading/writing directly to the local filesystem, require expanded "cross-domain" privileges that are normally restricted for use only with ''signed'' scripts.  Although some browsers will let you grant filesystem permissions to a remotely-loaded script, this usually involves either a series of popup confirmation messages or manually re-configuring (and/or disabling) your browser's built-in security protections, which often include settings and options that most users find difficult to understand and inconvenient to access.

To avoid these security complications, the "save from web" processing requires just a few additional steps to prepare the modified document and deliver it to your browser: rather than writing the document data directly to the local filesystem, the plugin ''sends the merged core+tiddler data to a small companion script installed on the remote server'' (see savefromweb.php, below).  This simple "reflector" script then immediately ''downloads the new document data back to the browser'', which prompts you to either open the downloaded document for viewing or save it to your local hard drive.  Once the document has been stored on your filesystem, you can open that copy in your browser and work offline with full access to all TiddlyWiki features.

+++[Note for users of Internet Explorer's Popup Blocker feature...]>
The default security settings of IE's "Popup Blocker" feature will warn you whenever an attempt is made to download a file in response to a scripted action such as the internal javascript processing performed by SaveFromWebPlugin.  However, if you then click IE's yellow warning message and select the 'download this file...' menu command, this will also cause IE to attempt a 'page transition' away from the currently loaded TiddlyWiki document... but, because there are unsaved changes in the document, you will first receive a confirmation message, allowing you to cancel the page transition.  Regrettably, this also prevents the download from succeeding.  Unfortunately, if you //do// permit the page transition to occur, then your TiddlyWiki document is immediately reloaded and all the unsaved tiddler changes are discarded... and the download still fails to complete.

''__To permit SaveFromWeb to function properly with Internet Explorer, you will need to adjust the "download" security setting...__''
#From the ''Tools > Internet Options > Security'' tab,
#Select the "Internet" security zone (or what ever zone you are using to view the remote document)
#Press the "Custom level..." button
#In the "Settings" listbox, scroll to the "Downloads" section
#''ENABLE "automatic prompting for downloads"''(the first setting in the section)
#Press OK to accept the new settings.
===
<<<
!!!!!Direct filesystem access (configuring browser security permissions)
<<<
Although sending the merged document data from browser to server and back again allows it to be saved to your filesystem without requiring you to extensively re-configure your browser's built-in security protections, it also increases the overall processing time because the document's data is actually being transmitted //three// times: it is first retrieved from the remote server to get the TiddlyWiki core source; then, after merging with the updated tiddler data, it is sent back to the server, which immediately 'reflects' it back to the browser for final handling by the built-in "file download" interface.

However, ''if you are accessing a "trusted site"'' (perhaps on a server within a secure private network), depending upon the specific options provided by your browser, ''you may be able to eliminate the round-trip processing by authorizing the appropriate filesystem security permissions in your browser''.  When filesystem access has been permitted, instead of making the round trip with the merged core+tiddler data, the plugin will immediately prompt you for a destination path/file, using your computer's "native" path/file selection interface, and then write new the TiddlyWiki document data directly to the indicated location on your local file system.

+++[Configuring security in FireFox...]>
''FireFox needs security permissions to be set to allow a remote URL to save a new file to your local filesystem.''  FireFox can be configured to allow or disallow expanded "cross-domain" privileges based on the digital signature of the originator (or ''principal'') of a signed script.  However, ''unsigned'' scripts, such as TiddlyWiki, do not contain a digital signature and are not normally allowed access to filesystem functions.  Fortunately, an //''unsigned''// script can still be granted expanded filesystem privileges through use of a ''codebase principal'', which relies upon the originating URL of the script (it's "codebase") to identify the "trusted source", rather than verifying a digital signature of a certificate.
>''In FireFox (and most other browsers) use of codebase principals is disabled by default'';
>To use codebase principals, go to "about:config" in your browser, and set:
>&nbsp;&nbsp;''{{{signed.applets.codebase_principal_support}}}'' to ''{{{true}}}''
>//note: you can also set this value by editing FireFox's {{{prefs.js}}} and adding://
>&nbsp;&nbsp;{{{user_pref("signed.applets.codebase_principal_support", true);}}}
After you have enabled codebase principals, you will begin receiving security notices whenever TiddlyWiki requests permission to invoke various privileged functions.  You can press the "allow" button to permit the processing to continue, or press "deny" to prevent the privileged functions from being used by that remote site.

When you invoke {{{<<saveChanges>>}}}, there may be several of these notices in a row before the file saving process is done.  These messages are normal, and you should ALLOW each of them, so that the file saving procedure can continue to completion.  Once you are confident that the remote site is trustworthy, you can mark the "remember this decision" checkbox to eliminate additional notices for that remote site, so that the process can proceed without further interruptions.  This setting will only be applied to the specific web domain in question, so you will still receive security notices when using privileged functions from any other web sites.

//Note: If codebase principals are enabled, security notices are also reported when accessing TiddlyWiki documents locally (i.e., via {{{file://}}}).  This is a result of TiddlyWiki's normal file I/O processing and should always be considered safe to allow, inasmuch as you control the contents of your own local filesystem, and thus, should be able to consider the {{{file://}}} codebase location as a trusted source.//
===
<<<
!!!!!Configuration
<<<
Target (destination) filename: <<option txtSaveFromWebTargetFilename>>
{{fine borderleft{
specifies the desired destination filename for the saved file.  This will appear as the default value when you are prompted to save the file.  If blank, default is the filename from the URL of the current document (or the current domain name if there is no filename in the URL)}}}
TW core source location: <<option txtSaveFromWebSourceFile>>
{{fine borderleft{
specifies the URL from which to retrieve the TW core source.  If blank, defaults to the current document URL.}}}
Server-side reflector script location: <<option txtSaveFromWebScriptURL>>
{{fine borderleft{
note: the reflector script can be located at any URL, even one on a different domain from the document you are saving}}}
<<option chkSaveFromWebAttemptLocalIO>> attempt to use direct filesystem I/O (requires browser security permissions)
{{fine borderleft{
the plugin will try to obtain security permission for direct filesystem I/O.  If you grant filesystem access to the script, then it writes the document directly to your filesystem, and doesn't use the server-side reflector script at all.  This allows you to save a remote file to your local filesystem, even if your net connection drops after you open the document.  Note: if filesystem permissions are not granted, the plugin will automatically attempt to use the server-side reflector script as a fallback... even if no longer connected to the net.}}}
<<option chkSaveFromWebPreFetch>> pre-fetch TW core source (in background) during document startup
{{fine borderleft{
this option causes the plugin to retrieve the TiddlyWiki core source as soon as you load the document, instead of waiting for the first time you save.  This ensures that the TiddlyWiki core source can still be saved to the local filesystem even if your network connection is dropped before you save your changes.  Note that, even without pre-fetching, the core source is always cached after it is retrieved, so that subsequent saves don't do extra work to get it again.}}}
Important note: while you can configure the plugin using the fields shown above, these settings will be stored as cookies, which are associated with the local browser installation, rather than the document itself.  To "hard-code" these settings so they are always applied to the document when viewed from //any// browser, please see [[SaveFromWebConfig]].
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
[[SaveFromWebPlugin]], [[SaveFromWebConfig]]

On your web server, in the same directory as your published document, create a file called ''{{{savefromweb.php}}}'', containing the following PHP server-side script.  //(note: you can actually give this script any name you like, and place it at //any// URL, even one that is on a different domain from the document you are saving.  However, to do so you must specify the server-side script location using the plugin's configuration settings (see above).//
//{{{
<?php
// savefromweb.php
// Author: Eric L. Shulman / ELS Design Studios
// Source: http://www.TiddlyTools.com/savefromweb.php
// License: http://www.TiddlyTools.com/#LegalStatements
// Usage: install the php script on the server in the same directory as your TiddlyWiki document(s)

// This script acts as a 'reflector', so that any contents sent to it (via form POST) will
// be sent back to the browser as a binary file.  The browser then prompts you to
// save the content to a local file.  Because this process uses the browser's built-in
// download-and-save/open handler, it does not require security permissions to access
// the local filesystem.

$args=$_POST;
header('Pragma: private');
header('Cache-control: private, must-revalidate');
header('Content-type: application/binary; charset="UTF-8"');
header('Content-disposition: attachment; filename="'.$args['filename'].'"');
$c=$args['contents'];
$c=str_replace("\\'","'",$c); // decode single-quotes
$c=str_replace("\\\"","\"",$c); // decode double-quotes
$c=str_replace("\\\\","\\",$c); // decode backslashes
$c=str_replace("\r\n","\n",$c); // change CRLF to LF
print $c;
?>
//}}}
<<<
!!!!!Revision History
<<<
''2007.08.08 [1.3.0]'' added caching of the downloaded TW core source code so it only has to be retrieved once.  Also, added an option to 'pre-fetch' the TW core when plugin is initialized, so that the download-and-cache will be performed, in background, each time the document is loaded/re-loaded.  Also, added option to allow attempt to use direct filesystem access (bypassing the round-trip through the server-side reflector script) so you can save a remote file to your local filesystem, even if the connection to the network is dropped after the document was loaded into the browser.  If local filesystem permissions are not granted, the plugin will still attempt to use the server-side reflector script as a fallback.
''2007.08.07 [1.2.0]'' removed 'download only' optimization: when a document is unchanged, instead of performing a simple download from server, the plugin now performs a full 'round-trip' process (i.e., download the TW source from a server, merge with current tiddlers, and then upload merged document and reflect back as a binary file).  Although the round-trip takes longer, it does permit the reflector script to be located ANYWHERE on the net, at ANY valid URL, rather than having to be placed on the same server and in the same directory as the remote document.  This should permit online services such as TiddlySpot to support SaveFromWebPlugin using a single hosted copy of the reflector script that can be shared by all users.
''2007.07.27 [1.1.1]'' new documentation and code cleanup
''2007.07.26 [1.1.0]'' re-wrote to support savefromweb.php remote "reflector" script.  Allows use of browser's native download dialog to receive file as a fallback alternative to using local filesystem I/O (which would require additional security permissions)
''2007.06.27 [1.0.1]'' in saveFromWeb(), pass content from server through convertUnicodeToUTF8() before writing to file.
''2007.06.26 [1.0.0]'' initial release
<<<
!!!!!Credits
<<<
This feature was developed by Eric L Shulman / ELS Design Studios
<<<
!!!!!Code
***/
//{{{
version.extensions.SaveFromWeb= {major: 1, minor: 3, revision: 0, date: new Date(2007,8,8)};
//}}}

//{{{
// DEFAULT SETTINGS
if (config.options.txtSaveFromWebScriptURL==undefined)
	config.options.txtSaveFromWebScriptURL="savefromweb.php";
if (config.options.txtSaveFromWebTargetFilename==undefined)
	config.options.txtSaveFromWebTargetFilename=""; // use current filename when blank
if (config.options.txtSaveFromWebSourceFile==undefined)
	config.options.txtSaveFromWebSourceFile=""; // use current URL when blank
if (config.options.chkSaveFromWebAttemptLocalIO==undefined)
	config.options.chkSaveFromWebAttemptLocalIO=true; // true=try to use local filesystem I/O (requires security permissions)
if (config.options.chkSaveFromWebPreFetch==undefined)
	config.options.chkSaveFromWebPreFetch=false; // true=retrieve TW core when document is first loaded
//}}}

//{{{
// OPTIONAL: get TW core source code when plugin is loaded (i.e., once per document session)
if (document.location.protocol!="file:" && config.options.chkSaveFromWebPreFetch) {
	// retrieve TW source from server...
	var src=document.location.href;
	if (config.options.txtSaveFromWebSourceFile && config.options.txtSaveFromWebSourceFile.length)
		src=config.options.txtSaveFromWebSourceFile;
	var target=config.options.txtSaveFromWebTargetFilename;
	if (!target.length) { // use current filename
		var loc=document.location.pathname;
		var slashpos=loc.lastIndexOf("/");
		target=(slashpos==-1)?loc:loc.substr(slashpos+1);
		if (!target.length) target=document.location.host+".html";
	}
	var xhr=loadRemoteFile(src,function(success,target,txt,src,xhr){if(success)config.saveFromWebSourceCache=txt;},target);
}
//}}}

//{{{
window.saveFromWeb_saveChanges = window.saveChanges;
window.saveChanges = function(onlyIfDirty,tiddlers) {
	// if on file:, just use standard core save handling
	if(document.location.protocol == "file:") { window.saveFromWeb_saveChanges.apply(this,arguments); return; }
	// get target filename
	var target=config.options.txtSaveFromWebTargetFilename;
	if (!target.length) { // use current filename
		var loc=document.location.pathname;
		var slashpos=loc.lastIndexOf("/");
		target=(slashpos==-1)?loc:loc.substr(slashpos+1);
		if (!target.length) target=document.location.host+".html";
	}
	// get TW core source location
	var src=document.location.href;
	if (config.options.txtSaveFromWebSourceFile && config.options.txtSaveFromWebSourceFile.length)
		src=config.options.txtSaveFromWebSourceFile;
	// if core source has already been cached, go straight to saving the file...
	if (config.saveFromWebSourceCache)
		{ window.saveFromWeb(true,target,config.saveFromWebSourceCache,src,null); return; }
	// otherwise, retrieve TW source from server...
	displayMessage("Retrieving TiddlyWiki core from "+src);
	var xhr=loadRemoteFile(src,window.saveFromWeb,target);
	if (!xhr) { // couldn't load remote, report core error message
		displayMessage("Could not retrieve TiddlyWiki core... download unsuccessful.");
		alert(config.messages.notFileUrlError);
		if(store.tiddlerExists(config.messages.saveInstructions))
			story.displayTiddler(null,config.messages.saveInstructions);
	}
	return;
}
//}}}

//{{{
window.saveFromWeb = function(success,target,txt,url,xhr) {
	if(!success) {
		displayMessage("Could not retrieve TiddlyWiki core... download unsuccessful.");
		alert(config.messages.cantSaveError);
		if(store.tiddlerExists(config.messages.saveInstructions))
			story.displayTiddler(null,config.messages.saveInstructions);
		return;
	}
	// Locate the storeArea div's in the original source
	var posDiv = locateStoreArea(txt);
	if(!posDiv) {
		alert(config.messages.invalidFileError.format([url]));
		return;
	}

	// cache the document source so subsequent saves don't have to retrieve the source each time
	if (!config.saveFromWebSourceCache) config.saveFromWebSourceCache=txt;

	// if we can get local filesystem access, then ask for a filename and merge/write the file
	if (config.options.chkSaveFromWebAttemptLocalIO) {
		try {
			// get destination path+filename
			var target=promptForFilename( "Save file as:","C:\\",target,"html"); // this be blocked by browser security
			if (!target || !target.length) return;
			saveBackup(target,txt);
			saveRss(target);
			saveEmpty(target,txt,posDiv);
			saveMain(target,txt,posDiv);
			return;
		}
		catch(e) { 
			displayMessage("Direct file access has been blocked by browser security settings.");
			if (config.options.txtSaveFromWebScriptURL.length)
				displayMessage("Attempting to download document using server-side 'reflector' script...");
		}
	}
	// otherwise, fallback to using online 'reflector' script (if any)
	if (config.options.txtSaveFromWebScriptURL.length) {
		displayMessage("Merging tiddlers with core and preparing for download...");
		// create form in a hidden frame and submit it to server
		var html='<input type="hidden" name="filename" value=""><input type="hidden" name="contents" value="">';
		var form=window.createHiddenForm(config.options.txtSaveFromWebScriptURL,html);
		form.filename.value=target;
		form.contents.value=updateOriginal(txt,posDiv); // merge tiddlers with source and set into form field
		form.submit();
	}
}
//}}}

//{{{
window.createHiddenForm=function(action,body) {
	var f=document.getElementById("saveFromWebFrame");
	if (f) document.body.removeChild(f);
	var f=createTiddlyElement(document.body,"iframe","saveFromWebFrame");
	f.style.width="0px"; f.style.height="0px"; f.style.border="0px";
	var d=f.document;
	if (f.contentDocument) d=f.contentDocument; // For NS6
	else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6
	d.open();
	d.writeln('<form target="_self" action="'+action+'" method="post" enctype="multipart/form-data">'+body+'</form>');
	d.close();
	return d.getElementsByTagName("form")[0];
}
//}}}

//{{{
// note: if blocked by browser security, this function will throw an error...
// the CALLING function should use "try{...} catch(e){...}" to handle the security errors
window.promptForFilename=function(msg,path,file,defext) {
	var result="";
	if(window.Components) { // moz
		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);
		picker.displayDirectory=null;
		picker.defaultExtension=defext;
		picker.defaultString=file;
		picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
		if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.persistentDescriptor;
	}
	else { // IE (XP only)
		var s = new ActiveXObject('UserAccounts.CommonDialog');
		s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
		s.FilterIndex=1; // default to ALL files;
		s.InitialDir=path;
		s.FileName=file;
		if (s.showOpen()) var result=s.FileName;
	}
	return result;
}
//}}}
|>|>|>|>|<<search>> |
| in:|titles |text |tags |hold |
||<<option chkSearchTitles>> |<<option chkSearchText>> |<<option chkSearchTags>> |<<option chkHoldSearches>> |
TiddlyWiki offers a number of powerful features for searching within a TiddlyWiki site. The built-in search features in TiddlyPerfect are enhance with the installation of [[SearchOptions plugin]] and [[YourSearchPlugin macro]]. The options you select will be saved in a cookie, and will remain in effect when you re-visit this site.
!!!Search Options
<<option chkSearchTitles>> Search in tiddler titles
<<option chkSearchText>> Search in tiddler text
<<option chkSearchTags>> Search in tiddler tags
<<option chkSearchTitlesFirst>> Search results show title matches first
<<option chkSearchList>> Search results show list of matching tiddlers
<<option chkSearchIncremental>> Incremental searching
!!!~YourSearch Options
<<option chkUseYourSearch>> Use 'Your Search' 
<<option chkPreviewText>> Show Text Preview
<<option chkSearchAsYouType>> 'Search As You Type' Mode (No RETURN required to start search)
Default Search Filter: <<option chkSearchInTitle>>Titles ('!') <<option chkSearchInText>>Texts ('%') <<option chkSearchInTags>>Tags ('#') <html><br><font size="-2">The parts of a tiddlers that are searched when you don't explicitly specify a filter in the search text (using a '!', '%' or '#' prefix).</font></html>
Number of items on search result page: <<option txtItemsPerPage>>
Number of items on search result page with preview text: <<option txtItemsPerPageWithPreview>>
/***
|Name|''SearchOptions''|h
|Author|[[Eric Shulman]]|
|Version|2.2.1 (2006.02.03)|
|Description|Allows modification of search criteria.|
|Source|http://www.TiddlyTools.com/#SearchOptionsPlugin|
|Licence|[[Creative Commons Attribution ShareAlike 2.5 Licence]]|
***/
/***
The TiddlyWiki search function normally looks in both tiddler titles and tiddler body content ('text'). However, narrowing the search so that it examines only titles or only text, or expanding the search to include text contained in tiddler tags can be very helpful, especially when searching on common words or phrases.  In addition, it is often useful for the search results to show tiddlers with matching titles before tiddlers that contain matching text or tags.

!!!!!Usage
<<<
This plugin adds checkboxes (see below and in AdvancedOptions) to let you selectively configure the TiddlyWiki search function to just examine any combination of tiddler titles, text, or tags.  It also provides an option to switch the search results order between 'titles mixed in' (default) and 'titles shown first', as well as an option display the search results as a list of links (in an auto-generated "SearchResults" tiddler), rather than actually displaying all matching tiddlers.  You can also enable/disable the "incremental search" (key-by-key searching), so that a search is only initiated when you press the ENTER key or click on the "search:" prompt text.
<<<
!!!!!Configuration
<<<
In additional to the checkboxes in AdvancedOptions, a self-contained control panel is included here for your convenience:
<<option chkSearchTitles>> Search tiddler titles
<<option chkSearchText>> Search tiddler text
<<option chkSearchTags>> Search in tiddler tags
<<option chkSearchTitlesFirst>> Show title matches first
<<option chkSearchList>> Show list of matching tiddlers
<<option chkSearchIncremental>> Incremental searching
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''SearchOptionsPlugin'' (tagged with <<tag systemConfig>>)
^^documentation and javascript for SearchOptionsPlugin handling^^

When installed, this plugin automatically adds checkboxes in the AdvancedOptions shadow tiddler so you can enable/disable the extended search behavior.  However, if you have customized your AdvancedOptions, you will need to manually add {{{<<option chkSearchTitles>>}}},  {{{<<option chkSearchText>>}}} and {{{<<option chkSearchTitlesFirst>>}}}  (with suitable prompt text) to your customized tiddler.
<<<
!!!!!Revision History
<<<
''2006.02.03 [2.2.1]''
rewrite timeout clearing code and blank search text handling to match 2.0.4 core release changes.  note that core no longer permits "blank=all" searches, so neither does this plugin.  To search for all, use "." with text patterns enabled.
''2006.02.02 [2.2.0]''
in search.handler(), KeyHandler() function clears 'left over' timeout when search input is < 3 chars.  Prevents searching on shorter text when shortened by rapid backspaces (<500msec)
''2006.02.01 [2.1.9]''
in Story.prototype.search(), correct inverted logic for using/not using regular expressions when searching
also, blank search text now presents "No search text.  Continue anyway?" confirm() message box, so search on blank can still be processed if desired by user.
''2006.02.01 [2.1.8]''
in doSearch(), added alert/return if search text is blank
''2006.01.20 [2.1.7]''
fixed setting of config.macros.search.reportTitle so that Tweaks can override it.
''2006.01.19 [2.1.6]''
improved SearchResults formatting, added a "search again" form to the report (based on a suggestion from MorrisGray)
define results report title using config.macros.search.reportTitle instead of hard-coding the tiddler title
''2006.01.18 [2.1.5]''
Created separate functions for reportSearchResults(text,matches) and discardSearchResults(), so that other developers can create alternative report generators.
''2006.01.17 [2.1.4]''
Use regExp.search() instead of regExp.test() to scan for matches.  Correctd the problem where only half the matching tiddlers (the odd-numbered ones) were being reported.
''2006.01.15 [2.1.3]''
Added information (date/time, username, search options used) to SearchResults output
''2006.01.10 [2.1.2]''
use displayTiddlers() to render matched tiddlers.  This lets you display multiple matching tiddlers, even if SinglePageModePlugin is enabled.
''2006.01.08 [2.1.1]''
corrected invalid variable reference, "txt.value" to "text" in story.search()
''2006.01.08 [2.1.0]''
re-write to match new store.search(), store.search.handler() and story.search() functions.
''2005.12.30 [2.0.0]''
Upgraded to TW2.0
when rendering SearchResults tiddler, closeTiddler() first to ensure display is refreshed.
''2005.12.26 [1.4.0]''
added option to search for matching text in tiddler tags
''2005.12.21 [1.3.7]''
use \\ to 'escape' single quotes in tiddler titles when generating "Open all matching tiddlers" link.  Also, added access key: "O", to trigger "open all" link.
Based on a suggestion by UdoBorkowski.
''2005.12.18 [1.3.6]''
call displayMessage() AFTER showing matching tiddlers so message is not cleared too soon
''2005.12.17 [1.3.5]''
if no matches found, just display message and delete any existing SearchResults tiddler.
''2005.12.17 [1.3.4]''
use """{{{"""  and """}}}""" to 'escape' display text in SearchResults tiddler to ensure that formatting contained in search string is not rendered 
Based on a suggestion by UdoBorkowski.
''2005.12.14 [1.3.3]''
tag SearchResults tiddler with 'excludeSearch' so it won't list itself in subsequent searches
Based on a suggestion by UdoBorkowski.
''2005.12.14 [1.3.2]''
added "open all matching tiddlers..." link to search results output.
Based on a suggestion by UdoBorkowski.
''2005.12.10 [1.3.1]''
added "discard search results" link to end of search list tiddler output for quick self-removal of 'SearchResults' tiddler.
''2005.12.01 [1.3.0]''
added chkSearchIncremental to enable/disable 'incremental' searching (i.e., search after each keystroke) (default is ENABLED).
added handling for Enter key so it can be used to start a search.
Based on a suggestion by LyallPearce
''2005.11.25 [1.2.1]''
renamed from SearchTitleOrTextPlugin to SearchOptionsPlugin
''2005.11.25 [1.2.0]''
added chkSearchList option
Based on a suggestion by RodneyGomes
''2005.10.19 [1.1.0]''
added chkSearchTitlesFirst option.
Based on a suggestion by ChristianHauck
''2005.10.18 [1.0.0]''
Initial Release
<<<
!!!!!Credits
<<<
This feature was developed by [[Eric Shulman]] from [[ELS Design Studios|http:/www.elsdesign.com]].
Based on a suggestion by Lyall Pearce.
<<<
!!!!!Code
***/
//{{{
version.extensions.SearchTitleOrText = {major: 2, minor: 2, revision: 1, date: new Date(2006,2,3)};
//}}}

//{{{
if (config.options.chkSearchTitles==undefined) config.options.chkSearchTitles=true;
if (config.options.chkSearchText==undefined) config.options.chkSearchText=true;
if (config.options.chkSearchTags==undefined) config.options.chkSearchTags=true;
if (config.options.chkSearchTitlesFirst==undefined) config.options.chkSearchTitlesFirst=false;
if (config.options.chkSearchList==undefined) config.options.chkSearchList=false;
if (config.options.chkSearchIncremental==undefined) config.options.chkSearchIncremental=true;

config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchTitles>> Search in tiddler titles";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchText>> Search in tiddler text";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchTags>> Search in tiddler tags";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchTitlesFirst>> Search results show title matches first";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchList>> Search results show list of matching tiddlers";
config.shadowTiddlers.AdvancedOptions += "\n<<option chkSearchIncremental>> Incremental searching";
//}}}

//{{{
if (config.macros.search.reportTitle==undefined)
config.macros.search.reportTitle="SearchResults";
//}}}

//{{{
config.macros.search.handler = function(place,macroName,params)
{
var lastSearchText = "";
var searchTimeout = null;
var doSearch = function(txt)
{
if (txt.value.length>0)
{
story.search(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);
lastSearchText = txt.value;
}
};
var clickHandler = function(e)
{
doSearch(this.nextSibling);
return false;
};
var keyHandler = function(e)
{
if (!e) var e = window.event;
switch(e.keyCode)
{
case 13: // ELS: handle enter key
doSearch(this);
break;
case 27:
this.value = "";
clearMessage();
break;
}
if (config.options.chkSearchIncremental)
{
if(this.value.length > 2)
{
if(this.value != lastSearchText)
{
if(searchTimeout) clearTimeout(searchTimeout);
var txt = this;
searchTimeout = setTimeout(function() {doSearch(txt);},500);
}
}
else
if(searchTimeout) clearTimeout(searchTimeout);
}
};
var focusHandler = function(e)
{
this.select();
};
var btn = createTiddlyButton(place,this.label,this.prompt,clickHandler);
var txt = createTiddlyElement(place,"input",null,null,null);
if(params[0])
txt.value = params[0];
txt.onkeyup = keyHandler;
txt.onfocus = focusHandler;
txt.setAttribute("size",this.sizeTextbox);
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");
}
//}}}

//{{{
Story.prototype.search = function(text,useCaseSensitive,useRegExp)
{
highlightHack = new RegExp(useRegExp ? text : text.escapeRegExp(),useCaseSensitive ? "mg" : "img");
var matches = store.search(highlightHack,"title","excludeSearch");
var q = useRegExp ? "/" : "'";
clearMessage();
if (!matches.length) {
if (config.options.chkSearchList) discardSearchResults();
displayMessage(config.macros.search.failureMsg.format([q+text+q]));
} else {
if (config.options.chkSearchList) 
reportSearchResults(text,matches);
else {
var titles = []; for(var t=0; t<matches.length; t++) titles.push(matches[t].title);
this.closeAllTiddlers(); story.displayTiddlers(null,titles);
displayMessage(config.macros.search.successMsg.format([matches.length, q+text+q]));
}
}
highlightHack = null;
}
//}}}

//{{{
TiddlyWiki.prototype.search = function(searchRegExp,sortField,excludeTag)
{
var candidates = this.reverseLookup("tags",excludeTag,false,sortField);

// scan for matching titles
var title_results = [];
if (config.options.chkSearchTitles)
for(var t=0; t<candidates.length; t++)
if(candidates[t].title.search(searchRegExp)!=-1)
title_results.push(candidates[t]);

// scan for matching text
var text_results = [];
if (config.options.chkSearchText)
for(var t=0; t<candidates.length; t++)
if(candidates[t].text.search(searchRegExp)!=-1)
text_results.push(candidates[t]);

// scan for matching tags
var tag_results = [];
if (config.options.chkSearchTags)
for(var t=0; t<candidates.length; t++)
if(candidates[t].tags.join(" ").search(searchRegExp)!=-1)
tag_results.push(candidates[t]);

// merge the results, eliminating redundant matches
var results = [];
for(var t=0; t<title_results.length; t++) results.pushUnique(title_results[t]);
for(var t=0; t<text_results.length; t++) results.pushUnique(text_results[t]);
for(var t=0; t<tag_results.length; t++) results.pushUnique(tag_results[t]);

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

// // ''REPORT GENERATOR''
//{{{
if (!window.reportSearchResults) window.reportSearchResults=function(text,matches)
{
var title=config.macros.search.reportTitle
var q = config.options.chkRegExpSearch ? "/" : "'";
var body="";

// summary: nn tiddlers found matching '...', options used
body+="''"+config.macros.search.successMsg.format([matches.length,q+"{{{"+text+"}}}"+q])+"''\n";
body+="^^//searched in:// ";
body+=(config.options.chkSearchTitles?"''titles'' ":"");
body+=(config.options.chkSearchText?"''text'' ":"");
body+=(config.options.chkSearchTags?"''tags'' ":"");
if (config.options.chkCaseSensitiveSearch||config.options.chkRegExpSearch) {
body+=" //with options:// ";
body+=(config.options.chkCaseSensitiveSearch?"''case sensitive'' ":"");
body+=(config.options.chkRegExpSearch?"''text patterns'' ":"");
}
body+="^^";

// numbered list of links to matching tiddlers
body+="\n<<<";
for(var t=0;t<matches.length;t++) body+="\n# [["+matches[t].title+"]]";
body+="\n<<<\n";

// open all matches button
body+="<html><input type=\"button\" href=\"javascript:;\" ";
body+="onclick=\"story.displayTiddlers(null,["
for(var t=0;t<matches.length;t++)
body+="'"+matches[t].title.replace(/\'/mg,"\\'")+"'"+((t<matches.length-1)?", ":"");
body+="],1);\" ";
body+="accesskey=\"O\" ";
body+="value=\"open all matching tiddlers\"></html> ";

// discard search results button
body+="<html><input type=\"button\" href=\"javascript:;\" ";
body+="onclick=\"story.closeTiddler('"+title+"'); store.deleteTiddler('"+title+"');\" ";
body+="value=\"discard "+title+"\"></html>";

// search again
body+="\n\n----\n";
body+="<<search \""+text+"\">> ";
body+="<<option chkSearchTitles>>titles ";
body+="<<option chkSearchText>>text ";
body+="<<option chkSearchTags>>tags";
body+="<<option chkCaseSensitiveSearch>>case-sensitive ";
body+="<<option chkRegExpSearch>>text patterns";

// create/update the tiddler
var tiddler=store.getTiddler(title); if (!tiddler) tiddler=new Tiddler();
tiddler.set(title,body,config.options.txtUserName,(new Date()),"excludeLists excludeSearch");
store.addTiddler(tiddler); story.closeTiddler(title);

// use alternate "search again" label in <<search>> macro
var oldprompt=config.macros.search.label;
config.macros.search.label="search again";

// render tiddler
story.displayTiddler(null,title,1); // force refresh

// restore standard search label
config.macros.search.label=oldprompt;

}

if (!window.discardSearchResults) window.discardSearchResults=function()
{
// remove the tiddler
story.closeTiddler(config.macros.search.reportTitle);
store.deleteTiddler(config.macros.search.reportTitle);
}
//}}}


{{iframe{''Note'': This is a "framed" photo album page hosted on the [[Picasa]] web site. If you have the [[CoolIris]] - formerly PicLens -  [[Firefox extension]] installed, you can explore additional ways of viewing the photos in the album. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://picasaweb.google.com/ecology2001/SeenUnderFigLeafsAtLaPerlaGarden23August2008}}}
<html><iframe
	src = "http://picasaweb.google.com/ecology2001/SeenUnderFigLeafsAtLaPerlaGarden23August2008"
	title = ""
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
/***
|Name|''SettingsPlugin''|h
|Author|[[Udo Borkowski]]|
|Version|1.1.0 (2006.07.30)|
|Description||
|Source|http://tiddlywiki.abego-software.de/#SettingsPlugin|
|Licence|[[BSD open source licence]]|
|TW Version|2.0.7|
***/
/***
|''Documentation:''|[[SettingsPlugin Documentation]]|
|''~SourceCode:''|[[SettingsPlugin SourceCode]]|
|''Browser:''|Firefox 1.5.0.2 or better; Internet Explorer 6.0|
^^This tiddler contains compressed source code. [[Full Source Code|SettingsPlugin SourceCode]].^^
***/
// /%
if(!version.extensions.SettingsPlugin){if(version.major<2){(function(){var s="Use TiddlyWiki 2.0 or better to run the Settings Plugin.";alert(s);throw s;})();}version.extensions.SettingsPlugin={major:1,minor:1,revision:0,date:new Date(2006,6,30),type:"plugin",source:"http://tiddlywiki.abego-software.de/#SettingsPlugin",documentation:"[[SettingsPlugin Documentation]]",sourcecode:"[[SettingsPlugin SourceCode]]",author:"Udo Borkowski (ub [at] abego-software [dot] de)",licence:"[[BSD open source license (abego Software)]]",coreVersion:"2.0.7",browser:"Firefox 1.5.0.2 or better; Internet Explorer 6.0"};if(!window.abego){window.abego={};}if(!abego.setTiddlerText){abego.setTiddlerText=function(_2,_3,_4,_5,_6,_7){var _8=_2.getTiddler(_3);if(_8&&(_8.text==_4)){return;}var _9=config.options.chkForceMinorUpdate;var _a=!_8?_5:_8.tags;_2.suspendNotifications();try{_2.saveTiddler(_3,_3,_4,_9?undefined:config.options.txtUserName,_9?undefined:new Date(),_a);}finally{_2.resumeNotifications();}if(_7){_2.notify(_3,true);}if(!_6&&config.options.chkAutoSave){saveChanges();}};}(function(){var _b="PrivateSettings";var _c="chkUsePrivateSettings";var _d="chkMakeSettingPrivateWhenChanged";var _e=null;var _f=false;var _10=function(_11,s){var _13=s.split(";");var _14={};for(var c=0;c<_13.length;c++){var p=_13[c].indexOf("=");if(p!=-1){var _17=_13[c].substr(0,p).trim();var _18=_13[c].substr(p+1).trim();_11[_17]=unescape(_18);_14[_17]=true;}}return _14;};var _19=function(_1a){var s=store.getTiddlerText(_b);_e=s?_10(_1a,s):{};};var _1c=function(_1d){_10(_1d,document.cookie);};var _1e=function(){var _1f={};_1c(_1f);return _1f;};var _20=function(){var _21={};_19(_21);return _21;};var _22=function(_23,_24){document.cookie=_23+"="+escape(_24)+"; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";};var _25=function(_26,s,_28){var _29=_20();if(s===null){if(!_e[_26]){return;}delete _29[_26];delete _e[_26];}else{var _2a=_29[_26];if(_2a!==undefined&&_2a==s){return;}_29[_26]=s;_e[_26]=true;}var t="";for(var i in _29){if(t){t+="; ";}t+=i+"="+escape(_29[i]);}abego.setTiddlerText(store,_b,t,["excludeLists","excludeSearch"],_28);if(!_28&&config.options.chkAutoSave){saveChanges();}};config.shadowTiddlers["BSD open source license (abego Software)"]="See [[Licence|http://tiddlywiki.abego-software.de/#%5B%5BBSD%20open%20source%20license%5D%5D]].";config.shadowTiddlers["SettingsPlugin Documentation"]="[[Documentation on abego Software website|http://tiddlywiki.abego-software.de/#%5B%5BSettingsPlugin%20Documentation%5D%5D]].\n\n^^You may copy the documentation tiddler from the website to your TiddlyWiki.\nThen you don't need to access the internet to read the documentation.^^";config.shadowTiddlers["SettingsPlugin SourceCode"]="Rightclick this [[link|http://tiddlywiki.abego-software.de/src/Plugin-Settings-src.js]] and choose 'Save target/link as...' to get the plugin source code from the abego Software website.";config.shadowTiddlers["Show Settings"]="<<showSettings>>";if(config.options[_c]===undefined){config.options[_c]=false;}if(config.options[_d]===undefined){config.options[_d]=false;}config.shadowTiddlers.AdvancedOptions+="\n''Private Settings: ''<<option "+_c+">> Use private settings.  <<option "+_d+">> Make setting private when changed.&#160;&#160;&#160;[[Show Settings]].\n^^(Private settings are stored in this ~TiddlyWiki, shared settings are stored as cookies. For more information see the [[Settings documentation|SettingsPlugin Documentation]].)^^";abego.usePrivateSettings=function(){return _f;};abego.setUsePrivateSettings=function(f){if(f!=abego.usePrivateSettings()){_f=f;loadOptionsCookie();}};abego.isUsePrivateSettingsOption=function(_2e){return _2e==_c;};abego.makeSettingPrivateWhenChanged=function(){return config.options[_d];};abego.setMakeSettingPrivateWhenChanged=function(f){config.options[_d]=f;};abego.getSettings=function(){var _30={};_1c(_30);_f=_30[_c]=="true";if(abego.usePrivateSettings()){_19(_30);}return _30;};abego.getSetting=function(_31){var s=abego.getSettings()[_31];return !s?"":s;};abego.saveSetting=function(_33,_34){if(abego.isUsePrivateSettingsOption(_33)){_22(_33,_34);abego.setUsePrivateSettings(_34=="true");loadOptionsCookie();window.alert("You changed the 'Use private settings' option.\nPlease reload your TiddlyWiki to update the settings.\n");return;}if(abego.usePrivateSettings()&&(abego.isSettingPrivate(_33)||abego.makeSettingPrivateWhenChanged())){_25(_33,_34);}else{_22(_33,_34);}};abego.isSettingPrivate=function(_35){if(abego.isUsePrivateSettingsOption(_35)){return false;}if(!_e){_20();}return !!_e[_35];};abego.isPasswordSetting=function(_36){return (_36.substr(0,3)=="pas")||(_36.substr(0,6)=="chkpas");};abego.makeSettingPrivate=function(_37,_38,_39){if(abego.isPasswordSetting(_37)){_25(_37,null,_39);return;}var _3a=_20();var _3b=_3a[_37]!==undefined;if(_38==_3b){return;}var _3c=_1e();if(_38){_25(_37,_3c[_37],_39);}else{if(_3c[_37]===undefined){_22(_37,_3a[_37]);}_25(_37,null,_39);}};abego.setAllSettingsPrivate=function(_3d,_3e){var _3f=abego.getSettings();for(var s in _3f){abego.makeSettingPrivate(s,_3d,true);}if(config.options.chkAutoSave){saveChanges();}if(_3e){story.refreshTiddler(_3e,1,true);}return false;};})();config.macros.showSettings={label:"showSettings",prompt:"Display the current TiddlyWiki settings"};config.macros.showSettings.handler=function(_41,_42,_43,_44,_45,_46){var _47=function(a){var s=a.substr(0,3);return s=="txt"||s=="chk";};var _4a=function(a,b){var s1=a.toLowerCase();var s2=b.toLowerCase();return (s1<s2)?-1:(s1==s2)?0:1;};var _4f=function(a,b){var _52=_47(a);var _53=_47(b);if(_52){if(!_53){return -1;}else{return _4a(a.substr(3),b.substr(3));}}else{if(_53){return 1;}else{return _4a(a,b);}}};var s="<html><table><tr align=\"left\"><th>Private</th><th>Name</th><th>Value</th></tr>";var c=abego.getSettings();var _56=[];for(var i in c){if(!abego.isPasswordSetting(i)){_56.push(i);}}_56.sort(_4f);for(i=0;i<_56.length;i++){var _58=_56[i];var _59=_47(_58)?_58.substr(3)+" ("+_58.substr(0,3)+"...)":_58;var _5a=abego.isUsePrivateSettingsOption(_58)?"":"<input name=\""+_58+"\" type=\"checkbox\" onclick=\"abego.onPrivateSettingClick(this)\""+(abego.isSettingPrivate(_58)?" checked":"")+"/>";s+="<tr><td align=\"right\">"+_5a+"</td><td>"+_59+"</td><td>"+c[_58]+"</td></tr>\n";}s+="</table>";s+="<a class=\"button\" title=\"Make all current settings private\" href=\"javascript:;\" onclick=\"abego.setAllSettingsPrivate(true,'"+_46.title+"',1);\">Make all private</a>";s+="<a class=\"button\" title=\"Make all current settings shared\" href=\"javascript:;\" onclick=\"abego.setAllSettingsPrivate(false,'"+_46.title+"',1);\">Make all shared</a>";s+="</html>";wikify(s,_41);};abego.onPrivateSettingClick=function(_5b){abego.makeSettingPrivate(_5b.name,_5b.checked);return false;};this.loadOptionsCookie=function(){if(safeMode){return;}var _5c=abego.getSettings();for(var _5d in _5c){var _5e=_5c[_5d];switch(_5d.substr(0,3)){case "txt":config.options[_5d]=unescape(_5e);break;case "chk":config.options[_5d]=_5e=="true";break;}}};this.saveOptionCookie=function(_5f){if(safeMode){return;}var v="";switch(_5f.substr(0,3)){case "txt":v=config.options[_5f].toString();break;case "chk":v=config.options[_5f]?"true":"false";break;}abego.saveSetting(_5f,v);};loadOptionsCookie();}
// %/

Once you have [[downloaded this web site|Download this template]], the ''Setup Menu'' serves as a control panel from which you can re-organize and customize and discover how it can work for you and members of your community - who can in turn download your organization's TiddlyWiki site ... 
* SiteTitle - the short title for the site; displayed by the browser and at the head of the page and included in the page's "title tag"
>> ''<<tiddler SiteTitle>>''
* SiteSubtitle - a subtitle for the site, also displayed by the browser and at the head of the page and included in the page's "title tag"
>> ''<<tiddler SiteSubtitle>>''
* SiteUrl - the Url where the page is hosted; be sure to define this correctly if you will be generating an XML page
>> <<tiddler SiteUrl>>
* DefaultTiddlers - list of tiddlers displayed when the page is opened
>> <<tiddler DefaultTiddlers>>
* MainMenu - the ''Main Menu'', displayed here in the left sidebar, and a key to effective navigation - is composed of the [[Custom Menu]] and the [[Administrative Menu]], both of which make extensive use of sub-menus using the NestedSlidersPlugin
** The [[Custom Menu]] - at the the top of the [[Main Menu|MainMenu]] - displays a customized menu that you create for your own site, and that highlights key aspects of your organization or capaign's information<br>+++[Custom Menu]
> <<tiddler "Custom Menu">>
===

** [[Administrative Menu]] - a component of the Main Menu, it includes common site tools & a nested set of [[Tiddler Administration]] menus for modifying and reconfiguring the appearance and organization of the page.<br>+++[Administrative Menu]
<<tiddler "Administrative Menu">>
===


* MarkupPreHead - "meta tags" for browsers & search engines & to define the opening<br>+++[Splash Screen]
<<tiddler "Site Splash Screen">>
===

* [[Templates & Stylesheets]] - These tiddlers allow you to change the appearance, colors, font types and sizes of your own Climate Change Summer - or of any other TiddlyWiki pages you and your friends may develop and build.<br> +++[Templates and Stylesheets]
> <<tiddler "Templates & Stylesheets">>
===

* [[More Menus|Menus]]
This tiddler uses the syntax {{{<<list shadowed>>}}} to display a list of "shadow tiddlers"  - tiddlers that are automatically generated with default values by TiddlyWiki, or by installed [[Plugin Macros]], if the tiddler has not been edited. These shadow tiddlers can be edited, but remain classified as shadow tiddlers.

<<list shadowed>>
<html>
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="600" height="400" flashvars="host=picasaweb.google.com&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fecology2001%2Falbumid%2F5205160818000213185%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</html>
Photos by Isobel Lowther, ''Kaleidoscope Experience''
!!!Expected Climatic Trigger for the Transition
Freshening of high-latitude oceans as a result of snow and ice melt and increased high-latitude precipitation has the potential over a period of decades to centuries to reduce ocean-water density enough to sharply slow deep-water formation.
!!!Expected Environmental Consequences
Slowing of the North Atlantic deep-water circulation would likely exacerbate the rate of sea-level rise and reduce marine carbon uptake.
!!!Likely Societal Significance
In the North Atlantic region, a slowdown would diminish winter warming over Europe while increasing the rate of sea-level rise. For the world, the slowdown would likely reduce ocean productivity and alter climatic patterns, possibly reducing tropical precipitation and reducing food production in that region.
!!!Note
Deep-water formation, which occurs mainly in the North Atlantic and in the Southern Ocean surrounding Antarctica, takes place when surface waters become so salty and cold that they are denser than waters below them, causing these waters to sink to the ocean depths (hence the name deep water). The sinking waters offset the wind-driven upward motion of deep water elsewhere in the world that over time has been slightly warmed by the downward mixing of surface heat. This cycling of water through the formation and then upward movement of deep watertakes, on average, about 1,000 years, creating what has been likened to a global ocean conveyor belt that, through evaporation at low latitudes and heat release in winter at high latitudes, affects the global climate while keeping the deep ocean cold, limiting the rate of sea-level rise, and bringing nutrients to the surface in upwelling regions, thereby supplying ocean fisheries. This cycling, along with the biological activity that is induced, also helps the ocean to each year take up about one-third of current CO2 emissions, thus limiting global warming. For these reasons, potential slowing of the rate of deep-water formation could have serious consequences for the climate, the environment, and society.
/*{{{*/
#sidebar {
position: absolute;
right: 3px;
width: 16em;
font-size: .9em;
}

#sidebarOptions {
padding-top: 0.3em;
}

#sidebarOptions a {
margin: 0em 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 .3em 0;
}

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

#sidebarTabs .tabContents {
width: 15em;
overflow: hidden;
}
#sidebarTabs .tiddlyLinkNonExisting{
font-weight: normal;
font-style: normal;
}
/*}}}*/
Sifting finished compost at La Perla Garden on Memorial Day weekend 2008 "[[staycation|Staycation]]". This is the final stage of composting, when the rich compost get ready to give itself back to the garden. This pile has rather an excessive amount of small sticks and twigs - an abundance from seven or eight abandoned Christmas trees that had been left in the garden after the 2006 holiday season. In order to reduce what is still an excessive amount of sticks and twigs, after being separated they I cut them up into lengths of 3 inches or so, and use them as wood chips on the garden paths. 

The worm that flourish in compost are known as red wrigglers, but they are not the same as earthworms and will not survive long if moved to a garden be. So when I come across a cluster of worms - or a single worm - I toss it back into the compost pile where the worms will continue to thrive and to contribute to the transformation of the compost.

<html>
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="600" height="400" flashvars="host=picasaweb.google.com&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fecology2001%2Falbumid%2F5205150462834061553%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</html>
Photos by: [[Isobel Lowther]], [[Kaleidoscope Experience]].
Date: 2008.05.25 - 25 May 2008
Number of photographs: 28
Copyright: &copy;, 2008, [[Information Habitat: Where Information Lives]]. Commercial rights reserved
[[Creative Commons Non-Commercial, By Attribution, Share Alike Licence 3.0]]
!!!Expected Climatic Trigger for the Transition
Warming of the Pacific Ocean has the potential to alter the cycling of tropical ocean temperatures, significantly altering the intensity of the monsoons and storm tracks.
!!!Expected Environmental Consequences
The nations of the Pacific depend on the cycling of El Nino and La Nina events, and increasing the frequency and intensity of El Nino events would likely cause greater flooding in some regions and intensified drought in others.
!!!Likely Societal Significance
In the Pacific region, some countries would face greater drought while others would face inundating rains. Globally, the greater variability and intensity of events would likely lead to disruption of trading and some nations' economies.
''Simon Baird'' is an active and creative member of the [[TiddlyWiki Developer Community]] and developer of the MonkeyPirateTiddlyWiki - [[tiddlyspot.com/mptw/|http://tiddlyspot.com/mptw/]]

|<<siteMap >> |<<siteMap "tiddlywiki developer">> |
''Site Maps'' - made possible through the [[siteMap plugin macro]] - combined with the use of [[networked tiddler tags|Networked tiddler tags]] - offer a powerful way of organizing and presenting the tiddlers in a TiddlyWiki web site.  Recent development of this site has focused on the development of site maps, and adding them by default to the tiddler for each of the [[Tiddler  tags]]. If a tag - displayed above the upper right corner of each tiddler - is in bold, clicking on it will bring up a brief description of the tag, often with a like to a relevant tiddler,, followed bt site maps for the tag and for the tags associated with that tag.

If the tag is displayed in italic, clicking on the tag will display a '[[shadow tiddler|Shadow tiddlers]] with a display of all the tiddlers with that tag.

The following example is based on the syntax {{{|<<siteMap cc2.0>> |<<siteMap tiddlywiki>> |}}}
<<<
|<<siteMap cc2.0>> |<<siteMap tiddlywiki>> |
<<<
[img[http://www.climate-change-two.net/rss-small.jpg]] You can keep up with new content from this web site by subscribing to the [[RSS feed]] from this site at http://www.climate-change-two.net/garden/rss.xml
Urban oases & creative commons learning environment - where the garden is the teacher
Community Gardens & Climate Change
http://www.climate-change-two.net/garden/
Demo of slider formatting in [[siteMap plugin macro]]
|!w.o sliders|!sliders|!openSliders|!popups|
|{{{<<siteMap cc2.0>>}}}|{{{<<siteMap cc2.0 . sliders>>}}}|{{{<<siteMap cc2.0 . openSliders>>}}}|{{{<<siteMap cc2.0 . popups>>}}}|
|<<siteMap 2.0>> |<<siteMap cc2.0 . sliders>> |<<siteMap cc2.0 . openSliders>> |<<siteMap cc2.0 . popups>> |
<html>
<div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 90%; margin: 10px auto; padding: 10px; color:#000;  font-family:Bookman Old Style; background-color:#eee;">
<span style="font-size: 30px;"><b>Community Gardens & Climate Change</b></span>
<br>
<br>
<span style="font-size: 18px;"><b>A TiddlyWiki Creative Commons learning environment
<br>
in climate change and community diversity
<br>
centered in La Perla Garden</b></span>
<p>
<img src="http://lh6.google.com/ecology2001/Rn1doCYML0I/AAAAAAAAAA0/JP6zhgDDnT8/s400/lpg-2007.05.08-80-1152x864.jpg" />
<br />
is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span>
<p>
<span style="font-size: 14px;">This web site is being developed for <b>Climate Change 2.0</b> and the <b>NGO Committee on Education</b>  by <b>Information Habitat: Where Information Lives</b>
<br>
<img src="http://www.climate-change-two.net/cc2-151x43.jpg" width="151" height="43" alt="Climate Change 2.0">
<img src="http://www.ngo-framework.net/congo-74x54.png" width="74" height="54" alt="logo of Conference Of NGOs">
</div>
</html>
/***

''Inspired by [[TiddlyPom|http://www.warwick.ac.uk/~tuspam/tiddlypom.html]]''

|Name|SplashScreenPlugin|
|Created by|SaqImtiaz|
|Location|http://tw.lewcid.org/#SplashScreenPlugin|
|Version|0.21 |
|Requires|~TW2.08+|
!Description:
Provides a simple splash screen that is visible while the TW is loading.

!Installation
Copy the source text of this tiddler to your TW in a new tiddler, tag it with systemConfig and save and reload. The SplashScreen will now be installed and will be visible the next time you reload your TW.

!Customizing
Once the SplashScreen has been installed and you have reloaded your TW, the splash screen html will be present in the MarkupPreHead tiddler. You can edit it and customize to your needs.

!History
* 20-07-06 : version 0.21, modified to hide contentWrapper while SplashScreen is displayed.
* 26-06-06 : version 0.2, first release

!Code
***/
//{{{
var old_lewcid_splash_restart=restart;

restart = function()
{   if (document.getElementById("SplashScreen"))
        document.getElementById("SplashScreen").style.display = "none";
      if (document.getElementById("contentWrapper"))
        document.getElementById("contentWrapper").style.display = "block";
    
    old_lewcid_splash_restart();
   
    if (splashScreenInstall)
       {if(config.options.chkAutoSave)
			{saveChanges();}
        displayMessage("TW SplashScreen has been installed, please save and refresh your TW.");
        }
}


var oldText = store.getTiddlerText("MarkupPreHead");
if (oldText.indexOf("SplashScreen")==-1)
   {var siteTitle = store.getTiddlerText("SiteTitle");
   var splasher='\n\n<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>'+siteTitle +'</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>';
   if (! store.tiddlerExists("MarkupPreHead"))
       {var myTiddler = store.createTiddler("MarkupPreHead");}
   else
      {var myTiddler = store.getTiddler("MarkupPreHead");}
      myTiddler.set(myTiddler.title,oldText+splasher,config.options.txtUserName,null,null);
      store.setDirty(true);
      var splashScreenInstall = true;
}
//}}}
<html>
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="600" height="400" flashvars="host=picasaweb.google.com&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fecology2001%2Falbumid%2F5183954006326410833%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</html>
Photos by Isobel Lowther, ''Kaleidoscope Experience''
/*{{{*/
* html .tiddler {
    height: 1%;
}
body {
font-size: .75em;
font-family: bookman old style, garamond antigua, arial, helvetica;
margin: 0;
padding: 0;
}
[[CustomStyleSheet]]
[[ModifiedStyleSheetColors]]
[[CustomStyleSheetColors]]
[[TagglyTaggingStyles]]
[[MainMenuStyles]]
[[HoverMenuStyles]]
[[PrintStyles]]
[[CommonStyles]]
[[HeaderStyles]]
/*}}}*/
/*{{{*/
body {
	background: [[ColorPalette::Background]];
	color: [[ColorPalette::Foreground]];
}

a.externalLink {
 color: #007700;
}
a {
	color: [[ColorPalette::PrimaryMid]];
}

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

.cleartable table {
border: 1px solid #fff;
}
h1,h2,h3,h4,h5 {
	color: [[ColorPalette::PrimaryDark]];
}


.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::SecondaryLight]];
	border-top: 1px solid [[ColorPalette::SecondaryMid]];
	border-left: 1px solid [[ColorPalette::SecondaryMid]];
}

.wizard h1 {
	color: [[ColorPalette::SecondaryDark]];
}

.wizard h2 {
	color: [[ColorPalette::Foreground]];
}

.wizardStep {
	background: [[ColorPalette::Background]];
	border-top: 1px solid [[ColorPalette::SecondaryMid]];
	border-bottom: 1px solid [[ColorPalette::SecondaryMid]];
	border-left: 1px solid [[ColorPalette::SecondaryMid]];
}

.wizard .button {
	color: [[ColorPalette::Background]];
	background: [[ColorPalette::PrimaryMid]];
	border-top: 1px solid [[ColorPalette::PrimaryLight]];
	border-right: 1px solid [[ColorPalette::PrimaryDark]];
	border-bottom: 1px solid [[ColorPalette::PrimaryDark]];
	border-left: 1px solid [[ColorPalette::PrimaryLight]];
}

.wizard .button:hover {
	color: [[ColorPalette::PrimaryLight]];
	background: [[ColorPalette::PrimaryDark]];
	border-color: [[ColorPalette::PrimaryLight]];
}

.wizard .button:active {
	color: [[ColorPalette::Background]];
	background: [[ColorPalette::PrimaryMid]];
	border-top: 1px solid [[ColorPalette::PrimaryLight]];
	border-right: 1px solid [[ColorPalette::PrimaryDark]];
	border-bottom: 1px solid [[ColorPalette::PrimaryDark]];
	border-left: 1px solid [[ColorPalette::PrimaryLight]];
}

#messageArea {
	border: 1px solid [[ColorPalette::SecondaryDark]];
	background: [[ColorPalette::SecondaryMid]];
	color: [[ColorPalette::PrimaryDark]];
}

#messageArea .button {
	padding: 0.2em 0.2em 0.2em 0.2em;
	color: [[ColorPalette::PrimaryDark]];
	background: [[ColorPalette::Background]];
}

.popup {
	background: [[ColorPalette::PrimaryLight]];
	border: 1px solid [[ColorPalette::PrimaryMid]];
}

.popup hr {
	color: [[ColorPalette::PrimaryDark]];
	background: [[ColorPalette::PrimaryDark]];
	border-bottom: 1px;
}

.listBreak div{
	border-bottom: 1px solid [[ColorPalette::PrimaryDark]];
}

.popup li.disabled {
	color: [[ColorPalette::PrimaryMid]];
}

.popup li a, .popup li a:visited {
	color: [[ColorPalette::TertiaryPale]];
	border: none;
}

.popup li a:hover {
	background: [[ColorPalette::PrimaryDark]];
	color: [[ColorPalette::Background]];
	border: none;
}

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

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

.title {
	color: [[ColorPalette::PrimaryDark]];
}

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

.toolbar {
	color: [[ColorPalette::PrimaryMid]];
}

.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]];
}

.cascade {
	background: [[ColorPalette::TertiaryPale]];
	color: [[ColorPalette::TertiaryMid]];
	border: 1px solid [[ColorPalette::TertiaryMid]];
}

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

.viewer .listTitle {list-style-type: none; margin-left: -2em;}

.viewer .button {
	border: 1px solid [[ColorPalette::SecondaryMid]];
}

.viewer blockquote {
	[[ColorPalette::Foeground]];
}

.viewer table {
	border: 2px solid [[ColorPalette::TertiaryDark]];
}

.viewer th, thead td {
	background: [[ColorPalette::PrimaryPale]];
	color: [[ColorPalette::PrimaryDark]];
}

.viewer td, .viewer 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: solid2px [[ColorPalette::TertiaryDark]];
	color: [[ColorPalette::TertiaryDark]];
}

.box {
	background: #ccecff;
	border; 1px;
}

#mainMenu .highlight, #mainMenu .marked {
	background: [[ColorPalette::PrimaryPale]];
}

.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]];
}

/*}}}*/
/***
|Name|StyleSheetShortcuts|
|Source|http://www.TiddlyTools.com/#StyleSheetShortcuts|
|Version||
|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|CSS|
|Requires||
|Overrides||
|Description|'convenience' classes for common formatting, alignment, boxes, tables, etc.|

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/*}}}*/
<html>
<table border=0 style="background-color: #fff; padding: 5px;" cellspacing=0>
  <tr><td>
  <img src="http://groups.google.com/groups/img/3nb/groups_bar.gif"
         height=26 width=132 alt="Google Groups">
  </td></tr>
  <tr><td style="padding-left: 5px">
  <b>Subscribe to NGO Framework on Climate Change Action &amp; Information</b>
  </td></tr>
  <form action="http://groups.google.com/group/ngo-framework/boxsubscribe">
  <tr><td style="padding-left: 5px;">
  Email: <input type=text name=email>
  <input type=submit name="sub" value="Subscribe">
  </td></tr>
</form>
<tr><td align=right>
  <a href="http://groups.google.com/group/ngo-framework">Visit this group</a>
</td></tr>
</table>
</html>
Sylvan M. Barnet, Jr. has had 60 years of experience in international communications in the fields of publishing, public relations, advertising and government. He is a graduate of Yale University and the U. S. Naval War College. In publishing, he was at the U.S. News & World Report and was Publisher of the International Herald Tribune in Paris and New York. In public relations, Mr. Barnet was Chairman of International Public Relations and Vice President of Public Relations for American Airlines. He was Director of the U.S. Travel Service, Department of Commerce and Executive Director of the International Advertising Association. 

Mr. Barnet had been the representative for Rotary International since 1988. At Rotary International he has served as Vice Chair, Rhode Island Committee for U. N. Delegation and Diplomatic Relations and a member of the Rhode Island Diplomatic Protocol Committee. His United Nations experience includes Past Chair of the ~Non-Governmental Organizations Executive Committee, DPI, of the NGO Committees on Sustainable Development and Population and Development. He is the founder of the NGO Committee on Education, Chair of the Advisory Council, United Nations Association, NY, and a member of the National Council, ~UNA-USA.
|>|''2 tiddlers found matching /{{{markup}}}/''|[[Search Help|TwHelpSearchDoc]] |h
|>|>|<<search>> <<option chkSearchTitles>> Titles <<option chkSearchText>> Text <<option chkSearchTags>>Tags <<option chkHoldSearches>> Hold |h

|&nbsp;|sort by: ''Titles''|''Size'' (bytes) |''Tags'' |h
| 1|[[MarkupPostBody]]| 241||
| 2|[[MarkupPreHead]]| 1713|setup,splash,head|
/***
|''Name:''|TagCloudPlugin|
|''Source:''|http://www.TiddlyTools.com/#TagCloudPlugin|
|''Author:''|Clint Checketts|
|''License:''|unknown|
|''~CoreVersion:''|2.0.10|

!Usage
<<tagCloud>>

!Code
***/
//{{{
version.extensions.tagCloud = {major: 1, minor: 0 , revision: 0, date: new Date(2006,2,04)};
//Created by Clint Checketts, contributions by Jonny Leroy and Eric Shulman

config.macros.tagCloud = {
 noTags: "No tag cloud created because there are no tags.",
 tooltip: "%1 tiddlers tagged with '%0'"
};

config.macros.tagCloud.handler = function(place,macroName,params) {
 
var tagCloudWrapper = createTiddlyElement(place,"div",null,"tagCloud",null);

var tags = store.getTags();
for (var t=0; t<tags.length; t++) {
  for (var p=0;p<params.length; p++) if (tags[t][0] == params[p]) tags[t][0] = "";
}

 if(tags.length == 0) 
   createTiddlyElement(tagCloudWrapper,"span",null,null,this.noTags);
 //Findout the maximum number of tags
 var mostTags = 0;
 for (var t=0; t<tags.length; t++) if (tags[t][0].length > 0){
  if (tags[t][1] > mostTags) mostTags = tags[t][1];
 }
 //divide the mostTags into 4 segments for the 4 different tagCloud sizes
 var tagSegment = mostTags / 4;

  for (var t=0; t<tags.length; t++) if (tags[t][0].length > 0){
 var tagCloudElement = createTiddlyElement(tagCloudWrapper,"span",null,null,null);
 tagCloudWrapper.appendChild(document.createTextNode(" "));
 var theTag = createTiddlyButton(tagCloudElement,tags[t][0],this.tooltip.format(tags[t]),onClickTag,"tagCloudtag tagCloud" + (Math.round(tags[t][1]/tagSegment)+1));
  theTag.setAttribute("tag",tags[t][0]);
 }

};

setStylesheet(".tagCloud span{height: 1.8em;margin: 3px;}.tagCloud1{font-size: 1.2em;}.tagCloud2{font-size: 1.4em;}.tagCloud3{font-size: 1.6em;}.tagCloud4{font-size: 1.8em;}.tagCloud5{font-size: 1.8em;font-weight: bold;}","tagCloudsStyles");
//}}}
/***
|Name:|TagglyTaggingPlugin|
|Description:|tagglyTagging macro is a replacement for the builtin tagging macro in your ViewTemplate|
|Version:|3.3.1 ($Rev: 6100 $)|
|Date:|$Date: 2008-07-27 01:42:07 +1000 (Sun, 27 Jul 2008) $|
|Source:|http://mptw.tiddlyspot.com/#TagglyTaggingPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!Notes
See http://mptw.tiddlyspot.com/#TagglyTagging
***/
//{{{

merge(String.prototype,{

	parseTagExpr: function(debug) {

		if (this.trim() == "")
			return "(true)";

		var anyLogicOp = /(!|&&|\|\||\(|\))/g;
		var singleLogicOp = /^(!|&&|\|\||\(|\))$/;

		var spaced = this.
			// because square brackets in templates are no good
			// this means you can use [(With Spaces)] instead of [[With Spaces]]
			replace(/\[\(/g," [[").
			replace(/\)\]/g,"]] "). 
			// space things out so we can use readBracketedList. tricky eh?
			replace(anyLogicOp," $1 ");

		var expr = "";

		var tokens = spaced.readBracketedList(false); // false means don't uniq the list. nice one JR!

		for (var i=0;i<tokens.length;i++)
			if (tokens[i].match(singleLogicOp))
				expr += tokens[i];
			else
				expr += "tiddler.tags.contains('%0')".format([tokens[i].replace(/'/,"\\'")]); // fix single quote bug. still have round bracket bug i think

		if (debug)
			alert(expr);

		return '('+expr+')';
	}

});

merge(TiddlyWiki.prototype,{
	getTiddlersByTagExpr: function(tagExpr,sortField) {

		var result = [];

		var expr = tagExpr.parseTagExpr();

		store.forEachTiddler(function(title,tiddler) {
			if (eval(expr))
				result.push(tiddler);
		});

		if(!sortField)
			sortField = "title";

		result.sort(function(a,b) {return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);});
		
		return result;
	}
});

config.taggly = {

	// for translations
	lingo: {
		labels: {
			asc:        "\u2191", // down arrow
			desc:       "\u2193", // up arrow
			title:      "title",
			modified:   "modified",
			created:    "created",
			show:       "+",
			hide:       "-",
			normal:     "normal",
			group:      "group",
			commas:     "commas",
			sitemap:    "sitemap",
			numCols:    "cols\u00b1", // plus minus sign
			label:      "Tagged as '%0':",
			exprLabel:  "Matching tag expression '%0':",
			excerpts:   "excerpts",
			descr:      "descr",
			slices:     "slices",
			contents:   "contents",
			sliders:    "sliders",
			noexcerpts: "title only",
			noneFound:  "(none)"
		},

		tooltips: {
			title:      "Click to sort by title",
			modified:   "Click to sort by modified date",
			created:    "Click to sort by created date",
			show:       "Click to show tagging list",
			hide:       "Click to hide tagging list",
			normal:     "Click to show a normal ungrouped list",
			group:      "Click to show list grouped by tag",
			sitemap:    "Click to show a sitemap style list",
			commas:     "Click to show a comma separated list",
			numCols:    "Click to change number of columns",
			excerpts:   "Click to show excerpts",
			descr:      "Click to show the description slice",
			slices:     "Click to show all slices",
			contents:   "Click to show entire tiddler contents",
			sliders:    "Click to show tiddler contents in sliders",
			noexcerpts: "Click to show entire title only"
		},

		tooDeepMessage: "* //sitemap too deep...//"
	},

	config: {
		showTaggingCounts: true,
		listOpts: {
			// the first one will be the default
			sortBy:     ["title","modified","created"],
			sortOrder:  ["asc","desc"],
			hideState:  ["show","hide"],
			listMode:   ["normal","group","sitemap","commas"],
			numCols:    ["1","2","3","4","5","6"],
			excerpts:   ["noexcerpts","excerpts","descr","slices","contents","sliders"]
		},
		valuePrefix: "taggly.",
		excludeTags: ["excludeLists","excludeTagging"],
		excerptSize: 50,
		excerptMarker: "/%"+"%/",
		siteMapDepthLimit: 25
	},

	getTagglyOpt: function(title,opt) {
		var val = store.getValue(title,this.config.valuePrefix+opt);
		return val ? val : this.config.listOpts[opt][0];
	},

	setTagglyOpt: function(title,opt,value) {
		if (!store.tiddlerExists(title))
			// create it silently
			store.saveTiddler(title,title,config.views.editor.defaultText.format([title]),config.options.txtUserName,new Date(),"");
		// if value is default then remove it to save space
		return store.setValue(title,
			this.config.valuePrefix+opt,
			value == this.config.listOpts[opt][0] ? null : value);
	},

	getNextValue: function(title,opt) {
		var current = this.getTagglyOpt(title,opt);
		var pos = this.config.listOpts[opt].indexOf(current);
		// a little usability enhancement. actually it doesn't work right for grouped or sitemap
		var limit = (opt == "numCols" ? store.getTiddlersByTagExpr(title).length : this.config.listOpts[opt].length);
		var newPos = (pos + 1) % limit;
		return this.config.listOpts[opt][newPos];
	},

	toggleTagglyOpt: function(title,opt) {
		var newVal = this.getNextValue(title,opt);
		this.setTagglyOpt(title,opt,newVal);
	}, 

	createListControl: function(place,title,type) {
		var lingo = config.taggly.lingo;
		var label;
		var tooltip;
		var onclick;

		if ((type == "title" || type == "modified" || type == "created")) {
			// "special" controls. a little tricky. derived from sortOrder and sortBy
			label = lingo.labels[type];
			tooltip = lingo.tooltips[type];

			if (this.getTagglyOpt(title,"sortBy") == type) {
				label += lingo.labels[this.getTagglyOpt(title,"sortOrder")];
				onclick = function() {
					config.taggly.toggleTagglyOpt(title,"sortOrder");
					return false;
				}
			}
			else {
				onclick = function() {
					config.taggly.setTagglyOpt(title,"sortBy",type);
					config.taggly.setTagglyOpt(title,"sortOrder",config.taggly.config.listOpts.sortOrder[0]);
					return false;
				}
			}
		}
		else {
			// "regular" controls, nice and simple
			label = lingo.labels[type == "numCols" ? type : this.getNextValue(title,type)];
			tooltip = lingo.tooltips[type == "numCols" ? type : this.getNextValue(title,type)];
			onclick = function() {
				config.taggly.toggleTagglyOpt(title,type);
				return false;
			}
		}

		// hide button because commas don't have columns
		if (!(this.getTagglyOpt(title,"listMode") == "commas" && type == "numCols"))
			createTiddlyButton(place,label,tooltip,onclick,type == "hideState" ? "hidebutton" : "button");
	},

	makeColumns: function(orig,numCols) {
		var listSize = orig.length;
		var colSize = listSize/numCols;
		var remainder = listSize % numCols;

		var upperColsize = colSize;
		var lowerColsize = colSize;

		if (colSize != Math.floor(colSize)) {
			// it's not an exact fit so..
			upperColsize = Math.floor(colSize) + 1;
			lowerColsize = Math.floor(colSize);
		}

		var output = [];
		var c = 0;
		for (var j=0;j<numCols;j++) {
			var singleCol = [];
			var thisSize = j < remainder ? upperColsize : lowerColsize;
			for (var i=0;i<thisSize;i++) 
				singleCol.push(orig[c++]);
			output.push(singleCol);
		}

		return output;
	},

	drawTable: function(place,columns,theClass) {
		var newTable = createTiddlyElement(place,"table",null,theClass);
		var newTbody = createTiddlyElement(newTable,"tbody");
		var newTr = createTiddlyElement(newTbody,"tr");
		for (var j=0;j<columns.length;j++) {
			var colOutput = "";
			for (var i=0;i<columns[j].length;i++) 
				colOutput += columns[j][i];
			var newTd = createTiddlyElement(newTr,"td",null,"tagglyTagging"); // todo should not need this class
			wikify(colOutput,newTd);
		}
		return newTable;
	},

	createTagglyList: function(place,title,isTagExpr) {
		switch(this.getTagglyOpt(title,"listMode")) {
			case "group":  return this.createTagglyListGrouped(place,title,isTagExpr); break;
			case "normal": return this.createTagglyListNormal(place,title,false,isTagExpr); break;
			case "commas": return this.createTagglyListNormal(place,title,true,isTagExpr); break;
			case "sitemap":return this.createTagglyListSiteMap(place,title,isTagExpr); break;
		}
	},

	getTaggingCount: function(title,isTagExpr) {
		// thanks to Doug Edmunds
		if (this.config.showTaggingCounts) {
			var tagCount = config.taggly.getTiddlers(title,'title',isTagExpr).length;
			if (tagCount > 0)
				return " ("+tagCount+")";
		}
		return "";
	},

	getTiddlers: function(titleOrExpr,sortBy,isTagExpr) {
		return isTagExpr ? store.getTiddlersByTagExpr(titleOrExpr,sortBy) : store.getTaggedTiddlers(titleOrExpr,sortBy);
	},

	getExcerpt: function(inTiddlerTitle,title,indent) {
		if (!indent)
			indent = 1;

		var displayMode = this.getTagglyOpt(inTiddlerTitle,"excerpts");
		var t = store.getTiddler(title);

		if (t && displayMode == "excerpts") {
			var text = t.text.replace(/\n/," ");
			var marker = text.indexOf(this.config.excerptMarker);
			if (marker != -1) {
				return " {{excerpt{<nowiki>" + text.substr(0,marker) + "</nowiki>}}}";
			}
			else if (text.length < this.config.excerptSize) {
				return " {{excerpt{<nowiki>" + t.text + "</nowiki>}}}";
			}
			else {
				return " {{excerpt{<nowiki>" + t.text.substr(0,this.config.excerptSize) + "..." + "</nowiki>}}}";
			}
		}
		else if (t && displayMode == "contents") {
			return "\n{{contents indent"+indent+"{\n" + t.text + "\n}}}";
		}
		else if (t && displayMode == "sliders") {
			return "<slider slide>\n{{contents{\n" + t.text + "\n}}}\n</slider>";
		}
		else if (t && displayMode == "descr") {
			var descr = store.getTiddlerSlice(title,'Description');
			return descr ? " {{excerpt{" + descr  + "}}}" : "";
		}
		else if (t && displayMode == "slices") {
			var result = "";
			var slices = store.calcAllSlices(title);
			for (var s in slices)
				result += "|%0|<nowiki>%1</nowiki>|\n".format([s,slices[s]]);
			return result ? "\n{{excerpt excerptIndent{\n" + result  + "}}}" : "";
		}
		return "";
	},

	notHidden: function(t,inTiddler) {
		if (typeof t == "string") 
			t = store.getTiddler(t);
		return (!t || !t.tags.containsAny(this.config.excludeTags) ||
				(inTiddler && this.config.excludeTags.contains(inTiddler)));
	},

	// this is for normal and commas mode
	createTagglyListNormal: function(place,title,useCommas,isTagExpr) {

		var list = config.taggly.getTiddlers(title,this.getTagglyOpt(title,"sortBy"),isTagExpr);

		if (this.getTagglyOpt(title,"sortOrder") == "desc")
			list = list.reverse();

		var output = [];
		var first = true;
		for (var i=0;i<list.length;i++) {
			if (this.notHidden(list[i],title)) {
				var countString = this.getTaggingCount(list[i].title);
				var excerpt = this.getExcerpt(title,list[i].title);
				if (useCommas)
					output.push((first ? "" : ", ") + "[[" + list[i].title + "]]" + countString + excerpt);
				else
					output.push("*[[" + list[i].title + "]]" + countString + excerpt + "\n");

				first = false;
			}
		}

		return this.drawTable(place,
			this.makeColumns(output,useCommas ? 1 : parseInt(this.getTagglyOpt(title,"numCols"))),
			useCommas ? "commas" : "normal");
	},

	// this is for the "grouped" mode
	createTagglyListGrouped: function(place,title,isTagExpr) {
		var sortBy = this.getTagglyOpt(title,"sortBy");
		var sortOrder = this.getTagglyOpt(title,"sortOrder");

		var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);

		if (sortOrder == "desc")
			list = list.reverse();

		var leftOvers = []
		for (var i=0;i<list.length;i++)
			leftOvers.push(list[i].title);

		var allTagsHolder = {};
		for (var i=0;i<list.length;i++) {
			for (var j=0;j<list[i].tags.length;j++) {

				if (list[i].tags[j] != title) { // not this tiddler

					if (this.notHidden(list[i].tags[j],title)) {

						if (!allTagsHolder[list[i].tags[j]])
							allTagsHolder[list[i].tags[j]] = "";

						if (this.notHidden(list[i],title)) {
							allTagsHolder[list[i].tags[j]] += "**[["+list[i].title+"]]"
										+ this.getTaggingCount(list[i].title) + this.getExcerpt(title,list[i].title) + "\n";

							leftOvers.setItem(list[i].title,-1); // remove from leftovers. at the end it will contain the leftovers

						}
					}
				}
			}
		}

		var allTags = [];
		for (var t in allTagsHolder)
			allTags.push(t);

		var sortHelper = function(a,b) {
			if (a == b) return 0;
			if (a < b) return -1;
			return 1;
		};

		allTags.sort(function(a,b) {
			var tidA = store.getTiddler(a);
			var tidB = store.getTiddler(b);
			if (sortBy == "title") return sortHelper(a,b);
			else if (!tidA && !tidB) return 0;
			else if (!tidA) return -1;
			else if (!tidB) return +1;
			else return sortHelper(tidA[sortBy],tidB[sortBy]);
		});

		var leftOverOutput = "";
		for (var i=0;i<leftOvers.length;i++)
			if (this.notHidden(leftOvers[i],title))
				leftOverOutput += "*[["+leftOvers[i]+"]]" + this.getTaggingCount(leftOvers[i]) + this.getExcerpt(title,leftOvers[i]) + "\n";

		var output = [];

		if (sortOrder == "desc")
			allTags.reverse();
		else if (leftOverOutput != "")
			// leftovers first...
			output.push(leftOverOutput);

		for (var i=0;i<allTags.length;i++)
			if (allTagsHolder[allTags[i]] != "")
				output.push("*[["+allTags[i]+"]]" + this.getTaggingCount(allTags[i]) + this.getExcerpt(title,allTags[i]) + "\n" + allTagsHolder[allTags[i]]);

		if (sortOrder == "desc" && leftOverOutput != "")
			// leftovers last...
			output.push(leftOverOutput);

		return this.drawTable(place,
				this.makeColumns(output,parseInt(this.getTagglyOpt(title,"numCols"))),
				"grouped");

	},

	// used to build site map
	treeTraverse: function(title,depth,sortBy,sortOrder,isTagExpr) {

		var list = config.taggly.getTiddlers(title,sortBy,isTagExpr);

		if (sortOrder == "desc")
			list.reverse();

		var indent = "";
		for (var j=0;j<depth;j++)
			indent += "*"

		var childOutput = "";

		if (depth > this.config.siteMapDepthLimit)
			childOutput += indent + this.lingo.tooDeepMessage;
		else
			for (var i=0;i<list.length;i++)
				if (list[i].title != title)
					if (this.notHidden(list[i].title,this.config.inTiddler))
						childOutput += this.treeTraverse(list[i].title,depth+1,sortBy,sortOrder,false);

		if (depth == 0)
			return childOutput;
		else
			return indent + "[["+title+"]]" + this.getTaggingCount(title) + this.getExcerpt(this.config.inTiddler,title,depth) + "\n" + childOutput;
	},

	// this if for the site map mode
	createTagglyListSiteMap: function(place,title,isTagExpr) {
		this.config.inTiddler = title; // nasty. should pass it in to traverse probably
		var output = this.treeTraverse(title,0,this.getTagglyOpt(title,"sortBy"),this.getTagglyOpt(title,"sortOrder"),isTagExpr);
		return this.drawTable(place,
				this.makeColumns(output.split(/(?=^\*\[)/m),parseInt(this.getTagglyOpt(title,"numCols"))), // regexp magic
				"sitemap"
				);
	},

	macros: {
		tagglyTagging: {
			handler: function (place,macroName,params,wikifier,paramString,tiddler) {
				var parsedParams = paramString.parseParams("tag",null,true);
				var refreshContainer = createTiddlyElement(place,"div");

				// do some refresh magic to make it keep the list fresh - thanks Saq
				refreshContainer.setAttribute("refresh","macro");
				refreshContainer.setAttribute("macroName",macroName);

				var tag = getParam(parsedParams,"tag");
				var expr = getParam(parsedParams,"expr");

				if (expr) {
					refreshContainer.setAttribute("isTagExpr","true");
					refreshContainer.setAttribute("title",expr);
					refreshContainer.setAttribute("showEmpty","true");
				}
				else {
					refreshContainer.setAttribute("isTagExpr","false");
					if (tag) {
        				refreshContainer.setAttribute("title",tag);
						refreshContainer.setAttribute("showEmpty","true");
					}
					else {
        				refreshContainer.setAttribute("title",tiddler.title);
						refreshContainer.setAttribute("showEmpty","false");
					}
				}
				this.refresh(refreshContainer);
			},

			refresh: function(place) {
				var title = place.getAttribute("title");
				var isTagExpr = place.getAttribute("isTagExpr") == "true";
				var showEmpty = place.getAttribute("showEmpty") == "true";
				removeChildren(place);
				addClass(place,"tagglyTagging");
				var countFound = config.taggly.getTiddlers(title,'title',isTagExpr).length
				if (countFound > 0 || showEmpty) {
					var lingo = config.taggly.lingo;
					config.taggly.createListControl(place,title,"hideState");
					if (config.taggly.getTagglyOpt(title,"hideState") == "show") {
						createTiddlyElement(place,"span",null,"tagglyLabel",
								isTagExpr ? lingo.labels.exprLabel.format([title]) : lingo.labels.label.format([title]));
						config.taggly.createListControl(place,title,"title");
						config.taggly.createListControl(place,title,"modified");
						config.taggly.createListControl(place,title,"created");
						config.taggly.createListControl(place,title,"listMode");
						config.taggly.createListControl(place,title,"excerpts");
						config.taggly.createListControl(place,title,"numCols");
						config.taggly.createTagglyList(place,title,isTagExpr);
						if (countFound == 0 && showEmpty)
							createTiddlyElement(place,"div",null,"tagglyNoneFound",lingo.labels.noneFound);
					}
				}
			}
		}
	},

	// todo fix these up a bit
	styles: [
"/*{{{*/",
"/* created by TagglyTaggingPlugin */",
".tagglyTagging { padding-top:0.5em; }",
".tagglyTagging li.listTitle { display:none; }",
".tagglyTagging ul {",
"	margin-top:0px; padding-top:0.5em; padding-left:2em;",
"	margin-bottom:0px; padding-bottom:0px;",
"}",
".tagglyTagging { vertical-align: top; margin:0px; padding:0px; }",
".tagglyTagging table { margin:0px; padding:0px; }",
".tagglyTagging .button { visibility:hidden; margin-left:3px; margin-right:3px; }",
".tagglyTagging .button, .tagglyTagging .hidebutton {",
"	color:[[ColorPalette::TertiaryLight]]; font-size:90%;",
"	border:0px; padding-left:0.3em;padding-right:0.3em;",
"}",
".tagglyTagging .button:hover, .hidebutton:hover, ",
".tagglyTagging .button:active, .hidebutton:active  {",
"	border:0px; background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];",
"}",
".selected .tagglyTagging .button { visibility:visible; }",
".tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }",
".selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }",
".tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }",
".tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }",
".tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}",
".tagglyTagging ul ul li {margin-left:0.5em; }",
".editLabel { font-size:90%; padding-top:0.5em; }",
".tagglyTagging .commas { padding-left:1.8em; }",
"/* not technically tagglytagging but will put them here anyway */",
".tagglyTagged li.listTitle { display:none; }",
".tagglyTagged li { display: inline; font-size:90%; }",
".tagglyTagged ul { margin:0px; padding:0px; }",
".excerpt { color:[[ColorPalette::TertiaryDark]]; }",
".excerptIndent { margin-left:4em; }",
"div.tagglyTagging table,",
"div.tagglyTagging table tr,",
"td.tagglyTagging",
" {border-style:none!important; }",
".tagglyTagging .contents { border-bottom:2px solid [[ColorPalette::TertiaryPale]]; padding:0 1em 1em 0.5em;",
"  margin-bottom:0.5em; }",
".tagglyTagging .indent1  { margin-left:3em;  }",
".tagglyTagging .indent2  { margin-left:4em;  }",
".tagglyTagging .indent3  { margin-left:5em;  }",
".tagglyTagging .indent4  { margin-left:6em;  }",
".tagglyTagging .indent5  { margin-left:7em;  }",
".tagglyTagging .indent6  { margin-left:8em;  }",
".tagglyTagging .indent7  { margin-left:9em;  }",
".tagglyTagging .indent8  { margin-left:10em; }",
".tagglyTagging .indent9  { margin-left:11em; }",
".tagglyTagging .indent10 { margin-left:12em; }",
".tagglyNoneFound { margin-left:2em; color:[[ColorPalette::TertiaryMid]]; font-size:90%; font-style:italic; }",
"/*}}}*/",
		""].join("\n"),

	init: function() {
		merge(config.macros,this.macros);
		config.shadowTiddlers["TagglyTaggingStyles"] = this.styles;
		store.addNotification("TagglyTaggingStyles",refreshStyles);
	}
};

config.taggly.init();

//}}}

/***
InlineSlidersPlugin
By Saq Imtiaz
http://tw.lewcid.org/sandbox/#InlineSlidersPlugin

// syntax adjusted to not clash with NestedSlidersPlugin
// added + syntax to start open instead of closed

***/
//{{{
config.formatters.unshift( {
	name: "inlinesliders",
	// match: "\\+\\+\\+\\+|\\<slider",
	match: "\\<slider",
	// lookaheadRegExp: /(?:\+\+\+\+|<slider) (.*?)(?:>?)\n((?:.|\n)*?)\n(?:====|<\/slider>)/mg,
	lookaheadRegExp: /(?:<slider)(\+?) (.*?)(?:>)\n((?:.|\n)*?)\n(?:<\/slider>)/mg,
	handler: function(w) {
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart ) {
			var btn = createTiddlyButton(w.output,lookaheadMatch[2] + " "+"\u00BB",lookaheadMatch[2],this.onClickSlider,"button sliderButton");
			var panel = createTiddlyElement(w.output,"div",null,"sliderPanel");
			panel.style.display = (lookaheadMatch[1] == '+' ? "block" : "none");
			wikify(lookaheadMatch[3],panel);
			w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
		}
   },
   onClickSlider : function(e) {
		if(!e) var e = window.event;
		var n = this.nextSibling;
		n.style.display = (n.style.display=="none") ? "block" : "none";
		return false;
	}
});

//}}}

/*{{{*/
/* created by TagglyTaggingPlugin */
.tagglyTagging { padding-top:0.5em; }
.tagglyTagging li.listTitle { display:none; }
.tagglyTagging ul {
	margin-top:0px; padding-top:0.5em; padding-left:2em;
	margin-bottom:0px; padding-bottom:0px;
}
.tagglyTagging { vertical-align: top; margin:0px; padding:0px; }
.tagglyTagging table { margin:0px; padding:0px; }
.tagglyTagging .button { display:none; margin-left:3px; margin-right:3px; }
.tagglyTagging .button, .tagglyTagging .hidebutton {
	color:[[ColorPalette::TertiaryLight]]; font-size:90%;
	border:0px; padding-left:0.3em;padding-right:0.3em;
}
.tagglyTagging .button:hover, .hidebutton:hover {
	background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];
}
.selected .tagglyTagging .button {
	display:inline;
}
.tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }
.selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }
.tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }
.tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }
.tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}
.tagglyTagging ul ul li {margin-left:0.5em; }
.editLabel { font-size:90%; padding-top:0.5em; }
.tagglyTagging .commas { padding-left:1.8em; }
/* displays the list of a tiddler's tags horizontally. used in ViewTemplate */
.tagglyTagged {
text-align: right 
}
.tagglyTagged li.listTitle {
	display:none
}
.tagglyTagged li {
	display: inline; font-size:90%;
}
.tagglyTagged ul {
	margin:0px; padding:0px;
}
/*}}}*/
This tiddler provides some resources for use when creating and or editing tiddlers: One way of using it is to copy the contents to a separate window with a simple text editor, such as [[Notepad]], to which you can quickly switch to select and copy relevant snippets of code for tiddlers.

[[Iframe template]]
{{{
@@font-size:90%;''Note'': This is a "framed" page from the '' '' web site.
You can view this page in a separate browser tab or window at @@
<html><iframe
	src = ""
	title = ""
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
}}}

[[Tag templates]]

{{{
The '' '' tag is for tiddlers and tags relating to

|<<siteMap >> |<<siteMap >> |


The '' '' tag is for tiddlers and tags relating to

|<<siteMap >> |<<siteMap >> |<<siteMap >> |


The '' '' tag is for tiddlers and tags relating to

|<<siteMap >> |<<siteMap >> |<<siteMap >> |<<siteMap >> |


}}}

@@font-family:courier, monospace;font-weight: bold;font-size:110%; ''$1'' @@ @@width: 50px;border: 1;background-color: $1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@@ [[$2|ColorPalette]] 
This tiddler provides links to some of the tiddlers that control the layout, format, fonts, colours, etc. for a TiddlyWiki web page.
!!Templates
* [[PageTemplate]] - defines the overall organization and layout of the page
* [[ViewTemplate]] - defines the organization and layout of the display of tiddlers
* [[EditTemplate]] - defines the organization and layout of the tiddlers when they are being edited
!!Stylesheets
* [[StyleSheetLayout]] - defines the fonts, font sizes, margins, borders for the various "styles" used
** [[TagglyTaggingStyles]] - a set of imported styles that control the format by which the tiddler "tags" are presented
** [[MainMenuStyles]] - Styles for the Main Menu
* [[StyleSheetColors]] - defines the colour of fonts, background, borders, etc. for the various styles
!!Palette
* [[Colour Palette]] - displays a palette of colours - 
* [[ColorPalette]] - shadowed tiddler that defined the colours used in the StyleSheetColors tiddler
<html>
<iframe style="background-color:#ffffff; border-color:#ffffff; border:none;" width="100%" height="800" frameborder="0" scrolling="yes" src="http://habitat.igc.org/peace-cubes/template.htm" title="Templates for Light & Colour Cubes">
</iframe> </html>
<html>
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="600" height="400" flashvars="host=picasaweb.google.com&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fecology2001%2Falbumid%2F5207032267822304017%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</html>
Photos by Isobel Lowther, ''Kaleidoscope Experience''
!!!Expected Climatic Trigger for the Transition
Arctic warming, amplified by the retreat of snow and ice cover, leads to longer and deeper thawing of the frozen ground below. Oxidation of the peat and melting of methane clathrates could lead to greenhouse gas emissions that would significantly amplify global warming. Permafrost thawing is already evident over widespread regions and much greater loss is projected for the 21st century.
!!!Expected Environmental Consequences
Thawing of the permafrost disrupts the surface water budget and weakens the land, causing trees to tilt and become stressed and increasing the chance of destruction by pests and fire. The altered landscape is generally ill suited to existing wildlife, which are displaced by species from the south, causing significant changeover of ecosystem types, and potentially enhancing overall carbon storage.
!!!Likely Societal Significance
In the region, thawing of the ground causes significant damage to maladapted buildings and infrastructure, and limits land travel during the warm season. Permafrost lands contain at least as much carbon as is now in the atmosphere. Therefore, higher emissions of CO~~2~~ and CH~~4~~ from the thawing of permafrost could significantly amplify the pace of global warming.
{{iframe{''Note'': This is a "framed" page from the ''The Brooklyn Botanical Garden'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.bbg.org/}}}
<html><iframe
	src = "http://www.bbg.org/"
	title = "The Brooklyn Botanical Garden"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
@@font-size:90%;''Note'': This is a "framed" page from the [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] web site. You can view this page in a separate browser tab or window at http://www.un-documents.net/hab-ag.htm@@
<html>
<iframe
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes"
	src = "http://www.un-documents.net/hab-ag.htm"
	title = "The Habitat Agenda">
</iframe> </html>
{{iframe{''Note'': This is a "framed" page from the web site of the ''The Horticultural Society of New York''. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.hsny.org/}}}
<html><iframe
	src = "http://www.hsny.org/"
	title = "The Horticultural Society of New York"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
{{iframe{''Note'': This is a "framed" page from the ''The New York Botanical Garden'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.nybg.org}}}
<html><iframe
	src = "http://www.nybg.org/"
	title = "The New York Botanical Garden"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
@@font-size:90%;''Note'': This is a "framed" page from the ''The New York City Compost Project''' web site.
You can view this page in a separate browser tab or window at http://www.nyccompost.org/@@
<html><iframe
	src = "http://www.nyccompost.org/"
	title = "The New York City Compost Project"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
''The Wealth of Networks: How Social Production Transforms Markets and Freedom'' is a highly-acclaimed book on the nature and dynamics of a 'networked information economy' by ''Yochai Benkler'', Professor of Law at Yale and New York University, and is recommended reading for anyone who would like to understand more about the profound economic transformation that is being made possible by developments in information and communications technologies (ICT). Published in May 2006, the book was also released under a [[Creative Commons]] licence and made freely available for non-commercial use on an experimental collaborative wiki site that Benkler set up at [[www.benkler.org/wealth_of_networks/|http://www.benkler.org/wealth_of_networks/]].

The opportunity to participate in "The Wealth of Networks Wiki " has played a valuable role in the development of plans for the use of ICT in support of the NGO Committee on Education's plans for the Decade on Education for Sustainable Development, and the Committee has published the primary HTML version of the book at [[www.climate-change-two.net/wealth-of-networks| http://www.climate-change-two.net/wealth-of-networks]]
Centra to the vision of the curriculum of [[La Perla Garden Summer School]] is a conception of the garden - and garden community - as a teacher and a learning environment.
# Composting culture - renewing and enriching the earth, nourishing the humus, giving back to the earth - directly.
# Appreciation of water, gardens as water bodies, water conservation, rainwater collection, ...  - and global warming
# Appreciation of biodiversity - and how plants, flowers, bushes, trees, etc. grow, and the roles and life cycles of the many members of the garden community - worms, insects, spiders, butterflies, bees & birds - and the seasonal nature of gardens 
These tiddlers are included for their usefulness in administering, managing and editing this TiddlyWiki web page, and may be of interest to visitors who want to explore some of the unique design features of TiddlyWiki web pages, and perhaps to being developing your own TiddyWiki pages.  A central key to the genius of the design of TiddlyWiki is the way that virtually all aspects of a TiddlyWiki web page - organization and classification of the content, layout, format, colours, fonts, functions and features can be managed through tiddlers that define templates, styles or macros and features written in Javascript.
* [[Tiddler Lists]] 
** [[Alphabetical Tiddlers]] 
** [[Tiddler Timeline]]
** [[Shadow Tiddlers]] 
** [[Missing Tiddlers]] 
** [[Imported Tiddlers]] 
** [[Tiddler Tags]] 
** [[Included TiddlyWikis]] 
* [[Main Menu|MainMenu]] 
** [[Default Tiddlers|DefaultTiddlers]] 
* [[Import Tiddlers]] 
* [[Plugin Macros]] 
* [[Templates & Stylesheets]] 
** PageTemplate 
** ViewTemplate 
** EditTemplate 
** StyleSheetLayout 
** StyleSheetColors 
** [[Colour Palette]] 
* [[Formatting Tiddlers]] 
** [[Formatting Text]] 
** [[Headers & Outlines]] 
** [[Tiddly Links]] 
** [[Tables]] 
** [[Images]] 
This tiddler uses the {{<<allTags>>}}} built-in macro to list the tags / key words, indicate the number of tiddlers with each tag, and create a link to each tag that displays all the tiddlers with the tag.

<<allTags>>
<<tiddler TabTimeline>>
A ''Tiddler'' is the basic unit of content in a TiddlyWiki, the equivalent of a page in a conventional Wiki site or web site. There are three basic types of Tiddlers: scripts or macros, styles, and text, although a Tiddler can contain elements of all three.

Each tiddler is of the form of a styled {{{<div> ... </div>}}} with attributes for the name of the Tiddler, the user name of the last person wh edited the Tiddler, a 12-digit date and time code for the date and time the Tiddler was modified and created, and a set of tags or key words, where the tag is either a single word, or two or more words enclosed by square brackets - e.g. {{{[[sustainable development]]}}}, and in the source code of a TiddlyWiki page each Tiddler is a single line of code, and looks something like the following
{{{<div tiddler'"Tiddlers" modifier="Editor" modified="200611111130" created="20061031830" tags="tag1 tag2 [[another tag]]  .... ">content of tiddler - optionally with TiddlerMarkup language.</div>}}}  In the source code, a new line is coded as {{{/n}}}.


The contents of a Tiddler can be formatted with simple but powerful formatting codes, described in more detail in TiddlerMarkup
''~TiddlyWiki'' - [[www.tiddlywiki.com|http://www.tiddlywiki.com]] - is a brilliant, versatile completely self-contained personal wiki powered by ''HTML''. ''Javascript'' & ''Cascading Styles'' that allows one to add and modify 'microcontent' using a simple, yet powerful markup language. Each piece of microcontent, that can include text, images, Javascript macros and/or Cascading Styles, is saved in a separate "tiddler" that records the creator or modifier of the tiddler, the date and time the tiddler was created and last modified, and a set of tags / keywords  in addition to the content.

~TiddlyWiki was created by ''Jeremy Ruston'' and is published under an Open Source license that allows anyone to use and share it freely. The incorporation of an [[Import Tiddlers]] feature makes it easy to import tiddlers from other TiddlyWiki pages, and this site includes a number of "plugin macros" that have been imported from other pages. There is a very active, resourceful and enthusiastic community of thinkers, developers and users who help each other to get the best out of using ~TiddlyWiki.
!! TiddlyWiki sites

''~TiddlyWikiPerfect'' is an emerging hybrid information species - based on TiddlyWiki and DataPerfect, two remarkable software platforms. TiddlyWiki is a brilliant new platform for a self-contained wiki site, powered by Javascript, in which contents is based on "tiddlers" that can contains, formatted text, images, etc, plugin macros written in Javascript that can be executed inside other tiddlers, and cascading styles sheets, and that offers exceptional versatility in organizing and presenting web-based information. DataPerfect, a largely unrecognized star of the legendary WordPerfect family of the MS-DOS era - obscured by the onset of Windows - is arguably the most brilliant relational database ever written and is an ideal engine from which tiddlers can be generated. In the full implementation of TiddlyPerfect, a DataPerfect engine will serve as a database engine for TiddlyWiki. In the meantime, DataPerfect has been used as the engine to generate the content for several TiddyWiki sites. 

The extensive archives of [[Information Habitat: Where Information Lives]], gathered over the past sixteen years in the course of Information Habitat's pioneer tole in promoting the adoption of information and communications technology by the United Nations NGO community, beginning with the preparations for the 1992 [[Earth Summit]] that are serving as the initial collection for [[Climate Change 2.0]] and for the [[NGO Committee on Education]]'s commitment in support of the [[United Nations Decade of Education for Sustainable Development]] have been largely maintained in a set of DataPerfect digital engines, that will be used to generate an evolving set of prototype TiddlyWikiPerfect sites.
<<siteMap "tipping points">>
/***
| Name:|ToggleTagMacro|
| Description:|Makes a checkbox which toggles a tag in a tiddler|
| Version:|6.1.2|
| Date:|20-Oct-2006|
| Source:|http://tiddlyspot.com/mptw/#ToggleTagMacro|
| Author:|SimonBaird|
| License:|[[BSD open source license]]|
| CoreVersion:|2.1|
!Usage
{{{<<toggleTag }}}//{{{TagName TiddlerName LabelText}}}//{{{>>}}}
* TagName - the tag to be toggled, default value "checked"
* TiddlerName - the tiddler to toggle the tag in, default value the current tiddler
* LabelText - the text (gets wikified) to put next to the check box, default value is '{{{[[TagName]]}}}' or '{{{[[TagName]] [[TiddlerName]]}}}'
(If a parameter is '.' then the default will be used)

Examples:

|Code|Description|Example|h
|{{{<<toggleTag>>}}}|Toggles the default tag (checked) in this tiddler|<<toggleTag>>|
|{{{<<toggleTag TagName>>}}}|Toggles the TagName tag in this tiddler|<<toggleTag TagName>>|
|{{{<<toggleTag TagName TiddlerName>>}}}|Toggles the TagName tag in the TiddlerName tiddler|<<toggleTag TagName TiddlerName>>|
|{{{<<toggleTag TagName TiddlerName 'click me'>>}}}|Same but with custom label|<<toggleTag TagName TiddlerName 'click me'>>|
|{{{<<toggleTag . . 'click me'>>}}}|dot means use default value|<<toggleTag . . 'click me'>>|
(Note if TiddlerName doesn't exist it will be silently created)

!Known issues
* Doesn't smoothly handle the case where you toggle a tag in a tiddler that is current open for editing. Should it stick the tag in the edit box?

***/
//{{{

merge(config.macros,{

	toggleTag: {

		doRefreshAll: true,
		createIfRequired: true,
		shortLabel: "[[%0]]",
		longLabel: "[[%0]] [[%1]]",

		handler: function(place,macroName,params,wikifier,paramString,tiddler) {
			var tag = (params[0] && params[0] != '.') ? params[0] : "checked";
			var title = (params[1] && params[1] != '.') ? params[1] : tiddler.title;
			var defaultLabel = (title == tiddler.title ? this.shortLabel : this.longLabel);
			var label = (params[2] && params[2] != '.') ? params[2] : defaultLabel;
			var theTiddler =  title == tiddler.title ? tiddler : store.getTiddler(title);
			var cb = createTiddlyCheckbox(place, label.format([tag,title]), theTiddler && theTiddler.isTagged(tag), function(e) {
				if (!store.tiddlerExists(title)) {
					if (config.macros.toggleTag.createIfRequired) {
						var content = store.getTiddlerText(title); // just in case it's a shadow
						store.saveTiddler(title,title,content?content:"",config.options.txtUserName,new Date(),null);
					}
					else 
						return false;
				}
				//store.suspendNotifications(); 
				store.setTiddlerTag(title,this.checked,tag);
				//refreshDisplay(); 
				//store.resumeNotifications();
				return true;
			});
		}
	}
});

//}}}

The 'Trust for Public Land''

[[Trust for Public Land web site]]
@@font-size:90%;''Note'': This is a "framed" page from the [[Trust for Public Land]] web site
You can view this page in a separate browser tab or window at http://www.tpl.org/@@
<html><iframe
	src = "http://www.tpl.org/"
	title = "Trust for Public Land"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
!!!<<gradient horiz #fc3 #fff>>&nbsp;TwHelpSearchDoc^^<<tiddler CloseThisOpen with: ThirdPartyPlugins  '« back'>>|<<toolbar editTiddler>>» ^^>>
''Now you can have the same search as used on TW Help.''

* Get this plugin here TwHelpSearchPlugin or here:
* http://twhelp.tiddlyspot.com/#TwHelpSearchPlugin

Optionally you can put this+++[search box]<<tiddler SearchBox>>===in SideBarOptions as seen on TW Help.+++[see the code]
{{{
|>|>|>|<<search>> |
|>|>| look for in |>|>|
| <<option chkSearchTitles>> | <<option chkSearchText>> | <<option chkSearchTags>> | <<option chkHoldSearches>> |
| titles |  text  | tags | hold |
}}}
===


----
''A Plugin Tweak for:'' SearchOptionsPlugin
!!!<<gradient horiz #abf #fff>>&nbsp;Description>>
<<<
The TwHelpSearchPlugin defines an alternative format for the ~SearchResults tiddler that is generated by the SearchOptionsPlugin . It presents the search results in tabular form numbering the rows and showing the tiddler title, the size in bytes, and the tags.  It is ready to be used with the [[SortableGridPlugin|http://solo.dc3.com/tw/#SortableGridPlugin]] (check versions) so any column can be sorted; such as size in ascending or descending order.
<<<
!!!<<gradient horiz #abf #fff>>Installation>>
If you have already installed SearchOptionsPlugin then your AdvancedOptions will have already been modified by that plugin to include the following: +++[see the code for this]
{{{
<<option chkSearchTitles>> Search tiddler titles
<<option chkSearchText>> Search tiddler text
<<option chkSearchTags>> Search in tiddler tags
<<option chkSearchTitlesFirst>> Show title matches first
<<option chkSearchList>> Show list of matching tiddlers 
}}}
===

<<<
<<option chkSearchTitles>> Search tiddler titles
<<option chkSearchText>> Search tiddler text
<<option chkSearchTags>> Search in tiddler tags
<<option chkSearchTitlesFirst>> Show title matches first
<<option chkSearchList>> Show list of matching tiddlers^^[1]^^
<<<
 ^^[1]^^@@color:#C06;(This option is critical in preventing normal ~TiddlyWiki search method.)@@

TwHelpSearchPlugin requires an additional insertion into AdvancedOptions for the option of holding the search results and appending any number of additional searches.  +++[see the code for this]
{{{
<<option chkHoldSearches>> Hold search results
}}}
===

<<<
<<option chkHoldSearches>> Hold search results
<<<
TwHelpSearchPlugin will attempt to add this to AdvancedOptions upon installation.

|bgcolor:#FCF;''NOTE:''  If either plugin fails to install their options; add them manually by pasting the code for them into AdvancedOptions.|
!!!End
/***
{{clear{
|Plugin name |''~TwHelpSearchPlugin'' |
|Author |''Morris S. Gray'' |
|Source |http://twhelp.tiddlyspot.com/#TwHelpSearchPlugin |
|More Documentation |[[TwHelpSearchDoc]] or <br>http://twhelp.tiddlyspot.com/#TwHelpSearchDoc |
|License |[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]] |
|Requires |~TiddlyWiki 2.0.x + <br>[[SearchOptions plugin]] - http://www.tiddlytools.com/#SearchOptionsPlugin|
|Tweaked |Colours of Search Results set by default table styles, by [[Robert Pollard]] |
}}}
|>|>|>|<<search>> |
|>|>| look for in |>|>|
| <<option chkSearchTitles>> | <<option chkSearchText>> | <<option chkSearchTags>> | <<option chkHoldSearches>> |
| titles |  text  | tags | hold |

''A Plugin Tweak for:'' [[SearchOptionsPlugin]]
!!!!!Description
<<<
This plugin defines an alternative format for the SearchResults tiddler that is generated by the SearchOptionsPlugin . It presents the search results in tabular form numbering the rows; and showing the tiddler title, the size in bytes, and the tags.  It is ready to be used with the [[SortableGridPlugin|http://solo.dc3.com/tw/#SortableGridPlugin]] (check versions) so any column can be sorted; such as size in ascending or descending order.
<<<
!!!!!Installation
<<<
Import (or copy/paste) the following tiddlers into your ~TiddlyWiki:
* http://twhelp.tiddlyspot.com/#TwHelpSearchPlugin
*SearchOptionsPlugin from http://www.tiddlytools.com/#SearchOptionsPlugin
* Get more documentation here [[TwHelpSearchDoc]] or here:
* http://twhelp.tiddlyspot.com/#TwHelpSearchDoc
<<<
!!!!!Revision History
<<<

''2007.09.12  [1.0.6]''
Added overflow scroll to TWHelp-SearchResults for long titles or tags.
''2006.02.03  [1.0.5]''
Added facility for holding the results of multiple searches with tick box on dashboard.
''2006.02.02  [1.0.4]''
Added several options, cleaned up design.Planning one version basic and one with added options this is the added options version.
''2006.01.27  [1.0.3''
Added a column for the size of the text in each tiddler, this does not include the size of the title or tags.  Added overall TW statistics button requires TiddlerStatsPlugin.
''2006.01.23 [1.0.2 ]''
''a)''Changed function reportSearchResults(text,matches) to  window.reportSearchResults=function(text,matches)
''b)''Added a line so that Incremental Search is automatically disabled config.options.chkSearchIncremental=false; turn off key-by-key searching
''c)''Removed space inside parens. bgcolor(#fe8 )" to "bgcolor(#fe8)".  This
is what was causing IE to 'crap out' halfway through drawing the table
headings.
''d)''Added {{{config.options.chkSearchList=true;}}}
''2006.01.20 [1.0.1]''
ELS: reportSearchResults() definition moved to this Plugin Tweak tiddler and removed extranous code
''2006.01.19 [1.0.0]''
This is an adaptation of Eric Shulman's SearchOptionsPlugin. Adapted by MorrisGray to provide search results in table form. All the necessary controls for refining the search is provided within the table including slide-down access to AdvancedOptions.
<<<
!!!!!Code
***/

//{{{
if (config.options.chkSinglePageMode==undefined) config.options.chkSinglePageMode=false;
if (config.options.chkRegExpSearch==undefined) config.options.chkRegExpSearch=true;
if (config.options.chkSearchTitles==undefined) config.options.chkSearchTitles=false;
if (config.options.chkSearchText==undefined) config.options.chkSearchText=true;
if (config.options.chkSearchTags==undefined) config.options.chkSearchTags=false;
if (config.options.chkSearchTitlesFirst==undefined) config.options.chkSearchTitlesFirst=true;
if (config.options.chkSearchList==undefined) config.options.chkSearchList=true;
if (config.options.chkSearchIncremental==undefined) config.options.chkSearchIncremental=false;
if (config.options.chkToggleLinks==true) config.options.chkToggleLinks=false;
if (config.options.chkHoldSearches==undefined) config.options.chkHoldSearches=false;
if (config.options.chkSortTags==undefined) config.options.chkSortTags=false;

config.options.chkToggleLinks=false;
config.options.chkSinglePageMode=false;
config.options.chkHoldSearches=false;
config.options.chkSearchIncremental=false;
config.options.chkHttpReadOnly = false;
config.options.chkRegExpSearch=true;
config.options.chkSearchList=true;
config.options.chkToggleLinks=false;

config.shadowTiddlers.AdvancedOptions += "\n<<option chkHoldSearches>> Hold search results";


//}}}

//{{{

// Give the report a custom name
config.macros.search.reportTitle="TWHelp-SearchResults";

// Override default SearchOptionsPlugin formatting for SearchResults tiddler
window.reportSearchResults=function(text,matches)

{
  
        var title=config.macros.search.reportTitle
	config.macros.search.reportTitle;
	var q = config.options.chkRegExpSearch ? "/" : "'";
        if (!config.options.chkHoldSearches)  body="";

body+="\n|>|''"+config.macros.search.successMsg.format([matches.length,q+"{{{"+text+"}}}"+q])+"''|[[Search Help|TwHelpSearchDoc]] "+"|h\n";
        body+="|>|>|<<search>> <<option chkSearchTitles>> Titles <<option chkSearchText>> Text <<option chkSearchTags>>Tags <<option chkHoldSearches>> Hold |h\n";
        body+="\n|&nbsp;|sort by: ''Titles''|''Size'' (bytes) |''Tags'' |h";
	for(var t=0;t<matches.length;t++) 
        body+="\n"+"| "+(t+1)+"|[["+matches[t].title+"]]| "+matches[t].text.length+"|"+matches[t].tags+"|";
        body+="\n";
       


	// create/update the tiddler
	var tiddler=store.getTiddler(title); if (!tiddler) tiddler=new Tiddler();
	tiddler.set(title,body,config.options.txtUserName,(new Date()),"excludeLists excludeSearch killbookmark");
	store.addTiddler(tiddler); story.closeTiddler(title);


	// render tiddler
	var oldprompt=config.macros.search.label;
	config.macros.search.label="search again"; // use alternate "search again" label
        story.displayTiddler(null,title,1); // force refresh
	config.macros.search.label=oldprompt;	// restore standard search label
}

//}}}
http://unfccc.int/meetings/cop_13/items/4049.php
''UN Documents Cooperation Circles: Gathering a Body of Global Agreements'', developed by the [[Information and Communications Sub-Committee]] of the [[NGO Committee on Education]], is a unique hyperlinked collection of more than five hundred key United Nations documents relating to sustainable development, education, human rights, peace, etc., including the agreements from most of the major global conferences organized by the United Nations and a significant number of important conventions / treaties. A significant number of these documents have only previously been available as scanned images - where their contents were mostly generally inaccessible to Internet search engines and from which it was not possible to copy selected text - and have been converted using Optical Character Recognition software. 

The documents have been converted into a simple HTML format, imported into a DataPerfect database, and re-generated in a consistent common format. A simple, consistent system of file names for documents with UN document codes has been adopted, making it easy to reference the documents - e.g. the URL for General Assembly Resolution A/RES/60/1 - the ''2005 World Summit Outcome'' is [[www.un-documents.net/a60r1.htm|http://www.un-documents.net/a60r1.htm]].  For consistency and to simplify the recognition and understanding, a revised document code has been adopted for General Assembly resolutions for the first thirty Sessions of the General Assembly, for which Roman numerals have historically been used to identify the session; thus the GA resolution 2625 (XXV) on the.''Declaration on Principles of International Law concerning Friendly Relations and Co-operation among States in accordance with the Charter of the United Nations'' has been given the document code A/RES/25/2625 instead of A/RES/2625(XXV) and a corresponding URL of [[www.un-documents.net/a25r2625.htm|http://www.un-documents.net/a25r2625.htm]].

In the case of many of the longer documents in the collection, a Table of Contents, with links to the different sections has been added. In the case of conventions, "anchors" have been added to each article of the convention. This makes it possible to create links directly to relevant sections in a document. For the General Assembly documents. the number of the agenda item has been recorded, and the task of adding the description of the agenda items has been partially implemented. 

The documents in the collection have been classified with key words, to make it easier to find related documents; there remains considerable need for additional key words, and for elaboration of the organization and structure of the key words. The inclusion of hyperlinks to references cited in documents makes it possible to a} generate a table to links for each document, and b) to create a listing of documents that include a reference to the documents. The generation of web pages with the backward and forward reference tables remains as a future enhancement; a sample document, links for the ''2005 World Summit Outcome'' is available at [[www.un-documents.net/links/a60r1.htm|http://www.un-documents.net/links/a60r1.htm]]

The ''Official Records of the General Assembly'' corresponding to the resolutions have also been added to the collection and uploaded;the Official Records are a very valuable resource for anyone interested in the history of the United Nations; these records are only available as scanned pdf files; in most cases, many of the pages are skewed in the vopies on the ''Official Documents of the United Nations'' - [[documents.un.org|http://documents.un.org]] - some of the files of the official records have been de-skewed - with ''ReadIris Pro'', an excellent OCR package, and blank pages have been removed.

The UN Documents web site has been submitted to the major search engines, with the result that some of the documents are now fairly close to the top of Google search results for their title and a [[Google site search|Google UN documents]] offers a quick way to find relevant documents in the collection.
!! Article 2: Objective
The ultimate objective of this Convention and any related legal instruments that the Conference of the Parties may adopt is to achieve, in accordance with the relevant provisions of the Convention, stabilization of greenhouse gas concentrations in the atmosphere at a level that would prevent dangerous anthropogenic interference with the climate system. Such a level should be achieved within a time frame sufficient to allow ecosystems to adapt naturally to climate change, to ensure that food production is not threatened and to enable economic development to proceed in a sustainable manner. 
!! Article 3: Principles
In their actions to achieve the objective of the Convention and to implement its provisions, the Parties shall be guided, inter alia, by the following:
# The Parties should protect the climate system for the benefit of present and future generations of humankind, on the basis of equity and in accordance with their common but differentiated responsibilities and respective capabilities. Accordingly, the developed country Parties should take the lead in combating climate change and the adverse effects thereof.
# The specific needs and special circumstances of developing country Parties, especially those that are particularly vulnerable to the adverse effects of climate change, and of those Parties, especially developing country Parties, that would have to bear a disproportionate or abnormal burden under the Convention, should be given full consideration.
# The Parties should take precautionary measures to anticipate, prevent or minimize the causes of climate change and mitigate its adverse effects. Where there are threats of serious or irreversible damage, lack of full scientific certainty should not be used as a reason for postponing such measures, taking into account that policies and measures to deal with climate change should be cost-effective so as to ensure global benefits at the lowest possible cost. To achieve this, such policies and measures should take into account different socio-economic contexts, be comprehensive, cover all relevant sources, sinks and reservoirs of greenhouse gases and adaptation, and comprise all economic sectors. Efforts to address climate change may be carried out cooperatively by interested Parties.
# The Parties have a right to, and should, promote sustainable development. Policies and measures to protect the climate system against human-induced change should be appropriate for the specific conditions of each Party and should be integrated with national development programmes, taking into account that economic development is essential for adopting measures to address climate change.
# The Parties should cooperate to promote a supportive and open international economic system that would lead to sustainable economic growth and development in all Parties, particularly developing country Parties, thus enabling them better to address the problems of climate change. Measures taken to combat climate change, including unilateral ones, should not constitute a means of arbitrary or unjustifiable discrimination or a disguised restriction on international trade. 
''Udo Borkowski'' 

|<<siteMap >> |<<siteMap "abego software">> |<<siteMap "tiddlywiki developer">> |
http://www.un.org/climatechange
The ''United Nations Decade of Education for Sustainable Development'' (2005-2014) was established by [[General Assembly Resolution 57/254|57/254. United Nations Decade of Education for Sustainable Development]] on 20 December 2002 in response to a recommendation in the [[section on education|"Education" in the Johannesburg Plan of Implementation]] in the [[Plan of Implementation of the World Summit on Sustainable Development|http://www.un-documents.net/jburgpln.htm]] ("Johannesburg Plan of Implementation"). and gave the lead responsibility for co-ordinating the response of the United Nations system to the ''United Nations Educational, Scientific and Cultural Organization'' (UNESCO) 

The Decade of Education for Sustainable Development (DESD) is one of a number of United Nations Decades that have been established by the General Assembly and many of these address areas of global concern that are closely connected with the issue of education and sustainable development, and hence of significant concern to the NGO Committee on Education. Among such Decades currently underway are the ''International Decade for a Culture of Peace and Non-Violence for the Children of the World'' (2000-2010), the ''United Nations Literacy Decade'' (2003-2012) , the ''Second International Decade of the World's Indigenous People'' (2005-2014), and the ''International Decade for Action, "Water for Life'' (2005-2015).

For more information on Decade of Education for Sustainable Development, visit UNESCO's web site at http://www.unesco.org/education/desd/ 
@@font-size:90%;''Note'': This is the "framed" home page of the ''United Nations Environment Programme'' web site.
You can view this page in a separate browser tab or window at http://www.unep.org/@@
<html><iframe
	src = "http://www.unep.org"
	title = "United Nations Environment Programme"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
> The ''United Nations Forum on Forests'' is a forum for following up on the [[Forest Principles|Non-legally binding authoritative statement of principles for a global consensus on the management, conservation and sustainable development of all types of forests]], on of the [[Earth Summit Agreements]] adopted in conjunction with the [[United Nations Framework Convention on Climate Change]] in Rio de Janeiro. 

@@font-size:90%;''Note'': This is a "framed" page from the ''United Nations Forum on Forests'' web site. You can view this page in a separate browser tab or window at http://www.un.org/esa/forests/@@
<html>
<iframe
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes"
	src = "http://www.un.org/esa/forests/"
	title = "United Nations Forum on Forests">
</iframe> </html>
@@font-size:90%;''Note'': [[Click here to view this page in a separate browser tab or window|http://www.un-documents.net/unfccc.htm]]@@
<html>
<iframe
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes"
	src = "http://www.un-documents.net/unfccc.htm"
	title = "United Nations Framework Convention on Climate Change"'>
</iframe> </html>
<<<
Adopted by the ''United Nations General Assembly'' in its resolution 217 A  (III), December 10, 1948
<<<
Whereas recognition of the inherent dignity and of the equal and inalienable rights of all members of the human family is the foundation of freedom, justice and peace in the world,

Whereas disregard and contempt for human rights have resulted in barbarous acts which have outraged the conscience of mankind, and the advent of a world in which human beings shall enjoy freedom of speech and belief and freedom from fear and want has been proclaimed as the highest aspiration of the common people,

Whereas it is essential, if man is not to be compelled to have recourse, as a last resort, to rebellion against tyranny and oppression, that human rights should be protected by the rule of law,

Whereas it is essential to promote the development of friendly relations between nations,

Whereas the peoples of the United Nations have in the Charter reaffirmed their faith in fundamental human rights, in the dignity and worth of the human person and in the equal rights of men and women and have determined to promote social progress and better standards of life in larger freedom,

Whereas Member States have pledged themselves to achieve, in co-operation with the United Nations, the promotion of universal respect for and observance of human rights and fundamental freedoms,

Whereas a common understanding of these rights and freedoms is of the greatest importance for the full realization of this pledge,

Now, therefore the General Assembly proclaims this Universal Declaration of Human Rights as a common standard of achievement for all peoples and all nations, to the end that every individual and every organ of society, keeping this Declaration constantly in mind, shall strive by teaching and education to promote respect for these rights and freedoms and by progressive measures, national and international, to secure their universal and effective recognition and observance, both among the peoples of Member States themselves and among the peoples of territories under their jurisdiction.
!!!Article 1.
All human beings are born free and equal in dignity and rights.They are endowed with reason and conscience and should act towards one another in a spirit of brotherhood.
!!!Article 2.
Everyone is entitled to all the rights and freedoms set forth in this Declaration, without distinction of any kind, such as race, colour, sex, language, religion, political or other opinion, national or social origin, property, birth or other status. Furthermore, no distinction shall be made on the basis of the political, jurisdictional or international status of the country or territory to which a person belongs, whether it be independent, trust, non-self-governing or under any other limitation of sovereignty.
!!!Article 3.
Everyone has the right to life, liberty and security of person.
!!!Article 4.
No one shall be held in slavery or servitude; slavery and the slave trade shall be prohibited in all their forms.
!!!Article 5.
No one shall be subjected to torture or to cruel, inhuman or degrading treatment or punishment.
!!!Article 6.
Everyone has the right to recognition everywhere as a person before the law.
!!!Article 7.
All are equal before the law and are entitled without any discrimination to equal protection of the law. All are entitled to equal protection against any discrimination in violation of this Declaration and against any incitement to such discrimination.
!!!Article 8.
Everyone has the right to an effective remedy by the competent national tribunals for acts violating the fundamental rights granted him by the constitution or by law.
!!!Article 9.
No one shall be subjected to arbitrary arrest, detention or exile.
!!!Article 10.
Everyone is entitled in full equality to a fair and public hearing by an independent and impartial tribunal, in the determination of his rights and obligations and of any criminal charge against him.!
!!Article 11.
1. Everyone charged with a penal offence has the right to be presumed innocent until proved guilty according to law in a public trial at which he has had all the guarantees necessary for his defence.

2. No one shall be held guilty of any penal offence on account of any act or omission which did not constitute a penal offence, under national or international law, at the time when it was committed. Nor shall a heavier penalty be imposed than the one that was applicable at the time the penal offence was committed.
!!!Article 12.
No one shall be subjected to arbitrary interference with his privacy, family, home or correspondence, nor to attacks upon his honour and reputation. Everyone has the right to the protection of the law against such interference or attacks.
!!!Article 13.
1. Everyone has the right to freedom of movement and residence within the borders of each state.

2. Everyone has the right to leave any country, including his own, and to return to his country.
!!!Article 14.
1. Everyone has the right to seek and to enjoy in other countries asylum from persecution.

2. This right may not be invoked in the case of prosecutions genuinely arising from non-political crimes or from acts contrary to the purposes and principles of the United Nations.
!!!Article 15.
1. Everyone has the right to a nationality.

2. No one shall be arbitrarily deprived of his nationality nor denied the right to change his nationality.
!!!Article 16.
1. Men and women of full age, without any limitation due to race, nationality or religion, have the right to marry and to found a family. They are entitled to equal rights as to marriage, during marriage and at its dissolution.

2. Marriage shall be entered into only with the free and full consent of the intending spouses.

3. The family is the natural and fundamental group unit of society and is entitled to protection by society and the State.
!!!Article 17.
1. Everyone has the right to own property alone as well as in association with others.

2. No one shall be arbitrarily deprived of his property.
!!!Article 18.
Everyone has the right to freedom of thought, conscience and religion; this right includes freedom to change his religion or belief, and freedom, either alone or in community with others and in public or private, to manifest his religion or belief in teaching, practice, worship and observance.
!!!Article 19.
Everyone has the right to freedom of opinion and expression; this right includes freedom to hold opinions without interference and to seek, receive and impart information and ideas through any media and regardless of frontiers.
!!!Article 20.
1. Everyone has the right to freedom of peaceful assembly and association.

2. No one may be compelled to belong to an association.
!!!Article 21.
1. Everyone has the right to take part in the government of his country, directly or through freely chosen representatives.

2. Everyone has the right of equal access to public service in his country.

3. The will of the people shall be the basis of the authority of government; this will shall be expressed in periodic and genuine elections which shall be by universal and equal suffrage and shall be held by secret vote or by equivalent free voting procedures.
!!!Article 22.
Everyone, as a member of society, has the right to social security and is entitled to realization, through national effort and international co-operation and in accordance with the organization and resources of each State, of the economic, social and cultural rights indispensable for his dignity and the free development of his personality.!
!!Article 23.
1. Everyone has the right to work, to free choice of employment, to just and favourable conditions of work and to protection against unemployment.

2. Everyone, without any discrimination, has the right to equal pay for equal work.

3. Everyone who works has the right to just and favourable remuneration ensuring for himself and his family an existence worthy of human dignity, and supplemented, if necessary, by other means of social protection.

4. Everyone has the right to form and to join trade unions for the protection of his interests.
!!!Article 24.
Everyone has the right to rest and leisure, including reasonable limitation of working hours and periodic holidays with pay.
!!!Article 25.
1. Everyone has the right to a standard of living adequate for the health and well-being of himself and of his family, including food, clothing, housing and medical care and necessary social services, and the right to security in the event of unemployment, sickness, disability, widowhood, old age or other lack of livelihood in circumstances beyond his control.

2. Motherhood and childhood are entitled to special care and assistance. All children, whether born in or out of wedlock, shall enjoy the same social protection.
!!!Article 26.
1. Everyone has the right to education. Education shall be free, at least in the elementary and fundamental stages. Elementary education shall be compulsory. Technical and professional education shall be made generally available and higher education shall be equally accessible to all on the basis of merit.

2. Education shall be directed to the full development of the human personality and to the strengthening of respect for human rights and fundamental freedoms. It shall promote understanding, tolerance and friendship among all nations, racial or religious groups, and shall further the activities of the United Nations for the maintenance of peace.

3. Parents have a prior right to choose the kind of education that shall be given to their children.
!!!Article 27.
1. Everyone has the right freely to participate in the cultural life of the community, to enjoy the arts and to share in scientific advancement and its benefits.

2. Everyone has the right to the protection of the moral and material interests resulting from any scientific, literary or artistic production of which he is the author.
!!!Article 28.
Everyone is entitled to a social and international order in which the rights and freedoms set forth in this Declaration can be fully realized.
!!!Article 29.
1. Everyone has duties to the community in which alone the free and full development of his personality is possible.

2. In the exercise of his rights and freedoms, everyone shall be subject only to such limitations as are determined by law solely for the purpose of securing due recognition and respect for the rights and freedoms of others and of meeting the just requirements of morality, public order and the general welfare in a democratic society.

3. These rights and freedoms may in no case be exercised contrary to the purposes and principles of the United Nations.
!!!Article 30.
Nothing in this Declaration may be interpreted as implying for any State, group or person any right to engage in any activity or to perform any act aimed at the destruction of any of the rights and freedoms set forth herein.

//183rd plenary meeting
10 December 1948//
!!Basic Options
TiddlyWiki offers a number of "Interface Options" - using the {{{<<option>>}}} built-in macro - that allow you to customise some of the ways this web site behaves. The options you select are saved in your browser, and will remain in effect when you visit this site again.  Note that if you [[download this web site|Download this web site]], there are many more ways you can customize the site.
!!Display Options
<<<
''Font size'': You can increase the size of the font - of the tiddlers only, not the header of menu - by clicking on the ''+'', ''='' or ''-'' <<fontSize "font-size:">> displayed in the [[Hover Menu]] - on the right of the screen - or under ''User Options'' in the menu on the left.
''Full screen display'': You can switch back and forth between full screen display of tiddlers - i.e. without the menu being displayed - by clicking on the <<fullscreen>> in the [[Hover Menu]], or when you "mouse over" the space above the tags that are displayed here at the top right of each tiddler.
<<<
!!Search Options
This site incorporates a number of ''Search option'' - using the built-in search features of TiddlyWiki, supplemented with two plugin macros - [[SearchOptions plugin]] and [[YourSearchPlugin macro]]
<<<
<<option chkSearchTitles>> Search in tiddler titles
<<option chkSearchText>> Search in tiddler text
<<option chkSearchTags>> Search in tiddler tags
<<option chkSearchTitlesFirst>> Search results show title matches first
<<option chkSearchList>> Search results show list of matching tiddlers
<<option chkSearchIncremental>> Incremental searching
<<<
!!!~YourSearch Options
<<<
<<option chkUseYourSearch>> Use 'Your Search' 
<<option chkPreviewText>> Show Text Preview
<<option chkSearchAsYouType>> 'Search As You Type' Mode (No RETURN required to start search)
Default Search Filter: <<option chkSearchInTitle>>Titles ('!') <<option chkSearchInText>>Texts ('%') <<option chkSearchInTags>>Tags ('#') <html><br><font size="-2">The parts of a tiddlers that are searched when you don't explicitly specify a filter in the search text (using a '!', '%' or '#' prefix).</font></html>
Number of items on search result page: <<option txtItemsPerPage>>
Number of items on search result page with preview text: <<option txtItemsPerPageWithPreview>>
<<option chkRegExpSearch>> RegExpSearch
<<option chkCaseSensitiveSearch>> Case Sensitive Search
<<option chkAnimate>> Enable Animations
<<<
!!Navigation Options
<<<
<<option chkToggleLinks>> Clicking on links to tiddlers that are already open causes them to close
^^(override with Control or other modifier key)^^
<<option chkOpenInNewWindow>> Open Links In New Window
<<<
!Editing Options
The ''Editing Options'' will only apply if you have [[downloaded this web site|Download this web site]], and open it from a local drive
!!Username
> Enter your username, that is recorded in any tiddlers you edit or create: <<option txtUserName>>
> Conventionally, TiddlyWiki developers suggest this be written as a WikiWord (eg JoeBloggs), however TiddlyWikiPerfect recommends a user name with separate elements, eg Firstname Lastname, a Nickname or an organizational name. 
<<<
<<option chkHttpReadOnly>> HideEditingFeatures when viewed over HTTP
<<option chkForceMinorUpdate>> Treat edits as MinorChanges by preserving date and time
^^(override with Shift key when clicking 'done' or by pressing Ctrl-Shift-Enter^^
<<option chkConfirmDelete>> Confirm Before Deleting a tiddler
Maximum number of lines in a tiddler edit box: <<option txtMaxEditRows>>
<<option chkInsertTabs>> Use tab key to insert tab characters instead of jumping to next field
<<<
!!Save Options
<<<
<<option chkSaveBackups>> Save Backups
<<option chkAutoSave>> Auto Save
<<option chkGenerateAnRssFeed>> Generate an Rss Feed
<<option chkSaveEmptyTemplate>> Save Empty Template - i.e. just TiddlyWiki, without any of the tiddlers
Folder name for backup files: <<option txtBackupFolder>>
<<option chkAutoSave>> Auto Save: When selected, the page will be saved each time you save a tiddler; note that it will slow down your editing, while it protects you from losing your work if your browser crashes. 
<<<
!!Private Settings: 
<<<
<<option chkUsePrivateSettings>> Use private settings. 
<<option chkMakeSettingPrivateWhenChanged>> Make setting private when changed.&#160;&#160;&#160;[[Show Settings]].
^^(Private settings are stored in this ~TiddlyWiki, shared settings are stored as cookies. For more information see the [[Settings documentation|SettingsPlugin Documentation]].)^^
<<<
!!Plugins
<<<
See [[Plugin Macros]] for information on the 3rd party plugin macros used in the web site.
<<<

The ''View ~ColorPalette'' tiddler uses the combination of a "template" - [[TemplateShowColor]] with the built-in [[TiddlerSlice]] feature that allows it to extract information  and display the [[RGB]] values and the display colour of the various elements of the ColorPalette. This tiddler uses the expression:
{{{<<tiddler [[TemplateShowColor]] with:{{store.getTiddlerSlice('ColorPalette','Background')}} Background>>}}}
for each of the colors that are defined and editable in the [[ColorPalette]]

The ''~TemplateShowColor'' tiddler consists of the following expression:
{{{@@font-family:courier new, monospace; ''$1'' @@@@padding-bottom: 5em;width: 25em;background-color: $1;&nbsp;@@ [[$2|ColorPalette]]}}}
however, it is displayed as follows, using the syntax {{{> <<tiddler TemplateShowColor>>}}}: Note the preceding {{{>}}} indents the line that follows.  For more information on why it displays that way, and to find out more about how to format the content of tiddlers, visit [[Formatting Tiddlers]].

> <<tiddler TemplateShowColor>>
<<<
<<tiddler [[TemplateShowColor]] with:{{store.getTiddlerSlice('ColorPalette','Background')}} Background>> 
<<tiddler [[TemplateShowColor]] with:{{store.getTiddlerSlice('ColorPalette','Foreground')}} Foreground>>
<<tiddler [[TemplateShowColor]] with:{{store.getTiddlerSlice('ColorPalette','PrimaryPale')}} PrimaryPale>>
<<tiddler [[TemplateShowColor]] with:{{store.getTiddlerSlice('ColorPalette','PrimaryLight')}} PrimaryLight>>
<<tiddler [[TemplateShowColor]] with:{{store.getTiddlerSlice('ColorPalette','PrimaryMid')}} PrimaryMid>>
<<tiddler [[TemplateShowColor]] with:{{store.getTiddlerSlice('ColorPalette','PrimaryDark')}} PrimaryDark>>
<<tiddler [[TemplateShowColor]] with:{{store.getTiddlerSlice('ColorPalette','SecondaryPale')}} SecondaryPale>>
<<tiddler [[TemplateShowColor]] with:{{store.getTiddlerSlice('ColorPalette','SecondaryLight')}} SecondaryLight>>
<<tiddler [[TemplateShowColor]] with:{{store.getTiddlerSlice('ColorPalette','SecondaryMid')}} SecondaryMid>>
<<tiddler [[TemplateShowColor]] with:{{store.getTiddlerSlice('ColorPalette','SecondaryDark')}} SecondaryDark>>
<<tiddler [[TemplateShowColor]] with:{{store.getTiddlerSlice('ColorPalette','TertiaryPale')}} TertiaryPale>>
<<tiddler [[TemplateShowColor]] with:{{store.getTiddlerSlice('ColorPalette','TertiaryLight')}} TertiaryLight>>
<<tiddler [[TemplateShowColor]] with:{{store.getTiddlerSlice('ColorPalette','TertiaryMid')}} TertiaryMid>>
<<tiddler [[TemplateShowColor]] with:{{store.getTiddlerSlice('ColorPalette','TertiaryDark')}} TertiaryDark>>
<<tiddler [[TemplateShowColor]] with:{{store.getTiddlerSlice('ColorPalette','Error')}} Error>>
<<<
<!--{{{-->

<div class='toolbar'>
	<span macro="showWhenTagged systemConfig">
		<span macro="toggleTag systemConfigDisable . '[[disable|systemConfigDisable]]'"></span>
	</span>
	<span style="padding:1em;"></span>
	<span macro='toolbar closeTiddler closeOthers deleteTiddler refresh permalink fullscreen references newTiddler newJournal jump +editTiddler '></span>
</div>

<div class="tagglyTagged" macro="tags"></div>

<div class='titleContainer'>
	<span class='title' macro='view title'></span>
	<span macro="miniTag"></span>
</div>

<!-- <div class='subtitle'> 	<span macro='view modifier link'></span>, created <span macro='view created date [[YYYY.0MM.0DD]]'></span>, modified <span macro='view modified date [[YYYY.0MM.0DD]]'></span></div> -->

<div macro="showWhenExists ViewPanelTemplate">[[ViewPanelTemplate]]</div>

<div macro="hideWhen tiddler.tags.containsAny(['html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')">
	<div class='viewer' macro='view text wikified'></div>
</div>
<div macro="showWhen tiddler.tags.containsAny(['html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')">
	<div class='viewer'><pre macro='view text'></pre></div>
</div>

<div macro="showWhenExists ViewDashboardTemplate">[[ViewDashboardTemplate]]</div>

<div class="tagglyTagging" macro="tagglyTagging"></div>

<!--}}}-->
La Perla Garden has a 1,000 gallon rainwater collection tank, powered by gravity and rain which will be the focus of a planned beautification process, to be completed by September 2008
!!! Why collect rainwater 
* watering the garden
* reduce stormwater runoff
!!! How a rainwater tank works
!!!! Collecting rainwater
!!!! Using rainwater
!!!! Using gravity
!!!! Rainwater overflow


Welcome to a [[Creative Commons]] learning environment for community biodiversity based on [[La Perla Garden]] - an oasis of biodiversity at 105th Street and Columbus Avenue in New York's Upper West Side. Established in 1991, ''La Perla Garden'' is one of over 600 registered [[GreenThumb|GreenThumb, New York City Department of Parks & Recreation]] community gardens in New York City, and is affiliated with the [[Manhattan Land Trust]].

At the heart of the learning process is [[Composting at La Perla Garden]]. Composting is a wonderful process through which garden waste, that can be combined with kitchen waste, is transformed by an assortment of microbes, insect and worms into humus that enriches the soil, encouraging healthy microbial action and increasing the soil's ability to retain moisture.

This web site is being developed on the remarkable, versatile TiddlyWiki software platform, and is one of a growing set of sites under the auspices of [[Climate Change 2.0]], an initiative designed to harness the powers and properties of [[Web 2.0]] in addressing the climate change crisis.

Please note: this web site is under development; please revisit the site; if you like, you can subscribe to the site's [[RSS feed|Site RSS feed]].
William (Bill) Gellermann is a member of the [[Climate Change Sub-Committee]] of the [[NGO/DPI Executive Committee]], and served as //~Co-Chair// of the [[Networking Sub-Committee]] for the [[Planning Committee|60th Annual DPI/NGO Conference Planning Committee]] for the [[60th Annual DPI/NGO Conference]], and has been a member of the Planning Committee since 2004. Bill is serving as the initial //Convenor// of the [[Tipping Point Working Group]] for the [[NGO/DPI Climate Change Report]]

William Gellermann has a Ph.D. in Applied Behavioral Sciences from UCLA, and his professional life has been as a //Consultant// and //Teacher// on Organizational Development. He has been a faculty member at SUNY (Buffalo), Cornell and CUNY (Richmond College). Consultant since 1970 (clients included major corporations, labor unions, civil rights groups, and government agencies at federal, state, and city level); author of [[Values and Ethics in Organization and Human Systems Development|http://books.google.com/books?id=xi43AQAACAAJ&dq=%22Values+and+Ethics+in+Organization+and+Human+Systems%22&ei=2_E0R-6CNpjcpgKjqbHNDw]] (1990, ~Jossey-Bass). Retired in 2000. Bill Gellerman was elected //~Co-Chair// of  the [[Communications Coordination Committee for the UN|http://www.cccun.org/]] (CCC/UN) having previously served as //~Vice-Chair// since 2004.

E-mail: [[gmann@earthlink.net|mailto:gmann@earthlink.net]]
<html>
<embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="600" height="400" flashvars="host=picasaweb.google.com&noautoplay=1&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fecology2001%2Falbumid%2F5079361949910447153%3Fkind%3Dphoto%26alt%3Drss" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>
</html>
The ''World Association of Girl Guides and Girl Scouts'' is a worldwide Movement in General Consultative Status with the Economic and Social Council providing non-formal education where girls and young women develop leadership and life skills through self-development, challenge and adventure. Girl Guides and Girl Scouts learn by doing. The World Association brings together Girl Guiding and Girl Scouting Associations in 144 countries across the globe. 

For more information, visit http://www.waggsworld.org
!!World Conference on Education for All
Jomtein, Thailand, March 1990
* [[Preamble|Jomtien Declaration: Preamble]]
[[World Declaration on Education for All]]
* [[Education For All: The Purpose|Jomtien Declaration: Education For All: The Purpose]]
** Article I - Meeting Basic Learning Needs
* [[Education For All: An Expanded Vision and a Renewed Commitment|Jomtien Declaration: Education For All: An Expanded Vision and a Renewed Commitment]]
** Article II - Shaping The Vision
** Article III - Universalizing Access and Promoting Equity
** Article IV - Focussing on Learning
** Article V - Broadening the Means and Scope of Basic Education
** Article VI - Enhancing the Environment for Learning
** Article VII - Strengthening Partnerships
* [[Education For All: The Requirements|Jomtien Declaration: Education For All: The Requirements]]
** Article VIII - Developing a Supportive Policy Context
** Article IX - Mobilizing Resources
** Article X - Strengthening International Solidarity
<<tiddler "World Declaration on Education For All: Meeting Basic Learning Needs">>
{{iframe{''Note'': This is a "framed" page from the ''Cornell Waste Management Institute'' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.css.cornell.edu/compost/worms/basics.html}}}
<html><iframe
	src = "http://www.css.cornell.edu/compost/worms/basics.html"
	title = "Worm Composting Basics"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
The ''abego software'' tag is for tiddlers - principally [[Plugin Macros]] and tags relating to [[abego Software]] and [[Udo Borkowski]]

|<<siteMap >> |<<siteMap "Udo Borkowski">> |<<siteMap "tiddlywiki developer">> |
/***
|Name|''allTagsExcept''|h
|Author|[[Clint Checketts]]|
|Version|1.0 (2005.09.08)|
|Description|Lists all tags except for those specified.|
|Source|http://tiddlystyles.com/#AllTagsExceptMacro|
***/
/***
|Usage:|{{{<< allTagsExcept systemConfig excludeLists systemTiddlers >>}}} This will show all tags but those listed (e.g. systemConfig and systemTiddlers|

<<allTagsExcept systemConfig excludeLists systemTiddlers >>
***/
//{{{
version.extensions.allTagsExcept = {major: 0, minor: 1, revision: 0, date: new Date(2005,8,15)};
config.macros.allTagsExcept = {tooltip: "Show tiddlers tagged with '%0'",noTags: "There are no tags to display"};

config.macros.allTagsExcept.handler = function(place,macroName,params)
{
 var tags = store.getTags();
 var theTagList = createTiddlyElement(place,"ul",null,null,null);
 if(tags.length == 0)
 createTiddlyElement(theTagList,"li",null,"listTitle",this.noTags);
 for (var t=0; t<tags.length; t++) {
 var includeTag = true;
 for (var p=0;p<params.length; p++) if (tags[t][0] == params[p]) includeTag = false;
 if (includeTag){
 var theListItem =createTiddlyElement(theTagList,"li",null,null,null);
 var theTag = createTiddlyButton(theListItem,tags[t][0] + " (" + tags[t][1] + ")",this.tooltip.format([tags[t][0]]),onClickTag);
 theTag.setAttribute("tag",tags[t][0]);
 }
 }
}
//}}}
The ''cascading styles'' tag is for tiddlers that contain, or are about [[Cascading Styles]] that define the appearance and characteristics of elements of the web page.

|<<siteMap >> |<<siteMap css>> |

The '' '' tag is for tiddlers and tags relating to

|<<siteMap >> |

The ''convention'' tag is used for tiddlers relating to international conventions - also commonly known as treaties.
The ''css'' tag is used for tiddlers or tags that contain or are about [[Cascading Style Sheets]] that define for layout and appearance of the web page and its elements.

|<<siteMap >> |<<siteMap tiddlywiki>> |<<siteMap languages>> |


The ''css colours'' tag is used for tiddlers and tags that relate to - or define - the use of colour in [[Cascading Style Sheets]].

|<<siteMap >> |<<siteMap css>> |<<siteMap colour>> |

The ''css template'' tag is used for tiddlers - or tags - that are, or that relate to [[Cascading Style Sheet Templates]]  that define the overall layout of the web site or sections of the web site.

|<<siteMap >> |<<siteMap css>> |<<siteMap template>> |


The ''dataperfect'' tag is for tiddlers about DataPerfect, TiddlyWiki's partner in [[TiddlyWikiPerfect|TiddlyWikiPerfect: An emerging hybrid information species]]

|<<siteMap >> |<<siteMap toolbox>> |

The ''els design'' tag is for tiddlers and tags relating to Eric Shulman and ELS Design Studios, developer of the brilliant [[TiddlyTools]] web site.

|<<siteMap >> |<<siteMap "tiddlywiki developer">> |
The ''environmental convention'' tag is for tiddlers and tags relating to [[Environmental Conventions]].

|<<siteMap >> |<<siteMap environment>> |<<siteMap convention>> |

/***
|Name|''fontSize''|h
|Author|[[Saq Imtiaz]]|
|Version|1.0|
|Description|Resize tiddler text on the fly. The text size is remembered between sessions by use of a cookie.|
|Source|http://lewcid.googlepages.com/lewcid.html#FontSizePlugin|
|TW Version|2.x|
***/
/***
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://lewcid.googlepages.com/lewcid.html#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();
                  }
};
//}}}
/***
|Name|''fullscreen''|h
|Author|[[Saq Imtiaz]]|
|Version|1.1|
|Description|Toggle between viewing tiddlers fullscreen and normally. Very handy for when you need more viewing space.|
|Source|http://lewcid.googlepages.com/lewcid.html#FullScreenPlugin|
|TW Version|2.x|
***/
/***
!Demo:
Click the ↕ button in the toolbar for this tiddler. Click it again to turn off fullscreen.

!Installation:
Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
Edit the ViewTemplate to add the fullscreen command to the toolbar.

!History:
*25-07-06: ver 1.1
*20-07-06: ver 1.0

!Code
***/
//{{{
var lewcidFullScreen = false;

config.commands.fullscreen =
{
            text:" ↕ ",
            tooltip:"Fullscreen mode"
};

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

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

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


Slider.prototype.lewcidStop = Slider.prototype.stop;
Slider.prototype.stop = function()
{
           this.lewcidStop();
           if (story.isEmpty() && lewcidFullScreen == true)
              config.commands.fullscreen.handler();
}
//}}}
The ''html tag'' is used for tiddlers that involve the use of HTML formatting tags. Tiddlers tagged with ''html tag'' are displayed below.
The ''iframe'' tag is used for tiddlers that use the HTML tag &lt;iframe&lt; to display a page or site from another web site inside this site. Tiddlers tagged with ''iframe'' are displayed below. Note: not all relevant tiddlers with have been so tagged.
{{iframe{''Note'': This is a "framed" page from the '' '' web site. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at }}}
<html><iframe
	src = ""
	title = ""
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
The ''import'' tag is for tiddlers and tags relating to [[Importing tiddlers]], as well as [[Importing]] in general.

|<<siteMap >> |<<siteMap "free exchange">> |<<siteMap economics>> |

The ''import/export'' tag is for tiddlers and tags relating to [[Import and Export]]

|<<siteMap >> |<<siteMap trading>> |

The  ''melting ice'' tag is used for tiddlers relating to the critical issue of melting ice, snow and glaciers - widely perceived as the critical "tipping point" in relation to climate change.

The 'menu' tag is used to identify tiddlers containing, or about the muse of [[TiddlyWiki menus]]

|<<siteMap menu>> |<<siteMap tiddlywiki>> |
The ''picasa'' tag is for tiddlers and tags relating to [[Picasa]], one of the many a free tools available from [[Google]].

|<<siteMap picasa>> |<<siteMap "google tools">> |
The ''site map'' tag is used to identify tiddlers about [[Site Maps]] or that contain a site map.

|<<siteMap "site map">> |<<siteMap tiddlywiki>> |

/***
| Name:|SiteMapMacro|
| Author:|Simon Baird|
| Location:|http://mptw2.tiddlyspot.com/#SiteMapMacro|
| Version:|1.0.3, 15-Mar-06|

!!Examples
See SiteMap and SliderSiteMap for example usage.

!!Parameters
* Name of tiddler to start at
* Max depth (a number) 
* Format (eg, nested, see formats below)
* Don't show root flag (anything other than null turns it on)
* Tags - a string containing a bracketed list of tags that we are interested in

!!History
* 1.0.3 (15-Mar-06)
** added tag filtering
* 1.0.2 (15-Mar-06)
** Added json format and dontshowroot option
* 1.0.1 (9-Mar-06)
** Added selectable formats and fixed nested slider format
* 1.0.0 (8-Mar-06)
** first release

***/
//{{{

version.extensions.SiteMapMacro = {
	major: 1,
	minor: 0,
	revision: 3,
	date: new Date(2006,3,15),
	source: "http://simonbaird.com/mptw/#SiteMapMacro"
};

config.macros.siteMap = {

	formats: {
		bullets: {
			formatString: "%0[[%1]]\n%2",
			indentString: "*"
		},

		// put this in your StyleSheet to make it look good.
		// .sliderPanel { margin-left: 2em; }

		sliders: {
			formatString: "[[%1]]+++\n%2===\n\n",
			formatStringLeaf: "[[%1]]\n"
		},

		openSliders: {
			formatString: "[[%1]]++++\n%2===\n\n",
			formatStringLeaf: "[[%1]]\n"
		},

		popups: {
			formatString: "[[%1]]+++^\n%2===\n\n",
			formatStringLeaf: "[[%1]]\n"
		},

		// these don't work too well
		openPopups: {
			formatString: "[[%1]]++++^\n%2===\n\n",
			formatStringLeaf: "[[%1]]\n"
		},
		
		// this is a little nuts but it works
		json: {
			formatString: '\n%0{"%1":[%2\n%0]}',
			formatStringLeaf: '\n%0"%1"',
			indentString: "  ",
			separatorString: ","
		}


	},

	defaultFormat: "bullets",

	treeTraverse: function(title,depth,maxdepth,format,dontshowroot,tags,excludetags) {

		var tiddler = store.getTiddler(title);
		var tagging = store.getTaggedTiddlers(title);

		if (dontshowroot)
			depth = 0;

		var indent = "";
		if (this.formats[format].indentString)
			for (var j=0;j<depth;j++)
				indent += this.formats[format].indentString;

		var childOutput = "";
		if (!maxdepth || depth < parseInt(maxdepth)) 
			for (var i=0;i<tagging.length;i++)
				if (tagging[i].title != title) {
					if (this.formats[format].separatorString && i != 0)
						childOutput += this.formats[format].separatorString;
					childOutput += this.treeTraverse(tagging[i].title,depth+1,maxdepth,format,null,tags,excludetags);
				}

		if (childOutput == "" && (
				(tags && tags != "" && !tiddler.tags.containsAll(tags.readBracketedList())) ||
				(excludetags && excludetags != "" && tiddler.tags.containsAny(excludetags.readBracketedList()))
				)
			) {
			// so prune it cos it doesn't have the right tags and neither do any of it's children
			return "";
		}

		if (dontshowroot)
			return childOutput;

		if (this.formats[format].formatStringLeaf && childOutput == "") {
			// required for nestedSliders
			return this.formats[format].formatStringLeaf.format([indent,title,childOutput]);
		}

		return this.formats[format].formatString.format([indent,title,childOutput]);
	},

	handler: function (place,macroName,params,wikifier,paramString,tiddler) {
		wikify(this.treeTraverse(
			params[0] && params[0] != '.' ? params[0] : tiddler.title, 1, 
			params[1] && params[1] != '.' ? params[1] : null, // maxdepth
			params[2] && params[2] != '.' ? params[2] : this.defaultFormat, // format
			params[3] && params[3] != '.' ? params[3] : null, // dontshowroot
			params[4] && params[4] != '.' ? params[4] : null, // tags
			params[5] && params[5] != '.' ? params[5] : null // excludetags
			),place);
	}

}

//}}}
The ''snow'' tag is tor tiddlers and tags relating to snow.

|<<siteMap >> |<<siteMap cryosphere>> |<<siteMap freshwater>> |

The ''systemConfig'' tag is used for [[Plugin Macros]] and instructs TiddlyWiki to include the plugin in its Javascript engine when the web page is loaded.

|<<siteMap >> |<<siteMap tiddlywiki>> |<<siteMap javascript>> |

The ''tag'' tag is used for tiddlers that are only used as tags.

The ''tag template'' tag is for tiddlers and tags relating to [[Tag templates]] that can be useful when creating and editing tiddlers.

|<<siteMap >> |<<siteMap template>> |<<siteMap tags>> |

The ''template'' tag is used for tiddlers that contain or are about [[Templates]].

<<siteMap >>

Type the ''tiddlers'' is used to identify tiddlers that are about [[Tiddlers]] or are categories of tiddlers.

|<<siteMap tiddlers>> |<<siteMap tiddlywiki>> |

The ''tiddlywiki'' tag is used to identify tiddlers and tags that are either about TiddlyWiki or TiddlyWiki features.

|<<siteMap tiddlywiki>> |<<siteMap toolbox>> |

The ''tiddlywiki developer'' tag is used to identify members of the [[TiddlyWiki Development Community]].

|<<siteMap >> |<<siteMap tiddlywiki>> |
The ''tiddlywikiperfect'' tag is used for tiddlers involving sites developed - in full or in part - through a partnership between TiddlyWiki and DataPerfect, and for tiddlers otherwise relating to [[TiddlyWikiPerfect|TiddlyWikiPerfect: An emerging hybrid information species]]

|<<siteMap >> |<<siteMap tiddlywiki>> |<<siteMap dataperfect>> |


The ''toolbox'' tag is used to identify elements of  the [[Climate Change 2.0 Toolbox]]

|<<siteMap >> |<<siteMap cc2.0>> |

The  ''un'' tag is for tiddlers - or tags - concerning the [[United Nations]]

<<siteMap >> 

The '' '' tag is for tiddlers and tags relating to, or containing official [[United Nations documents]].

|<<siteMap >> |<<siteMap un>> |<<siteMap documents>> |

The ''un dpi'' tag is used to identify tiddlers relating to the [[United Nations Department of Public Information]].

|<<siteMap >> |<<siteMap un>> |

The ''un-documents'' tag is for tiddlers and tags relating to, or based on, the web site of the [[UN Documents Cooperation Circles: Gathering a Body of Global Agreements]].

|<<siteMap >> |<<siteMap cc2.0>> |<<siteMap "un documents">> |
The ''unced'' tag is for tiddlers relating to the 1992 [[United Nations Conference on Environment and Development]] - also known as the [[Earth Summit]].

|<<siteMap >> |<<siteMap un>> |<<siteMap "a-conf-151">> |

The ''unep'' tag is for tiddlers and tags relating to the [[United Nations Environment Programme]]

|<<siteMap >> |<<siteMap un >> |<<siteMap environment>> |

The ''unesco'' tag is for tiddlers and tags relating to [[UNESCO]], the [[United Nations Educational, Cultural and Scientific Organization]].

|<<siteMap >> |<<siteMap un >> |<<siteMap education>> |<<siteMap culture>> |<<siteMap science>> |

The ''unfcc'' tag is for tiddlers relating to the [[United Nations Framework Convention on Climate Change]]

|<<siteMap >> |<<siteMap un>> |<<siteMap "climate change">> |

The  ''vanishing habitat'' is for tiddlers relating to the critical issue of [[Vanishing Habitat]].

|<<siteMap >> |<<siteMap biodiversity>> |<<siteMap habitat>> |<<siteMap "biological species">> |

/***
|Name|''wikipedia''|h
|Author|[[Frank Dellaert]]|
|Version|1.01|
|Description|A Plugin Macro to easily create a link to a [[Wikipedia|http://en.wikipedia.org]] entry.|
|Source|http://www-static.cc.gatech.edu/~dellaert/dhtml/tiddly.html#WikipediaPlugin|
***/
/***
!!!Example
{{{<<wikipedia Bibtex>>}}}
<<wikipedia Bibtex>>
!!!Installation
Import (or copy/paste) this tiddler into your document: and tag it with "systemConfig"
!!!Code
***/
//{{{
config.macros.wikipedia = {};
config.macros.wikipedia.handler= function(place,macroName,params) {
   var key=params[0];
   wikify("[["+key+"|http://en.wikipedia.org/wiki/"+key+"]]",place)
}
//}}}