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

	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

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

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

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

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

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

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

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

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

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

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

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

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

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity:60)';}
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

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

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0em 1em 1em; left:0px; top:0px;}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none ! important;}
#displayArea {margin: 1em 1em 0em 1em;}
/* Fixes a feature in Firefox where print preview displays the noscript content */
noscript {display:none;}
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<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 id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></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]]
[["무상급식 했다가 경제 나빠지면 어쩌려고..."|http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0001166730&CMPT_CD=P0000]]
[[공지 사항]]
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Date:''|mar 17, 2007|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
version.extensions.LoadRemoteFileThroughProxy = {
 major: 1, minor: 1, revision: 0, 
 date: new Date("mar 17, 2007"), 
 source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};

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

bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
 if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){ 
 url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
 return bidix.core.loadRemoteFile(url,callback,params);
[[공지 사항]]
[[이용하는 방법]]
[[참여하는 방법]]

[[기본포맷|정치인 정보 입력 기본 포맷]]
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Date:''|Apr 19, 2007|
|''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
			// checkbox linked with this password "save this password on this computer"
			// text savePasswordCheckboxLabel
		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]) 
		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

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

		pasPassword: "Test password"
정치인들의 행적을 기록하고 검색하는 간편한 위키
''[[정치인 DB Wiki|http://politician.tiddlyspot.com]]''
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.

// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'politician';

// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
window.showBackstage = true; // show backstage too

// disable autosave in d3
if (window.location.protocol != "file:")
	config.options.chkGTDLazyAutoSave = false;

// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
	SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
	SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
	OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
	DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
	MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");

// create some shadow tiddler content

 "This document is a ~TiddlyWiki from tiddlyspot.com.  A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
 "@@font-weight:bold;font-size:1.3em;color:#444; //What now?// &nbsp;&nbsp;@@ Before you can save any changes, you need to enter your password in the form below.  Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
 "<<tiddler TspotControls>>",
 "See also GettingStarted.",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick.  You can make changes and save them locally without being connected to the Internet.  When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Help!// &nbsp;&nbsp;@@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]].  Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help.  If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
 "@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site.  Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."

 "| tiddlyspot password:|<<option pasUploadPassword>>|",
 "| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<br>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
 "| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[blog|http://tiddlyspot.blogspot.com/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"

 "<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . .  " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"

 "tiddlyspot password:",
 "<<option pasUploadPassword>>",

| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 30/07/2009 14:03:36 | arinnes | [[/|http://politician.tiddlyspot.com/]] | [[store.cgi|http://politician.tiddlyspot.com/store.cgi]] | . | [[index.html | http://politician.tiddlyspot.com/index.html]] | . | ok |
| 30/07/2009 14:08:34 | arinnes | [[/|http://politician.tiddlyspot.com/]] | [[store.cgi|http://politician.tiddlyspot.com/store.cgi]] | . | [[index.html | http://politician.tiddlyspot.com/index.html]] | . |
| 11/08/2009 09:35:39 | arinnes | [[/|http://politician.tiddlyspot.com/]] | [[store.cgi|http://politician.tiddlyspot.com/store.cgi]] | . | [[index.html | http://politician.tiddlyspot.com/index.html]] | . | ok |
| 11/08/2009 09:36:55 | arinnes | [[/|http://politician.tiddlyspot.com/]] | [[store.cgi|http://politician.tiddlyspot.com/store.cgi]] | . | [[index.html | http://politician.tiddlyspot.com/index.html]] | . | ok |
| 11/08/2009 09:40:26 | arinnes | [[/|http://politician.tiddlyspot.com/]] | [[store.cgi|http://politician.tiddlyspot.com/store.cgi]] | . | [[index.html | http://politician.tiddlyspot.com/index.html]] | . | ok |
| 11/08/2009 09:45:09 | arinnes | [[/|http://politician.tiddlyspot.com/]] | [[store.cgi|http://politician.tiddlyspot.com/store.cgi]] | . | [[index.html | http://politician.tiddlyspot.com/index.html]] | . |
| 13/08/2009 15:10:35 | arinnes | [[/|http://politician.tiddlyspot.com/]] | [[store.cgi|http://politician.tiddlyspot.com/store.cgi]] | . | [[index.html | http://politician.tiddlyspot.com/index.html]] | . | ok |
| 13/08/2009 15:10:52 | arinnes | [[/|http://politician.tiddlyspot.com/]] | [[store.cgi|http://politician.tiddlyspot.com/store.cgi]] | . | [[index.html | http://politician.tiddlyspot.com/index.html]] | . |
| 26/09/2009 16:48:15 | isdead | [[/|http://politician.tiddlyspot.com/]] | [[store.cgi|http://politician.tiddlyspot.com/store.cgi]] | . | [[index.html | http://politician.tiddlyspot.com/index.html]] | . | failed |
| 26/09/2009 16:49:03 | isdead | [[/|http://politician.tiddlyspot.com/]] | [[store.cgi|http://politician.tiddlyspot.com/store.cgi]] | . | [[index.html | http://politician.tiddlyspot.com/index.html]] | . |
|''Description:''|Save to web a TiddlyWiki|
|''Date:''|Feb 24, 2008|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
version.extensions.UploadPlugin = {
	major: 4, minor: 1, revision: 3,
	date: new Date("Feb 24, 2008"),
	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)
	var label;
	if (document.location.toString().substr(0,4) == "http") 
		label = this.label.saveLabel;
		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) {
			return false;
		if (config.macros.upload.authenticateUser && (!username || !password)) {
			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();
		var markList = wizard.getElement("markList");
		var listWrapper = document.createElement("div");
		var uploadCaption;
		if (document.location.toString().substr(0,4) == "http") 
			uploadCaption = config.macros.upload.label.saveLabel;
			uploadCaption = config.macros.upload.label.uploadLabel;
				{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption, 
					onClick: config.macros.upload.action},
				{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
	options: [
	refreshOptions: function(listWrapper) {
		var opts = [];
		for(i=0; i<this.options.length; i++) {
			var opt = {};
			opt.option = "";
			n = this.options[i];
			opt.name = n;
			opt.lowlight = !config.optionsDesc[n];
			opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
		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) {
	onCancel: function(e)
		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) {
		if (bidix.debugMode) 
		// Locate the storeArea div's 
		var posDiv = locateStoreArea(original);
		if((posDiv[0] == -1) || (posDiv[1] == -1)) {
	if(onlyIfDirty && !store.isDirty())
	// save on localdisk ?
	if (document.location.toString().substr(0,4) == "file") {
		var path = document.location.toString();
		var localPath = getLocalPath(path);
	// 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);
	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")
	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:")));
		} else {
	// 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);	
	} else {

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:")));
			var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
		} else {
	// do uploadMain
	var revised = bidix.upload.updateOriginal(original,posDiv);

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)
		if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
			if (responseText.indexOf("Debug mode") >= 0 )
				responseText = responseText.substring(responseText.indexOf("\n\n")+2);
		} else if (responseText.charAt(0) != '0') 
		if (responseText.charAt(0) != '0')
			status = null;
	// 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")
	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)) {
	var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
				store.allTiddlersAsHtml() + "\n" +
	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();
	return this;

bidix.UploadLog.prototype.addText = function(text) {
	if (!this.tiddler)
	// 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)
			this.tiddler.text = textArray.join('\n');		
	// update tiddler fields
	this.tiddler.modifier = config.options.txtUserName;
	this.tiddler.modified = new Date();
	// refresh and notifiy for immediate update
	store.notify(this.tiddler.title, true);

bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir,  backupDir) {
	if (!this.tiddler)
	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 + " |";

bidix.UploadLog.prototype.endUpload = function(status) {
	if (!this.tiddler)
	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) 
	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) 
	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");

	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

// Backstage
	uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}


나쁜, 바람직하지 않은 판단을 했던 정치인들의 목록입니다.
*국제대학(구 경문대학) 교수
*경기도 학교운영위원장 협의회 자문위원
*송탄중학교 운영위원장
*뉴라이트 평택연합 책임자

*[[경기도 초등학생 무상급식 예산 50% 삭감|http://politician.tiddlyspot.com/#%5B%5B29%20June%202009%5D%5D]] 추진

[["요즘 애들이 굶어? 시민들의 오해입니다 전교조가 뒤에서 시민들 조종하고 있어요!"|http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0001165881&PAGE_CD=N0000&BLCK_NO=3&CMPT_CD=M0001&NEW_GB=]]

1953년 서울출생
* 1987년 이후 한양대학교 행정대학원 교수, 한백연구재단 소장
* 미국 Claremont university ‘ the key center for international and strategic studies ’ 객원교수
* 미국 California state University, Hayward 객원교수
* 한국정치, 행정, 미래, 현상학회 상임이사
* 북악포럼 대표
* 계간 [포럼21] 발행 및 편집인
* 기술예측위원회 자문위원
* MBC 통일문제 자문위원
* KBS 객원 해설위원
* EBS [미래토크 2000] 자문위원
* 중앙일보 밀레니엄위원회 위원
* 2020 세계박람회 유치위원회 기본구상위원회 자문위원
* ㈜ Chaosmos 회장
* 참여연대 자문위원
* 해병대 청룡회 부회장
* 한나라당 제1정책조정위원장
* 한나라당 국가발전전략연구회 공동대표
* 국회 환경. 노동 위원회 위원
* 국회 국방위원회 위원
* 국회 정보위원회 위원
* 한나라당 서울특별시당위원장
* 현) 국제사회봉사위원연맹(IPSS) 사무총장
* 현) [사]H2O 조직위원장
* 현) 유머아카데미 부이사장
* 현) 한국전자정부포럼 고문
* 현) 칭찬아카데미 위원장
* 전) 국회 의원외교 연구모임 책임연구원
* 현) 노트랜스 국민운동본부 대표
* 현) [사]한국격투스포츠 연맹 총재
* 현) 산업보안포럼 회장
* 현) 위기관리포럼 대표의원
* 현) 제18대 국회의원(서울 강남구을)
* 현) 한나라당 미래위기대응 특별위원회 위원장
* 현) 한나라당 최고위원

[[공성진 의원, "제대로 된 투표였겠습니까?"|http://www.mediaus.co.kr/news/articleView.html?idxno=7390]]
[[공성진 “미디어법, 직권상정 가능성 있어”|http://www.frontiertimes.co.kr/news_view.html?s=FR01&no=39573&s_id=12&ss_id=0]]

정치인들의 과거 행보를 보기 쉽게 검색하기 위해 만든 Wiki 기반의 정치인 DB입니다.
우측의 검색 기능을 활용하여 찾고 싶은 정치인의 이름을 입력하시면, 쉽게 찾으실 수 있습니다.

맘에 드는 (안드는) 정치인을 추가하고 싶으신 분은 isdead+politics at gmail.com 으로 메일을 남겨주시면, 데이터를 확장하는데 큰 도움이 됩니다.

많은 분들에게 큰 도움이 되는 공간이 되기를 바랍니다.
//6.29.2009. isdead//

1963년 12월 6일 출생
*한나라당 국회의원
*이명박 대통령 후보 중앙선거대책위원회 대변인
*한국장애인부모회후원회 공동대표
*이회창대통령후보 여성특별보좌관
*서울행정법원 판사
*서울대학교대학원 법학 석사

[["미디어법 근거 통계, 조작됐다"|http://www.pressian.com/article/article.asp?article_num=60090629101256&section=02]]
[["나경원 의원도 저작권법 위반" ... 네티즌 거센 '비난'|http://www.cbs.co.kr/Nocut/Show.asp?IDX=1215541]]

[[국회 문화체육관광방송통신위 한나라당 간사 (2009.06.21)|http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=100&oid=001&aid=0002725207]]
[["국정, 무조건 밀고 나가는 방식은 안 돼" (2008.06.05)|http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=100&oid=003&aid=0002125828]]
1952년 2월 2일 대구출생
* 서강대전자공학과졸
* 걸스카우트명예총재
* 정수장학회이사장
* 문인협회회원
* 한나라당부총재
* 제15,16, 17대 국회의원
* 한나라당 대표 

[[박근혜 'MB특사'로 유럽간다.|http://news.hankooki.com/lpage/politics/200908/h2009081103083621060.htm]]


1938년 8월 9일 경상남도 남해 출생
*서울대 법학과 졸업
*13 14 15 16 17대 국회의원
*17대 국회 부의장
*한나라당 당 대표

서울 법대를 나와 1961년 고시 사법과에 합격했다. 그 다음해부터 육군 법무장교 검사를 거쳐 법무부, 대검, 서울, 부산, 대구, 대전, 청주, 춘천 등에서 검사와 부장검사, 검사장 등을 역임하는 등 26년간의 현직 법조인 생활 끝에 부산고등검찰청 검사장을 끝으로 국회에 진출했다. 
1988년 경남 남해?하동에서 13대 국회의원으로 처음 당선된 후 14?15?16?17대에 걸쳐 연속으로 당선되어 현재 5선의원이다. 
초선 때인 1988년 12월부터 당 대변인을 맡아 4년 3개월간 대변인을 계속하여 '정당사상 최장수 대변인, 최고의 명대변인'이라는 평가를 받았다. 
대변인을 끝내고 법무부장관, 국회법사위원장, 운영위원장, 원내총무(여당 1회, 야당 1회), 한나라당 부총재(직선), 최고위원(직선), 대표최고위원 권한대행 그리고 대표최고위원을 역임했다. 현재는 국회부의장이다. 
검사생활을 하면서도 꾸준히 학문에 뜻을 두어 1970~1971년 미국 캘리포니아주립 버클리법대에서 수학을 하고 건국대 대학원을 나왔으며 법학박사 학위를 취득했다.

[[박희태 "민주, 염천에 아스팔트서 선동"|http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=100&oid=001&aid=0002783355]]
[[박희태 출마 결심·야권 인재 고심|http://www.idomin.com/news/articleView.html?idxno=294486]]


1946년 2월 9일 출생
*한나라당 원내 대표
*한나라당 국회의원
*국회 법제사법위원회 위원장
*대한변호사협회 인권위원
*서울지방검찰청 검사

[[돌발영상: 안상수 - 사회적 합의 / 조원진 - 처음 해보는 환경노동위원장|mms://dvod1.ytn.co.kr/special/mov/sudden/2009/200907021409104495_s.wmv]]

[[한나라당 안상수 원내대표 (2009.06.07)|http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=100&oid=001&aid=0002702091]]
1961년 1월 4일 출생
*서울특별시 시장
*한나라당 국회의원
*고려대학교대학원 법학 박사

[[“한강 운하 위해 4년된 아파트 헐겠다니…”|http://www.hani.co.kr/arti/society/area/363280.html]]

[[오세훈 서울시장이 말하는 '나의 어린시절, 나의 미래'|http://weekly.chosun.com/site/data/html_dir/2009/03/11/2009031100981.html]]


*[[경기도 초등학생 무상급식 예산 50% 삭감|http://politician.tiddlyspot.com/#%5B%5B29%20June%202009%5D%5D]] 추진

[["요즘 애들이 굶어? 시민들의 오해입니다 전교조가 뒤에서 시민들 조종하고 있어요!"|http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0001165881&PAGE_CD=N0000&BLCK_NO=3&CMPT_CD=M0001&NEW_GB=]]
1951년 3월 20일 출생
*문화체육관광부 장관
*대통령 취임준비위원회 부위원장
*한나라당 이명박대통령선거후보 문화예술정책위 위원장 직무대행
*서울문화재단 대표이사
*중앙대학교 예술대학 교수
*MBC 공채탤런트 6기

[["대한늬우스 중단할 수 있다"|http://news.chosun.com/site/data/html_dir/2009/07/02/2009070201419.html]]

[[취임 1년 유인촌 문화체육관광부 장관|http://article.joins.com/article/article.asp?Total_ID=3587133]]

1941년 12월 19일 출생
*대한민국 대통령
*서울특별시 시장
*현대그룹 대표이사

[[이명박씨의 희한한 소통방법|http://www.hani.co.kr/arti/society/society_general/363589.html]]
[[“어떻게 청문회서 거짓말 하나”|http://news.nate.com/view/20090715n01142]]
[["이명박 대통령, “녹색기술보다 중요한 건 녹색생활”"|http://www.todaykorea.co.kr/news/articleView.html?idxno=78127]]

[[이명박 대통령 英 FT 인터뷰 (2009.03.30)|http://www.edaily.co.kr/News/Economy/NewsRead.asp?sub_cd=HB71&newsid=01620326589628568&clkcode=00203&DirCode=00307&OutLnkChk=Y]]
[[李대통령 "사람 바꾸는게 근원처방 아냐"|http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=100&oid=001&aid=0002783277]]
1935년 11월 29일 영일생
*제 13, 14, 15, 16, 17대 국회의원 역임
*현 제18대 국회의원
*(주)코오롱 대표이사 역임
*코오롱상사(주)대표이사 역임

[[이상득 2선 후퇴 선언, "형보다 나은 아우는 형이 만든다!"|http://blog.naver.com/param25?Redirect=Log&logNo=10048563230]]
[['끝내 단상에 오르지 않은' 이상득|http://www.dailian.co.kr/news/news_view.htm?id=164647&sc=naver&kind=menu_code&keys=1]]

''1. 검색하기''
우측의 검색 기능을 활용하여 찾고 싶은 정치인의 이름을 입력하시면, 쉽게 찾으실 수 있습니다.

''2. 태그''
파란색 글씨들은 외부 링크, 또는 내부의 태그로 작동합니다. 정치인 상호간의 연관관계를 찾고 싶으시다면, 글의 우측에 들어간 태그 부분을 참고하시기 바랍니다.

''3. 좌단 메뉴''
핵심 태그로 묶인 정치인 리스트입니다.
*bad: 나쁜, 바람직하지 않은 판단을 했던 정치인들의 목록입니다.

1944년 10월 2일 함경북도 청진 출생
*제 15, 16, 17, 18대 국회의원
*2008. 7 국회 부의장

[[이윤성 “눈에 보이는 게 없어서…”|http://www.sisain.co.kr/news/articleView.html?idxno=4935]]
[[“투표 종용” 잘못 알아듣고 “투표 종료” 선언 논란불러|http://www.munhwa.com/news/view.html?no=2009072801030823062002]]


1959년 4월 19일 서울 출생

*2008.05 제18대 한나라당 국회의원 
*2006.07~2007.04 한나라당 최고위원 
*2004.07 국회 통일외교통상위원회 위원

[[전여옥 "연예인 막강한 영향력에 자기책임 져야"|http://www.newdaily.co.kr/articles/view/31742]]


*[[경기도 초등학생 무상급식 예산 50% 삭감|http://politician.tiddlyspot.com/#%5B%5B29%20June%202009%5D%5D]] 추진

[["요즘 애들이 굶어? 시민들의 오해입니다 전교조가 뒤에서 시민들 조종하고 있어요!"|http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0001165881&PAGE_CD=N0000&BLCK_NO=3&CMPT_CD=M0001&NEW_GB=]]
1957년 3월 6일 출생

*제18대 한나라당 국회의원
*제17대 대통령 당선자 비서실 보좌역
*한나라당 문화예술대책특별위원회 위원장
*국회 행정자치위원회 위원
*국회 개혁특별위원회 위원
*한나라당 부대변인
*국무총리비서실 공보비서관

[[“시국선언 전교조 징계, 법대로 하면 된다”|http://www.mediatoday.co.kr/news/articleView.html?idxno=80899]]
[["변희재 있어야 균형 잡히는데..."|http://www.viewsnnews.com/article/view.jsp?seq=51675]]
[["이란에 인터넷 들어와 굉장히 혼란 겪고 있어"|http://www.viewsnnews.com/article/view.jsp?seq=51675]]


!공식 사이트
[[정두언 의원 홈페이지|http://www.doodoodoo.co.kr/]]


*경기도교육위원회 교육위원
*전 경기도교육청 파주교육청 교육장

*[[경기도 초등학생 무상급식 예산 50% 삭감|http://politician.tiddlyspot.com/#%5B%5B29%20June%202009%5D%5D]] 추진

[["요즘 애들이 굶어? 시민들의 오해입니다 전교조가 뒤에서 시민들 조종하고 있어요!"|http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0001165881&PAGE_CD=N0000&BLCK_NO=3&CMPT_CD=M0001&NEW_GB=]]
1945년 09월 01일 생

*경기도교육위원회 교육위원
*전 경기도교육청 연천교육청 교육장
*[[경기도 교육위원 조돈창, 교육감에게 막말|http://www-nozzang.seoprise.com/board/view.php?uid=67631&table=seoprise_12]]
*[[경기도 초등학생 무상급식 예산 50% 삭감|http://politician.tiddlyspot.com/#%5B%5B29%20June%202009%5D%5D]] 추진

[[조돈창 경기 연천 교육장 "지역 주민 힘합쳐 '학생 수 늘리기' 최선" "학교별 특색 교육 개발해 함께 나눌 수 있도록 하겠다"|http://kids.hankooki.com/lpage/news/200503/kd2005030914321927700.htm]]
[["요즘 애들이 굶어? 시민들의 오해입니다 전교조가 뒤에서 시민들 조종하고 있어요!"|http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0001165881&PAGE_CD=N0000&BLCK_NO=3&CMPT_CD=M0001&NEW_GB=]]
1959년 1월 7일 출생
*국회 기후변화대책특별위원회 위원
*국회 예산결산특별위원회 위원
*국회 환경노동위원회 위원
*한나라당 국회의원
*황병태 국회의원 보좌관
*대우 중국 기획조사부 부장
*영남대학교행정대학원 행정학 석사

[[돌발영상: 안상수 - 사회적 합의 / 조원진 - 처음 해보는 환경노동위원장|mms://dvod1.ytn.co.kr/special/mov/sudden/2009/200907021409104495_s.wmv]]

[[환노위 조원진 간사|http://news.naver.com/main/read.nhn?mode=LSD&mid=sec&sid1=100&oid=001&aid=0002713959]]
*경기도교육위원회 교육위원
*경기도교육청 수원시교육청 교육장
*전 관악정보산업고등학교 교장

*[[경기도 초등학생 무상급식 예산 50% 삭감|http://politician.tiddlyspot.com/#%5B%5B29%20June%202009%5D%5D]] 기권

[["요즘 애들이 굶어? 시민들의 오해입니다 전교조가 뒤에서 시민들 조종하고 있어요!"|http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0001165881&PAGE_CD=N0000&BLCK_NO=3&CMPT_CD=M0001&NEW_GB=]]
1962년 11월 26일 부산 출생
*1985년 서울대학교 경영학과 졸업
*조선일보 편집국 사회부, 문화부 기자로 활동
*2007.12 ~ 2007.02 제 17대 대통령직 인수위원회 사회교육문화분과 전문위원
*제 17대 대통령직 취임준비위원회 자문위원
*제 18대 한나라당 국회의원
*2008년 불법음원근절 국민운동본부 감사패

[[한나라당 진성호 의원이 NHN에 드리는 사과문|http://nboard.naver.com/nboard/read.php?board_id=nvnews&nid=434]]
[[인기협회장 "진성호 발언 메모 공개할 수도"|http://www.viewsnnews.com/article/view.jsp?code=NAB&sch_key=key&sch_word=진성호&seq=36290]]
[[<PD수첩>"진성호-김용태, 허위사실 만들어 음해"|http://www.viewsnnews.com/article/view.jsp?code=NFC&sch_key=key&sch_word=진성호&seq=36469]]
[['아고리언' 진성호 의원, 호된 신고식|http://www.vop.co.kr/A00000237542.html]]
[[PD수첩으로 본 PD저널리즘 (진성호의원)|http://keywui.chosun.com/contents/102/114/view.keywui?mvSeqnum=119732]]
[[민주당 당명부터 바꾸세요(2009.1)|http://bbs1.agora.media.daum.net/gaia/do/debate/read?bbsId=D101&articleId=2157280]]

* 굿바이 노무현 (2008.12)

!주요 공약
*자립형 사립고와 기숙형사립고의 유치로 중랑구의 교육격차를 줄인다.
*대형 복합문화예술회관과 중랑생태 문화공원 추친으로 중랑의 웰빙지수를 높인다.
*종합병원 유치와 보육시설 확대운영한다.
*중랑구에 산재한 재개발을 가속화시킨다.
*망우복합역사의 조기건립과 상봉직역 대형유통단지 조성으로 동북부 지역의 경제성장 중심지로 만든다.
*북구간선도로의 확장과 경전철의 조기건설로, 편리하고 안전한 교통환경을 조성한다.
*장애인 등 소외계층을 위해 획기적인 정책을 준비한다.

1955년 11월 12일 출생

*제18대 한나라당 국회의원
*제17대 대통령직인수위원회 정무분과위 간사
*육아선진화포럼 회장
*한나라당 원내공보부대표
*제17대 한나라당 국회의원
*여의도연구소 선임연구위원
*한국개발연구원 연구원
*일리노이대학교대학원 사회학 박사

[["위키피디아에 있는 'PD수첩' 비판 글 찾았다"|http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0001166266&PAGE_CD=N0000&BLCK_NO=3&CMPT_CD=M0006&NEW_GB=]]
저 혼자서 내용을 채우는 것이 생각보다 쉽지 않기 때문에, 자발적으로 참여해주실 수 있는 분을 찾고 있습니다.

정치인 DB Wiki는 TiddlyWiki를 기반으로 하고 있습니다.
쉽게 내용을 채우고 수정할 수 있다는 점 덕분에 원하는 정보를 간편하게 입력할 수 있습니다.

논리적인 사고방식으로 정치인에 대한 냉정한 평가를 하실 수 있는 분이라면, 언제든지 참여하실 수 있습니다.
정해진 양식을 바탕으로 간단히 내용을 채우시면 됩니다.

관심 있으신 분들은 isdead+politics at gmail.com 으로 메일을 한통 남겨주시면, 함께 작성할 수 있는 권한을 드릴 생각입니다.
대한민국에 대한 열정이 남은 지성인들의 많은 참여를 바랍니다.
1957년 10월 9일 출생
*서울중앙지방검찰청 검사장
*대검찰청 공안기획관
*대검찰청 검찰연구관
*서울대학교 법학 학사
*경기고등학교 졸업

[[청문회서 첫 낙마 `예비총장' 천성관|http://news.nate.com/view/20090714n18353?mid=n0207]]


*[[경기도 초등학생 무상급식 예산 50% 삭감|http://politician.tiddlyspot.com/#%5B%5B29%20June%202009%5D%5D]] 추진

[["요즘 애들이 굶어? 시민들의 오해입니다 전교조가 뒤에서 시민들 조종하고 있어요!"|http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0001165881&PAGE_CD=N0000&BLCK_NO=3&CMPT_CD=M0001&NEW_GB=]]
*경기도교육위원회 교육위원

*[[경기도 초등학생 무상급식 예산 50% 삭감|http://politician.tiddlyspot.com/#%5B%5B29%20June%202009%5D%5D]] 추진

[["요즘 애들이 굶어? 시민들의 오해입니다 전교조가 뒤에서 시민들 조종하고 있어요!"|http://www.ohmynews.com/NWS_Web/View/at_pg.aspx?CNTN_CD=A0001165881&PAGE_CD=N0000&BLCK_NO=3&CMPT_CD=M0001&NEW_GB=]]