NGO Committee on Education
United Nations Decade of Education for Sustainable Development (2005-2014)
in an Evolving Creative Commons, Open Source Climate

is loading ...
Please be patient. Requires Javascript.
For ideal learning opportunities, patience, and an open mind to the transformative opportunities for the foundations of a new civilization in a free, and expanding knowledge-based universe.

Information and Communications Sub-Committee
NGO Committee on Education
Conference Of Non-Governmental Organizations
in Consultative Relations with the United Nations
    NGO Committee on Education -        United Nations Decade of Education for Sustainable Development         in a Creative Commons, Open Source Climate
<!--{{{-->
<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|Dakar Framework for Action, Education For All]] 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 Campaign
The Universal Declaration of Human Rights (UDHR) turns 60 on 10 December 2008. Today, on Human Rights Day 2007, the United Nations launches a year-long UN system-wide advocacy campaign to mark this important milestone. The campaign, an initiative of the United Nations Secretary-General, will be led by the High Commissioner for Human Rights, and supported by UN agencies, departments and funds, and other international and local partners, to celebrate the Declaration and the promise that has made this document so enduring: "Dignity and justice for all of us".

The year-long commemoration, culminating on Human Rights Day 2008, aims to continue to raise awareness of the Declaration and its relevance to people around the world. The campaign aims to engage the wide participation of individuals and institutions - from global organizations to grassroots advocacy groups - to make the Declaration a reality for all. The Declaration opened the door to much progress but there is no room for complacency, as the almost daily litany of human rights violations around the world demonstrates.
!! The logo
[>img[udhr60+100x87.png]]The anniversary campaign is symbolized by the UDHR60 logo, which depicts a human shape standing with arms wide open. The yellow and red symbol represents liberation and equality. The yellow is a sign of peace and warmth. The symbol is set on a solid block which represents the foundation of human rights. The earthy red colour of the block reinforces human rights as a foundation stone and as humankind's common heritage.

The UDHR60 logo - in full colour or as a single colour - is available with text in Arabic, Chinese, English, French, Russian and Spanish. It will be used during the anniversary period, from 10 December 2007 to 31 December 2008. It is under embargo until 10 December 2007.

The logo is available on the OHCHR website. Please contact us on 60anniversary@ohchr.org for guidelines on its usage.
!! The Theme
The UDHR60 logo comes with words that encapsulate the promise of the Declaration: "Dignity and justice for all of us". It reinforces the vision of the UDHR as the first international recognition that fundamental rights and freedoms are inalienable and inherent to all human beings, that every one of us is born free and equal. The phrase also serves as a rallying call, for the promise of dignity and justice is far from realized for everyone. The UDHR is a living document that matters not only in times of conflict and in societies suffering repression, but also in addressing social injustice and achieving human dignity in times of peace in established democracies. Non-discrimination, equality and fairness - key components of justice - form the foundation of the UDHR. And no matter where you live, how much money you have, what faith you practice or political views you hold, all the human rights in the Declaration apply to you, everywhere, always.
!! KnowYourRights2008
The United Nations Regional Information Centre (UNRIC) in Brussels has created a new website, www.KnowYourRights2008.org, as a repository of ideas to commemorate the year of human rights. The highly interactive website enables people all over the world to upload and download multimedia files and share their projects and initiatives on the Universal Declaration. www.KnowYourRights2008.org was launched on 10 December 2007.
!! The UDHR: the foremost statement of the rights and freedoms of all human beings
The Declaration adopted by the United Nations General Assembly in 1948, consists of a preamble and 30 articles, setting out a broad range of fundamental human rights and freedoms to which all men and women, everywhere in the world, are entitled, without any distinction.

The Declaration was drafted by representatives of all regions and legal traditions. It has over time been accepted as a contract between governments and their peoples. Virtually all states have accepted it. The Declaration has also served as the foundation for an expanding system of human rights protection that today focuses also on vulnerable groups such as disabled persons, indigenous peoples and migrant workers.
!! Human Rights Day
The UDHR was adopted on 10 December 1948. The date has since served to mark Human Rights Day worldwide. The High Commissioner for Human Rights, as the main UN rights official, and her Office play a major role in coordinating efforts for the yearly observance of Human Rights Day.
!! About OHCHR
The Office of the United Nations High Commissioner for Human Rights (OHCHR), a part of the United Nations Secretariat, is the global authority on human rights. It represents the world's commitment to universal ideals of human dignity and has been given a unique mandate to promote and protect all human rights. Headquartered in Geneva, the Office is also present in some 40 countries. Headed by the High Commissioner for Human Rights, a position established by the General Assembly in 1993 to spearhead the United Nations' human rights efforts, OHCHR offers leadership, works objectively, educates and takes action to empower individuals and assist States in upholding human rights. For more information please visit www.ohchr.org
!! The Universal Declaration of Human Rights: A Living Document
Many things can be said about the Universal Declaration of Human Rights (UDHR). It is the foundation of international human rights law, the first universal statement on the basic principles of inalienable human rights, and a common standard of achievement for all peoples and all nations. As the UDHR approaches its 60th birthday, it is timely to emphasize the living document's enduring relevance, its universality, and that it has everything to do with all of us. Today, the UDHR is more relevant than ever.
!! Universality
It was the UDHR, almost 60 years ago, that first recognized what have become nowadays universal values: human rights are inherent to all and the concern of the whole of the international community. Drafted by representatives of all regions and legal traditions, the UDHR has stood the test of time and resisted attacks based on "relativism". The Declaration and its core values, including non-discrimination, equality, fairness and universality, apply to everyone, everywhere and always. The UDHR belongs to all of us.

More than ever, in a world threatened by racial, economic and religious divides, we must defend and proclaim the universal principles - first enshrined in the UDHR - of justice, fairness and equality that people across all boundaries hold so deeply.
!! Enduring Relevance
Human rights are not only a common inheritance of universal values that transcend cultures and traditions, but are quintessentially local values and nationally-owned commitments grounded in international treaties and national constitutions and laws.

The Declaration represents a contract between governments and their peoples, who have a right to demand that this document be respected. Not all governments have become parties to all human rights treaties. All countries, however, have accepted the UDHR. The Declaration continues to affirm the inherent human dignity and worth of every person in the world, without distinction of any kind.
!! Ongoing struggle
The UDHR protects all of us, and it also enshrines the gamut of human rights. The drafters of the UDHR saw a future of freedom from fear, but also of freedom from want. They put all human rights on an equal footing and confirmed human rights are all essential to a life of dignity.

The UDHR drafters' vision has inspired many human rights defenders who have struggled over the last six decades to make that vision a reality. The contemporary international human rights edifice that originates in the UDHR is to be celebrated. But it has yet to benefit all of humanity equally.

The struggle is far from over. As the Declaration's custodians and beneficiaries, all of us must reclaim the UDHR, make it our own, and it has to do with both our rights and our responsibilities. While we are entitled to our human rights, we should also respect the human rights of others and help make universal human rights a reality for all of us. In our efforts lies the power of the UHDR: it is a living document that will continue to inspire generations to come.
!! Dignity and Justice for All of Us
"Dignity and justice for all of us" reinforces the vision of the Universal Declaration of Human Rights (UDHR) as a commitment to universal dignity and justice. It is not a luxury or a wish-list. The UDHR and its core values, inherent human dignity, non-discrimination, equality, fairness and universality, apply to everyone, everywhere and always. The Declaration is universal, enduring and vibrant, and thus, a living document that concerns us all.
!! Commitment
The drafting process of the UDHR involved representatives from all regions and drew inspiration from values, belief systems and political traditions from different cultures and societies across the globe. Initially adopted by countries worldwide as "a common standard of achievement for all peoples and nations", the Declaration has over time been widely accepted as the fundamental norms of human rights that all should respect. Today, all countries have accepted the UDHR and reaffirmed its commitment to fundamental rights enshrined therein time and again.

Over the years, this commitment has been translated into law through which human rights are defined and guaranteed. Indeed, the UDHR has inspired numerous international human rights treaties and declarations, regional conventions, as well as national Constitutions. This rich body of human rights law represents a contract between governments and their peoples.
!! Dignity
The UDHR demands meeting basic human needs and recognizes the indivisibility and interdependence of all human rights, whether they are civil and political rights, such as the right to life, and freedom of expression; or economic, social and cultural rights, such as the rights to work, social security and education. The improvement of one right contributes to the advancement of the others. Likewise, the deprivation of one right adversely affects the others. The entitlement to and fulfilment of all human rights are essential to a life of dignity.

The Declaration's enduring relevance is more compelling still when we listen to the voices of people at the grassroots level. When the World Bank conducted its "Voices of the Poor" surveys in the late 1990s, interviewing over 80,000 people in villages and local communities on their values, needs and strongest aspirations, the results read like the list of everyday rights in the UDHR.
!! Justice
The UDHR declares in its preamble that "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." It was the first, and remains the foremost, statement of the rights and freedoms of all of us as human beings, without distinction of any kind.

The core principles of human rights first set out in the UDHR, such as universality, interdependence and indivisibility, equality and non-discrimination are crucial in achieving justice. Non-discrimination, for example, has become one of the cross-cutting principles in human rights law. The principle is present in all the major human rights treaties and provides the central theme of some of them such as the International Convention on the Elimination of All Forms of Racial Discrimination, the Convention on the Elimination of All Forms of Discrimination against Women, and the Convention on the Rights of Persons with Disabilities. The UDHR has stimulated and inspired a rich body of international human rights treaties that seeks to strengthen and protect human rights.
!! All of Us
The UDHR belongs to all of us. No matter where you live, how much money you have, what faith you practise or political views you hold, all the human rights in the UDHR apply to you and have everything to do with you. It was the UDHR, almost 60 years ago, which first established what have become universal values: that human rights are inherent to all and the concern of the whole of the international community. Human rights are everyone's business.

The impressive international human rights edifice the UDHR has made possible is to be celebrated. But it has yet to benefit all of humanity equally. All of us, as rights-owners, must reclaim the UDHR, make it our own. While Governments bear the primary duty to promote and protect all human rights, non-state actors, other duty bearers and all of us also play an important role in making the universal enjoyment of human rights a reality. It is through concerted efforts of the United Nations system, its international and local partners, national ownership, and the participation of people from different corners of the world that we can truly envisage "dignity and justice for all of us".
!! The UDHR : The Foundation of International Human Rights Law
The Universal Declaration of Human Rights (UDHR) is generally agreed to be the foundation of international human rights law. Adopted almost 60 years ago, the UDHR has inspired a rich body of legally binding international human rights treaties and human rights development worldwide. It continues to be an inspiration to us all whether in addressing injustices in times of conflicts, in societies suffering repression, and in our efforts towards achieving universal enjoyment of human rights.

It represents the universal recognition that basic rights and fundamental freedoms are inherent to all human beings, inalienable and equally applicable to everyone, and that every one of us is born free and equal in dignity and rights. Whatever our nationality, place of residence, gender, national or ethnic origin, religion, language, or any other status, the international community on 10 December 1948 made a commitment to upholding dignity and justice for all of us.
!! Foundation for Our Common Future
Over the years, the commitment has been translated into law, whether in the forms of treaties, customary international law, general principles, regional agreements and domestic law, through which human rights are expressed and guaranteed. Indeed, the UDHR has inspired more than 80 international human rights treaties and declarations, a great number of regional human rights conventions, domestic human rights bills, and constitutional provisions, which together constitute a comprehensive legally binding system for the promotion and protection of human rights.

Building on the achievements of the UDHR, the International Covenant on Civil and Political Rights, and the International Covenant on Economic, Social and Cultural Rights entered into force in 1976. The two Covenants have developped most of the rights already enshrined in the UDHR, making them effectively binding on States that have ratified them. They set forth everyday rights such as the right to life, equality before the law, freedom of expression, the rights to work, social security and education. Together with the UDHR, the Covenants comprise the International Bill of Human Rights.

Over time, international human rights treaties have become more focused and specialized regarding both the issue addressed and the social groups identified as requiring protection. The body of international human rights law continues to grow, evolve, and further elaborate the fundamental rights and freedoms contained in the International Bill of Human Rights, addressing concerns such as racial discrimination, torture, enforced disappearances, disabilities, and the rights of women, children, migrants, minorities, and indigenous peoples.
!! Universal Values
The core principles of human rights first set out in the UDHR, such as universality, interdependence and indivisibility, equality and non-discrimination, and that human rights simultaneously entail both rights and obligations from duty bearers and rights owners, have been reiterated in numerous international human rights conventions, declarations, and resolutions. Today, all United Nations member States have ratified at least one of the nine core international human rights treaties, and 80 percent have ratified four or more, giving concrete expression to the universality of the UDHR and international human rights.
!! How Does International Law Protect Human Rights?
International human rights law lays down obligations which States are bound to respect. By becoming parties to international treaties, States assume obligations and duties under international law to respect, to protect and to fulfil human rights. The obligation to respect means that States must refrain from interfering with or curtailing the enjoyment of human rights. The obligation to protect requires States to protect individuals and groups against human rights abuses. The obligation to fulfil means that States must take positive action to facilitate the enjoyment of basic human rights.Through ratification of international human rights treaties, Governments undertake to put into place domestic measures and legislation compatible with their treaty obligations and duties. The domestic legal system, therefore, provides the principal legal protection of human rights guaranteed under international law. Where domestic legal proceedings fail to address human rights abuses, mechanisms and procedures for individual and group complaints are available at the regional and international levels to help ensure that international human rights standards are indeed respected, implemented, and enforced at the local level.
!! The Udhr: The first global statement of the inherent dignity and equality of all

Throughout history, conflict, in the form of wars or as popular uprisings, has often come in reaction to inhumane treatment and injustice. The English Bill of Rights in 1689, drafted after the English Civil Wars, sprang from the people's aspiration for democracy. Exactly a century later, the French Revolution gave rise to the Declaration of the Rights of Man and of the Citizen and its proclamation of equality for all. But the Cyrus Cylinder, issued in 539 B.C. by Cyrus the Great of the Achaemenid Persian Empire (ancient Iran) after his conquest of Babylon, is said by many to be the first human rights document, and the Pact of the Virtous (Hilf-al-Fudul), concluded by the Arab tribes around 590 AD, is considered one of the first human rights alliances.

After the Second World War and the creation of the United Nations, the international community vowed never again to allow atrocities like those of that conflict. World leaders decided to complement the UN Charter with a road map to guarantee the rights of every individual everywhere, always.

The document they considered, and which would later become the Universal Declaration of Human Rights, was taken up at the first session of the General Assembly in 1946. The Assembly reviewed this draft Declaration on Fundamental Human Rights and Freedoms and transmitted it to the Economic and Social Council "for reference to the Commission on Human Rights for consideration . . . in its preparation of an international bill of rights." The Commission, at its first session early in 1947, authorized its members to formulate what it termed "a preliminary draft International Bill of Human Rights". Later the work was taken over by a formal drafting committee, consisting of members of the Commission from eight States, selected with due regard for geographical distribution.
!! The People behind the vision: the UDHR Drafting Committee
The Commission on Human Rights was made up of 18 members from various political, cultural and religious backgrounds. Eleanor Roosevelt, widow of American President Franklin D. Roosevelt, chaired the UDHR drafting committee. With her were Ren‚ Cassin of France, who composed the first draft of the Declaration, the Committee Rapporteur Charles Malik of Lebanon, Vice-Chairman Peng Chung Chang of China, and John Humphrey of Canada, Director of the United Nations Human Rights Division, who prepared the Declaration's blueprint. But Mrs. Roosevelt was recognized as the driving force for the Declaration's adoption.

The Commission met for the first time in 1947. In her memoirs, Eleanor Roosevelt recalls: "Dr. Chang was a pluralist and held forth in charming fashion on the proposition that there is more than one kind of ultimate reality. The Declaration, he said, should reflect more than simply Werstern ideas and Dr. Humphrey would have to be eclectic in his approach. His remark, though addressed to Dr. Humprhey, was really directed at Dr. Malik, from whom it drew a prompt retort as he expounded at some length the philosophy of Thomas Aquinas. Dr. Humphrey joined enthusiastically in the discussion, and I remember that at one point Dr. Chang suggested that the Secretariat might well spend a few months studying the fundamentals of Confucianism!"

The final draft by Cassin was handed to the Commission on Human Rights, which was being held in Geneva. The draft declaration sent out to all UN member States for comments became known as the Geneva draft.

The first draft of the Declaration was proposed in September 1948 with over 50 Member States participating in the final drafting. By its resolution 217 A (III) of 10 December 1948, the General Assembly, meeting in Paris, adopted the Universal Declaration of Human Rights with eight nations abstaining from the vote but none dissenting. Hern n Santa Cruz of Chile, member of the drafting sub-Committee, wrote: "I perceived clearly that I was participating in a truly significant historic event in which a consensus had been reached as to the supreme value of the human person, a value that did not originate in the decision of a worldly power, but rather in the fact of existing-which gave rise to the inalienable right to live free from want and oppression and to fully develop one's personality. In the Great Hallþthere was an atmosphere of genuine solidarity and brotherhood among men and women from all latitudes, the like of which I have not seen again in any international setting."

The entire text of the UDHR was composed in less than two years. At a time when the world was divided into Eastern and Western blocks, finding a common ground on what should make the essence of the document proved to be a colossal task.
''UN Photo''

Three members of the UN Commission on Human Rights in conversation before a meeting on the Draft Covenant on Human Rights was continued. Left to right: Malik), Cassin, and Roosevelt.
!! Global Projects to Celebrate UDHR60
The year long commemoration of the 60th anniversary of the Universal Declaration of Human Rights (UDHR) is intended to be as inclusive as possible, highlighting the role of people everywhere as the custodians and beneficiaries of the UDHR. The commemoration will encompass the UN family, the public and private sectors, media, schools, artists and other representatives of civil society throughout the world. Below are samples of projects planned for 2008.

Internationally renowned directors film human rights. A series of 18 short films on human rights directed by award winning film-makers from different regions will be shown back to back as one medium-length feature in various locations throughout 2008, and will premier at the Rome Film Festival. The films will be distributed as Public Service Announcements (PSAs) in cinemas and television networks worldwide. This is collaboration between OHCHR, NGO Art for the World, Dorje Films, and the European Commission.

"Cartooning for Human Rights". The illustrations of the UDHR by 17 artists from Algeria, Belgium, Democratic Republic of the Congo, Denmark, France, Iran, Israel, Japan, Palestine, Russia and the United States will be exhibited in Rome on 10 December 2007. Following an original initiative by French satirical cartoonist Plantu and the UN Department of Public Information (DPI) New York, the UN Regional Information Centre (UNRIC) Brussels will lead this Human Rights Day special edition and spin-off of the Cartooning for Peace Project previously shown in Brussels, Geneva and Paris.

Human Rights training in Asia Pacific. A series of 5 human rights capacity building trainings are programmed in Asia-Pacific in 2008. These trainings are organised by the Diplomacy Training Programme, an affiliate to the Faculty of Law at the University of New South Wales in Sydney. The NGO was established in 1989 by Nobel Peace Prize laureate Jos‚ Ramos-Horta to develop the knowledge of human rights and the skills of human rights defenders in the region. More information on www.dtp.unsw.edu.au.

"Sketching Human Rights". A collection of thought-provoking cartoons from leading international cartoonists illustrating the UDHR at the United Nations headquarters in New York. The exhibition will open on 10 December 2007, Human Rights Day, and will travel to locations around the world throughout 2008. This is a presentation by the Cartoonists and Writers Syndicate (CWS).

The 61st annual NGO conference - Paris. Hosted for the first time out of New York at UNESCO headquarters from 3 to 5 September 2008, the conference will be held under the theme "A Celebration of the Universal Declaration of Human Rights". An initiative from the UN Department of Public Information (DPI).

Interactive dialogues on human rights - New York. A series of interactive dialogues on human rights are organised from October 2007 to December 2008. Speakers will discuss new challenges and approaches to human rights in the context of improving synergy between the United Nations in New York, the Human Rights Council in Geneva, Members States, UN agencies and civil society. These dialogues are organised by the Permanent Mission of Switzerland in New York in collaboration with OHCHR and the NGO Committee on Human Rights.

School screenings in Switzerland. A forty-minute educational documentary on human rights, "Droits et libert‚s tout court" (Rights and libertiesþ simply) will be shown in all Swiss schools on Human Rights Day to mark the beginning of the celebrations. This is an initiative of the Geneva-based World Association of Schools as an Instrument of Peace (EIP) which already screened the medium-length film at the Cin‚ma tout ‚cran festival in Geneva this year. Visit http://portail-eip.org for more information.

Peace Messengers Cities public discussions. A year-long campaign of public discourse of the Declaration in cities in the United States and other activities worldwide is being organised by the International Association of Peace Messenger Cities which regroups 88 cities from the four corners of the world.

NGO Platform initiative in the Netherlands. A series of activities will take place all over the country on 10 December, with a joint event organised at The Hague city hall by Justice and Peace Netherlands. The theme chosen this year for the celebrations is "The Four Freedoms". A website, www.60jaaruvrm.nl, is also up and running. Civil society organisations of the Netherlands Human Rights Platform (Breed Mensenrechten Overleg -BMO) will be the organisers of this event.

Vienna +15. In 1993, at the World Conference on Human Rights held in Vienna, 171 countries reaffirmed their commitment to human rights by requesting the creation of a United Nations High Commissioner for Human Rights mandate. The Austrian Government commemorates the 15th anniversary of the Vienna Declaration and Plan of Action next year.
For an updated calendar and more events please visit: www.ohchr.org
!! the world's most translated document
From the six UN official languages -Arabic, Chinese, English, French, Russian, and Spanish- spoken by billions of people, to Pipil, spoken by some 50 people in El Salvador and Honduras, the UDHR is the most translated document in the world.

During the World Decade for Human Rights Education (1995-2004) and on the occasion of the 50th Anniversary of the UDHR, a project to have the Declaration translated in as many languages and dialects as possible was developed by the Office of the High Commissioner for Human Rights (OHCHR), the UN Department of Public Information (DPI), the International Telecommunication Union (ITU), the United Nations Development Programme (UNDP), the United Nations Educational, Scientific and Cultural Organization (UNESCO), and various governments, academia and international, regional and grass-roots civil society organizations.

OHCHR received over 360 translations, including one by Ali K. Phiri of Malawi, a teacher with extensive experience in human rights education in prisons, schools and remote communities, who translated the UDHR and the Constitution of Malawi into Yao, the third most spoken language in the country. Phiri distributed 1,500 booklets containing the UDHR and 500 copies of the Bill of Rights in various villages. Discussions were held with villagers who also learnt about ways to secure their own rights.

Arcade Bacanamwo, a university teacher in Bujumbura, Burundi, translated the UDHR into Kirundi and distributed the document to women living in camps for displaced persons. Audiocassettes of the Declaration were also distributed. It sparked such interest that a series of human rights discussions were organized with 200 women participants. Some of the trained women found their calling and decided to become human rights focal points who would report periodically to camp directors on human rights abuses or protection needs.

Both the Yao and Kirundi translations can be found on the OHCHR website. OHCHR has the Guinness World Record for Most translated document in the world. Find all UDHR translations on
http://www.ohchr.org/english/issues/education/training/udhr.htm.
þ ACT project/OHCHR
Ali K. Phiri of Malawi distributing 1,500 booklets of the UDHR in Yao
!! Useful Tools and Contacts
The UDHR 60th anniversary logo is available to download on www.ohchr.org. Please contact us on 60anniversary@ohchr.org for guidelines on its usage.

The OHCHR webpage on general UDHR information:
http://www.ohchr.org/EN/Issues/Pages/UDHRIndex.aspx

The UDHR has been translated in over 300 different languages. This includes official translations into the six United Nations languages: Arabic, Chinese, English, French, Russian and Spanish.
http://www.unhchr.ch/udhr/

A plain language version of the UDHR in French was developed by a Research Group of the University of Geneva, and then translated into English.
http://www.ohchr.org/Documents/Publications/ABCannexesen.pdf

The United Nations Cyberschoolbus is the online education component of the Global Teaching and Learning Project, whose mission is to promote education about international issues and the United Nations. The Global Teaching and Learning Project produces high quality teaching materials and activities designed for educational use (at primary, intermediate and secondary school levels) and for teachers' training. The Cyberschoolbus includes an Interactive Declaration, where each UDHR article is introduced with a plain language version, an exploration of key issues, definitions, and suggestions for activities and discussions.
http://www0.un.org/cyberschoolbus/humanrights/index.asp

A photo gallery on the creation of UDHR is available on the OHCHR website.
!! Contacts

OHCHR Address

Office of the High Commissioner for Human Rights
Palais Wilson
52 rue des Pƒquis
CH-1201 Geneva, Switzerland

''Postal Address''
Office of the High Commissioner for Human Rights
Palais des Nations
CH-1211 Geneva 10, Switzerland

''General Inquiries''
Telephone: +41 22 917 90 00
E-mail: InfoDesk@ohchr.org
Website: www.ohchr.org

''Media Inquiries/Interview Requests''
Press-Info@ohchr.org
+41 22 917 9602
+41 22 917 9383

''National Institutions Inquiries''
National Institutions Unit
niu@ohchr.org
+41 22 928 9663

''Non-Governmental Organizations Inquiries''
NGO Liaison Officer
civilsocietyunit@ohchr.org
+41 22 917 9656

''Donor and External Relations Section''
Charles Radcliffe
Chief, Donor and External Relations Section
cradcliffe@ohchr.org
+41 22 917 94 38
!! Speakers
The United Nations Human Rights Council, as part of the General Assembly, can call upon an impressive roster of independent experts who report on a broad range of human rights issues or on specific country situations. They include:
* Mr. Miloon KOTHARI (India), Special Rapporteur on adequate housing as a component of the right to an adequate standard of living.
* Ms. Leila ZERROUGUI (Algeria), Working Group on Arbitrary Detention.
* Mr. Juan Miguel PETIT (Uruguay), Special Rapporteur on the sale of children, child prostitution and child pornography.
* Mr. Vernor MU¥OZ VILLALOBOS (Costa Rica), Special Rapporteur on the right to education.
* Mr. Santiago CORCUERA CABEZUT (Mexico), Working Group on Enforced or Involuntary Disappearances.
* Mr. Philip ALSTON (Australia), Special Rapporteur on extrajudicial, summary or arbitrary executions.
* Mr. Arjun SENGUPTA (India), Independent Expert on the question of human rights and extreme poverty.
* Mr. Jean ZIEGLER (Switzerland), Special Rapporteur on the right to food.
* Mr. Ambeyi LIGABO (Kenya), Special Rapporteur on the promotion and protection of the right to freedom of opinion and expression.
* Ms. Asma JAHANGIR (Pakistan), Special Rapporteur on freedom of religion or belief.
* Mr. Paul HUNT (New Zealand), Special Rapporteur on the right of everyone to the enjoyment of the highest attainable standard of physical and mental health.
* Ms. Hina JILANI (Pakistan), Special Representative of the Secretary-General on the situation of human rights defenders.
* Mr. Leandro DESPOUY (Argentina), Special Rapporteur on the independence of judges and lawyers.
* Mr. Rodolfo STAVENHAGEN (Mexico), Special Rapporteur on the situation of human rights and fundamental freedoms of indigenous people.
* Mr. Walter KALIN (Switzerland), Representative of the Secretary-General on the human rights of internally displaced persons.
* Mr. Jos‚ G&oacute;mez DEL PRADO (Spain), Working Group on the use of mercenaries as a means of impeding the exercise of the right of peoples to self-determination.
* Mr. Jorge A. BUSTAMANTE (Mexico), Special Rapporteur on the human rights of migrants.
* Ms. Gay MCDOUGALL (United States of America), Independent Expert on minority issues.
* Mr. Doudou DIþNE (Senegal), Special Rapporteur on contemporary forms of racism, racial discrimination, xenophobia and related intolerance.
* Mr. Martin SCHEININ (Finland), Special Rapporteur on the promotion and protection of human rights while countering terrorism.
* Mr. Manfred NOWAK (Austria), Special Rapporteur on torture and other cruel, inhuman or degrading treatment or punishment.
* Mr. Okechukwu IBEANU (Nigeria), Special Rapporteur on the adverse effects of the illicit movement and dumping of toxic and dangerous products and wastes on the enjoyment of human rights.
* Ms. Sigma HUDA (Bangladesh), Special Rapporteur on trafficking in persons, especially in women and children.
* Mr. John RUGGIE (United States of America), Special Representative of the SG on human rights and transnational corporations and other business enterprises.
* Ms. Yakin ERTšRK (Turkey), Special Rapporteur on violence against women, its causes and consequences.

The United Nations also hosts expert panels that monitor how countries are living up their commitments under different human rights treaties. The panels, listed below, comprise independent experts who will be available for comments.
* Committee against Torture
* Committee on Economic, Social and Cultural Rights (including such rights as the rights to housing, education)
* Committee on the Rights of the Child
* Committee on the Elimination of Racial Discrimination
* Human Rights Committee (civil and political rights, such as freedom of speech and freedom of association)
* Committee on the Elimination of Discrimination against Women
* Committee on the Migrant Workers
For further information or to contact an individual expert or a representative of a treaty body, please contact the Media Unit, OHCHR Communications Section, on:
Press-Info@ohchr.org
+41 22 917 9602
+41 22 917 9383
''General Assembly resolution 56/116. United Nations Literacy Decade: education for all''

//The General Assembly//,

//Recalling// that in the [[Universal Declaration of Human Rights|http://www.un-documents.net/a3r217a.htm]], the [[International Covenant on Economic, Social and Cultural Rights|http://www.un-documents.net/icescr.htm]] and the [[Convention on the Rights of the Child|http://www.un-documents.net/crc.htm]] the right of every individual to education is recognized as inalienable,

//Recalling also// its resolutions [[42/104|http://www.un-documents.net/a42r104.htm]] of 7 December 1987, by which it proclaimed 1990 as International Literacy Year, and [[54/122|http://www.un-documents.net/a54r122.htm]] of 17 December 1999, in which it requested the Secretary-General, in cooperation with the Director-General of the United Nations Educational, Scientific and Cultural Organization and Member States and with other relevant organizations and bodies, to submit to the General Assembly at its fifty-sixth session a proposal for a United Nations literacy decade, with a draft plan of action and possible time frame for such a decade, on the basis of the outcome of the World Education Forum and the special session of the General Assembly for the five-year review of the World Summit for Social Development,

//Reaffirming// its [[resolution 49/184|http://www.un-documents.net/a49r184.htm]] of 23 December 1994, by which it proclaimed the ten-year period beginning on 1 January 1995 the United Nations Decade for Human Rights Education and appealed to all Governments to intensify their efforts to eradicate illiteracy and to direct education towards the full development of the human personality and to the strengthening of respect for all human rights and fundamental freedoms,

//Taking note //of Commission on Human Rights [[resolution 2001/29|http://www.un-documents.net/ecn40129.htm]] of 20 April 2001 on the right to education,

//Recalling// the [[United Nations Millennium Declaration|http://www.un-documents.net/a55r2.htm]] of 8 September 2000 in which Member States resolved to ensure that, by the year 2015, children everywhere, boys and girls alike, would be able to complete a full course of primary schooling and that girls and boys would have equal access to all levels of education, which requires a renewed commitment to promote literacy for all,

//Recalling also// the [[Copenhagen Declaration on Social Development|http://www.un-documents.net/cope-dec.htm]] and the [[Programme of Action of the World Summit for Social Development|http://www.un-documents.net/poa-wssd.htm]] and the outcome document of the twenty-fourth special session of the General Assembly, entitled "World Summit for Social Development and beyond: achieving social development for all in a globalizing world",

//Convinced// that literacy is crucial to the acquisition, by every child, youth and adult, of essential life skills that enable them to address the challenges they can face in life, and represents an essential step in basic education, which is an indispensable means for effective participation in the societies and economies of the twenty-first century,

//Affirming// that the realization of the right to education, especially for girls, contributes to the eradication of poverty,

//Acknowledging// the activities undertaken at the national and regional levels for the Education for All 2000 assessment of progress towards achieving the goals of education for all, and stressing further the need to redouble efforts in order to meet the basic needs of people of all age groups, in particular girls and women,

//Recognizing// that, despite the significant progress in basic education, especially the increase in primary school enrolment coupled with a growing emphasis on the quality of education, major problems, both emerging and continuing, still persist, which require even more forceful and concerted action at the national and international levels so as to achieve the goal of education for all,

//Deeply concerned// about the persistence of the gender gap in education, which is reflected by the fact that nearly two thirds of the world's adult illiterates are women,

//Urging// Member States, in close partnership with international organizations, as well as non-governmental organizations, to promote the right to education for all and to create conditions for all for learning throughout life,

1. //Takes note// of the report of the Director-General of the United Nations Educational, Scientific and Cultural Organization entitled "Draft proposal and plan for a United Nations literacy decade";

2. //Proclaims// the ten-year period beginning on 1 January 2003 the United Nations Literacy Decade;

3. //Reaffirms// the [[Dakar Framework for Action|Dakar Framework for Action, Education For All]] adopted at the World Education Forum, in which commitments were made to achieve a 50 per cent improvement in levels of adult literacy by 2015 and to improve the quality of education;

4. //Appeals// to all Governments to redouble their efforts to achieve their own goals of education for all by developing national plans in accordance with the Dakar Framework for Action, setting firm targets and timetables, including gender-specific education targets and programmes, to eliminate gender disparities at all levels of education, to combat the illiteracy of women and girls and to ensure that girls and women have full and equal access to education, and by working in active partnership with communities, associations, the media and development agencies to reach those targets;

5. //Also appeals// to all Governments to reinforce political will and develop more inclusive policy-making environments and devise innovative strategies for reaching the poorest and most marginalized groups and for seeking alternative formal and non-formal approaches to learning with a view to achieving the goals of the Decade;

6. //Urges// all Governments to take the lead in the coordination of the Decade activities at the national level, bringing all relevant national actors together in sustained dialogue on policy formulation, implementation and evaluation of literacy efforts;

7. //Reaffirms// that literacy for all is at the heart of basic education for all and that creating literate environments and societies is essential for achieving the goals of eradicating poverty, reducing child mortality, curbing population growth, achieving gender equality and ensuring sustainable development, peace and democracy;

8. //Appeals// to all Governments and to economic and financial organizations and institutions, both national and international, to lend greater financial and material support to the efforts to increase literacy and achieve the goals of education for all and those of the Decade through, inter alia, the 20/20 initiative, as appropriate;

9. //Invites// Member States, the specialized agencies and other organizations of the United Nations system as well as relevant intergovernmental and non-governmental organizations to intensify further their efforts to implement effectively the [[World Declaration on Education for All]], the [[Dakar Framework for Action|Dakar Framework for Action, Education For All]] and the relevant commitments and recommendations to promote literacy made at recent major United Nations conferences and at their five-year reviews with a view to better coordinating their activities and increasing their contribution to development within the framework of the Decade in a manner that is complementary to and coordinated with the ongoing education for all process;

10. //Decides// that the United Nations Educational, Scientific and Cultural Organization should take a coordinating role in stimulating and catalysing the activities at the international level within the framework of the Decade;

11. //Requests// the Secretary-General, in cooperation with the Director-General of the United Nations Educational, Scientific and Cultural Organization, to seek and take into account comments and proposals from Governments and the relevant international organizations on the draft plan for the Decade in order to develop and finalize a well targeted and action-oriented plan of action to be submitted to the General Assembly at its fifty-seventh session;

12. //Decides// to include in the provisional agenda of its fifty-seventh session a question entitled "United Nations Literacy Decade".

@@text-align:right;88th plenary meeting
19 December 2001@@
''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 ''60th Annual DPI/NGO Conference'', organized by an NGO '''Planning Committee''' in partnership with the United Nations Department of Public Information, will be held from September 5-7, 2007 at UN Headquarters in New York on the theme: ''Climate Change: How It Impacts Us All''.  http://www.undpingoconference.org

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

1/ Adaptation implies making lifestyle adjustments. Mitigation implies alleviating the problem.

[[Declaration Process|60th Annual DPI/NGO Conference Declaration: Process]]
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.

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 '' '' 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/unche.htm}}}
<html><iframe
	src = "http://www.un-documents.net/unche.htm"
	title = "Action Plan for the Human Environment"
	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.congo-education.net/congo-100x76.png][Conference of NGOs]]
[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]]
}}}
<<option chkGenerateAnRssFeed>> GenerateAnRssFeed
<<option chkOpenInNewWindow>> OpenLinksInNewWindow
<<option chkSaveEmptyTemplate>> SaveEmptyTemplate
<<option chkToggleLinks>> Clicking on links to tiddlers that are already open causes them to close
^^(override with Control or other modifier key)^^
<<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>> ConfirmBeforeDeleting
Maximum number of lines in a tiddler edit box: <<option txtMaxEditRows>>
Folder name for backup files: <<option txtBackupFolder>>
<<option chkInsertTabs>> Use tab key to insert tab characters instead of jumping to next field
<<option chkUseInclude>> Include ~TiddlyWikis (IncludeList | IncludeState | [[help|http://tiddlywiki.abego-software.de/#%5B%5BIncludePlugin%20Documentation%5D%5D]])
^^(Reload this ~TiddlyWiki to make changes become effective)^^
<<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
<<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
''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]].)^^
<<option chkUseYourSearch>> Use 'Your Search' //([[more options|YourSearch Options]])//
> [[1. Preamble|http://www.un-documents.net/a21-01.htm]]
!!! I. Social and Economic Dimensions
> [[2. International Cooperation to Accelerate Sustainable Development in Developing Countries and Related Domestic Policies|http://www.un-documents.net/a21-02.htm]]
> [[3. Combating Poverty|http://www.un-documents.net/a21-03.htm]]
> [[4. Changing Consumption Patterns|http://www.un-documents.net/a21-04.htm]]
> [[5. Demographic Dynamics and Sustainability|http://www.un-documents.net/a21-05.htm]]
> [[6. Protecting and Promoting Human Health|http://www.un-documents.net/a21-06.htm]]
> [[7. Promoting Sustainable Human Settlement Development|http://www.un-documents.net/a21-07.htm]]
> [[8. Integrating Environment and Development in Decision-Making|http://www.un-documents.net/a21-08.htm]]
!!! II. Conservation and Management of Resources for Development
> [[9. Protection of the Atmosphere|http://www.un-documents.net/a21-09.htm]]
> [[10. Integrated Approach to the Planning and Management of Land Resources|http://www.un-documents.net/a21-10.htm]]
> [[11. Combating Deforestation|http://www.un-documents.net/a21-11.htm]]
> [[12. Managing Fragile Ecosystems:  Combating Desertification and Drought|http://www.un-documents.net/a21-12.htm]]
> [[13. Managing Fragile Ecosystems:  Sustainable Mountain Development|http://www.un-documents.net/a21-13.htm]]
> [[14. Promoting Sustainable Agriculture and Rural Development|http://www.un-documents.net/a21-14.htm]]
> [[15. Conservation of Biological Diversity|http://www.un-documents.net/a21-15.htm]]
> [[16. Environmentally Sound Management of Biotechnology|http://www.un-documents.net/a21-16.htm]]
> [[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|http://www.un-documents.net/a21-17.htm]]
> [[18. Protection of the Quality and Supply of Freshwater Resources: Application of Integrated Approaches to the Development, Management and Use of Water Resources|http://www.un-documents.net/a21-18.htm]]
> [[19. Environmentally Sound Management of Toxic Chemicals, Including Prevention of Illegal International Traffic in Toxic and Dangerous Products|http://www.un-documents.net/a21-19.htm]]
> [[20. Environmentally Sound Management of Hazardous Wastes, Including Prevention of Illegal International Traffic in Hazardous Wastes|http://www.un-documents.net/a21-20.htm]]
> [[21. Environmentally Sound Management of Solid Wastes and Sewage-related Issues|http://www.un-documents.net/a21-21.htm]]
> [[22. Safe and Environmentally Sound Management of Radioactive Wastes|http://www.un-documents.net/a21-22.htm]]
!!! III. Strengthening the Role of Major Groups
> [[23. Preamble|http://www.un-documents.net/a21-23.htm]]
> [[24. Global Action for Women Towards Sustainable and Equitable Development|http://www.un-documents.net/a21-24.htm]]
> [[25. Children and Youth in Sustainable Development|http://www.un-documents.net/a21-25.htm]]
> [[26. Recognizing and Strengthening the Role of Indigenous People and their Communities|http://www.un-documents.net/a21-26.htm]]
> [[27. Strengthening the Role of Non-governmental Organizations: Partners for Sustainable Development|http://www.un-documents.net/a21-27.htm]]
> [[28. Local Authorities' Initiatives in Support of Agenda 21|http://www.un-documents.net/a21-28.htm]]
> [[29. Strengthening the Role of Workers and their Trade Unions|http://www.un-documents.net/a21-29.htm]]
> [[30. Strengthening the Role of Business and Industry|http://www.un-documents.net/a21-30.htm]]
> [[31. Scientific and Technological Community|http://www.un-documents.net/a21-31.htm]]
> [[32. Strengthening the Role of Farmers|http://www.un-documents.net/a21-32.htm]]
!!! IV. Means of Implementation
> [[33. Financial Resources and Mechanisms|http://www.un-documents.net/a21-33.htm]]
> [[34. Transfer of Environmentally Sound Technology, Cooperation and Capacity-building|http://www.un-documents.net/a21-34.htm]]
> [[35. Science for Sustainable Development|http://www.un-documents.net/a21-35.htm]]
> [[36. Promoting Education, Public Awareness and Training|http://www.un-documents.net/a21-36.htm]]
> [[37. National Mechanisms and International Cooperation for Capacity-building in Developing Countries|http://www.un-documents.net/a21-37.htm]]
> [[38. International Institutional Arrangements|http://www.un-documents.net/a21-38.htm]]
> [[39. International Legal Instruments and Mechanisms|http://www.un-documents.net/a21-39.htm]]
> [[40. Information for Decision-making|http://www.un-documents.net/a21-40.htm]]
{{iframe{''Note'': This is a "framed" page from the  web site of [[Information Habitat: Where Information Lives]]. You can click on <<fullscreen>> to toggle full-screen mode, or you can view this page in a separate browser tab or window at http://www.un-documents.net/a21-36.htm}}}
<html><iframe
	src = "http://www.un-documents.net/a21-36.htm"
	title = "Agenda 21, Chapter 36: Promoting Education, Public Awareness And Training"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
<<list all>>
''Armenian Assembly of America'' works  through research, education and advocacy to strengthen U.S./Armenia and U.S./Nagorno Karabakh relations, promotes Armenia's and Karabakh's democratic development and economic prosperity and seeks universal affirmation of the Armenian Genocide.

With a nation-wide network of volunteer activists, lay leaders, and staff in Washington, Los Angeles, New York, Boston, Yerevan, Stepanakert and Gyumri, the Assembly works with the Administration, Congress, and other policy makers in Washington, D.C., and state legislatures to advance issues of concern to Armenian-Americans. 

For more information, visit http://www.aaainc.org
Copyright (c) abego Software ~GmbH, 2005-2006 ([[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.

<<tiddler [[BSD open source license]]>>
A central goal of the historic 1992 [[Earth Summit]], at which the [[Framework Convention on Climate Change]] was adopted, was the transition to a new, sustainable development path, based to a significant extent on the broad-based participation of all major groups in society. ''Climate Change 2.0'' - is an initiative of  [[Information Habitat: Where Information Lives]] in support of the [[NGO Committee on Education]]'s commitment to the [[UN Decade of Education for Sustainable Development]] (2005-2014). ''Information Habitat'' was founded in May 1990, in the early stages of preparation for the Summit, on the recognition of the critical role that the emerging information and communications revolution could play in that transition. The phenomenal advances in ICT, and their impact on almost all areas of human activity over the seventeen years since its founding have continued to confirm the validity of the initial premise of Information Habitat.

However, while there is growing recognition of the significance of ICT as a driver in economic and social development, along with almost universal reliance on the Internet and electronic mail as the principal medium for access to and dissemination of information relating to sustainable development, there still remains very limited appreciation of the profound significance of ICT for sustainable development or of the nature of a development path based in a medium in which the marginal cost of production and economic exchange - in both financial and material terms - is virtually zero. 
<<tabs txtMainTab Timeline Timeline TabTimeline Alphabetical 'All tiddlers' TabAll Tags 'All tags' TabTags  Missing 'Missing tiddlers' TabMoreMissing Orphans 'Orphaned tiddlers' TabMoreOrphans Shadowed 'Shadowed tiddlers' TabMoreShadowed>>
/***
|Name|''timeline''|h
|Author|[[Saq Imtiaz]]|
|Version|0.5 bet|
|Description|A replacement for the core timeline macro that offers more features|
|Source|http://lewcid.googlepages.com/lewcid.html#BetterTimelineMacro|
|TW Version|2.x|
***/
/***
!!!Features:
*list tiddlers with only specific tag
*exclude tiddlers with a particular tag
*limit entries to any number of days, for example one week
*specify a start date for the timeline, only tiddlers after that date will be listed.

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

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

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

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


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

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



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

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

          else
              {
              window.old_timeline_handler.apply(this,arguments);
              }
}
//}}}
/***
|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();
}
//}}}
@@font-size:120%;font-weight:bold;text-align:center;[[NGO Committee on Education]] (A [[CONGO|Conference Of NGOs]] Committee)@@
!!~By-Laws
!!!Purpose
The NGO Committee on Education will:
# Focus attention on and promote the various programs of formal and non-formal education of the UN intergovernmental agencies, of international institutions, and of ~NGOs.
# Promote and facilitate the exchange of knowledge and dissemination of information on formal and non-formal education issues to various governments, civil society organizations, including academia, foundations, etc.
# Address the issue of literacy for all children and adults, and other aspects of education in order to further enhance the goal of world education for all.
# Work closely with the other NGO Committees related to the United Nations system and with the various relevant UN Commissions and Conferences.
!!!Membership
# Regular Membership: Membership in the Committee is open to ~Non-Governmental Organizations in consultative status with ECOSOC. These members shall be eligible to vote and hold office.
# Associate Membership: Any NGO having a formal relationship with the United Nations may become an Associate Member. Such members will not be entitled to hold office or vote on matters of policy.
# An organization may become a member by submitting and application to the Chairperson or Secretary.
!!!Officers
# The officers of the NGO Committee on Education shall be one Chairperson, one ~Vice-Chairperson, Secretary and Treasurer. Such officers shall be elected for a term of two years, and no person shall be elected to the same office for more than two consecutive terms. Officers must be from ~NGOs in consultative status.
# No member may hold more than one office. For purposes of this paragraph the term "office" includes members-at-large of the Executive Committee.
!!!Duties of Officers
# The Chairperson shall convene and preside over meetings, promote the general effectiveness of the Committee, and maintain communications with other NGO Committees and with representatives of the UN system. The Chairperson or ~Vice-Chairperson shall represent the Committee when required.
# The Secretary shall keep minutes of the meetings of the Committee, a record of the membership, and a record of attendance at meetings. The Secretary shall arrange for distribution of the minutes in advance of the meeting at which they will be approved.
# The Treasurer shall receive and disburse funds as determined by the Executive Committee and shall be responsible for the maintenance of accounts and shall report regularly to the Committee's membership.
!!!Executive Committee
# The responsibility of the Executive Committee shall be to carry on the business of the Committee between meetings. The members of the Committee shall be kept informed of the activities of the Executive Committee through a report from the Chairperson or ~Vice-Chairperson at regular meetings of the Committee when relevant.
# The officers with up to four elected members-at-large shall serve as the Executive Committee. Members-at-large shall serve for a term of two years. No person shall be elected for more than two consecutive terms.
# Members-at-large may be Regular or Associate Members of the Committee, however, voting rules as described in the membership section apply.
!!!Subcommittees
# The NGO Committee on Education may establish Subcommittees or Working Groups as needed. The Chairperson of a Subcommittee will be a member //ex officio// of the Executive Committee. Members of such Subcommittees or Working Groups shall elect their own chairs, subject to approval of the Executive Committee.
!!!Finances
# Payment of dues of $25.00 to the Treasurer shall entitle members to receive the minutes and other materials determined by the NGO Committee and allow them to vote.
# The fiscal year shall be from 1 October to 30 September.
!!Elections
# A Nominating Committee shall be appointed by the Chairperson, on consultation with other offices, not less than two months prior to the election at the Annual Meetings. The report of the Nominating Committee shall be circulated in writing to all Regular members of the Committee at least three weeks prior to the meeting at which the election is to take place. The Nominating Committee shall not nominate representatives represented by members of the Nominating Committee.
# The election of officers and members of the Executive Committee shall take place at an Annual Meeting. Elected officers shall take office immediately.
# Election of officers and procedural matters shall be decided by the majority of member organizations present and voting.
# A ballot by mail may be taken in the event that a meeting of the Committee is not possible.
!!!Meetings
# The Committee shall meet periodically, at least four times a year. The Committee shall hold an Annual Meeting during the month of May or June.
# A quorum shall consist of a representatives of one-third of the regular member organizations.
# Recommendations of statements of positions to be submitted to ECOSOC or any of its subsidiary bodies may not be made in the name of the Committee. Joint statements of member organizations may be submitted over the names of those organizations who wish to become signatories to the statement.
!!!Amendments
: Proposed amendments to these By-laws shall be submitted to the Chairperson in time for consideration by the Executive Committee and for written circulation to each member organizations not less than two days prior to the date of the proposed adoption. An amendment shall be adopted only after discussion in a plenary meeting of the Committee and upon affirmative vote of two-thirds of these representatives of member organizations present and voting.

//Adopted, November 4, 2000//
@@text-align: center;
!!!Resolution on Information and Communications
adopted by the
''20th General Assembly''
of the
''Conference Of Non-Governmental Organizations in Consultative Status with ECOSOC (CONGO)''
Geneva, Switzerland, 3-5 November, 1997@@
!!!Information and Communications
<<<
The //20th General Assembly of the Conference of NGOs//, meeting in Geneva from 3 to 5 November, 1997,

//Recognizing// the continuing dramatic advances in information and communications technology, and the ways in which these advances are:
* transforming access to, and participation in, the United Nations system;
* creating a forum for non-governmental organizations that transcends national boundaries; and
* enabling structural changes in the relationships between non-governmental organizations and national and local governments; 
//Recognizing also// that there exist very substantial disparities between countries, and within countries, in the extent to which there is effective access to the global information infrastructure;

//Resolves// to consider how the Conference of NGOs and its member organizations can make use of modern information and communications technology to increase their effectiveness and to strengthen the participation of non-governmental organizations in the work of the United Nations system in order to promote the goals of the United Nations. 
<<<

----

Resolution proposed by:
: [[Information Habitat: Where Information Lives]]
: International Council of Jewish Women 
The ''Catholic International Education Office'' is a non-governmental organization representing world-wide Catholic education as a NGO. Founded in 1952 in Lucerne (Switzerland). It groups the national secretariats of Catholic education from each member country. Organised in five world regions : Africa, America, Europe, Asia and Oceania, Middle and Near-East. General Secretariat established in Brussels (Belgium). Formal relationship with international agencies and institutions working in the field of education:
*  ''UNESCO'': consultative status, category B, since 1958. With a status of formal consultation relationship since 1997.
* ''ECOSOC'': registered with the Social and Economic Council of the United Nations since 1958. Since 1998, special consultative status.
* ''UNICEF'': consultative status since 1963.
* ''Council of Europe'': consultative status since 1965.
* Collaboration relationship with: ''FAO'' (United Nations Food and Agriculture Organisation), ''ILO'' (International Labour Office), ''OAU'' (Organisation of African Unity), ''OAS'' (Organisation of American States). 



http://www.infoiec.org
![[Overview]]
!![[Climate Change Crisis]]
* [[Nature of the Climate Change]]
* [[Timelines of Climate Change]]
* [[Overview: Historic & Projected Trends]]
!![[CO2 Emissions]]
* [[Escalating Energy Consumption]]
* [[Greenhouse Effect]]
!![[Global Warming]]
* [[Melting Ice]]
** [[Vanishing Icecaps]]
** [[Thermal Currents]]
** [[Vanishing Glaciers]]
** [[Meltdown Dynamics]]
** [[Freshwater Shortages]]
* [[Sea level rise]]
** [[Lowlands Loss & Flooding]]
** [[Small Islands]]
* [[Extreme Weather]]
** [[Extreme Storms]]
** [[Prolongued Droughts]]
!![[Economics of Climate Change]]
* [[The Stern Review]] - Macroeconomics
* [[Grassroots Enterprises]] - Microeconomics
!![[Vital Responses]]
* [[Guiding Principles]]
* [[Wetlands Restoration]]
* [[Native Tree Planting]]
* [[Soil Conservation]]
* [[Composting]]
* [[Biogas]]
* [[Permaculture principles]]
* [[Avoiding dangerous climate change]]
!![[Open Source Intelligence]]
<<<
"No problem can be solved from the same level of consciousness that created it."
//Albert Einstein// (1879 - 1955) Physicist & Nobel Laureate 
<<<
''Climate Change 2.0'' is being developed from a vision of a collaborative application of ''Web 2.0'' methodologies to the global climate change crisis and incorporating a transition to an  Open Source, Creative Commons climate. ''Climate Change 2.0'' is based on the recognition of the vital contribution that the combination of the [[economics of information|Economics of information]] and information and communications technologies (ICT) can contribute - and already are contributing - to addressing what is increasingly recognized as the greatest challenges to a sustainable common future, both through the power of the technologies and through the progressive discovery and realization of the fundamental properties and nature of a digital knowledge-based universe and the accompanying profound freedoms and transformation of human consciousness and the emergence of digitally-connected global civil society that has been growing rapidly since the early stages of preparations for the 1992 Earth Summit - of which the [[United Nations Framework Convention on Climate Change]] was a key component.
<<<
"''The Interlocking Crises''
Until recently, the planet was a large world in which human activities and their effects were neatly compartmentalized within nations, within sectors (energy, agriculture, trade), and within broad areas of concern (environment, economics, social). These compartments have begun to dissolve. This applies in particular to the various global 'crises' that have seized public concern, particularly over the past decade. These are not separate crises: an environmental crisis, a development crisis, an energy crisis. They are all one."
//[[Our Common Future, From One Earth to One World|http://www.un-documents.net/ocf-ov.htm]]//
<<<
!! See also:
* [[Climate Change 2.0 - Elements]]
A number of  elements have been developed under the auspices of [[Climate Change 2.0]], with an initial focus on the development of an online platform for the September 2007 [[60th Annual DPI/NGO Conference]] to be held at UN Headquarters on the theme "Climate Change: How It Impacts Us All", and in the broader context of  the [[United Nations Decade of Education for Sustainable Development]], 2005-2014, and related international decades.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

In a broader context, the radical change in an in increasingly networked information economy - touched on but not fully developed in Yochai Benkler's [[The Wealth of Networks|The Wealth of Networks: How Social Production Transforms Markets and Freedom]] is the largely unappreciated reality that in a networked knowledge-based universe, a universe in which knowledge is the central basis for wealth and in which the zero-based properties of information become increasingly self-evident and appreciated - i.e. that information has zero mass, zero physical size and takes virtually zero time and cost to travel - accessibility to wealth is no longer constrained the laws of conservation of mass and energy.
{{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 @ Wiser Earth"
	style="
		background-color:#ffffff; 
		border-color:#ffffff;
		border:none;"
	width = "100%"
	height = "1000"
	frameborder = "0"
	scrolling = "yes">
</iframe></html>
[<img[http://www.climatechange3.net/cc3-logo-100x100.png]]

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

''Climate Change 3.0'' is based, //inter alia//, on an appreciation that the expanding digital universe 

"//''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]]//

 "//No problem can be solved from the same level of consciousness that created it.//"
> //Albert Einstein// (1879 - 1955) Physicist & Nobel Laureate 
<<<

!! See also:
* [[Climate Change 3.0 - Elements]]
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
Among the many powerful online tools,


+++[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]]<br>[[www.tiddlywikiperfect.net/|http://www.tiddlywikiperfect.net/]]
The Summary for Policy Makers of Working Group II of the [[Intergovernmental Panel on Climate Change]] addresses ''Climate Change Impacts, Adaptation and Vulnerability'' was released on April 6, 2007 and provides an overview of the current knowledge about observed impacts of climate change on the natural and human environment, across a wide range of systems and sectors concerning the nature of future impacts, including for some fields not covered in previous assessments, and by regions. The contents of the summary have been reorganized in TiddlyWiki format with the goal of making it easier to read and understand at [[www.climate-change-two.net/ar4-wg2-spm|http://www.climate-change-two.net/ar4-wg2-spm]]. The official version of 23-page summary can be downloaded in pdf format at [[www.ipcc.ch/SPM13apr07.pdf|http://www.ipcc.ch/SPM13apr07.pdf]]
/***
| Name:|CloseOnCancelPlugin|
| Description:|Closes the tiddler if you click new tiddler then cancel. Default behaviour is to leave it open|
| Version:|6.9.3|
| Date:|30-Sep-2006|
| Source:|http://mptw.tiddlyspot.com/#CloseOnCancelPlugin|
| Author:|Simon Baird <simon.baird@gmail.com>|
| CoreVersion:|2.1.x|
***/
//{{{
merge(config.commands.cancelTiddler,{

	handler_orig_closeUnsaved: config.commands.cancelTiddler.handler,

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

});

//}}}

Foreground: #000
Background: #fff
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
The [[ColorPalette]] tiddler is used in TiddlyWiki to define a set of colours - fifteen by default - whose names are then used in the [[StyleSheetColors]] tiddler - and [[CustomStyleSheetColours]] or other custom style sheets you may use  -  to set the colours for the various styles. 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. The display of  the ColorPalette here is made possible by the PaletteViewMacro. 

<<paletteView [[ColorPalette]]>>
In addition to this main web site, the [[Information and Communications Sub-Committee]] has been developing a number of web sites for the [[NGO Committee on Education]]:
* ''UN Documents Cooperation Circles: Gathering a Body of Global Agreements'' - 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.  http://www.un-documents.net [[Read more details|UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] 
* ''The Wealth of Networks: How Social Production Transforms Markets and Freedom'' - an HTML adaptation of the highly acclaimed book, released under a [[Creative Commons]] licence, on the nature and dynamics of a 'networked information economy' by ''Yochai Benkler''. Professor of Law at Yale University and New York University. http://www.ngo-education.net/wealth-of-networks/  [[Read more details|The Wealth of Networks: How Social Production Transforms Markets and Freedom]] 
''CONGO'' - the ''C''onference ''O''f ''N''on-''G''overnmental ''O''rganizations in Consultative Relationship with the United Nations - is an independent, international, not-for-profit membership association of nongovernmental organizations that facilitates the participation of ~NGOs in United Nations debates and decisions. CONGO is most active in the major UN centers of New York, Geneva, and Vienna, but extends its work to all regions of the world. In 2002. CONGO became accredited in its own right as an NGO in General Consultative Status with the United Nations Economic and Social Council.
* [[www.ngocongo.org/|http://www.ngocongo.org]]
config.options.chkDisableNonExistingWikiLinks=true;
config.options.chkSearchTitles=true;
config.options.chkSearchText=false;
config.options.chkSearchTags=false;
<html><hide linebreaks>
Please use this form to send any messages, comments or questions about this site:
<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="Stern Review 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>
<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>
@@font-size:90%;''Note'': This is a "framed" page from the ''UN Documents Cooperation Circles"' web site. You can view this page in a separate browser tab or window at http://www.un-documents.net/cbd.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/cbd.htm"
	title = "Convention on Biological Diversity">
</iframe> </html>
<<tiddler "Creative Commons web site">>'
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>
[>img[http://creativecommons.org/icon/nc/standard.gif]]This [[Creative Commons license]] lets others remix, tweak, and build upon your work ''non-commercially'', as long as they //credit you// and //license their new creations under the identical terms//. Others can download and redistribute your work just like the by-nc-nd license, but they can also translate, make remixes, and produce new stories based on your work. All new work based on yours will carry the same license, so any derivatives will also be non-commercial in nature. 

Alternative icons: 
[img[http://i.creativecommons.org/l/by-nc-sa/3.0/us/88x31.png]] [img[http://creativecommons.org/images/public/somerights20.png]] [img[http://i.creativecommons.org/l/by-nc-sa/3.0/80x15.png]]
//Full description// +++
{{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://creativecommons.org/licenses/by-nc-sa/3.0/}}}
<html><iframe
	src = "http://creativecommons.org/licenses/by-nc-sa/3.0/"
	title = ""
	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 ''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/about/licenses/meet-the-licenses}}}
<html><iframe
	src = "http://creativecommons.org/about/licenses/meet-the-licenses"
	title = "Creative Commons licenses"
	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;
};
//}}}


/*{{{*/
body {
	background: [[ColorPalette::Background]];
	color: [[ColorPalette::Foreground]];
}

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

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

.siteSubtitle {
	color: [[ColorPalette::SecondaryDark]];
}

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

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

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

..viewer table {
	padding: 1px;
}

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

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

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

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

.button {
	color: [[ColorPalette::PrimaryDark]];
	border: 1px solid [[ColorPalette::Background]];
}

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

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

.tabSelected{
	color: [[ColorPalette::PrimaryDark]];
	background: [[ColorPalette::TertiaryPale]];
	border-left: 1px solid [[ColorPalette::TertiaryLight]];
	border-top: 1px solid [[ColorPalette::TertiaryLight]];
	border-right: 1px solid [[ColorPalette::TertiaryLight]];
}

.tabUnselected {
	color: [[ColorPalette::Background]];
	background: [[ColorPalette::TertiaryMid]];
}

.tabContents {
	color: [[ColorPalette::PrimaryDark]];
	background: [[ColorPalette::TertiaryPale]];
	border: 1px solid [[ColorPalette::TertiaryLight]];
}

.tabContents .button {
	 border: 0;}

#sidebar {
}

#sidebarOptions input {
	border: 1px solid [[ColorPalette::PrimaryMid]];
}

#sidebarOptions .sliderPanel {
	background: [[ColorPalette::PrimaryPale]];
}

#sidebarOptions .sliderPanel a {
	border: none;
	color: [[ColorPalette::PrimaryMid]];
}

#sidebarOptions .sliderPanel a:hover {
	color: [[ColorPalette::Background]];
	background: [[ColorPalette::PrimaryMid]];
}

#sidebarOptions .sliderPanel a:active {
	color: [[ColorPalette::PrimaryMid]];
	background: [[ColorPalette::Background]];
}

.wizard {
	background: [[ColorPalette::SecondaryLight]];
	border-top: 1px solid [[ColorPalette::SecondaryMid]];
	border-left: 1px solid [[ColorPalette::SecondaryMid]];
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.tagging, .tagged {
	border: 1px solid [[ColorPalette::TertiaryPale]];
	background-color: [[ColorPalette::TertiaryPale]];
}

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

.tagging .listTitle, .tagged .listTitle {
	color: [[ColorPalette::PrimaryDark]];
}

.tagging .button, .tagged .button {
		border: none;
}

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

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

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

.sparktick {
	background: [[ColorPalette::PrimaryDark]];
}

.error, .errorButton {
	color: [[ColorPalette::Foreground]];
	background: [[ColorPalette::Error]];
}

.warning {
	color: [[ColorPalette::Foreground]];
	background: [[ColorPalette::SecondaryPale]];
}

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

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

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

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

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

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

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

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

/*}}}*/
!!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]] (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}.
Title: 


Author:


----
Date:


----
Tags:


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

//}}}

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:
# 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.
# 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.
# 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.
# 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.
# 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.
# 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.
# 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 are 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|Conventionon 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]]
[[Key Documents on Education for Sustainable Development]]
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]].
/***
|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 cab ''download this template'', and the customize for your own use, by right-clicking on the page, selecting //Save Page As...//, selecting //Web page, HTML only//, and saving it to your desktop or to a folder on your local drive.

Once you have save the file, when you open the saved copy, you will be able to customize the template, beginning with the [[Setup Menu]]
{{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>
''Governmental agreements''
* [[Rio Declaration on Environment and Development]]
* [[Agenda 21]] 
* [[United Nations Framework Convention on Climate Change]]
* [[Convention on Biological Diversity]]
* [[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]]
''NGO agreements''
* [[NGO Alternative Treaties]]
''See also''
* [[Our Common Future]]
{{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>
The ''Earthwatch Institute'' - http://www.earthwatch.org
{{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. 

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

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

http://www.ngo-education.net/stern-review/
<!--{{{-->
<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>
<!--}}}-->
2008 is the 60th Anniversary of the Universal Declaration of Human Rights.  What is the relationship between Education and Human Rights?  Education is itself a right, but education can also be a means for promoting human dignity.  This session will celebrate the Universal Declaration of Human Rights by featuring a rich collage of musical performances and oral and audio-visual presentations, on the topics of music, technology, and brain education, as ways to promote human dignity.

 

Date & Time: Thursday, January 17, 3-5pm

Location: NGO Resource Center

 

-Education & Human Rights, Reverend Moses Williams

-Ubuntu, Dr. Akil Kokayi Khalfani, Director of Africana Institute, Essex County College

-Ghanian Choir

-Human Dignity and the Brain, Warrington Parker, Ph.D., International Brain Education Association

-Brain Science and Brain Potential, Sung Lee, M.D., International Brain Education Association

-Experience of Brain Education, Passion Jun, International Brain Education Association

-Education for a Digital Universe, Dr. Robert Pollard

-Technological Approaches to Education, Upendra Chivukula, Deputy Speaker of NJ Assembly

-African Drumming
From [[Education Today Newsletter,  February - May 2006|http://portal.unesco.org/education/en/ev.php-URL_ID=46275&URL_DO=DO_TOPIC&URL_SECTION=201.html]]
<<<
Education for sustainable development is a) teaching basic reading, writing and arithmetic skills to all, b) convincing people why they should not pollute, c) developing knowledge, skills and programmes that will end poverty for good, d) learning how to make decisions for the good of the whole community? Answer: all of the above.
<<<
Type “sustainable development” into an internet search engine and you’ll get more than 60 million hits. Search under “education for sustainable development” and you’ll find close to 600,000 entries.

Clearly, sustainable development means a great many things to a great many people. There is no easy definition, nor is there one central issue or regional perspective around which world opinion has easily coalesced. Rather, we have a constantly evolving laundry list of issues – climate change, water resource management, gender inequality, biodiversity, urban decay, sustainable consumption, poverty reduction and genetically-modified food – to name a few.

Developing and middle-income countries are struggling with different issues and challenges than developed countries. And while many would agree that the present course of action is unsustainable, there is lack of clear consensus on what to do next.

And this makes the task of educating for sustainable development all the more complicated. “It forces us to struggle with values and our value systems,” sums up Mary Joy Pigozzi, Director for the Promotion of Quality Education at UNESCO, which is the lead agency for the UN Decade of Education for Sustainable Development (DESD).
!!A complex progress of change
“Sustainable development must be more than just a slogan,” insists UNESCO Director-General Koïchiro Matsuura. “It must be a concrete reality for all of us – individuals, organizations, governments – in all of our daily decisions and actions.”

Launched internationally on 1 March 2005, the DESD takes the broadest possible approach to conceptualizing sustainable development as a complex process of change heavily reliant upon local contexts, needs and priorities. It builds upon a concept first articulated in the 1987 UN report, [[Our Common Future|http://www.un-documents.net/wecd-ocf.htm]]: “Sustainable development is meeting the needs of the present without compromising the ability of future generations to meet their own needs.”

Education for Sustainable Development (ESD) therefore is viewed as more than just simply environmental education, encompassing learning about human rights and conflict resolution, good governance, economics, the arts and culture as well. It is a multi-disciplinary and dynamic approach to educational reform, one that offers people at all stages of life and in all learning contexts – both formal and non-formal – the opportunity to learn the lifestyles and values necessary to create a sustainable future.

“ESD must go beyond the frontiers generally set by current educational and learning practices,” says Aline Bory-Adams of UNESCO Paris. She adds, “one of the central challenges of the Decade is how to translate this complex vision into textbooks, curricula, teaching and learning methods and national education policies.”
!!Towards a new kind of learning
“The problem is you are dealing with different assumptions, in different disciplines,” says Natarajan Ishwaran, Director of Ecological and Earth Sciences at UNESCO. “People differ in their understandings of sustainable development, knowledge and education.” Ishwaran is responsible for the Man and the Biosphere (MAB) programme, which has been trying to encourage people from different disciplines to collaborate, under the hypothesis that such interdisciplinary co-operation is essential to attain DESD goals.

In the future, Ishwaran hopes the UNESCO Biosphere Reserves, under the MAB programme will become “learning laboratories” for the Decade, putting special emphasis on converting reality-based learning into educational tools and converting context specific case studies into curriculum resources.
Moreover, he thinks experiential learning is key to the success of ESD. “You can’t just talk only about principals and concepts. You have to talk from real life experience and practice.”
!!Action plans and strategies
As partnerships are formed between educators, NGOs, community activists and policy-makers and as a growing body of knowledge develops to give real-world form to the abstract notion of ESD, the greatest promise of the Decade is that a new paradigm of education for sustainable development will take hold.

“The Decade invites us to celebrate our achievements to date,” adds Wynn Calder, Associate Director of the USA-based University Leaders for a Sustainable Future. “And it calls us on to look forward ten years, to envision what we hope to achieve, and to create a strategy for getting there.”

Now celebrating its first anniversary, the DESD has been so far about deliberations at the international, regional and national level to formulate action plans and strategies.

The final version of the [[International Implementation Scheme|International Implementation Scheme - UNESCO]], approved by UNESCO’s Executive Board last September, sets out a broad framework for all partners to contribute to the Decade. It provides overall guidance and shows why, how, when and where the enormous range of partners can develop their contributions.

Meanwhile, the equally challenging work of fostering links with the Decade’s activities and other UN initiatives like the Millennium Development Goals, Literacy Decade and Education for All, as well as with UN agencies, is also getting off the ground. Examples of concrete activities include a joint UNEP-UNESCO project spearheaded by UNESCO’s Nairobi office to expand environmental research and training at African universities and by the UNEP-Tongji office to expand post-graduate degrees and scholarships in Chinese universities.
!!Localizing the approach
The broad and varied response to the DESD is most evident at the regional and national level in nearly all regions and the 40 countries that have formally launched the Decade.

The Europe and North America region was the first to officially adopt its strategy shortly after the UN launch in March 2005. Now the region is focused on developing indicators to measure the effectiveness of the implementation of its strategy by the end of 2006. This is, in fact, seen as a critical component in the overall success of the DESD and it is hoped that this attempt, along with the efforts of other regions to formulate their own measures of success, will form the basis of the next generation of thinking about ESD.

The Asia and the Pacific region, has also contributed significantly to the start of the Decade by conducting an in-depth analysis of the ESD efforts of every country and sub-region in its constituency. UNESCO Bangkok’s Situational Analysis gives an excellent glimpse into both the challenges and opportunities facing many countries in this part of the world.

One trend clearly emerges. While all of the countries in the region have incorporated Environmental Education (EE) into their curriculum to some extent, there is very little implementation or even basic understanding of the emerging concept of ESD. In the Pacific, South Asia, and Central Asia, the survey notes that many practitioners, especially those who are not in the environmental field, mistakenly think that EE and ESD hold the same meaning and use the terms interchangeably. Southeast Asian countries, such as Viet Nam, understand ESD as the pre-eminent challenge of the 21st century and are beginning to think creatively about how to incorporate these practices into their formal and non-formal education systems.
!!Institutionalizing commitment
This underscores the necessity for understanding and leadership amongst national governments and officials from a variety of ministries – not just environmental departments.

According to Derek Elias, who coordinates UNESCO’s ESD activities in the Asia Pacific region, Iran, Japan, New Zealand and Viet Nam are amongst the countries taking the lead at developing ESD at the national level. For example, Iran developed a charter on the Sustainable Development of the Earthquake Stricken City of Bam. “These countries are really helping us in our task of raising awareness,” he says.

Awareness also helps with fundraising. Calder, who recently wrote an in-depth status report on global DESD efforts, says it is clear that the Decade is helping to direct more funding toward ESD. “That’s part of its power,” he says. This is especially important since the UN offers very little funding for DESD-related activities.

Germany, notes Calder, has perhaps gone the furthest in establishing and funding a National Committee for the Decade to bring together a cross-section of experts and institutions including the Education, Development and Environment Ministries, parliamentarians and the States, NGOs, the media and private enterprise. “There is enough interest in Germany amongst people who can actually make things happen. There is buy-in at the highest level,” he says. Much more common is the approach taken by such countries as Japan and the United States that rely on private, voluntary networking organizations to promote DESD.
!!Re-orienting existing programmes
More countries are taking the route that China has chosen by expanding current environmental education programmes and experimenting with ESD pilot projects. China’s “Education for Environment, Population and Sustainable Development” programme was initially launched in 1998 and aimed at providing interdisciplinary and moral education to teenagers. Now reaching 3,000 schools and over one million students, it is being expanded to incorporate primary school students as well. Organizers note the success of the pilot project is changing national educators’ minds about ESD and say it could serve as the basis for a national curriculum initiative.

The “Sandwatch Initiative” is another interesting example of how environmental education programmes are being re-formatted and re-energized to adapt to the new priorities. This programme was initially started in the Caribbean with the aim of incorporating information about the problems facing surrounding coastal environments and fragile marine habitats into traditional classes such as biology, woodworking, literature, mathematics, information technology and drama. This successful programme is now being adapted for use in other island nations in the Pacific and Indian Oceans.
!!Teaching values
Perhaps most importantly, the Decade has also inspired local action. One of many examples is in South Africa where the first Youth Environmental Symposium for the City of Cape Town brought together students of different backgrounds from twenty-one schools to discuss sustainable living.

This project, as well as the many other community-based projects inspired by the principles of ESD, is serving as a building block for the future of the movement. “This is about establishing ownership of ESD as broadly as possible. It is about reinforcing each other’s positive contributions,” says Derek Elias who takes every opportunity he can to remind activists in his region that, “you are part of a larger groundswell, you are not standing alone.”

The bottom line is that for the Decade to be successful, people must make sense of it in their own terms. “Educating for Sustainable Development is not another lofty, unattainable notion,” comments Pigozzi. “It’s a necessity”, she says.

Or as one schoolgirl from New Zealand put it simply when asked to help create a play celebrating the launch of the Decade in her country: “It’s about making the good things last longer.” 
* [[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/]]
** [[Climate Change 2007: Summary for Policymakers]] - [[www.climate-change-two.net/ar4-spm/|http://www.climate-change-two.net/ar4-spm/]]
** [[Climate Change 2007: Working Group II: Impacts & adaptation]] - [[www.climate-change-two.net/ar4-wg2-spm/|http://www.climate-change-two.net/ar4-wg2-spm/]]
** [[The Wealth of Networks: How Social Production Transforms Markets and Freedom]] - [[www.climate-change-two.net/wealth-of-networks|http://www.climate-change-two.net/wealth-of-networks/]]
** [[Economics of Climate Change: The Stern Review]] - [[www.climate-change-two.net/stern-review/|http://www.climate-changetwo.net/stern-review/]]
** [[Rescuing a Planet Under Stress and a Civilization in Trouble: Plan B 2.1 (beta)]] - [[www.climate-change-two.net/plan-b/|http://www.climate-change-two.net/plan-b/]]
** [[La Perla Garden: A creative commons learning environment for community biodiversity]] - [[www.climate-change-two.net/garden/|http://www.climate-change-two.net/garden/]]
* [[TiddlyWikiPerfect: An emerging hybrid information species]] - [[www.tiddlywikiperfect.net/|http://www.tiddlywikiperfect.net/]]
<<tiddler "DPI/NGO Workshop">> [[edit contents|DPI/NGO Workshop]]
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]], [[B'nai B'rith]]
!!!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 and Communications Sub-Committee]]
** [[Robert Pollard]], [[Information Habitat: Where Information Lives]]
* [[Alternative Education Sub-Committee]]
** [[Moses Williams]]
/***
|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
//}}}
***/
 
//{{{
//  WebSnapr - Preview Bubble Javascript
//  Written by Juan Xavier Larrea
//  Adapted for TW by Saq Imtiaz
// requires [[this image|bg.png]]

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

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

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

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

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

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

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

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

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

Faye developed a prototype Science Seekers program as an after-school program for Middle School students at the Rotary Learning Lab in East Harlem; she has worked with student-led initiatives Peace in Public Places and Pumped up for Peace, which is featured on the U.N.'s Cyberschoolbus web site. Faye has served on the New York City Task Force for the ~Gandhi-King Season of Nonviolence.
/***
|''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.
***/

|Effect|To get|Type this|h
|BoldText|''Bold''|{{{''Bold''}}}|
|UnderlinedText|__Underline__|{{{__Underline__}}}|
|ItalicText|//Italic//|{{{//Italic//}}}|
|SuperScript|e^^2πi^^ = 1|{{{e^^2πi^^ = 1}}}|
|SubScript|a~~ij~~ = - a~~ji~~|{{{a~~ij~~ = - a~~ji~~}}}|
|StrikeThrough|--Strikethrough--|{{{--Strikethrough--}}}|
|HiddenText|/%hidden comments%/|{{{/%hidden comments%/}}}|
|HighlightedText|@@highlight@@|{{{@@highlight@@}}}|
|StyledText|@@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 also [[Formatting Tiddlers]]
''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
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>>

In addition, if you wil be posting this TiddlyWiki on the Web, you will want to edit the following tiddlers:
* SiteUrl - to identify the web address of the page
* MarkupPreHead - to include HTML tags to be read by search engines
<html>
<iframe style="background-color:#ffffff; border-color:#ffffff; border:none;" width="100%" height="400" frameborder="0" scrolling="yes" src="http://www.un-documents.net/search.html" title="UN Documents search">
</iframe> </html>
@@font-size:90%;''Note'': [[Click here to view this page in a separate browser tab or window|http://www.un-documents.net/search.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/search.htm"s"
	src = " *url* "
	title = "Google site search of www.un-documents.net">
</iframe>
</html>
[img[http://habitat.igc.org/la-perla-garden/gr-200x157-2006.05.08.jpg]]
''Habitat II'', formally the ''Second United Nations Conference on Human Settlements'', was held in Istanbul, Turkey in June 1996, with the twin themes of "Adequate shelter for all" and "Sustainable cities", twenty years after the original ''Habitat'' Conference was held in Vancouver, Canada. At ''Habitat II'', Governments agreed to the following documents:
* [[Istanbul Declaration on Human Settlements]]
* [[The Habitat Agenda]]
This set of tiddlers allows you to edit and manage the title and sub-title of the page, and key information about the page;  Others are easily read by browsers in particular, information that it is valuable to make available to Internet search engines. The first of these two are visible to the viewer - in the browser window, and in the banner at the top of the page.the others are read by search engines and browsers, but are only visible to the reader if she or he looks at the source code af a web page
* [[Site Title|SiteTitle]] - appears at the head of the page banner, and the 
* [[Site Subtitle|SiteSubtitle]] - included in the browser bar and search results and at the bottom right of the site banner
* [[MarkupPreHead]] - this contents of this shadowed tiddler contains the concatenation of information - each of them representing a "meta tag". Ideally, this tiddler would use the syntax- using the syntax {{{<<tiddler "Site Keywords">>}}}, etc.
** [[Site Keywords]] - a list of comma-separated keywords, also a first read for search engines
** [[Site Description]] - a concise description of the site, stored in the HEAD of the HTML page, and is generally one of the first items to be read by intelligent search engines. As a rule, it should not be more that 256 characters, or about 40 words.
>>>Each of these tiddlers contains what is known as a "meta tag", e,.g.
<<<
>> {{{<meta name="description" content="Climate Change 2.0: A convenient TiddlyPerfect response to Truth in a rapidly-changing Creative Commons, Open Source Climate">}}} 
<<<
** [[Site Owner]] - this tiddler records the ownership of the page itself: not to be confused with the various copyrights associated with the page, included in the tiddler that follows
** [[Site Copyrights]] - this tiddler provides attribution to the rights holders 
** [[Site Url|SiteUrl]] - this tiddler conytains the Url of the site, e.g. http:///climate-change-two.net
** [[Site Splash Screen]] - this page contains the HTML tags for the Splash Screen that appears when the page is opened,
>> //Technical note//: In a TiddlyPerfect site, this tiddler would be automatically generated by the DataPerfect engine from its sub-tiddlers - using the syntax:
>>> {{{<<tiddler "Site Keywords">>}}},
>>> {{{<<tiddler "Site Decription">>}}}, etc.
>> under TiddlyWiki, this does not work, as the contents of the tiddler would not be readable by the browser, not having been translated - wikified - until the relevant javascript in TiddlyWiki had been loaded.
/*{{{*/
.header {
position: relative;
}

.header a:hover {
	background: transparent;
}

.headerShadow {
	position: relative;
	padding: 1.5em 0em 1em 1em;
	left: -1px;
	top: -1px;
}

.headerForeground {
position: absolute;
padding: 1.5em 0em 1em 1em;
left: 0px;
top: 0px;
}
.headerShadow .left,
.headerShadow .right {
    position: absolute;
    top:14px;
}

.headerShadow .left {
    left: 0;
}

.headerShadow .right {
    right: 0;
}

.headerForeground .left,
.headerForeground .right {
    display: none;
}
.header .siteTitle {
font-size: 2.5em;
margin-right:3px;
}
.siteTitle {
color: #ffffff;
}
.header .siteSubtitle {
font-size: 1.1em;
margin-right:3px;
}
.siteSubtitle {
color: #ffffff;
}
.headerShadow .siteSubtitle {
    display: none;
margin-right:3px;
}

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

});

//}}}

!! The Future in our Hands: Addressing the Leadership Challenge of Climate Change
''September 24, 2007''
http://www.un.org/climatechange/2007highlevel/
<<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:"la perla garden" tag:"picasa album" >><<renameButton a 'Create a new photo album'>>
<<newTiddler text:{{store.getTiddlerText("youtube template","")}} title:"New YouTube" tag:"la perla garden" tag:youtube>><<renameButton y 'Create a new youtube tiddler'>>
<<saveChanges>><<renameButton s 'Save TiddlyWiki'>>
/*{{{*/
#hoverMenu .imgLink, #hoverMenu .imgLink:hover {border:none; padding:0px; float:right; margin-bottom:2px; margin-top:0px;}
#hoverMenu .button, #hoverMenu .tiddlyLink {border:none; font-weight:bold; background:[[ColorPalette::SecondaryDark]]; color:[[ColorPalette::SecondaryLight]]; padding:0 5px; float:right; margin-bottom:3px;}
#hoverMenu .button:hover, #hoverMenu .tiddlyLink:hover {font-weight:bold; border:none; color:[[ColorPalette::SecondaryDark]]; background:[[ColorPalette::SecondaryMid]]; padding:0 5px; float:right; margin-bottom:4px;}
#hoverMenu .button {width:100%; text-align:center}#hoverMenu { position:absolute; width:7px;}
@media print #hoverMenu, #hoverMenu .imgLink, #hoverMenu .imgLink:hover, #hoverMenu .button, #hoverMenu .tiddlyLink, #hoverMenu .button:hover, #hoverMenu .tiddlyLink:hover, #hoverMenu .button {display: none;}

/*}}}*/
''Third Assessment Review'' of the [[Intergovernmental Panel on Climate Change]] - [[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 ''<html>&lt;&lt;importTiddlers&gt;&gt;</html>'' built-in macro that allows you to import tiddlers from other TiddlyWiki pages.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	if (!cmi.inbound) return -1;

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

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

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

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

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

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

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

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

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

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

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

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

<<tiddler ImportedTiddlers>>'
On Saturday, June 12, 2010 12:56:22 PM, YourName imported 1 tiddler from
[[file:///t:/la-perla-garden.net/index.htm|file:///t:/la-perla-garden.net/index.htm]]:
<<<
#[[PrintStyles]] - added
<<<

----
On Tuesday, January 26, 2010 9:37:23 PM, Robert imported 5 tiddlers from
[[file:///t:/climatechange3.net/onewebday/index.htm|file:///t:/climatechange3.net/onewebday/index.htm]]:
<<<
#[[Creative Commons]] - added
#[[Creative Commons Attribution Non-Commercial Share-Alike Licence 3.0]] - added
#[[Earth Day]] - added
#[[Google site search - www.un-documents.net]] - added
#[[OneWebDay]] - added
<<<

----
On Tuesday, January 26, 2010 3:24:52 PM, Robert imported 1 tiddler from
[[http://www.tiddlytools.com/|http://www.tiddlytools.com/]]:
<<<
#[[TagCloudPlugin]] - replaces TagCloudPlugin - 1/26/2010 15:19:13 by Robert
<<<

----
On Tuesday, January 26, 2010 3:23:38 PM, Robert imported 5 tiddlers from
[[file:///t:/climatechange3.net/onewebday/index.htm|file:///t:/climatechange3.net/onewebday/index.htm]]:
<<<
#[[Climate Change 3 Group @ Wiser Earth]] - added
#[[Climate Change 3.0]] - added
#[[Climate Change 3.0 - Elements]] - added
#[[Climate Change 3.0 News Feeds]] - added
#[[Climate Change 3.0 family of web sites]] - added
<<<

----
On Tuesday, January 26, 2010 3:14:57 PM, Robert imported 1 tiddler from
[[file:///t:/climatechange3.net/onewebday/index.htm|file:///t:/climatechange3.net/onewebday/index.htm]]:
<<<
#[[udhr@60+]] - added
<<<

----
On Tuesday, January 26, 2010 3:11:16 PM, Robert imported 2 tiddlers from
[[http://tiddlywiki.abego-software.de|http://tiddlywiki.abego-software.de]]:
<<<
#[[BSD open source license]] - added
#[[BSD open source license (abego Software)]] - added
<<<

----
On Tuesday, January 26, 2010 3:08:47 PM, Robert imported 1 tiddler from
[[http://tiddlywiki.abego-software.de|http://tiddlywiki.abego-software.de]]:
<<<
#[[DataTiddlerExamples]] - added
<<<

----
On Tuesday, January 26, 2010 3:07:35 PM, Robert imported 1 tiddler from
[[http://tiddlywiki.abego-software.de|http://tiddlywiki.abego-software.de]]:
<<<
#[[DataTiddlerPlugin]] - added
<<<

----
On Tuesday, January 26, 2010 11:16:40 AM, Robert imported 1 tiddler from
[[file:///t:/la-perla-garden.net/index.htm|file:///t:/la-perla-garden.net/index.htm]]:
<<<
#[[HoverMenu]] - replaces HoverMenu - 6/8/2008 14:07:00 by Webster
<<<

----
On Tuesday, January 26, 2010 11:14:51 AM, Robert imported 1 tiddler from
[[file:///t:/la-perla-garden.net/index.htm|file:///t:/la-perla-garden.net/index.htm]]:
<<<
#[[iframe template]] - replaces iframe template - 9/14/2007 17:04:00 by Webster
<<<

----
On Sunday, January 17, 2010 11:50:18 PM, Robert imported 10 tiddlers from
[[file:///t:/climatechange3.net/index.htm|file:///t:/climatechange3.net/index.htm]]:
<<<
#[[Subscribe to Climate Change 3.0 news feeds]] - added
#[[Earth2Tech web site]] - added
#[[Peace Cubes web site]] - added
#[[WiserEarth web site]] - added
#[[Ning web site]] - added
#[[OneWebDay - September 22]] - added
#[[OneWebDay NYC web site]] - added
#[[International Day of Peace - September 21]] - added
#[[Software Freedom Day - September 19]] - added
#[[EcoGeek]] - added
<<<

----
On Sunday, December 20, 2009 6:29:10 PM, Robert imported 1 tiddler from
[[file:///t:/climatechange3.net/index.htm|file:///t:/climatechange3.net/index.htm]]:
<<<
#[[Administrative Menu]] - replaces Administrative Menu - 2/16/2008 09:46:00 by Webster
<<<

----
On Sunday, December 20, 2009 6:28:24 PM, Robert imported 2 tiddlers from
[[file:///t:/climatechange3.net/index.htm|file:///t:/climatechange3.net/index.htm]]:
<<<
#[[DisableWikiLinksPlugin]] - replaces DisableWikiLinksPlugin - 3/12/2007 11:15:00 by YourName
#[[ExportTiddlersPlugin]] - replaces ExportTiddlersPlugin - 12/4/2007 16:46:00 by ELSDesignStudios
<<<

----
On Sunday, December 20, 2009 6:27:19 PM, Robert imported 11 tiddlers from
[[file:///t:/climatechange3.net/index.htm|file:///t:/climatechange3.net/index.htm]]:
<<<
#[[BreadcrumbsPlugin]] - added
#[[Config Tweaks]] - replaces Config Tweaks - 1/30/2008 20:17:00 by Webster
#[[ExternalLinkPreviewPlugin]] - added
#[[ForEachTiddlerPlugin]] - added
#[[ImageSizePlugin]] - added
#[[ImportTiddlersPlugin]] - replaces ImportTiddlersPlugin - 12/31/2007 19:53:00 by Webster
#[[NestedSlidersPlugin]] - replaces NestedSlidersPlugin - 1/29/2008 11:10:00 by Webster
#[[NewDocumentPlugin]] - replaces NewDocumentPlugin - 1/8/2008 20:15:00 by ELSDesignStudios
#[[OpenHereMacro]] - added
#[[TiddlerTweakerPlugin]] - added
#[[TwHelpSearchPlugin]] - replaces TwHelpSearchPlugin - 12/6/2007 10:30:00 by Webster
<<<

----
On Tuesday, January 13, 2009 8:34:29 PM, Webster imported 1 tiddler from
[[file:///T:/ngo-education.net/index-2008.02.16-230.htm|file:///T:/ngo-education.net/index-2008.02.16-230.htm]]:
<<<
#[[HeaderStyles]] - added
<<<

----
On Tuesday, January 13, 2009 8:32:40 PM, Webster imported 14 tiddlers from
[[file:///T:/ngo-education.net/index-2008.02.16-230.htm|file:///T:/ngo-education.net/index-2008.02.16-230.htm]]:
<<<
#[[Templates & Stylesheets]] - replaces Templates & Stylesheets - 1/12/2008 13:14:00 by Webster
#[[Administrative Menu]] - replaces Administrative Menu - 1/30/2008 09:22:00 by Webster
#[[Setup Menu]] - replaces Setup Menu - 1/22/2008 12:36:00 by Webster
#[[CustomStyleSheetColors]] - added
#[[StyleSheetColors]] - replaces StyleSheetColors - 3/11/2007 17:46:00 by Information Habitat
#[[ToggleTagPlugin]] - replaces ToggleTagPlugin - 10/19/2006 21:57:00 by MonkeyPirate
#[[StyleSheet]] - replaces StyleSheet - 12/30/2007 22:50:00 by Webster
#[[ModifiedStyleSheetColors]] - added
#[[Download this template]] - added
#[[Site Splash Screen]] - replaces Site Splash Screen - 3/16/2007 17:21:00 by Information Habitat
#[[Creative Commons licenses]] - added
#[[Creative Commons Attribution Non-Commercial Share-Alike License]] - added
#[[Colour Palette]] - replaces Colour Palette - 2/25/2007 14:15:00 by Information Habitat
#[[10 December 2007 Launch of a Year-Long Celebration of the 60th Anniversary of the UDHR]] - added
<<<

----
On Tuesday, January 13, 2009 8:20:50 PM, Webster imported 2 tiddlers 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 20:08:00 by Webster
#[[HoverMenuStyles]] - added
<<<

----
On Wednesday, January 30, 2008 12:40:39 PM, Webster imported 2 tiddlers from
[[T:\ngo-education.net\human-rights\index.htm|T:\ngo-education.net\human-rights\index.htm]]:
<<<
#[[The Right to Education]] - added
#[[Universal Declaration of Human Rights]] - added
<<<

----
On Wednesday, January 30, 2008 12:25:08 PM, Webster imported 1 tiddler from
[[T:\ngo-education.net\un-docs\index.htm|T:\ngo-education.net\un-docs\index.htm]]:
<<<
#[[Administrative Menu]] - replaces Administrative Menu - 1/23/2008 16:50:00 by Webster
<<<

----
On Wednesday, January 30, 2008 12:17:45 PM, Webster imported 1 tiddler from
[[T:\ngo-education.net\un-docs\index.htm|T:\ngo-education.net\un-docs\index.htm]]:
<<<
#[[Administrative Menu]] - replaces Administrative Menu - 1/23/2008 16:50:00 by Webster
<<<

----
On Wednesday, January 30, 2008 12:04:11 PM, Webster imported 1 tiddler from
[[T:\ngo-education.net\un-docs\index.htm|T:\ngo-education.net\un-docs\index.htm]]:
<<<
#[[ImportTiddlersPlugin]] - replaces ImportTiddlersPlugin - 12/7/2007 10:27:00 by Webster
<<<

----
On Tuesday, January 29, 2008 04:26:21 PM, Webster imported 1 tiddler from
[[T:\ngo-education.net\un-docs\index.htm|T:\ngo-education.net\un-docs\index.htm]]:
<<<
#[[Administrative Menu]] - replaces Administrative Menu - 12/7/2007 10:59:00 by Webster
<<<

----
On Saturday, January 26, 2008 09:17:50 PM, Webster imported 3 tiddlers from
[[http://www.tiddlytools.com|http://www.tiddlytools.com]]:
<<<
#[[NestedSlidersPlugin]] - replaces NestedSlidersPlugin - 7/28/2006 11:18:00 by ELSDesignStudios
#[[NestedSlidersPluginInfo]] - added
#[[NewDocumentPlugin]] - replaces NewDocumentPlugin - 12/4/2007 18:35:00 by ELSDesignStudios
<<<

----
On Saturday, January 12, 2008 2:17:21 PM, Webster imported 1 tiddler from
[[T:\climate-change-two.net\ar4-spm\index.htm|T:\climate-change-two.net\ar4-spm\index.htm]]:
<<<
#[[Templates & Stylesheets]] - replaces Templates & Stylesheets - 3/13/2007 12:00:00 by Information Habitat
<<<

----
On Wednesday, December 12, 2007 9:33:09 PM, Webster imported 1 tiddler from
[[T:\climate-change-two.net\index.htm|T:\climate-change-two.net\index.htm]]:
<<<
#[[TiddlyWikiPerfect: An emerging hybrid information species]] - added
<<<

----
On Wednesday, December 12, 2007 9:25:41 PM, Webster imported 1 tiddler from
[[T:\ngo-framework.net\information-ecology\index.htm|T:\ngo-framework.net\information-ecology\index.htm]]:
<<<
#[[TiddlyPerfect: An emerging hybrid information species]] - added
<<<

----
On Wednesday, December 12, 2007 9:13:10 PM, Webster imported 5 tiddlers from
[[T:\ngo-framework.net\information-ecology\index.htm|T:\ngo-framework.net\information-ecology\index.htm]]:
<<<
#[[View ColorPalette]] - replaces View ColorPalette - 9/14/2007 16:28:00 by Webster
#[[ViewTemplate]] - replaces ViewTemplate - 12/7/2007 10:49:00 by Webster
#[[NewDocumentPlugin]] - added
#[[ExportTiddlersPlugin]] - added
#[[PaletteViewMacro]] - added
<<<

----
On Friday, December 07, 2007 11:24:11 AM, Webster imported 1 tiddler from
[[T:\climate-change-two.net\index.htm|T:\climate-change-two.net\index.htm]]:
<<<
#[[Peace Caucus: The Wild Cards in Climate Change]] - added
<<<

----
On Friday, December 07, 2007 11:12:14 AM, Webster imported 1 tiddler from
[[T:\climate-change-two.net\index.htm|T:\climate-change-two.net\index.htm]]:
<<<
#[[Climate Change Impacts, Adaptation and Vulnerability]] - skipped after asking
#[[Education, Youth & Technology for Sustainable Development]] - added
#[[Rescuing a Planet Under Stress and a Civilization in Trouble: Plan B 2.1 (beta)]] - skipped after asking
<<<

----
On Friday, December 07, 2007 10:49:59 AM, Webster imported 1 tiddler from
[[T:\un-documents.net\ipcc-ar4\spm.htm|T:\un-documents.net\ipcc-ar4\spm.htm]]:
<<<
#[[HoverMenu]] - replaces HoverMenu - 3/12/2007 08:48:00 by YourName
<<<

----
On Friday, December 07, 2007 10:47:32 AM, Webster imported 3 tiddlers from
[[T:\un-documents.net\ipcc-ar4\spm.htm|T:\un-documents.net\ipcc-ar4\spm.htm]]:
<<<
#[[Recent Tiddlers]] - added
#[[Refresh macro]] - added
#[[ViewTemplate]] - replaces ViewTemplate - 3/8/2007 01:10:00 by Information Habitat
<<<

----
On 2007.10.08 - Monday, October 08 8:06:22 PM, Webster imported 1 tiddler from
[[T:\peacecaucus.net\index.htm|T:\peacecaucus.net\index.htm]]:
<<<
#[[Optional Protocol to the International Covenant on Civil and Political Rights]] - added
<<<

----
On 2007.10.08 - Monday, October 08 8:05:14 PM, Webster imported 5 tiddlers from
[[T:\peacecaucus.net\index.htm|T:\peacecaucus.net\index.htm]]:
<<<
#[[International Covenant on Civil and Political Rights]] - added
#[[International Covenant on Economic, Social and Cultural Rights]] - added
#[[International Covenants on Human Rights]] - added
#[[Sydney APEC Leaders' Declaration on Climate Change, Energy Security and Clean Development]] - added
#[[Sydney APEC Leaders' Declaration on Climate Change, Energy Security and Clean Development: Annex]] - added
<<<

----
On 2007.10.08 - Monday, October 08 5:54:25 PM, Webster imported 1 tiddler from
[[T:\peacecaucus.net\index.htm|T:\peacecaucus.net\index.htm]]:
<<<
#[[60th Annual DPI/NGO Conference Declaration:  Climate Change Threats - An NGO Framework for Action]] - added
<<<

----
On 2007.10.08 - Monday, October 08 5:52:02 PM, Webster imported 1 tiddler from
[[T:\peacecaucus.net\index.htm|T:\peacecaucus.net\index.htm]]:
<<<
#[[Formatting Tiddlers]] - replaces Formatting Tiddlers - 9/14/2007 14:16:00 by Webster
<<<

----
On 2007.09.14 - Friday, September 14 5:53:37 PM, Webster imported 1 tiddler from
[[T:\peacecaucus.net\INDEX.HTM|T:\peacecaucus.net\INDEX.HTM]]:
<<<
#[[Declaration on Climate Change and Gender Equality]] - added
<<<

----
On 2007.09.14 - Friday, September 14 5:30:09 PM, Webster imported 28 tiddlers from
[[http://www.ngo-education.net/|http://www.ngo-education.net/]]:
<<<
#[[60th Annual DPI/NGO Conference]] - added
#[[Acknowledgment: Software contributions]] - added
#[[Climate Change 2.0]] - replaces Climate Change 2.0 - 2/26/2007 23:32:00 by Information Habitat
#[[Climate Change 2.0 - Elements]] - added
#[[Conference Of NGOs]] - replaces Conference Of NGOs - 3/12/2007 11:15:00 by YourName
#[[Convention on Biological Diversity]] - added
#[[Earth Summit Agreements]] - added
#[[Formatting Tiddlers]] - replaces Formatting Tiddlers - 2/12/2007 14:09:00 by Information Habitat
#[[Habitat II]] - replaces Habitat II - 9/3/2007 17:31:00 by Webster
#[[High-Level Event of Climate Change, September 24, 2007]] - added
#[[Information Habitat: Where Information Lives]] - replaces Information Habitat: Where Information Lives - 11/6/2006 10:35:00 by GrandpaRuh
#[[Information and Communications Sub-Committee]] - replaces Information and Communications Sub-Committee - 3/19/2007 13:17:00 by Information Habitat
#[[Istanbul Declaration on Human Settlements]] - added
#[[NGO Committee on Education]] - replaces NGO Committee on Education - 4/26/2007 02:33:00 by Webster
#[[NGO/DPI Executive Committee]] - 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
#[[Sustainable Development]] - replaces Sustainable Development - 3/13/2007 18:34:00 by Information Habitat
#[[Templates for Light & Colour Cubes]] - replaces Templates for Light & Colour Cubes - 4/7/2007 13:28:00 by Webster
#[[The Habitat Agenda]] - added
#[[UN Climate Change Conference in Bali]] - added
#[[UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] - replaces UN Documents Cooperation Circles: Gathering a Body of Global Agreements - 3/14/2007 13:02:00 by Information Habitat
#[[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 Forum on Forests]] - added
#[[United Nations Framework Convention on Climate Change]] - added
#[[View ColorPalette]] - added
#[[iframe template]] - added
<<<

----
On 2007.04.26 - Thursday, April 26 2:36:03 AM, Webster imported 1 tiddler from
[[T:\climate-change-two.net\index.htm|T:\climate-change-two.net\index.htm]]:
<<<
#[[Climate Change Impacts, Adaptation and Vulnerability]] - added
<<<

----
On 2007.04.25 - Wednesday, April 25 10:58:08 AM, Webster imported 1 tiddler from
[[T:\tiddlytools.com\index.htm|T:\tiddlytools.com\index.htm]]:
<<<
#[[TagCloudPlugin]] - added
<<<

----
On 2007.04.24 - Tuesday, April 24 6:24:30 PM, Webster imported 1 tiddler from
[[T:\climate-change-two.net\index.htm|T:\climate-change-two.net\index.htm]]:
<<<
#[[Welcome]] - added
<<<

----
On 2007.04.24 - Tuesday, April 24 6:21:45 PM, Webster imported 2 tiddlers from
[[T:\climate-change-two.net\index.htm|T:\climate-change-two.net\index.htm]]:
<<<
#[[Templates for Light & Colour Cubes]] - added
#[[Twin Light & Colour Cubes]] - added
<<<

----
On 2007.04.24 - Tuesday, April 24 6:18:47 PM, Webster imported 3 tiddlers from
[[T:\climate-change-two.net\index.htm|T:\climate-change-two.net\index.htm]]:
<<<
#[[Images]] - added
#[[Information Ecology: NGO Recommendations]] - skipped after asking
#[[Information and Communications Sub-Committee]] - added
#[[Setup Menu]] - added
<<<

----
On 2007.03.11 - Sunday, March 11 8:26:15 PM, Information Habitat imported 3 tiddlers from
[[T:\ngo-education.net\climate-change\index.htm|T:\ngo-education.net\climate-change\index.htm]]:
<<<
#[[Climate Change]] - added
#[[Included TiddlyWikis]] - added
#[[SideBarTabs]] - added
<<<

----
On 2007.03.11 - Sunday, March 11 8:07:16 PM, Information Habitat imported 2 tiddlers from
[[T:\ngo-education.net\climate-change\index.htm|T:\ngo-education.net\climate-change\index.htm]]:
<<<
#[[DataPerfect]] - skipped after asking
#[[IncludeList]] - added
#[[include]] - added
<<<

----
On 2007.03.08 - Thursday, March 08 7:08:32 AM, Information Habitat imported 2 tiddlers from
[[T:\ngo-education.net\workshop\index.htm|T:\ngo-education.net\workshop\index.htm]]:
<<<
#[[Armenian Assembly of America]] - added
#[[Earthwatch Institute]] - added
<<<

----
On 2007.03.08 - Thursday, March 08 2:48:41 AM, Information Habitat imported 12 tiddlers from
[[T:\ngo-education.net\challenge\index.htm|T:\ngo-education.net\challenge\index.htm]]:
<<<
#[[Educating for tomorrow’s world]] - added
#[[Formatting Text]] - added
#[[Formatting Tiddlers]] - added
#[[Headings & Outlines]] - added
#[[Imported Tiddlers]] - added
#[[International Implementation Scheme - UNESCO]] - added
#[[Plugin Macros]] - added
#[[Software Contributions]] - added
#[[Templates & Stylesheets]] - added
#[[Tiddlers]] - added
#[[TiddlyPerfect]] - added
#[[Vision & Definition of ESD]] - skipped after asking
#[[Youth Challenge]] - added
<<<

----
On 2007.03.07 - Wednesday, March 07 11:04:21 PM, Information Habitat imported 1 tiddler from
[[T:\ngo-education.net\climate-change\index.htm|T:\ngo-education.net\climate-change\index.htm]]:
<<<
#[[StyleSheetColors]] - replaces StyleSheetColors - 1/20/2007 18:45:00 by Robert Pollard
<<<

----
On 2007.03.07 - Wednesday, March 07 6:27:55 AM, Information Habitat imported 14 tiddlers from
[[T:\ngo-education.net\challenge\index.htm|T:\ngo-education.net\challenge\index.htm]]:
<<<
#[[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
#[[Declaration of the Tbilisi Intergovernmental Conference on Environmental Education]] - added
#[[Declaration of the United Nations Conference on the Human Environment]] - added
#[[Key Documents on Education for Sustainable Development]] - added
#[[Millennium Development Goals]] - added
#[[StyleSheetColors]] - replaces StyleSheetColors - 2/25/2007 15:26:00 by Information Habitat
#[[StyleSheetLayout]] - replaces StyleSheetLayout - 12/26/2006 14:38:00 by Grandpa Ruh
#[[Sustainable Development]] - added
#[[The Talloires Declaration]] - added
#[[UN Decade of Education for Sustainable Development]] - replaces UN Decade of Education for Sustainable Development - 11/6/2006 10:22:00 by GrandpaRuh
#[[User Options]] - replaces User Options - 12/26/2006 11:26:00 by Grandpa Ruh
#[[Vision & Definition of ESD]] - added
<<<
/***
|''Name:''|abego.IncludePlugin|
|''Version:''|1.0.0 (2007-02-08)|
|''Type:''|plugin|
|''Source:''|http://tiddlywiki.abego-software.de/#IncludePlugin|
|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|
|''Documentation:''|[[IncludePlugin Documentation|http://tiddlywiki.abego-software.de/#%5B%5BIncludePlugin%20Documentation%5D%5D]]|
|''Community:''|([[del.icio.us|http://del.icio.us/post?url=http://tiddlywiki.abego-software.de/index.html%23IncludePlugin]]) ([[Support|http://groups.google.com/group/TiddlyWiki]])|
|''Copyright:''|&copy; 2007 [[abego Software|http://www.abego-software.de]]|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''~CoreVersion:''|2.1.3|
|''Browser:''|Firefox 1.5.0.9 or better; Internet Explorer 6.0|
***/
/***
This plugin's source code is compressed (and hidden). Use this [[link|http://tiddlywiki.abego-software.de/archive/IncludePlugin/Plugin-Include-src.1.0.0.js]] to get the readable source code.
***/
///%
if(!window.abego){window.abego={};}var invokeLater=function(_1,_2,_3){return abego.invokeLater?abego.invokeLater(_1,_2,_3):setTimeout(_1,_2);};abego.loadFile=function(_4,_5,_6){var _7=function(_8,_9,_a,_b,_c){return _8?_5(_a,_b,_9):_5(undefined,_b,_9,"Error loading %0".format([_b]));};if(_4.search(/^((http(s)?)|(file)):/)!=0){if(_4.search(/^((.\:\\)|(\\\\)|(\/))/)==0){_4="file://"+_4;}else{var _d=document.location.toString();var i=_d.lastIndexOf("/");_4=_d.substr(0,i+1)+_4;}_4=_4.replace(/\\/mg,"/");}loadRemoteFile(_4,_7,_6);};abego.loadTiddlyWikiStore=function(_f,_10,_11,_12){var _13=function(_14,_15){if(_12){_12(_14,"abego.loadTiddlyWikiStore",_15,_f,_11);}};var _16=function(_17,_18){var _19=_18.indexOf(startSaveArea);var _1a=_18.indexOf("<!--POST-BODY-END--"+">");var _1b=_18.lastIndexOf(endSaveArea,_1a==-1?_18.length:_1a);if((_19==-1)||(_1b==-1)){return config.messages.invalidFileError.format([_f]);}var _1c="<html><body>"+_18.substring(_19,_1b+endSaveArea.length)+"</body></html>";var _1d=document.createElement("iframe");_1d.style.display="none";document.body.appendChild(_1d);var doc=_1d.document;if(_1d.contentDocument){doc=_1d.contentDocument;}else{if(_1d.contentWindow){doc=_1d.contentWindow.document;}}doc.open();doc.writeln(_1c);doc.close();var _1f=doc.getElementById("storeArea");_17.loadFromDiv(_1f,"store");_1d.parentNode.removeChild(_1d);return null;};var _20=function(_21){_13("Error when loading %0".format([_f]),"Failed");_10(undefined,_f,_11,_21);return _21;};var _22=function(_23){_13("Loaded %0".format([_f]),"Done");_10(_23,_f,_11);return null;};var _24=function(_25,_26,_27,_28){if(_25===undefined){_20(_28);return;}_13("Processing %0".format([_f]),"Processing");var _29=config.messages.invalidFileError;config.messages.invalidFileError="The file '%0' does not appear to be a valid TiddlyWiki file";try{var _2a=new TiddlyWiki();var _2b=_16(_2a,_25);if(_2b){_20(_2b);}else{_22(_2a);}}catch(ex){_20(exceptionText(ex));}finally{config.messages.invalidFileError=_29;}};_13("Start loading %0".format([_f]),"Started");abego.loadFile(_f,_24,_11);};(function(){if(abego.TiddlyWikiIncluder){return;}var _2c="waiting";var _2d="loading";var _2e=1000;var _2f=-200;var _30=-100;var _31=-300;var _32;var _33=[];var _34={};var _35=[];var _36;var _37=[];var _38;var _39=function(){if(_32===undefined){_32=config.options.chkUseInclude===undefined||config.options.chkUseInclude;}return _32;};var _3a=function(url){return "No include specified for %0".format([url]);};var _3c=function(){var _3d=_35;_35=[];if(_3d.length){for(var i=0;i<_37.length;i++){_37[i](_3d);}}};var _3f;var _40=function(){if(_36!==undefined){clearInterval(_36);}_3f=0;var _41=function(){abego.TiddlyWikiIncluder.sendProgress("","","Done");};_36=setInterval(function(){_3f++;if(_3f<=10){return;}clearInterval(_36);_36=undefined;abego.TiddlyWikiIncluder.sendProgress("Refreshing...","","");refreshDisplay();invokeLater(_41,0,_2f);},0);};var _42=function(_43){var _44;for(var i=0;i<_33.length;i++){var _46=abego.TiddlyWikiIncluder.getStore(_33[i]);if(_46&&(_44=_43(_46,_33[i]))){return _44;}}};var _47=function(){if(!window.store){return invokeLater(_47,100);}var _48=store.fetchTiddler;store.fetchTiddler=function(_49){var t=_48.apply(this,arguments);if(t){return t;}if(config.shadowTiddlers[_49]!==undefined){return undefined;}if(_49==config.macros.newTiddler.title){return undefined;}return _42(function(_4b,url){var t=_4b.fetchTiddler(_49);if(t){t.includeURL=url;}return t;});};if(_33.length){_40();}};var _4e=function(){if(!window.store){return invokeLater(_4e,100);}var _4f=store.getTiddlerText("IncludeList");if(_4f){wikify(_4f,document.createElement("div"));}};var _50=function(_51){var _52=function(){var _53=store.forEachTiddler;var _54=function(_55){var _56={};var _57;var _58=function(_59,_5a){if(_56[_59]){return;}_56[_59]=1;if(_57){_5a.includeURL=_57;}_55.apply(this,arguments);};_53.call(store,_58);for(var n in config.shadowTiddlers){_56[n]=1;}_56[config.macros.newTiddler.title]=1;_42(function(_5c,url){_57=url;_5c.forEachTiddler(_58);});};store.forEachTiddler=_54;try{return _51.apply(this,arguments);}finally{store.forEachTiddler=_53;}};return _52;};var _5e=function(_5f,_60){return _5f[_60]=_50(_5f[_60]);};abego.TiddlyWikiIncluder={};abego.TiddlyWikiIncluder.setProgressFunction=function(_61){_38=_61;};abego.TiddlyWikiIncluder.getProgressFunction=function(_62){return _38;};abego.TiddlyWikiIncluder.sendProgress=function(_63,_64,_65){if(_38){_38.apply(this,arguments);}};abego.TiddlyWikiIncluder.onError=function(url,_67){displayMessage("Error when including '%0':\n%1".format([url,_67]));};abego.TiddlyWikiIncluder.hasPendingIncludes=function(){for(var i=0;i<_33.length;i++){var _69=abego.TiddlyWikiIncluder.getState(_33[i]);if(_69==_2c||_69==_2d){return true;}}return false;};abego.TiddlyWikiIncluder.getIncludes=function(){return _33.slice();};abego.TiddlyWikiIncluder.getState=function(url){var s=_34[url];if(!s){return _3a(url);}return typeof s=="string"?s:null;};abego.TiddlyWikiIncluder.getStore=function(url){var s=_34[url];if(!s){return _3a(url);}return s instanceof TiddlyWiki?s:null;};abego.TiddlyWikiIncluder.include=function(url,_6f){if(!_39()||_34[url]){return;}var _70=this;_33.push(url);_34[url]=_2c;var _71=function(_72,_73,_74,_75){if(_72===undefined){_34[url]=_75;_70.onError(url,_75);return;}_34[url]=_72;_35.push(url);invokeLater(_3c);};var _76=function(){_34[url]=_2d;abego.loadTiddlyWikiStore(url,_71,null,_38);};if(_6f){invokeLater(_76,_6f);}else{_76();}};abego.TiddlyWikiIncluder.forReallyEachTiddler=function(_77){var _78=function(){store.forEachTiddler(_77);};_50(_78).call(store);};abego.TiddlyWikiIncluder.getFunctionUsingForReallyEachTiddler=_50;abego.TiddlyWikiIncluder.useForReallyEachTiddler=_5e;abego.TiddlyWikiIncluder.addListener=function(_79){_37.push(_79);};abego.TiddlyWikiIncluder.addListener(_40);if(config.options.chkUseInclude===undefined){config.options.chkUseInclude=true;}config.shadowTiddlers.AdvancedOptions+="\n<<option chkUseInclude>> Include ~TiddlyWikis (IncludeList | IncludeState | [[help|http://tiddlywiki.abego-software.de/#%5B%5BIncludePlugin%20Documentation%5D%5D]])\n^^(Reload this ~TiddlyWiki to make changes become effective)^^";config.shadowTiddlers.IncludeState="<<includeState>>";var _7a=function(e,_7c,_7d){if(!anim||!abego.ShowAnimation){e.style.display=_7c?"block":"none";return;}anim.startAnimating(new abego.ShowAnimation(e,_7c,_7d));};abego.TiddlyWikiIncluder.getDefaultProgressFunction=function(){setStylesheet(".includeProgressState{\n"+"background-color:#FFCC00;\n"+"position:absolute;\n"+"right:0.2em;\n"+"top:0.2em;\n"+"width:7em;\n"+"padding-left:0.2em;\n"+"padding-right:0.2em\n"+"}\n","abegoInclude");var _7e=function(){var e=document.createElement("div");e.className="includeProgressState";e.style.display="none";document.body.appendChild(e);return e;};var _80=_7e();var _81=function(_82){removeChildren(_80);createTiddlyText(_80,_82);_7a(_80,true,0);};var _83=function(){invokeLater(function(){_7a(_80,false,_2e);},100,_30);};var _84=function(_85,_86,_87,url,_89){if(_87=="Done"||_87=="Failed"){_83();return;}if(_86=="abego.loadTiddlyWikiStore"){_3f=0;if(_87=="Processing"){_81("Including...");}}else{_81(_85);}};return _84;};abego.TiddlyWikiIncluder.setProgressFunction(abego.TiddlyWikiIncluder.getDefaultProgressFunction());config.macros.include={};config.macros.include.handler=function(_8a,_8b,_8c,_8d,_8e,_8f){_8c=_8e.parseParams("url",null,true,false,true);var _90=parseInt(getParam(_8c,"delay","0"));var _91=_8c[0]["url"];var _92=getFlag(_8c,"hide",false);if(!_92){createTiddlyText(createTiddlyElement(_8a,"code"),_8d.source.substring(_8d.matchStart,_8d.nextMatch));}for(var i=0;_91&&i<_91.length;i++){abego.TiddlyWikiIncluder.include(_91[i],_90);}};config.macros.includeState={};config.macros.includeState.handler=function(_94,_95,_96,_97,_98,_99){var _9a=function(){var s="";var _9c=abego.TiddlyWikiIncluder.getIncludes();if(!_9c.length){return "{{noIncludes{\nNo includes or 'include' is disabled (see AdvancedOptions)\n}}}\n";}s+="|!Address|!State|\n";for(var i=0;i<_9c.length;i++){var inc=_9c[i];s+="|{{{"+inc+"}}}|";var t=abego.TiddlyWikiIncluder.getState(inc);s+=t?"{{{"+t+"}}}":"included";s+="|\n";}s+="|includeState|k\n";return s;};var _a0=function(){removeChildren(div);wikify(_9a(),div);if(abego.TiddlyWikiIncluder.hasPendingIncludes()){invokeLater(_a0,500,_31);}};var div=createTiddlyElement(_94,"div");invokeLater(_a0,0,_31);};var _a2=Tiddler.prototype.isReadOnly;Tiddler.prototype.isReadOnly=function(){return _a2.apply(this,arguments)||this.isIncluded();};Tiddler.prototype.isIncluded=function(){return this.includeURL!=undefined;};Tiddler.prototype.getIncludeURL=function(){return this.includeURL;};var _a3={getMissingLinks:1,getOrphans:1,getTags:1,reverseLookup:1,updateTiddlers:1};for(var n in _a3){_5e(TiddlyWiki.prototype,n);}var _a5=function(){if(abego.IntelliTagger){_5e(abego.IntelliTagger,"assistTagging");}};_47();invokeLater(_4e,100);invokeLater(_a5,100);})();
//%/
Though the use of the {{{<<include>>}}} macro from the IncludePlugin, tiddlers from the following sites are directly accessible from within this TiddlyWiki page.

<<include "workshop/index.htm">>
<<include "stern-review/index.htm">>
<<include "challenge/index.htm">>
<<include "plan-b/index.htm">>
<<include "http://www.un-documents.net/un-docs.htm">>
<<includeState>>
''Information ecology'' is a holistic life science for a knowledge-based universe - based on the concept of information and information systems as evolving life forms whose behaviour can best be understood by considering the nature and dynamics of information ecosystems in conjunction with an appreciation of the fundamental nature and properties of information and of a knowledge-based universe and the premise of the existence of 'one light in all of creation'.
!!Properties of information
Information has:
* has zero mass
* has zero physical size 
* takes virtually zero time to travel
* enables common access to properties of the whole
!!Principles of information
* value is enhanced by intelligent organization
* flow is enhanced by intelligent networks
* management is enhanced by intelligent protocols
* understanding is enhanced by intelligent practice 
From the perspective of economics, the virtually zero marginal cost of information has profound significance, and, in conjunction with the progressive evolution of information and communications technology has given rise to the accelerating development and adoption of open source software, the emergence of a rapidly-growing information commons in the broader context of a cascading global transition to a knowledge-based universe. 

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

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

For more information on Information Habitat, visit http://www.information-habitat.net
The principal focus of the ''Information and Communications ~Sub-Committee'' of the [[NGO Committee on Education]] has been the development and implementation of a [[Creative Commons]], [[Free and Open Source]] collaborative learning framework designed to mobilize the powers and freedoms of an evolving knowledge-based universe
!! Membership
''Chair''
* [[Robert Pollard]], [[Information Habitat: Where Information Lives]]
''Members''
* [[Daphne Cohen]], [[International Humanist and Ethical Union]]
* [[Joe Friendly]], [[Truth for a Change]]
* [[Avy Gonzales]], [[Tutor.com]]
* [[Judith Lantigua]], [[Information Habitat: Where Information Lives]]
* [[Kathleen Quain]], [[Foundation for Health and the Environment]]
* [[Charles Vasquez]], [[Pace University]]
''Ex-officio Members''
* [[Faye Feller|Faye C. Feller]], [[National Association of Women for the Arts]]
* [[Diane Paravazian]], [[World Association of Girl Guides & Girl Scouts]]
''Strategic Partners''
* [[Dolly Nielsen]], [[Metro City Media ]]
* [[Marc Wishengrad]], [[Healing World Foundation]]
''Senior Advisors''
* [[Barbara Ann O'Leary]], [[Authenticity]]
* [[Anthony Judge]], [[Union of International Associations]] (retired)
!! Web sites
* [[NGO Committee on Education]] - [[www.ngo-education.net/|http://www.ngo-education.net/]]
** [[Education, Youth & Technology for Sustainable Development]] - [[www.ngo-education.net/workshop/|http://www.ngo-education.net/workshop/]]
* [[UN Documents Cooperation Circles: Gathering a Body of Global Agreements]] - [[www.un-documents.net/|http://www.un-documents.net/]]
** [[Our Common Future]] - [[www.un-documents.net/wced-ocf.htm|http://www.un-documents.net/wced-ocf.htm]]
* [[Climate Change 2.0]] - [[www.climate-change-two.net/|http://www.climate-change-two.net/]]
** [[The Wealth of Networks: How Social Production Transforms Markets and Freedom]] - [[www.climate-change-two.net/wealth-of-networks/|http://www.climate-change-two.net/wealth-of-networks/]]
** [[Economics of Climate Change: The Stern Review]] - [[www.climate-change-two.net/stern-review/|http://www.climate-changetwo.net/stern-review/]]
** [[Rescuing a Planet Under Stress and a Civilization in Trouble: Plan B 2.1 (beta)]] - [[www.climate-change-two.net/plan-b/|http://www.climate-change-two.net/plan-b/]]
** [[Climate Change Summer]] - [[www.climate-change-summer.net/|http://www.climate-change-summer.net/]]
** [[Peace Caucus: The Wild Cards in Climate Change]] - [[www.peacecaucus.net/|http://www.peacecaucus.net/]]
* [[TiddlyWikiPerfect: An emerging hybrid information species]] - [[www.tiddlywikiperfect.net/|http://www.tiddlywikiperfect.net/]]
* [[Gandhi-King Season for Nonviolence]] - [[www.gandhi-king-season.net/|http://www.gandhi-king-season.net/]]
* [[Seasons of Peace Cooperation Circles]] - [[www.seasons-of-peace.net/|http://www.seasons-of-peace.net/]]
* [[Twin Light & Colour Cubes]] - [[www.peace-cubes.net/|http://www.peace-cubes.net/]]
!! ''E-mail lists''
** [[ngo-education@googlegroups.com]]
** [[climate-chsnge-two@googlegroups.com]]
** [[ngo-networking@googlegroups.com]]
** [[information-ecology@yahoogroups.com]]
> 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