Climate Change 3.0: Information, Ecology & Climate Change


Vital pathway for adaptation to & mitigation of climate change
Transition to a free & open networked knowledge-based universe

A universe where knowledge is wealth
and where wealth is free of the constraints of
the laws of conservation of mass and energy


Please be patient while Climate Change 3.0 loads

Requires Javascript.

Climate Change 3.0 - Information, Ecology & Climate Change - Climate Change in a Free & Open Universe of Knowledge - Clouds, Earth & Consciousness
<!--{{{-->
<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 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0px; top:0px;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

----
Also see [[AdvancedOptions]]
<<importTiddlers>>
!!!C4. Capacity building
11. Everyone should have the necessary skills to benefit fully from the Information Society. Therefore capacity building and ICT literacy are essential. ICTs can contribute to achieving universal education worldwide, through delivery of education and training of teachers, and offering improved conditions for lifelong learning, encompassing people that are outside the formal education process, and improving professional skills.
## Develop domestic policies to ensure that ICTs are fully integrated in education and training at all levels, including in curriculum development, teacher training, institutional administration and management, and in support of the concept of lifelong learning.
## Develop and promote programmes to eradicate illiteracy using ICTs at national, regional and international levels.
## Promote e-literacy skills for all, for example by designing and offering courses for public administration, taking advantage of existing facilities such as libraries, multipurpose community centres, public access points and by establishing local ICT training centres with the cooperation of all stakeholders. Special attention should be paid to disadvantaged and vulnerable groups.
## In the context of national educational policies, and taking into account the need to eradicate adult illiteracy, ensure that young people are equipped with knowledge and skills to use ICTs, including the capacity to analyse and treat information in creative and innovative ways, share their expertise and participate fully in the Information Society.
## Governments, in cooperation with other stakeholders, should create programmes for capacity building with an emphasis on creating a critical mass of qualified and skilled ICT professionals and experts.
## Develop pilot projects to demonstrate the impact of ICT-based alternative educational delivery systems, notably for achieving Education for All targets, including basic literacy targets.
## Work on removing the gender barriers to ICT education and training and promoting equal training opportunities in ICT-related fields for women and girls. Early intervention programmes in science and technology should target young girls with the aim of increasing the number of women in ICT careers. Promote the exchange of best practices on the integration of gender perspectives in ICT education.
## Empower local communities, especially those in rural and underserved areas, in ICT use and promote the production of useful and socially meaningful content for the benefit of all.
## Launch education and training programmes, where possible using information networks of traditional nomadic and indigenous peoples, which provide opportunities to fully participate in the Information Society.
## Design and implement regional and international cooperation activities to enhance the capacity, notably, of leaders and operational staff in developing countries and LDCs, to apply ICTs effectively in the whole range of educational activities. This should include delivery of education outside the educational structure, such as the workplace and at home.
## Design specific training programmes in the use of ICTs in order to meet the educational needs of information professionals, such as archivists, librarians, museum professionals, scientists, teachers, journalists, postal workers and other relevant professional groups. Training of information professionals should focus not only on new methods and techniques for the development and provision of information and communication services, but also on relevant management skills to ensure the best use of technologies. Training of teachers should focus on the technical aspects of ICTs, on development of content, and on the potential possibilities and challenges of ICTs.
## Develop distance learning, training and other forms of education and training as part of capacity building programmes. Give special attention to developing countries and especially LDCs in different levels of human resources development.
## Promote international and regional cooperation in the field of capacity building, including country programmes developed by the United Nations and its Specialized Agencies
## Launch pilot projects to design new forms of ICT-based networking, linking education, training and research institutions between and among developed and developing countries and countries with economies in transition.
## Volunteering, if conducted in harmony with national policies and local cultures, can be a valuable asset for raising human capacity to make productive use of ICT tools and build a more inclusive Information Society. Activate volunteer programmes to provide capacity building on ICT for development, particularly in developing countries.
## Design programmes to train users to develop self-learning and self-development capacities.
From the [[Plan of Implementation of the World Summit on Sustainable Development|http://www.un-documents.net/jburgpln.htm]] 

116. Education is critical for promoting sustainable development. It is therefore essential to mobilize necessary resources, including financial resources at all levels, by bilateral and multilateral donors, including the World Bank and the regional development banks, by civil society and by foundations, to complement the efforts by national governments to pursue the following goals and actions:
## Meet the [[Millennium development goal|Millennium Development Goals]] of achieving universal primary education, ensuring that, by 2015, children everywhere, boys and girls alike, will be able to complete a full course of primary schooling;
## Provide all children, particularly those living in rural areas and those living in poverty, especially girls, with the access and opportunity to complete a full course of primary education. 
117. Provide financial assistance and support to education, research, public awareness programmes and developmental institutions in developing countries and countries with economies in transition in order to:
## Sustain their educational infrastructures and programmes, including those related to environment and public health education;
## Consider means of avoiding the frequent, serious financial constraints faced by many institutions of higher learning, including universities around the world, particularly in developing countries and countries in transition. 
118. Address the impact of HIV/AIDS on the educational system in those countries seriously affected by the pandemic.

119. Allocate national and international resources for basic education as proposed by the [[Dakar Framework for Action on Education for All|http://www.un-documents.net/dakarfa.htm]] and for improved integration of sustainable development into education and in bilateral and multilateral development programmes, and improve integration between publicly funded research and development and development programmes.

120. Eliminate gender disparity in primary and secondary education by 2005, as provided in the Dakar Framework for Action on Education for All, and at all levels of education no later than 2015, to meet the development goals contained in the [[Millennium Declaration|http://www.un-documents.net/a55r2.htm]], with action to ensure, inter alia, equal access to all levels and forms of education, training and capacity-building by gender mainstreaming, and by creating a gender-sensitive educational system.

121. Integrate sustainable development into education systems at all levels of education in order to promote education as a key agent for change.

122. Develop, implement, monitor and review education action plans and programmes at the national, subnational and local levels, as appropriate, that reflect the Dakar Framework for Action on Education for All and that are relevant to local conditions and needs leading to the achievement of community development and make education for sustainable development a part of those plans.

123. Provide all community members with a wide range of formal and non-formal continuing educational opportunities, including volunteer community service programmes, in order to end illiteracy and emphasize the importance of lifelong learning and promote sustainable development.

124. Support the use of education to promote sustainable development, including through urgent actions at all levels to:
## Integrate information and communications technology in school curriculum development to ensure its access by both rural and urban communities and provide assistance, particularly to developing countries, inter alia, for the establishment of an appropriate enabling environment required for such technology;
## Promote, as appropriate, affordable and increased access to programmes for students, researchers and engineers from developing countries in the universities and research institutions of developed countries in order to promote the exchange of experience and capacity that will benefit all partners;
## Continue to implement the work programme of the Commission on Sustainable Development on education for sustainable development;
## Recommend to the United Nations General Assembly that it consider adopting a ''decade of education for sustainable development'', starting in 2005.
//The Conference of the Parties//,

//Resolving// to urgently enhance implementation of the Convention in order to achieve its ultimate objective in full accordance with its principles and commitments,

//Reaffirming// that economic and social development and poverty eradication are global priorities,

//Responding// to the findings of the Fourth Assessment Report of the Intergovernmental Panel on Climate Change that warming of the climate system is unequivocal, and that delay in reducing emissions significantly constrains opportunities to achieve lower stabilization levels and increases the risk of more severe climate change impacts,

//Recognizing// that deep cuts in global emissions will be required to achieve the ultimate objective of the Convention and emphasizing the urgency to address climate change as indicated in the Fourth Assessment Report of the Intergovernmental Panel on Climate Change,
# //Decides// to launch a comprehensive process to enable the full, effective and sustained implementation of the Convention through long-term cooperative action, now, up to and beyond 2012, in order to reach an agreed outcome and adopt a decision at its fifteenth session, by addressing, inter alia:
## A shared vision for long-term cooperative action, including a long-term global goal for emission reductions, to achieve the ultimate objective of the Convention, in accordance with the provisions and principles of the Convention, in particular the principle of common but differentiated responsibilities and respective capabilities, and taking into account social and economic conditions and other relevant factors;
## Enhanced national/international action on mitigation of climate change, including, inter alia, consideration of:
### Measurable, reportable and verifiable nationally appropriate mitigation commitments or actions, including quantified emission limitation and reduction objectives, by all developed country Parties, while ensuring the comparability of efforts among them, taking into account differences in their national circumstances;
### Nationally appropriate mitigation actions by developing country Parties in the context of sustainable development, supported and enabled by technology, financing and capacity-building, in a measurable, reportable and verifiable manner;
### Policy approaches and positive incentives on issues relating to reducing emissions from deforestation and forest degradation in developing countries; and the role of conservation, sustainable management of forests and enhancement of forest carbon stocks in developing countries;
### Cooperative sectoral approaches and sector-specific actions, in order to enhance implementation of Article 4, paragraph 1(c), of the Convention;
### Various approaches, including opportunities for using markets, to enhance the cost-effectiveness of, and to promote, mitigation actions, bearing in mind different circumstances of developed and developing countries;
### Economic and social consequences of response measures;
### Ways to strengthen the catalytic role of the Convention in encouraging multilateral bodies, the public and private sectors and civil society, building on synergies among activities and processes, as a means to support mitigation in a coherent and integrated manner;
## Enhanced action on adaptation, including, inter alia, consideration of:
### International cooperation to support urgent implementation of adaptation actions, including through vulnerability assessments, prioritization of actions, financial needs assessments, capacity-building and response strategies, integration of adaptation actions into sectoral and national planning, specific projects and programmes, means to incentivize the implementation of adaptation actions, and other ways to enable climate-resilient development and reduce vulnerability of all Parties, taking into account the urgent and immediate needs of developing countries that are particularly vulnerable to the adverse effects of climate change, especially the least developed countries and small island developing States, and further taking into account the needs of countries in Africa affected by drought, desertification and floods;
### Risk management and risk reduction strategies, including risk sharing and transfer mechanisms such as insurance;
### Disaster reduction strategies and means to address loss and damage associated with climate change impacts in developing countries that are particularly vulnerable to the adverse effects of climate change;
### Economic diversification to build resilience;
### Ways to strengthen the catalytic role of the Convention in encouraging multilateral bodies, the public and private sectors and civil society, building on synergies among activities and processes, as a means to support adaptation in a coherent and integrated manner;
## Enhanced action on technology development and transfer to support action on mitigation and adaptation, including, inter alia, consideration of:
### Effective mechanisms and enhanced means for the removal of obstacles to, and provision of financial and other incentives for, scaling up of the development and transfer of technology to developing country Parties in order to promote access to affordable environmentally sound technologies;
### Ways to accelerate deployment, diffusion and transfer of affordable environmentally sound technologies;
### Cooperation on research and development of current, new and innovative technology, including win-win solutions;
### The effectiveness of mechanisms and tools for technology cooperation in specific sectors;
## Enhanced action on the provision of financial resources and investment to support action on mitigation and adaptation and technology cooperation, including, inter alia, consideration of:
### Improved access to adequate, predictable and sustainable financial resources and financial and technical support, and the provision of new and additional resources, including official and concessional funding for developing country Parties;
### Positive incentives for developing country Parties for the enhanced implementation of national mitigation strategies and adaptation action;
### Innovative means of funding to assist developing country Parties that are particularly vulnerable to the adverse impacts of climate change in meeting the cost of adaptation;
### Means to incentivize the implementation of adaptation actions on the basis of sustainable development policies;
### Mobilization of public- and private-sector funding and investment, including facilitation of climate-friendly investment choices;
### Financial and technical support for capacity-building in the assessment of the costs of adaptation in developing countries, in particular the most vulnerable ones, to aid in determining their financial needs;
# //Decides// that the process shall be conducted under a subsidiary body under the Convention, hereby established and known as the Ad Hoc Working Group on Long-term Cooperative Action under the Convention, that shall complete its work in 2009 and present the outcome of its work to the Conference of the Parties for adoption at its fifteenth session;
# //Agrees //that the process shall begin without delay, that the sessions of the group will be scheduled as often as is feasible and necessary to complete the work of the group, where possible in conjunction with sessions of other bodies established under the Convention, and that its sessions may be complemented by workshops and other activities, as required;
# //Decides// that the first session of the group shall be held as soon as is feasible and not later than April 2008;
# //Decides// that the Chair and Vice-Chair of the group, with one being from a Party included in Annex I to the Convention (Annex I Party) and the other being from a Party not included in Annex I to the Convention (non-Annex I Party), shall alternate annually between an Annex I Party and a non-Annex I Party;
# //Takes note //of the proposed schedule of meetings contained in the annex to this decision;
# //Instructs// the group to develop its work programme at its first session in a coherent and integrated manner;
# //Invites// Parties to submit to the secretariat, by 22 February 2008, their views regarding the work programme, taking into account the elements referred to in paragraph 1 above, to be compiled by the secretariat for consideration by the group at its first meeting;
# //Requests// the group to report to the Conference of the Parties at its fourteenth session on progress made;
# //Agrees //to take stock of the progress made, at its fourteenth session, on the basis of the report by the group;
# //Agrees// that the process shall be informed by, inter alia, the best available scientific information, experience in implementation of the Convention and its Kyoto Protocol, and processes thereunder, outputs from other relevant intergovernmental processes and insights from the business and research communities and civil society;
# //Notes// that the organization of work of the group will require a significant amount of additional resources to provide for the participation of delegates from Parties eligible to be funded and to provide conference services and substantive support;
# //Strongly urges// Parties in a position to do so, in order to facilitate the work of the group, to provide contributions to the Trust Fund for Participation in the UNFCCC Process and the Trust Fund for Supplementary Activities for the purposes referred to in paragraph 12 above and to provide other forms of in kind support such as hosting a session of the group.
!! Annex
''Indicative timetable for meetings of the Ad Hoc Working Group on Long-term Cooperative Action under the Convention in 2008''
|Session |Dates |
|Session 1 |March/April 2008|
|Session 2 |June 2008, in conjunction with the twenty-eighth sessions of the subsidiary bodies |
|Session 3 |August/September 2008 |
|Session 4 |December 2008, in conjunction with the fourteenth session of the Conference of the Parties|

//8^^th^^ plenary meeting 14-15 December 2007//

1/ Contribution of Working Group III to the Fourth Assessment Report of the Intergovernmental Panel on Climate Change, Technical Summary, pages 39 and 90, and Chapter 13, page 776.
''Reducing emissions from deforestation in developing countries: approaches to stimulate action''

//The Conference of the Parties,//

//Recalling// the relevant provisions of the Convention, in particular Article 2, Article 3, paragraphs 1, 3 and 4, and Article 4, paragraphs 1(a)-(d), 3, 5 and 7,

//Acknowledging// the contribution of the emissions from deforestation to global anthropogenic greenhouse gas emissions,

//Acknowledging// that forest degradation also leads to emissions, and needs to be addressed when reducing emissions from deforestation,

//Recognizing// that efforts and actions to reduce deforestation and to maintain and conserve forest carbon stocks in developing countries are already being taken,

//Recognizing// the complexity of the problem, different national circumstances and the multiple drivers of deforestation and forest degradation,

//Recognizing// the potential role of further actions to reduce emissions from deforestation and forest degradation in developing countries in helping to meet the ultimate objective of the Convention,

//Affirming// the urgent need to take further meaningful action to reduce emissions from deforestation and forest degradation in developing countries,

//Noting// that sustainable reduction in emissions from deforestation and forest degradation in developing countries requires stable and predictable availability of resources,

//Recognizing// that reducing emissions from deforestation and forest degradation in developing countries can promote co-benefits and may complement the aims and objectives of other relevant international conventions and agreements,

//Recognizing also// that the needs of local and indigenous communities should be addressed when action is taken to reduce emissions from deforestation and forest degradation in developing countries,
# //Invites// Parties to further strengthen and support ongoing efforts to reduce emissions from deforestation and forest degradation on a voluntary basis;
# //Encourages// all Parties, in a position to do so, to support capacity-building, provide technical assistance, facilitate the transfer of technology to improve, inter alia, data collection, estimation of emissions from deforestation and forest degradation, monitoring and reporting, and address the institutional needs of developing countries to estimate and reduce emissions from deforestation and forest degradation;
# //Further encourages// Parties to explore a range of actions, identify options and undertake efforts, including demonstration activities, to address the drivers of deforestation relevant to their national circumstances, with a view to reducing emissions from deforestation and forest degradation and thus enhancing forest carbon stocks due to sustainable management of forests;
# //Encourages//, without prejudice to future decisions of the Conference of the Parties, the use of the indicative guidance provided in the annex to this decision as an aid in undertaking and evaluating the range of demonstration activities;
# //Invites// Parties, in particular Parties included in Annex II to the Convention, to mobilize resources to support efforts in relation to the actions referred to in paragraphs 1-3 above;
# //Encourages// the use of the most recent reporting guidelines^^^^ as a basis for reporting greenhouse gas emissions from deforestation, noting also that Parties not included in Annex I to the Convention are encouraged to apply the //Good Practice Guidance for Land Use, Land-Use Change and Forestry//;^^^^
# //Requests// the Subsidiary Body for Scientific and Technological Advice to undertake a programme of work on methodological issues related to a range of policy approaches and positive incentives that aim to reduce emissions from deforestation and forest degradation in developing countries noting relevant documents;^^^^ the work should include:
## Inviting Parties to submit, by 21 March 2008, their views on how to address outstanding methodological issues including, inter alia, assessments of changes in forest cover and associated carbon stocks and greenhouse gas emissions, incremental changes due to sustainable management of the forest, demonstration of reductions in emissions from deforestation, including reference emissions levels, estimation and demonstration of reduction in emissions from forest degradation, implications of national and subnational approaches including displacement of emissions, options for assessing the effectiveness of actions in relation to paragraphs 1, 2, 3 and 5 above, and criteria for evaluating actions, to be compiled into a miscellaneous document for consideration by the Subsidiary Body for Scientific and Technological Advice at its twenty-eighth session;
## Requesting the secretariat, subject to availability of supplementary funding, to organize a workshop on methodological issues identified in paragraph 7 (a) above, before its twenty-ninth session, and to prepare a report on the workshop for consideration by the Subsidiary Body for Scientific and Technological Advice at that session;
## Advancing the development of methodological approaches, taking into account the outcome of the workshop referred to in paragraph 7 (b) above at its twentyninth session;
# //Requests// the Subsidiary Body for Scientific and Technological Advice to report to the Conference of the Parties, at its fourteenth session, on the outcomes of the work referred to in paragraph 7 (a)-(c) above, including any recommendations on possible methodological approaches;
# //Invites// relevant organizations and stakeholders, without prejudice to any future decision of the Conference of the Parties on reducing emissions from deforestation and forest degradation in developing countries, to support efforts in relation to paragraphs 1, 2, 3 and 5 above and to share outcomes of these efforts with the Subsidiary Body for Scientific and Technological Advice by providing corresponding information to the secretariat;
# //Requests// the secretariat to support, subject to the availability of supplementary funding, the activities of all Parties, in particular developing countries, in relation to paragraphs 3, 5, 7 and 9 above, by developing a Web platform where information submitted by Parties, relevant organizations and stakeholders will be made available;
# //Notes// the further consideration, under decision 1/CP.13, of policy approaches and positive incentives on issues relating to reducing emissions from deforestation and forest degradation in developing countries; and the role of conservation, sustainable management of forests and enhancement of forest carbon stocks in developing countries;
# //Notes further //that when addressing policy approaches and positive incentives on issues relating to reducing emissions from deforestation and forest degradation in developing countries, the efforts described in paragraph 3 above should be considered.
!! Annex
''Indicative guidance''
# Demonstration activities should be undertaken with the approval of the host Party.
# Estimates of reductions or increases of emissions should be results based, demonstrable, transparent and verifiable, and estimated consistently over time.
# The use of the methodologies described in paragraph 6 of this decision is encouraged as a basis for estimating and monitoring emissions.
# Emission reductions from national demonstration activities should be assessed on the basis of national emissions from deforestation and forest degradation.
# Subnational demonstration activities should be assessed within the boundary used for the demonstration, and assessed for associated displacement of emissions.
# Reductions in emissions or increases resulting from the demonstration activity should be based on historical emissions, taking into account national circumstances.
# Subnational^^^^ approaches, where applied, should constitute a step towards the development of national approaches, reference levels and estimates.
# Demonstration activities should be consistent with sustainable forest management, noting, inter alia, the relevant provisions of the United Nations Forum on Forests, the United Nations Convention to Combat Desertification and the Convention on Biological Diversity.
# Experiences in implementing activities should be reported and made available via the Web platform.^^^^
# Reporting on demonstration activities should include a description of the activities and their effectiveness, and may include other information.
# Independent expert review is encouraged.

//8^^th^^ plenary meeting 14-15 December 2007//

1/ At the time of this decision, the most recent reporting guidelines for national communications from Parties not included in Annex I to the Convention are found in decision 17/CP.8.

2/ To be developed by the secretariat as referred to in paragraph 10 of this decision.
{{iframe{''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/a25r2625.htm}}}
<html><iframe
title="2625 (XXV). Declaration on Principles of International Law concerning Friendly Relations and Co-operation among States in accordance with the Charter of the United Nations"
src="http://www.un-documents.net/a25r2625.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a43r196.htm}}}
<html><iframe
title="43/196. United Nations conference on environment and development"
src="http://www.un-documents.net/a43r196.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a44r226.htm}}}
<html><iframe
title="44/228. UN Conference on Environment and Development"
src="http://www.un-documents.net/a44r226.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a45r211.htm}}}
<html><iframe
title="45/211. United Nations Conference on Environment and Development"
src="http://www.un-documents.net/a45r211.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a46r168.htm}}}
<html><iframe
title="46/168. United Nations Conference on Environment and Development"
src="http://www.un-documents.net/a46r168.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a47r190.htm}}}
<html><iframe
title="47/190. Report of the United Nations Conference on Environment and Development"
src="http://www.un-documents.net/a47r190.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a47r191.htm}}}
<html><iframe
title="47/191. Institutional arrangements to follow up the United Nations Conference on Environment and Development"
src="http://www.un-documents.net/a47r191.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
''General Assembly Resolution A/RES/57/254''. //20 December 2002//

''United Nations Decade of Education for Sustainable Development''

//The General Assembly//,

//Recalling// [[chapter 36 of Agenda 21|http://www.un-documents.net/a21-36.htm]], on promoting education, public awareness and training, adopted at the United Nations Conference on Environment and Development, held in Rio de Janeiro, Brazil, in 1992,

//Reaffirming// the internationally agreed development goal of achieving universal primary education, in particular that, by 2015, children everywhere, boys and girls alike, will be able to complete a full course of primary schooling,

//Appreciating// the contribution made by the Commission on Sustainable Development to the issue of education for sustainable development since the United Nations Conference on Environment and Development,

//Welcoming// the fact that the [[Plan of Implementation of the World Summit on Sustainable Development|http://www.un-documents.net/jburgpln.htm]] ("Johannesburg Plan of Implementation") confirmed the importance of education for sustainable development and recommended that the General Assembly consider adopting a decade of education for sustainable development starting in 2005,

//Emphasizing// that education is an indispensable element for achieving sustainable development,

1. //Decides// to proclaim the ten-year period beginning on 1 January 2005 the United Nations Decade of Education for Sustainable Development;

2. //Designates// the United Nations Educational, Scientific and Cultural Organization as the lead agency for the promotion of the Decade, and requests it to develop a draft international implementation scheme, clarifying its relationship with the existing educational processes, in particular the [[Dakar Framework for Action|http://www.un-documents.net/dakarfa.htm]] adopted at the World Education Forum/3 and the [[United Nations Literacy Decade|http://www.unesco.org/education/litdecade/]], in consultation with the United Nations and other relevant international organizations, Governments, non-governmental organizations and other stakeholders, with a view to providing recommendations for Governments on how to promote and improve the integration of education for sustainable development in their respective educational strategies and action plans at the appropriate level;

3. //Invites// Governments to consider the inclusion of measures to implement the Decade in their respective educational strategies and action plans by 2005, taking into account the international implementation scheme to be prepared by the United Nations Educational, Scientific and Cultural Organization;

4. //Decides// to include in the provisional agenda of its fifty-eighth session an item entitled "United Nations Decade of Education for Sustainable Development".
''General Assembly Resolution A/RES/58/219''. //23 December 2003//
''United Nations Decade of Education for Sustainable Development''

//The General Assembly//,

//Recalling// [[chapter 36 of Agenda 21|http://www.un-documents.net/a21-36,htm]], on promoting education, public awareness and training, adopted at the United Nations Conference on Environment and Development, held in Rio de Janeiro, Brazil, from 3 to 14 June 1992,

//Recalling also// the relevant provisions of the [[Plan of Implementation of the World Summit on Sustainable Development|http://www.un-documents.net/jburgpln.htm]] ("Johannesburg Plan of Implementation") on education, in particular its provision 124 (//d//) on the United Nations Decade of Education for Sustainable Development,

//Recalling further// its [[resolution 57/254|57/254. United Nations Decade of Education for Sustainable Development]] of 20 December 2002,

//Reaffirming// the internationally agreed development goal of achieving universal primary education, in particular that by 2015 children everywhere, boys and girls alike, will be able to complete a full course of primary schooling,

//Taking note// of the report of the Director-General of the United Nations Educational, Scientific and Cultural Organization on the United Nations Decade of Education for Sustainable Development,

//Welcoming// the fact that the Commission on Sustainable Development, at its eleventh session, identified education as one of the cross-cutting issues of its multi-year programme of work,

//Emphasizing// that education is an indispensable element for achieving sustainable development,

1. //Takes note// of the Framework for a Draft International Implementation Scheme prepared by the United Nations Educational, Scientific and Cultural Organization, requests the United Nations Educational, Scientific and Cultural Organization, as the designated lead agency, to promote the United Nations Decade of Education for Sustainable Development, in coordination with other relevant United Nations agencies and programmes, and further requests it to finalize the international implementation scheme, while clarifying its relationship with the existing educational processes, in particular the [[Dakar Framework for Action|http://www.un-documents.net/dakarfa.htm]] adopted at the World Education Forum and the [[United Nations Literacy Decade|http://www.unesco.org/education/litdecade/]], in consultation with Governments, the United Nations and other relevant international organizations, non-governmental organizations and other stakeholders;

2. //Reaffirms// that education for sustainable development is critical for promoting sustainable development, and in this regard encourages Governments to consider the inclusion of measures to implement the United Nations Decade of Education for Sustainable Development in their respective educational strategies and national development plans by 2005;

3. //Invites// Governments to promote public awareness of and wider participation in the United Nations Decade of Education for Sustainable Development, including through cooperation and initiatives engaging civil society and other relevant stakeholders;

4. //Decides// to include in the provisional agenda of its fifty-ninth session, under the item entitled "Environment and sustainable development", a sub-item entitled "United Nations Decade of Education for Sustainable Development".
''General Assembly Resolution 59/237''.  //22 December 2004//
''United Nations Decade of Education for Sustainable Development''

//The General Assembly//,

//Recalling// [[chapter 36 of Agenda 21|http://www.un-documents.net/a21-36.htm]], on promoting education, public awareness and training, adopted at the United Nations Conference on Environment and Development, held in Rio de Janeiro, Brazil, from 3 to 14 June 1992,

//Recalling also// the work programme on education, public awareness and training initiated by the Commission on Sustainable Development at its fourth session in 1996 and elaborated upon at its sixth session in 1998,

//Recalling further// the relevant provisions of the [[Plan of Implementation of the World Summit on Sustainable Development|http://www.un-documents.net/jburgpln.htm]] ("Johannesburg Plan of Implementation") on education to promote sustainable development, in particular its provision 124,

//Recalling// its resolutions [[57/254|57/254. United Nations Decade of Education for Sustainable Development]] of 20 December 2002 and [[58/219|58/219. United Nations Decade of Education for Sustainable Development]] of 23 December 2003,

//Underlining// in this regard the fact that the United Nations Decade of Education for Sustainable Development shall begin on 1 January 2005,

//Welcoming// the fact that the Commission on Sustainable Development, at its eleventh session, identified education as one of the cross-cutting issues of its multiyear programme of work,

//Reaffirming// the internationally agreed development goal of achieving universal primary education, in particular that by 2015 children everywhere, boys and girls alike, will be able to complete a full course of primary schooling and that boys and girls will have equal access to all levels of education,

//Taking note// of the oral report presented on 18 October 2004 at the fifty-ninth session of the General Assembly by the Assistant Director-General for Education of the United Nations Educational, Scientific and Cultural Organization regarding its preparations for the Decade,

//Taking note also// of the report of the Secretary-General on the implementation of the International Strategy for Disaster Reduction,in particular the reference to the issue "Learning to live with risk", as regards the need to focus on education and awareness, linked with the Decade, to be considered at the World Conference on Disaster Reduction, to be held in Kobe, Japan, from 18 to 22 January 2005,

//Emphasizing// that education is an indispensable element for achieving sustainable development,

1. //Reaffirms// that education for sustainable development is critical for promoting sustainable development;

2. //Requests// the United Nations Educational, Scientific and Cultural Organization, as the designated lead agency, to promote the United Nations Decade of Education for Sustainable Development, in coordination with other relevant United Nations organizations and programmes, while taking into account the special needs of developing countries;

3. //Requests// the Secretary-General to call upon the United Nations Educational, Scientific and Cultural Organization to finalize the draft international implementation scheme for the Decade as soon as possible, preferably by the beginning of the Decade, in consultation with Governments, the United Nations and relevant international organizations, non-governmental organizations and other stakeholders, while clarifying its relationship with the existing educational processes, in particular the [[Dakar Framework for Action|http://www.un-documents.net/dakarfa.htm]] adopted at the World Education Forum and the [[United Nations Literacy Decade|http://www.unesco.org/education/litdecade/]];

4. //Also requests// the Secretary-General to call upon the Director-General of the United Nations Educational, Scientific and Cultural Organization to submit the draft international implementation scheme to the governing bodies of the United Nations Educational, Scientific and Cultural Organization for their final consideration and adoption;

5. //Encourages// Governments to consider the inclusion, especially upon completion and adoption of the international implementation scheme, of measures to implement the Decade in their respective educational systems and strategies and, where appropriate, national development plans;

6. //Invites// Governments to promote public awareness of and wider participation in the Decade, inter alia, through cooperation with and initiatives engaging civil society and other relevant stakeholders, especially at the beginning of the Decade;

7. //Requests// the Secretary-General to invite the Director-General of the United Nations Educational, Scientific and Cultural Organization to prepare a midterm review of the implementation of the Decade, for submission to the General Assembly at its sixty-fifth session under the sub-item entitled "United Nations Decade of Education for Sustainable Development".
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''. +++[www.un.org/dpi/ngosection/conference/60/]
http://www.un.org/dpi/ngosection/conference/60/

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]], 
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]]
The Intergovernmental Panel on Climate Change (IPCC) was jointly established in 1988, by the World Meteorological Organization (WMO) and the United Nations Environment Programme (UNEP). Its present terms of reference are to:
* Assess available information on the science, the impacts, and the economics of -- and the options for mitigating and/ or adapting to -- climate change.
* Provide, on request, scientific/technical/socio-economic advice to the Conference of the Parties (COP) to the United Nations Framework Convention on Climate Change (UNFCCC).
Since its establishment, the IPCC has produced a series of Assessment Reports (1990, 1995, and 2001), Special Reports, Technical Papers, and methodologies, such as the Guidelines for National Greenhouse Gas Inventories, which have become standard works of reference, widely used by policymakers, scientists, and other experts and students.

This Synthesis Report completes the four-volume Third Assessment Report (TAR). It addresses specifically the issues of concern to the policymaker, in the context of Article 2 of the UNFCCC -- issues such as the extent to which human activities have influenced and will in the future influence the global climate, the impacts of a changed climate on ecological and socio-economic systems, and existing and projected technical and policy capacity to address anthropogenic climate change. It explores briefly the linked nature of a number of multilateral environmental conventions. It draws on the work of hundreds of experts from all regions of the world who have in the past and at present participated in the IPCC process. As is customary in the IPCC, success in producing this report has depended first and foremost on the dedication, enthusiasm, and cooperation of these experts in many different but related disciplines.

We take this opportunity to express our heart-felt gratitude to the authors and reviewers of all the IPCC reports and Technical Papers, particularly the TAR. We thank likewise the IPCC Bureau; Dr. Sundararaman, Secretary of IPCC, and his Secretariat staff; and those staffing the Technical Support Units of the three Working Groups. We acknowledge with gratitude the governments and organizations that contribute to the IPCC Trust Fund, and provide support to the experts and in other ways. The IPCC has been especially successful in engaging in its work a large number of experts from the developing countries and countries with their economies in transition; the Trust Fund enables extending financial assistance for their travel to IPCC meetings.

We thank the Chairman of the IPCC, Dr. Robert T. Watson, for guiding the effort in completing the TAR.

''G.O.P. Obasi''
Secretary General
World Meteorological Organization

''K. Töpfer''
Executive Director
United Nations Environment Programme
and ~Director-General
United Nations Office in Nairobi
* [[Question 1|IPCC AR3: Question 1]]
** What can scientific, technical, and socio-economic analyses contribute to the determination of what constitutes dangerous anthropogenic interference with the climate system as referred to in Article 2 of the Framework Convention on Climate Change?
* [[Question 2|IPCC AR3: Question 2]]
** What is the evidence for, causes of, and consequences of changes in the Earth's climate since the pre-industrial era?
* [[Question 3|IPCC AR3: Question 3]]
** What is known about the regional and global climatic, environmental, and socio-economic consequences in the next 25, 50, and 100 years associated with a range of greenhouse gas emissions arising from scenarios used in the TAR (projections which involve no climate policy intervention)?
* [[Question 4|IPCC AR3: Question 4]]
** What is known about the influence of the increasing atmospheric concentrations of greenhouse gases and aerosols, and the projected human-induced change in climate regionally and globally ... [[more|Question 4|IPCC AR3: Question 4]]
* [[Question 5|IPCC AR3: Question 5]]
** What is known about the inertia and time scales associated with the changes in the climate system, ecological systems, and socio-economic sectors and their interactions?
* [[Question 6|IPCC AR3: Question 6]]
**  How does the extent and timing of the introduction of a range of emissions reduction actions determine and affect the rate, magnitude, and impacts of climate change, and affect the global and regional economy, taking into account the historical and current emissions?
** What is known from sensitivity studies about regional and global climatic, environmental, and socio-economic consequences of stabilizing the atmospheric concentrations of greenhouse gases (in carbon dioxide equivalents), at a range of levels from today's to double that level or more, taking into account to the extent possible the effects of aerosols?
* [[Question 7|IPCC AR3: Question 7]]
** What is known about the potential for, and costs and benefits of, and time frame for reducing greenhouse gas emissions?
* [[Question 8|IPCC AR3: Question 8]] 
** What is known about the interactions between projected human-induced changes in climate and other environmental issues (e.g., urban air pollution, regional acid deposition, loss of biological diversity, stratospheric ozone depletion, and desertification and land degradation)?
** What is known about environmental, social, and economic costs and benefits and implications of these interactions for integrating climate change response strategies in an equitable manner into broad sustainable development strategies at the local, regional, and global scales?
* [[Question 9|IPCC AR3: Question 9]]
** What are the most robust findings and key uncertainties regarding attribution of climate change and regarding model projections?


This Synthesis Report with its Summary for Policymakers is the fourth and final part of the Third Assessment Report (TAR) of the Intergovernmental Panel on Climate Change (IPCC). It draws together and integrates for the benefit of policy makers, and others, and in response to questions identified by governments and subsequently agreed by the IPCC, information that has been approved and/ or accepted by the IPCC.1 It is intended to assist governments, individually and collectively, in formulating appropriate adaptation and mitigation responses to the threat of human-induced climate change.

The Synthesis Report is based mainly on the contributions of the three IPCC Working Groups to the TAR, but also uses information from earlier IPCC assessments, Special Reports, and Technical Papers. It follows the question and answer format, and is in two parts: a Summary for Policymakers and a longer document that contains expanded responses to each of the questions posed by governments. The Summary for Policymakers references the appropriate paragraphs in the longer report, while the longer report contains references to the source of the material on which the response is based -- that is, the Summaries for Policymakers and chapters from previously approved and accepted Working Group contributions to the TAR and earlier IPCC reports and Technical Papers (see the accompanying box for cross-referencing nomenclature).

The procedures for approving the Summary for Policymakers and adopting the balance of the Synthesis Report were formalized by the IPCC at its Fifteenth Session (San Jose, Costa Rica, 15-18 April 1999). A draft of the Synthesis Report and its Summary for Policymakers was prepared by a team of lead authors, who were involved in preparation of the TAR, and submitted for simultaneous government/ technical and expert review. The revised drafts were circulated to governments in a final distribution before approval/ adoption at the IPCC's Eighteenth Session (Wembley, United Kingdom, 24- 29 September 2001).

The Synthesis Report consists of nine policy-relevant questions:
* [[Question 1]] addresses the ultimate objective of the United Nations Framework Convention on Climate Change, which is found in Article 2 (i. e., what constitutes "dangerous anthropogenic interference in the climate system") and provides a framework for placing the issue of climate change in the context of sustainable development.
* [[Question 2]] assesses and, where possible, attributes observed changes in climate and ecological systems since the pre-industrial era.
* [[Questions 3|Question 3]] and [[4|Question 4]] assess the impact of future emissions of greenhouse gases and sulfate aerosol precursors (without specific policies to mitigate climate change) on climate, including changes in variability and extreme events and in ecological and socio-economic systems.
* [[Question 5]] discusses inertia in the climate, ecological systems, and socio-economic sectors, and implications for mitigation and adaptation.
* [[Question 6]] assesses the near-and long-term implications of stabilizing atmospheric concentrations of greenhouse gases on climate, ecological systems, and socio-economic sectors.
* [[Question 7]] assesses the technologies, policies, and costs of near-and long-term actions to mitigate greenhouse gas emissions.
* [[Question 8]] identifies the interactions between climate change, other environmental issues, and development.
* [[Question 9]] summarizes the most robust findings and key uncertainties.
!!! [[Thanks|AR3-Synthesis: Thanks]]
!!! [[Publication of the Synthesis Report|AR3-Synthesis: Publication]]
R. T. Watson
IPCC Chair

N. Sundararaman
IPCC Secretary
The Synthesis Report with its Summary for Policymakers was originally published in a single volume together with the Summaries for Policymakers and Technical Summaries of the Working Group contributions to the TAR, as well as a comprehensive, consolidated glossary. The Synthesis Report is also available in Arabic, Chinese, French, Russian, and Spanish -- the other official languages of the IPCC. The Synthesis Report is also available as a stand-alone publication, as are discrete brochures consisting of the Summaries for Policymakers, Technical Summaries, and glossaries of the respective Working Group reports. The full English text of all four volumes comprising the Third Assessment Report has been published in both print and digital form, with searchable versions available on cd-rom and at http://www.ipcc.ch.
We take this opportunity to thank:
* The Core Writing Team who drafted this report and, with their meticulous and painstaking attention to detail, finalized it
* Other members of the IPCC Bureau who acted as Review Editors
* The members of the Working Groups' teams of Coordinating Lead Authors and Lead Authors who helped with the initial drafting
* The Heads and the staff of the Technical Support Units of the three Working Groups, particularly David Dokken, Maria Noguer, and Paul van der Linden for logistical and editorial support
* The Head and the staff of the GRID office at Arendal, Norway -- Philippe Rekacewicz in particular -- for working with the author team on the graphics contained in the Synthesis Report
* The staff of the IPCC Secretariat for innumerable administrative tasks performed.
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''
{{iframe{''Note'': This is a "framed" page from the [[UNFCCC]] 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://unfccc.int/kyoto_protocol/items/4577.php}}}
<html><iframe
	src = "http://unfccc.int/kyoto_protocol/items/4577.php"
	title = "Ad Hoc Working Group on Further Commitments for Annex I Parties under the Kyoto Protocol (AWG-KP)"
	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://unfccc.int/kyoto_protocol/items/4577.php}}}
<html><iframe
	src = "http://unfccc.int/kyoto_protocol/items/4577.php"
	title = "Ad Hoc Working Group on Further Commitments for Annex I Parties under the Kyoto Protocol (AWG-KP)"
	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://unfccc.int/kyoto_protocol/items/4577.php}}}
<html><iframe
	src = "http://unfccc.int/kyoto_protocol/items/4577.php"
	title = "Ad Hoc Working Group on Further Commitments for Annex I Parties under the Kyoto Protocol"
	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 [[UNFCCC]] 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://unfccc.int/meetings/items/4381.php}}}
<html><iframe
	src = "http://unfccc.int/meetings/items/4381.php"
	title = "Ad Hoc Working Group on Long-term Cooperative Action under the Convention (AWG-LCA)"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
<<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'>>
<<newTiddler text:{{store.getTiddlerText("picasa template","")}} title:"New Album" tag:"picasa album" >><<renameButton 'new album'>>
<<newTiddler text:{{store.getTiddlerText("youtube template","")}} title:"New YouTube" tag:youtube>><<renameButton 'new youtube'>>
<<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]] -
===

===

{{center{
[img[http://www.climatechange3.net/cc3-logo-100x100.png][Climate Change 3.0]]
[img[http://www.climatechange3.net/udhr60-beacon-100x100.png][udhr@60+]]
[img[http://www.climatechange3.net/peace-cubes-logo-black-100x100.png][Peace Cubes]]
[img[http://www.climatechange3.net/onewebday/cc-logo-green-100x26.jpg][Creative Commons]]
[img[http://www.climatechange3.net/onewebday/open-source-logo-100x87.png][Open Source]]
[img[http://www.climatechange3.net/onewebday/owd-logo-100x100.jpg][OneWebDay - September 22]]
[img[http://www.climatechange3.net/onewebday/owdnyc-100x23.jpg][OneWebDay NYC]]
[img[http://www.climatechange3.net/onewebday/sfd09-logo-100x43.jpg][Software Freedom Day - September 19]]
[img[http://www.climatechange3.net/onewebday/peaceday-logo-100x81.jpg][International Day of Peace - September 21]]
[img[http://www.climatechange3.net/tiddlywiki-logo-100x51.jpg][TiddlyWiki]]
[img[http://www.climatechange3.net/wiserearth-logo-100x48.png][WiserEarth]]
[img[http://www.climatechange3.net/ning-logo-100x41.jpg][Ning]]
[img[http://www.climatechange3.net/congo-100x75.jpg][Conference Of NGOs]]
[img[http://www.climatechange3.net/firefox-logo-100x100.jpg][Firefox]]
| <<tiddler "Menu Widgets">>|
[img[http://www.climatechange3.net/tiddlywiki-logo-100x51.jpg][TiddlyWiki]]
<<version>>
[img[http://i.creativecommons.org/l/by-nc-sa/3.0/us/88x31.png][Creative Commons Attribution Non-Commercial Share-Alike Licence]]
}}}
[[Recent Tiddlers]]
[[Main Menu|MainMenu]]
[[Setup Menu]]
[[Default Tiddlers|DefaultTiddlers]]
[[Administrative Menu]]
[[Import Tiddlers]]
[[Plugin Macros]]
[[Templates & Style Sheets]]
<<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'>>
<<newTiddler text:{{store.getTiddlerText("youtube template","")}} title:"New YouTube" tag:youtube>><<renameButton 'new youtube tiddler'>>
<<newTiddler text:{{store.getTiddlerText("picasa template","")}} title:"New YouTube" tag:'picasa album'>><<renameButton  'new picasa album 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]] -
===

===

{{center{
[img[http://www.climatechange3.net/cc3-logo-100x100.png][Climate Change 3.0]]
[img[http://www.climatechange3.net/onewebday/sfd09-logo-100x43.jpg][Software Freedom Day]]
[img[http://www.climatechange3.net/onewebday/peaceday-logo-100x81.jpg][International Day of Peace]]
[img[http://www.climatechange3.net/onewebday/owd-logo-100x100.jpg][OneWebDay]]
[img[http://www.climatechange3.net/onewebday/owdnyc-100x23.jpg][OneWebDay NYC]]
[img[http://www.climatechange3.net/cc-logo-green-100x26.jpg][Creative Commons]]
[img[http://www.climatechange3.net/open-source-logo-100x87.png][Open Source]]
[img[http://www.climatechange3.net/tiddlywiki-logo-100x51.jpg][TiddlyWiki]]
[img[http://www.climatechange3.net/firefox-logo-100x100.jpg][Firefox]]
[img[http://www.climatechange3.net/ning-logo-100x41.jpg][Ning]]
[img[http://www.climatechange3.net/udhr60-beacon-100x100.png][udhr@60+]]
[img[http://www.climatechange3.net/congo-100x75.jpg][Conference Of NGOs]]
| <<tiddler "Menu Widgets">> |
[img[http://i.creativecommons.org/l/by-nc-sa/3.0/us/88x31.png][Creative Commons Attribution Non-Commercial Share-Alike Licence]]
TiddlyWiki <<version>>
}}}
[[Administrative Menu]] - attached to base of the [[Main Menu|MainMenu]]
<<tiddler "Administrative Menu">>
/***
|Name|AdvancedOptionsPlugin|
|Source|http://www.TiddlyTools.com/#AdvancedOptionsPlugin|
|Documentation|http://www.TiddlyTools.com/#AdvancedOptionsPlugin|
|Version|1.2.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.3|
|Type|plugin|
|Requires||
|Overrides||
|Options|##Configuration|
|Description|automatically add plugin-defined options to the [[AdvancedOptions]] shadow tiddler|
!!!!!Usage
<<<
At document startup, this plugin examines each tiddler tagged with <<tag systemConfig>> and looks for a tiddler slice named "Options" whose value refers to a tiddler section (or separate tiddler) that contains an 'advanced options control panel' for configuring that plugin's features and behavior.  For each plugin that contains an "Options" slice, a tabbed entry is automatically created in the [[AdvancedOptions]] shadow tiddler to display that plugin's control panel.

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

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

if (config.options.chkAdvancedOptions===undefined)
	config.options.chkAdvancedOptions=true;
if (config.options.chkAdvancedOptionsBackstage===undefined)
	config.options.chkAdvancedOptionsBackstage=true;
if (config.options.chkAdvancedOptionsFallback===undefined)
	config.options.chkAdvancedOptionsFallback=true;
if (config.options.txtAdvancedOptionsFallback===undefined)
	config.options.txtAdvancedOptionsFallback="Configuration";
if (config.optionsDesc) config.optionsDesc.chkAdvancedOptions=
	"automatically add plugin-defined options to [[AdvancedOptions]]";
//}}}
//{{{
var items=[];
var fmt="[[%0 ]] [[view options for %0]] [[%1]]\n";
var section=config.options.txtAdvancedOptionsFallback;
var plugins=store.getTaggedTiddlers("systemConfig");
for (var p=0; p<plugins.length; p++) {
	var tid=plugins[p].title;
	var settings=store.getTiddlerSlice(tid,"Options");
	if (!settings && config.options.chkAdvancedOptionsFallback && store.getTiddlerText(tid+"##"+section))
		settings="##"+section; // fallback handling for older plugins
	if (settings&&settings.length) {
		if (settings.substr(0,2)=="##") settings=tid+settings;
		items.push(fmt.format([tid,settings]));
	}
}
if (items.length) config.shadowTiddlers.PluginOptions=
	"!![[Plugin-defined options|PluginManager]]\n>@@text-align:left;<<tabs '' \n"+items.join(' ')+">>@@";
if (config.options.chkAdvancedOptions)
	config.shadowTiddlers.AdvancedOptions+="{{smallform{{{wrap{<<tiddler PluginOptions>>}}}}}}";
//}}}
//{{{
// // add "options" backstage task
if (config.tasks && config.options.chkAdvancedOptionsBackstage) { // for TW2.2b3 or above
	config.tasks.options = {
		text: "options",
		tooltip: "manage plugin-defined option settings",
		content: "{{smallform{{{groupbox{{{wrap{<<tiddler PluginOptions>>}}}}}}\n{{groupbox small {<<options>>}}}}}}"
	}
	config.backstageTasks.splice(config.backstageTasks.indexOf("plugins")+1,0,"options");
}
//}}}
//{{{
config.macros.option.AOPsave_handler=config.macros.option.handler;
config.macros.option.handler=function(place,macroName,params,wikifier,paramString,tiddler) {
	var parts=params[0].split('=');
	if (parts.length==1) return this.AOPsave_handler.apply(this,arguments);
	var id=parts[0]; var val=(id.substr(0,3)=='txt')?parts[1]:(parts[1]=='true');
	config.options[id]=val;
}
//}}}
{{iframe{''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/agenda21.htm}}}
<html><iframe
title="Agenda 21"
src="http://www.un-documents.net/agenda21.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
<<forEachTiddler 
 where 
 'tiddler.tags.containsAll(["agenda 21"])'
>>
{{iframe{''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/a21-01.htm}}}
<html><iframe
title="Agenda 21, Chapter  1. Preamble"
src="http://www.un-documents.net/a21-01.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-02.htm}}}
<html><iframe
title="Agenda 21, Chapter  2. International Cooperation to Accelerate Sustainable Development in Developing Countries and Related Domestic Policies"
src="http://www.un-documents.net/a21-02.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-03.htm}}}
<html><iframe
title="Agenda 21, Chapter  3. Combating Poverty"
src="http://www.un-documents.net/a21-03.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-04.htm}}}
<html><iframe
title="Agenda 21, Chapter  4. Changing Consumption Patterns"
src="http://www.un-documents.net/a21-04.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-05.htm}}}
<html><iframe
title="Agenda 21, Chapter  5. Demographic Dynamics and Sustainability"
src="http://www.un-documents.net/a21-05.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-06.htm}}}
<html><iframe
title="Agenda 21, Chapter  6. Protecting and Promoting Human Health"
src="http://www.un-documents.net/a21-06.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-07.htm}}}
<html><iframe
title="Agenda 21, Chapter  7. Promoting Sustainable Human Settlement Development"
src="http://www.un-documents.net/a21-07.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-08.htm}}}
<html><iframe
title="Agenda 21, Chapter  8. Integrating Environment and Development in Decision-Making"
src="http://www.un-documents.net/a21-08.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-09.htm}}}
<html><iframe
title="Agenda 21, Chapter  9. Protection of the Atmosphere"
src="http://www.un-documents.net/a21-09.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-10.htm}}}
<html><iframe
title="Agenda 21, Chapter 10. Integrated Approach to the Planning and Management of Land Resources"
src="http://www.un-documents.net/a21-10.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-11.htm}}}
<html><iframe
title="Agenda 21, Chapter 11. Combating Deforestation"
src="http://www.un-documents.net/a21-11.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-12.htm}}}
<html><iframe
title="Agenda 21, Chapter 12. Managing Fragile Ecosystems: Combating Desertification and Drought"
src="http://www.un-documents.net/a21-12.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-13.htm}}}
<html><iframe
title="Agenda 21, Chapter 13. Managing Fragile Ecosystems:  Sustainable Mountain Development"
src="http://www.un-documents.net/a21-13.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-14.htm}}}
<html><iframe
title="Agenda 21, Chapter 14. Promoting Sustainable Agriculture and Rural Development"
src="http://www.un-documents.net/a21-14.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-15.htm}}}
<html><iframe
title="Agenda 21, Chapter 15. Conservation of Biological Diversity"
src="http://www.un-documents.net/a21-15.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-16.htm}}}
<html><iframe
title="Agenda 21, Chapter 16. Environmentally Sound Management of Biotechnology"
src="http://www.un-documents.net/a21-16.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-17.htm}}}
<html><iframe
title="Agenda 21, Chapter 17. Protection of the Oceans, All Kinds of Seas, including Enclosed and Semi-enclosed Seas, and Coastal Areas and the Protection, Rational Use and Development of their Living Resources"
src="http://www.un-documents.net/a21-17.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-18.htm}}}
<html><iframe
title="Agenda 21, Chapter 18. Protection of the Quality and Supply of Freshwater Resources: Application of Integrated Approaches to the Development, Management and Use of Water Resources"
src="http://www.un-documents.net/a21-18.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-19.htm}}}
<html><iframe
title="Agenda 21, Chapter 19. Environmentally Sound Management of Toxic Chemicals, Including Prevention of Illegal International Traffic in Toxic and Dangerous Products"
src="http://www.un-documents.net/a21-19.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-20.htm}}}
<html><iframe
title="Agenda 21, Chapter 20. Environmentally Sound Management of Hazardous Wastes, Including Prevention of Illegal International Traffic in Hazardous Wastes"
src="http://www.un-documents.net/a21-20.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-21.htm}}}
<html><iframe
title="Agenda 21, Chapter 21. Environmentally Sound Management of Solid Wastes and Sewage-related Issues"
src="http://www.un-documents.net/a21-21.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-22.htm}}}
<html><iframe
title="Agenda 21, Chapter 22. Safe and Environmentally Sound Management of Radioactive Wastes"
src="http://www.un-documents.net/a21-22.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-23.htm}}}
<html><iframe
title="Agenda 21, Chapter 23. Preamble: Strengthening The Role Of Major Groups"
src="http://www.un-documents.net/a21-23.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-24.htm}}}
<html><iframe
title="Agenda 21, Chapter 24. Global Action for Women Towards Sustainable and Equitable Development"
src="http://www.un-documents.net/a21-24.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-25.htm}}}
<html><iframe
title="Agenda 21, Chapter 25. Children and Youth in Sustainable Development"
src="http://www.un-documents.net/a21-25.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-26.htm}}}
<html><iframe
title="Agenda 21, Chapter 26. Recognizing and Strengthening the Role of Indigenous People and their Communities"
src="http://www.un-documents.net/a21-26.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-27.htm}}}
<html><iframe
title="Agenda 21, Chapter 27. Strengthening the Role of Non-governmental Organizations: Partners for Sustainable Development"
src="http://www.un-documents.net/a21-27.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-28.htm}}}
<html><iframe
title="Agenda 21, Chapter 28. Local Authorities' Initiatives in Support of Agenda 21"
src="http://www.un-documents.net/a21-28.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-29.htm}}}
<html><iframe
title="Agenda 21, Chapter 29. Strengthening the Role of Workers and their Trade Unions"
src="http://www.un-documents.net/a21-29.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-30.htm}}}
<html><iframe
title="Agenda 21, Chapter 30. Strengthening the Role of Business and Industry"
src="http://www.un-documents.net/a21-30.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-31.htm}}}
<html><iframe
title="Agenda 21, Chapter 31. Scientific and Technological Community"
src="http://www.un-documents.net/a21-31.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-32.htm}}}
<html><iframe
title="Agenda 21, Chapter 32. Strengthening the Role of Farmers"
src="http://www.un-documents.net/a21-32.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-33.htm}}}
<html><iframe
title="Agenda 21, Chapter 33. Financial Resources and Mechanisms"
src="http://www.un-documents.net/a21-33.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-34.htm}}}
<html><iframe
title="Agenda 21, Chapter 34. Transfer of Environmentally Sound Technology, Cooperation and Capacity-building"
src="http://www.un-documents.net/a21-34.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-35.htm}}}
<html><iframe
title="Agenda 21, Chapter 35. Science for Sustainable Development"
src="http://www.un-documents.net/a21-35.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-36.htm}}}
<html><iframe
title="Agenda 21, Chapter 36. Promoting Education, Public Awareness and Training"
src="http://www.un-documents.net/a21-36.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-37.htm}}}
<html><iframe
title="Agenda 21, Chapter 37. National Mechanisms and International Cooperation for Capacity-building in Developing Countries"
src="http://www.un-documents.net/a21-37.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-38.htm}}}
<html><iframe
title="Agenda 21, Chapter 38. International Institutional Arrangements"
src="http://www.un-documents.net/a21-38.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-39.htm}}}
<html><iframe
title="Agenda 21, Chapter 39. International Legal Instruments and Mechanisms"
src="http://www.un-documents.net/a21-39.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/a21-40.htm}}}
<html><iframe
title="Agenda 21, Chapter 40. Information for Decision-making"
src="http://www.un-documents.net/a21-40.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
[[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>
<iframe width=600 height=400 frameborder=0 src="http://www.feedblitz.com/pubroll.asp?bb377e3567fa6ceef680a3466195a54a727679/html">
</iframe>
</html>


The //Avoiding Dangerous Climate Change// book, commissioned by ''Defra'' - the British Department of Environment, Food and Rural Affairs - consolidates the scientific findings of a major conference held in Exeter, and gives an account of the most recent developments on critical thresholds and key vulnerabilities of the climate system, impacts on human and natural systems, emission pathways and technological options of meeting different stabilisation levels of greenhouse gases in the atmosphere.
!!!The book focuses on three crucial questions:
# ''For different levels of climate change what are the key impacts, for different regions and sectors, and for the world as a whole?''
# ''What would such levels of climate change imply in terms of greenhouse gas stabilisation concentrations and emission pathways required to achieve such levels?''
#'' What technological options are there for achieving stabilisation of greenhouse gases at different stabilisation concentrations in the atmosphere, taking into account costs and uncertainties?''
!!! Read more:
* [[Avoiding Dangerous Climate Change - executive summary|http://www.defra.gov.uk/environment/climatechange/research/dangerous-cc/pdf/avoid-dangercc-execsumm.pdf]], pdf  (168 KB)
* [[Avoiding Dangerous Climate Change - full text of book|http://www.defra.gov.uk/environment/climatechange/research/dangerous-cc/pdf/avoid-dangercc.pdf]], pdf  (16.3 MB - note very large file size)
* [[News release|http://www.defra.gov.uk/news/2006/060130c.htm]] - 30 January 2006
* The book can be ordered online  via the [[Cambridge University Press website|http://www.cambridge.org/0521864712]].

* More on [[Climate Change @ Defra|http://www.defra.gov.uk/environment/climatechange]]

<<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>>
{{iframe{''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/beijingd.htm}}}
<html><iframe
title="Beijing Declaration"
src="http://www.un-documents.net/beijingd.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
/***
|Name|''BetterTimelineMacro''|h
|Author|[[Saq Imtiaz]]|
|Version|0.5 beta|
|Description|A replacement for the core timeline macro that offers more features |
|Source|http://tw.lewcid.org/#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.
One of the elements of [[Climate Change 3.0]] is promoting the use of ''bookmarks'' in  //Portable Document Format// - pdf - files. Almost all climate change publications are made available as //Portable Document Format// - pdf - files. For many who download these files, printing them poses a substantial burden: not only are some of the documents lengthy, they are frequently lavishly illustrated, requiring substantial - and costly- use of color ink if the documents are printed.

However, with vry small  amount of effort - namely the addition of bookmarks

contain  as many of the documents are not only lengthy, Many of the documents are lengthy
/***
|Name|BreadcrumbsPlugin|
|Author|Eric Shulman|
|Source|http://www.TiddlyTools.com/#BreadcrumbsPlugin|
|Documentation|http://www.TiddlyTools.com/#BreadcrumbsPluginInfo|
|Version|2.1.0|
|License|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.displayTiddler,TiddlyWiki.prototype.deleteTiddler|
|Options|##Configuration|
|Description|list/jump to tiddlers viewed during this session plus "back" button/macro|
This plugin provides a list of links to all tiddlers opened during the session, creating a "trail of breadcrumbs" from one tiddler to the next, allowing you to quickly navigate to any previously viewed tiddler, or select 'home' to reset the display to the initial set of tiddlers that were open at the start of the session (i.e., when the document was loaded into the browser).
!!!!!Documentation
<<<
see [[BreadcrumbsPluginInfo]]
<<<
!!!!!Configuration
<<<
<<option chkCreateDefaultBreadcrumbs>> automatically create breadcrumbs display (if needed)
<<option chkShowBreadcrumbs>> show/hide breadcrumbs display
<<option chkReorderBreadcrumbs>> re-order breadcrumbs when visiting a previously viewed tiddler
<<option chkBreadcrumbsHideHomeLink>> omit 'Home' link from breadcrumbs display
<<option chkBreadcrumbsSave>> prompt to save breadcrumbs when 'Home' link is pressed
<<option chkShowStartupBreadcrumbs>> show breadcrumbs for 'startup' tiddlers
<<option chkBreadcrumbsReverse>> show breadcrumbs in reverse order (most recent first)
<<option chkBreadcrumbsLimit>> limit breadcrumbs display to {{twochar{<<option txtBreadcrumbsLimit>>}}} items
<<option chkBreadcrumbsLimitOpenTiddlers>> limit open tiddlers to {{twochar{<<option txtBreadcrumbsLimitOpenTiddlers>>}}} items

<<<
!!!!!Revisions
<<<
2009.03.22 [2.1.0] added 'save breadcrumbs to tiddler' feature
| Please see [[BreadcrumbsPluginInfo]] for previous revision details |
2006.02.01 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.BreadcrumbsPlugin= {major: 2, minor: 1, revision: 0, date: new Date("March 2, 2009")};

var co=config.options; // abbreviation

// show/hide display option (default is to SHOW breadcrumbs)
if (co.chkShowBreadcrumbs===undefined) co.chkShowBreadcrumbs=true;

// REORDER breadcrumbs when visiting previously viewed tiddler (default)
if (co.chkReorderBreadcrumbs===undefined) co.chkReorderBreadcrumbs=true;

// create default breadcrumbs display as needed (default is to CREATE)
if (co.chkCreateDefaultBreadcrumbs===undefined) co.chkCreateDefaultBreadcrumbs=true;

// show breadcrumbs for 'startup' tiddlers (default is FALSE = only show crumbs for tiddlers opened after startup)
if (co.chkShowStartupBreadcrumbs===undefined) co.chkShowStartupBreadcrumbs=false;

// show crumbs in reverse order (most recent first)
if (co.chkBreadcrumbsReverse===undefined) co.chkBreadcrumbsReverse=false;

// limit number of crumbs displayed
if (co.chkBreadcrumbsLimit===undefined) co.chkBreadcrumbsLimit=false;
if (co.txtBreadcrumbsLimit===undefined) co.txtBreadcrumbsLimit=5;

// limit number of open tiddlers
if (co.chkBreadcrumbsLimitOpenTiddlers===undefined) co.chkBreadcrumbsLimitOpenTiddlers=false;
if (co.txtBreadcrumbsLimitOpenTiddlers===undefined) co.txtBreadcrumbsLimitOpenTiddlers=3;

// omit home link from breadcrumbs display
if (co.chkBreadcrumbsHideHomeLink===undefined) co.chkBreadcrumbsHideHomeLink=false;

// prompt for 'save crumbs' when 'home' button is pressed
if (co.chkBreadcrumbsSave===undefined) co.chkBreadcrumbsSave=false;

config.macros.breadcrumbs =  {
	crumbs: [], // the list of current breadcrumbs
	askMsg: "Save current breadcrumbs before clearing?\nPress OK to save, or CANCEL to continue without saving.",
	saveMsg: 'Enter the name of a tiddler in which to save the current breadcrumbs',
	saveTitle: 'SavedBreadcrumbs',
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var area=createTiddlyElement(place,"span",null,"breadCrumbs",null);
		area.setAttribute("homeSep",params[0]?params[0]:this.homeSeparator); // custom home separator
		area.setAttribute("crumbSep",params[1]?params[1]:this.crumbSeparator); // custom crumb separator
		this.render(area);
	},
	add: function (title) {
		var thisCrumb = title;
		var ind = this.crumbs.indexOf(thisCrumb);
		if(ind === -1)
			this.crumbs.push(thisCrumb);
		else if (config.options.chkReorderBreadcrumbs)
			this.crumbs.push(this.crumbs.splice(ind,1)[0]); // reorder crumbs
		else
			this.crumbs=this.crumbs.slice(0,ind+1); // trim crumbs
		if (config.options.chkBreadcrumbsLimitOpenTiddlers)
			this.limitOpenTiddlers();
		this.refresh();
		return false;
	},
	getAreas: function() {
		var crumbAreas=[];
		// find all DIVs with classname=="breadCrumbs"
		// Note: use try/catch to avoid "Bad NPObject as private data" fatal error  caused when
		// some versions of embedded QuickTime player element is accessed by hasClass() function.
		var all=document.getElementsByTagName("*");
		for (var i=0; i<all.length; i++)
			try{ if (hasClass(all[i],"breadCrumbs")) crumbAreas.push(all[i]); } catch(e) {;}
		// find single DIV w/fixed ID (backward compatibility)
		var byID=document.getElementById("breadCrumbs")
		if (byID && !hasClass(byID,"breadCrumbs")) crumbAreas.push(byID);
		if (!crumbAreas.length && config.options.chkCreateDefaultBreadcrumbs) {
			// no existing crumbs display areas... create one...
			var defaultArea = createTiddlyElement(null,"span",null,"breadCrumbs",null);
		 	defaultArea.style.display= "none";
			var targetArea= document.getElementById("tiddlerDisplay");
		 	targetArea.parentNode.insertBefore(defaultArea,targetArea);
			crumbAreas.push(defaultArea);
		}
		return crumbAreas;
	},
	refresh: function() {
		var crumbAreas=this.getAreas();
		for (var i=0; i<crumbAreas.length; i++) {
			crumbAreas[i].style.display = config.options.chkShowBreadcrumbs?"block":"none";
			removeChildren(crumbAreas[i]);
			this.render(crumbAreas[i]);
		}
	},
	render: function(here) {
		var co=config.options; var out=""
		var homeSep=here.getAttribute("homeSep"); if (!homeSep) homeSep=this.homeSeparator;
		var crumbSep=here.getAttribute("crumbSep"); if (!crumbSep) crumbSep=this.crumbSeparator;
		if (!co.chkBreadcrumbsHideHomeLink) {
			createTiddlyButton(here,"Home",null,this.home,"tiddlyLink tiddlyLinkExisting");
			out+=homeSep;
		}
		for (c=0; c<this.crumbs.length; c++) // remove non-existing tiddlers from crumbs
			if (!store.tiddlerExists(this.crumbs[c]) && !store.isShadowTiddler(this.crumbs[c]))
				this.crumbs.splice(c,1);
		var count=this.crumbs.length;
		if (co.chkBreadcrumbsLimit && co.txtBreadcrumbsLimit<count) count=co.txtBreadcrumbsLimit;
		var list=[];
		for (c=this.crumbs.length-count; c<this.crumbs.length; c++) list.push('[['+this.crumbs[c]+']]');
		if (co.chkBreadcrumbsReverse) list.reverse();
		out+=list.join(crumbSep);
		wikify(out,here);
	},
	home: function() {
		var cmb=config.macros.breadcrumbs;
		if (config.options.chkBreadcrumbsSave && confirm(cmb.askMsg)) cmb.saveCrumbs();
		story.closeAllTiddlers(); restart();
		cmb.crumbs = []; var crumbAreas=cmb.getAreas();
		for (var i=0; i<crumbAreas.length; i++) crumbAreas[i].style.display = "none";
		return false;
	},
	saveCrumbs: function() {
		var tid=prompt(this.saveMsg,this.saveTitle); if (!tid||!tid.length) return; // cancelled by user
		var t=store.getTiddler(tid);
		if(t && !confirm(config.messages.overwriteWarning.format([tid]))) return;
		var who=config.options.txtUserName;
		var when=new Date();
		var text='[['+this.crumbs.join(']]\n[[')+']]';
		var tags=t?t.tags:[]; tags.pushUnique('story');
		var fields=t?t.fields:{};
		store.saveTiddler(tid,tid,text,who,when,tags,fields);
		story.displayTiddler(null,tid);
		story.refreshTiddler(tid,null,true);
		displayMessage(tid+' has been '+(t?'updated':'created'));
	},
	limitOpenTiddlers: function() {
		var limit=config.options.txtBreadcrumbsLimitOpenTiddlers; if (limit<1) limit=1;
		for (c=this.crumbs.length-1; c>=0; c--) {
			var tid=this.crumbs[c];
			var elem=document.getElementById(story.idPrefix+tid);
			if (elem) { // tiddler is displayed
				if (limit <=0) { // display limit has been reached
					if (elem.getAttribute("dirty")=="true") { // tiddler is being edited
						var msg="'"+tid+"' is currently being edited.\n\n";
						msg+="Press OK to save and close this tiddler\nor press Cancel to leave it opened";
						if (confirm(msg)) { story.saveTiddler(tid); story.closeTiddler(tid); }
					}
					else
						story.closeTiddler(this.crumbs[c]);
				}
				limit--;
			}
		}
	}
};
if (config.macros.breadcrumbs.homeSeparator==undefined) // note: not a cookie
	config.macros.breadcrumbs.homeSeparator=" | ";
if (config.macros.breadcrumbs.crumbSeparator==undefined)  // note: not a cookie
	config.macros.breadcrumbs.crumbSeparator=" > ";

config.commands.previousTiddler = {
	text: 'back',
	tooltip: 'view the previous tiddler',
	hideReadOnly: false,
	dateFormat: 'DDD, MMM DDth YYYY hh:0mm:0ss',
	handler: function(event,src,title) {
		var here=story.findContainingTiddler(src); if (!here) return;
		var crumbs=config.macros.breadcrumbs.crumbs;
		if (crumbs.length>1) {
			var crumb=crumbs[crumbs.length-2];
			story.displayTiddler(here,crumb);
		}
		else
			config.macros.breadcrumbs.home();
		return false;
	}
};

config.macros.previousTiddler= {
	label: 'back',
	prompt: 'view the previous tiddler',
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var label=params.shift(); if (!label) label=this.label;
		var prompt=params.shift(); if (!prompt) prompt=this.prompt;
		createTiddlyButton(place,label,prompt,function() {
			var crumbs=config.macros.breadcrumbs.crumbs;
			if (crumbs.length>1) {
				var crumb=crumbs[crumbs.length-2];
				story.displayTiddler(place,crumb);
			}
			else
				config.macros.breadcrumbs.home();
		});
	}
}

// hijack story.displayTiddler() so crumbs can be refreshed when a tiddler is displayed
if (Story.prototype.breadCrumbs_coreDisplayTiddler==undefined)
	Story.prototype.breadCrumbs_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)
{
	var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
	this.breadCrumbs_coreDisplayTiddler.apply(this,arguments);
	// if not displaying tiddler during document startup, then add it to the breadcrumbs
	// note: 'startingUp' flag is a global, set/reset by the core init() function
	if (!startingUp || config.options.chkShowStartupBreadcrumbs) config.macros.breadcrumbs.add(title);
}

// hijack store.removeTiddler() so crumbs can be refreshed when a tiddler is deleted
if (TiddlyWiki.prototype.breadCrumbs_coreRemoveTiddler==undefined)
	TiddlyWiki.prototype.breadCrumbs_coreRemoveTiddler=TiddlyWiki.prototype.removeTiddler;
TiddlyWiki.prototype.removeTiddler= function(title)
{
	this.breadCrumbs_coreRemoveTiddler.apply(this,arguments);
	config.macros.breadcrumbs.refresh();
}
//}}}
/***
|Name|BreadcrumbsPluginInfo|
|Author|Eric Shulman|
|Source|http://www.TiddlyTools.com/#BreadcrumbsPlugin|
|Documentation|http://www.TiddlyTools.com/#BreadcrumbsPluginInfo|
|Version|2.1.0|
|License|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.displayTiddler,TiddlyWiki.prototype.removeTiddler|
|Description|Documentation for BreadcrumbsPlugin|
This plugin provides a list of links to all tiddlers opened during the session, creating a "trail of breadcrumbs" from one tiddler to the next, allowing you to quickly navigate to any previously viewed tiddler, or select 'home' to reset the display to the initial set of tiddlers that were open at the start of the session (i.e., when the document was loaded into the browser).
!!!!!Usage
<<<
syntax:
{{{
<<breadcrumbs homeSeparator crumbSeparator>>
}}}
By default, the breadcrumbs are displayed as a continuous, //horizontal// word-wrapped line of text, using default character sequences for ''homeSeparator'' (" | ") and ''crumbSeparator'' (" > ").  The //optional// ''homeSeparator'' and ''crumbSeparator'' macro parameters allow you to specify alternative separators.  For example, to display the breadcrumbs //vertically// (in a stack, rather than a row), set the separator values to use {{{[[<br>]]}}}... and, to display a horizontal line as the home separator, use {{{[[<html><hr></html>]]}}}.
<<<
!!!!!Examples:
<<<
{{{
<<breadcrumbs>>
}}}
<<breadcrumbs>>
{{{
<<breadcrumbs [[<html><hr></html>]] [[<br>]]>>
}}}
<<breadcrumbs [[<html><hr></html>]] [[<br>]]>>
<<<
!!!!!Customization
<<<
Using CSS and a few of the plugin configuration options (see below), you can make the breadcrumbs display resemble browser tabs by adding the following to your [[StyleSheet]]:
{{{
.breadCrumbs { border-bottom:1px solid; }
.breadCrumbs a {
	border: 1px solid; padding: 0px 1em;
	-moz-border-radius-topleft:.5em; -moz-border-radius-topright:.5em;
	-webkit-border-top-left-radius:.5em; -webkit-border-top-right-radius:.5em;
}
}}}
and this in [[ConfigTweaks]] (tagged with systemConfig, of course):
{{{
config.options.chkShowStartupBreadcrumbs=true;
config.options.chkBreadcrumbsLimitOpenTiddlers=true;
config.options.txtBreadcrumbsLimitOpenTiddlers=1;
config.macros.breadcrumbs.homeSeparator=" ";
config.macros.breadcrumbs.crumbSeparator=" ";
}}}
<<<
!!!!!Configuration
<<<
__''display placement:''__
<<option chkCreateDefaultBreadcrumbs>> automatically create breadcrumbs display (if needed)
{{{<<option chkCreateDefaultBreadcrumbs>>}}}
>By default, the plugin automatically creates the "breadCrumbs" display element at the top of the story column, just above the tiddlerDisplay area.  To manually control the display and placement of the breadcrumbs display, you can define a DIV with class="breadCrumbs" in a custom [[PageTemplate]] or embed the {{{<<breadcrumbs>>}}} macro in specific tiddler content.
>
>For example, to add the breadcrumbs below the mainMenu, change this:
{{{
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
}}}
>to:
{{{
<div id='mainMenu'>
	<div refresh='content' tiddler='MainMenu'></div>
	<div id='breadCrumbs' class='breadCrumbs'></div>
</div>
}}}
>You can also block automatic creation of the breadcrumbs display by setting
{{{
config.options.chkCreateDefaultBreadcrumbs=false;
}}}
>in a [[CookieJar]]/[[ConfigTweaks]] plugin tiddler.

__''other settings:''__
<<option chkShowBreadcrumbs>> show/hide breadcrumbs display
{{{<<option chkShowBreadcrumbs>>}}}
>This checkbox toggles the visibility of the breadcrumbs display.  However, the display is not updated until the next crumb is added (or a previous crumb is clicked on).  For immediate effect, the [[ToggleBreadcrumbs]] script uses [[InlineJavascriptPlugin]] to synchronize the checkbox setting and the breadcrumbs display.
<<option chkReorderBreadcrumbs>> re-order breadcrumbs when visiting a previously viewed tiddler
{{{<<option chkReorderBreadcrumbs>>}}}
>When visiting a previously viewed tiddler, the title of the most-recently displayed tiddler is simply moved to the end of the list and individual breadcrumbs are not removed from the list unless the underlying tiddler is deleted.  When ''re-ordering'' is disabled, the breadcrumbs list is ''trimmed'' so that all crumbs following that tiddler are removed from the list.
<<option chkBreadcrumbsHideHomeLink>> omit 'Home' link from breadcrumbs display
{{{<<option chkBreadcrumbsHideHomeLink>>}}}
>Enabling this option suppresses the automatic display of the "Home" link (and home separator).  To manually add the home link elsewhere in your document, use the following HTML:
{{{
<html><a href="javascript:;" onclick="config.macros.breadcrumbs.home()">home</a></html>
}}}
<<option chkBreadcrumbsSave>> prompt to save breadcrumbs when 'Home' link is pressed
{{{<<option chkBreadcrumbsSave>>}}}
>Whenever you press the 'home' button, you can be prompted to save the current breadcrumbs in a tiddler as a space-separated list of tiddler links (default title="SavedBreadcrumbs").  
<<option chkShowStartupBreadcrumbs>> show breadcrumbs for 'startup' tiddlers
{{{<<option chkShowStartupBreadcrumbs>>}}}
>Breadcrumbs are usually only added for tiddlers that are opened after the document has been loaded, and not for tiddlers displayed during initial startup (e.g., [[DefaultTiddlers]]).  Enabling this option displays breadcrumbs for all viewed tiddlers, regardless of when they are opened.
<<option chkBreadcrumbsReverse>> show breadcrumbs in reverse order
{{{<<option chkBreadcrumbsReverse>>}}}
>As tiddlers are displayed, breadcrumbs are usually added to the //end// of the list.  Enabling this option displays breadcrumbs in reverse order, so that the most recently visited tiddlers are listed first.
<<option chkBreadcrumbsLimit>> limit breadcrumbs display to {{twochar{<<option txtBreadcrumbsLimit>>}}} items
{{{<<option chkBreadcrumbsLimit>>}}} and {{{<<option txtBreadcrumbsLimit>>}}}
>By default, breadcrumbs are displayed for all tiddlers that have been visited (unless the list is being 'trimmed' by disabling the chkReorderBreadcrumbs option above).  Enabling this option limits the display of the list to a maximum specified number of breadcrumbs.
<<option chkBreadcrumbsLimitOpenTiddlers>> limit open tiddlers to {{twochar{<<option txtBreadcrumbsLimitOpenTiddlers>>}}} items
{{{<<option chkBreadcrumbsLimitOpenTiddlers>>}}} and {{{<<option txtBreadcrumbsLimitOpenTiddlers>>}}}
>By default, tiddlers remain open (e.g., displayed in the story column) until you explicitly close them.  When this option is enabled, only the most recently opened tiddlers will remain open: ''any tiddlers in excess of the specified limit are automatically closed.''  //Note: for 'data safety', if a tiddler is being edited, you will be asked for permission to "save-and-close" that tiddler or leave it open (even if that would exceed the specified limit).//
<<<
!!!!!Revisions
<<<
2009.03.22 [2.1.0] added 'save breadcrumbs to tiddler' feature
2008.05.01 [2.0.0] added 'limit open tiddlers' feature (with safety check for tiddler in edit mode)
2008.04.06 [1.9.1] corrected 'limit' logic so that //last// N crumbs are shown instead of //first// N crumbs.  Also, added chkBreadcrumbsHideHomeLink
2008.04.04 [1.9.0] added chkBreadcrumbsReverse and chk/txtBreadcrumbsLimit
2008.03.29 [1.8.4] in displayTiddler(), get title from tiddler object (if needed).  Fixes errors caused when calling function passes a tiddler *object* instead of a tiddler *title*
2008.03.24 [1.8.3] include shadow tiddlers in breadcrumbs list.  Also changed settings so that "reordering" breadcrumbs is the default, instead of "trimming" the list
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.10.26 [1.8.2] documentation cleanup
2007.10.18 [1.8.1] in GetAreas(), use try/catch to avoid "Bad NPObject as private data" fatal error caused when embedded QuickTime player element is accessed by hasClass() function.
2007.10.02 [1.8.0] major documentation and code cleanup.  Moved config.breadCrumbs.* to config.macros.breadcrumbs.* to consolidate objects.  Also, fixed homeSeparator and crumbSeparator default handling.
2007.10.02 [1.7.0] added config.options.chkShowStartupBreadcrumbs option
2007.09.16 [1.6.1] in getAreas(), removed errant use of 'place' (was causing fatal error when creating default breadcrumbs display element).  Also, added chkCreateDefaultBreadcrumbs configuration setting to enable/disable automatic creation of a default breadcrumbs display.
2007.09.16 [1.6.0] re-wrote refresh() to enable multiple display instances, by finding elements with "breadCrumbs" classname.  Fallback to fixed ID (="breadCrumbs") is still used for backward-compatibility.  move rendering code from refresh() to separate render() function, and added definition for {{{<<breadCrumbs>>}}} macro to support embedding breadcrumbs displays in tiddler content.
2007.09.15 [1.5.9.1] updated documentation
2007.09.15 [1.5.9] defined homeSeparator (" | ") and crumbSeparator (" > ") as object properties so that they can be redefined as desired for different layouts (e.g., using 'newline' for the crumbSeparator will arrange crumbs in a column rather than a row.
2007.06.21 [1.5.8.1] in home(), return false to prevent IE from attempting to navigate away...
2007.05.26 [1.5.8] added support for {{{<<option chkReorderBreadcrumbs>>}}} to toggle trim vs. re-order behavior when visiting previously viewed tiddlers
2007.05.25 [1.5.7] added support for {{{<<option chkShowBreadcrumbs>>}}} to toggle //display// of breadcrumbs
2007.05.24 [1.5.6] in refresh(), remove non-existing tiddler titles from crumb list.  Also, hijack removeTiddler() so crumbs can be updated after tiddler is deleted.
2007.04.11 [1.5.5] added optional params to previousTiddler macro handler() to allow alternative label and tooltip text (instead of default "back")
2007.03.02 [1.5.4] in refresh(), for TW2.2, look for "storyDisplay" instead of "tiddlerDisplay" but keep fallback to "tiddlerDisplay" for TW2.1 or earlier
2007.02.24 [1.5.3] changed from hijack of onClickTiddlerLink to hijack of displayTiddler() so that ALL displayed tiddlers are recorded in the crumbs, including programmatically displayed tiddlers opened by macros, scripts, etc., (such as [[GotoPlugin]], among many others) in addition to those opened by clicks on links.
2007.02.24 [1.5.2.0] eliminated global space clutter by moving function and data declarations so they are contained inside config.breadCrumbs object.
2007.02.06 [1.5.1] added "previousTiddler" macro (for use in sidebar)
2007.02.05 [1.5.0] added "previousTiddler" toolbar command (aka, "back")
2006.08.04 [1.4.0.1] change spaces to tabs
2006.08.04 [1.4.0] modified from 1.4.0 distro: in refresh(), set {{{display:none/block}}} instead of {{{visibility:hidden/visible}}}.  In home(), check for valid crumbArea before setting style.
2006.08.02 [1.4.0] Fixed bug, the redefined onClickTiddlerLink_orig_breadCrumbs works incorrectly on IE
2006.07.20 [1.3.0] Runs compatibly with TW 2.1.0 (rev #403+)
2006.02.07 [1.2.0] change global array breadCrumbs to config.breadCrumbs by Eric's suggestion
2006.02.04 [1.1.0] JSLint checked
2006.02.01 [1.0.0] initial release
<<<
{{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://en.cop15.dk/}}}
<html><iframe
	src = "http://en.cop15.dk/"
	title = "COP 15, Copenhagen"
	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://en.cop15.dk/}}}
<html><iframe
	src = "http://en.cop15.dk/"
	title = "COP15 United Nations Climate Change Conference Copenhagen 2009"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
|sortable|k
|Country | Subscribers 1995| Subscribers 2000| Subscribers 2002| Subscribers 2007| per 100 2002| per 100 2007| cagr 1995-2000| cagr 2002-2007| Growth 2000-2007 %| users 2000%| users 2007%| broadband 2000%|h
|''Africa'' | 646.5| 15,392.6| 36,923.8| 274,088.0| 1.90| 28.44| 88.5| 49.3| 1,496.8| 28.44| 44.2| 89.60|
|Algeria | 4.7| 86.0| 450.2| 27,562.7| .28| 81.41| 78.9| 127.7| 29,075.0| 81.41| 4.7| 90.00|
|Angola | 2.0| 25.8| 140.0| 4,961.5| .19| 29.14| 66.9| 104.1| 15,336.8| 29.14| 28.5| 97.90|
|Benin | 1.0| 55.5| 218.8| 1,904.3| .77| 21.08| 121.1| 54.2| 2,737.7| 21.08| 51.8| 94.50|
|Botswana | .0| 222.2| 332.3| 1,151.8| 12.67| 61.21| .0| 28.2| 483.1| 61.21| 62.0| 89.40|
|Burkina Faso | .0| 25.2| 111.0| 1,611.0| .22| 10.90| .0| 70.7| 4,954.5| 10.90| 32.2| 91.50|
|Burundi | .6| 16.3| 52.0| 270.0| .25| 3.17| 96.0| 39.0| 1,268.0| 3.17| 44.9| 85.10|
|Cameroon | 2.8| 103.3| 701.5| 4,536.0| .70| 24.45| 105.8| 45.3| 3,492.9| 24.45| 52.1| 96.00|
|Cape Verde | .0| 19.7| 42.9| 148.0| 4.38| 27.90| .0| 28.1| 637.0| 27.90| 26.5| 60.30|
|Central African Rep. | .0| 5.0| 12.6| 130.0| .13| 2.99| 157.4| 59.5| 2,300.0| 2.99| 34.4| 90.20|
|Chad | .0| 5.5| 34.2| 918.4| .07| 8.52| .0| 93.1| 12,171.4| 8.52| 34.9| 97.30|
|Comoros | .0| .0| .0| 40.0| .00| 4.77| .0| .0| .0| 4.77| .0| 65.90|
|Congo | .0| 70.0| 221.8| 1,287.6| 2.04| 34.17| .0| 42.2| 1,675.0| 34.17| 76.1| 97.20|
|Congo (Dem. Rep.) | 8.5| 15.0| 560.0| 6,592.0| .03| 10.52| 12.0| 63.7| 35,066.7| 10.52| 60.5| 99.90|
|Cote d'Ivoire | .0| 473.0| 1,027.1| 7,050.0| 2.83| 36.60| .0| 47.0| 1,293.3| 36.60| 64.2| 94.00|
|Djibouti | .0| .2| 15.0| 44.1| .03| 5.55| .0| 43.2| 18,500.0| 5.55| 2.3| 80.30|
|Egypt | 7.4| 1,359.9| 4,494.7| 30,065.2| 2.02| 39.82| 183.9| 46.2| 1,971.3| 39.82| 19.9| 72.80|
|Equatorial Guinea | .0| 5.0| 32.0| 220.0| 1.11| 43.35| .0| 47.0| 3,905.4| 43.35| 45.0| 90.60|
|Eritrea | .0| .0| .0| 84.3| .00| 1.74| .0| .0| .0| 1.74| .0| 69.30|
|Ethiopia | .0| 17.8| 50.4| 1,208.5| .03| 1.45| .0| 88.8| 4,833.3| 1.45| 7.1| 57.90|
|Gabon | 4.0| 120.0| 279.3| 1,169.0| 9.43| 87.86| 97.4| 33.2| 931.7| 87.86| 75.5| 97.80|
|Gambia | 1.4| 5.6| 100.0| 800.4| .43| 46.84| 31.2| 51.6| 10,893.0| 46.84| 14.4| 91.30|
|Ghana | 6.2| 130.0| 386.8| 7,604.1| .65| 32.39| 83.8| 81.4| 4,983.1| 32.39| 38.0| 95.30|
|Guinea | 1.0| 42.1| 90.8| 2,000.0| .50| 21.34| 113.5| 85.6| 4,268.0| 21.34| 63.4| 97.60|
|Guinea-Bissau | .0| .0| .0| 296.2| .00| 17.48| .0| .0| .0| 17.48| .0| 98.50|
|Kenya | 2.3| 127.4| 1,187.1| 11,349.4| .42| 30.23| 123.6| 57.1| 7,197.6| 30.23| 30.4| 97.70|
|Lesotho | .0| 21.6| 138.0| 456.0| 1.21| 22.71| .0| 27.0| 1,876.9| 22.71| 49.3| 87.10|
|Liberia | .0| 1.5| 2.0| 563.0| .05| 15.01| .0| 209.0| 30,020.0| 15.01| 18.3| 99.60|
|Libya | .0| 40.0| 70.0| 4,500.0| .75| 73.05| .0| 129.9| 9,740.0| 73.05| 6.2| 70.10|
|Madagascar | 1.3| 63.1| 163.0| 2,217.6| .39| 11.27| 117.4| 68.6| 2,889.7| 11.27| 53.4| 94.30|
|Malawi | .4| 49.0| 86.0| 1,050.9| .43| 7.55| 164.0| 65.0| 1,755.8| 7.55| 51.3| 85.70|
|Mali | .0| 10.4| 46.0| 2,530.9| .09| 20.51| .0| 122.9| 22,788.9| 20.51| 21.0| 96.90|
|Mauritania | .0| 15.3| 247.2| 1,300.0| .58| 41.62| .0| 39.4| 7,175.9| 41.62| 44.6| 97.00|
|Mauritius | 11.7| 180.0| 348.1| 928.6| 15.18| 73.60| 72.6| 21.7| 484.8| 73.60| 39.1| 72.00|
|Mayotte | .0| .0| 20.3| 48.1| .00| 28.80| .0| 53.9| .0| 28.80| .0| .00|
|Morocco | 29.5| 2,342.0| 6,198.7| 20,029.3| 8.01| 64.15| 139.8| 26.4| 800.9| 64.15| 62.2| 89.30|
|Mozambique | .0| 51.1| 254.8| 3,300.0| .29| 15.42| .0| 66.9| 5,317.2| 15.42| 37.3| 97.20|
|Namibia | 3.5| 82.0| 150.0| 800.3| 4.33| 38.58| 87.9| 39.8| 891.0| 38.58| 42.7| 85.30|
|Niger | .0| 2.1| 57.5| 900.0| .02| 6.33| .0| 73.3| 31,650.0| 6.33| 9.3| 93.10|
|Nigeria | 13.0| 30.0| 1,569.0| 40,395.6| .03| 27.28| 18.2| 91.5| 90,933.3| 27.28| 5.1| 96.20|
|Rwanda | .0| 39.0| 82.4| 635.1| .49| 6.53| .0| 50.5| 1,332.7| 6.53| 68.9| 96.50|
|S. Tom  & Principe | 2.0| 30.1| 2.0| 30.1| 19.09| 19.09| 72.3| 72.3| 100.0| 19.09| 79.7| 79.70|
|Senegal | .1| 250.3| 553.4| 3,630.8| 2.42| 29.33| 359.6| 45.7| 1,212.0| 29.33| 54.9| 93.10|
|Seychelles | .0| 26.0| 44.7| 77.3| 33.63| 89.23| 249.2| 11.6| 265.3| 89.23| 55.7| 77.30|
|Sierra Leone | .0| 11.9| 67.0| 776.0| .26| 13.23| .0| 63.2| 5,088.5| 13.23| 38.6| .00|
|Somalia | .0| 80.0| 100.0| 600.0| 1.14| 6.90| .0| 43.1| 605.3| 6.90| 76.2| 85.70|
|South Africa | 535.0| 8,339.0| 13,702.0| 42,300.0| 18.28| 87.08| 73.2| 25.3| 476.4| 87.08| 62.7| 90.10|
|Sudan | .0| 23.0| 190.8| 8,218.1| .07| 21.31| .0| 112.3| 30,442.9| 21.31| 5.6| 96.00|
|Swaziland | .0| 33.0| 68.0| 380.0| 3.23| 33.29| .0| 41.1| 1,030.7| 33.29| 50.9| 85.00|
|Tanzania | 3.5| 110.5| 606.9| 8,322.9| .32| 20.57| 99.5| 68.8| 6,428.1| 20.57| 38.9| 98.10|
|Togo | .0| 50.0| 170.0| 1,190.4| .93| 18.08| .0| 47.6| 1,944.1| 18.08| 53.9| 92.30|
|Tunisia | 3.2| 119.2| 574.3| 7,842.6| 1.25| 75.94| 106.4| 68.7| 6,075.2| 75.94| 11.1| 86.00|
|Uganda | 1.7| 126.9| 393.3| 4,195.3| .52| 13.58| 135.6| 60.5| 2,611.5| 13.58| 67.3| 96.30|
|Zambia | 1.5| 98.9| 139.1| 2,639.0| .92| 22.14| 129.7| 80.1| 2,406.5| 22.14| 54.3| 96.60|
|Zimbabwe | .0| 266.4| 338.8| 1,225.7| 2.12| 9.18| .0| 29.3| 433.0| 9.18| 51.7| 78.10|
|sortable|k
|Country | 1997| 1998| 1999| 2000| 2001| 2002| 2003| 2004| 2005| 2006|h
|Algeria | .1| .1| .2| .3| .3| 1.4| 4.5| 15.1| 41.5| 63.0|
|Angola | .1| .1| .2| .2| .6| 1.0| 2.4| 5.3| 10.3| 14.3|
|Benin | .1| .1| .1| .9| 1.9| 3.2| 3.4| 5.3| 10.0| .0|
|Botswana | .0| 1.0| 5.7| 13.5| 19.8| 25.9| 29.5| 31.9| 46.6| 55.7|
|Burkina Faso | .0| .0| .0| .2| .7| .9| 1.9| 3.0| 4.8| 7.5|
|Burundi | .0| .0| .0| .2| .5| .7| .9| 1.4| 2.0| .0|
|Cameroon | .0| .0| .0| .7| 2.7| 4.4| 6.6| 9.4| 13.8| .0|
|Cape Verde | .0| .2| 1.9| 4.5| 7.1| 9.5| 11.6| 14.1| 17.2| 21.0|
|Central African Republic | .0| .0| .1| .1| .3| .3| 1.0| 1.5| 2.5| .0|
|Chad | .0| .0| .0| .1| .3| .4| .8| 1.4| 2.1| 4.7|
|Comoros | .0| .0| .0| .0| .0| .0| .3| 1.2| 2.0| .0|
|Congo | .0| .1| .2| 2.4| 4.8| 6.7| 9.4| 10.1| 12.3| .0|
|Democratic Republic of the Congo | .0| .0| .0| .0| .3| 1.1| 2.3| 3.6| 4.8| .0|
|Cote d'Ivoire | .3| .6| 1.8| 3.2| 4.5| 6.2| 7.7| 9.9| 12.9| 22.0|
|Djibouti | .0| .0| .0| .0| .5| 2.3| 3.4| 5.1| 6.4| .0|
|Egypt | .1| .2| .8| 2.1| 4.3| 6.7| 8.4| 10.9| 19.1| 23.9|
|Equatorial Guinea | .1| .1| .1| 1.1| 3.2| 6.3| 7.6| 12.2| 19.3| .0|
|Ethiopia | .0| .0| .0| .0| .0| .1| .1| .2| .5| 1.1|
|Gabon | .8| .8| .7| 9.8| 11.9| 21.5| 22.4| 36.2| 47.1| 54.4|
|Gambia | .4| .4| .4| .5| 4.3| 7.5| 10.9| 12.0| 16.3| 26.0|
|Ghana | .1| .2| .4| .7| 1.2| 1.9| 3.7| 7.9| 13.0| 23.1|
|Guinea | .0| .3| .3| .6| .7| 1.2| 1.4| 2.0| 2.4| .0|
|Guinea-Bissau | .0| .0| .0| .0| .0| .0| .1| 3.2| 7.1| .0|
|Kenya | .0| .0| .1| .4| 1.9| 3.8| 5.0| 7.8| 13.5| 18.5|
|Lesotho | .2| .6| .7| 1.2| 3.2| 7.7| 7.0| 10.9| 13.9| .0|
|Liberia | .0| .0| .0| .0| .1| .0| 1.4| 2.7| 4.9| .0|
|Libyan Arab Jamahiriya | .2| .4| .6| .7| .9| 1.3| 2.3| 4.2| 5.0| 65.8|
|Madagascar | .0| .1| .2| .4| .9| 1.0| 1.6| 1.8| 2.7| 5.5|
|Malawi | .1| .1| .2| .5| .5| .8| 1.3| 1.8| 3.3| .0|
|Mali | .0| .0| .1| .1| .4| .5| 2.3| 3.6| 7.7| .0|
|Mauritania | .0| .0| .0| .6| 4.2| 9.2| 12.8| 17.5| 24.3| 33.6|
|Mauritius | 3.7| 5.2| 8.7| 15.1| 22.7| 28.8| 37.9| 44.4| 52.8| 61.5|
|Morocco | .3| .4| 1.3| 8.3| 16.6| 21.3| 25.0| 31.2| 40.9| 52.1|
|Mozambique | .0| .0| .1| .3| .9| 1.4| 2.4| 3.7| 7.6| 11.6|
|Namibia | .8| 1.1| 1.7| 4.6| 5.8| 8.0| 11.6| 14.2| 24.4| .0|
|Niger | .0| .0| .0| .0| .0| .5| .7| 1.4| 2.3| .0|
|Nigeria | .0| .0| .0| .0| .3| 1.3| 2.5| 7.2| 14.1| 24.1|
|Reunion | 4.0| 7.4| 15.7| 39.5| 57.6| 61.1| 69.0| 75.5| .0| .0|
|Rwanda | .0| .1| .2| .5| .8| 1.0| 1.6| 1.6| 3.2| .0|
|Sao Tome and Principe | .0| .0| .0| .0| .0| 1.4| 3.2| 5.1| 7.6| .0|
|Senegal | .1| .3| 1.0| 2.6| 3.1| 5.5| 7.5| 10.8| 14.8| 25.0|
|Seychelles | 3.0| 6.8| 21.3| 33.6| 47.2| 57.0| 62.2| 68.0| 72.9| 86.5|
|Sierra Leone | .0| .0| .0| .3| .6| 1.4| 2.2| .0| .0| .0|
|Somalia | .0| .0| .0| 1.1| 1.2| 1.3| 2.6| 6.3| 6.1| .0|
|South Africa | 4.2| 7.5| 11.5| 18.3| 23.4| 29.4| 35.9| 44.1| 71.6| .0|
|Sudan | .0| .0| .0| .1| .3| .6| 1.6| 3.0| 5.2| 12.7|
|Swaziland | .0| .5| 1.4| 3.3| 5.4| 6.6| 8.1| 13.4| 19.4| 24.3|
|United Republic of Tanzania | .1| .1| .2| .3| .8| 1.7| 5.3| 5.2| 8.8| 16.0|
|Togo | .1| .2| .4| 1.1| 2.0| 3.5| 4.9| 6.6| 8.5| 11.2|
|Tunisia | .1| .4| .6| 1.3| 4.0| 5.9| 19.4| 37.4| 56.3| 71.9|
|Uganda | .0| .1| .2| .5| 1.1| 1.5| 2.9| 4.2| 4.6| 6.7|
|Zambia | .0| .1| .3| .9| 1.1| 1.3| 2.1| 4.0| 8.1| .0|
|Zimbabwe | .1| .2| 1.6| 2.3| 2.7| 2.9| 3.1| 3.6| 5.6| 6.4|
@@font-size:85%;''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ch-10.htm@@
<html><iframe
title="Chapter 10: The Economic and Social Council"
src="http://www.un-documents.net/ch-10.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
@@font-size:85%;''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ch-11.htm@@
<html><iframe
title="Chapter 11: Declaration Regarding Non-Self-Governing Territories"
src="http://www.un-documents.net/ch-11.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
@@font-size:85%;''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ch-12.htm@@
<html><iframe
title="Chapter 12: International Trusteeship System"
src="http://www.un-documents.net/ch-12.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
@@font-size:85%;''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ch-13.htm@@
<html><iframe
title="Chapter 13: The Trusteeship Council"
src="http://www.un-documents.net/ch-13.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
@@font-size:85%;''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ch-14.htm@@
<html><iframe
title="Chapter 14: The International Court of Justice"
src="http://www.un-documents.net/ch-14.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
@@font-size:85%;''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ch-15.htm@@
<html><iframe
title="Chapter 15: The Secretariat"
src="http://www.un-documents.net/ch-15.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
@@font-size:85%;''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ch-16.htm@@
<html><iframe
title="Chapter 16: Miscellaneous Provisions"
src="http://www.un-documents.net/ch-16.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
@@font-size:85%;''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ch-17.htm@@
<html><iframe
title="Chapter 17: Transitional Security Arrangements"
src="http://www.un-documents.net/ch-17.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
@@font-size:85%;''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ch-18.htm@@
<html><iframe
title="Chapter 18: Amendments"
src="http://www.un-documents.net/ch-18.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
@@font-size:85%;''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ch-19.htm@@
<html><iframe
title="Chapter 19: Ratification and Signature"
src="http://www.un-documents.net/ch-19.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
@@font-size:85%;''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ch-01.htm@@
<html><iframe
title="Chapter 1: Purposes and Principles"
src="http://www.un-documents.net/ch-01.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
@@font-size:85%;''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ch-02.htm@@
<html><iframe
title="Chapter 2: Membership"
src="http://www.un-documents.net/ch-02.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
@@font-size:85%;''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ch-03.htm@@
<html><iframe
title="Chapter 3: Organs"
src="http://www.un-documents.net/ch-03.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
@@font-size:85%;''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ch-04.htm@@
<html><iframe
title="Chapter 4: The General Assembly"
src="http://www.un-documents.net/ch-04.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
@@font-size:85%;''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ch-05.htm@@
<html><iframe
title="Chapter 5: The Security Council"
src="http://www.un-documents.net/ch-05.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
@@font-size:85%;''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ch-06.htm@@
<html><iframe
title="Chapter 6: Pacific Settlement of Disputes"
src="http://www.un-documents.net/ch-06.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
@@font-size:85%;''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ch-07.htm@@
<html><iframe
title="Chapter 7: Action with Respect to Threats to the Peace, Breaches of the Peace, and Acts of Aggression"
src="http://www.un-documents.net/ch-07.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
@@font-size:85%;''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ch-08.htm@@
<html><iframe
title="Chapter 8: Regional Arrangements"
src="http://www.un-documents.net/ch-08.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
@@font-size:85%;''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ch-09.htm@@
<html><iframe
title="Chapter 9: International Economic and Social Co-operation"
src="http://www.un-documents.net/ch-09.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
Retired from Southampton College of Long Island University. For thirty-five years a Professor of Sociology; for the last five years, Dean of the College. Began career with the Peace Corps in East Pakistan, 1961-63. Community activities include Chair of the East Hampton Town Zoning Board of Appeals, Chair of the Retreat (a domestic violence agency), Chair of Alternatives Counseling Services, member of Springs School Board, and member of East Hampton Library Board. Presently, a NGO representative of Peace Action International at the UN. Charles Hitchcock earned his A.B. in Political Science from Colgate University, his M.S. from New York University and his Ph.D. in Sociology from Union Graduate School.
{{iframe{''Note'': This is a "framed" page from the ''Classroom 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.classroom20.com/}}}
<html><iframe
	src = "http://www.classroom20.com/"
	title = "Classroom 2.0"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
/***
|Name|ClickifyPlugin|
|Source|http://www.TiddlyTools.com/#ClickifyPlugin|
|Documentation|http://www.TiddlyTools.com/#ClickifyPlugin|
|Version|1.0.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|re-compute parameters when a 'command link' macro is clicked|
!!!!!Usage
<<<
Normally, when you use a //computed parameter// in a macro, it's value is determined when the macro is rendered.  The {{{<<clickify>>}}} macro can be used to force the macro parameters of an 'on-click' command link (such as created by the {{{<<newTiddler>>}}} macro) to be automatically re-computed when the command link is clicked, rather than when it is initially displayed.  This allows use of computed values that depend upon data that may change between the time the macro is rendered and when it's action is actually triggered by a click.

To apply this extended processing to any macro that creates a command link, simply insert the 'clickify' keyword in front of the usual macro name, like this:
{{{
<<clickify macroName param param param ...>>
}}}
<<<
!!!!!Example
<<<
When {{{<<newTiddler>>}}} is clicked, prompt for a title and set default text to current timestamp:
{{{
<<clickify newTiddler title:{{prompt('enter a title','NewTiddler')}} text:{{new Date()}}>>
}}}
><<clickify newTiddler title:{{prompt('enter a title','NewTiddler')}} text:{{new Date()}}>>
<<<
!!!!!Revisions
<<<
2009.02.08 [1.0.1] make sure command link has been rendered before trying to modify it
2009.01.25 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.ClickifyPlugin={major: 1, minor: 0, revision: 1, date: new Date(2009,2,8)};
config.macros.clickify={
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var cmd='<<'+paramString+'>>';
		var e=createTiddlyElement(place,'span');
		wikify(cmd.replace(/alert\(|prompt\(|confirm\(/g,'isNaN('),e);
		var b=e.getElementsByTagName('a')[0]; if (!b) return;
		b.setAttribute('cmd',cmd);
		b.onclick=function(ev) {
			var cmd=this.getAttribute('cmd');
			var e=createTiddlyElement(this.parentNode,'span');
			e.style.display='none';
			wikify(cmd,e);
			e.getElementsByTagName('a')[0].onclick();
			this.parentNode.removeChild(e);
		}
	}
}
//}}}
<<<
"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]]//
<<<
!! 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 2007: IPCC Fourth Assessment Report]]<br>[[www.climate-change-two.net/ar4/spm/|http://www.climate-change-two.net/ar4/spm/]]
** [[Climate Change Impacts, Adaptation and Vulnerability]]<br>[[www.climate-change-two.net/ar4-wg2-spm|http://www.climate-change-two.net/ar4-wg2-spm/]]
** [[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/]]
** [[Community Gardens & Climate Change]]<br>[[www.climate-change-two.net/garden/|http://www.climate-change-two.net/garden/]]
** [[Economics of Climate Change: The Stern Review]]<br>[[www.climate-change-two.net/stern-review/|http://www.climate-change-two.net/stern-review/]]
** [[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/]]
** [[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/]]
** ~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]]
!! 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
[<img[http://www.climatechange3.net/cc3-logo-100x100.png]] "//No problem can be solved from the same level of consciousness that created it.//"
//Albert Einstein// (1879 - 1955) Physicist & Nobel Laureate 

''Climate Change 3.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 3.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 - at 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]]//
<<<
!! See also:
* [[Climate Change 3.0 - Elements]]
<<<
"''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."
>> //From [[Our Common Future, From One Earth to One World|http://www.un-documents.net/ocf-ov.htm]]//
<<<
[[Climate Change 3.0]] 
The adoption of holistic approaches, combined with the role of information & communication technologies (ICT) in enabling holistic perspectives, has played a key role in the conception and development of [[Climate Change 3.0]]. 

ICT has played a central role in almost all aspects of understanding and action relating to climte change: observing, analyzing, modeling, understanding and responding to climate change: the publication and dissemination of climate change information; organizing local, national and international responses to climate change; monitoring and managing energy use - e.g. smart buildings, intelligent transportation systems, industrial ecology, ... - and the design, development and management of low-carbon energy technologies.

Despite this vital role, very little attention has been given either to the role of information technology - either in the reports of the [[IPCC|Intergovernmental Panel on Climate Change]] or in other climate change-related sites, and there appear to be no other initiatives that have adopted a holistic approach to the potential contribution of information technology in addressing the challenge of climate change, or to an analysis and approach that seeks to optimize the overall ''climate change information ecosystem''.

In its initial phase, Climate Change 3.0 has focused on this information ecosystem, and on the development of methodologies designed to optimize the organization, presentation and dissemination of the available information on climate change, and on strategies for mitigation and adaptation. Some key approaches:

''Climate Change Information Ecosystem''

''~TiddlyWiki'': The brilliant TiddlyWiki open source software has been adopted as the principal platform on which Climate Change 3.0 framework based on TiddlyWiki,
''Beyond PDF'': Almost all official publications on climate change are published, often exclusively, as pdf files - a format that is print / paper-oriented, and not optimized for a digital environment.
** The pdf files rarely contain bookmarks - that can be added with very little effort through Adobe Acrobat Professional
rolw of information technology in organizing the available information in a manner that is optimized 



A number of  elements have been developed under the auspices of [[Climate Change 3.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 3.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 of the ''Climate Change 3.0 family'' that have been established and/or are under development are the following:
!! Web sites
> <<tiddler "Climate Change 3.0 family of web sites">>
*** ~DataPerfect Manual
*** Information Habitat 2.0
!! "Normal" - HTML - web sites
!! Email Groups
* [[Climate Change 2.0 Google Group|Subscribe to the Climate Change 2.0 Google Group]]
* [[Networking Sub-Committee, Planning Committee|Subscribe to the Networking Sub-Committee Google Group]]
* [[NGO Committee on Education|Subscribe to the NGO Committee on Education Google Group]]
* [[Information Ecology Yahoo! Group|Subscribe to the Information Ecology Yahoo! Group]]
* [[The Peace Caucus Yahoo! Group|Subscribe to the the Peace Caucus Yahoo! Group]]
* [[TiddlyWiki Google Group|Subscribe to the TiddlyWiki Google Group]]
** [[TiddlyWiki Developer Google Group|Subscribe to the TiddlyWikiDev Google Group]]
!! 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
{{iframe{''Note'': This is a "framed" page from the [[WiserEarth]] 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.wiserearth.org/group/climatechange2}}}
<html><iframe
	src = "http://www.wiserearth.org/group/climatechange2"
	title = "Climate Change 3 Group @ WiserEarth"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
Among the many powerful online tools being used by Climate Change 3 is the email delivery of  over forty RSS feeds within a broad theme of Climate Change 3. through  Feedblitz.  While RSS Feeds - available from countless modern web sites are a wonderful free tool, many people do not use RSS readers, and look to their email inbox for new information.  If you subscribe, you just get one message a day from each feed - generally delivered in the early hours of the morning - and receive no mail if there are no new items on the feed.  Click on the link below to see the list of available climate change-related news feeds

+++[Subscribe to Climate Change 3.0 News Feeds]
<<tiddler 'Subscribe to Climate Change 3.0 News Feeds'>>

===
* [[Climate Change 3.0]]<br>[[www.climatechange3.net/|http://www.climatechange3.net/]]
**[[Climate Change 3.0 on WiserEarth]]<br>[[www.wiserearth.org/group/climatechange2|http://www.wiserearth.org/group/climatechange2]]
** [[Climate Change Impacts, Adaptation and Vulnerability]]<br>[[www.climatechange3.net/ar4-wg2-spm|http://www.climatechange3.net/ar4-wg2-spm]]
** [[Rescuing a Planet Under Stress and a Civilization in Trouble: Plan B 2.1 (beta)]]<br>[[www.climatechange3.net/plan-b/|http://www.climatechange3.net/plan-b/]]
** [[Economics of Climate Change: The Stern Review]]<br>[[www.climatechange3.net/stern-review/|http://www.climatechange3.net/stern-review/]]
** [[Universal Declaration of Human Rights: 60th Anniversary]]<br>[[www.climatechange3.net/udhr60/|http://www.climatechange3.net/udhr60/]]
** [[The Wealth of Networks: How Social Production Transforms Markets and Freedom]]<br>[[www.climatechange3.net/wealth-of-networks/|http://www.climatechange3.net/wealth-of-networks/]]
** [[La Perla Garden: A creative commons learning environment for community biodiversity]]<br>[[www.climatechange3.net/garden/|http://www.climatechange3.net/garden/]]
** [[Information Ecology and Climate Change Action]]<br>[[www.climatechange3.net/information-ecology/|http://www.climatechange3.net/information-ecology/]]
* [[NGO Framework for Climate Change Action]]<br>[[www.ngo-framework.net/|http://www.ngo-framework.net/]]
* [[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]]
* [[NGO Committee on Education]]<br>[[www.congo-education.net/|http://www.congo-education.net/]]
** [[Education, Youth & Technology for Sustainable Development]]<br>[[www.congo-education.net/workshop/|http://www.congo-education.net/workshop/]]
!! Culture of Peace
* [[Peace Caucus: The Wild Cards in Climate Change]]<br>[[www.peacecaucus.net|htt[://www.peacecaucus.net]]
* [[Seasons of Peace Cooperation Circles]]<br>[[www.seasons-of-peace.net/|http://www.seasons-of-peace.net/]]
* [[Gandhi-King Season for Nonviolence]]<br>[[www.gandhi-king-season.net/|http://www.gandhi-king-season.net/]]
* [[The Peace Cubes]]<br>[[www.peace-cubes.net/|http://www.peace-cubes.net/]]
* [[Digital Bridges to Peace]]<br>[[www.digital-bridges.net|http://www.digital-bridges.ne]]
!!! ~TiddlyWikiPerfect sites
* [[TiddlyWikiPerfect: An emerging hybrid information species]]
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.  The ~Sub-Committee has established a web site at http://www.climatecaucus.net/

!! 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
[[Charles Hitchcock]], //UN representative//,  Peace Action International
<<<
!! ~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
[[Renate Bloem]], //President//, [[Conference Of NGOs]]
<<<
<html><center><img src="http://www.climate-change-summer.net/60dpingo-logo-400x51.jpg" alt="Climate Change - logo of the 60th Annual DPI/NGO Conference"></center></html>
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 mitigation^^1 +++
> 1. Adaptation implies making lifestyle adjustments. Mitigation implies alleviating the problem.
===
^^ 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.
The massive and profoundly complex set of challenges involved in addressing and reversing ominous climate change trends call for the availability of numerous tools
The concepts of [[information ecosystems|Information ecosystems]] and [[information ecology|Information ecology]] have been gaining rapidly increased use over the last two decades

Climate Change information ecosystem
/***
| 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;
	}

});

//}}}

/***
|Name|CollapseTiddlersPlugin|
|Source|http://gensoft.revhost.net/Collapse.html|
|Version|2008.10.05|
|Author|Bradley Meck (modified by ELS)|
|License|unknown|
|~CoreVersion|2.1|
|Type|plugin|
|Requires|CollapsedTemplate|
|Overrides||
|Description|show/hide content of a tiddler while leaving tiddler title visible|

|ELS 10/5/2008: collapseAll() and expandAll(): added "return false" to button handlers to prevent IE page transition |
|ELS 3/6/2008: refactored code for size reduction, readability, and I18N/L10N-readiness.  Also added 'folded' flag to tiddler elements (for use by other plugins that need to know if tiddler is folded (e.g., [[SinglePageModePlugin]]) |
|ELS 10/11/2007: moved [[FoldFirst]] inline script and converted to {{{<<foldFirst>>}}} macro. |
|ELS 9/12/2007: suspend/resume SinglePageMode (SPM/TPM/BPM) when folding/unfolding tiddlers |
|ELS 6/5/2007: add "return false" at the end of each command handler to prevent IE 'page transition' problem. |
|ELS 3/30/2007: add a shadow definition for CollapsedTemplate.  Tweak ViewTemplate shadow so "fold/unfold" and "focus" toolbar items automatically appear when using default templates.  Remove error check for "CollapsedTemplate" existence, since shadow version will now always work as a fallback. |
|ELS 2/24/2006: added fallback to "CollapsedTemplate" if "WebCollapsedTemplate" is not found |
|ELS 2/6/2006: added check for 'readOnly' flag to use alternative "WebCollapsedTemplate" |

***/

//{{{
config.shadowTiddlers.CollapsedTemplate=
	"<!--{{{-->\
	<div class='toolbar' macro='toolbar expandTiddler collapseOthers closeTiddler closeOthers +editTiddler permalink references jump'></div>\
	<div class='title' macro='view title'></div>\
	<!--}}}-->";

// automatically tweak shadow ViewTemplate to add "collapseTiddler collapseOthers" commands
config.shadowTiddlers.ViewTemplate=config.shadowTiddlers.ViewTemplate.replace(/closeTiddler/,"collapseTiddler collapseOthers closeTiddler");

config.commands.collapseTiddler = {
	text: "fold",
	tooltip: "Collapse this tiddler",
	collapsedTemplate: "CollapsedTemplate",
	webCollapsedTemplate: "WebCollapsedTemplate",
	handler: function(event,src,title) {
		var e = story.findContainingTiddler(src); if (!e) return false;
		// don't fold tiddlers that are being edited!
		if(story.isDirty(e.getAttribute("tiddler"))) return false;
		var t=config.commands.collapseTiddler.getCollapsedTemplate();
		config.commands.collapseTiddler.saveTemplate(e);
		config.commands.collapseTiddler.display(title,t);
		e.setAttribute("folded","true");
		return false;
	},
	getCollapsedTemplate: function() {
		if (readOnly&&store.tiddlerExists(this.webCollapsedTemplate))
			return this.webCollapsedTemplate;
		else
			return this.collapsedTemplate
	},
	saveTemplate: function(e) {
		if (e.getAttribute("savedTemplate")==undefined)
			e.setAttribute("savedTemplate",e.getAttribute("template"));

	},
	// fold/unfold tiddler with suspend/resume of single/top/bottom-of-page mode
	display: function(title,t) {
		var opt=config.options;
		var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
		var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
		var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
		story.displayTiddler(null,title,t);
		opt.chkBottomOfPageMode=saveBPM;
		opt.chkTopOfPageMode=saveTPM;
		opt.chkSinglePageMode=saveSPM;
	}
}

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

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


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

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

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

// {{{<<foldFirst>>}}} macro forces tiddler to be folded when *initially* displayed.
// Subsequent re-render does NOT re-fold tiddler, but closing/re-opening tiddler DOES cause it to fold first again.
config.macros.foldFirst = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler){
		var e=story.findContainingTiddler(place);
		if (e.getAttribute("foldedFirst")=="true") return; // already been folded once
		var title=e.getAttribute("tiddler")
		var t=config.commands.collapseTiddler.getCollapsedTemplate();
		config.commands.collapseTiddler.saveTemplate(e);
		config.commands.collapseTiddler.display(title,t);
		e.setAttribute("folded","true");
		e.setAttribute("foldedFirst","true"); // only when tiddler is first rendered
		return false;
	}
}
//}}}
<!--{{{-->	<div class='toolbar' macro='toolbar expandTiddler collapseOthers closeTiddler closeOthers +editTiddler permalink references jump'></div>	<div class='title' macro='view title'></div>	<!--}}}-->
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
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; @@|
''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;
The imminence and severity of the problems posed by the accelerating changes in the global climate are becoming increasingly evident. Heat waves are becoming more severe, droughts and downpours are becoming more intense, the Greenland Ice Sheet is shrinking and sea level is rising, and the increasing acidification of the oceans is threatening calcifying organisms. The environment and the world’s societies are facing increasing stress.

There is growing recognition of the complex scientific and technical issues related to climate change and sustainable development. The [[Johannesburg Plan of Implementation|http://www.un-documents.net/jburgpln.htm]], adopted in 2002 at the World Summit on Sustainable Development, requested that the United Nations Commission on Sustainable Development (CSD) "[g]ive greater consideration to the scientific contributions to sustainable development through, for example, drawing on the scientific community."

The ''United Nations Department of Economic and Social Affairs'' (DESA), in its role as Secretariat to the CSD, seeks to facilitate contributions by the scientific community to the work of the Commission. Accordingly, DESA invited ''Sigma Xi'', the Scientific Research Society, to convene an international panel of scientific experts to prepare a report outlining the best measures for mitigating and adapting to global warming for submission to the CSD.

To carry out this task, the Scientific Expert Group on Climate Change and Sustainable Development (SEG) was formed and is comprised of 18 distinguished international scientists. The panel was asked to consider innovative approaches for mitigating and/or adapting to projected climate changes, and to anticipate the relationship of response measures to sustainable development.

''Highlights of the resulting report include'':
* To avoid a entering a regime of sharply rising danger of intolerable impacts on humans, policy makers should limit temperature increases from global warming to 2-2.5°C above the 1750 pre-industrial level. It is still possible to avoid unmanageable changes in the future, but the time for action is now. +++
** Temperatures have already risen about 0.8°C[1] above pre-industrial levels and are projected to rise of approximately 3-5°C over pre-industrial levels by 2100.
** Avoiding temperature increases greater than 2-2.5°C would require very rapid success in reducing emissions of methane and black soot worldwide, and global carbon dioxide emissions must level off by 2015 or 2020 at not much above their current amount, before beginning a decline to no more than a third of that level by 2100.
===

* The technology exists to seize significant opportunities around the globe to reduce emissions and provide other economic, environmental and social benefits, including meeting the United Nations’ [[Millennium Development Goals]]. To do so, policy makers must immediately act to reduce emissions by: +++
** Improving efficiency in the transportation sector through measures such as vehicle efficiency standards, fuel taxes, and registration fees/rebates that favor purchase of efficient and alternative fuel vehicles.
** Improving design and efficiency of commercial and residential buildings through building codes, standards for equipment and appliances, incentives for property developers and landlords to build and manage properties efficiently, and financing for energy-efficiency investments.
** Expanding the use of biofuels through energy portfolio standards and incentives to growers and consumers.
** Beginning immediately, designing and deploying only coal-fired power plants that will be capable of cost-effective and environmentally-sound retrofits for capture and sequestration of their carbon emissions.
===

* Some level of climate change and impacts from it is already unavoidable. Societies must do more to adapt to ongoing and unavoidable changes in the Earth’s climate system by: +++
** Improving preparedness/response strategies and management of natural resources to cope with future climatic conditions that will be. fundamentally different than those experienced for the last 100 years.
** Addressing the adaptation needs of the poorest and most vulnerable nations, which will bear the brunt of climate change impacts.
** Planning and building climate resilient cities.
** Strengthening international, national, and regional institutions to cope with weather-related disasters and an increasing number of climate change refugees.
===

* The international community, through the UN and related multilateral institutions, can play a crucial role in advancing action to manage the unavoidable and avoid the unmanageable by: +++
** Helping developing countries and countries with economies in transition to finance and deploy energy efficient and new energy technologies.
** Accelerating negotiations to develop a successor international framework for addressing climate change and sustainable development.
** Educating all about the opportunities to adopt mitigation and adaptation measures.
===


''Download Confronting Climate Cnange'':
* [[Executive Summary|http://www.unfoundation.org/files/pdf/2007/SEG_ExecSumm.pdf]] (pdf, 3 Mb)
* [[Full Report|http://www.unfoundation.org/files/pdf/2007/SEG_Report.pdf]] (pdf, 8Mb)
* [[Corrected page 15|http://www.unfoundation.org/files/pdf/2007/SEG_errata_map.pdf]] (pdf, 4Mb)
Visit [[official web site for Confronting Climate Change|http://www.unfoundation.org/SEG/]]
<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>
{{iframe{''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/cope-dec.htm}}}
<html><iframe
title="Copenhagen Declaration on Social Development"
src="http://www.un-documents.net/cope-dec.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
/***
|Name|CopyTiddlerPlugin|
|Source|http://www.TiddlyTools.com/#CopyTiddlerPlugin|
|Version|3.2.4|
|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.3|
|Type|plugin|
|Requires||
|Overrides||
|Description|Quickly create a copy of any existing tiddler|
!!!Usage
<<<
This plugin automatically updates the default (shadow) ToolbarCommands slice definitions to insert the ''copyTiddler'' command (which appears as ''copy'' in the tiddler toolbar).

When you select the ''copy'' command, a new tiddler is opened with a title of "{{{TiddlerName (n)}}}" containing copies of the text/tags/fields from the original //source tiddler//, where ''(n)'' is the next available number (starting with 1, of course).  Note: If you copy while //editing// a tiddler, the current values that are displayed in the existing tiddler editor are used (including any unsaved changes you may have made to those values), and the new tiddler is immediately opened for editing.

Note: if you are already using customized toolbar definitions, you will need to manually add the ''copyTiddler'' toolbar command to your existing ToolbarCommands tiddler, e.g.:
{{{
|EditToolbar|... copyTiddler ... |
}}}
The plugin also provides a macro that allows you to embed a ''copy'' command directly in specific tiddler content:
{{{
<<copyTiddler TidderName label:"..." prompt:"...">>
}}}
where
* ''TiddlerName'' (optional)<br>specifies the //source// tiddler to be copied.  If omitted, the current containing tiddler (if any) will be copied.
* ''label:"..."'' (optional)<br>specifies text to use for the embedded link (default="copy TiddlerName")
* ''prompt:"..."'' (optional)<br>specifies mouseover 'tooltip' help text for link
//Note: to use non-default label/prompt values with the current containing tiddler, use "" for the TiddlerName//
<<<
!!!Revisions
<<<
2009.03.09 [3.2.4] fixed IE-specific syntax error
2009.03.02 [3.2.3] refactored code (again) to restore use of config.commands.copyTiddler.* custom settings
2009.02.13 [3.2.2] in click(), fix calls to displayTiddler() to use current tiddlerElem and use getTiddlerText() to permit copying of shadow tiddler content
2009.01.30 [3.2.1] fixed handling for copying field values when in edit mode
2009.01.23 [3.2.0] refactored code and added {{{<<copyTiddler TiddlerName>>}}} macro
2008.12.18 [3.1.4] corrected code for finding next (n) value when 'sparse' handling is in effect (thanks to RussThomas for identifying and diagnosing the problem)
2008.11.14 [3.1.3] added optional 'sparse' setting (avoids 'filling in' missing numbers that may have been previously deleted)
2008.11.14 [3.1.2] added optional 'zeroPad' setting
2008.11.14 [3.1.1] moved hard-coded '(n)' regex into 'suffixPattern' object property so it can be customized
2008.09.26 [3.1.0] changed new title generation to use '(n)' suffix instead of 'Copy of' prefix
2008.05.20 [3.0.3] in handler, when copying from VIEW mode, create duplicate array from existing tags array before saving new tiddler.
2007.12.19 [3.0.2] in handler, when copying from VIEW mode, duplicate custom fields before saving new tiddler. Thanks to bug report from Ken Girard.
2007.09.26 [3.0.1] in handler, use findContainingTiddler(src) to get tiddlerElem (and title).  Allows 'copy' command to find correct tiddler when transcluded using {{{<<tiddler>>}}} macro or enhanced toolbar inclusion (see [[CoreTweaks]])
2007.06.28 [3.0.0] complete re-write to handle custom fields and alternative view/edit templates
2007.05.17 [2.1.2] use store.getTiddlerText() to retrieve tiddler content, so that SHADOW tiddlers can be copied correctly when in VIEW mode
2007.04.01 [2.1.1] in copyTiddler.handler(), fix check for editor fields by ensuring that found field actually has edit=='text' attribute
2007.02.05 [2.1.0] in copyTiddler.handler(), if editor fields (textfield and/or tagsfield) can't be found (i.e., tiddler is in VIEW mode, not EDIT mode), then get text/tags values from stored tiddler instead of active editor fields.  Allows use of COPY toolbar directly from VIEW mode (based on a request from LaurentCharles)
2006.12.12 [2.0.0] completely rewritten so plugin just creates a new tiddler EDITOR with a copy of the current tiddler EDITOR contents, instead of creating the new tiddler in the STORE by copying the current tiddler values from the STORE.
2005.xx.xx [1.0.0] original version by Tim Morgan
<<<
!!!Code
***/
//{{{
version.extensions.CopyTiddlerPlugin= {major: 3, minor: 2, revision: 4, date: new Date(2009,3,9)};

// automatically tweak shadow EditTemplate to add 'copyTiddler' toolbar command (following 'cancelTiddler')
config.shadowTiddlers.ToolbarCommands=config.shadowTiddlers.ToolbarCommands.replace(/cancelTiddler/,'cancelTiddler copyTiddler');

config.commands.copyTiddler = {
	text: 'copy',
	hideReadOnly: true,
	tooltip: 'Make a copy of this tiddler',
	notitle: 'this tiddler',
	prefix: '',
	suffixText: ' (%0)',
	suffixPattern: / \(([0-9]+)\)$/,
	zeroPad: 0,
	sparse: false,
	handler: function(event,src,title)
		{ return config.commands.copyTiddler.click(src,event); },
	click: function(here,ev) {
		var tiddlerElem=story.findContainingTiddler(here);
		var template=tiddlerElem?tiddlerElem.getAttribute('template'):null;
		var title=here.getAttribute('from');
		if (!title || !title.length) {
			if (!tiddlerElem) return false;
			else title=tiddlerElem.getAttribute('tiddler');
		}
		var root=title.replace(this.suffixPattern,''); // title without suffix
		// find last matching title
		var last=title;
		if (this.sparse) { // don't fill-in holes... really find LAST matching title
			var tids=store.getTiddlers('title','excludeLists');
			for (var t=0; t<tids.length; t++) if (tids[t].title.startsWith(root)) last=tids[t].title;
		}
		// get next number (increment from last matching title)
		var n=1; var match=this.suffixPattern.exec(last); if (match) n=parseInt(match[1])+1;
		var newTitle=this.prefix+root+this.suffixText.format([String.zeroPad(n,this.zeroPad)]);
		// if not sparse mode, find the next hole to fill in...
		while (store.tiddlerExists(newTitle)||document.getElementById(story.idPrefix+newTitle))
			{ n++; newTitle=this.prefix+root+this.suffixText.format([String.zeroPad(n,this.zeroPad)]); }
		if (!story.isDirty(title)) { // if tiddler is not being EDITED
			// duplicate stored tiddler (if any)
			var text=store.getTiddlerText(title,'');
			var newtags=[]; var newfields={};
			var tid=store.getTiddler(title); if (tid) {
				for (var t=0; t<tid.tags.length; t++) newtags.push(tid.tags[t]);
				store.forEachField(tid,function(t,f,v){newfields[f]=v;},true);
			}
	                store.saveTiddler(newTitle,newTitle,text,
				config.options.txtUserName,new Date(),newtags, newfields, true); // clear changecount
			story.displayTiddler(tiddlerElem,newTitle,template);
		} else {
			story.displayTiddler(tiddlerElem,newTitle,template);
			var fields=config.commands.copyTiddler.gatherFields(tiddlerElem); // get current editor fields
			var newTiddlerElem=document.getElementById(story.idPrefix+newTitle);
			for (var f=0; f<fields.length; f++) {  // set fields in new editor
				if (fields[f].name=='title') fields[f].value=newTitle; // rename title in new tiddler
				var fieldElem=config.commands.copyTiddler.findField(newTiddlerElem,fields[f].name);
				if (fieldElem) {
					if (fieldElem.getAttribute('type')=='checkbox')
						fieldElem.checked=fields[f].value;
					else 
						fieldElem.value=fields[f].value;
				}
			}
		}
		story.focusTiddler(newTitle,'title');
		return false;
	},
	findField: function(tiddlerElem,field) {
		var inputs=tiddlerElem.getElementsByTagName('input');
		for (var i=0; i<inputs.length; i++) {
			if (inputs[i].getAttribute('type')=='checkbox' && inputs[i].field == field) return inputs[i];
			if (inputs[i].getAttribute('type')=='text' && inputs[i].getAttribute('edit') == field) return inputs[i];
		}
		var tas=tiddlerElem.getElementsByTagName('textarea');
		for (var i=0; i<tas.length; i++) if (tas[i].getAttribute('edit') == field) return tas[i];
		var sels=tiddlerElem.getElementsByTagName('select');
		for (var i=0; i<sels.length; i++) if (sels[i].getAttribute('edit') == field) return sels[i];
		return null;
	},
	gatherFields: function(tiddlerElem) { // get field names and values from current tiddler editor
		var fields=[];
		// get checkboxes and edit fields
		var inputs=tiddlerElem.getElementsByTagName('input');
		for (var i=0; i<inputs.length; i++) {
			if (inputs[i].getAttribute('type')=='checkbox')
				if (inputs[i].field) fields.push({name:inputs[i].field,value:inputs[i].checked});
			if (inputs[i].getAttribute('type')=='text')
				if (inputs[i].getAttribute('edit')) fields.push({name:inputs[i].getAttribute('edit'),value:inputs[i].value});
		}
		// get textareas (multi-line edit fields)
		var tas=tiddlerElem.getElementsByTagName('textarea');
		for (var i=0; i<tas.length; i++)
			if (tas[i].getAttribute('edit')) fields.push({name:tas[i].getAttribute('edit'),value:tas[i].value});
		// get selection lists (droplist or listbox)
		var sels=tiddlerElem.getElementsByTagName('select');
		for (var i=0; i<sels.length; i++)
			if (sels[i].getAttribute('edit')) fields.push({name:sels[i].getAttribute('edit'),value:sels[i].value});
		return fields;
	}
};
//}}}
// // MACRO DEFINITION
//{{{
config.macros.copyTiddler = {
	label: 'copy',
	prompt: 'Make a copy of %0',
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var title=params.shift();
		params=paramString.parseParams('anon',null,true,false,false);
		var label	=getParam(params,'label',this.label+(title?' '+title:''));
		var prompt	=getParam(params,'prompt',this.prompt).format([title||this.notitle]);
		var b=createTiddlyButton(place,label,prompt,
			function(ev){return config.commands.copyTiddler.click(this,ev)});
		b.setAttribute('from',title||'');
	}
};
//}}}
/***
|Name|CoreTweaks|
|Source|http://www.TiddlyTools.com/#CoreTweaks|
|Version|use with TW2.4.3|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.2.0|
|Type|plugin|
|Requires||
|Overrides|various|
|Description|a small collection of overrides to TW core functions|
This tiddler contains changes TW core functions to provide minor changes in standard features or behavior.  It is hoped that some of these tweaks may someday be added into the TW core, so that these adjustments will be available without needing these add-on definitions.
>''Note: the changes contained in this tiddler are generally applicable for version 2.4.3 of TiddlyWiki.''
>Please view [[CoreTweaksArchive]] for tweaks that may be used with earlier versions of TiddlyWiki.
***/
//{{{
// calculate TW version number - used to determine which tweaks should be applied
var ver=version.major+version.minor/10+version.revision/100;
//}}}
/***
----

***/
// // open tickets:
// // {{block{
/***
!!!890 add conditional test to """<<tiddler>>""" macro
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/890 - OPEN
This tweak extends the {{{<<tiddler>>}}} macro syntax so you can include a javascript-based //test expression// to determine if the tiddler transclusion should be performed:
{{{
<<tiddler TiddlerName if:{{...}} with: param param etc.>>
}}}
If the test is ''true'', then the tiddler is transcluded as usual.  If the test is ''false'', then the transclusion is skipped and //no output is produced//.
***/
//{{{
config.macros.tiddler.if_handler = config.macros.tiddler.handler;
config.macros.tiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	params = paramString.parseParams('name',null,true,false,true);
	if (!getParam(params,'if',true)) return;
	this.if_handler.apply(this,arguments);
};
//}}}
// // }}}}}}// // {{block{
/***
!!!831 backslash-quoting for embedding newlines in 'line-mode' formats
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/831 - OPEN
This tweak pre-processes source content to convert 'double-backslash-newline' into {{{<br>}}} before wikify(), so that literal newlines can be embedded in line-mode wiki syntax (e.g., tables, bullets, etc.)
***/
//{{{
window.coreWikify = wikify;
window.wikify = function(source,output,highlightRegExp,tiddler)
{
	if (source) arguments[0]=source.replace(/\\\\\n/mg,'<br>');
	coreWikify.apply(this,arguments);
}
//}}}
// // }}}}}}// // {{block{
/***
!!!829 """<<tag>>""" macro - sortby parameter
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/829 - OPEN
This tweak adds an optional 'sortby' parameter to the """<<tag tagname label tip sortby>>""" macro, as well as the """<<allTags excludeTag sortby>>""" macro used to generate the sidebar contents 'tags' list.  Specify the field on which the contents of each tag popup is to be sorted, with a '+' or '-' prefix to indicate ascending/descending order, respectively.

Example: """<<tag systemConfig "plugins" "list plugins by date, most recent first" "-modified">>"""
Try it: <<tag systemConfig "plugins" "list plugins by date, most recent first" "-modified">>

Similarly, to change the sort order used by the popups from all tags shown in the sidebar contents, edit the [[TagTags]] shadow tiddler and enter: """<<allTags excludeLists -modified>>"""
***/
//{{{
// hijack tag handler() to add 'sortby' attribute to tag button
config.macros.tag.CoreTweaksSortTags_handler=config.macros.tag.handler;
config.macros.tag.handler = function(place,macroName,params)
{
	this.CoreTweaksSortTags_handler.apply(this,arguments);
	var btn=place.lastChild;
	if (params[3]) btn.setAttribute('sortby',params[3]);
}

// tweak <<allTags>> macro to add 'sortby' attribute to each tag button
var fn=config.macros.allTags.handler;
var lines=fn.toString().split('\n');
lines.splice(lines.length-2,0,['if(params[1]) btn.setAttribute("sortby",params[1]);']);
fn=lines.join('\n');
eval('config.macros.allTags.handler='+fn);

// tweak tag event handler to:
// * use tag filtering (only if '[' is present in tag value)
// * use optional 'sortby' attribute
// * save 'sortby' value in 'open all' command (for displaying tiddlers in sorted order)
var fn=onClickTag;
fn=fn.toString().replace(
	/store.getTaggedTiddlers\(tag\);/g,
	'(tag.indexOf("[")==-1?store.getTaggedTiddlers(tag):store.filterTiddlers(tag));'
	+'var sortby=this.getAttribute("sortby");'
	+'if(sortby&&sortby.length) store.sortTiddlers(tagged,sortby);'
);
fn=fn.toString().replace(
	/openAll.setAttribute\("tag",\s*tag\);/g,
	'openAll.setAttribute("tag",tag); openAll.setAttribute("sortby",sortby);'
);
eval(fn);

// tweak 'open all' event handler to use 'sortby' attribute
var fn=onClickTagOpenAll;
fn=fn.toString().replace(
	/story.displayTiddlers\(this,\s*tiddlers\);/g,
	'var sortby=this.getAttribute("sortby");'
	+'if(sortby&&sortby.length) store.sortTiddlers(tiddlers,sortby);'
	+'story.displayTiddlers(this,tiddlers);'
);
eval(fn);
//}}}
// // }}}}}}// // {{block{
/***
!!!824 ~WindowTitle - alternative to combined ~SiteTitle/~SiteSubtitle in window titlebar
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/824 - OPEN
This tweak allows definition of an optional [[WindowTitle]] tiddler that, when present, provides alternative text for display in the browser window's titlebar, instead of using the combined text content from [[SiteTitle]] and [[SiteSubtitle]] (which will still be displayed as usual in the TiddlyWiki document header area).

Note: this ticket replaces http://trac.tiddlywiki.org/ticket/401 (closed), which proposed using a custom [[PageTitle]] tiddler for this purpose.  ''If you were using the previous '401 ~PageTitle' tweak, you will need to rename [[PageTitle]] to [[WindowTitle]] to continue to use your custom window title text''
***/
//{{{
config.shadowTiddlers.WindowTitle='<<tiddler SiteTitle>> - <<tiddler SiteSubtitle>>';
window.getPageTitle=function() { return wikifyPlain('WindowTitle'); }
store.addNotification('WindowTitle',refreshPageTitle); // so title stays in sync with tiddler changes
//}}}
// // }}}}}}// // {{block{
/***
!!!784 allow tiddler sections in TiddlyLinks to be used as anchor points for intra-tiddler scrolling.  
>http://trac.tiddlywiki.org/ticket/784 - OPEN - Please see separate [[SectionLinksPlugin]]
!!!683 FireFox3 Import bug: 'browse' button replacement
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/683 - OPEN
The web standard 'type=file' input control that has been used as a local path/file picker for TiddlyWiki no longer works as expected in FireFox3, which has, for security reasons, limited javascript access to this control so that *no* local filesystem path information can be revealed, even when it is intentional and necessary, as it is with TiddlyWiki.  This tweak provides alternative HTML source that patches the backstage import panel.  It replaces the 'type=file' input control with a text+button combination of controls that invokes a system-native secure 'file-chooser' dialog box to provide TiddlyWiki with access to a complete path+filename so that TW functions properly locate user-selected local files.
>Note: ''This tweak also requires http://trac.tiddlywiki.org/ticket/604 - cross-platform askForFilename()''
***/
//{{{
if (window.Components) {
	var fixhtml='<input name="txtBrowse" style="width:30em"><input type="button" value="..."'
		+' onClick="window.browseForFilename(this.previousSibling,true)">';
	var cmi=config.macros.importTiddlers;
	cmi.step1Html=cmi.step1Html.replace(/<input type='file' size=50 name='txtBrowse'>/,fixhtml);
}

merge(config.messages,{selectFile:'Please enter or select a file'}); // ready for I18N translation

window.browseForFilename=function(target,mustExist) { // note: both params are optional
	var msg=config.messages.selectFile;
	if (target && target.title) msg=target.title; // use target field tooltip (if any) as dialog prompt text
	// get local path for current document
	var path=getLocalPath(document.location.href);
	var p=path.lastIndexOf('/'); if (p==-1) p=path.lastIndexOf('\\'); // Unix or Windows
	if (p!=-1) path=path.substr(0,p+1); // remove filename, leave trailing slash
	var file=''
	var result=window.askForFilename(msg,path,file,mustExist); // requires #604
	if (target && result.length) // set target field and trigger handling
		{ target.value=result; target.onchange(); }
	return result; 
}
//}}}
// // }}}}}}// // {{block{
/***
!!!604 cross-platform askForFilename()
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/604 - OPEN
invokes a system-native secure 'file-chooser' dialog box to provide TiddlyWiki with access to a complete path+filename so that TW functions properly locate user-selected local files.
***/
//{{{
window.askForFilename=function(msg,path,file,mustExist) {
	var r = window.mozAskForFilename(msg,path,file,mustExist);
	if(r===null || r===false)
		r = window.ieAskForFilename(msg,path,file,mustExist);
	if(r===null || r===false)
		r = window.javaAskForFilename(msg,path,file,mustExist);
	if(r===null || r===false)
		r = prompt(msg,path+file);
	return r||'';
}

window.mozAskForFilename=function(msg,path,file,mustExist) {
	if(!window.Components) return false;
	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, mustExist?nsIFilePicker.modeOpen: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(ex) { displayMessage(ex.toString()); }
	return result;
}

window.ieAskForFilename=function(msg,path,file,mustExist) {
	if(!config.browser.isIE) return false;
	try {
		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;
		return s.showOpen()?s.FileName:'';
	}
	catch(ex) { displayMessage(ex.toString()); }
	return result;
}

window.javaAskForFilename=function(msg,path,file,mustExist) {
	if(!document.applets['TiddlySaver']) return false;
	// TBD: implement java-based askFile(...) function
	try { return document.applets['TiddlySaver'].askFile(msg,path,file,mustExist); } 
	catch(ex) { displayMessage(ex.toString()); }
}
//}}}
// // }}}}}}// // {{block{
/***
!!!657 wrap tabs onto multiple lines
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/657 - OPEN
This tweak inserts an extra space element following each tab, allowing them to wrap onto multiple lines if needed.
***/
//{{{
config.macros.tabs.handler = function(place,macroName,params)
{
	var cookie = params[0];
	var numTabs = (params.length-1)/3;
	var wrapper = createTiddlyElement(null,'div',null,'tabsetWrapper ' + cookie);
	var tabset = createTiddlyElement(wrapper,'div',null,'tabset');
	tabset.setAttribute('cookie',cookie);
	var validTab = false;
	for(var t=0; t<numTabs; t++) {
		var label = params[t*3+1];
		var prompt = params[t*3+2];
		var content = params[t*3+3];
		var tab = createTiddlyButton(tabset,label,prompt,this.onClickTab,'tab tabUnselected');
		createTiddlyElement(tab,'span',null,null,' ',{style:'font-size:0pt;line-height:0px'}); // ELS
		tab.setAttribute('tab',label);
		tab.setAttribute('content',content);
		tab.title = prompt;
		if(config.options[cookie] == label)
			validTab = true;
	}
	if(!validTab)
		config.options[cookie] = params[1];
	place.appendChild(wrapper);
	this.switchTab(tabset,config.options[cookie]);
};
//}}}
// // }}}}}}// // {{block{
/***
!!!628 hide 'no such macro' errors
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/628 - OPEN
When invoking a macro that is not defined, this tweak prevents the display of the 'error in macro... no such macro' message.  This is useful when rendering tiddler content or templates that reference macros that are defined by //optional// plugins that have not been installed in the current document.

<<option chkHideMissingMacros>> hide 'no such macro' error messages
***/
//{{{
if (config.options.chkHideMissingMacros===undefined)
	config.options.chkHideMissingMacros=false;

window.coreTweaks_missingMacro_invokeMacro = window.invokeMacro;
window.invokeMacro = function(place,macro,params,wikifier,tiddler) {
	if (!config.macros[macro] || !config.macros[macro].handler)
		if (config.options.chkHideMissingMacros) return;
	window.coreTweaks_missingMacro_invokeMacro.apply(this,arguments);
}
//}}}
// // }}}}}}// // {{block{
/***
!!!608/609/610 toolbars - toggles, separators and transclusion
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/608 - OPEN (more/less toggle)
http://trac.tiddlywiki.org/ticket/609 - OPEN (separators)
http://trac.tiddlywiki.org/ticket/610 - OPEN (wikify tiddler/slice/section content)

This combination tweak extends the """<<toolbar>>""" macro to add use of '<' to insert a 'less' menu command (the opposite of '>' == 'more'), as well as use of '*' to insert linebreaks and "!" to insert a vertical line separator between toolbar items.  In addition, this tweak add the ability to use references to tiddlernames, slices, or sections and render their content inline within the toolbar, allowing easy creation of new toolbar commands using TW content (such as macros, links, inline scripts, etc.)

To produce a one-line style, with "less" at the end, use
| ViewToolbar| foo bar baz > yabba dabba doo < |
resulting in:
{{{
foo bar baz more
   and
foo bar baz yabba dabba doo less
}}}
or to use the CoreTweaks? two-line style:
| ViewToolbar| foo bar baz > < * yabba dabba doo |
which would produce:
{{{
foo bar baz more
   and
foo bar baz less
yabba dabba doo
}}}
''see [[ToolbarCommands]] for examples of how these features can be used''
***/
//{{{
merge(config.macros.toolbar,{
	moreLabel: 'more\u25BC',
	morePrompt: 'Show additional commands',
	lessLabel: '\u25C4less',
	lessPrompt: 'Hide additional commands',
	separator: '|'
});
config.macros.toolbar.onClickMore = function(ev) {
	var e = this.nextSibling;
	e.style.display = 'inline'; // show menu
	this.style.display = 'none'; // hide button
	return false;
};
config.macros.toolbar.onClickLess = function(ev) {
	var e = this.parentNode;
	var m = e.previousSibling;
	e.style.display = 'none'; // hide menu
	m.style.display = 'inline'; // show button
	return false;
};
config.macros.toolbar.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
	for(var t=0; t<params.length; t++) {
		var c = params[t];
		switch(c) {
			case '!':  // ELS - SEPARATOR (added)
				createTiddlyText(place,this.separator);
				break;
			case '*':  // ELS - LINEBREAK (added)
				createTiddlyElement(place,'BR');
				break;
			case '<': // ELS - LESS COMMAND (added)
				var btn = createTiddlyButton(place,
					this.lessLabel,this.lessPrompt,config.macros.toolbar.onClickLess,'moreCommand');
				break;
			case '>':
				var btn = createTiddlyButton(place,
					this.moreLabel,this.morePrompt,config.macros.toolbar.onClickMore,'moreCommand');
				var e = createTiddlyElement(place,'span',null,'moreCommand');
				e.style.display = 'none';
				place = e;
				break;
			default:
				var theClass = '';
				switch(c.substr(0,1)) {
					case '+':
						theClass = 'defaultCommand';
						c = c.substr(1);
						break;
					case '-':
						theClass = 'cancelCommand';
						c = c.substr(1);
						break;
				}
				if(c in config.commands)

					this.createCommand(place,c,tiddler,theClass);
				else { // ELS - WIKIFY TIDDLER/SLICE/SECTION (added)
					if (c.substr(0,1)=='~') c=c.substr(1); // ignore leading ~
					var txt=store.getTiddlerText(c);
					if (txt) {
						// trim any leading/trailing newlines
						txt=txt.replace(/^\n*/,'').replace(/\n*$/,'');
						// trim PRE format wrapper if any
						txt=txt.replace(/^\{\{\{\n/,'').replace(/\n\}\}\}$/,'');
						// render content into toolbar
						wikify(txt,createTiddlyElement(place,'span'),null,tiddler);
					}
				} // ELS - end WIKIFY CONTENT
				break;
		}
	}
};
//}}}
// // }}}}}}// // {{block{
/***
!!!529 IE fixup - case-sensitive element lookup of tiddler elements
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/529 - OPEN
This tweak hijacks the standard browser function, document.getElementById(), to work-around the case-INsensitivity error in Internet Explorer (all versions up to and including IE7) //''Note: This tweak is only applied when using IE, and only for lookups of rendered tiddler elements within the containing 'tiddlerDisplay' element.''//
***/
//{{{
if (config.browser.isIE) {
document.coreTweaks_coreGetElementById=document.getElementById;
document.getElementById=function(id) {
	var e=document.coreTweaks_coreGetElementById(id);
	if (!e || !e.parentNode || e.parentNode.id!='tiddlerDisplay') return e;
	for (var i=0; i<e.parentNode.childNodes.length; i++)
		if (id==e.parentNode.childNodes[i].id) return e.parentNode.childNodes[i];
	return null;
};
}
//}}}
// // }}}}}}// // {{block{
/***
!!!471 'creator' field for new tiddlers
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/471 - OPEN
This tweak HIJACKS the core's saveTiddler() function to automatically add a 'creator' field to a tiddler when it is FIRST created. You can use """<<view creator>>""" (or """<<view creator wikified>>""" if you prefer) to show this value embedded directly within the tiddler content, or {{{<span macro="view creator"></span>}}} in the ViewTemplate and/or EditTemplate to display the creator value in each tiddler.  
***/
//{{{
// hijack saveTiddler()
TiddlyWiki.prototype.CoreTweaks_creatorSaveTiddler=TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler=function(title,newTitle,newBody,modifier,modified,tags,fields)
{
	var existing=store.tiddlerExists(title);
	var tiddler=this.CoreTweaks_creatorSaveTiddler.apply(this,arguments);
	if (!existing) store.setValue(title,'creator',config.options.txtUserName);
	return tiddler;
}
//}}}
// // }}}}}}
// // closed: won't fix //(leave as core tweaks)//
// // {{block{
/***
!!!637 TiddlyLink tooltip - custom formatting
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/637 - CLOSED: WON'T FIX
This tweak modifies the tooltip format that appears when you mouseover a link to a tiddler.  It adds an option to control the date format, as well as displaying the size of the tiddler (in bytes)

Tiddler link tooltip format:
{{stretch{<<option txtTiddlerLinkTootip>>}}}
^^where: %0=title, %1=username, %2=modification date, %3=size in bytes, %4=description slice^^
Tiddler link tooltip date format:
{{stretch{<<option txtTiddlerLinkTooltipDate>>}}}
***/
//{{{
config.messages.tiddlerLinkTooltip='%0 - %1, %2 (%3 bytes) - %4';
config.messages.tiddlerLinkTooltipDate='DDD, MMM DDth YYYY 0hh12:0mm AM';

config.options.txtTiddlerLinkTootip=
	config.options.txtTiddlerLinkTootip||config.messages.tiddlerLinkTooltip;
config.options.txtTiddlerLinkTooltipDate=
	config.options.txtTiddlerLinkTooltipDate||config.messages.tiddlerLinkTooltipDate;

Tiddler.prototype.getSubtitle = function() {
	var modifier = this.modifier;
	if(!modifier) modifier = config.messages.subtitleUnknown;
	var modified = this.modified;
	if(modified) modified = modified.formatString(config.options.txtTiddlerLinkTooltipDate);
	else modified = config.messages.subtitleUnknown;
	var descr=store.getTiddlerSlice(this.title,'Description')||'';
	return config.options.txtTiddlerLinkTootip.format([this.title,modifier,modified,this.text.length,descr]);
};
//}}}
// // }}}}}}// // {{block{
/***
!!!607 add HREF link on permaview command
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/607 - CLOSED: WON'T FIX
This tweak automatically sets the HREF for the 'permaview' sidebar command link so you can use the 'right click' context menu for faster, easier bookmarking.  Note that this does ''not'' automatically set the permaview in the browser's current location URL... it just sets the HREF on the command link.  You still have to click the link to apply the permaview.
***/
//{{{
config.macros.permaview.handler = function(place)
{
	var btn=createTiddlyButton(place,this.label,this.prompt,this.onClick);
	addEvent(btn,'mouseover',this.setHREF);
	addEvent(btn,'focus',this.setHREF);
};
config.macros.permaview.setHREF = function(event){
	var links = [];
	story.forEachTiddler(function(title,element) {
		links.push(String.encodeTiddlyLink(title));
	});
	var newURL=document.location.href;
	var hashPos=newURL.indexOf('#');
	if (hashPos!=-1) newURL=newURL.substr(0,hashPos);
	this.href=newURL+'#'+encodeURIComponent(links.join(' '));
}
//}}}
// // }}}}}}// // {{block{
/***
!!!458 add permalink-like HREFs on internal TiddlyLinks
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/458 - CLOSED: WON'T FIX
This tweak assigns a permalink-like HREF to internal Tiddler links (which normally do not have any HREF defined).  This permits the link's context menu (right-click) to include 'open link in another window/tab' command.  Based on a request from Dustin Spicuzza.
***/
//{{{
window.coreTweaks_createTiddlyLink=window.createTiddlyLink;
window.createTiddlyLink=function(place,title,includeText,theClass,isStatic,linkedFromTiddler,noToggle)
{
	// create the core button, then add the HREF (to internal links only)
	var link=window.coreTweaks_createTiddlyLink.apply(this,arguments);
	if (!isStatic)
		link.href=document.location.href.split('#')[0]+'#'+encodeURIComponent(String.encodeTiddlyLink(title));
	return link;
}
//}}}
// // }}}}}}
// // <<foldHeadings>>
/%
|Name|CreateTiddlersFromCSV|
|Source|http://www.TiddlyTools.com/#CreateTiddlersFromCSV|
|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|html|
|Requires||
|Overrides||
|Description|create tiddlers from CSV data|

Usage: Paste CSV data into textarea.  Press "create tiddlers" button

CSV format (as exported from a spreadsheet):
title,text,tags,field1,field2,field3,...
Test1,This is content1,one foo,mumble,gronk,frotz
Test2,This is content2,two bar,snork,snerfle,plurmb

* first line contains lower-case 'field names' and must include a 'title' field
* 'text' field is normal tiddler body content
* 'tags' is a space-separated bracketed list (i.e., same as when entered via tiddler editor)
* other fields (optional) are added as custom fields

%/<<tiddler HideTiddlerTags>>Enter CSV data:
<html><hide linebreaks><form style='display:inline;margin:0;padding:0;'>
	<textarea class='editor' name='src' style='width:100%;height:15em;'></textarea>
	<input type='button' value='create tiddlers' onclick="
		var lines=this.form.src.value.split('\n');
		var names=lines[0].split(','); var count=0;
		for (var i=1; i<lines.length; i++) {
			var values=lines[i].split(',');
			var title=text=''; var tags=[]; var fields={};
			for (var v=0; v<values.length; v++) {
				switch(names[v].toLowerCase()) {
					case 'title':	title=values[v].replace(/\[\]\|/g,'_'); break;
					case 'text':	text=values[v]; break;
					case 'tags':	tags=values[v].readBracketedList(); break;
					default:	fields[names[v].toLowerCase()]=values[v]; break;
				}
			}
			if (title.length) {
				store.saveTiddler(title,title,text,config.options.txtUserName,new Date(),tags,fields);
				displayMessage('Created '+title);
				count++;
			}
		}
		if (count) displayMessage('Created '+count+' tiddlers');
	">
	</form>
</html>
''Creative Commons'' is an supplementary intellectual property rights framework and provides free tools that let authors, scientists, artists, and educators easily mark their creative work with the freedoms they want it to carry. You can use CC to change your copyright terms from "All Rights Reserved" to "Some Rights Reserved."

<<oh "Creative Commons web site">>
''Creative Commons Attribution Non-Commercial Share-Alike Licence''
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>
''//New//''
<<<
Visit [[Climate Change 2007: IPCC Fourth Assessment Report|http://www.climate-change-two.net/ar4-spm/]] to see a draft version of a ''Creative Commons'' TiddlyWiki edition of the ''Summary for Policymakers'' of the recently-released ''Synthesis Report'' from the ''Intergovernmental Panel on Climate Change''
<<<
{{iframe{''Note'': This is a "framed" page from the ''Creative Commons'' 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://creativecommons.org/}}}
<html><iframe
	src = "http://creativecommons.org/"
	title = "Creative Commons"
	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 ''FeedBlitz'' 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.feedblitz.com/f/f.fbz?HTML=545479}}}
<html><iframe
	src = "http://www.feedblitz.com/f/f.fbz?HTML=545479"
	title = "RSS Feed for COP-15 Climate Change News"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
/***
|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;
};
//}}}


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

!!Education For All: Meeting Our Collective Commitments
# Meeting in Dakar, Senegal, in April 2000, we, the participants in the World Education Forum, commit ourselves to the achievement of education for all (EFA) goals and targets for every citizen and for every society.
# The Dakar Framework is a collective commitment to action. Governments have an obligation to ensure that EFA goals and targets are reached and sustained. This is a responsibility that will be met most effectively through broad-based partnerships within countries, supported by cooperation with regional and international agencies and institutions.
# We re-affirm the vision of the [[World Declaration on Education for All|http://www.un-documents.net/jomtien.htm]] (Jomtien 1990), supported by the [[Universal Declaration of Human Rights|http://www.un-documents.net/a3r217a.htm]] and the [[Convention on the Rights of the Child|http://www.un-documents.net/crc.htm]], that all children, young people and adults have the human right to benefit from an education that will meet their basic learning needs in the best and fullest sense of the term, an education that includes learning to know, to do, to live together and to be. It is an education geared to tapping each individual's talents and potential, and developing learners' personalities, so that they can improve their lives and transform their societies.
# We welcome the commitments made by the international community to basic education throughout the 1990s, notably at the [[World Summit for Children|http://www.un-documents.net/wsc-dec.htm]] (1990), the [[Conference on Environment and Development|http://www.un-documents.net/a21-36.htm]] (1992), the [[World Conference on Human Rights|http://www.un-documents.net/ac157-23.htm]] (1993), the World Conference on Special Needs Education: Access and Quality (1994), the [[International Conference on Population and Development|http://www.un-documents.net/ac171-13.htm]] (1994), the [[World Summit for Social Development|http://www.un-documents.net/cope-dec.htm]] (1995), the [[Fourth World Conference on Women|http://www.un-documents.net/ac177-20.htm]] (1995), the [[Mid-Term Meeting of the International Consultative Forum on Education for All|The Amman Affirmation: Education for all: Achieving the goal]] (1996), the Fifth International Conference on Adult Education (1997), and the International Conference on Child Labour (1997). The challenge now is to deliver on these commitments.
# The EFA 2000 Assessment demonstrates that there has been significant progress in many countries. But it is unacceptable in the year 2000 that more than 113 million children have no access to primary education, 880 million adults are illiterate, gender discrimination continues to permeate education systems, and the quality of learning and the acquisition of human values and skills fall far short of the aspirations and needs of individuals and societies. Youth and adults are denied access to the skills and knowledge necessary for gainful employment and full participation in their societies. Without accelerated progress towards education for all, national and internationally agreed targets for poverty reduction will be missed, and inequalities between countries and within societies will widen.
# Education is a fundamental human right. It is the key to sustainable development and peace and stability within and among countries, and thus an indispensable means for effective participation in the societies and economies of the twenty-first century, which are affected by rapid globalization. Achieving EFA goals should be postponed no longer. The basic learning needs of all can and must be met as a matter of urgency.
# We hereby collectively commit ourselves to the attainment of the following goals:
## expanding and improving comprehensive early childhood care and education, especially for the most vulnerable and disadvantaged children;
## ensuring that by 2015 all children, particularly girls, children in difficult circumstances and those belonging to ethnic minorities, have access to and complete free and compulsory primary education of good quality;
## ensuring that the learning needs of all young people and adults are met through equitable access to appropriate learning and life skills programmes;
## achieving a 50 per cent improvement in levels of adult literacy by 2015, especially for women, and equitable access to basic and continuing education for all adults;
## eliminating gender disparities in primary and secondary education by 2005, and achieving gender equality in education by 2015, with a focus on ensuring girls' full and equal access to and achievement in basic education of good quality;
## improving all aspects of the quality of education and ensuring excellence of all so that recognized and measurable learning outcomes are achieved by all, especially in literacy, numeracy and essential life skills.
# To achieve these goals, we the governments, organizations, agencies, groups and associations represented at the World Education Forum pledge ourselves to:
## mobilize strong national and international political commitment for education for all, develop national action plans and enhance significantly investment in basic education;
## promote EFA policies within a sustainable and well-integrated sector framework clearly linked to poverty elimination and development strategies;
## ensure the engagement and participation of civil society in the formulation, implementation and monitoring of strategies for educational development;
## develop responsive, participatory and accountable systems of educational governance and management;
## meet the needs of education systems affected by conflict, national calamities and instability and conduct educational programmes in ways that promote mutual understanding, peace and tolerance, and help to prevent violence and conflict;
## implement integrated strategies for gender equality in education which recognize the need for changes in attitudes, values and practices;
## implement as a matter of urgency education programmes and actions to combat the HIV/AIDS pandemic;
## create safe, healthy, inclusive and equitably resourced educational environments conducive to excellence in learning with clearly defined levels of achievement for all;
## enhance the status, morale and professionalism of teachers;
## harness new information and communication technologies to help achieve EFA goals;
## systematically monitor progress towards EFA goals and strategies at the national, regional and international levels; and
## build on existing mechanisms to accelerate progress towards education for all.
# Drawing on the evidence accumulated during the national and regional EFA assessments, and building on existing national sector strategies, all States will be requested to develop or strengthen existing national plans of action by 2002 at the latest. These plans should be integrated into a wider poverty reduction and development framework, and should be developed through more transparent and democratic processes, involving stakeholders, especially peoples' representatives, community leaders, parents, learners, non-governmental organizations (NGOs) and civil society. The plans will address problems associated with the chronic under-financing of basic education by establishing budget priorities that reflect a commitment to achieving EFA goals and targets at the earliest possible date, and no later than 2015. They will also set out clear strategies for overcoming the special problems facing those currently excluded from educational opportunities, with a clear commitment to girls' education and gender equity. The plans will give substance and form to the goals and strategies set out in this Framework, and to the commitments made during a succession of international conferences in the 1990s. Regional activities to support national strategies will be based on strengthened regional and subregional organizations, networks and initiatives.
# Political will and stronger national leadership are needed for the effective and successful implementation of national plans in each of the countries concerned. However, political will must be underpinned by resources. The international community acknowledges that many countries currently lack the resources to achieve education for all within an acceptable time-frame. New financial resources, preferably in the form of grants and concessional assistance, must therefore be mobilized by bilateral and multilateral funding agencies, including the World Bank and regional development banks, and the private sector. We affirm that no countries seriously committed to education for all will be thwarted in their achievement of this goal by a lack of resources.
# The international community will deliver on this collective commitment by launching with immediate effect a global initiative aimed at developing the strategies and mobilizing the resources needed to provide effective support to national efforts. Options to be considered under this initiative will include:
## increasing external finance for education, in particular basic education;
## ensuring greater predictability in the flow of external assistance;
## facilitating more effective donor coordination;
## strengthening sector-wide approaches;
## providing earlier, more extensive and broader debt relief and/or debt cancellation for poverty reduction, with a strong commitment to basic education; and
## undertaking more effective and regular monitoring of progress towards EFA goals and targets, including periodic assessments.
# There is already evidence from many countries of what can be achieved through strong national strategies supported by effective development cooperation. Progress under these strategies could - and must - be accelerated through increased international support. At the same time, countries with less developed strategies - including countries in transition, countries affected by conflict, and post-crisis countries - must be given the support they need to achieve more rapid progress towards education for all.
# We will strengthen accountable international and regional mechanisms to give clear expression to these commitments and to ensure that the Dakar Framework for Action is on the agenda of every international and regional organization, every national legislature and every local decision-making forum.
# The EFA 2000 Assessment highlights that the challenge of education for all is greatest in sub-Saharan Africa, in South Asia, and in the least developed countries. Accordingly, while no country in need should be denied international assistance, priority should be given to these regions and countries. Countries in conflict or undergoing reconstruction should also be given special attention in building up their education systems to meet the needs of all learners.
# Implementation of the preceding goals and strategies will require national, regional and international mechanisms to be galvanized immediately. To be most effective these mechanisms will be participatory and, wherever possible, build on what already exists. They will include representatives of all stakeholders and partners and they will operate in transparent and accountable ways. They will respond comprehensively to the word and spirit of the Jomtien Declaration and this Dakar Framework for Action. The functions of these mechanisms will include, to varying degrees, advocacy, resource mobilization, monitoring, and EFA knowledge generation and sharing.
# The heart of EFA activity lies at the country level. National EFA Forums will be strengthened or established to support the achievement of EFA. All relevant ministries and national civil society organizations will be systematically represented in these Forums. They should be transparent and democratic and should constitute a framework for implementation at subnational levels. Countries will prepare comprehensive National EFA Plans by 2002 at the latest. For those countries with significant challenges, such as complex crises or natural disasters, special technical support will be provided by the international community. Each National EFA Plan will:
## be developed by government leadership in direct and systematic consultation with national civil society;
## attract co-ordinated support of all development partners;
## specify reforms addressing the six EFA goals;
## establish a sustainable financial framework;
## be time-bound and action-oriented;
## include mid-term performance indicators; and
## achieve a synergy of all human development efforts, through its inclusion within the national development planning framework and process.
# Where these processes and a credible plan are in place, partner members of the international community undertake to work in a consistent, co-ordinated and coherent manner. Each partner will contribute according to its comparative advantage in support of the National EFA Plans to ensure that resource gaps are filled.
# Regional activities to support national efforts will be based on existing regional and subregional organizations, networks and initiatives, augmented where necessary. Regions and subregions will decide on a lead EFA network that will become the Regional or Subregional Forum with an explicit EFA mandate. Systematic involvement of, and co-ordination with, all relevant civil society and other regional and subregional organizations are essential. These Regional and Subregional EFA Forums will be linked organically with, and be accountable to, National EFA Forums. Their functions will be: co-ordination with all relevant networks; setting and monitoring regional/subregional targets; advocacy; policy dialogue; the promotion of partnerships and technical cooperation; the sharing of best practices and lessons learned; monitoring and reporting for accountability; and promoting resource mobilization. Regional and international support will be available to strengthen Regional and Subregional Forums and relevant EFA capacities, especially within Africa and South Asia.
# UNESCO will continue its mandated role in co-ordinating EFA partners and maintaining their collaborative momentum. In line with this, UNESCO's Director-General will convene annually a high-level, small and flexible group. It will serve as a lever for political commitment and technical and financial resource mobilization. Informed by a monitoring report from the UNESCO International Institute for Educational Planning (IIEP), the UNESCO International Bureau of Education (IBE), the UNESCO Institute for Education (UIE) and, in particular, the UNESCO Institute of Statistics, and inputs from Regional and Subregional EFA Forums, it will also be an opportunity to hold the global community to account for commitments made in Dakar. It will be composed of highest-level leaders from governments and civil society of developing and developed countries, and from development agencies.
# UNESCO will serve as the Secretariat. It will refocus its education programme in order to place the outcomes and priorities of Dakar at the heart of its work. This will involve working groups on each of the six goals adopted at Dakar. This Secretariat will work closely with other organizations and may include staff seconded from them.
# Achieving Education for All will require additional financial support by countries and increased development assistance and debt relief for education by bilateral and multilateral donors, estimated to cost in the order of $8 billion a year. It is therefore essential that new, concrete financial commitments be made by national governments and also by bilateral and multilateral donors including the World Bank and the regional development banks, by civil society and by foundations.
//28 April 2000 Dakar, Senegal//
!!![[Expanded Commentary on the Dakar Framework for Action|http://www.un-documents.net/dakar-ec.htm]]
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;

//}}}

!! Decision
* [[1/CP.13 Bali Action Plan]]
* [[2/CP.13 Reducing emissions from deforestation in developing countries: approaches to stimulate action]]
* [[3/CP.13 Development and transfer of technologies under the Subsidiary Body for Scientific and Technological Advice]]
* [[4/CP.13 Development and transfer of technologies under the Subsidiary Body for Implementation]]
* [[5/CP.13 Fourth Assessment Report of the Intergovernmental Panel on Climate Change]]
* [[6/CP.13 Fourth review of the financial mechanism]]
* [[7/CP.13 Additional guidance to the Global Environment Facility]]
* [[8/CP.13 Extension of the mandate of the Least Developed Countries Expert Group ]]
* [[9/CP.13 Amended New Delhi work programme on Article 6 of the Convention]]
* [[10/CP.13 Compilation and synthesis of fourth national communications]]
* [[11/CP.13 Reporting on global observing systems for climate]]
* [[12/CP.13 Budget performance and the functions and operations of the secretariat]]
* [[13/CP.13 Programme budget for the biennium 2008-2009]]
* [[14/CP.13 Date and venue of the fourteenth and fifteenth sessions of the Conference of the Parties and the calendar of meetings of Convention bodies]]
!! Resolution
* [[1/CP.13 Expression of gratitude to the Government of the Republic of Indonesia and the people of the province of Bali]]
<<<
Adopted at the ''World Conference of the International Women's Year'' Mexico City, Mexico. 19 June-2 July 1975
<<<
//The World Conference of the International Women's Year//,

//Recognizing// that women of the entire world, whatever differences exist between them, share the painful experience of receiving or having received unequal treatment, and that as their awareness of this phenomenon increases they will become natural allies in the struggle against any form of oppression, such as is practiced under colonialism, neo-colonialism, zionism, racial discrimination and apartheid, thereby constituting an enormous revolutionary potential for economic and social change in the world today,

//Recognizing// also the urgency of improving the status of women and finding more effective methods and strategies which will enable them to have the same opportunities as men to participate actively in the development of their countries and to contribute to the attainment of world peace,

//Convinced// that women must play an important role in the promotion, achievement and maintenance of international peace, and that it is necessary to encourage their efforts towards peace, through their full participation in the national and international organizations that exist for this purpose,

Women have a vital role to play in the promotion of peace in all spheres of life: in the family, the community, the nations and the world. As such, women must participate equally with men in the decision-making processes which help to promote peace at all levels.

Women as well as men should promote real, general and complete disarmament under effective international control, starting with nuclear disarmament. Until genuine disarmament is achieved, women and men throughout the world must maintain their vigilance and do their utmost to achieve and maintain international peace.
!!!Plans of Action
The primary objective of development being to bring about sustained improvement in the well-being of the individual and of society and to bestow benefits on all, development should be seen not only as a desirable goal in itself but also as the most important means for furthering equality of the sexes and the maintenance of peace. 
* An essential condition for the maintenance and strengthening of international co-operation and peace is the promotion and protection of human rights for all in conditions of equity among and within nations. In order to involve more women in the promotion of international co-operation, the development of friendly relations among nations, the strengthening of international peace and disarmamentæthe peace efforts of women as individuals and in groups, and in national and international organizations should be recognized and encouraged.
* Women should have equal opportunity with men to represent their countries in all international forums where the above questions are discussed, and in particular at meetings of the organization of the United Nations system, including the Security Council and all conferences on disarmament and international peace, and other regional bodies. 
# We, the representatives of the peoples of the world, assembled in Geneva from 10-12 December 2003 for the first phase of the [[World Summit on the Information Society]], declare our common desire and commitment to build a people-centred, inclusive and development-oriented Information Society, where everyone can create, access, utilize and share information and knowledge, enabling individuals, communities and peoples to achieve their full potential in promoting their sustainable development and improving their quality of life, premised on the purposes and principles of the Charter of the United Nations and respecting fully and upholding the [[Universal Declaration of Human Rights]].
# Our challenge is to harness the potential of information and communication technology to promote the development goals of the Millennium Declaration, namely the eradication of extreme poverty and hunger; achievement of universal primary education; promotion of gender equality and empowerment of women; reduction of child mortality; improvement of maternal health; to combat HIV/AIDS, malaria and other diseases; ensuring environmental sustainability; and development of global partnerships for development for the attainment of a more peaceful, just and prosperous world. We also reiterate our commitment to the achievement of sustainable development and agreed development goals, as contained in the [[Johannesburg Declaration and Plan of Implementation]] and the [[Monterrey Consensus]], and other outcomes of relevant United Nations Summits.
# We reaffirm the universality, indivisibility, interdependence and interrelation of all human rights and fundamental freedoms, including the right to development, as enshrined in the Vienna Declaration. We also reaffirm that democracy, sustainable development, and respect for human rights and fundamental freedoms as well as good governance at all levels are interdependent and mutually reinforcing. We further resolve to strengthen respect for the rule of law in international as in national affairs.
# We reaffirm, as an essential foundation of the Information Society, and as outlined in Article 19 of the Universal Declaration of Human Rights, that everyone has the right to freedom of opinion and expression; that 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. Communication is a fundamental social process, a basic human need and the foundation of all social organization. It is central to the Information Society. Everyone, everywhere should have the opportunity to participate and no one should be excluded from the benefits the Information Society offers.
# We further reaffirm our commitment to the provisions of Article 29 of the Universal Declaration of Human Rights, that everyone has duties to the community in which alone the free and full development of their personality is possible, and that, in the exercise of their 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. These rights and freedoms may in no case be exercised contrary to the purposes and principles of the United Nations. In this way, we shall promote an Information Society where human dignity is respected.
# In keeping with the spirit of this declaration, we rededicate ourselves to upholding the principle of the sovereign equality of all States.
# We recognize that science has a central role in the development of the Information Society. Many of the building blocks of the Information Society are the result of scientific and technical advances made possible by the sharing of research results.
# We recognize that education, knowledge, information and communication are at the core of human progress, endeavour and well-being. Further, Information and Communication Technologies (ICTs) have an immense impact on virtually all aspects of our lives. The rapid progress of these technologies opens completely new opportunities to attain higher levels of development. The capacity of these technologies to reduce many traditional obstacles, especially those of time and distance, for the first time in history makes it possible to use the potential of these technologies for the benefit of millions of people in all corners of the world.
# We are aware that ICTs should be regarded as tools and not as an end in themselves. Under favourable conditions, these technologies can be a powerful instrument, increasing productivity, generating economic growth, job creation and employability and improving the quality of life of all. They can also promote dialogue among people, nations and civilizations.
# We are also fully aware that the benefits of the information technology revolution are today unevenly distributed between the developed and developing countries and within societies. We are fully committed to turning this digital divide into a digital opportunity for all, particularly for those who risk being left behind and being further marginalized.
# We are committed to realizing our common vision of the Information Society for ourselves and for future generations. We recognize that young people are the future workforce and leading creators and earliest adopters of ICTs. They must therefore be empowered as learners, developers, contributors, entrepreneurs and decision-makers. We must focus especially on young people who have not yet been able to benefit fully from the opportunities provided by ICTs. We are also committed to ensuring that the development of ICT applications and operation of services respects the rights of children as well as their protection and well-being.
# We affirm that development of ICTs provides enormous opportunities for women, who should be an integral part of, and key actors, in the Information Society. We are committed to ensuring that the Information Society enables women's empowerment and their full participation on the basis on equality in all spheres of society and in all decision-making processes. To this end, we should mainstream a gender equality perspective and use ICTs as a tool to that end.
# In building the Information Society, we shall pay particular attention to the special needs of marginalized and vulnerable groups of society, including migrants, internally displaced persons and refugees, unemployed and underprivileged people, minorities and nomadic people. We shall also recognize the special needs of older persons and persons with disabilities.
# We are resolute to empower the poor, particularly those living in remote, rural and marginalized urban areas, to access information and to use ICTs as a tool to support their efforts to lift themselves out of poverty.
# In the evolution of the Information Society, particular attention must be given to the special situation of indigenous peoples, as well as to the preservation of their heritage and their cultural legacy.
# We continue to pay special attention to the particular needs of people of developing countries, countries with economies in transition, Least Developed Countries, Small Island Developing States, Landlocked Developing Countries, Highly Indebted Poor Countries, countries and territories under occupation, countries recovering from conflict and countries and regions with special needs as well as to conditions that pose severe threats to development, such as natural disasters.
# We recognize that building an inclusive Information Society requires new forms of solidarity, partnership and cooperation among governments and other stakeholders, i.e. the private sector, civil society and international organizations. Realizing that the ambitious goal of this Declaration - bridging the digital divide and ensuring harmonious, fair and equitable development for all - will require strong commitment by all stakeholders, we call for digital solidarity, both at national and international levels.
# Nothing in this Declaration shall be construed as impairing, contradicting, restricting or derogating from the provisions of the Charter of the United Nations and the Universal Declaration of Human Rights, any other international instrument or national laws adopted in furtherance of these instruments.
The ''Intergovernmental Conference on Environmental Education'', organized by Unesco in co-operation with UNEP, convened in the City of Tbilisi reflecting the harmony and consensus achieved there, solemnly adopts the following Declaration.
<<<
In the last few decades, man has, through his power to transform his environment, wrought accelerated changes in the balance of nature. The result is frequent exposure of living species to dangers which may prove irreversible.

The [[Declaration of the United Nations Conference on the Human Environment]] organized in Stockholm in 1972 proclaimed: "to defend and improve the environment for present and future generations has become an imperative goal for mankind". This undertaking urgently calls for new strategies, incorporated into development, which particularly in the developing countries is a prerequisite for any such improvement. Solidarity and equity in the relations between nations should constitute the basis of a new international order, and bring together, as soon as possible, all available resources. Education utilizing the findings of science and technology should play a leading role in creating an awareness and a better understanding of environmental problems. It must foster positive patterns of conduct towards the environment and the nations' use of their resources.

Environmental education should be provided for all ages, at all levels and in both formal and non-formal education. The mass media have a great responsibility to make their immense resources available for this educational mission. Environmental specialists as well as those whose actions and decisions can have a marked effect on the environment, should be provided in the course of their training with the necessary knowledge and skills and be given a full sense of their responsibilities in this respect.

Environmental education, properly understood, should constitute a comprehensive lifelong education, one responsive to changes in a rapidly changing world. It should prepare the individual for life through an understanding of the major problems of the contemporary world, and the provision of skills and attributes needed to play a productive role towards improving life and protecting the environment with due regard given to ethical values. By adopting a holistic approach, rooted in a broad interdisciplinary base, it recreates an overall perspective which acknowledges the fact that natural environment and man-made environment are profoundly interdependent. It helps reveal the enduring continuity which links the acts of today to the consequences for tomorrow. It demonstrates the interdependencies among national communities and the need for solidarity among all mankind.

Environmental education must look outward to the community. It should involve the individual in an active problem-solving process within the context of specific realities, and it should encourage initiative, a sense of responsibility and commitment to build a better tomorrow. By its very nature, environmental education can make a powerful contribution to the renovation of the educational process.

In order to achieve these goals, environmental education requires a number of specific actions to fill the gaps that, despite outstanding endeavours, continue to exist in our present education systems.

Accordingly, the Tbilisi Conference:

//Appeals// to Member States to include in their educational policies measures designed to introduce environmental concerns, activities and contents into their education systems, on the basis of the above objectives and characteristics;

//Invites// educational authorities to promote and intensify thinking, research and innovation in regard to environmental education;

//Urges// Member States to collaborate in this field, in particular by exchanging experiences, research findings, documentation and materials and by making their training facilities widely available to teachers and specialists from other countries; and

//Appeals//, lastly, to the international community to give generously of its aid in order to strengthen this collaboration in a field which symbolizes the need for solidarity of all peoples and may be regarded as particularly conducive to the promotion of international understanding and to the cause of peace.
<<<
----

[[Recommendations of the Tbilisi Intergovernmental Conference on Environmental Education]]
The United Nations Conference on the Human Environment, having met at Stockholm from 5 to 16 June 1972, having considered the need for a common outlook and for common principles to inspire and guide the peoples of the world in the preservation and enhancement of the human environment,

Proclaims that:

1. Man is both creature and moulder of his environment, which gives him physical sustenance and affords him the opportunity for intellectual, moral, social and spiritual growth. In the long and tortuous evolution of the human race on this planet a stage has been reached when, through the rapid acceleration of science and technology, man has acquired the power to transform his environment in countless ways and on an unprecedented scale. Both aspects of man's environment, the natural and the man-made, are essential to his well-being and to the enjoyment of basic human rights the right to life itself.

2. The protection and improvement of the human environment is a major issue which affects the well-being of peoples and economic development throughout the world; it is the urgent desire of the peoples of the whole world and the duty of all Governments.

3. Man has constantly to sum up experience and go on discovering, inventing, creating and advancing. In our time, man's capability to transform his surroundings, if used wisely, can bring to all peoples the benefits of development and the opportunity to enhance the quality of life. Wrongly or heedlessly applied, the same power can do incalculable harm to human beings and the human environment. We see around us growing evidence of man-made harm in many regions of the earth: dangerous levels of pollution in water, air, earth and living beings; major and undesirable disturbances to the ecological balance of the biosphere; destruction and depletion of irreplaceable resources; and gross deficiencies, harmful to the physical, mental and social health of man, in the man-made environment, particularly in the living and working environment.

4. In the developing countries most of the environmental problems are caused by under-development. Millions continue to live far below the minimum levels required for a decent human existence, deprived of adequate food and clothing, shelter and education, health and sanitation. Therefore, the developing countries must direct their efforts to development, bearing in mind their priorities and the need to safeguard and improve the environment. For the same purpose, the industrialized countries should make efforts to reduce the gap themselves and the developing countries. In the industrialized countries, environmental problems are generally related to industrialization and technological development.

5. The natural growth of population continuously presents problems for the preservation of the environment, and adequate policies and measures should be adopted, as appropriate, to face these problems. Of all things in the world, people are the most precious. It is the people that propel social progress, create social wealth, develop science and technology and, through their hard work, continuously transform the human environment. Along with social progress and the advance of production, science and technology, the capability of man to improve the environment increases with each passing day.

6. A point has been reached in history when we must shape our actions throughout the world with a more prudent care for their environmental consequences. Through ignorance or indifference we can do massive and irreversible harm to the earthly environment on which our life and well being depend. Conversely, through fuller knowledge and wiser action, we can achieve for ourselves and our posterity a better life in an environment more in keeping with human needs and hopes. There are broad vistas for the enhancement of environmental quality and the creation of a good life. What is needed is an enthusiastic but calm state of mind and intense but orderly work. For the purpose of attaining freedom in the world of nature, man must use knowledge to build, in collaboration with nature, a better environment. To defend and improve the human environment for present and future generations has become an imperative goal for mankind-a goal to be pursued together with, and in harmony with, the established and fundamental goals of peace and of worldwide economic and social development.

7. To achieve this environmental goal will demand the acceptance of responsibility by citizens and communities and by enterprises and institutions at every level, all sharing equitably in common efforts. Individuals in all walks of life as well as organizations in many fields, by their values and the sum of their actions, will shape the world environment of the future.

Local and national governments will bear the greatest burden for large-scale environmental policy and action within their jurisdictions. International cooperation is also needed in order to raise resources to support the developing countries in carrying out their responsibilities in this field. A growing class of environmental problems, because they are regional or global in extent or because they affect the common international realm, will require extensive cooperation among nations and action by international organizations in the common interest.

The Conference calls upon Governments and peoples to exert common efforts for the preservation and improvement of the human environment, for the benefit of all the people and for their posterity.

''Principles''

States the common conviction that:

''Principle 1''

Man has the fundamental right to freedom, equality and adequate conditions of life, in an environment of a quality that permits a life of dignity and well-being, and he bears a solemn responsibility to protect and improve the environment for present and future generations. In this respect, policies promoting or perpetuating apartheid, racial segregation, discrimination, colonial and other forms of oppression and foreign domination stand condemned and must be eliminated.

''Principle 2''

The natural resources of the earth, including the air, water, land, flora and fauna and especially representative samples of natural ecosystems, must be safeguarded for the benefit of present and future generations through careful planning or management, as appropriate.

''Principle 3''

The capacity of the earth to produce vital renewable resources must be maintained and, wherever practicable, restored or improved.

''Principle 4''

Man has a special responsibility to safeguard and wisely manage the heritage of wildlife and its habitat, which are now gravely imperilled by a combination of adverse factors. Nature conservation, including wildlife, must therefore receive importance in planning for economic development.

''Principle 5''

The non-renewable resources of the earth must be employed in such a way as to guard against the danger of their future exhaustion and to ensure that benefits from such employment are shared by all mankind.

''Principle 6''

The discharge of toxic substances or of other substances and the release of heat, in such quantities or concentrations as to exceed the capacity of the environment to render them harmless, must be halted in order to ensure that serious or irreversible damage is not inflicted upon ecosystems. The just struggle of the peoples of ill countries against pollution should be supported.

''Principle 7''

States shall take all possible steps to prevent pollution of the seas by substances that are liable to create hazards to human health, to harm living resources and marine life, to damage amenities or to interfere with other legitimate uses of the sea.

''Principle 8''

Economic and social development is essential for ensuring a favorable living and working environment for man and for creating conditions on earth that are necessary for the improvement of the quality of life.

''Principle 9''

Environmental deficiencies generated by the conditions of under-development and natural disasters pose grave problems and can best be remedied by accelerated development through the transfer of substantial quantities of financial and technological assistance as a supplement to the domestic effort of the developing countries and such timely assistance as may be required.

''Principle 10''

For the developing countries, stability of prices and adequate earnings for primary commodities and raw materials are essential to environmental management, since economic factors as well as ecological processes must be taken into account.

''Principle 11''

The environmental policies of all States should enhance and not adversely affect the present or future development potential of developing countries, nor should they hamper the attainment

of better living conditions for all, and appropriate steps should be taken by States and international organizations with a view to reaching agreement on meeting the possible national and international economic consequences resulting from the application of environmental measures.

''Principle 12''

Resources should be made available to preserve and improve the environment, taking into account the circumstances and particular requirements of developing countries and any costs which may emanate- from their incorporating environmental safeguards into their development planning and the need for making available to them, upon their request, additional international technical and financial assistance for this purpose.

''Principle 13''

In order to achieve a more rational management of resources and thus to improve the environment, States should adopt an integrated and coordinated approach to their development planning so as to ensure that development is compatible with the need to protect and improve environment for the benefit of their population.

''Principle 14''

Rational planning constitutes an essential tool for reconciling any conflict between the needs of development and the need to protect and improve the environment.

''Principle 15''

Planning must be applied to human settlements and urbanization with a view to avoiding adverse effects on the environment and obtaining maximum social, economic and environmental benefits for all. In this respect projects which arc designed for colonialist and racist domination must be abandoned.

''Principle 16''

Demographic policies which are without prejudice to basic human rights and which are deemed appropriate by Governments concerned should be applied in those regions where the rate of population growth or excessive population concentrations are likely to have adverse effects on the environment of the human environment and impede development.

''Principle 17''

Appropriate national institutions must be entrusted with the task of planning, managing or controlling the 9 environmental resources of States with a view to enhancing environmental quality.

''Principle 18''

Science and technology, as part of their contribution to economic and social development, must be applied to the identification, avoidance and control of environmental risks and the solution of environmental problems and for the common good of mankind.

''Principle 19''

Education in environmental matters, for the younger generation as well as adults, giving due consideration to the underprivileged, is essential in order to broaden the basis for an enlightened opinion and responsible conduct by individuals, enterprises and communities in protecting and improving the environment in its full human dimension. It is also essential that mass media of communications avoid contributing to the deterioration of the environment, but, on the contrary, disseminates information of an educational nature on the need to project and improve the environment in order to enable mal to develop in every respect.

''Principle 20''

Scientific research and development in the context of environmental problems, both national and multinational, must be promoted in all countries, especially the developing countries. In this connection, the free flow of up-to-date scientific information and transfer of experience must be supported and assisted, to facilitate the solution of environmental problems; environmental technologies should be made available to developing countries on terms which would encourage their wide dissemination without constituting an economic burden on the developing countries.

''Principle 21''

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 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 22''

States shall cooperate to develop further the international law regarding liability and compensation for the victims of pollution and other environmental damage caused by activities within the jurisdiction or control of such States to areas beyond their jurisdiction.

''Principle 23''

Without prejudice to such criteria as may be agreed upon by the international community, or to standards which will have to be determined nationally, it will be essential in all cases to consider the systems of values prevailing in each country, and the extent of the applicability of standards which are valid for the most advanced countries but which may be inappropriate and of unwarranted social cost for the developing countries.

''Principle 24''

International matters concerning the protection and improvement of the environment should be handled in a cooperative spirit by all countries, big and small, on an equal footing. Cooperation through multilateral or bilateral arrangements or other appropriate means is essential to effectively control, prevent, reduce and eliminate adverse environmental effects resulting from activities conducted in all spheres, in such a way that due account is taken of the sovereignty and interests of all States.

''Principle 25''

States shall ensure that international organizations play a coordinated, efficient and dynamic role for the protection and improvement of the environment.

''Principle 26''

Man and his environment must be spared the effects of nuclear weapons and all other means of mass destruction. States must strive to reach prompt agreement, in the relevant international organs, on the elimination and complete destruction of such weapons.
<<<
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]]
[[Goal 7 of the Millennium Development Goals]]
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
/***
|Name|DisableWikiLinksPlugin|
|Source|http://www.TiddlyTools.com/#DisableWikiLinksPlugin|
|Version|1.6.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Tiddler.prototype.autoLinkWikiWords, 'wikiLink' formatter|
|Options|##Configuration|
|Description|selectively disable TiddlyWiki's automatic ~WikiWord linking behavior|
This plugin allows you to disable TiddlyWiki's automatic ~WikiWord linking behavior, so that WikiWords embedded in tiddler content will be rendered as regular text, instead of being automatically converted to tiddler links.  To create a tiddler link when automatic linking is disabled, you must enclose the link text within {{{[[...]]}}}.
!!!!!Usage
<<<
You can block automatic WikiWord linking behavior for any specific tiddler by ''tagging it with<<tag excludeWikiWords>>'' (see configuration below) or, check a plugin option to disable automatic WikiWord links to non-existing tiddler titles, while still linking WikiWords that correspond to existing tiddlers titles or shadow tiddler titles.  You can also block specific selected WikiWords from being automatically linked by listing them in [[DisableWikiLinksList]] (see configuration below), separated by whitespace.  This tiddler is optional and, when present, causes the listed words to always be excluded, even if automatic linking of other WikiWords is being permitted.  

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

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

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

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

Tiddler.prototype.disableWikiLinks_changed = Tiddler.prototype.changed;
Tiddler.prototype.changed = function()
{
	this.disableWikiLinks_changed.apply(this,arguments);
	// remove excluded wiki words from links array
	var t=store.getTiddlerText(config.options.txtDisableWikiLinksList,"").readBracketedList();
	if (t.length) for (var i=0; i<t.length; i++)
		if (this.links.contains(t[i]))
			this.links.splice(this.links.indexOf(t[i]),1);
};
//}}}
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.%/
''ELS Design Studios'' was established in 1995, and specializes in ''interaction design'', ''visual design'', and ''information architecture'' to produce interactive systems and information-rich presentations for businesses, organizations, and individuals.

@@display:block;text-align:center;font-size:18pt;color:#0c0;font-family:"trebuchet ms";//Your web site or application can be more
intuitive, expressive, functional... effective!//@@

''We work closely //with// you to focus your imagination'' and identify well-defined, practical design goals for your project. Through a collaborative process, we help you to refine your message and set the right tone and personality for your site to match your creative sensibilities and/or business needs, ''ensuring that your style, strategy, message and vision comes through'' in the final result.

Through a combination of user-centric design, handcrafted production, and personalized service, our design approach emphasizes the ''visitor experience'' to create powerful ''interactive applications, documents or on-line presentations'' that display high-quality information more effectively and help you achieve your goals.

We draw upon years of experience producing commercial software products to guide the planning, design, and development processes to deliver robust, well-tested functionality.  Throughout the various stages of design and implementation, we provide guidance and recommendations for your decision-making processes, while insulating you from the arcane technological details that can divert your attention from achieving your project goals.  We take the time to explain things clearly, so you can make informed decisions that will lead a highly-effective web site that is uniquely suited to your specific purposes.

----
@@font-size:12pt;Whether your site is presenting your personal creativity or furthering your business objectives, ''our role is to help you to realize YOUR vision'' for YOUR web site or application interface.@@
----

@@display:block;font-size:8pt;line-height:110%;The founder and principal designer, Eric L. Shulman, brings a wealth of direct, intensive experience in developing complex interactive systems.  His designs emphasize both ease-of-use and rich functionality to deliver 'best-of-breed' user experiences.  His professional and academic qualifications include an interdisciplinary degree in "Interactive Systems Design" from [[Carnegie-Mellon University|http://www.cmu.edu]] (1985), as well as many years of user interface and software design work on significant commercial products.

At [[Lotus Development Corporation|http://www.lotus.com]], he was directly involved in the innovation of new graphical interface techniques for "1-2-3", their flagship spreadsheet product.  He has also been a Senior Research Engineer with [[OpenData, Inc.|http://www.opendata.com]], and as well as a key contributor in the Product Design Group at [[Clarify, Inc.|http://www.clarify.com]], where he developed comprehensive interface design standards for their suite of Customer Relationship Management (CRM) applications, and provided cross-team guidance and consultation for their marketing, engineering, quality assurance, and documentation organizations.@@
{{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.earthday.net/}}}
<html><iframe
	src = "http://www.earthday.net/"
	title = "Earth Day"
	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 ''Vuze'' 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.vuze.com/details/4GFAL6F65JJE2WTQMIWTZ6EYLSYCREO5.html}}}
<html><iframe
	src = "http://www.vuze.com/details/4GFAL6F65JJE2WTQMIWTZ6EYLSYCREO5.html"
	title = "Earth Day 1990 Video: Oh Say Can You See, By The One Light in All "
	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://network.earthday.net/video/earth-day-anthem-oh-say-can}}}
<html><iframe
	src = "http://network.earthday.net/video/earth-day-anthem-oh-say-can"
	title = "Earth Day Anthem: Oh say can you see by the one light in all"
	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 ''earth2tech web site'' 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://earth2tech.com/}}}
<html><iframe
	src = "http://earth2tech.com/"
	title = "earth2tech web site"
	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 ''EcoGeek'' 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.ecogeek.org/}}}
<html><iframe
	src = "http://www.ecogeek.org/"
	title = "EcoGeek"
	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. 
!! A ~TiddlyWiki edition
The web-based version of the ''Stern Review'' has been "translated" by the [[Information and Communications Sub-Committee]] of the [[NGO Committee on Education]] into the "language" of a TiddlyWikiPerfect 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 ~TiddlyWiki edition is available at http://www.climatechange3.net/stern-review/
!! Bookmarked pdf edition
The original, official version of the report was published as a a set of pdf files 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 bookmarked pdf file is available at http://www.climatechange3.net/stern-review/stern-review.pdf
!! Concise Executive Summary
The TiddlyWikiPerfect version of the Stern Review also includes a shortened Executive Summary - the original being more than thirty pages long - that highlights the key concepts in each section and chapter.
The economic of information provide a vital key to the transformative nature of a [[knowledge-based universe|Knowledge-based universe]]
/***
|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>
<!--}}}-->
Type the text for 'Education for Sustainable Development'
<<tiddler "DPI/NGO Workshop">> [[edit contents|DPI/NGO Workshop]]
> "Edward Tufte has written seven books, including //Visual Explanations, Envisioning Information//, //The Visual Display of Quantitative Information//, and //Data Analysis for Politics and Policy//. He writes, designs, and self-publishes his books on analytical design, which have received more than 40 awards for content and design. He is Professor Emeritus at Yale University, where he taught courses in statistical evidence, information design, and interface design. His current work includes landscape sculpture, printmaking, video and a new book." from http://www.edwardtufte.com/tufte/

{{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.edwardtufte.com/}}}
<html><iframe
	src = "http://www.edwardtufte.com/"
	title = "Edward Tufte web site"
	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 web site of [[Information Habitat: Where Information Lives]] .
You can view this page in a separate browser tab or window at http://habitat.igc.org/projects/eie.htm@@
<html><iframe
	title = "Elements of Information Ecology - An Open Source Curriculum"
	src = "http://habitat.igc.org/projects/eie.htm"
	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.
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|
|Documentation|http://www.TiddlyTools.com/#ExportTiddlersPluginInfo|
|Version|2.9.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|interactively select/export tiddlers to a separate file|
!!!!!Documentation
>see [[ExportTiddlersPluginInfo]]
!!!!!Inline control panel (live):
><<exportTiddlers inline>>
!!!!!Revisions
<<<
2009.07.06 [2.9.3] moved HTML to section for size reduction
|please see [[ExportTiddlersPluginInfo]] for additional revision details|
2005.10.09 [0.0.0] development started
<<<
!!!!!Code
***/
//{{{
// version
version.extensions.ExportTiddlersPlugin= {major: 2, minor: 9, revision: 3, date: new Date(2009,7,6)};

// default shadow definition
config.shadowTiddlers.ExportTiddlers='<<exportTiddlers inline>>';

// add 'export' backstage task (following built-in import task)
if (config.tasks) { // TW2.2 or above
	config.tasks.exportTask = {
		text:'export',
		tooltip:'Export selected tiddlers to another file',
		content:'<<exportTiddlers inline>>'
	}
	config.backstageTasks.splice(config.backstageTasks.indexOf('importTask')+1,0,'exportTask');
}

config.macros.exportTiddlers = {
	$: function(id) { return document.getElementById(id); }, // abbreviation
	label: 'export tiddlers',
	prompt: 'Copy selected tiddlers to an export document',
	okmsg: '%0 tiddlers written to %1',
	failmsg: 'An error occurred while creating %1',
	mergeprompt: '%0\nalready contains tiddlers.\n'
		+'\nPress OK to merge new/revised tiddlers into existing file.'
		+'\nor, press Cancel to completely replace the file contents',
	mergestatus: 'Merged %0 new/revised tiddlers with %1 previously saved tiddlers',
	statusmsg: '%0 tiddler%1 - %2 selected for export',
	newdefault: 'export.html',
	datetimefmt: '0MM/0DD/YYYY 0hh:0mm:0ss',  // for 'filter date/time' edit fields
	type_TW: "tw", type_PS: "ps", type_TX: "tx", type_CS: "cs", type_NF: "nf", // file type tokens
	type_map: { // maps type param to token values
		tiddlywiki:"tw", tw:"tw", wiki: "tw",
		purestore: "ps", ps:"ps", store:"ps",
		plaintext: "tx", tx:"tx", text: "tx",
		comma:     "cs", cs:"cs", csv:  "cs",
		newsfeed:  "nf", nf:"nf", xml:  "nf", rss:"nf"
	},
	handler: function(place,macroName,params) {
		if (params[0]!='inline')
			{ createTiddlyButton(place,this.label,this.prompt,this.togglePanel); return; }
		var panel=this.createPanel(place);
		panel.style.position='static';
		panel.style.display='block';
	},
	createPanel: function(place) {
		var panel=this.$('exportPanel');
		if (panel) { panel.parentNode.removeChild(panel); }
		setStylesheet(store.getTiddlerText('ExportTiddlersPlugin##css',''),'exportTiddlers');
		panel=createTiddlyElement(place,'span','exportPanel',null,null)
		panel.innerHTML=store.getTiddlerText('ExportTiddlersPlugin##html','');
		this.initFilter();
		this.refreshList(0);
		var fn=this.$('exportFilename');
		if (window.location.protocol=='file:' && !fn.value.length) {
			// get new target path/filename
			var newPath=getLocalPath(window.location.href);
			var slashpos=newPath.lastIndexOf('/'); if (slashpos==-1) slashpos=newPath.lastIndexOf('\\'); 
			if (slashpos!=-1) newPath=newPath.substr(0,slashpos+1); // trim filename
			fn.value=newPath+this.newdefault;
		}
		return panel;
	},
	togglePanel: function(e) { var e=e||window.event;
		var cme=config.macros.exportTiddlers; // abbrev
		var parent=resolveTarget(e).parentNode;
		var panel=cme.$('exportPanel');
		if (panel==undefined || panel.parentNode!=parent)
			panel=cme.createPanel(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') {
			cme.refreshList(0);
			cme.$('exportFilename').focus(); 
			cme.$('exportFilename').select();
		}
		e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation(); return(false);
	},
	process: function(which) { // process panel control interactions
		var theList=this.$('exportList'); if (!theList) return;
		var count = 0;
		var total = store.getTiddlers('title').length;
		switch (which.id) {
			case 'exportFilter':
				count=this.filterExportList();
				var panel=this.$('exportFilterPanel');
				if (count==-1) { panel.style.display='block'; break; }
				this.$('exportStart').disabled=(count==0);
				this.$('exportDelete').disabled=(count==0);
				this.displayStatus(count,total);
				if (count==0) { alert('No tiddlers were selected'); panel.style.display='block'; }
				break;
			case 'exportStart':
				this.go();
				break;
			case 'exportDelete':
				this.deleteTiddlers();
				break;
			case 'exportHideFilter':
			case 'exportToggleFilter':
				var panel=this.$('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;
				}
				this.$('exportStart').disabled=(count==0);
				this.$('exportDelete').disabled=(count==0);
				this.displayStatus(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;
				}
				this.$('exportStart').disabled=(count==0);
				this.$('exportDelete').disabled=(count==0);
				this.displayStatus(count,count);
				break;
			case 'exportSelectOpened':
				for (var t=0; t<theList.options.length; t++) theList.options[t].selected=false;
				var tiddlerDisplay=this.$('tiddlerDisplay');
				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;
					}
				}
				this.$('exportStart').disabled=(count==0);
				this.$('exportDelete').disabled=(count==0);
				this.displayStatus(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);
				this.displayStatus(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':
				this.$('exportPanel').style.display='none';
				break;
		}
	},
	displayStatus: function(count,total) {
		var txt=this.statusmsg.format([total,total!=1?'s':'',!count?'none':count==total?'all':count]);
		clearMessage();	displayMessage(txt);
		return txt;
	},
	refreshList: function(selectedIndex) {
		var theList = this.$('exportList'); if (!theList) return;
		// get the sort order
		var sort;
		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
		var count=0;
		for (var t=5; 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' and 'delete' buttons if no tiddlers selected
		this.$('exportStart').disabled=(count==0);
		this.$('exportDelete').disabled=(count==0);

		// show selection count
		var tiddlers = store.getTiddlers('title');
		if (theList.options.length) this.displayStatus(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
		this.$('exportStart').disabled=true;
		this.$('exportDelete').disabled=true;
		this.displayStatus(0,tiddlers.length);
	},
	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 filetype=this.$('exportFormat').value.toLowerCase();
		var defext='html';
		if (filetype==this.type_TX) defext='txt';
		if (filetype==this.type_CS) defext='csv';
		if (filetype==this.type_NF) defext='xml';
		var file=this.newdefault.replace(/html$/,defext);
		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=defext;
				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|XML files|*.xml|';
				s.FilterIndex=defext=='txt'?2:'html'?3:'xml'?4:1;
				s.InitialDir=path;
				s.FileName=file;
				if (s.showOpen()) var result=s.FileName;
			}
			catch(e) {  // fallback
				var result=prompt(msg,path+file);
			}
		}
		return result;
	},
	initFilter: function() {
		this.$('exportFilterStart').checked=false; this.$('exportStartDate').value='';
		this.$('exportFilterEnd').checked=false;  this.$('exportEndDate').value='';
		this.$('exportFilterTags').checked=false; this.$('exportTags').value='';
		this.$('exportFilterText').checked=false; this.$('exportText').value='';
		this.showFilterFields();
	},
	showFilterFields: function(which) {
		var show=this.$('exportFilterStart').checked;
		this.$('exportFilterStartBy').style.display=show?'block':'none';
		this.$('exportStartDate').style.display=show?'block':'none';
		var val=this.$('exportFilterStartBy').value;
		this.$('exportStartDate').value
			=this.getFilterDate(val,'exportStartDate').formatString(this.datetimefmt);
		if (which && (which.id=='exportFilterStartBy') && (val=='other'))
			this.$('exportStartDate').focus();

		var show=this.$('exportFilterEnd').checked;
		this.$('exportFilterEndBy').style.display=show?'block':'none';
		this.$('exportEndDate').style.display=show?'block':'none';
		var val=this.$('exportFilterEndBy').value;
		this.$('exportEndDate').value
			=this.getFilterDate(val,'exportEndDate').formatString(this.datetimefmt);
		 if (which && (which.id=='exportFilterEndBy') && (val=='other'))
			this.$('exportEndDate').focus();

		var show=this.$('exportFilterTags').checked;
		this.$('exportTags').style.display=show?'block':'none';

		var show=this.$('exportFilterText').checked;
		this.$('exportText').style.display=show?'block':'none';
	},
	getFilterDate: function(val,id) {
		var result=0;
		switch (val) {
			case 'file':
				result=new Date(document.lastModified);
				break;
			case 'other':
				result=new Date(this.$(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;
		}
		return result;
	},
	filterExportList: function() {
		var theList  = this.$('exportList'); if (!theList) return -1;
		var filterStart=this.$('exportFilterStart').checked;
		var val=this.$('exportFilterStartBy').value;
		var startDate=config.macros.exportTiddlers.getFilterDate(val,'exportStartDate');
		var filterEnd=this.$('exportFilterEnd').checked;
		var val=this.$('exportFilterEndBy').value;
		var endDate=config.macros.exportTiddlers.getFilterDate(val,'exportEndDate');
		var filterTags=this.$('exportFilterTags').checked;
		var tags=this.$('exportTags').value;
		var filterText=this.$('exportFilterText').checked;
		var text=this.$('exportText').value;
		if (!(filterStart||filterEnd||filterTags||filterText)) {
			alert('Please set the selection filter');
			this.$('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;
		}
		// if filter by tags, get list of matching tiddlers
		// use getMatchingTiddlers() (if MatchTagsPlugin is installed) for full boolean expressions
		// otherwise use getTaggedTiddlers() for simple tag matching
		if (filterTags) {
			var fn=store.getMatchingTiddlers||store.getTaggedTiddlers;
			var t=fn.apply(store,[tags]);
			var tagged=[];
			for (var i=0; i<t.length; i++) tagged.push(t[i].title);
		}
		// 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 && !tagged.contains(tiddler.title))
			|| (filterText && (tiddler.text.indexOf(text)==-1) && (tiddler.title.indexOf(text)==-1)))
				sel=false;
			opt.selected=sel;
			count+=sel?1:0;
			total++;
		}
		return count;
	},
	deleteTiddlers: function() {
		var list=this.$('exportList'); if (!list) return;
		var tids=[];
		for (i=0;i<list.length;i++)
			if (list.options[i].selected && list.options[i].value.length)
				tids.push(list.options[i].value);
		if (!confirm('Are you sure you want to delete these tiddlers:\n\n'+tids.join(', '))) return;
		store.suspendNotifications();
		for (t=0;t<tids.length;t++) {
			var tid=store.getTiddler(tids[t]); if (!tid) continue;
			var msg="'"+tid.title+"' is tagged with 'systemConfig'.\n\n";
			msg+='Removing this tiddler may cause unexpected results.  Are you sure?'
			if (tid.tags.contains('systemConfig') && !confirm(msg)) continue;
			store.removeTiddler(tid.title);
			story.closeTiddler(tid.title);
		}
		store.resumeNotifications();
		alert(tids.length+' tiddlers deleted');
		this.refreshList(0); // reload listbox
		store.notifyAll(); // update page display
	},
	go: function() {
		if (window.location.protocol!='file:') // make sure we are local
			{ displayMessage(config.messages.notFileUrlError); return; }
		// get selected tidders, target filename, target type, and notes
		var list=this.$('exportList'); if (!list) return;
		var tids=[]; for (var i=0; i<list.options.length; i++) {
			var opt=list.options[i]; if (!opt.selected||!opt.value.length) continue;
			var tid=store.getTiddler(opt.value); if (!tid) continue;
			tids.push(tid);
		}
		if (!tids.length) return; // no tiddlers selected
		var target=this.$('exportFilename').value.trim();
		if (!target.length) {
			displayMessage('A local target path/filename is required',target);
			return;
		}
		var filetype=this.$('exportFormat').value.toLowerCase();
		var notes=this.$('exportNotes').value.replace(/\n/g,'<br>');
		var total={val:0};
		var out=this.assembleFile(target,filetype,tids,notes,total);
		var link='file:///'+target.replace(/\\/g,'/');
		var samefile=link==decodeURIComponent(window.location.href);
		var p=getLocalPath(document.location.href);
		if (samefile) {
			if (config.options.chkSaveBackups) { var t=loadOriginal(p);if(t)saveBackup(p,t); }
			if (config.options.chkGenerateAnRssFeed && saveRss instanceof Function) saveRss(p);
		}
		var ok=saveFile(target,out);
		displayMessage((ok?this.okmsg:this.failmsg).format([total.val,target]),link);
	},
	plainTextHeader:
		 'Source:\n\t%0\n'
		+'Title:\n\t%1\n'
		+'Subtitle:\n\t%2\n'
		+'Created:\n\t%3 by %4\n'
		+'Application:\n\tTiddlyWiki %5 / %6 %7\n\n',
	plainTextTiddler:
		'- - - - - - - - - - - - - - -\n'
		+'|     title: %0\n'
		+'|   created: %1\n'
		+'|  modified: %2\n'
		+'| edited by: %3\n'
		+'|      tags: %4\n'
		+'- - - - - - - - - - - - - - -\n'
		+'%5\n',
	plainTextFooter:
		'',
	newsFeedHeader:
		 '<'+'?xml version="1.0"?'+'>\n'
		+'<rss version="2.0">\n'
		+'<channel>\n'
		+'<title>%1</title>\n'
		+'<link>%0</link>\n'
		+'<description>%2</description>\n'
		+'<language>en-us</language>\n'
		+'<copyright>Copyright '+(new Date().getFullYear())+' %4</copyright>\n'
		+'<pubDate>%3</pubDate>\n'
		+'<lastBuildDate>%3</lastBuildDate>\n'
		+'<docs>http://blogs.law.harvard.edu/tech/rss</docs>\n'
		+'<generator>TiddlyWiki %5 / %6 %7</generator>\n',
	newsFeedTiddler:
		'\n%0\n',
	newsFeedFooter:
		'</channel></rss>',
	pureStoreHeader:
		 '<html><body>'
		+'<style type="text/css">'
		+'	#storeArea {display:block;margin:1em;}'
		+'	#storeArea div {padding:0.5em;margin:1em;border:2px solid black;height:10em;overflow:auto;}'
		+'	#pureStoreHeading {width:100%;text-align:left;background-color:#eeeeee;padding:1em;}'
		+'</style>'
		+'<div id="pureStoreHeading">'
		+'	TiddlyWiki "PureStore" export file<br>'
		+'	Source'+': <b>%0</b><br>'
		+'	Title: <b>%1</b><br>'
		+'	Subtitle: <b>%2</b><br>'
		+'	Created: <b>%3</b> by <b>%4</b><br>'
		+'	TiddlyWiki %5 / %6 %7<br>'
		+'	Notes:<hr><pre>%8</pre>'
		+'</div>'
		+'<div id="storeArea">',
	pureStoreTiddler:
		'%0\n%1',
	pureStoreFooter:
		'</div><!--POST-BODY-START-->\n<!--POST-BODY-END--></body></html>',
	assembleFile: function(target,filetype,tids,notes,total) {
		var revised='';
		var now = new Date().toLocaleString();
		var src=convertUnicodeToUTF8(document.location.href);
		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 v=version.extensions.ExportTiddlersPlugin; var pver = v.major+'.'+v.minor+'.'+v.revision;
		var headerargs=[src,title,subtitle,now,user,twver,'ExportTiddlersPlugin',pver,notes];
		switch (filetype) {
			case this.type_TX: // plain text
				var header=this.plainTextHeader.format(headerargs);
				var footer=this.plainTextFooter;
				break;
			case this.type_CS: // comma-separated
				var fields={};
				for (var i=0; i<tids.length; i++) for (var f in tids[i].fields) fields[f]=f;
				var names=['title','created','modified','modifier','tags','text'];
				for (var f in fields) names.push(f);
				var header=names.join(',')+'\n';
				var footer='';
				break;
			case this.type_NF: // news feed (XML)
				headerargs[0]=store.getTiddlerText('SiteUrl','');
				var header=this.newsFeedHeader.format(headerargs);
				var footer=this.newsFeedFooter;
				break;
			case this.type_PS: // PureStore (no code)
				var header=this.pureStoreHeader.format(headerargs);
				var footer=this.pureStoreFooter;
				break;
			case this.type_TW: // full TiddlyWiki
			default:
				var currPath=getLocalPath(window.location.href);
				var original=loadFile(currPath);
				if (!original) { displayMessage(config.messages.cantSaveError); return; }
				var posDiv = locateStoreArea(original);
				if (!posDiv) { displayMessage(config.messages.invalidFileError.format([currPath])); return; }
				var header = original.substr(0,posDiv[0]+startSaveArea.length)+'\n';
				var footer = '\n'+original.substr(posDiv[1]);
				break;
		}
		var out=this.getData(target,filetype,tids,fields);
		var revised = header+convertUnicodeToUTF8(out.join('\n'))+footer;
		// if full TW, insert page title and language attr, and reset all MARKUP blocks...
		if (filetype==this.type_TW) {
			var newSiteTitle=convertUnicodeToUTF8(getPageTitle()).htmlEncode();
			revised=revised.replaceChunk('<title'+'>','</title'+'>',' ' + newSiteTitle + ' ');
			revised=updateLanguageAttribute(revised);
			var titles=[]; for (var i=0; i<tids.length; i++) titles.push(tids[i].title);
			revised=updateMarkupBlock(revised,'PRE-HEAD',
				titles.contains('MarkupPreHead')? 'MarkupPreHead' :null);
			revised=updateMarkupBlock(revised,'POST-HEAD',
				titles.contains('MarkupPostHead')?'MarkupPostHead':null);
			revised=updateMarkupBlock(revised,'PRE-BODY',
				titles.contains('MarkupPreBody')? 'MarkupPreBody' :null);
			revised=updateMarkupBlock(revised,'POST-SCRIPT',
				titles.contains('MarkupPostBody')?'MarkupPostBody':null);
		}
		total.val=out.length;
		return revised;
	},
	getData: function(target,filetype,tids,fields) {
		// output selected tiddlers and gather list of titles (for use with merge)
		var out=[]; var titles=[];
		var url=store.getTiddlerText('SiteUrl','');
		for (var i=0; i<tids.length; i++) {
			out.push(this.formatItem(store,filetype,tids[i],url,fields));
			titles.push(tids[i].title);
		}
		// if TW or PureStore format, ask to merge with existing tiddlers (if any)
		if (filetype==this.type_TW || filetype==this.type_PS) {
			var txt=loadFile(target);
			if (txt && txt.length) {
				var remoteStore=new TiddlyWiki();
				if (version.major+version.minor*.1+version.revision*.01<2.52) txt=convertUTF8ToUnicode(txt);
				if (remoteStore.importTiddlyWiki(txt) && confirm(this.mergeprompt.format([target]))) {
					var existing=remoteStore.getTiddlers('title');
					for (var i=0; i<existing.length; i++)
						if (!titles.contains(existing[i].title))
							out.push(this.formatItem(remoteStore,filetype,existing[i],url));
					displayMessage(this.mergestatus.format([tids.length,out.length-tids.length]));
				}
			}
		}
		return out;
	},
	formatItem: function(s,f,t,u,fields) {
		if (f==this.type_TW)
			var r=s.getSaver().externalizeTiddler(s,t);
		if (f==this.type_PS)
			var r=this.pureStoreTiddler.format([t.title,s.getSaver().externalizeTiddler(s,t)]);
		if (f==this.type_NF)
			var r=this.newsFeedTiddler.format([t.saveToRss(u)]);
		if (f==this.type_TX)
			var r=this.plainTextTiddler.format([t.title, t.created.toLocaleString(), t.modified.toLocaleString(),
				t.modifier, String.encodeTiddlyLinkList(t.tags), t.text]);
		if (f==this.type_CS) {
			function toCSV(t) { return '"'+t.replace(/"/g,'""')+'"'; } // always encode CSV
			var out=[ toCSV(t.title), toCSV(t.created.toLocaleString()), toCSV(t.modified.toLocaleString()),
				toCSV(t.modifier), toCSV(String.encodeTiddlyLinkList(t.tags)), toCSV(t.text) ];
			for (var f in fields) out.push(toCSV(t.fields[f]||''));
			var r=out.join(',');
		}
		return r||"";
	}
}
//}}}
/***
!!!Control panel CSS
//{{{
!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;-webkit-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;-webkit-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%; }
!end
//}}}
!!!Control panel HTML
//{{{
!html
<!-- target path/file  -->
<div>
export to 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="var fn=config.macros.exportTiddlers.askForFilename(this); if (fn.length) this.previousSibling.value=fn; ">
</div>

<!-- output format -->
<div>
output file format:
<select id="exportFormat" size=1>
	<option value="TW">TiddlyWiki HTML document (includes core code)</option>
	<option value="PS">TiddlyWiki "PureStore" HTML file (tiddler data only)</option>
	<option value="TX">TiddlyWiki plain text TXT file (tiddler source listing)</option>
	<option value="CS">Comma-Separated Value (CSV) data file</option>
	<option value="NF">RSS NewsFeed XML file</option>
</select>
</div>

<!-- notes -->
<div>
notes:<br>
<textarea id="exportNotes" rows=3 cols=40 style="height:4em;margin-bottom:5px;" onfocus="this.select()"></textarea> 
</div>

<!-- list of tiddlers -->
<table><tr align="left"><td>
	select:
	<a href="JavaScript:;" id="exportSelectAll"
		onclick="config.macros.exportTiddlers.process(this)" title="select all tiddlers">
		&nbsp;all&nbsp;</a>
	<a href="JavaScript:;" id="exportSelectChanges"
		onclick="config.macros.exportTiddlers.process(this)" title="select tiddlers changed since last save">
		&nbsp;changes&nbsp;</a>
	<a href="JavaScript:;" id="exportSelectOpened"
		onclick="config.macros.exportTiddlers.process(this)" title="select tiddlers currently being displayed">
		&nbsp;opened&nbsp;</a>
	<a href="JavaScript:;" id="exportSelectRelated"
		onclick="config.macros.exportTiddlers.process(this)" title="select tiddlers related to the currently selected tiddlers">
		&nbsp;related&nbsp;</a>
	<a href="JavaScript:;" id="exportToggleFilter"
		onclick="config.macros.exportTiddlers.process(this)" title="show/hide selection filter">
		&nbsp;filter&nbsp;</a>
</td><td align="right">
	<a href="JavaScript:;" id="exportListSmaller"
		onclick="config.macros.exportTiddlers.process(this)" title="reduce list size">
		&nbsp;&#150;&nbsp;</a>
	<a href="JavaScript:;" id="exportListLarger"
		onclick="config.macros.exportTiddlers.process(this)" title="increase list size">
		&nbsp;+&nbsp;</a>
</td></tr></table>
<select id="exportList" multiple size="10" style="margin-bottom:5px;"
	onchange="config.macros.exportTiddlers.refreshList(this.selectedIndex)">
</select><br>

<!-- 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="config.macros.exportTiddlers.process(this)" title="hide selection filter">hide</a>
</td></tr></table>
<div class="box">

<input type="checkbox" class="chk" id="exportFilterStart" value="1"
	onclick="config.macros.exportTiddlers.showFilterFields(this)"> starting date/time<br>
<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">
	<select size=1 id="exportFilterStartBy"
		onchange="config.macros.exportTiddlers.showFilterFields(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="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="config.macros.exportTiddlers.$('exportFilterStartBy').value='other';">
</td></tr></table>

<input type="checkbox" class="chk" id="exportFilterEnd" value="1"
	onclick="config.macros.exportTiddlers.showFilterFields(this)"> ending date/time<br>
<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">
	<select size=1 id="exportFilterEndBy"
		onchange="config.macros.exportTiddlers.showFilterFields(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="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="config.macros.exportTiddlers.$('exportFilterEndBy').value='other';">
</td></tr></table>

<input type="checkbox" class="chk" id=exportFilterTags value="1"
	onclick="config.macros.exportTiddlers.showFilterFields(this)"> match tags<br>
<input type="text" id="exportTags" onfocus="this.select()">

<input type="checkbox" class="chk" id=exportFilterText value="1"
	onclick="config.macros.exportTiddlers.showFilterFields(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="btn4" onclick="config.macros.exportTiddlers.process(this)"
	id="exportFilter" value="apply filter">
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"
	id="exportStart" value="export tiddlers">
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"
	id="exportDelete" value="delete tiddlers">
<input type=button class="btn4" onclick="config.macros.exportTiddlers.process(this)"
	id="exportClose" value="close">
</div><!--center-->
!end
//}}}
***/
 
/***
|Name|ExportTiddlersPluginInfo|
|Source|http://www.TiddlyTools.com/#ExportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ExportTiddlersPluginInfo|
|Version|2.9.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|Documentation for ExportTiddlersPlugin|
interactively select and extract tiddlers from your ~TiddlyWiki document, and write them into another file, using one of several different file formats:
* ~TiddlyWiki - a complete, stand-alone, standard TiddlyWiki HTML document
* ~PureStore - a small HTML archive file containing tiddler data only (no core code)
* ~PlainText - a simple TXT text file with tiddler source listings
* Comma - a "Comma Separated Value" data/spreadsheet file
* ~NewsFeed  - an XML-format file that can be published for RSS syndication.
!!!!!Usage
<<<
{{{
<<exportTiddlers>> (sidebar menu item)
<<exportTiddlers inline>> (embedded control panel)
}}}

Inline control panel (live):
<<exportTiddlers inline>>

Optional "special tiddlers" used by this plugin:
* SiteUrl<br>URL for official server-published version of document being viewed (used in XML export). Default: //none//
<<<
!!!!!Revisions
<<<
2009.07.06 [2.9.3] moved HTML to section for size reduction
2009.07.03 [2.9.2] TW252 fixup: don't call convertUTF8ToUnicode() for local loadFile() I/O
2009.04.30 [2.9.1] custom fields in CSV output
2009.04.19 [2.9.0] added CSV format
2009.02.26 [2.8.5] use macro-specific definition of $() function abbreviation (avoids conflict with JQuery)
2008.09.29 [2.8.4] in getData(), convert existing TW file from UTF8 to Unicode before merging to correct handling of international characters and symbols.
2008.09.26 [2.8.3] in go(), if rewriting *current* file and chkSaveBackups and/or chkGenerateAnRssFeed is enabled, then write a backup file or RSS feed, respectively.
2008.09.24 [2.8.2] in assembleFile(), make sure that markup block is updated if corresponding Markup* tiddler is exported.
2008.09.19 [2.8.1] in formatItem(), removed unnecessary convertUnicodeToUTF8() (was causing double-conversion!)
2008.09.11 [2.8.0] extensive code cleanup: moved all global functions inside macro object. Re-wrote file generator and I/O to support TiddlyWiki, PlainText, PureStore, and NewsFeed file formats.  Replaced inline 'match tags' code with use of getMatchingTiddlers() from [[MatchTagsPlugin]] (if installed), with fallback to core getTaggedTiddlers() otherwise.
2008.05.27 [2.7.0] added ability to 'merge' with existing export file.  Also, revised 'matchTags' functionality to be more robust and more efficient
2008.05.12 [2.6.1] automatically add 'export' task to backstage (moved from BackstageTweaks)
2008.03.10 [2.6.0] added "delete tiddlers" button
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.11.10 [2.5.1] removed debugging alert messages from promptForExportFilename()
2007.10.31 [2.5.0] code reduction: removed incomplete/unused interface and supporting functions for exporting directly to http, https or ftp servers.  Plugin now supports exporting to local file only.  Also, updated TW document output to generate TW2.2 compatible file format.
2007.10.30 [2.4.2] added automatic shadow tiddler definition for [[ExportTiddlers]]
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).
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" with fallback to "tiddlerDisplay" for TW2.1 or earlier
2007.03.01 [2.2.5] removed hijack of store.saveChanges()
2006.11.08 [2.2.4] added promptForExportFilename() and replaced type="file" control with edit field + browse button ("...").
2006.10.12 [2.2.3] in exportDIVFooter(), write POST-BODY-START/END markers for compatibility with TW2.1 core file format.
2006.05.11 [2.2.2] in createExportPanel, removed call to addNotification() to reduce unneeded feedback messages and increase overall document performance.
2006.05.02 [2.2.1] Use displayMessage() to show number of selected tiddlers instead of updating listbox 'header' item after each selection.  Prevents awkward 'scroll-to-top' behavior that made multi-select via ctrl-click nearly impossible.
2006.04.29 [2.2.0] New features: free-form "Notes" text inserted in the header of PureStore files.
2006.03.29 [2.1.3] added calls to convertUnicodeToUTF8() for generated output, so it better handles international characters.
2006.02.12 [2.1.2] more FF1501 bug fixes.
2006.02.04 [2.1.1] added var to unintended globals to avoids FireFox1501 crash bug
2006.02.02 [2.1.0] Added support for output of complete TiddlyWiki documents
2006.01.21 [2.0.1] Defer initial panel creation and only register a notification function when panel first is created
in saveChanges 'hijack', create panel as needed.  Note: if window.event is not available to identify the click location, the export panel is positioned relative to the 'tiddlerDisplay' element of the TW document.
2005.12.27 [2.0.0] Update for TW2.0.
2005.12.24 [0.9.5] Minor adjustments to CSS to force correct link colors regardless of TW stylesheet selection
2005.12.16 [0.9.4] Dynamically create/remove exportPanel so only one instance exists at a time
2005.11.15 [0.9.2] added non-Ajax post to bypass cross-domain security restrictions.
2005.11.08 [0.9.1] moved HTML, CSS and control initialization into exportInit() function and call from macro handler instead of at load time.
2005.10.28 [0.9.0] added 'select opened tiddlers' feature. Based on a suggestion by Geoff Slocock
2005.10.24 [0.8.3] Corrected hijack of 'save changes' when using http:
2005.10.18 [0.8.2] added AJAX functions
2005.10.18 [0.8.1] Corrected timezone handling and error checking/reporting when filtering tiddlers. More style tweaks, minor text changes and some assorted layout cleanup.
2005.10.17 [0.8.0] First pre-release.
2005.10.16 [0.7.0] filter by tags
2005.10.15 [0.6.0] filter by title/text
2005.10.14 [0.5.0] export to local file (DIV or XML)
2005.10.14 [0.4.0] filter by start/end date
2005.10.13 [0.3.0] panel interaction
2005.10.11 [0.2.0] panel layout
2005.10.10 [0.1.0] code framework
2005.10.09 [0.0.0] development started
<<<
//{{{
//  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;
}
//}}}
{{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://fcc-opengov.ideascale.com/akira/dtd/13050-5020}}}
<html><iframe
	src = "http://fcc-opengov.ideascale.com/akira/dtd/13050-5020"
	title = "FCC Broadband Brainstorm: Promote Awareness of Universal Broadband Opportunities in Climate Change Mitigation & Adaptation"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
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 '' '' 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.mozilla.com/en-US/}}}
<html><iframe
	src = "http://www.mozilla.com/en-US/"
	title = "Firefox"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></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.
/***
|''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.
***/

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
''Foundations for a Sustainable Common Future''

//Pollard, Robert, Earthcare Interfaith Network//
August, 1989. Baltimore, MD.

Identification of value issues that are key to a transition to a sustainable future; need for holistic approaches, interfaith cooperation, integrating faith and practice, networking skills, and participation in UNCED preparations. 

Testimony presented at the Globescope Pacific Assembly, Los Angeles, November 1989.

+++[Foundations for a Sustainable Common Future]

{{iframe{''Note'': This is a "framed" page from the ''Information Habitat: Where Information Lives'' 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/values/fscf.htm}}}
<html><iframe
	src = "http://habitat.igc.org/values/fscf.htm"
	title = "Foundations for a Sustainable Common Future"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
===
/***
|Name|FramedLinksPlugin|
|Source|http://www.TiddlyTools.com/#FramedLinksPlugin|
|Version|1.1.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|createExternalLink|
|Options|##Configuration|
|Description|clicking an external link opens an IFRAME following the link instead of opening a new tab/window|
This plugin causes clicks on external links to be rendered as inline frames (~IFRAMEs) instead of opening new browser tabs/windows.
!!!!!Usage
<<<
Use standard TiddlyWiki external link syntax into your tiddler content. If {{{chkFramedLinks}}} is enabled or the tiddler is tagged with 'framedLinks' (see Configuration), then whenever you click the external link an IFRAME will be dynamically added to the content.  Clicking on the link again removes the IFRAME.  Hold down any modifier (shift, control, or alt) while clicking a link ''temporarily'' bypasses the IFRAME handling and use the standard link handling behavior.
<<<
!!!!!Configuration
<<<
<<option chkFramedLinks>> display inline frames for all external links
&nbsp; &nbsp; {{{<<option chkFramedLinks>>}}}
<<option chkFramedLinksTag>> display inline frames for external links in tiddlers tagged with: <<option txtFramedLinksTag>> 
&nbsp; &nbsp; {{{<<option chkFramedLinksTag>> <<option txtFramedLinksTag>>}}}
IFRAME size (CSS units: %, em, px, cm, in) - width: <<option txtFrameWidth>> height: <<option txtFrameHeight>>
&nbsp; &nbsp; {{{<<option txtFrameWidth>> <<option txtFrameHeight>>}}}
<<<
!!!!!Examples
<<<
Try these links:
*http://www.TiddlyWiki.com
*http://www.TiddlyTools.com
*http://groups.google.com/group/TiddlyWiki/topics
<<<
!!!!!Revisions
<<<
2008.11.14 [1.1.1] fixed handling for external links embedded in //shadow// tiddlers
2008.09.13 [1.1.0] added support to selectively enable embedded IFRAMEs if the containing tiddler is tagged with 'framedLinks'
2007.11.29 [1.0.5] added slider animation and improved CSS handling for IFRAME height/width to maximize display area
2007.11.29 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.FramedLinksPlugin= {major: 1, minor: 1, revision: 1, date: new Date(2008,11,14)};

var co=config.options; // abbreviation
if (co.chkFramedLinks==undefined) co.chkFramedLinks=false;
if (co.chkFramedLinksTag==undefined) co.chkFramedLinksTag=true;
if (co.txtFramedLinksTag==undefined) co.txtFramedLinksTag="framedLinks";
if (co.txtFrameWidth==undefined) co.txtFrameWidth="100%";
if (co.txtFrameHeight==undefined) co.txtFrameHeight="80%";

window.framedLinks_createExternalLink=createExternalLink;
window.createExternalLink=function(place,url)
{
	var link=this.framedLinks_createExternalLink.apply(this,arguments);
	link.onclick=function(ev) { var e=ev?ev:window.event;
		var co=config.options; // abbreviation
		var here=story.findContainingTiddler(this);
		if (here) var tid=store.getTiddler(here.getAttribute("tiddler"));
		var enabled=co.chkFramedLinks || co.chkFramedLinksTag && tid && tid.isTagged(co.txtFramedLinksTag);
		if (!enabled || e.ctrlKey || e.shiftKey || e.altKey) return; // BYPASS
		var p=this.parentNode; 
		var f=this.nextSibling?this.nextSibling.firstChild:null; // get the IFRAME... maybe...
		var w=co.txtFrameWidth; if (!w || !w.length) w="100%";
		var h=co.txtFrameHeight; if (!h || !h.length) h="80%";
		if (h.indexOf("%")) h=(findWindowHeight()*h.replace(/%/,"")/100)+"px"; // calc height as % of window
		var showing=f && f.nodeName.toUpperCase()=="IFRAME"; // does IFRAME really exist?
		var stretchCell=p.nodeName.toUpperCase()=="TD" && w.indexOf("%")!=-1 && w.replace(/%/,"")>=100;
		if (!showing) { // create an iframe
			link.style.display="block"; // force IFRAME onto line following link
			if (stretchCell) { p.setAttribute("savedWidth",p.style.width); p.style.width="100%"; } // adjust TD so IFRAME stretches
			var wrapper=createTiddlyElement(null,"span"); // wrapper for slider animation
			wrapper.setAttribute("url",this.href); // for async loading of frame after animation completes
			var f=createTiddlyElement(wrapper,"iframe"); // create IFRAME
			f.style.backgroundColor="#fff"; f.style.width=w; f.style.height=h;
			p.insertBefore(wrapper,this.nextSibling);
			function loadURL(wrapper) { var f=wrapper.firstChild; var url=wrapper.getAttribute("url");
				var d=f.contentDocument?f.contentDocument:(f.contentWindow?f.contentWindow.document:f.document);
				d.open(); d.writeln("<html>connecting to "+url+"</html>"); d.close();
				try { f.src=url; } // if the iframe can't handle the href
				catch(e) { alert(e.description?e.description:e.toString()); } // ... then report the error
				window.scrollTo(0,ensureVisible(wrapper));
			}
			if (!co.chkAnimate) loadURL(wrapper);
			else {
				var morph=new Slider(wrapper,true);
				morph.callback=loadURL;
				morph.properties.push({style: 'width', start: 0, end: 100, template: '%0%'});
				anim.startAnimating(morph);
			}
		} else { // remove iframe
			link.style.display="inline"; // restore link style
			if (stretchCell) p.style.width=p.getAttribute("savedWidth"); // restore previous width of TD
			if (!co.chkAnimate) p.removeChild(f.parentNode);
			else {
				var morph=new Slider(f.parentNode,false,false,"all");
				morph.properties.push({style: 'width', start: 100, end: 0, template: '%0%'});
				anim.startAnimating(morph);
			}
		}
		e.cancelBubble=true; if (e.stopPropagation) e.stopPropagation(); return false;
	}
	return link;
}
//}}}
[[Climate Change 2.0]] is based on an evolving  ''Framework for Climate Change Action'' guided by principles and practices of [[Information Ecology]] , an evolving holistic life science based on an appreciation of the nature and properties of a networked knowledge universe
{{iframe{''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/gdrc1924.htm}}}
<html><iframe
title="Geneva Declaration of the Rights of the Child"
src="http://www.un-documents.net/gdrc1924.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
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>>
@@font-size:90%;''Note'': This is a "framed" page from the [[United Nations Environment Programme]] web site.
You can view this page in a separate browser tab or window at http://www.unep.org/geo/geo%5Fice/@@
<html><iframe
	src = "http://www.unep.org/geo/geo%5Fice/"
	title = "Global Outlook for Ice and Snow"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
!! Ensure environmental sustainability
!!! Integrate the principles of sustainable development into country policies and programmes; reverse loss of environmental resources
* <<oh "Rio Declaration on Environment and Development">>
* Reforestation
* Wetlands restoration
* Minimizing waste & pollution
* Sustainable & accessible transportation
* Full cost accounting
* Migrating activities to a networked digital environment
!!! Reduce by half the proportion of people without sustainable access to safe drinking water
* The right to water
* Water pollution
* Industrial & agricultural water use
* Protection of watersheds
* Investment in appropriate infrastructure
* Water conservation
* Rainwater harvesting
!!! Achieve significant improvement in lives of at least 100 million slum dwellers, by 2020
* Urban ecology
* Parks
* Urban farms
* Community gardens
* Tree planting - for shade, fruit, nuts, etc
* Universal access to the information universe 
!! Climate Change 
!!! COY & COP17
!!! National & Local Climate Change Initiatives
!!! Organizing Strategies
* Stay informed & share information
* Stay in touch
* Subscribe to or create Google Groups, Yahoo Groups, et
!!! Learn to use the many free & powerful digital tools & resources
!!! Videos are simple to create & easy & richer way of sharing ideas & information
!!! Online videoconferencing - 
!!! Twitter
* #hashtags & short urls
!!! Facebook
!!! Blogs
* WordPress
* Blogger
!!! Publishing news streams
* paper.li
!!! Collaborative documents
* Google docs
* Mediawiki
* typewith.me
* etherpad
* PBWiki

/***
|Name|HTMLFormattingPlugin|
|Source|http://www.TiddlyTools.com/#HTMLFormattingPlugin|
|Documentation|http://www.TiddlyTools.com/#HTMLFormattingPluginInfo|
|Version|2.4.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|'HTML' formatter|
|Description|embed wiki syntax formatting inside of HTML content|
The ~HTMLFormatting plugin allows you to ''mix wiki-style formatting syntax within HTML formatted content'' by extending the action of the standard TiddlyWiki formatting handler.
!!!!!Documentation
>see [[HTMLFormattingPluginInfo]]
!!!!!Revisions
<<<
2009.01.05 [2.4.0] in wikifyTextNodes(), pass w.highlightRegExp and w.tiddler to wikify() so that search term highlighting and tiddler-relative macro processing will work
| see [[HTMLFormattingPluginInfo]] for additional revision details |
2005.06.26 [1.0.0] Initial Release (as code adaptation - pre-dates TiddlyWiki plugin architecture!!)
<<<
!!!!!Code
***/
//{{{
version.extensions.HTMLFormattingPlugin= {major: 2, minor: 4, revision: 0, date: new Date(2009,1,5)};

// find the formatter for HTML and replace the handler
initHTMLFormatter();
function initHTMLFormatter()
{
	for (var i=0; i<config.formatters.length && config.formatters[i].name!="html"; i++);
	if (i<config.formatters.length)	config.formatters[i].handler=function(w) {
		if (!this.lookaheadRegExp)  // fixup for TW2.0.x
			this.lookaheadRegExp = new RegExp(this.lookahead,"mg");
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			var html=lookaheadMatch[1];
			// if <nowiki> is present, just let browser handle it!
			if (html.indexOf('<nowiki>')!=-1)
				createTiddlyElement(w.output,"span").innerHTML=html;
			else {
				// if <hide linebreaks> is present, suppress wiki-style literal handling of newlines
				if (html.indexOf('<hide linebreaks>')!=-1) html=html.replace(/\n/g,' ');
				// remove all \r's added by IE textarea and mask newlines and macro brackets
				html=html.replace(/\r/g,'').replace(/\n/g,'\\n').replace(/<</g,'%%(').replace(/>>/g,')%%');
				// create span, let browser parse HTML
				var e=createTiddlyElement(w.output,"span"); e.innerHTML=html;
				// then re-render text nodes as wiki-formatted content
				wikifyTextNodes(e,w);
			}
			w.nextMatch = this.lookaheadRegExp.lastIndex; // continue parsing
		}
	}
}

// wikify #text nodes that remain after HTML content is processed (pre-order recursion)
function wikifyTextNodes(theNode,w)
{
	function unmask(s) { return s.replace(/\%%\(/g,'<<').replace(/\)\%%/g,'>>').replace(/\\n/g,'\n'); }
	switch (theNode.nodeName.toLowerCase()) {
		case 'style': case 'option': case 'select':
			theNode.innerHTML=unmask(theNode.innerHTML);
			break;
		case 'textarea':
			theNode.value=unmask(theNode.value);
			break;
		case '#text':
			var txt=unmask(theNode.nodeValue);
			var newNode=createTiddlyElement(null,"span");
			theNode.parentNode.replaceChild(newNode,theNode);
			wikify(txt,newNode,highlightHack,w.tiddler);
			break;
		default:
			for (var i=0;i<theNode.childNodes.length;i++)
				wikifyTextNodes(theNode.childNodes.item(i),w); // recursion
			break;
	}
}
//}}}
|Name|HTMLFormattingPluginInfo|
|Source|http://www.TiddlyTools.com/#HTMLFormattingPlugin|
|Documentation|http://www.TiddlyTools.com/#HTMLFormattingPluginInfo|
|Version|2.4.0|
|Author|Eric Shulman|
|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|documentation|
|Requires||
|Overrides||
|Description|documentation for HTMLFormattingPlugin|
The ~HTMLFormatting plugin allows you to freely ''mix wiki-style formatting syntax within HTML formatted content'' by extending the action of the standard TiddlyWiki formatting handler.
!!!!!Usage
<<<
The shorthand Wiki-style formatting syntax of ~TiddlyWiki is very convenient and enables most content to be reasonably well presented. However, there are times when tried-and-true HTML formatting syntax allows more more precise control of the content display.

When a tiddler is about to be displayed, ~TiddlyWiki looks for tiddler content contained within {{{<html>}}} and {{{</html>}}} markers.  When present, the TiddlyWiki core simply passes this content directly to the browser's internal "rendering engine" to process as ~HTML-formatted content.  However, TiddlyWiki does not also process the HTML source content for any embedded wiki-formatting syntax it may contain.  This means that while you can use HTML formatted content, you cannot mix wiki-formatted content within the HTML formatting.

This plugin extends the TiddlyWiki core processing so that, after the HTML formatting has been processed, all the pieces of text occuring within the HTML block are then processed one piece at a time, so that normal wiki-style formatting can be applied to the individual text pieces.

Note: To bypass this extended processing for a specific section of HTML content, embed ''{{{<nowiki>}}}'' //anywhere// inside the {{{<html>...</html>}}} delimiters, and wiki formatting will not be applied to that content.
<<<
!!!!!Line breaks
<<<
One major difference between Wiki formatting and HTML formatting is how "line breaks" are processed. Wiki formatting treats all line breaks as literal content to be displayed //as-is//. However, because HTML normally ignores line breaks and actually processes them as simple "word separators" instead, many people who write HTML include extra line breaks in their documents, just to make the "source code" easier to read.

Even though you can use HTML tags within your tiddler content, the default treatment for line breaks still follows the Wiki-style rule (i.e., all new lines are displayed as-is). When adding HTML content to a tiddler (especially if you cut-and-paste it from another web page), you should take care to avoid adding extra line breaks to the text.

If removing all the extra line breaks from your HTML content would be a big hassle, you can quickly //override the default Wiki-style line break rule// so that the line breaks use the standard HTML rules, by placing ''{{{<hide linebreaks>}}}'' //anywhere// within the HTML content.  This automatically converts all line breaks to spaces before rendering the content, so that the literal line breaks will be processed as simple word-breaks instead.

Note: this does //not// alter the actual tiddler content that is stored in the document, just the manner in which it is displayed. Any line breaks contained in the tiddler will still be there when you edit its content. Also, to include a literal line break when the ''<{{{hide linebreaks}}}>'' tag is present, you will need to use a ''<{{{br}}}>'' or ''<{{{p}}}>'' HTML tag instead of simply typing a line break.
<<<
!!!!!How it works
<<<
The TW core support for HTML does not let you put ANY wiki-style syntax (including TW macros) *inside* the {{{<html>...</html>}}} block.  Everything between {{{<html>}}} and {{{</html>}}} is handed to the browser for processing and that is it.

However, not all wiki syntax can be safely passed through the browser's parser. Specifically, any TW macros inside the HTML will get 'eaten' by the browser since the macro brackets, {{{<<...>>}}} use the "<" and ">" that normally delimit the HTML/XML syntax recognized by the browser's parser.

Similarly, you can't use InlineJavascript within the HTML because the {{{<script>...</script>}}} syntax will also be consumed by the browser and there will be nothing left to process afterward.  Note: unfortunately, even though the browser removes the {{{<script>...</script>}}} sequence, it doesn't actually execute the embedded javascript code that it removes, so any scripts contained inside of <html> blocks in TW are currently being ignored. :-(

As a work-around to allow TW *macros* (but not inline scripts) to exist inside of <html> formatted blocks of content, the plugin first converts the {{{<<}}} and {{{>>}}} into "%%(" and ")%%", making them "indigestible" so they can pass unchanged through the belly of the beast (the browser's HTML parser).

After the browser has done its job, the wiki syntax sequences (including the "undigested" macros) are contained in #text nodes in the browser-generated DOM elements.  The plugin then recursively locates and processes each #text node, converts the %%( and )%% back into {{{<<}}} and {{{>>}}}, passes the result to wikify() for further rendering of the wiki-formatted syntax into a containing SPAN that replaces the previous #text node.  At the end of this process, none of the encoded %%( and )%% sequences remain in the rendered tiddler output.
<<<
!!!!!Revisions
<<<
2009.01.05 [2.4.0] in wikifyTextNodes(), pass w.highlightRegExp and w.tiddler to wikify() so that search term highlighting and tiddler-relative macro processing will work
2008.10.02 [2.3.0] added use of {{{<nowiki>}}} marker to bypass all wikification inside a specific HTML block
2008.09.19 [2.2.0] in wikifyTextNodes(), don't wikify the contents of STYLE nodes (thanks to MorrisGray for bug report)
2008.04.26 [*.*.*] plugin size reduction: more documentation moved to HTMLFormattingInfo
2008.01.08 [*.*.*] plugin size reduction: documentation moved to HTMLFormattingInfo
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.06.14 [2.1.5] in formatter, removed call to e.normalize().  Creates an INFINITE RECURSION error in Safari!!!!
2006.09.10 [2.1.4] update formatter for 2.1 compatibility (use this.lookaheadRegExp instead of temp variable)
2006.05.28 [2.1.3] in wikifyTextNodes(), decode the *value* of TEXTAREA nodes, but don't wikify() its children.  (thanks to "ayj" for bug report)
2006.02.19 [2.1.2] in wikifyTextNodes(), put SPAN element into tiddler DOM (replacing text node), BEFORE wikifying the text content.  This ensures that the 'place' passed to any macros is correctly defined when the macro is evaluated, so that calls to story.findContainingTiddler(place) will work as expected. (Thanks for bug report from GeoffSlocock)
2006.02.05 [2.1.1] wrapped wikifier hijack in init function to eliminate globals and avoid FireFox 1.5.0.1 crash bug when referencing globals
2005.12.01 [2.1.0] don't wikify #TEXT nodes inside SELECT and TEXTAREA elements
2005.11.06 [2.0.1] code cleanup
2005.10.31 [2.0.0] replaced hijack wikify() with hijack config.formatters["html"] and simplified recursive WikifyTextNodes() code
2005.10.09 [1.0.2] combined documentation and code into a single tiddler
2005.08.05 [1.0.1] moved HTML and CSS definitions into plugin code instead of using separate tiddlers
2005.07.26 [1.0.1] Re-released as a plugin. Added <{{{html}}}>...</{{{nohtml}}}> and <{{{hide newlines}}}> handling
2005.06.26 [1.0.0] Initial Release (as code adaptation - pre-dates TiddlyWiki plugin architecture!!)
<<<
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.
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);
	}}

});

//}}}

<<tiddler HoverMenu>>
<<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 tiddler'>>
<<newTiddler text:{{store.getTiddlerText("picasa template","")}} title:"New Album" tag:"picasa album" >><<renameButton a 'Create a new photo album'>>
<<newTiddler text:{{store.getTiddlerText("youtube template","")}} title:"New YouTube" tag:youtube>><<renameButton y 'Create a new youtube tiddler'>>
<<saveChanges>><<renameButton s 'Save TiddlyWiki'>>
''ICT as an Enabler for a Carbon-Constricted Economy:
The indispensable role of ICT in a post-carbon world''
//By: Andrew McKeon, Asst District Manager, The Climate Project//

In looking at the earth's biosphere it is clear that it is a very complex system - with many interconnected, interrelated and interdependent parts. Despite its complexity, the biosphere, like all systems, must have an aim -one basic aim. We can label that aim in different terms: biology, ecology, nature. We can frame it as regeneration, renewal or even sustainability. Ultimately, the aim of the biosphere is about one thing - the optimization of a system for staying alive. Some have even given that living system a name - GAIA. Through the 3.8 billion years of evolution, GAIA has found some pretty clever and sophisticated ways to stay alive, all supported by a very complex web of interdependent subsystems. And we humans have adapted quite nicely to that web over the last 10,000 years.

However, in just the last few moments of our planet's life (i.e. 200 years or so), humanity has found that its aims, as manifested through human industrialization, are increasingly out of alignment with the aim of the earth's ecosystem. This misalignment of aims has become so great as to threaten the very existence of the earth's ecosystem. Global climate change is the greatest manifestation of this misalignment. It is caused by excess carbon dioxide being stored in the earth's atmosphere, leading to increased warming at the earth's surface.

To solve the problem of climate change, humanity must above all else drastically reduce our dependency on carbon-based fuels, and in a very short period, realign the aims of our industrial economy with the aim of the earth's ecosystem. In a very real sense, business needs to rethink everything it does, and GAIA - or the natural world - will be an important teacher.
!!Information Intensity
In Paul Hawken's book "The Ecology of Commerce" he discusses stages of ecosystems, which are analogous to the stages of a business enterprise. Scientists have learned that ecosystems begin as primary or early stage systems that are characterized by energy intensity and rapid growth. They are also inherently unstable. If these primary systems are fortunate enough to survive, they evolve through intermediate stages to become mature systems made up of many interdependent subsystems, making them extremely robust, energy efficient, and very information intense.

Our global economic system needs to emulate the succession of ecosystems. We need to move from energy intense primary economic systems to information intense mature ones. ICT will become the nervous system of a new global economic organism, playing a critical role (1) in finding more efficient ways to use energy, (2) in moving from linear to cyclical industrial processing paradigms ("closing the loop") and (3) in researching, developing and deploying new technologies for clean renewable energy alternatives.
!!Change Is Coming
Many in the ICT industry today are concerned -and appropriately so -about how energy intense the ICT sector is becoming. With a renewed focus on energy costs, climate change, and the realization that CO2 will almost certainly be regulated by the end of the next session of the U.S. Congress, managers in the ICT sector are looking at their energy usage and their energy costs and seeing that indeed ICT can represent a huge carbon impact.

And while ICT certainly must look to becoming more efficient in its own operations in a carbon-constricted world, it should not be lost that ICT is going to play a foundational role in the economy of the future and will be fundamental to any solution to anthropogenic climate change. The following examples illustrate the indispensable role ICT will play in solving the climate crisis and for bringing the world economy into the post-carbon era.
!!1. ICT in Defining the Problem
From the very earliest understandings of the enhanced greenhouse effect, scientists have been relying on information technology to help them capture, store and interpret data on the earth's climate system. Today the most sophisticated and complex examples of information technology are employed by climate modelers to help humanity understand the effects of anthropogenic climate change 10, 50 or 100 years from now. Without ICT, humanity would have little sense that the resulting changes in the composition of our atmosphere constitute the most dangerous geophysical experiment in earth's history. 2. ICT and Energy Efficiency ICT can teach us how to become more efficient by helping us measure our energy usage in real-time and in aggregate so we can better understand and manage it. For example, the BACnet protocol, an ASHRAE and ANSI standard, allows for the aggregation of information on heating, ventilation, air conditioning, lighting, access control - in short: energy usage, and thus carbon footprint. BACnet is a huge boon in improving energy efficiency by increasing the understanding of energy usage and wastage, and it serves as an important example of swapping out energy intensity in favor of information intensity.
!!3. ICT Imbedded in Products & Services
ICT is critical at the product level, making appliances smarter, so they can self-monitor, revert to low-energy stages automatically, and turn themselves off. This can help eliminate "phantom" or "vampire" power losses, which represent almost 15% of all electricity usage.

In California, Advanced Metering Infrastructure (AMI) and Demand Response, allow users to know the actual cost of power as they use it. In Florida utilities install transmitters on energy hungry appliances to regulate their use during brownout periods. Both these approaches greatly reduce  a power company's need to build new plants to address peak loads, thus saving money and making their customers more efficient. All of this could not be done without ICT.
!!4. ICT in Design Systems
Information systems that are beginning to revolutionize building design to make them more energy efficient. Autodesk's REVICT platform for Building Information Modeling (BIM) - and ECOTech looking at all aspects of building design from inception, using real-time graphical feedback about the impact of design decisions on the LEED criteria - including energy usage, site topology, material content and sourcing, day lighting and solar-loading - all which impact a building's GHG contributions. These tools are not only for professional architects and designers, but are also being made available to universities to allow students to think about design in a more holistic, cyclical, process-oriented way, instead of a compartmentalized and linear way.
!!5. ICT Intracompany
ICT can be used to track goods and materials essential to the concept of closed-loop recycling. This can be done by setting up within a company databases on where products are stored. Think of a giant search engine using a "Google for Maturing in-field Inventory" to organize information about where a company's products reside, how aged they are, and how best to reclaim and re-cycle them. In early applications of this, the impact on solid waste landfill by some companies has been reduced by 80%. This not only reduces the burden on local municipalities, but also for manufacturers it can cut significantly the procurement, processing, and disposal costs of their business operations. It also helps preserve the earth's ecosystem. All of this is enabled by ICT.
!!6. ICT Intercompany
In September 1989 Scientific American published an article by Robert Frosch and Nicholas Gallopoulos about how waste materials from one industrial process can serve as raw materials for another, reducing the impact of industry on the environment. In the article the idea of industrial ecosystems is discussed, where different businesses and industries are connected in a infrastructure web where the waste from one process feeds a completely different function for another business. Such cooperation is information intense - and ICT is critical for automating and controlling this type of cooperative process. In many respects, the more our industrial systems emulate the best workings of the planet's ecosystem we move from the fossil fuel carbon intense economy to the cleaner more efficient information intense economy.
!!7. ICT in Information Sharing
ICT is an essential tool for spreading applications from research to the real world. Take, for example, the growing field of biomimicry, which helps mankind understand how nature does things in order that we may be able to emulate. To tap into the knowledge being developed by biomimicry practitioners, the use of the internet and a "match.com" search engine seems ideal.
!!8. ICT in Basic Research
ICT, in the form of supercomputers, provides necessary tools for research on the latest advances in energy research and biomimicry research. With biological knowledge is doubling every five years, scientists today are studying how algae may become a source fuel for jet aircraft (National Renewable Energy Laboratory in Golden CO). Sounds unusual - in fact, it's the future. And it could not be happening without ICT.

To address climate change, the global economic system must align with the planet's ecosystem. To do this it must become more like an organism itself. As it does, ICT will become its nervous system, helping it learn to be more efficient, share information, and develop sustainable ways of energizing itself without fossil fuels. 
What can scientific, technical, and socio-economic analyses contribute to the determination of what constitutes dangerous anthropogenic interference with the climate system as referred to in Article 2 of the Framework Convention on Climate Change?
<<<
''Framework Convention on Climate Change, Article 2''
>"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."
<<<
What is the evidence for, causes of, and consequences of changes in the Earth's climate since the pre-industrial era?
* Has the Earth's climate changed since the pre-industrial era at the regional and/or global scale? If so, what part, if any, of the observed changes can be attributed to human influence and what part, if any, can be attributed to natural phenomena? What is the basis for that attribution?
* What is known about the environmental, social, and economic consequences of climate changes since the pre-industrial era with an emphasis on the last 50 years?
What is known about the regional and global climatic, environmental, and socio-economic consequences in the next 25, 50, and 100 years associated with a range of greenhouse gas emissions arising from scenarios used in the TAR (projections which involve no climate policy intervention)?

To the extent possible evaluate the:
* Projected changes in atmospheric concentrations, climate, and sea level
* Impacts and economic costs and benefits of changes in climate and atmospheric composition on human health, diversity and productivity of tecological systems, and socio-economic sectors (particularly agriculture and water)
* The range of options for adaptation, including the costs, benefits, and challenges
* Development, sustainability, and equity issues associated with impacts and adaptation at a regional and global level
What is known about the influence of the increasing atmospheric concentrations of greenhouse gases and aerosols, and the projected human-induced change in climate regionally and globally on:
* The frequency and magnitude of climate fluctuations, including daily, seasonal, inter-annual, and decadal variability, such as the El Niño Southern Oscillation cycles and others?
* The duration, location, frequency, and intensity of extreme events such as heat waves, droughts, floods, heavy precipitation, avalanches, storms, tornadoes, and tropical cyclones?
* The risk of abrupt/non-linear changes in, among others, the sources and sinks of greenhouse gases, ocean circulation, and the extent of polar ice and permafrost? If so, can the risk be quantified?
* The risk of abrupt or non-linear changes in ecological systems?
What is known about the inertia and time scales associated with the changes in the climate system, ecological systems, and socio-economic sectors and their interactions?
#  How does the extent and timing of the introduction of a range of emissions reduction actions determine and affect the rate, magnitude, and impacts of climate change, and affect the global and regional economy, taking into account the historical and current emissions?
# What is known from sensitivity studies about regional and global climatic, environmental, and socio-economic consequences of stabilizing the atmospheric concentrations of greenhouse gases (in carbon dioxide equivalents), at a range of levels from today's to double that level or more, taking into account to the extent possible the effects of aerosols? For each stabilization scenario, including different pathways to stabilization, evaluate the range of costs and benefits, relative to the range of scenarios considered in Question 3, in terms of:
** Projected changes in atmospheric concentrations, climate, and sea level, including changes beyond 100 years
** Impacts and economic costs and benefits of changes in climate and atmospheric composition on human health, diversity and productivity of ecological systems, and socio-economic sectors (particularly agriculture and water)
** The range of options for adaptation, including the costs, benefits, and challenges
** The range of technologies, policies, and practices that could be used to achieve each of the stabilization levels, with an evaluation of the national and global costs and benefits, and an assessment of how these costs and benefits would compare, either qualitatively or quantitatively, to the avoided environmental harm that would be achieved by the emissions reductions
** Development, sustainability, and equity issues associated with impacts, adaptation, and mitigation at a regional and global level.
What is known about the potential for, and costs and benefits of, and time frame for reducing greenhouse gas emissions?
* What would be the economic and social costs and benefits and equity implications of options for policies and measures, and the mechanisms of the Kyoto Protocol, that might be considered to address climate change regionally and globally?
* What portfolios of options of research and development, investments, and other policies might be considered that would be most effective to enhance the development and deployment of technologies that address climate change?
* What kind of economic and other policy options might be considered to remove existing and potential barriers and to stimulate private- and public sector technology transfer and deployment among countries, and what effect might these have on projected emissions?
* How does the timing of the options contained in the above affect associated economic costs and benefits, and the atmospheric concentrations of greenhouse gases over the next century and beyond?
* What is known about the interactions between projected human-induced changes in climate and other environmental issues (e.g., urban air pollution, regional acid deposition, loss of biological diversity, stratospheric ozone depletion, and desertification and land degradation)?
* What is known about environmental, social, and economic costs and benefits and implications of these interactions for integrating climate change response strategies in an equitable manner into broad sustainable development strategies at the local, regional, and global scales?
What are the most robust findings and key uncertainties regarding attribution of climate change and regarding model projections of:
* Future emissions of greenhouse gases and aerosols?
* Future concentrations of greenhouse gases and aerosols?
* Future changes in regional and global climate?
* Regional and global impacts of climate change?
* Costs and benefits of mitigation and adaptation options?
The ''Third Assessment Review'' of the [[Intergovernmental Panel on Climate Change]] was completed in 2001, ans was organized around [[nine policy-relevant questions|AR3-Synthesis: Nine policy-relevant questions]] +++
> <<tiddler "AR3-Synthesis: Nine policy-relevant questions">>
===


The full text of the Third Assessment Review is available as ''pdf'' files from [[www.grida.no/climate/ipcc_tar/|http://www.grida.no/climate/ipcc_tar/]]
* Climate Change 2001: The Scientific Basis - [[www.grida.no/climate/ipcc_tar/wg1/|http://www.grida.no/climate/ipcc_tar/wg1/]]
* Climate Change 2001: Impacts, Adaptation and Vulnerability -[[www.grida.no/climate/ipcc_tar/wg2/|http://www.grida.no/climate/ipcc_tar/wg2/]]
* Climate Change 2001: Mitigation - [[www.grida.no/climate/ipcc_tar/wg3/|http://www.grida.no/climate/ipcc_tar/wg3/]]
* Climate Change 2001: Synthesis Report -[[www.grida.no/climate/ipcc_tar/vol4/english/|http://www.grida.no/climate/ipcc_tar/vol4/english/]]
/***
|Name|ImageSizePlugin|
|Source|http://www.TiddlyTools.com/#ImageSizePlugin|
|Version|1.2.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,formatter|
|Requires||
|Overrides|'image' formatter|
|Description|adds support for resizing images|
This plugin adds optional syntax to scale an image to a specified width and height and/or interactively resize the image with the mouse.
!!!!!Usage
<<<
The extended image syntax is:
{{{
[img(w+,h+)[...][...]]
}}}
where ''(w,h)'' indicates the desired width and height (in CSS units, e.g., px, em, cm, in, or %). Use ''auto'' (or a blank value) for either dimension to scale that dimension proportionally (i.e., maintain the aspect ratio). You can also calculate a CSS value 'on-the-fly' by using a //javascript expression// enclosed between """{{""" and """}}""". Appending a plus sign (+) to a dimension enables interactive resizing in that dimension (by dragging the mouse inside the image). Use ~SHIFT-click to show the full-sized (un-scaled) image. Use ~CTRL-click to restore the starting size (either scaled or full-sized).
<<<
!!!!!Examples
<<<
{{{
[img(100px+,75px+)[images/meow2.jpg]]
}}}
[img(100px+,75px+)[images/meow2.jpg]]
{{{
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
}}}
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
{{tagClear{
}}}
<<<
!!!!!Revisions
<<<
2009.02.24 [1.2.1] cleanup width/height regexp, use '+' suffix for resizing
2009.02.22 [1.2.0] added stretchable images
2008.01.19 [1.1.0] added evaluated width/height values
2008.01.18 [1.0.1] regexp for "(width,height)" now passes all CSS values to browser for validation
2008.01.17 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImageSizePlugin= {major: 1, minor: 2, revision: 1, date: new Date(2009,2,24)};
//}}}
//{{{
var f=config.formatters[config.formatters.findByField("name","image")];
f.match="\\[[<>]?[Ii][Mm][Gg](?:\\([^,]*,[^\\)]*\\))?\\[";
f.lookaheadRegExp=/\[([<]?)(>?)[Ii][Mm][Gg](?:\(([^,]*),([^\)]*)\))?\[(?:([^\|\]]+)\|)?([^\[\]\|]+)\](?:\[([^\]]*)\])?\]/mg;
f.handler=function(w) {
	this.lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		var floatLeft=lookaheadMatch[1];
		var floatRight=lookaheadMatch[2];
		var width=lookaheadMatch[3];
		var height=lookaheadMatch[4];
		var tooltip=lookaheadMatch[5];
		var src=lookaheadMatch[6];
		var link=lookaheadMatch[7];

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

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

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

config.formatterHelpers.addStretchHandlers=function(e,stretchW,stretchH) {
	e.title=((stretchW||stretchH)?'DRAG=stretch/shrink, ':'')
		+'SHIFT-CLICK=show full size, CTRL-CLICK=restore initial size';
	e.statusMsg='width=%0, height=%1';
	e.style.cursor='move';
	e.originalW=e.style.width;
	e.originalH=e.style.height;
	e.minW=Math.max(e.offsetWidth/20,10);
	e.minH=Math.max(e.offsetHeight/20,10);
	e.stretchW=stretchW;
	e.stretchH=stretchH;
	e.onmousedown=function(ev) { var ev=ev||window.event;
		this.sizing=true;
		this.startX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
		this.startY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
		this.startW=this.offsetWidth;
		this.startH=this.offsetHeight;
		return false;
	};
	e.onmousemove=function(ev) { var ev=ev||window.event;
		if (this.sizing) {
			var s=this.style;
			var currX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
			var currY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
			var newW=(currX-this.offsetLeft)/(this.startX-this.offsetLeft)*this.startW;
			var newH=(currY-this.offsetTop )/(this.startY-this.offsetTop )*this.startH;
			if (this.stretchW) s.width =Math.floor(Math.max(newW,this.minW))+'px';
			if (this.stretchH) s.height=Math.floor(Math.max(newH,this.minH))+'px';
			clearMessage(); displayMessage(this.statusMsg.format([s.width,s.height]));
		}
		return false;
	};
	e.onmouseup=function(ev) { var ev=ev||window.event;
		if (ev.shiftKey) { this.style.width=this.style.height=''; }
		if (ev.ctrlKey)  { this.style.width=this.originalW; this.style.height=this.originalH; }
		this.sizing=false;
		clearMessage();
		return false;
	};
	e.onmouseout=function(ev) { var ev=ev||window.event;
		this.sizing=false;
		clearMessage();
		return false;
	};
}
//}}}
{{{
[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>>
Type the text for 'ImportExportPackage'
/***
|Name|ImportTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#ImportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ImportTiddlersPluginInfo|
|Version|4.6.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|interactive controls for import/export with filtering.|
Combine tiddlers from any two TiddlyWiki documents.  Interactively select and copy tiddlers from another TiddlyWiki source document.  Includes prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles.  When done, a list of all imported tiddlers is written into [[ImportedTiddlers]].
!!!!!Documentation
<<<
see [[ImportTiddlersPluginInfo]] for details
<<<
!!!!!interactive control panel
<<<
<<importTiddlers inline>>
{{clear{
^^(see also: [[ImportTiddlers]] shadow tiddler)^^}}}
<<<
!!!!!Revisions
<<<
2009.10.10 4.6.1 in createImportPanel, Use {{{window.Components}}} instead of {{{config.browser.isGecko}}} to avoid applying FF3 'file browse' fixup in Chrome.
2009.10.06 4.6.0 added createTiddlerFromFile (import text files)
|please see [[ImportTiddlersPluginInfo]] for additional revision details|
2005.07.20 1.0.0 Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImportTiddlersPlugin= {major: 4, minor: 6, revision: 1, date: new Date(2009,10,10)};

// 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>>';

// use shadow tiddler content in backstage panel
if (config.tasks) config.tasks.importTask.content='<<tiddler ImportTiddlers>>' // TW2.2 or above
//}}}
//{{{
// backward-compatiblity for TW2.0.x and TW1.2.x
if (config.macros.importTiddlers==undefined) config.macros.importTiddlers={};
if (typeof merge=='undefined') {
	function merge(dst,src,preserveExisting) {
		for(var i in src) { if(!preserveExisting || dst[i] === undefined) dst[i] = src[i]; }
		return dst;
	}
}
if (config.browser.isGecko===undefined)
	config.browser.isGecko=(config.userAgent.indexOf('gecko')!=-1);
//}}}
//{{{
merge(config.macros.importTiddlers,{
	$: function(id) { return document.getElementById(id); }, // abbreviation
	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',
	doneText: 'done',
	startText: 'import',
	stopText: 'stop',
	local: true,		// default to import from local file
	src: '',		// path/filename or URL of document to import (retrieved from SiteUrl)
	proxy: '',		// URL for remote proxy script (retrieved from SiteProxy)
	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: 10,		// # 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
});
//}}}
//{{{
// hijack core macro handler
if (config.macros.importTiddlers.coreHandler==undefined)
	config.macros.importTiddlers.coreHandler=config.macros.importTiddlers.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);
		this.$('importPanel').style.position='static';
		this.$('importPanel').style.display='block';
	} else if (config.macros.loadTiddlers)
		config.macros.loadTiddlers.handler(place,macroName,params); // any other params: loadtiddlers
}
//}}}
//{{{
// Handle link click to create/show/hide control panel
function onClickImportMenu(e) { var e=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,false,'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; // abbrev
	var panel=cmi.$('importPanel');
	if (panel) { panel.parentNode.removeChild(panel); }
	setStylesheet(store.getTiddlerText('ImportTiddlersPlugin##css'),'importTiddlers');
	panel=createTiddlyElement(place,'span','importPanel',null,null)
	panel.innerHTML=store.getTiddlerText('ImportTiddlersPlugin##html');
	refreshImportList();
	if (!cmi.src.length) cmi.src=store.getTiddlerText('SiteUrl')||'';
	cmi.$('importSourceURL').value=cmi.src;
	if (!cmi.proxy.length) cmi.proxy=store.getTiddlerText('SiteProxy')||'SiteProxy';
	cmi.$('importSiteProxy').value=cmi.proxy;
	if (window.Components) { // FF3 FIXUP
		cmi.$('fileImportSource').style.display='none';
		cmi.$('importLocalPanelFix').style.display='block';
	}
	cmi.$('chkSync').checked=cmi.sync;
	cmi.$('chkImportTags').checked=cmi.importTags;
	cmi.$('chkKeepTags').checked=cmi.keepTags;
	cmi.$('chkAddTags').checked=cmi.addTags;
	cmi.$('txtNewTags').value=cmi.newTags;
	cmi.$('txtNewTags').style.display=cmi.addTags?'block':'none';
	cmi.$('chkSync').checked=cmi.sync;
	cmi.$('chkImportReport').checked=config.options.chkImportReport;
	return panel;
}
//}}}
//{{{
// process control interactions
function onClickImportButton(which,event) {
	var cmi=config.macros.importTiddlers; // abbreviation
	var list=cmi.$('importList'); if (!list) return false;
	var thePanel=cmi.$('importPanel');
	var theCollisionPanel=cmi.$('importCollisionPanel');
	var theNewTitle=cmi.$('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',cmi.$('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 false;
			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();
			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]));
			cmi.$('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]));
			cmi.$('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]));
			cmi.$('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]));
			cmi.$('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=cmi.$('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
			cmi.$('importApplyToAll').checked=false;
			cmi.$('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;
		}
}
//}}}
//{{{
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';
}
//}}}
//{{{
function refreshImportList(selectedIndex) {
	var cmi=config.macros.importTiddlers; // abbrev
	var list=cmi.$('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;
		cmi.$('importLoad').disabled=false;
		cmi.$('importLoad').style.display='inline';
		cmi.$('importStart').disabled=true;
		cmi.$('importOptions').disabled=true;
		cmi.$('importOptions').style.display='none';
		cmi.$('fileImportSource').disabled=false;
		cmi.$('importFromFile').disabled=false;
		cmi.$('importFromWeb').disabled=false;
		cmi.$('importStart').value=cmi.startText;
		cmi.$('importClose').value=cmi.doneText;
		cmi.$('importSelectPanel').style.display='none';
		cmi.$('importOptionsPanel').style.display='none';
		return;
	}
	// there are inbound tiddlers loaded...
	cmi.$('importLoad').disabled=true;
	cmi.$('importLoad').style.display='none';
	cmi.$('importOptions').style.display='inline';
	cmi.$('importOptions').disabled=false;
	cmi.$('fileImportSource').disabled=true;
	cmi.$('importFromFile').disabled=true;
	cmi.$('importFromWeb').disabled=true;
	cmi.$('importClose').value=cmi.closeText;
	if (cmi.$('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]));
	}
	cmi.$('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;
}
//}}}
//{{{
// re-entrant processing for handling import with interactive collision prompting
function importTiddlers(startIndex) {
	var cmi=config.macros.importTiddlers; // abbrev
	if (!cmi.inbound) return -1;
	var list=cmi.$('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&&!cmi.src.startsWith('file:')?'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; // abbrev
	var list=cmi.$('importList'); if (!list) return;
	var theNewTitle=cmi.$('importNewTitle');
	if (cmi.index==-1){ 
		cmi.$('importStart').value=cmi.startText;
		importReport();	// import finished... generate the report
	} else {
		// import collision...
		// show the collision panel and set the title edit field
		cmi.$('importStart').value=cmi.stopText;
		cmi.showPanel('importCollisionPanel',true);
		theNewTitle.value=list.options[cmi.index].value;
		if (cmi.$('importApplyToAll').checked && cmi.lastAction && cmi.lastAction.id!='importRename')
			onClickImportButton(cmi.lastAction);
	}
}
//}}}
//{{{
function importReport() {
	var cmi=config.macros.importTiddlers; // abbrev
	if (!cmi.inbound) return;
	// if import was not completed, the collision panel will still be open... close it now.
	var panel=cmi.$('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.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 not a URL, read from local filesystem
		var txt=loadFile(src);
		if (!txt) { // file didn't load, 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);
			var txt=loadFile(src);
		}
		if (!txt) { // file still didn't load, report error
			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 (version.major+version.minor*.1+version.revision*.01!=2.52) txt=convertUTF8ToUnicode(txt);
			if (callback) callback(true,original,txt,src,null);
		}
	} else {
		doHttp('GET',src,null,null,config.options.txtRemoteUsername,config.options.txtRemotePassword,callback,original,null);
	}
}

config.macros.importTiddlers.readTiddlersFromHTML=function(html){
	var remoteStore=new TiddlyWiki();
	remoteStore.importTiddlyWiki(html);
	return remoteStore.getTiddlers('title');	
}

config.macros.importTiddlers.readTiddlersFromCSV=function(CSV){
	var remoteStore=new TiddlyWiki();
	// GET NAMES
	var lines=CSV.replace(/\r/g,'').split('\n');
	var names=lines.shift().replace(/"/g,'').split(',');
	CSV=lines.join('\n');
	// ENCODE commas and newlines within quoted values
	var comma='!~comma~!'; var commaRE=new RegExp(comma,'g');
	var newline='!~newline~!'; var newlineRE=new RegExp(newline,'g');
	CSV=CSV.replace(/"([^"]*?)"/g,
		function(x){ return x.replace(/\,/g,comma).replace(/\n/g,newline); });
	// PARSE lines
	var lines=CSV.split('\n');
	for (var i=0; i<lines.length; i++) { if (!lines[i].length) continue;
		var values=lines[i].split(',');
		// DECODE commas, newlines, and doubled-quotes, and remove enclosing quotes (if any)
		for (var v=0; v<values.length; v++)
			values[v]=values[v].replace(commaRE,',').replace(newlineRE,'\n')
				.replace(/^"|"$/g,'').replace(/""/g,'"');
		// EXTRACT tiddler values
		var title=''; var text=''; var tags=[]; var fields={};
		var created=null; var when=new Date(); var who=config.options.txtUserName;
		for (var v=0; v<values.length; v++) { var val=values[v];
			if (names[v]) switch(names[v].toLowerCase()) {
				case 'title':	title=val.replace(/\[\]\|/g,'_'); break;
				case 'created': created=new Date(val); break;
				case 'modified':when=new Date(val); break;
				case 'modifier':who=val; break;
				case 'text':	text=val; break;
				case 'tags':	tags=val.readBracketedList(); break;
				default:	fields[names[v].toLowerCase()]=val; break;
			}
		}
		// CREATE tiddler in temporary store
		if (title.length)
			remoteStore.saveTiddler(title,title,text,who,when,tags,fields,true,created||when);
	}
	return remoteStore.getTiddlers('title');
}

config.macros.importTiddlers.createTiddlerFromFile=function(src,txt) {
	var t=new Tiddler();
	var pos=src.lastIndexOf("/"); if (pos==-1) pos=src.lastIndexOf("\\");
	t.title=pos==-1?src:src.substr(pos+1);
	t.text=txt; 
	t.created=t.modified=new Date();
	t.modifier=config.options.txtUserName;
	if (src.substr(src.length-3,3)=='.js') t.tags=['systemConfig'];
	return [t];
}

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);
	if (!cmi.all||!cmi.all.length) cmi.all=cmi.readTiddlersFromCSV(txt)
	if (!cmi.all||!cmi.all.length) cmi.all=cmi.createTiddlerFromFile(src,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)
	cmi.$('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;
}
//}}}
/***
!!!Control panel CSS
//{{{
!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;-webkit-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;-webkit-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; }
!end
//}}}
!!!Control panel HTML
//{{{
!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"
		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="return 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="return onClickImportButton(this)" title="SELECT all tiddlers">
	all</a>
&nbsp;<a href="javascript:;" id="importSelectNew"
	onclick="return onClickImportButton(this)" title="SELECT tiddlers not already in destination document">
	added</a>
&nbsp;<a href="javascript:;" id="importSelectChanges"
	onclick="return onClickImportButton(this)" title="SELECT tiddlers that have been updated in source document">
	changes</a>
&nbsp;<a href="javascript:;" id="importSelectDifferences"
	onclick="return onClickImportButton(this)" 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="return onClickImportButton(this)" title="SHRINK list size">
	&nbsp;&#150;&nbsp;</a>
<a href="javascript:;" id="importListLarger"
	onclick="return onClickImportButton(this)" title="GROW list size">
	&nbsp;+&nbsp;</a>
<a href="javascript:;" id="importListMaximize"
	onclick="return onClickImportButton(this)" 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: tiddlertitle, tag:[[tagvalue]], tag:[[tag expression]] (requires MatchTagsPlugin), story:[[TiddlerName]], and/or search:[[searchtext]]. Use a blank filter to restore the list of all tiddlers.'); return false;"
	>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="return 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,false);
			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 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-->
!end
//}}}
***/
 
/***
|Name|ImportTiddlersPluginInfo|
|Source|http://www.TiddlyTools.com/#ImportTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#ImportTiddlersPluginInfo|
|Version|4.5.0|
|Author|Eric Shulman|
|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|documentation|
|Requires||
|Overrides||
|Description|documentation for ImportTiddlersPlugin|
Combine tiddlers from any two TiddlyWiki documents.  An interactive control panel lets you pick a source document and import selected tiddlers, with prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles.  Generates a detailed report of import 'history' in ImportedTiddlers.
!!!!!Usage
<<<
{{{<<importTiddlers>>}}} or {{{<<importTiddlers core>>}}}
invokes the built-in importTiddlers macro (TW2.1.x+).  If installed in documents using TW2.0.x or earlier, fallback is to use 'link' display (see below)

{{{<<importTiddlers link label tooltip>>}}}
The ''link'' keyword creates an "import tiddlers" link that when clicked to show/hide import control panel.  ''label'' and ''tooltip'' are optional text parameters (enclosed in quotes or {{{[[...]]}}}, and allow you to override the default display text for the link and the mouseover help text, respectively.

{{{<<importTiddlers inline>>}}}
creates import control panel directly in tiddler content

<<importTiddlers inline>>

Enter a document URL or press "..." to select a TiddlyWiki file to import, and then press ''[open]''.  //Note: There may be a delay before the list of tiddlers appears.//  Use the ''[-]'', ''[+]'', or ''[=]'' links to adjust the listbox size so you can view more (or less) tiddler titles at one time.

Select one or more titles from the listbox.  Use CTRL-click or SHIFT-click to select/deselect individual titles.  Click on ''all'', ''new'', ''changes'', or ''differences'' to automatically select a subset of tiddlers from the list, based on a comparison of the two documents:
*''all'' selects ALL tiddlers from the import source document, even if they have not been changed.
*''new'' selects only tiddlers that are found in the import source document, but do not yet exist in the destination document
*''changes'' selects only tiddlers that exist in both documents but that are newer in the source document
*''differences'' selects all new and existing tiddlers that are different from the destination document (even if destination tiddler is newer)

Press ''[import]'' to begin copying tiddlers to the current document.  If an 'inbound' tiddler matches one that already exists in the document, the import process pauses and the tiddler title is displayed in an input field, along with four push buttons: ''skip'', ''rename'', ''merge'' and ''replace''.
* to bypass importing the tiddler, press ''skip''
* to give the inbound tiddler a different name, so that both the old and new tiddlers will exist when the import is done, enter a new title in the input field and press ''rename'' 
* to combine the content from both tiddlers into a single tiddler so you can then edit it later to eliminate unwanted content, press ''merge''
* to overwrite the existing tiddler with the imported one (discarding the previous content), press ''[replace]''

''Import Report History''

Whenever tiddlers are imported, a report is generated into a tiddler named [[ImportedTiddlers]], recording when the latest import was performed, the number of tiddlers successfully imported, from what location, and by whom, as well as a list of the tiddlers that were processed.  When more tiddlers are imported at a later time, a new report is //added// to the existing [[ImportedTiddlers]], above the previous report (i.e., at the top of the tiddler), so that a history of imports is maintained.  If this record is not desired, you can delete [[ImportedTiddlers]] at any time.

Note: You can prevent a report from being generated for any given import activity by clearing the "create a report" checkbox before pressing the ''import'' button
<<<
!!!!!Installation Notes
<<<
* As of 6/27/2007, support for TW2.1.x and earlier have been moved to [[ImportTiddlersPluginPatch]].  ''//Only install the patch plugin when using TW2.1.x or earlier.//''
<<<
!!!!!Revisions
<<<
2009.05.04 [4.5.0] import from CSV-formatted files
2009.03.04 [4.4.2] in createImportPanel(), init option checkboxes so display matches internal state variables
2009.02.26 [4.4.1] use macro-specific definition of $() function abbreviation (avoids conflict with JQuery)
2008.09.30 [4.4.0] added fallback definition of merge() for use with TW2.0.x and TW1.2.x
2008.08.12 [4.3.3] rewrite backstage and shadow tiddler definitions for easier customization
2008.08.05 [4.3.2] rewrote loadRemoteFile() to eliminate use of platform-specific fileExists() function
2008.06.29 [4.3.1] More layout/animation work for simpler sequential interaction.  Code reduction/cleanup
2008.06.28 [4.3.0] HTML and CSS cleanup and tweaks to layout.  Added animation to panels
2008.06.22 [4.2.0] For FireFox, use HTML with separate text+button control instead of type='file' control
2008.06.05 [4.1.0] in filterByHash(), added support for boolean tag expressions using getMatchingTiddlers() (defined by MatchTagsPlugin)
2008.05.12 [4.0.2] automatically tweak the backstage "import" task to add the ImportTiddlers control panel as an optional alternative to the standard import wizard.  (Moved from BackstageTweaks).
2008.04.30 [4.0.1] trim #... suffix for loading files/URLs in IE
2008.04.30 [4.0.0] added source filtering (using URL paramifiers).  Also, abbreviations for code-size reduction.
2008.04.13 [3.9.0] added 'apply to all' checkbox for collision processing
2008.03.26 [3.8.0] added support for selecting pre-defined systemServer URLs
2008.03.25 [3.7.0] added support for setting 'server' fields on imported tiddlers (for later synchronizing of changes)
2008.01.03 [3.6.0] in loadRemoteFile(), use lower-level doHttp() instead of loadRemoteFile() in order to support username/password access to remote server
2007.10.30 [3.5.6] update [[ImportTiddlers]] shadow tiddler definition to include "inline" link, so the plugin control panel is displayed instead of the standard core interface.
2007.06.27 [3.5.5] added missing 'fields' params to saveTiddler() calls.  Fixes problem where importing tiddlers would lose the custom fields.  Also, moved functions for backward-compatibility with TW2.1.x to separate [[ImportTiddlersPluginPatch2.1.x]] tiddler, reducing the size of //this// plugin tiddler by a significant amount.
2007.06.25 [3.5.4] added calls to store.suspendNotifications() and store.resumeNotifications().  Eliminates redisplay processing overhead DURING import activities
2007.04.29 [3.5.3] if refreshImportList() when inbound tiddlers are loaded, change "close" button to "done", and disable certain controls to creates a modal condition, so that actions that reload tiddlers cannot be performed unless "done" is first pressed to end the mode..
2007.04.28 [3.5.2] in handler(), added param support for custom link label/prompt
2007.04.19 [3.5.1] 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.03.22 [3.5.0] in refreshImportList(), add handling for 'select section' when a heading is selected.  Makes it really easy to import by tag or date!
2007.03.21 [3.4.0] split loadTiddlers functionality into separate plugin (see [[LoadTiddlersPlugin]])
2007.03.20 [3.3.1] tweak to previous change to allow relative file references via http: (bypasses getLocalPath() so remote URL will be used)
2007.03.20 [3.3.0] added support for local, relative file references: in loadRemoteFile(), check for fileExists().  If not found, prepend relative path and retry.
2007.02.24 [3.2.1] re-labeled control panel "open" button to "load" to avoid confusion with "open" button in system-provided Browse... dialog.  (i.e., "browse, open, open" becomes "browse, open, load")
2007.02.09 [3.2.0] loadTiddlers: added support for "noReload" tag (prevents overwriting existing tiddler, even if inbound tiddler is newer)
2007.02.08 [3.1.3] loadTiddlers: added missing code and documentation for "newTags" handling (a feature change from long, long ago that somehow got lost!)
2006.11.14 [3.1.2] fix macro handler parameter declaration (double-pasted param list corrupts IE)
2006.11.13 [3.1.1] use apply() method to invoke hijacked core handler
2006.11.13 [3.1.0] hijack built-in importTiddlers.handler() to co-exist with plugin interface.  If no params or 'core' keyword, display core interface.  "link" param embeds "import tiddlers" link that shows floating panel when clicked.
2006.10.12 [3.0.8] in readTiddlersFromHTML(), fallback to find end of store area by matching "/body" when POST-BODY-START is not present (backward compatibility for older documents)
2006.09.10 [3.0.7] in readTiddlersFromHTML(), find end of store area by matching "POST-BODY-START" instead of "/body" 
2006.08.16 [3.0.6] Use higher-level store.saveTiddler() instead of store.addTiddler() to avoid conflicts with adaptations that hijack low-level tiddler handling.  in CreateImportPanel(), removed "refresh listbox after every tiddler change".
2006.07.29 [3.0.5] added noChangeMsg to loadTiddlers processing.  if not 'quiet' mode, reports skipped tiddlers.
2006.04.18 [3.0.4] in loadTiddlers.handler, fixed parsing of "prompt:" param. Also, corrected parameters mismatch in loadTiddlers() callback function definition (order of params was wrong, resulting in filters NOT being applied)
2006.04.12 [3.0.3] moved many display messages to macro properties for easier L10N translations via 'lingo' definitions.
2006.04.12 [3.0.2] more work on 'core candidate' code.  Proposed API now defines "loadRemoteFile()" for XMLHttpRequest processing with built in fallback for handling local filesystem access, and readTiddlersFromHTML() to process the resulting source HTML content.
2006.04.04 [3.0.1] in refreshImportList(), when using [by tags], tiddlers without tags are now included in a new "untagged" psuedo-tag list section
2006.04.04 [3.0.0] Separate non-interactive {{{<<importTiddlers...>>}}} macro functionality for incorporation into TW2.1 core and renamed as {{{<<loadTiddlers>>}}} macro.  New parameters for loadTiddlers: ''label:text'' and ''prompt:text'' for link creation,  ''ask'' for filename/URL, ''tag:text'' for filtering, "confirm" for accept/reject of individual inbound tiddlers.  Removed support for "importReplace/importPublic" tags and "force" param (unused feature). 
2006.03.30 [2.9.1] when extracting store area from remote URL, look for "</body>" instead of "</body>\n</html>" so it will match even if the "\n" is absent from the source.
2006.03.30 [2.9.0] added optional 'force' macro param.  When present, autoImportTiddlers() bypasses the checks for importPublic and importReplace.  Based on a request from Tom Otvos.
2006.03.28 [2.8.1] in loadImportFile(), added checks to see if 'netscape' and 'x.overrideMimeType()' are defined (not in IE). Also, when extracting store area, look for "</body>\n</html>" and omit extra content that may have been added to the end of the file.
2006.02.21 [2.8.0] added support for "tiddler:TiddlerName" filtering parameter in auto-import processing
2006.02.21 [2.7.1] Clean up layout problems with IE.  (Use tables for alignment instead of SPANs styled with float:left and float:right)
2006.02.21 [2.7.0] Added "local file" and "web server" radio buttons for selecting dynamic import source controls in ImportPanel.  Default remote URL uses value from [[SiteURL]].  Also, added 'proxy' option, using value from [[SiteProxy]] as prefix to permit cross-domain document access via server-side scripting.
2006.02.17 [2.6.0] Removed "differences only" listbox display mode, replaced with selection filter 'presets': all/new/changes/differences.  Also fixed initialization handling for "add new tags" so that checkbox state is correctly tracked when panel is first displayed.
2006.02.16 [2.5.4] added checkbox options to control "import remote tags" and "keep existing tags" behavior, in addition to existing "add new tags" functionality.
2006.02.14 [2.5.3] FF1501 corrected unintended global 't' (loop index) in importReport() and autoImportTiddlers()
2006.02.10 [2.5.2] corrected unintended global variable in importReport().
2006.02.05 [2.5.1] moved globals from window.* to config.macros.importTiddlers.* to avoid FireFox 1.5.0.1 crash bug when referencing globals
2006.01.18 [2.5.0] added checkbox for "create a report".  Default is to create/update the ImportedTiddlers report.  Clear the checkbox to skip this step.
2006.01.15 [2.4.1] added "importPublic" tag and inverted default so that auto sharing is NOT done unless tagged with importPublic
2006.01.15 [2.4.0] Added support for tagging tiddlers with importSkip, importReplace, and/or importPrivate to enable/disable overwriting or sharing with others when using auto-import macro syntax.  Defaults: don't overwrite existing tiddlers, and allow your tiddlers to be auto-imported by others.
2006.01.15 [2.3.2] Added "ask" parameter to confirm each tiddler before importing (for use with auto-importing)
2006.01.15 [2.3.1] Strip TW core scripts from import source content and load just the storeArea into the hidden IFRAME. to prevent imported document's core code from being invoked.  Also, when importing local documents, use convertUTF8ToUnicode() to support international characters sets.
2006.01.12 [2.3.0] Reorganized code to use callback function for loading import files to support event-driven I/O via an ASYNCHRONOUS XMLHttpRequest instead of waiting for remote hosts to respond to URL requests.  Added non-interactive 'batch' mode, using macro parameters to specify source path/file or URL, and select tiddlers to import.  Improved messages and added optional 'quiet' switch for batch mode to eliminate //most// feedback.
2006.01.11 [2.2.0] Added "[by tags]" to list of tiddlers, based on code submitted by BradleyMeck
2006.01.08 [2.1.0] IMPORT FROM ANYWHERE!!! re-write getImportedTiddlers() logic to either read a local file (using local I/O), OR... read a remote file, using a combination of XML and an iframe to permit cross-domain reading of DOM elements.  Adapted from example code and techniques courtesy of Jonny LeRoy.
2006.01.06 [2.0.2] When refreshing list contents, fixed check for tiddlerExists() when "show differences only" is selected, so that imported tiddlers that don't exist in the current file will be recognized as differences and included in the list.
2006.01.04 [2.0.1] When "show differences only" is NOT checked, import all tiddlers that have been selected even when they have a matching title and date.
2005.12.27 [2.0.0] Update for TW2.0
Defer initial panel creation and only register a notification function when panel first is created
2005.12.22 [1.3.1] tweak formatting in importReport() and add 'discard report' link to output
2005.12.03 [1.3.0] Dynamically create/remove importPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding.  Also, dynamically create/recreate importFrame each time an external TW document is loaded for importation (reduces DOM overhead and ensures a 'fresh' frame for each document)
2005.11.29 [1.2.1] fixed formatting of 'detail info' in importReport()
2005.11.11 [1.2.0] added 'inline' param to embed controls in a tiddler
2005.11.09 [1.1.0] only load HTML and CSS the first time the macro handler is called.  Allows for redundant placement of the macro without creating multiple instances of controls with the same ID's.
2005.10.25 [1.0.5] fixed typo in importReport() that prevented reports from being generated
2005.10.09 [1.0.4] combined documentation with plugin code instead of using separate tiddlers
2005.08.05 [1.0.3] moved CSS and HTML definitions into plugin code instead of using separate tiddlers
2005.07.27 [1.0.2] core update 1.2.29: custom overlayStyleSheet() replaced with new core setStylesheet()
2005.07.23 [1.0.1] added parameter checks and corrected addNotification() usage
2005.07.20 [1.0.0] Initial Release
<<<
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 Friday, July 08, 2011 2:41:30 PM, climatechange3 imported 1 tiddler from
[[file:///t:/ngo-education.net/index.htm|file:///t:/ngo-education.net/index.htm]]:
<<<
#[[OpenHereMacro]] - replaces OpenHereMacro - 7/8/2011 14:39:00 by climatechange3
<<<

----
On Saturday, January 22, 2011 2:48:00 PM, climatechange3 imported 1 tiddler from
[[file:///t:/uncsd.net/index.htm|file:///t:/uncsd.net/index.htm]]:
<<<
#[[TwitterTabs]] - replaces TwitterTabs - 10/18/2009 14:13:00 by ELSDesignStudios
<<<

----
On Saturday, January 22, 2011 1:18:00 PM, climatechange3 imported 1 tiddler from
[[http://www.tiddlytools.com|http://www.tiddlytools.com]]:
<<<
#[[TwitterTabs]] - added
<<<

----
On Saturday, January 22, 2011 1:10:19 PM, climatechange3 imported 2 tiddlers from
[[file:///t:/uncsd.net/index.htm|file:///t:/uncsd.net/index.htm]]:
<<<
#[[TwitterTabs]] - replaces TwitterTabs - 10/10/2009 00:55:00 by ELSDesignStudios
#[[zConfig Tweaks]] - added
<<<

----
On Sunday, December 19, 2010 10:13:05 AM, climatechange3 imported 1 tiddler from
[[file:///t:/climate-change-two.net/index.htm|file:///t:/climate-change-two.net/index.htm]]:
<<<
#[[Education, Youth & Technology for Sustainable Development]] - added
<<<

----
On Friday, February 19, 2010 9:25:30 PM, Robert imported 2 tiddlers from
[[http://www.tiddlytools.com|http://www.tiddlytools.com]]:
<<<
#[[TaggedTemplateTweak]] - replaces TaggedTemplateTweak - 7/31/2009 14:48:00 by ELSDesignStudios
#[[TaggedTemplateTweakInfo]] - replaces TaggedTemplateTweakInfo - 7/31/2009 14:45:00 by ELSDesignStudios
<<<

----
On Tuesday, January 19, 2010 1:01:20 PM, Robert imported 3 tiddlers from
[[file:///t:/climatechange3.net/onewebday/index.htm|file:///t:/climatechange3.net/onewebday/index.htm]]:
<<<
#[[OneWebDay & Earh Day]] - added
#[[Earth Day]] - added
#[[OneWebDay]] - added
<<<

----
On Tuesday, January 19, 2010 12:59:35 PM, Robert imported 8 tiddlers from
[[file:///t:/climatechange3.net/onewebday/index.htm|file:///t:/climatechange3.net/onewebday/index.htm]]:
<<<
#[[Firefox]] - added
#[[OnWebDay - NYC links]] - added
#[[OneWebDay NYC]] - added
#[[udhr@60+]] - added
#[[Ning]] - added
#[[International Day of Peace]] - added
#[[Software Freedom Day]] - added
#[[One Web Day 2008, New York City]] - added
<<<

----
On Tuesday, January 19, 2010 12:53:58 PM, Robert imported 1 tiddler from
[[http://mptw.tiddlyspot.com/|http://mptw.tiddlyspot.com/]]:
<<<
#[[ToggleTagPlugin]] - replaces ToggleTagPlugin - 10/19/2006 22:57:00 by MonkeyPirate
<<<

----
On Saturday, October 10, 2009 12:31:07 PM, Webster imported 1 tiddler from
[[http://www.tiddlytools.com|http://www.tiddlytools.com]]:
<<<
#[[TwitterTabs]] - added
<<<

----
On Wednesday, October 07, 2009 1:25:43 PM, Webster imported 1 tiddler from
[[file:///t:/climatechange3.net/onewebday/index.htm|file:///t:/climatechange3.net/onewebday/index.htm]]:
<<<
#[[Ning]] - added
<<<

----
On Wednesday, October 07, 2009 11:54:34 AM, Webster imported 1 tiddler from
[[file:///t:/climatechange3.net/onewebday/index.htm|file:///t:/climatechange3.net/onewebday/index.htm]]:
<<<
#[[Mozilla Service Week]] - added
<<<

----
On Wednesday, October 07, 2009 11:46:55 AM, Webster imported 1 tiddler from
[[file:///t:/climatechange3.net/onewebday/index.htm|file:///t:/climatechange3.net/onewebday/index.htm]]:
<<<
#[[International Day of Peace]] - added
<<<

----
On Wednesday, October 07, 2009 11:45:52 AM, Webster imported 3 tiddlers from
[[file:///t:/climatechange3.net/onewebday/index.htm|file:///t:/climatechange3.net/onewebday/index.htm]]:
<<<
#[[OneWebDay]] - added
#[[OneWebDay NYC]] - added
#[[Software Freedom Day]] - added
<<<

----
On Wednesday, October 07, 2009 11:40:21 AM, Webster imported 1 tiddler from
[[file:///t:/climatechange3.net/onewebday/index.htm|file:///t:/climatechange3.net/onewebday/index.htm]]:
<<<
#[[Administrative Menu - owd]] - renamed from Administrative Menu
<<<

----
On Wednesday, September 30, 2009 6:59:47 PM, Webster imported 1 tiddler from
[[file:///t:/la-perla-garden.net/index.htm|file:///t:/la-perla-garden.net/index.htm]]:
<<<
#[[DataTiddlerPlugin]] - added
<<<

----
On Monday, September 28, 2009 2:57:16 PM, Webster imported 1 tiddler from
[[http://www.climatechange3.net/|http://www.climatechange3.net/]]:
<<<
#[[picasa template]] - added
<<<

----
On Monday, September 28, 2009 2:29:05 PM, Webster imported 1 tiddler from
[[file:///t:/la-perla-garden.net/index.htm|file:///t:/la-perla-garden.net/index.htm]]:
<<<
#[[picasa template]] - added
<<<

----
On Friday, August 28, 2009 7:57:10 PM, Webster imported 22 tiddlers from
[[http://www.tiddlytools.com|http://www.tiddlytools.com]]:
<<<
#[[AdvancedOptionsPlugin]] - replaces AdvancedOptionsPlugin - 5/13/2008 03:48:00 by ELSDesignStudios
#[[BreadcrumbsPluginInfo]] - added
#[[DisableWikiLinksPlugin]] - replaces DisableWikiLinksPlugin - 7/22/2008 21:33:00 by ELSDesignStudios
#[[ELSDesignStudios]] - added
#[[ExportTiddlersPlugin]] - replaces ExportTiddlersPlugin - 4/20/2009 16:06:00 by Webster
#[[ExportTiddlersPluginInfo]] - added
#[[FramedLinksPlugin]] - added
#[[InlineJavascriptPlugin]] - replaces InlineJavascriptPlugin - 6/22/2009 20:05:00 by Webster
#[[InlineJavascriptPluginInfo]] - added
#[[LoadTiddlersPlugin]] - replaces LoadTiddlersPlugin - 6/27/2007 22:56:00 by ELSDesignStudios
#[[LoadTiddlersPluginInfo]] - added
#[[MiniBrowserPlugin]] - added
#[[MiniBrowserPluginInfo]] - added
#[[NestedSlidersPlugin]] - replaces NestedSlidersPlugin - 11/16/2008 01:23:00 by ELSDesignStudios
#[[NestedSlidersPluginInfo]] - replaces NestedSlidersPluginInfo - 11/16/2008 01:22:00 by ELSDesignStudios
#[[PreviewPlugin]] - added
#[[PreviewPluginInfo]] - added
#[[QuickEditPlugin]] - replaces QuickEditPlugin - 9/8/2008 04:57:00 by ELSDesignStudios
#[[RecentChangesPlugin]] - added
#[[SplashScreenPlugin]] - replaces SplashScreenPlugin - 7/20/2006 16:48:00 by Saq
#[[TaggedTemplateTweak]] - added
#[[TaggedTemplateTweakInfo]] - added
<<<

----
On Wednesday, August 26, 2009 1:58:22 PM, Webster imported 1 tiddler from
[[file:///t:/la-perla-garden.net/index.htm|file:///t:/la-perla-garden.net/index.htm]]:
<<<
#[[OpenHereMacro]] - replaces OpenHereMacro - 8/26/2009 13:17:38 by Webster
<<<

----
On Wednesday, August 26, 2009 12:52:59 PM, Webster imported 1 tiddler from
[[file:///t:/la-perla-garden.net/index.htm|file:///t:/la-perla-garden.net/index.htm]]:
<<<
#[[wikipedia plugin macro]] - added
<<<

----
On Thursday, August 20, 2009 8:39:56 PM, Webster imported 1 tiddler from
[[file:///t:/la-perla-garden.net/index.htm|file:///t:/la-perla-garden.net/index.htm]]:
<<<
#[[HoverMenu]] - replaces HoverMenu - 10/14/2008 11:19:00 by Werbster
<<<

----
On Sunday, July 26, 2009 7:19:37 PM, Webster imported 1 tiddler from
[[http://www.climatechange3.net/|http://www.climatechange3.net/]]:
<<<
#[[2625 (XXV). Declaration on Principles of International Law concerning Friendly Relations and Co-operation among States in accordance with the Charter of the United Nations]] - added
<<<

----
On Sunday, July 26, 2009 4:30:56 PM, Webster imported 1 tiddler from
[[file:///t:/ngo-education.net/un-docs/index.htm|file:///t:/ngo-education.net/un-docs/index.htm]]:
<<<
#[[Plan of Implementation of the World Summit on Sustainable Development]] - added
<<<

----
On Sunday, July 26, 2009 3:13:20 PM, Webster imported 2 tiddlers from
[[http://www.climatechange3.net/|http://www.climatechange3.net/]]:
<<<
#[[The Vancouver Declaration on Human Settlements]] - added
#[[Vienna Declaration and Programme of Action]] - added
<<<

----
On Sunday, July 26, 2009 3:01:11 PM, Ruh Nabil imported 3 tiddlers from
[[http://www.climatechange3.net/|http://www.climatechange3.net/]]:
<<<
#[[Beijing Declaration]] - added
#[[Copenhagen Declaration on Social Development]] - added
#[[Geneva Declaration of the Rights of the Child]] - added
<<<

----
On Sunday, July 26, 2009 2:22:29 PM, Ruh Nabil imported 19 tiddlers from
[[file:///t:/ngo-education.net/un-docs/index.htm|file:///t:/ngo-education.net/un-docs/index.htm]]:
<<<
#[[Chapter 10: The Economic and Social Council]] - added
#[[Chapter 11: Declaration Regarding Non-Self-Governing Territories]] - added
#[[Chapter 12: International Trusteeship System]] - added
#[[Chapter 13: The Trusteeship Council]] - added
#[[Chapter 14: The International Court of Justice]] - added
#[[Chapter 15: The Secretariat]] - added
#[[Chapter 16: Miscellaneous Provisions]] - added
#[[Chapter 17: Transitional Security Arrangements]] - added
#[[Chapter 18: Amendments]] - added
#[[Chapter 19: Ratification and Signature]] - added
#[[Chapter 1: Purposes and Principles]] - added
#[[Chapter 2: Membership]] - added
#[[Chapter 3: Organs]] - added
#[[Chapter 4: The General Assembly]] - added
#[[Chapter 5: The Security Council]] - added
#[[Chapter 6: Pacific Settlement of Disputes]] - added
#[[Chapter 7: Action with Respect to Threats to the Peace, Breaches of the Peace, and Acts of Aggression]] - added
#[[Chapter 8: Regional Arrangements]] - added
#[[Chapter 9: International Economic and Social Co-operation]] - added
<<<

----
On Sunday, July 26, 2009 2:18:05 PM, Ruh Nabil imported 23 tiddlers from
[[file:///t:/ngo-education.net/un-docs/index.htm|file:///t:/ngo-education.net/un-docs/index.htm]]:
<<<
#[[United Nations Charter]] - added
#[[United Nations Charter, Chapter 10: The Economic and Social Council]] - added
#[[United Nations Charter, Chapter 11: Declaration Regarding Non-Self-Governing Territories]] - added
#[[United Nations Charter, Chapter 12: International Trusteeship System]] - added
#[[United Nations Charter, Chapter 13: The Trusteeship Council]] - added
#[[United Nations Charter, Chapter 14: The International Court of Justice]] - added
#[[United Nations Charter, Chapter 15: The Secretariat]] - added
#[[United Nations Charter, Chapter 16: Miscellaneous Provisions]] - added
#[[United Nations Charter, Chapter 17: Transitional Security Arrangements]] - added
#[[United Nations Charter, Chapter 18: Amendments]] - added
#[[United Nations Charter, Chapter 19: Ratification and Signature]] - added
#[[United Nations Charter, Chapter 1: Purposes and Principles]] - added
#[[United Nations Charter, Chapter 2: Membership]] - added
#[[United Nations Charter, Chapter 3: Organs]] - added
#[[United Nations Charter, Chapter 4: The General Assembly]] - added
#[[United Nations Charter, Chapter 5: The Security Council]] - added
#[[United Nations Charter, Chapter 6: Pacific Settlement of Disputes]] - added
#[[United Nations Charter, Chapter 7: Action with Respect to Threats to the Peace, Breaches of the Peace, and Acts of Aggression]] - added
#[[United Nations Charter, Chapter 8: Regional Arrangements]] - added
#[[United Nations Charter, Chapter 9: International Economic and Social Co-operation]] - added
#[[United Nations Charter: Introductory Note]] - added
#[[United Nations Charter: Preamble, Purposes and Principles]] - added
#[[United Nations Charter: Table of Contents]] - added
<<<

----
On Monday, June 22, 2009 8:31:41 PM, Webster imported 1 tiddler from
[[http://www.climatechange3.net/|http://www.climatechange3.net/]]:
<<<
#[[ImportTiddlersPluginInfo]] - added
<<<

----
On Monday, June 22, 2009 8:30:01 PM, Webster imported 1 tiddler from
[[http://tiddlytools.com/|http://tiddlytools.com/]]:
<<<
#[[HTMLFormattingPluginInfo]] - added
<<<

----
On Monday, June 22, 2009 8:24:49 PM, Webster imported 17 tiddlers from
[[http://tiddlytools.com/quickstart/basics.html|http://tiddlytools.com/quickstart/basics.html]]:
<<<
#[[AdvancedOptionsPlugin]] - added
#[[ClickifyPlugin]] - added
#[[CollapseTiddlersPlugin]] - added
#[[CopyTiddlerPlugin]] - added
#[[CoreTweaks]] - added
#[[HTMLFormattingPlugin]] - added
#[[ImageSizePlugin]] - added
#[[MatchTagsPlugin]] - added
#[[QuickEditPlugin]] - added
#[[RearrangeTiddlersPlugin]] - added
#[[SaveAsPlugin]] - replaces SaveAsPlugin - 4/19/2009 05:49:00 by ELSDesignStudios
#[[SearchOptionsPlugin]] - added
#[[StorySaverPlugin]] - added
#[[TextAreaPlugin]] - added
#[[TiddlerTweakerPlugin]] - replaces TiddlerTweakerPlugin - 6/22/2009 20:07:46 by Webster
#[[UnsavedChangesPlugin]] - added
#[[WikifyPlugin]] - added
<<<

----
On Monday, June 22, 2009 7:48:28 PM, Webster imported 1 tiddler from
[[http://tiddlytools.com/|http://tiddlytools.com/]]:
<<<
#[[DisableWikiLinksPlugin]] - replaces DisableWikiLinksPlugin - 9/23/2007 13:18:00 by Webster
<<<

----
On Monday, June 22, 2009 7:47:32 PM, Webster imported 3 tiddlers from
[[http://tiddlytools.com/|http://tiddlytools.com/]]:
<<<
#[[BreadcrumbsPlugin]] - added
#[[NavigationPackage]] - added
#[[TableOfContentsPlugin]] - added
<<<

----
On Monday, June 22, 2009 7:17:40 PM, Webster imported 2 tiddlers from
[[http://tiddlytools.com/|http://tiddlytools.com/]]:
<<<
#[[NestedSlidersPlugin]] - replaces NestedSlidersPlugin - 9/23/2007 12:49:00 by Webster
#[[NestedSlidersPluginInfo]] - added
<<<

----
On Monday, June 22, 2009 7:10:14 PM, Webster imported 2 tiddlers from
[[http://tiddlytools.com/|http://tiddlytools.com/]]:
<<<
#[[TestTiddler]] - added
#[[TiddlerTweakerPlugin]] - added
<<<

----
On Tuesday, May 05, 2009 12:11:32 PM, Webster imported 24 tiddlers from
[[file:///T:/climatechange3.net/backups/index.20090319.0337350096.html|file:///T:/climatechange3.net/backups/index.20090319.0337350096.html]]:
<<<
#[[Istanbul Declaration on Human Settlements]] - added
#[[Johannesburg Declaration on Sustainable Development]] - skipped after asking
#[[Jomtein Declaration: Adoption of the Declaration]] - added
#[[Jomtien Declaration: Education For All: An Expanded Vision and a Renewed Commitment]] - added
#[[Jomtien Declaration: Education For All: The Purpose]] - added
#[[Jomtien Declaration: Education For All: The Requirements]] - added
#[[Jomtien Declaration: Preamble]] - added
#[[Key Documents on Education for Sustainable Development]] - added
#[[Millennium Development Goals]] - skipped after asking
#[[Recommendations of the Tbilisi Intergovernmental Conference on Environmental Education]] - added
#[[Rescuing a Planet Under Stress and a Civilization in Trouble: Plan B 2.1 (beta)]] - added
#[[Tbilisi Recommendations: Content and methods]] - added
#[[Tbilisi Recommendations: Dissemination of information]] - added
#[[Tbilisi Recommendations: Environmental education for the general public]] - added
#[[Tbilisi Recommendations: Environmental education of professionals]] - added
#[[Tbilisi Recommendations: General Recommendations]] - added
#[[Tbilisi Recommendations: International and regional co-operation]] - added
#[[Tbilisi Recommendations: Organizational structure]] - added
#[[Tbilisi Recommendations: Recommendations on regional co-operation]] - added
#[[Tbilisi Recommendations: Research]] - added
#[[Tbilisi Recommendations: Role, Objectives and Guiding Principles of Environmental Education]] - added
#[[Tbilisi Recommendations: Strategies for the Development of Environmental Education at the National Level]] - added
#[[Tbilisi Recommendations: Target populations for environmental education]] - added
#[[Tbilisi Recommendations: Teaching - learning materials]] - added
#[[Tbilisi Recommendations: Training of personnel]] - added
#[[The Amman Affirmation: Education for All: Achieving the goal]] - added
#[[World Declaration on Education For All: Meeting Basic Learning Needs]] - skipped after asking
#[[World Declaration on Education for All]] - skipped after asking
<<<

----
On Tuesday, May 05, 2009 12:09:04 PM, Webster imported 31 tiddlers from
[[file:///T:/climatechange3.net/backups/index.20090319.0337350096.html|file:///T:/climatechange3.net/backups/index.20090319.0337350096.html]]:
<<<
#[["Capacity building" in the World Summit on the Information Society Plan of Action]] - added
#[["Education" in the Johannesburg Plan of Implementation]] - added
#[[57/254. United Nations Decade of Education for Sustainable Development]] - added
#[[58/219. United Nations Decade of Education for Sustainable Development]] - added
#[[59/237. United Nations Decade of Education for Sustainable Development]] - added
#[[A Spiritual Declaration on Climate Change]] - skipped after asking
#[[AR3-Synthesis: Foreword]] - added
#[[AR3-Synthesis: Nine policy-relevant questions]] - added
#[[AR3-Synthesis: Preface]] - added
#[[AR3-Synthesis: Publication]] - added
#[[AR3-Synthesis: Thanks]] - added
#[[Avoiding Dangerous Climate Change]] - added
#[[Confronting Climate Change]] - added
#[[Creative Commons Attribution Non-Commercial Share-Alike Licence]] - added
#[[Creative Commons TiddlyWiki edition of Climate Change 2007: IPCC Fourth Assessment Report]] - added
#[[Dakar Framework for Education For All]] - added
#[[Declaration of Mexico on the Equality of Women and their Contribution to Development and Peace]] - added
#[[Declaration of the Tbilisi Intergovernmental Conference on Environmental Education]] - added
#[[Declaration of the United Nations Conference on the Human Environment]] - added
#[[Education for Sustainable Development]] - added
#[[Global Outlook for Ice and Snow]] - added
#[[ICT as an Enabler for a Carbon-Constricted Economy. Andrew McKeon, The Climate Project]] - added
#[[IPCC AR3: Question 1]] - added
#[[IPCC AR3: Question 2]] - added
#[[IPCC AR3: Question 3]] - added
#[[IPCC AR3: Question 4]] - added
#[[IPCC AR3: Question 5]] - added
#[[IPCC AR3: Question 6]] - added
#[[IPCC AR3: Question 7]] - added
#[[IPCC AR3: Question 8]] - added
#[[IPCC AR3: Question 9]] - added
#[[IPCC Third Assessment Review]] - added
<<<

----
On Monday, May 04, 2009 1:17:27 PM, Webster imported 1 tiddler from
[[http://tw.lewcid.org|http://tw.lewcid.org]]:
<<<
#[[TableSortingPlugin]] - added
<<<

----
On Monday, April 20, 2009 4:08:53 PM, Webster imported 2 tiddlers from
[[http://www.tiddlytools.com|http://www.tiddlytools.com]]:
<<<
#[[SaveAsPlugin]] - added
#[[SaveAsPluginInfo]] - added
<<<

----
On Monday, April 20, 2009 4:05:26 PM, Webster imported 1 tiddler from
[[http://www.tiddlytools.com|http://www.tiddlytools.com]]:
<<<
#[[ExportTiddlersPlugin]] - replaces ExportTiddlersPlugin - 4/19/2009 14:49:00 by ELSDesignStudios
<<<

----
On Monday, April 20, 2009 4:03:04 PM, Webster imported 1 tiddler from
[[http://www.tiddlytools.com|http://www.tiddlytools.com]]:
<<<
#[[ExportTiddlersPlugin]] - replaces ExportTiddlersPlugin - 12/4/2007 16:46:00 by ELSDesignStudios
<<<

----
On Monday, April 20, 2009 3:59:14 PM, Webster imported 1 tiddler from
[[http://www.tiddlytools.com|http://www.tiddlytools.com]]:
<<<
#[[CreateTiddlersFromCSV]] - added
<<<

----
On Tuesday, March 24, 2009 12:32:04 PM, Webster imported 4 tiddlers from
[[file:///t:/climatechange3.net/index.htm|file:///t:/climatechange3.net/index.htm]]:
<<<
#[[Administrative Menu]] - replaces Administrative Menu - 10/14/2008 11:22:00 by Werbster
#[[Climate Change 3.0 - A Holistic Approach]] - added
#[[Climate Change 3.0 - Elements]] - added
#[[Climate Change 3.0 family of web sites]] - added
<<<

----
On Wednesday, February 11, 2009 9:03:50 PM, Webster imported 1 tiddler from
[[file:///t:/climate-change-two.net/garden/index.htm|file:///t:/climate-change-two.net/garden/index.htm]]:
<<<
#[[ForEachTiddlerExamples]] - added
<<<

----
On Wednesday, February 11, 2009 9:01:17 PM, Webster imported 4 tiddlers from
[[file:///t:/climate-change-two.net/garden/index.htm|file:///t:/climate-change-two.net/garden/index.htm]]:
<<<
#[[DisableWikiLinksPlugin]] - replaces DisableWikiLinksPlugin - 9/23/2007 13:18:00 by Webster
#[[ForEachTiddlerPlugin]] - added
#[[ImportTiddlersPlugin]] - replaces ImportTiddlersPlugin - 12/7/2007 10:27:00 by Webster
#[[NestedSlidersPlugin]] - replaces NestedSlidersPlugin - 9/23/2007 12:49:00 by Webster
<<<

----
On Wednesday, February 11, 2009 8:45:14 PM, Webster imported 4 tiddlers from
[[file:///t:/ngo-education.net/un-docs/index.htm|file:///t:/ngo-education.net/un-docs/index.htm]]:
<<<
#[[Economics of Climate Change: The Stern Review]] - added
#[[Information ecosystems-alt]] - renamed from Information ecosystems
#[[Kyoto Protocol]] - added
#[[Report of the Global Conference on the Sustainable Development of Small Island Developing States]] - added
#[[United Nations Framework Convention on Climate Change]] - skipped after asking
<<<

----
On Wednesday, February 11, 2009 8:44:05 PM, Webster imported 49 tiddlers from
[[file:///t:/ngo-education.net/un-docs/index.htm|file:///t:/ngo-education.net/un-docs/index.htm]]:
<<<
#[[43/196. United Nations conference on environment and development]] - added
#[[44/228. UN Conference on Environment and Development]] - added
#[[45/211. United Nations Conference on Environment and Development]] - added
#[[46/168. United Nations Conference on Environment and Development]] - added
#[[47/190. Report of the United Nations Conference on Environment and Development]] - added
#[[47/191. Institutional arrangements to follow up the United Nations Conference on Environment and Development]] - added
#[[Agenda 21]] - added
#[[Agenda 21, Chapter  1. Preamble]] - added
#[[Agenda 21, Chapter  2. International Cooperation to Accelerate Sustainable Development in Developing Countries and Related Domestic Policies]] - added
#[[Agenda 21, Chapter  3. Combating Poverty]] - added
#[[Agenda 21, Chapter  4. Changing Consumption Patterns]] - added
#[[Agenda 21, Chapter  5. Demographic Dynamics and Sustainability]] - added
#[[Agenda 21, Chapter  6. Protecting and Promoting Human Health]] - added
#[[Agenda 21, Chapter  7. Promoting Sustainable Human Settlement Development]] - added
#[[Agenda 21, Chapter  8. Integrating Environment and Development in Decision-Making]] - added
#[[Agenda 21, Chapter  9. Protection of the Atmosphere]] - added
#[[Agenda 21, Chapter 10. Integrated Approach to the Planning and Management of Land Resources]] - added
#[[Agenda 21, Chapter 11. Combating Deforestation]] - added
#[[Agenda 21, Chapter 12. Managing Fragile Ecosystems: Combating Desertification and Drought]] - added
#[[Agenda 21, Chapter 13. Managing Fragile Ecosystems:  Sustainable Mountain Development]] - added
#[[Agenda 21, Chapter 14. Promoting Sustainable Agriculture and Rural Development]] - added
#[[Agenda 21, Chapter 15. Conservation of Biological Diversity]] - added
#[[Agenda 21, Chapter 16. Environmentally Sound Management of Biotechnology]] - added
#[[Agenda 21, Chapter 17. Protection of the Oceans, All Kinds of Seas, including Enclosed and Semi-enclosed Seas, and Coastal Areas and the Protection, Rational Use and Development of their Living Resources]] - added
#[[Agenda 21, Chapter 18. Protection of the Quality and Supply of Freshwater Resources: Application of Integrated Approaches to the Development, Management and Use of Water Resources]] - added
#[[Agenda 21, Chapter 19. Environmentally Sound Management of Toxic Chemicals, Including Prevention of Illegal International Traffic in Toxic and Dangerous Products]] - added
#[[Agenda 21, Chapter 20. Environmentally Sound Management of Hazardous Wastes, Including Prevention of Illegal International Traffic in Hazardous Wastes]] - added
#[[Agenda 21, Chapter 21. Environmentally Sound Management of Solid Wastes and Sewage-related Issues]] - added
#[[Agenda 21, Chapter 22. Safe and Environmentally Sound Management of Radioactive Wastes]] - added
#[[Agenda 21, Chapter 23. Preamble: Strengthening The Role Of Major Groups]] - added
#[[Agenda 21, Chapter 24. Global Action for Women Towards Sustainable and Equitable Development]] - added
#[[Agenda 21, Chapter 25. Children and Youth in Sustainable Development]] - added
#[[Agenda 21, Chapter 26. Recognizing and Strengthening the Role of Indigenous People and their Communities]] - added
#[[Agenda 21, Chapter 27. Strengthening the Role of Non-governmental Organizations: Partners for Sustainable Development]] - added
#[[Agenda 21, Chapter 28. Local Authorities' Initiatives in Support of Agenda 21]] - added
#[[Agenda 21, Chapter 29. Strengthening the Role of Workers and their Trade Unions]] - added
#[[Agenda 21, Chapter 30. Strengthening the Role of Business and Industry]] - added
#[[Agenda 21, Chapter 31. Scientific and Technological Community]] - added
#[[Agenda 21, Chapter 32. Strengthening the Role of Farmers]] - added
#[[Agenda 21, Chapter 33. Financial Resources and Mechanisms]] - added
#[[Agenda 21, Chapter 34. Transfer of Environmentally Sound Technology, Cooperation and Capacity-building]] - added
#[[Agenda 21, Chapter 35. Science for Sustainable Development]] - added
#[[Agenda 21, Chapter 36. Promoting Education, Public Awareness and Training]] - added
#[[Agenda 21, Chapter 37. National Mechanisms and International Cooperation for Capacity-building in Developing Countries]] - added
#[[Agenda 21, Chapter 38. International Institutional Arrangements]] - added
#[[Agenda 21, Chapter 39. International Legal Instruments and Mechanisms]] - added
#[[Agenda 21, Chapter 40. Information for Decision-making]] - added
#[[Non-legally binding authoritative statement of principles for a global consensus on the management, conservation and sustainable development of all types of forests]] - added
#[[Rio Declaration on Environment and Development]] - replaces Rio Declaration on Environment and Development - 9/21/2007 14:51:00 by Webster
<<<

----
On Wednesday, February 11, 2009 8:41:39 PM, Webster imported 18 tiddlers from
[[file:///t:/ngo-education.net/un-docs/index.htm|file:///t:/ngo-education.net/un-docs/index.htm]]:
<<<
#[[Our Common Future,   Chairman's Foreword]] - added
#[[Our Common Future,   From One Earth to One World]] - added
#[[Our Common Future,  Acronyms and Note on Terminology]] - added
#[[Our Common Future,  Chapter  1: A Threatened Future]] - added
#[[Our Common Future,  Chapter  2: Towards Sustainable Development]] - added
#[[Our Common Future,  Chapter  3: The Role of the International Economy]] - added
#[[Our Common Future,  Chapter  4: Population and Human Resources]] - added
#[[Our Common Future,  Chapter  5: Food Security: Sustaining The Potential]] - added
#[[Our Common Future,  Chapter  6: Species and Ecosystems: Resources for Development]] - added
#[[Our Common Future,  Chapter  7: Energy: Choices for Environment and Development]] - added
#[[Our Common Future,  Chapter  8: Industry: Producing More With Less]] - added
#[[Our Common Future,  Chapter  9: The Urban Challenge]] - added
#[[Our Common Future,  Chapter 10: Managing The Commons]] - added
#[[Our Common Future,  Chapter 11: Peace, Security, Development, and the Environment]] - added
#[[Our Common Future,  Chapter 12: Towards Common Action: Proposals For institutional and Legal Change]] - added
#[[Our Common Future, Annexe 1: Summary of Proposed Legal Principles for Environmental Protection and Sustainable Development Adopted by the WCED Experts Group on Environmental Law]] - added
#[[Our Common Future, Annexe 2: The Commission and its Work]] - added
#[[Report of the World Commission on Environment and Development: Our Common Future]] - added
<<<

----
On Monday, December 08, 2008 12:55:32 PM, Webster imported 1 tiddler from
[[file:///T:/climate-change-two.net/udhr60/index.htm|file:///T:/climate-change-two.net/udhr60/index.htm]]:
<<<
#[[Config Tweaks]] - added
<<<

----
On Tuesday, October 14, 2008 11:28:11 AM, Werbster imported 1 tiddler from
[[file:///T:/climate-change-two.net/garden/index.htm|file:///T:/climate-change-two.net/garden/index.htm]]:
<<<
#[[iframe template]] - replaces iframe template - 9/22/2007 15:24:00 by Webster
<<<

----
On Tuesday, October 14, 2008 11:19:04 AM, Werbster imported 1 tiddler from
[[file:///T:/climate-change-two.net/garden/index.htm|file:///T:/climate-change-two.net/garden/index.htm]]:
<<<
#[[HoverMenu]] - replaces HoverMenu - 11/27/2007 21:08:00 by Webster
<<<

----
On Saturday, September 27, 2008 07:31:15 PM, Webster imported 5 tiddlers from
[[index.htm|index.htm]]:
<<<
#[[A Spiritual Declaration on Climate Change]] - skipped after asking
#[[Administrative Menu]] - replaces Administrative Menu - 1/12/2008 11:54:00 by Webster
#[[ColorPalette - garden]] - renamed from ColorPalette
#[[Creative Commons Attribution Non-Commercial Share-Alike Licence 3.0]] - replaces Creative Commons Attribution Non-Commercial Share-Alike Licence 3.0 - 9/24/2007 17:37:00 by Webster
#[[HoverMenu]] - replaces HoverMenu - 11/27/2007 21:08:00 by Webster
#[[ImportTiddlersPlugin]] - replaces ImportTiddlersPlugin - 12/7/2007 10:27:00 by Webster
<<<

----
On Saturday, September 27, 2008 07:23:52 PM, Webster imported 2 tiddlers from
[[http://www.ngo-framework.net/information-ecology/|http://www.ngo-framework.net/information-ecology/]]:
<<<
#[[Hover Menu]] - replaces Hover Menu - 11/15/2007 11:25:00 by Webster
#[[HoverMenu]] - replaces HoverMenu - 11/27/2007 21:08:00 by Webster
<<<

----
On Saturday, September 27, 2008 07:20:17 PM, Webster imported 3 tiddlers from
[[index.htm|index.htm]]:
<<<
#[[Administrative Menu]] - replaces Administrative Menu - 1/12/2008 11:54:00 by Webster
#[[ImportTiddlersPlugin]] - replaces ImportTiddlersPlugin - 12/7/2007 10:27:00 by Webster
#[[Information Ecology & Climate Change alt]] - renamed from Information Ecology & Climate Change
#[[Information Ecology: NGO Recommendations]] - skipped after asking
#[[Information and Communications Sub-Committee]] - skipped after asking
#[[Integrated Monitoring Frameworks: NGO Recommendations]] - skipped after asking
<<<

----
On Monday, December 10, 2007 5:08:17 PM, Webster imported 1 tiddler from
[[http://devpad.tiddlyspot.com/|http://devpad.tiddlyspot.com/]]:
<<<
#[[PaletteViewMacro]] - added
<<<

----
On Sunday, December 09, 2007 5:33:53 PM, Webster imported 1 tiddler from
[[http://www.ngo-framework.net/information-ecology/|http://www.ngo-framework.net/information-ecology/]]:
<<<
#[[ViewTemplate]] - replaces ViewTemplate - 12/9/2007 17:32:09 by Webster
<<<

----
On Sunday, December 09, 2007 4:51:02 PM, Webster imported 1 tiddler from
[[http://www.ngo-framework.net/information-ecology/|http://www.ngo-framework.net/information-ecology/]]:
<<<
#[[Economics of information]] - added
<<<

----
On Friday, December 07, 2007 2:24:22 PM, Webster imported 2 tiddlers from
[[http://www.tiddlytools.com/|http://www.tiddlytools.com/]]:
<<<
#[[ExportTiddlersPlugin]] - replaces ExportTiddlersPlugin - 7/16/2007 16:59:00 by ELSDesignStudios
#[[NewDocumentPlugin]] - added
<<<

----
On Friday, December 07, 2007 2:11:05 PM, Webster imported 9 tiddlers from
[[http://www.ngo-framework.net/information-ecology/|http://www.ngo-framework.net/information-ecology/]]:
<<<
#[[Administrative Menu]] - replaces Administrative Menu - 10/31/2007 12:11:00 by Webster
#[[Template snippets]] - replaces Template snippets - 9/22/2007 16:03:00 by Webster
#[[ImportTiddlersPlugin]] - replaces ImportTiddlersPlugin - 9/23/2007 13:30:00 by Webster
#[[Menu Widgets]] - added
#[[Search Box]] - added
#[[HoverMenu]] - replaces HoverMenu - 9/19/2007 10:10:00 by Webster
#[[Peace Caucus: The Wild Cards in Climate Change]] - added
#[[Climate Change 2.0]] - added
#[[Climate Change 2.0 - Elements]] - added
#[[United Nation Climate Change Portal]] - skipped after asking
<<<

----
On 2007.11.14 - Wednesday, November 14 5:06:58 PM, Webster imported 1 tiddler from
[[http://twhelp.tiddlyspot.com|http://twhelp.tiddlyspot.com]]:
<<<
#[[TwHelpSearchPlugin]] - added
<<<

----
On 2007.11.10 - Saturday, November 10 1:18:41 PM, Webster imported 1 tiddler from
[[T:\climate-change-two.net\ccc\index.htm|T:\climate-change-two.net\ccc\index.htm]]:
<<<
#[[Tipping points]] - added
<<<

----
On 2007.11.10 - Saturday, November 10 1:02:00 PM, Webster imported 17 tiddlers from
[[T:\climate-change-two.net\ccc\index.htm|T:\climate-change-two.net\ccc\index.htm]]:
<<<
#[[Accelerated melting of mountain glaciers and spring snowpack]] - added
#[[Acceleration in the rate of rise of sea level]] - added
#[[Alteration of atmospheric circulation and weather regimes]] - added
#[[Alteration of the Indian and possibly other monsoon systems]] - added
#[[Bi-stability of Saharan vegetation]] - added
#[[Dieback of tropical vegetation (e.g., Amazon, central Africa)]] - added
#[[Enhancement of the springtime holes in the antarctic and arctic stratospheric ozone layers]] - added
#[[Increased occurrence of heat waves and high ocean temperatures]] - added
#[[Intensification of drought and wildfire]] - added
#[[Intensification of tropical cyclones (including typhoons and hurricanes)]] - added
#[[Loss of arctic sea ice]] - added
#[[Ocean acidification leading to loss of calcifying capability of marine species]] - added
#[[Rapid deterioration of the Greenland Ice Sheet]] - added
#[[Rapid deterioration of the West Antarctic Ice Sheet (WAIS) and alteration of antarctic deep-water formation]] - added
#[[Sharply reduced rates of deep-water formation in the North Atlantic]] - added
#[[Significant disruption of the El Nino-Southern Oscillation]] - added
#[[Thawing of permafrost and tundra, and the potential release of substantial amounts of Carbon Dioxide and Methane]] - added
<<<

----
On 2007.11.09 - Friday, November 09 7:18:00 PM, Webster imported 1 tiddler from
[[T:\climate-change-two.net\index.htm|T:\climate-change-two.net\index.htm]]:
<<<
#[[Conference Of NGOs]] - added
<<<

----
On 2007.11.09 - Friday, November 09 2:56:56 PM, Webster imported 2 tiddlers from
[[T:\climate-change-two.net\index.htm|T:\climate-change-two.net\index.htm]]:
<<<
#[[TWHelp-SearchResults]] - added
#[[TWHelpSearchDoc]] - added
<<<

----
On 2007.11.09 - Friday, November 09 2:46:13 PM, YourName imported 8 tiddlers from
[[T:\climate-change-two.net\index.htm|T:\climate-change-two.net\index.htm]]:
<<<
#[[Administrative Menu]] - replaces Administrative Menu - 9/24/2007 15:30:00 by Webster
#[[Our Common Future]] - added
#[[Our Common Future - Google site search @ www.UN-documents.net]] - added
#[[Our Common Future: Bibliographic Information: UNBISnet]] - added
#[[Our Common Future: Bibliographic information]] - added
#[[Our Common Future: Table of Contents]] - added
#[[Our Common Future: United Nations Information]] - added
#[[Oxford University Press on Our Common Future]] - added
<<<

----
On 2007.09.25 - Tuesday, September 25 11:10:49 AM, YourName imported 1 tiddler from
[[T:\climate-change-two.net\index.htm|T:\climate-change-two.net\index.htm]]:
<<<
#[[ToggleTagPlugin]] - added
<<<

----
On 2007.09.24 - Monday, September 24 5:47:49 PM, Webster imported 59 tiddlers from
[[T:\climate-change-two.net\index.htm|T:\climate-change-two.net\index.htm]]:
<<<
#[[60dpingo]] - added
#[[60th Annual DPI/NGO Conference]] - added
#[[60th Annual DPI/NGO Conference Declaration:  Climate Change Threats - An NGO Framework for Action]] - added
#[[60th Annual DPI/NGO Conference Declaration: Process]] - added
#[[A Spiritual Declaration on Climate Change]] - added
#[[DPI/NGO Conference Planning Committee]] - added
#[[DPI/NGO Workshop]] - added
#[[Daphne Cohen]] - added
#[[Declaration on Climate Change and Gender Equality]] - added
#[[Diane Paravazian]] - added
#[[Executive Committee]] - added
#[[Faye C. Feller]] - added
#[[Integrated Monitoring Frameworks: NGO Recommendations]] - added
#[[Johannesburg Declaration on Sustainable Development]] - added
#[[Millennium Development Goals]] - added
#[[NGO/DPI Executive Committee]] - added
#[[Purposes and Principles of the United Nations]] - added
#[[Rio Declaration on Environment and Development]] - added
#[[Sylvan M. Barnet, Jr.]] - added
#[[The Habitat Agenda]] - added
#[[The Wealth of Networks: How Social Production Transforms Markets and Freedom]] - added
#[[UN Climate Change Conference in Bali]] - added
#[[UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] - added
#[[UN Framework Convention on Climate Change: Article 2: Objective]] - added
#[[UN Framework Convention on Climate Change: Article 3: Principles]] - added
#[[United Nation Climate Change Portal]] - added
#[[United Nations Environment Programme]] - added
#[[United Nations Forum on Forests]] - added
#[[United Nations Framework Convention on Climate Change]] - added
#[[Universal Declaration of Human Rights]] - added
#[[World Association of Girl Guides and Girl Scouts]] - added
#[[World Declaration on Education For All: Meeting Basic Learning Needs]] - added
#[[World Declaration on Education for All]] - added
#[[cascading styles]] - skipped after asking
#[[climate change]] - added
#[[convention]] - added
#[[dataperfect]] - added
#[[els design]] - skipped after asking
#[[environmental convention]] - added
#[[html tag]] - added
#[[import]] - skipped after asking
#[[import/export]] - added
#[[melting ice]] - added
#[[menu]] - skipped after asking
#[[site map]] - skipped after asking
#[[snow]] - added
#[[systemConfig]] - replaces systemConfig - 9/22/2007 10:21:00 by Webster
#[[tag]] - replaces tag - 9/21/2007 14:20:00 by Webster
#[[tag template]] - replaces tag template - 9/22/2007 15:20:00 by Webster
#[[template]] - added
#[[tiddlers]] - replaces tiddlers - 9/21/2007 14:18:00 by Webster
#[[tiddlywiki]] - added
#[[tiddlywiki developer]] - replaces tiddlywiki developer - 9/24/2007 17:04:35 by Webster
#[[tiddlywikiperfect]] - replaces tiddlywikiperfect - 9/21/2007 14:33:00 by Webster
#[[toolbox]] - added
#[[un]] - added
#[[un documents]] - added
#[[un dpi]] - added
#[[un-documents]] - added
#[[unced]] - added
#[[unep]] - added
#[[unesco]] - added
#[[unfccc]] - added
#[[vanishing habitat]] - added
<<<

----
On 2007.09.24 - Monday, September 24 3:36:02 PM, Webster imported 4 tiddlers from
[[T:\climate-change-two.net\index.htm|T:\climate-change-two.net\index.htm]]:
<<<
#[[Simon Baird]] - added
#[[Udo Borkowski]] - added
#[[abego software]] - added
#[[els design]] - added
<<<

----
On 2007.09.24 - Monday, September 24 3:33:00 PM, Webster imported 1 tiddler from
[[T:\climate-change-two.net\index.htm|T:\climate-change-two.net\index.htm]]:
<<<
#[[Tiddler Tags]] - added
<<<

----
On 2007.09.24 - Monday, September 24 12:55:08 PM, Webster imported 8 tiddlers from
[[http://www.housing-court-of-kings.net/|http://www.housing-court-of-kings.net/]]:
<<<
#[[ColorPalette]] - added
#[[Colour Palette]] - skipped after asking
#[[FeedBlitz]] - added
#[[HoverMenu]] - added
#[[Information Ecology: NGO Recommendations]] - skipped after asking
#[[Information Habitat: Where Information Lives]] - added
#[[Information and Communications Sub-Committee]] - added
#[[MainMenuStyles]] - added
#[[NGO Committee on Education]] - added
#[[TagglyTaggingStyles]] - added
<<<

----
On 2007.09.24 - Monday, September 24 12:47:35 PM, Webster imported 1 tiddler from
[[T:\climate-change-two.net\index.htm|T:\climate-change-two.net\index.htm]]:
<<<
#[[StyleSheetLayout]] - added
<<<

----
On 2007.09.24 - Monday, September 24 12:44:27 PM, Webster imported 65 tiddlers from
[[T:\climate-change-two.net\index.htm|T:\climate-change-two.net\index.htm]]:
<<<
#[[About this web site]] - added
#[[Acknowledgment: Software contributions]] - added
#[[Administrative Menu]] - added
#[[Administrative Menus]] - added
#[[Alphabetical Tiddlers]] - added
#[[Basic Tiddler Lists]] - added
#[[Colour Palette]] - added
#[[Contact form]] - added
#[[DataPerfect]] - added
#[[Document Template]] - added
#[[Download this web site]] - added
#[[EditTemplate]] - added
#[[Formatting Text]] - added
#[[Formatting Tiddlers]] - added
#[[Head Menu]] - added
#[[Headings & Outlines]] - added
#[[Images]] - added
#[[Import Tiddlers]] - added
#[[Imported Tiddlers]] - added
#[[Information Ecology]] - added
#[[Information Ecology: NGO Recommendations]] - added
#[[Information ecosystems]] - added
#[[Menus]] - added
#[[MicroContent]] - added
#[[Missing Tiddlers]] - added
#[[PageTemplate]] - added
#[[Plugin Macros]] - added
#[[Plugin Manager]] - added
#[[RSS feeds]] - added
#[[Recent Tiddlers]] - added
#[[Robert Pollard]] - added
#[[Search Options]] - added
#[[Setup Menu]] - added
#[[Shadow Tiddlers]] - added
#[[SidebarStyles]] - added
#[[Site Maps]] - added
#[[SliderSiteMap]] - added
#[[StyleSheetColors]] - added
#[[Template snippets]] - added
#[[TemplateShowColor]] - added
#[[Templates & Stylesheets]] - added
#[[Templates for Light & Colour Cubes]] - added
#[[Tiddler Administration]] - added
#[[Tiddler Timeline]] - added
#[[Tiddlers]] - added
#[[TiddlyPerfect: An emerging hybrid information species]] - added
#[[TiddlyWiki]] - added
#[[User Options]] - added
#[[View ColorPalette]] - added
#[[ViewTemplate]] - added
#[[cascading styles]] - added
#[[css]] - added
#[[css colours]] - added
#[[css template]] - added
#[[iframe]] - added
#[[iframe template]] - added
#[[import]] - added
#[[menu]] - added
#[[site map]] - added
#[[systemConfig]] - added
#[[tag]] - added
#[[tag template]] - added
#[[tiddlers]] - added
#[[tiddlywiki developer]] - added
#[[tiddlywikiperfect]] - added
<<<

----
On 2007.09.24 - Monday, September 24 11:57:18 AM, Webster imported 29 tiddlers from
[[http://www.climate-change-two.net/|http://www.climate-change-two.net/]]:
<<<
#[[Better timeline plugin macro]] - added
#[[CloseOnCancelPlugin]] - added
#[[CustomLewcid - HoverMenuPlugin]] - added
#[[DisableWikiLinksPlugin]] - added
#[[EditFieldPlugin]] - added
#[[ExportTiddlersPlugin]] - added
#[[ExternalLinkPreviewPlugin]] - added
#[[HideWhenPlugin]] - added
#[[ImportTiddlersPlugin]] - added
#[[InlineSlidersPlugin]] - added
#[[IntelliTaggerPlugin]] - added
#[[LoadTiddlersPlugin]] - added
#[[MultiRssPlugin]] - added
#[[NestedSlidersPlugin]] - added
#[[QuickOpenTagPlugin]] - added
#[[Refresh macro]] - added
#[[SaveFromWebConfig]] - added
#[[SaveFromWebPlugin]] - added
#[[SearchOptions plugin]] - added
#[[Settings plugin macro]] - added
#[[SplashScreenPlugin]] - added
#[[TagCloudPlugin]] - added
#[[TagglyTaggingPlugin]] - added
#[[YourSearchPlugin macro]] - added
#[[allTagsExcept plugin macro]] - added
#[[fontSize plugin macro]] - added
#[[fullscreen plugin macros]] - added
#[[siteMap plugin macro]] - added
#[[wikipedia plugin macro]] - 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.
<html>
<script src="http://feeds.feedburner.com/InformationEcologistsPhotoGallery?format=sigpro" type="text/javascript" ></script>
<noscript><p>Subscribe to RSS headline updates from: <a href="http://feeds.feedburner.com/InformationEcologistsPhotoGallery"></a><br/>Powered by FeedBurner</p> </noscript>
</html>
{{iframe{''Note'': This is a "framed" page from the [[Picasa]] 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}}}
<html><iframe
	src = "http://picasaweb.google.com/ecology2001"
	title = "Information Ecologist's Public Gallery @ Picasa"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
''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.
''Information Ecology & Climate Change'' is under development as a proposed element of an [[NGO Framework for Climate Change Action]] to focus attention on the critical, and largely overlooked, significance of the [[Climate Change information ecosystem]] and the extent to which it is being, and can be, transformed thanks to the information revolution.

The approach adopted here is being developed by [[Climate Change 2.0]], an initiative intended to harness the powers and properties of information and communications technology, particularly of [[Web 2.0]] in addressing the climate change crisis, while simultaneously seeking to facilitate the transition from a carbon-based to a [[digital knowledge-based economy|Digital knowledge-based economy]] and the concomitant transition to an [[Open source]], [[Creative Commons]] climate.
!! Analysis
! ICT tools & resources
* Really Simple Syndication - RSS
** RSS via email
* Document databases
* Bookmarked pdf documents
* Digital libraries
* Online meetings
* Integrated database of climate change information
* Creative Commons Attribution, Non-Commercial, Share-Alike license 
** Integrated database of climate change information cited by IPCC
** IPCC Reports
** Cited publications
* Secure wiki-style document negotiation system
** Provision for commenting by IGOs & accredited NGOs
! Framework for environmental governance
* Principles
** Interoperability
** Common procedures
** Common data protocols
** Exchange / sharing of environment-related information
** Full GIS data integration

* Common operating system for governance
* Common data protocols
* Integrated database of climate change information

! Examples of CO~~2~~ mitigation opportunities
* Integration of UTC barcodes with carbon footprint data & electronic purchases
* Smart utility meters + utility plugin / widget
* Real time monitoring:
** Industrial processes, energy, material use & waste
** Intelligent traffic management
*** Public transit information systems
**** Turin
**** Toronto
*** 
* Universal broadband access - maximizing exchange of information, minimizing movement of people & materials
** Telecommuting
** Free online educational resources / curricula
Microcomputer prices
Processor speed
Disk capacity
Physical size of disk
Memory
Connection speed


Sales - units, price
Microcomputers
Mobile phone
Digital cameras
Video recorder
! The Scientific Basis
!! Context & history
* Information revolution
* [[Emergence of the World Wide Web]]
* [[Exponential trends in ICT power, storage, communication speed, size & cost]]
* [[Emergence & growth of complex information ecosystems]]
!! Nature and properties of information ecosystems
* Zero-based properties of information
* Zero marginal cost
* Economics of publication
** Constraints of carbon information ecosystems
* Open Source & Creative Commons movements
* Phenomenal evolution of information ecosystems
!! Emergence & growth of a free & open economy
* The Wealth of Networks

!! A universe in which knowledge is wealth
!! Elements of an integrated ICT environment

! Impacts, Adaptation & Vulnerability
* Smart phones & wireless infrastructure
* Digital cameras / video recorders
* Digital voice recorders
* ICT resource centers
* Memory cards
* USB flash drives
* Digital libraries
* Creative Commons curricula
* Freely available software tools & online resources
* ''Box: TiddlyWiki''
** Modular architecture
** Free exchange of tools and content
** Exceptional 
** Supported by BT
* ''Box: Firefox & Firefox plugins''
* 
!! Monitoring energy / CO2 use
* Smart electricity meters - browser plugins
* UPC-linked carbon footprint data 
! Mitigation
! Adaptation
* Publishing & dissemination of climate change information
* Establishment of common data protcols
* Creative Commons licensing of climate change documents & data
!! Benefits of ICT adoption
!! ICT & technology transfer
* Online meetings & conferences
* Optimizing information for on-screen environment
** Bookmarked pdf documents
<<forEachTiddler 
 where 
 'tiddler.tags.containsAll(["information ecology"])'
>>
> 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 Special 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 opportunties 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.

In recent years, ''Information Habitat'' has focused its work through the +++[NGO Committee on Education]
> <<tiddler "NGO Committee on Education">>
===
, and its +++[Information and Communications Sub-Committee]
> <<tiddler "Information and Communications Sub-Committee">>
===


+++[Information Habitat's web site]
{{iframe{''Note'': This is a "framed" page from the ''Information Habitat: Where Information Lives'' 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/}}}
<html><iframe
	src = "http://habitat.igc.org"
	title = "Information Habitat: Where Information Lives - home page"
	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]]
* [[Isobel Lowther]], [[Kaleidoscope Experience]]
* [[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]]
''Special thanks''
* [[Lew Bastian]], Author, DataPerfect
* [[Yochai Benkler]], Author [[The Wealth of Networks: How Social Production Transforms Markets and Freedom]]
* [[Ewa Brantley]], 
* [[Anthony Judge]], [[Union of International Associations]] (retired)
* [[Barbara Ann O'Leary]], [[Authenticity]]
* [[Darrell Posey]], r.i.p., 
* [[Gilbert Shapiro]], Professor Emeritus, University of Pittsburgh
* [[Fran Spivy-Weber]], 
* [[Peter Thacher]], r.i.p.
!! 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''.
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''.
Just as ''ecology'' is the science of the relationships between organisms, their environment and other organisms - or between species, their habitats and other species - so [[information ecology|Information Ecology]] is the science of the relationships between ''information species'', [[information habitats|Information habitats]] and other information species in an [[information ecosystem|Information ecosystem]]
''Information, Ecology & Climate Change'' is under development as a proposed element of an [[NGO Framework for Climate Change Action]] to focus attention on the critical, and largely overlooked, significance of the [[Climate Change information ecosystem]] and the extent to which it is being, and can be, transformed thanks to the information revolution.

The approach adopted here is being developed by [[Climate Change 2.0]], an initiative intended to harness the powers and properties of information and communications technology, particularly of [[Web 2.0]] in addressing the climate change crisis, while simultaneously seeking to facilitate the transition from a carbon-based economy to a [[digital knowledge-based economy|Digital knowledge-based economy]] and the concomitant transition to an [[Open Source]], [[Creative Commons]] climate. 

Among the areas  

* ''Climate Change documents''
> There is a large and growing collection of complex documents on a broad range of topics relating to Climate Change, notably documents of the [[Intergovernmental Panel on Climate Change]]
* ''Climate Change data''
* ''Education''
* ''Economics of information''
* ''Information technology & development''
* ''Full-cost accounting''



* Optimize use of customizable RSS feeds
* Compilation of downloadable collections of structured & interlinked information bodies / digital libraries
The following names are offered as among those who could make a significant contribution to Working Group on Information, Ecology & Climate Change:
* [[Yochai Benkler]], Faculty Co-Director, Berkman Center on Internet & Society; Author, [[The Wealth of Networks: How Social Production Transforms Markets and Freedom]]
* [[Vint Cerf]], Chief Internet Evangelist, Google, Former Chair, ICANN
* [[John Gage]], Partner, Kleiner Perkins Caufield & Byers; Former Chief Researcher, Sun Microsystems
* [[Jen-Hsun Huang]], Co-Founder, President, and Chief Executive Officer, nVidia
* [[Peggy Duvette]], Director, WiserEarth
* [[John Hanke]], Director, Google Earth
* [[Dennis Pamlin]], Global Policy Advisor, WWF
* [[Edward Tufte]], Visualization of information
* [[Joel Geraci]], PDF Evangelist, Adobe Systems Incorporated
* [[Hank Green]], Founder and Chief Geek at [[EcoGeek.org]]
* [[Mark Shuttleworth]], Founder & CEO, Canonical, Ltd
* [[Dee Hock]], Founder & former CEO, VISA Credit Card Association, Founder, Chaordic Commons
* [[Ray Kurzweil]]
!! Senior Adviser
* [[Janos Pasztor]], Director, Secretary-General's Climate Support Unit
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.5|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2009.04.11 [1.9.5] pass current tiddler object into wrapper code so it can be referenced from within 'onclick' scripts
2009.02.26 [1.9.4] in $(), handle leading '#' on ID for compatibility with JQuery syntax
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 5, date: new Date(2009,4,11)};

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

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

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

// // GLOBAL FUNCTION: $(...) -- 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=='undefined') { function $(id) { return document.getElementById(id.replace(/^#/,'')); } }
//}}}
/***
|Name|InlineJavascriptPluginInfo|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.4|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|Documentation for InlineJavascriptPlugin|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Usage
<<<
This plugin adds wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be recognized as embedded javascript code.
<script show>
	/* javascript code goes here... */
</script>Every time the tiddler content is rendered, the javascript code is automatically evaluated, allowing you to invoke 'side-effect' processing and/or produce dynamically-generated content that is then inserted into the tiddler content, immediately following the script (see below).  By including the optional ''show'' keyword as the final parameter in a {{{<script>}}} marker, the plugin will also include the script source code in the output that it displays in the tiddler.  This is helpful when creating examples for documentation purposes (such as used in this tiddler!)

__''Deferred execution from an 'onClick' link''__
<script label="click here" title="mouseover tooltip text" key="X" show>
	/* javascript code goes here... */
	alert('you clicked on the link!');
</script>
By including a {{{label="..."}}} parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered.  You may also include a {{{title="..."}}} parameter to specify the 'tooltip' text that will appear whenever the mouse is moved over the onClick link text, and a {{{key="X"}}} parameter to specify an //access key// (which must be a //single// letter or numeric digit only).

__''Loading scripts from external source files''__
<script src="URL" show>
	/* optional javascript code goes here... */
</script>You can also load javascript directly from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}).  This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins.  The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.

In addition to loading the javascript from the external file, you can also use this feature to invoke javascript code contained within the {{{<script>...</script>}}} markers.  This code is invoked //after// the external script file has been processed, and can make immediate use of the functions and/or global variables defined by the external script file.
>Note: To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that is rendered as soon as your TiddlyWiki document is opened, such as MainMenu.  For example: put your {{{<script src="..."></script>}}} syntax into a separate 'library' tiddler (e.g., LoadScripts), and then add {{{<<tiddler LoadScripts>>}}} to MainMenu so that the library is loaded before any other tiddlers that rely upon the functions it defines. 
>
>Normally, loading external javascript in this way does not produce any direct output, and should not have any impact on the appearance of your MainMenu.  However, if your LoadScripts tiddler contains notes or other visible content, you can suppress this output by using 'inline CSS' in the MainMenu, like this: {{{@@display:none;<<tiddler LoadScripts>>@@}}}
<<<
!!!!!Creating dynamic tiddler content and accessing the ~TiddlyWiki DOM
<<<
An important difference between TiddlyWiki inline scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document: in a typical web document, you use the {{{document.write()}}} (or {{{document.writeln()}}}) function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.

However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and instead will //completely replace the entire ~TiddlyWiki document in your browser window (which is clearly not a good thing!)//.  In order to allow scripts to use {{{document.write()}}}, the plugin automatically converts and buffers all HTML output so it can be safely inserted into your tiddler content, immediately following the script.

''Note that {{{document.write()}}} can only be used to output "pure HTML" syntax.  To produce //wiki-formatted// output, your script should instead return a text value containing the desired wiki-syntax content'', which will then be automatically rendered immediately following the script.  If returning a text value is not sufficient for your needs, the plugin also provides an automatically-defined variable, 'place', that gives the script code ''direct access to the //containing DOM element//'' into which the tiddler output is being rendered.  You can use this variable to ''perform direct DOM manipulations'' that can, for example:
* generate wiki-formatted output using {{{wikify("...content...",place)}}}
* vary the script's actions based upon the DOM element in which it is embedded
* access 'tiddler-relative' DOM information using {{{story.findContainingTiddler(place)}}}
Note:
''When using an 'onclick' script, the 'place' element actually refers to the onclick //link text// itself, instead of the containing DOM element.''  This permits you to directly reference or modify the link text to reflect any 'stateful' conditions that might set by the script.  To refer to the containing DOM element from within an 'onclick' script, you can use "place.parentNode" instead.
<<<
!!!!!Instant "bookmarklets"
<<<
You can also use an 'onclick' link to define a "bookmarklet": a small piece of javascript that can be ''invoked directly from the browser without having to be defined within the current document.''  This allows you to create 'stand-alone' commands that can be applied to virtually ANY TiddlyWiki document... even remotely-hosted documents that have been written by others!!  To create a bookmarklet, simply define an 'onclick' script and then grab the resulting link text and drag-and-drop it onto your browser's toolbar (or right-click and use the 'bookmark this link' command to add it to the browser's menu).

Notes:
*When writing scripts intended for use as bookmarklets, due to the ~URI-encoding required by the browser, ''you cannot not use ANY double-quotes (") within the bookmarklet script code.''
*All comments embedded in the bookmarklet script must ''use the fully-delimited {{{/* ... */}}} comment syntax,'' rather than the shorter {{{//}}} comment syntax.
*Most importantly, because bookmarklets are invoked directly from the browser interface and are not embedded within the TiddlyWiki document, there is NO containing 'place' DOM element surrounding the script.  As a result, ''you cannot use a bookmarklet to generate dynamic output in your document,''  and using {{{document.write()}}} or returning wiki-syntax text or making reference to the 'place' DOM element will halt the script and report a "Reference Error" when that bookmarklet is invoked.  
Please see [[InstantBookmarklets]] for many examples of 'onclick' scripts that can also be used as bookmarklets.
<<<
!!!!!Special reserved function name
<<<
The plugin 'wraps' all inline javascript code inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler.  To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.
<<<
!!!!!$(...) 'shorthand' function
<<<
As described by Dustin Diaz [[here|http://www.dustindiaz.com/top-ten-javascript/]], the plugin defines a 'shorthand' function that allows you to write:
{{{
$(id)
}}}
in place of the normal standard javascript syntax:
{{{
document.getElementById(id)
}}}
This function is provided merely as a convenience for javascript coders that may be familiar with this abbreviation, in order to allow them to save a few bytes when writing their own inline script code.
<<<
!!!!!Examples
<<<
simple dynamic output:
><script show>
	document.write("The current date/time is: "+(new Date())+"<br>");
	return "link to current user: [["+config.options.txtUserName+"]]\n";
</script>
dynamic output using 'place' to get size information for current tiddler:
><script show>
	if (!window.story) window.story=window;
	var title=story.findContainingTiddler(place).getAttribute("tiddler");
	var size=store.getTiddlerText(title).length;
	return title+" is using "+size+" bytes";
</script>
dynamic output from an 'onclick' script, using {{{document.write()}}} and/or {{{return "..."}}}
><script label="click here" show>
	document.write("<br>The current date/time is: "+(new Date())+"<br>");
	return "link to current user: [["+config.options.txtUserName+"]]\n";
</script>
creating an 'onclick' button/link that accesses the link text AND the containing tiddler:
><script label="click here" title="clicking this link will show an 'alert' box" key="H" show>
	if (!window.story) window.story=window;
	var txt=place.firstChild.data;
	var tid=story.findContainingTiddler(place).getAttribute('tiddler');
	alert('Hello World!\nlinktext='+txt+'\ntiddler='+tid);
</script>
dynamically setting onclick link text based on stateful information:
>{{block{
{{{
<script label="click here">
	/* toggle "txtSomething" value */
	var on=(config.txtSomething=="ON");
	place.innerHTML=on?"enable":"disable";
	config.txtSomething=on?"OFF":"ON";
	return "\nThe current value is: "+config.txtSomething;
</script><script>
	/* initialize onclick link text based on current "txtSomething" value */
	var on=(config.txtSomething=="ON");
	place.lastChild.previousSibling.innerHTML=on?"disable":"enable";
</script>
}}}
<script label="click here">
	/* toggle "txtSomething" value */
	var on=(config.txtSomething=="ON");
	place.innerHTML=on?"enable":"disable";
	config.txtSomething=on?"OFF":"ON";
	return "\nThe current value is: "+config.txtSomething;
</script><script>
	/* initialize onclick link text based on current "txtSomething" value */
	var on=(config.txtSomething=="ON");
	place.lastChild.innerHTML=on?"enable":"disable";
</script>
}}}
loading a script from a source url:
>http://www.TiddlyTools.com/demo.js contains:
>>{{{function inlineJavascriptDemo() { alert('Hello from demo.js!!') } }}}
>>{{{displayMessage('InlineJavascriptPlugin: demo.js has been loaded');}}}
>note: When using this example on your local system, you will need to download the external script file from the above URL and install it into the same directory as your document.
>
><script src="demo.js" show>
	return "inlineJavascriptDemo() function has been defined"
</script>
><script label="click to invoke inlineJavascriptDemo()" key="D" show>
	inlineJavascriptDemo();
</script>
<<<
!!!!!Revisions
<<<
2009.02.26 [1.9.4] in $(), handle leading '#' on ID for compatibility with JQuery syntax
2008.06.11 [1.9.3] added $(...) function as 'shorthand' for document.getElementById()
2008.03.03 [1.9.2] corrected fallback declaration of wikifyPlainText() (fixes Safari "parse error")
2008.02.23 [1.9.1] in onclick function, use string instead of array for 'bufferedHTML' (fixes IE errors)
2008.02.21 [1.9.0] output from 'onclick' scripts (return value or document.write() calls) are now buffered and rendered into into a span following the script.  Also, added default 'return false' handling if no return value provided (prevents HREF from being triggered -- return TRUE to allow HREF to be processed).  Thanks to Xavier Verges for suggestion and preliminary code.
2008.02.14 [1.8.1] added backward-compatibility for use of wikifyPlainText() in TW2.1.3 and earlier
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
2007.12.28 [1.8.0] added support for key="X" syntax to specify custom access key definitions
2007.12.15 [1.7.0] autogenerate URI encoded HREF on links for onclick scripts.  Drag links to browser toolbar to create bookmarklets.  IMPORTANT NOTE: place is NOT defined when scripts are used as bookmarklets.  In addition, double-quotes will cause syntax errors.  Thanks to PaulReiber for debugging and brainstorming.
2007.11.26 [1.6.2] when converting "document.write()" function calls in inline code, allow whitespace between "write" and "(" so that "document.write ( foobar )" is properly converted.
2007.11.16 [1.6.1] when rendering "onclick scripts", pass label text through wikifyPlainText() to parse any embedded wiki-syntax to enable use of HTML entities or even TW macros to generate dynamic label text.
2007.02.19 [1.6.0] added support for title="..." to specify mouseover tooltip when using an onclick (label="...") script
2006.10.16 [1.5.2] add newline before closing '}' in 'function out_' wrapper.  Fixes error caused when last line of script is a comment.
2006.06.01 [1.5.1] when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly
2006.04.19 [1.5.0] added 'show' parameter to force display of javascript source code in tiddler output
2006.01.05 [1.4.0] added support 'onclick' scripts.  When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked.  'place' value is set to match the clicked button/link element.
2005.12.13 [1.3.1] when catching eval error in IE, e.description contains the error text, instead of e.toString().  Fixed error reporting so IE shows the correct response text.  Based on a suggestion by UdoBorkowski
2005.11.09 [1.3.0] for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content.  Based on a suggestion by BradleyMeck
2005.11.08 [1.2.0] handle loading of javascript from an external URL via src="..." syntax
2005.11.08 [1.1.0] pass 'place' param into scripts to provide direct DOM access 
2005.11.08 [1.0.0] initial release
<<<
//{{{
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. 
/***
|//Name://|~IntelliTaggerPlugin|
|//Version://|1.0.0 |
|//Date:// |26 April 2006 - 2006-04-26|
|//Tags://|tagging intellitagger plugin 'abego software' intelligence 'key words'|
|//Type://|plugin|
|//Source://|http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin|
|//Author://|Udo Borkowski (ub [at] abego-software [dot] de)|
|//Documentation://|[[IntelliTaggerPlugin Documentation|http://tiddlywiki.abego-software.de/doc/IntelliTagger.pdf]] (pdf)|
|//Source Code://|[[IntelliTaggerPlugin SourceCode|[http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin SourceCode]]|
|//Licence://|[[BSD open source license (abego Software)|http://tiddlywiki.abego-software.de/#BSD open source license (abego Software)]]|
|//~TiddlyWiki://|Version 2.0.8 or better|
|//Browser://|Firefox 1.5.0.2 or better|
***/
// /%
if(!version.extensions.IntelliTaggerPlugin){if(!window.abego){window.abego={};}if(!abego.internal){abego.internal={};}abego.alertAndThrow=function(s){alert(s);throw s;};if(version.major<2){abego.alertAndThrow("Use TiddlyWiki 2.0.8 or better to run the IntelliTagger Plugin.");}version.extensions.IntelliTaggerPlugin={major:1,minor:0,revision:0,date:new Date(2006,3,26),type:"plugin",source:"http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin",documentation:"[[IntelliTaggerPlugin Documentation]]",sourcecode:"[[IntelliTaggerPlugin SourceCode]]",author:"Udo Borkowski (ub [at] abego-software [dot] de)",licence:"[[BSD open source license (abego Software)]]",tiddlywiki:"Version 2.0.8 or better",browser:"Firefox 1.5.0.2 or better"};abego.isPopupOpen=function(_2){return _2&&_2.parentNode==document.body;};abego.openAsPopup=function(_3){if(_3.parentNode!=document.body){document.body.appendChild(_3);}};abego.closePopup=function(_4){if(abego.isPopupOpen(_4)){document.body.removeChild(_4);}};abego.getWindowRect=function(){return {left:findScrollX(),top:findScrollY(),height:findWindowHeight(),width:findWindowWidth()};};abego.moveElement=function(_5,_6,_7){_5.style.left=_6+"px";_5.style.top=_7+"px";};abego.centerOnWindow=function(_8){if(_8.style.position!="absolute"){throw "abego.centerOnWindow: element must have absolute position";}var _9=abego.getWindowRect();abego.moveElement(_8,_9.left+(_9.width-_8.offsetWidth)/2,_9.top+(_9.height-_8.offsetHeight)/2);};abego.isDescendantOrSelf=function(_a,e){while(e){if(_a==e){return true;}e=e.parentNode;}return false;};abego.toSet=function(_c){var _d={};for(var i=0;i<_c.length;i++){_d[_c[i]]=true;}return _d;};abego.filterStrings=function(_f,_10,_11){var _12=[];for(var i=0;i<_f.length&&(_11===undefined||_12.length<_11);i++){var s=_f[i];if(s.match(_10)){_12.push(s);}}return _12;};abego.arraysAreEqual=function(a,b){var n=a.length;if(n!=b.length){return false;}for(var i=0;i<n;i++){if(a[i]!=b[i]){return false;}}return true;};abego.moveBelowAndClip=function(_19,_1a){if(!_1a){return;}var _1b=findPosX(_1a);var _1c=findPosY(_1a);var _1d=_1a.offsetHeight;var _1e=_1b;var _1f=_1c+_1d;var _20=findWindowWidth();if(_20<_19.offsetWidth){_19.style.width=(_20-100)+"px";}var _21=_19.offsetWidth;if(_1e+_21>_20){_1e=_20-_21-30;}if(_1e<0){_1e=0;}_19.style.left=_1e+"px";_19.style.top=_1f+"px";_19.style.display="block";};abego.compareStrings=function(a,b){return (a==b)?0:(a<b)?-1:1;};abego.sortIgnoreCase=function(arr){var _25=[];var n=arr.length;for(var i=0;i<n;i++){var s=arr[i];_25.push([s.toString().toLowerCase(),s]);}_25.sort(function(a,b){return (a[0]==b[0])?0:(a[0]<b[0])?-1:1;});for(i=0;i<n;i++){arr[i]=_25[i][1];}};abego.getTiddlerField=function(_2b,_2c,_2d){var _2e=document.getElementById(_2b.idPrefix+_2c);var e=null;if(_2e!=null){var _30=_2e.getElementsByTagName("*");for(var t=0;t<_30.length;t++){var c=_30[t];if(c.tagName.toLowerCase()=="input"||c.tagName.toLowerCase()=="textarea"){if(!e){e=c;}if(c.getAttribute("edit")==_2d){e=c;}}}}return e;};abego.setRange=function(_33,_34,end){if(_33.setSelectionRange){_33.setSelectionRange(_34,end);var max=0+_33.scrollHeight;var len=_33.textLength;var top=max*_34/len,bot=max*end/len;_33.scrollTop=Math.min(top,(bot+top-_33.clientHeight)/2);}else{if(_33.createTextRange!=undefined){var _39=_33.createTextRange();_39.collapse();_39.moveEnd("character",end);_39.moveStart("character",_34);_39.select();}else{_33.select();}}};abego.internal.TagManager=function(){var _3a=null;var _3b=function(){if(_3a){return;}_3a={};store.forEachTiddler(function(_3c,_3d){for(var i=0;i<_3d.tags.length;i++){var tag=_3d.tags[i];var _40=_3a[tag];if(!_40){_40=_3a[tag]={count:0,tiddlers:{}};}_40.tiddlers[_3d.title]=true;_40.count+=1;}});};var _41=TiddlyWiki.prototype.saveTiddler;TiddlyWiki.prototype.saveTiddler=function(_42,_43,_44,_45,_46,_47){var _48=this.fetchTiddler(_42);var _49=_48?_48.tags:[];var _4a=(typeof _47=="string")?_47.readBracketedList():_47;_41.apply(this,arguments);if(!abego.arraysAreEqual(_49,_4a)){abego.internal.getTagManager().reset();}};var _4b=TiddlyWiki.prototype.removeTiddler;TiddlyWiki.prototype.removeTiddler=function(_4c){var _4d=this.fetchTiddler(_4c);var _4e=_4d&&_4d.tags.length>0;_4b.apply(this,arguments);if(_4e){abego.internal.getTagManager().reset();}};this.reset=function(){_3a=null;};this.getTiddlersWithTag=function(tag){_3b();var _50=_3a[tag];return _50?_50.tiddlers:null;};this.getAllTags=function(_51){_3b();var _52=[];for(var i in _3a){_52.push(i);}for(i=0;_51&&i<_51.length;i++){_52.pushUnique(_51[i],true);}abego.sortIgnoreCase(_52);return _52;};this.getTagInfos=function(){_3b();var _54=[];for(var _55 in _3a){_54.push([_55,_3a[_55]]);}return _54;};var _56=function(a,b){var a1=a[1];var b1=b[1];var d=b[1].count-a[1].count;return d!=0?d:abego.compareStrings(a[0].toLowerCase(),b[0].toLowerCase());};this.getSortedTagInfos=function(){_3b();var _5c=this.getTagInfos();_5c.sort(_56);return _5c;};this.getPartnerRankedTags=function(_5d){var _5e={};for(var i=0;i<_5d.length;i++){var _60=this.getTiddlersWithTag(_5d[i]);for(var _61 in _60){var _62=store.getTiddler(_61);if(!(_62 instanceof Tiddler)){continue;}for(var j=0;j<_62.tags.length;j++){var tag=_62.tags[j];var c=_5e[tag];_5e[tag]=c?c+1:1;}}}var _66=abego.toSet(_5d);var _67=[];for(var n in _5e){if(!_66[n]){_67.push(n);}}_67.sort(function(a,b){var d=_5e[b]-_5e[a];return d!=0?d:abego.compareStrings(a.toLowerCase(),b.toLowerCase());});return _67;};};abego.internal.getTagManager=function(){if(!abego.internal.gTagManager){abego.internal.gTagManager=new abego.internal.TagManager();}return abego.internal.gTagManager;};(function(){var _6c=2;var _6d=1;var _6e=30;var _6f;var _70;var _71;var _72;var _73;var _74;if(!abego.IntelliTagger){abego.IntelliTagger={};}var _75=function(){return _70;};var _76=function(tag){return _73[tag];};var _78=function(s){var i=s.lastIndexOf(" ");return (i>=0)?s.substr(0,i):"";};var _7b=function(_7c){var s=_7c.value;var len=s.length;return (len>0&&s[len-1]!=" ");};var _7f=function(_80){var s=_80.value;var len=s.length;if(len>0&&s[len-1]!=" "){_80.value+=" ";}};var _83=function(tag,_85,_86){if(_7b(_85)){_85.value=_78(_85.value);}story.setTiddlerTag(_86.title,tag,0);_7f(_85);abego.IntelliTagger.assistTagging(_85,_86);};var _87=function(n){if(_74){if(_74.length>n){return _74[n];}n-=_74.length;}return (_72&&_72.length>n)?_72[n]:null;};var _89=function(n,_8b,_8c){var _8d=_87(n);if(_8d){_83(_8d,_8b,_8c);}};var _8e=function(_8f){var pos=_8f.value.lastIndexOf(" ");var _91=(pos>=0)?_8f.value.substr(++pos,_8f.value.length):_8f.value;return new RegExp(_91.escapeRegExp(),"i");};var _92=function(_93,_94){var _95=0;for(var i=0;i<_93.length;i++){if(_94[_93[i]]){_95++;}}return _95;};var _97=function(_98,_99,_9a){var _9b=1;var c=_98[_99];for(var i=_99+1;i<_98.length;i++){if(_98[i][1].count==c){if(_98[i][0].match(_9a)){_9b++;}}else{break;}}return _9b;};var _9e=function(_9f,_a0){var _a1=abego.internal.getTagManager().getSortedTagInfos();var _a2=[];var _a3=0;for(var i=0;i<_a1.length;i++){var c=_a1[i][1].count;if(c!=_a3){if(_a0&&(_a2.length+_97(_a1,i,_9f)>_a0)){break;}_a3=c;}if(c==1){break;}var s=_a1[i][0];if(s.match(_9f)){_a2.push(s);}}return _a2;};var _a7=function(_a8,_a9){return abego.filterStrings(abego.internal.getTagManager().getAllTags(_a9),_a8);};var _aa=function(){if(!_6f){return;}var _ab=store.getTiddlerText("IntelliTaggerMainTemplate");if(!_ab){_ab="<b>Tiddler IntelliTaggerMainTemplate not found</b>";}_6f.innerHTML=_ab;applyHtmlMacros(_6f,null);refreshElements(_6f,null);};var _ac=function(e){if(!e){var e=window.event;}var tag=this.getAttribute("tag");if(_71){_71.call(this,tag,e);}return false;};var _af=function(_b0,_b1,_b2,_b3){if(!_b1){return;}var _b4=_b3?abego.toSet(_b3):{};var n=_b1.length;for(var i=0;i<n;i++){var tag=_b1[i];if(_b4[tag]){continue;}if(i>0){createTiddlyElement(_b0,"span",null,"tagSeparator"," | ");}var _b8="";var _b9=_b0;if(_b2<10){_b9=createTiddlyElement(_b0,"span",null,"numberedSuggestion");_b2++;var key=_b2<10?""+(_b2):"0";createTiddlyElement(_b9,"span",null,"suggestionNumber",key+") ");var _bb=_b2==1?"Ctrl-Space or ":"";_b8=" (Shortcut: %1Alt-%0)".format([key,_bb]);}var _bc=config.views.wikified.tag.tooltip.format([tag]);var _bd=(_76(tag)?"Remove tag '%0'%1":"Add tag '%0'%1").format([tag,_b8]);var _be="%0; Shift-Click: %1".format([_bd,_bc]);var btn=createTiddlyButton(_b9,tag,_be,_ac,_76(tag)?"currentTag":null);btn.setAttribute("tag",tag);}};var _c0=function(){if(_6f){window.scrollTo(0,ensureVisible(_6f));}if(_75()){window.scrollTo(0,ensureVisible(_75()));}};var _c1=function(e){if(!e){var e=window.event;}if(!_6f){return;}var _c3=resolveTarget(e);if(_c3==_75()){return;}if(abego.isDescendantOrSelf(_6f,_c3)){return;}abego.IntelliTagger.close();};addEvent(document,"click",_c1);var _c4=Story.prototype.gatherSaveFields;Story.prototype.gatherSaveFields=function(e,_c6){_c4.apply(this,arguments);var _c7=_c6.tags;if(_c7){_c6.tags=_c7.trim();}};var _c8=function(_c9){story.focusTiddler(_c9,"tags");var _ca=abego.getTiddlerField(story,_c9,"tags");if(_ca){var len=_ca.value.length;abego.setRange(_ca,len,len);window.scrollTo(0,ensureVisible(_ca));}};var _cc=config.macros.edit.handler;config.macros.edit.handler=function(_cd,_ce,_cf,_d0,_d1,_d2){_cc.apply(this,arguments);var _d3=_cf[0];if((_d2 instanceof Tiddler)&&_d3=="tags"){var _d4=_cd.lastChild;_d4.onfocus=function(e){abego.IntelliTagger.assistTagging(_d4,_d2);setTimeout(function(){_c8(_d2.title);},100);};_d4.onkeyup=function(e){if(!e){var e=window.event;}if(e.altKey&&!e.ctrlKey&&!e.metaKey&&(e.keyCode>=48&&e.keyCode<=57)){_89(e.keyCode==48?9:e.keyCode-49,_d4,_d2);}else{if(e.ctrlKey&&e.keyCode==32){_89(0,_d4,_d2);}}setTimeout(function(){abego.IntelliTagger.assistTagging(_d4,_d2);},100);return false;};_7f(_d4);}};var _d7=function(e){if(!e){var e=window.event;}var _d9=resolveTarget(e);var _da=_d9.getAttribute("tiddler");if(_da){story.displayTiddler(_d9,_da,"IntelliTaggerEditTagsTemplate",false);_c8(_da);}return false;};var _db=config.macros.tags.handler;config.macros.tags.handler=function(_dc,_dd,_de,_df,_e0,_e1){_db.apply(this,arguments);abego.IntelliTagger.createEditTagsButton(_e1,createTiddlyElement(_dc.lastChild,"li"));};var _e2=function(){if(_6f&&_70&&!abego.isDescendantOrSelf(document,_70)){abego.IntelliTagger.close();}};setInterval(_e2,100);abego.IntelliTagger.displayTagSuggestions=function(_e3,_e4,_e5,_e6,_e7){_72=_e3;_73=abego.toSet(_e4);_74=_e5;_70=_e6;_71=_e7;if(!_6f){_6f=createTiddlyElement(document.body,"div",null,"intelliTaggerSuggestions");_6f.style.position="absolute";}_aa();abego.openAsPopup(_6f);if(_75()){var w=_75().offsetWidth;if(_6f.offsetWidth<w){_6f.style.width=(w-2*(_6c+_6d))+"px";}abego.moveBelowAndClip(_6f,_75());}else{abego.centerOnWindow(_6f);}_c0();};abego.IntelliTagger.assistTagging=function(_e9,_ea){var _eb=_8e(_e9);var s=_e9.value;if(_7b(_e9)){s=_78(s);}var _ed=s.readBracketedList();var _ee=_ed.length>0?abego.filterStrings(abego.internal.getTagManager().getPartnerRankedTags(_ed),_eb,_6e):_9e(_eb,_6e);abego.IntelliTagger.displayTagSuggestions(_a7(_eb,_ed),_ed,_ee,_e9,function(tag,e){if(e.shiftKey){onClickTag.call(this,e);}else{_83(tag,_e9,_ea);}});};abego.IntelliTagger.close=function(){abego.closePopup(_6f);_6f=null;return false;};abego.IntelliTagger.createEditTagsButton=function(_f1,_f2,_f3,_f4,_f5,id,_f7){if(!_f3){_f3="[edit]";}if(!_f4){_f4="Edit the tags";}if(!_f5){_f5="editTags";}var _f8=createTiddlyButton(_f2,_f3,_f4,_d7,_f5,id,_f7);_f8.setAttribute("tiddler",(_f1 instanceof Tiddler)?_f1.title:String(_f1));return _f8;};config.macros.intelliTagger={label:"intelliTagger",handler:function(_f9,_fa,_fb,_fc,_fd,_fe){var _ff=_fd.parseParams("list",null,true);var _100=_ff[0]["action"];for(var i=0;_100&&i<_100.length;i++){var _102=_100[i];var _103=config.macros.intelliTagger.subhandlers[_102];if(!_103){abego.alertAndThrow("Unsupported action '%0'".format([_102]));}_103(_f9,_fa,_fb,_fc,_fd,_fe);}},subhandlers:{showTags:function(_104,_105,_106,_107,_108,_109){_af(_104,_72,_74?_74.length:0,_74);},showFavorites:function(_10a,_10b,_10c,_10d,_10e,_10f){_af(_10a,_74,0);},closeButton:function(_110,_111,_112,_113,_114,_115){var _116=createTiddlyButton(_110,"close","Close the suggestions",abego.IntelliTagger.close);},version:function(_117){var t="IntelliTagger %0.%1.%2".format([version.extensions.IntelliTaggerPlugin.major,version.extensions.IntelliTaggerPlugin.minor,version.extensions.IntelliTaggerPlugin.revision]);var e=createTiddlyElement(_117,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">"+t+"<font>";},copyright:function(_11a){var e=createTiddlyElement(_11a,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">&copy; 2006 <b><font color=\"red\">abego</font></b> Software<font>";}}};})();config.shadowTiddlers["IntelliTaggerStyleSheet"]="/***\n"+"!~IntelliTagger Stylesheet\n"+"***/\n"+"/*{{{*/\n"+".intelliTaggerSuggestions {\n"+"\tposition: absolute;\n"+"\twidth: 600px;\n"+"\n"+"\tpadding: 2px;\n"+"\tlist-style: none;\n"+"\tmargin: 0;\n"+"\n"+"\tbackground: #eeeeee;\n"+"\tborder: 1px solid DarkGray;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .currentTag   {\n"+"\tfont-weight: bold;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .suggestionNumber {\n"+"\tcolor: #808080;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .numberedSuggestion{\n"+"\twhite-space: nowrap;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .intelliTaggerFooter {\n"+"\tmargin-top: 4px;\n"+"\tborder-top-width: thin;\n"+"\tborder-top-style: solid;\n"+"\tborder-top-color: #999999;\n"+"}\n"+".intelliTaggerSuggestions .favorites {\n"+"\tborder-bottom-width: thin;\n"+"\tborder-bottom-style: solid;\n"+"\tborder-bottom-color: #999999;\n"+"\tpadding-bottom: 2px;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .normalTags {\n"+"\tpadding-top: 2px;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .intelliTaggerFooter .button {\n"+"\tfont-size: 10px;\n"+"\n"+"\tpadding-left: 0.3em;\n"+"\tpadding-right: 0.3em;\n"+"}\n"+"\n"+"/*}}}*/\n";config.shadowTiddlers["IntelliTaggerMainTemplate"]="<!--\n"+"{{{\n"+"-->\n"+"<div class=\"favorites\" macro=\"intelliTagger action: showFavorites\"></div>\n"+"<div class=\"normalTags\" macro=\"intelliTagger action: showTags\"></div>\n"+"<!-- The Footer (with the Navigation) ============================================ -->\n"+"<table class=\"intelliTaggerFooter\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tbody>\n"+"  <tr>\n"+"\t<td align=\"left\">\n"+"\t\t<span macro=\"intelliTagger action: closeButton\"></span>\n"+"\t</td>\n"+"\t<td align=\"right\">\n"+"\t\t<span macro=\"intelliTagger action: version\"></span>, <span macro=\"intelliTagger action: copyright \"></span>\n"+"\t</td>\n"+"  </tr>\n"+"</tbody></table>\n"+"<!--\n"+"}}}\n"+"-->\n";config.shadowTiddlers["IntelliTaggerEditTagsTemplate"]="<!--\n"+"{{{\n"+"-->\n"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\n"+"<div class='title' macro='view title'></div>\n"+"<div class='tagged' macro='tags'></div>\n"+"<div class='viewer' macro='view text wikified'></div>\n"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\n"+"<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>\n"+"<!--\n"+"}}}\n"+"-->\n";config.shadowTiddlers["BSD open source license (abego Software)"]="See [[Licence|http://tiddlywiki.abego-software.de/#%5B%5BBSD%20open%20source%20license%5D%5D]].";config.shadowTiddlers["IntelliTaggerPlugin Documentation"]="[[Documentation on abego Software website|http://tiddlywiki.abego-software.de/doc/IntelliTagger.pdf]].";config.shadowTiddlers["IntelliTaggerPlugin SourceCode"]="[[Plugin source code on abego Software website|http://tiddlywiki.abego-software.de/src/Plugin-IntelliTagger-src.js]]";setStylesheet(store.getTiddlerText("IntelliTaggerStyleSheet"),"intelliTagger");}
//%/
!!!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.
{{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.internationaldayofpeace.org/}}}
<html><iframe
	src = "http://www.internationaldayofpeace.org/"
	title = "International Day of Peace"
	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.internationaldayofpeace.org/}}}
<html><iframe
	src = "http://www.internationaldayofpeace.org/"
	title = "International Day of Peace"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
|sortable|k
|Country | Subscribers 2000| Subscribers 2007| 2000 %| 2007 %| Growth 2000-2007 %| users 2000%| users 2007%| broadband 2000%| broadband 2007%|h
|''Europe'' | 57,213.0| 166,023.0| 8.12| 20.60| 253.7| 14.07| 44.20| .26| 14.24|
|Albania | .0| 20.0| .00| .65| .0| .11| 14.98| .00| .31|
|Andorra | .0| 27.2| .00| 36.46| .0| 10.61| 79.08| .00| 26.40|
|Austria | 1,050.0| 2,521.0| 12.97| 30.15| 232.5| 33.35| 67.00| 2.35| 19.40|
|Belarus | 4.7| 407.4| .05| 4.20| 8,400.0| 1.87| 29.00| .00| .12|
|Belgium | 1,150.2| 2,861.7| 11.16| 27.37| 245.3| 29.12| 67.00| 1.40| 25.97|
|Bosnia and Herzegovina | 14.9| 273.7| .39| 6.96| 1,784.6| 1.04| 26.81| .00| 2.15|
|Bulgaria | .0| 647.6| .00| 8.48| .0| 5.38| 31.00| .00| 8.24|
|Croatia | 187.0| 1,324.4| 4.15| 29.07| 700.5| 6.64| 43.57| .00| 8.50|
|Cyprus | 52.0| 130.0| 6.61| 15.21| 230.1| 15.26| 38.00| .00| 11.70|
|Czech Republic | 418.4| 1,409.0| 4.08| 13.83| 339.0| 9.74| 49.00| .02| 12.90|
|Denmark | 1,684.2| 2,101.4| 31.54| 38.61| 122.4| 39.14| 81.00| 1.25| 35.99|
|Estonia | 82.5| 284.2| 6.04| 21.28| 352.3| 28.65| 64.00| .00| 20.80|
|Faroe Islands | 6.4| 14.5| 14.08| 29.59| 210.2| 32.91| 76.71| .00| 27.11|
|Finland | 616.0| 1,400.0| 11.90| 26.74| 224.7| 37.23| 79.00| .68| 30.64|
|France | 5,444.6| 17,058.0| 9.18| 27.67| 301.4| 14.27| 51.21| .33| 25.22|
|Germany | 13,000.0| 20,000.0| 15.79| 24.19| 153.2| 30.12| 72.00| .32| 23.73|
|Greece | 271.3| 1,113.8| 2.47| 9.99| 404.5| 9.11| 33.00| .00| 9.13|
|Greenland | 5.9| .0| 10.58| .00| .0| 31.75| 90.75| .00| 18.29|
|Hungary | 220.4| 1,491.7| 2.16| 14.87| 688.4| 6.99| 52.00| .03| 14.25|
|Iceland | 47.0| 106.0| 16.71| 35.20| 210.7| 44.44| 67.20| .84| 32.54|
|Ireland | 550.0| 1,095.7| 14.47| 25.48| 176.1| 17.86| 57.00| .00| 18.74|
|Italy | 5,800.0| 17,700.0| 10.05| 30.47| 303.2| 22.87| 54.35| .20| 18.45|
|Latvia | 33.5| 145.9| 1.41| 6.41| 454.6| 6.32| 55.00| .01| 6.41|
|Lithuania | 53.3| 513.4| 1.52| 15.14| 996.1| 6.43| 49.00| .00| 14.97|
|Luxembourg | 24.5| 138.7| 5.63| 29.73| 528.1| 22.98| 78.00| .00| 27.54|
|Malta | 34.4| 100.0| 8.78| 24.60| 280.2| 13.02| 45.00| .42| 21.53|
|Moldova | 12.7| 110.2| .30| 2.90| 966.7| 1.23| 18.45| .00| 1.24|
|Montenegro | .0| 88.7| .00| 14.78| .0| .00| 46.82| .00| 4.30|
|Netherlands | 5,911.0| 5,970.0| 37.18| 36.55| 98.3| 44.03| 84.00| 1.64| 33.54|
|Norway | 1,175.7| 1,606.1| 26.11| 34.19| 130.9| 26.65| 85.00| .52| 30.64|
|Poland | 930.0| 3,987.3| 2.41| 10.47| 434.4| 7.24| 44.00| .00| 9.00|
|Portugal | 645.1| 1,648.4| 6.34| 15.52| 244.8| 16.43| 40.00| .25| 14.58|
|Romania | .0| 2,150.0| .00| 10.03| .0| 3.62| 24.00| .00| 9.10|
|Russia | 492.2| 30,500.0| .34| 21.40| 6,294.1| 1.98| 21.05| .00| 2.81|
|Serbia | .0| 1,011.7| .00| 10.26| .0| .00| 15.22| .00| 3.30|
|Slovak Republic | 68.0| 543.9| 1.26| 10.09| 800.8| 9.39| 42.89| .00| 8.76|
|Slovenia | 140.0| 417.5| 7.12| 20.86| 293.0| 15.25| 53.00| .00| 17.23|
|Spain | 3,222.4| 8,601.1| 7.91| 19.42| 245.5| 13.47| 52.00| .19| 18.23|
|Sweden | 2,248.0| 4,054.0| 25.32| 44.46| 175.6| 45.60| 80.00| 2.80| 35.97|
|Switzerland | 1,665.4| 2,813.4| 23.24| 37.59| 161.7| 48.00| 77.00| .79| 31.79|
|TFYR Macedonia | 30.0| 273.6| 1.49| 13.42| 900.7| 2.49| 27.28| .00| 4.93|
|Turkey | 1,500.0| 4,684.9| 2.20| 6.26| 284.5| 3.66| 16.24| .00| 6.08|
|Ukraine | .0| 6,400.0| .00| 13.85| .0| .71| 21.64| .00| 1.73|
|United Kingdom | 8,420.9| 18,277.0| 14.35| 30.08| 209.6| 26.93| 72.00| .09| 25.68|
|sortable|k
|Country | 2000| 2007| 2000 %| 2007 %| 2000-2007 %| users 2000%| users 2007%| bb2000%| bb2007%|h
|''Africa'' | 1,151.0| 11,091.0| .16| 1.25| 781.3| .55| 5.48| .00| .21|
|Algeria | 50.0| 190.0| .16| .58| 362.5| .49| 10.34| .00| .85|
|Angola | 1.8| 45.0| .01| .28| 2,800.0| .11| 2.93| .00| .07|
|Benin | 3.0| 8.1| .04| .09| 225.0| .21| 1.66| .00| .02|
|Botswana | 15.0| .0| .86| .00| .0| 2.85| 5.31| .00| .19|
|Burkina Faso | 3.2| 9.2| .03| .07| 233.3| .08| .59| .00| .01|
|Burundi | 1.0| .0| .02| .00| .0| .08| .77| .00| .00|
|Cameroon | 4.0| 25.0| .03| .15| 500.0| .27| 2.23| .00| .00|
|Cape Verde | 2.5| 7.5| .55| 1.44| 261.8| 1.78| 6.98| .00| .35|
|Central African Rep. | .7| 2.5| .02| .06| 300.0| .05| .32| .00| .00|
|Chad | 1.0| 2.5| .01| .03| 300.0| .04| .60| .00| .00|
|Comoros | .5| 1.8| .07| .21| 300.0| .21| 2.56| .00| .00|
|Congo | .1| 1.0| .00| .03| .0| .02| 1.70| .00| .00|
|Congo (Dem. Rep.) | .0| 47.6| .00| .08| .0| .01| .37| .00| .00|
|Cote d'Ivoire | 9.4| 18.0| .06| .10| 166.7| .24| 1.63| .00| .05|
|Djibouti | .6| 3.5| .09| .44| 488.9| .20| 1.36| .00| .01|
|Egypt | 45.0| 2,651.8| .07| 3.51| 5,014.3| .67| 13.95| .00| .63|
|Equatorial Guinea | .4| 1.2| .10| .24| 240.0| .16| 1.55| .00| .04|
|Eritrea | 1.8| 5.1| .05| .11| 220.0| .14| 2.47| .00| .00|
|Ethiopia | 2.5| 31.4| .00| .04| .0| .01| .35| .00| .00|
|Gabon | 5.0| 10.8| .39| .82| 210.3| 1.18| 6.16| .00| .15|
|Gambia | 3.5| 3.5| .27| .21| 77.8| .91| 5.87| .00| .02|
|Ghana | 10.2| 23.4| .05| .10| 200.0| .15| 3.75| .00| .07|
|Guinea | 1.4| 11.0| .02| .12| 600.0| .09| .52| .00| .00|
|Guinea-Bissau | .0| .0| .00| .00| .0| .22| 2.26| .00| .00|
|Kenya | 40.0| 186.8| .13| .53| 407.7| .33| 7.99| .00| .05|
|Lesotho | .0| 2.6| .00| .14| .0| .22| 3.49| .00| .00|
|Liberia | .0| 15.0| .00| .40| .0| .02| .53| .00| .00|
|Libya | .0| 82.5| .00| 1.38| .0| .19| 4.36| .00| .16|
|Madagascar | 10.1| 13.7| .06| .07| 116.7| .19| .58| .00| .01|
|Malawi | 5.6| 85.0| .05| .61| 1,220.0| .13| 1.00| .00| .01|
|Mali | .0| 7.0| .00| .06| .0| .13| .81| .00| .03|
|Mauritania | 1.0| 5.7| .04| .18| 450.0| .19| .95| .00| .13|
|Mauritius | 35.0| 166.1| 2.95| 13.16| 446.1| 7.34| 26.95| .00| 4.87|
|Mayotte | .0| .0| .00| .00| .0| 1.22| .00| .00| .00|
|Morocco | 37.0| 483.4| .13| 1.55| 1,192.3| .68| 21.14| .00| 1.53|
|Mozambique | 6.1| .0| .03| .00| .0| .11| .93| .00| .00|
|Namibia | 10.0| 90.0| .53| 4.34| 818.9| 1.58| 4.87| .00| .01|
|Niger | 1.8| 3.6| .02| .03| 150.0| .03| .28| .00| .00|
|Nigeria | 22.4| 2,000.0| .02| 1.52| 7,600.0| .07| 6.75| .00| .00|
|Rwanda | 1.0| 5.6| .01| .06| 600.0| .06| 1.08| .00| .03|
|S. Tom  & Principe | 2.5| 2.5| 1.60| 1.60| 100.0| 14.59| 14.59| .20| .20|
|Senegal | 5.5| 39.1| .05| .32| 640.0| .39| 6.62| .00| .31|
|Seychelles | 1.3| 5.8| 1.66| 6.70| 403.6| 7.77| 36.95| .00| 4.03|
|Sierra Leone | .3| .0| .01| .00| .0| .11| .22| .00| .00|
|Somalia | .6| 9.0| .01| .11| 1,100.0| .21| 1.13| .00| .00|
|South Africa | 711.5| 4,279.2| 1.56| 9.02| 578.2| 5.26| 8.16| .00| .78|
|Sudan | .0| 44.1| .00| .12| .0| .03| 9.08| .00| .11|
|Swaziland | 5.0| 21.0| .49| 2.04| 416.3| .98| 4.08| .00| .00|
|Tanzania | 10.0| 50.0| .03| .14| 466.7| .12| .99| .00| .00|
|Togo | 6.0| 12.5| .11| .21| 190.9| 1.86| 5.07| .00| .00|
|Tunisia | 36.7| 253.1| .38| 2.45| 644.7| 2.72| 16.68| .00| .93|
|Uganda | 5.6| 15.5| .02| .05| 250.0| .16| 2.51| .00| .01|
|Zambia | 6.1| 12.6| .06| .11| 183.3| .19| 5.03| .00| .02|
|Zimbabwe | 30.0| 99.5| .24| .75| 312.5| .40| 10.12| .00| .11|
|''Americas'' | 55,579.0| 96,025.0| 6.94| 10.92| 157.3| 18.79| 43.23| 1.16| 11.20|
|Antigua & Barbuda | .0| 11.3| .00| 13.75| .0| 6.54| 72.29| .00| 8.34|
|Argentina | 1,214.0| 3,415.5| 3.29| 8.64| 262.6| 7.05| 25.92| .00| 6.58|
|Aruba | .0| .0| .00| .00| .0| 15.20| 23.10| .00| 14.49|
|Bahamas | 8.4| 25.2| 2.77| 7.62| 275.1| 4.36| 36.22| .00| 3.93|
|Barbados | .0| .0| .00| .00| .0| 3.76| 59.36| .00| 20.45|
|Belize | 4.3| 7.9| 1.77| 2.74| 154.8| 6.19| 11.12| .00| 2.27|
|Bermuda | .0| 37.9| .00| 58.82| .0| 42.95| 74.42| .00| 36.71|
|Bolivia | 40.0| 198.4| .48| 2.08| 433.3| 1.44| 10.50| .00| .36|
|Brazil | 2,250.0| 7,889.7| 1.29| 4.11| 318.6| 2.88| 35.20| .06| 3.54|
|Canada | 4,324.0| 10,163.0| 14.09| 30.91| 219.4| 42.27| 73.00| 4.60| 27.60|
|Cayman Islands | .0| .0| .00| .00| .0| .00| 46.60| .00| .00|
|Chile | 586.2| 1,355.8| 3.80| 8.13| 213.9| 16.46| 30.95| .05| 7.86|
|Colombia | 239.8| 1,381.5| .57| 2.99| 524.6| 2.08| 26.22| .02| 2.62|
|Costa Rica | 35.6| 169.5| .91| 3.79| 416.5| 5.80| 33.57| .00| 2.83|
|Cuba | .0| 33.6| .00| .30| .0| .54| 11.63| .00| .02|
|Dominica | 2.8| 6.0| 3.54| 7.67| 216.7| 7.71| 37.22| .10| 4.14|
|Dominican Republic | 52.8| 264.3| .64| 2.71| 423.4| 3.96| 17.18| .00| 1.57|
|Ecuador | 58.1| 206.0| .47| 1.54| 327.7| 1.46| 13.19| .00| 2.39|
|El Salvador | 54.2| 95.2| .86| 1.39| 161.6| 1.11| 11.13| .00| 1.31|
|Grenada | 2.8| 7.3| 2.73| 7.03| 257.5| 4.05| 21.77| .00| 5.35|
|Guatemala | .0| .0| .00| .00| .0| .72| 10.22| .00| .22|
|Guyana | 13.0| 48.0| 1.75| 6.39| 365.1| 6.72| 25.75| .00| .27|
|Haiti | 7.0| 100.0| .09| 1.04| 1,155.6| .25| 10.42| .00| .00|
|Honduras | 19.0| 35.7| .30| .50| 166.7| 1.17| 5.97| .00| .00|
|Jamaica | .0| 96.2| .00| 3.54| .0| 3.10| 55.27| .00| 3.42|
|Mexico | 1,135.0| 5,836.6| 1.13| 5.48| 485.0| 5.05| 20.75| .01| 4.27|
|Neth. Antilles | .0| .0| .00| .00| .0| 1.13| .00| .00| .00|
|Nicaragua | 15.6| 23.6| .31| .42| 135.5| 1.01| 2.77| .01| .34|
|Panama | 43.0| 165.6| 1.46| 4.95| 339.0| 6.56| 22.29| .00| 4.30|
|Paraguay | 29.0| 74.4| .53| 1.22| 230.2| .73| 8.65| .00| .84|
|Peru | 137.7| 1,028.8| .53| 3.62| 683.0| 3.08| 27.37| .00| 2.04|
|Puerto Rico | .0| .0| .00| .00| .0| 10.43| 25.06| .00| 2.99|
|St. Lucia | .0| .0| .00| .00| .0| 5.18| 66.70| .00| .00|
|St. Vincent and the Grenadines | 2.7| 8.4| 2.29| 6.98| 304.8| 3.02| 47.34| .00| 6.62|
|Suriname | 3.9| 8.3| .90| 1.83| 203.3| 2.70| 9.61| .00| .59|
|Trinidad & Tobago | 26.5| 81.7| 2.06| 6.13| 297.6| 7.78| 15.96| .00| 2.66|
|United States | 45,000.0| 62,000.0| 16.00| 21.19| 132.4| 43.64| 72.50| 2.49| 23.94|
|Uruguay | .0| 243.5| .00| 7.29| .0| 10.47| 28.98| .00| 4.94|
|Venezuela | 273.5| 1,005.8| 1.12| 3.64| 325.0| 3.36| 20.68| .02| 3.10|
|Virgin Islands (US) | .0| .0| .00| .00| .0| 13.53| 26.92| .00| 2.65|
|''Asia'' | 48,449.0| 255,531.0| 1.37| 6.68| 487.6| 3.08| 14.17| .18| 3.33|
|Afghanistan | .0| 60.0| .00| .19| .0| .00| 1.84| .00| .00|
|Armenia | 12.4| 90.0| .40| 2.97| 742.5| 1.30| 5.75| .00| .07|
|Azerbaijan | 3.0| 217.0| .04| 2.56| 6,400.0| .15| 10.94| .00| .07|
|Bahrain | 21.9| 68.9| 3.25| 9.15| 281.5| 5.95| 33.22| .00| 9.07|
|Bangladesh | 60.0| 150.0| .05| .10| 200.0| .08| .32| .00| .03|
|Bhutan | .7| 6.1| .04| .70| 1,750.0| .12| 4.60| .00| .00|
|Brunei Darussalam | 13.9| 17.6| 4.26| 4.61| 108.2| 9.00| 48.17| .00| 2.87|
|Cambodia | 4.2| 14.0| .03| .10| 333.3| .05| .48| .00| .06|
|China | 9,027.3| 150,264.0| .71| 11.31| 1,593.0| 1.77| 16.00| .00| 5.00|
|D.P.R. Korea | .0| .0| .00| .00| .0| .00| .00| .00| .00|
|Georgia | .0| 281.8| .00| 6.41| .0| .49| 8.19| .00| 1.06|
|Hong Kong, China | 2,666.0| 2,865.6| 40.17| 39.77| 99.0| 27.95| 54.97| 6.70| 26.35|
|India | 2,970.0| 13,490.0| .29| 1.15| 396.6| .54| 6.93| .00| .27|
|Indonesia | 384.0| 3,126.0| .18| 1.35| 750.0| .91| 5.61| .00| .11|
|Iran (I.R.) | 250.0| .0| .38| .00| .0| .94| 18.26| .00| .28|
|Iraq | .0| 14.9| .00| .05| .0| .00| .95| .00| .00|
|Israel | 805.0| 1,890.0| 13.23| 27.60| 208.6| 20.87| 28.87| .00| 22.06|
|Japan | 18,126.9| 33,883.9| 14.27| 26.53| 185.9| 29.91| 68.85| .67| 22.10|
|Jordan | 32.0| 225.2| .64| 3.80| 593.8| 2.56| 19.02| .00| 1.45|
|Kazakhstan | .0| 683.1| .00| 4.43| .0| .67| 12.32| .00| 1.75|
|Korea (Rep.) | 5,122.6| 14,710.0| 10.95| 30.50| 278.5| 40.70| 76.30| 8.27| 30.50|
|Kuwait | .0| 283.2| .00| 10.54| .0| 6.73| 31.57| .00| .93|
|Kyrgyzstan | 2.7| 19.9| .05| .37| 740.0| 1.04| 14.11| .00| .05|
|Lao P.D.R. | 1.5| 5.5| .03| .09| 300.0| .11| 1.71| .00| .06|
|Lebanon | .0| 260.0| .00| 6.34| .0| 8.83| 38.30| .00| 4.88|
|Macao, China | 27.7| 122.1| 6.24| 25.38| 406.7| 13.53| 49.47| .84| 22.97|
|Malaysia | 1,659.0| 4,930.9| 7.21| 18.56| 257.4| 21.64| 55.67| .00| 3.80|
|Maldives | 1.1| 12.4| .37| 4.04| 1,091.9| 2.07| 10.80| .00| 3.61|
|Mongolia | 8.0| 71.0| .32| 2.65| 828.1| 1.20| 12.00| .00| .28|
|Myanmar | .0| 7.1| .00| .01| .0| .00| .08| .00| .00|
|Nepal | 12.0| 79.5| .05| .28| 560.0| .20| 1.41| .00| .04|
|Oman | 23.9| 69.8| .98| 2.69| 274.5| 3.69| 13.10| .00| .78|
|Pakistan | 133.9| 3,500.0| .09| 2.14| 2,377.8| .06| 10.68| .00| .03|
|Palestine | 7.0| 102.2| .22| 2.73| 1,240.9| 1.11| 9.52| .00| 1.49|
|Philippines | 400.0| 2,500.0| .53| 2.84| 535.8| 2.03| 6.03| .00| .56|
|Qatar | 10.5| 87.0| 1.74| 10.34| 594.3| 4.95| 41.75| .00| 8.37|
|Saudi Arabia | 200.0| 6,220.0| .93| 25.15| 2,704.3| 2.14| 25.55| .00| 12.98|
|Singapore | 853.0| 1,938.3| 21.23| 43.69| 205.8| 32.36| 68.00| 1.72| 20.18|
|Sri Lanka | 40.5| 202.3| .20| 1.05| 525.0| .61| 4.00| .00| .33|
|Syria | 10.0| 694.5| .06| 3.49| 5,816.7| .18| 17.41| .00| .03|
|Taiwan, China | 4,636.3| 5,968.4| 20.81| 26.06| 125.2| 28.10| 64.45| 1.03| 20.92|
|Tajikistan | .1| .5| .00| .01| .0| .05| 7.19| .00| .00|
|Thailand | 600.0| .0| .98| .00| .0| 3.74| 21.00| .00| 1.43|
|Timor-Leste | .0| .7| .00| .06| .0| .00| .13| .00| .00|
|Turkmenistan | .0| .0| .00| .00| .0| .13| 1.41| .00| .00|
|United Arab Emirates | 209.5| 904.0| 6.45| 20.64| 320.0| 23.56| 51.59| .04| 8.67|
|Uzbekistan | 3.9| 37.4| .02| .14| 700.0| .49| 4.38| .00| .03|
|Viet Nam | 102.1| 5,240.6| .13| 6.00| 4,615.4| .25| 20.45| .00| 1.48|
|Yemen | 6.4| 216.1| .04| .97| 2,425.0| .08| 1.43| .00| .00|
|''Europe'' | 57,213.0| 166,023.0| 8.12| 20.60| 253.7| 14.07| 44.20| .26| 14.24|
|Albania | .0| 20.0| .00| .65| .0| .11| 14.98| .00| .31|
|Andorra | .0| 27.2| .00| 36.46| .0| 10.61| 79.08| .00| 26.40|
|Austria | 1,050.0| 2,521.0| 12.97| 30.15| 232.5| 33.35| 67.00| 2.35| 19.40|
|Belarus | 4.7| 407.4| .05| 4.20| 8,400.0| 1.87| 29.00| .00| .12|
|Belgium | 1,150.2| 2,861.7| 11.16| 27.37| 245.3| 29.12| 67.00| 1.40| 25.97|
|Bosnia and Herzegovina | 14.9| 273.7| .39| 6.96| 1,784.6| 1.04| 26.81| .00| 2.15|
|Bulgaria | .0| 647.6| .00| 8.48| .0| 5.38| 31.00| .00| 8.24|
|Croatia | 187.0| 1,324.4| 4.15| 29.07| 700.5| 6.64| 43.57| .00| 8.50|
|Cyprus | 52.0| 130.0| 6.61| 15.21| 230.1| 15.26| 38.00| .00| 11.70|
|Czech Republic | 418.4| 1,409.0| 4.08| 13.83| 339.0| 9.74| 49.00| .02| 12.90|
|Denmark | 1,684.2| 2,101.4| 31.54| 38.61| 122.4| 39.14| 81.00| 1.25| 35.99|
|Estonia | 82.5| 284.2| 6.04| 21.28| 352.3| 28.65| 64.00| .00| 20.80|
|Faroe Islands | 6.4| 14.5| 14.08| 29.59| 210.2| 32.91| 76.71| .00| 27.11|
|Finland | 616.0| 1,400.0| 11.90| 26.74| 224.7| 37.23| 79.00| .68| 30.64|
|France | 5,444.6| 17,058.0| 9.18| 27.67| 301.4| 14.27| 51.21| .33| 25.22|
|Germany | 13,000.0| 20,000.0| 15.79| 24.19| 153.2| 30.12| 72.00| .32| 23.73|
|Greece | 271.3| 1,113.8| 2.47| 9.99| 404.5| 9.11| 33.00| .00| 9.13|
|Greenland | 5.9| .0| 10.58| .00| .0| 31.75| 90.75| .00| 18.29|
|Hungary | 220.4| 1,491.7| 2.16| 14.87| 688.4| 6.99| 52.00| .03| 14.25|
|Iceland | 47.0| 106.0| 16.71| 35.20| 210.7| 44.44| 67.20| .84| 32.54|
|Ireland | 550.0| 1,095.7| 14.47| 25.48| 176.1| 17.86| 57.00| .00| 18.74|
|Italy | 5,800.0| 17,700.0| 10.05| 30.47| 303.2| 22.87| 54.35| .20| 18.45|
|Latvia | 33.5| 145.9| 1.41| 6.41| 454.6| 6.32| 55.00| .01| 6.41|
|Lithuania | 53.3| 513.4| 1.52| 15.14| 996.1| 6.43| 49.00| .00| 14.97|
|Luxembourg | 24.5| 138.7| 5.63| 29.73| 528.1| 22.98| 78.00| .00| 27.54|
|Malta | 34.4| 100.0| 8.78| 24.60| 280.2| 13.02| 45.00| .42| 21.53|
|Moldova | 12.7| 110.2| .30| 2.90| 966.7| 1.23| 18.45| .00| 1.24|
|Montenegro | .0| 88.7| .00| 14.78| .0| .00| 46.82| .00| 4.30|
|Netherlands | 5,911.0| 5,970.0| 37.18| 36.55| 98.3| 44.03| 84.00| 1.64| 33.54|
|Norway | 1,175.7| 1,606.1| 26.11| 34.19| 130.9| 26.65| 85.00| .52| 30.64|
|Poland | 930.0| 3,987.3| 2.41| 10.47| 434.4| 7.24| 44.00| .00| 9.00|
|Portugal | 645.1| 1,648.4| 6.34| 15.52| 244.8| 16.43| 40.00| .25| 14.58|
|Romania | .0| 2,150.0| .00| 10.03| .0| 3.62| 24.00| .00| 9.10|
|Russia | 492.2| 30,500.0| .34| 21.40| 6,294.1| 1.98| 21.05| .00| 2.81|
|Serbia | .0| 1,011.7| .00| 10.26| .0| .00| 15.22| .00| 3.30|
|Slovak Republic | 68.0| 543.9| 1.26| 10.09| 800.8| 9.39| 42.89| .00| 8.76|
|Slovenia | 140.0| 417.5| 7.12| 20.86| 293.0| 15.25| 53.00| .00| 17.23|
|Spain | 3,222.4| 8,601.1| 7.91| 19.42| 245.5| 13.47| 52.00| .19| 18.23|
|Sweden | 2,248.0| 4,054.0| 25.32| 44.46| 175.6| 45.60| 80.00| 2.80| 35.97|
|Switzerland | 1,665.4| 2,813.4| 23.24| 37.59| 161.7| 48.00| 77.00| .79| 31.79|
|TFYR Macedonia | 30.0| 273.6| 1.49| 13.42| 900.7| 2.49| 27.28| .00| 4.93|
|Turkey | 1,500.0| 4,684.9| 2.20| 6.26| 284.5| 3.66| 16.24| .00| 6.08|
|Ukraine | .0| 6,400.0| .00| 13.85| .0| .71| 21.64| .00| 1.73|
|United Kingdom | 8,420.9| 18,277.0| 14.35| 30.08| 209.6| 26.93| 72.00| .09| 25.68|
|''Oceania'' | 4,476.0| 8,623.0| 14.60| 31.68| 217.0| 35.58| 43.18| .12| 16.96|
|American Samoa | .0| .0| .00| .00| .0| .00| .00| .00| .00|
|Australia | 3,921.0| 7,105.0| 20.56| 34.25| 166.6| 47.00| 53.99| .00| 23.29|
|Fiji | 3.5| 13.8| .43| 1.65| 383.7| 1.48| 10.90| .00| 1.37|
|French Polynesia | 7.0| 25.2| 2.96| 9.59| 324.0| 6.35| 28.54| .00| 8.91|
|Guam | .0| .0| .00| .00| .0| 16.09| 46.15| .00| 1.56|
|Kiribati | .5| .0| .56| .00| .0| 1.67| .00| .00| .00|
|Marshall Islands | .4| .7| .78| 1.21| 155.1| 1.53| .00| .00| .00|
|Micronesia | 1.5| 1.3| 1.38| 1.16| 84.1| 3.74| 13.50| .00| .04|
|New Caledonia | 9.0| 21.5| 4.18| 8.90| 212.9| 13.93| 35.16| .00| 8.40|
|New Zealand | 500.0| 1,448.7| 13.10| 34.67| 264.7| 48.00| 70.00| .12| 20.41|
|Northern Marianas | 2.3| .0| 3.42| .00| .0| .00| .00| .00| .00|
|Papua New Guinea | 27.0| .0| .51| .00| .0| .85| 1.82| .00| .00|
|Samoa | .3| .0| .17| .00| .0| .56| 4.54| .00| .04|
|Solomon Islands | 1.2| 1.9| .27| .40| 148.1| .48| 1.82| .00| .20|
|Tonga | 1.2| 3.7| 1.20| 3.69| 307.5| 2.40| 8.37| .00| .78|
|Vanuatu | 1.4| 1.6| .73| .76| 104.1| 2.09| 7.52| .00| .03|
|''WTI'' | 166,868.0| 537,293.0| 2.88| 8.36| 290.3| 6.51| 20.65| .35| 5.38|
|sortable|k
|Country | Subscribers 2000| Subscribers 2007| 2000 %| 2007 %| Growth 2000-2007 %| users 2000%| users 2007%| broadband 2000%| broadband 2007%|h
|''Africa'' | 1,151.0| 11,091.0| .16| 1.25| 781.3| .55| 5.48| .00| .21|
|''Americas'' | 55,579.0| 96,025.0| 6.94| 10.92| 157.3| 18.79| 43.23| 1.16| 11.20|
|''Asia'' | 48,449.0| 255,531.0| 1.37| 6.68| 487.6| 3.08| 14.17| .18| 3.33|
|''Europe'' | 57,213.0| 166,023.0| 8.12| 20.60| 253.7| 14.07| 44.20| .26| 14.24|
|''Oceania'' | 4,476.0| 8,623.0| 14.60| 31.68| 217.0| 35.58| 43.18| .12| 16.96|
|''WTI'' | 166,868.0| 537,293.0| 2.88| 8.36| 290.3| 6.51| 20.65| .35| 5.38|
<html>
<div style="width:577px;margin:auto;"><object style="margin:0px" width="575" height="410"><param name="movie" value="http://static.slidesharecdn.com/swf/multiwidget.swf"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/multiwidget.swf" flashVars="feedurl=user/Information.Habitat&widgettitle=%20Playlist%20%3A%20My%20Uploads" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="575" height="410"></embed></object><br/><div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;text-align:left;"><a title="SlideShare" href="http://www.slideshare.net/?src=multiwidget"><img src="http://static.slidesharecdn.com/swf/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare"/></a> | <a href="http://www.slideshare.net/widgets/playlist" title="Get your SlideShare Playlist">Get your SlideShare Playlist</a></div></div>
</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/ist-dec.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/ist-dec.htm"
	title = "Istanbul Declaration on Human Settlements">
</iframe> </html>
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.
://From the [[World Declaration on Education For All: Meeting Basic Learning Needs]] adopted at the [[World Conference on Education for All]] in [[Jomtien, Thailand]]//
!!![[Preamble|Jomtien Declaration: Preamble]]
!!![[Education For All: The Purpose|Jomtien Declaration: Education For All: The Purpose]]
!!![[Education For All: An Expanded Vision and a Renewed Commitment|Jomtien Declaration: Education For All: An Expanded Vision and a Renewed Commitment]]
!!![[Education For All: The Requirements|Jomtein Declaration: Education For All: The Requirements]]
!!Adoption of the Declaration
//''We, the participants in the World Conference on Education for All, reaffirm the right of all people to education.'' This is the foundation of our determination, singly and together, to ensure education for all.

We commit ourselves to act cooperatively through our own spheres of responsibility, taking all necessary steps to achieve the goals of education for all. Together we call on governments, concerned organizations and individuals to join in this urgent undertaking.

The basic learning needs of all can and must be met. There can be no more meaningful way to begin the [[International Literacy Year|http://www.un-documents.net/a42r104.htm]], to move forward the goals of the [[United Nations Decade of Disabled Persons|http://www.un-documents.net/a37r53.htm]] (1983-92), the [[World Decade for Cultural Development|http://www.un-documents.net/a41r187.htm]] (1988-97), the Fourth United Nations Development Decade (1991-2000), of the [[Convention on the Elimination of Discrimination against Women|http://www.un-documents.net/cedaw.htm]] and the [[Forward Looking Strategies for the Advancement of Women|http://www.un-documents.net/nflsaw.htm]], and of the [[Convention on the Rights of the Child|http://www.un-documents.net/crc.htm]]. There has never been a more propitious time to commit ourselves to providing basic learning opportunities for all the people of the world.

We adopt, therefore, this ''//World Declaration on Education for All: Meeting Basic Learning Needs//'' and agree on the ''[[Framework for Action to Meet Basic Learning Needs|http://www.un-documents.net/jomtienf.htm]]'', to achieve the goals set forth in this ''//Declaration//''.
://From the [[World Declaration on Education For All: Meeting Basic Learning Needs]] adopted at the [[World Conference on Education for All]] in [[Jomtien, Thailand]] in March, 1990.//
!![[Preamble|Jomtien Declaration: Preamble]]
!![[Education For All: The Purpose|Jomtien Declaration: Education For All: The Purpose]]
!!Education For All: An Expanded Vision and a Renewed Commitment
!!!Article II - Shaping The Vision
<<<
''To serve the basic learning needs of all requires more than a recommitment to basic education as it now exists. What is needed is an "expanded vision" that surpasses present resource levels, institutional structures, curricula, and conventional delivery systems while building on the best in current practices.'' New possibilities exist today which result from the convergence of the increase in information and the unprecedented capacity to communicate. We must seize them with creativity and a determination for increased effectiveness.

As elaborated in Articles III-VII, the expanded vision encompasses:
* Universalizing access and promoting equity;
* Focussing on learning;
* Broadening the means and scope of basic education;
* Enhancing the environment for learning;
* Strengthening partnerships.
The realization of an enormous potential for human progress and empowerment is contingent upon whether people can be enabled to acquire the education and the start needed to tap into the ever-expanding pool of relevant knowledge and the new means for sharing this knowledge.
<<<
!!!Article III - Universalizing Access and Promoting Equity
# ''Basic education should be provided to all children, youth and adults.'' To this end, basic education services of quality should be expanded and consistent measures must be taken to reduce disparities.
# For basic education to be equitable, all children, youth and adults must be given the opportunity to achieve and maintain an acceptable level of learning.
# The most urgent priority is to ensure access to, and improve the quality of, education for girls and women, and to remove every obstacle that hampers their active participation. All gender stereotyping in education should be eliminated.
# An active commitment must be made to removing educational disparities. Underserved groups: the poor; street and working children; rural and remote populations; nomads and migrant workers; indigenous peoples; ethnic, racial, and linguistic minorities; refugees; those displaced by war; and people under occupation, should not suffer any discrimination in access to learning opportunities.
# The learning needs of the disabled demand special attention. Steps need to be taken to provide equal access to education to every category of disabled persons as an integral part of the education system.
!!!Article IV - Focussing on Learning
:''Whether or not expanded educational opportunities will translate into meaningful development - for an individual or for society - depends ultimately on whether people actually learn as a result of those opportunities, i.e., whether they incorporate useful knowledge, reasoning ability, skills, and values.'' The focus of basic education must, therefore, be on actual learning acquisition and outcome, rather than exclusively upon enrolment, continued participation in organized programmes and completion of certification requirements. Active and participatory approaches are particularly valuable in assuring learning acquisition and allowing learners to reach their fullest potential. It is, therefore, necessary to define acceptable levels of learning acquisition for educational programmes and to improve and apply systems of assessing learning achievement.
!!!Article V - Broadening the Means and Scope of Basic Education
<<<
!!![[Adoption of the Declaration]|Jomtein Declaration: Adoption of the Declaration]]
The diversity, complexity, and changing nature of basic learning needs of children, youth and adults necessitates broadening and constantly redefining the scope of basic education to include the following components:
* ''//Learning begins at birth.//'' This calls for early childhood care and initial education . These can be provided through arrangements involving families, communities, or institutional programmes, as appropriate.
* ''//The main delivery system for the basic education of children outside the family is primary schooling.//'' Primary education must be universal, ensure that the basic learning needs of all children are satisfied, and take into account the culture, needs, and opportunities of the community. Supplementary alternative programmes can help meet the basic learning needs of children with limited or no access to formal schooling, provided that they share the same standards of learning applied to schools, and are adequately supported.
* ''//The basic learning needs of youth and adults are diverse and should be met through a variety of delivery systems.//'' Literacy programmes are indispensable because literacy is a necessary skill in itself and the foundation of other life skills. Literacy in the mother-tongue strengthens cultural identity and heritage. Other needs can be served by: skills training, apprenticeships, and formal and non-formal education programmes in health, nutrition, population, agricultural techniques, the environment, science, technology, family life, including fertility awareness, and other societal issues.
* ''//All available instruments and channels of information, communications, and social action could be used to help convey essential knowledge and inform and educate people on social issues.//'' In addition to the traditional means, libraries, television, radio and other media can be mobilized to realize their potential towards meeting basic education needs of all.
These components should constitute an integrated system - complementary, mutually reinforcing, and of comparable standards, and they should contribute to creating and developing possibilities for lifelong learning.
<<<
!!!Article VI - Enhancing the Environment for Learning
:''Learning does not take place in isolation. Societies, therefore, must ensure that all learners receive the nutrition, health care, and general physical and emotional support they need in order to participate actively in and benefit from their education.'' Knowledge and skills that will enhance the learning environment of children should be integrated into community learning programmes for adults. The education of children and their parents or other caretakers is mutually supportive and this interaction should be used to create, for all, a learning environment of vibrancy and warmth.
!!!Article VII - Strengthening Partnerships
:''National, regional, and local educational authorities have a unique obligation to provide basic education for all, but they cannot be expected to supply every human, financial or organizational requirement for this task. New and revitalized partnerships at all levels will be necessary: ''partnerships among all sub-sectors and forms of education, recognizing the special role of teachers and that of administrators and other educational personnel; partnerships between education and other government departments, including planning, finance, labour, communications, and other social sectors; partnerships between government and non-governmental organizations, the private sector, local communities, religious groups, and families. The recognition of the vital role of both families and teachers is particularly important. In this context, the terms and conditions of service of teachers and their status, which constitute a determining factor in the implementation of education for all, must be urgently improved in all countries in line with the joint ILO/ UNESCO Recommendation Concerning the Status of Teachers (1966). Genuine partnerships contribute to the planning, implementing, managing and evaluating of basic education programmes. When we speak of "an expanded vision and a renewed commitment", partnerships are at the heart of it.
://From the [[World Declaration on Education For All: Meeting Basic Learning Needs]] adopted at the [[World Conference on Education for All]] in [[Jomtien, Thailand]]//
!![[Preamble|Jomtien Declaration: Preamble]]
!!Education For All: The Purpose
!!!Article I - Meeting Basic Learning Needs
# ''Every person - child, youth and adult - shall be able to benefit from educational opportunities designed to meet their basic learning needs.'' These needs comprise both essential learning tools (such as literacy, oral expression, numeracy, and problem solving) and the basic learning content (such as knowledge, skills, values, and attitudes) required by human beings to be able to survive, to develop their full capacities, to live and work in dignity, to participate fully in development, to improve the quality of their lives, to make informed decisions, and to continue learning. The scope of basic learning needs and how they should be met varies with individual countries and cultures, and inevitably, changes with the passage of time.
#  The satisfaction of these needs empowers individuals in any society and confers upon them a responsibility to respect and build upon their collective cultural, linguistic and spiritual heritage, to promote the education of others, to further the cause of social justice, to achieve environmental protection, to be tolerant towards social, political and religious systems which differ from their own, ensuring that commonly accepted humanistic values and human rights are upheld, and to work for international peace and solidarity in an interdependent world.
# Another and no less fundamental aim of educational development is the transmission and enrichment of common cultural and moral values. It is in these values that the individual and society find their identity and worth.
# Basic education is more than an end in itself. It is the foundation for lifelong learning and human development on which countries may build, systematically, further levels and types of education and training.
!![[Education For All: An Expanded Vision and a Renewed Commitment|Jomtien Declaration: Education For All: An Expanded Vision and a Renewed Commitment]]
!![[Education For All: The Requirements|Jomtien Declaration: Education For All: The Requirements]]
://From the [[World Declaration on Education For All: Meeting Basic Learning Needs]] adopted at the [[World Conference on Education for All]] in [[Jomtien, Thailand]]//
!!![[Preamble|Jomtien Declaration: Preamble]]
!!![[Education For All: The Purpose|Jomtien Declaration: Education For All: The Purpose]]
!!![[Education For All: An Expanded Vision and a Renewed Commitment|Jomtien Declaration: Education For All: An Expanded Vision and a Renewed Commitment]]
!!Education For All: The Requirements
!!!Article VIII - Developing a Supportive Policy Context
# ''Supportive policies in the social, cultural, and economic sectors are required in order to realize the full provision and utitlization of basic education for individual and societal improvement. ''The provision of basic education for all depends on political commitment and political will backed by appropriate fiscal measures and reinforced by educational policy reforms and institutional strengthening. Suitable economic, trade, labour, employment and health policies will enhance learners' incentives and contributions to societal development.
# Societies should also insure a strong intellectual and scientific environment for basic education. This implies improving higher education and developing scientific research. Close contact with contemporary technological and scientific knowledge should be possible at every level of education.
!!!Article IX - Mobilizing Resources
# ''If the basic learning needs of all are to be met through a much broader scope of action than in the past, it will be essential to mobilize existing and new financial and human resources, public, private and voluntary.'' All of society has a contribution to make, recognizing that time, energy and funding directed to basic education are perhaps the most profound investment in people and in the future of a country which can be made.
# Enlarged public-sector support means drawing on the resources of all the government agencies responsible for human development, through increased absolute and proportional allocations to basic education services with the clear recognition of competing claims on national resources of which education is an important one, but not the only one. Serious attention to improving the efficiency of existing educational resources and programmes will not only produce more, it can also be expected to attract new resources. The urgent task of meeting basic learning needs may require a reallocation between sectors, as, for example, a transfer from military to educational expenditure. Above all, special protection for basic education will be required in countries undergoing structural adjustment and facing severe external debt burdens. Today, more than ever, education must be seen as a fundamental dimension of any social, cultural, and economic design.
!!!Article X - Strengthening International Solidarity
# ''Meeting basic learning needs constitutes a common and universal human responsibility. It requires international solidarity and equitable and fair economic relations in order to redress existing economic disparities. ''All nations have valuable knowledge and experiences to share for designing effective educational policies and programmes.
# Substantial and long-term increases in resources for basic education will be needed. The world community, including intergovernmental agencies and institutions, has an urgent responsibility to alleviate the constraints that prevent some countries from achieving the goal of education for all. It will mean the adoption of measures that augment the national budgets of the poorest countries or serve to relieve heavy debt burdens. Creditors and debtors must seek innovative and equitable formulae to resolve these burdens, since the capacity of many developing countries to respond effectively to education and other basic needs will be greatly helped by finding solutions to the debt problem.
# Basic learning needs of adults and children must be addressed wherever they exist. Least developed and low-income countries have special needs which require priority in international support for basic education in the 1990s.
# All nations must also work together to resolve conflicts and strife, to end military occupations, and to settle displaced populations, or to facilitate their return to their countries of origin, and ensure that their basic learning needs are met. Only a stable and peaceful environment can create the conditions in which every human being, child and adult alike, may benefit from the goals of this Declaration.
!!![[Adoption of the Declaration|Jomtein Declaration: Adoption of the Declaration]]
://From the [[World Declaration on Education For All: Meeting Basic Learning Needs]] adopted at the [[World Conference on Education for All]] in [[Jomtien, Thailand]]//
!!Preamble
More than 40 years ago, the nations of the world, speaking through the [[Universal Declaration of Human Rights|http://www.un-documents.net/a3r217a.htm]], asserted that "everyone has a right to education". Despite notable efforts by countries around the globe to ensure the right to education for all, the following realities persist:
* More than 100 million children, including at least 60 million girls, have no access to primary schooling;
* More than 960 million adults, two-thirds of whom are women, are illiterate, and functional illiteracy is a significant problem in all countries, industrialized and developing;
* More than one-third of the world's adults have no access to the printed knowledge, new skills and technologies that could improve the quality of their lives and help them shape, and adapt to, social and cultural change; and
* More than 100 million children and countless adults fail to complete basic education programmes; millions more satisfy the attendance requirements but do not acquire essential knowledge and skills.
At the same time, the world faces daunting problems: notably mounting debt burdens, the threat of economic stagnation and decline, rapid population growth, widening economic disparities among and within nations, war, occupation, civil strife, violent crime, the preventable deaths of millions of children and widespread environmental degradation. These problems constrain efforts to meet basic learning needs, while the lack of basic education among a significant proportion of the population prevents societies from addressing such problems with strength and purpose.

These problems have led to major setbacks in basic education in the 1980s in many of the least developed countries. In some other countries, economic growth has been available to finance education expansion, but even so, many millions remain in poverty and unschooled or illiterate. In certain industrialized countries too, cutbacks in government expenditure over the 1980s have led to the deterioration of education.

Yet the world is also at the threshold of a new century, with all its promise and possibilities. Today, there is genuine progress toward peaceful //détente// and greater cooperation among nations. Today, the essential rights and capacities of women are being realized. Today, there are many useful scientific and cultural developments. Today, the sheer quantity of information available in the world - much of it relevant to survival and basic well-being - is exponentially greater than that available only a few years ago, and the rate of its growth is accelerating. This includes information about obtaining more life-enhancing knowledge - or learning how to learn. A synergistic effect occurs when important information is coupled with another modern advance - our new capacity to communicate.

These new forces, when combined with the cumulative experience of reform, innovation, research and the remarkable educational progress of many countries, make the goal of basic education for all - for the first time in history - an attainable goal.

Therefore, we participants in the World Conference on Education for All, assembled in Jomtien, Thailand, from 5 to 9 March, 1990:
<<<
''//Recalling//'' that education is a fundamental right for all people, women and men, of all ages, throughout our world;

''//Understanding//'' that education can help ensure a safer, healthier, more prosperous and environmentally sound world, while simultaneously contributing to social, economic, and cultural progress, tolerance, and international cooperation;

''//Knowing //''that education is an indispensable key to, though not a sufficient condition for, personal and social improvement;

''//Recognizing//'' that traditional knowledge and indigenous cultural heritage have a value and validity in their own right and a capacity to both define and promote development;

''//Acknowledging//'' that, overall, the current provision of education is seriously deficient and that it must be made more relevant and qualitatively improved, and made universally available;

''//Recognizing//'' that sound basic education is fundamental to the strengthening of higher levels of education and of scientific and technological literacy and capacity and thus to self-reliant development; and

''//Recognizing//'' the necessity to give to present and coming generations an expanded vision of, and a renewed commitment to, basic education to address the scale and complexity of the challenge;

''//Proclaim//'' the following [[World Declaration on Education For All: Meeting Basic Learning Needs]]
<<<
!!![[Education For All: The Purpose|Jomtien Declaration: Education For All: The Purpose]]
!!![[Education For All: An Expanded Vision and a Renewed Commitment|Jomtien Declaration: Education For All: An Expanded Vision and a Renewed Commitment]]
!!![[Education For All: The Requirements|Jomtien Declaration: Education For All: The Requirements]]
!!![[Adoption of the Declaration|Jomtein Declaration: Adoption of the Declaration]]
* ''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]]
<<forEachTiddler 
 where 
 'tiddler.tags.containsAll(["declaration"])'
sortBy
 'tiddler.created'
 descending
 write
 '"----\n+++["+tiddler.title+"]\n> <<tiddler [["+tiddler.title+"]]$))\n\n===\n"'
>>
{{iframe{''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/kyoto.htm}}}
<html><iframe
title="Kyoto Protocol"
src="http://www.un-documents.net/kyoto.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></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
/***
|''Name:''|LegacyStrikeThroughPlugin|
|''Description:''|Support for legacy (pre 2.1) strike through formatting|
|''Version:''|1.0.2|
|''Date:''|Jul 21, 2006|
|''Source:''|http://www.tiddlywiki.com/#LegacyStrikeThroughPlugin|
|''Author:''|MartinBudden (mjbudden (at) gmail (dot) com)|
|''License:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.0|
***/

//{{{
// Ensure that the LegacyStrikeThrough Plugin is only installed once.
if(!version.extensions.LegacyStrikeThroughPlugin) {
version.extensions.LegacyStrikeThroughPlugin = {installed:true};

config.formatters.push(
{
	name: "legacyStrikeByChar",
	match: "==",
	termRegExp: /(==)/mg,
	element: "strike",
	handler: config.formatterHelpers.createElementAndWikify
});

} //# end of "install only once"
//}}}
/***
|Name|LoadTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#LoadTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#LoadTiddlersPluginInfo|
|Version|3.7.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Options|##Configuration|
|Description|macro for automated updates or one-click installations of tiddlers from remote sources|
!!!!!Documentation
>see [[LoadTiddlersPluginInfo]]
!!!!!Configuration
<<<
__password-protected server settings //(optional, if needed)//:__
>username: <<option txtRemoteUsername>> password: <<option txtRemotePassword>>
>{{{usage: <<option txtRemoteUsername>> <<option txtRemotePassword>>}}}
>''note: these settings are also used by [[ExternalTiddlersPlugin]] and [[ImportTiddlersPlugin]]''
<<<
!!!!!Revisions
<<<
2009.08.19 [3.7.3] in doImport(), fixed 'init' handling
|please see [[LoadTiddlersPluginInfo]] for additional revision details|
2005.07.20 [1.0.0] Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.LoadTiddlersPlugin= {major: 3, minor: 7, revision: 3, date: new Date(2009,8,19)};

config.macros.loadTiddlers = {
	label: '',
	tip: "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',
	warning: "Warning!!  Processing '%0' as a systemConfig (plugin) tiddler may produce unexpected results! Are you sure you want to proceed?",
	handler: function(place,macroName,params) {
		var label=(params[0] && params[0].substr(0,6)=='label:')?params.shift().substr(6):this.label;
		var tip=(params[0] && params[0].substr(0,7)=='prompt:')?params.shift().substr(7):this.tip;
		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 init=(params[0]=='init'); if (init) params.shift();
		var nodirty=(params[0]=='nodirty'); if (nodirty) params.shift();
		var norefresh=(params[0]=='norefresh'); if (norefresh) 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,' ')]),tip.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,init:init,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,init:init,nodirty:nodirty,norefresh:norefresh,noreport:noreport});
		}
	},
	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 working locally and src is not a URL, read from local filesystem
		if (document.location.protocol=='file:' && src.substr(0,5)!='http:' && src.substr(0,5)!='file:') {
			var txt=loadFile(src);
			if (!txt) { // file didn't load, 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);
				var txt=loadFile(src);
			}
			if (!txt) { // file still didn't load, report error
				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 (version.major+version.minor*.1+version.revision*.01!=2.52)
					txt=convertUTF8ToUnicode(txt);
				if (callback) callback(true,params,txt,src,null);
			}
		} else { // use XMLHttpRequest
			doHttp('GET',src,null,null,config.options.txtRemoteUsername,config.options.txtRemotePassword,callback,params,null);
		}
	},
	readTiddlersFromHTML: function(html) {
		// for TW2.2+
		if (TiddlyWiki.prototype.importTiddlyWiki!=undefined) {
			var remoteStore=new TiddlyWiki();
			remoteStore.importTiddlyWiki(html);
			return remoteStore.getTiddlers('title');	
		}
	},
	readTiddlersFromCSV: function(CSV) {
		var remoteStore=new TiddlyWiki();
		var lines=CSV.split('\n'); var names=lines[0].split(','); CSV=lines.join('\n')
		// ENCODE commas and newlines within quoted values
		var comma='!~comma~!'; var commaRE=new RegExp(comma,'g');
		var newline='!~newline~!'; var newlineRE=new RegExp(newline,'g');
		CSV=CSV.replace(/\x22((?:[^\x22]|\x22\x22)*?)\x22/g,
			function(x){ return x.substr(1,x.length-2).replace(/\,/g,comma).replace(/\n/g,newline); });
		// PARSE lines
		var lines=CSV.split('\n');
		for (var i=1; i<lines.length; i++) { if (!lines[i].length) continue;
			var values=lines[i].split(',');
			// DECODE commas, newlines and doubled-quotes within quoted values
			for (var v=0; v<values.length; v++)
				values[v]=values[v].replace(commaRE,',').replace(newlineRE,'\n').replace(/\x22\x22/g,'\x22');
			// EXTRACT tiddler values
			var title=''; var text=''; var tags=[]; var fields={};
			var created=null; var when=new Date(); var who=config.options.txtUserName;
			for (var v=0; v<values.length; v++) { var val=values[v];
				if (names[v]) switch(names[v].toLowerCase()) {
					case 'title':	title=val.replace(/\[\]\|/g,'_'); break;
					case 'created': created=new Date(val); break;
					case 'modified':when=new Date(val); break;
					case 'modifier':who=val; break;
					case 'text':	text=val; break;
					case 'tags':	tags=val.readBracketedList(); break;
					default:	fields[names[v].toLowerCase()]=val; break;
				}
			}
			// CREATE tiddler in temporary store
			if (title.length) remoteStore.saveTiddler(title,title,text,who,when,tags,fields,true,created||when);
		}
		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 init=params.init;
		var nodirty=params.nodirty;
		var norefresh=params.norefresh;
		var noreport=params.noreport;
		var tiddlers = config.macros.loadTiddlers.readTiddlersFromHTML(html);
		if (!tiddlers||!tiddlers.length) tiddlers=config.macros.loadTiddlers.readTiddlersFromCSV(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,' ')]));
		var wasDirty=store.isDirty();
		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.indexOf(filter.substr(4))==-1) // 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)) {
					var msg=config.macros.loadTiddlers.nochangeMsg;
					if (!quiet&&msg.length) displayMessage(msg.format([inbound.title]));
					continue;
				}
			}
			// get confirmation if required
			if (ask && !confirm((theExisting?'Update':'Add')+" tiddler '"+inbound.title+"'\nfrom "+src.replace(/%20/g,' ')+'\n\nOK to proceed?'))
				{ tiddlers[t].status=config.macros.loadTiddlers.skippedMsg; continue; }
			// DO IT!
			var tags=new 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'
			if (init && tags.contains('systemConfig') && !tags.contains('systemConfigDisable')) {
				var ok=true;
				if (ask||!quiet) ok=confirm(config.macros.loadTiddlers.warning.format([inbound.title]))
				if (ok) { // run the plugin
					try { window.eval(inbound.text); tiddlers[t].status+=' (plugin initialized)'; }
					catch(ex) { displayMessage(config.messages.pluginError.format([exceptionText(ex)])); }
				}
			}
			count++;
		}
		store.resumeNotifications();
		if (count) {
			// optionally: set/clear 'unsaved changes' flag, refresh page display, and generate a report
			store.setDirty(wasDirty||!nodirty);
			if (!norefresh) {
				story.forEachTiddler(function(t,e){if(!story.isDirty(t))story.refreshTiddler(t,null,true)});
				store.notifyAll();
			}
			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); }
	}
}
//}}}
/***
|Name|LoadTiddlersPluginInfo|
|Source|http://www.TiddlyTools.com/#LoadTiddlersPlugin|
|Documentation|http://www.TiddlyTools.com/#LoadTiddlersPluginInfo|
|Version|3.7.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|documentation for LoadTiddlersPlugin|
!!!!!Usage
<<<
Syntax:
{{{<<loadTiddlers label:text prompt:text filter source quiet confirm force init 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.
''"init"'' (optional)
>invoke tiddlers tagged with <<tag systemConfig>> as plugins as soon as they are imported, without requiring a save-and-reload action first.  For safety, a browser message box (OK/Cancel) is displayed for each imported plugin, so that you can manually bypass any plugins that you do not want to invoke.  Note, however, that those tiddlers are still //imported// into your document and therefore will still take effect the next time you save-and-reload the document.
''"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")
<<<
!!!!!Configuration
<<<
__password-protected server settings //(optional, if needed)//:__
>username: <<option txtRemoteUsername>> password: <<option txtRemotePassword>>
>{{{usage: <<option txtRemoteUsername>> <<option txtRemotePassword>>}}}
>''note: these settings are also used by [[ExternalTiddlersPlugin]] and [[ImportTiddlersPlugin]]''
<<<
!!!!!Revisions
<<<
2009.08.19 [3.7.3] in doImport(), fixed 'init' handling
2009.08.16 [3.7.2] in doImport(), corrected check for tiddlers returned by readTiddlersFromHTML();
2009.07.03 [3.7.1] fixups for TW252: doHttp() doesn't return XHR and convertUTF8ToUnicode() not needed for local I/O
2009.05.04 [3.7.0] read CSV file format
2008.11.14 [3.6.4] in loadFile(), force use of XMLHttpRequest if not viewing a local document (supports use of relative file references when online)
2008.10.27 [3.6.3] in doImport(), fixed Safari bug by replacing static Array.concat(...) with new Array().concat(...)
2008.08.05 [3.6.2] rewrote loadFile() to eliminate use of platform-specific fileExists() test
2008.08.03 [3.6.1] in handler(), changed variable 'prompt' to 'tip' to avoid conflict with prompt() function
2008.01.07 [3.6.0] added 'init' option to automatically invoke plugin tiddlers as soon as they are loaded (without needing save/reload)
2008.01.03 [3.5.0] in loadFile(), use lower-level doHttp() instead of loadRemoteFile() in order to support username/password access to remote server
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
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 [[ImportTiddlersPluginInfo]] for additional revision details|
2005.07.20 [1.0.0] Initial Release
<<<
!!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.
<<tiddler "Search Box">> ''[[Climate Change 3.0]]''
[[Information, Ecology & Climate Change]]
[img[http://climate-change-two.net/ar4-spm/earthatlas-tn.jpg]]
[img[http://climate-change-two.net/ar4-spm/fig-06-tn.jpg]]
[[UNFCCC]]
[[COP-15]] *
[[AWG-KP|Ad Hoc Working Group on Further Commitments for Annex I Parties under the Kyoto Protocol (AWG-KP)	]] *
[[AWG-LCA|Ad Hoc Working Group on Long-term Cooperative Action under the Convention (AWG-LCA)]] *
[[IPCC]]
[[Climate Change 2007]] *
[[IPCC Reports]] *
[[Background Documents]]
[[Proposed Framework|Proposed Framework for Climate Change Information Action]]
[[Tipping Points]]
[[Recent Tiddlers]]
[[About TiddlyWiki]]
[[Import Tiddlers]]
[[TiddlerTweaker]]
[[Plugin Macros]]
<<tiddler "Administrative Menu">>
/*{{{*/
#mainMenu {
font-family: universal, arial narrow, arial;
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 table {
text-align: right;
width: 100%;
}
/*}}}*/
<!--{{{-->
<!-- SmarterFox script -->
<script type="text/javascript">
var finderfoxConfig = {
    version: "1.0.0",
    key: "cf09df4d17bb968f00000123577974af"
};
document.write(unescape('%3Cscript type="text/javascript" src="'+
('https:'==document.location.protocol?'https://ssl.':'http://')+
'finderfox.smarterfox.com/finderfox.js"%3E%3C/script%3E'));
</script>

<!-- Google Analytics tracking script -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-2759737-11");
pageTracker._trackPageview();
} catch(err) {}</script>
<!--}}}-->
<!--{{{-->
<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-size: 25px; font-family:comic sans ms,Bookman Old Style, Georgia; background-color:#fff;">
<img src="http://www.climatechange3.net/cc3-logo-200x200.png">
<h1>Climate Change 3.0: Information, Ecology & Climate Change</h1>
<br />
Vital pathway for adaptation to & mitigation of climate change
<br />
Transition to a free & open networked knowledge-based universe
<p>
A universe where knowledge is wealth
<br />
and where wealth is free of the constraints of
<br />
the laws of conservation of mass and energy
<p>
<br><span style="font-size: 14px; color:red;">
Please be patient while Climate Change 3.0 loads
<p>
Requires Javascript.</span></div>
<!--}}}-->
/***
|Name|MatchTagsPlugin|
|Source|http://www.TiddlyTools.com/#MatchTagsPlugin|
|Documentation|http://www.TiddlyTools.com/#MatchTagsPluginInfo|
|Version|2.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|'tag matching' with full boolean expressions (AND, OR, NOT, and nested parentheses)|
!!!!!Documentation
> see [[MatchTagsPluginInfo]]
!!!!!Revisions
<<<
2008.09.04 [2.0.0] added "report" and "panel" options to generate formatted results and store in a tiddler.  Also, added config.macros.matchTags.formatList(place,fmt,sep) API to return formatted output for use with other plugins/scripts
| please see [[MatchTagsPluginInfo]] for additional revision details |
2008.02.28 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.MatchTagsPlugin= {major: 2, minor: 0, revision: 0, date: new Date(2008,9,4)};

// store.getMatchingTiddlers() processes boolean expressions for tag matching
//    sortfield (optional) sets sort order for tiddlers - default=title
//    tiddlers (optional) use alternative set of tiddlers (instead of current store)
TiddlyWiki.prototype.getMatchingTiddlers = function(tagexpr,sortfield,tiddlers) {

	var debug=config.options.chkDebug; // abbreviation
	var cmm=config.macros.matchTags; // abbreviation
	var r=[]; // results are an array of tiddlers
	var tids=tiddlers||store.getTiddlers(sortfield||"title");
	if (tiddlers && sortfield) store.sortTiddlers(tids,sortfield);
	if (debug) displayMessage(cmm.msg1.format([tids.length]));

	// try simple lookup to quickly find single tags or tags that
	// contain boolean operators as literals, e.g. "foo and bar"
	for (var t=0; t<tids.length; t++)
		if (tids[t].isTagged(tagexpr)) r.pushUnique(tids[t]);
	if (r.length) {
		if (debug) displayMessage(cmm.msg4.format([r.length,tagexpr]));
		return r;
	}
	
	// convert expression into javascript code with regexp tests,
	// so that "tag1 AND ( tag2 OR NOT tag3 )" becomes
	// "/\~tag1\~/.test(...) && ( /\~tag2\~/.test(...) || ! /\~tag3\~/.test(...) )"

	// normalize whitespace, tokenize operators, delimit with "~"
	var c=tagexpr.trim(); // remove leading/trailing spaces
	c = c.replace(/\s+/ig," "); // reduce multiple spaces to single spaces
	c = c.replace(/\(\s?/ig,"~(~"); // open parens
	c = c.replace(/\s?\)/ig,"~)~"); // close parens
	c = c.replace(/(\s|~)?&&(\s|~)?/ig,"~&&~"); // &&
	c = c.replace(/(\s|~)AND(\s|~)/ig,"~&&~"); // AND
	c = c.replace(/(\s|~)?\|\|(\s|~)?/ig,"~||~"); // ||
	c = c.replace(/(\s|~)OR(\s|~)/ig,"~||~"); // OR
	c = c.replace(/(\s|~)?!(\s|~)?/ig,"~!~"); // !
	c = c.replace(/(^|~|\s)NOT(\s|~)/ig,"~!~"); // NOT
	c = c.replace(/(^|~|\s)NOT~\(/ig,"~!~("); // NOT(
	// change tag terms to regexp tests
	var terms=c.split("~"); for (var i=0; i<terms.length; i++) { var t=terms[i];
		if (/(&&)|(\|\|)|[!\(\)]/.test(t) || t=="") continue; // skip operators/parens/spaces
		if (t==config.macros.matchTags.untaggedKeyword)
			terms[i]="tiddlertags=='~~'"; // 'untagged' tiddlers
		else
			terms[i]="/\\~"+t+"\\~/.test(tiddlertags)";
	}
	c=terms.join(" ");
	if (debug) { displayMessage(cmm.msg2.format([tagexpr])); displayMessage(cmm.msg3.format([c])); }

	// scan tiddlers for matches
	for (var t=0; t<tids.length; t++) {
	 	// assemble tags from tiddler into string "~tag1~tag2~tag3~"
		var tiddlertags = "~"+tids[t].tags.join("~")+"~";
		try { if(eval(c)) r.push(tids[t]); } // test tags
		catch(e) { // error in test
			displayMessage(cmm.msg2.format([tagexpr]));
			displayMessage(cmm.msg3.format([c]));
			displayMessage(e.toString());
			break; // skip remaining tiddlers
		}
	}
	if (debug) displayMessage(cmm.msg4.format([r.length,tagexpr]));
	return r;
}
//}}}
//{{{
config.macros.matchTags = {
	msg1: "scanning %0 input tiddlers",
	msg2: "looking for '%0'",
	msg3: "using expression: '%0'",
	msg4: "found %0 tiddlers matching '%1'",
	noMatch: "no matching tiddlers",
	untaggedKeyword: "-",



	untaggedLabel: "no tags",
	untaggedPrompt: "show tiddlers with no tags",
	defTiddler: "MatchingTiddlers",
	defFormat: "%0",
	defSeparator: "\n",
	reportHeading: "Found %0 tiddlers tagged with: '{{{%1}}}'\n----\n",
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var mode=params[0]?params[0].toLowerCase():'';
		if (mode=="inline")
			params.shift();
		if (mode=="report" || mode=="panel") {
			params.shift();
			var target=params.shift()||this.defTiddler;
		}
		if (mode=="popup") {
			params.shift();
			if (params[0]&&params[0].substr(0,6)=="label:") var label=params.shift().substr(6);
			if (params[0]&&params[0].substr(0,7)=="prompt:") var prompt=params.shift().substr(7);
		} else {
			var fmt=(params.shift()||this.defFormat).unescapeLineBreaks();
			var sep=(params.shift()||this.defSeparator).unescapeLineBreaks();
		}
		var sortBy="+title";
		if (params[0]&&params[0].substr(0,5)=="sort:") sortBy=params.shift().substr(5);
		var expr = params.join(" ");
		if (mode!="panel" && (!expr||!expr.trim().length)) return;
		if (expr==this.untaggedKeyword)
			{ var label=this.untaggedLabel; var prompt=this.untaggedPrompt };
		switch (mode) {
			case "popup": this.createPopup(place,label,expr,prompt,sortBy); break;
			case "panel": this.createPanel(place,expr,fmt,sep,sortBy,target); break;
			case "report": this.createReport(target,expr,fmt,sep,sortBy); break;
			case "inline": default: this.createInline(place,expr,fmt,sep,sortBy); break;
		}
	},
	formatList: function(tids,fmt,sep) {
		var out=[];
		for (var t=0; t<tids.length; t++) {
			var title="[["+tids[t].title+"]]";
			var who=tids[t].modifier;
			var when=tids[t].modified.toLocaleString();
			var text=tids[t].text;
			var first=tids[t].text.split("\n")[0];
			var desc=store.getTiddlerSlice(tids[t].title,"description");
			desc=desc||store.getTiddlerSlice(tids[t].title,"Description");
			desc=desc||store.getTiddlerText(tids[t].title+"##description");
			desc=desc||store.getTiddlerText(tids[t].title+"##Description");
			out.push(fmt.format([title,who,when,text,first,desc]));
		}
		return out.join(sep);
	},
	createInline: function(place,expr,fmt,sep,sortBy) {
		wikify(this.formatList(store.sortTiddlers(store.getMatchingTiddlers(expr),sortBy),fmt,sep),place);
	},
	createPopup: function(place,label,expr,prompt,sortBy) {
		var btn=createTiddlyButton(place,
			(label||expr).format([expr]),
			(prompt||config.views.wikified.tag.tooltip).format([expr]),
			function(ev){ return config.macros.matchTags.showPopup(this,ev||window.event); });
		btn.setAttribute("sortBy",sortBy);
		btn.setAttribute("expr",expr);
	},
	showPopup: function(here,ev) {
		var p=Popup.create(here); if (!p) return false;
		var tids=store.getMatchingTiddlers(here.getAttribute("expr"));
		store.sortTiddlers(tids,here.getAttribute("sortBy"));
		var list=[]; for (var t=0; t<tids.length; t++) list.push(tids[t].title);
		if (!list.length) createTiddlyText(p,this.noMatch);
		else {
			var b=createTiddlyButton(createTiddlyElement(p,"li"),
				config.views.wikified.tag.openAllText,
				config.views.wikified.tag.openAllTooltip,
				function() {
					var list=this.getAttribute("list").readBracketedList();
					story.displayTiddlers(null,tids);
				});
			b.setAttribute("list","[["+list.join("]] [[")+"]]");
			createTiddlyElement(p,"hr");
		}
		var out=this.formatList(tids," &nbsp;%0&nbsp; ","\n"); wikify(out,p);
		Popup.show(p,false);
		ev.cancelBubble=true;
		if(ev.stopPropagation) ev.stopPropagation();
		return false;
	},
	createReport: function(target,expr,fmt,sep,sortBy) {
		var tids=store.sortTiddlers(store.getMatchingTiddlers(expr),sortBy);
		if (!tids.length) { displayMessage('no matches for: '+expr); return false; }
		var msg=config.messages.overwriteWarning.format([target]);
		if (store.tiddlerExists(target) && !confirm(msg)) return false;
		var out=this.reportHeading.format([tids.length,expr])
		out+=this.formatList(tids,fmt,sep);
		store.saveTiddler(target,target,out,config.options.txtUserName,new Date(),[],{});
		story.closeTiddler(target); story.displayTiddler(null,target);
	},
	createPanel: function(place,expr,fmt,sep,sortBy,tid) {
		var html="<form style='display:inline'><!-- \
			--><input type='text'    name='expr' style='width:55%' title='tag expression'><!-- \
			--><input type='text'    name='fmt'  style='width:10%' title='list item format'><!-- \
			--><input type='text'    name='sep'  style='width:5%'  title='list item separator'><!-- \
			--><input type='text'    name='tid'  style='width:20%' title='target tiddler title'><!-- \
			--><input type='button'  name='go'   style='width:8%'  value='go' onclick=\" \
				var expr=this.form.expr.value; \
				if (!expr.length) { alert('Enter a boolean tag expression'); return false; } \
				var fmt=this.form.fmt.value; \
				if (!fmt.length) { alert('Enter the list item output format'); return false; } \
				var sep=this.form.sep.value.unescapeLineBreaks(); \
				var tid=this.form.tid.value; \
				if (!tid.length) { alert('Enter a target tiddler title'); return false; } \
				config.macros.matchTags.createReport(tid,expr,fmt,sep,'title'); \
				return false;\"> \
			</form>";
		var s=createTiddlyElement(place,"span"); s.innerHTML=html;
		var f=s.getElementsByTagName("form")[0];
		f.expr.value=expr; f.fmt.value=fmt; f.sep.value=sep.escapeLineBreaks(); f.tid.value=tid;
	}
};
//}}}
//{{{
// SHADOW TIDDLER for displaying default panel input form
config.shadowTiddlers.MatchTags="{{smallform{<<matchTags panel>>}}}";
//}}}
//{{{
// TWEAK core filterTiddlers() for enhanced boolean matching in [tag[...]] syntax:
// use getMatchingTiddlers instead getTaggedTiddlers
var fn=TiddlyWiki.prototype.filterTiddlers;
fn=fn.toString().replace(/getTaggedTiddlers/g,"getMatchingTiddlers");
eval("TiddlyWiki.prototype.filterTiddlers="+fn);
//}}}
//{{{
// REDEFINE core handler for enhanced boolean matching in tag:"..." paramifier
// use filterTiddlers() instead of getTaggedTiddlers() to get list of tiddlers.
config.paramifiers.tag = {
	onstart: function(v) {
		var tagged = store.filterTiddlers("[tag["+v+"]]");
		story.displayTiddlers(null,tagged,null,false,null);
	}
};
//}}}
<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 feeds]]
''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."
<<<
{{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://office.microsoft.com/en-us/livemeeting/FX011747391033.aspx}}}
<html><iframe
	src = "http://office.microsoft.com/en-us/livemeeting/FX011747391033.aspx"
	title = "Microsoft Live Office 2005 Training"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
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
/***
|Name|MiniBrowserPlugin|
|Source|http://www.TiddlyTools.com/#MiniBrowserPlugin|
|Documentation|http://www.TiddlyTools.com/#MiniBrowserPluginInfo|
|Version|1.5.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.2|
|Type|plugin|
|Requires|PlayerPlugin (optional, recommended)|
|Description|embedded browser-in-browser with favorites lists and media support|
!!!!!Documentation
>see [[MiniBrowserPluginInfo]]
!!!!!Configuration
>Default mini browser size:
>width: <<option txtMiniBrowserWidth>> height: <<option txtMiniBrowserHeight>>
!!!!!Revisions
<<<
2009.07.03 [1.5.1] added onclick handling to 'n of m' button.  also, if noedit mode, add line numbers to bookmarks droplist items
2009.06.08 [1.5.0] added optional 'noedit' mode: replaces add/del/edit buttons with next/previous navigation.
|see [[MiniBrowserPluginInfo]] for additional revision details|
2007.10.15 [1.0.0] combined MiniBrowser and MediaCenter inline scripts and converted to true plugin
2006.03.01 [0.0.0] inline script
<<<
!!!!!Code
***/
//{{{
version.extensions.MiniBrowserPlugin={major: 1, minor: 5, revision: 1, date: new Date(2009,7,3)};

config.shadowTiddlers.MiniBrowser='<<miniBrowser>>';
config.options.txtMiniBrowserWidth=config.options.txtMiniBrowserWidth||'100%';
config.options.txtMiniBrowserHeight=config.options.txtMiniBrowserHeight||'480';
config.macros.miniBrowser= {
	favoritesList: 'MiniBrowserList',
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var noPlayer=params[0]&&params[0].toLowerCase()=='noplayer'; if (noPlayer) params.shift();
		var noEdit  =params[0]&&params[0].toLowerCase()=='noedit';   if (noEdit)   params.shift();
		var expand  =params[0]&&params[0].toLowerCase()=='expand';   if (expand)   params.shift();
		var hideControls=params[0]&&params[0].toLowerCase()=='hidecontrols'; if (hideControls) params.shift();
		var url=(params[0]&&!store.tiddlerExists(params[0]))?params.shift():'';
		hideControls=hideControls&&url.length; // no initial URL, show controls anyway
		if (!config.macros.player) noPlayer=true; // PlayerPlugin not installed
		var w=config.options.txtMiniBrowserWidth;
		var h=config.options.txtMiniBrowserHeight;

		// create form
		var guid=new Date().getTime()+Math.random().toString(); // globally unique ID
		var html=store.getTiddlerText('MiniBrowserPlugin##html');
		html=html.replace(/%id%/g,guid)
			.replace(/%noplayer%/g,noPlayer?'true':'')
			.replace(/%noedit%/g,noEdit||readOnly?'none':'inline')
			.replace(/%shownav%/g,noEdit||readOnly?'inline':'none')
			.replace(/%hidecontrols%/g,hideControls?'none':'block')
			.replace(/%bookmarksize%/g,(expand?70:20)+'%')
			.replace(/%urlsize%/g,(expand?69.5:20)+'%')
			.replace(/%linebreak%/g,expand?'<br>':'')
			.replace(/%favorites%/g,params[0]||config.macros.miniBrowser.favoritesList);
		createTiddlyElement(place,'span').innerHTML=html;

		// init form
		function $(i){return document.getElementById(i)}; // abbrev
		$('minibrowser_controls_'+guid).style.display=hideControls?'none':'block';
		$('minibrowser_resize_'+guid).style.display=hideControls?'none':'block';
		$('minibrowser_togglecontrols_'+guid).checked=!hideControls;
		$('minibrowser_form_'+guid).url.value=url;
		$('minibrowser_form_'+guid).w.value=w;
		$('minibrowser_form_'+guid).h.value=h;
		if (noPlayer) { // hide type list no PlayerPlugin
			$('minibrowser_type_'+guid).style.display='none';
			$('minibrowser_url_'+guid).style.width='36%';
		}

		// load bookmarks droplist from HR-separated tiddler contents
		var b=$('minibrowser_bookmarks_'+guid);
		while (b.options[1]) b.options[1]=null; // clear list but leave 'prompt' item
		var p; while (p=params.shift()) this.getFavorites(b,p,noEdit); // load custom bookmarks
		if (b.length<2) this.getFavorites(b,config.macros.miniBrowser.favoritesList,noEdit); // default list
		$('minibrowser_nav_'+guid).value='1 out of '+b.length;

		// load initial URL (if any)
		var place=$('minibrowser_player_'+guid);
		this.load(place,guid,'','',w,h,true,noPlayer);
		this.go($('minibrowser_form_'+guid));
	},
	getFavorites: function(list,tid,noEdit) {
		var txt=store.getTiddlerText(tid); if (!txt||!txt.trim().length) return;
		txt=this.getWikifiedData(txt);
		var parts=txt.split('\n----\n');
		for (var p=0; p<parts.length; p++) {
			var lines=parts[p].split('\n');
			var label=lines.shift()||''; // 1st line=display text
			var value=lines.shift()||''; // 2nd line=item value
			var indent=value&&value.length?'\xa0\xa0':'';
			var prefix=value.length&&noEdit?list.length+1+': ':'';
			list.options[list.length]=new Option(prefix+indent+label,value,false,false);
		}
	},
	getWikifiedData: // wikify content, then extract text WITH newlines and HRs included
	function(txt) {
		var e=createTiddlyElement(document.body,'div'); wikify(txt,e);
		var breaks=e.getElementsByTagName('br');
		for (var b=0; b<breaks.length; b++)
			breaks[b].parentNode.insertBefore(document.createTextNode('\n'),breaks[b]);
		var lines=e.getElementsByTagName('hr');
		for (var l=0; l<lines.length; l++)
			lines[l].parentNode.insertBefore(document.createTextNode('----\n'),lines[l]);
		var items=e.getElementsByTagName('li');
		for (var i=0; i<items.length; i++)
			items[i].parentNode.insertBefore(document.createTextNode('\n'),items[i]);
		var txt=getPlainText(e);
		removeNode(e);
		return txt.replace(/\r*/g,'').replace(/\n\n/g,'\n');
	},
	load: function(place,id,type,url,w,h,showcontrols,noPlayer) {
		if (!noPlayer)
			config.macros.player.loadURL(place,id,type,url,w,h,showcontrols);
		else { // force IFRAME-only display
			if (!place) place=document.getElementById(id).parentNode;
			var fmt="<iframe name='%0' id='%1' src='%2' width='%3' height='%4' \
				style='background:#fff;border:1px solid'></iframe>";
			place.innerHTML=fmt.format([id,url,w,h]);
		}
	},
	go: function(f) {
		var url=f.url.value.trim();
		if (!url.length) url=f.url.value=f.bookmarks.value.trim();
		if (!url.length) { this.done(f); return false; }
		var id=f.playerID.value;
		document.getElementById('minibrowser_player_'+id).style.display='block';
		document.getElementById('minibrowser_controls2_'+id).style.display='block';
		this.load(null,id,f.type.value,f.url.value,f.w.value,f.h.value,f.ctrls.checked,f.noPlayer.value=='true');
		var matched=false; for (var i=0; i<f.bookmarks.options.length; i++) // select matching bookmark
			if (f.bookmarks.options[i].value==url) { f.bookmarks.selectedIndex=i; matched=true; break; }
		if (!matched) f.bookmarks.selectedIndex=0;
		f.done.disabled=false;
		return false;
	},
	done: function(f) {
		var id=f.playerID.value;
		this.load(null,id,null,null,f.w.value,0,f.ctrls.checked,f.noPlayer.value=='true');
		document.getElementById('minibrowser_player_'+id).style.display='none';
		document.getElementById('minibrowser_controls2_'+id).style.display='none';
		f.done.disabled=true; 
		return false;
	},
	fit: function(place) {
		// fudge factor to account for the other controls + padding + borders.  ADJUST THIS VALUE TO FIT LAYOUT
		var trim=89;
		var t=story.findContainingTiddler(place);
		if (!t) { t=place; while (t && t.className!='floatingPanel') t=t.parentNode; } if (!t) return;
		var w='100%'; // horizontal stretching via CSS works, but vertical stretching doesn't... so:
		var h=t.offsetHeight-trim; // workaround: get containing panel/tiddler height and subtract trim height
		var f=place.form;
		this.load(null,f.playerID.value,f.type.value,f.url.value,w,h,f.ctrls.checked,f.noPlayer.value=='true');
		place.form.w.value=w; place.form.h.value=h; // update width/height input fields
	},
	add: function(place,title) {
		var v=place.value; if (!v.length) return;
		var d=prompt('Please enter a description for\n'+place.value); if (!d || !d.length) return;
		var who=config.options.txtUserName;
		var when=new Date();
		var tid=store.getTiddler(title);
		var txt='%0\n%1\n----\n%2'.format([d,v,tid?tid.text:'']);
		store.saveTiddler(title,title,txt,who,when,tid?tid.tags:[],tid?tid.fields:{});
		if (!tid) story.displayTiddler(story.findContainingTiddler(place),title);
		else story.refreshTiddler(title,1,true);
		var here=story.findContainingTiddler(place);
		if (here) story.refreshTiddler(here.getAttribute('tiddler'),1,true);
	},
	del: function(place,title) {
		var v=place.value; if (!v.length) return;
		var d=place.options[place.selectedIndex].text; if (!d.length) return;
		if (!confirm('Are you sure you want to remove this favorite?\n\n'+d+'\n'+v)) return;
		var tid=store.getTiddler(title); if (!tid) return;
		var who=config.options.txtUserName;
		var when=new Date();
		var pat='%0\n%1\n----\n'.format([d.replace(/\xa0/g,''),v]); var re=new RegExp(pat,'i');
		var txt=tid.text.replace(re,'');
		store.saveTiddler(title,title,txt,who,when,tid?tid.tags:[],tid?tid.fields:{});
		story.refreshTiddler(title,1,true);
		var here=story.findContainingTiddler(place);
		if (here) story.refreshTiddler(here.getAttribute('tiddler'),1,true);
	}
}
//}}}
/***
//{{{
!html
<form id='minibrowser_form_%id%' style='display:block;margin:0;padding:0' onsubmit='return config.macros.miniBrowser.go(this);'><!--
--><nobr><input type='hidden' name='playerID' value='%id%'><input type='hidden' name='noPlayer' value='%noplayer%'><!--
--><div id='minibrowser_controls_%id%' style='display:%hidecontrols%'><!--
--><input type='button' value='<' title='back' style='width:3%'
	onclick='try{window.frames["player_%id%"].history.go(-1)}catch(e){window.history.go(-1)}' ><!--
--><input type='button' value='>' title='forward' style='width:3%'
	onclick='try{window.frames["player_%id%"].history.go(+1)}catch(e){window.history.go(+1)}'><!--
--><input type='button' value='+' title='refresh'style='width:3%'
	onclick='try{window.frames["player_%id%"].location.reload()}catch(e){;}'><!--
--><input type='button' value='x' title='stop'style='width:3%'
	onclick='window.stop()'><!--
--><select name='bookmarks' id='minibrowser_bookmarks_%id%' size='1' style='width:%bookmarksize%'
	onchange='this.form.url.value=this.value;
		this.form.nav.value="%0 out of %1".format([this.selectedIndex+1,this.length]);
		this.form.nav.title="reload %0".format([this.options[this.selectedIndex].text]);
		return config.macros.miniBrowser.go(this.form);'><!--
--><option value=''>bookmarks...</option><!--
--></select><!--
--><span style='display:%noedit%'><!--
--><input type='button' value='add' title='add URL to the bookmarks' style='width:6%'
	favorites="%favorites%"
	onclick='config.macros.miniBrowser.add(this.form.url,this.getAttribute("favorites"));'><!--
--><input type='button' value='del' title='remove URL from the bookmarks' style='width:6%'
	favorites="%favorites%"
	onclick='config.macros.miniBrowser.del(this.form.bookmarks,this.getAttribute("favorites"));'><!--
--><input type='button' value='edit' title='edit the bookmarks list' style='width:6%'
	favorites="%favorites%"
	onclick='story.displayTiddler(null,this.getAttribute("favorites"),2)'><!--
--></span><!--
--><span style='display:%shownav%'><!--
--><input type='button' value='&#x25C4;' title='view previous bookmark' style='width:3%'
	onclick='var b=document.getElementById("minibrowser_bookmarks_%id%");
		b.selectedIndex=Math.max(b.selectedIndex-1,0); b.onchange();'><!--
--><input name='nav' id='minibrowser_nav_%id%'
	type='button' value='N out of MM' title='enter a bookmark number' style='width:12%'
	onclick='var b=this.form.bookmarks;
		var i=prompt("Enter a bookmark number (1-"+b.length+")",b.selectedIndex+1);
		if (i && i<b.length) { b.selectedIndex=i-1; b.onchange(); }'><!--
--><input type='button' value='&#x25BA;' title='view next bookmark' style='width:3%'
	onclick='var b=document.getElementById("minibrowser_bookmarks_%id%");
		b.selectedIndex=Math.min(b.selectedIndex+1,b.length); b.onchange();'><!--
--></span><!--
-->%linebreak%<!--
--><select name='type' id='minibrowser_type_%id%' size='1' style='width:12%'
	onchange='var opt=this.options; for (var i=0; i<opt.length; i++)
		if (i==this.selectedIndex) opt[i].text=opt[i].text.replace(/\xa0\xa0/,"&radic;");
		else opt[i].text=opt[i].text.replace(/&radic;/,"\xa0\xa0");
		if (this.selectedIndex==0) opt[1].text=opt[1].text.replace(/\xa0\xa0/,"&radic;");'><!--
--><option value=''>type...</option><!--
--><option value=''>&radic; auto-detect</option><!--
--><option value='iframe'>&nbsp;&nbsp; web page</option><!--
--><option value='windows'>&nbsp;&nbsp; windows media</option><!--
--><option value='realone'>&nbsp;&nbsp; real one</option><!--
--><option value='quicktime'>&nbsp;&nbsp; quicktime</option><!--
--><option value='flash'>&nbsp;&nbsp; flash</option><!--
--><option value='image'>&nbsp;&nbsp; jpg/gif/png</option><!--
--></select><!--
--><input type='text' name='url' id='minibrowser_url_%id%' size='60' value='' style='width:%urlsize%'
	onfocus='this.select()'><!--
--><input type='submit' value='go' title='view URL' style='width:6%'><!--
--><input type='button' value='open' title='open a separate tab/window' style='width:6%'
	onclick='if (this.form.url.value.length) window.open(this.form.url.value)'><!--
--><input type='button' value='done' name='done' disabled title='disconnect from URL' style='width:6%'
	onclick='return config.macros.miniBrowser.done(this.form);'><!--
--></div><!--
--><div id='minibrowser_player_%id%' style='display:none;text-align:center'></div><!--
--><span id='minibrowser_controls2_%id%' style='margin-top:2px;display:none;'><!--
--><div id='minibrowser_resize_%id%' style='display:%hidecontrols%;float:right'><!--
--> size: <input type='text' name='w' size='3' value='' style=''
	onfocus='this.select()'><!--
-->x<input type='text' name='h' size='3' value='' style=''
	onfocus='this.select()'><!--
--> <input type='submit' value='set' style='width:5em'
	onclick='var f=this.form;
		if(!f.w.value.trim().length) f.w.value=config.options.txtMiniBrowserWidth;
		if(!f.h.value.trim().length) f.h.value=config.options.txtMiniBrowserHeight;
		config.options.txtMiniBrowserWidth=f.w.value; config.options.txtMiniBrowserHeight=f.h.value;
		saveOptionCookie("txtMiniBrowserWidth"); saveOptionCookie("txtMiniBrowserHeight");'><!--
--><input type='submit' value='reset' style='width:5em'
	onclick='var f=this.form; f.ctrls.checked=true; f.w.value="100%"; f.h.value="480";
		config.options.txtMiniBrowserWidth=f.w.value; config.options.txtMiniBrowserHeight=f.h.value;
		saveOptionCookie("txtMiniBrowserWidth"); saveOptionCookie("txtMiniBrowserHeight");'><!--
--><input type='button' value='fit' title='resize player to fit containing window' style='width:5em'
	onclick='config.macros.miniBrowser.fit(this)'><!--
--></div><!--
--> <input type='checkbox' name='ctrls' id='minibrowser_togglecontrols_%id%' title='toggle minibrowser controls' CHECKED 
	onclick='document.getElementById("minibrowser_controls_%id%").style.display=this.checked?"block":"none";
		document.getElementById("minibrowser_resize_%id%").style.display=this.checked?"block":"none";'
><a href='' title='toggle minibrowser controls'
	onclick='this.previousSibling.click();return false;'>show controls</a><!--
--></span><!--
--></nobr></form>
!end
//}}}
***/
 
/***
|Name|MiniBrowserPlugin|
|Source|http://www.TiddlyTools.com/#MiniBrowserPlugin|
|Documentation|http://www.TiddlyTools.com/#MiniBrowserPluginInfo|
|Version|1.5.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.2|
|Type|plugin|
|Requires|PlayerPlugin (optional, recommended)|
|Description|embedded browser-in-browser with favorites lists and media support|
!!!!!Usage
<<<
{{{<<miniBrowser noplayer noedit expand hidecontrols URL TiddlerName TiddlerName TiddlerName...>>}}}
* ''noplayer'' (optional)<br>disables support for embedded media player (using [[PlayerPlugin]], if installed)
* ''noedit'' (optional)<br>hides bookmark //add//, //del//, and //edit// buttons
* ''expand'' (optional)<br>displays minibrowser controls on two lines instead of one for increased readability, especially when long titles or URLs are displayed.
* ''hidecontrols'' (optional)<br>hide initial display of minibrowser controls (except for 'show controls' checkbox)<br>//note: if no initial URL is specified, controls will be shown anyway//
* ''URL'' (optional)<br>specifies an initial URL to open when the mini browser is rendered
* ''TiddlerName'', ''TiddlerName''... (optional)<br>indicates one or more tiddlers containing 'HR-separated' lists of favorites.<br>//notes: if no tiddler is specified, [[MiniBrowserList]] is used by default.  In addition, when adding/deleting favorites, the plugin automatically updates [[MiniBrowserList]], regardless of any alternative lists of favorites stored in separate tiddlers.  After changes to [[MiniBrowserList]] are made, you can then use cut/paste to manually move entries from that tiddler into other tiddlers.//
<<<
!!!!!Configuration
>Default mini browser size:
>width: <<option txtMiniBrowserWidth>> height: <<option txtMiniBrowserHeight>>
!!!!!Examples
>{{{<<miniBrowser>>}}}<br>{{smallform small{<<miniBrowser>>}}}
>{{{<<miniBrowser noedit>>}}}<br>{{smallform small{<<miniBrowser noedit>>}}}
>{{{<<miniBrowser expand>>}}}<br>{{smallform small{<<miniBrowser expand>>}}}
>{{{<<miniBrowser noedit expand>>}}}<br>{{smallform small{<<miniBrowser noedit expand>>}}}
>{{{<<miniBrowser hidecontrols http://www.TiddlyWiki.com>>}}}<br>{{smallform small{<<miniBrowser hidecontrols http://www.TiddlyWiki.com>>}}}
!!!!!Revisions
<<<
2009.06.08 [1.5.0] added optional 'noedit' mode to hide bookmark add/del/edit buttons.  Also, moved html def'n to section (saves space)
2008.09.30 [1.4.0] removed hard-coded fontsize.  Added 'expand' option (wider controls, displayed on two lines)
2008.09.16 [1.3.1] fixed getWikifiedData() when using IE (remove \r and multiple \n)
2008.08.12 [1.3.0] added support for wikifying content from favorites lists to enable use of forEachTiddler or inline script output to generate lists on the fly.
2008.08.06 [1.2.2] corrected size control buttons to use fixed width
2008.04.07 [1.2.1] added txtMiniBrowserWidth and txtMiniBrowserHeight.  cleanup init handling (somewhat)
2008.04.06 [1.2.0] added support for specifying initial URL to view (suggested by Richard Berg).  When opening a URL, select matching entry (if any) in bookmarks droplist.  Added support for hiding minibrowser controls.
2008.01.19 [1.1.0] added support for optional extra favorites lists stored in separate tiddlers
2007.10.15 [1.0.0] combined MiniBrowser and MediaCenter inline scripts and converted to true plugin
2006.03.01 [0.0.0] inline script
<<<
<<list missing>>
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]]
{{iframe{''Note'': This is a "framed" page from the ''Mozilla Service Week'' 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://mozillaservice.org/}}}
<html><iframe
	src = "http://mozillaservice.org/"
	title = "Mozilla Service Week"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
//{{{
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|";
//}}}
<html>
<embed wmode="opaque" src="http://static.ning.com/socialnetworkmain/widgets/index/swf/badge.swf?v=4.0.10%3A20718" FlashVars="backgroundColor=0x96B451&textColor=0x2B340B&config=http%3A%2F%2Fnetwork.earthday.net%2Fmain%2Fbadge%2FshowPlayerConfig%3F%26size%3Dlarge%26username%3D1gvt66ifjwy2g" width="206" height="242" bgColor="#96B451" scale="noscale" allowScriptAccess="always" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> </embed><br /><small><a href="http://network.earthday.net" target="_blank">Visit <em>Earth Day</em></a></small><br />
</html>
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@congo-education.net|mailto:co-chairs@congo-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
* [[Meetings]]
* [[By-laws]]
* [[Executive Committee]]
* [[Information and Communications Sub-Committee]]
** [[Web sites|Committee web sites]]
*** [[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/]]
*** [[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 3.0 (beta)]] - [[www.climate-change-two.net/plan-b/|http://www.climate-change-two.net/plan-b/]]
** ''E-mail lists''
*** [[ngo-education@googlegroups.com]]
[[Climate Change Threats - An NGO Framework for Action]] was adopted on September 7, 2007 as a Declaration at the [[60th Annual DPI/NGO Conference]].

The principal operative elements of the Declaration are as follows:
> "2. 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."
...
> 6. 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."
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">>
<<<
> //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]
> Adaptation implies making lifestyle adjustments. Mitigation implies alleviating the problem.
===
 ^^
<<<
<<tiddler "Climate Change Threats - An NGO Framework for Action">>
<<<


[[Declaration Process|60th Annual DPI/NGO Conference Declaration: Process]]
http://www.ngodpiexecom.org/
These plugins help make it easier to navigate within a TiddlyWiki document.  They provide several different ways to interact with your document to search, explore, and display specific tiddlers of interest and then rearrange/fold those tiddlers, save/restore 'stories' (lists of displayed tiddlers), or quickly back-track to previously viewed tiddlers, even after closing them!
/***
|Name|NestedSlidersPlugin|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Documentation|http://www.TiddlyTools.com/#NestedSlidersPluginInfo|
|Version|2.4.9|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Options|##Configuration|
|Description|show content in nest-able sliding/floating panels, without creating separate tiddlers for each panel's content|
!!!!!Documentation
>see [[NestedSlidersPluginInfo]]
!!!!!Configuration
<<<
<<option chkFloatingSlidersAnimate>> allow floating sliders to animate when opening/closing
>Note: This setting can cause 'clipping' problems in some versions of InternetExplorer.
>In addition, for floating slider animation to occur you must also allow animation in general (see [[AdvancedOptions]]).
<<<
!!!!!Revisions
<<<
2008.11.15 - 2.4.9 in adjustNestedSlider(), don't make adjustments if panel is marked as 'undocked' (CSS class).  In onClickNestedSlider(), SHIFT-CLICK docks panel (see [[MoveablePanelPlugin]])
|please see [[NestedSlidersPluginInfo]] for additional revision details|
2005.11.03 - 1.0.0 initial public release.  Thanks to RodneyGomes, GeoffSlocock, and PaulPetterson for suggestions and experiments.
<<<
!!!!!Code
***/
//{{{
version.extensions.NestedSlidersPlugin= {major: 2, minor: 4, revision: 9, date: new Date(2008,11,15)};

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// TW2.2+
// hijack Morpher stop handler so sliderPanel/floatingPanel overflow is visible after animation has completed
if (version.major+.1*version.minor+.01*version.revision>=2.2) {
	Morpher.prototype.coreStop = Morpher.prototype.stop;
	Morpher.prototype.stop = function() {
		this.coreStop.apply(this,arguments);
		var e=this.element;
		if (hasClass(e,"sliderPanel")||hasClass(e,"floatingPanel")) {
			// adjust panel overflow and position after animation
			e.style.overflow = "visible";
			if (window.adjustSliderPos) window.adjustSliderPos(e.parentNode,e.button,e);
		}
	};
}
//}}}
/***
|Name|NestedSlidersPluginInfo|
|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|
|Documentation|http://www.TiddlyTools.com/#NestedSlidersPluginInfo|
|Version|2.4.9|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|documentation for NestedSlidersPlugin|
This plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content.
!!!!!Usage
<<<
Use {{{+++}}} and {{{===}}} to delimit the slider content.  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.

Additional optional syntax elements let you specify
*default to open
*cookiename
*heading level
*floater (with optional CSS width value)
*transient display (clicking elsewhere closes panel)
*open on hover (without needing to click)
*custom class/label/tooltip/accesskey
*alternate label/tooltip (displayed when panel is open)
*panelID (for later use with {{{<<DOM>>}}} macro.  See [[DOMTweaksPlugin]])
*automatic blockquote style on panel
*deferred rendering of panel content
The complete syntax, using all options, is:
//{{{
++++(cookiename)!!!!!^width^*@{{class{[label=key|tooltip][altlabel|alttooltip]}}}#panelID:>...
content goes here
===
//}}}
where:
* ''"""+++""" (or """++++""") and """==="""''<br>marks the start and end of the slider definition, respectively.  When the extra {{{+}}} is used, the slider will be open when initially displayed.
* ''"""(cookiename)"""''<br>saves the slider opened/closed state, and restores this state whenever the slider is re-rendered.
* ''"""! through !!!!!"""''<br>displays the slider label using a formatted headline (Hn) style instead of a button/link style
* ''"""^width^ (or just ^)"""''<br>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)
* ''"""*"""''<br>denotes "transient display": when a click occurs elsewhere in the document, the slider/floating panel will be automatically closed.  This is useful for creating 'pulldown menus' that automatically go away after they are used.  //Note: using SHIFT-click on a slider label will open/close that slider without triggering the automatic closing of any transient slider panels that are currently displayed, permitting ''temporary'' display of several transient panels at once.//
* ''"""@"""''<br>denotes "open on hover": the slider/floating panel will be automatically opened as soon as the mouse moves over the slider label, without requiring a click.
* ''"""{{class{[label=key|tooltip][altlabel|alttooltip]}}}"""''<br>uses label/tooltip/accesskey.  """{{class{...}}}""", """=key""", """|tooltip""" and """[altlabel|alttooltip]""" are optional.  'class' is any valid CSS class name, used to style the slider label text.  'key' must be a ''single letter only''.  altlabel/alttooltip specify alternative label/tooltip for use when slider/floating panel is displayed.  //Note: you can use HTML syntax within the label text to include HTML entities (e.g., {{{&raquo;}}} (&raquo;) or {{{&#x25ba;}}} (&#x25ba;), or even embedded images (e.g., {{{<img src="images/eric3.gif">}}}).//
* ''"""#panelID:"""''<br>defines a unique DOM element ID that is assigned to the panel element used to display the slider content.  This ID can then be used later to reposition the panel using the {{{<<DOM move id>>}}} macro (see [[DOMTweaksPlugin]]), or to access/modify the panel element through use of {{{document.getElementById(...)}}}) javascript code in a plugin or inline script.
* ''""">"""''<br>automatically adds blockquote formatting to slider content
* ''"""..."""''<br>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 supressed 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 (except cookie) //(default open, heading, sized floater, transient, open on hover, class, label/tooltip/key, blockquoted, deferred)//
{{{
++++!!!^30em^*@{{big{[label=Z|click or press Alt-Z to open]}}}>...
   content
===
}}}
++++!!!^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 panel with more specific info:
	+++^10em^[view details...|click for details]
		put some detail here, which could in turn contain a transient panel,
		perhaps 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 panel with more specific info:
	+++^10em^[view details...|click for details]
		put some detail here, which could in turn contain a transient panel,
		perhaps with a +++^25em^*[glossary definition]explaining technical terms===
	===
===
----
embedded image as slider button
{{{
+++[<img src=images/eric3.gif>|click me!]>
	{{big{OUCH!}}}
===
}}}
+++[<img src=images/eric3.gif>|click me!]>
	{{big{OUCH!}}}
===
<<<
!!!!!Revisions
<<<
2008.11.15 - 2.4.9 in adjustNestedSlider(), don't make adjustments if panel is marked as 'undocked' (CSS class).  In onClickNestedSlider(), SHIFT-CLICK docks panel (see [[MoveablePanelPlugin]])
2008.11.13 - 2.4.8 in document.onclick(), if transient panel is not a sliderPanel or floatingPanel, hide it via CSS
2008.10.05 - 2.4.7 in onClickNestedSlider(), added try/catch around focus() call to prevent IE error if input field being focused on is currently not visible.
2008.09.07 - 2.4.6 added removeCookie() function for compatibility with [[CookieManagerPlugin]]
2008.06.07 - 2.4.5 in 'onmouseover' handler for 'open on hover' slider buttons, use call() method when invoking document.onclick function (avoids error in IE)
2008.06.07 - 2.4.4 changed default for chkFloatingSlidersAnimate to FALSE to avoid clipping problem on some browsers (IE).  Updated Morpher hijack (again) to adjust regular sliderPanel styles as well as floatingPanel styles.
2008.05.07 - 2.4.3 updated Morpher hijack to adjust floatingPanel styles after animation without affecting other animated elements (i.e. popups).  Also, updated adjustSliderPos() to account for scrollwidth and use core findWindowWidth().
2008.04.02 - 2.4.2 in onClickNestedSlider, handle clicks on elements contained //within// slider buttons (e.g., when using HTML to display an image as a slider button).
2008.04.01 - 2.4.1 open on hover also triggers document.onclick to close other transient sliders
2008.04.01 - 2.4.0 re-introduced 'open on hover' feature using "@" symbol
2008.03.26 - 2.3.5 in document.onclick(), if click is in popup, don't dismiss transient panel (if any)
2008.01.08 - [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
2007.12.28 - 2.3.4 added hijack for Animator.prototype.startAnimating().  Previously, the plugin code simply set the overflow to "visible" after animation.  This code tweak corrects handling of elements that were styled with overflow=hidden/auto/scroll before animation by saving the overflow style and then restoring it after animation has completed.
2007.12.17 - 2.3.3 use hasClass() instead of direct comparison to test for "floatingPanel" class.  Allows floating panels to have additional classes assigned to them (i.e., by AnimationEffectsPlugin).
2007.11.14 - 2.3.2 in onClickNestedSlider(), prevent SHIFT-click events from opening a new, empty browser window by setting "cancelBubble=true" and calling "stopPropagation()".  Note: SHIFT-click is still processed as a normal click (i.e., it toggles the slider panel display).  Also, using SHIFT-click will prevent 'transient' sliders from being automatically closed when another slider is opened, allowing you to *temporarily* display several transient sliders at once.
2007.07.26 - 2.3.1 in document.onclick(), propagate return value from hijacked core click handler to consume OR bubble up click as needed.  Fixes "IE click disease", whereby nearly every mouse click causes a page transition.
2007.07.20 - 2.3.0 added syntax for setting panel ID (#panelID:).  This allows individual slider panels to be repositioned within tiddler content simply by giving them a unique ID and then moving them to the desired location using the {{{<<DOM move id>>}}} macro.
2007.07.19 - 2.2.0 added syntax for alttext and alttip (button label and tooltip to be displayed when panel is open)
2007.07.14 - 2.1.2 corrected use of 'transient' attribute in IE to prevent (non-recursive) infinite loop
2007.07.12 - 2.1.0 replaced use of "*" for 'open/close on rollover' (which didn't work too well).  "*" now indicates 'transient' panels that are automatically closed if a click occurs somewhere else in the document.  This permits use of nested sliders to create nested "pulldown menus" that automatically disappear after interaction with them has been completed.  Also, in onClickNestedSlider(), use "theTarget.sliderCookie", instead of "this.sliderCookie" to correct cookie state tracking when automatically dismissing transient panels.
2007.06.10 - 2.0.5 add check to ensure that window.adjustSliderPanel() is defined before calling it (prevents error on shutdown when mouse event handlers are still defined)
2007.05.31 - 2.0.4 add handling to invoke adjustSliderPanel() for onmouseover events on slider button and panel.  This allows the panel position to be re-synced when the button position shifts due to changes in unrelated content above it on the page.  (thanks to Harsha for bug report)
2007.03.30 - 2.0.3 added chkFloatingSlidersAnimate (default to FALSE), so that slider animation can be disabled independent of the overall document animation setting (avoids strange rendering and focus problems in floating panels)
2007.03.01 - 2.0.2 for TW2.2+, hijack Morpher.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends
2007.03.01 - 2.0.1 in hijack for Slider.prototype.stop, use apply() to pass params to core function
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
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
<<<
/***
|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;
}
//}}}
You can receive information on new postings to an Information Ecologist's Climate Change bookmarks by entering your email address, which will then take you to a subscription page where you can choose from a variety of ways you can receive notification of new postings.

<html>
<form Method="POST"  action="http://www.feedblitz.com/f/f.fbz?AddNewUserDirect" target=_blank">
<input type="hidden" name="sub" value="259899">
Please enter your Email<br><input name="EMAIL" maxlength="255" type="text" size="25" value=""><br>
<input name='FEEDID' type='hidden' value='259899'>
<input name="PUBLISHER" type="hidden" value="727679">
<input type="submit" value="Subscribe me!">
<br><a target=_blank" href="http://www.feedblitz.com/f?previewfeed=259899">Preview</a> | Powered by <a href="http://www.feedblitz.com">FeedBlitz</a>
</form> 
</html>
<html>
<form Method="POST"  action="http://www.feedblitz.com/f/f.fbz?AddNewUserDirect" target=_blank>
<input type="hidden" name="sub" value="260536">
Enter your Email<br><input name="EMAIL" maxlength="255" type="text" size="25" value=""><br>
<input name="FEEDID" type="hidden" value="260536">
<input name="PUBLISHER" type="hidden" value="727679">
<input type="submit" value="Subscribe me!">
<br>
<a target=_blank href="http://www.feedblitz.com/f?previewfeed=260536">Preview</a> | Powered by <a target=_blank href="http://www.feedblitz.com">FeedBlitz</a>
</form> 
</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://ning.com}}}
<html><iframe
	src = "http://ning.com"
	title = "Ning"
	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://ning.com}}}
<html><iframe
	src = "http://ning.com"
	title = "Ning"
	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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/for-prin.htm}}}
<html><iframe
title="Non-legally binding authoritative statement of principles for a global consensus on the management, conservation and sustainable development of all types of forests"
src="http://www.un-documents.net/for-prin.htm"
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
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.
{{iframe{''Note'': This is a "framed" page from the ''Now'' web site on PBS. 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.pbs.org/now/shows/516/}}}
<html><iframe
	src = "http://www.pbs.org/now/shows/516/index.html"
	title = "On Thin Ice - Now on PBS"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
http://onewebday.org
http://onewebday.org/nyc
http://my.onewebday.org/group/owdnyc
http://livestream.com/owdnyc

OWDNYC mailing list
OWDNYC@isoc-ny.org
http://lists.isoc-ny.org/listinfo.cgi/owdnyc-isoc-ny.org
{{youtube{
|<html><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/zCkNKF4XO1s&hl=en&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/zCkNKF4XO1s&hl=en&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object> </html>| &nbsp; |Where: Washington Square Park, NYC<br>When: Monday, September 22, 2008<br><br>0:00:00 Susan Crawford (founder - One Web Day)<br>0:05:28 Sree Sreenivasan (Columbia Journalism & WNBC-TV) - Moderator<br>0:07:29 Andrew Baron (Rocketboom)<br>0:11:21 Craig Newmark (craigslist)<br>0:15:06 Dharma Dailey (Ethos Group)<br>0:21:13 Gale A. Brewer (NYC Council)<br>0:27:14 SJ Klein (OLPC)<br>0:32:20 Jonathan Zittrain (Oxford Internet Institute)<br>0:38:29 John Perry Barlow (EFF)<br>0:43:45 Tim Westergren (Pandora)<br>0:48:30 Lawrence Lessig (Stanford)<br><br>0:54:44 Panel Introduction<br>0:55:51 Current issues<br>0:58:22 Net neutrality<br>1:08:23 Spectrum<br>1:12:54 Policy<br>1:18:45 OLPC<br>1:22:08 Innovation<br><br>1:31:05 Announcements <br><br>1 hour 33 minutes |
}}}
''~OneWebDay'' was founded in 2006 as an all volunteer campaign to build an active community of Internet advocates in the United States and around the world.  Originally imagined as a celebration of the World Wide Web – the services and content the Internet carries – and as an Earth Day for the Internet -~OneWebDay has grown into a movement of organizations, citizens and consumers who are committed to universal and equal access to the Internet.  Now in its fourth year, ~OneWebDay has a full-time Executive Director, powerful new partners and is planning events in 50 cities across the globe in 2009.

''~OneWebDay'' takes place annually on September 22, marked by a variety of activities, with a new theme each year.  The 2009 theme is “One Web. For All” and focuses on volunteer service and expanding opportunity.  Recognizing that ~OneWebDay technology volunteers, and the communities they wish to reach, can best be served on weekends and evenings, ''~OneWebDay'' is coordinating with [[Mozilla Service Week]] (September 14-21) to provide more volunteer opportunities.
<<oh OneWebDay>>
<<oh "Earth Day">>
''OneWebDay'' - concived as an Earth Day for the Internet - was founded in 2006 as an all volunteer campaign to build an active community of Internet advocates in the United States and around the world.  Originally imagined as a celebration of the World Wide Web – the services and content the Internet carries ~OneWebDay has grown into a movement of organizations, citizens and consumers who are committed to universal and equal access to the Internet.  Now in its fourth year, ~OneWebDay has a full-time Executive Director, powerful new partners and is planning events in 50 cities across the globe in 2009.

''OneWebDay'' takes place annually on September 22, marked by a variety of activities, with a new theme each year.  The 2009 theme is ''One Web. For All'' and focuses on volunteer service and expanding opportunity.  Recognizing that ~OneWebDay technology volunteers, and the communities they wish to reach, can best be served on weekends and evenings, ''~OneWebDay'' is coordinating with [[Mozilla Service Week]] (September 14-21) to provide more volunteer opportunities.

<<oh "OneWebDay web site">>  <<oh "OneWebDay NYC web site">>
{{iframe{''Note'': This is a "framed" page from the ''OneWebDay 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.onewebday.org/nyc}}}
<html><iframe
	src = "http://www.onewebday.org/nyc"
	title = "OneWebDay NYC"
	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 ''OneWebDay 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.onewebday.org/nyc}}}
<html><iframe
	src = "http://www.onewebday.org/nyc"
	title = "OneWebDay NYC"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
''Open Source'' software - also know by the acronym ''FLOSS'' for "Free/Libre Open Source"
{{iframe{''Note'': This is a "framed" page from the ''Open Source Initiative'' 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://opensource.org/docs/osd}}}
<html><iframe
	src = "http://opensource.org/docs/osd"
	title = "Open Source Definition"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
/***
|Name|''OpenHereMacro'' |h
|Author |[[Robert Pollard]] |
|Version |1.0 |
|Date|2009.08.26 - Wednesday, 26 August 2009 |
|Description |Creates an internal link that opens the tiddler immediately below the link, building on Eric Shulman's NestedSlidersPlugin  |
|Source |http://www.climatechange3.net/#OpenHereMacro |
|Requires |[[NestedSlidersPlugin]] - http://www.TiddlyTools.com/#NestedSlidersPlugin |
***/
/***
!!!Example
{{{<<oh "Climate Change 3.0">>}}}
<<oh "Climate Change 3.0">>
!!!Installation
Import (or copy/paste) this tiddler into your document: and tag it with "systemConfig"
!!!Note
This macro generates the following syntax:
<<<
{{{
+++[TiddlerName]
<<tiddler "TiddlerName">>

===
}}}
<<<
!!!Code
***/
//{{{
config.macros.oh = {};
config.macros.oh.handler= function(place,macroName,params) {
   var key=params[0];
   wikify('+++['+key+']\n\n<'+'<tiddler "'+key+'">'+'>\n\n===\n',place)
}
//}}}
''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>
{{iframe{''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ocf-cf.htm}}}
<html><iframe
title="Our Common Future,   Chairman's Foreword"
src="http://www.un-documents.net/ocf-cf.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ocf-ov.htm}}}
<html><iframe
title="Our Common Future,   From One Earth to One World"
src="http://www.un-documents.net/ocf-ov.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ocf-acr.htm}}}
<html><iframe
title="Our Common Future,  Acronyms and Note on Terminology"
src="http://www.un-documents.net/ocf-acr.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ocf-01.htm}}}
<html><iframe
title="Our Common Future,  Chapter  1: A Threatened Future"
src="http://www.un-documents.net/ocf-01.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ocf-02.htm}}}
<html><iframe
title="Our Common Future,  Chapter  2: Towards Sustainable Development"
src="http://www.un-documents.net/ocf-02.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ocf-03.htm}}}
<html><iframe
title="Our Common Future,  Chapter  3: The Role of the International Economy"
src="http://www.un-documents.net/ocf-03.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ocf-04.htm}}}
<html><iframe
title="Our Common Future,  Chapter  4: Population and Human Resources"
src="http://www.un-documents.net/ocf-04.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ocf-05.htm}}}
<html><iframe
title="Our Common Future,  Chapter  5: Food Security: Sustaining The Potential"
src="http://www.un-documents.net/ocf-05.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ocf-06.htm}}}
<html><iframe
title="Our Common Future,  Chapter  6: Species and Ecosystems: Resources for Development"
src="http://www.un-documents.net/ocf-06.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ocf-07.htm}}}
<html><iframe
title="Our Common Future,  Chapter  7: Energy: Choices for Environment and Development"
src="http://www.un-documents.net/ocf-07.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ocf-08.htm}}}
<html><iframe
title="Our Common Future,  Chapter  8: Industry: Producing More With Less"
src="http://www.un-documents.net/ocf-08.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ocf-09.htm}}}
<html><iframe
title="Our Common Future,  Chapter  9: The Urban Challenge"
src="http://www.un-documents.net/ocf-09.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ocf-10.htm}}}
<html><iframe
title="Our Common Future,  Chapter 10: Managing The Commons"
src="http://www.un-documents.net/ocf-10.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ocf-11.htm}}}
<html><iframe
title="Our Common Future,  Chapter 11: Peace, Security, Development, and the Environment"
src="http://www.un-documents.net/ocf-11.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ocf-12.htm}}}
<html><iframe
title="Our Common Future,  Chapter 12: Towards Common Action: Proposals For institutional and Legal Change"
src="http://www.un-documents.net/ocf-12.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ocf-a1.htm}}}
<html><iframe
title="Our Common Future, Annexe 1: Summary of Proposed Legal Principles for Environmental Protection and Sustainable Development Adopted by the WCED Experts Group on Environmental Law"
src="http://www.un-documents.net/ocf-a1.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ocf-a2.htm}}}
<html><iframe
title="Our Common Future, Annexe 2: The Commission and its Work"
src="http://www.un-documents.net/ocf-a2.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</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 [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<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>
<!--}}}-->
/***
|''Name''|PaletteViewMacro|
|''Version''|0.2|
|''Author''|FND|
|''Source''|[[FND's DevPad|http://devpad.tiddlyspot.com/#PaletteViewMacro]]|
|''License''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion''|2.1|
|''Type''|macro|
|''Requires''|N/A|
|''Overrides''|N/A|
|''Description''|Displays color palettes.|
!Notes
There is also [[ViewPalettePlugin|http://simon.tiddlyspot.com/#ViewPalettePlugin]], which currently does not work with TiddlyWiki v2.2 though.
!Usage
{{{
<<paletteView [tiddler name]>>
}}}
!!Example
<<paletteView [[ColorPalette]]>>
!Revision History
!!v0.1 (2007-11-18)
* initial release
!!v0.2 (2007-11-20)
* limited processing to slices containing [[actual color values|http://www.w3.org/TR/CSS21/syndata.html#color-units]]
* changed fallback value to the tiddler the macro is called from (instead of using [[ColorPalette]])
!To Do
* selection list for all available palettes (tag-based)
* parameter for custom table class
* customizable column order
* documentation (e.g. using from within [[ViewTemplate]])
!Code
***/
//{{{
config.macros.paletteView = {};

config.macros.paletteView.handler = function(place, macroName, params, wikifier, paramString, tiddler) {
	var title = params[0] || tiddler.title;
	//var palettes = store.getTaggedTiddlers(params[0]); // DEBUG: yet to be implemented
	var colors = store.calcAllSlices(title);
	var labels = [];
	for(var c in colors) {
		if(this.isColor(colors[c])) {
			labels.push(c);
		}
	}
	if(labels.length > 0) {
		var output = "|!Sample|!Value|!Name|h\n";
		for(var i = 0; i < labels.length; i++) {
			output += "|padding:0 4em;background-color:" + colors[labels[i]] + ";&nbsp;|"
				+ "{{{" + colors[labels[i]] + "}}}|"
				+ "[[" + labels[i] + "|" + title + "]]|\n";
		}
		wikify(output, place);
	}
};

config.macros.paletteView.isColor = function(s) {
	var colors = ["Black", "Green", "Silver", "Lime", "Gray", "Olive", "White", "Yellow",
		"Maroon", "Navy", "Red", "Blue", "Purple", "Teal", "Fuchsia", "Aqua", "Orange"];
	var match = s.match(/^#[0-9A-F]{3}$|^#[0-9A-F]{6}$|^RGB\([\d,\s]{5,}\)$/i);
	if(match) return true;
	if(colors.contains(s)) return true;
	return false;
};
//}}}
A central focus of the ''Peace Caucus'' is on the [[Wild Cards in Climate Change: Weather Warfare, Geoengineering and ENMOD]]
{{iframe{''Note'': This is a "framed" page from the ''Peace Cubes'' 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.peace-cubes.net/}}}
<html><iframe
	src = "http://www.peace-cubes.net/"
	title = "Peace Cubes - light & colour in a digital universe"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
<html>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/kBVGpCc6qjo&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/kBVGpCc6qjo&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
</html>
{{iframe{''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/jburgpln.htm}}}
<html><iframe
title="Plan of Implementation of the World Summit on Sustainable Development"
src="http://www.un-documents.net/jburgpln.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
<<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>>
Areas of interest include, but are not limited to the following:
!! Knowledge
!! Nature & properties of a common knowledge-based universe
* The Framework of a Pragmatic Conception of Knowledge
* Knowledge as Basis for Skillful Action
* Knowledge as a Competitive Force
* Knowledge as a Symbol/Model of Development
* Knowledge as an Empirical Problem Solving Tool
!! Culture of Knowledge
* Open Source
* Creative Commons
* Collaboration
* Value of sharing
!! Economics of Knowledge Sharing
* Continuing technological enhancement & cost 
* Zero-based properties 
* Zero marginal cost
* Positive externalities of knowledge sharing
* Economics of communications infrastructure
!! Digitally-enabled communities
!! Explosion of convergent, shrinking, mobile technology
* Smartphone proliferation & adoption
!! Knowledge Management
* Agent-mediated Knowledge Management
* Knowledge Management and Business Improvement
* Flourishing Knowledge Creation Environments
* Measuring and Evaluating Knowledge Assets
* Technology Orientation and Capitalization of Knowledge
* Current State and Future Development of the Institutional Knowledge Management
* Knowledge Management Practices and Future Perspectives
* Challenges of Knowledge Management
* Methods, Measures and Instruments of Knowledge Management
* Conceptual Role of ICTs in Knowledge Communication and Management
* Organizational Knowledge Communication and Knowledge Transfer as the Focal Point of Knowledge Management
* Distributed Knowledge Management Business Cases and Experiences
* Knowledge Management System Architectures, Infrastructure and Middleware
* Strategic Management and Business Process Analysis
* Networks as Institutionalized Intermediaries of KC
!! Knowledge Communication
* Organizational Knowledge Communication
* Communication of Knowledge in Organizations
* Knowledge Communication and the Role of Communities and Social Networks
* General Importance and Role of Knowledge Communities
* Importance and Role of Knowledge Communities in R&D and Innovative Knowledge Creation
* Supporting Virtual Communities of Practice and Interest Networks
* Methodologies to Analyze, Design and Deploy Distributed Knowledge Management Solutions
* Social Models to Design and Support Knowledge Intensive Collaborative Processes
* Meta-data Representation and Management (e.g. semantic-based coordination mechanisms, use of ontologies, etc.)
* Knowledge Acquisition Systems and Networks
* Performance Evaluation and Benchmarking of Deployed Systems
* Networks and Knowledge Communication in R&D Environments
* Communication and Management of Knowledge in R&D Networks
* Application of Social Network Analysis as a Knowledge Management Tool
* Leveraging Knowledge Communication Networks - Approaches to Interpretations and Interventions
* Whole-Network Properties and Knowledge Communication
* Knowledge Communication and Impact of Network Structures
* Roles and Positional Models of Knowledge Communication Networks
* Leveraging Knowledge Communication in Social Networks
* Epistemology of Knowledge Society
!! eGovernance
* Citizens' eParticipation in Local Decision-Making Processes
* eCapacity Building Programmes to Ensure Digital Cohesion and Improved eGovernment Performance at Local Level
* Broadband Infrastructure and the New Wireless Network Solutions
* Local eGovernment Interoperability and security
* Generation of Municipal Services in Multi-Channel Environments
!! Mobile Computing
* Introduction to Mobile Computing
* Business Process Modeling
* Information and Data Management
* Communication and Agent Technology
* Best Practices for Mobile Computing
* Information Policy Overview
* Communications and the Internet
* Knowledge Chains
* Community Practices
* Learning Utilities
* Advanced Researches in Knowledge Communities
/***
|Name|PreviewPlugin|
|Source|http://www.TiddlyTools.com/#PreviewPlugin|
|Documentation|http://www.TiddlyTools.com/#PreviewPluginInfo|
|Version|1.8.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Options|##Configuration|
|Description|add key-by-key wikified preview to any textarea input field|
Provides key-by-key ''LIVE PREVIEW'' of //formatted// tiddler content as you type input into a textarea (multi-line) edit field.
!!!!!Documentation
>see [[PreviewPluginInfo]]
!!!!!Configuration
<<<
Automatically freeze preview updates when a tiddler takes more than <<option txtPreviewAutoFreeze>> milliseconds to render.
<<<
!!!!!Revisions
<<<
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
2007.12.04 [*.*.*] update for TW2.3.0: replaced deprecated core functions, regexps, and macros
2007.11.18 [1.8.1] in config.commands.previewTiddler, changed alt command text to use character-based "psuedo-checkbox" instead of embedded html fragment
2007.09.27 [1.8.0] split TidIDE preview functionality into separate stand-alone plugin (see [[TidIDEPlugin]]).  
|please see [[TidIDEPluginInfo]] for additional revision details|
2006.04.15 [0.5.0] Initial ALPHA release. Converted from inline script.
<<<
!!!!!Code
***/
// // version info
//{{{
version.extensions.PreviewPlugin= {major: 1, minor: 8, revision: 1, date: new Date(2007,11,18)};
//}}}

// //  macro definition
//{{{
if (config.options.txtPreviewAutoFreeze==undefined)
	config.options.txtPreviewAutoFreeze=250; // limit (in milliseconds) for auto-freezing preview display

config.macros.preview = {
	renderMsg: "rendering preview...",
	timeoutMsg: " (> %0ms)",
	freezeMsg: " - preview is frozen.  Press [refresh] to re-display.",
	handler: function(place,macroName,params) {
		var hide=params[0]=="hide"; if (hide) params.shift();
		var field=params[0];
		var height=params[1]; if (!height) height=15;
		var here=this.findContainingForm(place);
		if (!here) here=story.findContainingTiddler(place);
		if (!here) here=place.parentNode;
		if (!here) here=place;
		var elems=here.getElementsByTagName("textarea");
		if (field) for (var e=0; e<elems.length; e++)  // find matching textarea (by fieldname)
			if (elems[e].getAttribute("edit")==field) var ta=elems[e];
		else
			if (elems.length) var ta=elems[elems.length-1]; // default to last rendered text area
		if (!ta) {
			var elems=here.getElementsByTagName("input");
			if (field) for (var e=0; e<elems.length; e++)  // find matching input field (by fieldname)
				if (elems[e].getAttribute("edit")==field) var ta=elems[e];
			else
				if (elems.length) var ta=elems[elems.length-1]; // default to last rendered input field
		}
		if (!ta) return false; // no textarea or input field found... do nothing...
		var id=(new Date().getTime()).toString()+Math.random(); // unique instance ID
		ta.id=id+"_edit";
		ta.setAttribute("previewid",id+"_preview");
		ta.saved_onkeyup=ta.onkeyup;
		ta.onkeyup=function(ev) {
			if (this.saved_onkeyup) this.saved_onkeyup.apply(this,arguments);
			config.macros.preview.render(this.id,this.getAttribute("previewid"));
		}
		var html=this.html.replace(/%previd%/g,id+"_preview")
		html=html.replace(/%srcid%/g,id+"_edit");
		html=html.replace(/%hide%/g,hide?"none":"block");
		html=html.replace(/%limit%/g,config.options.txtPreviewAutoFreeze);
		html=html.replace(/%frozen%/g,hide?"checked":"");
		html=html.replace(/%height%/g,height);
		html=html.replace(/%halfheight%/g,height/2);
		createTiddlyElement(place,"span").innerHTML=html;
		this.render(id+"_edit",id+"_preview");
	},
	findContainingForm: function(e) {
		while (e && e.nodeName.toLowerCase()!="form") e=e.parentNode;
		return e;
	},
	render: function(srcid,previd,force) {
		var value=document.getElementById(srcid).value;
		var panel=document.getElementById(previd);
		var f=this.findContainingForm(panel);
		if (!f || (f.freeze.checked && !force)) return;
		var p=panel.firstChild; var d=f.domview; var h=f.htmlview; if (!p||!d||!h) return;
		p.innerHTML="";
		f.status.value=this.renderMsg;
		var start=new Date();
		wikify(value.replace(/\r/g,''),p);
		var end=new Date();
		this.renderDOM(previd);
		this.renderHTML(previd);
		f.status.value="elapsed: "+(end-start+1)+"ms";
		// automatically suspend preview updates for slow rendering tiddlers
		if (end-start+1>config.options.txtPreviewAutoFreeze) {
			f.freeze.checked=true;
			f.status.value+=this.timeoutMsg.format([config.options.txtPreviewAutoFreeze]);
		}
		if (f.freeze.checked) f.status.value+=this.freezeMsg;
	},
	renderDOM: function(id) {
		var panel=document.getElementById(id);
		var f=this.findContainingForm(panel); if (!f) return;
		var p=panel.firstChild; var d=f.domview; var h=f.htmlview; if (!p||!d||!h) return;
		var height=p.getAttribute("height");
		p.style.height=((f.dom.checked||f.html.checked)?height/2:height)+"em";
		if (f.dom.checked) d.value=this.getNodeTree(p,"|  ");
		if (!d.style||!h.style) return;
		d.style.height=height/2+"em";
		d.style.display=f.dom.checked?"inline":"none";
		d.style.width=f.html.checked?"49.5%":"100%";
		h.style.width=f.dom.checked?"49.5%":"100%";
	},
	renderHTML: function(id) {
		var panel=document.getElementById(id);
		var f=this.findContainingForm(panel); if (!f) return;
		var p=panel.firstChild; var d=f.domview; var h=f.htmlview; if (!p||!d||!h) return;
		var height=p.getAttribute("height");
		p.style.height=((f.dom.checked||f.html.checked)?height/2:height)+"em";
		if (f.html.checked) h.value=this.formatHTML(p.innerHTML);
		if (!h.style||!d.style) return;
		h.style.height=height/2+"em";
		h.style.display=f.html.checked?"inline":"none";
		h.style.width=f.dom.checked?"49.5%":"100%";
		d.style.width=f.html.checked?"49.5%":"100%";
	},
	formatHTML: function(txt) {
		if (config.browser.isIE) return txt; // BYPASS - 4/24/2006 due to IE hang problem.  Will fix later...
		var out="";
		var indent="";
		var level=0;
		for (var i=0;i<txt.length;i++) {
			var c=txt.substr(i,1);
			if (c=="<") {
					if (txt.substr(i+1,1)=="/")  indent=indent.substr(0,indent.length-2);
				out+="\n"+indent;
				if (txt.substr(i+1,1)!="/" && txt.substr(i+1,3)!="br>" && txt.substr(i+1,2)!="p>" && txt.substr(i+1,3)!="hr>")  indent+="  ";
			}
			out+=c;
				if (c=="\n")
				out+=indent;
			if (c==">" && txt.substr(i+1,1)!="<")
				out+="\n"+indent;
		}
		return out;
	},
	getNodeTree: function(theNode,theIndent,showPath,inline,thePrefix,thePath)
	{
		if (!theNode) return "";
		if (!thePrefix) thePrefix="";
		if (!thePath) thePath="";
		var mquote='"'+(inline?"{{{":"");
		var endmquote=(inline?"}}}":"")+'"';
		// generate output for this node
		var out = thePrefix;
		if (showPath && thePath.length)
				out += (inline?"//":"")+thePath.substr(1)+":"+(inline?"//":"")+"\r\n"+thePrefix;
		if (theNode.className=="DOMViewer")
			return out+'[DOMViewer]\r\n'; // avoid self-referential recursion
		out += (inline?"''":"")+theNode.nodeName.toUpperCase()+(inline?"''":"");
		if (theNode.nodeName=="#text")
			out += ' '+mquote+theNode.nodeValue.replace(/\n/g,'\\n')+endmquote;
		if (theNode.className)
			out += ' class='+mquote+theNode.className+endmquote;
		if (theNode.type)
			out += ' type='+mquote+theNode.type+endmquote;
		if (theNode.id)
			out += ' id='+mquote+theNode.id+endmquote;
		if (theNode.name)
			out += " "+theNode.name+(theNode.value?"="+mquote+theNode.value+endmquote:"");
		if (theNode.href)
			out += ' href='+mquote+theNode.href+endmquote;
		if (theNode.src)
			out += ' src='+mquote+theNode.src+endmquote;
		if (theNode.attributes && theNode.getAttribute("tiddlyLink")!=undefined)
			out += ' tiddler='+mquote+theNode.getAttribute("tiddlyLink")+endmquote;
		out += "\r\n";
		// recursively generate output for child nodes
		thePath=thePath+"."+theNode.nodeName.toLowerCase();
		thePrefix=theIndent+thePrefix;
		for (var i=0;i<theNode.childNodes.length;i++)
		{
			var thisChild=theNode.childNodes.item(i);
			var theNum=(inline?"~~":"(")+(i+1)+(inline?"~~":")");
			out += this.getNodeTree(thisChild,theIndent,showPath,inline,thePrefix,thePath+theNum);
		}
		return out;
	},
	html: " <form style='width:100%'><span id='%previd%' editID='%srcid%' style='display:%hide%'><div class='viewer' \
			height='%height%' style='margin:0;margin-top:.5em;height:%height%em;overflow:auto;white-space:normal'> \
			&nbsp; \
			</div> \
		<!-- DOM and HTML viewers --> \
		<textarea name=domview cols=60 rows=12 wrap=off \
			onfocus='this.select()' style='display:none;width:100%;height:%halfheight%em;'></textarea><!-- \
		--><textarea name=htmlview cols=60 rows=12 wrap=off \
			onfocus='this.select()' style='display:none;width:100%;height:%halfheight%em;'></textarea> \
		<!-- status line, preview option checkboxes, run/refresh buttons --> \
		<table width='100%' style='border:0;padding:0;margin:0'><tr style='border:0;padding:0;margin:0'> \
		<td style='border:0;padding:0;margin:0'><!-- \
			--><input type=text name=status style='padding:0;width:100%;' \
				title='ELAPSED: time (in milliseconds) used to render tiddler content in preview display'><!-- \
		--></td><td style='width:1%;border:0;padding:0;margin:0;'><!-- \
			--><input type=text name=limit size='6' maxlength='6' style='padding:0;width:5em;text-align:center' \
				value='%limit%ms' title='TIME LIMIT: maximum rendering time (in milliseconds) before auto-freezing preview' \
				onfocus='this.select()' \
				onchange='var val=this.value.replace(/[^0-9]/g,\"\"); if (!val.length) val=this.defaultValue; \
					this.value=val+\"ms\"; config.options.txtPreviewAutoFreeze=val; saveOptionCookie(\"txtPreviewAutoFreeze\"); \
					this.form.freeze.checked=false; config.macros.preview.render(\"%srcid%\",\"%previd%\",true);'><!-- \
		--></td><td style='width:1%;border:0;padding:0;margin:0;'><!-- \
			--><input type=text name=height size='4' maxlength='4' style='padding:0;width:4em;text-align:center' \
				value='%height%em' title='HEIGHT: size (in \"ems\") of preview area, including controls' \
				onfocus='this.select()' \
				onchange='var val=this.value.replace(/[^0-9]/g,\"\");  if (!val.length) val=this.defaultValue; \
					this.value=val+\"em\"; document.getElementById(\"%previd%\").firstChild.setAttribute(\"height\",val); \
					config.macros.preview.render(\"%srcid%\",\"%previd%\",true)'><!-- \
		--></td><td style='width:1%;border:0;padding:0;margin:0;text-align:right;white-space:nowrap'> \
			<input type=checkbox name=dom style='display:inline;width:auto;margin:1px;' \
				title='show Document Object Model (DOM) information' \
				onclick='config.macros.preview.renderDOM(\"%previd%\");'>DOM \
			<input type=checkbox name=html style='display:inline;width:auto;margin:1px;' \
				title='show rendered HTML' \
				onclick='config.macros.preview.renderHTML(\"%previd%\");'>HTML \
			<input type=checkbox name=freeze style='display:inline;width:auto;margin:1px;' %frozen% \
				title='do not update preview display as changes are made' \
				onclick='var p=document.getElementById(\"%previd%\");  \
					if (this.checked) this.form.status.value+=config.macros.preview.freezeMsg; \
					else config.macros.preview.render(\"%srcid%\",\"%previd%\",true);'>freeze \
			<input type=button style='display:inline;width:auto;' value='refresh' \
				title='update preview display' \
				onclick='config.macros.preview.render(\"%srcid%\",\"%previd%\",true)'> \
		</td></tr></table> \
		</span></form>"
}
//}}}

// // toolbar definition
//{{{
config.commands.previewTiddler = {
	text: 'preview',
	tooltip: 'show key-by-key preview',
	text_alt: '\u221Apreview',
	handler: function(event,src,title) {
		var here=story.findContainingTiddler(src); if (!here) return;
		var elems=here.getElementsByTagName("span");
		for (var e=0; e<elems.length; e++) {
			if (elems[e].getAttribute("editid")) {
				var show=elems[e].style.display=="none";
				src.innerHTML=show?this.text_alt:this.text;
				elems[e].style.display=show?"block":"none";
				config.macros.preview.findContainingForm(elems[e]).freeze.checked=!show;
				if (show) config.macros.preview.render(elems[e].getAttribute("editid"),elems[e].id);
			}
		}
		return false;
	}
};
//}}}
/***
|Name|PreviewPluginInfo|
|Source|http://www.TiddlyTools.com/#PreviewPlugin|
|Documentation|http://www.TiddlyTools.com/#PreviewPluginInfo|
|Version|1.8.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|documentation for PreviewPlugin|
Provides key-by-key ''LIVE PREVIEW'' of //formatted// tiddler content as you type input into a textarea (multi-line) edit field.
!!!!!Usage
<<<
Syntax: (in tiddler content)
{{{
<<preview hide fieldname height>>
}}}
//OR// (in [[EditTemplate]])
{{{
<span macro='preview hide fieldname height'></span>
}}}
where:
* 'hide' (optional)<br>is a keyword that causes the preview display to be initially hidden when created.  This is typically used in an [[EditTemplate]] definition, in conjunction with the 'previewTiddler' toolbar syntax (see below).
* fieldname (optional)<br>specifies the name of the tiddler field that is being previewed.  It corresponds to the fieldname specified in the {{{<span class='editor' macro='edit fieldname height'></span>}}} syntax used to define the textarea edit field, and is used to locate and access the source content that is to be previewed.  When omitted, the previewer will automatically associate itself with the last textarea control that precedes it in the rendered tiddler editor display.
* height (optional)<br>defines the total height of the previewer display (including the status line and controls), using CSS "em" (line height) measurements.  The default height value is "15em" (i.e., approximately 15 lines of standard-sized text)

In addition to the preview macro itself, you can place the following in your [[EditTemplate]] to add a tiddler toolbar command that enables you to toggle the preview display once it has been created:
{{{
<span class='toolbar' macro='toolbar previewTiddler'></span>
}}}
when clicked, this command will show/hide ALL preview controls that are displayed in the current tiddler.  Note that, when desired, you can also embed this toolbar command directly into a tiddler by entering the "{{{<<toolbar previewTiddler>>}}}" syntax in the tiddler source.
<<<
!!!!!Examples
<<<
in [[EditTemplate]]:
{{{
<div class='editor' macro='edit foobar 5'></div>
<div class='editor' macro='preview hide foobar 10'></div>
}}}
OR, embedded in tiddler content:
{{{
<<edit foobar 5>><<preview foobar 10>>
}}}
{{smallform{
<<edit foobar 5>><<preview foobar 10>>}}}
By default, the preview display is automatically rendered each time a key is typed into the tiddler content edit field.  As soon as changes are entered, they will be instantly visible within the preview display.  Unfortunately, the partial tiddler source definitions that occur //during// editing may somtimes cause rendering problems, and some exceptionally complex tiddlers make take an unusually long amount of time to completely render their content.   In such cases, key-by-key display updates are undesirable or impractical.

You can select the ''freeze'' checkbox to suspend automatic key-by-key preview display updates.  The preview display will not be re-rendered again until you press the ''refresh'' button or clear the 'freeze' checkbox.  The preview display will also automatically freeze whenever the //rendering time// exceeds a pre-determined time limit (see configuration section), specified in milliseconds.  Note: the ''actual elapsed time'' used to process and render any given content is reported in the preview "status bar" whenever that content is previewed.

In addition to a 'wikified' preview, the previewer display can show a ''DOM viewer'' and/or an ''HTML viewer'' that are also updated with each keystroke.  These text-based displays can be helpful while attempting to correct or enhance the formatting of tiddler content, especially when complex combinations of wiki-syntax produce unexpected or undesired results.
<<<
<<newDocument nofile print here>><<renameButton print>> 
!!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]].
/***
|Name|QuickEditPlugin|
|Source|http://www.TiddlyTools.com/#QuickEditPlugin|
|Documentation|http://www.TiddlyTools.com/#QuickEditPlugin|
|Version|2.4.3|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Support functions for ~QuickEdit package: styles, utility functions, and 'toggleQuickEdit' command|
!!!!!Revisions
<<<
2009.06.11 [2.4.3] added keyup() function to abbreviate listbox handling for CR and ESC
2009.05.07 [2.4.2] added processed() function to abbreviate event handler code
2008.09.07 [2.4.1] added removeCookie() function for compatibility with [[CookieManagerPlugin]]
2008.05.17 [2.4.0] copied code from StickyPopupPlugin to remove dependency
2008.05.12 [2.3.0] added "toggleQuickEdit" command handler (replaces inline script command)
2008.01.11 [2.2.0] converted from inline script
2007.03.29 [1.0.0] initial release (as inline script)
<<<
!!!!!Code
***/
//{{{
version.extensions.QuickEditPlugin= {major: 2, minor: 4, revision: 3, date: new Date(2009,6,11)};

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

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

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

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

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

// // COPIED FROM [[StickyPopupPlugin]] TO ELIMINATE PLUGIN DEPENDENCY
//{{{
if (config.options.chkStickyPopups==undefined) config.options.chkStickyPopups=false;
Popup.stickyPopup_onDocumentClick = function(ev)
{
	// if click is in a sticky popup, ignore it so popup will remain visible
	var e = ev ? ev : window.event; var target = resolveTarget(e);
	var p=target; while (p) {
		if (hasClass(p,"popup") && (hasClass(p,"sticky")||config.options.chkStickyPopups)) break;
		else p=p.parentNode;
	}
	if (!p) // not in sticky popup (or sticky popups disabled)... use normal click handling
		Popup.onDocumentClick(ev);
	return true;
};
try{removeEvent(document,"click",Popup.onDocumentClick);}catch(e){};
try{addEvent(document,"click",Popup.stickyPopup_onDocumentClick);}catch(e){};
//}}}
/***
| 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();

//}}}
{{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.feedblitz.com/f/f.fbz?HTML=552578}}}
<html><iframe
	src = "http://www.feedblitz.com/f/f.fbz?HTML=552578"
	title = "RSS Feed for UNEP News"
	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.feedblitz.com/f/f.fbz?HTML=541988}}}
<html><iframe
	src = "http://www.feedblitz.com/f/f.fbz?HTML=541988"
	title = "RSS Feed for UNFCCC :atest Headlines"
	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 [[Feedblitz]] 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.feedblitz.com/f/f.fbz?HTML=259899}}}
<html><iframe
	src = "http://www.feedblitz.com/f/f.fbz?HTML=259899"
	title = "RSS Feed for an Information Ecologist's Bookmarks"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
''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>>
!!!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.
/***
|Name|RearrangeTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#RearrangeTiddlersPlugin|
|Version|2.0.0|
|Author|Eric Shulman|
|OriginalAuthor|Joe Raii|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.refreshTiddler|
|Description|drag tiddlers by title to re-order story column display|

adapted from: http://www.cs.utexas.edu/~joeraii/dragn/#Draggable
changes by ELS:
* hijack refreshTiddler() instead of overridding createTiddler()
* find title element by className instead of elementID
* set cursor style via code instead of stylesheet
* set tooltip help text
* set tiddler "position:relative" when starting drag event, restore saved value when drag ends
* update 2006.08.07: use getElementsByTagName("*") to find title element, even when it is 'buried' deep in tiddler DOM elements (due to custom template usage)
* update 2007.03.01: use apply() to invoke hijacked core function
* update 2008.01.13: only hijack core function once.  (allows for dynamic loading of plugin via bookmarklet)
* update 2008.10.19: added onclick popup menu with 'move to top' and 'move to bottom' commands

***/
//{{{

if (Story.prototype.rearrangeTiddlersHijack_refreshTiddler===undefined) {
Story.prototype.rearrangeTiddlersHijack_refreshTiddler = Story.prototype.refreshTiddler;
Story.prototype.refreshTiddler = function(title,template)
{
	this.rearrangeTiddlersHijack_refreshTiddler.apply(this,arguments);
	var theTiddler = document.getElementById(this.idPrefix + title); if (!theTiddler) return;
	var theHandle;
	var children=theTiddler.getElementsByTagName("*");
	for (var i=0; i<children.length; i++) if (hasClass(children[i],"title")) { theHandle=children[i]; break; }
	if (!theHandle) return theTiddler;

	Drag.init(theHandle, theTiddler, 0, 0, null, null);
	theHandle.style.cursor="move";
	theHandle.title="drag title to re-arrange tiddlers, click for more options..."
	theTiddler.onDrag = function(x,y,myElem) {
		if (this.style.position!="relative")
			{ this.savedstyle=this.style.position; this.style.position="relative"; }
		y = myElem.offsetTop;
		var next = myElem.nextSibling;
		var prev = myElem.previousSibling;
		if (next && y + myElem.offsetHeight > next.offsetTop + next.offsetHeight/2) { 
			myElem.parentNode.removeChild(myElem);
			next.parentNode.insertBefore(myElem, next.nextSibling);//elems[pos+1]);
			myElem.style["top"] = -next.offsetHeight/2+"px";
		}
		if (prev && y < prev.offsetTop + prev.offsetHeight/2) { 
			myElem.parentNode.removeChild(myElem);
			prev.parentNode.insertBefore(myElem, prev);
			myElem.style["top"] = prev.offsetHeight/2+"px";
		}
	};
	theTiddler.onDragEnd = function(x,y,myElem) {
		myElem.style["top"] = "0px";
		if (this.savedstyle!=undefined)
			this.style.position=this.savedstyle;
	};
	theHandle.onclick=function(ev) {
		ev=ev||window.event;
		var p=Popup.create(this); if (!p) return;
		var b=createTiddlyButton(createTiddlyElement(p,"li"),
			"\u25B2 move to top of column ","move this tiddler to the top of the story column",
			function() {
				var t=story.getTiddler(this.getAttribute("tid"));
				t.parentNode.insertBefore(t,t.parentNode.firstChild); // move to top of column
				window.scrollTo(0,ensureVisible(t));
				return false;
			});
		b.setAttribute("tid",title);
		var b=createTiddlyButton(createTiddlyElement(p,"li"),
			"\u25BC move to bottom of column ","move this tiddler to the bottom of the story column",
			function() {
				var t=story.getTiddler(this.getAttribute("tid"));
				t.parentNode.insertBefore(t,null); // move to bottom of column
				window.scrollTo(0,ensureVisible(t));
				return false;
			});
		b.setAttribute("tid",title);
		Popup.show(p,false);
		ev.cancelBubble=true; if (ev.stopPropagation) ev.stopPropagation(); return(false);
	};
	return theTiddler;
}
}

/**************************************************
 * dom-drag.js
 * 09.25.2001
 * www.youngpup.net
 **************************************************
 * 10.28.2001 - fixed minor bug where events
 * sometimes fired off the handle, not the root.
 **************************************************/

var Drag = {
	obj:null,

	init:
	function(o, oRoot, minX, maxX, minY, maxY) {
		o.onmousedown = Drag.start;
		o.root = oRoot && oRoot != null ? oRoot : o ;
		if (isNaN(parseInt(o.root.style.left))) o.root.style.left="0px";
		if (isNaN(parseInt(o.root.style.top))) o.root.style.top="0px";
		o.minX = typeof minX != 'undefined' ? minX : null;
		o.minY = typeof minY != 'undefined' ? minY : null;
		o.maxX = typeof maxX != 'undefined' ? maxX : null;
		o.maxY = typeof maxY != 'undefined' ? maxY : null;
		o.root.onDragStart = new Function();
		o.root.onDragEnd = new Function();
		o.root.onDrag = new Function();
	},

	start:
	function(e) {
		var o = Drag.obj = this;
		e = Drag.fixE(e);
		var y = parseInt(o.root.style.top);
		var x = parseInt(o.root.style.left);
		o.root.onDragStart(x, y, Drag.obj.root);
		o.lastMouseX = e.clientX;
		o.lastMouseY = e.clientY;
		if (o.minX != null) o.minMouseX = e.clientX - x + o.minX;
		if (o.maxX != null) o.maxMouseX = o.minMouseX + o.maxX - o.minX;
		if (o.minY != null) o.minMouseY = e.clientY - y + o.minY;
		if (o.maxY != null) o.maxMouseY = o.minMouseY + o.maxY - o.minY;
		document.onmousemove = Drag.drag;
		document.onmouseup = Drag.end;
		Drag.obj.root.style["z-index"] = "10";
		return false;
	},

	drag:
	function(e) {
		e = Drag.fixE(e);
		var o = Drag.obj;
		var ey = e.clientY;
		var ex = e.clientX;
		var y = parseInt(o.root.style.top);
		var x = parseInt(o.root.style.left);
		var nx, ny;
		if (o.minX != null) ex = Math.max(ex, o.minMouseX);
		if (o.maxX != null) ex = Math.min(ex, o.maxMouseX);
		if (o.minY != null) ey = Math.max(ey, o.minMouseY);
		if (o.maxY != null) ey = Math.min(ey, o.maxMouseY);
		nx = x + (ex - o.lastMouseX);
		ny = y + (ey - o.lastMouseY);
		Drag.obj.root.style["left"] = nx + "px";
		Drag.obj.root.style["top"] = ny + "px";
		Drag.obj.lastMouseX = ex;
		Drag.obj.lastMouseY = ey;
		Drag.obj.root.onDrag(nx, ny, Drag.obj.root);
		return false;
	},

	end:
	function() {
		document.onmousemove = null;
		document.onmouseup = null;
		Drag.obj.root.style["z-index"] = "0";
		Drag.obj.root.onDragEnd(parseInt(Drag.obj.root.style["left"]), parseInt(Drag.obj.root.style["top"]), Drag.obj.root);
		Drag.obj = null;
	},

	fixE:
	function(e) {
		if (typeof e == 'undefined') e = window.event;
		if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;
		if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;
		return e;
	}
};
//}}}
The following recently created or updated tiddler uses the syntax {{{<<timeline better:true firstDay:20090301>>}}} to display tiddlers that have been edited since March 20, 2009 - 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 [[Climate Change 3.0]]. If you would like to look at a complete listing of tiddlers on this site, visit [[Basic Tiddler Lists]].

<<timeline better:true firstDay:20090301>>
<html>
<iframe width=500 height=200 frameborder=0 
src="http://www.feedblitz.com/f/?newswidget=520515&html=1">
</iframe>
</html>
<html>
<iframe width=100% height=200 frameborder=0 
src="http://www.feedblitz.com/f/?newswidget=259899&html=1">
</iframe>
</html>
<html>
<iframe width=100% height=180 frameborder=0 
src="http://www.feedblitz.com/f/?newswidget=260536&html=1">
</iframe>
</html>
<html>
<iframe width=100% height=200 frameborder=0 
src="http://www.feedblitz.com/f/?newswidget=261106&html=1">
</iframe>
</html>
/***
|Name|RecentChangesPlugin|
|Source|http://www.TiddlyTools.com/#RecentChangesPlugin|
|Version|2.2.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|display droplist of recently changed tiddlers with goto, edit, and preview buttons|
!!!!!Usage
<<<
The {{{<<recentChanges>>}}} macro displays a droplist of all tiddlers that have been changed within the last N days (default=10 days).  
{{{
<<recentChanges>>
<<recentChanges #ofdays summary noEdit previewheight previewclass>>
}}}
where:
* #ofdays specifies the time limit for listing changed tiddlers.  Use 0 (zero) to list all tiddlers in the document.
* ''summary'' is an optional keyword that outputs only the summary text (without the droplist or buttons)
* ''noEdit'' is an optional keyword that hides the 'edit' button
* previewheight is a CSS height measurement and sets the FIXED height of the tiddler preview area (default is 15em)
* previewclass is any CSS classname, and can be used to apply custom styles to the preview area (default is to use the standard 'viewer' class)
<<<
!!!!!Examples
<<<
{{smallform{
{{{<<recentChanges>>}}}
<<recentChanges>>
{{{<<recentChanges 30 summary>>}}}
<<recentChanges 30 summary>>

{{{<<recentChanges 30 noedit 10em groupbox>>}}}
<<recentChanges 30 noedit 10em groupbox>>
}}}
<<<
!!!!!Revisions
<<<
2009.07.02 [2.2.0] added optional 'noedit' keyword to hide 'edit' button
2008.07.01 [2.1.0] added optional 'summary' keyword for simple text output
2008.05.01 [2.0.1] fixup for titles with double-quotes
2007.07.26 [2.0.0] re-written as plugin
2006.10.02 [1.0.0] initial release (as inline script ShowRecentChanges)
<<<
!!!!!Code
***/
//{{{
version.extensions.RecentChangesPlugin= {major: 2, minor: 2, revision: 0, date: new Date(2009,7,2)};

config.shadowTiddlers.RecentChanges='<recentChanges>>';

config.macros.recentChanges = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var days=10; if (!isNaN(params[0])) days=parseInt(params[0]); // time limit in days (use 0 for all tiddlers)
		var summary=params[1]&&params[1].toLowerCase()=='summary'; if (summary) params.shift();
		var noedit=params[1]&&params[1].toLowerCase()=='noedit'; if (noedit) params.shift();
		var height='15em'; if (params[1]) height=params[1]; // preview area fixed height
		var previewclass='viewer'; if (params[2]) previewclass=params[2]; // preview area CSS class
		var tiddlers=store.getTiddlers('modified','excludeLists').reverse();
		var count=tiddlers.length;
		if (days) {
			var timelimit=(new Date()).getTime()-86400000*days;
			for (var count=0; count<tiddlers.length && tiddlers[count].modified>timelimit; count++);
		}
		var s=count+' tiddlers have changed since ';
		s+=new Date(timelimit).formatString('DDD, MMM DDth YYYY 0hh:0mm');
		s+=' ('+days+' days ago)';
		if (summary)
			{ wikify(s,place); return; }
		var opts='<option value="">'+s+'</option>';
		for (var i=0; i<count; i++) { var t=tiddlers[i];
			opts+='<option value="'+t.title.replace(/"/g,"&#x22;")+'">';
			opts+=t.modified.formatString('YYYY.0MM.0DD 0hh:0mm')+' - '+t.title;
			opts+='</option>';
		}
		var h=store.getTiddlerText('RecentChangesPlugin##html')
		h=h.replace(/%options%/,opts);
		h=h.replace(/%listwidth%/,noedit?79.5:69.5);
		h=h.replace(/%noedit%/,noedit?'none':'inline');
		createTiddlyElement(place,'div').innerHTML=h;
		var preview=createTiddlyElement(place,'div',null,previewclass);
		preview.style.display='none';
		preview.style.whiteSpace='normal';
		preview.style.overflow='auto';
		preview.style.height=height;
	}
}
//}}}
/***
//{{{
!html
<form><select size=1 name="list" style="width:%listwidth%%"
	onchange="this.form.goto.disabled=this.form.edit.disabled=this.form.preview.disabled=!this.value.length;
		var target=this.parentNode.parentNode.nextSibling; removeChildren(target);
		if (!this.value.length)
			{ target.style.display='none'; this.form.preview.value='preview'; }
		else if (target.style.display=='block') {
			wikify('<'+'<tiddler [['+this.value+']]>'+'>',target);
			target.style.display='block';
			this.form.preview.value='done';
		}
">%options%</select><!--
--><input type="button" name="goto" value="goto" disabled title="view selected tiddler" style="width:10%"
	onclick="var target=this.parentNode.parentNode.nextSibling; removeChildren(target);
		target.style.display='none'; this.form.preview.value='preview';
		story.displayTiddler(story.findContainingTiddler(this),this.form.list.value);
"><input type="button" name="edit" value="edit" disabled title="edit selected tiddler" style="width:10%;display:%noedit%"
	onclick="var target=this.parentNode.parentNode.nextSibling; removeChildren(target);
		target.style.display='none'; this.form.preview.value='preview';
		story.displayTiddler(story.findContainingTiddler(this),this.form.list.value,DEFAULT_EDIT_TEMPLATE);
"><input type="button" name="preview" value="preview" disabled title="show/hide tiddler preview" style="width:10%"
	onclick="var target=this.parentNode.parentNode.nextSibling;
		if (this.value=='preview') {
			removeChildren(target);
			wikify('<'+'<tiddler [['+this.form.list.value+']]>'+'>',target);
			target.style.display=this.form.list.value.length?'block':'none'; this.value='done';
		} else {
			removeChildren(target);
			target.style.display='none'; this.value='preview';
		}
"></form>
!end
//}}}
***/
 
!!![[Role, Objectives and Guiding Principles of Environmental Education|Tbilisi Recommendations: Role, Objectives and Guiding Principles of Environmental Education]]
!!![[Strategies for the Development of Environmental Education at the National Level|Tbilisi Recommendations: Strategies for the Development of Environmental Education at the National Level]]
* [[Organizational structure|Tbilisi Recommendations: Organizational structure]]
* [[Target populations for environmental education|Tbilisi Recommendations: Target populations for environmental education]]
* [[Environmental education for the general public|Tbilisi Recommendations: Environmental education for the general public]]
* [[Environmental education of professionals|Tbilisi Recommendations: Environmental education of professionals]]
* [[Content and methods|Tbilisi Recommendations: Content and methods]]
* [[Training of personnel|Tbilisi Recommendations: Training of personnel]]
* [[Teaching - learning materials|Tbilisi Recommendations: Teaching - learning materials]]
* [[Dissemination of information|Tbilisi Recommendations: Dissemination of information]]
* [[Research|Tbilisi Recommendations: Research]]
!!![[International and regional co-operation|Tbilisi Recommendations: International and regional co-operation]]
* [[General Recommendations|Tbilisi Recommendations: General Recommendations]]
* [[Recommendations on regional co-operation|Tbilisi Recommendations: Recommendations on regional co-operation]]
/***
***/

//{{{

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. 
{{iframe{''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ac167-9.htm}}}
<html><iframe
title="Report of the Global Conference on the Sustainable Development of Small Island Developing States"
src="http://www.un-documents.net/ac167-9.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/wced-ocf.htm}}}
<html><iframe
title="Report of the World Commission on Environment and Development: Our Common Future"
src="http://www.un-documents.net/wced-ocf.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
''Rescuing a Planet Under Stress and a Civilization in Trouble: Plan B 2.1'' //(beta)//  is a TiddlyWikiPerfect "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.climatechange3.net/plan-b/
|<html><embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="800" height="533" flashvars="host=picasaweb.google.com&noautoplay=1&hl=en_GB&feat=flashalbum&RGB=0x000000&feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fecology2001%2Falbumid%2F5386583242439343297%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_GB" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed> </html>|A set of forty-eight manifestations of the underlying rhythms reflecting endless back-and-forth cycles of red-green-blue and cyan-magenta-yellow in the red, green, blue colour universe <br><br>48 images. |
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]]
{{iframe{''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/rio-dec.htm}}}
<html><iframe
title="Rio Declaration on Environment and Development"
src="http://www.un-documents.net/rio-dec.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
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'.
/***
|Name|SaveAsPlugin|
|Source|http://www.TiddlyTools.com/#SaveAsPlugin|
|Documentation|http://www.TiddlyTools.com/#SaveAsPluginInfo|
|Version|2.4.3|
|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|Save current document to a different path/filename|
This plugin automatically adds a 'save as' command to the TiddlyWiki 'backstage' menu that allows you to quickly create an exact copy of the current TiddlyWiki document.  The plugin also defines a macro that you can use to place a "save as..." command link into your sidebar/mainmenu/any tiddler (or wherever you like).
>//Note: This plugin now supersedes [[NewDocumentPlugin]], which has been retired and is no longer being distributed.  In addition, the HTML+CSS "snapshot" functionality previous provided by that plugin has been moved to a separate plugin.  Please see [[SnapshotPlugin]] for additional information.//
!!!!!Documentation
<<<
see [[SaveAsPluginInfo]]
<<<
!!!!!Revisions
<<<
2008.09.29 [2.4.3] in getData(), convert existing TW file from UTF8 to Unicode before merging to correct handling of international characters and symbols.
| Please see [[SaveAsPluginInfo]] for additional revision details |
2006.02.03 [1.0.0] Created.
<<<
!!!!!Code
***/
//{{{
version.extensions.SaveAsPlugin= {major: 2, minor: 4, revision: 2, date: new Date(2008,9,28)};

config.macros.saveAs = {
	label: "save as...",
	labelparam: "label:",
	prompt: "Save current document to a different path/file",
	promptparam: "prompt:",
	filePrompt: "Please select or enter a target path/filename",
	targetparam: "target:",
	defaultFilename: "new.html",
	filenameparam: "filename:",
	currfilekeyword: "here",
	typeparam: "type:",
	type_TW: "tw", type_PS: "ps", type_TX: "tx", type_NF: "nf", // file type tokens
	type_map: { // map filetype param alternatives/abbreviations to token values
		tiddlywiki:"tw", tw:"tw", wiki: "tw",
		purestore: "ps", ps:"ps", store:"ps",
		plaintext: "tx", tx:"tx", text: "tx",
		newsfeed:  "nf", nf:"nf", xml:  "nf", rss:"nf"
	},
	replaceparam: "replace",
	mergeparam: "merge",
	quietparam: "quiet",
	openparam: "open",
	askParam: "ask",
	askMsg: "Enter a tag filter (use * for all tiddlers, 'none' for blank document)",
	emptyParam: "none",
	confirmmsg: "Found %0 tiddlers matching\n\n'%1'\n\nPress OK to proceed",
	mergeprompt: "%0\nalready contains tiddler definitions.\n"
		+"\nPress OK to add new/revised tiddlers to current file contents."
		+"\nPress Cancel to completely replace file contents",
	mergestatus: "Merged %0 new/revised tiddlers and %1 existing tiddlers",
	okmsg: "%0 tiddlers written to %1",
	failmsg: "An error occurred while creating %1",
	filter: "",
	handler: function(place,macroName,params) {
		if (params[0] && params[0].substr(0,this.labelparam.length)==this.labelparam)
			var label=params.shift().substr(this.labelparam.length);
		if (params[0] && params[0].substr(0,this.promptparam.length)==this.promptparam)
			var prompt=params.shift().substr(this.promptparam.length);
		if (params[0] && params[0].substr(0,this.targetparam.length)==this.targetparam)
			var target=params.shift().substr(this.targetparam.length);
		if (params[0] && params[0].substr(0,this.filenameparam.length)==this.filenameparam)
			var filename=params.shift().substr(this.filenameparam.length);
		if (params[0] && params[0].substr(0,this.typeparam.length)==this.typeparam)
			var filetype=this.type_map[params.shift().substr(this.typeparam.length).toLowerCase()];
		var q=(params[0] && params[0]==this.quietparam);   if (q) params.shift();
		var o=(params[0] && params[0]==this.replaceparam); if (o) params.shift();
		var m=(params[0] && params[0]==this.mergeparam);   if (m) params.shift();
		var a=(params[0] && params[0]==this.openparam);    if (a) params.shift();
		var btn=createTiddlyButton(place,label||this.label,prompt||this.prompt,
			function(){config.macros.saveAs.go(
				this.getAttribute('target'),
				this.getAttribute('filename'),
				this.getAttribute('filetype'),
				this.getAttribute('filter'),
				this.getAttribute('quiet')=="true",
				this.getAttribute('overwrite')=="true",
				this.getAttribute('merge')=="true",
				this.getAttribute('autoopen')=="true");  return false;}
		);
		if (target) btn.setAttribute("target",target);
		if (filename) btn.setAttribute("filename",filename);
		btn.setAttribute("filetype",filetype||this.type_TW);
		btn.setAttribute("filter",params.join(" "));
		btn.setAttribute("quiet",q?"true":"false");
		btn.setAttribute("overwrite",o?"true":"false");
		btn.setAttribute("merge",m?"true":"false");
		btn.setAttribute("autoopen",a?"true":"false");
	},
	go: function(target,filename,filetype,filter,quiet,overwrite,merge,autoopen) {
		var cm=config.messages; // abbreviation
		var cms=config.macros.saveAs; // abbreviation
		if (window.location.protocol!="file:") // make sure we are local
			{ displayMessage(cm.notFileUrlError); return; }

		// get tidders, confirm filtered results
		var tids=cms.selectTiddlers(filter);
		if (tids===false) return; // cancelled by user
		if (cms.filter!=cms.emptyParam && cms.filter.length && !quiet)
			if (!confirm(cms.confirmmsg.format([tids.length,cms.filter]))) return;

		// get target path/filename
		if (!filetype) filetype=this.type_TW;
		target=target||cms.getTarget(filename,filetype==this.type_TX?'txt':'html');
		if (!target) return; // cancelled by user

		var link="file:///"+target.replace(/\\/g,'/');
		var samefile=link==decodeURIComponent(window.location.href);
		var p=getLocalPath(document.location.href);
		if (samefile) {
			if (config.options.chkSaveBackups) { var t=loadOriginal(p);if(t)saveBackup(p,t); }
			if (config.options.chkGenerateAnRssFeed && saveRss instanceof Function) saveRss(p);
		}
		var notes="";
		var total={val:0};
		var out=this.assembleFile(target,filetype,tids,notes,quiet,overwrite,merge,total);
		var ok=saveFile(target,out);
		if (ok && autoopen) {
			if (!samefile) window.open(link).focus();
			else { store.setDirty(false); window.location.reload(); }
		}
		if (!quiet || !(ok && autoopen))
			displayMessage((ok?this.okmsg:this.failmsg).format([total.val,target]),link);
	},
	selectTiddlers: function(filter) {
		var cms=config.macros.saveAs; // abbreviation
		cms.filter=filter||"";
		if (filter==cms.emptyParam) return [];
		if (!filter||!filter.length) return store.getTiddlers("title");
		// get filtered tiddlers
		if (filter==config.macros.saveAs.askParam) {
			filter=prompt(config.macros.saveAs.askMsg,"");
			if (!filter) return false;  // cancelled by user
			cms.filter=filter=="*"?"":filter;
			if (filter=="*") return store.getTiddlers("title");
		}
		return store.filterTiddlers("[tag["+filter+"]]");
	},
	getTarget: function(defName,defExt) {
		var cms=config.macros.saveAs; // abbreviation
		// get new target path/filename
		var newPath=getLocalPath(window.location.href);
		var slashpos=newPath.lastIndexOf("/"); if (slashpos==-1) slashpos=newPath.lastIndexOf("\\"); 
		if (slashpos!=-1) newPath=newPath.substr(0,slashpos+1); // trim filename
		if (!defName||!defName.length) { // use current filename as default
			var p=getLocalPath(window.location.href);
			var s=p.lastIndexOf("/"); if (s==-1) s=p.lastIndexOf("\\"); 
			if (s!=-1) defName=p.substr(s+1);
		}
		var defFilename=(defName||cms.defaultFilename).replace(/.html$/,'.'+defExt);
		var target=cms.askForFilename(cms.filePrompt,newPath,defFilename,defExt);
		if (!target) return; // cancelled by user
		// if specified file does not include a path, assemble fully qualified path and filename
		var slashpos=target.lastIndexOf("/"); if (slashpos==-1) slashpos=target.lastIndexOf("\\");
		if (slashpos==-1) target=target+(defName||cms.defaultFilename).replace(/.html$/,'.'+defExt);
		return target;
	},
	askForFilename: function(msg,path,file,defExt) {
		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=defExt||'html';
				picker.defaultString=file;
				picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
				if (picker.show()!=nsIFilePicker.returnCancel) var result=picker.file.persistentDescriptor;
			}
			catch(e) { alert('error during local file access: '+e.toString()) }
		}
		else { // IE
			try { // XP/Vista only
				var s = new ActiveXObject('UserAccounts.CommonDialog');
				s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
				s.FilterIndex=(defExt=='txt')?2: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;
	},
	plainTextHeader:
		 '// Source'+':\n//\t%0\n'
		+'// Title:\n//\t%1\n'
		+'// Subtitle:\n//\t%2\n'
		+'// Created:\n//\t%3 by %4\n'
		+'// Application:\n//\tTiddlyWiki %5 / %6 %7\n',
	plainTextTiddler:
		'\n// ----- %0 (by %1 on %2) -----\n\n%3',
	plainTextFooter:
		'',
	newsFeedHeader:
		 '<'+'?xml version="1.0"?'+'>\n'
		+'<rss version="2.0">\n'
		+'<channel>\n'
		+'<title>%1</title>\n'
		+'<link>%0</link>\n'
		+'<description>%2</description>\n'
		+'<language>en-us</language>\n'
		+'<copyright>Copyright '+(new Date().getFullYear())+' %4</copyright>\n'
		+'<pubDate>%3</pubDate>\n'
		+'<lastBuildDate>%3</lastBuildDate>\n'
		+'<docs>http://blogs.law.harvard.edu/tech/rss</docs>\n'
		+'<generator>TiddlyWiki %5 / %6 %7</generator>\n',
	newsFeedTiddler:
		'\n%0\n',
	newsFeedFooter:
		'</channel></rss>',
	pureStoreHeader:
		 '<html><body>'
		+'<style type="text/css">'
		+'	#storeArea {display:block;margin:1em;}'
		+'	#storeArea div {padding:0.5em;margin:1em;border:2px solid black;height:10em;overflow:auto;}'
		+'	#pureStoreHeading {width:100%;text-align:left;background-color:#eeeeee;padding:1em;}'
		+'</style>'
		+'<div id="pureStoreHeading">'
		+'	TiddlyWiki "PureStore" export file<br>'
		+'	Source'+': <b>%0</b><br>'
		+'	Title: <b>%1</b><br>'
		+'	Subtitle: <b>%2</b><br>'
		+'	Created: <b>%3</b> by <b>%4</b><br>'
		+'	TiddlyWiki %5 / %6 %7<br>'
		+'	Notes:<hr><pre>%8</pre>'
		+'</div>'
		+'<div id="storeArea">',
	pureStoreTiddler:
		'%0\n%1',
	pureStoreFooter:
		'</div><!--POST-BODY-START-->\n<!--POST-BODY-END--></body></html>',
	assembleFile: function(target,filetype,tids,notes,quiet,overwrite,merge,total) {
		var revised="";
		var now = new Date().toLocaleString();
		var src=convertUnicodeToUTF8(document.location.href);
		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 v=version.extensions.SaveAsPlugin; var pver = v.major+"."+v.minor+"."+v.revision;
		var headerargs=[src,title,subtitle,now,user,twver,"SaveAsPlugin",pver,notes];
		switch (filetype) {
			case this.type_TX: // plain text
				var header=this.plainTextHeader.format(headerargs);
				var footer=this.plainTextFooter;
				break;
			case this.type_NF: // news feed (XML)
				headerargs[0]=store.getTiddlerText("SiteUrl","");
				var header=this.newsFeedHeader.format(headerargs);
				var footer=this.newsFeedFooter;
				break;
			case this.type_PS: // PureStore (no code)
				var header=this.pureStoreHeader.format(headerargs);
				var footer=this.pureStoreFooter;
				break;
			case this.type_TW: // full TiddlyWiki
			default:
				var currPath=getLocalPath(window.location.href);
				var original=loadFile(currPath);
				if (!original) { alert(config.messages.cantSaveError); return; }
				var posDiv = locateStoreArea(original);
				if (!posDiv) { alert(config.messages.invalidFileError.format([currPath])); return; }
				var header = original.substr(0,posDiv[0]+startSaveArea.length)+"\n";
				var footer = "\n"+original.substr(posDiv[1]);
				break;
		}
		var out=this.getData(target,filetype,tids,quiet,overwrite,merge);
		var revised = header+convertUnicodeToUTF8(out.join("\n"))+footer;
		// if full TW, insert page title and language attr, and reset MARKUP blocks as needed...
		if (filetype==this.type_TW) {
			var newSiteTitle=convertUnicodeToUTF8(getPageTitle()).htmlEncode();
			revised=revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
			revised=updateLanguageAttribute(revised);
			var titles=[]; for (var i=0; i<tids.length; i++) titles.push(tids[i].title);
			revised=updateMarkupBlock(revised,"PRE-HEAD",
				titles.contains("MarkupPreHead")? "MarkupPreHead" :null);
			revised=updateMarkupBlock(revised,"POST-HEAD",
				titles.contains("MarkupPostHead")?"MarkupPostHead":null);
			revised=updateMarkupBlock(revised,"PRE-BODY",
				titles.contains("MarkupPreBody")? "MarkupPreBody" :null);
			revised=updateMarkupBlock(revised,"POST-SCRIPT",
				titles.contains("MarkupPostBody")?"MarkupPostBody":null);
		}
		total.val=out.length;
		return revised;
	},
	formatItem: function(s,f,t,u) {
		if (f==this.type_TW) var r=s.getSaver().externalizeTiddler(s,t);
		if (f==this.type_PS) var r=this.pureStoreTiddler.format([t.title,s.getSaver().externalizeTiddler(s,t)]);
		if (f==this.type_NF) var r=this.newsFeedTiddler.format([t.saveToRss(u)]);
		if (f==this.type_TX) var r=this.plainTextTiddler.format([t.title,t.modifier,t.modified.toLocaleString(),t.text]);
		return r||"";
	},
	getData: function(target,filetype,tids,quiet,overwrite,merge) {
		// output selected tiddlers and gather list of titles (for use with merge)
		var out=[]; var titles=[];
		var url=store.getTiddlerText("SiteUrl","");
		for (var i=0; i<tids.length; i++) {
			out.push(this.formatItem(store,filetype,tids[i],url));
			titles.push(tids[i].title);
		}
		// if TW or PureStore format, ask to merge with existing tiddlers (if any)
		if (filetype==this.type_TW || filetype==this.type_PS) {
			if (overwrite) return out; // skip merge... forced overwrite
			var text=loadFile(target);
			if (text && text.length) {
				var remoteStore=new TiddlyWiki();
				if (remoteStore.importTiddlyWiki(convertUTF8ToUnicode(text))
					&& (merge||confirm(this.mergeprompt.format([target])))) {
					var existing=remoteStore.getTiddlers("title");
					for (var i=0; i<existing.length; i++)
						if (!titles.contains(existing[i].title))
							out.push(this.formatItem(remoteStore,filetype,existing[i],url));
					if (!quiet) displayMessage(this.mergestatus.format([tids.length,out.length-tids.length]));
				}
			}
		}
		return out;
	}
};
//}}}
//{{{
// automatically add saveAs to backstage
config.tasks.saveAs = {
	text: "saveAs",
	tooltip: config.macros.saveAs.prompt,
	action: function(){ clearMessage(); config.macros.saveAs.go(); }
}
config.backstageTasks.splice(config.backstageTasks.indexOf("save")+1,0,"saveAs");
//}}}
|Name|SaveAsPluginInfo|
|Source|http://www.TiddlyTools.com/#SaveAsPlugin|
|Documentation|http://www.TiddlyTools.com/#SaveAsPluginInfo|
|Version|2.5.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|documentation|
|Requires||
|Overrides||
|Description|Documentation for SaveAsPlugin|
Adds a 'save as' command to the TiddlyWiki 'backstage' menu so you can quickly create an exact copy of the current TiddlyWiki document.  The plugin also defines a macro that you can use to place a "save as..." command link into your sidebar/mainmenu/any tiddler (or wherever you like).
>//Note: This plugin replaces functionality previously provided by [[NewDocumentPlugin]], except for the HTML+CSS "snapshot" feature, which has been moved to a separate [[SnapshotPlugin]].//
!!!!!Usage
<<<
When the command link is clicked, a system-specific dialog box will be displayed so you can select/enter the desired target path and filename.
Syntax:
{{{
<<saveAs "label:..." "prompt:..." "filename:..." "type:..." quiet open tagfilter>>
}}}
where:
*''label:...'' //(optional)//<br>defines alternative link text (replaces default "save as..." display)
*''prompt:...'' //(optional)//<br>defines alternative tooltip text for 'mouseover' prompting (replaces default hard-coded tooltip text)
*''filename:...'' //(optional)//<br>specifies the //default// filename to be shown when asking for an output path/file
*''type:...'' //(optional)//<br>specifies a keyword indicating one of four file output formats:
**''type:~TiddlyWiki'' (or ''wiki'' or ''tw'')<br>a TiddlyWiki HTML document 
**''type:~PureStore'' (or ''store'' or ''ps'')<br>a TiddlyWiki "PureStore" HTML export file (just tiddlers, no core code)
**''type:~PlainText'' (or ''text'' or ''tx'')<br>a plain text file listing of tiddler //source// content
**''type:~Comma'' (or ''csv'' or ''cs'')<br>a CSV (comma-separate value) data/spreadsheet file
**''type:~NewsFeed'' (or ''xml'' or ''rss'' or ''nf'')<br>an RSS ~NewsFeed XML file
*''quiet'' //(optional)//<br>normally, when using tag filtering (see below), the number of matching tiddlers is reported and you are asked to confirm before saving those tiddlers to a new file.  Use the ''quiet'' keyword to suppress this confirmation step.
*''open'' //(optional)//<br>Use the ''open'' keyword to auto-open the newly created document file in a separate browser tab/window.
*''tagfilter'' or ''ask'' or ''none''//(optional)//<br>You can use the tag filter parameter to select a subset of tiddlers to be written into the new document file.  If you specify a single tag value, then only tiddlers that are tagged with that value are included in the resulting file.  To use a combination of tag values, you can install [[MatchTagsPlugin]], which provides full 'boolean' logic with AND, OR, and NOT operators, as well as nested parentheses, to create complex expressions for filtering and selecting the desired set of tiddlers.  If you specify the keyword, ''ask'' in place of the tagfilter, you will be prompted to enter a tag or tag expression whenever you click on the 'save as...' command link.  Alternatively, you can specify the keyword, ''none'' in place of the tagfilter to omit all tiddlers and create a new //empty// document.
*By default, when no tag filter parameter is provided, all tiddlers in the document are written to the new file.
<<<
!!!!!Examples
<<<
save all tiddlers:
>{{{<<saveAs>>}}}<br>try it: <<saveAs>>
save only tiddlers matching a single tag:
>{{{<<saveAs "label:create Import/Export starter" "filename:TW+ImportExport.html" ImportExportPackage>>}}}
>try it: <<saveAs "label:create Import/Export starter" "filename:TW+ImportExport.html" "ImportExportPackage>>
save to a ~PureStore format:
>{{{<<saveAs "label:create Import/Export archive" "filename:ImportExportPackage.html" type:PureStore open ImportExportPackage>>}}}
>try it: <<saveAs "label:create Import/Export archive" "filename:ImportExportPackage.html" type:PureStore open ImportExportPackage>>
save to a ~PlainText format:
>{{{<<saveAs "label:create Import/Export source listing" type:PlainText open ImportExportPackage>>}}}
>try it: <<saveAs "label:create Import/Export source listing" type:PlainText open ImportExportPackage>>
save tiddlers matching a complex combination of tags (requires [[MatchTagsPlugin]]):
>{{{<<saveAs (alpha or settings) and not systemConfig>>}}}
>try it: <<saveAs (alpha or settings) and not systemConfig>>
prompt for tag or tag expression each time:
>{{{<<saveAs "label:custom save as..." ask>>}}}
>try it: <<saveAs "label:custom save as..." ask>>
<<<
!!!!!Revisions
<<<
2009.04.19 [2.5.0] added CSV format
2008.09.29 [2.4.3] in getData(), convert existing TW file from UTF8 to Unicode before merging to correct handling of international characters and symbols.
2008.09.28 [2.4.2] in go(), fixed typo that prevented backstage SaveAs from working.
2008.09.24 [2.4.1] if rewriting *current* file and chkSaveBackups and/or chkGenerateAnRssFeed is enabled, then write a backup file or RSS feed, respectively.
2008.09.24 [2.4.0] when 'open' param is used and file is saved to current location, reload() page instead of opening a new tab/window.  Added 'filename' param to specify default filename.  Added 'replace' and 'merge' keyword params to control file handling without asking user.  Improved use of 'quiet' flag to eliminate more unwanted messages.
2008.09.19 [2.3.2] fixed backstage SaveAs command (was defaulting to empty document).  in formatItem(), removed unnecessary convertUnicodeToUTF8() (was causing double-conversion!)
2008.09.16 [2.3.1] fixed IE 'navigate away' error by returning false from button onclick handler
2008.09.11 [2.3.0] added support for alternative file formats: ~PlainText (TX), ~PureStore (PS), or ~NewsFeed (XML) in addition to existing ~TiddlyWiki (TW) document format
2008.09.06 [2.2.1] corrected handling of autoopen attribute so it only applies when "open" param is specified
2008.08.01 [2.2.0] added "open" param to auto-open newly saved document
2008.07.20 [2.1.3] added "quiet" param to bypass confirmation when using tag filter
2008.04.22 [2.1.2] corrected use of getTarget() to check for "user cancelled"
2008.04.22 [2.1.1] documentation fixes
2008.04.22 [2.1.0] added support for tag filtering to completely replace [[NewDocumentPlugin]] (now retired)
2008.04.12 [2.0.1] automatically add "saveAs" to backstage commands
2008.04.12 [2.0.0] initial release based on [[NewDocumentPlugin]]

__Previous revisions from [[NewDocumentPlugin]]__
2008.04.20 [1.8.0] added support for 'noCSS' and 'viewer' params for alternative snapshot output
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
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.
<<<
//{{{
// 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 enhanced with the installation of [[SearchOptions plugin]] and the [[TwHelpSearchPlugin]]. 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
/***
|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);
}
//}}}


/***
|Name|SearchOptionsPlugin|
|Source|http://www.TiddlyTools.com/#SearchOptionsPlugin|
|Documentation|http://www.TiddlyTools.com/#SearchOptionsPluginInfo|
|Version|3.0.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|Story.prototype.search, TiddlyWiki.prototype.search, config.macros.search.onKeyPress|
|Options|##Configuration|
|Description|extend core search function with additional user-configurable options|
Adds extra options to core search function including selecting which data items to search, enabling/disabling incremental key-by-key searches, and generating a ''list of matching tiddlers'' instead of immediately displaying all matches.  This plugin also adds syntax for rendering 'search links' within tiddler content to embed one-click searches using pre-defined 'hard-coded' search terms.
!!!!!Documentation
>see [[SearchOptionsPluginInfo]]
!!!!!Configuration
<<<
Search in:
<<option chkSearchTitles>> titles <<option chkSearchText>> text <<option chkSearchTags>> tags <<option chkSearchFields>> fields <<option chkSearchShadows>> shadows
<<option chkSearchHighlight>> Highlight matching text in displayed tiddlers
<<option chkSearchList>> Show list of matches
<<option chkSearchListTiddler>> Write list to [[SearchResults]] tiddler
<<option chkSearchTitlesFirst>> Show title matches first
<<option chkSearchByDate>> Sort matching tiddlers by modification date (most recent first)
<<option chkIncrementalSearch>> Incremental key-by-key search: {{twochar{<<option txtIncrementalSearchMin>>}}} or more characters,  {{threechar{<<option txtIncrementalSearchDelay>>}}} msec delay
<<option chkSearchOpenTiddlers>> Search only in tiddlers that are currently displayed
<<option chkSearchExcludeTags>> Exclude tiddlers tagged with: <<option txtSearchExcludeTags>>
<<<
!!!!!Revisions
<<<
2009.01.16 [3.0.5] added chkSearchOpenTiddlers option to limit searches to displayed tiddlers only
|please see [[SearchOptionsPluginInfo]] for additional revision details|
2005.10.18 [1.0.0] Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.SearchOptionsPlugin= {major: 3, minor: 0, revision: 5, date: new Date(2009,1,16)};

var co=config.options; // abbrev
if (co.chkSearchTitles===undefined) co.chkSearchTitles=true;
if (co.chkSearchText===undefined) co.chkSearchText=true;
if (co.chkSearchTags===undefined) co.chkSearchTags=true;
if (co.chkSearchFields===undefined) co.chkSearchFields=true;
if (co.chkSearchTitlesFirst===undefined) co.chkSearchTitlesFirst=true;
if (co.chkSearchList===undefined) co.chkSearchList=true;
if (co.chkSearchHighlight===undefined) co.chkSearchHighlight=true;
if (co.chkSearchListTiddler===undefined) co.chkSearchListTiddler=false;
if (co.chkSearchByDate===undefined) co.chkSearchByDate=false;
if (co.chkIncrementalSearch===undefined) co.chkIncrementalSearch=true;
if (co.chkSearchShadows===undefined) co.chkSearchShadows=true;
if (co.txtIncrementalSearchDelay===undefined) co.txtIncrementalSearchDelay=500;
if (co.txtIncrementalSearchMin===undefined) co.txtIncrementalSearchMin=3;
if (co.chkSearchOpenTiddlers===undefined) co.chkSearchOpenTiddlers=false;
if (co.chkSearchExcludeTags===undefined) co.chkSearchExcludeTags=true;
if (co.txtSearchExcludeTags===undefined) co.txtSearchExcludeTags="excludeSearch";
if (config.macros.search.reportTitle==undefined)
	config.macros.search.reportTitle="SearchResults"; // note: not a cookie!
config.macros.search.label+="\xa0"; // a little bit of space just because it looks better
//}}}
// // searchLink: {{{[search[text to find]] OR [search[text to display|text to find]]}}}
//{{{
config.formatters.push( {
	name: "searchLink",
	match: "\\[search\\[",
	lookaheadRegExp: /\[search\[(.*?)(?:\|(.*?))?\]\]/mg,
	prompt: "search for: '%0'",
	handler: function(w)
	{
		this.lookaheadRegExp.lastIndex = w.matchStart;
		var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
		if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
			var label=lookaheadMatch[1];
			var text=lookaheadMatch[2]||label;
			var prompt=this.prompt.format([text]);
			var btn=createTiddlyButton(w.output,label,prompt,
				function(){story.search(this.getAttribute("searchText"))},"searchLink");
			btn.setAttribute("searchText",text);
			w.nextMatch = this.lookaheadRegExp.lastIndex;
		}
	}
});
//}}}
// // incremental search uses option settings instead of hard-coded delay and minimum input values
//{{{
var fn=config.macros.search.onKeyPress;
fn=fn.toString().replace(/500/g, "config.options.txtIncrementalSearchDelay||500");
fn=fn.toString().replace(/> 2/g, ">=(config.options.txtIncrementalSearchMin||3)");
eval("config.macros.search.onKeyPress="+fn);
//}}}
// // REPLACE story.search() for option to "show search results in a list"
//{{{
Story.prototype.search = function(text,useCaseSensitive,useRegExp)
{
	var co=config.options; // abbrev
	var re=new RegExp(useRegExp ? text : text.escapeRegExp(),useCaseSensitive ? "mg" : "img");
	if (config.options.chkSearchHighlight) highlightHack=re;
	var matches = store.search(re,co.chkSearchByDate?"modified":"title","");
	if (co.chkSearchByDate) matches=matches.reverse(); // most recent first
	var q = useRegExp ? "/" : "'";
	clearMessage();
	if (!matches.length) {
		if (co.chkSearchListTiddler) discardSearchResults();
		displayMessage(config.macros.search.failureMsg.format([q+text+q]));
	} else {
		if (co.chkSearchList||co.chkSearchListTiddler) 
			reportSearchResults(text,matches);
		else {
			var titles = []; for(var t=0; t<matches.length; t++) titles.push(matches[t].title);
			this.closeAllTiddlers(); story.displayTiddlers(null,titles);
			displayMessage(config.macros.search.successMsg.format([matches.length, q+text+q]));
		}
	}
	highlightHack = null;
}
//}}}
// // REPLACE store.search() for enhanced searching/sorting options
//{{{
TiddlyWiki.prototype.search = function(searchRegExp,sortField,excludeTag)
{
	var co=config.options; // abbrev
	var tids = this.reverseLookup("tags",excludeTag,false,sortField);
	var opened=[]; story.forEachTiddler(function(tid,elem){opened.push(tid);});

	// eliminate tiddlers tagged with excluded tags
	if (co.chkSearchExcludeTags&&co.txtSearchExcludeTags.length) {
		var ex=co.txtSearchExcludeTags.readBracketedList();
		var temp=[]; for(var t=tids.length-1; t>=0; t--)
			if (!tids[t].tags.containsAny(ex)) temp.push(tids[t]);
		tids=temp;
	}

	// scan for matching titles first...
	var results = [];
	if (co.chkSearchTitles) {
		for(var t=0; t<tids.length; t++) {
			if (co.chkSearchOpenTiddlers && !opened.contains(tids[t].title)) continue; 
			if(tids[t].title.search(searchRegExp)!=-1) results.push(tids[t]);
		}
		if (co.chkSearchShadows)
			for (var t in config.shadowTiddlers) {
				if (co.chkSearchOpenTiddlers && !opened.contains(t)) continue; 
				if ((t.search(searchRegExp)!=-1) && !store.tiddlerExists(t))
					results.push((new Tiddler()).assign(t,config.shadowTiddlers[t]));
			}
	}
	// then scan for matching text, tags, or field data
	for(var t=0; t<tids.length; t++) {
		if (co.chkSearchOpenTiddlers && !opened.contains(tids[t].title)) continue; 
		if (co.chkSearchText && tids[t].text.search(searchRegExp)!=-1)
			results.pushUnique(tids[t]);
		if (co.chkSearchTags && tids[t].tags.join(" ").search(searchRegExp)!=-1)
			results.pushUnique(tids[t]);
		if (co.chkSearchFields && store.forEachField!=undefined)
			store.forEachField(tids[t],
				function(tid,field,val) {
					if (val.search(searchRegExp)!=-1) results.pushUnique(tids[t]);
				},
				true); // extended fields only
	}
	// then check for matching text in shadows
	if (co.chkSearchShadows)
		for (var t in config.shadowTiddlers) {
			if (co.chkSearchOpenTiddlers && !opened.contains(t)) continue; 
			if ((config.shadowTiddlers[t].search(searchRegExp)!=-1) && !store.tiddlerExists(t))
				results.pushUnique((new Tiddler()).assign(t,config.shadowTiddlers[t]));
		}

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

	return results;
}
//}}}
// // HIJACK core {{{<<search>>}}} macro to add "report" and "simple inline" output
//{{{
config.macros.search.SOP_handler=config.macros.search.handler;
config.macros.search.handler = function(place,macroName,params)
{
	// if "report", use SearchOptionsPlugin report generator for inline output
	if (params[1]&&params[1].substr(0,6)=="report") {
		var keyword=params[0];
		var options=params[1].split("=")[1]; // split "report=option+option+..."
		var heading=params[2]?params[2].unescapeLineBreaks():"";
		var matches=store.search(new RegExp(keyword.escapeRegExp(),"img"),"title","excludeSearch");
		if (matches.length) wikify(heading+window.formatSearchResults(keyword,matches,options),place);
	} else if (params[1]) {
		var keyword=params[0];
		var heading=params[1]?params[1].unescapeLineBreaks():"";
		var seperator=params[2]?params[2].unescapeLineBreaks():", ";
		var matches=store.search(new RegExp(keyword.escapeRegExp(),"img"),"title","excludeSearch");
		if (matches.length) {
			var out=[];
			for (var m=0; m<matches.length; m++) out.push("[["+matches[m].title+"]]");
			wikify(heading+out.join(seperator),place);
		}
	} else
		config.macros.search.SOP_handler.apply(this,arguments);
};
//}}}
// // SearchResults panel handling
//{{{
setStylesheet(".searchResults { padding:1em 1em 0 1em; }","searchResults"); // matches std tiddler padding

config.macros.search.createPanel=function(text,matches,body) {

	function getByClass(e,c) { var d=e.getElementsByTagName("div");
		for (var i=0;i<d.length;i++) if (hasClass(d[i],c)) return d[i]; }
	var panel=createTiddlyElement(null,"div","searchPanel","searchPanel");
	this.renderPanel(panel,text,matches,body);
	var oldpanel=document.getElementById("searchPanel");
	if (!oldpanel) { // insert new panel just above tiddlers
		var da=document.getElementById("displayArea");
		da.insertBefore(panel,da.firstChild);
	} else { // if panel exists
		var oldwrap=getByClass(oldpanel,"searchResults");
		var newwrap=getByClass(panel,"searchResults");
		// if no prior content, just insert new content
		if (!oldwrap) oldpanel.insertBefore(newwrap,null);
		else {	// swap search results content but leave containing panel intact
			oldwrap.style.display='block'; // unfold wrapper if needed
			var i=oldwrap.getElementsByTagName("input")[0]; // get input field
			if (i) { var pos=this.getCursorPos(i); i.onblur=null; } // get cursor pos, ignore blur
			oldpanel.replaceChild(newwrap,oldwrap);
			panel=oldpanel; // use existing panel
		} 
	}
	this.showPanel(true,pos);
	return panel;
}

config.macros.search.renderPanel=function(panel,text,matches,body) {

	var wrap=createTiddlyElement(panel,"div",null,"searchResults");
	wrap.onmouseover = function(e){ addClass(this,"selected"); }
	wrap.onmouseout = function(e){ removeClass(this,"selected"); }
	// create toolbar: "open all", "fold/unfold", "close"
	var tb=createTiddlyElement(wrap,"div",null,"toolbar");
	var b=createTiddlyButton(tb, "open all", "open all matching tiddlers", function() {
		story.displayTiddlers(null,this.getAttribute("list").readBracketedList()); return false; },"button");
	var list=""; for(var t=0;t<matches.length;t++) list+='[['+matches[t].title+']] ';
	b.setAttribute("list",list);
	var b=createTiddlyButton(tb, "fold", "toggle display of search results", function() {
		config.macros.search.foldPanel(this); return false; },"button");
	var b=createTiddlyButton(tb, "close", "dismiss search results",	function() {
		config.macros.search.showPanel(false); return false; },"button");
	createTiddlyText(createTiddlyElement(wrap,"div",null,"title"),"Search for: "+text); // title
	wikify(body,createTiddlyElement(wrap,"div",null,"viewer")); // report
	return panel;
}

config.macros.search.showPanel=function(show,pos) {
	var panel=document.getElementById("searchPanel");
	var i=panel.getElementsByTagName("input")[0];
	i.onfocus=show?function(){config.macros.search.stayFocused(true);}:null;
	i.onblur=show?function(){config.macros.search.stayFocused(false);}:null;
	if (show && panel.style.display=="block") { // if shown, grab focus, restore cursor
		if (i&&this.stayFocused()) { i.focus(); this.setCursorPos(i,pos); }
		return;
	}
	if(!config.options.chkAnimate) {
		panel.style.display=show?"block":"none";
		if (!show) { removeChildren(panel); config.macros.search.stayFocused(false); }
	} else {
		var s=new Slider(panel,show,false,show?"none":"children");
		s.callback=function(e,p){e.style.overflow="visible";}
		anim.startAnimating(s);
	}
	return panel;
}

config.macros.search.foldPanel=function(button) {
	var d=document.getElementById("searchPanel").getElementsByTagName("div");
	for (var i=0;i<d.length;i++) if (hasClass(d[i],"viewer")) var v=d[i]; if (!v) return;
	var show=v.style.display=="none";
	if(!config.options.chkAnimate)
		v.style.display=show?"block":"none";
	else {
		var s=new Slider(v,show,false,"none");
		s.callback=function(e,p){e.style.overflow="visible";}
		anim.startAnimating(s);
	}
	button.innerHTML=show?"fold":"unfold";
	return false;
}

config.macros.search.stayFocused=function(keep) { // TRUE/FALSE=set value, no args=get value
	if (keep===undefined) return this.keepReportInFocus;
	this.keepReportInFocus=keep;
	return keep
}	

config.macros.search.getCursorPos=function(i) {
	var s=0; var e=0; if (!i) return { start:s, end:e };
	try {
		if (i.setSelectionRange) // FF
			{ s=i.selectionStart; e=i.selectionEnd; }
		if (document.selection && document.selection.createRange) { // IE
			var r=document.selection.createRange().duplicate();
			var len=r.text.length; s=0-r.moveStart('character',-100000); e=s+len;
		}
	}catch(e){};
	return { start:s, end:e };
}
config.macros.search.setCursorPos=function(i,pos) {
	if (!i||!pos) return; var s=pos.start; var e=pos.end;
	if (i.setSelectionRange) //FF
		i.setSelectionRange(s,e);
	if (i.createTextRange) // IE
		{ var r=i.createTextRange(); r.collapse(true); r.moveStart("character",s); r.select(); }
}
//}}}
// // SearchResults report generation
// note: these functions are defined globally, so they can be more easily redefined to customize report formats//
//{{{
if (!window.reportSearchResults) window.reportSearchResults=function(text,matches)
{
	var cms=config.macros.search; // abbrev
	var body=window.formatSearchResults(text,matches);
	if (!config.options.chkSearchListTiddler) // show #searchResults panel
		window.scrollTo(0,ensureVisible(cms.createPanel(text,matches,body)));
	else { // write [[SearchResults]] tiddler
		var title=cms.reportTitle;
		var who=config.options.txtUserName;
		var when=new Date();
		var tags="excludeLists excludeSearch temporary";
		var tid=store.getTiddler(title); if (!tid) tid=new Tiddler();
		tid.set(title,body,who,when,tags);
		store.addTiddler(tid);
		story.closeTiddler(title);
		story.displayTiddler(null,title);
	}
}

if (!window.formatSearchResults) window.formatSearchResults=function(text,matches,opt)
{
	var body='';
	var title=config.macros.search.reportTitle
	var q = config.options.chkRegExpSearch ? "/" : "'";
	if (!opt) var opt="all";
	var parts=opt.split("+");
	for (var i=0; i<parts.length; i++) { var p=parts[i].toLowerCase();
		if (p=="again"||p=="all")   body+=window.formatSearchResults_again(text,matches);
		if (p=="summary"||p=="all") body+=window.formatSearchResults_summary(text,matches);
		if (p=="list"||p=="all")    body+=window.formatSearchResults_list(text,matches);
		if (p=="buttons"||p=="all") body+=window.formatSearchResults_buttons(text,matches);
	}
	return body;
}

if (!window.formatSearchResults_again) window.formatSearchResults_again=function(text,matches)
{
	var title=config.macros.search.reportTitle
	var body='';
	// search again
	body+='{{span{<<search "'+text.replace(/"/g,'&#x22;')+'">> /%\n';
	body+='%/<html><input type="button" value="search again"';
	body+=' onclick="var t=this.parentNode.parentNode.getElementsByTagName(\'input\')[0];';
	body+=' config.macros.search.doSearch(t); return false;">';
	body+=' <a href="javascript:;" onclick="';
	body+=' var e=this.parentNode.nextSibling;';
	body+=' var show=e.style.display!=\'block\';';
	body+=' if(!config.options.chkAnimate) e.style.display=show?\'block\':\'none\';';
	body+=' else anim.startAnimating(new Slider(e,show,false,\'none\'));';
	body+=' return false;">options...</a>';
	body+='</html>@@display:none;border-left:1px dotted;margin-left:1em;padding:0;padding-left:.5em;font-size:90%;/%\n';
	body+='	%/<<option chkSearchTitles>>titles /%\n';
	body+='	%/<<option chkSearchText>>text /%\n';
	body+='	%/<<option chkSearchTags>>tags /%\n';
	body+='	%/<<option chkSearchFields>>fields /%\n';
	body+='	%/<<option chkSearchShadows>>shadows\n';
	body+='	<<option chkCaseSensitiveSearch>>case-sensitive /%\n';
	body+='	%/<<option chkRegExpSearch>>text patterns /%\n';
	body+='	%/<<option chkSearchByDate>>sorted by date\n';
	body+='	<<option chkSearchHighlight>> highlight matching text in displayed tiddlers\n';
	body+='	<<option chkIncrementalSearch>>incremental key-by-key search: /%\n';
	body+='	%/{{twochar{<<option txtIncrementalSearchMin>>}}} or more characters, /%\n';
	body+='	%/{{threechar{<<option txtIncrementalSearchDelay>>}}} msec delay\n';
	body+='	<<option chkSearchOpenTiddlers>> search only in tiddlers that are currently displayed\n';
	body+='	<<option chkSearchExcludeTags>>exclude tiddlers tagged with:\n';
	body+='	{{editor{<<option txtSearchExcludeTags>>}}}/%\n';
	body+='%/@@}}}\n\n';
	return body;
}

if (!window.formatSearchResults_summary) window.formatSearchResults_summary=function(text,matches)
{
	// summary: nn tiddlers found matching '...', options used
	var body='';
	var co=config.options; // abbrev
	var title=config.macros.search.reportTitle
	var q = co.chkRegExpSearch ? "/" : "'";
	body+="''"+config.macros.search.successMsg.format([matches.length,q+"{{{"+text+"}}}"+q])+"''\n";
	var opts=[];
	if (co.chkSearchTitles) opts.push("titles");
	if (co.chkSearchText) opts.push("text");
	if (co.chkSearchTags) opts.push("tags");
	if (co.chkSearchFields) opts.push("fields");
	if (co.chkSearchShadows) opts.push("shadows");
	if (co.chkSearchOpenTiddlers) body+="^^//search limited to displayed tiddlers only//^^\n";
	body+="~~&nbsp; searched in "+opts.join(" + ")+"~~\n";
	body+=(co.chkCaseSensitiveSearch||co.chkRegExpSearch?"^^&nbsp; using ":"")
		+(co.chkCaseSensitiveSearch?"case-sensitive ":"")
		+(co.chkRegExpSearch?"pattern ":"")
		+(co.chkCaseSensitiveSearch||co.chkRegExpSearch?"matching^^\n":"");
	return body;
}

if (!window.formatSearchResults_list) window.formatSearchResults_list=function(text,matches)
{
	// bullet list of links to matching tiddlers
	var body='';
	var pattern=co.chkRegExpSearch?text:text.escapeRegExp();
	var sensitive=co.chkCaseSensitiveSearch?"mg":"img";
	var link='{{tiddlyLinkExisting{<html><nowiki><a href="javascript:;" onclick="'
		+'if(config.options.chkSearchHighlight)'
		+'	highlightHack=new RegExp(\x27'+pattern+'\x27,\x27'+sensitive+'\x27);'
		+'story.displayTiddler(null,\x27%0\x27);'
		+'highlightHack = null; return false;'
		+'" title="%2">%1</a></html>}}}';
	for(var t=0;t<matches.length;t++) {
		body+="* ";
		if (config.options.chkSearchByDate)
			body+=matches[t].modified.formatString('YYYY.0MM.0DD 0hh:0mm')+" ";
		var title=matches[t].title;
		var fixup=title.replace(/'/g,"\\x27").replace(/"/g,"\\x22");
		var tid=store.getTiddler(title);
		var tip=tid?tid.getSubtitle():''; tip=tip.replace(/"/g,"&quot;");
		body+=link.format([fixup,title,tip])+'\n';
	}
	return body;
}

if (!window.formatSearchResults_buttons) window.formatSearchResults_buttons=function(text,matches)
{
	// embed buttons only if writing SearchResults to tiddler
	if (!config.options.chkSearchListTiddler) return "";
	// "open all" button
	var title=config.macros.search.reportTitle;
	var body="";
	body+="@@diplay:block;<html><input type=\"button\" href=\"javascript:;\" "
		+"onclick=\"story.displayTiddlers(null,[";
	for(var t=0;t<matches.length;t++)
		body+="'"+matches[t].title.replace(/\'/mg,"\\'")+"'"+((t<matches.length-1)?", ":"");
	body+="],1);\" accesskey=\"O\" value=\"open all matching tiddlers\"></html> ";
	// "discard SearchResults" button
	body+="<html><input type=\"button\" href=\"javascript:;\" "
		+"onclick=\"discardSearchResults()\" value=\"discard "+title+"\"></html>";
	body+="@@\n";
	return body;
}

if (!window.discardSearchResults) window.discardSearchResults=function()
{
	// remove the tiddler
	story.closeTiddler(config.macros.search.reportTitle);
	store.deleteTiddler(config.macros.search.reportTitle);
	store.notify(config.macros.search.reportTitle,true);
}
//}}}
/***
|Name|''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();}
// %/

This set of shadowed tiddlers contain, and display key items for visitors, browsers and search engines. For convenience of reference, the current contents of some of these tiddlers is also displayed using the built in {{{<<tiddler>>}}} macro. Once you have [[downloaded this web site|Download this web site]], 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 Framework for Climate Change Action TiddlyWiki page ... 
* 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 - makes extensive use of sub-menus using the NestedSlidersPlugin, The Main Menu incorporates an [[Administrative Menu]].  a component that includes common site tools & a nested set of [[Tiddler Administration]] menus for modifying and reconfiguring the appearance and organization of the page 
>> <<tiddler MainMenu>>
* MarkupPreHead - "meta tags" for browsers & search engines & to define the opening [[Splash Screen]], displayed below:
<<tiddler "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
>> <<tiddler "Templayes & 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>>
!!!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;
}
/*}}}*/
!!!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>> |
<<<
Climate Change in a Free & Open Universe of Knowledge - Clouds, Earth & Consciousness
[<img[http://www.climatechange3.net/cc3-logo-75x75.png]]Climate Change 3.0 - Information, Ecology & Climate Change
http://www.climatechange3.net/
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>> |
{{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://softwarefreedomday.org/}}}
<html><iframe
	src = "http://softwarefreedomday.org/"
	title = "Software Freedom Day"
	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://softwarefreedomday.org/}}}
<html><iframe
	src = "http://softwarefreedomday.org/"
	title = "Software Freedom Day"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
<html>
<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-size: 25px; font-family:comic sans ms,Bookman Old Style, Georgia; background-color:#fff;">
<img src="http://www.climatechange3.net/cc3-logo-200x200.png">
<h1>Climate Change 3.0: Information, Ecology & Climate Change</h1>
<br />
Vital pathway for adaptation to & mitigation of climate change
<br />
Transition to a free & open networked knowledge-based universe
<p>
A universe where knowledge is wealth
<br />
and where wealth is free of the constraints of
<br />
the laws of conservation of mass and energy
<p>
<br><span style="font-size: 14px; color:red;">
Please be patient while Climate Change 3.0 loads
<p>
Requires Javascript.</span></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
***/
//{{{
window.old_lewcid_splash_restart=window.restart;

window.restart = function()
{   if (document.getElementById("SplashScreen"))
        document.getElementById("SplashScreen").style.display = "none";
      if (document.getElementById("contentWrapper"))
        document.getElementById("contentWrapper").style.display = "block";
    
    window.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;
}
//}}}
/***
|Name|StorySaverPlugin|
|Source|http://www.TiddlyTools.com/#StorySaverPlugin|
|Documentation|http://www.TiddlyTools.com/#StorySaverPluginInfo|
|Version|1.4.3|
|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|MarkupPostBody|
|Overrides|confirmExit(), getParameters()|
|Description|save/restore current tiddler view between browser sessions|
This plugin automatically saves a list of the currently viewed tiddlers (the "story") in a local cookie, {{{txtSavedStory}}} and then opens those tiddlers when the document is subsequently reloaded... the tiddlers you were viewing in the last browser session are automatically redisplayed in the next session, allowing you to quickly resume working with the document from the same place you left off!!

In addition to automatic cookie-based story tracking, the plugin also provides {{{<<saveStory>>}}} and {{{<<openStory>>}}} macros that allow you to quickly save the current story definition to a tiddler, and then re-display saved stories using simple, one-click command links or droplists.
!!!!!Documentation
>see [[StorySaverPluginInfo]]
!!!!!Revisions
<<<
2008.09.07 [1.4.3] added removeCookie() function for compatibility with [[CookieManagerPlugin]]
2008.07.11 [1.4.2] in confirmExit(), corrected bracketing for titles containing spaces
2008.03.10 [*.*.*] plugin size reduction: documentation moved to [[StorySaverPluginInfo]]
|please see [[StorySaverPluginInfo]] for additional revision details|
2007.10.05 [1.0.0] initial release.   Moved [[SetDefaultTiddlers]] inline script and rewrote as a {{{<<saveStory>>}}} macro.
<<<
!!!!!Code
***/
//{{{
version.extensions.StorySaverPlugin= {major: 1, minor: 4, revision: 3, date: new Date(2008,9,7)};
//}}}
// // ''save or clear story cookie on exit:''
//{{{
// if removeCookie() function is not defined by TW core, define it here.
if (window.removeCookie===undefined) {
	window.removeCookie=function(name) {
		document.cookie = name+'=; expires=Thu, 01-Jan-1970 00:00:01 UTC; path=/;'; 
	}
}

if (config.options.chkSaveStory==undefined) config.options.chkSaveStory=false; 
if (window.coreTweaks_confirmExit==undefined) {
	window.coreTweaks_confirmExit=window.confirmExit;
	window.confirmExit=function() {
		if (config.options.chkSaveStory) { // save cookie
			var links=[];
			story.forEachTiddler(function(title,element){links.push('[['+title+']]');});
			config.options.txtSavedStory=links.join(" ");
			saveOptionCookie("txtSavedStory");
		} else removeCookie("txtSavedStory");
		return window.coreTweaks_confirmExit.apply(this,arguments);
	}
}
//}}}
/***
''apply saved story on startup:'' //important note: the following code is actually located in [[MarkupPostBody]].  This is because it needs to supercede the core's getParameters() function, which is called BEFORE plugins are loaded, preventing the normal plugin-based hijack method from working, while code loaded into [[MarkupPostBody]] will be processed as soon as the document is read, even before the TW main() function is invoked.//
<<tiddler MarkupPostBody>>
***/
// // MACRO definitions
//{{{
config.macros.saveStory = {
	label: "set default tiddlers",
	defaultTiddler: "DefaultTiddlers",
	prompt: "store a list of currently displayed tiddlers in another tiddler",
	askMsg: "Enter the name of a tiddler in which to save the current story:",
	tag: "story",
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var tid=params[0]?params[0]:"DefaultTiddlers";
		var label=params[1]?params[1]:this.label;
		var tip=params[2]?params[2]:this.prompt;
		var btn=createTiddlyButton(place,label,tip,this.setTiddler,"button");
		btn.setAttribute("tid",tid);
	},
	setTiddler: function() {
		// get list of current open tiddlers
		var tids=[];
		story.forEachTiddler(function(title,element){tids.push("[["+title+"]]")}); // always put titles in brackets
		// get target tiddler
		var tid=this.getAttribute("tid");
		if (!tid || tid=="ask") {
			tid=prompt(config.macros.saveStory.askMsg,config.macros.saveStory.defaultTiddler);
			if (!tid || !tid.length) return; // cancelled by user
		}
		if(store.tiddlerExists(tid) && !confirm(config.messages.overwriteWarning.format([tid]))) return;
		tids=tids.join("\n"); // separate tiddler links by newlines for easier reading
		var t=store.getTiddler(tid); var tags=t?t.tags:[]; tags.push(config.macros.saveStory.tag);
		store.saveTiddler(tid,tid,tids,config.options.txtUserName,new Date(),tags,t?t.fields:null);
		story.displayTiddler(null,tid); story.refreshTiddler(tid,null,true);
		displayMessage(tid+" has been "+(t?"updated":"created"));
	}
}
//}}}

//{{{
if (config.options.chkStoryFold==undefined) config.options.chkStoryFold=true;
if (config.options.chkStoryClose==undefined) config.options.chkStoryClose=true;
config.macros.openStory = {
	label: "open story: %0",
	prompt: "open the set of tiddlers listed in: '%0'",
	popuplabel: "stories",
	popupprompt: "view a set of tiddlers",
	tag: "story",
	selectprompt: "select a story...",
	optionsprompt: "viewing options...",
	foldcmd: "[%0] fold story",
	foldprompt: "fold story tiddlers when opening a story",
	closecmd: "[%0] close others",
	closeprompt: "close other tiddlers when opening a story",
	addcmd: "add a story...",
	addprompt: "create a new story",
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		if (params[0].toLowerCase()=="list") return this.createList(place,params);
		else if (params[0].toLowerCase()=="popup") return this.createPopup(place,params);
		else this.createButton(place,params);
	},
	showStory: function(tid) {
		var tids=[];
		var tagged=store.getTaggedTiddlers(tid,"title");
		if (tagged.length) // if tiddler IS a tag, use tagged tiddlers as story
			for (var t=0; t<tagged.length; t++) tids.push(tagged[t].title);
		else { // get tiddler list from content
			var t=store.getTiddler(tid);
			if (t) { if (!t.linksUpdated) t.changed(); tids=t.links; }
		}
		// see [[CollapseTiddlersPlugin]] for more info, re: folding tiddlers
		var template=null;
		if (config.options.chkStoryFold) template="CollapsedTemplate";
		if (!store.tiddlerExists("CollapsedTemplate")) template=null;
		if (config.options.chkStoryClose) story.closeAllTiddlers();
		story.displayTiddlers(null,tids,template);
	},
	createButton: function(place,params) {
		var tid=params[0]?params[0]:"";
		var label=params[1]?params[1]:this.label; label=label.format([tid]);
		var tip=params[2]?params[2]:this.prompt; tip=tip.format([tid]);
		var fn=function(){config.macros.openStory.showStory(this.getAttribute("tid"))};
		var btn=createTiddlyButton(place,label,tip,fn,"button");
		btn.setAttribute("tid",tid);
	},
	createPopup: function(place,params) {
		var label=params[1]?params[1]:this.popuplabel;
		var tip=params[2]?params[2]:this.popupprompt;
		var btn=createTiddlyButton(place,label,tip,this.showPopup,"button");
	},
	showPopup: function(ev) { var e=ev||window.event;
		var indent="\xa0\xa0";
		var p=Popup.create(this); if (!p) return false;
		createTiddlyText(createTiddlyElement(p,"li"),config.macros.openStory.selectprompt);
		var stories=store.getTaggedTiddlers("story","title");
		for (var s=0; s<stories.length; s++) {
			var label=indent+stories[s].title;
			var tip=config.macros.openStory.prompt.format([stories[s].title]);
			var fn=function(){config.macros.openStory.showStory(this.getAttribute("tid"))};
			var btn=createTiddlyButton(createTiddlyElement(p,"li"),label,tip,fn,"button");
			btn.setAttribute("tid",stories[s].title);
		}
		createTiddlyText(createTiddlyElement(p,"li"),config.macros.openStory.optionsprompt);
		if (store.tiddlerExists("CollapsedTemplate")) {
			var label=indent+config.macros.openStory.foldcmd.format([config.options.chkStoryFold?"x":"\xa0\xa0"]);
			var tip=config.macros.openStory.foldprompt;
			var fn=function(){config.options.chkStoryFold=!config.options.chkStoryFold;saveOptionCookie('chkStoryFold')};
			var btn=createTiddlyButton(createTiddlyElement(p,"li"),label,tip,fn,"button");
		}
		var label=indent+config.macros.openStory.closecmd.format([config.options.chkStoryClose?"x":"\xa0\xa0"]);
		var tip=indent+config.macros.openStory.closeprompt;
		var fn=function(){config.options.chkStoryClose=!config.options.chkStoryClose;saveOptionCookie('chkStoryClose')};
		var btn=createTiddlyButton(createTiddlyElement(p,"li"),label,tip,fn,"button");
		if (!readOnly) {
			var label=config.macros.openStory.addcmd;
			var tip=config.macros.openStory.addprompt;
			var fn=config.macros.saveStory.setTiddler;
			createTiddlyElement(createTiddlyElement(p,"li"),"hr");
			var btn=createTiddlyButton(createTiddlyElement(p,"li"),label,tip,fn,"button");
		}
		Popup.show(p,false);
		e.cancelBubble=true;if(e.stopPropagation)e.stopPropagation();
		return false;
	},
	createList: function(place,params) {
		var s=createTiddlyElement(place,"select",null,"storyListbox");
		s.size=1;
		s.onchange=function() {
			if (this.value=="_fold") {
				config.options.chkStoryFold=!config.options.chkStoryFold; saveOptionCookie('chkStoryFold');
				config.macros.openStory.refreshList();
			} else if (this.value=="_close") {
				config.options.chkStoryClose=!config.options.chkStoryClose; saveOptionCookie('chkStoryClose');
				config.macros.openStory.refreshList();
			} else if (this.value=="_add")
				config.macros.saveStory.setTiddler.apply(this,arguments);
			else config.macros.openStory.showStory(this.value);
		}
		setStylesheet(".storyListbox { width:100%; }", "StorySaverStyles");
		store.addNotification(null,this.refreshList); this.refreshList();
		return;
	},
	refreshList: function() {
		var indent="\xa0\xa0\xa0\xa0";
		var lists=document.getElementsByTagName("select");
		for (var i=0; i<lists.length; i++) { if (lists[i].className!="storyListbox") continue;
			var here=lists[i];
			while (here.length) here.options[0]=null; // remove current list items
			here.options[here.length]=new Option(config.macros.openStory.selectprompt,"",true,true);
			var stories=store.getTaggedTiddlers("story","title");
			for (var s=0; s<stories.length; s++)
				here.options[here.length]=new Option(indent+stories[s].title,stories[s].title,false,false);
			if (!readOnly)
				here.options[here.length]=new Option(config.macros.openStory.addcmd,"_add",false,false);
			here.options[here.length]=new Option(config.macros.openStory.optionsprompt,"",false,false);
			if (store.tiddlerExists("CollapsedTemplate")) {
				var msg=config.macros.openStory.foldcmd.format([config.options.chkStoryFold?"x":"\xa0\xa0"]);
				here.options[here.length]=new Option(indent+msg,"_fold",false,false);
			}
			var msg=config.macros.openStory.closecmd.format([config.options.chkStoryClose?"x":"\xa0\xa0"]);
			here.options[here.length]=new Option(indent+msg,"_close",false,false);
		}
	}
}
//}}}
/*{{{*/
* html .tiddler {
    height: 1%;
}

[[TagglyTaggingStyles]]
[[MainMenuStyles]]

body {
font-size: .75em;
font-family: georgia, bookman old style, garamond antigua, arial, helvetica;
margin: 0;
padding: 0;
}

#displayArea {
margin-left: 16em;
margin-right: 3em;
}

.cleartable table {
border: 0;
}

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

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

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

.siteTitle {
font-size: 3em;
}

.siteSubtitle {
font-size: 1.2em;
}

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

.iframe {
font-size: 70%;
}
.onlineMode .editTags { display:none; }
.breadCrumbs { border-bottom:1px solid; }
.breadCrumbs a {
	border: 1px solid; padding: 0px 1em;
	-moz-border-radius-topleft:.5em; -moz-border-radius-topright:.5em;
	-webkit-border-top-left-radius:.5em; -webkit-border-top-right-radius:.5em;
}

/*}}}*/
/*{{{*/
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]];
}

/*}}}*/
<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>
{{small{''Note'': This is a "framed" page from the ''Feedblitz'' 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.feedblitz.com/f/?Sub&publisher=727679}}}
<html><iframe
	src = "http://www.feedblitz.com/f/?Sub&publisher=727679"
	title = "Subscribe to Climate Change 3.0 News Feeds"
	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.feedblitz.com/f/?Sub&publisher=727679}}}
<html><iframe
	src = "http://www.feedblitz.com/f/?Sub&publisher=727679"
	title = "Subscribe to Climate Change 3.0 News Feeds"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
<html>
<iframe width=800 height=800 frameborder=0 src="http://www.feedblitz.com/pubroll.asp?bb377e3567fa6ceef680a3466195a54a727679/html">
</iframe></noscript></html>
<html><form Method="POST"  action="http://www.feedblitz.com/f/f.fbz?AddNewUserDirect" target="_blank">
<input type="hidden" name="sub" value="259889">
Enter your Email<br><input name="EMAIL" maxlength="255" type="text" size="25" value=""><br>
<input name="FEEDID" type="hidden" value="259889">
<input name="PUBLISHER" type="hidden" value="727679">
<input type="submit" value="Subscribe me!">
<br>
<a target="_blank" href="http://www.feedblitz.com/f?previewfeed=259889">Preview</a> | Powered by <a target="_blank" href="http://www.feedblitz.com">FeedBlitz</a>
</form>
</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.
http://twhelp.tiddlyspot.com/
|>|bgcolor(#8af):@@color(#000080):''1 tiddlers found matching /{{{rio declaration}}}/''@@|bgcolor(#8af):  @@color(#A00000): SearchHelp@@ |
|>|>|bgcolor(#E3FFE3):<<search>> <<option chkSearchTitles>> Titles <<option chkSearchText>> Text <<option chkSearchTags>>Tags <<option chkHoldSearches>> Hold |

|&nbsp;|bgcolor(#8af): @@color(#000080):sort by: ''Titles''@@ |bgcolor(#8af): @@color(#000080): ''Size'' (bytes)@@ |bgcolor(#8af): @@color(#000080): ''Tags''@@ |h
| 1|[[Rio Declaration on Environment and Development]]| 600|@@1992.06,unced,declarations,environmental declarations,global conferences,sustainable development,un-documents.net,declaration,principles,un documents,background document@@|
!!!<<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
/***
|Name|TableOfContentsPlugin|
|Source|http://www.TiddlyTools.com/#TableOfContentsPlugin|
|Documentation|http://www.TiddlyTools.com/#TableOfContentsPluginInfo|
|Version|2.4.3|
|Author|Eric Shulman|
|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||
|Options|##Configuration|
|Description|replace the standard tabbed contents list with a scrolling listbox|
When there are many tiddlers in a document, the standard 'tabbed list of tiddlers' in the right-hand sidebar can become very long, occupying a lot of page space and requiring a lot scrolling in order to locate and select a tiddler.  The TableOfContentsPlugin addresses this problem by replacing the standard tabbed list display with a single listbox/droplist control that uses a very small amount of page space, regardless of the number of tiddlers in the document.
!!!!!Documentation
>see [[TableOfContentsPluginInfo]]
!!!!!Configuration
<<option chkTOCShow>> display table of contents listbox
<<option chkTOCIncludeHidden>> include tiddlers tagged with <<tag excludeLists>> in listbox
listbox shows <<option txtTOCListSize>> lines, sorted by <<option txtTOCSortBy>>
!!!!!Revisions
<<<
2008.04.09 [2.4.3] restored config.options.chkTOCShow and onClickTOCMenu() handler
|please see [[TableOfContentsPluginInfo]] for additional revision details|
2005.06.13 [1.0.0] Initial Release (as adaptation - predates TiddlyWiki plugin architecture!!)
<<<
!!!!!Code
***/
//{{{
version.extensions.TableOfContentsPlugin= {major: 2, minor: 4, revision: 3, date: new Date(2008,4,9)};
//}}}

// // 1.2.x compatibility
//{{{
if (!window.story) window.story=window;
if (!store.getTiddler) store.getTiddler=function(title){return store.tiddlers[title]}
if (!store.addTiddler) store.addTiddler=function(tiddler){store.tiddlers[tiddler.title]=tiddler}
if (!store.deleteTiddler) store.deleteTiddler=function(title){delete store.tiddlers[title]}
//}}}

//{{{
// define defaults for cookie-based option values
if (config.options.txtTOCSortBy==undefined)	config.options.txtTOCSortBy="modified";
if (config.options.txtTOCListSize==undefined)	config.options.txtTOCListSize=19;
if (config.options.chkTOCShow==undefined)	config.options.chkTOCShow=true;
if (config.options.chkTOCIncludeHidden==undefined)	config.options.chkTOCIncludeHidden=false;

// define macro "tableOfContents" to render controls
config.macros.tableOfContents = { label: "contents" };
config.macros.tableOfContents.cmdMax=8; // index of maximum command item

config.macros.tableOfContents.css = '\
.TOC { padding:0.5em 1em 0.5em 1em; }\
.TOC a { padding:0em 0.25em 0em 0.25em; color:inherit; }\
.TOCList { width: 100%; font-size:8pt; margin:0em; }\
';

config.macros.tableOfContents.html = '\
<div style="text-align:right">\
	<span style="float:left">\
	<a href="JavaScript:;" id="TOCMenu" style="padding: 0em;"\
		onclick="onClickTOCMenu(this)" title="show/hide table of contents">%label%</a>\
	</span>\
	<a href="JavaScript:;" id="TOCSmaller" style="display:inline"\
		onclick="resizeTOC(this)" title="reduce list size">&#150;</a>\
	<a href="JavaScript:;" id="TOCLarger"style="display:inline"\
		onclick="resizeTOC(this)" title="increase list size">+</a>\
	<a href="JavaScript:;" id="TOCMaximize"style="display:inline"\
		onclick="resizeTOC(this)" title="maximize/restore list size">=</a>\
</div>\
';

config.macros.tableOfContents.handler = function(place,macroName,params) { 
	var parsedParams = new Array();
	parsedParams['label']=this.label;
	parsedParams['inline']=false;
	while (params.length>0) {
		if (params[0]=="label:none") parsedParams['label']="";
		else if (params[0].substr(0,6)=="label:") parsedParams['label']=params[0].substr(6);
		if (params[0].substr(0,7)=="prompt:") parsedParams['prompt']=params[0].substr(7);
		if (params[0].substr(0,8)=="padding:")parsedParams['padding']=params[0].substr(8);
		if (params[0].substr(0,7)=="margin:") parsedParams['margin']=params[0].substr(7);
		if (params[0].substr(0,5)=="sort:")   parsedParams['sortby']=params[0].substr(5);
		if (params[0].substr(0,5)=="date:")   parsedParams['date']=params[0].substr(5);
		if ((params[0]=="size:auto")||(params[0]=="size:0")) parsedParams['autosize']=true;
		else if (params[0] && (params[0].substr(0,5)=="size:")) parsedParams['requestedSize']=params[0].substr(5);
		if (params[0].substr(0,6)=="width:") parsedParams['width']=params[0].substr(6);
		if (params[0]=="hidelist") parsedParams['hidelist']=true;
		if (params[0]=="inline")   parsedParams['inline']=true;
		if (params[0]=="-title")   parsedParams['hide_title']=true;
		if (params[0]=="-date")    parsedParams['hide_date']=true;
		if (params[0]=="-author")  parsedParams['hide_author']=true;
		if (params[0]=="-creator") parsedParams['hide_creator']=true;
		if (params[0]=="-tags")    parsedParams['hide_tags']=true;
		if (params[0]=="-missing") parsedParams['hide_missing']=true;
		if (params[0]=="-orphans") parsedParams['hide_orphans']=true;
		if (params[0]=="-shadows") parsedParams['hide_shadows']=true;
		params.shift(); 
	}
	setStylesheet(config.macros.tableOfContents.css,"tableOfContents");
	var newTOC=createTiddlyElement(place,parsedParams['inline']?"span":"div",null,"TOC",null)
	if (parsedParams['margin'])	{ newTOC.style.margin=parsedParams['margin']; }
	if (parsedParams['padding'])	{ newTOC.style.padding=parsedParams['padding']; }
	if (parsedParams['label']!="") newTOC.innerHTML=config.macros.tableOfContents.html.replace(/%label%/,parsedParams['label']);
	var newTOCList=createTOCList(newTOC,parsedParams)
	refreshTOCList(newTOCList);
	store.addNotification(null,reloadTOCLists);	// reload listbox after every tiddler change
}

// IE needs explicit global scoping for functions/vars called from browser events
window.onChangeTOCList=onChangeTOCList;
window.onClickTOCList=onClickTOCList;
window.onDblClickTOCList=onDblClickTOCList;
window.reloadTOCLists=reloadTOCLists;
window.refreshTOCList=refreshTOCList;
window.onClickTOCMenu=onClickTOCMenu;
window.resizeTOC=resizeTOC;
	
function createTOCList(place,params) {
	var list = createTiddlyElement(place,"select",null,"TOCList",params['prompt'])
	list.params=params;
	list.onchange=onChangeTOCList;
	list.onclick=onClickTOCList;
	list.ondblclick=onDblClickTOCList;
	list.onkeyup=onKeyUpTOCList;
	list.style.display=config.options.chkTOCShow ? "block" : "none" ;
	list.sortBy=config.options.txtTOCSortBy;
	list.dateFormat="DD MMM YYYY";
	list.requestedSize=config.options.txtTOCListSize;
	list.expandall=false;
	list.cmdMax=config.macros.tableOfContents.cmdMax;
	if (params['hide_title'])   list.cmdMax--;
	if (params['hide_date'])    list.cmdMax--;
	if (params['hide_author'])  list.cmdMax--;
	if (params['hide_creator']) list.cmdMax--;
	if (params['hide_tags'])    list.cmdMax--;
	if (params['hide_missing']) list.cmdMax--;
	if (params['hide_orphans']) list.cmdMax--;
	if (params['hide_shadows']) list.cmdMax--;
	if (params['sortby'])       { list.sortBy=params['sortby']; list.noSortCookie=true; }
	if (params['date'])         { list.dateFormat=params['date']; }
	if (params['autosize'])     { list.autosize=true; list.noSizeCookie=true; }
	if (params['requestedSize']){ list.requestedSize=params['requestedSize']; list.noSizeCookie=true; }
	if (params['width'])        { list.style.width=params['width']; }
	if (params['hidelist'])     { list.style.display ="none" ; list.noShowCookie=true; }
	if (params['expandall'])    { list.expandall=true; }
	return list;
}

function onChangeTOCList() {
	var thisTiddler=this.options[this.selectedIndex].value;
	if ((this.size==1)&&(thisTiddler!='')&&(this.selectedIndex>this.cmdMax))
		story.displayTiddler(null,thisTiddler,1);
	refreshTOCList(this);
	return false;
}
function onClickTOCList(e) {
	if (!e) var e = window.event;
	if (this.size==1) return; // don't toggle display for droplist
	if (e.shiftKey) { this.expandall=!this.expandall; refreshTOCList(this);}
	e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation();
	return true;
}
function onDblClickTOCList(e) {
	if (!e) var e = window.event;
	var thisTiddler=this.options[this.selectedIndex].value;
	if ((thisTiddler!='')&&(this.selectedIndex>this.cmdMax))
		story.displayTiddler(null,thisTiddler,1);
	e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation();
	return false;
}
function onKeyUpTOCList(e) {
	if (!e) var e = window.event;
	if (e.keyCode!=13) return true;
	var thisTiddler=this.options[this.selectedIndex].value;
	if ((thisTiddler!='')&&(this.selectedIndex>this.cmdMax))
		story.displayTiddler(null,thisTiddler,1);
	e.cancelBubble = true; if (e.stopPropagation) e.stopPropagation();
	return false;
}
function reloadTOCLists() {
	var all=document.all? document.all.tags("select") : document.getElementsByTagName("select");
	for (var i=0; i<all.length; i++)
		if (all[i].className=="TOCList")
			{ all[i].selectedIndex=-1; refreshTOCList(all[i]); }
}
 
function refreshTOCList(list) {
	var selectedIndex = list.selectedIndex;
	if (selectedIndex==-1) selectedIndex=0;
	var sortBy = list.sortBy;
	var showHidden = config.options.chkTOCIncludeHidden && !(config.options.chkHttpReadOnly && readOnly);

	if (selectedIndex==0) sortBy=list.sortBy;	// "nnn tiddlers" heading - use previous sort order
	else if (selectedIndex<=list.cmdMax)sortBy=list.value;
	else { if (list.options[list.selectedIndex].value=='') expandTOC(list); return; }

	list.sortBy = sortBy; // save current sort order
	if (!list.noSortCookie) { config.options.txtTOCSortBy=sortBy; saveOptionCookie("txtTOCSortBy"); }

	// get the list of tiddlers
	var tiddlers = [];
	switch (sortBy) {
		case "missing":	tiddlers=store.getMissingLinks(); break;
		case "tags": tiddlers=store.getTags(); break;
		case "orphans":	tiddlers=store.getOrphans(); break;
		case "shadows": for (var t in config.shadowTiddlers) tiddlers.push(t); tiddlers.sort();	break;
		default: tiddlers=store.getTiddlers(sortBy=='creator'?'modifier':sortBy,showHidden?'':'excludeLists'); break;
	}

	// clear current listbox contents
	while (list.length > 0) { list.options[0] = null; }
	list.saved=null;

	// add heading and control items to list
	var i=0;
	var theHeading=tiddlers.length+' tiddlers:';
	if (sortBy=='missing') theHeading=tiddlers.length+' missing tiddlers:';
	if (sortBy=='orphans') theHeading=tiddlers.length+' orphaned tiddlers:';
	if (sortBy=='tags')    theHeading=tiddlers.length+' tags:';
	if (sortBy=='shadows') theHeading=tiddlers.length+' shadow tiddlers:';
	var indent=String.fromCharCode(160)+String.fromCharCode(160);
	var sel=">";
	list.options[i++]=new Option(theHeading,'');
	function headerOpt(txt,val) { return new Option(((sortBy==val)?sel:indent)+' ['+txt+']',val); }
	if (!list.params['hide_title'])   list.options[i++]=headerOpt('by title','title');
	if (!list.params['hide_date'])    list.options[i++]=headerOpt('by date','modified');
	if (!list.params['hide_author'])  list.options[i++]=headerOpt('by author','modifier');
	if (!list.params['hide_creator']) list.options[i++]=headerOpt('by creator','creator');
	if (!list.params['hide_tags'])    list.options[i++]=headerOpt('by tags','tags');
	if (!list.params['hide_missing']) list.options[i++]=headerOpt('missing','missing');
	if (!list.params['hide_orphans']) list.options[i++]=headerOpt('orphans','orphans');
	if (!list.params['hide_shadows']) list.options[i++]=headerOpt('shadows','shadows');
	// output the tiddler list
	switch(sortBy) {
		case "title":
			for (var t = 0; t < tiddlers.length; t++)
				list.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title);
			break;
		case "modified":
		case "modifier":
		case "creator":
			if (sortBy=="modified") tiddlers.reverse(); // show newest first
			if (sortBy=="creator") { // sort by custom field with fallback value
				tiddlers.sort(function (a,b) {
					var v1=a.fields.creator||a.modifier;
					var v2=b.fields.creator||b.modifier;
					return (v1==v2)?0:(v1>v2?1:-1);
				});
			}
			var lastSection = "";
			for (var t = 0; t < tiddlers.length; t++){
				var tiddler = tiddlers[t];
				var theSection = "";
				var m=tiddler.modified;
				if (sortBy=="modified") theSection=m.getFullYear()+'.'+(m.getMonth()+1)+'.'+m.getDate();
				if (sortBy=="modifier") theSection = tiddler.modifier;
				if (sortBy=="creator") theSection=tiddler.fields['creator']||tiddler.modifier;
				if (theSection != lastSection) {
					lastSection = theSection;
					if (sortBy=="modified") theSection = m.formatString(list.dateFormat);
					list.options[i++] = new Option('+ '+theSection,"");
				}
				list.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title);
			}
			expandTOC(list);
			break;
		case "tags":
			// tagged tiddlers, by tag
			var tagcount=0;
			var lastTag = null;
			for (var t = 0; t < tiddlers.length; t++) {  // actually a list of tags, not tiddlers... 
				var theTag = tiddlers[t][0]; var tid=store.getTiddler(theTag);
				if (tid && tid.isTagged('excludeLists')) continue; // skip excluded tags
				var temp = store.getTaggedTiddlers(theTag);
				var tagged=[]; for (var q=0; q<temp.length; q++) // hide excluded tiddlers
					if (!temp[q].isTagged('excludeLists')) tagged.push(temp[q]); 
				if (tagged.length) { tagcount++;
					list.options[i++]=new Option('+ '+theTag+" ("+tagged.length+")","");
					for(var r=0; r<tagged.length; r++)
						list.options[i++]=
							new Option(indent+indent+tagged[r].title,tagged[r].title);
				}
			}
			// count untagged tiddlers
			var temp = store.getTiddlers("title");
			var c=0; for (var r=0; r<temp.length;r++) if (!temp[r].tags.length) c++;
			// create 'pseudo-tag' listing untagged tiddlers (if any)
			if (c>0) {
				list.options[i++] = new Option("+ untagged ("+c+")","");
				for (var r=0; r<temp.length;r++) if (!temp[r].tags.length)
					list.options[i++] = new
						Option(indent+indent+temp[r].title,temp[r].title);
			}
			list.options[0].text=tagcount+' tags:';
			expandTOC(list);
			break;
		case "missing": case "orphans": case "shadows":
			for (var t = 0; t < tiddlers.length; t++)
				list.options[i++] = new Option(tiddlers[t],tiddlers[t]);
			break;
	}
	list.selectedIndex=selectedIndex; // select current control item
	list.size = (list.autosize)?list.options.length:list.requestedSize;
}

// show/hide branch of TOCList based on current selection
function expandTOC(list) {
	var selectedIndex = list.selectedIndex;
	if (selectedIndex==-1) selectedIndex=0;
	var sortBy = list.sortBy;

	// don't collapse/expand list for alpha-sorted "flatlist" TOC contents
	// or list control items
	if ((sortBy=="title")||(sortBy=="missing")||(sortBy=="orphans")||(sortBy=="shadows")) return;
	if ((selectedIndex>0)&&(selectedIndex<=list.cmdMax)) return;

	// get current selected text/value and cache the 
	// complete list.  Then clear the current list contents
	var theText = list.options[selectedIndex].text;
	var theValue = list.options[selectedIndex].value;
	if (!list.saved) {
		list.saved=new Array();
		for (var i=0;i<list.length;i++) list.saved[i]=list.options[i];
	}
	while (list.length > 0) { list.options[0] = null; }

	// put back heading items until item text matches current selected heading
	var i=0;
	for (var t=0; t<list.saved.length; t++) {
		var opt=list.saved[t];
		if (list.expandall||(opt.value=='')||(i<=list.cmdMax)) list.options[i++] = opt;
		if (opt.text==theText) break;
	}
	selectedIndex=i-1;	// this is the NEW index of the current selected heading
	// put back items with value!='' until value==''
	for ( t++; t<list.saved.length; t++) {
		var opt=list.saved[t];
		if (list.expandall||opt.value!='') list.options[i++] = opt;
		if (opt.value=='') break;
	}
	// put back remaining items with value==''
	for ( ; t<list.saved.length; t++) {
		var opt=list.saved[t];
		if (list.expandall||opt.value=='') list.options[i++] = opt;
	}
	list.selectedIndex = selectedIndex;
	list.size = (list.autosize)?list.options.length:list.requestedSize;
}

// these functions process clicks on the 'control links' that are displayed above the listbox
function getTOCListFromButton(which) {
	var list = null;
	switch (which.id) {
		case 'TOCMenu':
			var theSiblings = which.parentNode.parentNode.parentNode.childNodes;
			var thePlace=which.parentNode.parentNode.parentNode.parentNode.parentNode.id;
			break;
		case 'TOCSmaller': case 'TOCLarger': case 'TOCMaximize':
			var theSiblings = which.parentNode.parentNode.childNodes;
			var thePlace=which.parentNode.parentNode.parentNode.parentNode.id;
			break;
	}
	for (var k=0; k<theSiblings.length; k++)
		if (theSiblings[k].className=="TOCList") { list=theSiblings[k]; break; }
	return list;
}
function onClickTOCMenu(which) {
	var list=getTOCListFromButton(which); if (!list) return;
	var opening = list.style.display=="none";
	if(config.options.chkAnimate) anim.startAnimating(new Slider(list,opening,false,"none"));
	else list.style.display = opening ? "block" : "none" ;
	if (!list.noShowCookie) { config.options.chkTOCShow = opening; saveOptionCookie("chkTOCShow"); }
	return(false);
}
function resizeTOC(which) {
	var list=getTOCListFromButton(which); if (!list) return;
	var size = list.size;
	if (list.style.display=="none")	// make sure list is visible
		if(config.options.chkAnimate) anim.startAnimating(new Slider(list,true,false,"none"));
		else list.style.display = "block" ;
	switch (which.id) {
		case 'TOCSmaller':	// decrease current listbox size
			if (list.autosize) { list.autosize=false; size=config.options.txtTOCListSize; }
			if (size==1)	break;
			size -= 1;	// shrink by one line
			list.requestedSize = list.size = size;
			break;
		case 'TOCLarger':	// increase current listbox size
			if (list.autosize) { list.autosize=false; size=config.options.txtTOCListSize; }
			if (size>=list.options.length)	break;
			size += 1;	// grow by one line
			list.requestedSize = list.size = size;
			break;
		case 'TOCMaximize':	// toggle autosize
			list.autosize  = (list.size!=list.options.length);
			list.size = (list.autosize)?list.options.length:list.requestedSize;
			break;
	}
	if (!list.noSizeCookie && !list.autosize)
		{ config.options.txtTOCListSize=size; saveOptionCookie("txtTOCListSize"); }
}
//}}}
/***
|''Name:''|TableSortingPlugin|
|''Description:''|Dynamically sort tables by clicking on column headers|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tw.lewcid.org/#TableSortingPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|2.02|
|''Date:''|25-01-2008|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|
!!Usage:
* Make sure your table has a header row
** {{{|Name|Phone Number|Address|h}}}<br> Note the /h/ that denote a header row 
* Give the table a class of 'sortable'
** {{{
|sortable|k
|Name|Phone Number|Address|h
}}}<br>Note the /k/ that denotes a class name being assigned to the table.
* To disallow sorting by a column, place {{{<<nosort>>}}} in it's header
* To automatically sort a table by a column, place {{{<<autosort>>}}} in the header for that column
** Or to sort automatically but in reverse order, use {{{<<autosort reverse>>}}}

!!Example:
|sortable|k
|Name |Salary |Extension |Performance |File Size |Start date |h
|ZBloggs, Fred |$12000.00 |1353 |+1.2 |74.2Kb |Aug 19, 2003 21:34:00 |
|ABloggs, Fred |$12000.00 |1353 |1.2 |3350b |09/18/2003 |
|CBloggs, Fred |$12000 |1353 |1.200 |55.2Kb |August 18, 2003 |
|DBloggs, Fred |$12000.00 |1353 |1.2 |2100b |07/18/2003 |
|Bloggs, Fred |$12000.00 |1353 |01.20 |6.156Mb |08/17/2003 05:43 |
|Turvey, Kevin |$191200.00 |2342 |-33 |1b |02/05/1979 |
|Mbogo, Arnold |$32010.12 |2755 |-21.673 |1.2Gb |09/08/1998 |
|Shakespeare, Bill |£122000.00|3211 |6 |33.22Gb |12/11/1961 |
|Shakespeare, Hamlet |£9000 |9005 |-8 |3Gb |01/01/2002 |
|Fitz, Marvin |€3300.30 |5554 |+5 |4Kb |05/22/1995 |

***/
// /%
//!BEGIN-PLUGIN-CODE
config.tableSorting = {
	
	darrow: "\u2193",
	
	uarrow: "\u2191",
	
	getText : function (o) {
		var p = o.cells[SORT_INDEX];
		return p.innerText || p.textContent || '';
	},
	
	sortTable : function (o,rev) {
		SORT_INDEX = o.getAttribute("index");
		var c = config.tableSorting;
		var T = findRelated(o.parentNode,"TABLE");
		if(T.tBodies[0].rows.length<=1) 
			return;
		var itm = "";
		var i = 0;
		while (itm == "" && i < T.tBodies[0].rows.length) {
			itm = c.getText(T.tBodies[0].rows[i]).trim();
			i++;
		}
		if (itm == "") 
			return; 	
		var r = [];
		var S = o.getElementsByTagName("span")[0];		
		c.fn = c.sortAlpha; 
		if(!isNaN(Date.parse(itm)))
			c.fn = c.sortDate; 
		else if(itm.match(/^[$|£|€|\+|\-]{0,1}\d*\.{0,1}\d+$/)) 
			c.fn = c.sortNumber; 
		else if(itm.match(/^\d*\.{0,1}\d+[K|M|G]{0,1}b$/)) 
			c.fn = c.sortFile; 
		for(i=0; i<T.tBodies[0].rows.length; i++) {
			 r[i]=T.tBodies[0].rows[i]; 
		} 
		r.sort(c.reSort);
		if(S.firstChild.nodeValue==c.darrow || rev) {
			r.reverse();
			S.firstChild.nodeValue=c.uarrow;
		} 
		else 
			S.firstChild.nodeValue=c.darrow;
		var thead = T.getElementsByTagName('thead')[0]; 
		var headers = thead.rows[thead.rows.length-1].cells;
		for(var k=0; k<headers.length; k++) {
			if(!hasClass(headers[k],"nosort"))
				addClass(headers[k].getElementsByTagName("span")[0],"hidden");
		}
		removeClass(S,"hidden");
		for(i=0; i<r.length; i++) { 
			T.tBodies[0].appendChild(r[i]);
			c.stripe(r[i],i);
			for(var j=0; j<r[i].cells.length;j++){
				removeClass(r[i].cells[j],"sortedCol");
			}
			addClass(r[i].cells[SORT_INDEX],"sortedCol");
		}
	},
	
	stripe : function (e,i){
		var cl = ["oddRow","evenRow"];
		i&1? cl.reverse() : cl;
		removeClass(e,cl[1]);
		addClass(e,cl[0]);
	},
	
	sortNumber : function(v) {
		var x = parseFloat(this.getText(v).replace(/[^0-9.-]/g,''));
		return isNaN(x)? 0: x;
	},
	
	sortDate : function(v) {
		return Date.parse(this.getText(v));
	},

	sortAlpha : function(v) {
		return this.getText(v).toLowerCase();
	},
	
	sortFile : function(v) { 		
		var j, q = config.messages.sizeTemplates, s = this.getText(v);
		for (var i=0; i<q.length; i++) {
			if ((j = s.toLowerCase().indexOf(q[i].template.replace("%0\u00a0","").toLowerCase())) != -1)
				return q[i].unit * s.substr(0,j);
		}
		return parseFloat(s);
	},
	
	reSort : function(a,b){
		var c = config.tableSorting;
		var aa = c.fn(a);
		var bb = c.fn(b);
		return ((aa==bb)? 0 : ((aa<bb)? -1:1));
	}
};

Story.prototype.tSort_refreshTiddler = Story.prototype.refreshTiddler;
Story.prototype.refreshTiddler = function(title,template,force,customFields,defaultText){
	var elem = this.tSort_refreshTiddler.apply(this,arguments);
	if(elem){
		var tables = elem.getElementsByTagName("TABLE");
		var c = config.tableSorting;
		for(var i=0; i<tables.length; i++){
			if(hasClass(tables[i],"sortable")){
				var x = null, rev, table = tables[i], thead = table.getElementsByTagName('thead')[0], headers = thead.rows[thead.rows.length-1].cells;
				for (var j=0; j<headers.length; j++){
					var h = headers[j];
					if (hasClass(h,"nosort"))
						continue;
					h.setAttribute("index",j);
					h.onclick = function(){c.sortTable(this); return false;};
					h.ondblclick = stopEvent;
					if(h.getElementsByTagName("span").length == 0)
						createTiddlyElement(h,"span",null,"hidden",c.uarrow); 
					if(!x && hasClass(h,"autosort")) {
						x = j;
						rev = hasClass(h,"reverse");
					}
				}
				if(x)
					c.sortTable(headers[x],rev);		
			}
		}
	}
	return elem; 
};

setStylesheet("table.sortable span.hidden {visibility:hidden;}\n"+
	"table.sortable thead {cursor:pointer;}\n"+
	"table.sortable .nosort {cursor:default;}\n"+
	"table.sortable td.sortedCol {background:#ffc;}","TableSortingPluginStyles");

function stopEvent(e){
	var ev = e? e : window.event;
	ev.cancelBubble = true;
	if (ev.stopPropagation) ev.stopPropagation();
	return false;	
}	

config.macros.nosort={
	handler : function(place){
		addClass(place,"nosort");
	}	
};

config.macros.autosort={
	handler : function(place,m,p,w,pS){
		addClass(place,"autosort"+" "+pS);		
	}	
};
//!END-PLUGIN-CODE
// %/
/***
|Name|TaggedTemplateTweak|
|Source|http://www.TiddlyTools.com/#TaggedTemplateTweak|
|Documentation|http://www.TiddlyTools.com/#TaggedTemplateTweakInfo|
|Version|1.6.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|use alternative ViewTemplate/EditTemplate for specific tiddlers|
This plugin extends the core function, story.chooseTemplateForTiddler(), so that any given tiddler can be viewed and/or edited using alternatives to the standard tiddler templates.
!!!!!Documentation
>see [[TaggedTemplateTweakInfo]]
!!!!!Revisions
<<<
2009.09.02 [1.6.1] apply field-based template (if any) *before* tag-based template
| please see [[TaggedTemplateTweakInfo]] for previous revision details |
2007.06.11 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.TaggedTemplateTweak= {major: 1, minor: 6, revision: 1, date: new Date(2009,9,2)};

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

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

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

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

	// look for template using tags as prefix
	var tiddler=store.getTiddler(title);
	if (!tiddler) return coreTemplate; // tiddler doesn't exist... use core result
	for (i=0; i<tiddler.tags.length; i++) {
		var t=tiddler.tags[i]+template; // add tag prefix to template
		var c=t.substr(0,1).toUpperCase()+t.substr(1); // capitalized for WikiWord title
		if (store.getTiddlerText(theme+t))	{ return theme+t; } // theme##tagTemplate
		if (store.getTiddlerText(theme+c))	{ return theme+c; } // theme##TagTemplate
		if (store.getTiddlerText(t)) 		{ return t; }	    // tagTemplate
		if (store.getTiddlerText(c))		{ return c; }	    // TagTemplate
	}
	
	// no match... use core result
	return coreTemplate;
}
//}}}
/***
|Name|TaggedTemplateTweakInfo|
|Source|http://www.TiddlyTools.com/#TaggedTemplateTweak|
|Documentation|http://www.TiddlyTools.com/#TaggedTemplateTweakInfo|
|Version|1.6.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|documentation|
|Description|Documentation for TaggedTemplateTweak|
This plugin extends the core function, story.chooseTemplateForTiddler(), so that any given tiddler can be viewed and/or edited using alternatives to the standard tiddler templates.  To select alternative templates, a 'template prefix' is determined by using the tiddler's title or matching a tag value or using a value stored in a custom tiddler field.  
!!!!!Usage
<<<
The plugin first attempts to use the tiddler's //title// as a prefix added to the standard TiddlyWiki template titles, [[ViewTemplate]] and [[EditTemplate]] (i.e., ''TiddlerNameViewTemplate'' and ''TiddlerNameEditTemplate'').  This allows you to associate a custom template with a specific tiddler, without needing to add any special tags or custom field values to that individual tiddler.  

You can also define a tiddler's template prefix by using a //custom tiddler field// named 'template'.  If no corresponding template was found using the tiddler's title, then the tiddler's 'template' field value, if present, will be used as a prefix (e.g., if template='SomeThing', then [[SomeThingViewTemplate]] will be applied).
*You can redefine the //name// of the custom field used to store the template prefix.  For example, to use the name of a TiddlyWeb server-side 'bag' as a prefix (so that tiddlers from separate bags can have different appearances), add the following to a tiddler tagged with<<tag systemConfig>>:

If no template is found using the either the title or 'template' field, then each of the tiddler's tags is tried as a template prefix, until a corresponding template, if any, is found.  For example, any tiddlers that are tagged with ''<<tag media>>'' could find alternative templates named [[mediaViewTemplate]] and [[mediaEditTemplate]].
*To permit use of templates that have proper WikiWord tiddler titles (e.g., [[MediaViewTemplate]] and [[MediaEditTemplate]]), the plugin also attempts to use a capitalized form of the tag value (e.g., ''Media'') as a prefix.  //This capitalization is for comparison purposes only and will not alter the actual tag values that are stored in the tiddler.//
*If you are applying a systemTheme definition, the plugin also tries prepending the currently selected theme (specified by {{{config.options.txtTheme}}}) plus the 'section separator' (##) to the template name (e.g. ''[[SomeTheme##MediaViewTemplate]]'') so that the alternative template definitions can be contained as //sections// within a single systemTheme tiddler.
{{{
config.options.txtTemplateTweakFieldname='server.bag'; // use TiddlyWeb bag name as prefix
}}}
Lastly, if no alternative template is found at all, the standard [[ViewTemplate]] or [[EditTemplate]] definition as determined by the TiddlyWiki core handler is used.

''To add your own custom templates:''
>First, decide upon a suitable tag keyword to uniquely identify your custom templates and create custom view and/or edit templates using that keyword as a prefix (e.g., "KeywordViewTemplate" and "KeywordEditTemplate").  Then, simply create a tiddler and tag it with your chosen keyword... that's it!  As long as the tiddler is tagged with your keyword, it will be displayed using the corresponding alternative templates.  If you remove the tag or rename/delete the alternative templates, the tiddler will revert to using the standard viewing and editing templates.
<<<
!!!!!Examples
<<<
|Sample tiddler| tag | view template | edit template |
|[[MediaSample - QuickTime]]| <<tag media>> | [[MediaViewTemplate]] | [[MediaEditTemplate]] |
|[[MediaSample - Windows]]| <<tag media>> | [[MediaViewTemplate]] | [[MediaEditTemplate]] |
|[[CDSample]]| <<tag CD>> | [[CDViewTemplate]] | [[CDEditTemplate]] |
|<<newTiddler label:"create new task..." title:SampleTask tag:task text:"Type some text and then press DONE to view the task controls">> | <<tag task>> | [[TaskViewTemplate]] | [[EditTemplate]] |

//(note: if these samples are not present in your document, please visit// http://www.TiddlyTools.com/ //to view these sample tiddlers on-line)//
<<<
!!!!!Revisions
<<<
2009.09.02 1.6.1 apply field-based template (if any) *before* tag-based template
2009.07.31 1.6.0 added support for using custom field value as prefix
2009.05.04 1.5.2 check for tiddler exist *after* title-as-prefix (allows shadow tiddlers to use custom templates)
2009.01.06 1.5.1 reversed logic so that title-as-prefix takes precedence over tag-matched prefix
2008.12.18 1.5.0 added handling for using tiddler //title// as prefix (e.g., {{{SomeTiddlerViewTemplate}}}) 
2008.08.29 1.4.1 corrected handling for tiddlers with no matching tagged template when non-default theme is in effect (e.g., use "MyTheme##ViewTemplate").
2008.05.15 1.4.0 support use of *shadow* tagged templates (e.g., [[DiscussionViewTemplate]] created by [[DiscussionPlugin]])
2008.05.10 1.3.0 corrected handling for determining core template when using theme with sections
2008.05.01 1.2.5 added support for tagged templates stored as sections in a theme
2008.04.01 1.2.0 added support for using systemTheme section-based template definitions (requested by Phil Hawksworth)
2008.01.22 [*.*.*] plugin size reduction - documentation moved to [[TaggedTemplateTweakInfo]]
2007.06.23 1.1.0 re-written to use automatic 'tag prefix' search instead of hard coded check for each tag.  Allows new custom tags to be used without requiring code changes to this plugin.
2007.06.11 1.0.0 initial release
<<<
/***
| Name:|TagglyTaggingPlugin|
| Description:|tagglyTagging macro is a replacement for the builtin tagging macro in your ViewTemplate|
| Version:|6.1.5|
| Date:|05-Oct-2006|
| Source:|http://mptw.tiddlyspot.com/#TagglyTaggingPlugin|
| Author:|Simon Baird <simon.baird@gmail.com>|
| CoreVersion:|2.1.x|
!!See also:
* [[1. What is TagglyTagging?]] 
* [[2. What's different about TagglyTagging?]] 
* [[3. Why use TagglyTagging?]] 
* [[4. How do I install it?]]
* [[5. Where did it come from?]] 
!!Notes
See http://mptw.tiddlyspot.com/#TagglyTagging
***/
//{{{
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':"
		},

		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"
		}
	},

	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"]
		},
		valuePrefix: "taggly."
	},

	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(),null);
		// 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.getTaggedTiddlers(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) {
		switch(this.getTagglyOpt(title,"listMode")) {
			case "group":  return this.createTagglyListGrouped(place,title); break;
			case "normal": return this.createTagglyListNormal(place,title,false); break;
			case "commas": return this.createTagglyListNormal(place,title,true); break;
			case "sitemap":return this.createTagglyListSiteMap(place,title); break;
		}
	},

	getTaggingCount: function(title) {
		// thanks to Doug Edmunds
		if (this.config.showTaggingCounts) {
			var tagCount = store.getTaggedTiddlers(title).length;
			if (tagCount > 0)
				return " ("+tagCount+")";
		}
		return "";
	},

	// this is for normal and commas mode
	createTagglyListNormal: function(place,title,useCommas) {

		var list = store.getTaggedTiddlers(title,this.getTagglyOpt(title,"sortBy"));

		if (this.getTagglyOpt(title,"sortOrder") == "desc")
			list = list.reverse();

		var output = [];
		for (var i=0;i<list.length;i++) {
			var countString = this.getTaggingCount(list[i].title);
			if (useCommas)
				output.push((i > 0 ? ", " : "") + "[[" + list[i].title + "]]" + countString);
			else
				output.push("*[[" + list[i].title + "]]" + countString + "\n");
		}

		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) {
		var sortBy = this.getTagglyOpt(title,"sortBy");
		var sortOrder = this.getTagglyOpt(title,"sortOrder");

		var list = store.getTaggedTiddlers(title,sortBy);

		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 (!allTagsHolder[list[i].tags[j]])
						allTagsHolder[list[i].tags[j]] = "";

					allTagsHolder[list[i].tags[j]] += "**[["+list[i].title+"]]"
									+ this.getTaggingCount(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++)
			leftOverOutput += "*[["+leftOvers[i]+"]]" + this.getTaggingCount(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++)
			output.push("*[["+allTags[i]+"]]" + this.getTaggingCount(leftOvers[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) {

		var list = store.getTaggedTiddlers(title,sortBy);
		if (sortOrder == "desc")
			list.reverse();

		var indent = "";
		for (var j=0;j<depth;j++)
			indent += "*"

		var childOutput = "";
		for (var i=0;i<list.length;i++)
			if (list[i].title != title)
				childOutput += this.treeTraverse(list[i].title,depth+1,sortBy,sortOrder);

		if (depth == 0)
			return childOutput;
		else
			return indent + "[["+title+"]]" + this.getTaggingCount(title) + "\n"+childOutput;
	},

	// this if for the site map mode
	createTagglyListSiteMap: function(place,title) {
		var output = this.treeTraverse(title,0,this.getTagglyOpt(title,"sortBy"),this.getTagglyOpt(title,"sortOrder"));
		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 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);
        			refreshContainer.setAttribute("title",tiddler.title);
				this.refresh(refreshContainer);
			},

			refresh: function(place) {
				var title = place.getAttribute("title");
				removeChildren(place);
				if (store.getTaggedTiddlers(title).length > 0) {
					var lingo = config.taggly.lingo;
					config.taggly.createListControl(place,title,"hideState");
					if (config.taggly.getTagglyOpt(title,"hideState") == "show") {
						createTiddlyElement(place,"span",null,"tagglyLabel",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,"numCols");
						config.taggly.createTagglyList(place,title);
					}
				}
			}
		}
	},

	// todo fix these up a bit
	styles: 
"/*{{{*/\n"+
"/* created by TagglyTaggingPlugin */\n"+
".tagglyTagging { padding-top:0.5em; }\n"+
".tagglyTagging li.listTitle { display:none; }\n"+
".tagglyTagging ul {\n"+
"	margin-top:0px; padding-top:0.5em; padding-left:2em;\n"+
"	margin-bottom:0px; padding-bottom:0px;\n"+
"}\n"+
".tagglyTagging { vertical-align: top; margin:0px; padding:0px; }\n"+
".tagglyTagging table { margin:0px; padding:0px; }\n"+
".tagglyTagging .button { display:none; margin-left:3px; margin-right:3px; }\n"+
".tagglyTagging .button, .tagglyTagging .hidebutton {\n"+
"	color:[[ColorPalette::TertiaryLight]]; font-size:90%;\n"+
"	border:0px; padding-left:0.3em;padding-right:0.3em;\n"+
"}\n"+
".tagglyTagging .button:hover, .hidebutton:hover {\n"+
"	background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];\n"+
"}\n"+
".selected .tagglyTagging .button {\n"+
"	display:inline;\n"+
"}\n"+
".tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }\n"+
".selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }\n"+
".tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }\n"+
".tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }\n"+
".tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}\n"+
".tagglyTagging ul ul li {margin-left:0.5em; }\n"+
".editLabel { font-size:90%; padding-top:0.5em; }\n"+
".tagglyTagging .commas { padding-left:1.8em; }\n"+
"/*}}}*/\n"+
		"",

	init: function() {
		merge(config.macros,this.macros);
		config.shadowTiddlers["TagglyTaggingStyles"] = this.styles;
		if (store)
			store.addNotification("TagglyTaggingStyles",refreshStyles);
		else
			config.notifyTiddlers.push({name:"TagglyTaggingStyles", notify: refreshStyles});
	}
};

config.taggly.init();

//}}}

/*{{{*/
/* 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;
}
/*}}}*/
From [[Strategies for the Development of Environmental Education at the National Level|Tbilisi Recommendations: Strategies for the Development of Environmental Education at the National Level]] in the [[Recommendations of the Tbilisi Intergovernmental Conference on Environmental Education]]
!!!Content and methods
''Recommendation No. 12''

The Conference,

//Considering//:
* that the separate disciplines which may bear on environmental issues are often taught in isolation from each other and may tend to neglect or pay insufficient attention to environmental problems,
* that separate as well as interdisciplinary approaches both have important parts to play, depending on situations, learning groups and age levels,
* that teaching methods for either type of approach are still in the process of development,
* that the incorporation of environmental education into existing curricula or teaching programmes is often slow,
* that the criteria on which to base the content of environmental education programmes and curricula are also in need of further development,
* that socio-economic conditions determine different educational aspects,
* that historic and cultural landscapes and situations also demand special consideration,
* that particular sections of the community, such as farmers, rural inhabitants, managers, industrial workers and parents, need specially adapted environmental education programmes,
* that in most if not all programmes and curricula, the teaching of ecological concepts plays a fundamentally important role,
* that interdisciplinary approaches are essential for the enhancement of environmental education,
* that interdisciplinary approaches cannot be achieved without the active participation of teachers,
* that the interdisciplinary or integrated approaches cannot be effectively implemented without the simultaneous development of instructional materials,
* that environmental education should preferably be oriented towards the solution of problems (problem-solving approach) and be concerned with opportunities for action (action-oriented approach),
* that research relevant to these different approaches, aspects and methods is needed, to provide a sound basis for the development of environmental curricula and programmes,
* that institutions for such research variously require establishment, development or support,
//Recommends// to Member States:
* that the relevant authorities initiate, continue and strengthen - as circumstances may require -their efforts for incorporation of environmental issues in the various disciplines and subjects of the formal education system;
* that educational and training institutions should have the necessary flexibility to enable them to include appropriate aspects of environmental education within existing curricula and to create new environmental curricula that meet the requirements of an interdisciplinary approach and methodology;
* that relevant authorities work out criteria on which to base the environmental content of the curricula to be offered to pupils and students according to individual needs and taking into account local, social, occupational and other factors;
* that within the framework of individual systems, encouragement and support might be provided for subject disciplines to identify and give priority to their special contribution to environmental education; and for those responsible for the planning and carrying out of programmes of general and vocational education to encourage that through interdepartmental collaboration and co-ordination, environmental aims and objectives are adequately served;
* that they examine the potential of appropriate institutions to carry out research into the development of curricula and programmes in environmental education and encourage necessary initiatives, including institutional co-operation;
* that responsible authorities support curriculum development as it relates to particular situations such as exist in urban areas, rural areas and areas of social, historical and cultural importance, and to the needs of particular groups such as farmers, industrial workers and parents;
* that institutions engaged in the development of curricula, teaching programmes and materials for environmental education study the problems linked with single subject, multidisciplinary and interdisciplinary approaches respectively; consider the suitability of each approach to different situations and learning groups; and identify the potentially most effective contributions of, for example, the natural sciences, the social sciences and technology;
* that in all approaches full and adequate emphasis is given to the teaching of ecological concepts, to the systems of the atmosphere, lithosphere, hydrosphere and biosphere and to relevant socio-economic aspects;
* that relevant institutions be encouraged to concern themselves with programmes of initial and in-service training for teachers, in the production of materials and the dissemination of information;
* that research and development programmes should preferably be problem- and action-oriented;
* that in areas of special significance for the historical and cultural heritage, policies of environmental education should be accompanied by positive strategies for socio-economic development.
''Recommendation No. 13''

The Conference,

//Considering//:
* that universities - as centres for research, teaching and training of qualified personnel for the nation - must be increasingly available to undertake research concerning environmental education and to train experts in formal and non-formal education, and
* that environmental education in colleges and universities will become increasingly different from traditional education and will teach students essential basic knowledge for work in their future profession, which will benefit their environment,
//Recommends// to Member States:
* to review the present potential of the universities for conducting research, especially fundamental research, concerning environmental education;
* to encourage acceptance of the fact that, besides subject-oriented environmental education, interdisciplinary treatment of the basic problems of the interrelationships between people and their environment is necessary for students in all fields, not only natural and technical sciences but also social sciences and arts, because the relationships between nature, technology and society mark and determine the development of a society;
* to develop different teaching aids and textbooks on the theoretical bases of environmental protection for all special fields to be written by leading scientists as soon as possible;
* to develop close co-operation between different university institutions (departments, faculties, etc.) with the specific objective of training experts in environmental education;
* such co-operation might assume different forms in line with the structure of university education in each country, but should combine contributions from physics, chemistry, biology, ecology, geography, socio-economic studies, ethics, education sciences, and aesthetic education, etc.
''Recommendation No. 14''

The Conference,

//Recommends// to Member States:

That curricula for those undertaking vocational technical education should include information about the environmental changes which result from the sort of work they will do. Vocational education so modified should promote increased awareness of the relationship between people and their social, physical and cultural environment, and foster a desire to improve the environment through influencing decision-making processes;

That emphasis should be given in vocational technical education to:
* environmental implications for workers in each vocation;
* the collective effects of related vocations upon the environment. These objectives could be achieved:
* by incorporating environmental objectives into in-service training for those already at work; and
* by fully integrating environmental issues from the beginning of vocational technical education.
//Invites// Unesco:

To undertake, in co-operation with UNEP and other relevant United Nations bodies, appropriate measures to ensure that environmental education will receive adequate attention in the field of vocational training, particularly in the preparation of their programmes.

''Recommendation No. 15''

The Conference,

//Considering// that the work environment constitutes a local environment, influencing those affected by it physically as well as socially and psychologically,

//Regarding// the work environment as a natural learning situation for a major part of the adult population and consequently as an excellent starting point for adult environmental education,

//Considering// that the universal importance of the work environment makes it desirable to introduce this aspect of environmental education in primary and secondary schools as well as in further and adult education,

//Recalling// the work already done by the International Labour Organisation in this field,

//Recommends// that Member States adopt the following objectives as guidelines for their policies concerning education on the work environment:
* students in primary and secondary education should be provided with a general knowledge of the work environment and its problems;
* education for specific trades and professions should include education concerning the work environment of the particular trade or profession, including information about medical standards for permissible levels of environmental pollution, noise, vibration, radiation and other factors affecting people and also about the system of measures for monitoring their enforcement. Continuing education on this aspect should also be made available;
* decision-makers, consultants and other key persons influencing the working environment should be educated so as to become aware of the problems of the work environment, suggest solutions and ways to implement them. They, too, should be given the possibility of specialization and further education;
* education should be offered to workers, giving them the possibility of acquiring such knowledge about the work environment as is relevant to their job;
* persons assigned to teaching others about the problems of the work environment should be given an appropriate education.
''Recommendation No.  16''

The Conference,

//Considering// the great potential of consumers to influence indirectly through their individual and collective consumption behaviour the impact of consumption on the environment and on the use of the world's natural resources,

//Considering// further that those who produce and advertise goods are responsible for direct and indirect impact on the environment,

//Recognizing// the great influence of the mass media on consumer behaviour, especially through commercial programmes and advertisements,

//Considering//, lastly, the growing interest shown by consumers' organizations and the important role they can have in educating consumers about environmentally detrimental behaviour and wasteful use of consumer goods,

//Recommends// to Member States:
* that they encourage national consumer organizations and producers and consumers in general to give more attention to environmentally detrimental consumption behaviour and the possible harmful and wasteful use of consumer goods; in particular consumers should be made conscious of the mechanisms available for influencing the production of such goods;
* that they encourage the mass media to be conscious of their educational role in forming consumption behaviour, so as to avoid encouraging the consumption of goods which are detrimental to the environment;
* that the appropriate educational authorities encourage the inclusion of such aspects in the programmes of formal and non-formal education.
From [[Strategies for the Development of Environmental Education at the National Level|Tbilisi Recommendations: Strategies for the Development of Environmental Education at the National Level]] in the [[Recommendations of the Tbilisi Intergovernmental Conference on Environmental Education]]
!!!Dissemination of information
''Recommendation No. 20''

The Conference,

//Considering// it beyond doubt that the dissemination of specialized and general knowledge on the environment and the development of public awareness of the need for a correct approach to the complex problems of the environment are of tremendous and possibly crucial importance, both for further economic development and rational use of the earth's resources for the good of individual nations and of humanity as a whole,

//Recognizing// the important role of governments in many countries in the design, execution and development of environmental education programmes,

//Recognizing// the importance of the mass media for environmental education in both formal and non-formal education,

(a) ''Environmental information programmes and strategies''

//Recommends// to Member States that they envisage a public information campaign on nationally and regionally relevant environmental problems, such as fresh water, to promote the general education of the public, and to be conducted over the next few years by the various Member States acting as far as possible in a concerted fashion;

//Recommends// that governments support non-formal environmental education activities conducted by institutions and associations, including youth organizations;

//Recommends// that governments set up or encourage the setting up of formal and non-formal environmental education programmes, and in so doing use existing bodies and organizations if possible (both public and private); develop the exchange of relevant material and information between public bodies and private organizations concerned with environmental education in the formal and non-formal education sector;

//Recommends// that Member States implement and develop environmental education programmes for all sectors of the population, associating in them, as appropriate, the non-governmental organizations concerned;

//Recommends// to Unesco that it take initiative with other Specialized Agencies of the United Nations system involved in environmental education programmes to establish procedures for achieving greater co-ordination in this field;

//Recommends// to the Member States that they encourage and develop the organization of museums and exhibitions in order to increase public awareness of environmental issues and environmental education;

//Invites// the Director-General of Unesco to encourage more effective dissemination among Member States of information about environmental education activities, the results achieved and the possibilities for putting them into effect;

(b) ''Environmental information through mass media''

//Recommends// to Member States that they encourage the dissemination of knowledge about the protection and improvement of the environment by means of press, radio and television;

//Recommends// that Member States organize training courses for journalists, newspaper editors, radio and television producers and other appropriate mass media personnel, which will enable them to deal properly with environmental issues and education, and to exchange among countries, programmes and films dealing with environmental issues;

//Recommends// to Member States that the planning and co-ordination of environmental education programmes provide for suitable measures to ensure their reaching broad sectors of the urban and rural population not included in formal education, by means, for example, of the mass media and with the participation of social organizations;

//Recommends// to Unesco, in co-operation with UNEP, that it encourage //national, regional and international organizations// to establish a network for the exchange of information on mass media materials for environmental education for each region.
From [[Strategies for the Development of Environmental Education at the National Level|Tbilisi Recommendations: Strategies for the Development of Environmental Education at the National Level]] in the [[Recommendations of the Tbilisi Intergovernmental Conference on Environmental Education]]
!!!Environmental education for the general public
''Recommendation No. 9''

The Conference,

//Considering// the need for environmental education programmes which introduce awareness among the general public of its own environment and the dangers to which it may be exposed,

//Realizing// the importance of active participation of the general public in solving the environmental problems of contemporary society,

//Invites// the Director-General of Unesco to work out model programmes of environmental education for the general public with a view to providing citizens with adequate background of knowledge and information, enabling them to take part in decisions concerning their environment; and

//Recommends// to Member States that environmental education strategies in their countries include the preparation of programmes which provide information on present or planned activities with major potential impact on the environment. Such programmes should stress the importance of participation by the general public and non-governmental organizations in the relevant decision-making process. The programmes should present possible solutions to the problems in question and aim at developing a responsible attitude in participants.
From [[Strategies for the Development of Environmental Education at the National Level|Tbilisi Recommendations: Strategies for the Development of Environmental Education at the National Level]] in the [[Recommendations of the Tbilisi Intergovernmental Conference on Environmental Education]]
!!! Environmental education of professionals
''Recommendation No. 10''

The Conference //recommends// to Member States that the training of professionals, such as economists, business administrators, architects, planners, forest managers, engineers, technicians and others whose activities, while not specifically in the field of environmental planning and management, nevertheless directly or indirectly have a major impact on the environment, include a common core of interdisciplinary environmental studies dealing with both the natural and human environments and related to their professions. In addition, special attention should be given to the development of suitable methodologies and organizational arrangements.

''Recommendation No. 11''

The Conference,

//Considering// that the work of many professionals (such as engineers, architects, administrators and planners of all types) has a great effect on the environment,

//Recommends// to Member States that incentives should be provided for such professionals to undertake further environmental education which will need to be of at least two types:

1. In-depth supplementary and in-service training, or continuing education programmes, which enable them to relate more adequately to each other on an interdisciplinary basis (the methodology for which will need further elaboration as well as appropriate institutional arrangements);

2. Post-graduate programmes for people already specialized in some disciplines. It is considered that a problem-solving approach on an integrated multidisciplinary team basis is an effective method of training, since it develops professionals who, while retaining their original expertise, thus acquire an interdisciplinary training and ability to work as members of multidisciplinary teams. They may be appropriately described as environmental integrators or integrationists as distinct from generalists or specialists.
From the [[Recommendations of the Tbilisi Intergovernmental Conference on Environmental Education]] on [[International and regional co-operation|Tbilisi Recommendations: International and regional co-operation]]
!!!General Recommendations
''Recommendation No. 22''

The Conference,

//Considering// the need to increase the role and improve the quality of environmental education as a factor in national economic and social development,

//Considering// that environmental education can become one of the factors in improving mutual understanding and strengthening trust between nations, and can contribute to the development of friendly relations between States and to the maintenance of peace and international security,

//Considering// that there is a great need for international co-operation in environmental education for all countries, especially developing countries,

//Recommends//:
* that approval and support be given to the initiative of Unesco regarding the problems of environmental education, and invites the Director-General to continue in co-operation with UNEP the efforts with regard to the further extension of international co-operation in developing environmental education;
* that the results of research carried out under the Programme on Man and the Biosphere and other programmes relating to the problem of the environment be used in the planning and implementation of activities in the field of environmental education;
//Recommends// to Unesco:
* that it extend the framework of its activities in the field of environmental education and give greater attention to these questions in its future activities, linking them with the whole of its educational activity;
* that it adopt the necessary measures to study the role of international governmental and nongovernmental organizations in the solution of the problems discussed at the present Conference;
* that it study the possibility of organizing periodic conferences among Member States of responsible officials and specialists in the field of environmental education in the form of international and regional conferences and seminars;
* that, in co-operation with other international organizations, it take steps and work out organizational methods to contribute to the development of environmental education;
//Recommends// to the Director-General of Unesco:
* that he study the possibility of establishing a Unesco prize to reward outstanding work in environmental education;
* that he provide technical aid to those Member States which are as yet without national environmental education structures, with a view to the formulation and execution of a suitable programme concerning this problem;
* that he foster the gradual incorporation of the system thus created into the framework of regional and international co-operation;
* that, with the assistance of UNEP, he consider the possibilities of further development of the International Environmental Education Programme. The following measures, among others, might be taken in the framework of this Programme:
<<<
# the preparation of textbooks and other teaching aids, as well as popular scientific books on environmental problems on the basis of an international competition, in which leading world scientists and educators would be invited to participate, with a view to the preparation of textbooks for schools and higher educational institutions, and also of visual aids and popular scientific books relating to the environment, to be published subsequently in all languages, using a standardized terminology and concepts;
# the award of Unesco fellowships with the assistance of the Environment Fund in educational institutions in developing countries; the provision of textbooks and teaching aids free of charge; and the provision of assistance in the development of environmental education programmes and experimental projects. Extra-budgetary funds might be used for this purpose, for the pre- and in-service training of staff engaged in environmental education, and basic training with research centres at the same time designated to accept and train these specialists. The award of such fellowships on behalf of Unesco and UNEP at the expense of the host country would also be welcomed;
<<<
//Realizing// moreover, the specialized nature of environmental education and the limited number of educators in the field in the developing countries, //recommends// to the Director-General of Unesco that the General Conference provide, under one of its programmes, training fellowships in environmental education for those from developing countries;

//Recommends// to Unesco in co-operation with UNEP:
* that assistance be given, especially in developing countries, for the initiation and expansion of pilot programmes in environmental education, methodology and curriculum development;
* that suitable attention be given, in co-operation also with ILO and other appropriate United Nations agencies, to urban problems, including the exchange of experience between countries and the support of formal and non-formal initiatives in urban environmental education; and that pressing needs for environmental education of the world's rural populations receive equivalent attention;
* that consideration be given to the support of courses, seminars and workshops for curriculum development in environmental education;
* that Member States be helped to establish research programmes in environmental education in colleges and universities.
''Recommendation No. 23''

The Conference,

//Having in mind// the global impacts of the present, past and future evolution of all nations on our planet closely connected with a sound and healthy environment for all now as well as for the generations to come,

//Bearing in mind// the unprecedented economic growth and technological progress together with its inevitable changes, improvements, but also environmental hazards,

//Being aware// that only co-operation, understanding and mutual help, goodwill, and systematically prepared, planned and implemented actions are able to solve present and future environmental problems in the conditions of peace,

//Finds// that environmental education gives people throughout the world the necessary knowledge to use nature and natural resources, to control the quality of the environment so that it is not impaired, but wisely improved - and to have the knowledge, attitudes, motivation, commitment and skills to work individually and collectively toward a solution of current problems and prevention of new ones since at present humanity has the means as well as skills to do so;

//States// that the documents prepared for the Tbilisi Conference, together with the suggestions and experiences presented and forwarded to this Conference, give a global, practicable and useful framework for environmental education;

//Recommends// to Member States:
* to take all necessary action to implement in the broadest possible way and in accordance with the needs and possibilities of each nation concerned - the results of this Conference on environmental education, and in this respect to draw up action-oriented plans and timetables for the actions:
<<<
# to foster bilateral, regional and international co-operation within all branches of environmental education, based upon scientific research and a broad exchange of information and experience, co-operation on programmes, etc.;
# to facilitate comprehensive approaches to the solution of environmental problems within the jurisdiction of each country concerned by the safeguarding of the necessary prerequisites for environmental education - comprehensive or co-ordinated legislation, financial, organizational and other measures;
<<<
* to inform other Member States as well as the Secretariat of Unesco about the time schedules, results, methods, etc., concerning environmental education and to forward to the Secretariat of Unesco all materials in this respect which they would wish to be used on a large scale;
* to extend the necessary advice in environmental education to other Member States or their organizations;
* to include an environmental education component in all national educational projects receiving funding from international sources;
//Recommends// to the General Conference of Unesco:
* to take into account the ''Recommendations of the Tbilisi Conference'';
* to decide on the convening of a second conference on environmental education at an appropriate time;
* to recommend to Member States application of the results of the Tbilisi Conference on environmental education and close co-operation on a bilateral, regional and international basis as well;
//Recommends// to the Director-General of Unesco:
* to establish a regular information bulletin or service, aimed mainly at informing Member States about all actions on environmental education prepared for a given period by the Secretariat of Unesco, by the Member States or by organizations, and about new publications, research work, methods, experiences, etc., in close co-operation with the International Referral System (IRS) and other United Nations agencies;
* to request any contribution which may be necessary for this purpose from the Environment Fund;
* to facilitate a practical exchange of information in this respect;
* to foster international symposia, seminars, filmshows, etc. aimed at environmental education;
* to request the Executive Director of UNEP to support Unesco's actions in implementation of recommendations adopted by the Tbilisi Conference;
* to promote standing implementation of the Plan of Action adopted by the United Nations Stockholm Conference on Human Environment, with further emphasis on environmental education;
* to recommend to future regional conferences on human environment held in Europe and North America that the Final Act of the Helsinki Conference on Security and Co-operation in Europe, in particular the section on environment in Part II, Section 5, should be kept in view, and priority be given to environmental education as well.
''Recommendation No. 24''

The Conference,

//Acknowledging// that the ''Recommendations of the Tbilisi Conference'' show the importance of strengthening co-operation in environmental education and provide a sound basis for further developing environmental education at all levels,

//Considering// that environmental education is a relatively new and complex area which covers a wide range of disciplines, and that it must be adapted to the particular circumstances of different socio-cultural systems,

//Recognizing// that while environmental education is inseparable from educational systems it also constitutes an important feature of general activity relating to the environment,

//Further considering// that the Conference should assist the international community in introducing a new environmental dimension and drive into education,

//Recommends// that the Director-General and the General Conference of Unesco and the Executive Director and Governing Council of UNEP take the following considerations into account:
* In view of its special responsibility for education and science and its contacts with the educational authorities of its Member States, Unesco should in future play a major role in the preparation of environmental education programmes. The Conference invites Unesco to continue to promote and assist in the development of formal and non-formal programmes of environmental education, making use of the institutions and machinery existing at the regional and subregional levels.
* The Conference appeals for more use to be made of Unesco's Regional Offices for Education in order to assist Member States in preparing environmental education programmes. Within the general context of the decentralization of Unesco's activities, the Conference recommends that greater use be made of these Regional Offices for Education in connection with environmental education, and that they be allocated additional resources, including specialized staff. The Conference also appeals to Unesco to draw on the work of all its sectors, and in particular on work done under the Man and the Biosphere Programme, in the elaboration of materials for environmental education.
* The Conference considers that the greatest possible advantage should be taken of existing machinery and institutions for the implementation of recommendations concerning environmental education. It notes with satisfaction UNEP's statement that its programme activity centres for environmental education and training would be experimental in nature and play a catalysing role.
* Given its role in environmental matters and its contacts with the authorities of Member States responsible for them, UNEP should ensure co-ordination of the environmental activities of the whole United Nations system by establishing co-operation with the other agencies (particularly within the framework of the Environment Co-ordination Board and other organizations) in order to ensure consistent and harmonious planning. The Conference invites UNEP to continue to play its role of coordinator of environmental programmes.
* UNEP and Unesco should continue and extend their collaboration when carrying out the ''Recommendations of the Tbilisi Conference''. The Conference recommends that the General Conference and Executive Board of Unesco and the Governing Council of UNEP take all measures which they consider appropriate to ensure that practical and co-ordinated action is taken on the ''Recommendations of the Conference, with allowance made for the'' areas of competence of each of the United Nations agencies or bodies and their respective potential for providing support for environmental education.
* The Conference recommends that Unesco, in collaboration with UNEP, encourage and support the important work being done for environmental education by the relevant regional and subregional organizations.
* The Conference welcomes the important work being done in the sphere of environmental education by intergovernmental and non-governmental organizations such as FAO, ILO, WMO, IUCN, ICSU and WCOTP. The various bodies and Specialized Agencies of the United Nations system should continue and expand their efforts in the field of environmental education, and should be encouraged and supported by UNEP and Unesco through co-ordinated and harmonious planning of the activities included in the different programmes. Unesco and UNEP should encourage international nongovernmental organizations to intensify their action in the sphere of environmental education.
''Recommendation No. 25''

The Conference,

//Considering// that Unesco's Medium-Term Plan for 1977-1982 includes in Chapter VII "Man and his Environment', an objective relating particularly to the development and promotion of environmental education and training,

//Considering// that the Tbilisi Intergovernmental Conference on Environmental Education marks the end of the research and co-ordination phase and the beginning of the actual operational phase of Unesco's Medium-Term Plan,

//Recommends// to the Director-General that, as far as possible in the planning of future programme actions, starting with preparation of the budget for the next biennium (1979-1980), he ensure that the ''Recommendations adopted at the Intergovernmental Conference on Environmental Education'' are taken into account.

''Recommendation No. 26''

The Conference,

//Recognizing// that it is necessary to establish priorities for activities within the area of environmental education and that Unesco works in concert with national authorities and regional centres of learning,

//Recommends// to Unesco:

1. That it expand the functions of its Regional Offices to enable them, in co-operation with National Commissions, to help:
* develop or adapt instructional materials related to local environmental problems for use in the formal and non-formal education of primary and secondary school-age students;
* create regional source books for environmental education that will foster and facilitate development of locally appropriate instructional materials;
* encourage activities of youth groups and non-governmental organizations geared to improving and understanding of local ecosystems and environmental problems, taking into account urban as well as natural environments;
* identify new and promising approaches to environmental education; conduct and evaluate pilot projects. These aspects of projects which are applicable to other locations should be systematically disseminated to other potential users;
* provide educational opportunities to teachers and school administrators;
* supply environmental educational materials for use by the mass media;
* conduct an expanded programme of pilot research, documentation and evaluation in environmental education and give wide dissemination to the results of these projects and similar activities through Unesco's environmental education publication (//Connect//):
2. That it utilize existing institutions to receive, catalogue and disseminate materials useful in environmental education;

3. That, in co-operation with UNEP, it develop model training courses, seminars, etc., on environmental and developmental issues for use by United Nations organizations and others in the training of officials of the developing countries and those concerned with assistance to them. Existing international training institutes and programmes should expand their training curriculum to include subjects on basic ecological relationships, impact assessment and establishment of effective institutional and regulatory mechanisms;

4. That it place more emphasis on the sharing of environmental experience and remedial measures between developing countries. Unesco should work with UNDP to ensure that such an exchange can take place at the 1978 UNDP-sponsored Conference on Technical Co-operation among Developing Countries;

5. That it issue, on a regular basis, world-wide directories of environmental education organizations and personnel from existing information collected and compiled by Unesco. Those directories would describe the organizational structure, objectives, functions and procedures for requesting support services. It is further recommended that the format be co-ordinated with the UNEP-International Referral System and that the information regarding the directories be published in //Connect//;

6. That, in co-operation with UNEP, it proclaim a specific environmental topic to be treated on a world-wide scale at appropriate intervals, in consultation with relevant regional and international organizations.

''Recommendation No. 27''

The Conference,

//Taking into account// that the success of any action in the field of environmental education depends on organizing, providing and displaying information at all levels,

//Considering// therefore that there is a special need to improve the information infrastructure in the field of environmental education, thus making possible within an international information network the dissemination of information on important actions taken at the local, regional and national levels,

//Considering// that the effectiveness of any international information network is based on the effectiveness of existing national information centres, and on co-operation between them at subregional and regional levels, and with the appropriate international organizations,

//Assuming// utilization of the already existing international information services, such as the International Bureau of Education (IBE), UNEP's International Referral System (IRS), Unesco's UNISIST, etc., and with reference to UNESCO/ENVED/4, 231 "Education and the challenge of environmental problems" and UNESCO/ENVED/7, 72 "Regional meetings of experts on environmental education - a synthetic report",

//Recommends// to Member States:

7. To identify as a matter of high priority, in co-operation with National Commissions for Unesco, an institution with extensive competence in the field of environmental education and to nominate it as a national information centre for the dissemination of information and experience at the national as well as at the regional and international levels;

8. To collect and circulate, in co-operation with the appropriate governmental and non-governmental organizations, information relevant to environmental education, including information about rural and urban institutions and centres, and key staff within their territories with special knowledge or experience, and information about available teaching and reference material;

//Recommends// to the Director-General of Unesco to support the establishment and operation of such an international network by:
* maintaining, in liaison with National Commissions for Unesco, close and regular contacts with national centres;
* disseminating information and advice which may not otherwise be available to Member States and which will assist and support them in the implementation of programmes of environmental education;
* promoting exchanges of staff, sharing of experience and participation in meetings and conferences on a regional or subregional basis where desirable, in collaboration with intergovernmental or nongovernmental agencies;
* promoting the development and publication of common terminology to facilitate international communication on the subject of environmental education;
* requesting the Executive Director of UNEP to issue the annual reports on the state of the environment prepared by UNEP, so far as possible, in a form and in quantities which will enable them to be used as source material for environmental education;
//Recommends// to Member States to make maximum use of the annual reports of UNEP on the state of the environment for purposes of environmental education and to encourage the popularization of knowledge about the environment.

''Recommendation No. 28''

The Conference,

//Considering// the value of international co-operation in the field of educational research,

//Recommends// to Unesco that it stimulate international co-operation in order to promote research which might serve as a basis for the design, development, application and evaluation:
* of written or audio-visual documentation for use by the general public, teachers and students;
* of low-cost research material;
* of instruments of interdisciplinary methodology for the training of organizers and teachers.
To this end, priority emphasis should be laid on:
* determining the objectives of environmental education;
* determining the obstacles (epistemological, cultural or social) restricting access to educational messages and to their utilization;
* determining qualification requirements and ways in which they may be met.
This co-operation could be illustrated by a number of pilot projects taking into account experience already gained in this field.

''Recommendation No. 29''

The Conference,

//Being aware// of the determining influence of social, cultural and psychological factors on environmental awareness,

//Considering// that these factors may hamper or strengthen the intended results of environmental education,

//Recognizing// the need for an evaluation of these factors,

//Recommends//:
* that the Director-General of Unesco, with the assistance of the Executive Director of UNEP, work further on the definition of the framework of environmental education, the state of the environment and their interrelationship;
* that international organizations, responsible authorities and non-governmental organizations promote and develop relevant studies and research within their programmes, thus increasing the involvement of the social and human sciences in environmental education;
* that international organizations, responsible authorities and non-governmental organizations utilize the results of these studies with regard to the formulation of specific goals and the selection of appropriate means for environmental education programmes.
From the [[Recommendations of the Tbilisi Intergovernmental Conference on Environmental Education]]
* [[General Recommendations|Tbilisi Recommendations: General Recommendations]] - Recommendations 22-30
* [[Recommendations on regional co-operation|Tbilisi Recommendations: Recommendations on regional co-operation]] - Recommendations 31-40
From [[Strategies for the Development of Environmental Education at the National Level|Tbilisi Recommendations: Strategies for the Development of Environmental Education at the National Level]] in the [[Recommendations of the Tbilisi Intergovernmental Conference on Environmental Education]]
!!!Organizational structure
''Recommendation No. 6''

It is recommended to Member States that, as far as possible, each country strengthen or set up the appropriate organizational structures which among others should have the functions listed below. It would be up to each government to decide as to the membership of the structure which might include representatives of educational and environmental protection authorities, practising teachers at different levels, organizations concerned nationally with environmental education and the mass media. Among the functions would be:
* to facilitate relationships with Unesco, UNEP and other organizations involved in environmental education;
* to co-ordinate initiatives in environmental education;
* to serve as a consultative body in environmental education at the governmental level;
* to play a role as a clearing-house and information centre in environmental education and training;
* to develop in various social and occupational groups an awareness and knowledge about the issues associated with environmental education in the country;
* to promote collaborative relationships among environmental education associations, citizen groups, and the scientific, research and education communities;
* to provide more frequent opportunities for meetings of those with political and administrative responsibilities with such groups and associations;
* to provide frameworks and guidelines for the establishment of environmental education action committees within the country;
* to assess the need for research, development and evaluation in environmental education;
* to encourage and facilitate the contribution to environmental education programmes of nongovernmental organizations, including voluntary bodies.
The aim of the structure would be to adapt the recommendations of the Unesco Intergovernmental Conference on Environmental Education to national and local conditions, and to aid governments to implement the recommendations.

It is further recommended that Unesco, in co-operation with UNEP, give assistance, if necessary, in setting up such a structure to those countries which do not already have one.

''Recommendation No. 7''

1. Since environmental education may promote the preservation and improvement of the living environment, thus improving the quality of human life as well as preserving ecological systems, the Conference //recommends// to Member States that: environmental education should aim at creating awareness, behavioural attitudes and values directed towards preserving the biosphere, improving the quality of life everywhere as well as safeguarding ethical values and the cultural and natural heritage, including, holy places, historical landmarks, works of art, monuments and sites, human and natural environment, including fauna and flora and human settlements.

2. In order to achieve the above-mentioned objectives, the Conference recommends to Member States, the creation of a specialized unit, by the appropriate authorities, to serve environmental education with terms of reference including:
* training of leaders in the environmental fields;
* development of school curricula compatible with the needs of the environment at the local, regional and world levels;
* preparation of books and scientific reference works necessary for the improved curricula;
* determining educational methods and media, including the audio-visual aids needed for the purpose of explaining and popularizing environmental curricula and programmes.
3. The Conference //recommends// to Member States that they refrain from actions that would disfigure the environment or threaten man's life, health or economic conditions.

4. The Conference //recommends// that Member States be encouraged to create local societies which would promote protection of the environment and participate in environmental education programmes at the various social and professional levels as well as at the level of decision-making.

5. In recognition of the fact that a common language is needed to facilitate communication in dealing with matters concerning the environment, the Conference //recommends// that Unesco with the co-operation of UNEP and other organizations promote the standardization of environmental terminology through the compilation of a multilingual glossary to be published in the working languages of the United Nations and its Specialized Agencies.

6. Considering that it is necessary to conserve the human and cultural heritage as well as the distinguishing features of civilizations, the Conference //recommends// to Member States that every effort should be made to preserve these heritages, including the teaching of cultural heritage in environmental education.

7. The Conference //recommends// to Member States that the positive and enriching influence of ethical values should be taken into account in developing environmental education programmes.
From the [[Recommendations of the Tbilisi Intergovernmental Conference on Environmental Education]] on [[International and regional co-operation|Tbilisi Recommendations: International and regional co-operation]] 
!!!Recommendations on regional co-operation
''Recommendation No. 30''

The Conference,

In order to strengthen environmental education activities at the subregional and regional levels,

//Recommends//:
* that the Director-General of Unesco take the necessary measures to ensure that the Regional Offices of Unesco serve as co-ordinating agencies for development of environmental education programmes at the subregional and regional levels, as they are doing already in other intergovernmental programmes co-ordinated by Unesco, such as the Man and the Biosphere Programme (MAB) and population education programmes;
* that Unesco have an environmental education specialist at each Regional Office and make available more funds for training programmes at the regional and subregional levels.
''Recommendation No. 31''

The Conference,

//Considering// that great potential collective efforts can generate in the development of environmental education in Member States,

//Recommends// to Unesco, with the assistance of UNEP and in co-operation with other United Nations organizations:
* that groups of Member States consider the need to encourage a network approach in dealing with environmental education;
* that where a collective effort among countries in curriculum development in environmental education exists in a given region, as in the African Social Studies Programme (ASSP), the Science Education Programme for Africa (SEPA), the African Curriculum Organization (ACO), existing materials be enriched to incorporate such environmental education content areas as might be missing in such materials;
* that such regional centres serve as resource centres and clearing-houses for Member States in environmental education;
* that assistance be extended to such regional organizations, ASSP, ACO and SEPA, where the need arises for the exchange of specialists in environmental education to enable constituent Member States to benefit mutually;
* that environmental education documentation be provided to such regional organizations as ASSP, ACO and SEPA to enrich the resources on which Member States depend for environmental education activities;
* that research and training facilities be extended to such regional organizations through workshops, seminars, conferences, etc., at regional, subregional and national levels;
* that funds be sought by the Director-General from bilateral and multilateral sources for this purpose.
''Recommendation No. 32''

The Conference,

//Recognizing// the fact that there is a need for greater collaboration among the member countries of the Asia region,

//Recommends// to the Director-General of Unesco:
* that he study the possibility of establishing a consultative committee to co-ordinate the activities of environmental education in the Asia region;
* that in order to help the consultative committee it would be desirable to have committees at national level, which in turn may form links with other organizations involved with environmental education programmes.
''Recommendation No. 33''

The Conference,

//Taking note// of the Belgrade Workshop's recommendation for concerted effort in environmental education activity at national and regional levels,

//Taking further note// of the Brazzaville (African Region) Workshop's re-emphasis on the crucial importance of integrated programming in the Africa region,

//Recognizing// that at both national and regional levels in Africa, environmental education organizations and institutions act in isolation from each other and that most are faced with inadequacies of human and material resources and communication facilities;

//Cognizant// of the enormous benefits which could accrue at all levels of environmental education programming activities from the collective participation of all such organizations and institutions,

//Realizing// that the creation of machinery for regional co-operation in Africa would be likely to contribute to the development of environmental education,

//Recommends//:
* that each Member State consider setting up national centres of environmental education for the co-ordination of national environmental education activities;
* that Unesco, with the assistance of UNEP, set up as a matter of urgency a regional working party for the Africa region to organize the pooling together of energies and expertise to assist African governments in the implementation of the ''Tbilisi Recommendations;''
* that Unesco, with the assistance of UNEP and other United Nations agencies, ensure the development of co-operation in environmental education at regional and international levels in accordance with the suggestions contained in paragraphs 84, 85 and 86 of document UNESCO/ENVED/7.
''Recommendation No. 34''

The Conference,

//Realizing// that there is a great need in the Africa region to:
* strengthen existing projects on environmental education,
* organize environmental education training courses, workshops and seminars,
* assist in evaluation and research environmental education in the region,
* disseminate environmental education materials and information within the region according to local conditions,
* co-ordinate both formal and non-formal environmental education projects,
//Being aware// that there are individual countries which have environmental education programmes and materials which could be useful to other countries in the Africa region,

//Realizing// that there are already existing centres with programmes which have been involved to some extent in environmental education in the region, such as SEPA, ASSP and other African organizations responsible for curricula, and

//Being aware// that regional Member States are already contributing to these programmes,

//Recommends// to the Director-General of Unesco that he consider the setting up, with the support of UNEP and in collaboration with Member States, of an environmental education resource, material development and dissemination centre in the forthcoming 1978-1979 biennium or to make use of existing education programmes which are already involved in environmental education in Africa. This centre would carry out and implement the ''Tbilisi Recommendations'' at the regional level. It is further'' recommended that the Director-General seek funds from bilateral and multilateral sources for this purpose;

//Appreciating// the work already being carried out by UNEP,

//Recommends// that UNEP provide the necessary funding to Unesco to enable it to extend its environmental education programme to Member States in Africa, especially to those not already having a national co-ordinated programme.

''Recommendation No. 35''

The Conference,

//Considering// the nature of environmental problems in Africa which arise from low levels of literacy, lack of trained personnel and training facilities, the high cost of introducing curricula or revising existing ones and other media which would stimulate environmental awareness, motivation and commitment to the conservation and the enhancement of the environment,

//Bearing in mind// that environmental education programmes in Africa at all levels are in embryonic stages of development,

//Realizing// the significance of the conclusions of the Belgrade Workshop on Environmental Education and the subsequent Regional Conference on Environmental Education held in Brazzaville in 1976 for the Africa region,

//Taking into account// recognition by African delegates to the Tbilisi Conference of the importance of the Brazzaville report and the commitments of the recommendations contained therein,

//Being aware// of the role of Unesco and UNEP in assisting Member States as well as regions to initiate and to strengthen environmental education programmes,

//Recommends// to Unesco:
* that, in collaboration with UNEP and other organizations of the United Nations system, it assist African regional organizations already in existence as well as Unesco Regional Offices in implementation of the ''Recommendations of the Tbilisi Conference'';
* that, in collaboration with UNEP and the other organizations of the United Nations system, national, regional and international co-operation in environmental education be developed.
''Recommendation No. 36''

The Conference,

//Recommends// to Unesco, in collaboration with FAO, ILO and UNEP, and to Member States that co-operative efforts be undertaken to help increase and intensify efforts to train farmers in environmental issues so as to improve their quality of life through increased but ecologically sound agricultural production, and through social development; that information concerning these experiences be exchanged to ensure that new ideas are circulated, promoted and adapted to local conditions;

//Recommends// that Unesco with aid from UNEP provide assistance as soon as possible to establish regional training programmes in the ESCAP region, based on suitable existing national institutions, for the post-graduate training of environmental integrationists of the type that have been defined in the Report of the Asian Regional Conference on Environmental Education;

//Recommends// to Member States that they begin or continue to co-operate with each other in fields of training which will facilitate the formation of national pluridisciplinary teams of doctors, sanitation and hygiene engineers and technicians capable of taking a comprehensive approach to public health problems in connection with those of the environment.

''Recommendation No. 37''

The Conference,

//Recommends// that Unesco, with support from UNEP, and through responsible Regional Offices and national agencies, and non-governmental organizations, include in environmental education programmes:
* education on the cultural heritage, wherever it is relevant to the human environment;
* education dealing with the improvement of human settlements, particularly in developing countries, so that people in deprived human settlements can improve their surroundings;
//Recommends//:
* that Unesco, in collaboration with the International Labour Organisation and other bodies, particularly the relevant United Nations organizations, pay due attention to urban problems, encouraging countries to compare experience in this area and supporting any initiative, whether official or not, taken with regard to general education on the urban environment;
* that the Member States study in greater depth, in the light of their own experience, the place of urban problems in their national programmes and in general environmental education.
''Recommendation No. 38''

The Conference,

//Considering// that education and training are indispensable instruments for the achievement of general and specific objectives of environmental education,

//Convinced// of the fact that formulation of curricula and reorientation of educational systems are not sufficient, but that there must be an appeal to the feelings of individuals and to their ethical and cultural awareness so as to lead them to protect, improve and enrich their natural environment on an enduring basis,

//Convinced// of the importance of linking educational processes to the real problems of preserving the environment and of the need to make educators aware of such issues, both within the context of human development in general and in the economic, social and cultural development of each country,

//Conscious// of the considerable receptiveness of the school-age child, but equally conscious of the fact that to stimulate his or her responsiveness to the environment, he or she must be brought into direct contact with the natural elements, through systematic programmes which will have regard, in their implementation, for specific circumstances, such as location in urban, rural or coastal zones,

//Recommends// to Unesco that it submit to its General Conference a draft educational programme that, under the general title: "The child and the environment", will set out the main lines for the formulation and implementation of a systematic plan of action to bring the child into contact with, and give him or her awareness of, the elements that form his or her natural milieu, such as, more especially, the sea, woods, desert, mountains, forest, city, lakes, rivers and other ecosystems;

//Requests// the Director-General to study the advisability of setting up a working group to examine the various components of this programme;

//Agrees// that, should the project be adopted by Unesco, collaboration in its execution be requested from Unicef, UNEP and other international and regional organizations linked with environmental education and the specific aims of the project.

''Recommendation No. 39''

The Conference,

//Recognizing// the importance of utilizing film and television production as well as other audio-visual techniques for the purpose of environmental education,

//Taking note// of the report presented by the Czechoslovak governmental delegation on the international film festival, dedicated to environment, known as EKOFILM, which is being held regularly every year in Czechoslovakia, the first country in Europe to do so,

//Believing// that this international festival might serve as a world instrument for the exchange of experience among specialists in the education of youth and adults for the purpose of protection and improvement of the environment,

//Believing equally// that this festival might be a good stimulus for further film and television production in the field of environmental education and could thus contribute to its higher level and efficiency,

//Considering// it purposeful to provide this festival with a concrete platform for the exchange of experience among specialists by means of an interrogational symposium,

//Invites// the Director-General:
* to study the possibility of a Unesco sponsorship of the annual EKOFILM film festival in Czechoslovakia;
* to consider the possibility of granting assistance to this festival and of awarding a prize for the best film.
''Recommendation No. 40''

The Conference,

//Having learned// with interest of the activities and role of youth associations and non-governmental organizations in the field of environmental education,

//Noting// that many international gatherings of young people have made it possible to prepare specific programmes of co-operation in the field of environmental education,

//Mindful// of the fact that it is largely through young people that the non-formal education of young people should be undertaken,

//Conscious// that international youth meetings allow an exchange of constructive ideas and experience and strengthen solidarity between the countries of the world,

//Recommends// to Unesco, with the assistance of UNEP:
* that they continue to give their material and moral support to international youth gatherings;
* that they make provision in their future programmes for necessary resources for these types of meetings;
* that they ensure the presence of responsible officials from these youth associations and nongovernmental organizations at intergovernmental meetings and meetings of experts organized by Unesco or UNEP;
* that they ensure the proper distribution to all Member States of resolutions, recommendations and documents emanating from such meetings;
* that they provide assistance and administrative facilities for the efficient organization of such meetings;
//Recommends// to Member States:
* that they provide assistance for the organization of these meetings and facilitate the sending of youth delegations;
* that they attach due importance to the conclusions of such meetings.
''Recommendation No. 41''

The Conference,

//Considering// the important role of non-governmental organizations and voluntary bodies in the field of environmental education at the local, national, regional and international levels,

//Stressing// the desirability of enlarging the opportunities for democratic participation in the formulation and execution of programmes in the field of environmental education,

//Bearing in mind// that the efficacy of the work of all intergovernmental organizations is enhanced by the activities of non-governmental organizations and voluntary bodies,

//Recommends// to Member States that they encourage and support non-governmental organizations and voluntary bodies at the local, national, regional and subregional level to make best use of their capabilities and activities;

//Recommends// to national governments that they create and encourage environmental awareness among organizations, such as professional teachers' and other non-governmental organizations, which deal directly with children and youth, so as to get such organizations involved in the formulation and execution of national education strategies;

//Recommends// to non-governmental organizations that they incorporate environmental education activities into their existing programmes;

//Recommends// to Unesco that it co-operate closely with non-governmental organizations and support their relevant activities in the field of environmental education.
From [[Strategies for the Development of Environmental Education at the National Level|Tbilisi Recommendations: Strategies for the Development of Environmental Education at the National Level]] in the [[Recommendations of the Tbilisi Intergovernmental Conference on Environmental Education]]
!!!Research
''Recommendation No. 21''

The Conference,

//Considering// that the institutional and educational changes required for the incorporation of environmental education into national education systems should be based not only on experience but also on research and evaluation aimed at improving educational policy decisions,

//Recommends// to all Member States:
* that they develop national policies and strategies furthering environmental education research projects incorporating their findings into the general educational process through appropriate courses;
* that they carry out research concerning: (1) the goals and objectives of environmental education; (2) the epistemological and institutional structures that affect consideration of environment demands; and (3) the knowledge and attitudes of individuals, in order to identify more precisely the most effective educational conditions, types of action by teachers and processes of assimilation of knowledge by pupils, as well as obstacles to the modification of concepts, values and attitudes which are held by individuals and are involved in environmental behaviour;
* that they undertake research concerning the conditions which foster development of environmental education, directed more particularly towards: (1) identification of content, taking into consideration specific national and local features which might constitute an effective basis for educational programmes for those in and out of the formal education system as well as for specialists; (2) the establishment of methodologies for the effective acquisition of the relevant concepts, values and attitudes by the various population groups, young and adult, receiving formal and non-formal education; and (3) innovation in learning environments;
* that they undertake research in the development of educational methods and curricula for sensitizing the general public, particularly with regard to the use of mass media and the preparation of evaluation tools for assessing the impact of such curricula;
* that they include in courses for the pre- and in-service training of teachers, research methodologies for designing and developing methods and instruments which enable them to effectively fulfil the objectives of environmental education;
* that they undertake research, taking into account the audiences, with a view to the design and development of mechanisms, methods and materials enabling interdisciplinary environmental curricula to be developed. With this in mind, the possibility of using elements of the natural and social sciences and of the arts as a basis for integration, should be studied;
* that they undertake research in order to develop low-cost educational methods and materials for educators, to train or retrain themselves on their own;
* that they take steps to promote exchanges of information among national educational research bodies, broad dissemination of research findings and evaluation in the educational system;
* that they undertake systematic analysis of educational experience materials of other countries, in order to determine their educational relevance and to adapt them to local socio-economic, ecological and cultural conditions.
From the [[Recommendations of the Tbilisi Intergovernmental Conference on Environmental Education]]
!!!The Role, Objectives and Guiding Principles of Environmental Education
''Recommendation No. 1''

The Conference,

//Considering// the challenge that environmental problems present to contemporary society and having regard for the role that education can and must play in solving such problems,

//Recommends// the adoption of certain criteria which will help to guide efforts to develop environmental education at the national, regional and international levels.
# Whereas it is a fact that biological and physical features constitute the natural basis of the human environment, its ethical, social, cultural and economic dimensions also play their part in determining the lines of approach and the instruments whereby people may understand and make better use of natural resources in satisfying their needs.
# Environmental education is the result of the reorientation and dovetailing of different disciplines and educational experiences which facilitate an integrated perception of the problems of the environment, enabling more rational action, capable of meeting social needs, to be taken.
# A basic aim of environmental education is to succeed in making individuals and communities understand the complex nature of the natural and the built environments resulting from the interaction of their biological, physical, social, economic and cultural aspects, and acquire the knowledge, values, attitudes, and practical skills to participate in a responsible and effective way in anticipating and solving environmental problems, and the management of the quality of the environment.
# A further basic aim of environmental education is clearly to show the economic, political and ecological interdependence of the modern world, in which decisions and actions by the different countries can have international repercussions. Environment should, in this regard, help to develop a sense of responsibility and solidarity among countries and regions as the foundation for a new international order which will guarantee the conservation and improvement of the environment.
# Special attention should be paid to understanding the complex relations between socio-economic development and the improvement of the environment.
# For this purpose, environmental education should provide the necessary knowledge for interpretation of the complex phenomena that shape the environment, encourage those ethical, economic and aesthetic values which, constituting the basis of self-discipline, will further the development of conduct compatible with the preservation and improvement of the environment; it should also provide a wide range of practical skills required in the devising and application of effective solutions to environmental problems.
# To carry out these tasks, environmental education should bring about a closer link between educational processes and real life, building its activities around the environmental problems that are faced by particular communities and focusing analysis on these by means of an interdisciplinary, comprehensive approach which will permit a proper understanding of environmental problems.
# Environmental education should be regarded as a continuing process providing its recipients, through the constant renewal of its approach, content and methods, with knowledge that is always attuned to the changing conditions of the environment.
# Environmental education should cater to all ages and socio-professional groups in the population. It should be addressed to 
## the general non-specialist public of young people and adults whose daily conduct has a decisive influence on the preservation and improvements of the environment; 
## to particular social groups whose professional activities affect the quality of the environment; and 
## to scientists and technicians whose specialized research and work will lay the foundations of knowledge on which education, training and efficient management of the environment should be based.
# To achieve the effective development of environmental education, full advantage must be taken of all public and private facilities available to society for the education of the population; the formal education system, different forms of non-formal education, and the mass media.
# To make an effective contribution towards improving the environment, educational action must be linked with legislation, policies, measures of control and the decisions that governments may adopt in relation to the human environment.
''Recommendation No.  2''

The Conference,

//Recognizing// that environmental education should promote the strengthening of peace, the further relaxation of international tensions and mutual understanding among States and be a real instrument for international solidarity and for elimination of all forms of racial, political and economic discrimination,

//Noting// that the concept of "the environment" includes a complex of natural, built and social components in the life of humanity and that the social components constitute a set of cultural, moral, personal values and interrelations of people in the spheres of labour and leisure activities,

//Taking note// of document UNESCO/ENVED/4 "Education and the challenge of environmental problems", and in particular of the principles contained in Chapter II,

//Having furthermore// noted the Synthetic Report of the Regional Meeting of Experts on Environmental Education (ENVED/7, Chapter III, paragraphs 15-26),

//Pursuant// to the working document UNESCO/ENVED/4, paragraph 67, in which the Conference is invited to formulate goals, objectives and guiding principles which environmental education should have in order to fulfil its functions most effectively,

//Considering// that it should be a right of every citizen to receive environmental education,

//Endorses// the following goals, objectives and guiding principles for environmental education:
# The goals of environmental education are:
## to foster clear awareness of, and concern about, economic, social, political and ecological interdependence in urban and rural areas;
## to provide every person with opportunities to acquire the knowledge, values, attitudes, commitment and skills needed to protect and improve the environment;
## to create new patterns of behaviour of individuals, groups and society as a whole towards the environment;
# The categories of environmental education objectives:
** //Awareness//: to help social groups and individuals acquire an awareness of and sensitivity to the total environment and its allied problems.
** //Knowledge//: to help social groups and individuals gain a variety of experience in, and acquire a basic understanding of, the environment and its associate problems.
** //Attitudes//: to help social groups and individuals acquire a set of values and feelings of concern for the environment, and the motivation for actively participating in environmental improvement and protection.
** //Skills//: to help social groups and individuals acquire the skills for identifying and solving environmental problems.
** //Participation//: to provide social groups and individuals with an opportunity to be actively involved at all levels in working toward resolution of environmental problems.
# Some //guiding principles// for environmental education: Environmental education should:
** consider the environment in its totality - natural and built, technological and social (economic, political, technological, cultural-historical, moral, aesthetic);
** be a continuous lifelong process, beginning at the pre-school level and continuing through all formal and non-formal stages;
** be interdisciplinary in its approach, drawing on the specific content of each discipline in making possible a holistic and balanced perspective;
** examine major environmental issues from local, national, regional and international points of view so that students receive insights into environmental conditions in other geographical areas;
** focus on current and potential environmental situations, while taking into account the historical perspective;
** promote the value and necessity of local, national and international co-operation in the prevention and solution of environmental problems;
** explicitly consider environmental aspects in plans for development and growth;
** enable learners to have a role in planning their learning experiences and provide an opportunity for making decisions and accepting their consequences;
** relate environmental sensitivity, knowledge, problem-solving skills and values clarification to every age, but with special emphasis on environmental sensitivity to the learner's own community in early years;
** help learners discover the symptoms and real causes of environmental problems;
** emphasize the complexity of environmental problems and thus the need to develop critical thinking and problem-solving skills;
** utilize diverse learning environments and a broad array of educational approaches to teaching/ learning about and from the environment with due stress on practical activities and first-hand experience.
''Recommendation No. 3''

The Conference,

//Considering// that the broader conception of development to which all people now subscribe includes the environment as one of its basic components,

//Considering// that environmental questions would accordingly be best approached and dealt with in relation to the overall policies applied by governments in regard to national development and in regard to international relations in the attempt to establish a new international order,

//Considering// that the environment concerns all men and women in every country and that its preservation and improvement require the support and active participation of the population of those countries,

//Believing// that education at all levels is necessary to this end,

//Recommends// to Member States:

That they integrate environmental education into their general policy and, in accordance with their national structure, take appropriate measures in order, more especially to:
* sensitize public opinion to environmental problems and to major projects in course of execution or being planned;
* develop more detailed general information which will give an overview of major problems, the possibility of dealing with them and the respective urgency of the various measures taken or to be taken;
* encourage action within the family and in associations concerned with pre-primary education for the environmental education of young children, of pre-school age in particular;
* assign a central role to the school in the whole system of environmental education and organize, for this purpose, systematic action in primary and secondary education;
* expand environmental studies at the higher education level;
* establish the means and methods for an in-service training policy which will provide the additional and, more especially, practical training that may be required by those who, in different capacities, exercise responsibility in the public or private sectors in regard to the environment;
* seek, by means of environmental education, gradually to transform attitudes and behaviour so that all members of the community may be made aware of their responsibilities in the thinking through formulation and application of national or international environmental programmes;
* contribute thereby to the search for a new ethic based on respect for nature, for people and for their dignity, and for the future, and on the need for a quality of life to which all will have access and in which all will feel themselves involved.
//Recommends// to the Director-General of Unesco:
* That he should provide technical aid to those Member States which are as yet without national environmental education structures, with a view to the formulation and execution of a suitable programme concerning this problem;
*That he should foster the gradual incorporation of the system thus created into the framework of regional and international co-operation.
''Recommendation No. 4''

The Conference,

//Considering// the need to stress not only the socio-economic aspects suitably set forth in the Unesco document but also the ecological aspects of the natural and human environment, which are of the utmost importance for both theoretical and practical environmental education,

//Considering// that the environment constitutes a system,

//Considering// that the human environment, like any other ecosystem, has its own structure, operation and history,

//Considering// that the causes of the ecological crisis must be sought at a deeper level, in certain aspects of these same socio-economic factors, namely:
* in a mistaken ethical conception of the relationship between humanity and nature,
* in a diminution, due to an extreme positivism, of the unitary nature of the scientific vision of reality,
//Recommends// to the Member States that, in respect to formal and non-formal environmental education, they:
* promote deeper understanding of the natural aspects of the environment;
* develop a systems approach to the analysis and management of natural and human ecosystems;
* take into consideration the temporal (past, present and future) dimension of each environment.
''Recommendation No. 5''

The Conference,

//Recommends// that governments systematically evaluate the environmental impact of development activities, and //requests// that development assistance strategies and programmes provide opportunities for countries to establish environmental training programmes which include the evaluation of development from the standpoint of the human environment.
!!!Strategies for the Development of Environmental Education at the National Level
* [[Organizational structure|Tbilisi Recommendations: Organizational structure]] - Recomendations 6-7
* [[Target populations for environmental education|Tbilisi Recommendations: Target populations for environmental education]] - Recommendation 8
* [[Environmental education for the general public|Tbilisi Recommendations: Environmental education for the general public]] - Recommendation 9
* [[Environmental education of professionals|Tbilisi Recommendations: Environmental education of professionals]] - Recommendations 10-11
* [[Content and methods|Tbilisi Recommendations: Content and methods]] - Recommendations 12-16
* [[Training of personnel|Tbilisi Recommendations: Training of personnel]] - Recommendations 17-18
* [[Teaching - learning materials|Tbilisi Recommendations: Teaching - learning materials]] - Recommendation 19
* [[Dissemination of information|Tbilisi Recommendations: Dissemination of information]] - Recommendation 20
* [[Research|Tbilisi Recommendations: Research]] - Recommendation 21
From [[Strategies for the Development of Environmental Education at the National Level|Tbilisi Recommendations: Strategies for the Development of Environmental Education at the National Level]] in the [[Recommendations of the Tbilisi Intergovernmental Conference on Environmental Education]]
!!!Target populations for environmental education
''Recommendation No. 8''

The Conference,

//Recommends// to Member States that consideration should be given to:
* //Education of the general public//: this education should be provided at every age and at all levels of formal education, for pupils and teachers, and in the various non-formal education activities for young people and adults, including the handicapped. In this education, voluntary organizations may play an important role.
* //Education of specific occupational or social groups//: this education is focused on those whose activity and influence have an important bearing on the environment, for instance, engineers, architects, administrators and planners, industrialists, trade unionists, policy-makers and agriculturalists. Various levels in formal and non-formal education should contribute to this training.
* //Training of certain professionals and scientists//: this training is for those working on specific problems of the environment, such as biologists, ecologists, hydrologists, toxicologists, soil scientists, agronomists, foresters, landscape architects, oceanographers, limnologists, meteorologists and sanitary engineers. It is important that the training of scientists include an interdisciplinary component.
From [[Strategies for the Development of Environmental Education at the National Level|Tbilisi Recommendations: Strategies for the Development of Environmental Education at the National Level]]  in the [[Recommendations of the Tbilisi Intergovernmental Conference on Environmental Education]]
!!!Teaching - learning materials
''Recommendation No. 19''

The Conference,

//Considering// that environmental education becomes more effective when adequate teaching aids and materials are made available,

//Recommends// to Member States that:
* basic principles should be formulated for the preparation of model textbooks and reading materials for use at all levels within formal and non-formal education systems;
* in developing low-cost teaching aids and materials, the fullest use should be made of existing documentation, educational research findings should be drawn upon, the value of existing teaching materials should be assessed and new teaching aids for environmental education should be developed as necessary;
* teachers and learners should be involved in the preparation and adaptation of instructional materials for environmental education;
* teachers in training should be given an understanding of the widest possible range of educational materials and aids, with special reference to low-cost materials and to opportunities for adaptation and improvisation according to local circumstances.
From [[Strategies for the Development of Environmental Education at the National Level|Tbilisi Recommendations: Strategies for the Development of Environmental Education at the National Level]] in the [[Recommendations of the Tbilisi Intergovernmental Conference on Environmental Education]]
!!!Training of personnel
''Recommendation No.  17''

The Conference,

//Considering// the need for all teachers to understand the importance of environmental emphasis in their teaching,

//Recommends// to Member States:
* that environmental sciences and environmental education be included in curricula for pre-service teacher education;
* that the staffs of teacher education institutions be assisted in this respect; and
* that teachers should get appropriate environmental training relating to the area, either urban or rural, where they are going to work.
''Recommendation No.18''

The Conference,

//Considering// that the importance of in-service training is underlined by the fact that a great majority of present-day teachers were graduated from teacher-training colleges at a time when environmental education was largely neglected and thus did not receive sufficient education in environmental issues and the methodology of environmental education,

//Recommends// to Member States:
* that they take the necessary steps to make in-service training of teachers in environmental education available for all who need it;
* that the implementation and development of in-service training, including practical training, in environmental education be made in close co-operation with professional organizations of teachers, both at the international and national levels;
* that in-service training take account of the area, either urban or rural, where the teachers are working;
//Recommends// to Unesco:
* To promote the dissemination of ideas, programmes and instructional material relevant to the promotion of in-service training in environmental education.
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.

''Blue Ribbon template''
{{{
<a href="http://faves.com/Authoring.aspx?u={URL}&amp;t={TITLE}" onclick="{var w=window;w.CdTl=this;w.l=w.location;w.SdP='';w.bU=(w.l.protocol=='https:'?'https://'+w.SdP:'http://')+'faves.com';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;}" class="BlueDotPartner"><img src="blue-ribbon.png" style="border:none"/></a>
}}}

''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>
}}}

''Iframe template'' for [[Information Habitat: Where Information Lives]]
{{{
@@font-size:90%;''Note'': This is a "framed" page from the web site of [[Information Habitat: Where Information Lives]] .
You can view this page in a separate browser tab or window at http://habitat.igc.org/@@
<html><iframe
	title = ""
	src = "http://habitat.igc.org/"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
}}}

''Iframe template for [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 
{{{
@@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/@@
<html><iframe
	title = ""
	src = "http://www.un-documents.net/"
	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 new, monospace;font-weight: bold;font-size:110%; ''$1'' @@@@padding:1em;width: 50em;border: 1;background-color: $1;&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>
+++!!![ListByTagExampleScript]
<script show>
var tids=store.getTaggedTiddlers('$1');
var out=[];
out.push('There are '+tids.length+' tiddlers tagged with: <<tag $1>>');
out.push('|title|size|tags|creator|h');
for (var i=0; i<tids.length; i++) { var t=tids[i];
	var f=store.getValue(t.title,'creator')||'';
	out.push('|'+t.title+'|'+t.text.length+'|'+'[['+t.tags.join(']] [[')+']]'+'|');
}
out.push('|sortable|k');
return out.join('\n');
</script>
===
+++!!![FamilyTreeExample]...

+++[John Smith]>
	yyyy/mm/dd - yyyy/mm/dd
	2 children:
	+++[John Smith, Jr]>
		yyyy/mm/dd - yyyy/mm/dd
		2 children:
		+++[John Smith, III]>
			yyyy/mm/dd - 
		===

		+++[Jill Smith]>
			yyyy/mm/dd - 
		===
	===

	+++[Jane (Smith) Jones]>
		yyyy/mm/dd - yyyy/mm/dd
		2 children:
		+++[James Jones]>
			yyyy/mm/dd - 
		===

		+++[Jessica Jones]>
			yyyy/mm/dd - 
		===
	===
===

===
+++!!![Dictionary/TableMaker]...
<script>
window.Dictionary=function(tags,headings) {
	var out=[];
	out.push('|'+headings.join('|')+'|h'); // headings
	var tids=store.getTiddlers();
	for (var i=0; i<tids.length; i++) {
		var cols=[];
		if (!tids[i].tags.containsAll(tags)) continue;
		for (var h=0; h<headings.length; h++) {
			var c=store.getTiddlerSlice(tids[i].title,headings[h]);
			if (!c) var c='<<tiddler '+tids[i].title+'##'+headings[h]+'>>';
			cols.push(c);
		}
		out.push('|'+cols.join('|')+'|');
	}
	out.push('|sortable|k');
	return out.join('\n');
}
return window.Dictionary(['foo','bar'],['English','French','Description']);
</script>
===
+++!!![parse CSV]...
<script show>
window.parseCSV=function(txt) {
	var lines=txt.split('\n'); var names=lines[0].split(','); txt=lines.join('\n');

	// ENCODE commas and newlines within quoted values
	var comma='!~comma~!'; var commaRE=new RegExp(comma,'g');
	var newline='!~newline~!'; var newlineRE=new RegExp(newline,'g');
	txt=txt.replace(/\x22((?:[^\x22]|\x22\x22)*?)\x22/g,
		function(x){ return x.substr(1,x.length-2).replace(/\,/g,comma).replace(/\n/g,newline); });

	// PARSE lines
	var lines=txt.split('\n');
	var results=[];
	for (var i=1; i<lines.length; i++) { if (!lines[i].length) continue;
		var values=lines[i].split(',');
		// DECODE commas, newlines and doubled-quotes within quoted values
		for (var v=0; v<values.length; v++)
			values[v]=values[v].replace(commaRE,',').replace(newlineRE,'\n').replace(/\x22\x22/g,'\x22');
		// EXTRACT field value
		var fields={}; for (var v=0; v<values.length; v++) fields[names[v].toLowerCase()]=values[v];
		results.push(fields);
	}
	return results;
}
</script>
===
+++!!![find age]...
<script>
	var now=new Date();
	var then=new Date(prompt('enter a date',"1/1/2009"));
	var age=now.getTime()-then.getTime();
	var hs=3600000; var ds=24*hs; var ms=30.4*ds; var ys=365*ds;
	var y=Math.floor(age/ys);
	var m=Math.floor((age-y*ys)/ms);
	var d=Math.floor((age-y*ys-m*ms)/ds)+1;
	return '%0 years, %1 months, %2 days'.format([y,m,d]);
</script>
===
+++!!![grep]...
<script>
	var out=[];
	var pat=/(version.extensions.*)\n/g;
	var tids=store.getTaggedTiddlers('systemConfig');
	for (var i=0; i<tids.length; i++) {
		var match=pat.exec(tids[i].text);
		while (match) {
			out.push(match[1]);
			match=pat.exec(tids[i].text);
		}
	}
	return out.join('\n');
</script>
===
+++!!![list all fields]...
<script>
	var out=[]; var allFields={};
	var tids=store.getTiddlers('title');
	for (var i=0; i<tids.length; i++) for (var f in tids[i].fields) {
		if (!allFields[f]) allFields[f]=[];
		allFields[f].push(tids[i].title);
	}
	var fmt='*%0<br>%1';
	for (var f in allFields) out.push(fmt.format([f,'[['+allFields[f].join(']], [[')+']]']));
	return 'There are '+out.length+' fields:\n\n'+out.join('\n');
</script>
===
+++!!![set defaultValue in form fields (for snapshot)]...
<html><input type='text'><textarea style='width:100%;height:5em;'></textarea><input type='checkbox'></html><script label="show innerHTML">
	var html=place.previousSibling;

	var elems=html.getElementsByTagName('input');
	for (var i=0; i<elems.length; i++) { var e=elems[i];
		if (e.type=='text')		e.defaultValue=e.value;
		if (e.type=='checkbox')	 	e.defaultChecked=e.checked;
		if (e.type=='radiobutton')	e.defaultChecked=e.checked;
	}
	var elems=html.getElementsByTagName('textarea');
	for (var i=0; i<elems.length; i++)	elems[i].defaultValue=elems[i].value;
	alert(html.innerHTML);
</script>
===
+++!!![RetagTiddlers]...
/%
|Name|RetagTiddlers|
|Source|http://www.TiddlyTools.com/#OpenTaggedTiddlers|
|Version|0.5.0|
|Author|Eric Shulman|
|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.3|
|Type|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|quickly modify tags on matching tiddlers|
|Status:|ALPHA EXPERIMENTAL - please report problems / make suggestions: [[Contact]]|

Usage: <<tiddler RetagTiddlers with: "label" "tagToMatch" "sortBy" "action" "tags" "show">>

label (required)
	text to display
tagToMatch (required)
	tag value used to select tiddlers.
	If MatchTagsPlugin is installed, "tagToMatch" can be a boolean tag expression.
sortBy (optional, default="title")
	is a tiddler field that determines the order of the matched tiddlers.
	Use "-" as a prefix to specify decending order (e.g., "-modified" sorts tiddlers by most-recently changed).
action (optional, default="ask")
	one of: "ask", "set", "add", "remove", "replace".
tags (required, except for "ask" action)
	if set/add/remove action is specified, "tags" is a quoted, space-separated list of tag values to be applied
	if replace action is specified, tags is a quoted, space-separated list of //exactly two tags//: "oldtag newtag"
show (optional)
	is a keyword that causes each matching tiddler to be displayed after modification

Except as noted, all parameters are optional but must be written in the order shown above, if present.  You can use "" as a placeholder equivalent to the default value for any parameter you wish to skip.

%/<script label="$1">
	var list=[];
	var match="$2";
	var sortBy="$3"; if ((sortBy=="$"+"3")) sortBy="title";
	var action="$4"; if ((action=="$"+"4")) action="prompt";
	var tags="$5".readBracketedList();
	var show=("$6"=="show");
	if (action=="replace" && !tags[1]) {
		displayMessage("Retag error: 'replace' must specify exactly two tags");
		return;
	}
	var filter="[tag[%0]][sort[%1]]".format([match,sortBy]);
	var tids=store.filterTiddlers(filter);
	var changed=0;
	for (var i=0;i<tids.length;i++) { var tid=tids[i];
		var newtags=[];
		switch (action) {
			case "set":
				newtags=tags;
				changed++;
				break;
			case "add":
				for (var t=0; t<tid.tags.length; t++)
					newtags.push(tid.tags[t]);
				for (var t=0; t<tags.length; t++)
					newtags.pushUnique(tags[t]);
				changed++;
				break;
			case "remove":
				for (var t=0; t<tid.tags.length; t++)
					if (tags.indexOf(tid.tags[t])==-1)
						newtags.pushUnique(tid.tags[t]);
				changed++;
				break;
			case "replace":
				for (var t=0; t<tid.tags.length; t++)
					newtags.pushUnique(tid.tags[t]==tags[0]?tags[1]:tid.tags[t]);
				changed++;
				break;
			case "ask":
			default:
				var msg="Modify current tags on '"+tid.title+"'\n(Press Cancel for no change to this tiddler)";
				var t=prompt(msg,tid.getTags());
				if (!t) continue;
				newtags=t.readBracketedList();
				changed++;
				break;
		}
		var who=config.options.chkForceMinorUpdate?tid.modifier:config.options.txtUserName;
		var when=config.options.chkForceMinorUpdate?tid.modified:new Date();
		store.saveTiddler(tid.title,tid.title,tid.text,who,when,newtags,tid.fields);
		displayMessage("%0: tags='%1'".format([tid.title,newtags]));
	}
	if (changed && show) {
		for (var i=0;i<tids.length;i++) list.push(tids[i].title);
		story.displayTiddlers(story.findContainingTiddler(place),list);
	}
	displayMessage(changed+" tiddler%0 ha%1 been changed".format([changed!=1?"s":"",changed!=1?"ve":"s"]));
	return false;
</script>
===
+++!!![RaphaelExample]...
<<tiddler {{tiddler.title+'##render'}} with: {{tiddler.title+'##PathData'}} Path1 100% 500 black>>
<<tiddler {{tiddler.title+'##render'}} with: {{tiddler.title+'##PathData'}} Path2 100% 300 #abc>>/%

!PathData
red,5
M240,350 l 50,-25 a25,25 -30 0,1 50,-25 l 50,-25 a25,50 -30 0,1 50,-25 l 50,-25 a25,75 -30 0,1 50,-25 l 50,-25 a25,100 -30 0,1 50,-25 l 50,-25
blue,3
M220,350 l 50,-25 a25,25 -30 0,1 50,-25 l 50,-25 a25,50 -30 0,1 50,-25 l 50,-25 a25,75 -30 0,1 50,-25 l 50,-25 a25,100 -30 0,1 50,-25 l 50,-25
green,1
M200,350 l 50,-25 a25,25 -30 0,1 50,-25 l 50,-25 a25,50 -30 0,1 50,-25 l 50,-25 a25,75 -30 0,1 50,-25 l 50,-25 a25,100 -30 0,1 50,-25 l 50,-25
!end

!render
<script>
	// USAGE: <<tiddler ##render with: SourceTiddlerName raphaelObjectID width height backgroundColor>>

	var lines=store.getTiddlerText('$1').split('\n');
	var holder = createTiddlyElement(place,'div',null,'holder_$2');
	var r = Raphael(holder, '$3', '$4');
        var out=[]; for (var i=0; i<lines.length; i=i+2) {
		var params=lines[i].split(',');
		var color=params[0];
		var width=parseInt(params[1]);
		var path=lines[i+1];
		var x=r.path({id: '$2_'+color, stroke: color, 'stroke-width': width }, path); 
        }
</script><html><style>
	.holder_$2 { border:1px solid; background:$5; }
</style></html>
!end
%/
===
+++!!![Regexp Converter Script]...
<script label="convert">
var lines=store.getTiddlerText('corefunctions.txt').split('\n');
var out=[];
for (var i=0; i<lines.length; i++) {
//	var re=/\|[0-9]*\|.*\.js\|([^\|]*).*$/;
	var re=/(.*) = function\(.*$/;
	var match=re.exec(lines[i]);
	if (!match) out.push(lines[i]);
	else out.push(match[1]);
}
store.saveTiddler('corefunctions2.txt','corefunctions2.txt',out.join('\n'),config.options.txtUserName,new Date(),[],{});
return 'out='+out.length;
</script>
===
+++!!![ParseTiddlerParams]...
Usage:
{{{
<<tiddler TiddlerName with: foo=bar "baz=mumble frotz" gronk debug=true>>
}}}
----
<script show>
	// convert "name=value" tiddler params to args['name'] "associative array"
	var args={};
	if ('$1'!='$'+'1') { var t='$1'.split('='); args[t.shift()]=t.join('='); }
	if ('$2'!='$'+'2') { var t='$2'.split('='); args[t.shift()]=t.join('='); }
	if ('$3'!='$'+'3') { var t='$3'.split('='); args[t.shift()]=t.join('='); }
	if ('$4'!='$'+'4') { var t='$4'.split('='); args[t.shift()]=t.join('='); }
	if ('$5'!='$'+'5') { var t='$5'.split('='); args[t.shift()]=t.join('='); }
	if ('$6'!='$'+'6') { var t='$6'.split('='); args[t.shift()]=t.join('='); }
	if ('$7'!='$'+'7') { var t='$7'.split('='); args[t.shift()]=t.join('='); }
	if ('$8'!='$'+'8') { var t='$8'.split('='); args[t.shift()]=t.join('='); }
	if ('$9'!='$'+'9') { var t='$9'.split('='); args[t.shift()]=t.join('='); }
 
	// now you can do something with the args[]...
	var out='';
	if (args['debug']) for (var arg in args) out+=arg+' is: "'+args[arg]+'"\n';
	return out;		
</script>
===
+++!!![plugin sniffer]...
//{{{
window.core_isPluginExecutable=isPluginExecutable;
window.isPluginExecutable=function(plugin) {

	var r=window.core_isPluginExecutable.apply(this,arguments);
	if (!r) return;

	var err=''
	var t=plugin.tiddler.title;
	var u='http://www.TiddlyTools.com/';
	var ver=function(x,y){return (!x||!x.length||!x.startsWith(y))?false:x};
	var msg=function(x)  {return '"'+x+'" is missing/invalid. '}
	var n=plugin["Name"]; var s=plugin["Source"]; var l=plugin["License"];
	if(!(  ver(n,t)))err+=msg('Name');
	if(!(s=ver(s,u)))err+=msg('Source');
	if(!(l=ver(l  )))err+=msg('License');
	if(!err.length) return true;
	err+='Please re-install from '+(s||d||(u+'#'+(n||t)));
	err+=' [See '+(s?(d||l||u):(l||u))+' for more information]';
	plugin.log.push(err);
	return false;
}
if(typeof(verifyPlugin)=='undefined') function verifyPlugin(u) {
	var up=''; var t=tiddler.title;
	var get=function(x)  {return store.getTiddlerSlice(t,x)};
	var ver=function(x,y){return (!x||!x.length||!x.startsWith(y))?false:x};
	var msg=function(x)  {return '"'+x+'" is missing/invalid. '}
	var n=get('Name'); var s=get('Source'); var d=get('Documentation'); var l=get('License');
	if(!(  ver(n,t)))up+=msg('Name');
	if(!(s=ver(s,u)))up+=msg('Source');
	if(!(d=ver(d,u)))up+=msg('Documentation');
	if(!(l=ver( l )))up+=msg('License');
	if(!up.length) return;
	up+='Please re-install from '+(s||d||(u+'#'+(n||t)));
	up+=' [See '+(s?(d||l||u):(l||u))+' for more information]';
	throw(up);
}
if(verifyPlugin)verifyPlugin('http://www.TiddlyTools.com/');
//}}}
===
+++!!![save changes with forced refresh]...
{{{
<script label="save to disk">
	// adds forced refresh to 'save to disk' handling
	saveChanges();
	var anim=config.options.chkAnimate; // save animation setting
	config.options.chkAnimate=false; // suspend animation
	store.notify("SideBarTabs",true); // force refresh after saving
	config.options.chkAnimate=anim; // restore animation setting
	return false;
</script><script>
	place.lastChild.innerHTML=config.macros.saveChanges.label;
	place.lastChild.title=config.macros.saveChanges.prompt;
	place.lastChild.style.fontWeight="normal";
</script>
}}}
===
+++!!![vChumby embed code]...
{{{
!vChumby
<html><hide linebreaks>
	<embed width="492" height="405" quality="high" bgcolor="#FFFFFF" wmode="transparent"
		name="virtualchumby" type="application/x-shockwave-flash"
		src="http://www.chumby.com/virtualchumby2.swf"
		FlashVars="_chumby_profile_url=http%3A%2F%2Fwww.chumby.com%2Fxml%2Fvirtualprofiles%2F$1&amp;baseURL=http%3A%2F%2Fwww.chumby.com"
		pluginspage="http://www.macromedia.com/go/getflashplayer">
	</embed>
</html>
!end
}}}
===
+++!!![vChumby DarkClocks]...<<tiddler TestTiddler##vChumby with: EE97A8A0-FEC1-11DC-BFF1-00156009DD9B>>===
+++!!![vChumby 4Eric]...<<tiddler TestTiddler##vChumby with: 69115A74-6BE9-11DD-9807-001B24F07EF4>>===
+++!!![Using MatchTagsPlugin with CheckboxPlugin to create a table of tiddlers]...
Set/clear <<tag excludeLists>> on tiddlers tagged with <<tag sample>>
<script>
   var tids=store.getMatchingTiddlers("sample");
   var out="";
   var itemfmt="|<<tiddler CheckboxToggleTag with: excludeLists '' %0>> %0";
   var columns=3;
   for (var t=0; t<tids.length; t++) {
      out+=itemfmt.format(["[["+tids[t].title+"]]"]);
      if ((t+1)%columns==0 || t==tids.length-1) out+="|\n";
   }
   return out;
</script>
===
<script>
	// note: we can't use a field in the current tiddler to track the status value,
	// because it triggers an automatic re-render when saving the new status value
	// so we create/use hidden "TiddlerName_data" tiddler to hold value(s)

        window.initStatus=function(elem,id) {
		var here=story.findContainingTiddler(elem); if (!here) return;
		var tid=here.getAttribute("tiddler")+"_data"; 
		if (!store.tiddlerExists(tid)) // make sure tiddler exists
			store.saveTiddler(tid,tid,"",
				config.options.txtUserName,new Date(),"excludeLists",{});
		if (store.getValue(tid,id)===undefined)
			store.setValue(tid,id,0); // init new value
		window.showStatus(elem,store.getValue(tid,id));
	}
        window.showStatus=function(elem,val) {
                var colors=["#900","#090","#009"];
                var text=["red","green","blue"];
		if (val===undefined || val>=colors.length) val=0;
                elem.style.backgroundColor=colors[val];
                elem.innerHTML=text[val];
                return val;
	}
        window.nextStatus=function(event,id) {
		var here=story.findContainingTiddler(event.target); if (!here) return;
		var tid=here.getAttribute("tiddler")+"_data"; 
		var val=store.getValue(tid,id); // get status
		val=window.showStatus(event.target,parseInt(val)+1); // cycle and render status
		store.setValue(tid,id,val); // store new status
        }
</script>+++!!![Using custom fields with onclick handler to cycle status values]...
|foo|<script>window.initStatus(place,"id1");place.onclick=function(event){window.nextStatus(event,"id1")};</script>|
|bar|<script>window.initStatus(place,"id2");place.onclick=function(event){window.nextStatus(event,"id2")};</script>|
===
+++!!![clipboard access]...
<script label="click to test">
	// get security access
	if(!window.Components) return;
	try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }
	catch(e) { alert(e.description?e.description:e.toString()); return; }
	const clip=Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
	clip.copyString(prompt("please enter text to put on clipboard"));
</script>
Use this input area to paste from the clipboard (to examine contents)
<html><textarea rows=5 cols=40></textarea></html>
===
+++!!![recent changes popups]...
<<date popup Y M D-1 "yesterday" "DDD MMM DDth YYYY">><script>
	place.lastChild.title="tiddlers that were created/edited yesterday";
</script>/%
%/ <<date popup today "today" "DDD MMM DDth YYYY">><script>
	place.lastChild.title="tiddlers that were created/edited today";
</script>/%
===
+++!!![relative font sizes]...
|{{big{big}}}|@@font-size:14pt;big 14pt@@|@@font-size:1.5em;big 1.5em@@|
|{{medium{medium}}}|@@font-size:12pt;medium 12pt@@|@@font-size:1.3em;medium 1.3em@@|
|{{normal{normal}}}|@@font-size:9pt;normal 9pt@@|@@font-size:1em;normal 1em@@|
|{{small{small}}}|@@font-size:8pt;small 8pt@@|@@font-size:0.85em;small 0.85em@@|
|{{fine{fine}}}|@@font-size:7pt;fine 7pt@@|@@font-size:0.75em;fine 0.75em@@|
|{{tiny{tiny}}}|@@font-size:6pt;tiny 6pt@@|@@font-size:0.65em;tiny 0.65em@@|
===
+++!!![encode bookmarklet URI from onclick handler]...
<html><hide linebreaks><a href=""
onmouseover="this.href='javascript:void(eval(decodeURIComponent(%22(function(){try{('
	+encodeURIComponent(encodeURIComponent(this.onclick))
	+')()}catch(e){alert(e.description?e.description:e.toString())}})()%22)))';"
onclick="alert('yop! we are here!')">drag this to the toolbar!</a></html>
===
+++!!![Use core tiddler macro to execute inline javscript]...
before
<<tiddler {{
	var here="TestTiddler"
	var t="\n{{{\n"+store.getTiddlerText(title)+"\n\}\}\}\n";
	var c=document.getElementById("tiddler"+title).childNodes;
	for (var i=0; i<c.length; i++) if (hasClass(c[i],"viewer")) { wikify(t,c[i]); break; } ;
	"";
}}>>
after
===
+++!!![extended String prototype for $n marker subtitutions]...
<script label="test it..." show>
String.prototype.substitute=function(args) { // replace "substitution markers" ($1-$9) with macro param values (if any)
	if (!args || !args.length) return this;
	var n=args.length; if (n>9) n=9;
	var t=this; for(var i=0; i<n; i++) { var re=new RegExp("\\$" + (i + 1),"mg"); t=t.replace(re,args[i]); }
	return t;
}
alert("test $1 foobar".substitute(["mumble"]));
</script>
===
+++!!![Conditionally displayed browser-specific content, using CSS classes]...
When applying these CSS rules:
/*{{{*/
*[class="ieOnly"]
	{ display:none; }
* html .mozOnly, *:first-child+html .mozOnly
	{ display: none; }
/*}}}*/
the following source content
<<<
"""
You are using {{ieOnly{Microsoft Internet Explorer}}}{{mozOnly{a mozilla-based browser}}}...
"""
<<<
is rendered by this browser as:
<<<
You are using {{ieOnly{Microsoft Internet Explorer}}}{{mozOnly{a mozilla-based browser}}}...
<<<
===
+++!!![RollText using content from a macro]...
{{big center{
<<tiddler RollText with: {{wikifyPlainText("\<\<QOTD Quotations\>\>").replace(/"/g,"\\\"")}} 500 500 3000>>}}}
===
+++!!![RollText using content from another tiddler]...
{{big center{
<<tiddler RollText with: {{wikifyPlainTest("About").replace(/"/g,"\\\"")}} 500 500 3000>>}}}
===
+++!!![Remote click a slider button from a separate onclick link]...
+++[label]#slider_id:...
	slider contents
	goes here
===

<script label="toggle slider panel">
	var e=document.getElementById("slider_id");
	if (e && e.button) window.onClickNestedSlider({target:e.button});
</script>
===
/***
|Name|TextAreaPlugin|
|Source|http://www.TiddlyTools.com/#TextAreaPlugin|
|Documentation|http://www.TiddlyTools.com/#TextAreaPluginInfo|
|Version|2.2.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.focusTiddler|
|Options|##Configuration|
|Description|Adds Find/Again keyboard search, autosize, and 'stretch bar' resize for textarea controls|
!!!!!Documentation
>see [[TextAreaPluginInfo]]
!!!!!Configuration
<<<
<<option chkTextAreaExtensions>> use control-f (find), control-g (find again) inside text area
<<option chkDisableAutoSelect>> place cursor at start of textarea instead of pre-selecting content
<<option chkResizeEditor>> modify shadow EditTemplate to add resizeable text area (and autosize command)
<<<
!!!!!Revisions
<<<
2009.04.06 [2.2.0] added resizeListbox macro definition and adjusted dragbar width calculation.
|please see [[TextAreaPluginInfo]] for additional revision details|
2006.01.22 [1.0.0] Moved from temporary "System Tweaks" tiddler into 'real' TextAreaPlugin tiddler.
<<<
!!!!!Code
***/
//{{{
version.extensions.TextAreaPlugin= {major: 2, minor: 2, revision: 0, date: new Date(2009,4,6)};

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

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

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

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

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

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

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

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

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

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

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

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

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

// TextAreaResizer script by Jason Johnston (jj@lojjic.net)
// Created August 2003.  Use freely, but give me credit.
// adds a handle below textareas that the user can drag with the mouse to resize the textarea.
// MODIFIED by ELS for cross-browser (IE) compatibility, including:

window.TextAreaResizer = function(elt) {
	this.element = elt;
	this.create();
}
window.TextAreaResizer.prototype = {
	create : function() {
		var elt = this.element;
		var thisRef = this;
		var h = this.handle = document.createElement("div");
		h.style.height = "2px"; // was 4px... looked too fat!
		h.style.overflow = "hidden"; // ELS: force IE to trim height to < 1em
		var adjust=elt.nodeName=='textarea'?4:0;  // 4 pixels for textarea border edge
		h.style.width=(elt.offsetWidth-adjust)+"px";
//		h.style.width="auto";
		h.style.backgroundColor = "#999"; // ELS: standard mid-tone (dark) gray
		h.style.cursor = "s-resize";
		h.title = "Drag to resize text box";
		h.onmousedown=function(evt){thisRef.dragStart(evt)};
		elt.parentNode.insertBefore(h, elt.nextSibling);
	},
	dragStart : function(evt) {
		if (!evt) var evt=window.event;
		this.dragStop(evt); // ELS: stop any current drag processing first
		var thisRef = this;
		this.dragStartY = evt.clientY;
		this.dragStartH = this.element.offsetHeight;
		document.savedmousemove=document.onmousemove;
		document.onmousemove=this.dragMoveHdlr=function(evt){thisRef.dragMove(evt)};
		document.savedmouseup=document.onmouseup;
		document.onmouseup=this.dragStopHdlr=function(evt){thisRef.dragStop(evt)};
	},
	dragMove : function(evt) {
		if (!evt) var evt=window.event;
		// ELS: make sure height is at least 10px
		var h=this.dragStartH+evt.clientY-this.dragStartY;
		if (h<10) h=10; this.element.style.height=h+"px";
		// ELS: match handle to textarea width (which may have changed due to document scrollbars)
		var adjust=this.element.nodeName.toLowerCase()=='textarea'?4:0; // 4 pixels for textarea
console.log(adjust);
		this.handle.style.width=(this.element.offsetWidth-adjust)+"px";
		// ELS: when manually resizing, disable autoresizing (without restoring saved height)
		if (this.element.maxed!=undefined && this.element.maxed)
			config.commands.autosizeEditor.off(this.element,false);
	},
	dragStop : function(evt) {
		if (!evt) var evt=window.event;
		document.onmousemove=(document.savedmousemove!=undefined)?document.savedmousemove:null;
		document.onmousemove=(document.savedmouseup!=undefined)?document.savedmouseup:null;
	},
	destroy : function() {
		var elt = this.element;
		elt.parentNode.removeChild(this.handle);
		elt.style.height = "";
	}
};
//}}}
!!!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.
<<<
//Adopted at the ''Mid-Term Meeting of the International Consultative Forum on Education for All'' in Amman, Jordan, June 1996//
<<<
Education is empowerment. It is the key to establishing and reinforcing democracy, to development which is both sustainable and humane and to peace founded upon mutual respect and social justice. Indeed, in a world in which creativity and knowledge play an ever greater role, the right to education is nothing less that the right to participate in the life of the modern world.

Aware of the power and potential of education, the international community committed itself at the [[World Conference on Education for All]] held in Jomtien, Thailand, in March 1990, to meet the basic learning needs of every individual. In major conferences since Jomtien, the nations of the world have repeatedly endorsed the central importance of basic education in all aspects of the development process: preserving the environment, managing population growth, combating poverty, promoting social development and creating equality between the sexes. We have now met in Amman, Jordan, at the gracious invitation of His Majesty King Hussein Bin Talal, to review progress toward the goals set in Jomtien and, of even greater importance, to find ways of overcoming persistent problems and confronting new challenges in order to achieve education for all (EFA).
!!!Gains Achieved
In the six years since the adoption of the [[World Declaration on Education for All]], there has been significant progress in basic education, not in all countries nor as much as had been hoped, but progress that is nonetheless real. Primary school enrolment has increased, an estimated fifty million more children are enrolled today than in 1990. The number of out-of-school children, which had grown inexorably for decades, is also beginning to decline. There are today 20 million fewer out-of-school children of primary-school age than at the start of the decade. This progress is the result of concerted efforts by governments and peoples to extend educational opportunities. New partnerships have emerged, new resources have been tapped and new energies and ideas have been devoted to making education for all a reality.

Accompanying these quantitative gains has been a growing emphasis on the quality of education. Without educational content relevant to current needs, without preparation in the learning skills and new knowledge required for the future, and without efforts to improve learning achievement, access may neither serve the purposes intended nor provide the benefits expected. Fortunately, serious reflection, more rigorous planning and a spirit of innovation have prepared the ground in many countries for important educational advances in the years ahead.

We acknowledge the forces of progress at work in all parts of the world: the new dynamism with which Africa is struggling, in difficult circumstances, to reverse the negative trends of the last ten years; the valiant efforts of South Asia to bring basic education to hundreds of millions of people; the increasing political support being given to EFA in the Arab States, which is increasingly perceived as the best preparation for meeting the challenges and uncertainties of the future; and the measures taken in other regions of the world to protect, sustain and enhance the gains that have been made since the Jomtien Conference.
!!!Shortfalls
Yet, if the achievements of the last six years give reason for optimism, they provide no room for complacency. Continued progress requires even more forceful and concerted action, based on good information, sound research and careful analysis and aimed at achieving clearly specified results.

No point was more stressed in Jomtien than the urgent need to close the gender gap in education, both as a matter of simple equity and as the most effective means for responding to demographic pressures and promoting development. Yet, progress towards this goal has been excruciatingly slow; much more must be done.

The expanded vision of basic education espoused in Jomtien has often been reduced to a simple emphasis upon putting more children into school: an essential step, but only one of many measures needed to achieve EFA.

Early childhood care and development, with its enormous potential and distinctive role in promoting the active learning capacities and the overall well-being and development of children, while receiving greatly increased attention, nonetheless remains seriously under-developed and under-supported in many countries.

This lack of support applies as well to out-of-school literacy and education programmes for adolescents and adults. There are some 900 million adult illiterates in the world, nearly two- thirds of them women. In all societies, the best predictor of the learning achievement of children is the education and literacy level of their parents. Investments in adult education and literacy are, thus, investments in the education of entire families.

There has also been a tendency to focus on basic education without recognizing its essential links to secondary and higher education, as well as to teacher training and the development of technical and vocational skills. The [[World Declaration on Education for All]] was intended to empower, not to limit -- to propose minimums, but not to set ceilings.
!!!The Road Ahead
As we look to the end of the century and beyond, the leadership in each country must assume the responsibility for accelerating progress towards EFA, setting firm targets and timetables for achieving them.

International agencies and donors must also play their full role as partners in the EFA movement, matching national efforts with significantly increased international support, improved co- ordination and greater responsiveness to country priorities.

All EFA partners must learn how to mobilize new resources as well as how to use existing resources more effectively. In the quest for EFA, enhanced political will, greater financial and material resources and improved management are all essential.
!!!Emerging Challenges
In the light of the developments of the past six years, it has become essential to re-examine goals and add new areas and means of action to those set forth in the Jomtien vision:

Given the trend toward more open societies and global economies, we must emphasize the forms of learning and critical thinking that enable individuals to understand changing environments, create new knowledge and shape their own destinies. We must respond to new challenges by promoting learning in all aspects of life, through all the institutions of society, in effect, creating environments in which living is learning.

Given the growing recognition and reality of multicultural and diverse societies, we must respond by including local content as well as cross-cultural learning in basic education and by acknowledging the essential role of the mother tongue for initial instruction.

Given escalating violence caused by growing ethnic tensions and other sources of conflict, we must respond by ensuring that education reinforces mutual respect, social cohesion and democratic governance; We must learn how to use education to prevent conflict and, where crises do occur, ensure that education is among the first responses, thereby contributing to hope, stability and the healing of the wounds of conflict.

Given debt burdens, restrictions on social expenditures and continuing wasteful expenditure on weapons of war, we must respond with measures to reduce debt burdens, including the transformation of liabilities into assets through debt swaps, policies that promote investments in a nation's people and future, and reforms to the international economic system that give poor countries a chance to earn their way in the world.

Given rapidly growing numbers of youth at risk, often alienated from society and facing unemployment, we must seek ways to make education more responsive, both to the immediate realities facing these youth, as well as to the changing realities of a world in which basic learning skills are ever more important.
!!!Continuing Challenges
Even as we focus our attention on these new realities and challenges, we must persist in our efforts to meet the goals set forth in the World Declaration on Education for All:

The priority of priorities must continue to be the education of women and girls. Successful approaches and programmes must be identified in order that they may be replicated and expanded. There can be no enduring success in basic education until the gender gap is closed.

The training, status and motivation of teachers continues to be at the very core of educational concerns. While we must make better and wider use of technology and media, they can complement, but never replace the essential role of the teacher as the organizer of the instructional process and as a guide and example to the young.

The full vision of EFA, that of a learning society, recognizes the role of parents, families and communities as the child's first teachers. Both learning and teaching begin at birth and continue throughout life, as individuals work, live and communicate ideas and values by word and example.

EFA can only be achieved through a broad partnership united by a shared purpose. It is essential to sustain the spirit of partnership and to broaden it to include all elements of society: parliaments, religious bodies, voluntary and community groups, the business sector, the media and others. EFA was founded on a faith in partnerships and a belief that, in a shrinking world, we are destined to share fully in the successes as well as the setbacks of other peoples and countries. In the quest to achieve EFA, it is essential that we sustain and enhance this spirit of solidarity.

The efficient and effective use of resources continues to be essential to the progress of EFA. We must seek more efficient management of education systems, make more effective use of partnerships, draw more systematically upon research and experimentation, and develop reliable information and assessment systems.

The right to education has been powerfully reaffirmed by the near-universal ratification of the United Nations <a href="crc.htm">Convention on the Rights of the Child</a>. Yet, there are still over 100 million children without access to education. We must respond urgently with new approaches and strategies capable of bringing quality education within the reach of all, including the poor, the remote and those with special educational needs. This calls for a comprehensive effort tailored to the needs of specific populations and based upon the best available expertise and technology.
!!!Renewing the Pledge
Six years ago, at Jomtien, the international community agreed upon the necessity and the possibility of achieving Education for All. Today, we, the participants in the Mid-Decade Review of EFA, reflecting on the experience and knowledge gained during the intervening years, reaffirm that necessity and possibility and re-dedicate ourselves to the essential task of bring the benefits of education to all.
@@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 ''Fast Company'' 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.fastcompany.com/magazine/05/deehock.html}}}
<html><iframe
	src = "http://www.fastcompany.com/magazine/05/deehock.html"
	title = "The Trillion-Dollar Vision of Dee Hock, Fast Company, October 1996"
	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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/van-dec.htm}}}
<html><iframe
title="The Vancouver Declaration on Human Settlements"
src="http://www.un-documents.net/van-dec.htm"
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]]
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>>
The TiddlerTweakerPlugin allows you to modify the values of the basic tiddler fields.
<<tiddlerTweaker>>
/***
|Name|TiddlerTweakerPlugin|
|Source|http://www.TiddlyTools.com/#TiddlerTweakerPlugin|
|Version|2.4.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|select multiple tiddlers and modify author, created, modified and/or tag values|
~TiddlerTweaker is a tool for TiddlyWiki authors.  It allows you to select multiple tiddlers from a listbox, either by direct interaction or automatically matching specific criteria.  You can then modify the creator, author, created, modified and/or tag values of those tiddlers using a compact set of form fields.  The values you enter into the fields simultantously overwrite the existing values in all tiddlers you have selected.
!!!!!Usage
<<<
{{{<<tiddlerTweaker>>}}}
{{smallform{<<tiddlerTweaker>>}}}
By default, any tags you enter into the TiddlerTweaker will //replace// the existing tags in all the tiddlers you have selected.  However, you can also use TiddlerTweaker to quickly filter specified tags from the selected tiddlers, while leaving any other tags assigned to those tiddlers unchanged:
>Any tag preceded by a "+" (plus) or "-" (minus), will be added or removed from the existing tags //instead of replacing the entire tag definition// of each tiddler (e.g., enter "-excludeLists" to remove that tag from all selected tiddlers.  When using this syntax, care should be taken to ensure that //every// tag is preceded by "+" or "-", to avoid inadvertently overwriting any other existing tags on the selected tiddlers.  (note: the "+" or "-" prefix on each tag value is NOT part of the tag value, and is only used by TiddlerTweaker to control how that tag value is processed)
Important Notes:
* Inasmuch as TiddlerTweaker is a 'power user' tool that can perform 'batch' functions (operating on many tiddlers at once), you should always have a recent backup of your document (or "save changes" just *before* tweaking the tiddlers), just in case you "shoot yourself in the foot".
* By design, TiddlerTweaker does NOT update the 'modified' date of tiddlers simply by making changes to the tiddler's values.  A tiddler's dates are ONLY updated when the corresponding 'created' and/or 'modified' checkboxes are selected and you enter new values for those dates.  As a general rule, after using TiddlerTweaker, always ''//remember to save your document//'' when you are done, even though the tiddler timeline tab may not show any recently modified tiddlers.
* Because you may be changing the values on many tiddlers simultaneously, selecting and updating all tiddlers in a document operation may take a while and your browser might warn about an "unresponsive script"... you should give it a whole bunch of time to 'continue'... it should complete the processing... eventually.
<<<
!!!!!Revisions
<<<
2009.03.30 [2.4.0] added 'sort by modifier'
2009.01.22 [2.3.0] added support for text pattern find/replace
2008.10.27 [2.2.3] in setTiddlers(), fixed Safari bug by replacing static Array.concat(...) with new Array().concat(...)
2008.09.07 [2.2.2] added removeCookie() function for compatibility with [[CookieManagerPlugin]]
2008.05.12 [2.2.1] replace built-in backstage "tweak" task with tiddler tweaker control panel (moved from BackstageTweaks)
2008.01.13 [2.2.0] added "auto-selection" links: all, changed, tags, title, text
2007.12.26 [2.1.0] added support for managing 'creator' custom field (see [[CoreTweaks]])
2007.11.01 [2.0.3] added config.options.txtTweakerSortBy for cookie-based persistence of list display order preference setting.
2007.09.28 [2.0.2] in settiddlers() and deltiddlers(), added suspend/resume notification handling (improves performance when operating on multiple tiddlers)
2007.08.03 [2.0.1] added shadow definition for [[TiddlerTweaker]] tiddler for use as parameter references with {{{<<tiddler>>, <<slider>> or <<tabs>>}}} macros.
2007.08.03 [2.0.0] converted from inline script
2006.01.01 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.TiddlerTweakerPlugin= {major: 2, minor: 4, revision: 0, date: new Date(2009,1,22)};

// shadow tiddler
config.shadowTiddlers.TiddlerTweaker="<<tiddlerTweaker>>";

/// backstage task
if (config.tasks) { // for TW2.2b3 or above
	config.tasks.tweak.tooltip="review/modify tiddler internals: dates, authors, tags, etc.";
	config.tasks.tweak.content="{{smallform small groupbox{<<tiddlerTweaker>>}}}";
}

if (config.options.txtTweakerSortBy==undefined) config.options.txtTweakerSortBy="modified";

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

config.macros.tiddlerTweaker = {
	html: '<form style="display:inline"><!--\
		--><table style="padding:0;margin:0;border:0;width:100%"><tr valign="top" style="padding:0;margin:0;border:0"><!--\
		--><td style="text-align:center;white-space:nowrap;width:99%;padding:0;margin:0;border:0"><!--\
			--><font size=-2><div style="text-align:left;"><span style="float:right"><!--\
			-->&nbsp; <a href="javascript:;" \
				title="select all tiddlers"\
				onclick="\
				var f=this; while (f&&f.nodeName.toLowerCase()!=\'form\')f=f.parentNode;\
				for (var t=0; t<f.list.options.length; t++)\
					if (f.list.options[t].value.length) f.list.options[t].selected=true;\
				config.macros.tiddlerTweaker.selecttiddlers(f.list);\
				return false">all</a><!--\
			-->&nbsp; <a href="javascript:;" \
				title="select tiddlers that are new/changed since the last file save"\
				onclick="\
				var lastmod=new Date(document.lastModified);\
				var f=this; while (f&&f.nodeName.toLowerCase()!=\'form\')f=f.parentNode;\
				for (var t=0; t<f.list.options.length; t++) {\
					var tid=store.getTiddler(f.list.options[t].value);\
					f.list.options[t].selected=tid&&tid.modified>lastmod;\
				}\
				config.macros.tiddlerTweaker.selecttiddlers(f.list);\
				return false">changed</a><!--\
			-->&nbsp; <a href="javascript:;" \
				title="select tiddlers with at least one matching tag"\
				onclick="\
				var t=prompt(\'Enter space-separated tags (match ONE)\');\
				if (!t||!t.length) return false;\
				var tags=t.readBracketedList();\
				var f=this; while (f&&f.nodeName.toLowerCase()!=\'form\')f=f.parentNode;\
				for (var t=0; t<f.list.options.length; t++) {\
					f.list.options[t].selected=false;\
					var tid=store.getTiddler(f.list.options[t].value);\
					if (tid&&tid.tags.containsAny(tags)) f.list.options[t].selected=true;\
				}\
				config.macros.tiddlerTweaker.selecttiddlers(f.list);\
				return false">tags</a><!--\
			-->&nbsp; <a href="javascript:;" \
				title="select tiddlers whose titles include matching text"\
				onclick="\
				var txt=prompt(\'Enter a title (or portion of a title) to match\');\
				if (!txt||!txt.length) return false;\
				var f=this; while (f&&f.nodeName.toLowerCase()!=\'form\')f=f.parentNode;\
				for (var t=0; t<f.list.options.length; t++) {\
					f.list.options[t].selected=f.list.options[t].value.indexOf(txt)!=-1;\
				}\
				config.macros.tiddlerTweaker.selecttiddlers(f.list);\
				return false">titles</a><!--\
			-->&nbsp; <a href="javascript:;" \
				title="select tiddlers containing matching text"\
				onclick="\
				var txt=prompt(\'Enter tiddler text (content) to match\');\
				if (!txt||!txt.length) return false;\
				var f=this; while (f&&f.nodeName.toLowerCase()!=\'form\')f=f.parentNode;\
				for (var t=0; t<f.list.options.length; t++) {\
					var tt=store.getTiddlerText(f.list.options[t].value,\'\');\
					f.list.options[t].selected=(tt.indexOf(txt)!=-1);\
				}\
				config.macros.tiddlerTweaker.selecttiddlers(f.list);\
				return false">text</a> &nbsp;<!--\
			--></span><span>select tiddlers</span><!--\
			--></div><!--\
			--></font><select multiple name=list size="11" style="width:99.99%" \
				title="use click, shift-click and/or ctrl-click to select multiple tiddler titles" \
				onclick="config.macros.tiddlerTweaker.selecttiddlers(this)" \
				onchange="config.macros.tiddlerTweaker.setfields(this)"><!--\
			--></select><br><!--\
			-->show<input type=text size=1 value="11" \
				onchange="this.form.list.size=this.value; this.form.list.multiple=(this.value>1);"><!--\
			-->by<!--\
			--><select name=sortby size=1 \
				onchange="config.macros.tiddlerTweaker.init(this.form,this.value)"><!--\
			--><option value="title">title</option><!--\
			--><option value="size">size</option><!--\
			--><option value="modified">modified</option><!--\
			--><option value="created">created</option><!--\
			--><option value="modifier">modifier</option><!--\
			--></select><!--\
			--><input type="button" value="refresh" \
				onclick="config.macros.tiddlerTweaker.init(this.form,this.form.sortby.value)"<!--\
			--> <input type="button" name="stats" disabled value="totals..." \
				onclick="config.macros.tiddlerTweaker.stats(this)"><!--\
		--></td><td style="white-space:nowrap;padding:0;margin:0;border:0;width:1%"><!--\
			--><div style="text-align:left"><font size=-2>&nbsp;modify values</font></div><!--\
			--><table border=0 style="width:100%;padding:0;margin:0;border:0;"><tr style="padding:0;border:0;"><!--\
			--><td style="padding:1px;border:0;white-space:nowrap"><!--\
				--><input type=checkbox name=settitle unchecked \
					title="allow changes to tiddler title (rename tiddler)" \
					onclick="this.form.title.disabled=!this.checked">title<!--\
			--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
				--><input type=text name=title size=35 style="width:98%" disabled><!--\
			--></td></tr><tr style="padding:0;border:0;"><td style="padding:1px;border:0;white-space:nowrap"><!--\
				--><input type=checkbox name=setcreator unchecked \
					title="allow changes to tiddler creator" \
					onclick="this.form.creator.disabled=!this.checked">created by<!--\
			--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
				--><input type=text name=creator size=35 style="width:98%" disabled><!--\
			--></td></tr><tr style="padding:0;border:0;"><td style="padding:1px;border:0;white-space:nowrap"><!--\
				--><input type=checkbox name=setwho unchecked \
					title="allow changes to tiddler author" \
					onclick="this.form.who.disabled=!this.checked">modified by<!--\
			--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
				--><input type=text name=who size=35 style="width:98%" disabled><!--\
			--></td></tr><tr style="padding:0;border:0;"><td style="padding:1px;border:0;white-space:nowrap"><!--\
				--><input type=checkbox name=setcdate unchecked \
					title="allow changes to created date" \
					onclick="var f=this.form; f.cm.disabled=f.cd.disabled=f.cy.disabled=f.ch.disabled=f.cn.disabled=!this.checked"><!--\
				-->created on<!--\
			--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
				--><input type=text name=cm size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
				--> / <input type=text name=cd size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
				--> / <input type=text name=cy size=4 style="width:3em;padding:0;text-align:center" disabled><!--\
				--> at <input type=text name=ch size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
				--> : <input type=text name=cn size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
			--></td></tr><tr style="padding:0;border:0;"><td style="padding:1px;border:0;white-space:nowrap"><!--\
				--><input type=checkbox name=setmdate unchecked \
					title="allow changes to modified date" \
					onclick="var f=this.form; f.mm.disabled=f.md.disabled=f.my.disabled=f.mh.disabled=f.mn.disabled=!this.checked"><!--\
				-->modified on<!--\
			--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
				--><input type=text name=mm size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
				--> / <input type=text name=md size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
				--> / <input type=text name=my size=4 style="width:3em;padding:0;text-align:center" disabled><!--\
				--> at <input type=text name=mh size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
				--> : <input type=text name=mn size=2 style="width:2em;padding:0;text-align:center" disabled><!--\
			--></td></tr><tr style="padding:0;border:0;"><td style="padding:1px;border:0;white-space:nowrap"><!--\
				--><input type=checkbox name=replacetext unchecked\
					title="find/replace matching text" \
					onclick="this.form.pattern.disabled=this.form.replacement.disabled=!this.checked">replace text<!--\
			--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
				--><input type=text name=pattern size=15 value="" style="width:40%" disabled \
					title="enter TEXT PATTERN (regular expression)"> with <!--\
				--><input type=text name=replacement size=15 value="" style="width:40%" disabled \
					title="enter REPLACEMENT TEXT"><!--\
			--></td></tr><tr style="padding:0;border:0;"><td style="padding:1px;border:0;white-space:nowrap"><!--\
				--><input type=checkbox name=settags checked \
					title="allow changes to tiddler tags" \
					onclick="this.form.tags.disabled=!this.checked">tags<!--\
			--></td><td style="padding:1px;border:0;white-space:nowrap"><!--\
				--><input type=text name=tags size=35 value="" style="width:98%" \
					title="enter new tags or use \'+tag\' and \'-tag\' to add/remove tags from existing tags"><!--\
			--></td></tr></table><!--\
			--><div style="text-align:center"><!--\
			--><nobr><input type=button name=display disabled style="width:32%" value="display tiddlers" \
				onclick="config.macros.tiddlerTweaker.displaytiddlers(this)"><!--\
			--> <input type=button name=del disabled style="width:32%" value="delete tiddlers" \
				onclick="config.macros.tiddlerTweaker.deltiddlers(this)"><!--\
			--> <input type=button name=set disabled style="width:32%" value="update tiddlers" \
				onclick="config.macros.tiddlerTweaker.settiddlers(this)"></nobr><!--\
			--></div><!--\
		--></td></tr></table><!--\
		--></form><span style="display:none"><!--content replaced by tiddler "stats"--></span>\
	',
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var span=createTiddlyElement(place,"span");
		span.innerHTML=this.html;
		this.init(span.firstChild,config.options.txtTweakerSortBy);
	},
	init: function(f,sortby) { // initialize form controls
		if (!f) return; // form might not be rendered yet...
		while (f.list.options[0]) f.list.options[0]=null; // empty current list content
		var tids=store.getTiddlers(sortby);
		if (sortby=='size') // descending order
			tids.sort(function(a,b) {return a.text.length > b.text.length ? -1 : (a.text.length == b.text.length ? 0 : +1);});
		var who='';
		for (i=0; i<tids.length; i++) { var t=tids[i];
			var label=t.title; var value=t.title;
			switch (sortby) {
				case 'modified':
				case 'created':
					var t=tids[tids.length-i-1]; // reverse order
					var when=t[sortby].formatString('YY.0MM.0DD 0hh:0mm ');
					label=when+t.title;
					value=t.title;
					break;
				case 'size':
					label='['+t.text.length+'] '+label;
					break;
				case 'modifier':
				case 'creator':
					if (who!=t[sortby]) {
						who=t[sortby];
						f.list.options[f.list.length]=new Option('by '+who+':','',false,false);
					}
					label='\xa0\xa0\xa0'+label; // indent
					break;
			}
			f.list.options[f.list.length]=new Option(label,value,false,false);
		}
		f.title.value=f.who.value=f.creator.value=f.tags.value="";
		f.cm.value=f.cd.value=f.cy.value=f.ch.value=f.cn.value="";
		f.mm.value=f.md.value=f.my.value=f.mh.value=f.mn.value="";
		f.stats.disabled=f.set.disabled=f.del.disabled=f.display.disabled=true;
		f.settitle.disabled=false;
		config.options.txtTweakerSortBy=sortby; // remember current setting
		f.sortby.value=sortby; // sync droplist selection with current setting
		if (sortby!="modified") // non-default preference... save cookie
			saveOptionCookie("txtTweakerSortBy");
		else removeCookie("txtTweakerSortBy"); // default preference... clear cookie
	},
	selecttiddlers: function(here) { // enable/disable tweaker fields based on number of items selected
		// count how many tiddlers are selected
		var f=here.form; var list=f.list;
		var c=0; for (i=0;i<list.length;i++) if (list.options[i].selected) c++;
		if (c>1) f.title.disabled=true;
		if (c>1) f.settitle.checked=false;
		f.set.disabled=(c==0);
		f.del.disabled=(c==0);
		f.display.disabled=(c==0);
		f.settitle.disabled=(c>1);
		f.stats.disabled=(c==0);
		var msg=(c==0)?'select tiddlers':(c+' tiddler'+(c!=1?'s':'')+' selected');
		here.previousSibling.firstChild.firstChild.nextSibling.innerHTML=msg;
		if (c) clearMessage(); else displayMessage("no tiddlers selected");
	},
	setfields: function(here) { // set tweaker edit fields from first selected tiddler
		var f=here.form;
		if (!here.value.length) {
			f.title.value=f.who.value=f.creator.value=f.tags.value="";
			f.cm.value=f.cd.value=f.cy.value=f.ch.value=f.cn.value="";
			f.mm.value=f.md.value=f.my.value=f.mh.value=f.mn.value="";
			return;
		}
		var tid=store.getTiddler(here.value); if (!tid) return;
		f.title.value=tid.title;
		f.who.value=tid.modifier;
		f.creator.value=tid.fields['creator']||''; // custom field - might not exist
		f.tags.value=tid.tags.join(' ');
		var c=tid.created; var m=tid.modified;
		f.cm.value=c.getMonth()+1;
		f.cd.value=c.getDate();
		f.cy.value=c.getFullYear();
		f.ch.value=c.getHours();
		f.cn.value=c.getMinutes();
		f.mm.value=m.getMonth()+1;
		f.md.value=m.getDate();
		f.my.value=m.getFullYear();
		f.mh.value=m.getHours();
		f.mn.value=m.getMinutes();
	},
	settiddlers: function(here) {
		var f=here.form; var list=f.list;
		var tids=[];
		for (i=0;i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
		if (!tids.length) { alert("please select at least one tiddler"); return; }
		var cdate=new Date(f.cy.value,f.cm.value-1,f.cd.value,f.ch.value,f.cn.value);
		var mdate=new Date(f.my.value,f.mm.value-1,f.md.value,f.mh.value,f.mn.value);
		if (tids.length>1 && !confirm("Are you sure you want to update these tiddlers:\n\n"+tids.join(', '))) return;
		store.suspendNotifications();
		for (t=0;t<tids.length;t++) {
			var tid=store.getTiddler(tids[t]); if (!tid) continue;
			var title=!f.settitle.checked?tid.title:f.title.value;
			var who=!f.setwho.checked?tid.modifier:f.who.value;
			var text=tid.text;
			if (f.replacetext.checked) text=text.replace(new RegExp(f.pattern.value,'mg'),f.replacement.value);
			var tags=tid.tags;
			if (f.settags.checked) { 
				var intags=f.tags.value.readBracketedList();
				var addtags=[]; var deltags=[]; var reptags=[];
				for (i=0;i<intags.length;i++) {
					if (intags[i].substr(0,1)=='+')
						addtags.push(intags[i].substr(1));
					else if (intags[i].substr(0,1)=='-')
						deltags.push(intags[i].substr(1));
					else
						reptags.push(intags[i]);
				}
				if (reptags.length)
					tags=reptags;
				if (addtags.length)
					tags=new Array().concat(tags,addtags);
				if (deltags.length)
					for (i=0;i<deltags.length;i++)
						{ var pos=tags.indexOf(deltags[i]); if (pos!=-1) tags.splice(pos,1); }
			}
			if (!f.setcdate.checked) cdate=tid.created;
			if (!f.setmdate.checked) mdate=tid.modified;
			store.saveTiddler(tid.title,title,text,who,mdate,tags,tid.fields);
			if (f.setcreator.checked) store.setValue(tid.title,'creator',f.creator.value); // set creator
			if (f.setcdate.checked) tid.assign(null,null,null,null,null,cdate); // set create date
		}
		store.resumeNotifications();
		this.init(f,f.sortby.value);
	},
	displaytiddlers: function(here) {
		var f=here.form; var list=f.list;
		var tids=[];
		for (i=0; i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
		if (!tids.length) { alert("please select at least one tiddler"); return; }
		story.displayTiddlers(story.findContainingTiddler(f),tids)
	},
	deltiddlers: function(here) {
		var f=here.form; var list=f.list;
		var tids=[];
		for (i=0;i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
		if (!tids.length) { alert("please select at least one tiddler"); return; }
		if (!confirm("Are you sure you want to delete these tiddlers:\n\n"+tids.join(', '))) return;
		store.suspendNotifications();
		for (t=0;t<tids.length;t++) {
			var tid=store.getTiddler(tids[t]); if (!tid) continue;
			if (tid.tags.contains("systemConfig"))
				if (!confirm("'"+tid.title+"' is tagged with 'systemConfig'.\n\nRemoving this tiddler may cause unexpected results.  Are you sure?"))
					continue;
			store.removeTiddler(tid.title);
			story.closeTiddler(tid.title);
		}
		store.resumeNotifications();
		this.init(f,f.sortby.value);
	},
	stats: function(here) {
		var f=here.form; var list=f.list; var tids=[]; var out=''; var tot=0;
		var target=f.nextSibling;
		for (i=0;i<list.length;i++) if (list.options[i].selected) tids.push(list.options[i].value);
		if (!tids.length) { alert("please select at least one tiddler"); return; }
		for (t=0;t<tids.length;t++) {
			var tid=store.getTiddler(tids[t]); if (!tid) continue;
			out+='[['+tid.title+']] '+tid.text.length+'\n'; tot+=tid.text.length;
		}
		var avg=tot/tids.length;
		out=tot+' bytes in '+tids.length+' selected tiddlers ('+avg+' bytes/tiddler)\n<<<\n'+out+'<<<\n';
		removeChildren(target);
		target.innerHTML="<hr><font size=-2><a href='javascript:;' style='float:right' "
			+"onclick='this.parentNode.parentNode.style.display=\"none\"'>close</a></font>";
		wikify(out,target);
		target.style.display="block";
	}
};
//}}}
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
nTiddlyPerfect 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 TiddyyWiki. 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 TiddlyPerfect sites.
http://tiddlyvault.tiddlyspot.com/
''~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

[[groups.google.com/group/TiddlyWiki/|http://groups.google.com/group/TiddlyWiki/]]
[[TiddlyWiki.com]]
[[TiddlyWiki.org]]
[[TiddlyWiki Google Group]]
[[tiddlyspot]]
[[TW Help]]
[[abegoExtensions]]
[[TiddyTools]]
[[TiddlyVault]]
http://www.tiddlywiki.com/
A MediaWiki compilation of information, resources, and how-to information relating to TiddlyWiki
[[www.tiddlywiki.org|http://www.tiddlywiki.org]]
[[www.tiddlytools.com|h/ttp://www.tiddlytools.com/]]
<<siteMap "tipping points">>
/***
|Name:|ToggleTagPlugin|
|Description:|Makes a checkbox which toggles a tag in a tiddler|
|Version:|3.1.0 ($Rev: 4907 $)|
|Date:|$Date: 2008-05-13 03:15:46 +1000 (Tue, 13 May 2008) $|
|Source:|http://mptw.tiddlyspot.com/#ToggleTagPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
!!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)
* TouchMod flag - if non empty then touch the tiddlers mod date. Note, can set config.toggleTagAlwaysTouchModDate to always touch mod date
!!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'>>|
!!Notes
* If TiddlerName doesn't exist it will be silently created
* Set label to '-' to specify no label
* See also http://mgtd-alpha.tiddlyspot.com/#ToggleTag2
!!Known issues
* Doesn't smoothly handle the case where you toggle a tag in a tiddler that is current open for editing
* Should convert to use named params
***/
//{{{

if (config.toggleTagAlwaysTouchModDate == undefined) config.toggleTagAlwaysTouchModDate = false;

merge(config.macros,{

	toggleTag: {

		createIfRequired: true,
		shortLabel: "[[%0]]",
		longLabel: "[[%0]] [[%1]]",

		handler: function(place,macroName,params,wikifier,paramString,tiddler) {
			var tiddlerTitle = tiddler ? tiddler.title : '';
			var tag   = (params[0] && params[0] != '.') ? params[0] : "checked";
			var title = (params[1] && params[1] != '.') ? params[1] : tiddlerTitle;
			var defaultLabel = (title == tiddlerTitle ? this.shortLabel : this.longLabel);
			var label = (params[2] && params[2] != '.') ? params[2] : defaultLabel;
			var touchMod = (params[3] && params[3] != '.') ? params[3] : "";
			label = (label == '-' ? '' : label); // dash means no label
			var theTiddler = (title == tiddlerTitle ? 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;
				}
				if ((touchMod != "" || config.toggleTagAlwaysTouchModDate) && theTiddler)
						theTiddler.modified = new Date();
				store.setTiddlerTag(title,this.checked,tag);
				return true;
			});
		}
	}
});

//}}}

/***
''TwHelpSearch'' for TiddlyWiki 2.0.x to 2.2.x
^^author: Morris S. Gray
source: http://twhelp.tiddlyspot.com/#TwHelpSearchPlugin
license: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^

|>|>|>|<<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|>|bgcolor(#8af):@@color(#000080):''"+config.macros.search.successMsg.format([matches.length,q+"{{{"+text+"}}}"+q])+"''@@|bgcolor(#8af):  @@color(#A00000): SearchHelp@@ "+"|"+"\n";
        body+="|>|>|bgcolor(#E3FFE3):<<search>> <<option chkSearchTitles>> Titles <<option chkSearchText>> Text <<option chkSearchTags>>Tags <<option chkHoldSearches>> Hold |"+"\n";
        body+="\n|&nbsp;|bgcolor(#8af): @@color(#000080):sort by: ''Titles''@@ |bgcolor(#8af): @@color(#000080): ''Size'' (bytes)@@ |bgcolor(#8af): @@color(#000080): ''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
}

//}}}
/%
!legal
|Name|TwitterTabs|
|Source|http://www.TiddlyTools.com/#TwitterTabs|
|Version|2.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|Find recent tweets by keyword or username and show results in tabs|
!end
- - - - - DO NOT EDIT ABOVE THIS LINE - - - - -


- - - - - TABSET SECTION - - - - -
!tabset
<<tabs txtTwitterTabs
'find...'		'find tweets containing...'	[[TwitterTabs##search]]
'from...'		'show tweets from...'		[[TwitterTabs##user]]
'UN Division for Sustainable Development'	'show tweets from @UN_DSD'	[[TwitterTabs##UN Division for Sustainable Development]]
'UNCSD / Rio plus 20'		'show tweets containing uncsd OR rioplus20'	[[TwitterTabs##UNCSD / Rio plus 20]]
'Green economy'		'show tweets containing greeneconomy'	[[TwitterTabs##Green economy]]
'Environmental governance'		'show tweets containing Environmental governance'	[[TwitterTabs##Environmental governance]]
'TwitterTabsInfo'	' documentation for TwitterTabs' [[TwitterTabs##info]]
>>
!UN Division for Sustainable Development
<<tiddler [[TwitterTabs##showUserResults]] with:'UN_DSD'>>
!UNCSD / Rio plus 20
<<tiddler [[TwitterTabs##showSearchResults]] with:'uncsd' OR green rioplus20>>
!Green economy
<<tiddler [[TwitterTabs##showSearchResults]] with:'greeneconomy' OR green economy>>
!Environmental governance
<<tiddler [[TwitterTabs##showSearchResults]] with:'environmental governance'>>
!end

- - - - - TWEETFORMAT SECTION - - - - -
reminder: %0=image, %1=name, %2=text, %3=timestamp
!tweetformat
@@font-size:8pt;display:block;line-height:110%;
~~[<img[%0]]''[[%1|http://twitter.com/%1]] //%3//:''~~
 %2 {{tagClear{
}}}@@
!end


- - - - - DO NOT EDIT BELOW THIS LINE - - - - -
!info
<<tiddler TwitterTabs##legal>>Usage
<<<
{{{
<<tiddler TwitterTabs>>
}}}
<<<
Configuration
<<<
Copy TwitterTabs into your document. Then, ''edit the tiddler to suit your preferences'' by adding/removing definitions from the ''tabset'' and related sections:<<tiddler TwitterTabs##showcode with: tabset>><<tiddler TwitterTabs##showcode with: tiddlytools>><<tiddler TwitterTabs##showcode with: jermolene>>You can also customize the appearance of the individual tweets by editing the ''tweetformat'' section, which uses //replacement markers// to insert values extracted from each tweet returned by Twitter's search results, where ''%0=user image, %1=user name, %2=tweet content,'' and ''%3=tweet timestamp''<<tiddler TwitterTabs##showcode with: tweetformat>>The most recently entered 'find... and 'from... search terms are automatically saved as TiddlyWiki cookie-based option values.  You can override these values by placing the following statements into a tiddler tagged with 'systemConfig'.  Each time you reload your document, the default inputs will be reset to these hard-coded values, rather than using the last value entered.
{{{
config.options["txtTweetSearch"]="search text";
config.options["txtTweetUser"]="username";
}}}
!showcode
<<tiddler TwitterTabs##out with: {{'!$1\n'+store.getTiddlerText('TwitterTabs##$1').replace(/\n\}\}\}/g,'\n}\}\}')}}>>
!out
{{{
$1
}}}
!end

!search
<<tiddler [[TwitterTabs##showSearchForm]] with: {{config.options.txtTweetSearch||'TiddlyWiki'}}>>
!user
<<tiddler [[TwitterTabs##showUserForm]] with: {{config.options.txtTweetUser||'TiddlyWiki'}}>>
!end

!showSearchForm
{{small smallform{
search for tweets containing: <<option {{config.options.txtTweetSearch='$1';'txtTweetSearch'}}>><html>
<nowiki><input type='button' value='search' onclick="
	var target=this.parentNode.parentNode.parentNode;
	var out='\<\<tiddler [[TwitterTabs##showSearchForm]] with: {{config.options.txtTweetSearch}}\>\>';
	removeChildren(target); wikify(out,target); return false;
"></html>@@display:block;white-space:normal;<<tiddler [[TwitterTabs##showSearchResults]]
	with: {{config.options.txtTweetSearch}}>>@@}}}
!end

!showUserForm
{{small smallform{
show tweets from: <<option {{config.options.txtTweetUser='$1';'txtTweetUser'}}>><html>
<nowiki><input type='button' value='search' onclick="
	var target=this.parentNode.parentNode.parentNode;
	var out='\<\<tiddler [[TwitterTabs##showUserForm]] with: {{config.options.txtTweetUser}}\>\>';
	removeChildren(target); wikify(out,target); return false;
"></html>@@display:block;white-space:normal;<<tiddler [[TwitterTabs##showUserResults]]
	with: {{config.options.txtTweetUser}}>>@@}}}
!end

!showSearchResults
<<tiddler TwitterTabs##callback>>{{toolbar{<html><a href='javascript:;' onclick="
	var target=this.parentNode.parentNode.parentNode;
	var out='<<tiddler [[TwitterTabs##showSearchResults]] with: [[$1]]>>';
	removeChildren(target); wikify(out,target); return false;
">refresh</a><nowiki></html>}}}~~__[[Recent tweets about: "$1"|http://search.twitter.com/search?q=$1]]__~~
<hr>@@display:block;height:35em;overflow:auto;<<tiddler {{
	window.twitterPlace=null;
'';}}>><<tiddler {{
	if (!window.twitterPlace) { window.twitterPlace=place;
		place.innerHTML='connecting to twitter.com...';
		var s=document.createElement("script");
		s.src="http://search.twitter.com/search.json?q=$1&rpp=25&callback=twitterCallback";
		document.body.appendChild(s);
		document.body.removeChild(s);
	}
'';}}>>@@@@display:block;text-align:right;^^scroll for more...^^@@
!end

!showUserResults
<<tiddler TwitterTabs##callback>>{{toolbar{<html><a href='javascript:;' onclick="
	var target=this.parentNode.parentNode.parentNode;
	var out='<<tiddler [[TwitterTabs##showUserResults]] with: [[$1]]>>';
	removeChildren(target); wikify(out,target); return false;
">refresh</a><nowiki></html>}}}~~__[[Recent tweets from $1|http://twitter.com/$1]]__~~
<hr>@@display:block;height:35em;overflow:auto;<<tiddler {{
	window.twitterPlace=null;
'';}}>><<tiddler {{
	if (!window.twitterPlace) { window.twitterPlace=place;
		place.innerHTML='connecting to twitter.com...';
		var s=document.createElement("script");
		s.src="http://twitter.com/statuses/user_timeline/$1.json?callback=twitterCallback";
		document.body.appendChild(s);
		document.body.removeChild(s);
	}
'';}}>>@@@@display:block;text-align:right;^^scroll for more...^^@@
!end

!callback
<<tiddler {{
window.twitterCallback=function(data){ // data object returned from twitter.com
	var fmt=store.getTiddlerText('TwitterTabs##tweetformat');
	if (data.results) data=data.results; // for SEARCH results
	removeChildren(window.twitterPlace);
	for (var i=0; i<data.length; i++) { var item=data[i];
		var img=item.user? item.user.profile_image_url : item.profile_image_url;
		var who=item.user? item.user.screen_name : item.from_user;
		wikify(fmt.format([img,who,item.text,item.created_at]),window.twitterPlace);
	}
}
'';}}>>
!end

%/<<tiddler {{tiddler&&tiddler.title=='TwitterTabs'?'HideTiddlerBackground':''}}>>/%
%/<<tiddler {{tiddler&&tiddler.title=='TwitterTabs'?'HideTiddlerTags':''}}>>/%
%/<<tiddler TwitterTabs##tabset>>
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. 
<<forEachTiddler 
 where 
 'tiddler.tags.containsAll(["unced"])'
>>
/%
!legal
|Name|TwitterTabs|
|Source|http://www.TiddlyTools.com/#TwitterTabs|
|Version|2.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|Find recent tweets by keyword or username and show results in tabs|
!end
- - - - - DO NOT EDIT ABOVE THIS LINE - - - - -


- - - - - TABSET SECTION - - - - -
!tabset
<<tabs txtTwitterTabs
'find...'		'find tweets containing...'	[[TwitterTabs##search]]
'from...'		'show tweets from...'		[[TwitterTabs##user]]
'climatechange3'		'show tweets from @climatechange3'	[[TwitterTabs##climatechange3]]
'greeneconomy'		'show tweets containing greeneconomy'	[[TwitterTabs##greeneconomy]]
'TwitterTabsInfo' 	'documentation for TwitterTabs' [[TwitterTabs##info]]
>>
!climatechange3
<<tiddler [[TwitterTabs##showUserResults]] with: 'climatechange3'>>
!greeneconomy
<<tiddler [[TwitterTabs##searchForTweets]] with: 'greeneconomy'>>
!end

- - - - - TWEETFORMAT SECTION - - - - -
reminder: %0=image, %1=name, %2=text, %3=timestamp
!tweetformat
@@font-size:8pt;display:block;line-height:110%;
~~[<img[%0]]''[[%1|http://twitter.com/%1]] //%3//:''~~
 %2 {{tagClear{
}}}@@
!end


- - - - - DO NOT EDIT BELOW THIS LINE - - - - -
!info
<<tiddler TwitterTabs##legal>>Usage
<<<
{{{
<<tiddler TwitterTabs>>
}}}
<<<
Configuration
<<<
Copy TwitterTabs into your document. Then, ''edit the tiddler to suit your preferences'' by adding/removing definitions from the ''tabset'' and related sections:<<tiddler TwitterTabs##showcode with: tabset>><<tiddler TwitterTabs##showcode with: tiddlytools>><<tiddler TwitterTabs##showcode with: jermolene>>You can also customize the appearance of the individual tweets by editing the ''tweetformat'' section, which uses //replacement markers// to insert values extracted from each tweet returned by Twitter's search results, where ''%0=user image, %1=user name, %2=tweet content,'' and ''%3=tweet timestamp''<<tiddler TwitterTabs##showcode with: tweetformat>>The most recently entered 'find... and 'from... search terms are automatically saved as TiddlyWiki cookie-based option values.  You can override these values by placing the following statements into a tiddler tagged with 'systemConfig'.  Each time you reload your document, the default inputs will be reset to these hard-coded values, rather than using the last value entered.
{{{
config.options["txtTweetSearch"]="search text";
config.options["txtTweetUser"]="username";
}}}
!showcode
<<tiddler TwitterTabs##out with: {{'!$1\n'+store.getTiddlerText('TwitterTabs##$1').replace(/\n\}\}\}/g,'\n}\}\}')}}>>
!out
{{{
$1
}}}
!end

!search
<<tiddler [[TwitterTabs##showSearchForm]] with: {{config.options.txtTweetSearch||'TiddlyWiki'}}>>
!user
<<tiddler [[TwitterTabs##showUserForm]] with: {{config.options.txtTweetUser||'TiddlyWiki'}}>>
!end

!showSearchForm
{{small smallform{
search for tweets containing: <<option {{config.options.txtTweetSearch='$1';'txtTweetSearch'}}>><html>
<nowiki><input type='button' value='search' onclick="
	var target=this.parentNode.parentNode.parentNode;
	var out='\<\<tiddler [[TwitterTabs##showSearchForm]] with: {{config.options.txtTweetSearch}}\>\>';
	removeChildren(target); wikify(out,target); return false;
"></html>@@display:block;white-space:normal;<<tiddler [[TwitterTabs##showSearchResults]]
	with: {{config.options.txtTweetSearch}}>>@@}}}
!end

!showUserForm
{{small smallform{
show tweets from: <<option {{config.options.txtTweetUser='$1';'txtTweetUser'}}>><html>
<nowiki><input type='button' value='search' onclick="
	var target=this.parentNode.parentNode.parentNode;
	var out='\<\<tiddler [[TwitterTabs##showUserForm]] with: {{config.options.txtTweetUser}}\>\>';
	removeChildren(target); wikify(out,target); return false;
"></html>@@display:block;white-space:normal;<<tiddler [[TwitterTabs##showUserResults]]
	with: {{config.options.txtTweetUser}}>>@@}}}
!end

!showSearchResults
<<tiddler TwitterTabs##callback>>{{toolbar{<html><a href='javascript:;' onclick="
	var target=this.parentNode.parentNode.parentNode;
	var out='<<tiddler [[TwitterTabs##showSearchResults]] with: [[$1]]>>';
	removeChildren(target); wikify(out,target); return false;
">refresh</a><nowiki></html>}}}~~__[[Recent tweets about: "$1"|http://search.twitter.com/search?q=$1]]__~~
<hr>@@display:block;height:20em;overflow:auto;<<tiddler {{
	window.twitterPlace=null;
'';}}>><<tiddler {{
	if (!window.twitterPlace) { window.twitterPlace=place;
		place.innerHTML='connecting to twitter.com...';
		var s=document.createElement("script");
		s.src="http://search.twitter.com/search.json?q=$1&rpp=25&callback=twitterCallback";
		document.body.appendChild(s);
		document.body.removeChild(s);
	}
'';}}>>@@@@display:block;text-align:right;^^scroll for more...^^@@
!end

!showUserResults
<<tiddler TwitterTabs##callback>>{{toolbar{<html><a href='javascript:;' onclick="
	var target=this.parentNode.parentNode.parentNode;
	var out='<<tiddler [[TwitterTabs##showUserResults]] with: [[$1]]>>';
	removeChildren(target); wikify(out,target); return false;
">refresh</a><nowiki></html>}}}~~__[[Recent tweets from $1|http://twitter.com/$1]]__~~
<hr>@@display:block;height:20em;overflow:auto;<<tiddler {{
	window.twitterPlace=null;
'';}}>><<tiddler {{
	if (!window.twitterPlace) { window.twitterPlace=place;
		place.innerHTML='connecting to twitter.com...';
		var s=document.createElement("script");
		s.src="http://twitter.com/statuses/user_timeline/$1.json?callback=twitterCallback";
		document.body.appendChild(s);
		document.body.removeChild(s);
	}
'';}}>>@@@@display:block;text-align:right;^^scroll for more...^^@@
!end

!callback
<<tiddler {{
window.twitterCallback=function(data){ // data object returned from twitter.com
	var fmt=store.getTiddlerText('TwitterTabs##tweetformat');
	if (data.results) data=data.results; // for SEARCH results
	removeChildren(window.twitterPlace);
	for (var i=0; i<data.length; i++) { var item=data[i];
		var img=item.user? item.user.profile_image_url : item.profile_image_url;
		var who=item.user? item.user.screen_name : item.from_user;
		wikify(fmt.format([img,who,item.text,item.created_at]),window.twitterPlace);
	}
}
'';}}>>
!end

%/<<tiddler {{tiddler&&tiddler.title=='TwitterTabs'?'HideTiddlerBackground':''}}>>/%
%/<<tiddler {{tiddler&&tiddler.title=='TwitterTabs'?'HideTiddlerTags':''}}>>/%
%/<<tiddler TwitterTabs##tabset>>
{{iframe{''Note'': This is a "framed" page from the ''UNFCCC'' 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://unfccc.int/}}}
<html><iframe
	src = "http://unfccc.int/"
	title = "UNFCCC web site"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
''Udo Borkowski'' 

|<<siteMap >> |<<siteMap "abego software">> |<<siteMap "tiddlywiki developer">> |
http://www.un.org/climatechange
{{iframe{''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/charter.htm}}}
<html><iframe
title="United Nations Charter"
src="http://www.un-documents.net/charter.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-10.htm}}}
<html><iframe
title="United Nations Charter, Chapter 10: The Economic and Social Council"
src="http://www.un-documents.net/ch-10.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-11.htm}}}
<html><iframe
title="United Nations Charter, Chapter 11: Declaration Regarding Non-Self-Governing Territories"
src="http://www.un-documents.net/ch-11.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-12.htm}}}
<html><iframe
title="United Nations Charter, Chapter 12: International Trusteeship System"
src="http://www.un-documents.net/ch-12.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-13.htm}}}
<html><iframe
title="United Nations Charter, Chapter 13: The Trusteeship Council"
src="http://www.un-documents.net/ch-13.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-14.htm}}}
<html><iframe
title="United Nations Charter, Chapter 14: The International Court of Justice"
src="http://www.un-documents.net/ch-14.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-15.htm}}}
<html><iframe
title="United Nations Charter, Chapter 15: The Secretariat"
src="http://www.un-documents.net/ch-15.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-16.htm}}}
<html><iframe
title="United Nations Charter, Chapter 16: Miscellaneous Provisions"
src="http://www.un-documents.net/ch-16.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-17.htm}}}
<html><iframe
title="United Nations Charter, Chapter 17: Transitional Security Arrangements"
src="http://www.un-documents.net/ch-17.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-18.htm}}}
<html><iframe
title="United Nations Charter, Chapter 18: Amendments"
src="http://www.un-documents.net/ch-18.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-19.htm}}}
<html><iframe
title="United Nations Charter, Chapter 19: Ratification and Signature"
src="http://www.un-documents.net/ch-19.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-01.htm}}}
<html><iframe
title="United Nations Charter, Chapter 1: Purposes and Principles"
src="http://www.un-documents.net/ch-01.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-02.htm}}}
<html><iframe
title="United Nations Charter, Chapter 2: Membership"
src="http://www.un-documents.net/ch-02.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-03.htm}}}
<html><iframe
title="United Nations Charter, Chapter 3: Organs"
src="http://www.un-documents.net/ch-03.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-04.htm}}}
<html><iframe
title="United Nations Charter, Chapter 4: The General Assembly"
src="http://www.un-documents.net/ch-04.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-05.htm}}}
<html><iframe
title="United Nations Charter, Chapter 5: The Security Council"
src="http://www.un-documents.net/ch-05.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-06.htm}}}
<html><iframe
title="United Nations Charter, Chapter 6: Pacific Settlement of Disputes"
src="http://www.un-documents.net/ch-06.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-07.htm}}}
<html><iframe
title="United Nations Charter, Chapter 7: Action with Respect to Threats to the Peace, Breaches of the Peace, and Acts of Aggression"
src="http://www.un-documents.net/ch-07.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-08.htm}}}
<html><iframe
title="United Nations Charter, Chapter 8: Regional Arrangements"
src="http://www.un-documents.net/ch-08.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-09.htm}}}
<html><iframe
title="United Nations Charter, Chapter 9: International Economic and Social Co-operation"
src="http://www.un-documents.net/ch-09.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-intr.htm}}}
<html><iframe
title="United Nations Charter: Introductory Note"
src="http://www.un-documents.net/ch-intr.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-ppp.htm}}}
<html><iframe
title="United Nations Charter: Preamble, Purposes and Principles"
src="http://www.un-documents.net/ch-ppp.htm"
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 [[UN Documents Cooperation Circles|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 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.un-documents.net/ch-toc.htm}}}
<html><iframe
title="United Nations Charter: Table of Contents"
src="http://www.un-documents.net/ch-toc.htm"
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 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.
# 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.
# 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.
# Everyone has the right to freedom of movement and residence within the borders of each state.
# Everyone has the right to leave any country, including his own, and to return to his country.
!!!Article 14.
# Everyone has the right to seek and to enjoy in other countries asylum from persecution.
# 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.
# Everyone has the right to a nationality.
# No one shall be arbitrarily deprived of his nationality nor denied the right to change his nationality.
!!!Article 16.
# 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.
# Marriage shall be entered into only with the free and full consent of the intending spouses.
# The family is the natural and fundamental group unit of society and is entitled to protection by society and the State.
!!!Article 17.
# Everyone has the right to own property alone as well as in association with others.
# 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.
# Everyone has the right to freedom of peaceful assembly and association.
# No one may be compelled to belong to an association.
!!!Article 21.
# Everyone has the right to take part in the government of his country, directly or through freely chosen representatives.
# Everyone has the right of equal access to public service in his country.
# 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.
# Everyone has the right to work, to free choice of employment, to just and favourable conditions of work and to protection against unemployment.
# Everyone, without any discrimination, has the right to equal pay for equal work.
# 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.
# 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.
# 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.
# 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.
# 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.
# 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.
# Parents have a prior right to choose the kind of education that shall be given to their children.
!!!Article 27.
# 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.
# 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.
# Everyone has duties to the community in which alone the free and full development of his personality is possible.
# 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.
# 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//
/***
|Name|UnsavedChangesPlugin|
|Source|http://www.TiddlyTools.com/#UnsavedChangesPlugin|
|Version|3.3.3|
|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|TiddlyWiki.prototype.setDirty,store.saveTiddler,store.removeTiddler|
|Description|show droplist of tiddlers that have changed since the last time the document was saved|
Display a list of tiddlers that have been changed since the last time the document was saved.  The list includes all new/modified tiddlers as well as those changed with "minor edits" enabled and any tiddlers that you import during the session, regardless of their modification date.
!!!!!Usage
<<<
{{{
<<unsavedChanges panel>> or <<unsavedChanges>>
}}}
{{indent{
the ''panel'' keyword displays a 'control panel' interface containing a droplist of unsaved tiddlers and a 'goto' button, along with a command link to 'save changes'.  Depending upon what other plugins are installed, several additional elements will also be displayed: When [[NestedSlidersPlugin]] is installed, the entire control panel is contained within a ''SLIDER''.  When [[LoadTiddlersPlugin]] is installed, a ''REVERT'' button is added.  When [[SaveAsPlugin]] is installed, a ''SAVE AS'' link is added.  When [[UploadPlugin]] is installed, an ''UPLOAD'' (or ''save to web'') link is added.  When [[TrashPlugin]] is installed and there are tiddlers tagged with<<tag Trash>>, an ''EMPTY TRASH'' link is added.
}}}
{{{
<<unsavedChanges list separator>>
}}}
{{indent{
the ''list'' keyword displays a simple space-separated list of unsaved tiddlers without any other command links.  You can specify an optional ''separator'' value that can be used in place of the default space character.  For example, you can specify {{{"<br>"}}} as the separator in order to display each link, one per line.
}}}
{{{
<<unsavedChanges command label tip>>
}}}
{{indent{
the ''command'' keyword displays a single 'command link' that, when clicked, displays a ~TiddlyWiki popup containing the list of unsaved tiddlers, the 'save changes' command and, depending upon what other plugins are installed, additional commands for 'save as', 'upload', and 'empty trash' (similar to the panel display described above).

You can specify optional ''label'' and ''tip'' parameters in the macro to customize the command link text and tooltip.  The default label for the command link is: "There %1 %0 unsaved tiddler%2...", where:
* %0 is automatically replaced with the number of unsaved changes
* %1 is either "is" (if changes=1) or "are" (if changes>1)
* %2 is either blank (if changes=1) or "s" (if changes>1)
resulting in the text: //"There is 1 unsaved tiddler...", "There are 2 unsaved tiddlers...", etc.//
}}}
<<<
!!!!!Examples
<<<
^^//note: the following examples will not display any output unless you have already created/modified tiddlers in the current document.//^^
{{{<<unsavedChanges>>}}}
<<unsavedChanges>>
----
{{{<<unsavedChanges command>>}}}
<<unsavedChanges command>>
----
{{{<<unsavedChanges list>>}}}
<<unsavedChanges list>>
----
{{{<<unsavedChanges list "<br>">>}}}
<<unsavedChanges list "<br>">>
<<<
!!!!!Revisions
<<<
2009.03.02 [3.3.3] fix handling for titles that contain HTML special chars (lt,gt,quot,amp)
2008.09.02 [3.3.2] cleanup popup list output generation and added timestamps/sizes to popup display
2008.08.23 [3.3.1] added optional custom 'label' and 'tip' params to 'command' mode and defined default values for mode, label, tip, and separator as object properties for I18N/L10N-readiness.
2008.08.21 [3.3.0] complete re-write of rendering and refresh processing to support multiple instances and automatic self-refresh (no longer depends upon core refresh notifications)
2008.08.21 [3.2.0] added 'command' option for link+popup as alternative to 'control panel' interface
2008.04.22 [3.1.2] use SaveAsPlugin instead of obsolete NewDocumentPlugin to add "save as" link
2007.12.22 [3.1.1] hijack removeTiddler() instead of low-level deleteTiddler() to correct tracking and refresh handling issues.  in saveTiddler(), check for 'tiddler rename' (title!=newtitle) and adjust list accordingly.
2007.12.21 [3.1.0] added support for {{{<<unsavedChanges list separator>>}}} usage to unsaved tiddlers as a simple list of links, embedded in tiddler content (e.g., [[MainMenu]])
2007.12.20 [3.0.0] rewrite to track ALL changed tiddlers, including imports and minor edits, regardless of saved modification dates.  Also, rewrote display logic to directly refresh macro output instead of triggering a page refresh.  The entire process is MUCH more efficient now.
2007.08.02 [2.0.0] converted from inline script
2007.01.01 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.UnsavedChangesPlugin= {major: 3, minor: 3, revision: 3, date: new Date(2009,3,2)};

config.macros.unsavedChanges = {
	changed: [], // list of currently unsaved tiddler titles
	defMode: "panel",
	defSep: " ",
	defLabel: "There %1 %0 unsaved tiddler%2...",
	defTip: "view a list of unsaved tiddler changes",
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var wrapper=createTiddlyElement(place,"span",null,"unsavedChanges");
		wrapper.setAttribute("mode",params[0]||this.defMode);
		wrapper.setAttribute("sep",params[1]||this.defSep); // for 'list' mode
		wrapper.setAttribute("label",params[1]||this.defLabel); // for 'command' mode
		wrapper.setAttribute("tip",params[2]||this.defTip); // for 'command' mode
		this.render(wrapper);
	},
	render: function(wrapper) {
		removeChildren(wrapper); // make sure its empty
		if (!this.changed.length) return; // no changes = no output
		switch (wrapper.getAttribute("mode")) {
			case "command": this.command(wrapper); break;
			case "list": this.list(wrapper); break;
			case "panel": default: this.panel(wrapper); break;
		}
	},
	refresh: function() {
		var wrappers=document.getElementsByTagName("span");
		for (var w=0; w<wrappers.length; w++)
			if (hasClass(wrappers[w],"unsavedChanges"))
				this.render(wrappers[w]);
	},
	list: function(place) { // show simple list of unsaved tiddlers
		wikify("[["+this.changed.join("]]"+place.getAttribute("sep")+"[[")+"]]",place);
	},
	command: function(place) { // show command link with popup list
		var c=this.changed.length;
		var txt=place.getAttribute("label").format([c,c==1?'is':'are',c==1?'':'s']);
		var tip=place.getAttribute("tip");
		var action=function(ev) { if (!ev) var ev=window.event;
			var p=Popup.create(this); if (!p) return false;
			var d=createTiddlyElement(p,"div");
			d.style.whiteSpace="normal"; d.style.width="auto"; d.style.padding="2px";
			// gather pretty links for changed tiddlers
			var list=[]; var item=" &nbsp;[[%1 - %0 (%2 bytes)|%0]]&nbsp; ";
			for (var i=config.macros.unsavedChanges.changed.length-1; i>=0; i--) {
				var tid=store.getTiddler(config.macros.unsavedChanges.changed[i]);
				if (!tid) continue;
				var when=tid.modified.formatString('YYYY.0MM.0DD 0hh:0mm:0ss');
				list.push(item.format([tid.title,when,tid.text.length]));
			}
			wikify("@@white-space:nowrap;"+list.join("<br>")+"@@",d);
			if (!readOnly) {
				var t="\n----\n";
				t+="@@white-space:nowrap;display:block;text-align:center; &nbsp;";
				t+="<<saveChanges>>";
				t+=config.macros.saveAs?" | <<saveAs>>":"";
				t+=config.macros.upload?" | <<upload>>":"";
				t+=(config.macros.emptyTrash&&store.getTaggedTiddlers("Trash").length)?" | <<emptyTrash>>":"";
				t+="&nbsp; @@";
				wikify(t,d);
			}
			Popup.show(p,false);
			ev.cancelBubble=true; if(ev.stopPropagation)ev.stopPropagation();
			return(false);
		}
		createTiddlyButton(place,txt,tip,action,"button");
	},
	panel: function(place) { // show composite droplist+buttons+commands
		// gather changed tiddlers (in reverse order by date - most recent first)
		var tids=[]; for (var i=this.changed.length-1; i>=0; i--)
			{ var t=store.getTiddler(this.changed[i]); if (t) tids.push(t); }
		tids.sort(function(a,b){return a.modified<b.modified?-1:(a.modified==b.modified?0:1);});
		// generate droplist items
 		var list=[]; var item='<option value="%0">%1 - %0 (%2 bytes)</option>';
		for (var i=tids.length-1; i>=0; i--) {
			var when=tids[i].modified.formatString('YYYY.0MM.0DD 0hh:0mm:0ss');
			list.push(item.format([tids[i].title.htmlEncode(),when,tids[i].text.length]));
		}
		// display droplist, buttons, and command links
		var out=''; var c=this.changed.length;
		var NSP=config.formatters.findByField("name","nestedSliders");
		var summary=this.defLabel.format([c,c==1?'is':'are',c==1?'':'s'])
		out+=NSP?'+++(unsaved)['+summary+'|'+this.defTip+']...':(summary+"\n");
		out+='<html><form style="display:inline"><!--\
			--><select size="1" name="list" \
				title="select a tiddler to view" \
				onchange="var v=this.value; if (v.length) story.displayTiddler(null,v);"><!--\
			-->'+list.join('')+'<!--\
			--></select><!--\
			--><input type="button" value="goto" onclick="this.form.list.onchange();">';
		if (config.macros.loadTiddlers)  {
			out+='<input type="button" value="revert" \
				title="import the last saved version of this tiddler" \
				onclick="var v=this.form.list.value; if (!v.length) return; \
					var t=\'<\'+\'<loadTiddlers [[tiddler:\'+v+\']] \'; \
					t+=document.location.href; \
					t+=\' confirm force noreport>\'+\'>\'; \
					var e=document.getElementById(\'executeRevert\'); \
					if (e) e.parentNode.removeChild(e); \
					e=document.createElement(\'span\'); \
					e.id=\'executeRevert\'; \
					wikify(t,e);">';
		}
		out+='</form></html>';
		if (!readOnly) {
			out+='\n{{small nowrap{';
			out+="<<saveChanges>>";
			out+=config.macros.saveAs?" | <<saveAs>>":"";
			out+=config.macros.upload?" | <<upload>>":"";
			out+=(config.macros.emptyTrash&&store.getTaggedTiddlers("Trash").length)?" | <<emptyTrash>>":"";
			out+='}}}';
		}
		out+=NSP?'===':'';
		wikify(out,place);
	}
};

// hijack store.saveTiddler() to track changes to tiddlers
if (store.showUnsaved_saveTiddler==undefined) {
	store.showUnsaved_saveTiddler=store.saveTiddler;
	store.saveTiddler=function(title,newtitle) {
		if (title!=newtitle) {
			var i=config.macros.unsavedChanges.changed.indexOf(title);
			if (i!=-1) config.macros.unsavedChanges.changed.splice(i,1); // remove old from list
		} 
		var i=config.macros.unsavedChanges.changed.indexOf(newtitle);
		if (i!=-1) config.macros.unsavedChanges.changed.splice(i,1); // remove new title from list
		config.macros.unsavedChanges.changed.push(newtitle); // add new title to END of list
		var t=this.showUnsaved_saveTiddler.apply(this,arguments);
		if (!this.notificationLevel) config.macros.unsavedChanges.refresh();
		return t;
	}
}

// hijack store.removeTiddler() to track changes to tiddlers
if (store.showUnsaved_removeTiddler==undefined) {
	store.showUnsaved_removeTiddler=store.removeTiddler;
	store.removeTiddler=function(title) {
		var i=config.macros.unsavedChanges.changed.indexOf(title);
		if (i!=-1) config.macros.unsavedChanges.changed.splice(i,1); // remove from list
		this.showUnsaved_removeTiddler.apply(this,arguments);
		if (!this.notificationLevel) config.macros.unsavedChanges.refresh();
	}
}

// hijack store.setDirty() function to reset change list after file save
// note: do NOT hijack the prototype function.  This hijack should only be applied to
// the main 'store' instance only (i.e., don't refresh when loading temporary store
// as part of ImportTiddlers processing)
if (store.showUnsaved_setDirty==undefined) {
	store.showUnsaved_setDirty=store.setDirty;
	store.setDirty = function(flag) {
		var refresh=this.isDirty() && !flag; // 'dirty' to 'clean', force a refresh...
		this.showUnsaved_setDirty.apply(this,arguments); // but change the flag first.
		if (refresh) {
			config.macros.unsavedChanges.changed=[]; // clear changed list
			config.macros.unsavedChanges.refresh();
		}
	}
}
//}}}
!!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.
<<<

{{iframe{''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 click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/ac157-23.htm}}}
<html><iframe
title="Vienna Declaration and Programme of Action"
src="http://www.un-documents.net/ac157-23.htm"
style="
background-color:#ffffff;
border-color:#ffffff;
border:none;"
width="100%"
height="1000"
frameborder="0"
scrolling="yes">
</iframe></html>
This tiddler displays the ColorPalette, that is used in the StyleSheetColors to set the colours for the various styles, using the PaletteViewMacro.

<<paletteView [[ColorPalette]]>>
<<paletteView [[ColorPalette]]>>
<<paletteView [[ColorPalette - garden]]>>
<!--{{{-->

<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'></span> <span class='toolbar' macro='newDocument  "label:print" "prompt:print an HTML snapshot of this tiddler"  nofilename  print  here'></span> <span macro='toolbar 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>

<!--}}}-->
Welcome to [[Climate Change 3.0]]: [[Information, Ecology & Climate Change]], intended to serve as a gateway to climate change-related information and resources highlighting the vital yet barely recognized - significance of the profound implications & opportunities offered by the accelerating, cascading global transition to an digital knowledge-based economy, society & environment.

<<oh "Climate Change 3.0">> 
information revolution in the response - adaptation & mitigation - to dangerous climate change in the context of the critical need for a viable and effective agreement at the December 2009 [[Climate Change Conference in Copenhagen]] - COP-15. 

[[Climate Change 3.0]]

At a more fundamental level, [[Climate Change 3.0]] incorporates a profound appreciation that the for the transformative opportunities Climate Change in a Free & Open Universe of Knowledge - in Clouds and on Earth & Consciousness

the phenomenal evolution of information and communications arts & technologies can enable

<<oh "Climate Change 3.0 News Feeds">>

<<oh "Bookmarked Climate Change Documents">>

<<oh "Climate Change 3 Group @ WiserEarth">>

central element of an evolving [[Open Source]], [[Creative Commons]],  [[Framework for Climate Change Action]] - developed under the auspices of [[Climate Change 3.0]] - successor to  [[Climate Change 2.0]], an initiative hosted by the [[NGO Committee on Education]] in response to the [[NGO/DPI Declaration on Climate Change]] from the [[60th Annual DPI/NGO Conference]] at United Nations Headquarters on September 9, 2007.

+++...[About this web site]
This web page 
//Please note//: This web site is still under construction,
/***
|Name|WikifyPlugin|
|Source|http://www.TiddlyTools.com/#WikifyPlugin|
|Documentation|http://www.TiddlyTools.com/#WikifyPluginInfo|
|Version|1.1.4|
|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|substitute fields, slices, or computed values into a wiki-syntax format string and render results dynamically|
The {{{<<wikify>>}}} macro allows you to easily retrieve values from custom tiddler fields, tiddler slices, computed values (using javascript) or just plain old literals, and assemble them into small bits of generated wiki-syntax text content that can be rendered directly into a tiddler, or used in the ViewTemplate or EditTemplate to add dynamically-generated content to each tiddler.

The {{{<<wikiCalc>>}}} macro performs the same processing as {{{<<wikify>>}}} and, in addition, passes the assembled text content through javascript's {{{eval()}}} function before rendering the results.  This allows you to, for example, construct and compute mathematical expressions that use input values extracted from tiddler fields or slices.
!!!!!Documentation
> see [[WikifyPluginInfo]]
!!!!!Revisions
<<<
2009.03.29 [1.1.4] in handler(), pass 'tiddler' value to wikify() to fix macro errors in rendered content
|please see [[WikifyPluginInfo]] for additional revision details|
2007.06.22 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.WikifyPlugin= {major: 1, minor: 1, revision: 4, date: new Date(2009,3,29)};

config.macros.wikify={
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var fmt=params.shift();
		var values=[];
		var out="";
		if (!fmt.match(/\%[0-9]/g) && params.length) // format has no markers, just join all params with spaces
			out=fmt+" "+params.join(" ");
		else { // format param has markers, get values and perform substitution
			while (p=params.shift()) values.push(this.getFieldReference(place,p));
			out=fmt.format(values);
		}
		if (macroName=="wikiCalc") out=eval(out).toString();
		wikify(out.unescapeLineBreaks(),place,null,tiddler);
	},
	getFieldReference: function(place,p) { // "slicename::tiddlername" or "fieldname@tiddlername" or "fieldname"
		if (typeof p != "string") return p; // literal non-string value... just return it...
		var parts=p.split(config.textPrimitives.sliceSeparator);
		if (parts.length==2) {// maybe a slice reference?
			var tid=parts[0]; var slice=parts[1];
			if (!tid || !tid.length || tid=="here") { // no target (or "here"), use containing tiddler
				tid=story.findContainingTiddler(place);
				if (tid) tid=tid.getAttribute("tiddler")
				else tid="SiteSlices"; // fallback for 'non-tiddler' areas (e.g, header, sidebar, etc.)
			}
			var val=store.getTiddlerSlice(tid,slice);  // get tiddler slice value
		}
		if (val==undefined) {// not a slice, or slice not found, maybe a field reference?
			var parts=p.split("@");
			var field=parts[0];
			if (!field || !field.length) field="checked"; // missing fieldname, fallback: checked@tiddlername
			var tid=parts[1];
			if (!tid || !tid.length || tid=="here") { // no target (or "here"), use containing tiddler
				tid=story.findContainingTiddler(place);
				if (tid) tid=tid.getAttribute("tiddler")
				else tid="SiteFields"; // fallback for 'non-tiddler' areas (e.g, header, sidebar, etc.)
			}
			var val=store.getValue(tid,field);
		}
		// not a slice or field, or slice/field not found... return value unchanged
		return val===undefined?p:val;
	}
}
//}}}
//{{{
// define alternative macroName for triggering pre-rendering call to eval()
config.macros.wikiCalc=config.macros.wikify;
//}}}
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]]
{{iframe{''Note'': This is a "framed" page from the ''WiserEarth'' 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.wiserearth.org"
	title = "WiserEarth"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></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">>
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">> |
http://tiddlywiki.abego-software.de/
/***
|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 >> |

<html>
<a target="_blank" class="favesLink" href="http://faves.com/users/Information-Ecologist/tag/climate%20change">climate change - Information Ecologist on Faves</a> 
<script type="text/javascript">
favesSettings = { userName:"Information-Ecologist", userDisplayName:"Information", title:"Climate change bookmarks", tags:["climate change"], hideFriendsFaves:true, hideEveryonesFaves:true, theme:"favesDefault" };
</script>
<script type="text/javascript" src="http://s.faves.com/js/ScriptWidget.js"></script>
</html>

http://faves.com/users/Information-Ecologist/tag/climate%20change
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>> |

{{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.feedblitz.com/f/f.fbz?HTML=259899}}}
<html><iframe
	src = "http://www.feedblitz.com/f/f.fbz?HTML=259899"
	title = ""
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
/***
|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>> |
|<html> </html>| <br><br> photos. |
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>> |

[[tiddlyspot.com/|http://tiddlyspot.com/]]
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>> |

{{iframe{''Note'': This is a "framed" page from the ''udhr@60+ Universal Declaration of Human Rights at 60 & beyond'' 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.climatechange3.net/udhr60/}}}
<html><iframe
	src = "http://www.climatechange3.net/udhr60/"
	title = ""
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
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)
}
//}}}
|<html> </html>| <br><br> minutes. |
config.options.chkDisableNonExistingWikiLinks=true;
config.options.chkSearchTitles=true;
config.options.chkSearchText=false;
config.options.chkSearchTags=false;
config.options["txtTweetSearch"]="uncsd";
config.options["txtTweetUser"]="climatechange3";