<!--{{{--><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;}#sidebarOptions input{border:1px solid [[ColorPalette::PrimaryMid]];}#sidebarOptions .sliderPanel{background:[[ColorPalette::PrimaryPale]];}#sidebarOptions .sliderPanel a{border:none;color:[[ColorPalette::PrimaryMid]];}#sidebarOptions .sliderPanel a:hover{color:[[ColorPalette::Background]];background:[[ColorPalette::PrimaryMid]];}#sidebarOptions .sliderPanel a:active{color:[[ColorPalette::PrimaryMid]];background:[[ColorPalette::Background]];}.wizard{background:[[ColorPalette::PrimaryPale]];border:1px solid [[ColorPalette::PrimaryMid]];}.wizard h1{color:[[ColorPalette::PrimaryDark]];border:none;}.wizard h2{color:[[ColorPalette::Foreground]];border:none;}.wizardStep{background:[[ColorPalette::Background]];color:[[ColorPalette::Foreground]];border:1px solid [[ColorPalette::PrimaryMid]];}.wizardStep.wizardStepDone{background:[[ColorPalette::TertiaryLight]];}.wizardFooter{background:[[ColorPalette::PrimaryPale]];}.wizardFooter .status{background:[[ColorPalette::PrimaryDark]];color:[[ColorPalette::Background]];}.wizard .button{color:[[ColorPalette::Foreground]];background:[[ColorPalette::SecondaryLight]];border:1px solid;border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}.wizard .button:hover{color:[[ColorPalette::Foreground]];background:[[ColorPalette::Background]];}.wizard .button:active{color:[[ColorPalette::Background]];background:[[ColorPalette::Foreground]];border:1px solid;border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}.wizard .notChanged{background:transparent;}.wizard .changedLocally{background:#80ff80;}.wizard .changedServer{background:#8080ff;}.wizard .changedBoth{background:#ff8080;}.wizard .notFound{background:#ffff80;}.wizard .putToServer{background:#ff80ff;}.wizard .gotFromServer{background:#80ffff;}#messageArea{border:1px solid [[ColorPalette::SecondaryMid]];background:[[ColorPalette::SecondaryLight]];color:[[ColorPalette::Foreground]];}#messageArea .button{color:[[ColorPalette::PrimaryMid]];background:[[ColorPalette::SecondaryPale]];border:none;}.popupTiddler{background:[[ColorPalette::TertiaryPale]];border:2px solid [[ColorPalette::TertiaryMid]];}.popup{background:[[ColorPalette::TertiaryPale]];color:[[ColorPalette::TertiaryDark]];border-left:1px solid [[ColorPalette::TertiaryMid]];border-top:1px solid [[ColorPalette::TertiaryMid]];border-right:2px solid [[ColorPalette::TertiaryDark]];border-bottom:2px solid [[ColorPalette::TertiaryDark]];}.popup hr{color:[[ColorPalette::PrimaryDark]];background:[[ColorPalette::PrimaryDark]];border-bottom:1px;}.popup li.disabled{color:[[ColorPalette::TertiaryMid]];}.popup li a,.popup li a:visited{color:[[ColorPalette::Foreground]];border:none;}.popup li a:hover{background:[[ColorPalette::SecondaryLight]];color:[[ColorPalette::Foreground]];border:none;}.popup li a:active{background:[[ColorPalette::SecondaryPale]];color:[[ColorPalette::Foreground]];border:none;}.popupHighlight{background:[[ColorPalette::Background]];color:[[ColorPalette::Foreground]];}.listBreak div{border-bottom:1px solid [[ColorPalette::TertiaryDark]];}.tiddler .defaultCommand{font-weight:bold;}.shadow .title{color:[[ColorPalette::TertiaryDark]];}.title{color:[[ColorPalette::SecondaryDark]];}.subtitle{color:[[ColorPalette::TertiaryDark]];}.toolbar{color:[[ColorPalette::PrimaryMid]];}.toolbar a{color:[[ColorPalette::TertiaryLight]];}.selected .toolbar a{color:[[ColorPalette::TertiaryMid]];}.selected .toolbar a:hover{color:[[ColorPalette::Foreground]];}.tagging,.tagged{border:1px solid [[ColorPalette::TertiaryPale]];background-color:[[ColorPalette::TertiaryPale]];}.selected .tagging,.selected .tagged{background-color:[[ColorPalette::TertiaryLight]];border:1px solid [[ColorPalette::TertiaryMid]];}.tagging .listTitle,.tagged .listTitle{color:[[ColorPalette::PrimaryDark]];}.tagging .button,.tagged .button{border:none;}.footer{color:[[ColorPalette::TertiaryLight]];}.selected .footer{color:[[ColorPalette::TertiaryMid]];}.sparkline{background:[[ColorPalette::PrimaryPale]];border:0;}.sparktick{background:[[ColorPalette::PrimaryDark]];}.error,.errorButton{color:[[ColorPalette::Foreground]];background:[[ColorPalette::Error]];}.warning{color:[[ColorPalette::Foreground]];background:[[ColorPalette::SecondaryPale]];}.lowlight{background:[[ColorPalette::TertiaryLight]];}.zoomer{background:none;color:[[ColorPalette::TertiaryMid]];border:3px solid [[ColorPalette::TertiaryMid]];}.imageLink,#displayArea .imageLink{background:transparent;}.annotation{background:[[ColorPalette::SecondaryLight]];color:[[ColorPalette::Foreground]];border:2px solid [[ColorPalette::SecondaryMid]];}.viewer .listTitle{list-style-type:none;margin-left:-2em;}.viewer .button{border:1px solid [[ColorPalette::SecondaryMid]];}.viewer blockquote{border-left:3px solid [[ColorPalette::TertiaryDark]];}.viewer table,table.twtable{border:2px solid [[ColorPalette::TertiaryDark]];}.viewer th,.viewer thead td,.twtable th,.twtable thead td{background:[[ColorPalette::SecondaryMid]];border:1px solid [[ColorPalette::TertiaryDark]];color:[[ColorPalette::Background]];}.viewer td,.viewer tr,.twtable td,.twtable tr{border:1px solid [[ColorPalette::TertiaryDark]];}.viewer pre{border:1px solid [[ColorPalette::SecondaryLight]];background:[[ColorPalette::SecondaryPale]];}.viewer code{color:[[ColorPalette::SecondaryDark]];}.viewer hr{border:0;border-top:dashed 1px [[ColorPalette::TertiaryDark]];color:[[ColorPalette::TertiaryDark]];}.highlight,.marked{background:[[ColorPalette::SecondaryLight]];}.editor input{border:1px solid [[ColorPalette::PrimaryMid]];}.editor textarea{border:1px solid [[ColorPalette::PrimaryMid]];width:100%;}.editorFooter{color:[[ColorPalette::TertiaryMid]];}.readOnly{background:[[ColorPalette::TertiaryPale]];}#backstageArea{background:[[ColorPalette::Foreground]];color:[[ColorPalette::TertiaryMid]];}#backstageArea a{background:[[ColorPalette::Foreground]];color:[[ColorPalette::Background]];border:none;}#backstageArea a:hover{background:[[ColorPalette::SecondaryLight]];color:[[ColorPalette::Foreground]];}#backstageArea a.backstageSelTab{background:[[ColorPalette::Background]];color:[[ColorPalette::Foreground]];}#backstageButton a{background:none;color:[[ColorPalette::Background]];border:none;}#backstageButton a:hover{background:[[ColorPalette::Foreground]];color:[[ColorPalette::Background]];border:none;}#backstagePanel{background:[[ColorPalette::Background]];border-color:[[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}.backstagePanelFooter .button{border:none;color:[[ColorPalette::Background]];}.backstagePanelFooter .button:hover{color:[[ColorPalette::Foreground]];}#backstageCloak{background:[[ColorPalette::Foreground]];opacity:.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:.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;}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:0;top:0;}.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 .5em .5em .5em;font-size:1.1em;}#sidebar{position:absolute;right:3px;width:16em;font-size:.9em;}#sidebarOptions{padding-top:.3em;}#sidebarOptions a{margin:0 .2em;padding:.2em .3em;display:block;}#sidebarOptions input{margin:.4em .5em;}#sidebarOptions .sliderPanel{margin-left:1em;padding:.5em;font-size:.85em;}#sidebarOptions .sliderPanel a{font-weight:bold;display:inline;padding:0;}#sidebarOptions .sliderPanel input{margin:0 0 .3em 0;}#sidebarTabs .tabContents{width:15em;overflow:hidden;}.wizard{padding:.1em 1em 0 2em;}.wizard h1{font-size:2em;font-weight:bold;background:none;padding:0;margin:.4em 0 .2em;}.wizard h2{font-size:1.2em;font-weight:bold;background:none;padding:0;margin:.4em 0 .2em;}.wizardStep{padding:1em 1em 1em 1em;}.wizard .button{margin:.5em 0 0;font-size:1.2em;}.wizardFooter{padding:.8em .4em .8em 0;}.wizardFooter .status{padding:0 .4em;margin-left:1em;}.wizard .button{padding:.1em .2em;}#messageArea{position:fixed;top:2em;right:0;margin:.5em;padding:.5em;z-index:2000;_position:absolute;}.messageToolbar{display:block;text-align:right;padding:.2em;}#messageArea a{text-decoration:underline;}.tiddlerPopupButton{padding:.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:.4em;}.popup hr{display:block;height:1px;width:auto;padding:0;margin:.2em 0;}.popup li.disabled{padding:.4em;}.popup li a{display:block;padding:.4em;font-weight:normal;cursor:pointer;}.listBreak{font-size:1px;line-height:1px;}.listBreak div{margin:2px 0;}.tabset{padding:1em 0 0 .5em;}.tab{margin:0 0 0 .25em;padding:2px;}.tabContents{padding:.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:.2em .4em;}.tagging{margin:.5em .5em .5em 0;float:left;display:none;}.isTag .tagging{display:block;}.tagged{margin:.5em;float:right;}.tagging,.tagged{font-size:.9em;padding:.25em;}.tagging ul,.tagged ul{list-style:none;margin:.25em;padding:0;}.tagClear{clear:both;}.footer{font-size:.9em;}.footer li{display:inline;}.annotation{padding:.5em;margin:.5em;}* html .viewer pre{width:99%;padding:0 0 1em 0;}.viewer{line-height:1.4em;padding-top:.5em;}.viewer .button{margin:0 .25em;padding:0 .25em;}.viewer blockquote{line-height:1.5em;padding-left:.8em;margin-left:2.5em;}.viewer ul,.viewer ol{margin-left:.5em;padding-left:1.5em;}.viewer table,table.twtable{border-collapse:collapse;margin:.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:.85em;margin:.8em 1.0em;}table.listView th,table.listView td,table.listView tr{padding:0 3px 0 3px;}.viewer pre{padding:.5em;margin-left:.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:.25em 0;font-size:.9em;}.editorFooter .button{padding-top:0;padding-bottom:0;}.fieldsetFix{border:0;padding:0;margin:1px 0;}.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:.3em .5em;}#backstageToolbar{position:relative;}#backstageArea a{font-weight:bold;margin-left:.5em;padding:.3em .5em;}#backstageButton{display:none;position:absolute;z-index:175;top:0;right:0;}#backstageButton a{padding:.1em .4em;margin:.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:.2em;float:right;}.backstagePanelFooter a{padding:.2em .4em;}#backstageCloak{display:none;z-index:20;position:absolute;width:100%;height:100px;}.whenBackstage{display:none;}.backstageVisible .whenBackstage{display:block;}
body{font-size:.8em;}#sidebarOptions{font-size:1.05em;}#sidebarOptions a{font-style:normal;}#sidebarOptions .sliderPanel{font-size:.95em;}.subtitle{font-size:.8em;}.viewer table.listView{font-size:.95em;}
@media print{#mainMenu,#sidebar,#messageArea,.toolbar,#backstageButton,#backstageArea{display:none!important;}#displayArea{margin:1em 1em 0;}noscript{display:none;}}
<!--{{{--><div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'><div class='headerShadow'><span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span></div><div class='headerForeground'><span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span></div></div><div id='mainMenu' refresh='content' tiddler='MainMenu'></div><div id='sidebar'><div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div><div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div></div><div id='displayArea'><div id='messageArea'></div><div id='tiddlerDisplay'></div></div><!--;}}}-->
<!--{{{--><div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div><div class='title' macro='view title'></div><div class='subtitle'><span macro='view modifier link'></span>,<span macro='view modified date'></span>(<span macro='message views.wikified.createdPrompt'></span><span macro='view created date'></span>)</div><div class='tagging' macro='tagging'></div><div class='tagged' macro='tags'></div><div class='viewer' macro='view text wikified'></div><div class='tagClear'></div><!--;}}}-->
<!--{{{--><div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div><div class='title' macro='view title'></div><div class='editor' macro='edit title'></div><div macro='annotations'></div><div class='editor' macro='edit text'></div><div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser 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>>
<html><nowiki><form enctype="multipart/form-data">
<input name="title" style="width:260px;" value="title" onfocus="this.select()"><br>
<input name="autor" style="width:260px;" value="autor" onfocus="this.select()"><br>
<input type=hidden name="user">
<input type=hidden name="when">
<input type=hidden name="text">
<input type=hidden name="fonte" value="www">
<select name="tipo" style="width:100px;">
<option>pdf</option>
<option>som</option>
<option>foto</option>
<option>video</option>
</select><br>
<input type="file" name="url" id="url"><br>
<input name="tags" style="width:260px;" value="tags" onfocus="this.select()"><br>
<textarea name="comment" rows="4" cols="40" style="width:260px;" value=" " ></textarea><br>
<input type="button" value="Criar-la" onclick='
    var title=this.form.title.value;
    var who=localStorage.username;
this.form.user.value=who;
alert (this.form.url.value);
    var when=new Date();
this.form.when.value=when;
    var topic=localStorage.topico;
   var etiquetas=who+" "+this.form.tipo.value+" "+this.form.tags.value+" local slicedRef";
var text="|Link|Reciclagem/Fotos/"+this.form.url.value+"|\n|Autor|"+this.form.autor.value+"|\n|Fonte|Local|\n|Tipo|"+this.form.tipo.value+"|\n|Tema|"+topic+"|\n!!Comentarios\n"+this.form.comment.value;
    var fields={};
    store.saveTiddler(title,title,text,who,when,etiquetas,fields);
    autoSaveChanges(); 
'></form></html> 
''Notas''
{{small{......o sistema vem buscar um arquivo a dentro o disco/servidor local, a dentro uma pasta (Fotos) na mesma pasta desse sistema - e por isso, eles NÂO seram disponiveis por outros usuarios do sistema, no saco que voce não tem como upload os arquivos ou servidor - e esse servico será bem restrito!!!}}}
<html><nowiki><form method=POST action="http://www.unigaia-brasil.org/uploadPDF/ref_sql_mail.php" target=responseframe>
<input name="title" style="width:220px;" value="title" onfocus="this.select()"><br>
<input name="autor" style="width:220px;" value="autor" onfocus="this.select()"><br>
<input name="pub" style="width:220px;" value="editora" onfocus="this.select()"><br>
<input type=hidden name="user">
<input type=hidden name="when">
<input type=hidden name="text">
<input type=text name="referencia" style="width:220px;" value="referencia" onfocus="this.select()"><br>
<input type=hidden name="etiqueta">
<input type=hidden name="fonte" value="www">
<input name="url" style="width:220px;" value="url" onfocus="this.select()"><br>
<select name="tipo" style="width:100px;">
<option>pdf</option>
<option>html</option>
<option>video</option>
<option>som</option>
<option>foto</option>
</select><br>
<input type="text" name="tags" style="width:220px;" onfocus="this.select()"><br>
<textarea name="comment" rows="4" cols="44" style="width:220px;" value=" " ></textarea><br>
<input type="submit" value="Criar-la" onclick='
    var title=this.form.title.value;
    var who=localStorage.username;
this.form.user.value=who;
    var when=new Date();
this.form.when.value=when;
var topic=localStorage.rightparameters;
this.form.etiqueta.value=topic;
   var etiquetas=who+" "+this.form.tipo.value+" "+this.form.referencia.value+" "+this.form.etiqueta.value+" slicedRef";
var text="|Link|"+this.form.url.value+"|\n|Autor|"+this.form.autor.value+"|\n|Editora|"+this.form.pub.value+"|\n|Fonte|"+this.form.fonte.value+"|\n|Tipo|"+this.form.tipo.value+"|\n!!Comentarios\n"+this.form.comment.value;
    var fields={};
    store.saveTiddler(title,title,text,who,when,etiquetas,fields);
    autoSaveChanges(); 
'></form><iframe src="" name="responseframe" id="responseframe" marginheight=0 style="display:block;border:0;padding:0;margin:0;width:100%;height:2em;"></iframe></html>''Notas''
{{fine{As referencias seram etiquetadas com o titulo do topico agora aberta na janela principal / ou mais recentemente aberta.
Adicionando Refs as Commentarios....não incluira texto, mensagem !}}}
txtCurso / txtPage(referencia) / txtTema(Etiquetas)
!!yes
{{ref{<<showPopup tiddler:Answer##up label:Up width:500px popupClass:sticky>><<setIcon ../Logos/yes.png "" notext>>}}}
!!no
{{ref{<<showPopup tiddler:Answer##down label:down width:500px popupClass:sticky>><<setIcon ../Logos/no.png "" notext>>}}}
!!up
..então você gosta esse foto.....e pensa que algumas das construções no novo nucleo podem aparecer como isso...por minimo no sentido do sentimento do foto...não necessariamente uma copia identical dele!!!!

Mais, porque.... qual carateristicas ou sentimentos tem esse foto...te explica!!!!<script>config.options.txtLike="Gosta";</script><<tiddler Answer##send>>
!!down
...hummmm! se parece você não esta bem impressionado com esse foto...porque?<script>config.options.txtLike="NaoGosta";</script><<tiddler Answer##send>>

!!send
<html><form>
<textarea name="coment" rows="5" cols="50"></textarea><br>
<input type=text name=nome value="seu nome" onfocus="this.select()">
<input type=button value=mandar onclick=' 
var date=new Date();
var when=date.formatString("YYYY/0MM/0DD_0hh.0mm");
var title=this.form.nome.value+"_"+when;
var who=this.form.nome.value;
var text="/%\n|Foto|"+config.options.txtFoto+"|\n|Who|"+who+"|\n|Like|"+config.options.txtLike+"|\n\n%/"+this.form.coment.value;
var tags="resposta "+config.options.txtFoto+" "+who;
store.saveTiddler(title, title, text, who, date, tags, null);
autoSaveChanges();
'>
</form></html>

!!subItem
{{ref{<<showPopup tiddler:Answer##sub label:SubItem width:400px popupClass:sticky>><<setIcon ../Logos/add_notes.png "" notext>>}}}
!!sub
<html><form><input type=text name=title><br>
<input type=text name=etiqueta><br>
<textarea name=comment cols="50" rows="6"></textarea><br>
<input type=button value=criar-lo onclick='
var title=this.form.title.value;
var text="/%\n|Etiqueta|"+this.form.etiqueta.value+"|\n%/"+this.form.comment.value;
var tags="subItem Etiqueta [["+localStorage.username+"]] [["+localStorage.rightparameters+"]]";
store.saveTiddler(title, title, text, localStorage.username, new Date(), tags, null);
autoSaveChanges();
story.refreshTiddler(localStorage.rightparameters,DEFAULT_VIEW_TEMPLATE,true);
'></form></html>
!!comment
{{ref{<<showPopup tiddler:Answer##com label:Comentario width:400px popupClass:sticky>><<setIcon ../Logos/docYellow.png "" notext>>}}}
!!com
<html><form><input type=text name=title><br>
<textarea name=comment cols="50" rows="6"></textarea><br>
<input type=button value=criar-lo onclick='
var title=this.form.title.value;
var text=this.form.comment.value;
var tags="comment [["+localStorage.username+"]] [["+localStorage.rightparameters+"]]";
store.saveTiddler(title, title, text, localStorage.username, new Date(), tags, null);
autoSaveChanges();
story.refreshTiddler(localStorage.rightparameters,DEFAULT_VIEW_TEMPLATE,true);
'></form></html>
!!addref
{{ref{<<showPopup tiddler:AddRef label:AddRef width:300px popupClass:sticky>><<setIcon ../Logos/world_link.png "" notext>>}}}
!!upload
{{ref{<<showPopup tiddler:Upload_PDF label:UploadPDF width:300px popupClass:sticky>><<setIcon ../Logos/upload.png "" notext>>}}}
!!local
{{ref{<<showPopup tiddler:AddLocal label:UploadPDF width:300px popupClass:sticky>><<setIcon ../Logos/hd.png "" notext>>}}}
!!end
{{fine{<<breadcrumbs " | ">>}}}
/***
|Name|BreadcrumbsPlugin|
|Author|Eric Shulman|
|Source|http://www.TiddlyTools.com/#BreadcrumbsPlugin|
|Documentation|http://www.TiddlyTools.com/#BreadcrumbsPluginInfo|
|Version|2.1.2|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|list/jump to tiddlers viewed during this session plus "back" button/macro|
This plugin provides a list of links to all tiddlers opened during the session, creating a "trail of breadcrumbs" from one tiddler to the next, allowing you to quickly navigate to any previously viewed tiddler, or select 'home' to reset the display to the initial set of tiddlers that were open at the start of the session (i.e., when the document was loaded into the browser).
!!!!!Documentation
<<<
see [[BreadcrumbsPluginInfo]]
<<<
!!!!!Configuration
<<<
<<option chkCreateDefaultBreadcrumbs>> automatically create breadcrumbs display (if needed)
<<option chkShowBreadcrumbs>> show/hide breadcrumbs display
<<option chkReorderBreadcrumbs>> re-order breadcrumbs when visiting a previously viewed tiddler
<<option chkBreadcrumbsHideHomeLink>> omit 'Home' link from breadcrumbs display
<<option chkBreadcrumbsSave>> prompt to save breadcrumbs when 'Home' link is pressed
<<option chkShowStartupBreadcrumbs>> show breadcrumbs for 'startup' tiddlers
<<option chkBreadcrumbsReverse>> show breadcrumbs in reverse order (most recent first)
<<option chkBreadcrumbsLimit>> limit breadcrumbs display to {{twochar{<<option txtBreadcrumbsLimit>>}}} items
<<option chkBreadcrumbsLimitOpenTiddlers>> limit open tiddlers to {{twochar{<<option txtBreadcrumbsLimitOpenTiddlers>>}}} items

<<<
!!!!!Revisions
<<<
2009.10.19 [2.1.2] code reduction
| Please see [[BreadcrumbsPluginInfo]] for previous revision details |
2006.02.01 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.BreadcrumbsPlugin= {major: 2, minor: 1, revision: 2, date: new Date(2009,10,19)};

var defaults={
	chkShowBreadcrumbs:		true,
	chkReorderBreadcrumbs:		true,
	chkCreateDefaultBreadcrumbs:	true,
	chkShowStartupBreadcrumbs:	false,
	chkBreadcrumbsReverse:		false,
	chkBreadcrumbsLimit:		false,
	txtBreadcrumbsLimit:		5,
	chkBreadcrumbsLimitOpenTiddlers:false,
	txtBreadcrumbsLimitOpenTiddlers:3,
	chkBreadcrumbsHideHomeLink:	false,
	chkBreadcrumbsSave:		false,
	txtBreadcrumbsHomeSeparator:	' | ',
	txtBreadcrumbsCrumbSeparator:	' > '
};
for (var id in defaults) if (config.options[id]===undefined)
	config.options[id]=defaults[id];

config.macros.breadcrumbs =  {
	crumbs: [], // the list of current breadcrumbs
	askMsg: "Save current breadcrumbs before clearing?\n"
		+"Press OK to save, or CANCEL to continue without saving.",
	saveMsg: 'Enter the name of a tiddler in which to save the current breadcrumbs',
	saveTitle: 'SavedBreadcrumbs',
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var area=createTiddlyElement(place,"span",null,"breadCrumbs",null);
		area.setAttribute("homeSep",params[0]||config.options.txtBreadcrumbsHomeSeparator);
		area.setAttribute("crumbSep",params[1]||config.options.txtBreadcrumbsCrumbSeparator);
		this.render(area);
	},
	add: function (title) {
		var thisCrumb = title;
		var ind = this.crumbs.indexOf(thisCrumb);
		if(ind === -1)
			this.crumbs.push(thisCrumb);
		else if (config.options.chkReorderBreadcrumbs)
			this.crumbs.push(this.crumbs.splice(ind,1)[0]); // reorder crumbs
		else
			this.crumbs=this.crumbs.slice(0,ind+1); // trim crumbs
		if (config.options.chkBreadcrumbsLimitOpenTiddlers)
			this.limitOpenTiddlers();
		this.refresh();
		return false;
	},
	getAreas: function() {
		var crumbAreas=[];
		// find all DIVs with classname=="breadCrumbs"
		var all=document.getElementsByTagName("*");
		for (var i=0; i<all.length; i++)
			try{ if (hasClass(all[i],"breadCrumbs")) crumbAreas.push(all[i]); } catch(e) {;}
		// or, find single DIV w/fixed ID (backward compatibility)
		var byID=document.getElementById("breadCrumbs")
		if (byID && !hasClass(byID,"breadCrumbs")) crumbAreas.push(byID);
		if (!crumbAreas.length && config.options.chkCreateDefaultBreadcrumbs) {
			// no crumbs display... create one
			var defaultArea = createTiddlyElement(null,"span",null,"breadCrumbs",null);
		 	defaultArea.style.display= "none";
			var targetArea= document.getElementById("tiddlerDisplay");
		 	targetArea.parentNode.insertBefore(defaultArea,targetArea);
			crumbAreas.push(defaultArea);
		}
		return crumbAreas;
	},
	refresh: function() {
		var crumbAreas=this.getAreas();
		for (var i=0; i<crumbAreas.length; i++) {
			crumbAreas[i].style.display = config.options.chkShowBreadcrumbs?"block":"none";
			removeChildren(crumbAreas[i]);
			this.render(crumbAreas[i]);
		}
	},
	render: function(here) {
		var co=config.options; var out=""
		if (!co.chkBreadcrumbsHideHomeLink) {
			createTiddlyButton(here,"Home",null,this.home,"tiddlyLink tiddlyLinkExisting");
			out+=here.getAttribute("homeSep")||config.options.txtBreadcrumbsHomeSeparator;
		}
		for (c=0; c<this.crumbs.length; c++) // remove non-existing tiddlers from crumbs
			if (!store.tiddlerExists(this.crumbs[c]) && !store.isShadowTiddler(this.crumbs[c]))
				this.crumbs.splice(c,1);
		var count=this.crumbs.length;
		if (co.chkBreadcrumbsLimit && co.txtBreadcrumbsLimit<count) count=co.txtBreadcrumbsLimit;
		var list=[];
		for (c=this.crumbs.length-count; c<this.crumbs.length; c++) list.push('[['+this.crumbs[c]+']]');
		if (co.chkBreadcrumbsReverse) list.reverse();
		out+=list.join(here.getAttribute("crumbSep")||config.options.txtBreadcrumbsCrumbSeparator);
		wikify(out,here);
	},
	home: function() {
		var cmb=config.macros.breadcrumbs;
		if (config.options.chkBreadcrumbsSave && confirm(cmb.askMsg)) cmb.saveCrumbs();
		story.closeAllTiddlers(); restart();
		cmb.crumbs = []; var crumbAreas=cmb.getAreas();
		for (var i=0; i<crumbAreas.length; i++) crumbAreas[i].style.display = "none";
		return false;
	},
	saveCrumbs: function() {
		var tid=prompt(this.saveMsg,this.saveTitle); if (!tid||!tid.length) return; // cancelled by user
		var t=store.getTiddler(tid);
		if(t && !confirm(config.messages.overwriteWarning.format([tid]))) return;
		var who=config.options.txtUserName;
		var when=new Date();
		var text='[['+this.crumbs.join(']]\n[[')+']]';
		var tags=t?t.tags:[]; tags.pushUnique('story');
		var fields=t?t.fields:{};
		store.saveTiddler(tid,tid,text,who,when,tags,fields);
		story.displayTiddler(null,tid);
		story.refreshTiddler(tid,null,true);
		displayMessage(tid+' has been '+(t?'updated':'created'));
	},
	limitOpenTiddlers: function() {
		var limit=config.options.txtBreadcrumbsLimitOpenTiddlers; if (limit<1) limit=1;
		for (c=this.crumbs.length-1; c>=0; c--) {
			var tid=this.crumbs[c];
			var elem=document.getElementById(story.idPrefix+tid);
			if (elem) { // tiddler is displayed
				if (limit <=0) { // display limit has been reached
					if (elem.getAttribute("dirty")=="true") { // tiddler is being edited
						var msg= "'"+tid+"' is currently being edited.\n\n"
							+"Press OK to save and close this tiddler\n"
							+"or press Cancel to leave it opened";
						if (confirm(msg)) {
							story.saveTiddler(tid);
							story.closeTiddler(tid);
						}
					}
					else story.closeTiddler(this.crumbs[c]);
				}
				limit--;
			}
		}
	}
};
//}}}
// // PreviousTiddler ('back') command and macro
//{{{
config.commands.previousTiddler = {
	text: 'back',
	tooltip: 'view the previous tiddler',
	handler: function(event,src,title) {
		var here=story.findContainingTiddler(src); if (!here) return;
		var crumbs=config.macros.breadcrumbs.crumbs;
		if (crumbs.length<2) config.macros.breadcrumbs.home();
		else story.displayTiddler(here,crumbs[crumbs.length-2]);
		return false;
	}
};
config.macros.previousTiddler= {
	label: 'back',
	prompt: 'view the previous tiddler',
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var label=params.shift(); if (!label) label=this.label;
		var prompt=params.shift(); if (!prompt) prompt=this.prompt;
		createTiddlyButton(place,label,prompt,function(ev){
			return config.commands.previousTiddler.handler(ev,this)
		});
	}
}
//}}}
// // HIJACKS
//{{{
// update crumbs when a tiddler is displayed
if (Story.prototype.breadCrumbs_coreDisplayTiddler==undefined)
	Story.prototype.breadCrumbs_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler) {
	var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
	this.breadCrumbs_coreDisplayTiddler.apply(this,arguments);
	if (!startingUp || config.options.chkShowStartupBreadcrumbs)
		config.macros.breadcrumbs.add(title);
}

// update crumbs when a tiddler is deleted
if (TiddlyWiki.prototype.breadCrumbs_coreRemoveTiddler==undefined)
	TiddlyWiki.prototype.breadCrumbs_coreRemoveTiddler=TiddlyWiki.prototype.removeTiddler;
TiddlyWiki.prototype.removeTiddler= function() {
	this.breadCrumbs_coreRemoveTiddler.apply(this,arguments);
	config.macros.breadcrumbs.refresh();
}
//}}}
O PDC - Curso de Certificado de Permacultura em Design/'Permaculture Design Certificate é o curso básico e fundamental do movimento internacional de Permacultura.

O currículo deste curso foi escrito por Bill Mollison em 1984, sendo ainda o único curso internacionalmente reconhecido pelo movimento de Permacultura. No entanto, o grupo de forma participativa define os temas e a ordem a ser trabalhada durante os cursos de PDC.

O PDC tem como carga horária, o mínimo de 72 horas, podendo ser apresentado nos seguintes formatos:
- tempo integral, normalmente um curso vivencial e residencial de 12 dias;
- tempo parcial de 5 finais de semanas;
- tempo parcial de 4 horas semanais (a noite) por 4 meses.

Por definição um Permacultor é uma pessoa que completou um PDC com um professor reconhecido. E somente pessoas com PDC podem formalmente ( no sentido comercial ou como professor) usar a palavra Permacultura.

O PDC residencial tem uma vantagem uma vez que a experiência vivencial formará um grupo sólido com amizade profunda. Nas áreas locais este grupo poderá continuar a ter contacto e futuramente formar um Instituto de Permacultura ou outra forma de organização local para continuar e aumentar as atividades de Permacultura em sua localidade.

Em um curso com duração de 12 dias há uma certa limitação no aprofundamento do conteúdo. Os participantes com interesse em aprofundar seu conhecimento e práticas podem continuar seus estudos além do Diplomado em Permacultura.

A ~UniGaia-Brasil apresenta cursos de permacultura em diversas localidades e em parceria com organizações afins. Os cursos terão normalmente o formato de 12 dias (para minimizar os custos com viagens e tempo dos facilitadores). Caso você tenha interesse nestas possibilidades, favor contactar UniGaia-Brasil .
{{medium{~UniGaia-Brasil.org, Rua Alberto de Abreu #368, CEP 37200-000, lavras, MG, Brasil}}}

<html><iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com.br/maps?f=q&amp;source=s_q&amp;hl=pt-BR&amp;geocode=&amp;q=unigaia-brasil.org&amp;sll=-14.239424,-53.186502&amp;sspn=42.424416,82.880859&amp;t=h&amp;ie=UTF8&amp;hq=unigaia-brasil.org&amp;hnear=&amp;ll=-21.242872,-44.98867&amp;spn=0.071946,0.071946&amp;output=embed"></iframe><br /><small><a href="http://maps.google.com.br/maps?f=q&amp;source=embed&amp;hl=pt-BR&amp;geocode=&amp;q=unigaia-brasil.org&amp;sll=-14.239424,-53.186502&amp;sspn=42.424416,82.880859&amp;t=h&amp;ie=UTF8&amp;hq=unigaia-brasil.org&amp;hnear=&amp;ll=-21.242872,-44.98867&amp;spn=0.071946,0.071946" style="color:#0000FF;text-align:left">Exibir mapa ampliado</a></small></html>
/***
|Name|CoreTweaks|
|Source|http://www.TiddlyTools.com/#CoreTweaks|
|Version||
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.2.0|
|Type|plugin|
|Description|a small collection of overrides to TW core functions|
This tiddler contains small changes to TW core functions that correct or enhance standard features or behaviors.
***/
//{{{
// calculate TW version number - used to determine which tweaks should be applied
var ver=version.major+version.minor/10+version.revision/100;
//}}}
/***
----

***/
// // closed: won't fix //(leave as core tweaks)//
// // {{block{
/***
!!!637 TiddlyLink tooltip - custom formatting
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/637 - CLOSED: WON'T FIX
This tweak modifies the tooltip format that appears when you mouseover a link to a tiddler.  It adds an option to control the date format, as well as displaying the size of the tiddler (in bytes)

Tiddler link tooltip format:
{{stretch{<<option txtTiddlerLinkTootip>>}}}
^^where: %0=title, %1=username, %2=modification date, %3=size in bytes, %4=description slice, %5=first N characters of tiddler content^^
Tiddler link tooltip date format:
{{stretch{<<option txtTiddlerLinkTooltipDate>>}}}
Tiddler excerpt limit (chars):
{{stretch{<<option txtTiddlerLinkTooltipLimit>>}}}
***/
//{{{
config.messages.tiddlerLinkTooltip='%0 - %1, %2 (%3 bytes) - %4';
config.messages.tiddlerLinkTooltipDate='DDD, MMM DDth YYYY 0hh12:0mm AM';
config.messages.tiddlerLinkTooltipLimit=50;

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

Tiddler.prototype.getSubtitle = function() {
	var modifier = this.modifier;
	if(!modifier) modifier = config.messages.subtitleUnknown;
	var modified = this.modified;
	if(modified) modified = modified.formatString(config.options.txtTiddlerLinkTooltipDate);
	else modified = config.messages.subtitleUnknown;
	var descr=store.getTiddlerSlice(this.title,'Description')||'';
	var txt=this.text.substr(0,config.options.txtTiddlerLinkTooltipLimit);
	if (this.text.length>config.options.txtTiddlerLinkTooltipLimit) txt+="...";
	return config.options.txtTiddlerLinkTootip.format([this.title,modifier,modified,this.text.length,descr,txt]);
};
//}}}
// // }}}}}}// // {{block{
/***
!!!607 add HREF link on permaview command
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/607 - CLOSED: WON'T FIX
This tweak automatically sets the HREF for the 'permaview' sidebar command link so you can use the 'right click' context menu for faster, easier bookmarking.  Note that this does ''not'' automatically set the permaview in the browser's current location URL... it just sets the HREF on the command link.  You still have to click the link to apply the permaview.
***/
//{{{
config.macros.permaview.handler = function(place)
{
	var btn=createTiddlyButton(place,this.label,this.prompt,this.onClick);
	addEvent(btn,'mouseover',this.setHREF);
	addEvent(btn,'focus',this.setHREF);
};
config.macros.permaview.setHREF = function(event){
	var links = [];
	story.forEachTiddler(function(title,element) {
		links.push(String.encodeTiddlyLink(title));
	});
	var newURL=document.location.href;
	var hashPos=newURL.indexOf('#');
	if (hashPos!=-1) newURL=newURL.substr(0,hashPos);
	this.href=newURL+'#'+encodeURIComponent(links.join(' '));
}
//}}}
// // }}}}}}// // {{block{
/***
!!!458 add permalink-like HREFs on internal TiddlyLinks
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/458 - CLOSED: WON'T FIX
This tweak assigns a permalink-like HREF to internal Tiddler links (which normally do not have any HREF defined).  This permits the link's context menu (right-click) to include 'open link in another window/tab' command.  Based on a request from Dustin Spicuzza.
***/
//{{{
window.coreTweaks_createTiddlyLink=window.createTiddlyLink;
window.createTiddlyLink=function(place,title,includeText,theClass,isStatic,linkedFromTiddler,noToggle)
{
	// create the core button, then add the HREF (to internal links only)
	var link=window.coreTweaks_createTiddlyLink.apply(this,arguments);
	if (!isStatic)
		link.href=document.location.href.split('#')[0]+'#'+encodeURIComponent(String.encodeTiddlyLink(title));
	return link;
}
//}}}
// // }}}}}}
// // to be fixed in 2.6.0:
// // {{block{
/***
!!!1151 adjust popup placement when root element is in scrolled DIV
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/1151
When a popup link is placed inside a DIV with style "overflow:scroll" or "overflow:auto" and that DIV is then scrolled, the position of the resulting popup appears further down the page that intended, because it is not adjusting for the relative scroll offset of the containing DIV.  This tweak patches the Popup.place() function to calculate and subtract the current scroll offset from the computed popup position, so that it appears in the correct location on the page.

Test case: //(scroll to the bottom of this DIV and click on "test popup")//
{{groupbox{
 <<tiddler ScrollBox with: CoreTweaks##1151test 12em>>}}}/%
!1151test
<<tiddler About>>
<<showPopup tiddler:About label:"test popup" tip:About popupClass:sticky>>
!end
%/
***/
//{{{
window.findScrollOffsetX=function(obj) {
	var x=0;
	while(obj) {
		if (obj.scrollLeft && obj.nodeName!='HTML')
			x+=obj.scrollLeft;
		obj=obj.parentNode;
	}
	return -x;
}

window.findScrollOffsetY=function(obj) {
	var y=0;
	while(obj) {
		if (obj.scrollTop && obj.nodeName!='HTML')
			y+=obj.scrollTop;
		obj=obj.parentNode;
	}
	return -y;
}

var fn=Popup.place.toString();
if (fn.indexOf('findScrollOffsetX')==-1) { // only once
	fn=fn.replace(/var\s*rootLeft\s*=/,'var rootLeft = window.findScrollOffsetX(root) +');
	fn=fn.replace(/var\s*rootTop\s*=/,'var rootTop = window.findScrollOffsetY(root) +');
	eval('Popup.place='+fn);
}
//}}}
// // }}}}}}// // {{block{
/***
!!!1147 tiddler macro with params does not refresh
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/1147
when the {{{<<tiddler SomeTiddler>>}}} macro is handled, the resulting span has extra attributes: {{{refresh='content'}}} and {{{tiddler='SomeTiddler'}}}.  If SomeTiddler is changed, {{{store.notify('SomeTiddler')}}} triggers {{{refreshDisplay()}}}, which automatically re-renders transcluded content in any span that has these extra attributes.  However, when additional arguments are passed by using {{{<<tiddler SomeTiddler with: arg arg arg ...>>}}} then the resulting span does NOT get the extra attributes noted above and, as a consequence, the transcluded content is not being refreshed, even though the underlying tiddler has changed

To correct this, in {{{config.macros.tiddler.handler}}}:
*set the 'refresh' and 'tiddler' attributes even when arguments are present in the macro
*store the arguments themselves in an attribute (e.g, 'args'), using as a space-separated, bracketed list
Then, in {{{config.refreshers.content}}}:
*retrieve the stored arguments (if any) and the tiddler source
*substitute arguments into source and re-render the span with the updated content

***/
//{{{
config.refreshers.content=function(e,changeList) {
		var title = e.getAttribute("tiddler");
		var force = e.getAttribute("force");
		var args = e.getAttribute("args"); // ADDED
		if(force != null || changeList == null || changeList.indexOf(title) != -1) {
			removeChildren(e);
//			wikify(store.getTiddlerText(title,""),e,null,store.fetchTiddler(title)); // REMOVED
			config.macros.tiddler.transclude(e,title,args); // ADDED
			return true;
		} else
			return false;
};

config.macros.tiddler.handler=function(place,macroName,params,wikifier,paramString,tiddler) {
	params = paramString.parseParams("name",null,true,false,true);
	var names = params[0]["name"];
	var tiddlerName = names[0];
	var className = names[1] || null;
	var args = params[0]["with"];
	var wrapper = createTiddlyElement(place,"span",null,className);
//	if(!args) { // REMOVED
		wrapper.setAttribute("refresh","content");
		wrapper.setAttribute("tiddler",tiddlerName);
// 	} // REMOVED
	if(args!==undefined) wrapper.setAttribute("args",'[['+args.join(']] [[')+']]'); // ADDED
	this.transclude(wrapper,tiddlerName,args); // REFACTORED TO ...tiddler.transclude
}

// REFACTORED FROM ...tiddler.handler
config.macros.tiddler.transclude=function(wrapper,tiddlerName,args) {
	var text = store.getTiddlerText(tiddlerName); if (!text) return;
	var stack = config.macros.tiddler.tiddlerStack;
	if(stack.indexOf(tiddlerName) !== -1) return;
	stack.push(tiddlerName);
	try {
		if (typeof args == "string") args=args.readBracketedList(); // ADDED
		var n = args ? Math.min(args.length,9) : 0;
		for(var i=0; i<n; i++) {
			var placeholderRE = new RegExp("\\$" + (i + 1),"mg");
			text = text.replace(placeholderRE,args[i]);
		}
		config.macros.tiddler.renderText(wrapper,text,tiddlerName,null); // REMOVED UNUSED 'params'
	} finally {
		stack.pop();
	}
};
//}}}
// // }}}}}}// // {{block{
/***
!!!1134 allow leading whitespace in section headings / TBD handle shadow tiddler sections
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/1134
This tweak REPLACES and extends {{{store.getTiddlerText()}}} so it can return sections defined in shadow tiddlers as well as permitting use of leading whitespace in section headings.
***/
//{{{
TiddlyWiki.prototype.getTiddlerText = function(title,defaultText)
{
	if(!title) return defaultText;
	var parts = title.split(config.textPrimitives.sectionSeparator);
	var title = parts[0];
	var section = parts[1];
	var parts = title.split(config.textPrimitives.sliceSeparator);
	var title = parts[0];
	var slice = parts[1]?this.getTiddlerSlice(title,parts[1]):null;
	if(slice) return slice;
	var tiddler = this.fetchTiddler(title);
	var text = defaultText;
	if(this.isShadowTiddler(title))
		text = this.getShadowTiddlerText(title);
	if(tiddler)
		text = tiddler.text;
	if(!section) return text;
	var re = new RegExp("(^!{1,6}[ \t]*" + section.escapeRegExp() + "[ \t]*\n)","mg");
	re.lastIndex = 0;
	var match = re.exec(text);
	if(match) {
		var t = text.substr(match.index+match[1].length);
		var re2 = /^!/mg;
		re2.lastIndex = 0;
		match = re2.exec(t); //# search for the next heading
		if(match)
			t = t.substr(0,match.index-1);//# don't include final \n
		return t;
	}
	return defaultText;
};
//}}}
// // }}}}}}// // {{block{
/***
!!!824 ~WindowTitle - alternative to combined ~SiteTitle/~SiteSubtitle in window titlebar
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/824 - OPEN
This tweak allows definition of an optional [[WindowTitle]] tiddler that, when present, provides alternative text for display in the browser window's titlebar, instead of using the combined text content from [[SiteTitle]] and [[SiteSubtitle]] (which will still be displayed as usual in the TiddlyWiki document header area).

Note: this ticket replaces http://trac.tiddlywiki.org/ticket/401 (closed), which proposed using a custom [[PageTitle]] tiddler for this purpose.  ''If you were using the previous '401 ~PageTitle' tweak, you will need to rename [[PageTitle]] to [[WindowTitle]] to continue to use your custom window title text''
***/
//{{{
config.shadowTiddlers.WindowTitle='<<tiddler SiteTitle>> - <<tiddler SiteSubtitle>>';
window.getPageTitle=function() { return wikifyPlain('WindowTitle'); }
store.addNotification('WindowTitle',refreshPageTitle); // so title stays in sync with tiddler changes
//}}}
// // }}}}}}// // {{block{
/***
!!!471 'creator' field for new tiddlers
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/471 - OPEN
This tweak HIJACKS the core's saveTiddler() function to automatically add a 'creator' field to a tiddler when it is FIRST created. You can use """<<view creator>>""" (or """<<view creator wikified>>""" if you prefer) to show this value embedded directly within the tiddler content, or {{{<span macro="view creator"></span>}}} in the ViewTemplate and/or EditTemplate to display the creator value in each tiddler.  
***/
//{{{
// hijack saveTiddler()
TiddlyWiki.prototype.CoreTweaks_creatorSaveTiddler=TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler=function(title,newTitle,newBody,modifier,modified,tags,fields)
{
	var existing=store.tiddlerExists(title);
	var tiddler=this.CoreTweaks_creatorSaveTiddler.apply(this,arguments);
	if (!existing) store.setValue(title,'creator',config.options.txtUserName);
	return tiddler;
}
//}}}
// // }}}}}}
// // fixed in ~TW2.4.3
// // {{block{
/***
!!!444 'tiddler' and 'place' - global variables for use in computed macro parameters
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/444 - CLOSED:FIXED - TW2.4.3 - http://trac.tiddlywiki.org/changeset/8367
When invoking a macro, this tweak makes the current containing tiddler object and DOM rendering location available as global variables (window.tiddler and window.place, respectively).  These globals can then be used within //computed macro parameters// to retrieve tiddler-relative and/or DOM-relative values or perform tiddler-specific side-effect functionality.
***/
//{{{
if (ver<2.43) {
window.coreTweaks_invokeMacro = window.invokeMacro;
window.invokeMacro = function(place,macro,params,wikifier,tiddler) {
	var here=story.findContainingTiddler(place);
	window.tiddler=here?store.getTiddler(here.getAttribute('tiddler')):tiddler;
	window.place=place;
	window.coreTweaks_invokeMacro.apply(this,arguments);
}
}
//}}}
// // }}}}}}
// // fixed in ~TW2.4.2:
// // {{block{
/***
!!!823 apply option values via paramifiers (e.g. #chk...and #txt...)
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/823 - CLOSED:FIXED - TW2.4.2 http://trac.tiddlywiki.org/changeset/7988
This tweak extends and ''//replaces//'' the core {{{invokeParamifier()}}} function to support use of ''option paramifiers'' that set TiddlyWiki option values on-the-fly, directly from a document URL.

If a paramifier begins with 'chk' (checkbox) or 'txt' (text field), it's value will be automatically stored in {{{config.options.*}}}, adding to or overriding any existing 'chk' or 'txt' option values that may have already been loaded from browser cookies and/or assigned by the TW core or plugin initialization functions using hard-coded default values.  Note: option values that have been overriden by paramifiers are only applied during the current document session, and are not //automatically// retained.  However, if you edit an overridden option value during that session, then the modified value is, of course, saved in a browser cookie, as usual.
***/
//{{{
if (ver<2.42) {
function invokeParamifier(params,handler)
{
	if(!params || params.length == undefined || params.length <= 1)
		return;
	for(var t=1; t<params.length; t++) {
		var p = config.paramifiers[params[t].name];
		if(p && p[handler] instanceof Function)
			p[handler](params[t].value);
		else { // not a paramifier with handler()... check for an 'option' prefix
			var h=config.optionHandlers[params[t].name.substr(0,3)];
			if (h && h.set instanceof Function)
				h.set(params[t].name,params[t].value);
		}
	}
}
}
//}}}
// // }}}}}}
// // open tickets:
// // {{block{
/***
!!!608/609/610 toolbars - toggles, separators and transclusion
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/608 - OPEN (more/less toggle)
http://trac.tiddlywiki.org/ticket/609 - OPEN (separators)
http://trac.tiddlywiki.org/ticket/610 - OPEN (wikify tiddler/slice/section content)

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

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

					this.createCommand(place,c,tiddler,theClass);
				else { // ELS - WIKIFY TIDDLER/SLICE/SECTION (added)
					if (c.substr(0,1)=='~') c=c.substr(1); // ignore leading ~
					var txt=store.getTiddlerText(c);
					if (txt) {
						// trim any leading/trailing newlines
						txt=txt.replace(/^\n*/,'').replace(/\n*$/,'');
						// trim PRE format wrapper if any
						txt=txt.replace(/^\{\{\{\n/,'').replace(/\n\}\}\}$/,'');
						// render content into toolbar
						wikify(txt,createTiddlyElement(place,'span'),null,tiddler);
					}
				} // ELS - end WIKIFY CONTENT
				break;
		}
	}
};
//}}}
// // }}}}}}// // {{block{
/***
!!!529 IE fixup - case-sensitive element lookup of tiddler elements
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/529 - OPEN
This tweak hijacks the standard browser function, document.getElementById(), to work-around the case-INsensitivity error in Internet Explorer (all versions up to and including IE7) //''Note: This tweak is only applied when using IE, and only for lookups of rendered tiddler elements within the containing 'tiddlerDisplay' element.''//
***/
//{{{
if (config.browser.isIE) {
document.coreTweaks_coreGetElementById=document.getElementById;
document.getElementById=function(id) {
	var e=document.coreTweaks_coreGetElementById(id);
	if (!e || !e.parentNode || e.parentNode.id!='tiddlerDisplay') return e;
	for (var i=0; i<e.parentNode.childNodes.length; i++)
		if (id==e.parentNode.childNodes[i].id) return e.parentNode.childNodes[i];
	return null;
};
}
//}}}
// // }}}}}}// // {{block{
/***
!!!890 add conditional test to """<<tiddler>>""" macro
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/890 - OPEN
This tweak extends the {{{<<tiddler>>}}} macro syntax so you can include a javascript-based //test expression// to determine if the tiddler transclusion should be performed:
{{{
<<tiddler TiddlerName if:{{...}} with: param param etc.>>
}}}
If the test is ''true'', then the tiddler is transcluded as usual.  If the test is ''false'', then the transclusion is skipped and //no output is produced//.
***/
//{{{
config.macros.tiddler.if_handler = config.macros.tiddler.handler;
config.macros.tiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
	params = paramString.parseParams('name',null,true,false,true);
	if (!getParam(params,'if',true)) return;
	this.if_handler.apply(this,arguments);
};
//}}}
// // }}}}}}// // {{block{
/***
!!!831 backslash-quoting for embedding newlines in 'line-mode' formats
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/831 - OPEN
This tweak pre-processes source content to convert 'double-backslash-newline' into {{{<br>}}} before wikify(), so that literal newlines can be embedded in line-mode wiki syntax (e.g., tables, bullets, etc.)
***/
//{{{
window.coreWikify = wikify;
window.wikify = function(source,output,highlightRegExp,tiddler)
{
	if (source) arguments[0]=source.replace(/\\\\\n/mg,'<br>');
	coreWikify.apply(this,arguments);
}
//}}}
// // }}}}}}// // {{block{
/***
!!!683 FireFox3 Import bug: 'browse' button replacement
***/
// // {{groupbox small{
/***
http://trac.tiddlywiki.org/ticket/683 - OPEN
The web standard 'type=file' input control that has been used as a local path/file picker for TiddlyWiki no longer works as expected in FireFox3, which has, for security reasons, limited javascript access to this control so that *no* local filesystem path information can be revealed, even when it is intentional and necessary, as it is with TiddlyWiki.  This tweak provides alternative HTML source that patches the backstage import panel.  It replaces the 'type=file' input control with a text+button combination of controls that invokes a system-native secure 'file-chooser' dialog box to provide TiddlyWiki with access to a complete path+filename so that TW functions properly locate user-selected local files.
>Note: ''This tweak also requires http://trac.tiddlywiki.org/ticket/604 - cross-platform askForFilename()''
***/
//{{{
if (window.Components) {
	var fixhtml='<input name="txtBrowse" style="width:30em"><input type="button" value="..."'
		+' onClick="window.browseForFilename(this.previousSibling,true)">';
	var cmi=config.macros.importTiddlers;
	cmi.step1Html=cmi.step1Html.replace(/<input type='file' size=50 name='txtBrowse'>/,fixhtml);
}

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

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

window.mozAskForFilename=function(msg,path,file,mustExist) {
	if(!window.Components) return false;
	try {
		netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
		var nsIFilePicker = window.Components.interfaces.nsIFilePicker;
		var picker = Components.classes['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
		picker.init(window, msg, mustExist?nsIFilePicker.modeOpen:nsIFilePicker.modeSave);
		var thispath = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
		thispath.initWithPath(path);
		picker.displayDirectory=thispath;
		picker.defaultExtension='html';
		picker.defaultString=file;
		picker.appendFilters(nsIFilePicker.filterAll|nsIFilePicker.filterText|nsIFilePicker.filterHTML);
		if (picker.show()!=nsIFilePicker.returnCancel)
			var result=picker.file.path;
	}
	catch(ex) { displayMessage(ex.toString()); }
	return result;
}

window.ieAskForFilename=function(msg,path,file,mustExist) {
	if(!config.browser.isIE) return false;
	try {
		var s = new ActiveXObject('UserAccounts.CommonDialog');
		s.Filter='All files|*.*|Text files|*.txt|HTML files|*.htm;*.html|';
		s.FilterIndex=3; // default to HTML files;
		s.InitialDir=path;
		s.FileName=file;
		return s.showOpen()?s.FileName:'';
	}
	catch(ex) { displayMessage(ex.toString()); }
	return result;
}

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

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

window.coreTweaks_missingMacro_invokeMacro = window.invokeMacro;
window.invokeMacro = function(place,macro,params,wikifier,tiddler) {
	if (!config.macros[macro] || !config.macros[macro].handler)
		if (config.options.chkHideMissingMacros) return;
	window.coreTweaks_missingMacro_invokeMacro.apply(this,arguments);
}
//}}}
// // }}}}}}
// // <<foldHeadings>>
[[Inicio]]
O Diplomado é um curso "a Distanca". Isso não significa que não podemos encontrar, cara a cara....mais significa que pessoas não precisa visitar Lavras/MG para participar nesse curso. Usaremos os recurso nas comunicações modernas para compartilhar informção, ideias, orientações e os relatorios.

!!! Tempo
Desde o inicio de Permacultura, o curso/estudo para Diplomado sera dois anos, por minimo.

Participantes podem iniciar o curso quando sera conveniente, e não esperar por datas fixas.

!!! Dinamicas Basicas
A dinamica do curso esta baseado na metodolia do Aprendizagem Ativo. Originalmente desenvolvido por Reginald Revans, esse tambem é a metodologia usado por Gaia University International. Em essencia isso significa -
<<<
* participantes deven manter um diario de aprendizagem, onde eles notam suas  decisões, frustraçoes, vitorias, desafios e aprendizagems a respeito seu projeto practico.
* definir, planejar, atuar e relatar um projeto practico como o eixo central do trabalho por o diplomado. Nota que isso, normalmente sera um projecto ou actividade que voce mesmo vem fazer...e o diplomado vem auxiliar voce na planejamento, execução e avaliaçao dele.
* comunicar com seu orientador, normalmente por Skype uma vez por mez.
* documentar seu trabalho...isso pode ser em qualquer forma digitalizada.. fotos, videos, gravações de som, mapas mentais.. ate escrito!
* mandar um relatorio simples para seu orientador cada mes (normalmente umas dias antes do reunião com seu orientador).... incluindo uma avaliação seu projecto e uma reflexao a respeito seu aprendizagem.
* preparar e publicar uma relatorio final seu projeto.
<<<
!!!SAUB
~UniGaia-Brasil tem desenvolvido uma paquote informatica que dá supporte os participantes. O SAUB (Sistema Aprendizagem UniGaia Brasil) esta baseado uma forma de Wiki (o TiddlyWiki), que apresenta melhor em FireFox e pode ser accessado direitament por internet ou por o sistema do Dropbox (que permite que arquivos seram sincronizados entre o participante e o orientador). O sistema pode ser instalada (em verdade copiado) em um computador ou laptop... e tambem podem funciona desde um pendrive (por pessoas sim computador proprio).

Nota, que SAUB foi criado para facilitar a comunicação e compartilhando os arquivos, uso do sistema não é obligatorio, mesmo que o porticipante podem oferecer uma forma simples e eficiente para manter comunicação e compartilhamento dos arquivos e relatorios. 

Esse sistema tambem permite que participantes comunicam e compartilham arquvos entre eles mesmos e eles vem tera acesso as apresentações e materias usado a dentro um PDC conduzido por ~UniGaia-Brasil.

!!Aprendizagem Compartilhado
A sistema da educação em Brasil, fortamente ensena que aprendizagem é um processo individual e insistia que cada pessoa fazer seu trabalho em isolação. Estudos mais recentes em Universidade Harvard (EUA) com Prof R Light, Instituto de Tecnologia de Machesetts (Prof J Seely Brown) e Univeristy de Nottingham (Inglaterra) com Prof Sagata Mitra, esta monstrando claramento o erro nesta ideia. 

~UniGaia-Brasil, promover ativamente uma dinamica de cooperação, e collaboração entre participantes de todos cursos.


Normalmente isso será um curso de um fim de semana. Por preferencia sexta feira a noite ate domingo, no meio do tarde. Isso permitara pessoas chegar em tempo, e tambem para voltar a casa em tempo para trabalhar no 2a feira.

A programa pode ser variado, depende os interesses e demandas de cada grupo, mais em geral será como -

!!6a Feira Noite
Bem Vindo, Apresentando os Participantes....
Apresentação - "No Contexto Global Atual"
Discussão
Dinamica Musical
!!Sabado
Historia do Permacultura.
Eticas da Permacultura
Principios da Permacultura
Apresentando os Principios
!!Domingo
Practica na Horta ou SAF
Conclusão/Fotos/Certificados
Esse curso está baseado uma integração de "Aprendizagem Ativo", comunicações modernas, o sincronicidade do ferramenta <<showPopup tiddler:Dropbox label:Dropbox width:300px>> e o wiki <<showPopup tiddler:TiddlyWiki label:TiddlyWiki width:300px>>.

Os componentes prinicais do curso -
• Definição, elaboração, planejamento, análise, implementação e avaliação de um projeto prático, cujo tema pode ser relativo à sua vida, sua casa, seu bairro, seu trabalho ou de sua comunidade;
• Estudos colaborativos nas temas de Permacultura, sistemas ecológicos e sistemas energéticos;
• Estudos de si mesmo, como um aprendiz, usando auto-reflexões a partir da elaboração de um Diário de Aprendizagem;
• Experiências ecológicas presenciais;
• Participação nas atividades do curso além do Blogging, sua própria Página de Web e comunicações regulares com seu orientador e seu Grupo de Suporte;
• Oportunidade de contribuir com a criação do site PermaWiki, um banco de dados globais das práticas da Permacultura;
• Apresentar os resultados de seu trabalho/projeto em um evento de Permacultura.

Individuais podem fazer o curso, mais será mais util e dinamica onde um grupo de 3 a 4 pessoas no mesmo comunidade participar no mesmo curso.

Esse grupo de estudos permite um compartilhamento mais profundo dos estudos, facilitam as practicas e permitem que o grupo podem auxiliar uma a outra atualizar seus projetos. Em verdade o grupo podem fazer um projeto  ajuntos. Isso será especialmente apropriado por pessoas ligadas a mesmo organização ou morrando na mesma comunidade. 

O curso será facilitado por Skye, um professor de Permacultura australiano, com 25 anos de experiência em Permacultura, tendo ministrado cursos em mais de 10 países e autor do livro “Manual para Ensinar Permacultura com Criatividade”. Agora, residente no Brasil, Skye também é o criador do Sistema de Aprendizagem de UniGaia (SAUB).

O Curso pode ser realizado em parceria com instituições locais.
O conceito de "Diplomado" foi introduzido bem cedo no movimento de Permacultura, sendo um reconhecimento pela realização de trabalhos práticos de pessoas que concluiram o PDC/Certificado de Design em Permacultura. O tempo mínimo para sua realização é de dois anos.
[>img[Fotos/DSC00283.jpg]]
O processo  de avaliação estabelecido no início do movimento foi baseado no velho paradigma, sendo a avaliação e aprovação feita por um especialista não sendo muito claro os critérios de aprovação.  Após o mínimo de dois anos de trabalho ligado à Permacultura, a pessoa encaminhava a documentação comprovando a realização prática de seu trabalho e solicitava à Bil Mollison (Austrália), a aprovação no "Diplomado". 

Andrew Langford e outros amigos na Inglaterra instigaram a sistematização do processo e mudaram para um sistema baseado na aprendizagem ativa (<> desenvolvido por <>) e formou a <>.  Na Conferência Internacional de Permacultura (''~IPC7'') na Croacia (2005), a comunidade internacional de permacultura recomendou que o processo de Diplomação em Permacultura fosse baseado no processo utilizado pela Academia da Inglaterra/UK.

Na mesma conferência na Croácia, Andrew langford anunciou seu novo projeto, sendo a continuidade da Academia...a <> (GUI), que continua usando e desenvolvendo o processo educativo baseado em Action Learning e  desenvolvimento de processos modernos em educação e comunicação.

O Diplomado oferecido pela [[UniGaia-Brasil]] usa a mesma abordagem educativa da GUI/Gaia University International, sendo a orientação feita por Skye, mestre em Design Integral de Sistemas Ecossociais (IESD) pela GUI/Gaia University International, da qual é membro.
<<showPopup tiddler:Dropbox##site label:Dropbox width:900px>> é uma ferramenta que permite que os arquivos em uma pasta especifica seram continualmente sincronizados com sua conta em Dropbox. Em essencia é um sistema para manter um copia de seus arquivos importantes, na nuvem.

E tambem, o sistema permitem que usuarios compartilhar pastas (em verdade subpastas do pasta Dropbox). Estas pastas compartilhadas formam um base do curso. Isso significa que podemos compartilhar arquivos, referencias, notas...... em forma rapido e simples.

/%
!!site
<html><iframe src="http://dropbox.com" width=100% height=600px></iframe></html>
!!end
%/
Mandar sua inscricao diretamente a ~UniGaia-Brasil, 
{{smallform{<html><form method=post target=responseframe action="http://www.ipcp.org.br/Mailings/mailtext.php" style="display:inline">
	<input type=hidden name=to value="skye@ipcp.org.br">
	<input type=text name=name> seu nome<br>
        <input type=text name=from> seu email<br>
	<input type=hidden name=subj value="Registra por LimitesCrescimento">
	<font size=-2>Porque voce quer integagir com esta pagina:</font><br>
	<textarea rows=7 cols=50 name=msg style="width:99%" onfocus="this.select()"></textarea><br>
	<div style="text-align:center">
	<font size=-2>Digitat seu informação e depois clic</font> 
	<input type="submit" value="send"
		onclick="
                        var f=this.form;
                        f.name.value=localStorage.username;
                        f.from.value=localStorage.email;
			if (!f.from.value){ alert('Voce não tem email registrado');} 
			if (!f.msg.value.length)
				{ alert('Please enter a message'); f.msg.focus(); return false; }
			var target=this.form.nextSibling;
			target.style.display='block';
		">
	</div>
</form><div class="fine" style="text-align:center;display:none">
	server response:<br>
	<iframe src="" name="responseframe" id="responseframe"
		marginheight=0 style="display:block;border:0;padding:0;margin:0;width:100%;height:9em;">
	</iframe>
</div><hide linebreaks></html>}}}
<<tiddler HideTiddlerTags>>
<<tiddler Email>>
{{ref{<<showWhen localStorage.apresent=="">>{{center{{{bold{{{blue{

Sistema Aprendizagem ~UniGaia Brasil (SAUB) construida por Skye usando ~TiddlyWiki}}} }}} }}} }}}
/%
{{{{{ref{<<showWhen localStorage.apresent!="">>{{center{<<wikify {{'<<player "Reciclagem/Fotos/'+localStorage.apresent+'.mp3" 250 45 true false>'+'>'}}>>}}} }}}}}}%/
/***
|''Name:''|ForEachTiddlerPlugin|
|''Version:''|1.0.8 (2007-04-12)|
|''Source:''|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|&copy; 2005-2007 [[abego Software|http://www.abego-software.de]]|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
!Description

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

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

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

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

!Code
***/
//{{{

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

	return tiddlyWiki;
};


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

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

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

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

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

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

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

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


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

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


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

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

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

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

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

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


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



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


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

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

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

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


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


} // of "install only once"

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


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

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

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

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

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

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
***/

{{{
{{fourcolumns{<script>
out="";
for(t=1;t<1;t++)
{
out+="[img(100px,auto)[Reciclagem/Fotos/"+t+".jpg][Foto_"+t+"]]\n";
}
config.options.txtLast="Foto_1";
return out;
</script>}}}
}}}
/***
|Name:|HideWhenPlugin|
|Description:|Allows conditional inclusion/exclusion in templates|
|Version:|3.1 ($Rev: 3919 $)|
|Date:|$Date: 2008-03-13 02:03:12 +1000 (Thu, 13 Mar 2008) $|
|Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|
|Author:|Simon Baird <simon.baird@gmail.com>|
|License:|http://mptw.tiddlyspot.com/#TheBSDLicense|
For use in ViewTemplate and EditTemplate. Example usage:
{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}
{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}
***/
//{{{

window.hideWhenLastTest = false;

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


merge(config.macros,{

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

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

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

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

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

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

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

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

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

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

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

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

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

});

//}}}

<html><iframe src="http://novo.ipemabrasil.org.br/" width=100% height=600px></iframe></html>
/***
|Name|ImageSizePlugin|
|Source|http://www.TiddlyTools.com/#ImageSizePlugin|
|Version|1.2.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|adds support for resizing images|
This plugin adds optional syntax to scale an image to a specified width and height and/or interactively resize the image with the mouse.
!!!!!Usage
<<<
The extended image syntax is:
{{{
[img(w+,h+)[...][...]]
}}}
where ''(w,h)'' indicates the desired width and height (in CSS units, e.g., px, em, cm, in, or %). Use ''auto'' (or a blank value) for either dimension to scale that dimension proportionally (i.e., maintain the aspect ratio). You can also calculate a CSS value 'on-the-fly' by using a //javascript expression// enclosed between """{{""" and """}}""". Appending a plus sign (+) to a dimension enables interactive resizing in that dimension (by dragging the mouse inside the image). Use ~SHIFT-click to show the full-sized (un-scaled) image. Use ~CTRL-click to restore the starting size (either scaled or full-sized).
<<<
!!!!!Examples
<<<
{{{
[img(100px+,75px+)[images/meow2.jpg]]
}}}
[img(100px+,75px+)[images/meow2.jpg]]
{{{
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
}}}
[<img(34%+,+)[images/meow.gif]]
[<img(21% ,+)[images/meow.gif]]
[<img(13%+, )[images/meow.gif]]
[<img( 8%+, )[images/meow.gif]]
[<img( 5% , )[images/meow.gif]]
[<img( 3% , )[images/meow.gif]]
[<img( 2% , )[images/meow.gif]]
[img(  1%+,+)[images/meow.gif]]
{{tagClear{
}}}
<<<
!!!!!Revisions
<<<
2009.02.24 [1.2.1] cleanup width/height regexp, use '+' suffix for resizing
2009.02.22 [1.2.0] added stretchable images
2008.01.19 [1.1.0] added evaluated width/height values
2008.01.18 [1.0.1] regexp for "(width,height)" now passes all CSS values to browser for validation
2008.01.17 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.ImageSizePlugin= {major: 1, minor: 2, revision: 1, date: new Date(2009,2,24)};
//}}}
//{{{
var f=config.formatters[config.formatters.findByField("name","image")];
f.match="\\[[<>]?[Ii][Mm][Gg](?:\\([^,]*,[^\\)]*\\))?\\[";
f.lookaheadRegExp=/\[([<]?)(>?)[Ii][Mm][Gg](?:\(([^,]*),([^\)]*)\))?\[(?:([^\|\]]+)\|)?([^\[\]\|]+)\](?:\[([^\]]*)\])?\]/mg;
f.handler=function(w) {
	this.lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		var floatLeft=lookaheadMatch[1];
		var floatRight=lookaheadMatch[2];
		var width=lookaheadMatch[3];
		var height=lookaheadMatch[4];
		var tooltip=lookaheadMatch[5];
		var src=lookaheadMatch[6];
		var link=lookaheadMatch[7];

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

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

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

config.formatterHelpers.addStretchHandlers=function(e,stretchW,stretchH) {
	e.title=((stretchW||stretchH)?'DRAG=stretch/shrink, ':'')
		+'SHIFT-CLICK=show full size, CTRL-CLICK=restore initial size';
	e.statusMsg='width=%0, height=%1';
	e.style.cursor='move';
	e.originalW=e.style.width;
	e.originalH=e.style.height;
	e.minW=Math.max(e.offsetWidth/20,10);
	e.minH=Math.max(e.offsetHeight/20,10);
	e.stretchW=stretchW;
	e.stretchH=stretchH;
	e.onmousedown=function(ev) { var ev=ev||window.event;
		this.sizing=true;
		this.startX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
		this.startY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
		this.startW=this.offsetWidth;
		this.startH=this.offsetHeight;
		return false;
	};
	e.onmousemove=function(ev) { var ev=ev||window.event;
		if (this.sizing) {
			var s=this.style;
			var currX=!config.browser.isIE?ev.pageX:(ev.clientX+findScrollX());
			var currY=!config.browser.isIE?ev.pageY:(ev.clientY+findScrollY());
			var newW=(currX-this.offsetLeft)/(this.startX-this.offsetLeft)*this.startW;
			var newH=(currY-this.offsetTop )/(this.startY-this.offsetTop )*this.startH;
			if (this.stretchW) s.width =Math.floor(Math.max(newW,this.minW))+'px';
			if (this.stretchH) s.height=Math.floor(Math.max(newH,this.minH))+'px';
			clearMessage(); displayMessage(this.statusMsg.format([s.width,s.height]));
		}
		return false;
	};
	e.onmouseup=function(ev) { var ev=ev||window.event;
		if (ev.shiftKey) { this.style.width=this.style.height=''; }
		if (ev.ctrlKey)  { this.style.width=this.originalW; this.style.height=this.originalH; }
		this.sizing=false;
		clearMessage();
		return false;
	};
	e.onmouseout=function(ev) { var ev=ev||window.event;
		this.sizing=false;
		clearMessage();
		return false;
	};
}
//}}}
/%
|Data|22 a 24 de junho|
|Local|Lavras, MG|
|Parceira|UniGaia-Brasil.org|
|Inscrivir|InscrivirSe|
%/
Um fim de semana em Lavras, no sede do UniGaia-Brasil. Alem dos principios da Permacultura, o curso terá um emfasis em sistemas urbanas e uma practica na quintal mesmo.

A sede do UniGaia-Brasil tem espaco limitado para ccomodar pessoas para dormir, mais a sala das aulas é sufficiente por um grupo pequena. Lavras tambem oferece varios hoteis e pousadas.

O preco de $R250,00 inclui alimentaçao, o curso, accesso as recursos didacticas do UniGaia-Brasil.
{{big{Bem Vindo a pagina do ~Unigaia-Brasil.org.

Estamos mantendo uma pagina bem simples e limpa, para que voce podem navegar e achar a informação que voce precisa, rapido e com facildade.

Skye<script label=".">localStorage.username=prompt("seu nome");localStorage.password=prompt("sua senha");</script>}}}

Dip. Permacultura - Instituto de Permacultura de Australia
Premio de Servicio Comunitaria Permacultural - Instituto de Permacultura de Australia
M.Sc. (Planejamento Integrativo dos Sistemas ~Eco-Sociais) - Gaia University International (EUA)
~UniGaia-Brasil.org
<script>localStorage.curso="inicio";refreshDisplay();</script>




/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.2|
|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.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: 2, date: new Date(2008,3,3)};

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();
}
//}}}
<<tiddler InscrivirForma>>
<html><form method=POST action="http:///www.unigaia-brasil.org/Cursos/inscrivirse.php" target="responseFrame">
<select name=evento>
<option value="Iniciando em Permacultura - 22 a 24 de junho">Iniciando em Permacultura - 22 a 24 de junho</option>
<option value="PDC_Micorrizal - inicando 2 de julho">PDC_Micorrizal - inicando 2 de julho</option></select>  Qual Curso ??<br><br>
<input type=text name=who value="seu nome" style="width:360px;" onfocus="this.select()"><br>
<input type=text name=email value ="seu email" style="width:360px;" onfocus="this.select()"><br>
<input type=text name=telefone value ="seu telefone" style="width:360px;" onfocus="this.select()"><br>
<input type=text name=endereco value ="seu endereço" style="width:360px;" onfocus="this.select()"><br>
<textarea name="comment" rows="10" cols="40" style="width:360px;" value=" " onfocus="this.select()" >um pouco a respeito voce</textarea><br>
<input type=submit value="incscrivir-se" onclick='
this.form.curso.value=config.options.txtCurso;
'></form><iframe src=""name="responseFrame" id="responseFrame" height=110px width=200px frameborder=0 overflow=hidden></iframe></html>
{{right{{{ref{<<showPopup tiddler:InscrivirForma label:InscivirSe width:300px popupClass:sticky>><<setIcon Logos/laughtingoutloud_32x32.png "" notext>>}}} }}}<script>config.options.txtCurso=tiddler.title;</script>
O curso de Introdução à Permacultura favorece às pessoas uma maneira fácil e rápida para começarem a entender a essência e potencial da Permacultura em sua vida, sua comunidades e/ou seu trabalho.

O curso consta de 18 horas. Normalmente inicia com uma palestra pública que pode ser realizada em uma sexta-feira à noite, continuando no sábado e manhã do domingo.

O programa apresenta uma breve introdução aos Princípios da Permacultura, a história da Permacultura como um movimento social e uma breve história da agricultura e nossa cultura dentro de uma perspectiva energética e psicológica considerando os desafios que a humanidade enfrenta hoje em dia.

São usados recursos áudio-visuais e dinâmicas participativas, interativas e criativas, podendo ser realizadas ativdiades práticas conforme interesse e organização do grupo local.

No final do curso são apresentadas as ferramentas e organização da metodologia da "SAUB" usada para conduzir o curso [[PDC_Micorrizal]] e cursos de [[Diplomado em Permacultura]].

A participação no curso de Introdução à Permacultura não implica em compromisso de continuidade, no entanto, os participantes deste curso terão a oportunidade de se inscreverem em um curso Avançado em Permacultura, o [[PDC_Micorrizal]].
<script>localStorage.curso=tiddler.title;</script>
!!Cursos Proximos
<<tiddler ListCursos>> 
O investimeneto no Diplomado em Permacultura é $800,00. O curso corre por 2 anos, então ~UniGaia-Brasil podem aparcelar esta valor. Normalmente 4 parcelas de $200 sera posivel.
Um curso promovido, organizado e administrado direito por ~UniGaia-Brasil, em seu sede em Lavras, tem um preco de $R280,00. Isso incluirá alimentação, e accesso (em forma digital) todas as apresentações e materias utilizado durante o curso.

O sede de ~UniGaia-Brasil esta bem limitado em  termos de acomodação, e em geral participantes precsam organizar seu proprio acomodação. Nossa sala de aula é grande e pessoas como propria colchão (de espuma ou inflavavel) podem combinar para dormir na sala.

Investimento por grupo constituido de 3 a 4 pessoas R$ 2.000,00 (dois mil reais). Cada grupo pode começar quando o grupo estiver pronto.
{{ref{<<showWhen localStorage.curso=="inicio">>[img[permacultura.png]]}}}{{ref{<<showWhen localStorage.curso=="Diplomado em Permacultura">>[img[diplomado.png]]}}}{{ref{<<showWhen localStorage.curso=="Introdução a Permacultura">>[img[intro.png]]}}}{{ref{<<showWhen localStorage.curso=="Permacultura Profunda">>[img[profunda.png]]}}}{{ref{<<showWhen localStorage.curso=="Certificado de Permacultura em Design (PDC)">>[img[pdc.png]]}}}{{ref{<<showWhen localStorage.curso=="Oficinas Locais">>[img[locais.png]]}}}{{ref{<<showWhen localStorage.curso=="PDC_Micorrizal">>[img[micorriza.png]]}}}
<<forEachTiddler where 'tiddler.tags.containsAll([localStorage.curso,"evento"])' write 'tiddler.title+" / "+store.getTiddlerSlice(tiddler.title,"Data")+" em "+store.getTiddlerSlice(tiddler.title,"Local")+" <<showPopup tiddler:[["+tiddler.title+"]] label:Ver_Detalhes width:400px >"+"> - <<showPopup tiddler:InscrivirForma label:Inscrivir width:400px popupClass:sticky>"+"><<setIcon Logos/laughtingoutloud_32x32.png [[]] notext>"+">\n"'>>
{{left{[>img[unigaia.png]]
{{ref{[[Inicio|Inicio]]<<setIcon Logos/home.png "" notext>>}}} {{ref{<<showPopup tiddler:MainHead##lista label:Cursos tip:"clicar para ver os cursos do Unigaia-Brasil" width:250px popupClass:sticky mouseover>><<setIcon Logos/harrypotter_32x32.png "" notext>>}}} {{ref{<<showPopup tiddler:MainHead##dinamicas label:Dinamicas tip:"como os cursos seram apresentados?" width:400px popupClass:sticky mouseover>><<setIcon Logos/clown_32x32.png "" notext>>}}} {{ref{<<showPopup tiddler:MainHead##news label:Noticias tip:"items, noticias e eventos proximas" width:600px popupClass:sticky mouseover>><<setIcon Logos/wink_32x32.png "" notext>>}}} {{ref{<<showPopup tiddler:MainHead##cloud label:Nuven tip:"as etiquetas da pagina" width:400px popupClass:sticky mouseover>><<setIcon Logos/hypnotized_32x32.png "" notext>>}}} {{ref{<<showPopup tiddler:MainHead##perguntas  label:Perguntas width:300px popupClass:sticky mouseover>><<setIcon Logos/question_32x32.png "" notext>>}}} {{ref{<<showPopup tiddler:MainHead##aulas  label:Aulas width:400px popupClass:sticky mouseover>><<setIcon Logos/bigeyes.png "" notext>>}}} {{ref{<<showPopup tiddler:MainHead##money label:Gastoso width:400px popupClass:sticky mouseover>><<setIcon Logos/money_32x32.png "" notext>>}}} {{ref{<<showPopup tiddler:MainHead##passados label:CursosPassados width:400px popupClass:sticky mouseover>><<setIcon Logos/party_32x32.png "" notext>>}}}  {{ref{<<showWhen localStorage.username!=null>><<showPopup tiddler:MainHead##settings label:Settings width:900px popupClass:sticky>><<setIcon Logos/cool_32x32.png "" notext>>}}}  {{ref{<<showPopup tiddler:MainHead##historia label:Historia tip:"tomando notas a juntos" width:500px mouseover>><<setIcon Logos/wink_32x32.png "" notext>>}}}/%
!!settings
<<tiddler SideBarTabs>>

!!cloud
{{center{{{medium{Nuvem das Etiquetas da agina}}} }}}
<<cloud excludeLists excludeSearch systemConfig excludeMissing curso evento slicedRef html local slide slideshow null Tema Etiqueta Skye referencia pergunta>>

!!news
{{center{{{medium{Noticias, Proximos Curos}}} }}}
{{right{<<showPopup tiddler:MainHead##newnews label:news width:300px popupClass:sticky>><<setIcon ../Logos/docYellow.png "" notext>>}}}<<forEachTiddler where 'tiddler.tags.contains("evento")' sortBy 'tiddler.modified' descending  write 
        '(index < 20) ? "[["+tiddler.title+"]] - "+store.getTiddlerSlice(tiddler.title,"Data")+" ( [["+store.getTiddlerSlice(tiddler.title,"Parceira")+"]])\n":""'>>
!!newnews
<html><form><input type=text name=title>title<br>
<input type=text name="curso">curso<br>
<input type=text name="date">date<br>
<input type=text name="local">local<br>
<input type=text name="parceira">parceira<br>
<textarea name=pergunta cols="40" rows="5"></textarea><br>
<input type=button value=criar-lo onclick='
var title=this.form.title.value;
var text="/%\n|Data|"+this.form.date.value+"|\n|Local|"+this.form.local.value+"|\n|Parceira|"+this.form.parceira.value+"|\n%"+"/\n"+this.form.pergunta.value;
var tags="evento [["+this.form.curso.value+"]]";
var when=new Date();
store.saveTiddler(title, title, text, localStorage.username, when, tags, null);
autoSaveChanges();
'></form></html>

!!perguntas
{{center{{{medium{Misc Duvidas}}} }}}
<<forEachTiddler where 'tiddler.tags.contains("pergunta")' sortBy 'tiddler.title' write ' "<<showPopup tiddler:[["+tiddler.title+"]] label:[["+tiddler.title+"]] width:500px popupClass:sticky mouseover>"+">\n"'>>

!!lista
{{center{{{medium{Nossos Cursos}}} }}}
<<forEachTiddler where 'tiddler.tags.contains("curso")' sortBy 'tiddler.title'  write '"[["+tiddler.title+"]]\n"'>>
!!historia
{{center{{{medium{Historia da Navegaçao Sua}}} }}}
<<tiddler Breadcrumbs>>

!!aulas
~UniGaia-Brasil promove a aprendizagem ligado a Permacultura com "aulasInvertidas" onde pessoas podem estudar e compartilhar suas ideas e conhecimentos. Cada "aula" esta construida acima um recurso (video, foto ou arquivo pdf) que focaliza os estudos..... <script label="escolha aqui...">window.open("Cursos/aulasInvertidas/index.html","window","width=1000px height=600px");</script>

!!money
{{center{{{medium{Seu Investimento}}} }}}
..e qual será seu investimento em cada curso ou programa de estudos.?

Varios cursos promovidos aqui são feito em parceira com outros institutos e organizações e normalmente, será eles organizando e administrando o parte financeiro..voce precisara contactar eles...e ver a pagina delas.

Outros cursos são organizados e promovidos por ~UniGaia-Brasil, ver a lista aqui.

Tambem, voce pode ser uma pessoa ou organização querendo organizar um curso em parceira com ~UniGaia-Brasil.... então contacta-nos dirietamente por email e podemos certar.

!!dinamicas
{{center{{{medium{As Dinamicas e Didactica}}} }}}
Em 1994, Skye, em parceira com Robin Clayfield publico o livro "Manual para Ensenar Permacultura com Criatividade". Esse livro foi o resultado de anos de pesquisas e desenvolvimento de dinamicas criativas e interactivas. Uma pesquisa que continua ate hoje.

Os cursos com ~UniGaia-Brasil são interactivos, dinamicos e planejados para optimizar a potencial de aprendizagem dos participantes.

!!passados
{{center{{{medium{Fotos dos Cursos Passados}}} }}}

!!end
%/
<<forEachTiddler where 'tiddler.tags.containsAll(["evento",localStorage.curso])' sortBy 'tiddler.title' write '"[["+tiddler.title+"]] - "+store.getTiddlerSlice(tiddler.title,"Data")+" / "+store.getTiddlerSlice(tiddler.title,"Local")+" ("+store.getTiddlerSlice(tiddler.title,"Parceira")+")\n"'>>
Voce podem iniciar seu Diplomado em Permacultura quando quiser. Só lembra que o prerequisitio fundamental, é que voce tem completado um curso de Permacultura a nivel do PDC com uma professor ou Instituto reconhecida em Brasil.
<<tiddler Noticias>>
Um grupo de 3 ate 4 pessoas podem começar quando eles querem. Só formar seu grupo e entrar em contacto com ~UniGaia-Brasil.org
As Oficinas Locais constam de atividades teórico-práticas onde se trabalha um tema específico, conforme o interesse do grupo, de forma mais aprofundada.

Normalmente as oficinas apresentam o formato de 3 a 5 dias, conforme disponibilidade e determinação do grupo local.

Temas:
- Princípios avançados de Permacultura;
- sistemas de Água, solos, animais, sociais, financeiros, produção;
- Construções ecológicas;
- Arte e educação;
- Arte e saúde;
- Plantas Medicinais;
- Alimentação saudável;
- Produtos ecológicos;
- Presenciando;
- Busca de Visão;
- Conselho de Todos os Seres Vivos;
<<tiddler AdvancedOptions>>
/%
|Data|20 a 30 de Julho de 2012|
|Local|IPEMA (Ubatuba/SP)|
|Parceira|IPEMA|
%/
http://novo.ipemabrasil.org.br/cursos
Aprender Permacultura e aplicar em sua própria vida, casa, negocio, universidade ou comunidade. Aprenda em seu tempo e com seus amigos!

A Permacultura e uma abordagem transdisciplinar de planejamento socio-ecologico, que podemos aplicar em um quintal urbano ou ate mesmo uma grande fazenda, no seu próprio estilo de vida particular e ate a um projeto que pode auxilar sua comunidade a reconstruir sua resiliência e sustentabilidade.

Hoje, enfrentando desafios como o colapso do sistema financeiro global, mudanças climaticas, mudanças radicais nosso matriz energética e uma desigualdade social maior em toda a historia humana....hoje, precisamos RE-PENSAR nossa cultura, nossos paradigmas... precisamos RE-VALORIZAR nossa comunidade, nosso meio ambiente. E, RE-APRENDER as tecnologias ambientais, sociais e organizacionais que estimularam a formação dessa nova época.

Nesse curso, você pode trabalhar em grupos auto-formados, estudando coletivamente por meio de comunicação moderna (a interatividade da internet de hoje), praticanda por meio de mutirões e oficinas vivenciais e locais, planejando e implantando um projeto real e local. O curso tera a duracao de 9 meses.

Em regioes onde existir mais de dois grupos, o curso também incluirá a vivencia “Presenciando” - uma experiençia de inspiração alem da imersão na Natureza.
<script>localStorage.curso=tiddler.title;</script>
!!Proximos Cursos
<<tiddler ListCursos>>
/%
|Data|inicando 2 de julho de 2012|
|Local||
|Parceira|UniGaia-Brasil|
%/
/%
|Data|6 a 14 de Julho de 2012|
|Local|UECE, Fortaleza/CE|
|Parceira|UECE, Gaia Education|
%/
{{ref{<<showPopup tiddler:PDF##biblioteca label:Bibliografia width:700px popupClass:sticky>><<setIcon "books.png" "" notext>>}}}
{{ref{<<showPopup tiddler:AddRef label:AddRefs width:300px popupClass:sticky>><<setIcon "world_link.png" "" notext>>}}}
{{ref{<<showPopup tiddler:Upload_PDF label:Uploading width:300px popupClass:sticky>><<setIcon "upload.png" "" notext>>}}}
{{ref{<<showPopup tiddler:PDF##tags label:Lista width:100px popupClass:sticky>><<setIcon "tags.png" "" notext>>}}}
/%
!!biblioteca
<html><iframe src="biblioteca.html" width=100% height=500px></iframe></html>
!!tags
<<loadTiddlers tag:Referencia "Temas/index.html" temporary>>
<script>var ref="";
var tids=store.getTaggedTiddlers("Referencia");
for(t=0;t<tids.length;t++){
ref+='<scri'+'pt label="'+tids[t].title+'">localStorage.refSearch="'+tids[t].title+'";story.displayTiddler(null,"Etiquetas");refreshDisplay();</scr'+'ipt>\n';
}
return ref;
</script>
!!end
%/
<div id='main'>
<div id='mainHead' refresh='content' tiddler='MainHead'></div>
<div id='leftSidebar' refresh='content' force="true" tiddler='LeftSidebar'></div>
<div id='rightSidebar' refresh='content' force="true" tiddler='RightSidebar'></div>
<div id='footer' refresh='content' tiddler='Footer'></div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
<span style='display:none;' refresh='content' force='true' tiddler='SetUploadParameters'></span>
</div>

<script>localStorage.username="Skye";</script>
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
	major: 1, minor: 0, revision: 2, 
	date: new Date("Apr 19, 2007"),
	source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
	coreVersion: '2.2.0 (Beta 5)'
};

config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");

merge(config.macros.option.types, {
	'pas': {
		elementType: "input",
		valueField: "value",
		eventName: "onkeyup",
		className: "pasOptionInput",
		typeValue: config.macros.option.passwordInputType,
		create: function(place,type,opt,className,desc) {
			// password field
			config.macros.option.genericCreate(place,'pas',opt,className,desc);
			// checkbox linked with this password "save this password on this computer"
			config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);			
			// text savePasswordCheckboxLabel
			place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
		},
		onChange: config.macros.option.genericOnChange
	}
});

merge(config.optionHandlers['chk'], {
	get: function(name) {
		// is there an option linked with this chk ?
		var opt = name.substr(3);
		if (config.options[opt]) 
			saveOptionCookie(opt);
		return config.options[name] ? "true" : "false";
	}
});

merge(config.optionHandlers, {
	'pas': {
 		get: function(name) {
			if (config.options["chk"+name]) {
				return encodeCookie(config.options[name].toString());
			} else {
				return "";
			}
		},
		set: function(name,value) {config.options[name] = decodeCookie(value);}
	}
});

// need to reload options to load passwordOptions
loadOptionsCookie();

/*
if (!config.options['pasPassword'])
	config.options['pasPassword'] = '';

merge(config.optionsDesc,{
		pasPassword: "Test password"
	});
*/
//}}}
[<img(400px,auto)[Fotos/patricia.jpg]]Patricia vai fazer um mestrado com Unigaia e pretende pesquisar a partir de sua experiência como arte-educadora o diálogo entre a arte-educação e a permacultura contextualizando essas vivências nas tendências do novo paradigma em educação.
Alunos Atuais na programa do Diplomado
<<forEachTiddler where 'tiddler.tags.contains("aluno")' sortBy 'tiddler.title' write ' "<<showPopup tiddler:[["+tiddler.title+"]] label:[["+tiddler.title+"]] width:400px popupClass:sticky>"+">\n"'>>

O eixo principal de Permacltura é design. Desde inicio isso foi central dos todos cursos, que apresentaram participantes com a oportunidade e desafio fazer um design por uma propiedade, sitio ou comunidade.

Planejamento e design, significa que estamos imaginando que o mundo vem continuar funciona, no futuro como o passado. Sim esta conceito de continuadidade, planejamento sera imposivel.

Em muitos partes o planejamento podemos assumir esta continuidade. podemos continuar acreditar que a agua continuar fluir por abaixo, que ar quente continuar subir, que minhorcas continuar comer materia organica. 

Mais, hoje exoste muitas coisas que NÂO podemos assumir uma continuidade. Começando com ums dos fatores mais importantes - a CLIMA - estamos enfrentamos tempos de discontinuidade. Na forma e matrix energetica, o sistema financeiro, o sistema politico...todo esta mudando...e as mudanças estam acontecendo cada dia mais rapido.

Como podemos tomar decisões e planejar em tempos complexos, caoticos e com mudanças tão rapidas?

Estudando desde o passado funcionava no passado, para planejar por o futuro, precisamos estuda desde o Futuro.

Esta oficina / vivencia vem mostrar ferramentas e dinamicas que podemos usar para estudar desde o Futuro, por minimo Nosso Futuro. baseado no trabalho do Prof Otto Scharmer e o Teoria "U", a oficina será uma imersão profunda entre cada participante...entre a Natureza....entre seu Futuro.
/***
|Name|PlayerPlugin|
|Source|http://www.TiddlyTools.com/#PlayerPlugin|
|Version|1.1.4|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|Embed a media player in a tiddler|
!!!!!Usage
<<<
{{{<<player [id=xxx] [type] [URL] [width] [height] [autoplay|true|false] [showcontrols|true|false] [extras]>>}}}

''id=xxx'' is optional, and specifies a unique identifier for each embedded player.  note: this is required if you intend to display more than one player at the same time.

''type'' is optional, and is one of the following: ''windows'', ''realone'', ''quicktime'', ''flash'', ''image'' or ''iframe''.  If the media type is not specified, the plugin automatically detects Windows, Real, QuickTime, Flash video or JPG/GIF images by matching known file extensions and/or specialized streaming-media transfer protocols (such as RTSP:).  For unrecognized media types, the plugin displays an error message.

''URL'' is the location of the media content

''width'' and ''height'' are the dimensions of the video display area (in pixels)

''autoplay'' or ''true'' or ''false'' is optional, and specifies whether the media content should begin playing as soon as it is loaded, or wait for the user to press the "play" button.  Default is //not// to autoplay.

''showcontrols'' or ''true'' or ''false'' is optional, and specifies whether the embedded media player should display its built-in control panel (e.g., play, pause, stop, rewind, etc), if any.  Default is to display the player controls.

''extras'' are optional //pairs// of parameters that can be passed to the embedded player, using the {{{<param name=xxx value=yyy>}}} HTML syntax.

''If you use [[AttachFilePlugin]] to encode and store a media file within your document, you can play embedded media content by using the title of the //attachment tiddler//'' as a parameter in place of the usual reference to an external URL.  When playing an attached media content, you should always explicitly specify the media type parameter, because the name used for the attachment tiddler may not contain a known file extension from which a default media type can be readily determined.
<<<
!!!!!Configuration
<<<
Default player size:
width: <<option txtPlayerDefaultWidth>> height: <<option txtPlayerDefaultHeight>>
<<<
!!!!!Examples
<<<
+++[Windows Media]...
Times Square Live Webcam
{{{<<player id=1 http://www.earthcam.com/usa/newyork/timessquare/asx/tsq_stream.asx>>}}}
<<player id=1 http://www.earthcam.com/usa/newyork/timessquare/asx/tsq_stream.asx>>
===
+++[RealOne]...
BBC London: Live and Recorded news
{{{<<player id=2 http://www.bbc.co.uk/london/realmedia/news/tvnews.ram>>}}}
<<player id=2 http://www.bbc.co.uk/london/realmedia/news/tvnews.ram>>
===
+++[Quicktime]...
America Free TV: Classic Comedy
{{{<<player id=3 http://www.americafree.tv/unicast_mov/AmericaFreeTVComedy.mov>>}}}
<<player id=3 http://www.americafree.tv/unicast_mov/AmericaFreeTVComedy.mov>>
===
+++[Flash]...
Asteroids arcade game
{{{<<player id=4 http://www.80smusiclyrics.com/games/asteroids/asteroids.swf 400 300>>}}}
<<player id=4 http://www.80smusiclyrics.com/games/asteroids/asteroids.swf 400 300>>
Google Video
{{{<<player id=5 flash http://video.google.com/googleplayer.swf?videoUrl=http%3A%2F%2Fvp.video.google.com%2Fvideodownload%3Fversion%3D0%26secureurl%3DoQAAAIVnUNP6GYRY8YnIRNPe4Uk5-j1q1MVpJIW4uyEFpq5Si0hcSDuig_JZcB9nNpAhbScm9W_8y_vDJQBw1DRdCVbXl-wwm5dyUiiStl_rXt0ATlstVzrUNC4fkgK_j7nmse7kxojRj1M3eo3jXKm2V8pQjWk97GcksMFFwg7BRAXmRSERexR210Amar5LYzlo9_k2AGUWPLyRhMJS4v5KtDSvNK0neL83ZjlHlSECYXyk%26sigh%3Dmpt2EOr86OAUNnPQ3b9Tr0wnDms%26begin%3D0%26len%3D429700%26docid%3D-914679554478687740&thumbnailUrl=http%3A%2F%2Fvideo.google.com%2FThumbnailServer%3Fcontentid%3De7e77162deb04c42%26second%3D5%26itag%3Dw320%26urlcreated%3D1144620753%26sigh%3DC3fqXPPS1tFiUqLzmkX3pdgYc2Y&playerId=-91467955447868774               400 326>>}}}
<<player id=5 flash http://video.google.com/googleplayer.swf?videoUrl=http%3A%2F%2Fvp.video.google.com%2Fvideodownload%3Fversion%3D0%26secureurl%3DoQAAAIVnUNP6GYRY8YnIRNPe4Uk5-j1q1MVpJIW4uyEFpq5Si0hcSDuig_JZcB9nNpAhbScm9W_8y_vDJQBw1DRdCVbXl-wwm5dyUiiStl_rXt0ATlstVzrUNC4fkgK_j7nmse7kxojRj1M3eo3jXKm2V8pQjWk97GcksMFFwg7BRAXmRSERexR210Amar5LYzlo9_k2AGUWPLyRhMJS4v5KtDSvNK0neL83ZjlHlSECYXyk%26sigh%3Dmpt2EOr86OAUNnPQ3b9Tr0wnDms%26begin%3D0%26len%3D429700%26docid%3D-914679554478687740&thumbnailUrl=http%3A%2F%2Fvideo.google.com%2FThumbnailServer%3Fcontentid%3De7e77162deb04c42%26second%3D5%26itag%3Dw320%26urlcreated%3D1144620753%26sigh%3DC3fqXPPS1tFiUqLzmkX3pdgYc2Y&playerId=-91467955447868774               400 326>>
YouTube Video
{{{<<player id=6 flash http://www.youtube.com/v/OdT9z-JjtJk 400 300>>}}}
<<player id=6 flash http://www.youtube.com/v/OdT9z-JjtJk 400 300>>
===
+++[Still Images]...
GIF (best for illustrations, animations, diagrams, etc.)
{{{<<player id=7 image images/meow.gif auto auto>>}}}
<<player id=7 image images/meow.gif auto auto>>
JPG (best for photographs, scanned images, etc.)
{{{<<player id=8 image images/meow2.jpg 200 150>>}}}
<<player id=8 image images/meow2.jpg 200 150>>
===
<<<
!!!!!Revisions
<<<
2008.05.10 [1.1.4] in handlers(), immediately return if no params (prevents error in macro).  Also, refactored auto-detect code to make type mapping configurable.
2007.10.15 [1.1.3] in loadURL(), add recognition for .PNG (still image), fallback to iframe for unrecognized media types
2007.08.31 [1.1.2] added 'click-through' link for JPG/GIF images
2007.06.21 [1.1.1] changed "hidecontrols" param to "showcontrols" and recognize true/false values in addition to 'showcontrols', added "autoplay" param (also recognize true/false values), allow "auto" as value for type param
2007.05.22 [1.1.0] added support for type=="iframe" (displays src URL in an IFRAME)
2006.12.06 [1.0.1] in handler(), corrected check for config.macros.attach (instead of config.macros.attach.getAttachment) so that player plugin will work when AttachFilePlugin is NOT installed.  (Thanks to Phillip Ehses for bug report)
2006.11.30 [1.0.0] support embedded media content using getAttachment() API defined by AttachFilePlugin or AttachFilePluginFormatters.  Also added support for 'image' type to render JPG/GIF still images
2006.02.26 [0.7.0] major re-write.  handles default params better.  create/recreate player objects via loadURL() API for use with interactive forms and scripts.
2006.01.27 [0.6.0] added support for 'extra' macro params to pass through to object parameters
2006.01.19 [0.5.0] Initial ALPHA release
2005.12.23 [0.0.0] Started
<<<
!!!!!Code
***/
//{{{
version.extensions.PlayerPlugin= {major: 1, minor: 1, revision: 4, date: new Date(2008,5,10)};

config.macros.player = {};
config.macros.player.html = {};
config.macros.player.handler= function(place,macroName,params) {
	if (!params.length) return; // missing parameters - do nothing
	var id=null;
	if (params[0].substr(0,3)=="id=") id=params.shift().substr(3);
	var type="";
	if (!params.length) return; // missing parameters - do nothing
	var p=params[0].toLowerCase();
	if (p=="auto" || p=="windows" || p=="realone" || p=="quicktime" || p=="flash" || p=="image" || p=="iframe")
		type=params.shift().toLowerCase();
	var url=params.shift(); if (!url || !url.trim().length) url="";
	if (url.length && config.macros.attach!=undefined) // if AttachFilePlugin is installed
		if ((tid=store.getTiddler(url))!=null && tid.isTagged("attachment")) // if URL is attachment
			url=config.macros.attach.getAttachment(url); // replace TiddlerTitle with URL
	var width=params.shift();
	var height=params.shift();
	var autoplay=false;
	if (params[0]=='autoplay'||params[0]=='true'||params[0]=='false')
		autoplay=(params.shift()!='false');
	var show=true;
	if (params[0]=='showcontrols'||params[0]=='true'||params[0]=='false')
		show=(params.shift()!='false');
	var extras="";
	while (params[0]!=undefined)
		extras+="<param name='"+params.shift()+"' value='"+params.shift()+"'> ";
	this.loadURL(place,id,type,url,width,height,autoplay,show,extras);
}

if (config.options.txtPlayerDefaultWidth==undefined) config.options.txtPlayerDefaultWidth="100%";
if (config.options.txtPlayerDefaultHeight==undefined) config.options.txtPlayerDefaultHeight="480"; // can't use "100%"... player height doesn't stretch right :-(

config.macros.player.typeMap={
	windows: ['mms', '.asx', '.wvx', '.wmv', '.mp3'],
	realone: ['rtsp', '.ram', '.rpm', '.rm', '.ra'],
	quicktime: ['.mov', '.qt'],
	flash: ['.swf', '.flv'],
	image: ['.jpg', '.gif', '.png'],
	iframe: ['.htm', '.html', '.shtml', '.php']
};

config.macros.player.loadURL=function(place,id,type,url,width,height,autoplay,show,extras) {

	if (id==undefined) id="tiddlyPlayer";
	if (!width) var width=config.options.txtPlayerDefaultWidth;
	if (!height) var height=config.options.txtPlayerDefaultHeight;
	if (url && (!type || !type.length || type=="auto")) { // determine type from URL
		u=url.toLowerCase();
		var map=config.macros.player.typeMap;
		for (var t in map) for (var i=0; i<map[t].length; i++)
			if (u.indexOf(map[t][i])!=-1) var type=t;
	}
	if (!type || !config.macros.player.html[type]) var type="none";
	if (!url) var url="";
	if (show===undefined) var show=true;
	if (!extras) var extras="";
	if (type=="none" && url.trim().length) type="iframe"; // fallback to iframe for unrecognized media types

	// adjust parameter values for player-specific embedded HTML
	switch (type) {
		case "windows":
			autoplay=autoplay?"1":"0"; // player-specific param value
			show=show?"1":"0"; // player-specific param value
			break;
		case "realone":
			autoplay=autoplay?"true":"false";
			show=show?"block":"none";
			height-=show?60:0; // leave room for controls
			break;
		case "quicktime":
			autoplay=autoplay?"true":"false";
			show=show?"true":"false";
			break;
		case "image":
			show=show?"block":"none";
			break;
		case "iframe":
			show=show?"block":"none";
			break;
	}

	// create containing div for player HTML
	// and add or replace player in TW DOM structure
	var newplayer = document.createElement("div");
	newplayer.playerType=type;
	newplayer.setAttribute("id",id+"_div");
	var existing = document.getElementById(id+"_div");
	if (existing && !place) place=existing.parentNode;
	if (!existing)
		place.appendChild(newplayer);
	else {
		if (place==existing.parentNode) place.replaceChild(newplayer,existing)
		else { existing.parentNode.removeChild(existing); place.appendChild(newplayer); }
	}

	var html=config.macros.player.html[type];
	html=html.replace(/%i%/mg,id);
	html=html.replace(/%w%/mg,width);
	html=html.replace(/%h%/mg,height);
	html=html.replace(/%u%/mg,url);
	html=html.replace(/%a%/mg,autoplay);
	html=html.replace(/%s%/mg,show);
	html=html.replace(/%x%/mg,extras);
	newplayer.innerHTML=html;
}
//}}}

// // Player-specific API functions: isReady(id), isPlaying(id), toggleControls(id), showControls(id,flag)

//{{{
// status values:
// Windows: 0=Undefined, 1=Stopped, 2=Paused, 3=Playing, 4=ScanForward, 5=ScanReverse
//          6=Buffering, 7=Waiting, 8=MediaEnded, 9=Transitioning, 10=Ready, 11=Reconnecting
// RealOne: 0=Stopped, 1=Contacting, 2=Buffering, 3=Playing, 4=Paused, 5=Seeking
// QuickTime: 'Waiting', 'Loading', 'Playable', 'Complete', 'Error:###'
// Flash: 0=Loading, 1=Uninitialized, 2=Loaded, 3=Interactive, 4=Complete
config.macros.player.isReady=function(id)
{
	var d=document.getElementById(id+"_div"); if (!d) return false;
	var p=document.getElementById(id); if (!p) return false;
	if (d.playerType=='windows') return !((p.playState==0)||(p.playState==7)||(p.playState==9)||(p.playState==11));
	if (d.playerType=='realone') return (p.GetPlayState()>1);
	if (d.playerType=='quicktime') return !((p.getPluginStatus()=='Waiting')||(p.getPluginStatus()=='Loading'));
	if (d.playerType=='flash') return (p.ReadyState>2);
	return true;
}
config.macros.player.isPlaying=function(id)
{
	var d=document.getElementById(id+"_div"); if (!d) return false;
	var p=document.getElementById(id); if (!p) return false;
	if (d.playerType=='windows') return (p.playState==3);
	if (d.playerType=='realone') return (p.GetPlayState()==3);
	if (d.playerType=='quicktime') return (p.getPluginStatus()=='Complete');
	if (d.playerType=='flash') return (p.ReadyState<4);
	return false;
}
config.macros.player.showControls=function(id,flag) {
	var d=document.getElementById(id+"_div"); if (!d) return false;
	var p=document.getElementById(id); if (!p) return false;
	if (d.playerType=='windows') { p.ShowControls=flag; p.ShowStatusBar=flag; }
	if (d.playerType=='realone') { alert('show/hide controls not available'); }
	if (d.playerType=='quicktime')      // if player not ready, retry in one second
		{ if (this.isReady(id)) p.setControllerVisible(flag); else setTimeout('config.macros.player.showControls("'+id+'",'+flag+')',1000); }
	if (d.playerType=='flash') { alert('show/hide controls not available'); }
}
config.macros.player.toggleControls=function(id) {
	var d=document.getElementById(id+"_div"); if (!d) return false;
	var p=document.getElementById(id); if (!p) return false;
	if (d.playerType=='windows') var flag=!p.ShowControls;
	if (d.playerType=='realone') var flag=true; // TBD
	if (d.playerType=='quicktime') var flag=!p.getControllerVisible();
	if (d.playerType=='flash') var flag=true; // TBD
	this.showControls(id,flag);
}
config.macros.player.fullScreen=function(id) {
	var d=document.getElementById(id+"_div"); if (!d) return false;
	var p=document.getElementById(id); if (!p) return false;
	if (d.playerType=='windows') p.DisplaySize=3;
	if (d.playerType=='realone') p.SetFullScreen();
	if (d.playerType=='quicktime') { alert('full screen not available'); }
	if (d.playerType=='flash') { alert('full screen not available'); }
}
//}}}

// // Player HTML

//{{{
// placeholder (no player)
config.macros.player.html.none=' \
	<table id="%i%" width="%w%" height="%h%" style="background-color:#111;border:0;margin:0;padding:0;"> \
	<tr style="background-color:#111;border:0;margin:0;padding:0;"> \
	<td width="%w%" height="%h%" style="background-color:#111;color:#ccc;border:0;margin:0;padding:0;text-align:center;"> \
	&nbsp; \
	%u% \
	&nbsp; \
	</td></tr></table>';
//}}}

//{{{
// JPG/GIF/PNG still images
config.macros.player.html.image='\
	<a href="%u%" target="_blank"><img width="%w%" height="%h%" style="display:%s%;" src="%u%"></a>';
//}}}

//{{{
// IFRAME web page viewer
config.macros.player.html.iframe='\
	<iframe id="%i%" width="%w%" height="%h%" style="display:%s%;background:#fff;" src="%u%"></iframe>';
//}}}

//{{{
// Windows Media Player
// v7.1 ID: classid=CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6
// v9	ID: classid=CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95
config.macros.player.html.windows=' \
	<object id="%i%" width="%w%" height="%h%" style="margin:0;padding:0;width:%w%;height:%h%px;" \
		classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" \
		codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" \
		align="baseline" border="0" \
		standby="Loading Microsoft Windows Media Player components..." \
		type="application/x-oleobject"> \
		<param name="FileName" value="%u%"> <param name="ShowControls" value="%s%"> \
		<param name="ShowPositionControls" value="1"> <param name="ShowAudioControls" value="1"> \
		<param name="ShowTracker" value="1"> <param name="ShowDisplay" value="0"> \
		<param name="ShowStatusBar" value="1"> <param name="AutoSize" value="1"> \
		<param name="ShowGotoBar" value="0"> <param name="ShowCaptioning" value="0"> \
		<param name="AutoStart" value="%a%"> <param name="AnimationAtStart" value="1"> \
		<param name="TransparentAtStart" value="0"> <param name="AllowScan" value="1"> \
		<param name="EnableContextMenu" value="1"> <param name="ClickToPlay" value="1"> \
		<param name="InvokeURLs" value="1"> <param name="DefaultFrame" value="datawindow"> \
		%x% \
		<embed src="%u%" style="margin:0;padding:0;width:%w%;height:%h%px;" \
			align="baseline" border="0" width="%w%" height="%h%" \
			type="application/x-mplayer2" \
			pluginspage="http://www.microsoft.com/windows/windowsmedia/download/default.asp" \
			name="%i%" showcontrols="%s%" showpositioncontrols="1" \
			showaudiocontrols="1" showtracker="1" showdisplay="0" \
			showstatusbar="%s%" autosize="1" showgotobar="0" showcaptioning="0" \
			autostart="%a%" autorewind="0" animationatstart="1" transparentatstart="0" \
			allowscan="1" enablecontextmenu="1" clicktoplay="0" invokeurls="1" \
			defaultframe="datawindow"> \
		</embed> \
	</object>';
//}}}

//{{{
// RealNetworks' RealOne Player
config.macros.player.html.realone=' \
	<table width="%w%" style="border:0;margin:0;padding:0;"><tr style="border:0;margin:0;padding:0;"><td style="border:0;margin:0;padding:0;"> \
	<object id="%i%" width="%w%" height="%h%" style="margin:0;padding:0;" \
		CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"> \
		<PARAM NAME="CONSOLE" VALUE="player"> \
		<PARAM NAME="CONTROLS" VALUE="ImageWindow"> \
		<PARAM NAME="AUTOSTART" Value="%a%"> \
		<PARAM NAME="MAINTAINASPECT" Value="true"> \
		<PARAM NAME="NOLOGO" Value="true"> \
		<PARAM name="BACKGROUNDCOLOR" VALUE="#333333"> \
		<PARAM NAME="SRC" VALUE="%u%"> \
		%x% \
		<EMBED width="%w%" height="%h%" controls="ImageWindow" type="audio/x-pn-realaudio-plugin" style="margin:0;padding:0;" \
			name="%i%" \
			src="%u%" \
			console=player \
			maintainaspect=true \
			nologo=true \
			backgroundcolor=#333333 \
			autostart=%a%> \
		</OBJECT> \
	</td></tr><tr style="border:0;margin:0;padding:0;"><td style="border:0;margin:0;padding:0;"> \
	<object id="%i%_controls" width="%w%" height="60" style="margin:0;padding:0;display:%s%" \
		CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"> \
		<PARAM NAME="CONSOLE" VALUE="player"> \
		<PARAM NAME="CONTROLS" VALUE="All"> \
		<PARAM NAME="NOJAVA" Value="true"> \
		<PARAM NAME="MAINTAINASPECT" Value="true"> \
		<PARAM NAME="NOLOGO" Value="true"> \
		<PARAM name="BACKGROUNDCOLOR" VALUE="#333333"> \
		<PARAM NAME="SRC" VALUE="%u%"> \
		%x% \
		<EMBED WIDTH="%w%" HEIGHT="60" NOJAVA="true" type="audio/x-pn-realaudio-plugin" style="margin:0;padding:0;display:%s%" \
			controls="All" \
			name="%i%_controls" \
			src="%u%" \
			console=player \
			maintainaspect=true \
			nologo=true \
			backgroundcolor=#333333> \
		</OBJECT> \
	</td></tr></table>';
//}}}

//{{{
// QuickTime Player
config.macros.player.html.quicktime=' \
	<OBJECT ID="%i%" WIDTH="%w%" HEIGHT="%h%" style="margin:0;padding:0;" \
		CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" \
		CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab"> \
		<PARAM name="SRC" VALUE="%u%"> \
		<PARAM name="AUTOPLAY" VALUE="%a%"> \
		<PARAM name="CONTROLLER" VALUE="%s%"> \
		<PARAM name="BGCOLOR" VALUE="#333333"> \
		<PARAM name="SCALE" VALUE="aspect"> \
		<PARAM name="SAVEEMBEDTAGS" VALUE="true"> \
		%x% \
		<EMBED name="%i%" WIDTH="%w%" HEIGHT="%h%" style="margin:0;padding:0;" \
			SRC="%u%" \
			AUTOPLAY="%a%" \
			SCALE="aspect" \
			CONTROLLER="%s%" \
			BGCOLOR="#333333" \
			EnableJavaSript="true" \
			PLUGINSPAGE="http://www.apple.com/quicktime/download/"> \
		</EMBED> \
	</OBJECT>';
//}}}

//{{{
// Flash Player
config.macros.player.html.flash='\
	<object id="%i%" width="%w%" height="%h%" style="margin:0;padding:0;" \
		classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" \
		codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"> \
		<param name="movie" value="%u%"> \
		<param name="quality" value="high"> \
		<param name="SCALE" value="exactfit"> \
		<param name="bgcolor" value="333333"> \
		%x% \
		<embed name="%i%" src="%u%" style="margin:0;padding:0;" \
			height="%h%" width="%w%" quality="high" \
			pluginspage="http://www.macromedia.com/go/getflashplayer" \
			type="application/x-shockwave-flash" scale="exactfit"> \
		</embed> \
	</object>';
//}}}
/***
|''Name:''|PortugueseLingo|
|''Description:''|An european portuguese translation for TW|
|''Version:''|2.0.0|
|''Date:''|Sep 18, 2006|
|''Source:''|http://www.math.ist.utl.pt/~psoares/addons.html|
|''Author:''|Paulo Soares (psoares (at) math (dot) ist (dot) utl (dot) pt)|
|''License:''|[[BSD open source license]]|
|''~CoreVersion:''|2.1.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
***/
{{{
// ---------------------------------------------------------------------------------
// Translateable strings
// ---------------------------------------------------------------------------------

// Strings in "double quotes" should be translated; strings in 'single quotes' should be left alone

if (config.options.txtUserName=="YourName")
   merge(config.options,{txtUserName: "OSeuNome"}); 

merge(config.messages,{
	customConfigError: "Foram encontrados problemas ao carregar plugins. Veja o PluginManager para mais detalhes",
	pluginError: "Erro: %0",
	pluginDisabled: "Não executado porque foi desactivado pela etiqueta 'systemConfigDisable'",
	pluginForced: "Executado porque foi forçado pela etiqueta 'systemConfigForce'",
	pluginVersionError: "Não executado porque este plugin requer uma versão mais recente do TiddlyWiki",
	nothingSelected: "Nada selecionado. Deve selecionar um ou mais items primeiro",
	savedSnapshotError: "Parece que este TiddlyWiki foi guardado incorrectamente. Por favor veja http://www.tiddlywiki.com/#DownloadSoftware para mais detalhes",
	subtitleUnknown: "(desconhecido)",
	undefinedTiddlerToolTip: "O tiddler '%0' ainda não existe",
	shadowedTiddlerToolTip: "O tiddler '%0' ainda não existe, mas tem um modelo pré-definido",
	tiddlerLinkTooltip: "%0 - %1, %2",
	externalLinkTooltip: "Ligação externa a %0",
	noTags: "Não há tiddlers com etiquetas",
	notFileUrlError: "É necessário guardar este TiddlyWiki num ficheiro antes de poder guardar alterações",
	cantSaveError: "Não é possível guardar alterações. Isto pode acontecer porque o seu browser não o permite (em alternativa, use o Firefox se puder), ou porque o nome do caminho para o seu ficheiro TiddlyWiki contém caracteres ilegais",
	invalidFileError: "O ficheiro original '%0' não parece ser um TiddlyWiki válido",
	backupSaved: "Ficheiro de backup guardado",
	backupFailed: "Falha ao guardar o ficheiro de backup",
	rssSaved: "Ficheiro RSS guardado",
	rssFailed: "Falha ao guardar o ficheiro RSS",
	emptySaved: "Modelo vazio guardado",
	emptyFailed: "Falha ao guardar o modelo vazio",
	mainSaved: "Ficheiro principal de TiddlyWiki guardado",
	mainFailed: "Falha ao guardar o ficheiro principal de TiddlyWiki. As suas alterações não foram guardadas",
	macroError: "Erro na macro <<%0>>",
	macroErrorDetails: "Erro ao executar a macro <<%0>>:\n%1",
	missingMacro: "Essa macro não existe",
	overwriteWarning: "Um tiddler chamado '%0' já existe. Escolha OK para substituí-lo",
	unsavedChangesWarning: "ATENÇÃO! Há alterações no TiddlyWiki que ainda não foram guardadas\n\nEscolha OK para guardar\nEscolha CANCEL para abandonar as alterações",
	confirmExit: "--------------------------------\n\nHá alterações no TiddlyWiki que ainda não foram guardadas. Se continuar irá perder essas alterações\n\n--------------------------------",
	saveInstructions: "GuardarAlterações",
	unsupportedTWFormat: "Formato TiddlyWiki não suportado '%0'",
	tiddlerSaveError: "Erro ao guardar tiddler '%0'",
	tiddlerLoadError: "Erro ao carregar tiddler '%0'",
	wrongSaveFormat: "Não é possível guardar no formato de armazenamento '%0'. Use o formato standard para guardar.",
	invalidFieldName: "Nome de campo inválido %0",
	fieldCannotBeChanged: "O campo '%0' não pode ser modificado"});

merge(config.messages.messageClose,{
	text: "fechar",
	tooltip: "fecha esta área de mensagens"});

config.messages.dates.months = ["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"];
config.messages.dates.days = ["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"];
config.messages.dates.shortMonths = ["Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"];
config.messages.dates.shortDays = ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"];

merge(config.views.wikified.tag,{
	labelNoTags: "sem etiquetas",
	labelTags: "etiquetas: ",
	openTag: "Abrir etiqueta '%0'",
	tooltip: "Abrir tiddlers etiquetados com '%0'",
	openAllText: "Abrir todos",
	openAllTooltip: "Abrir todos estes tiddlers",
	popupNone: "Não há outros tiddlers etiquetados com '%0'"});

merge(config.views.wikified,{
	defaultText: "O tiddler '%0' ainda não existe. Faça duplo-clique para criá-lo",
	defaultModifier: "(em falta)",
	shadowModifier: "(tiddler sombra pré-definido)",
	createdPrompt: "criado em"});

merge(config.views.editor,{
	tagPrompt: "Escreva as etiquetas separadas por espaços, [[use duplos parênteses rectos]] se necessário, ou atribua existentes",
	defaultText: "Escreva o texto para '%0'"});

merge(config.views.editor.tagChooser,{
	text: "etiquetas",
	tooltip: "Escolha entre as etiquetas existentes para atribuir a este tiddler",
	popupNone: "Não há etiquetas definidas",
	tagTooltip: "Atribuir a etiqueta '%0'"});

merge(config.macros.search,{
	label: "procurar",
	prompt: "Procura neste TiddlyWiki",
	accessKey: "F",
	successMsg: "%0 tiddlers encontrados que contêm %1",
	failureMsg: "Não foi encontrado nenhum tiddler que contenha %0"});

merge(config.macros.tagging,{
	label: "etiquetando:",
	labelNotTag: "não etiquetando",
	tooltip: "Lista de tiddlers etiquetados com '%0'"});

merge(config.macros.timeline,{
	dateFormat: "DD MMM YYYY"});

merge(config.macros.allTags,{
	tooltip: "Mostra tiddlers com a etiqueta '%0'",
	noTags: "Não há tiddlers etiquetados"});

config.macros.list.all.prompt = "Todos os tiddlers por ordem alfabética";
config.macros.list.missing.prompt = "Tiddlers com ligações de outros tiddlers mas que não existem";
config.macros.list.orphans.prompt = "Tiddlers sem ligações de outros tiddlers";
config.macros.list.shadowed.prompt = "Tiddlers na sombra com conteúdo pré-definido";

merge(config.macros.closeAll,{
	label: "fechar todos",
	prompt: "Fecha todos os tiddlers abertos (excepto os que estão a ser editados)"});

merge(config.macros.permaview,{
	label: "permavista",
	prompt: "Ligação a um URL que mostra todos os tiddlers que estão abertos"});

merge(config.macros.saveChanges,{
	label: "guardar alterações",
	prompt: "Guarda todas as alterações em ficheiro",
	accessKey: "S"});

merge(config.macros.newTiddler,{
	label: "novo tiddler",
	prompt: "Cria um novo tiddler",
	title: "Novo tiddler",
	accessKey: "N"});

merge(config.macros.newJournal,{
	label: "novo diário",
	prompt: "Cria um novo tiddler com a data e hora actuais",
	accessKey: "J"});

merge(config.macros.plugins,{
	skippedText: "(Este plugin não foi executado porque foi incluido depois do arranque)",
	noPluginText: "Não há plugins instalados",
	confirmDeleteText: "Tem a a certeza que quer eliminar estes tiddlers:\n\n%0",
	listViewTemplate : {
		columns: [
			{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
			{name: 'Title', field: 'title', tiddlerLink: 'title', title: "Título", type: 'TiddlerLink'},
			{name: 'Forced', field: 'forced', title: "Forçado", tag: 'systemConfigForce', type: 'TagCheckbox'},
			{name: 'Disabled', field: 'disabled', title: "Desactivado", tag: 'systemConfigDisable', type: 'TagCheckbox'},
			{name: 'Executed', field: 'executed', title: "Executado", type: 'Boolean', trueText: "Sim", falseText: "Não"},
			{name: 'Error', field: 'error', title: "Resultado", type: 'Boolean', trueText: "Erro", falseText: "OK"},
			{name: 'Log', field: 'log', title: "Log", type: 'StringList'}
			],
		rowClasses: [
			{className: 'error', field: 'error'},
			{className: 'warning', field: 'warning'}
			],
		actions: [
			{caption: "Mais acções...", name: ''},
			{caption: "Remover a etiqueta systemConfig", name: 'remove'},
			{caption: "Eliminar estes tiddlers para sempre", name: 'delete'}
			]}
	});

merge(config.macros.refreshDisplay,{
	label: "refrescar",
	prompt: "Recarrega todo o TiddlyWiki"
	});

merge(config.macros.importTiddlers,{
	defaultPath: "http://www.tiddlywiki.com/index.html",
	fetchLabel: "importar",
	fetchPrompt: "Importe o ficheiro Tiddlywiki",
	fetchError: "Ocorreram problemas ao importar o ficheiro Tiddlywiki",
	confirmOverwriteText: "Tem a certeza que quer substituir estes tiddlers:\n\n%0",
	wizardTitle: "Importar tiddlers de outro ficheiro TiddlyWiki",
	step1: "Passo 1: Localize o ficheiro",
	step1prompt: "Escreva o URL ou o caminho aqui: ",
	step1promptFile: "...ou procure um ficheiro: ",
	step1promptFeeds: "...ou selecione uma localização pré-definida: ",
	step1feedPrompt: "Escolha...",
	step2: "Passo 2: A carregar o ficheiro TiddlyWiki",
	step2Text: "Por favor aguarde enquanto o ficheiro é carregado de: %0",
	step3: "Passo 3: Escolha os tiddlers a importar",
	step4: "%0 tiddler(s) importado(s)",
	step5: "terminado",
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
			{name: 'Title', field: 'title', title: "Título", type: 'String'},
			{name: 'Snippet', field: 'text', title: "Extracto", type: 'String'},
			{name: 'Tags', field: 'tags', title: "Etiquetas", type: 'Tags'}
			],
		rowClasses: [
			],
		actions: [
			{caption: "Mais acções...", name: ''},
			{caption: "Importar estes tiddlers", name: 'import'}
			]}
	});

merge(config.commands.closeTiddler,{
	text: "fechar",
	tooltip: "Fecha este tiddler"});

merge(config.commands.closeOthers,{
	text: "fechar outros",
	tooltip: "Fecha todos os outros tiddlers"});

merge(config.commands.editTiddler,{
	text: "editar",
	tooltip: "Edita este tiddler",
	readOnlyText: "ver",
	readOnlyTooltip: "Ver o conteúdo deste tiddler"});

merge(config.commands.saveTiddler,{
	text: "guardar",
	tooltip: "Guarda as alterações a este tiddler"});

merge(config.commands.cancelTiddler,{
	text: "cancelar",
	tooltip: "Cancela as alterações a este tiddler",
	warning: "Tem a certeza que quer cancelar as alterações a '%0'?",
	readOnlyText: "ver",
	readOnlyTooltip: "Ver este tiddler normalmente"});

merge(config.commands.deleteTiddler,{
	text: "eliminar",
	tooltip: "Elimina este tiddler",
	warning: "Tem a certeza que quer eliminar '%0'?"});

merge(config.commands.permalink,{
	text: "permaligação",
	tooltip: "Permaligação para este tiddler"});

merge(config.commands.references,{
	text: "referências",
	tooltip: "Abre tiddlers que ligam a este",
	popupNone: "Sem referências"});

merge(config.commands.jump,{
	text: "saltar",
	tooltip: "Salta para outro tiddler aberto"});

merge(config.shadowTiddlers,{
	DefaultTiddlers: "ComoComeçar",
	MainMenu: "ComoComeçar",
	SiteTitle: "O meu TiddlyWiki",
	SiteSubtitle: "um bloco de notas reutilizável e não-linear na web",
	SiteUrl: "http://www.tiddlywiki.com/",
	ComoComeçar: "Para começar a usar este TiddlyWiki vazio terá de modificar os seguintes tiddlers:\n* SiteTitle & SiteSubtitle: O título e o subtítulo do site, como pode ver acima (depois de guardar as alterações, eles aparecerão também na barra de título do browser)\n* MainMenu: O menu (usualmente à esquerda)\n* DefaultTiddlers: Contém o nome dos tiddlers que pretende que apareçam quando o TiddlyWiki é aberto\nSerá também necessário inserir o nome de utilizador que servirá para assinar as edições: <<option txtUserName>>",
	SideBarOptions: "<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel 'opções »' 'Muda as opções avançadas do TiddlyWiki'>>",
	OptionsPanel: "Estas opções de personalização do TiddlyWiki ficam guardadas no seu browser\n\nO seu nome de utilizador para assinar os textos. Use uma PalavraWiki (eg, JoséSilva)\n\n<<option txtUserName>>\n<<option chkSaveBackups>> GuardarBackups\n<<option chkAutoSave>> AutoGuardar\n<<option chkRegExpSearch>> ProcuraExpReg\n<<option chkCaseSensitiveSearch>> ProcuraSensívMaiúsc\n<<option chkAnimate>> ActivarAnimações\n\n----\nOpçõesAvançadas\nGestãoDePlugins\nImportarTiddlers",
	AdvancedOptions: "<<option chkGenerateAnRssFeed>> GerarUmFicheiroRSS\n<<option chkOpenInNewWindow>> AbrirLigaçõesNumaNovaJanela\n<<option chkSaveEmptyTemplate>> CriaNovoModeloVazio\n<<option chkToggleLinks>> Fazer clique em ligações para tiddlers abertos, fecha-os\n^^(desactive com Control ou outra tecla modificadora)^^\n<<option chkHttpReadOnly>> EscondeFunçõesDeEdição quando acedido por HTTP\n<<option chkForceMinorUpdate>> Trata as edições como AlteraçõesMenores preservando a data e a hora\n^^(desactive pressionando Shift enquanto clica 'guardar' ou pressionando Ctrl-Shift-Enter^^\n<<option chkConfirmDelete>> ConfirmarAntesDeEliminar\nNúmero máximo de linhas na caixa de edição do tiddler: <<option txtMaxEditRows>>\nNome do directório para os ficheiros de backup: <<option txtBackupFolder>>\n<<option chkInsertTabs>> Usar a tecla tab para inserir caracteres tab em vez de saltar para o próximo campo",
	SideBarTabs: "<<tabs txtMainTab 'Data' 'Tiddlers por ordem cronológica' TabTimeline 'Título' 'Tiddlers por ordem alfabética' TabAll 'Etiquetas' 'Todas as etiquetas' TabTags 'Mais' 'Mais listas' TabMore>>",
	TabTimeline: "<<timeline>>",
	TabAll: "<<list all>>",
	TabTags: "<<allTags>>",
	TabMore: "<<tabs txtMoreTab 'Em falta' 'Tiddlers em falta' TabMoreMissing 'Orfãos' 'Tiddlers sem ligações de outros tiddlers' TabMoreOrphans Sombra 'Tiddlers na sombra' TabMoreShadowed>>",
	TabMoreMissing: "<<list missing>>",
	TabMoreOrphans: "<<list orphans>>",
	TabMoreShadowed: "<<list shadowed>>",
	PluginManager: "<<plugins>>",
	ImportTiddlers: "<<importTiddlers>>",
        OpçõesAvançadas: "<<tiddler AdvancedOptions>>",
        GestãoDePlugins: "<<tiddler PluginManager>>",
        ImportarTiddlers: "<<tiddler ImportTiddlers>>"});

delete config.shadowTiddlers.GettingStarted;
}}}
<<wikify {{'<<tiddler RightSidebar##'+localStorage.rightsidebar+' with:'+localStorage.curso+'>'+'>'}}>>
<script>config.options.txtCurso=localStorage.curso;</script>
/%
!!curso

{{center{{{medium{<<wikify {{localStorage.curso}}>>}}}}}}
{{ref{<script label="dinamicas">story.displayTiddler(null,"Dinamica_"+localStorage.curso);refreshDisplay();</script><<setIcon Logos/clown_32x32.png "" notext>>}}} - Dinamica do Curso
{{ref{<script label="noticias">story.displayTiddler(null,"Noticias_"+localStorage.curso);refreshDisplay();</script><<setIcon Logos/wink_32x32.png "" notext>>}}} - Proximas Datas
{{ref{<script label="perguntas">story.displayTiddler(null,"Perguntas_"+localStorage.curso);refreshDisplay();</script><<setIcon Logos/question_32x32.png "" notext>>}}} - Mais Informação
{{ref{<script label="dinheiro">story.displayTiddler(null,"Investimento_"+localStorage.curso);refreshDisplay();</script><<setIcon Logos/money_32x32.png "" notext>>}}} - Investamento
{{ref{<<showPopup tiddler:InscrivirForma label:InscrivirSe width:300px popupClass:sticky>><<setIcon Logos/laughtingoutloud_32x32.png "" notext>>}}} - Inscrivir-se
----
<<wikify {{"[img(240px,auto)[Fotos/"+localStorage.curso+".png]]"}}>>
!!end
%/




/***
|Name|SetIconPlugin|
|Source|http://www.TiddlyTools.com/#SetIconPlugin|
|Documentation|http://www.TiddlyTools.com/#SetIconPluginInfo|
|Version|1.8.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.3|
|Type|plugin|
|Description|add an image to a toolbar, macro, or slider link|
!!!!!Documentation
>see [[SetIconPluginInfo]]
!!!!!Configuration
<<<
<<option chkIconsShowImage>> show images on links
<<option chkIconsShowText>> include link text with images
default image style: {{stretch{<<option txtIconsCSS>>}}}
<<<
!!!!!Revisions
<<<
2008.05.11 [1.8.0] added optional 'notext' value for iconpos to force text to be hidden for specific links
| see [[SetIconPluginInfo]] for additional revision details |
2008.05.09 [1.0.0] initial release (as inline script)
<<<
!!!!!Code
***/
//{{{
version.extensions.SetIconPlugin= {major: 1, minor: 8, revision: 0, date: new Date(2008,5,11)};

if (config.options.chkIconsShowImage===undefined)
	config.options.chkIconsShowImage=true;
if (config.options.chkIconsShowText===undefined)
	config.options.chkIconsShowText=true;
if (config.options.txtIconsCSS===undefined)
	config.options.txtIconsCSS="vertical-align:middle;width:auto;height:auto";

config.macros.setIcon = {
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		if (!config.options.chkIconsShowImage) return; // text-only - do nothing
		if (!params[0]) return; // no image src specified - do nothing

		// find nearest link element
		var btn=place.lastChild; // look for sibling link
		while (btn && btn.nodeName!="A") btn=btn.previousSibling;
		if (!btn) { // look for child link
			var links=place.getElementsByTagName("A");
			if (links.length) btn=links[links.length-1];
		}
		if (!btn) { // look for parent link
			var btn=place.parentNode.lastChild;
			while (btn && btn.nodeName!="A") btn=btn.previousSibling;
		}
		if (!btn) { // look for cousin link
			var links=place.parentNode.getElementsByTagName("A");
			if (links.length) btn=links[links.length-1];
		}
		if (!btn) return; // can't find a link - do nothing

		// set icon and command text/tip
		var txt=btn.innerHTML;
		var src=params[0];  // default to direct URL
		if (config.macros.attach && config.macros.attach.isAttachment(src))
			src=config.macros.attach.getAttachment(src); // retrieve attachment (if any)
		var css=params[1]; if (!css||!css.length) css=config.options.txtIconsCSS;
		var after=params[2]&&params[2].toUpperCase()=="RIGHT";
		var notext=params[2]&&params[2].toUpperCase()=="NOTEXT";
		btn.innerHTML="<img src='"+src+"' style='"+css+"'>";
		if (config.options.chkIconsShowText && !notext)
			btn.innerHTML=after?txt+btn.innerHTML:btn.innerHTML+txt;
		else
			btn.title=txt.toUpperCase()+": "+btn.title; // add text to tooltip

		// adjust nested slider button text/tip
		if (btn.getAttribute("closedtext")!=null) {
			btn.setAttribute("closedtext",btn.innerHTML);
			btn.setAttribute("openedtext",btn.innerHTML);
			if (!config.options.chkIconsShowText || notext) {
				btn.setAttribute("closedtip",txt.toUpperCase()+": "+btn.getAttribute("closedtip"));
				btn.setAttribute("openedtip",txt.toUpperCase()+": "+btn.getAttribute("openedtip"));
			}
		}
	}
};
//}}}
<script>config.options.txtFoto=tiddler.title;refreshDisplay();
var foto=config.options.txtFoto;
var no=parseInt(foto.substr(5,6));
var noplus=no+1;
var nomenos=no-1;
config.options.txtStart="Foto_1";
config.options.txtMenos="Foto_"+nomenos;
config.options.txtNext="Foto_"+noplus;
</script>
{{center{<script label="inicio">story.displayTiddler(null,"Foto_1");refreshDisplay();</script> / <script label="previo">story.displayTiddler(null,config.options.txtMenos);refreshDisplay();</script> / <script label="proximo">story.displayTiddler(null,config.options.txtNext);refreshDisplay();</script> / <script label="fim">story.displayTiddler(null,config.options.txtLast);refreshDisplay();</script>}}}
/***
|Name|[[ShowPopupPlugin]]|
|Source|http://www.TiddlyTools.com/#ShowPopupPlugin|
|Version|2.1.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|display tiddler content in a TiddlyWiki popup panel|
!!!!!Documenatation
>see [[ShowPopupPluginInfo]]
!!!!!Revisions
<<<
2011.03.13 2.1.1 in click(), removed check for popup already shown (prevents nested popups!)
| Please see [[ShowPopupPluginInfo]] for previous revision details |
2006.09.09 1.0.0 initial release (transclusion)
<<<
!!!!!Code
***/
//{{{
version.extensions.ShowPopupPlugin=
	{ major:2, minor:1, revision:1, date:new Date(2011,3,13) };
config.macros.showPopup = {
	tip: 'display "%0" in a popup',
	init: function() {
		config.shadowTiddlers.ShowPopup =
			'<<showPopup tiddler:[[$1]] label:"$2" tip:"$3" buttonClass:"button $4" width:"$5" popupClass:"$6" "$7">>';
		config.annotations.ShowPopup =
			'created by ShowPopupPlugin';
	},
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var p=paramString.parseParams('name',null,true,false,true);
		var tid=getParam(p,'tiddler','TiddlerName');
		var label=getParam(p,'label',tid);
		var tip=getParam(p,'tip',this.tip.format([tid]));
		var buttonClass=getParam(p,'buttonClass','');
		var width=getParam(p,'width','auto');
		var popupClass=getParam(p,'popupClass','');
		var above=params.contains('above');
		var mouseover=params.contains('mouseover');
		var b=createTiddlyButton(place, label, tip, this.click, buttonClass, null, null,
			{ tid:tid, popupClass:popupClass, width:width, above:above });
		b.innerHTML=label; // render HTML for entities, images, etc
		if (mouseover) b.onmouseover=b.onclick;  // option: mouseover triggers click
	},
	click: function(ev) { var ev=ev||window.event;
		// DISABLED if (Popup.find(this)!=-1)return false; // popup already shown!
		var p=Popup.create(this); if(!p)return false; // popup not created!
		addClass(p,this.getAttribute('popupClass'));
		var d=createTiddlyElement(p,'div');
		var s=d.style; s.whiteSpace='normal'; s.width=this.getAttribute('width'); s.padding='2px';
		wikify(store.getTiddlerText(this.getAttribute('tid'),''),d);
		if (this.getAttribute('above')!='true') Popup.show();
		else Popup.show('top','left',{x:0,y:-jQuery(d).outerHeight()});
		ev.cancelBubble=true; if(ev.stopPropagation)ev.stopPropagation(); return false;
	}
}
//}}}
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel 'opções »' 'Muda as opções avançadas do TiddlyWiki'>>
<<tiddler SideBarOptions>>
{{fourcolumns{{{fine{
<<tabs txtMainTab 'Data' 'Tiddlers por ordem cronológica' TabTimeline 'Título' 'Tiddlers por ordem alfabética' TabAll 'Etiquetas' 'Todas as etiquetas' TabTags 'Mais' 'Mais listas' TabMore>>}}} }}}
/***
|Name|SimpleMessagePlugin|
|Version|0.1|
|Author|Michael Mahemoff, Osmosoft|
|''License:''|[[BSD open source license]]|
|~CoreVersion|2.2|
***/

/*{{{*/
(function() {
if(!version.extensions.SimpleMessagePlugin) {

  version.extensions.SimpleMessagePlugin = {installed:true};
  version.extensions.SimpleMessagePlugin.delay = 2000;
  
  var timer;

  var _displayMessage = displayMessage;
  displayMessage = function() {
    if (timer) {
      timer=null;
      clearTimeout(timer);
    }
    timer = setTimeout(clearMessage, version.extensions.SimpleMessagePlugin.delay);
    _displayMessage.apply(this, arguments);
  }

  var _clearMessage = clearMessage;
  clearMessage = function() {
    clearTimeout(timer);
    return _clearMessage.apply(this, arguments);
  }

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

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


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

if (Story.prototype.SPM_coreDisplayTiddlers==undefined)
	Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;
Story.prototype.displayTiddlers = function() {
	// suspend single/top/bottom modes when showing multiple tiddlers
	var opt=config.options;
	var saveSPM=opt.chkSinglePageMode; opt.chkSinglePageMode=false;
	var saveTPM=opt.chkTopOfPageMode; opt.chkTopOfPageMode=false;
	var saveBPM=opt.chkBottomOfPageMode; opt.chkBottomOfPageMode=false;
	this.SPM_coreDisplayTiddlers.apply(this,arguments);
	opt.chkBottomOfPageMode=saveBPM;
	opt.chkTopOfPageMode=saveTPM;
	opt.chkSinglePageMode=saveSPM;
}
//}}}
Skye
<script>
var fonte=store.getTiddlerSlice(tiddler.title,"Fonte");
var tipo=store.getTiddlerSlice(tiddler.title,"Tipo");
var dvd=config.options.txtDVD;
if(fonte=="Local"){
if (tipo=="video"){var display="<<player id=1 windows '"+store.getTiddlerSlice(tiddler.title,"Link")+"' 400 400 true true>>";};
if (tipo=="apresent"){var display="<html><iframe src=../_Apresent/"+store.getTiddlerSlice(tiddler.title,"Link")+" width=100% height=600></iframe></html>";};
if (tipo=="foto"){var display="{{center{[img(500px,auto)["+store.getTiddlerSlice(tiddler.title,"Link")+"]]\n"+store.getTiddlerText(tiddler.title+"##Comentarios");localStorage.rightparameters=store.getTiddlerSlice(tiddler.title,"Tema");refreshDisplay();};
if (tipo=="som"){var display="<<player id=1 ../_Som/"+store.getTiddlerSlice(tiddler.title,"Link")+" 200 46 true true>>";};
}
if(fonte=="www"){
if (tipo=="html"){var display="<html><iframe src="+store.getTiddlerSlice(tiddler.title,"Link")+" width=100% height=600></iframe></html>";};
if (tipo=="pdf"){var display="<html><iframe src="+store.getTiddlerSlice(tiddler.title,"Link")+" width=100% height=600></iframe></html>";};
if (tipo=="video"){var display="<html>"+store.getTiddlerSlice(tiddler.title,"Link")+"</html>";};
if (tipo=="som"){var display="<<player id=1 "+store.getTiddlerSlice(tiddler.title,"Link")+" 46 200 true true>>";};
if (tipo=="foto"){var display="<html><iframe src="+store.getTiddlerSlice(tiddler.title,"Link")+" width=100% height=600></iframe></html>";};
}
if(fonte=="DVD"){
if (tipo=="postila"){var display="<html><iframe src="+dvd+"/_Postilas/"+store.getTiddlerSlice(tiddler.title,"Link")+" width=100% height=600></iframe></html>";};
if (tipo=="albumFotos"){var display="<html><iframe src='"+dvd+"/_AlbumReciclagem/Fotos/"+store.getTiddlerSlice(tiddler.title,"Link")+"' width=100% height=600></iframe></html>";};
if (tipo=="videozinho"){var display="<<player id=1 "+dvd+"/_Videozinhos/"+store.getTiddlerSlice(tiddler.title,"Link")+" 650 400 true true>>";};
if (tipo=="filmes"){var display="<<player id=1 "+dvd+"/_Videozinhos/"+store.getTiddlerSlice(tiddler.title,"Link")+"650 400 true true>>";};
if (tipo=="musica"){var display="<<player id=1 ../_Musicas/"+store.getTiddlerSlice(tiddler.title,"Link")+" 200 46 true true>>";};
}
if(fonte=="biblio"){
if (tipo=="pdf"){var display="<html><iframe src="+store.getTiddlerSlice(tiddler.title,"Link")+" width=100% height=600></iframe></html>";};
}
return display;
</script>
<script>localStorage.apresent=tiddler.title;localStorage.rightsidebar="refs";localStorage.rightparameters=store.getTiddlerSlice(tiddler.title,"Etiqueta");refreshDisplay();</script>
/%{{{
story.refreshTiddler("RightSidebar",DEFAULT_VIEW_TEMPLATE,true);story.refreshTiddler("Footer",DEFAULT_VIEW_TEMPLATE,true);}}%/
/***
|Name|StickyPopupPlugin|
|Source|http://www.TiddlyTools.com/#StickyPopupPlugin|
|Version|1.0.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|allow mouse interactions inside popups without automatically closing them|
Usually, when a TW popup is displayed, it is automatically closed whenever a click occurs //anywhere// in the document, either //inside// or //outside// the popup itself.  This plugin makes popups persistent (a.k.a, "sticky"), allowing you to perform multiple mouse interactions on content //inside// the popup (e.g., entering form fields, opening links, selecting text, etc.), remaining visible until you click //outside// the popup or perform an action that opens another popup (only one popup can be displayed at any given time).
!!!!!Configuration
<<<
You can cause popups to behave in a persistent ("sticky") manner simply by selecting the option checkbox below.  The selected popup display behavior will be applied to ALL popups in the document automatically.
><<option chkStickyPopups>> make all popups "sticky"
>{{{usage: <<option chkStickyPopups>>}}}
<<<
!!!!!Usage
<<<
If you are developing your own plugins or inline scripts that create popups programmatically using the core function:
{{{
Popup.create(this)
}}}
you can provide additional parameters that specify the desired CSS classname(s) to assign to the popup DOM element.  The default class when none is specified is simply "popup".  To create a //sticky// popup, simply enter a custom class combination like this:
{{{
Popup.create(this,null,"sticky popup")
}}}
<<<
!!!!!Revisions
<<<
2008.05.16 [1.0.1] added try..catch around addEvent/removeEvent calls to avoid error in Opera
2007.11.25 [1.0.0] initial release - moved from [[CoreTweaks]]
<<<
!!!!!Code
***/
//{{{
version.extensions.StickyPopupPlugin= {major: 1, minor: 0, revision: 1, date: new Date(2008,5,16)};

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

Popup.stickyPopup_onDocumentClick = function(ev)
{
	// if click is in a sticky popup, ignore it so popup will remain visible
	var e = ev ? ev : window.event; var target = resolveTarget(e);
	var p=target; while (p) {
		if (hasClass(p,"popup") && (hasClass(p,"sticky")||config.options.chkStickyPopups)) break;
		else p=p.parentNode;
	}
	if (!p) // not in sticky popup (or sticky popups disabled)... use normal click handling
		Popup.onDocumentClick(ev);
	return true;
};
try{removeEvent(document,"click",Popup.onDocumentClick);}catch(e){};
try{addEvent(document,"click",Popup.stickyPopup_onDocumentClick);}catch(e){};
//}}}
/***
|Name|[[StoryViewerPlugin]]|
|Source|http://www.TiddlyTools.com/#StoryViewerPlugin|
|Documentation|http://www.TiddlyTools.com/#StoryViewerPluginInfo|
|Version|1.4.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|view a set of tiddlers using a droplist, "first/previous/next/last" links, or timed slideshow|
The {{{<<storyViewer>>}}} macro allows you to quickly ''display //and// navigate between a set of tiddlers'', using a droplist of titles and/or individual "first/previous/next/last" buttons/text links.  It also provides a "slideshow" feature that permits you to ''present one tiddler at a time with a countdown timer to automatically advance to the next tiddler'' after a specified number of seconds.
!!!!!Documentation
> see [[StoryViewerPluginInfo]]
!!!!!Revisions
<<<
2011.03.11 1.4.0 added 'sort:fieldname' parameter
2011.01.24 1.3.4 in droplist onchange handler, don't clear slideshow 'started' flag (allows slideshow to continue after manual navigation)
|please see [[StoryViewerPluginInfo]] for additional revision details|
2007.10.23 1.0.0 Initial release, split {{{<<storyViewer>>}}} macro definition from [[StorySaverPlugin]] to allow separate installation of story saving vs. story viewing features.
<<<
!!!!!Code
***/
//{{{
version.extensions.StoryViewerPlugin= {major: 1, minor: 4, revision: 0, date: new Date(2011,3,11)};

config.macros.storyViewer = {
	tag:			"story",
	storynotfoundmsg:	"'%0' is an empty/unrecognized story",
	firstcmd:		"first",
	firstbutton:		"<<",
	firstmsg:		"first: '%0'",
	nextcmd:		"next",
	nextbutton:		">",
	nextmsg:		"next: '%0'",
	previouscmd:		"previous",
	previousbutton:		"<",
	prevmsg:		"previous: '%0'",
	lastcmd:		"last",
	lastbutton:		">>",
	lastmsg:		"last: '%0'",
	refreshmsg:		"redisplay '%0'",
	refreshmsg:		"",
	autostart:		false,
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {

		var parsed=paramString.parseParams('anon',null,true,false,false);
		var here=story.findContainingTiddler(place);
		if (here) var tid=here.getAttribute("tiddler");
		var storyname="";
		var p=params.shift();
		var keywords=['first','previous','here','next','last','list','links','timer','sort'];
		if (!p || keywords.indexOf(p.split(':')[0])!=-1) {
			// find story from current tiddler name
			if (!tid) return; // not in a tiddler... do nothing!
			var stories=store.getTaggedTiddlers(this.tag);
			if (!stories) return;
			for (var s=0; s<stories.length; s++) {
				if (!stories[s].linksUpdated) stories[s].changed();
				var tids=stories[s].links.slice(0);
				if (tids.contains(tid)) { storyname=stories[s].title; break; }
			}
			if (!storyname.length) return; // current tiddler is not part of a saved story
		}
		else { storyname=p; p=params.shift(); } // user-specified story name

		var sortby=getParam(parsed,'sort','title');
		var tids=this.getStory(storyname,sortby); // get tiddler list

		var target=null;
		switch (p?p.split(':')[0]:'') {
			case 'first':
				target=tids[0];
				break;
			case 'previous':
				var i=tids.indexOf(tid);
				if (i!=-1) var target=tids[Math.max(i-1,0)];
				break;
			case 'here':
				if (tid) target=tid;
				break;
			case 'next':
				var i=tids.indexOf(tid);
				if (i!=-1) var target=tids[Math.min(i+1,tids.length-1)];
				break;
			case 'last':
				target=tids[tids.length-1];
				break;
			case 'links':
				this.renderAllLinks(place,storyname);
				break;
			case 'timer':
				var delay=parseInt(getParam(parsed,'timer',15))*1000; // msecs between slides
				var autostart=params[0]=='autostart'; if (autostart) params.shift();
				var action=params[0]; // null/close/fold
				this.renderTimer(place,tids,tid,delay,autostart,action);
				break;
			case 'list':
			default:
				var prompt=getParam(parsed,'prompt',storyname+'...');
				var nobuttons=params.contains("nobuttons");
				var allbuttons=params.contains("allbuttons");
				var onlybuttons=params.contains("onlybuttons");
				this.renderList(place,tids,tid,storyname,prompt,nobuttons,allbuttons,onlybuttons);
				break;
		}
		var label=getParam(parsed,'label',params[0]||target);
		if (target) this.renderLink(place,tid,target,label);
	},
	getStory: function(storyname,sortby) { // READ TIDDLER LIST
		var tids=[];
		var fn=store.getMatchingTiddlers||store.getTaggedTiddlers;
		var tagged=store.sortTiddlers(fn.apply(store,[storyname]),sortby||'title');
		if (tagged.length) // if storyname is a tag, get tagged tiddlers rather than links
			for (var t=0; t<tagged.length; t++) tids.push(tagged[t].title);
		else {
			var t=store.getTiddler(storyname);
			if (t && !t.linksUpdated) t.changed();
			var tids=t?t.links.slice(0):[];
		}
		return tids;
	},
	renderLink: function(place,tid,target,label) {
		// override default labelling with specified text (if any)
		if (tid==target) { // self-referential links turn into 'refresh links'
			var btn=createTiddlyButton(place,null,this.refreshmsg.format([tid]), function() {
				var here=story.findContainingTiddler(place).getAttribute("tiddler");
				story.refreshTiddler(here,null,true);
			});
			wikify(label,btn); 
		}
		else // create link
			wikify(label,createTiddlyLink(place,target,false));
	},
	renderAllLinks: function(place,storyname) {
		var out="{{floatleft{";
		out+="<<storyViewer [["+storyname+"]] first first>> &nbsp;";
		out+="<<storyViewer [["+storyname+"]] previous previous>> &nbsp;";
		out+="}}}";
		out+="{{floatright{";
		out+="&nbsp; <<storyViewer [["+storyname+"]] next next>>";
		out+="&nbsp; <<storyViewer [["+storyname+"]] last last>>";
		out+="}}}";
		out+="{{center{<<storyViewer [["+storyname+"]] here>>}}}";
		wikify(out,place);
	},
	renderList: function(place,tids,tid,storyname,prompt,nobuttons,allbuttons,onlybuttons) {
		var h="";
		h+='<form style="display:inline">';
		if ((!nobuttons||onlybuttons) && allbuttons) {
			h+='<input type="button" value="'+this.firstbutton+'" ';
			h+='	style="padding:0" title="'+(tids[0]?this.firstmsg.format([tids[0]]):'')+'"';
			h+=' onclick="if (this.form.list.length<2) return; ';
			h+='	this.form.list.selectedIndex=1; this.form.list.onchange();">';
		}
		if (!nobuttons||onlybuttons) {
			h+='<input type="button" value="'+this.previousbutton+'" style="padding:0 0.3em"';
			h+=' onclick="if (this.form.list.length<2) return; ';
			h+=' 	var i=this.form.list.selectedIndex-1; if (i<1) i=1; ';
			h+='	this.form.list.selectedIndex=i; this.form.list.onchange();"';
			h+=' onmouseover="if (this.form.list.length<2) return; ';
			h+=' 	var i=this.form.list.selectedIndex-1; if (i<1) i=1; ';
			h+='	var v=this.form.list.options[i].value; if (!v.length) return; ';
			h+='	this.title=config.macros.storyViewer.prevmsg.format([v]);">';
		}
		h+='<select size="1" name="list"';
		if (onlybuttons) h+=' style="display:none;"';
		h+=' onchange="if (this.value) story.displayTiddler(this,this.value);">';
		h+='<option value="">'+prompt+'</option>';
		for (i=0; i<tids.length; i++) {
			h+='<option '+
				(tids[i]==tid?'selected ':'')+
				'value="'+tids[i]+'">\xa0\xa0'+tids[i]+'</option>';
		}
		h+='</select>';
		if (!nobuttons||onlybuttons) {
			h+='<input type="button" value="'+this.nextbutton+'" style="padding:0 0.3em"';
			h+=' onclick="var i=this.form.list.selectedIndex+1; ';
			h+='	if (i>this.form.list.options.length-1) i=this.form.list.options.length-1; ';
			h+='	this.form.list.selectedIndex=i; this.form.list.onchange();"';
			h+=' onmouseover="var i=this.form.list.selectedIndex+1; ';
			h+='	if (i>this.form.list.options.length-1) i=this.form.list.options.length-1; ';
			h+='	var v=this.form.list.options[i].value; if (!v.length) return;';
			h+='	this.title=config.macros.storyViewer.nextmsg.format([v]);">';
		}
		if ((!nobuttons||onlybuttons) && allbuttons) {
			h+='<input type="button" value="'+this.lastbutton+'" ';
			h+='	style="padding:0" title="'+(tids[tids.length-1]?this.lastmsg.format([tids[tids.length-1]]):'')+'"';
			h+=' onclick="this.form.list.selectedIndex=this.form.list.options.length-1; this.form.list.onchange();">';
		}
		h+='</form>';
		createTiddlyElement(place,"span").innerHTML=h;
	},
	renderTimer: function(place,tids,tid,delay,autostart,action) {
		var now=new Date().getTime(); // msec
		var target=createTiddlyElement(null,'input',now+Math.random()); // unique ID
		target.setAttribute('type','button'); target.style.padding='0';
		place.appendChild(target);
		target.tid		=tids[Math.min(tids.indexOf(tid)+1,tids.length-1)]||''; // next tiddler
		target.action		=action;
		target.formatTimer	=this.formatTimer;
		target.start		=this.startTimer;
		target.stop		=this.stopTimer;
		target.onmouseover	=this.pauseTimer;
		target.onmouseout	=this.resumeTimer;
		target.tick		=this.timerTick;
		target.onclick		=this.timerClick;
		target.next		=this.timerNext;
		target.start(delay,autostart);
	},
	formatTimer: function(t) {
		return '0:'+String.zeroPad(Math.floor(t/1000),2);
	},
	startTimer: function(delay,start) {
		var co=config.options; // abbrev
		start=config.macros.storyViewer.started=start||config.macros.storyViewer.started;
		var now=new Date().getTime(); // msec
		this.started=start;
		this.delay=delay;
		this.paused=start?0:delay;
		this.stopTime=now+delay; // msec
		this.title='CLICK='+(start?'reset':'start')+" slideshow timer... next: '"+this.tid+"'";
		this.style.cursor='pointer';
		this.value=this.formatTimer(delay);
		if (start) {
			var code="var e=document.getElementById('"+this.id+"'); if(e)e.tick()";
			this.timer=setTimeout(code,500);
		}
		return false;
	},
	stopTimer: function() {
		this.timer=clearTimeout(this.timer);
		this.started=config.macros.storyViewer.started=false;
		this.paused=0;
		this.title="CLICK=start slideshow timer... next: '"+this.tid+"'";
		this.value=this.formatTimer(this.delay);
		return false;
	},
	pauseTimer: function() {
		if (!this.started) return;
		var now=new Date().getTime(); // msec
		this.paused=Math.max(this.stopTime-now,0);
		this.stopTime=now+this.paused;
		return false;
	},
	resumeTimer: function() {
		if (!this.started || !this.paused) return;
		var now=new Date().getTime(); // msec
		this.stopTime=now+this.paused;
		this.paused=0;
		return false;
	},
	timerTick: function() {
		var now=new Date().getTime(); // msec
		if (!this.started)
			this.stopTime=now+this.delay;
		else if (this.paused) {
			this.stopTime=now+this.paused;
			this.title="[PAUSED] MOUSEOUT=resume, CLICK=reset... next: '"+this.tid+"'";
		}
		var remaining=this.stopTime-now;
		if (remaining>0) {
			if (this.started && !this.paused) this.value=this.formatTimer(remaining);
			var code="var e=document.getElementById('"+this.id+"'); if(e)e.tick()";
			this.timer=setTimeout(code,500);
		} else {
			this.stop();
			this.next();
		}
		return false;
	},
	timerClick: function() {
		return this.started?this.stop():this.start(this.delay,true);
	},
	timerNext: function() { // OPEN NEXT TIDDLER
		var here=story.findContainingTiddler(this);
		config.macros.storyViewer.started=true; // next slide autostarts to continue slideshow
		if (this.tid) story.displayTiddler(here,this.tid);
		config.macros.storyViewer.started=false;
		if (!here) return false;
		var t=here.getAttribute('tiddler');
		if (this.action=='close') story.closeTiddler(t);
		if (this.action=='fold' && config.commands.collapseTiddler) // see CollapseTiddlerPlugin
			config.commands.collapseTiddler.handler(null,here,t);
		return false;
	}
}
//}}}
//{{{
config.paramifiers.story = {
	onstart: function(v) {
		var t=store.getTiddler(v); if (t) t.changed();
		var list=t?t.links:store.getTiddlerText(v,"").parseParams("open",null,false);
		story.displayTiddlers(null,list);
	}
};
//}}}
body { background-color:#095603;font-family: "Comic Sans MS",Helvetica;color:white;}

#contentWrapper a:link, a:visited, a:active {text-decoration: bold; color:#90F489; background-color: transparent; }
#contentWrapper a:hover {text-decoration: none; color: [[ColorT1]]; background-color: [[ColorB1]]; }
#contentWrapper .button {background-color: transparent; border-color: [[ColorS2]]; border-width: 0px;}
#contentWrapper .button:hover {background-color: transparent; border-width: 0px;}
#contentWrapper {border:0; margin:0 auto; width:1000px;}

#mainHead {position:absolute;top:2px;align:center;width:990px;}
#leftSidebar{position:relative;top:90px;height:200px;width:50px;}
#displayArea {position:relative; top:-730px; left:-110px;width:650px;color:#DBF9D9;}

.header { background-color: #71F767;  height: 50px;left:150px; top:-50px;}
.tiddlyLinkExisting .tiddlyLink {color:red;}
.externalLink {color:red;} 

#rightSidebar{ position:relative; top:-140px; left:745px; width:250px; height:500px;overflow:auto;}
#footer{ position:relative; top:-140px; left:745px; width:250px; height:50px;}

#rightSidebar, #mainHead, #footer {background-color:#0A7502;color:white;opacity:.9;border-style:solid;border-color:#053D01;border-width:1px 3px 3px 1px;-moz-border-radius: 1em;line-height:10px;}


.viewer {text-align: left; width: 100%; padding: 0.5em 0em 0em .5em;}
.viewer h1, h2, h3, h4 {color:#71F767; background-color: transparent; font-weight: bold; font-style: italic; padding: 0em 0em 0em 0em; margin: 0em 0em 0em 0em; display: block;}
/*.viewer h1 {font-sytle: normal; font-variant: small-caps; background-color: [[ColorB1]];}
/*.viewer img {width: 95%; margin: 0em 20px 0em 20px;}
.title {font-weight: bold; color:#71F767; display: inline; padding: 0.2em 1em 1em 0.25em; border-style: solid; border-width: 1px 0px 0px 1px; border-padding: 0em 0em 0em 0em; border-color: [[ColorT3]]; }*/
/*.subtitle {display: none; padding: 0em 0em 0em 3em; }*/
.editor {padding: 0.75em 0em 0em 2em; height: 550%; line-height: 100%; }
.editor textarea {height: 40em; }

.popup {background-color:#22A805; color:white; width:auto; height:auto;border-style:solid;-moz-border-radius:1em;padding:20px 20px 20px 20px;}

/* IE fix */
body {position:static;}
.tagClear{margin-top:1em;clear:both;}

#backstageButton a{background:none;color:#095603;border:none;}
#backstageButton a:hover{background:none;color:#095603;border:none;}

#messageArea {background-color: [[ColorB1]]; position: absolute; top: 0; right: 0; }
.button.hover, .button, .button.selected {background-color:transparent;border:none;}
[[StyleSheetShortcuts]]
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;}#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:#A0F98B;}.subtitle{color:[[ColorPalette::TertiaryDark]];}.toolbar{color:[[ColorPalette::PrimaryMid]];}.toolbar a{color:[[ColorPalette::TertiaryLight]];}.selected .toolbar a{color:[[ColorPalette::TertiaryMid]];}.selected .toolbar a:hover{color:[[ColorPalette::Foreground]];}.tagging,.tagged{border:1px solid [[ColorPalette::TertiaryPale]];background-color:[[ColorPalette::TertiaryPale]];}.selected .tagging,.selected .tagged{background-color:[[ColorPalette::TertiaryLight]];border:1px solid [[ColorPalette::TertiaryMid]];}.tagging .listTitle,.tagged .listTitle{color:[[ColorPalette::PrimaryDark]];}.tagging .button,.tagged .button{border:none;}.footer{color:[[ColorPalette::TertiaryLight]];}.selected .footer{color:[[ColorPalette::TertiaryMid]];}.sparkline{background:[[ColorPalette::PrimaryPale]];border:0;}.sparktick{background:[[ColorPalette::PrimaryDark]];}.error,.errorButton{color:[[ColorPalette::Foreground]];background:[[ColorPalette::Error]];}.warning{color:[[ColorPalette::Foreground]];background:[[ColorPalette::SecondaryPale]];}.lowlight{background:[[ColorPalette::TertiaryLight]];}.zoomer{background:none;color:[[ColorPalette::TertiaryMid]];border:3px solid [[ColorPalette::TertiaryMid]];}.imageLink,#displayArea .imageLink{background:transparent;}.annotation{background:[[ColorPalette::SecondaryLight]];color:[[ColorPalette::Foreground]];border:2px solid [[ColorPalette::SecondaryMid]];}.viewer .listTitle{list-style-type:none;margin-left:-2em;}.viewer .button{border:1px solid [[ColorPalette::SecondaryMid]];}.viewer blockquote{border-left:3px solid [[ColorPalette::TertiaryDark]];}.viewer table,table.twtable{border:2px solid [[ColorPalette::TertiaryDark]];}.viewer th,.viewer thead td,.twtable th,.twtable thead td{background:[[ColorPalette::SecondaryMid]];border:1px solid [[ColorPalette::TertiaryDark]];color:[[ColorPalette::Background]];}.viewer td,.viewer tr,.twtable td,.twtable tr{border:1px solid [[ColorPalette::TertiaryDark]];}.viewer pre{border:1px solid [[ColorPalette::SecondaryLight]];background:[[ColorPalette::SecondaryPale]];}.viewer code{color:[[ColorPalette::SecondaryDark]];}.viewer hr{border:0;border-top:dashed 1px [[ColorPalette::TertiaryDark]];color:[[ColorPalette::TertiaryDark]];}.highlight,.marked{background:[[ColorPalette::SecondaryLight]];}.editor input{border:1px solid [[ColorPalette::PrimaryMid]];}.editor textarea{border:1px solid [[ColorPalette::PrimaryMid]];width:100%;}.editorFooter{color:[[ColorPalette::TertiaryMid]];}.readOnly{background:[[ColorPalette::TertiaryPale]];}#backstageArea{background:[[ColorPalette::Foreground]];color:[[ColorPalette::TertiaryMid]];}#backstageArea a{background:[[ColorPalette::Foreground]];color:[[ColorPalette::Background]];border:none;}#backstageArea a:hover{background:[[ColorPalette::SecondaryLight]];color:[[ColorPalette::Foreground]];}#backstageArea a.backstageSelTab{background:[[ColorPalette::Background]];color:[[ColorPalette::Foreground]];}#backstageButton a{background:none;color:[[ColorPalette::Background]];border:none;}#backstageButton a:hover{background:[[ColorPalette::Foreground]];color:[[ColorPalette::Background]];border:none;}#backstagePanel{background:[[ColorPalette::Background]];border-color:[[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}.backstagePanelFooter .button{border:none;color:[[ColorPalette::Background]];}.backstagePanelFooter .button:hover{color:[[ColorPalette::Foreground]];}#backstageCloak{background:[[ColorPalette::Foreground]];opacity:.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:.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;}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:0;top:0;}.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 .5em .5em .5em;font-size:1.1em;}#sidebar{position:absolute;right:3px;width:16em;font-size:.9em;}#sidebarOptions{padding-top:.3em;}#sidebarOptions a{margin:0 .2em;padding:.2em .3em;display:block;}#sidebarOptions input{margin:.4em .5em;}#sidebarOptions .sliderPanel{margin-left:1em;padding:.5em;font-size:.85em;}#sidebarOptions .sliderPanel a{font-weight:bold;display:inline;padding:0;}#sidebarOptions .sliderPanel input{margin:0 0 .3em 0;}#sidebarTabs .tabContents{width:15em;overflow:hidden;}.wizard{padding:.1em 1em 0 2em;}.wizard h1{font-size:2em;font-weight:bold;background:none;padding:0;margin:.4em 0 .2em;}.wizard h2{font-size:1.2em;font-weight:bold;background:none;padding:0;margin:.4em 0 .2em;}.wizardStep{padding:1em 1em 1em 1em;}.wizard .button{margin:.5em 0 0;font-size:1.2em;}.wizardFooter{padding:.8em .4em .8em 0;}.wizardFooter .status{padding:0 .4em;margin-left:1em;}.wizard .button{padding:.1em .2em;}#messageArea{position:fixed;top:2em;right:0;margin:.5em;padding:.5em;z-index:2000;_position:absolute;}.messageToolbar{display:block;text-align:right;padding:.2em;}#messageArea a{text-decoration:underline;}.tiddlerPopupButton{padding:.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:.4em;}.popup hr{display:block;height:1px;width:auto;padding:0;margin:.2em 0;}.popup li.disabled{padding:.4em;}.popup li a{display:block;padding:.4em;font-weight:normal;cursor:pointer;}.listBreak{font-size:1px;line-height:1px;}.listBreak div{margin:2px 0;}.tabset{padding:1em 0 0 .5em;}.tab{margin:0 0 0 .25em;padding:2px;}.tabContents{padding:.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:.2em .4em;}.tagging{margin:.5em .5em .5em 0;float:left;display:none;}.isTag .tagging{display:block;}.tagged{margin:.5em;float:right;}.tagging,.tagged{font-size:.9em;padding:.25em;}.tagging ul,.tagged ul{list-style:none;margin:.25em;padding:0;}.tagClear{clear:both;}.footer{font-size:.9em;}.footer li{display:inline;}.annotation{padding:.5em;margin:.5em;}* html .viewer pre{width:99%;padding:0 0 1em 0;}.viewer{line-height:1.4em;padding-top:.5em;}.viewer .button{margin:0 .25em;padding:0 .25em;}.viewer blockquote{line-height:1.5em;padding-left:.8em;margin-left:2.5em;}.viewer ul,.viewer ol{margin-left:.5em;padding-left:1.5em;}.viewer table,table.twtable{border-collapse:collapse;margin:.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:.85em;margin:.8em 1.0em;}table.listView th,table.listView td,table.listView tr{padding:0 3px 0 3px;}.viewer pre{padding:.5em;margin-left:.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:.25em 0;font-size:.9em;}.editorFooter .button{padding-top:0;padding-bottom:0;}.fieldsetFix{border:0;padding:0;margin:1px 0;}.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:.3em .5em;}#backstageToolbar{position:relative;}#backstageArea a{font-weight:bold;margin-left:.5em;padding:.3em .5em;}#backstageButton{display:none;position:absolute;z-index:175;top:0;right:0;}#backstageButton a{padding:.1em .4em;margin:.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:.2em;float:right;}.backstagePanelFooter a{padding:.2em .4em;}#backstageCloak{display:none;z-index:20;position:absolute;width:100%;height:100px;}.whenBackstage{display:none;}.backstageVisible .whenBackstage{display:block;}
/***
|Name|StyleSheetShortcuts|
|Source|http://www.TiddlyTools.com/#StyleSheetShortcuts|
|Version||
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|CSS|
|Requires||
|Overrides||
|Description|'convenience' classes for common formatting, alignment, boxes, tables, etc.|

These 'style tweaks' can be easily included in other stylesheet tiddler so they can share a baseline look-and-feel that can then be customized to create a wide variety of 'flavors'.
***/
/*{{{*/

/* text alignments */
.left
	{ display:block;text-align:left; }
.center
	{ display:block;text-align:center; }
.right	
	{ display:block;text-align:right; }
.justify
	{ display:block;text-align:justify; }
.indent
	{ display:block;margin:0;padding:0;border:0;margin-left:2em; }
.floatleft
	{ float:left; }
.floatright
	{ float:right; }
.valignTop, .valignTop table, .valignTop tbody, .valignTop th, .valignTop tr, .valignTop td
	{ vertical-align:top; }
.valignBottom, .valignBottom table, .valignBottom tbody, .valignBottom th, .valignBottom tr, .valignBottom td
	{ vertical-align:bottom; }
.clear
	{ clear:both; }
.wrap
	{ white-space:normal; }
.nowrap
	{ white-space:nowrap; }
.hidden
	{ display:none; }
.show
	{ display:inline !important; }
.span
	{ display:span; }
.block
	{ display:block; }
.relative
	{ position:relative; }
.absolute
	{ position:absolute; }
.vertical {-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-o-transform: rotate(270deg);}

/* font sizes */
.big
	{ font-size:18pt;line-height:120% }
.medium
	{ font-size:12pt;line-height:120% }
.normal
	{ font-size:9pt;line-height:120% }
.small
	{ font-size:8pt;line-height:120% }
.fine
	{ font-size:7pt;line-height:120% }
.tiny
	{ font-size:6pt;line-height:120% }
.larger
	{ font-size:120%; }
.smaller
	{ font-size:80%; }

/* font styles */
.bold
	{ font-weight:bold; }
.italic
	{ font-style:italic; }
.underline
	{ text-decoration:underline; }

/* plain list items (no bullets or indent) */
.nobullets li { list-style-type: none; margin-left:-2em; }

/* multi-column tiddler content (not supported in Internet Explorer) */
.twocolumns { display:block;
	-moz-column-count:2; -moz-column-gap:1em; -moz-column-width:50%; /* FireFox */
	-webkit-column-count:2; -webkit-column-gap:1em; -webkit-column-width:50%; /* Safari */
	column-count:2; column-gap:1em; column-width:50%; /* Opera */
}
.threecolumns { display:block;
	-moz-column-count:3; -moz-column-gap:1em; -moz-column-width:33%; /* FireFox */
	-webkit-column-count:3; -webkit-column-gap:1em; -webkit-column-width:33%; /* Safari */
	column-count:3; column-gap:1em; column-width:33%; /* Opera */
}
.fourcolumns { display:block;
	-moz-column-count:4; -moz-column-gap:1em; -moz-column-width:25%; /* FireFox */
	-webkit-column-count:4; -webkit-column-gap:1em; -webkit-column-width:25%; /* Safari */
	column-count:4; column-gap:1em; column-width:25%; /* Opera */
}

/* show/hide browser-specific content for InternetExplorer vs. non-IE ("moz") browsers */
*[class="ieOnly"]
	{ display:none; } /* hide in moz (uses CSS selector) */
* html .mozOnly, *:first-child+html .mozOnly
	{ display: none; } /* hide in IE (uses IE6/IE7 CSS hacks) */

/* borderless tables */
.borderless, .borderless table, .borderless td, .borderless tr, .borderless th, .borderless tbody
	{ border:0 !important; margin:0 !important; padding:0 !important; }
.widetable, .widetable table
	{ width:100%; }

/* thumbnail images (fixed-sized scaled images) */
.thumbnail img { height:5em !important; }

/* stretchable images (auto-size to fit tiddler) */
.stretch img { width:95%; }

/* grouped content */
.outline
	{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; }
.menubox
	{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#fff; color:#000; }
.menubox .button, .menubox .tiddlyLinkExisting, .menubox .tiddlyLinkNonExisting
	{ color:#009 !important; }
.groupbox
	{ display:block; padding:1em; -moz-border-radius:1em;-webkit-border-radius:1em; border:1px solid; background:#ffe; color:#000; }
.groupbox a, .groupbox .button, .groupbox .tiddlyLinkExisting, .groupbox .tiddlyLinkNonExisting
	{ color:#009 !important; }
.groupbox code
	{ color:#333 !important; }
.borderleft
	{ margin:0;padding:0;border:0;margin-left:1em; border-left:1px dotted; padding-left:.5em; }
.borderright
	{ margin:0;padding:0;border:0;margin-right:1em; border-right:1px dotted; padding-right:.5em; }
.borderbottom
	{ margin:0;padding:1px 0;border:0;border-bottom:1px dotted; margin-bottom:1px; padding-bottom:1px; }
.bordertop
	{ margin:0;padding:0;border:0;border-top:1px dotted; margin-top:1px; padding-top:1px; }

/* compact form */
.smallform
	{ white-space:nowrap; }
.smallform input, .smallform textarea, .smallform button, .smallform checkbox, .smallform radio, .smallform select
	{ font-size:8pt; }

/* stretchable edit fields and textareas (auto-size to fit tiddler) */
.stretch input { width:99%; }
.stretch textarea { width:99%; }

/* compact input fields (limited to a few characters for entering percentages and other small values) */
.onechar input { width:1em; }
.twochar input { width:2em; }
.threechar input { width:3em; }
.fourchar input { width:4em; }
.fivechar input { width:5em; }

/* text colors */
.green { color:#0c0 !important }
.red { color:#f66 !important }
.blue { color:#99f !important }
.gray { color:#999 !important }

/* rollover highlighting */
.mouseover 
	{color:[[ColorPalette::TertiaryLight]] !important;}
.mouseover a
	{color:[[ColorPalette::TertiaryLight]] !important;}
.selected .mouseover
	{color:[[ColorPalette::Foreground]] !important;}
.selected .mouseover .button, .selected .mouseover a
	{color:[[ColorPalette::PrimaryDark]] !important;}

/* rollover zoom text */
.zoomover
	{ font-size:80% !important; }
.selected .zoomover
	{ font-size:100% !important; }

/*}}}*/
/***
|Name|TagCloudPlugin|
|Source|http://www.TiddlyTools.com/#TagCloudPlugin|
|Version|1.7.0|
|Author|Eric Shulman|
|Original Author|Clint Checketts|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|present a 'cloud' of tags (or links) using proportional font display|
!Usage
<<<
{{{
<<cloud type action:... limit:... tag tag tag ...>>
<<cloud type action:... limit:... +TiddlerName>>
<<cloud type action:... limit:... -TiddlerName>>
<<cloud type action:... limit:... =tagvalue>>
}}}
where:
* //type// is a keyword, one of:
** ''tags'' (default) - displays a cloud of tags, based on frequency of use
** ''links'' - displays a cloud of tiddlers, based on number of links //from// each tiddler
** ''references'' - displays a cloud of tiddlers, based on number of links //to// each tiddler
* ''action:popup'' (default) - clicking a cloud item shows a popup with links to related tiddlers<br>//or//<br> ''action:goto'' - clicking a cloud item immediately opens the tiddler corresponding to that item
* ''limit:N'' (optional) - restricts the cloud display to only show the N most popular tags/links
* ''tag tag tag...'' (or ''title title title'' if ''links''/''references'' is used)<br>shows all tags/links in the document //except// for those listed as macro parameters
* ''+TiddlerName''<br>show only tags/links read from a space-separated, bracketed list stored in a separate tiddler.
* ''-TiddlerName''<br>show all tags/links //except// those read from a space-separated, bracketed list stored in a separate tiddler.
* ''=tagvalue'' (//only if type=''tags''//)<br>shows only tags that are themselves tagged with the indicated tag value (i.e., ~TagglyTagging usage)
//note: for backward-compatibility, you can also use the macro {{{<<tagCloud ...>>}}} in place of {{{<<cloud ...>>}}}//
<<<
!Examples
<<<
//all tags excluding<<tag systemConfig>>, <<tag excludeMissing>> and <<tag script>>//
{{{<<cloud systemConfig excludeMissing script>>}}}
{{groupbox{<<cloud systemConfig excludeMissing script>>}}}
//top 10 tags excluding<<tag systemConfig>>, <<tag excludeMissing>> and <<tag script>>//
{{{<<cloud limit:10 systemConfig excludeMissing script>>}}}
{{groupbox{<<cloud limit:10 systemConfig excludeMissing script>>}}}
//tags listed in// [[FavoriteTags]]
{{{<<cloud +FavoriteTags>>}}}
{{groupbox{<<cloud +FavoriteTags>>}}}
//tags NOT listed in// [[FavoriteTags]]
{{{<<cloud -FavoriteTags>>}}}
{{groupbox{<<cloud -FavoriteTags>>}}}
//links to tiddlers tagged with 'package'//
{{{<<cloud action:goto =package>>}}}
{{groupbox{<<cloud action:goto =package>>}}}
//top 20 most referenced tiddlers//
{{{<<cloud references limit:20>>}}}
{{groupbox{<<cloud references limit:20>>}}}
//top 20 tiddlers that contain the most links//
{{{<<cloud links limit:20>>}}}
{{groupbox{<<cloud links limit:20>>}}}
<<<
!Revisions
<<<
2009.07.17 [1.7.0] added {{{-TiddlerName}}} parameter to exclude tags that are listed in the indicated tiddler
2009.02.26 [1.6.0] added {{{action:...}}} parameter to apply popup vs. goto action when clicking cloud items
2009.02.05 [1.5.0] added ability to show links or back-links (references) instead of tags and renamed macro to {{{<<cloud>>}}} to reflect more generalized usage.
2008.12.16 [1.4.2] corrected group calculation to prevent 'group=0' error
2008.12.16 [1.4.1] revised tag filtering so excluded tags don't affect calculations
2008.12.15 [1.4.0] added {{{limit:...}}} parameter to restrict the number of tags displayed to the top N most popular
2008.11.15 [1.3.0] added {{{+TiddlerName}}} parameter to include only tags that are listed in the indicated tiddler
2008.09.05 [1.2.0] added '=tagname' parameter to include only tags that are themselves tagged with the specified value (i.e., ~TagglyTagging usage)
2008.07.03 [1.1.0] added 'segments' property to macro object.  Extensive code cleanup
<<<
!Code
***/
//{{{
version.extensions.TagCloudPlugin= {major: 1, minor: 7 , revision: 0, date: new Date(2009,7,17)};
//Originally created by Clint Checketts, contributions by Jonny Leroy and Eric Shulman
//Currently maintained and enhanced by Eric Shulman
//}}}
//{{{
config.macros.cloud = {
	tagstip: "%1 tiddlers tagged with '%0'",
	refslabel: " (%0 references)",
	refstip: "%1 tiddlers have links to '%0'",
	linkslabel: " (%0 links)",
	linkstip: "'%0' has links to %1 other tiddlers",
	groups: 9,
	init: function() {
		config.macros.tagCloud=config.macros.cloud; // for backward-compatibility
		config.shadowTiddlers.TagCloud='<<cloud>>';
		config.shadowTiddlers.StyleSheetTagCloud=
			'/*{{{*/\n'
			+'.tagCloud span {line-height: 3.5em; margin:3px;}\n'
			+'.tagCloud1{font-size: 80%;}\n'
			+'.tagCloud2{font-size: 100%;}\n'
			+'.tagCloud3{font-size: 120%;}\n'
			+'.tagCloud4{font-size: 140%;}\n'
			+'.tagCloud5{font-size: 160%;}\n'
			+'.tagCloud6{font-size: 180%;}\n'
			+'.tagCloud7{font-size: 200%;}\n'
			+'.tagCloud8{font-size: 220%;}\n'
			+'.tagCloud9{font-size: 240%;}\n'
			+'/*}}}*/\n';
		setStylesheet(store.getTiddlerText('StyleSheetTagCloud'),'tagCloudsStyles');
	},
	getLinks: function(tiddler) { // get list of links to existing tiddlers and shadows
		if (!tiddler.linksUpdated) tiddler.changed();
		var list=[]; for (var i=0; i<tiddler.links.length; i++) {
			var title=tiddler.links[i];
			if (store.isShadowTiddler(title)||store.tiddlerExists(title))
				list.push(title);
		}
		return list;
	},
	handler: function(place,macroName,params) {
		// unpack params
		var inc=[]; var ex=[]; var limit=0; var action='popup';
		var links=(params[0]&&params[0].toLowerCase()=='links'); if (links) params.shift();
		var refs=(params[0]&&params[0].toLowerCase()=='references'); if (refs) params.shift();
		if (params[0]&&params[0].substr(0,7).toLowerCase()=='action:')
			action=params.shift().substr(7).toLowerCase();
		if (params[0]&&params[0].substr(0,6).toLowerCase()=='limit:')
			limit=parseInt(params.shift().substr(6));
		while (params.length) {
			if (params[0].substr(0,1)=='+') { // read taglist from tiddler
				inc=inc.concat(store.getTiddlerText(params[0].substr(1),'').readBracketedList());
			} else if (params[0].substr(0,1)=='-') { // exclude taglist from tiddler
				ex=ex.concat(store.getTiddlerText(params[0].substr(1),'').readBracketedList());
			} else if (params[0].substr(0,1)=='=') { // get tag list using tagged tags
				var tagged=store.getTaggedTiddlers(params[0].substr(1));
				for (var t=0; t<tagged.length; t++) inc.push(tagged[t].title);
			} else ex.push(params[0]); // exclude params
			params.shift();
		}
		// get all items, include/exclude specific items
		var items=[];
		var list=(links||refs)?store.getTiddlers('title','excludeLists'):store.getTags();
		for (var t=0; t<list.length; t++) {
			var title=(links||refs)?list[t].title:list[t][0];
			if (links)	var count=this.getLinks(list[t]).length;
			else if (refs)	var count=store.getReferringTiddlers(title).length;
			else 		var count=list[t][1];
			if ((!inc.length||inc.contains(title))&&(!ex.length||!ex.contains(title)))
				items.push({ title:title, count:count });
		}
		if(!items.length) return;
		// sort by decending count, limit results (optional)
		items=items.sort(function(a,b){return(a.count==b.count)?0:(a.count>b.count?-1:1);});
		while (limit && items.length>limit) items.pop();
		// find min/max and group size
		var most=items[0].count;
		var least=items[items.length-1].count;
		var groupSize=(most-least+1)/this.groups;
		// sort by title and draw the cloud of items
		items=items.sort(function(a,b){return(a.title==b.title)?0:(a.title>b.title?1:-1);});
		var cloudWrapper = createTiddlyElement(place,'div',null,'tagCloud',null);
		for (var t=0; t<items.length; t++) {
			cloudWrapper.appendChild(document.createTextNode(' '));
			var group=Math.ceil((items[t].count-least)/groupSize)||1;
			var className='tagCloudtag tagCloud'+group;
			var tip=refs?this.refstip:links?this.linkstip:this.tagstip;
			tip=tip.format([items[t].title,items[t].count]);
			if (action=='goto') { // TAG/LINK/REFERENCES GOTO
				var btn=createTiddlyLink(cloudWrapper,items[t].title,true,className);
				btn.title=tip;
				btn.style.fontWeight='normal';
			} else if (!links&&!refs) { // TAG POPUP
				var btn=createTiddlyButton(cloudWrapper,items[t].title,tip,onClickTag,className);
				btn.setAttribute('tag',items[t].title);
			} else { // LINK/REFERENCES POPUP
				var btn=createTiddlyButton(cloudWrapper,items[t].title,tip,
					function(ev) { var e=ev||window.event; var cmt=config.macros.cloud;
						var popup = Popup.create(this);
						var title = this.getAttribute('tiddler');
						var count = this.getAttribute('count');
						var refs  = this.getAttribute('refs')=='T';
						var links = this.getAttribute('links')=='T';
						var label = (refs?cmt.refslabel:cmt.linkslabel).format([count]);
						createTiddlyLink(popup,title,true);
						createTiddlyText(popup,label);
						createTiddlyElement(popup,'hr');
						if (refs) {
							popup.setAttribute('tiddler',title);
							config.commands.references.handlePopup(popup,title);
						}
						if (links) {
							var tiddler = store.fetchTiddler(title);
							var links=config.macros.cloud.getLinks(tiddler);
							for(var i=0;i<links.length;i++)
								createTiddlyLink(createTiddlyElement(popup,'li'),
									links[i],true);
						}
						Popup.show();
						e.cancelBubble=true; if(e.stopPropagation) e.stopPropagation();
						return false;
					}, className);
				btn.setAttribute('tiddler',items[t].title);
				btn.setAttribute('count',items[t].count);
				btn.setAttribute('refs',refs?'T':'F');
				btn.setAttribute('links',links?'T':'F');
				btn.title=tip;
			}
		}
	}
};
//}}}
/***
|Name|TaggedTemplateTweak|
|Source|http://www.TiddlyTools.com/#TaggedTemplateTweak|
|Documentation|http://www.TiddlyTools.com/#TaggedTemplateTweakInfo|
|Version|1.6.1|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|use alternative ViewTemplate/EditTemplate for specific tiddlers|
This plugin extends the core function, story.chooseTemplateForTiddler(), so that any given tiddler can be viewed and/or edited using alternatives to the standard tiddler templates.
!!!!!Documentation
>see [[TaggedTemplateTweakInfo]]
!!!!!Revisions
<<<
2009.09.02 [1.6.1] apply field-based template (if any) *before* tag-based template
| please see [[TaggedTemplateTweakInfo]] for previous revision details |
2007.06.11 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.TaggedTemplateTweak= {major: 1, minor: 6, revision: 1, date: new Date(2009,9,2)};

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

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

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

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

	// look for template using tags as prefix
	var tiddler=store.getTiddler(title);
	if (!tiddler) return coreTemplate; // tiddler doesn't exist... use core result
	for (i=0; i<tiddler.tags.length; i++) {
		var t=tiddler.tags[i]+template; // add tag prefix to template
		var c=t.substr(0,1).toUpperCase()+t.substr(1); // capitalized for WikiWord title
		if (store.getTiddlerText(theme+t))	{ return theme+t; } // theme##tagTemplate
		if (store.getTiddlerText(theme+c))	{ return theme+c; } // theme##TagTemplate
		if (store.getTiddlerText(t)) 		{ return t; }	    // tagTemplate
		if (store.getTiddlerText(c))		{ return c; }	    // TagTemplate
	}
	
	// no match... use core result
	return coreTemplate;
}
//}}}
/***
|Name|TemporaryTiddlersPlugin|
|Source|http://www.TiddlyTools.com/#TemporaryTiddlersPlugin|
|Version|1.1.2|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|blocks tiddlers tagged with "temporary" from being saved into the TW file|
!!!!!Usage
<<<
When the TW document is saved (either to local disk or remote URL), any tiddlers tagged with "temporary" will be skipped over, so that they are not written to the file.  To keep a temporary tiddler, simply edit it and remove the tag before saving the file.  This feature can be combined with various plugins that can automatically create new tiddlers, such as [[SearchOptionsPlugin]] ([[SearchResults]]) and [[ImportTiddlersPlugin]] ([[ImportedTiddlers]]) so that these transient results are not retained when you save you document.

You can also use this tag with the {{{<<loadTiddlers>>}}} macro and the //auto-tagging// features provided by [[ImportTiddlersPlugin]], so that each time you open your document, you can automatically retrieve an up-to-date set of common tiddlers that are stored in another document (either local or via remote URL), without those tiddlers being retained when you save your document.
<<<
!!!!!Configuration
<<<
When saving the document:
<<option chkTemporaryQuiet>> Suppress reporting of individual temporary tiddlers that have not been saved
<<option chkTemporaryKeep>> Keep temporary tiddlers (i.e., ignore the 'temporary' tag)
Enter a tag value to use when marking tiddlers as temporary: <<option txtTemporaryTag>>
<<<
!!!!!Revisions
<<<
2008.11.14 [1.1.2] added "nnn temporary tiddlers not saved" summary message
2008.04.08 [1.1.1] don't automatically add configuration options to AdvancedOptions tiddler
2008.03.01 [1.1.0] added support for recognizing 'temporary' flag stored as a tiddler *field* (as an optional alternative to using a tag)
2007.02.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.TemporaryTiddlersPlugin= {major: 1, minor: 1, revision: 2, date: new Date(2008,11,14)};

// configuration defaults
if (config.options.chkTemporaryKeep ==undefined) config.options.chkTemporaryKeep =false;
if (config.options.chkTemporaryQuiet==undefined) config.options.chkTemporaryQuiet=true;
if (config.options.txtTemporaryTag==undefined) config.options.txtTemporaryTag="temporary";
// lingo
config.messages.TemporaryWarning = "'%0' ...temporary tiddler";
config.messages.TemporarySummary = "%0 temporary tiddlers will not be saved";
// core override
SaverBase.prototype.externalize = function(store) 
{
	var results=[]; var totaltemps=0;
	var tiddlers=store.getTiddlers("title");
	for (var t=0; t<tiddlers.length; t++) {
		if (config.options.chkTemporaryKeep||!(tiddlers[t].fields['temporary']||tiddlers[t].isTagged(config.options.txtTemporaryTag)))
			results.push(this.externalizeTiddler(store, tiddlers[t]));
		else {
			if (!config.options.chkTemporaryQuiet) // notify user that tiddler won't be saved
				displayMessage(config.messages.TemporaryWarning.format([tiddlers[t].title]));
			totaltemps++;
		}
	}
	if (totaltemps) displayMessage(config.messages.TemporarySummary.format([totaltemps]));
	return results.join("\n");
}
//}}}
/%
!info
|Name|ThumbThing|
|Source|http://www.TiddlyTools.com/#ThumbThing|
|Version|1.2.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|transclusion|
|Description|display a scaled 'thumbnail' image with popup for full-sized image|

Usage:
<<<
{{{
<<tiddler ThumbThing with: image thumbWidth thumbHeight fullWidth fullHeight>>
}}}
*{{{image}}} is one of:
**a local path/file
**a remote URL reference
**the title of a tiddler containing an attached image (see [[AttachFilePlugin]])
*{{{thumbWidth, thumbHeight, fullWidth, fullHeight}}} are CSS measurements.  Use 'auto' (or omit values) for default (full-sized) image height and/or width. For proportional scaling, specify a fixed-width OR fixed-height and use 'auto' for the other dimension.
<<<
Example:
<<<
{{{
<<tiddler ThumbThing with: images/meow2.jpg 100px>>
}}}
<<tiddler ThumbThing with: images/meow2.jpg 100px>>
<<<
See also:
>[[AllThumbs]]
!end

!show
<html><hide linebreaks>
<img src="$1" style="border=0;width:$2;height:$3;" title="$1" onclick="
	var p=Popup.create(this); if (!p) return; var s=p.style; s.border=s.padding='0'; s.background='none';
	p.innerHTML='<img src=\x22$1\x22 style=\x22border:1px solid #999;background:#eee;width:$4;height:$5\x22>';
	Popup.show(); event.cancelBubble=true; if(event.stopPropagation)event.stopPropagation(); return(false);
"></html>
!end
%/<<tiddler {{'ThumbThing##'+('$1'=='$'+'1'?'info':'show')}} with:
	{{var cma=config.macros.attach; (cma&&cma.isAttachment('$1'))?cma.getAttachment('$1'):'$1';}}
	[[$2]] [[$3]] [[$4]] [[$5]]>>
<<showPopup tiddler:TiddlyWiki##site label:TiddlyWiki width:1000px>> é um applicacao simples e compacta de um wiki. Em verdade esta pagina esta construido usando ele. E o curso tambem esta constuido usando esta ferramenta simples, e o mesmo tempo bastante flexivel.

/%
!!site
<html><iframe src="http://www.tiddlywiki.com" width=100% height=600px></iframe></html>
!!end
%/
<<tiddler Inicio>>
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.4|
|''Date:''|2008-08-11|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 4,
	date: new Date("2008-08-11"),
	source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'
};

//
// Environment
//

if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false;	// true to activate both in Plugin and UploadService
	
//
// Upload Macro
//

config.macros.upload = {
// default values
	defaultBackupDir: '',	//no backup
	defaultStoreScript: "store.php",
	defaultToFilename: "index.html",
	defaultUploadDir: ".",
	authenticateUser: true	// UploadService Authenticate User
};
	
config.macros.upload.label = {
	promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
	promptParamMacro: "Save and Upload this TiddlyWiki in %0",
	saveLabel: "save to web", 
	saveToDisk: "save to disk",
	uploadLabel: "upload"	
};

config.macros.upload.messages = {
	noStoreUrl: "No store URL in parmeters or options",
	usernameOrPasswordMissing: "Username or password missing"
};

config.macros.upload.handler = function(place,macroName,params) {
	if (readOnly)
		return;
	var label;
	if (document.location.toString().substr(0,4) == "http") 
		label = this.label.saveLabel;
	else
		label = this.label.uploadLabel;
	var prompt;
	if (params[0]) {
		prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0], 
			(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
	} else {
		prompt = this.label.promptOption;
	}
	createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};

config.macros.upload.action = function(params)
{
		// for missing macro parameter set value from options
		if (!params) params = {};
		var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
		var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
		var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
		var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
		var username = params[4] ? params[4] : config.options.txtUploadUserName;
		var password = config.options.pasUploadPassword; // for security reason no password as macro parameter	
		// for still missing parameter set default value
		if ((!storeUrl) && (document.location.toString().substr(0,4) == "http")) 
			storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
		if (storeUrl.substr(0,4) != "http")
			storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
		if (!toFilename)
			toFilename = bidix.basename(window.location.toString());
		if (!toFilename)
			toFilename = config.macros.upload.defaultToFilename;
		if (!uploadDir)
			uploadDir = config.macros.upload.defaultUploadDir;
		if (!backupDir)
			backupDir = config.macros.upload.defaultBackupDir;
		// report error if still missing
		if (!storeUrl) {
			alert(config.macros.upload.messages.noStoreUrl);
			clearMessage();
			return false;
		}
		if (config.macros.upload.authenticateUser && (!username || !password)) {
			alert(config.macros.upload.messages.usernameOrPasswordMissing);
			clearMessage();
			return false;
		}
		bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password); 
		return false; 
};

config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir) 
{
	if (!storeUrl)
		return null;
		var dest = bidix.dirname(storeUrl);
		if (uploadDir && uploadDir != '.')
			dest = dest + '/' + uploadDir;
		dest = dest + '/' + toFilename;
	return dest;
};

//
// uploadOptions Macro
//

config.macros.uploadOptions = {
	handler: function(place,macroName,params) {
		var wizard = new Wizard();
		wizard.createWizard(place,this.wizardTitle);
		wizard.addStep(this.step1Title,this.step1Html);
		var markList = wizard.getElement("markList");
		var listWrapper = document.createElement("div");
		markList.parentNode.insertBefore(listWrapper,markList);
		wizard.setValue("listWrapper",listWrapper);
		this.refreshOptions(listWrapper,false);
		var uploadCaption;
		if (document.location.toString().substr(0,4) == "http") 
			uploadCaption = config.macros.upload.label.saveLabel;
		else
			uploadCaption = config.macros.upload.label.uploadLabel;
		
		wizard.setButtons([
				{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption, 
					onClick: config.macros.upload.action},
				{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
				
			]);
	},
	options: [
		"txtUploadUserName",
		"pasUploadPassword",
		"txtUploadStoreUrl",
		"txtUploadDir",
		"txtUploadFilename",
		"txtUploadBackupDir",
		"chkUploadLog",
		"txtUploadLogMaxLine"		
	],
	refreshOptions: function(listWrapper) {
		var opts = [];
		for(i=0; i<this.options.length; i++) {
			var opt = {};
			opts.push();
			opt.option = "";
			n = this.options[i];
			opt.name = n;
			opt.lowlight = !config.optionsDesc[n];
			opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
			opts.push(opt);
		}
		var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
		for(n=0; n<opts.length; n++) {
			var type = opts[n].name.substr(0,3);
			var h = config.macros.option.types[type];
			if (h && h.create) {
				h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
			}
		}
		
	},
	onCancel: function(e)
	{
		backstage.switchTab(null);
		return false;
	},
	
	wizardTitle: "Upload with options",
	step1Title: "These options are saved in cookies in your browser",
	step1Html: "<input type='hidden' name='markList'></input><br>",
	cancelButton: "Cancel",
	cancelButtonPrompt: "Cancel prompt",
	listViewTemplate: {
		columns: [
			{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
			{name: 'Option', field: 'option', title: "Option", type: 'String'},
			{name: 'Name', field: 'name', title: "Name", type: 'String'}
			],
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'} 
			]}
};

//
// upload functions
//

if (!bidix.upload) bidix.upload = {};

if (!bidix.upload.messages) bidix.upload.messages = {
	//from saving
	invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
	backupSaved: "Backup saved",
	backupFailed: "Failed to upload backup file",
	rssSaved: "RSS feed uploaded",
	rssFailed: "Failed to upload RSS feed file",
	emptySaved: "Empty template uploaded",
	emptyFailed: "Failed to upload empty template file",
	mainSaved: "Main TiddlyWiki file uploaded",
	mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
	//specific upload
	loadOriginalHttpPostError: "Can't get original file",
	aboutToSaveOnHttpPost: 'About to upload on %0 ...',
	storePhpNotFound: "The store script '%0' was not found."
};

bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
	var callback = function(status,uploadParams,original,url,xhr) {
		if (!status) {
			displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
			return;
		}
		if (bidix.debugMode) 
			alert(original.substr(0,500)+"\n...");
		// Locate the storeArea div's 
		var posDiv = locateStoreArea(original);
		if((posDiv[0] == -1) || (posDiv[1] == -1)) {
			alert(config.messages.invalidFileError.format([localPath]));
			return;
		}
		bidix.upload.uploadRss(uploadParams,original,posDiv);
	};
	
	if(onlyIfDirty && !store.isDirty())
		return;
	clearMessage();
	// save on localdisk ?
	if (document.location.toString().substr(0,4) == "file") {
		var path = document.location.toString();
		var localPath = getLocalPath(path);
		saveChanges();
	}
	// get original
	var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
	var originalPath = document.location.toString();
	// If url is a directory : add index.html
	if (originalPath.charAt(originalPath.length-1) == "/")
		originalPath = originalPath + "index.html";
	var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
	var log = new bidix.UploadLog();
	log.startUpload(storeUrl, dest, uploadDir,  backupDir);
	displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
	if (bidix.debugMode) 
		alert("about to execute Http - GET on "+originalPath);
	var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

bidix.upload.uploadRss = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		if(status) {
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
			bidix.upload.uploadMain(params[0],params[1],params[2]);
		} else {
			displayMessage(bidix.upload.messages.rssFailed);			
		}
	};
	// do uploadRss
	if(config.options.chkGenerateAnRssFeed) {
		var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
		var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
		var rssString = generateRss();
		// no UnicodeToUTF8 conversion needed when location is "file" !!!
		if (document.location.toString().substr(0,4) != "file")
			rssString = convertUnicodeToUTF8(rssString);	
		bidix.upload.httpUpload(rssUploadParams,rssString,callback,Array(uploadParams,original,posDiv));
	} else {
		bidix.upload.uploadMain(uploadParams,original,posDiv);
	}
};

bidix.upload.uploadMain = function(uploadParams,original,posDiv) 
{
	var callback = function(status,params,responseText,url,xhr) {
		var log = new bidix.UploadLog();
		if(status) {
			// if backupDir specified
			if ((params[3]) && (responseText.indexOf("backupfile:") > -1))  {
				var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
				displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
			}
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
			displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
			store.setDirty(false);
			log.endUpload("ok");
		} else {
			alert(bidix.upload.messages.mainFailed);
			displayMessage(bidix.upload.messages.mainFailed);
			log.endUpload("failed");			
		}
	};
	// do uploadMain
	var revised = bidix.upload.updateOriginal(original,posDiv);
	bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};

bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
	var localCallback = function(status,params,responseText,url,xhr) {
		url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
		if (xhr.status == 404)
			alert(bidix.upload.messages.storePhpNotFound.format([url]));
		if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
			alert(responseText);
			if (responseText.indexOf("Debug mode") >= 0 )
				responseText = responseText.substring(responseText.indexOf("\n\n")+2);
		} else if (responseText.charAt(0) != '0') 
			alert(responseText);
		if (responseText.charAt(0) != '0')
			status = null;
		callback(status,params,responseText,url,xhr);
	};
	// do httpUpload
	var boundary = "---------------------------"+"AaB03x";	
	var uploadFormName = "UploadPlugin";
	// compose headers data
	var sheader = "";
	sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
	sheader += uploadFormName +"\"\r\n\r\n";
	sheader += "backupDir="+uploadParams[3] +
				";user=" + uploadParams[4] +
				";password=" + uploadParams[5] +
				";uploaddir=" + uploadParams[2];
	if (bidix.debugMode)
		sheader += ";debug=1";
	sheader += ";;\r\n"; 
	sheader += "\r\n" + "--" + boundary + "\r\n";
	sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
	sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
	sheader += "Content-Length: " + data.length + "\r\n\r\n";
	// compose trailer data
	var strailer = new String();
	strailer = "\r\n--" + boundary + "--\r\n";
	data = sheader + data + strailer;
	if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
	var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
	if (typeof r == "string")
		displayMessage(r);
	return r;
};

// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
	if (!posDiv)
		posDiv = locateStoreArea(original);
	if((posDiv[0] == -1) || (posDiv[1] == -1)) {
		alert(config.messages.invalidFileError.format([localPath]));
		return;
	}
	var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
				store.allTiddlersAsHtml() + "\n" +
				original.substr(posDiv[1]);
	var newSiteTitle = getPageTitle().htmlEncode();
	revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
	revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
	revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
	revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
	revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
	return revised;
};

//
// UploadLog
// 
// config.options.chkUploadLog :
//		false : no logging
//		true : logging
// config.options.txtUploadLogMaxLine :
//		-1 : no limit
//      0 :  no Log lines but UploadLog is still in place
//		n :  the last n lines are only kept
//		NaN : no limit (-1)

bidix.UploadLog = function() {
	if (!config.options.chkUploadLog) 
		return; // this.tiddler = null
	this.tiddler = store.getTiddler("UploadLog");
	if (!this.tiddler) {
		this.tiddler = new Tiddler();
		this.tiddler.title = "UploadLog";
		this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
		this.tiddler.created = new Date();
		this.tiddler.modifier = config.options.txtUserName;
		this.tiddler.modified = new Date();
		store.addTiddler(this.tiddler);
	}
	return this;
};

bidix.UploadLog.prototype.addText = function(text) {
	if (!this.tiddler)
		return;
	// retrieve maxLine when we need it
	var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
	if (isNaN(maxLine))
		maxLine = -1;
	// add text
	if (maxLine != 0) 
		this.tiddler.text = this.tiddler.text + text;
	// Trunck to maxLine
	if (maxLine >= 0) {
		var textArray = this.tiddler.text.split('\n');
		if (textArray.length > maxLine + 1)
			textArray.splice(1,textArray.length-1-maxLine);
			this.tiddler.text = textArray.join('\n');		
	}
	// update tiddler fields
	this.tiddler.modifier = config.options.txtUserName;
	this.tiddler.modified = new Date();
	store.addTiddler(this.tiddler);
	// refresh and notifiy for immediate update
	story.refreshTiddler(this.tiddler.title);
	store.notify(this.tiddler.title, true);
};

bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir,  backupDir) {
	if (!this.tiddler)
		return;
	var now = new Date();
	var text = "\n| ";
	var filename = bidix.basename(document.location.toString());
	if (!filename) filename = '/';
	text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
	text += config.options.txtUserName + " | ";
	text += "[["+filename+"|"+location + "]] |";
	text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
	text += uploadDir + " | ";
	text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
	text += backupDir + " |";
	this.addText(text);
};

bidix.UploadLog.prototype.endUpload = function(status) {
	if (!this.tiddler)
		return;
	this.addText(" "+status+" |");
};

//
// Utilities
// 

bidix.checkPlugin = function(plugin, major, minor, revision) {
	var ext = version.extensions[plugin];
	if (!
		(ext  && 
			((ext.major > major) || 
			((ext.major == major) && (ext.minor > minor))  ||
			((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
			// write error in PluginManager
			if (pluginInfo)
				pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
			eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
	}
};

bidix.dirname = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(0, lastpos);
	} else {
		return filePath.substring(0, filePath.lastIndexOf("\\"));
	}
};

bidix.basename = function(filePath) {
	if (!filePath) 
		return;
	var lastpos;
	if ((lastpos = filePath.lastIndexOf("#")) != -1) 
		filePath = filePath.substring(0, lastpos);
	if ((lastpos = filePath.lastIndexOf("/")) != -1) {
		return filePath.substring(lastpos + 1);
	} else
		return filePath.substring(filePath.lastIndexOf("\\")+1);
};

bidix.initOption = function(name,value) {
	if (!config.options[name])
		config.options[name] = value;
};

//
// Initializations
//

// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);

// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");

//optionsDesc
merge(config.optionsDesc,{
	txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
	txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
	txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
	txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
	txtUploadUserName: "Upload Username",
	pasUploadPassword: "Upload Password",
	chkUploadLog: "do Logging in UploadLog (default: true)",
	txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});

// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');


// Backstage
merge(config.tasks,{
	uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");


//}}}

/***
|''Name:''|UploadTiddlerMacro|
|''Description:''|Define a macro to upload a tiddler using UploadTiddlerPlugin (see UploadTiddlerPlugin for details).|
|''Version:''|1.0.0|
|''Date:''|2008-09-30|
|''Source:''|http://tiddlywiki.bidix.info/#UploadTiddlerMacro|
|''Usage:''|{{{<<uploadTiddler [tiddlerTitle]>>}}}<br>{{{tiddlerTitle: if omitted the title of the current tiddler}}}|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''CoreVersion:''|2.2.0|
|''Requires:''|UploadTiddlerPlugin|
***/
//{{{
version.extensions.UploadTiddlerMacro = {
	major: 1, minor: 0, revision: 0, 
	date: new Date("2008-09-30"),
	source: 'http://tiddlywiki.bidix.info/#UploadTiddlerMacro',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.2.0'
};

config.macros.uploadTiddler = {
	label: "uploadTiddler",
	prompt: "upload tiddler '%0' using UploadTiddlerOptions ",
	warning: "Are you sure you want to upload '%0'?",
	messages: {
		fileUploaded: "tiddler '%0' uploaded to file '%1'",
		fileNotUploaded: "tiddler '%0' NOT uploaded"
	},

	handler: function(place, macroName, params, wikifier,paramString, tiddler) {
		var tiddlerTitle = params[0];
		if (!tiddlerTitle) { 
			tiddlerTitle = tiddler.title;
		} else {
			tiddler = store.getTiddler(tiddlerTitle);
		}
		createTiddlyButton(place, this.label, this.prompt.format([tiddlerTitle]), 
			function () {
				config.macros.uploadTiddler.upload(tiddlerTitle, tiddler); 
				return false;}, 
			null, null, null);
	},

	upload:  function(tiddlerTitle, tiddler) {
		var saved_chkUploadTiddler = config.options.chkUploadTiddler;
		config.options.chkUploadTiddler = true; 
		bidix.uploadTiddler.upload(tiddlerTitle, tiddler,tiddlerTitle);
		config.options.chkUploadTiddler = saved_chkUploadTiddler;
	}
};

//
// Utilities
// 
if (!window.bidix) window.bidix = {}; // bidix namespace

bidix.checkPlugin = function(plugin, major, minor, revision) {
	var ext = version.extensions[plugin];
	if (!
		(ext  && 
			((ext.major > major) || 
			((ext.major == major) && (ext.minor > minor))  ||
			((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
			// write error in PluginManager
			if (pluginInfo)
				pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
			eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
	}
};

//
// Initializations
//

// require UploadTiddlerPlugin 1.2.2 or better
bidix.checkPlugin("UploadTiddlerPlugin", 1, 2, 2);


//}}}
/***
|''Name:''|UploadTiddlerPlugin|
|''Description:''|Upload a tiddler and Update a remote TiddlyWiki |
|''Version:''|1.2.2|
|''Date:''|2008-09-13|
|''Source:''|http://tiddlywiki.bidix.info/#UploadTiddlerPlugin|
|''Usage:''|Uses {{{<<uploadOptions>>}}}<br>with those UploadTiddler Options : <br>chkUploadTiddler: <<option chkUploadTiddler>><br>txtUploadTiddlerStoreUrl: <<option txtUploadTiddlerStoreUrl>><br>chkUploadTiddlerFromFile: <<option chkUploadTiddlerFromFile>>|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''[[License]]:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''CoreVersion:''|2.3.0|
***/
//{{{
version.extensions.UploadTiddlerPlugin = {
	major: 1, minor: 2, revision: 2, 
	date: new Date("2008-09-13"),
	source: 'http://tiddlywiki.bidix.info/#UploadTiddlerPlugin',
	author: 'BidiX (BidiX (at) bidix (dot) info',
	coreVersion: '2.3.0'
};

if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false;
bidix.uploadTiddler = {
	messages: {
		aboutToSaveTiddler: "About to update tiddler '%0'...",
		aboutToRemotelySaveTiddler: "About to REMOTELY update tiddler '%0'...",
		storeTiddlerNotFound: "Script store tiddler '%0' not found",
		tiddlerSaved: "Tiddler '%0' updated in '%1' using '%2' "
	},
	upload: function(title,tiddler,oldTitle) {
		var callback = function(status,params,responseText,url,xhr) {
			if (xhr.status == 404) {
				alert(bidix.uploadTiddler.messages.storeTiddlerNotFound.format([url]));
				return;
			}
			if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
				alert(responseText);
				if (responseText.indexOf("Debug mode") >= 0 )
					responseText = responseText.substring(responseText.indexOf("\n\n")+2);
			} else if (responseText.charAt(0) != '0') 
				alert(responseText);
			else 
				displayMessage(bidix.uploadTiddler.messages.tiddlerSaved.format([params[0], params[1], params[2]]));
				store.setDirty(false);
			}

		if ((config.options['chkUploadTiddler']) && 
				((document.location.toString().substr(0,4) == "http") || config.options['chkUploadTiddlerFromFile'])) {
			clearMessage();
			if (document.location.toString().substr(0,4) != "http")
				displayMessage(bidix.uploadTiddler.messages.aboutToRemotelySaveTiddler.format([title]));
			else
				displayMessage(bidix.uploadTiddler.messages.aboutToSaveTiddler.format([title]));
			var ExtTiddler = null;
			var html = null;
			if (tiddler) {
				ExtTiddler = store.getSaver().externalizeTiddler(store,tiddler);
				html = wikifyStatic(tiddler.text,null,tiddler).htmlEncode();
			}
			var form = "title="+encodeURIComponent(title);
			form = form + "&tiddler="+(ExtTiddler?encodeURIComponent(ExtTiddler):'');
			form = form + "&html="+(html?encodeURIComponent(html):'');
			var filename = (config.options['txtUploadFilename']?config.options['txtUploadFilename']:'index.html');
			form = form +"&oldTitle="+encodeURIComponent(oldTitle);
			form = form +"&fileName="+encodeURIComponent(filename);
			form = form +"&backupDir="+encodeURIComponent(config.options['txtUploadBackupDir']);
			form = form +"&user="+encodeURIComponent(config.options['txtUploadUserName']);
			form = form +"&password="+encodeURIComponent(config.options['pasUploadPassword']);
			form = form +"&uploadir="+encodeURIComponent(config.options['txtUploadDir']);
			form = form +"&debug="+encodeURIComponent(0);
			var storeScript = (config.options.txtUploadTiddlerStoreUrl 
								? config.options.txtUploadTiddlerStoreUrl : 'storeTiddler.php');
			var r = doHttp("POST",storeScript,form+"\n",'application/x-www-form-urlencoded',
				config.options['txtUploadUserName'],config.options['pasUploadPassword'],callback,Array(title,filename, storeScript),null);
		}
	}
}
TiddlyWiki.prototype.saveTiddler_bidix = TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler = function(oldTitle,newTitle,newBody,modifier,modified,tags,fields,clearChangeCount,created) {
	var tiddler = TiddlyWiki.prototype.saveTiddler_bidix.apply(this,arguments);
	var title = (newTitle?newTitle:oldTitle);
	if (oldTitle == title)
		oldTitle = '';
	bidix.uploadTiddler.upload(title, tiddler, oldTitle);
}
TiddlyWiki.prototype.removeTiddler_bidix =TiddlyWiki.prototype.removeTiddler;
TiddlyWiki.prototype.removeTiddler = function(title) {
	TiddlyWiki.prototype.removeTiddler_bidix.apply(this,arguments);
	bidix.uploadTiddler.upload(title, null);
}

//
// Initializations
//

bidix.initOption = function(name,value) {
	if (!config.options[name])
		config.options[name] = value;
};

// styleSheet
setStylesheet('.txtUploadTiddlerStoreUrl {width: 22em;}',"uploadTiddlerPluginStyles");

//optionsDesc
merge(config.optionsDesc,{
	txtUploadTiddlerStoreUrl: "Url of the UploadTiddlerService script (default: storeTiddler.php)",
	chkUploadTiddler: "Do per Tiddler upload using txtUploadTiddlerStoreUrl (default: false)",
	chkUploadTiddlerFromFile: "Upload tiddler even if TiddlyWiki is located on local file (default: false)"
});

// Options Initializations
bidix.initOption('txtUploadTiddlerStoreUrl','');
bidix.initOption('chkUploadTiddler','');
bidix.initOption('chkUploadTiddlerFromFile','');


// add options in backstage UploadOptions
if (config.macros.uploadOptions) {
	if (config.macros.uploadOptions.options) {
		config.macros.uploadOptions.options.push("txtUploadTiddlerStoreUrl","chkUploadTiddler", "chkUploadTiddlerFromFile");
	}
}

//}}}

<html><nowiki><form enctype="multipart/form-data" action="http://www.unigaia-brasil.org/uploadPDF/add.php" method="POST" target=responseframe>
<input type=hidden name="filename" >
<input type="text" name="title" value="titulo" style="width:220px;"><br>
<input type="text" name = "autor"  value="autor" style="width:220px;"><br>
<input type=text name="referencia" value="referencia" style="width:220px;"><br>
<input type="text" name="etiqueta" value="Etiqueta" style="width:220px;"><br>
<input type="text" name = "tags" style="width:220px;" value="outra tags"><br>
<input type="text" name = "pub" value="editora" style="width:220px;"><br>
<textarea name="comment" rows="4" cols="48" style="width:220px;"></textarea><br><input type=hidden name="user"><input type="file" name="url" id="url" style="width:20px;">
<input type=hidden name="tipo" value="pdf"><input type=hidden name="fonte" value="biblio"><input type=hidden name="when"><input type=hidden name="user"><br><input type="submit" value="submit" onclick='
var filename=this.form.url.value;
this.form.filename.value=filename;
this.form.when.value = new Date();
this.form.user.value = localStorage.UserName;
var title = this.form.title.value;
var who = this.form.user.value;
var text = "|Link|http://www.unigaia-brasil.org/uploadPDF/pdfs/"+this.form.etiqueta.value+"/"+filename+"|\n|Autor|"+this.form.autor.value+"|\n|Editora|"+this.form.pub.value+"|\n|Fonte|"+this.form.fonte.value+"|\n|Tipo|"+this.form.tipo.value+"|\n"+this.form.comment.value;
var etiqueta =who+"  "+this.form.referencia.value+" "+this.form.etiqueta.value+" "+this.form.tags.value+" "+this.form.tipo.value+" slicedRef";
store.saveTiddler(title,title,text,who,null,etiqueta,null);
autoSaveChanges();
'></form><iframe src="" name="responseframe" id="responseframe" marginheight=0     style="display:block;border:0;padding:0;margin:0;width:100%;height:4em;"></iframe></html>{{fine{
Nota: - a referencia (tambem o nome deste materia) será utilizado criar uma sub-pasta por o arquivos desta tema....tem cuidado mudando isso... para não criar muitas sub-pastas no servidor... que vem dificultar a sistematizacao dos arquivos.}}}
(Modulo/Etiquets =<<wikify {{config.options.txtPage}} / {{config.options.txtTema}}


<!--{{{--><div macro='showWhen localStorage.username!=null'><div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div></div><div class='title' macro='view title'></div><div class='viewer' macro='view text wikified'></div><div class='tagClear'></div><!--;}}}-->
/***
|Name|WikifyPlugin|
|Source|http://www.TiddlyTools.com/#WikifyPlugin|
|Documentation|http://www.TiddlyTools.com/#WikifyPluginInfo|
|Version|1.2.0|
|Author|Eric Shulman|
|License|http://www.TiddlyTools.com/#LegalStatements|
|~CoreVersion|2.1|
|Type|plugin|
|Description|insert sections, slices, fields, literals, or computed values into a wiki-format output|
!!!!!Documentation
> see [[WikifyPluginInfo]]
!!!!!Revisions
<<<
2011.03.07 1.2.0 added handling in getFieldReference() for retrieving section values
|please see [[WikifyPluginInfo]] for additional revision details|
2007.06.22 1.0.0 initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.WikifyPlugin= {major: 1, minor: 2, revision: 0, date: new Date(2011,3,7)};

config.macros.wikify={
	handler: function(place,macroName,params,wikifier,paramString,tiddler) {
		var fmt=params.shift();
		var values=[];
		var out="";
		if (!fmt.match(/\%[0-9]/g) && params.length) // format has no markers, just join all params with spaces
			out=fmt+" "+params.join(" ");
		else { // format param has markers, get values and perform substitution
			while (p=params.shift()) values.push(this.getFieldReference(place,p));
			out=fmt.format(values);
		}
		if (macroName=="wikiCalc") out=eval(out).toString();
		wikify(out.unescapeLineBreaks(),place,null,tiddler);
	},
	getFieldReference: function(place,p) {
		if (typeof p != "string") return p; // literal non-string value... just return it...

		var val=undefined;
		var here=story.findContainingTiddler(place);
		var current=here?here.getAttribute('tiddler'):'';

		// SLICES: "::slicename" OR "here::slicename" OR "tiddlername::slicename"
		var parts=p.split(config.textPrimitives.sliceSeparator);
		var tid=parts[0]; var slice=parts[1];
		if (slice) { // slice reference
			if (!tid || !tid.length || tid=="here") tid=current;
			var val=store.getTiddlerSlice(tid,slice);
		}

		// SECTIONS: "##sectionname" OR "here##sectionname" OR "tiddlername##sectionname"
		if (!slice) {
			var parts=p.split(config.textPrimitives.sectionSeparator);
			var tid=parts[0]; var section=parts[1];
			if (section) {
				if (!tid || !tid.length || tid=="here") tid=current;
				var val=store.getTiddlerText(tid+config.textPrimitives.sectionSeparator+section);
			}
		}

		// FIELDS: "fieldname" OR "fieldname@tiddlername"
		if (!slice && !section) {
			var parts=p.split("@");
		 	var field=parts[0]; var tid=parts[1];
			if (!tid || !tid.length || tid=="here") tid=current;
			var val=store.getValue(tid,field);
		}

		// not a slice, section or field, or value not found... return value unchanged
		return val===undefined?p:val;
	}
}
//}}}
//{{{
// define alternative macroName for triggering pre-rendering call to eval()
config.macros.wikiCalc=config.macros.wikify;
//}}}
<<tiddler SiteTitle>>
<!--{{{--><div macro='showWhen localStorage.username!=null'><div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'><span macro='tiddler Answer##yes'></span><span macro='tiddler Answer##no'></span></div></div><div class='title' macro='view title'></div><div class='viewer' macro='view text wikified'></div><span macro='tiddler SetTxtFoto'></span><div class='tagClear'></div><!--;}}}-->
<!--{{{--><div macro='showWhen localStorage.username!=null'><div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'><span macro='tiddler Answer##comment'></span><span macro='tiddler Answer##addref'></span><span macro='tiddler Answer##upload'></span><span macro='tiddler Answer##local'></span></div></div><div class='title' macro='view title'></div><div class='viewer' macro='view text wikified'></div><span macro='tiddler PerguntaText'></span><div class='tagClear'></div><!--;}}}-->
<script>localStorage.curso=tiddler.title;localStorage.rightsidebar="curso";refreshDisplay();</script>
<!--{{{--><div macro='showWhen localStorage.username!=null'><div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div></div><div class='title' macro='view title'></div><div class='viewer' macro='view text wikified'></div><span macro='tiddler cursoText'></span><div class='tagClear'></div><!--;}}}-->
<!--{{{-->
<div macro='showWhen localStorage.username!=null'><div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div></div>
<div macro='tiddler InscrivirSe'></div>
<div class='title' macro='view title'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div macro='showWhen localStorage.username!=null'><div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'><span macro='tiddler Study##Lista'</span><span macro='tiddler Study##newRef'</span><span macro='tiddler Study##newUpload'</span><span macro='tiddler Study##addNota'</span></div></div>
<div class='title' macro='view title'></div>
<div macro='tiddler DisplayNotas'></div>
<div class='viewer' macro='tiddler SlicedRef'></div>
<div class='tagClear'></div>
<!--}}}-->
config.options.txtUploadUserName=localStorage.username
config.options.pasUploadPassword=localStorage.password
config.options.txtUploadStoreUrl="http://www.unigaia-brasil.org/store.php"
config.options.txtUploadDir="http://www.unigaia-brasil.org/"
config.options.txtUploadFilename="index.html"
config.options.txtUploadTiddlerStoreUrl="http://www.unigaia-brasil.org/storeTiddler.php"
config.options.chkUploadTiddler=true
showBackstage=false