<!--{{{-->
<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>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<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>>
. <<tabs txtFavourite "Facts" "Facts about Caucasus War" Facts "Background" "Background about Caucasus War" Background "Breakaway" "Breakaway territories" [[Breakaway territories]] "Panoram" "Panoram" Panoram "Energy" "Energy cold war" [[Energy cold war]] "Cyberwar" "First Cyberwar" Cyberwar "Ploy" "Election ploy" [[Election ploy]] "Cold War" "New Cold War?" [["New Cold War"]] "Multipolar" "Multipolar world" [[Multipolar world]] "Globalization" "Globalization fate" [[Globalization fate]] >>
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
[[agenda]]
/***
|''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:''|© 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.
***/
/***
|Name|FramedLinksPlugin|
|Source|http://www.TiddlyTools.com/#FramedLinksPlugin|
|Version|1.1.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|createExternalLink|
|Options|##Configuration|
|Description|clicking an external link opens an IFRAME following the link instead of opening a new tab/window|
This plugin causes clicks on external links to be rendered into inline frames (~IFRAMEs) instead of opening them in new browser tabs/windows.
!!!!!Usage
<<<
Just place an external link into your tiddler content using standard TiddlyWiki syntax. When the {{{chkFramedLinks}}} checkbox is enabled or a tiddler is tagged with 'framedLinks' (see Configuration section, below), an IFRAME will be created dynamically whenever you click the external link. Clicking on the link again removes the IFRAME. You can hold down a modifier key (shift, control, or alt) while clicking a specific link to ''temporarily'' bypass the plugin-enhanced IFRAME handling and use the standard link handling behavior for that link.
<<<
!!!!!Configuration
<<<
<<option chkFramedLinks>> display inline frames for all external links
{{{usage: <<option chkFramedLinks>>}}}
<<option chkFramedLinksTag>> display inline frames for external links in tiddlers tagged with: <<option txtFramedLinksTag>>
{{{usage: <<option chkFramedLinksTag>> and <<option txtFramedLinksTag>>}}}
IFRAME size (CSS units: %, em, px, cm, in) - width: <<option txtFrameWidth>> height: <<option txtFrameHeight>>
{{{usage: <<option txtFrameWidth>> <<option txtFrameHeight>>}}}
<<<
!!!!!Examples
<<<
Try these links:
*http://www.TiddlyWiki.com
*http://www.TiddlyTools.com
*http://groups.google.com/group/TiddlyWiki/topics
<<<
!!!!!Revisions
<<<
2008.09.13 [1.1.0] added support to selectively enable embedded IFRAMEs if the containing tiddler is tagged with 'framedLinks'
2007.11.29 [1.0.5] added slider animation and improved CSS handling for IFRAME height/width to maximize display area
2007.11.29 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.FramedLinksPlugin= {major: 1, minor: 1, revision: 0, date: new Date(2008,9,13)};
var co=config.options; // abbreviation
if (co.chkFramedLinks==undefined) co.chkFramedLinks=false;
if (co.chkFramedLinksTag==undefined) co.chkFramedLinksTag=true;
if (co.txtFramedLinksTag==undefined) co.txtFramedLinksTag="framedLinks";
if (co.txtFrameWidth==undefined) co.txtFrameWidth="100%";
if (co.txtFrameHeight==undefined) co.txtFrameHeight="80%";
window.framedLinks_createExternalLink=createExternalLink;
window.createExternalLink=function(place,url)
{
var link=this.framedLinks_createExternalLink.apply(this,arguments);
link.onclick=function(ev) { var e=ev?ev:window.event;
var co=config.options; // abbreviation
var here=story.findContainingTiddler(this);
var enabled=co.chkFramedLinks || co.chkFramedLinksTag && here
&& store.getTiddler(here.getAttribute("tiddler")).isTagged(co.txtFramedLinksTag);
if (!enabled || e.ctrlKey || e.shiftKey || e.altKey) return; // BYPASS
var p=this.parentNode;
var f=this.nextSibling?this.nextSibling.firstChild:null; // get the IFRAME... maybe...
var w=co.txtFrameWidth; if (!w || !w.length) w="100%";
var h=co.txtFrameHeight; if (!h || !h.length) h="80%";
if (h.indexOf("%")) h=(findWindowHeight()*h.replace(/%/,"")/100)+"px"; // calc height as % of window
var showing=f && f.nodeName.toUpperCase()=="IFRAME"; // does IFRAME really exist?
var stretchCell=p.nodeName.toUpperCase()=="TD" && w.indexOf("%")!=-1 && w.replace(/%/,"")>=100;
if (!showing) { // create an iframe
link.style.display="block"; // force IFRAME onto line following link
if (stretchCell) { p.setAttribute("savedWidth",p.style.width); p.style.width="100%"; } // adjust TD so IFRAME stretches
var wrapper=createTiddlyElement(null,"span"); // wrapper for slider animation
wrapper.setAttribute("url",this.href); // for async loading of frame after animation completes
var f=createTiddlyElement(wrapper,"iframe"); // create IFRAME
f.style.backgroundColor="#fff"; f.style.width=w; f.style.height=h;
p.insertBefore(wrapper,this.nextSibling);
function loadURL(wrapper) { var f=wrapper.firstChild; var url=wrapper.getAttribute("url");
var d=f.contentDocument?f.contentDocument:(f.contentWindow?f.contentWindow.document:f.document);
d.open(); d.writeln("<html>connecting to "+url+"</html>"); d.close();
try { f.src=url; } // if the iframe can't handle the href
catch(e) { alert(e.description?e.description:e.toString()); } // ... then report the error
window.scrollTo(0,ensureVisible(wrapper));
}
if (!co.chkAnimate) loadURL(wrapper);
else {
var morph=new Slider(wrapper,true);
morph.callback=loadURL;
morph.properties.push({style: 'width', start: 0, end: 100, template: '%0%'});
anim.startAnimating(morph);
}
} else { // remove iframe
link.style.display="inline"; // restore link style
if (stretchCell) p.style.width=p.getAttribute("savedWidth"); // restore previous width of TD
if (!co.chkAnimate) p.removeChild(f.parentNode);
else {
var morph=new Slider(f.parentNode,false,false,"all");
morph.properties.push({style: 'width', start: 100, end: 0, template: '%0%'});
anim.startAnimating(morph);
}
}
e.cancelBubble=true; if (e.stopPropagation) e.stopPropagation(); return false;
}
return link;
}
//}}}
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>>
config.macros.gadget = {};
config.macros.gadget .handler = function(place,macroName,params, wikifier, paramString) {
var elem = createTiddlyElement(place,"iframe",null,"greeting","");
var p = paramString.parseParams(null, null, true);
elem.src= "http://www.gmodules.com/ig/ifr?url=" + params[0] + "&" + getParam(p,"prefs","");
elem.height = getParam(p,"height","310");
elem.width= getParam(p,"width","536");
elem.style.border= getParam(p,"border","1");
place.appendChild(elem);
};
<<include "nano.html">> <<include "city.html">> <<include "net.html">> <<include "art.html">> <<include "partner.html">> <<include "caucas.html">> <<include "http://laboratori.ws/proxy.php?url=http://www.nanowiki.info/">>
/***
|''Name:''|abego.IncludePlugin|
|''Version:''|1.0.1 (2007-04-30)|
|''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:''|© 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);},1);};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");}};var _a6=function(){if(config.macros.forEachTiddler){_5e(config.macros.forEachTiddler,"findTiddlers");}};_47();invokeLater(_4e,100);invokeLater(_a5,100);invokeLater(_a6,100);})();
//%/
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.3|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2008.06.11 [1.9.3] added $(...) function as 'shorthand' convenience syntax for document.getElementById()
2008.03.03 [1.9.2] corrected declaration of wikifyPlainText() for 'TW 2.1.x compatibility fallback' (fixes Safari "parse error")
2008.02.23 [1.9.1] in onclick function, use string instead of array for 'bufferedHTML' attribute on link element (fixes IE errors)
2008.02.21 [1.9.0] 'onclick' scripts now allow returned text (or document.write() calls) to be wikified into a span that immediately follows the onclick link. Also, added default 'return false' handling if no return value provided (prevents HREF from being triggered -- return TRUE to allow HREF to be processed). Thanks to Xavier Verges for suggestion and preliminary code.
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.inlineJavascript= {major: 1, minor: 9, revision: 3, date: new Date(2008,6,11)};
config.formatters.push( {
name: "inlineJavascript",
match: "\\<script",
lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?(?: key=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var src=lookaheadMatch[1];
var label=lookaheadMatch[2];
var tip=lookaheadMatch[3];
var key=lookaheadMatch[4];
var show=lookaheadMatch[5];
var code=lookaheadMatch[6];
if (src) { // load a script library
// make script tag, set src, add to body to execute, then remove for cleanup
var script = document.createElement("script"); script.src = src;
document.body.appendChild(script); document.body.removeChild(script);
}
if (code) { // there is script code
if (show) // show inline script code in tiddler output
wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
if (label) { // create a link to an 'onclick' script
// add a link, define click handler, save code in link (pass 'place'), set link attributes
var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
link.code="function _out(place){"+fixup+"\n};_out(this);"
link.tiddler=w.tiddler;
link.onclick=function(){
this.bufferedHTML="";
try{ var r=eval(this.code);
if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)
var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);
if(this.bufferedHTML.length)
s.innerHTML=this.bufferedHTML;
if((typeof(r)==="string")&&r.length) {
wikify(r,s,null,this.tiddler);
return false;
} else return r!==undefined?r:false;
} catch(e){alert(e.description||e.toString());return false;}
};
link.setAttribute("title",tip||"");
var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
link.setAttribute("href",URIcode);
link.style.cursor="pointer";
if (key) link.accessKey=key.substr(0,1); // single character only
}
else { // run inline script code
var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
var code="function _out(place){"+fixup+"\n};_out(w.output);"
try { var out=eval(code); } catch(e) { out=e.description?e.description:e.toString(); }
if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
}
}
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} )
//}}}
// // Backward-compatibility for TW2.1.x and earlier
//{{{
if (typeof(wikifyPlainText)=="undefined") window.wikifyPlainText=function(text,limit,tiddler) {
if(limit > 0) text = text.substr(0,limit);
var wikifier = new Wikifier(text,formatter,null,tiddler);
return wikifier.wikifyPlain();
}
//}}}
// // $(...) function: 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=="undefined") { // avoid redefinition
function $() {
var elements=new Array();
for (var i=0; i<arguments.length; i++) {
var element=arguments[i];
if (typeof element=='string') element=document.getElementById(element);
if (arguments.length==1) return element;
elements.push(element);
}
return elements;
}
}
//}}}
Analist-programmer in a financial institution (Caja de Barcelona, 1984-87). Management (technical, marketing, executive) in a computer related R+D corporation CTA-Aberon,1987-1995). Close colaboration with Apple in the introduction of desktop publishing and digital design in Spain. Specialized in communications (conectivity Mac-PC, emulation, local area networks, conectivity with mini and mainframes, isdn ...). Participation in the design and support of office network for Olimpic Games 92. During last ten years, contributor in traditional media (press, radioand tv). Translator and journalist for the specialised press (Acta Informática, European Mac, MacFormat, El Mac, suplement Nuevas Tecnologías of La Vanguardia, NetConexión, PC Plus ...). Devoted to the Internet since 1995. Internet Society member. Founder and director of NetConexión , first Spanish magazine on Internet culture (1995-96). Spain Comissioner in the Internet 1996 World Exposition . Participant in the 24 Hours in Cyberspace project. Consultant for a media group (Grupo Zeta, 1996). Writer in the colectif book «Internet» (1997). Member of expert's group in the project "E-commerce in the information society" (1998). Journalist for PC Plus magazine (1996-1999). Contributor to Intel Web Outfitter Service website (1999). Since 1998 contribute, as citizen and independent consultant, in the strategic plan for the cultural sector of Barcelona . In this context he wrote a report-proposal about the emerging culture -"Barcelona, city of digital culture. beta version"- and work as relater of new technologies commission for the Instituto de Cultura de Barcelona. In same line contribute with INTERARTS observatory of urban and regional cultural policies and Diputació de Barcelona (coordinator of roundtable «Tecnology and Arts» in the journeys International Challenges for the Cultural Sector of Barcelona; «The Digital Era as a Context for the Definition of Cultural Strategies» report in the Seminar "The planification as a strategy. Presentation and analysis of strategic cultural plans at local and regional levels" for Interacció '98 ; consultant for defining the digital competences of cultural managers into the Adapt-Format european project. 1999-2000). Collaborate with artists -like chillout artist Kiku Mistu, hypermedia and architecture straddle3 , independent filmakers festival L'Alternativa, audiovisual and new technologies festival VideA_00-. In 1999, member of the international panel of the Leonardo Digital Review, the first journal supporting artists who worked in the intersection of science, technology, and art.
<script show>(function(){var GBS_HOST = 'http://books.google.com/';var GBS_LANG = 'en';var aa=aa||{},j=this;var ba=".",ca="var ",da=function(a,b){var c=a.split(ba),d=j,e;!(c[0]in d)&&d.execScript&&d.execScript(ca+c[0]);while(c.length&&(e=c.shift()))if(!c.length&&k(b))d[e]=b;else d=d[e]?d[e]:(d[e]={})},ea=function(a,b){var c=a.split(ba),d=b||j;for(var e;e=c.shift();)if(d[e])d=d[e];else return null;return d},fa=function(){},ga="unimplemented abstract method",ha=function(){throw Error(ga);};var ia="object",n="number",ja="length",ka="array",p="function",la="null",na=function(a){var b=typeof a;
if(b==ia)if(a){if(typeof a.length==n&&typeof a.splice!="undefined"&&!ma(a,ja))return ka;if(typeof a.call!="undefined")return p}else return la;else if(b==p&&typeof a.call=="undefined")return ia;return b};if(Object.prototype.propertyIsEnumerable)var ma=function(a,b){return Object.prototype.propertyIsEnumerable.call(a,b)};else ma=function(a,b){if(b in a)for(var c in a)if(c==b&&Object.prototype.hasOwnProperty.call(a,b))return true;return false};var k=function(a){return typeof a!="undefined"};var q=function(a){return na(a)==
ka},oa=function(a){var b=na(a);return b==ka||b==ia&&typeof a.length==n},pa="string",r=function(a){return typeof a==pa};var qa=function(a){return na(a)==p},ra=function(a){var b=na(a);return b==ia||b==ka||b==p},sa="closure_hashCode_",ua=function(a){if(a.hasOwnProperty&&a.hasOwnProperty(sa)){var b=a.Sa;if(b)return b}a.Sa||(a.Sa=++ta);return a.Sa},ta=0,va=function(a){var b=na(a);if(b==ia||b==ka){if(a.clone)return a.clone();var c=b==ka?[]:{};for(var d in a)c[d]=va(a[d]);return c}return a},s=function(a,
b){var c=a.tc;if(arguments.length>2){var d=Array.prototype.slice.call(arguments,2);c&&d.unshift.apply(d,c);c=d}b=a.vc||b;a=a.uc||a;var e,f=b||j;e=c?function(){var g=Array.prototype.slice.call(arguments);g.unshift.apply(g,c);return a.apply(f,g)}:function(){return a.apply(f,arguments)};e.tc=c;e.vc=b;e.uc=a;return e},wa=function(a){var b=Array.prototype.slice.call(arguments,1);b.unshift(a,null);return s.apply(null,b)},xa=Date.now||function(){return(new Date).getTime()},ya="\\{\\$",za="\\}",Aa="gi",Ba=
function(a,b){var c=b||{};for(var d in c)a=a.replace(new RegExp(ya+d+za,Aa),c[d]);return a},Ca=function(a,b){da(a,b)},t=function(a,b){function c(){}c.prototype=b.prototype;a.o=b.prototype;a.prototype=new c;a.prototype.constructor=a};Function.prototype.partial=function(){var a=Array.prototype.slice.call(arguments);a.unshift(this,null);return s.apply(null,a)};var Da=function(a,b){this.x=k(a)?a:0;this.y=k(b)?b:0};Da.prototype.clone=function(){return new Da(this.x,this.y)};var Ea="(",Fa=", ",Ga=")";Da.prototype.toString=function(){return Ea+this.x+Fa+this.y+Ga};var u=function(a,b){this.width=a;this.height=b};u.prototype.clone=function(){return new u(this.width,this.height)};var Ha=" x ";u.prototype.toString=function(){return Ea+this.width+Ha+this.height+Ga};u.prototype.ceil=function(){this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};u.prototype.floor=function(){this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};u.prototype.round=function(){this.width=Math.round(this.width);this.height=Math.round(this.height);
return this};u.prototype.scale=function(a){this.width*=a;this.height*=a;return this};var Ia="$$$$",Ja=function(a){for(var b=1;b<arguments.length;b++){var c=String(arguments[b]).replace(/\$/g,Ia);a=a.replace(/\%s/,c)}return a};var w="",Ka=function(a){return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,w)};var La=/^[a-zA-Z0-9\-_.!~*'()]*$/,Ma=function(a){a=String(a);if(!La.test(a))return encodeURIComponent(a);return a},Na=" ",Oa=function(a){return decodeURIComponent(a.replace(/\+/g,Na))};var Pa="&",Qa="<",Ra=">",Sa=""",Ta="&",Ua="<",Va=">",Wa='"',bb=function(a,b){if(b)return a.replace(Xa,
Pa).replace(Ya,Qa).replace(Za,Ra).replace($a,Sa);else{if(!ab.test(a))return a;if(a.indexOf(Ta)!=-1)a=a.replace(Xa,Pa);if(a.indexOf(Ua)!=-1)a=a.replace(Ya,Qa);if(a.indexOf(Va)!=-1)a=a.replace(Za,Ra);if(a.indexOf(Wa)!=-1)a=a.replace($a,Sa);return a}},Xa=/&/g,Ya=/</g,Za=/>/g,$a=/\"/g,ab=/[&<>\"]/;var cb="(\\d*)(\\D*)",db="g",fb=function(a,b){var c=0,d=Ka(String(a)).split(ba),e=Ka(String(b)).split(ba),f=Math.max(d.length,e.length);for(var g=0;c==0&&g<f;g++){var h=d[g]||w,i=e[g]||w,l=new RegExp(cb,db),
m=new RegExp(cb,db);do{var o=l.exec(h)||[w,w,w],v=m.exec(i)||[w,w,w];if(o[0].length==0&&v[0].length==0)break;var N=o[1].length==0?0:parseInt(o[1],10),od=v[1].length==0?0:parseInt(v[1],10);c=eb(N,od)||eb(o[2].length==0,v[2].length==0)||eb(o[2],v[2])}while(c==0)}return c},eb=function(a,b){if(a<b)return-1;else if(a>b)return 1;return 0};xa();var gb,hb,ib,jb,kb,lb,mb,nb,ob,pb,qb,rb="Opera",sb="MSIE",tb="WebKit",ub="Mobile",vb="Gecko",wb="Camino",xb="Mac",yb="Win",zb="Linux",Ab=function(){var a=false,b=false,c=false,d=false,e=false,f=false,g=false,h=false,i=false,l=w;if(j.navigator){var m=j.navigator,o=m.userAgent;a=o.indexOf(rb)==0;b=!a&&o.indexOf(sb)!=-1;c=!a&&o.indexOf(tb)!=-1;i=c&&o.indexOf(ub)!=-1;d=!a&&!c&&m.product==vb;e=d&&m.vendor==wb;var v,N;if(a)v=j.opera.version();else{if(d)N=/rv\:([^\);]+)(\)|;)/;else if(b)N=/MSIE\s+([^\);]+)(\)|;)/;
else if(c)N=/WebKit\/(\S+)/;if(N){N.test(o);v=RegExp.$1}}l=m.platform||w;f=l.indexOf(xb)!=-1;g=l.indexOf(yb)!=-1;h=l.indexOf(zb)!=-1}gb=a;hb=b;ib=d;jb=e;kb=c;lb=i;mb=v;nb=l;ob=f;pb=g;qb=h};Ab();var Bb=gb,x=hb,Cb=ib,Db=kb,Eb=lb;var Fb=function(a,b,c){if(a.indexOf)return a.indexOf(b,c);if(Array.indexOf)return Array.indexOf(a,b,c);var d=c==null?0:c<0?Math.max(0,a.length+c):c;for(var e=d;e<a.length;e++)if(e in a&&a[e]===b)return e;return-1},Gb=function(a,b,c){if(a.forEach)a.forEach(b,c);else if(Array.forEach)Array.forEach(a,b,c);else{var d=a.length,e=r(a)?a.split(w):a;for(var f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)}},Hb=function(a,b,c){if(a.some)return a.some(b,c);if(Array.some)return Array.some(a,b,c);var d=a.length,e=r(a)?
a.split(w):a;for(var f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return true;return false},Ib=function(a,b){if(a.contains)return a.contains(b);return Fb(a,b)>-1};var Jb=function(a,b){var c=Fb(a,b),d;if(d=c!=-1)Array.prototype.splice.call(a,c,1).length==1;return d};var Kb=function(a){if(q(a))return a.concat();else{var b=[];for(var c=0,d=a.length;c<d;c++)b[c]=a[c];return b}},Lb=function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];q(c)?a.push.apply(a,c):a.push(c)}},Mb=function(){var a=[];
for(var b=0;b<arguments.length;b++){var c=arguments[b];q(c)?a.push.apply(a,Mb.apply(null,c)):a.push(c)}return a};var Nb=function(a,b,c){for(var d in a)b.call(c,a[d],d,a)},Ob=function(a){var b=[],c=0;for(var d in a)b[c++]=a[d];return b},Pb=function(a){var b=[],c=0;for(var d in a)b[c++]=d;return b};var Qb=function(a,b){var c;if(c=b in a)delete a[b];return c},Rb=function(a,b,c){if(b in a)return a[b];return c},Sb=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Tb=function(a){var b,c;for(var d=1;d<arguments.length;d++){c=arguments[d];for(b in c)a[b]=c[b];
for(var e=0;e<Sb.length;e++){b=Sb[e];if(Object.prototype.hasOwnProperty.call(c,b))a[b]=c[b]}}},Ub="Uneven number of arguments",Vb=function(){var a=arguments.length;if(a==1&&q(arguments[0]))return Vb.apply(null,arguments[0]);if(a%2)throw Error(Ub);var b={};for(var c=0;c<a;c+=2)b[arguments[c]]=arguments[c+1];return b},Wb=function(){var a=arguments.length;if(a==1&&q(arguments[0]))return Wb.apply(null,arguments[0]);var b={};for(var c=0;c<a;c++)b[arguments[c]]=true;return b};var Xb,Yb=function(a){var b=a.className;return b&&typeof b.split==p?b.split(Na):[]},Zb=function(a){var b=Yb(a),c=1;for(var d=1;d<arguments.length;d++)if(Ib(b,arguments[d]))c&=0;else{b.push(arguments[d]);c&=1}a.className=b.join(Na);return Boolean(c)};var $b=function(){Xb||(Xb=new y);return Xb},bc=function(a){return a?new y(ac(a)):$b()};var cc="style",dc="class",ec="for",gc=function(a,b){Nb(b,function(c,d){if(d==cc)a.style.cssText=c;else if(d==dc)a.className=c;else if(d==ec)a.htmlFor=c;else if(d in fc)a.setAttribute(fc[d],c);else a[d]=c})},fc={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",rowspan:"rowSpan",valign:"vAlign",height:"height",width:"width",usemap:"useMap",frameborder:"frameBorder"},hc="500",ic="CSS1Compat",jc=
"9.50",kc=function(a){var b=a||j||window,c=b.document;if(Db&&!(fb(mb,hc)>=0)&&!Eb){if(typeof b.innerHeight=="undefined")b=window;var d=b.innerHeight,e=b.document.documentElement.scrollHeight;if(b==b.top)if(e<d)d-=15;return new u(b.innerWidth,d)}var f=bc(c),g=f.Mb()==ic&&(!Bb||Bb&&fb(mb,jc)>=0)?c.documentElement:c.body;return new u(g.clientWidth,g.clientHeight)};var lc=function(a){return bc(a).Ob()},mc=function(){var a=$b();return a.k.apply(a,arguments)},z=function(a){return $b().createElement(a)},
A=function(a,b){a.appendChild(b)},B=function(a){return a&&a.parentNode?a.parentNode.removeChild(a):null};var nc="521",oc=Db&&fb(mb,nc)<=0,pc=function(a,b){if(typeof a.contains!="undefined"&&!oc&&b.nodeType==1)return a==b||a.contains(b);if(typeof a.compareDocumentPosition!="undefined")return a==b||Boolean(a.compareDocumentPosition(b)&16);while(b&&a!=b)b=b.parentNode;return b==a},ac=function(a){return a.nodeType==9?a:a.ownerDocument||a.document},qc=function(a,b,c,d){if(a!=null)for(var e=0,f;f=a.childNodes[e];e++){if(b(f)){c.push(f);
if(d)return}qc(f,b,c,d)}},rc={SCRIPT:1,STYLE:1,HEAD:1,IFRAME:1,OBJECT:1},sc={IMG:Na,BR:"\n"},tc=function(a,b,c){if(!(a.nodeName in rc))if(a.nodeType==3)c?b.push(String(a.nodeValue).replace(/(\r\n|\r|\n)/g,w)):b.push(a.nodeValue);else if(a.nodeName in sc)b.push(sc[a.nodeName]);else{var d=a.firstChild;while(d){tc(d,b,c);d=d.nextSibling}}},uc=function(a){if(a&&typeof a.length==n)if(ra(a))return typeof a.item==p||typeof a.item==pa;else if(qa(a))return typeof a.item==p;return false},y=function(a){this.d=
a||j.document||document};y.prototype.j=function(a){return r(a)?this.d.getElementById(a):a};var vc=' name="',wc='">';y.prototype.k=function(a,b){if(x&&b&&b.name)a=Ua+a+vc+bb(b.name)+wc;var c=this.createElement(a);b&&gc(c,b);if(arguments.length>2){function d(g){if(g)this.appendChild(c,r(g)?this.createTextNode(g):g)}for(var e=2;e<arguments.length;e++){var f=arguments[e];oa(f)&&!(ra(f)&&f.nodeType>0)?Gb(uc(f)?Kb(f):f,d,this):d.call(this,f)}}return c};y.prototype.createElement=function(a){return this.d.createElement(a)};
y.prototype.createTextNode=function(a){return this.d.createTextNode(a)};var C="div",xc="position:absolute;width:0;height:0;width:1",yc="1px",zc="BackCompat";y.prototype.Mb=function(){if(this.d.compatMode)return this.d.compatMode;if(Db){var a=this.k(C,{style:xc}),b=a.style.width==yc?zc:ic;return this.d.compatMode=b}return zc};var Ac="script",Bc="document.parentWindow=window";y.prototype.Ob=function(){var a=this.d;if(a.parentWindow)return a.parentWindow;if(Db&&!(fb(mb,hc)>=0)&&!Eb){var b=a.createElement(Ac);
b.innerHTML=Bc;var c=a.documentElement;c.appendChild(b);c.removeChild(b);return a.parentWindow}return a.defaultView};y.prototype.ka=function(){var a=this.d,b,c;if(!Db&&a.compatMode==ic){b=a.documentElement.scrollLeft;c=a.documentElement.scrollTop}else{b=a.body.scrollLeft;c=a.body.scrollTop}return new Da(b,c)};y.prototype.appendChild=A;y.prototype.removeNode=B;y.prototype.contains=pc;var Cc="1.9a",Dc=Cb&&!(fb(mb,Cc)>=0),Ec="role",Fc=function(a,b){if(Cb){a.setAttribute(Ec,b);a.roleName=b}},Gc="http://www.w3.org/2005/07/aaa",Hc="aria-",Ic=function(a,b,c){if(Cb)Dc?a.setAttributeNS(Gc,b,c):a.setAttribute(Hc+b,c)};var D=function(){};D.prototype.Za=false;D.prototype.dispose=function(){if(!this.Za){this.a();this.Za=true}};D.prototype.a=function(){};var E=function(a,b){D.call(this);this.Yb=b;this.Q=[];this.Fb(a)};t(E,D);E.prototype.xa=null;E.prototype.za=null;E.prototype.ca=function(a){this.xa=a};E.prototype.sb=function(a){this.za=a};E.prototype.n=function(){if(this.Q.length)return this.Q.pop();return this.Wa()};E.prototype.L=function(a){this.Q.length<this.Yb?this.Q.push(a):this.Ya(a)};var Jc="[goog.structs.SimplePool] Initial cannot be greater than max";E.prototype.Fb=function(a){if(a>this.Yb)throw Error(Jc);for(var b=0;b<a;b++)this.Q.push(this.Wa())};
E.prototype.Wa=function(){return this.xa?this.xa():{}};E.prototype.Ya=function(a){if(this.za)this.za(a);else if(qa(a.dispose))a.dispose();else for(var b in a)delete a[b]};E.prototype.a=function(){E.o.a.call(this);var a=this.Q;while(a.length)this.Ya(a.pop());delete this.Q};var F=function(a,b){this.type=a;this.target=b;this.currentTarget=this.target};t(F,D);F.prototype.a=function(){delete this.type;delete this.target;delete this.currentTarget};F.prototype.D=false;F.prototype.T=true;F.prototype.stopPropagation=function(){this.D=true};F.prototype.preventDefault=function(){this.T=false};var G=function(a,b){a&&this.init(a,b)};t(G,F);G.prototype.type=null;G.prototype.target=null;G.prototype.currentTarget=null;G.prototype.relatedTarget=null;G.prototype.offsetX=0;G.prototype.offsetY=0;G.prototype.clientX=0;G.prototype.clientY=0;G.prototype.screenX=0;G.prototype.screenY=0;G.prototype.button=0;G.prototype.keyCode=0;G.prototype.charCode=0;G.prototype.ctrlKey=false;G.prototype.altKey=false;G.prototype.shiftKey=false;G.prototype.metaKey=false;G.prototype.q=null;var Kc="mouseover",Lc="mouseout",
Mc="keypress";G.prototype.init=function(a,b){this.type=a.type;this.target=a.target||a.srcElement;this.currentTarget=b;this.relatedTarget=a.relatedTarget?a.relatedTarget:this.type==Kc?a.fromElement:this.type==Lc?a.toElement:null;this.offsetX=typeof a.layerX==n?a.layerX:a.offsetX;this.offsetY=typeof a.layerY==n?a.layerY:a.offsetY;this.clientX=typeof a.clientX==n?a.clientX:a.pageX;this.clientY=typeof a.clientY==n?a.clientY:a.pageY;this.screenX=a.screenX||0;this.screenY=a.screenY||0;this.button=a.button;
this.keyCode=a.keyCode||0;this.charCode=a.charCode||(this.type==Mc?a.keyCode:0);this.ctrlKey=a.ctrlKey;this.altKey=a.altKey;this.shiftKey=a.shiftKey;this.metaKey=a.metaKey;this.q=a;delete this.T;delete this.D};G.prototype.stopPropagation=function(){this.D=true;if(this.q.stopPropagation)this.q.stopPropagation();else this.q.cancelBubble=true};G.prototype.preventDefault=function(){this.T=false;if(this.q.preventDefault)this.q.preventDefault();else{this.q.returnValue=false;try{this.q.keyCode=-1}catch(a){}}};
G.prototype.a=function(){G.o.a.call(this);this.q=null};var H=function(){},Nc=0;H.prototype.Da=null;H.prototype.listener=null;H.prototype.proxy=null;H.prototype.src=null;H.prototype.type=null;H.prototype.capture=null;H.prototype.handler=null;H.prototype.key=0;H.prototype.removed=false;H.prototype.wa=false;var Oc="Invalid listener argument";H.prototype.init=function(a,b,c,d,e,f){if(qa(a))this.Da=true;else if(a&&a.handleEvent&&qa(a.handleEvent))this.Da=false;else throw Error(Oc);this.listener=a;this.proxy=b;this.src=c;this.type=d;this.capture=!!e;this.handler=
f;this.wa=false;this.key=++Nc;this.removed=false};H.prototype.handleEvent=function(a){if(this.Da)return this.listener.call(this.handler||this.src,a);return this.listener.handleEvent.call(this.listener,a)};var Pc={},I={},J={},Qc=new E(0,600);Qc.ca(function(){return{c:0}});Qc.sb(function(a){a.c=0});var Rc=new E(0,600);Rc.ca(function(){return[]});Rc.sb(function(a){a.length=0;delete a.oa;delete a.kb});var Sc=new E(0,600);Sc.ca(function(){var a=function(b){return Tc.call(a.src,a.key,b)};return a});var Uc=function(){return new H},Vc=new E(0,600);Vc.ca(Uc);var Wc=function(){return new G},Xc=function(){var a=null;if(x){a=new E(0,600);a.ca(Wc)}return a},Yc=Xc(),Zc="on",$c={},ad="Invalid event type",K=function(a,
b,c,d,e){if(b)if(q(b)){for(var f=0;f<b.length;f++)K(a,b[f],c,d,e);return null}else{var g=!!d,h=I;b in h||(h[b]=Qc.n());h=h[b];if(!(g in h)){h[g]=Qc.n();h.c++}h=h[g];var i=ua(a),l,m;if(h[i]){l=h[i];for(var f=0;f<l.length;f++){m=l[f];if(m.listener==c&&m.handler==e){if(m.removed)break;return l[f].key}}}else{l=h[i]=Rc.n();h.c++}var o=Sc.n();o.src=a;m=Vc.n();m.init(c,o,a,b,g,e);var v=m.key;o.key=v;l.push(m);Pc[v]=m;J[i]||(J[i]=Rc.n());J[i].push(m);if(a.addEventListener){if(a==j||!a.Xa)a.addEventListener(b,
o,g)}else a.attachEvent(bd(b),o);return v}else throw Error(ad);},cd=function(a,b,c,d,e){if(q(b)){for(var f=0;f<b.length;f++)cd(a,b[f],c,d,e);return null}var g=K(a,b,c,d,e),h=Pc[g];h.wa=true;return g},dd=function(a,b,c,d,e){if(q(b)){for(var f=0;f<b.length;f++)dd(a,b[f],c,d,e);return null}var g=!!d,h=ed(a,b,g);if(!h)return false;for(var f=0;f<h.length;f++)if(h[f].listener==c&&h[f].capture==g&&h[f].handler==e)return L(h[f].key);return false},L=function(a){if(!Pc[a])return false;var b=Pc[a];if(b.removed)return false;
var c=b.src,d=b.type,e=b.proxy,f=b.capture;if(c.removeEventListener){if(c==j||!c.Xa)c.removeEventListener(d,e,f)}else c.detachEvent&&c.detachEvent(bd(d),e);var g=ua(c),h=I[d][f][g];if(J[g]){var i=J[g];Jb(i,b);i.length==0&&delete J[g]}b.removed=true;h.kb=true;fd(d,f,g,h);delete Pc[a];return true},fd=function(a,b,c,d){if(!d.oa)if(d.kb){for(var e=0,f=0;e<d.length;e++){if(d[e].removed){Vc.L(d[e]);continue}if(e!=f)d[f]=d[e];f++}d.length=f;d.kb=false;if(f==0){Rc.L(d);delete I[a][b][c];I[a][b].c--;if(I[a][b].c==
0){Qc.L(I[a][b]);delete I[a][b];I[a].c--}if(I[a].c==0){Qc.L(I[a]);delete I[a]}}}},gd=function(a,b,c){var d=0,e=a==null,f=b==null,g=c==null;c=!!c;if(e)Nb(J,function(o){for(var v=o.length-1;v>=0;v--){var N=o[v];if((f||b==N.type)&&(g||c==N.capture)){L(N.key);d++}}});else{var h=ua(a);if(J[h]){var i=J[h];for(var l=i.length-1;l>=0;l--){var m=i[l];if((f||b==m.type)&&(g||c==m.capture)){L(m.key);d++}}}}return d},ed=function(a,b,c){var d=I;if(b in d){d=d[b];if(c in d){d=d[c];var e=ua(a);if(d[e])return d[e]}}return null},
hd=function(a,b,c,d,e){var f=!!d,g=ed(a,b,f);if(g)for(var h=0;h<g.length;h++)if(g[h].listener==c&&g[h].capture==f&&g[h].handler==e)return g[h];return null},bd=function(a){if(a in $c)return $c[a];return $c[a]=Zc+a},jd=function(a,b,c,d){var e=1,f=I;if(b in f){f=f[b];if(c in f){f=f[c];var g=ua(a);if(f[g]){var h=f[g];if(h.oa)h.oa++;else h.oa=1;try{var i=h.length;for(var l=0;l<i;l++){var m=h[l];if(m&&!m.removed)e&=id(m,d)!==false}}finally{h.oa--;fd(b,c,g,h)}}}}return Boolean(e)},id=function(a,b){var c=
a.handleEvent(b);a.wa&&L(a.key);return c},kd=function(a,b){if(r(b))b=new F(b,a);else if(b instanceof F)b.target=b.target||a;else{var c=b;b=new F(b.type,a);Tb(b,c)}var d=1,e,f=b.type,g=I;if(!(f in g))return true;g=g[f];var h=true in g,i=false in g;if(h){e=[];for(var l=a;l;l=l.la())e.push(l);for(var m=e.length-1;!b.D&&m>=0;m--){b.currentTarget=e[m];d&=jd(e[m],b.type,true,b)&&b.T!=false}}if(i)if(h)for(var m=0;!b.D&&m<e.length;m++){b.currentTarget=e[m];d&=jd(e[m],b.type,false,b)&&b.T!=false}else for(var o=
a;!b.D&&o;o=o.la()){b.currentTarget=o;d&=jd(o,b.type,false,b)&&b.T!=false}return Boolean(d)},ld="window.event",Tc=function(a,b){if(!Pc[a])return true;var c=Pc[a],d=c.type,e=I;if(!(d in e))return true;e=e[d];var f;if(x){var g=b||ea(ld),h=true in e;if(h){if(g.keyCode<0||g.returnValue!=undefined)return true;md(g)}ua(c.src);var i=Yc.n();i.init(g,this);f=true;try{if(h){var l=Rc.n();for(var m=i.currentTarget;m;m=m.parentNode)l.push(m);for(var o=l.length-1;!i.D&&o>=0;o--){i.currentTarget=l[o];f&=jd(l[o],
d,true,i)}for(var o=0;!i.D&&o<l.length;o++){i.currentTarget=l[o];f&=jd(l[o],d,false,i)}}else f=id(c,i)}finally{if(l){l.length=0;Rc.L(l)}i.dispose();Yc.L(i)}return f}var v=new G(b,this);try{f=id(c,v)}finally{v.dispose()}return f},md=function(a){var b=false;if(a.keyCode==0)try{a.keyCode=-1;return}catch(c){b=true}if(b||a.returnValue==undefined)a.returnValue=true};var M=function(a){this.Sb=a};t(M,D);var nd=new E(0,100);M.prototype.listen=function(a,b,c,d,e){if(q(b)){for(var f=0;f<b.length;f++)this.listen(a,b[f],c,d,e);return}var g=K(a,b,c||this,d||false,e||this.Sb||this);if(this.b)this.b[g]=true;else if(this.J){this.b=nd.n();this.b[this.J]=true;this.J=null;this.b[g]=true}else this.J=g};M.prototype.unlisten=function(a,b,c,d,e){if(!this.J&&!this.b)return;if(q(b)){for(var f=0;f<b.length;f++)this.unlisten(a,b[f],c,d,e);return}var g=hd(a,b,c||this,d||false,e||this.Sb||
this);if(g){var h=g.key;L(h);if(this.b)Qb(this.b,h);else if(this.J==h)this.J=null}};M.prototype.dc=function(){if(this.b){for(var a in this.b){L(a);delete this.b[a]}nd.L(this.b);this.b=null}else this.J&&L(this.J)};M.prototype.a=function(){M.o.a.call(this);this.dc()};var pd="EventHandler.handleEvent not implemented";M.prototype.handleEvent=function(){throw Error(pd);};var O=function(){};t(O,D);O.prototype.Xa=true;O.prototype.qb=null;O.prototype.la=function(){return this.qb};O.prototype.addEventListener=function(a,b,c,d){K(this,a,b,c,d)};O.prototype.removeEventListener=function(a,b,c,d){dd(this,a,b,c,d)};O.prototype.dispatchEvent=function(a){return kd(this,a)};O.prototype.a=function(){O.o.a.call(this);gd(this);this.qb=null};var qd="focusin",rd="focus",sd="focusout",td="blur",ud=function(a){O.call(this);this.e=a;var b=x?qd:rd,c=x?sd:td;this.zc=K(this.e,b,this,!x);this.Ac=K(this.e,c,this,!x)};t(ud,O);ud.prototype.handleEvent=function(a){var b=a.q,c=new G(b);c.type=a.type==qd||a.type==rd?qd:sd;try{this.dispatchEvent(c)}finally{c.dispose()}};ud.prototype.a=function(){ud.o.a.call(this);L(this.zc);L(this.Ac);delete this.e};var vd=function(a,b,c,d){this.top=k(a)?Number(a):undefined;this.right=k(b)?Number(b):undefined;this.bottom=k(c)?Number(c):undefined;this.left=k(d)?Number(d):undefined};vd.prototype.clone=function(){return new vd(this.top,this.right,this.bottom,this.left)};var wd="t, ",xd="r, ",yd="b, ",zd="l)";vd.prototype.toString=function(){return Ea+this.top+wd+this.right+xd+this.bottom+yd+this.left+zd};vd.prototype.contains=function(a){return Ad(this,a)};vd.prototype.expand=function(a,b,c,d){if(ra(a)){this.top-=
a.top;this.right+=a.right;this.bottom+=a.bottom;this.left-=a.left}else{this.top-=a;this.right+=b;this.bottom+=c;this.left-=d}return this};var Ad=function(a,b){if(!a||!b)return false;return b.x>=a.left&&b.x<=a.right&&b.y>=a.top&&b.y<=a.bottom};var Bd=function(a,b,c,d){this.left=a;this.top=b;this.width=c;this.height=d};Bd.prototype.clone=function(){return new Bd(this.left,this.top,this.width,this.height)};var Cd=" - ",Dd="w x ",Ed="h)";Bd.prototype.toString=function(){return Ea+this.left+Fa+this.top+Cd+this.width+Dd+this.height+Ed};Bd.prototype.contains=function(a){return this.left<=a.left&&this.left+this.width>=a.left+a.width&&this.top<=a.top&&this.top+this.height>=a.top+a.height};var Fd="mousedown",P=function(a,b,c){this.target=a;this.handle=b||a;this.limits=c||new Bd;this.d=a.ownerDocument||a.document;this.Gc=lc(this.d);K(this.handle,Fd,this.ub,false,this)};t(P,O);P.prototype.screenX=0;P.prototype.screenY=0;P.prototype.vb=0;P.prototype.wb=0;P.prototype.V=0;P.prototype.W=0;P.prototype.ab=true;P.prototype.H=false;P.prototype.fb=0;P.prototype.$b=0;var Gd="mousemove",Hd="mouseup";P.prototype.a=function(){P.o.a.call(this);dd(this.handle,Fd,this.ub,false,this);dd(this.d,Gd,this.Fa,
false,this);dd(this.d,Hd,this.Aa,false,this);delete this.target;delete this.handle};P.prototype.ub=function(a){if(this.ab&&!this.H){if(this.fb==0){this.gb(a);this.H&&a.preventDefault()}K(this.d,Gd,this.Fa,false,this);K(this.d,Hd,this.Aa,false,this);this.screenX=this.vb=a.screenX;this.screenY=this.wb=a.screenY;this.V=this.target.offsetLeft;this.W=this.target.offsetTop;this.pageScroll=bc(this.d).ka();this.$b=xa()}};var Id="start";P.prototype.gb=function(a){var b=this.dispatchEvent(new Jd(Id,this,a.clientX,
a.clientY,a));if(b!==false)this.H=true};var Kd="end";P.prototype.Aa=function(a){dd(this.d,Gd,this.Fa,false,this);dd(this.d,Hd,this.Aa,false,this);if(this.H){this.H=false;var b=this.ib(this.V),c=this.jb(this.W);this.dispatchEvent(new Jd(Kd,this,a.clientX,a.clientY,a,b,c))}};var Ld="beforedrag",Md="drag";P.prototype.Fa=function(a){if(this.ab){var b=a.screenX-this.screenX,c=a.screenY-this.screenY,d=bc(this.d).ka();b+=d.x-this.pageScroll.x;c+=d.y-this.pageScroll.y;this.V+=b;this.W+=c;var e=this.ib(this.V),
f=this.jb(this.W);this.screenX=a.screenX;this.screenY=a.screenY;this.pageScroll=d;if(!this.H){var g=this.vb-this.screenX,h=this.wb-this.screenY,i=g*g+h*h;i>this.fb&&this.gb(a)}if(this.H){var l=this.dispatchEvent(new Jd(Ld,this,a.clientX,a.clientY,a,e,f));if(l!==false){this.Gb(e,f);this.dispatchEvent(new Jd(Md,this,a.clientX,a.clientY,a,e,f));a.preventDefault()}}}};P.prototype.ib=function(a){var b=this.limits,c=typeof b.left!="undefined"?b.left:null,d=typeof b.width!="undefined"?b.width:0,e=c!=null?
c+d:Infinity,f=c!=null?c:-Infinity;return Math.min(e,Math.max(f,a))};P.prototype.jb=function(a){var b=this.limits,c=typeof b.top!="undefined"?b.top:null,d=typeof b.height!="undefined"?b.height:0,e=c!=null?c+d:Infinity,f=c!=null?c:-Infinity;return Math.min(e,Math.max(f,a))};var Nd="px";P.prototype.Gb=function(a,b){this.target.style.left=a+Nd;this.target.style.top=b+Nd};var Jd=function(a,b,c,d,e,f,g){F.call(this,a);this.type=a;this.clientX=c;this.clientY=d;this.browserEvent=e;this.left=k(f)?f:b.V;this.top=
k(g)?g:b.W;this.dragger=b};t(Jd,F);var Od="StopIteration";if(Od in j)var Pd=j.StopIteration;else Pd=Error(Od);var Qd=function(){};Qd.prototype.next=function(){throw Pd;};Qd.prototype.__iterator__=function(){return this};var Rd=function(a){if(typeof a.C==p)return a.C();if(r(a))return a.split(w);if(oa(a)){var b=[],c=a.length;for(var d=0;d<c;d++)b.push(a[d]);return b}return Ob(a)},Sd=function(a){if(typeof a.I==p)return a.I();if(typeof a.C==p)return undefined;if(oa(a)||r(a)){var b=[],c=a.length;for(var d=0;d<c;d++)b.push(d);return b}return Pb(a)},Td=function(a,b,c){if(typeof a.forEach==p)a.forEach(b,c);else if(oa(a)||r(a))Gb(a,b,c);else{var d=Sd(a),e=Rd(a),f=e.length;for(var g=0;g<f;g++)b.call(c,e[g],d&&d[g],a)}},Ud=
null;var Q=function(a){this.s={};this.b=[];var b=arguments.length;if(b>1){if(b%2)throw Error(Ub);for(var c=0;c<b;c+=2)this.set(arguments[c],arguments[c+1])}else a&&this.Bb(a)};Q.prototype.c=0;Q.prototype.fa=0;Q.prototype.C=function(){this.ia();var a=[];for(var b=0;b<this.b.length;b++){var c=this.b[b];a.push(this.s[c])}return a};Q.prototype.I=function(){this.ia();return this.b.concat()};Q.prototype.u=function(a){return Vd(this.s,a)};Q.prototype.clear=function(){this.s={};this.b.length=0;this.c=0;this.fa=
0};Q.prototype.remove=function(a){if(Vd(this.s,a)){delete this.s[a];this.c--;this.fa++;this.b.length>2*this.c&&this.ia();return true}return false};Q.prototype.ia=function(){if(this.c!=this.b.length){var a=0,b=0;while(a<this.b.length){var c=this.b[a];if(Vd(this.s,c))this.b[b++]=c;a++}this.b.length=b}if(this.c!=this.b.length){var d={},a=0,b=0;while(a<this.b.length){var c=this.b[a];if(!Vd(d,c)){this.b[b++]=c;d[c]=1}a++}this.b.length=b}};Q.prototype.get=function(a,b){if(Vd(this.s,a))return this.s[a];
return b};Q.prototype.set=function(a,b){if(!Vd(this.s,a)){this.c++;this.b.push(a);this.fa++}this.s[a]=b};Q.prototype.Bb=function(a){var b,c;if(a instanceof Q){b=a.I();c=a.C()}else{b=Pb(a);c=Ob(a)}for(var d=0;d<b.length;d++)this.set(b[d],c[d])};Q.prototype.clone=function(){return new Q(this)};var Wd="The map has changed since the iterator was created";Q.prototype.__iterator__=function(a){this.ia();var b=0,c=this.b,d=this.s,e=this.fa,f=this,g=new Qd;g.next=function(){while(true){if(e!=f.fa)throw Error(Wd);
if(b>=c.length)throw Pd;var h=c[b++];return a?h:d[h]}};return g};if(Object.prototype.hasOwnProperty)var Vd=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)};else Vd=function(a,b){return b in a&&a[b]!==Object.prototype[b]};var Xd=function(a,b,c){if(typeof a.set==p)a.set(b,c);else a[b]=c};Ud=Xd;var R=function(a,b,c){r(b)?Yd(a,c,b):Nb(b,wa(Yd,a))},Yd=function(a,b,c){a.style[Zd(c)]=b},$d=function(a,b){var c=ac(a);if(c.defaultView&&c.defaultView.getComputedStyle){var d=c.defaultView.getComputedStyle(a,w);if(d)return d[b]}return null};var ae=function(a,b,c){var d,e;if(b instanceof Da){d=b.x;e=b.y}else{d=b;e=c}a.style.left=typeof d==n?Math.round(d)+Nd:d;a.style.top=typeof e==n?Math.round(e)+Nd:e},be="missing height argument",ce=function(a,b,c){var d;if(b instanceof u){d=b.height;b=b.width}else{if(c==
undefined)throw Error(be);d=c}a.style.width=typeof b==n?Math.round(b)+Nd:b;a.style.height=typeof d==n?Math.round(d)+Nd:d},de="display",ee="none",fe="hidden",ge="absolute",he=function(a){if(($d(a,de)||(a.currentStyle?a.currentStyle.display:null)||a.style.display)!=ee)return new u(a.offsetWidth,a.offsetHeight);var b=a.style,c=b.display,d=b.visibility,e=b.position;b.visibility=fe;b.position=ge;b.display=w;var f=a.offsetWidth,g=a.offsetHeight;b.display=c;b.position=e;b.visibility=d;return new u(f,g)},
Zd=function(a){return String(a).replace(/\-([a-z])/g,function(b,c){return c.toUpperCase()})};var ie="opacity",je="MozOpacity",ke="filter",le="alpha(opacity=",me=function(a,b){var c=a.style;if(ie in c)c.opacity=b;else if(je in c)c.MozOpacity=b;else if(ke in c)c.filter=le+b*100+Ga},S=function(a,b){a.style.display=b?w:ee},ne=function(a){return a?r(a)||a.nodeType==3?true:Hb(a,ne):false},oe="1.9";Cb&&!(fb(mb,oe)>=0);var T=function(a,b){O.call(this);this.na=a||1;this.sa=b||pe;this.Ra=s(this.oc,this);this.hb=xa()};t(T,O);T.prototype.enabled=false;var pe=j.window,qe=0.8;T.prototype.z=null;T.prototype.setInterval=function(a){this.na=a;if(this.z&&this.enabled){this.stop();this.start()}else this.z&&this.stop()};T.prototype.oc=function(){if(this.enabled){var a=xa()-this.hb;if(a>0&&a<this.na*qe){this.z=this.sa.setTimeout(this.Ra,this.na-a);return}this.Hb();if(this.enabled){this.z=this.sa.setTimeout(this.Ra,this.na);
this.hb=xa()}}};var re="tick";T.prototype.Hb=function(){this.dispatchEvent(re)};T.prototype.start=function(){this.enabled=true;if(!this.z){this.z=this.sa.setTimeout(this.Ra,this.na);this.hb=xa()}};T.prototype.stop=function(){this.enabled=false;if(this.z){this.sa.clearTimeout(this.z);this.z=null}};T.prototype.a=function(){T.o.a.call(this);this.stop();delete this.sa};var se=function(a,b,c){if(qa(a)){if(c)a=s(a,c)}else if(a&&typeof a.handleEvent==p)a=s(a.handleEvent,a);else throw Error(Oc);return pe.setTimeout(a,
b||0)};var te=function(){};te.prototype.ac=0;var ue=":";te.prototype.Nb=function(){return ue+(this.ac++).toString(36)};var ve=new te;var U=function(a){O.call(this);this.g=a||bc();this.hc=we};t(U,O);U.prototype.Tb=ve;var we=null;U.prototype.ma=null;U.prototype.g=null;U.prototype.w=false;U.prototype.e=null;U.prototype.hc=null;U.prototype.Zb=null;U.prototype.K=null;U.prototype.ha=null;U.prototype.ga=null;U.prototype.qc=null;U.prototype.db=function(){return this.ma||(this.ma=this.Tb.Nb())};U.prototype.j=function(){return this.e};U.prototype.ic=function(a){this.e=a};var xe="Unable to set parent component";U.prototype.kc=function(a){if(this==
a)throw Error(xe);if(a&&this.K&&this.K.cb(this.ma))throw Error(xe);this.K=a};U.prototype.la=function(){return this.K};U.prototype.k=function(){this.e=this.g.createElement(C)};U.prototype.render=function(a){this.fc(a)};var ye="Component already rendered";U.prototype.fc=function(a,b){if(this.w)throw Error(ye);this.e||this.k();a?a.insertBefore(this.e,b||null):this.g.d.body.appendChild(this.e);if(!this.K||this.K.w)this.Y()};U.prototype.Y=function(){this.w=true;this.Ba(function(a){!a.w&&a.j()&&a.Y()})};
U.prototype.P=function(){this.Ba(function(a){a.w&&a.P()});this.w=false};U.prototype.a=function(){U.o.a.call(this);this.w&&this.P();this.Ba(function(a){a.dispose()});!this.qc&&this.e&&B(this.e);this.ha=null;this.ga=null;this.e=null;this.Zb=null;this.K=null};U.prototype.cb=function(a){return this.ga&&a?Rb(this.ga,a)||null:null};U.prototype.Ba=function(a,b){this.ha&&Gb(this.ha,a,b)};var ze="Child is not in parent component";U.prototype.removeChild=function(a,b){if(a){var c=r(a)?a:a.db();a=this.cb(c);
if(c&&a){Qb(this.ga,c);Jb(this.ha,a);if(b){a.P();a.e&&B(a.e)}a.kc(null)}}if(!a)throw Error(ze);return a};var Ae="modal-dialog",V=function(a,b,c){U.call(this,c);this.p=a||Ae;this.Pa=!!b;this.A=Be;this.m=new M(this);this.ja=new ud(this.g.d)};t(V,U);V.prototype.p=null;V.prototype.Pa=false;V.prototype.pa=true;V.prototype.$a=true;V.prototype.Db=0.3;V.prototype.pc=w;V.prototype.Va=w;V.prototype.A=null;V.prototype.O=null;V.prototype.Qa=false;V.prototype.Ib=false;V.prototype.h=null;V.prototype.i=null;V.prototype.ua=null;V.prototype.Oa=null;V.prototype.yb=null;V.prototype.ta=null;V.prototype.Ua=null;V.prototype.G=
null;V.prototype.m=null;var Ce="-title-draggable";V.prototype.Eb=function(){var a=new P(this.j(),this.ua);Zb(this.ua,this.p+Ce);return a};var De="-title",Ee="span",Fe="-title-text",Ge="-title-close",He="-content",Ie="-buttons",Je="dialog",Ke="labelledby";V.prototype.k=function(){this.Xb();this.ic(this.g.k(C,{className:this.p,tabIndex:0},this.ua=this.g.k(C,{className:this.p+De,id:this.db()},this.Oa=this.g.k(Ee,{className:this.p+Fe},this.pc),this.ta=this.g.k(Ee,{className:this.p+Ge})),this.Ua=this.g.k(C,
{className:this.p+He}),this.G=this.g.k(C,{className:this.p+Ie}),this.nc=this.g.k(Ee,{tabIndex:0})));this.yb=this.ua.id;Fc(this.j(),Je);Ic(this.j(),Ke,this.yb);if(this.Va)this.Ua.innerHTML=this.Va;S(this.j(),false);this.A&&this.A.Cb(this.G)};var Le="iframe",Me="border: 0",Ne="-bg";V.prototype.Xb=function(){if(this.Pa&&this.pa&&!this.i){this.i=this.g.k(Le,{frameborder:0,style:Me,className:this.p+Ne});S(this.i,false);me(this.i,0)}else if((!this.Pa||!this.pa)&&this.i){B(this.i);this.i=null}if(this.pa&&
!this.h){this.h=this.g.k(C,{className:this.p+Ne});me(this.h,this.Db);S(this.h,false)}else if(!this.pa&&this.h){B(this.h);this.h=null}};V.prototype.render=function(a){if(this.w)throw Error(ye);this.j()||this.k();var b=a||this.g.d.body;this.ec(b);V.o.render.call(this,b)};V.prototype.ec=function(a){this.i&&a.appendChild(this.i);this.h&&a.appendChild(this.h)};var Oe="click";V.prototype.Y=function(){V.o.Y.call(this);if(this.$a&&!this.O)this.O=this.Eb();this.m.listen(this.ta,Oe,this.pb);this.m.listen(this.ja,
qd,this.mb);Fc(this.j(),Je);this.Oa.id!==w&&Ic(this.j(),Ke,this.Oa.id)};V.prototype.P=function(){this.m.unlisten(this.ta,Oe,this.pb);this.m.unlisten(this.ja,qd,this.mb);this.Qa&&this.N(false);if(this.O){this.O.dispose();this.O=null}V.o.P.call(this)};var Pe="keydown",Qe="resize",Re="button",Se="afterhide";V.prototype.N=function(a){if(a==this.Qa)return;var b=this.g.d,c=lc(b)||window;this.w||this.render(b.body);if(a){this.rb();this.reposition();this.m.listen(this.j(),Pe,this.nb,true);this.m.listen(c,
Qe,this.ob,true)}else{this.m.unlisten(this.j(),Pe,this.nb,true);this.m.unlisten(c,Qe,this.ob,true)}this.i&&S(this.i,a);this.h&&S(this.h,a);S(this.j(),a);if(a){Cb&&this.j().focus();if(this.A){var d=this.A.ya;if(d){var e=this.G.getElementsByTagName(Re);for(var f=0,g;g=e[f];f++)if(g.name==d){try{g.focus()}catch(h){}break}}}}this.Qa=a;if(a)this.m.listen(this.G,Oe,this.lb);else{this.m.unlisten(this.G,Oe,this.lb);this.dispatchEvent(Se);this.Ib&&this.dispose()}};V.prototype.rb=function(){this.i&&S(this.i,
false);this.h&&S(this.h,false);var a=this.g.d,b=lc(a)||window,c=kc(b),d=a.body.scrollWidth,e=Math.max(a.body.scrollHeight,c.height);if(this.i){S(this.i,true);ce(this.i,d,e)}if(this.h){S(this.h,true);ce(this.h,d,e)}if(this.$a){var f=he(this.j());this.O.limits=new Bd(0,0,d-f.width,e-f.height)}};V.prototype.reposition=function(){var a=this.g.d,b=lc(a)||window,c=this.g.ka(),d=c.x,e=c.y,f=he(this.j()),g=kc(b),h=Math.max(d+g.width/2-f.width/2,0),i=Math.max(e+g.height/2-f.height/2,0);ae(this.j(),h,i)};V.prototype.pb=
function(){var a=this.A,b=a&&a.U;if(b){var c=a.get(b);this.dispatchEvent(new Te(b,c))&&this.N(false)}else this.N(false)};V.prototype.a=function(){V.o.a.call(this);if(this.m){this.m.dispose();this.m=null}if(this.ja){this.ja.dispose();this.ja=null}if(this.h){B(this.h);this.h=null}if(this.i){B(this.i);this.i=null}this.ta=null;this.G=null;this.nc=null};V.prototype.lb=function(a){var b=this.Kb(a.target);if(b){var c=b.name,d=this.A.get(c);this.dispatchEvent(new Te(c,d))&&this.N(false)}};var Ue="BUTTON";
V.prototype.Kb=function(a){var b=a;while(b!=null&&b!=this.G){if(b.tagName==Ue)return b;b=b.parentNode}return null};V.prototype.nb=function(a){var b=this.A;if(a.keyCode==27){if(b&&b.U){var c=b.get(b.U);this.dispatchEvent(new Te(b.U,c))&&this.N(false)}else this.N(false);a.stopPropagation()}else if(a.keyCode==13){var d=a.target&&a.target.tagName==Ue?a.target.name:b&&b.ya;if(d){this.dispatchEvent(new Te(d,b.get(d)))&&this.N(false);a.preventDefault()}a.stopPropagation()}else if(a.keyCode==9&&a.shiftKey&&
a.target==this.j()){a.preventDefault();a.stopPropagation()}};V.prototype.ob=function(){this.rb()};V.prototype.mb=function(a){this.nc==a.target&&se(this.Lb,0,this)};V.prototype.Lb=function(){x&&this.g.d.body.focus();this.j().focus()};var Ve="dialogselect",Te=function(a,b){this.type=Ve;this.key=a;this.caption=b};t(Te,F);var W=function(a){this.g=a||bc();Q.call(this)},Be,We,Xe,Ye,Ze;t(W,Q);W.prototype.ya=null;W.prototype.e=null;W.prototype.U=null;W.prototype.set=function(a,b,c,d){Q.prototype.set.call(this,
a,b);if(c)this.ya=a;if(d)this.U=a;return this};W.prototype.Cb=function(a){this.e=a;this.render()};W.prototype.render=function(){if(this.e){this.e.innerHTML=w;var a=bc(this.e);Td(this,function(b,c){this.e.appendChild(a.k(Re,{name:c},b))},this)}};var $e="OK",af="Cancel",bf="Yes",cf="No",df="Save",ef="Continue",ff="ok",gf="cancel",hf="yes",jf="no",kf="continue",lf="save";(function(){var a=Ba($e),b=Ba(af),c=Ba(bf),d=Ba(cf),e=Ba(df),f=Ba(ef);We=(new W).set(ff,a,true);Be=(new W).set(ff,a,true).set(gf,b,
false,true);Xe=(new W).set(hf,c,true).set(jf,d,false,true);Ye=(new W).set(hf,c).set(jf,d,true).set(gf,b,false,true);Ze=(new W).set(kf,f).set(lf,e).set(gf,b,true,true)})();var X=function(a,b){var c;if(a instanceof X){this.M(b==null?a.r:b);this.Ma(a.F);this.Na(a.ea);this.Ha(a.X);this.Ka(a.S);this.ra(a.aa);this.La(a.t.clone());this.Ia(a.Z)}else if(a&&(c=String(a).match(mf()))){this.M(!!b);this.Ma(c[1],true);this.Na(c[2],true);this.Ha(c[3],true);this.Ka(c[4]);this.ra(c[5],true);this.La(c[6]);this.Ia(c[7],true)}else{this.M(!!b);this.t=new Y(null,this,this.r)}};X.prototype.F=w;X.prototype.ea=w;X.prototype.X=w;X.prototype.S=null;X.prototype.aa=w;X.prototype.Z=w;X.prototype.Vb=
false;X.prototype.r=false;var nf="//",of="@",pf="?",qf="#";X.prototype.toString=function(){if(this.l)return this.l;var a=[];this.F&&a.push(rf(this.F,sf),ue);if(this.X){a.push(nf);this.ea&&a.push(rf(this.ea,sf),of);a.push(tf(this.X));this.S!=null&&a.push(ue,String(this.S))}this.aa&&a.push(rf(this.aa,uf));var b=String(this.t);b&&a.push(pf,b);this.Z&&a.push(qf,rf(this.Z,vf));return this.l=a.join(w)};X.prototype.clone=function(){return wf(this.F,this.ea,this.X,this.S,this.aa,this.t.clone(),this.Z,this.r)};
X.prototype.Ma=function(a,b){this.v();delete this.l;this.F=b?a?decodeURIComponent(a):w:a;if(this.F)this.F=this.F.replace(/:$/,w);return this};X.prototype.Na=function(a,b){this.v();delete this.l;this.ea=b?a?decodeURIComponent(a):w:a;return this};X.prototype.Ha=function(a,b){this.v();delete this.l;this.X=b?a?decodeURIComponent(a):w:a;return this};var xf="Bad port number ";X.prototype.Ka=function(a){this.v();delete this.l;if(a){a=Number(a);if(isNaN(a)||a<0)throw Error(xf+a);this.S=a}else this.S=null;
return this};X.prototype.ra=function(a,b){this.v();delete this.l;this.aa=b?a?decodeURIComponent(a):w:a;return this};X.prototype.La=function(a){this.v();delete this.l;if(a instanceof Y){this.t=a;this.t.va=this;this.t.M(this.r)}else this.t=new Y(a,this,this.r);return this};X.prototype.Ja=function(a,b){this.v();delete this.l;this.t.set(a,b);return this};X.prototype.tb=function(a,b){this.v();delete this.l;q(b)||(b=[String(b)]);this.t.lc(a,b);return this};X.prototype.Ia=function(a,b){this.v();delete this.l;
this.Z=b?a?decodeURIComponent(a):w:a;return this};var yf="Tried to modify a read-only Uri";X.prototype.v=function(){if(this.Vb)throw Error(yf);};X.prototype.M=function(a){this.r=a;this.t&&this.t.M(a)};var wf=function(a,b,c,d,e,f,g,h){var i=new X(null,h);a&&i.Ma(a);b&&i.Na(b);c&&i.Ha(c);d&&i.Ka(d);e&&i.ra(e);f&&i.La(f);g&&i.Ia(g);return i};var tf=function(a){if(r(a))return encodeURIComponent(a);return null},zf=/^[a-zA-Z0-9\-_.!~*'():\/;?]*$/,rf=function(a,b){var c=null;if(r(a)){c=a;zf.test(c)||(c=
encodeURI(a));if(c.search(b)>=0)c=c.replace(b,Af)}return c},Bf="%",Af=function(a){var b=a.charCodeAt(0);return Bf+(b>>4&15).toString(16)+(b&15).toString(16)},Cf=null,mf=function(){Cf||(Cf=/^(?:([^:\/?#]+):)?(?:\/\/(?:([^\/?#]*)@)?([^\/?#:@]*)(?::([0-9]+))?)?([^?#]+)?(?:\?([^#]*))?(?:#(.*))?$/);return Cf},sf=/[#\/\?@]/g,uf=/[\#\?]/g,vf=/#/g,Df="=",Y=function(a,b,c){this.f=new Q;this.va=b||null;this.r=!!c;if(a){var d=a.split(Ta);for(var e=0;e<d.length;e++){var f=d[e].indexOf(Df),g=null,h=null;if(f>=
0){g=d[e].substring(0,f);h=d[e].substring(f+1)}else g=d[e];g=Oa(g);g=this.B(g);this.add(g,h?Oa(h):w)}}};Y.prototype.c=0;Y.prototype.add=function(a,b){this.R();a=this.B(a);if(this.u(a)){var c=this.f.get(a);q(c)?c.push(b):this.f.set(a,[c,b])}else this.f.set(a,b);this.c++;return this};Y.prototype.remove=function(a){a=this.B(a);if(this.f.u(a)){this.R();var b=this.f.get(a);if(q(b))this.c-=b.length;else this.c--;return this.f.remove(a)}return false};Y.prototype.clear=function(){this.R();this.f.clear();
this.c=0};Y.prototype.u=function(a){a=this.B(a);return this.f.u(a)};Y.prototype.I=function(){var a=this.f.C(),b=this.f.I(),c=[];for(var d=0;d<b.length;d++){var e=a[d];if(q(e))for(var f=0;f<e.length;f++)c.push(b[d]);else c.push(b[d])}return c};Y.prototype.C=function(a){var b;if(a){var c=this.B(a);if(this.u(c)){var d=this.f.get(c);if(q(d))return d;else{b=[];b.push(d)}}else b=[]}else{var e=this.f.C();b=[];for(var f=0;f<e.length;f++){var g=e[f];q(g)?Lb(b,g):b.push(g)}}return b};Y.prototype.set=function(a,
b){this.R();a=this.B(a);if(this.u(a)){var c=this.f.get(a);if(q(c))this.c-=c.length;else this.c--}this.f.set(a,b);this.c++;return this};Y.prototype.get=function(a,b){a=this.B(a);if(this.u(a)){var c=this.f.get(a);return q(c)?c[0]:c}else return b};Y.prototype.lc=function(a,b){this.R();a=this.B(a);if(this.u(a)){var c=this.f.get(a);if(q(c))this.c-=c.length;else this.c--}if(b.length>0){this.f.set(a,b);this.c+=b.length}};Y.prototype.toString=function(){if(this.l)return this.l;var a=[],b=0,c=this.f.I();for(var d=
0;d<c.length;d++){var e=c[d],f=Ma(e),g=this.f.get(e);if(q(g))for(var h=0;h<g.length;h++){b>0&&a.push(Ta);a.push(f,Df,Ma(g[h]));b++}else{b>0&&a.push(Ta);a.push(f,Df,Ma(g));b++}}return this.l=a.join(w)};Y.prototype.R=function(){delete this.l;this.va&&delete this.va.l};Y.prototype.clone=function(){var a=new Y;a.f=this.f.clone();return a};Y.prototype.B=function(a){var b=String(a);if(this.r)b=b.toLowerCase();return b};Y.prototype.M=function(a){var b=a&&!this.r;if(b){this.R();Td(this.f,function(c,d){var e=
d.toLowerCase();if(d!=e){this.remove(d);this.add(e,c)}},this)}this.r=a};Y.prototype.extend=function(){for(var a=0;a<arguments.length;a++){var b=arguments[a];Td(b,function(c,d){this.add(d,c)},this)}};var Ef="__GBS_Callback",Ff="callback",Gf="text/javascript",Jf=function(a,b){var a=new X(a),c=Ef+Hf++;a.Ja(Ff,c);var d=mc(Ac,{src:a.toString(),type:Gf});j[c]=wa(If,c,d,b);A($b().d.body,d)},If=function(a,b,c){B(b);c()};var Hf=0;var Kf="en",Lf=function(a,b){this.$=b||Kf},Mf="img",Nf="http://books.google.com/intl/%s/googlebooks/images/gbs_preview_button1.gif",Of="cursor",Pf="pointer";Lf.prototype.eb=function(){var a=z(Mf);a.src=Ja(Nf,this.$);a.border=0;R(a,Of,Pf);return a};var Qf="a",Rf="&hl=",Sf=function(a,b,c){Lf.call(this,a,c);var d=z(Qf);d.href=b;d.href+=Rf+(c||Kf);A(a,d);A(d,this.eb())};t(Sf,Lf);var Tf=function(a,b,c){Lf.call(this,a,c);A(a,this.eb());R(a,Of,Pf);K(a,Oe,b)};t(Tf,Lf);var Uf=function(a,b){this.Jb();var c=new google.books.DefaultViewer(this.Ab,b);c.load(a);this.cc()},Vf="body",Wf="#333",Xf="8px",Yf="1px solid #2c4462",Zf="#b4cffe",$f="#d8e8fd",ag="16px",bg="Arial, sans-serif",cg="bold",dg="2px 2px 2px 5px",eg="http://books.google.com/googlebooks/images/dialog_close_x.gif",fg="11px",gg=" ";Uf.prototype.Jb=function(){var a=document.getElementsByTagName(Vf)[0],b=z(C);me(b,0.5);R(b,{backgroundColor:Wf,position:ge,zIndex:200});this.sc=b;var c=kc(),d=a.scrollWidth,
e=Math.max(a.scrollHeight,c.height);ce(b,d,e);ae(b,0,0);A(a,b);this.qa=z(C);R(this.qa,{position:ge,zIndex:201});A(a,this.qa);this.da=z(C);ce(this.da,618,500);R(this.da,{backgroundColor:Wf,position:ge,zIndex:202});ae(this.da,3,3);me(this.da,0.3);A(this.qa,this.da);this.ba=z(C);ae(this.ba,0,0);R(this.ba,{position:ge,padding:Xf,border:Yf,backgroundColor:Zf,zIndex:203});var f=z(C);R(f,{backgroundColor:$f,fontSize:ag,fontFamily:bg,fontWeight:cg,padding:dg});A(this.ba,f);var g=z(Mf);g.src=eg;g.width=15;
g.height=15;R(g,{cursor:Pf,position:ge,right:fg,top:fg});cd(g,Oe,s(this.close,this));A(f,g);var h=z(C);h.innerHTML=gg;A(f,h);this.Ab=z(C);A(this.ba,this.Ab);ce(this.Ab,600,456);A(this.qa,this.ba)};Uf.prototype.cc=function(){var a=kc(),b=Math.max(0,(a.height-500)/2);b=Math.floor(b+$b().ka().y);var c=Math.max(0,(a.width-618)/2);c=Math.floor(c);ae(this.qa,c,b)};Uf.prototype.close=function(){Gb([this.ba,this.sc,this.da],B)};var hg=function(a,b){this.va=new X(a);this.wc=b?b:Ff;this.xb=5000},ig=0,jg="_",kg="_callbacks_.",lg="UTF-8",mg="head";hg.prototype.send=function(a,b,c){if(!document.documentElement.firstChild){c&&c(a);return null}var d=jg+(ig++).toString(36)+xa().toString(36);j._callbacks_||(j._callbacks_={});var e=z(Ac),f=null;if(this.xb>0){var g=ng(d,e,a,c);f=j.setTimeout(g,this.xb)}var h=this.va.clone();og(a,h);if(b){var i=pg(d,e,b,f);j._callbacks_[d]=i;h.tb(this.wc,kg+d)}gc(e,{type:Gf,id:d,charset:lg,src:h.toString()});
A(document.getElementsByTagName(mg)[0],e);return{ma:d,xb:f}};var ng=function(a,b,c,d){return function(){qg(a,b,false);d&&d(c)}},pg=function(a,b,c,d){return function(){j.clearTimeout(d);qg(a,b,true);c.apply(undefined,arguments)}},qg=function(a,b,c){j.setTimeout(function(){B(b)},0);if(j._callbacks_[a])if(c)delete j._callbacks_[a];else j._callbacks_[a]=fa},og=function(a,b){for(var c in a)if(!a.hasOwnProperty||a.hasOwnProperty(c))b.tb(c,a[c]);return b};var rg=function(a){O.call(this);this.url=a;this.gc=null;this.Wb=true};t(rg,O);rg.prototype.fetch=function(){if(this.Wb)this.Wb=false;else throw{};};rg.prototype.abort=ha;rg.prototype.jc=function(a){this.gc=a};rg.prototype.n=function(){return this.gc};var Z=function(a){rg.call(this,a);this.yc=new hg(a);this.Ca=true};t(Z,rg);Z.prototype.fetch=function(a,b){Z.o.fetch.call(this,a,b);this.Ca=false;this.yc.send({},s(this.Rb,this,a),s(this.Qb,this,b))};var sg="success";Z.prototype.Rb=function(a,b){if(!this.Ca){this.jc(b);this.dispatchEvent(sg);a&&a(this.n());this.Ga()}};var tg="error";Z.prototype.Qb=function(a){if(!this.Ca){this.dispatchEvent(tg);a&&a();this.Ga()}};Z.prototype.Ga=function(){this.Ca=true};Z.prototype.abort=function(){this.Ga()};var ug="http://books.google.com/books?jscmd=viewapi",vg="bibkeys",wg=",",xg="hl",yg=function(a,b,c){q(a)||(a=[a]);this.Ub=a;this.mc=b;this.bc=c;var d=new X(ug);d.Ja(vg,a.join(wg));d.Ja(xg,GBS_LANG);var e=new Z(d);e.fetch(s(this.Pb,this))};yg.prototype.Pb=function(a){for(var b=0;b<this.Ub.length;b++){var c=this.Ub[b],d=a[c];if(d){var e=d.preview_url;if(e&&zg(d)){this.mc&&this.mc(e);return}}}this.bc&&this.bc()};var Ag="full",Bg="partial",zg=function(a){var b=a.preview,c=a.embeddable;k(c)||(c=true);
return(b==Ag||b==Bg)&&c};var $={};$.insertPreviewButtonLink=function(a,b){var c=b||{},d=c.alternativeUrl,e=wa($.Dc,d);$.bb(a,e)};var Cg="GBS_insertPreviewButtonLink";Ca(Cg,$.insertPreviewButtonLink);$.insertPreviewButtonPopup=function(a){$.bb(a,$.Ec)};var Dg="GBS_insertPreviewButtonPopup";Ca(Dg,$.insertPreviewButtonPopup);$.insertEmbeddedViewer=function(a,b,c){$.bb(a,wa($.Cc,b,c))};var Eg="GBS_insertEmbeddedViewer";Ca(Eg,$.insertEmbeddedViewer);$.bb=function(a,b){var c=$.Fc(),d=function(e){b(c,e)};new yg(a,d)};var Fg="/books/p/";
$.Dc=function(a,b,c){var d=a||c;if($.Ta){var e=new X(d);e.ra(Fg+$.Ta);d=e.toString()}new Sf(b,d,$.$)};$.Ec=function(a,b){var c=$.Bc.partial(b);new Tf(a,c,$.$)};$.Cc=function(a,b,c,d){var e=z(C);A(c,e);ce(e,a,b);$.Ea(function(){var f=new google.books.DefaultViewer(e,$.zb);f.load(d)})};var Gg="books",Hg="0";$.Ea=function(a){var b=wa($.Ea,a);if(!j.google){Jf($.rc,wa($.Ea,b));return}if(!google.books){google.load(Gg,Hg,{callback:b,language:$.$});return}a()};$.Bc=function(a){$.Ea(function(){new Uf(a,$.zb)})};
var Ig="http://www.google.com/jsapi";$.rc=Ig,$.$=Kf;$.setLanguage=function(a){$.$=a};var Jg="GBS_setLanguage";Ca(Jg,$.setLanguage);$.setViewerOptions=function(a){$.zb=a};var Kg="GBS_setViewerOptions";Ca(Kg,$.setViewerOptions);$.Ta=null;$.setCobrandName=function(a){$.Ta=a};var Lg="GBS_setCobrandName";Ca(Lg,$.setCobrandName);$.zb={};var Mg="__GBS_Button",Ng='<span id="%s"></span>';$.Fc=function(){var a=Mg+$.xc++;document.write(Ja(Ng,a));return r(a)?document.getElementById(a):a};$.xc=0;var Og="unload";K(window,Og,function(){gd()});
})();</script>
<html> <a href="http://plasmodi.net/"> <img src="http://farm4.static.flickr.com/3064/2775380374_d440cf6219.jpg" width="130" title="my portrait by sergi"/> </a> </div> </html> ^^''[[Josep Saldaña Cavallé|about]]'' Consultant and programmer in digital technology. Research on the emerging culture and make a divulgative work on new technologies. Has been working in the computer industry, media and telecomms since 1984.^^ [[agenda]] [[document viewer]] [[video player]] [[rss reader]] NanoWiki @@display:none;<<tiddler LoadScripts>>@@ ^^Powered by TiddlyWiki <<version>>^^
<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml'/>
<link rel="shortcut icon" href="http://laboratori.ws/img/favicon.ico" type="image/x-icon">
<meta name="keywords" content="josep saldaña cavallé" />
<link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
<meta name="DC.title" content="laboratori.website d'en josep saldaña" />
<meta name="DC.author" content="josep saldaña cavallé" />
<!--}}}-->
{{textcenter{
[img[http://www.google.com/coop/intl/en/images/custom_search_sm.gif]]
~NanoSearch Scholar: search papers on nanotechnology<html><form id="searchbox_004490888024521477894:saircctgzwe" action="http://www.google.com/cse" target="_blank"><input type="hidden" name="cx" value="004490888024521477894:saircctgzwe" /><input name="q" type="text" size="35" /><input type="submit" name="sa" value="Search" /><input type="hidden" name="cof" value="FORID:0" /></form><script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=searchbox_004490888024521477894%3Asaircctgzwe"></script>
<br>
NanoSearch News: search news on nanotechnology<form id="searchbox_004490888024521477894:lp7omq5kzsa" action="http://www.google.com/cse" target="_blank"><input type="hidden" name="cx" value="004490888024521477894:lp7omq5kzsa" /><input name="q" type="text" size="35" /><input type="submit" name="sa" value="Search" /><input type="hidden" name="cof" value="FORID:0" /></form><script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=searchbox_004490888024521477894%3Alp7omq5kzsa"></script>
<br>
NanoSearch Videos: search videos on nanotechnology<form id="searchbox_004490888024521477894:h6nkyoluwye" action="http://www.google.com/cse" target="_blank"><input type="hidden" name="cx" value="004490888024521477894:h6nkyoluwye" /><input name="q" type="text" size="35" /><input type="submit" name="sa" value="Search" /><input type="hidden" name="cof" value="FORID:0" /></form><script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=searchbox_004490888024521477894%3Ah6nkyoluwye"></script><br></html>
With Google Custom Search Engine, ~NanoWiki created a search engine tailored to nanotechnology search
}}}
{{borderless{
|vertical-align:bottom;<<toggleSideBar>>|<<tiddler NavButtons>>|vertical-align:bottom;[[Open in a new window|http://www.google.com/coop/cse?cx=004490888024521477894:h6nkyoluwye]] »|
}}}<html><div align="left"><iframe src ="http://www.google.com/coop/cse?cx=004490888024521477894:h6nkyoluwye" width="100%" align="center" height="550"></iframe></div></html>
<html><div class="podPress_content"><div id="podPressPlayerSpace_13" style="display: block;">Escuchar ahora:<br/>
<object type="application/x-shockwave-flash" data="http://majaras.contrabanda.org/wp-content/plugins/podpress/player.swf" width="290" height="24" id="audioplayer4846">
<param name="movie" value="http://majaras.contrabanda.org/wp-content/plugins/podpress/player.swf" />
<param name="FlashVars" value="playerID=4846&bg=0xF8F8F8&leftbg=0xEEEEEE&text=0x666666&lefticon=0x666666&rightbg=0xCCCCCC&rightbghover=0x999999&righticon=0x666666&righticonhover=0xFFFFFF&slider=0x666666&track=0xFFFFFF&loader=0x9FFFB8&border=0x666666&soundFile=http%3A%2F%2Fia310924.us.archive.org%2F0%2Fitems%2FAsambleadeMajaras_03.12.2006%2F20061203Asamblea_de_Majaras.mp3" />
<param name="quality" value="high" />
<param name="menu" value="false" />
<param name="wmode" value="transparent" />
</object><br/><br/></div>
</html>
http://majaras.contrabanda.org/?p=13
<<forEachTiddler
where
'tiddler.tags.contains("toRSS")'
sortBy
tiddler.created
descending
script '
window.fetItemsPerPage = 10;
function getHeader(context,count) {
if (!window.fetStartIndex || window.fetStartIndex < 0)
window.fetStartIndex = 0;
// ensure not to page behind the last page
if (window.fetStartIndex >= count)
window.fetStartIndex = Math.min(Math.max(window.fetStartIndex-window.fetItemsPerPage,0),count-1);
createTiddlyButton(context.place,"<",null,
function(e) {
window.fetStartIndex -= window.fetItemsPerPage;
story.refreshTiddler(context.viewerTiddler.title,null,true);
});
createTiddlyButton(context.place,">",null,
function(e) {
window.fetStartIndex += window.fetItemsPerPage;
story.refreshTiddler(context.viewerTiddler.title,null,true);
});
var startNo = window.fetStartIndex+1;
var endNo = Math.min(count,window.fetStartIndex+window.fetItemsPerPage);
return "("+startNo+" - "+endNo+ " of "+ count + " news)\n\n";
}
'
write
'(index >= window.fetStartIndex) && (index < window.fetStartIndex + 10) ? ""+tiddler.created.formatString("DD MMM YYYY")+"\n [["+tiddler.title+"]]\n\n" : ""'
begin
'getHeader(context,count)'
>>
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::Foreground]] [[ColorPalette::Foreground]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<span class='searchBar' macro='search'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<span class='searchBar' macro='search'></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>
<!--}}}-->
/***
|''Name:''|RSSReaderPlugin|
|''Description:''|This plugin provides a RSSReader for TiddlyWiki|
|''Version:''|1.1.2|
|''Date:''|2008-09-02|
|''Source:''|http://tiddlywiki.bidix.info/#RSSReaderPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#RSSReaderPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''Credit:''|BramChen for RssNewsMacro|
|''[[License]]:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''OptionalRequires:''|http://www.tiddlytools.com/#NestedSlidersPlugin|
***/
//{{{
version.extensions.RSSReaderPlugin = {
major: 1, minor: 1, revision: 2,
date: new Date("2008-09-02"),
source: "http://TiddlyWiki.bidix.info/#RSSReaderPlugin",
author: "BidiX",
coreVersion: '2.2.0'
};
config.macros.rssReader = {
dateFormat: "DDD, DD MMM YYYY",
itemStyle: "display: block;border: 1px solid black;padding: 5px;margin: 5px;", //useed '@@'+itemStyle+itemText+'@@'
msg:{
permissionDenied: "Permission to read preferences was denied.",
noRSSFeed: "No RSS Feed at this address %0",
urlNotAccessible: " Access to %0 is not allowed"
},
cache: [], // url => XMLHttpRequest.responseXML
desc: "noDesc",
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var desc = params[0];
var feedURL = params[1];
var toFilter = (params[2] ? true : false);
var filterString = (toFilter?(params[2].substr(0,1) == ' '? tiddler.title:params[2]):'');
var place = createTiddlyElement(place, "div", "RSSReader");
wikify("^^<<rssFeedUpdate "+feedURL+" [[" + tiddler.title + "]]>>^^\n",place);
if (this.cache[feedURL]) {
this.displayRssFeed(this.cache[feedURL], feedURL, place, desc, toFilter, filterString);
}
else {
var r = loadRemoteFile(feedURL,config.macros.rssReader.processResponse, [place, desc, toFilter, filterString]);
if (typeof r == "string")
displayMessage(r);
}
},
// callback for loadRemoteFile
// params : [place, desc, toFilter, filterString]
processResponse: function(status, params, responseText, url, xhr) { // feedURL, place, desc, toFilter, filterString) {
if (window.netscape){
try {
if (document.location.protocol.indexOf("http") == -1) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
}
}
catch (e) { displayMessage(e.description?e.description:e.toString()); }
}
if (xhr.status == 404)
{
displayMessage(config.macros.rssReader.noRSSFeed.format([url]));
return;
}
if (!status)
{
displayMessage(config.macros.rssReader.noRSSFeed.format([url]));
return;
}
if (xhr.responseXML) {
// response is interpreted as XML
config.macros.rssReader.cache[url] = xhr.responseXML;
config.macros.rssReader.displayRssFeed(xhr.responseXML, params[0], url, params[1], params[2], params[3]);
}
else {
if (responseText.substr(0,5) == "<?xml") {
// response exists but not return as XML -> try to parse it
var dom = (new DOMParser()).parseFromString(responseText, "text/xml");
if (dom) {
// parsing successful so use it
config.macros.rssReader.cache[url] = dom;
config.macros.rssReader.displayRssFeed(dom, params[0], url, params[1], params[2], params[3]);
return;
}
}
// no XML display as html
wikify("<html>" + responseText + "</html>", params[0]);
displayMessage(config.macros.rssReader.msg.noRSSFeed.format([url]));
}
},
// explore down the DOM tree
displayRssFeed: function(xml, place, feedURL, desc, toFilter, filterString){
// Channel
var chanelNode = xml.getElementsByTagName('channel').item(0);
var chanelTitleElement = (chanelNode ? chanelNode.getElementsByTagName('title').item(0) : null);
var chanelTitle = "";
if ((chanelTitleElement) && (chanelTitleElement.firstChild))
chanelTitle = chanelTitleElement.firstChild.nodeValue;
var chanelLinkElement = (chanelNode ? chanelNode.getElementsByTagName('link').item(0) : null);
var chanelLink = "";
if (chanelLinkElement)
chanelLink = chanelLinkElement.firstChild.nodeValue;
var titleTxt = "!![["+chanelTitle+"|"+chanelLink+"]]\n";
var title = createTiddlyElement(place,"div",null,"ChanelTitle",null);
wikify(titleTxt,title);
// ItemList
var itemList = xml.getElementsByTagName('item');
var article = createTiddlyElement(place,"ul",null,null,null);
var lastDate;
var re;
if (toFilter)
re = new RegExp(filterString.escapeRegExp());
for (var i=0; i<itemList.length; i++){
var titleElm = itemList[i].getElementsByTagName('title').item(0);
var titleText = (titleElm ? titleElm.firstChild.nodeValue : '');
if (toFilter && ! titleText.match(re)) {
continue;
}
var descText = '';
descElem = itemList[i].getElementsByTagName('description').item(0);
if (descElem){
try{
for (var ii=0; ii<descElem.childNodes.length; ii++) {
descText += descElem.childNodes[ii].nodeValue;
}
}
catch(e){}
descText = descText.replace(/<br \/>/g,'\n');
if (desc == "asHtml")
descText = "<html>"+descText+"</html>";
}
var linkElm = itemList[i].getElementsByTagName("link").item(0);
var linkURL = linkElm.firstChild.nodeValue;
var pubElm = itemList[i].getElementsByTagName('pubDate').item(0);
var pubDate;
if (!pubElm) {
pubElm = itemList[i].getElementsByTagName('date').item(0); // for del.icio.us
if (pubElm) {
pubDate = pubElm.firstChild.nodeValue;
pubDate = this.formatDateString(this.dateFormat, pubDate);
}
else {
pubDate = '0';
}
}
else {
pubDate = (pubElm ? pubElm.firstChild.nodeValue : 0);
pubDate = this.formatDate(this.dateFormat, pubDate);
}
titleText = titleText.replace(/\[|\]/g,'');
var rssText = '*'+'[[' + titleText + '|' + linkURL + ']]' + '' ;
if ((desc != "noDesc") && descText){
rssText = rssText.replace(/\n/g,' ');
descText = '@@'+this.itemStyle+descText + '@@\n';
if (version.extensions.nestedSliders){
descText = '+++[...]' + descText + '===';
}
rssText = rssText + descText;
}
var story;
if ((lastDate != pubDate) && ( pubDate != '0')) {
story = createTiddlyElement(article,"li",null,"RSSItem",pubDate);
lastDate = pubDate;
}
else {
lastDate = pubDate;
}
story = createTiddlyElement(article,"div",null,"RSSItem",null);
wikify(rssText,story);
}
},
formatDate: function(template, date){
var dateString = new Date(date);
// template = template.replace(/hh|mm|ss/g,'');
return dateString.formatString(template);
},
formatDateString: function(template, date){
var dateString = new Date(date.substr(0,4), date.substr(5,2) - 1, date.substr(8,2)
);
return dateString.formatString(template);
}
};
config.macros.rssFeedUpdate = {
label: "Update",
prompt: "Clear the cache and redisplay this RssFeed",
handler: function(place,macroName,params) {
var feedURL = params[0];
var tiddlerTitle = params[1];
createTiddlyButton(place, this.label, this.prompt,
function () {
if (config.macros.rssReader.cache[feedURL]) {
config.macros.rssReader.cache[feedURL] = null;
}
story.refreshTiddler(tiddlerTitle,null, true);
return false;});
}
};
//}}}
config.views.wikified.tag.relatedTagsText = "Show related tags";
config.views.wikified.tag.relatedTagsTooltip = "Show related tags";
config.views.wikified.tag.labelNoRelatedTags = "no tags";
config.views.wikified.tag.labelRelatedTags = "related tags: ";
// Event handler for clicking on a tiddler tag
window.onClickTag = function(ev)
{
var e = ev ? ev : window.event;
var popup = Popup.create(this);
var tag = this.getAttribute("tag");
var title = this.getAttribute("tiddler");
if(popup && tag) {
var tagged = store.getTaggedTiddlers(tag);
var titles = [];
var li,r;
for(r=0;r<tagged.length;r++) {
if(tagged[r].title != title)
titles.push(tagged[r].title);
}
var lingo = config.views.wikified.tag;
if(titles.length > 0) {
var openAll = createTiddlyButton(createTiddlyElement(popup,"li"),lingo.openAllText.format([tag]),lingo.openAllTooltip,onClickTagOpenAll);
openAll.setAttribute("tag",tag);
createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");
for(r=0; r<titles.length; r++) {
createTiddlyLink(createTiddlyElement(popup,"li"),titles[r],true);
}
} else {
createTiddlyText(createTiddlyElement(popup,"li",null,"disabled"),lingo.popupNone.format([tag]));
}
createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");
var relatedTags = createTiddlyButton(createTiddlyElement(popup,"li"),lingo.relatedTagsText,lingo.relatedTagsTooltip,onClickRelatedTags);
relatedTags.setAttribute("tag",tag);
var h = createTiddlyLink(createTiddlyElement(popup,"li"),tag,false);
createTiddlyText(h,lingo.openTag.format([tag]));
}
Popup.show();
e.cancelBubble = true;
if(e.stopPropagation) e.stopPropagation();
return false;
}
// Event handler for 'Show related tags' on a tiddler popup
window.onClickRelatedTags = function(ev)
{
var e = ev ? ev : window.event;
var popup = Popup.create(this);
var relatedtags = [];
var tags = [];
var tag = this.getAttribute("tag");
var tiddlers = store.getTaggedTiddlers(tag);
for(var i=0; i<tiddlers.length; i++) {
tags = tiddlers[i].tags;
for(var j=0; j<tags.length; j++) {
relatedtags.pushUnique(tags[j]);
}
}
var lingo = config.views.wikified.tag;
var prompt = relatedtags.length == 0 ? lingo.labelNoRelatedTags : lingo.labelRelatedTags;
createTiddlyElement(popup,"li",null,"listTitle",prompt.format([tag]));
for(var t=0; t<relatedtags.length; t++) {
if(relatedtags[t]!==tag) {
createTagButton(createTiddlyElement(popup,"li"),relatedtags[t],tag);
}
}
Popup.show();
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
return false;
}
''projects'': ^^//''projectes en curs'' >//^^ ^^[[NanoWiki website|NanoWiki, tracking nanotechnology]]^^ ^^[[Taller El evento Can Ricart 2005-2010|http://canricart.info/]]^^ ^^//''projectes recents'' >//^^ ^^[[e-book Nanotechnology|http://nanowiki.info/#%5B%5BNanotechnology%3A%20balancing%20the%20promises%5D%5D]]^^ ^^[[AutonomousConstruction.net]]^^ ^^[[Inorganic Nanoparticles Group website|http://www.cin2.es/~inorganic/]]^^ ^^[[La ciutat transformada|La ciutat transformada, documental expandit]]^^ ^^[[Networked Cultures|Networked Cultures. Parallel Architectures and the Politics of Space]]^^ ^^[[Manual de NanoWiki|NanoWiki. Manual de Operaciones 1.0]]^^ ^^[[Videoclips NanoWiki]]^^ ^^[[Situation Room|Situation Room, un prototipo ciudadano de Sala de Situación]]^^ ^^//''projectes destacats'' >//^^ ^^[[Nau21|nau21.net, cap a una nova concepció del domini públic]]^^ ^^[[Openfridays|Openfridays, una dinàmica de col.lectiu de col.lectius]]^^ ^^[[Context Weblog|Context Weblog, an emerging culture observatory]]^^ ^^[[Straddle3|Straddle3, entre l'arquitectura i els nous media]]^^ ^^[[Accent de cultura|Accent de cultura, pla estratègic del sector cultural de Barcelona]]^^ ^^[[Internet World Exposition|Internet World Exposition, a world's fair for the information age]]^^ <<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
/***
|''Name''|SimpleSearchPlugin|
|''Description''|displays search results as a simple list of matching tiddlers|
|''Authors''|FND|
|''Version''|0.4.0|
|''Status''|stable|
|''Source''|http://devpad.tiddlyspot.com/#SimpleSearchPlugin|
|''CodeRepository''|http://svn.tiddlywiki.org/Trunk/contributors/FND/plugins/SimpleSearchPlugin.js|
|''License''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''Keywords''|search|
!Revision History
!!v0.2.0 (2008-08-18)
* initial release
!!v0.3.0 (2008-08-19)
* added Open All button (renders Classic Search option obsolete)
* sorting by relevance (title matches before content matches)
!!v0.4.0 (2008-08-26)
* added tag matching
!To Do
* tag matching optional
* animations for container creation and removal
* when clicking on search results, do not scroll to the respective tiddler (optional)
* use template for search results
!Code
***/
//{{{
if(!version.extensions.SimpleSearchPlugin) { //# ensure that the plugin is only installed once
version.extensions.SimpleSearchPlugin = { installed: true };
if(!plugins) { var plugins = {}; }
plugins.SimpleSearchPlugin = {
heading: "Search Results",
containerId: "searchResults",
btnCloseLabel: "close",
btnCloseTooltip: "dismiss search results",
btnCloseId: "search_close",
btnOpenLabel: "Open all",
btnOpenTooltip: "open all search results",
btnOpenId: "search_open",
displayResults: function(matches, query) {
story.refreshAllTiddlers(true); // update highlighting within story tiddlers
var el = document.getElementById(this.containerId);
query = '"""' + query + '"""'; // prevent WikiLinks
if(el) {
removeChildren(el);
} else { //# fallback: use displayArea as parent
var container = document.getElementById("displayArea");
el = document.createElement("div");
el.setAttribute("id", this.containerId);
el = container.insertBefore(el, container.firstChild);
}
var msg = "!" + this.heading + "\n";
if(matches.length > 0) {
msg += "''" + config.macros.search.successMsg.format([matches.length.toString(), query]) + ":''\n";
this.results = [];
for(var i = 0 ; i < matches.length; i++) {
this.results.push(matches[i].title);
msg += "* [[" + matches[i].title + "]]\n";
}
} else {
msg += "''" + config.macros.search.failureMsg.format([query]) + "''"; // XXX: do not use bold here!?
}
createTiddlyButton(el, this.btnCloseLabel, this.btnCloseTooltip, plugins.SimpleSearchPlugin.closeResults, "button", this.btnCloseId);
wikify(msg, el);
if(matches.length > 0) { // XXX: redundant!?
createTiddlyButton(el, this.btnOpenLabel, this.btnOpenTooltip, plugins.SimpleSearchPlugin.openAll, "button", this.btnOpenId);
}
},
closeResults: function() {
var el = document.getElementById(plugins.SimpleSearchPlugin.containerId);
removeNode(el);
plugins.SimpleSearchPlugin.results = null;
highlightHack = null;
},
openAll: function(ev) {
story.displayTiddlers(null, plugins.SimpleSearchPlugin.results);
return false;
}
};
config.shadowTiddlers.StyleSheetSimpleSearch = "/*{{{*/\n" +
"#" + plugins.SimpleSearchPlugin.containerId + " {\n" +
"\toverflow: auto;\n" +
"\tpadding: 5px 1em 10px;\n" +
"\tbackground-color: [[ColorPalette::TertiaryPale]];\n" +
"}\n\n" +
"#" + plugins.SimpleSearchPlugin.containerId + " h1 {\n" +
"\tmargin-top: 0;\n" +
"\tborder: none;\n" +
"}\n\n" +
"#" + plugins.SimpleSearchPlugin.containerId + " ul {\n" +
"\tmargin: 0.5em;\n" +
"\tpadding-left: 1.5em;\n" +
"}\n\n" +
"#" + plugins.SimpleSearchPlugin.containerId + " .button {\n" +
"\tdisplay: block;\n" +
"\tborder-color: [[ColorPalette::TertiaryDark]];\n" +
"\tpadding: 5px;\n" +
"\tbackground-color: [[ColorPalette::TertiaryLight]];\n" +
"}\n\n" +
"#" + plugins.SimpleSearchPlugin.containerId + " .button:hover {\n" +
"\tborder-color: [[ColorPalette::SecondaryMid]];\n" +
"\tbackground-color: [[ColorPalette::SecondaryLight]];\n" +
"}\n\n" +
"#" + plugins.SimpleSearchPlugin.btnCloseId + " {\n" +
"\tfloat: right;\n" +
"\tmargin: -5px -1em 5px 5px;\n" +
"}\n\n" +
"#" + plugins.SimpleSearchPlugin.btnOpenId + " {\n" +
"\tfloat: left;\n" +
"\tmargin-top: 5px;\n" +
"}\n" +
"/*}}}*/";
store.addNotification("StyleSheetSimpleSearch", refreshStyles);
// override Story.search()
Story.prototype.search = function(text, useCaseSensitive, useRegExp) {
highlightHack = new RegExp(useRegExp ? text : text.escapeRegExp(), useCaseSensitive ? "mg" : "img");
var matches = store.search(highlightHack, null, "excludeSearch");
var q = useRegExp ? "/" : "'";
plugins.SimpleSearchPlugin.displayResults(matches, q + text + q);
};
// override TiddlyWiki.search() to sort by relevance
TiddlyWiki.prototype.search = function(searchRegExp, sortField, excludeTag, match) {
var candidates = this.reverseLookup("tags", excludeTag, !!match);
var primary = [];
var secondary = [];
var tertiary = [];
for(var t = 0; t < candidates.length; t++) {
if(candidates[t].title.search(searchRegExp) != -1) {
primary.push(candidates[t]);
} else if(candidates[t].tags.join(" ").search(searchRegExp) != -1) {
secondary.push(candidates[t]);
} else if(candidates[t].text.search(searchRegExp) != -1) {
tertiary.push(candidates[t]);
}
}
var results = primary.concat(secondary).concat(tertiary);
if(sortField) {
results.sort(function(a, b) {
return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1);
});
}
return results;
};
} //# end of "install only once"
//}}}
{{{d'en josep saldaña cavallé}}}
{{{laboratori}}}
/***
|Name|TagCloudPlugin|
|Source|http://www.TiddlyTools.com/#TagCloudPlugin|
|Version|1.1.0|
|Author|Clint Checketts|
|License|unknown|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|present all tags using proportional font display|
!Usage
<<<
<<tagCloud>>
<<<
!Revisions
<<<
2008.07.03 [1.1.0] added 'segments' property to macro object. Extensive code cleanup
<<<
!Code
***/
//{{{
version.extensions.tagCloud = {major: 1, minor: 1 , revision: 0, date: new Date(2006,2,04)};
//Created by Clint Checketts, contributions by Jonny Leroy and Eric Shulman
config.shadowTiddlers.TagCloud="<<tagCloud>>";
setStylesheet("\
.tagCloud span{height: 3.5em;margin: 3px;}\
.tagCloud1{font-size: 80%;}\
.tagCloud2{font-size: 100%;}\
.tagCloud3{font-size: 120%;}\
.tagCloud4{font-size: 150%;}\
.tagCloud5{font-size: 180%;}\
.tagCloud6{font-size: 200%;}\
",
"tagCloudsStyles");
config.macros.tagCloud = {
noTags: "No tag cloud created because there are no tags.",
tooltip: "%1 tiddlers tagged with '%0'",
segments: 5,
handler: function(place,macroName,params) {
// get tags, skip excluded tags
var tags=store.getTags();
for (var t=0; t<tags.length; t++)
for (var p=0;p<params.length; p++)
if (tags[t][0]==params[p]) tags[t][0]="";
// get maximum number of tags to calculate tagCloud segment sizes
var mostTags=0;
for (var t=0; t<tags.length; t++) if (tags[t][0].length > 0)
if (tags[t][1]>mostTags) mostTags=tags[t][1];
var tagSegment=mostTags/config.macros.tagCloud.segments;
// output
var tagCloudWrapper = createTiddlyElement(place,"div",null,"tagCloud",null);
if(!tags.length)
createTiddlyElement(tagCloudWrapper,"span",null,null,this.noTags);
else for (var t=0; t<tags.length; t++) if (tags[t][0].length > 0){
tagCloudWrapper.appendChild(document.createTextNode(" "));
var theTag = createTiddlyButton(tagCloudWrapper,
tags[t][0],this.tooltip.format(tags[t]),onClickTag,
"tagCloudtag tagCloud" + (Math.round(tags[t][1]/tagSegment)+1));
theTag.setAttribute("tag",tags[t][0]);
}
}
};
//}}}
TiddlyWiki is a complete [[wiki|http://en.wikipedia.org/wiki/Wiki]] in a single HTML file. It contains the entire text of the wiki, and all the JavaScript, CSS and HTML goodness to be able to display it, and let you edit it or search it. Without needing a server. TiddlyWiki is published under an OpenSourceLicense and maintained by a busy [[Community]] of independent developers.
//[[versió alpha|http://en.wikipedia.org/wiki/Development_stage#Alpha]]// Notes that I want to share online about my ''works'' (<<tag nano>><<tag city>><<tag net>><<tag art>>) and ''partners'' (<<tag partner>>). Use too the side bar ''<<slider chkProjects SideBarOptions projects ''work-in-progress, recent and highlighted projects">>'' or this tools to navigate: [[document viewer]], [[video player]], [[rss reader]], [[iframe]]. You can email me at: //josep [at] laboratori [dot] ws// //Notes que vull compartir online sobre el meus ''treballs'' (<<tag nano>><<tag city>><<tag net>><<tag art>>) i ''partners'' (<<tag partner>>). Podeu enviar-me un email a: josep [at] laboratori [dot] ws Use side bar ''projects'' o aquestes eines per a navegar: [[document viewer]], [[video player]], [[rss reader]], [[iframe]]// Notas que quiero compartir online sobre mis ''trabajos'' (<<tag nano>><<tag city>><<tag net>><<tag art>>) y ''partners'' (<<tag partner>>). Puede enviarme un email a: //josep [at] laboratori [dot] ws// Use side bar ''projects'' or this tools to navigate: [[document viewer]], [[video player]], [[rss reader]], [[iframe]]
''2011'': @@color(gray):[[NanoWiki, tracking nanotechnology]]@@ code, edition and maintenance ''estiu 2011'': @@color(gray):[[Patricia Ward]]@@ conceptual artist site ''2011 - 2014'' @@color(gray):internet platform [[NanoTOES|http://nanotoes.eu/]]@@ Nanotechnology: Training Of Experts in Safety (NanoTOES) is an Initial Training Network under the PEOPLE Programme of the 7th Framework Programme of the European Union ''desembre 2010 - març 2011'': @@color(gray):e-book [[Nanotechnology: Engines On|http://nanowiki.info/#%5B%5BNanotechnology%3A%20Engines%20On%5D%5D]]@@ nanowiki annual review 2010 ''18-20 març 2010:'' @@color(gray):[[Taller El evento Can Ricart 2005-2010|http://canricart.info/alter-cronica/]]@@ alter-crònica: el potencial de can ricart. moviment ciutadà, usos temporals dels espais en desús, l'activitat productiva com a patrimoni, la ciutat és la solució ''desembre 2009 - febrer 2010'': @@color(gray):e-book [[Nanotechnology: balancing the promises|http://nanowiki.info/#%5B%5BNanotechnology%3A%20balancing%20the%20promises%5D%5D]]@@ nanowiki annual review 2009 ''7 de juny - 22 de novembre 2009'': @@color(gray):~AutonomousConstruction.net site@@ part of Sitesize' metropolitan stories and narratives project Biennal de Venècia d’Arts Visuals 2009. Eventi collaterali: The unavowable community ''febrer - abril 2009'': --@@color(gray):La ciutat xarxa. Sobre la ciutat i els ciutadans@@ Projecte de llibre entorn de les qüestions: Què és la ciutat? Quin serà el seu paper? Com adaptar-nos a les noves realitats? Què és ser ciutadà? Una reflexió entorn d'aquests temes, feta a Barcelona, mitjantçant una conversa oberta i contrastada documentalment entre la regidora de Ciutat Vella, Itziar González Virós, i el xarxaire i programador Josep Saldaña Cavallé--
− <library> − <url> http://books.google.com/books?uid=6228618314527460645 </url> − <books> − <book> <id>2ACtZvZhvWcC</id> <url>http://books.google.com/books?id=2ACtZvZhvWcC</url> <title>A World's Fair for the Global Village</title> <contributor>Carl Malamud</contributor> − <identifier> <type>ISBN</type> <value>0262133385</value> </identifier> − <labels> <label>net</label> </labels> </book> </books> <add_token>ACfU3U3AQ2qDdR5diPbD339xNvwkqf30fg</add_token> <remove_token>ACfU3U0vDa_dGmo98la0LvUmpHMqARRVdg</remove_token> <ack_token>ACfU3U2VxfS2AeWOfvSY2FmWSLPeBCRCKA</ack_token> </library> <html><a href="http://books.google.com/books?id=bujB2jbuZygC&dq=leonardo+da+vinci&as_brr=1&pg=PA91&ci=94,778,835,348&source=bookclip"></html>
Type the text for 'city'
<html><object id="_ds_1042978" name="_ds_1042978" width="620" height="550" type="application/x-shockwave-flash" data="http://viewer.docstoc.com/"><param name="FlashVars" value="doc_id=1042978&mem_id=187374&doc_type=pdf&fullscreen=0&showrelated=0" /><param name="movie" value="http://viewer.docstoc.com/"/><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /></object><br /><font size="1"></font></html>
<script>GBS_insertEmbeddedViewer('ISBN:0262133385',500,500);</script>
<html><iframe src="http://straddle3.net/josep/ciutat.html" width="620" height="600"</iframe></html>
http://www.nsf.gov/news/special_reports/nsf-net/home.jsp
<<rssReader asHtml http://nanowiki.info/index.xml>> <<rssReader asHtml http://feeds.delicious.com/rss/tag/nanotechnology>> <<rssReader asHtml http://app.feed.informer.com/digest3/6L5SWMMTIU.rss>>
<html><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="374" height="343" id="fl1" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="http://media.feed.informer.com/flash/fl1.swf" /> <param name="FlashVars" value="seturl=ADSZXCV5SC" /> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /> <embed src="http://media.feed.informer.com/flash/fl1.swf" quality="high" bgcolor="#ffffff" FlashVars="seturl=ADSZXCV5SC" width="374" height="343" name="fl1" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></html>
<<gadget http://www.google.com/coop/cse/manage_gadget.xml>>
<<gadget http://customrss.googlepages.com/customrss.xml>>
[<img[http://www.google.es/intl/en/images/about_logo.gif]]
~NanoSearch Scholar: search papers on nanotechnology <html><form action="http://www.google.com/cse" id="cse-search-box">
<div>
<input type="hidden" name="cx" value="004490888024521477894:saircctgzwe" />
<input type="hidden" name="ie" value="UTF-8" />
<input type="text" name="q" size="31" />
<input type="submit" name="sa" value="Search" />
</div>
</form>
<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&lang=en"></script></html>
~NanoSearch News: search news on nanotechnology<html><form action="" id="cse-search-box">
<div>
<input type="hidden" name="cx" value="004490888024521477894:lp7omq5kzsa" />
<input type="hidden" name="cof" value="FORID:9" />
<input type="hidden" name="ie" value="UTF-8" />
<input type="text" name="q" size="31" />
<input type="submit" name="sa" value="Search" />
</div>
</form>
<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&lang=en"></script></html>
~NanoSearch Videos: search videos on nanotechnology<html><form action="" id="cse-search-box">
<form action="http://www.google.com/cse" id="cse-search-box">
<div>
<input type="hidden" name="cx" value="004490888024521477894:h6nkyoluwye" />
<input type="hidden" name="ie" value="UTF-8" />
<input type="text" name="q" size="31" />
<input type="submit" name="sa" value="Search" />
</div>
</form>
<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&lang=en"></script></html>
{{textcenter{
[img[http://www.google.com/coop/intl/en/images/custom_search_sm.gif]]
~NanoSearch Scholar: search papers on nanotechnology<html><form id="searchbox_004490888024521477894:saircctgzwe" action="http://www.google.com/cse" target="_blank"><input type="hidden" name="cx" value="004490888024521477894:saircctgzwe" /><input name="q" type="text" size="35" /><input type="submit" name="sa" value="Search" /><input type="hidden" name="cof" value="FORID:0" /></form><script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=searchbox_004490888024521477894%3Asaircctgzwe"></script>
<br>
NanoSearch News: search news on nanotechnology<form id="searchbox_004490888024521477894:lp7omq5kzsa" action="http://www.google.com/cse" target="_blank"><input type="hidden" name="cx" value="004490888024521477894:lp7omq5kzsa" /><input name="q" type="text" size="35" /><input type="submit" name="sa" value="Search" /><input type="hidden" name="cof" value="FORID:0" /></form><script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=searchbox_004490888024521477894%3Alp7omq5kzsa"></script>
<br>
NanoSearch Videos: search videos on nanotechnology<form id="searchbox_004490888024521477894:h6nkyoluwye" action="http://www.google.com/cse" target="_blank"><input type="hidden" name="cx" value="004490888024521477894:h6nkyoluwye" /><input name="q" type="text" size="35" /><input type="submit" name="sa" value="Search" /><input type="hidden" name="cof" value="FORID:0" /></form><script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=searchbox_004490888024521477894%3Ah6nkyoluwye"></script><br></html>
With Google Custom Search Engine, NanoWiki created a search engine tailored to nanotechnology search
}}}
[img[http://www.yourequations.com/eq.latex?$$f(x)=\displaystyle\frac{(x+1)^2}{(x+1)}=(x+1)$$]]
<html><!--START TINYCHAT EMBED CODE--> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" language="javascript"></script> <object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0' width='725' height='800' id='tinyembed' align='top'> <param name='allowScriptAccess' value='always' /> <param name='allowFullScreen' value='true' /> <param name='movie' value='http://tinychat.com/tinyembed.swf' /> <param name='menu' value='false' /> <param name='quality' value='high' /> <param name='scale' value='noscale' /> <param name='salign' value='t' /> <param name='wmode' value='transparent' /> <param name='flashvars' value='roomVar=laboratori' /> <embed src='http://tinychat.com/tinyembed.swf' menu='false' quality='high' scale='noscale' salign='t' wmode='transparent' FlashVars='roomVar=laboratori' width='725' height='800' name='tinyembed' align='top' allowScriptAccess='always' allowFullScreen='false' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer' /> </object> <script> function do_sc (user, uid, roomVar) { var un = user; var id = uid; var room = roomVar; var roompass = 'hi'; $("#cap").html ( "<applet archive='http://tinychat.com/ScreenCap.jar' code='TinyChat.Main.class' width='0' height='0' name='TinyChat ScreenCap' MAYSCRIPT>" + "<param name='username' value='" + un + "'/>" + "<param name='userid' value='" + id + "'/>" + "<param name='roomname' value='" + room + "'/>" + "<param name='roompass' value='" + roompass + "'/>" + "<param name='postdomain' value='tinychat.com'/>" + "<param name='postlocation' value='/sc'/>" + "<param name='capturefps' value='1'/>" + "<param name='java_arguments' value='-d32'/>" + "<param name='savetofile' value='false'/>" + "</applet>" ); } function undo_sc (user, uid, roomVar) { $("#cap").html ( "" ); } </script> <div id="cap"></div> <font size="2" color="#999999"><a href="http://tinychat.com" target="_blank">Tinychat</a></font> <!--END TINYCHAT EMBED CODE--> </html>
<html><embed src="http://widgets.vodpod.com/podplayer2.swf?bg=182F5F&fg=081C45&key=2E6B4C7&title=video&url=http://vodpod.com/w/pod_videos%2Exml?id=345685%26key=2E6B4C7%26category_id=latest%26list_id=null&vote=http://widgets.vodpod.com" bgcolor="#ffffff" width="450" height="360" type="application/x-shockwave-flash" wmode="transparent"></embed><br /><a style="font-size:8pt !important" href="http://vodpod.com/site/blog_badges">get your vodpod</a></html>