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
DateFormat: [[YYYY年0MM月0DD日 am hh12:0mm]]
shortDateFormat: [[YYYY年0MM月0DD日]]
<!--{{{-->
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler'></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'></span></div>
<!--}}}-->
使用此 TiddlyWiki 的空白範本之前,請先修改以下預設文章:
* SiteTitle 及 SiteSubtitle:網站的標題和副標題,顯示於頁面上方<br />(在儲存變更後,將顯示於瀏覽器視窗的標題列)。
* MainMenu:主選單(通常在頁面左側)。
* DefaultTiddlers:內含一些文章的標題,可於載入TiddlyWiki 後的預設開啟。
請輸入您的大名,作為所建立/ 編輯的文章署名:<<option txtUserName>>
這些設定將暫存於瀏覽器
請簽名<<option txtUserName>>
 (範例:WikiWord)

 <<option chkSaveBackups>> 儲存備份
 <<option chkAutoSave>> 自動儲存
 <<option chkRegExpSearch>> 正規式搜尋
 <<option chkCaseSensitiveSearch>> 區分大小寫搜尋
 <<option chkAnimate>> 使用動畫顯示
----
 [[進階選項|AdvancedOptions]]
<!--{{{-->
<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='storyDisplay'></div>
</div>
<!--}}}-->
[[StyleSheetLocale]]
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

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

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

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

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

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

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

.tiddlerPopupButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::PrimaryPale]]; border: 1px solid [[ColorPalette::PrimaryLight]];}
.tiddlerPopupButton:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
.tiddlerPopupButton:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]];}
.tiddlerPopupButton.highlight {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.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]];}

table {border:2px solid [[ColorPalette::TertiaryDark]];}
th, thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
td, 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:absolute; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:200;}
*[id='messageArea'] {position:fixed !important; z-index:200;}
.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;}

table {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer 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; 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:50; 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 use a logographic writing system and need larger font sizes.
***/

/*{{{*/
body {font-size:0.8em;}
.headerShadow {position:relative; padding:3.5em 0em 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:3.5em 0em 1em 1em; left:0px; top:0px;}

#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:1em;}

.htmlarea .toolbarHA table {border:1px solid ButtonFace; margin:0em 0em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar {display: none ! important;}
#displayArea {margin: 1em 1em 0em 1em;}
/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
noscript {display:none;}
}
/*}}}*/
<!--{{{-->
<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler > fields syncing permalink references jump'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date [[DateFormat::DateFormat]]'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date [[DateFormat::shortDateFormat]]'></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>
<!--}}}-->
使用此 TiddlyWiki 的空白範本之前,請先修改以下預設文章:
* SiteTitle 及 SiteSubtitle:網站的標題和副標題,顯示於頁面上方<br />(在儲存變更後,將顯示於瀏覽器視窗的標題列)。
* MainMenu:主選單(通常在頁面左側)。
* DefaultTiddlers:內含一些文章的標題,可於載入TiddlyWiki 後的預設開啟。
請輸入您的大名,作為所建立/ 編輯的文章署名:<<option txtUserName>>
[[使用說明|GettingStarted]]
[[計畫目標|計畫目標]]
[[計畫實施照片|http://www.wretch.cc/album/album.php?id=hwaitzong&book=2]]
[[計畫內容大綱|計畫內容大綱]]
#[[第一案 <死後取精案>|第一案 <死後取精案>]]
#[[第二案<記者拒絕證言案>|第二案<記者拒絕證言案>]]
#[[第三案<路口監視器案>|第三案<路口監視器案>]]
#[[第四案<職場歧視案>|第四案<職場歧視案>]]
#[[第五案<宗教信仰案>|第五案<宗教信仰案>]]
#[[第六案<立委入獄案>|第六案<立委入獄案>]]
#[[第七案<中正紀念堂案>|第七案<中正紀念堂案>]]
#[[第八案<人獸胚胎研究案>|第八案<人獸胚胎研究案>]]
#[[第九案<樂生療養院案>|第九案<樂生療養院案>]]
#[[第十案<手機基地台案>|第十案<手機基地台案>]]
#[[第十一案<北市里長案>|第十一案<北市里長案>]]
#[[第十二案<NCC違憲案>|第十二案<NCC違憲案>]]
#[[第十三案<國務機要費案>|第十三案<國務機要費案>]]
#[[第十四案<蘇建和重審案>|第十四案<蘇建和重審案>]]
[[憲法上幾個重要的主題|憲法上幾個重要的主題]]

<div id='header'>
<div id='titleLine'>
<span id='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span id='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='sidebar'>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div><div id="licensePanel">
<a rel="license" href="http://shared.snapgrid.com/gtd_tiddlywiki.html#RevisionHistory" target="_new">GTDTW Version <span macro="version"></span></a>
<a rel="license" href="http://www.tiddlywiki.com" target="_new">
TiddlyWiki is published by Jeremy Ruston at Osmosoft under a BSD open source license</a>
<a rel="license" href="http://snapgrid.com" target="_new">GTD TiddlyWiki is a modification by Nathan Bowers at Snapgrid under the same license terms.</a>
<a rel="license" href="http://davidco.com" target="_new">"Getting Things Done" is &#169; David Allen at Davidco. Davidco has no affiliation with TiddlyWiki or GTD TiddlyWiki.</a></div></div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
執行期程: 96年 8 月至 97 年 3 月(8個月)
執行單位:中興大學財經法律學系
憲法時事導引教學計畫
/***
!GTD Style
http://tiddlystyles.com/#theme:GTD

!Generic rules /%==================================================================== %/
***/
/*{{{*/
body {
 background: #464646 url('http://shared.snapgrid.com/images/tiddlywiki/bodygradient.png') repeat-x top fixed;
 color: #000;
 font: .82em/1.25em "Bitstream Vera Sans", Verdana, Helvetica, Arial, sans-serif;
/*"Lucida Sans Unicode", "Lucida Grande","Trebuchet MS", */
}
/*}}}*/
/***
!Header rules /%====================================================================== %/
***/
/*{{{*/
#contentWrapper
{
 margin: 0 auto;
width: 59em;
position: relative;
}

#header
{
 color: #fff;
 padding: 1.5em 1em .6em 0;
}

#siteTitle {

 font-size: 2.3em;
 margin: 0;
}

#siteSubtitle {
 font-size: 1em;
 padding-left: .8em;;
}

#titleLine{
 background: transparent;
 padding: 0;
}

#titleLine a {
 color: #cf6;
}

#titleLine a:hover {
 background: transparent;
}
/*}}}*/
/***
!Sidebar rules /%====================================================================== %/
***/
/*{{{*/
#sidebar{
 left: 0;
width: 18em;
 margin: .9em .9em 0 0;
 color: #000;
 background: transparent;
}
/*}}}*/
/***
!Main menu rules /%=================================================================== %/
***/
/*{{{*/
#mainMenu{
 position: static;
 width: auto;

 background: #600;
 border-right: 3px solid #500;
padding: 0;
 text-align: left;
 font-size: 1em;
}

#mainMenu h1{
 padding: 5px;
 margin: 0;
 font-size: 1em;
 font-weight: bold;
 background: transparent;
 color: #fff;
}

#mainMenu ul{
 padding: 0;
 margin: 0;
 list-style: none;
}

#mainMenu h1 a,
#mainMenu li a,
#mainMenu li a.button{
 display: block;
 padding: 0 5px 0 10px;
border: 0;
 border-bottom: 1px solid #500;
 border-top: 1px solid #900;
margin: 0;
}

#mainMenu a,
#mainMenu a.button{
 height: 22px;
height: 1.83em;
 line-height: 22px;
 color: #fff;
 background: #700;
margin-left: 1em;
}

#mainMenu a:hover,
#mainMenu a.button:hover {
 background: #b00;
 color: #fff;
}
/*}}}*/
/***
!Sidebar options rules /%============================================================ %/
***/
/*{{{*/
#sidebarOptions {
 background: #eeb;
 border-right: 3px solid #bb8;
 color: #B4C675;
 padding: .5em 0;
}

#sidebarOptions a {
 color: #700;
 margin: .2em .8em;
 padding: 0;
 border: 0;
}

#sidebarOptions a:hover, #sidebarOptions a:active {
 color: #fff;
 background: #700;
 border: 0;
}

#sidebarOptions input{
 margin: 2px 10px;
 border: 1px inset #333;
padding: 0;
}

#sidebarOptions .sliderPanel {
 background: #fff;
 color: #000;
 padding: 5px 10px;
 font-size: .9em;
}

#sidebarOptions .sliderPanel a{
 font-weight: normal;
 margin: 0;
}

#sidebarOptions .sliderPanel a:link,#sidebarOptions .sliderPanel a:visited {
 color: #700;
}

#sidebarOptions .sliderPanel a:hover,#sidebarOptions .sliderPanel a:active {
 color: #fff;
 background: #700;
}
/*}}}*/
/***
!Sidebar tabs rules /%===================================================================== %/
***/
/*{{{*/
#sidebarTabs {
 background: transparent;
 border-right: 3px solid #740;
 border-bottom: 3px solid #520;
 border: 0;
 padding: 0;
}

#contentWrapper #sidebarTabs a,
#contentWrapper #displayArea .tabContents a{
 color: #fff;
}

#contentWrapper #sidebarTabs a:hover,
#contentWrapper #displayArea .tabContents a:hover {
 background: #000;
 color: #fff;
}

#contentWrapper #sidebarTabs a:active,
#contentWrapper #displayArea .tabContents a:active{
 color: #000;
}



#contentWrapper .tabSelected {
 background: #960;
}

#contentWrapper .tabUnselected{
 background: #660;
}

#contentWrapper #sidebar .tabset{
 background: #eeb;
 border-right: 3px solid #bb8;
 padding: 0 0 0 .75em;
}

#contentWrapper .tabContents{
font-size: .95em;
background: #960;
border:0;
 border-right: 3px solid #740;
 border-bottom: 3px solid #520;
 padding: .75em;
}

#contentWrapper .tabContents{
 width: auto;
}

#contentWrapper #sidebarTabs .tabContents .tabset,
#contentWrapper .tabContents .tabset{
 border: 0;
 padding: 0;
 background: transparent;
}

#contentWrapper .tabContents .tabSelected,
#contentWrapper .tabContents .tabContents {
 background: #700;
 border: 0;
}

#contentWrapper .tabContents .tabUnselected {
 background: #440;
}

#contentWrapper .tabset a {
 color: #fff;
 padding: .2em .7em;
 margin: 0 .17em 0 0;
 height: 2em;
position: static;
}

#contentWrapper .tabset a:hover {
 background: #000;
 color: #fff;
}

#contentWrapper .tabset a:active {
 color: #000;
}

#contentWrapper .tabContents ul{
 margin: 0;
 padding: 0;
 list-style: none;
}

#contentWrapper .tabContents .tabContents ul{
 color: #eeb;
}

.tabContents ul a,
.tabContents ul .button{
 color: #fff;
 display: block;
 padding: .1em 0 .1em .7em;
 background: transparent;
 border: 0;
}

.tabContents ul a:hover {
 color: #fff;
 background: #000;
}
/*}}}*/
/***
!License panel rules /%==================================================================== %/
***/
/*{{{*/
#licensePanel {
 padding: 0px 1em;
 font-size: .9em;
}

#licensePanel a {
 color: #960;
 display: block;
 margin-top: .9em;
}

#licensePanel a:hover {
 color: #fff;
 background: transparent;
}
/*}}}*/
/***
!Popup rules /%================================================================= %/
***/
/*{{{*/
.popup {
 font-size: .8em;
 padding: 0em;
 background: #333;
 border: 1px solid #000;
}

.popup hr {
 margin: 1px 0 0 0;
 visibility: hidden;
}

.popup li.disabled {
 color: #666;
}

.popup li a,
.popup li a:visited{
 color: #000;
 border: .1em outset #cf6;
 background: #cf6;
}

.popup li a:hover {
border: .1em outset #cf6;
 background: #ef9;
 color: #000;
}
/*}}}*/
/***
!Message area rules /%================================================================= %/
***/
/*{{{*/
#messageArea{
 font-size: .9em;
 padding: .4em;
 background: #FFE72F;
 border-right: .25em solid #da1;
 border-bottom: .25em solid #a80;

position: fixed;
 top: 10px;
 right: 10px;
 color: #000;
}

#contentWrapper #messageArea a{
 color: #00e;
 text-decoration: none;
}

#contentWrapper #messageArea a:hover{
 color: #00e;
 text-decoration: underline;
 background: transparent;
}

#contentWrapper #messageArea .messageToolbar a.button{
 border: 1px solid #da1;
}

#contentWrapper #messageArea .messageToolbar a.button:hover{
 color: #00e;
 text-decoration: none;
 border: 1px solid #000;
 background: #fff;
}



/*}}}*/
/***
!Tiddler display rules /%================================================================== %/
***/
/*{{{*/
#displayArea {
 width: 39.75em;
 margin: 0 0 0 17em;
}

.tiddler {
 margin: 0 0 .9em 0;
 padding: 0 1em;
 border-right: .25em solid #aaa;
 border-bottom: .25em solid #555;
 background: #fff;
}

.title {
 font-size: 1.5em;
 font-weight: bold;
 color: #900;
}

.toolbar {
 font-size: .8em;
 padding: .5em 0;
}

.toolbar .button{
 padding: .1em .3em;
 color: #000;

 border: .1em outset #cf6;
 background: #cf6;
margin: .1em;
}

.toolbar .button:hover {
 background: #ef9;
 color: #000;
}

.toolbar .button:active {
 background: #ff0;
}

/*}}}*/
/***
!Viewer rules /% ------------------------------------------------------------------------------------------ %/
***/
/*{{{*/
.viewer {
 line-height: 1.4em;
 font-size: 1em;
}

.viewer a:link, .viewer a:visited {
 color: #15b;
}

.viewer a:hover {
 color: #fff;
 background: #000;
}

.viewer .button{
 background: transparent;
 border-top: 1px solid #eee;
 border-left: 1px solid #eee;
 border-bottom: 1px solid #000;
 border-right: 1px solid #000;
}

.viewer .button:hover{
 background: #eee;
 color: #000;
}

.viewer .button:active{
 background: #ccc;
 border-bottom: 1px solid #eee;
 border-right: 1px solid #eee;
 border-top: 1px solid #111;
 border-left: 1px solid #111;
}


.viewer blockquote {
 border-left: 3px solid #777;
 margin: .3em;
 padding: .3em;
}

.viewer pre{
 background: #fefefe;
 border: 1px solid #f1f1f1;
}

.viewer pre, .viewer code{
 color: #000;
}

.viewer ul {
 padding-left: 30px;
}

.viewer ol {
 padding-left: 30px;
}
ul{
list-style-type: asquare;
}
ol{ 
 list-style-type: decimal;
}

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

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

.viewer ul, .viewer ol, .viewer p {
 margin: .0;
}

.viewer li {
 margin: .2em 0;
}

h1,h2,h3,h4,h5,h6 {
 color: #000;
 font-weight: bold;
 background: #eee;
 padding: 2px 10px;
 margin: 5px 0;
}

.viewer h1 {font-size: 1.3em;}
.viewer h2 {font-size: 1.2em;}
.viewer h3 {font-size: 1.1em;}
.viewer h4 {font-size: 1em;}
.viewer h5 { font-size: .9em;}
.viewer h6 { font-size: .8em;}

.viewer table {
 border: 2px solid #303030;
 font-size: 11px;
 margin: 10px 0;
}

.viewer th, .viewer thead td{
 color: #000;
 background: #eee;
 border: 1px solid #aaa;
 padding: 0 3px;
}

.viewer td {
 border: 1px solid #aaa;
 padding: 0 3px;
}

.viewer caption {
 padding: 3px;
}

.viewer hr {
 border: none;
 border-top: dotted 1px #777;
 height: 1px;
 color: #777;
 margin: 7px 0;
}

.viewer
{
 margin: .5em 0 0 0;
 padding: .5em 0;
 border-top: 1px solid #ccc;
}

.highlight {
 color: #000;
 background: #ffe72f;
}
/*}}}*/
/***
!Editor rules /% ----------------------------------------------------------------------------------------- %/
***/
/*{{{*/
.editor {
 font-size: .8em;
 color: #402C74;
 padding: .3em 0;
}

.editor input, .editor textarea {
 font: 1.1em/130% "Andale Mono", "Monaco", "Lucida Console", "Courier New", monospace;
 margin: 0;
 border: 1px inset #333;
 padding: 2px 0;
}

.editor textarea {
 height: 42em;
 width: 100%;
}

input:focus, textarea:focus
{
 background: #ffe;
 border: 1px solid #000;
}
.footer
{
 padding: .5em 0;
 margin: .5em 0;
 border-top: 1px solid #ddd;
 color: #555;
 text-align: center; 
}
/*}}}*/
/***
!IE Display hacks /% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~%/
***/
/*{{{*/
body{
 _text-align: center;
}

#contentWrapper
{
/* _width: 770px; CSS UNDERSCORE HACK FOR PROPER WIN/IE DISPLAY */
 _text-align: left; /* CSS UNDERSCORE HACK FOR PROPER WIN/IE DISPLAY */ 
}

#messageArea{
 _position: absolute;
}
/*}}}*/
version.extensions.WikiBar = {major: 1, minor: 1, revision: 0, date: new Date(2005,11,1)};

//------------------------------------------------------------------------------------------------
// the syntax will be applied on the current word
// params: editor, [[param1],[param2],...]
//------------------------------------------------------------------------------------------------
apl_wikibar_formatByWord = function(editor, params){

  clearMessage();
  
  try{
  
    if(!editor) return;
    
    repText = processSyntaxParams(this.syntax, params);
    if(!repText)  return;
      	
  	var st = editor.scrollTop;
  	var ss = editor.selectionStart;
  	var se = editor.selectionEnd;
  	
//  	displayMessage(ss + ',' + se);
  	
		var frontText= '';
		var selText  = '';
		var endText  = '';
		var fullText = editor.value;
		
		if(se>ss && ss>=0){   // has selection
  	  frontText  = fullText.substring(0, ss);	// text before selection
  	  selText	   = fullText.substring(ss,se);
  	  endText    = fullText.substring(se, fullText.length);	// text behind selection
		}
		else if(ss==0 && (se==0 || se == fullText.length) ){  // no selection, cursor in begin
      endText    = fullText;	// text behind selection
		}
		else if(se==ss && ss>0){  // no selection, cursor in text
	    frontText  = fullText.substring(0, ss);	// text before selection
	    endText    = fullText.substring(se, fullText.length);	// text behind selection

		  //select a word
		  if( fullText.charAt(ss-1).match(/\W/gi) || fullText.charAt(ss).match(/\W/gi) ){ 
		    ;
		  }
		  else{ // cursor in text

        // find the lastest non-word position of frontText
        var m = frontText.match(/\W/gi);
        if(m){
          ss = frontText.lastIndexOf(m[m.length-1])+1;
        }
        else{ // not found
          ss = 0;          
        }
        
        
    	  // find the first non-word position of endText
        m = endText.match(/\W/gi);
        if(m){
          se += endText.indexOf(m[0]);
        }
        else{ // not found
          se = fullText.length;
        }

    	  // re-positioning
//    	  displayMessage(ss + ',' + se);
        frontText = fullText.substring(0, ss);	// text before selection
    	  endText   = fullText.substring(se, fullText.length);	// text behind selection
    	  selText   = fullText.substring(ss,se);
		    
		  }
		}
  	
  	if(selText.length>0)
  		repText = repText.replace('user_text', selText);
  		
		if(repText.indexOf('user_text')>=0 && this.hint)
			repText = repText.replace('user_text', this.hint);			  		
  		
  	editor.value = frontText + repText + endText;
  	
  	// re-positioning
  	editor.selectionStart = ss;
  	editor.selectionEnd   = ss + repText.length;
  	editor.scrollTop      = st;
  	
  	editor.focus();
  
  }catch(ex){
    if(ex.description)
      alert('apl_wikibar_formatByWord(): '+ex.description);
    else
      displayMessage('apl_wikibar_formatByWord(): '+ex);
  }
  		
}

// params may be null, string or array
function processSyntaxParams(syntaxStr, params)
{
  try{
  
    var rx=null;
    var totalParams=null;
    // replace parameter: %1,%2,...
    if(params!=null){
      if(typeof(params)=="object"){  // array
        for(i=0; i<params.length; i++){
          if(params[i]){
            rx = "(\\[%"+(i+1)+"\\])" + "|" + "(%"+(i+1)+")";
            syntaxStr = syntaxStr.replace(new RegExp(rx,"g"), params[i]);
          }
        }
        totalParams = params.join(' ').trim();
      }
      else{ // string
        totalParams = params.trim();
        rx = /(\[%1{1}\])|(%1{1})/g;
        syntaxStr = syntaxStr.replace(rx, totalParams);
      }    
    }
    
    
    // replace parameter: %N
    if(totalParams)
      syntaxStr = syntaxStr.replace(new RegExp('%N{1}',"g"), totalParams);
        
    // remove optional parameters
    rx=/\[%(([1-9]{1,}[0-9]{0,})|(N{1}))\]/g;
    syntaxStr = syntaxStr.replace(rx, '');
    
    // check if replaced ok
    rx=/%(([1-9]{1,}[0-9]{0,})|(N{1}))/g;
    if( syntaxStr.match(rx) ){
      throw "Not enough parameters! " + syntaxStr;
    }
    
    return syntaxStr;
    
  } catch(ex){
    if(ex.description)
      displayMessage('processSyntaxParams(): '+ex.description);
    else
      displayMessage('processSyntaxParams(): '+ex);
      
    return null;
  }
}

//------------------------------------------------------------------------------------------------
// common format function
//------------------------------------------------------------------------------------------------
apl_wikibar_format = function(editor, params){

  clearMessage();
  
  try{
  
    if(!editor) return;
    
    repText = processSyntaxParams(this.syntax, params);
    if(!repText)  return;
  	
  	var st = editor.scrollTop;
  	var ss = editor.selectionStart;
  	var se = editor.selectionEnd;
  	
//  	displayMessage(ss + ',' + se);
  	
		var frontText= '';
		var endText  = '';
		var fullText = editor.value;
		
		if(se>ss && ss>=0){   // has selection
  	  frontText  = fullText.substring(0, ss);	// text before selection
  	  endText    = fullText.substring(se, fullText.length);	// text behind selection
		}
		else if(ss==0 && (se==0 || se == fullText.length) ){  // no selection, cursor in begin
      endText    = fullText;	// text behind selection
		}
		else if(se==ss && ss>0){  // no selection, cursor in text
	    frontText  = fullText.substring(0, ss);	// text before selection
	    endText    = fullText.substring(se, fullText.length);	// text behind selection
		}
		
		if(repText.indexOf('user_text')>=0 && this.hint)
			repText = repText.replace('user_text', this.hint);			  		
  	
  	editor.value = frontText + repText + endText;
  	
  	// re-positioning
  	editor.selectionStart = ss;
  	editor.selectionEnd   = ss + repText.length;
  	editor.scrollTop      = st;
  	
  	editor.focus();
  
  }catch(ex){
    if(ex.description)
      alert('apl_wikibar_formatByCursor(): '+ex.description);
    else
      displayMessage('apl_wikibar_formatByCursor(): '+ex);
  }
  		
}


//------------------------------------------------------------------------------------------------
// if selected text, replace it
// else insert it
//------------------------------------------------------------------------------------------------
apl_wikibar_formatByCursor = function(editor, params){

  clearMessage();
  
  try{
  
    if(!editor) return;
    
    repText = processSyntaxParams(this.syntax, params);
    if(!repText)  return;
  	
  	var st = editor.scrollTop;
  	var ss = editor.selectionStart;
  	var se = editor.selectionEnd;
  	
//  	displayMessage(ss + ',' + se);
  	
		var frontText= '';
		var endText  = '';
		var fullText = editor.value;
		
		if(se>ss && ss>=0){   // has selection
  	  frontText  = fullText.substring(0, ss);	// text before selection
  	  endText    = fullText.substring(se, fullText.length);	// text behind selection
		}
		else if(ss==0 && (se==0 || se == fullText.length) ){  // no selection, cursor in begin
      endText    = fullText;	// text behind selection
		}
		else if(se==ss && ss>0){  // no selection, cursor in text
	    frontText  = fullText.substring(0, ss);	// text before selection
	    endText    = fullText.substring(se, fullText.length);	// text behind selection
		}
		
		if(repText.indexOf('user_text')>=0 && this.hint)
			repText = repText.replace('user_text', this.hint);			  		
  	
  	editor.value = frontText + repText + endText;
  	
  	// re-positioning
  	editor.selectionStart = ss;
  	editor.selectionEnd   = ss + repText.length;
  	editor.scrollTop      = st;
  	
  	editor.focus();
  
  }catch(ex){
    if(ex.description)
      alert('apl_wikibar_formatByCursor(): '+ex.description);
    else
      displayMessage('apl_wikibar_formatByCursor(): '+ex);
  }
  		
}

//------------------------------------------------------------------------------------------------
// the syntax will be applied on the current line
//------------------------------------------------------------------------------------------------
apl_wikibar_formatByLine = function(editor, params)
{

  clearMessage();
  
  try{
  
    if(!editor) return;
    
    repText = processSyntaxParams(this.syntax, params);
    if(!repText)  return;  	
    
    
  	var st = editor.scrollTop;
  	var ss = editor.selectionStart;
  	var se = editor.selectionEnd;
  	
//  	displayMessage(ss + ',' + se);
  	
		var frontText= '';
		var selText  = '';
		var endText  = '';
		var fullText = editor.value;
		
		if(se>ss && ss>=0){   // has selection
			if(this.byBlock){
		    frontText  = fullText.substring(0, ss);	// text before selection
		    selText		 = fullText.substring(ss,se);	// selection text
		    endText    = fullText.substring(se, fullText.length);	// text behind selection
			}
			else{
		  	se = ss;
			}
//		  displayMessage('has selection ' + ss + ',' + se);
		}
		
    if(ss==0 && (se==0 || se == fullText.length) ){  // no selection, cursor in begin
      var m=fullText.match(/(\n|\r)/g);   // position of line-break
      if(m)
        se = fullText.indexOf(m[0]);
      else
        se = fullText.length;

//      displayMessage('no selection, cursor in begin: ' + ss + ',' + se);        
      selText    = fullText.substring(0, se); 
      endText    = fullText.substring(se, fullText.length);	// text behind selection  
		}
		else if(se==ss && ss>0){  // no selection text, cursor in text
	    frontText  = fullText.substring(0, ss);	// text before selection
	    endText    = fullText.substring(se, fullText.length);	// text behind selection
	    
      // find the last position of line-break in frontText
      var m = frontText.match(/(\n|\r)/g);  // position of line-break
      if(m){
        ss = frontText.lastIndexOf(m[m.length-1])+1;
      }
      else{ // not found
        ss = 0;          
      }
      
  	  // find the first position of line-break in endText
      m = endText.match(/(\n|\r)/g);  // position of line-break
      if(m){
        se += endText.indexOf(m[0]);
      }
      else{ // not found
        se = fullText.length;
      }

  	  // re-positioning
//  	  displayMessage('no selection text, cursor in text: ' + ss + ',' + se);
      frontText = fullText.substring(0, ss);	// text before selection
  	  selText   = fullText.substring(ss,se);
  	  endText   = fullText.substring(se, fullText.length);	// text behind selection
		}
  	
  	if(selText.length>0)
  		repText = repText.replace('user_text', selText);
  		
		if(repText.indexOf('user_text')>=0 && this.hint)
			repText = repText.replace('user_text', this.hint);			  	
			
		if(this.byBlock){		    
	    // add extra line-breaks
	    if( (frontText.charAt(frontText.length-1)!='\n') && ss!=0 )
	    	repText = '\n' + repText;
	    if( (endText.charAt(0)!='\n') || se==fullText.length)
	    	repText += '\n';
		}
  		
  	editor.value = frontText + repText + endText;
  	
  	// re-positioning
  	editor.selectionStart = ss;
  	editor.selectionEnd   = ss + repText.length;
  	editor.scrollTop      = st;
  	
  	editor.focus();
  
  }catch(ex){
    if(ex.description)
      alert('apl_wikibar_formatByLine(): '+ex.description);
    else
      displayMessage('apl_wikibar_formatByLine(): '+ex);
  }
  		
}

//------------------------------------------------------------------------------------------------
// the syntax will be applied on the table cell(if exist)
//------------------------------------------------------------------------------------------------
apl_wikibar_formatByTableCell = function(editor, params){

  clearMessage();
  
  try{
  
    if(!editor) return;
    
    repText = processSyntaxParams(this.syntax, params);
    if(!repText)  return;
      	
  	var st = editor.scrollTop;
  	var ss = editor.selectionStart;
  	var se = editor.selectionEnd;
  	
//  	displayMessage(ss + ',' + se);
  	
		var frontText= '';
		var selText  = '';
		var endText  = '';
		var fullText = editor.value;
		
		if(ss==0 || ss==fullText.length)
			throw "not valid cell!";
			
		se=ss;			
		
//		displayMessage(ss);
    frontText  = fullText.substring(0, ss);	// text before selection
    endText    = fullText.substring(se, fullText.length);	// text behind selection
    
    // find the last '|' position in frontText
    i=frontText.lastIndexOf("\n");
    j=frontText.lastIndexOf("|");
    if(i>j || j<0)
    	//throw "frontText not valid cell! " + i + "," + j;
    	throw "not valid cell!";
		
		ss = j+1;
					    	
	  // find the first '|' position in endText
    i=endText.indexOf("\n");
    j=endText.indexOf("|");
    if(i<j || j<0)
    	//throw "endText not valid cell! " + i + "," + j;
    	throw "not valid cell!";
	  
	  se += j;
	  
	  // re-positioning
//  	displayMessage(ss + ',' + se);
    frontText = fullText.substring(0, ss-1);	// text before selection
	  selText   = fullText.substring(ss,se);
	  endText   = fullText.substring(se+1, fullText.length);	// text behind selection

		if(this.name.substring(0,5)=="align"){
			selText = selText.trim();
			if(	selText==">" || selText=="~" || 
					selText.substring(0,8)=="bgcolor(" 
				)	// bypass special table code
				return;
		}
  	
  	if(selText.length>0)
  		repText = repText.replace('user_text', selText);
  		
		if(repText.indexOf('user_text')>=0 && this.hint)
			repText = repText.replace('user_text', this.hint);			  		
  		
  	editor.value = frontText + repText + endText;
  	
  	// re-positioning
  	editor.selectionStart = ss;
  	editor.selectionEnd   = ss + repText.length - 2;
  	editor.scrollTop      = st;
  	
  	editor.focus();
  
  }catch(ex){
    if(ex.description)
      alert('apl_wikibar_formatByTableCell(): '+ex.description);
    else
      displayMessage('apl_wikibar_formatByTableCell(): '+ex);
  }
  		
}


//------------------------------------------------------------------------------------------------
// param: editor, button_pressed
//------------------------------------------------------------------------------------------------
apl_wikibar_getColorCode = function(editor, theTarget)
{
  if(!apl_wikibar_colorPicker)  return;
  
  apl_wikibar_colorPicker.targetSyntax = this;
  apl_wikibar_colorPicker.targetEditor = editor;
  apl_wikibar_colorPicker.moveColorMap(theTarget);  
}

apl_wikibar_getLinkUrl = function(editor)
{
  var url= prompt('Please enter the link target', this.param);
  if (url && url.trim()!='')
    this.format(editor, url);
}

apl_wikibar_getTableRowCol = function(editor)
{
  var rc= prompt('Please enter rows x cols of the table', '2 x 3');
  if (!rc || rc.trim()=='') return;
  
  var arr = rc.toUpperCase().split('X');
  if(arr.length != 2)   return;
  
  for(i=0; i<arr.length; i++)
    if(isNaN(arr[i].trim()))  return;
  
  rows = parseInt(arr[0].trim());
  cols = parseInt(arr[1].trim());
  
  txtTable='';
  for(r=0; r<rows; r++){
    for(c=0; c<=cols; c++)
      if(c==0)
        txtTable += '|';
      else
        txtTable += ' |';
      
    txtTable += '\n';
  }

  if(txtTable.trim()!='')      
    this.format(editor, txtTable);
  
}

apl_wikibar_getMacroParam = function(editor)
{
	try{
	  var p = prompt('Please enter the parameters of ' + this.name + ' macro:' + 
	                 '\nSyntax: ' + this.syntax +
	                 '\n\nNote: '+
	                 '\n%1,%2,... - parameter needed'+ 
	                 '\n[%1] - optional parameter'+
	                 '\n%N   - more than one parameter(1~n)'+
	                 '\n[%N] - any number of parameters(0~n)'+
	                 '\n\nPS:'+
	                 '\n Parameters should be seperated with space character'+
	                 '\n Use "" to wrap the parameter that includes space character, ex: "hello world"'+
	                 '\n Input the word(null) for the optional parameter ignored',
	                 (this.param?this.param:'') );
	  
    if(p==null)  return;

    p=p.readMacroParams();
    for(i=0;i<p.length;i++){
      var s=p[i].trim();
      if(s.indexOf(' ')>0)
        p[i]="'"+s+"'";
      if(s.toLowerCase()=="null")
        p[i]=null;
    }
    
    this.format(editor, p);
      
	}catch(ex){
    if(ex.description)
      alert('apl_wikibar_getMacroParam(): '+ex.description);
    else
      displayMessage('apl_wikibar_getMacroParam(): '+ex);
  }		
}



//------------------------------------------------------------------------------------------------
// hijack createTiddlerEditor() to create WikiBar
//------------------------------------------------------------------------------------------------
window.apl_wikibar_createTiddlerEditor = window.createTiddlerEditor;
window.createTiddlerEditor = function (title)
{
  // call original function
  apl_wikibar_createTiddlerEditor(title);
    
  // create wiki-bar
  apl_wikibar_createWikibar(title);
}

function apl_wikibar_createWikibar(title){

  try{
  
    // insert wikisyntax toolbar before editorBodyXXX
    var theEditor = document.getElementById("editorWrapper" + title);
    var theBodyBox = document.getElementById("editorBody" + title);
    
    // create Wikibar
//    var theWikibar = createTiddlyElement(theEditor,"div","editorWikibar" + title,"toolbar",null);
    var theWikibar = createTiddlyElement(theEditor,"div","editorWikibar" + title,null,null);

    theEditor.insertBefore(theWikibar,theBodyBox);
    
    // create tool buttons
    
    //---------------
    // single button
    //---------------
    
    // about
    var btn = apl_wikibar_createWikibarButton(theWikibar, "&copy;", "about WikiBarPlugin", apl_wikibar_onClickAbout, title);
    if(btn) btn.id = "apl_wikibar_btn_about";

		// preview
    btn = apl_wikibar_createWikibarButton(theWikibar, "&infin;", "preview the tiddler", apl_wikibar_onClickPreview, title);
    if(btn) btn.id = "apl_wikibar_btn_preview";
    
    // formattings
    for(i=0; i<apl_wikibar_syntaxes.formattings.length; i++){
      var syntaxObj = apl_wikibar_syntaxes.formattings[i];
      syntax_desc = "apl_wikibar_syntaxes.formattings["+i+"]";
      if(syntaxObj.symbol)
      	apl_wikibar_createWikibarButton(theWikibar, syntaxObj.symbol, syntaxObj.tip, apl_wikibar_onClickWikibarButton, title, syntax_desc);
    	else
      	apl_wikibar_createWikibarButton(theWikibar, syntaxObj.name, syntaxObj.tip, apl_wikibar_onClickWikibarButton, title, syntax_desc);
    }
    
    //---------------
    // dropdown menu
    //---------------
    apl_wikibar_createWikibarButton(theWikibar, "color", "Color", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.colors");
    apl_wikibar_createWikibarButton(theWikibar, "link", "Link", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.links");
    apl_wikibar_createWikibarButton(theWikibar, "Hn", "Heading", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.headings");
    apl_wikibar_createWikibarButton(theWikibar, "list", "List", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.lists");
    apl_wikibar_createWikibarButton(theWikibar, "paragraph", "Paragraph format", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.paragraphs");
    apl_wikibar_createWikibarButton(theWikibar, "table", "Table", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.tables");
    apl_wikibar_createWikibarButton(theWikibar, "plugin", "Plugin design", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.plugins");
    apl_wikibar_createWikibarButton(theWikibar, "macro", "Macro", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.macros");
    apl_wikibar_createWikibarButton(theWikibar, "date", "Date format string", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.dates");
    apl_wikibar_createWikibarButton(theWikibar, "html", "HTML", apl_wikibar_onClickWikibarMenu, title, null, "apl_wikibar_syntaxes.htmls");
    
  }catch(ex){
    alert('apl_wikibar_createWikibar(): '+ex.description);
  }
  
}

//------------------------------------------------------------------------------------------------
// create wikibar button
// ps. 
// if single button: syntax_objs=null, syntax_obj needed
// if group button: syntax_objs needed, syntax_obj=null
//------------------------------------------------------------------------------------------------
function apl_wikibar_createWikibarButton(theToolbar, theText, theTooltip, theAction, title, syntax_obj, syntax_objs)
{
  try{
  
    if(!theToolbar)  return null;
    
    // call system function to add a button
    //createTiddlyButton(theParent,theText,theTooltip,theAction,theClass,theId,theAccessKey)
    var theButton = createTiddlyButton(theToolbar, theText, theTooltip, theAction, "button");
    if(!theButton) return null;

//    insertSpacer(theToolbar);
    
    // fix the wikibar overrun bug
  	theToolbar.appendChild( document.createTextNode("\n") );
  	
		theButton.innerHTML = theText;	// html is allowed here, ex: "<b>B</b>"

		// add parameters to theButton, those parameters will be used on onclick event
		// setAttribute() only accepts string variable, object is not allowed!
		// we'll use eval() to convert string to object, refer to apl_wikibar_onClickWikibarButton()
		if(title)
		  theButton.setAttribute("tiddler_title", title);
		  
    if(syntax_objs)
		  theButton.setAttribute("syntax_objs", syntax_objs);

    if(syntax_obj)
		  theButton.setAttribute("syntax_obj", syntax_obj);
		  
  	return theButton;
  	
  }catch(ex){
    alert('apl_wikibar_createWikibarButton(): '+ex.description);
    return null;
  }
  
}

//------------------------------------------------------------------------------------------------
// button(<a>) may have other tags, ex: <a><b>B</b></a>
// when we click the button, the apl_wikibar_onClickWikibarButton event may be received by the childNodes of <a>
// so we try to look up to the button object(<a>), as <a> has the parameters we need
//------------------------------------------------------------------------------------------------
function apl_wikibar_resolveClickButton(obj)
{
  if (obj.id=="tiddlerDisplay")   // search until tiddlerDisplay is reached
    return null;
  
  if(obj.hasAttributes()){
    if(obj.getAttribute("tiddler_title"))
      return obj;
    else
      return apl_wikibar_resolveClickButton(obj.parentNode); // search the parent
  }
  else{
    return apl_wikibar_resolveClickButton(obj.parentNode);  // search the parent
  }
}


function apl_wikibar_switchWikibar(wikibar, visible)
{
  if(!wikibar)  return;
  
  var pv=null;
  // hide other buttons
  for(i=0; i<wikibar.childNodes.length; i++){ 
    try{
      var theButton = wikibar.childNodes[i];

      if(theButton.id == "apl_wikibar_btn_preview") 
        pv=theButton;

      if(theButton.id != "apl_wikibar_btn_about" && theButton.id != "apl_wikibar_btn_preview")
        theButton.style.display = visible ? "": "none";
      
    }catch(ex){
      ;
    }
  }
  
  if(!pv) return;
  
  // update the caption of preview button
  if(visible){
    pv.innerHTML = "&infin;";
    pv.setAttribute("title", "show previewer");
  }
  else{
    pv.innerHTML = "&larr;";
    pv.setAttribute("title", "back to editor");
  }
  
}

function apl_wikibar_displayAboutBox(theAbout, theTarget)
{
  try{

    if(!theAbout || !theTarget) return;
    
  	var rootLeft = findPosX(theTarget);
	  var rootTop = findPosY(theTarget);
	  var rootHeight = theTarget.offsetHeight;
	  
	  var popupLeft = rootLeft;
	  var popupTop = rootTop + rootHeight;
	  
	  var popupWidth = theAbout.offsetWidth;
	  
	  var winWidth = findWindowWidth();
	  if(popupLeft + popupWidth > winWidth)
		  popupLeft = winWidth - popupWidth;
  		
	  theAbout.style.left = popupLeft + "px";
	  theAbout.style.top = popupTop + "px";
	  theAbout.style.display = "block";
	  
//    window.scrollTo(0,y);   // some bugs here
    
  }catch(ex){
    alert('apl_wikibar_displayAboutBox(): '+ex.description);
  }
}

function apl_wikibar_onClickAbout(e)
{
	if (!e) var e = window.event;
	var theTarget = resolveTarget(e);
	if(!theTarget) return(false);
	
  try{
  
    // check if already exist
    var theAbout = document.getElementById("aboutWikibar");
    
    if(theAbout){  // switch theAbout
    	relateTo = theAbout.getAttribute("relateTo");
    	if(relateTo == theTarget.parentNode.id){
	    	theAbout.style.display = (theAbout.style.display=="block")? "none" : "block";
    	}
    	else{
    		theAbout.setAttribute("relateTo", theTarget.parentNode.id);
    		apl_wikibar_displayAboutBox(theAbout, theTarget);
    	}
    }
    else{	// create theAbout box
      theAbout = document.createElement("div");
      theAbout.setAttribute("id", "aboutWikibar");
      theAbout.setAttribute("style", "position:absolute; z-index:99; display:block; background-color:white; border:medium solid red;");
      theAbout.setAttribute("class", "viewer");
      ver = version.extensions.WikiBar.major + "." + version.extensions.WikiBar.minor + "." + version.extensions.WikiBar.revision;
      theAbout.innerHTML = 	'<center>WikiBarPlugin Version '+ver+'<br></center><hr><ul>'+
      											'<li>Author: <a href="mailto:arphenlin@gmail.com">Arphen Lin</a></li>'+
      											'<li>Web: <a href="http://aiddlywiki.sourceforge.net/" target="new">AiddlyWiki</a></li>'+
      											'</ul>';
			theAbout.onclick = function(){
														document.getElementById("aboutWikibar").style.display="none";
													};											
      theAbout.setAttribute("relateTo", theTarget.parentNode.id);
      
      document.body.appendChild(theAbout);
      
      apl_wikibar_displayAboutBox(theAbout, theTarget);
    }
    
  }catch(ex){
  	alert('apl_wikibar_onClickAbout(): '+ ex.description);
  }		

	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
	return(false);	
}

function apl_wikibar_onClickPreview(e)
{
	if (!e) var e = window.event;
	var theTarget = resolveTarget(e);
	if(!theTarget) return(false);
	
//	displayMessage(theTarget);
	
  try{

    var wikibar = theTarget.parentNode;
    if(!wikibar)  return;
    
    title = wikibar.id.substring(13, wikibar.id.length); // "editorWikibar"+title
    var editorWrapper = document.getElementById( "editorWrapper"+title);
  
  	var editor= document.getElementById("editorBody"+title);

    // check if already exist
    var previewer = document.getElementById("previewer"+title);
    if(previewer){  // switch previewer
      if(previewer.style.display=="block"){
        previewer.style.display = "none";
        editor.style.display = "block";
      }
      else{
        previewer.innerHTML = ''; // clear the contents
        wikify(editor.value, previewer, null, null);  // refresh the contents
        previewer.style.display = "block";
        editor.style.display = "none";
      }
    }
    else{	// create previewer
      previewer = document.createElement("div");
      previewer.setAttribute("id", "previewer"+title);
      previewer.setAttribute("style", "overflow:auto; display:block; border:solid 1px;");
      previewer.style.height = (editor.offsetHeight) + "px";
      previewer.setAttribute("class", "viewer");
      editorWrapper.insertBefore(previewer, editor);
      
      wikify(editor.value, previewer, null, null);
      
      // hide editor
      editor.style.display = "none";
    }
    
    apl_wikibar_switchWikibar(wikibar, (editor.style.display=="block") );
    
  }catch(ex){
  	alert('apl_wikibar_onClickPreview(): '+ ex.description);
  }		

	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
	return(false);
  
}


//------------------------------------------------------------------------------------------------
// onclick event handler
//------------------------------------------------------------------------------------------------
function apl_wikibar_onClickWikibarButton(e)
{
	if (!e) var e = window.event;
	var theTarget = apl_wikibar_resolveClickButton(resolveTarget(e));
	if(!theTarget) return(false);
	
  try{
  
  	title = theTarget.getAttribute("tiddler_title");
  	
  	var editor = document.getElementById("editorBody"+title);
    if(!editor) return;
    
    var syntax = null;
    cmd = "syntax = " + theTarget.getAttribute("syntax_obj");
  	eval(cmd);
  	if(!syntax) return;
  	
  	if(syntax.needParam)
  	  syntax.needParam(editor, theTarget);
  	else
  	  syntax.format(editor);
  		
  }catch(ex){
  	alert('apl_wikibar_onClickWikibarButton(): '+ ex.description);
  }		

	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
	return(false);

}


//------------------------------------------------------------------------------------------------
// create drop-down menu
//------------------------------------------------------------------------------------------------
function apl_wikibar_onClickWikibarMenu(e)
{
	if(!e) var e = window.event;
	var theTarget = resolveTarget(e);   // = <span>, the object we click on
	
  try{  		
	
	  title = theTarget.getAttribute("tiddler_title");
	  
    // retrieve the string and eval() it 
    my_syntaxes = theTarget.getAttribute("syntax_objs");
    var items=null;
    cmd = "items = "+my_syntaxes;
    eval(cmd);
  	if(!items) return;

  	var popup = createTiddlerPopup(this);
  	if(!popup) return;

  	for (i=0; i<items.length; i++){
		  var theItem = createTiddlyButton(
                        createTiddlyElement(popup, "li"),
                        items[i].name,
                        items[i].tip,
                        apl_wikibar_onClickWikibarButton
                        );

  		theItem.setAttribute("syntax_obj", my_syntaxes + "["+i+"]");
  		theItem.setAttribute("tiddler_title", title);
		}

  	scrollToTiddlerPopup(popup,false);
  	
  }catch(ex){
    alert('apl_wikibar_onClickWikibarMenu(): '+ex.description);
  }	
  
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
	return(false);
  
}


//------------------------------------------------------------------------------------------------
// apl_wikibar_ColorPicker class
//------------------------------------------------------------------------------------------------
function apl_wikibar_ColorPicker(theAction){
  
  // 16x16 colors
  this.colorTable = [  
    "#FFFFFF","#DDDDDD","#CCCCCC","#BBBBBB","#AAAAAA","#999999","#666666","#333333","#111111","#000000","#FFCC00","#FF9900","#FF6600","#FF3300","#CC3300","#CC0033",
    "#99CC00","#99DD00","#99EE00","#EE9900","#DD9900","#CC9900","#FFCC33","#FFCC66","#FF9966","#FF6633","#660000","#990000","#CC0000","#FF0000","#FF3366","#FF0033",
    "#CCFF00","#CCFF33","#333300","#666600","#999900","#CCCC00","#FFFF00","#CC9933","#CC6633","#330000","#993333","#CC3333","#FF3333","#CC3366","#FF6699","#FF0066",
    "#99FF00","#CCFF66","#99CC33","#666633","#999933","#CCCC33","#FFFF33","#996600","#993300","#663333","#CC6666","#FF6666","#990033","#CC3399","#FF66CC","#FF0099",
    "#66FF00","#99FF66","#66CC33","#669900","#999966","#CCCC66","#FFFF66","#996633","#663300","#996666","#FF9999","#FF3399","#CC0066","#990066","#FF33CC","#FF00CC",
    "#33FF00","#66FF33","#339900","#66CC00","#99FF33","#CCCC99","#FFFF99","#CC9966","#CC6600","#CC9999","#FF99CC","#CC6699","#993366","#660033","#CC0099","#330033",
    "#00CC00","#33CC00","#336600","#669933","#99CC66","#CCFF99","#FFFFCC","#FFCC99","#FF9933","#FFCCCC","#CC99CC","#996699","#993399","#990099","#663366","#660066",
    "#006600","#33CC33","#66CC66","#00FF00","#33FF33","#66FF66","#99FF99","#CCFFCC","#99CCFF","#FFCCFF","#FF99FF","#FF66FF","#FF33FF","#FF00FF","#CC66CC","#CC33CC",
    "#003300","#336633","#009900","#339933","#669966","#99CC99","#CCFFFF","#3399FF","#6699CC","#CCCCFF","#CC99FF","#9966CC","#663399","#330066","#9900CC","#CC00CC",
    "#00FF33","#00CC33","#006633","#339966","#66CC99","#99FFCC","#99CCCC","#0066CC","#336699","#9999FF","#9999CC","#9933FF","#6600CC","#660099","#CC33FF","#CC00FF",
    "#00FF66","#33FF66","#009933","#00CC66","#33FF99","#99FFFF","#669999","#003366","#003399","#6666FF","#6666CC","#666699","#330099","#9933CC","#CC66FF","#9900FF",
    "#00FF99","#66FF99","#33CC66","#009966","#66FFFF","#66CCCC","#336666","#006699","#3366CC","#3333FF","#3333CC","#333399","#333366","#6633CC","#9966FF","#6600FF",
    "#00FFCC","#66FFCC","#33CC99","#33FFFF","#33CCCC","#339999","#003333","#3399CC","#6699FF","#0000FF","#0000CC","#000099","#000066","#000033","#6633FF","#3300FF",
    "#00CC99","#33FFCC","#00FFFF","#00CCCC","#009999","#006666","#33CCFF","#66CCFF","#0099CC","#3366FF","#00CCFF","#0099FF","#0066FF","#0033FF","#0033CC","#3300CC"
  ];

	this.colorMap = null;		// div object

  this.targetSyntax = null;   // the syntax object that called apl_wikibar_ColorPicker
  this.targetEditor = null;   // the editor object that will be applied selected color
  this.theAction = theAction;
  
  this.createColorMap();

}

apl_wikibar_ColorPicker.prototype.showColorMap = function() 
{
  if(this.colorMap){
    this.colorMap.style.display = "block";
  }
}

apl_wikibar_ColorPicker.prototype.hideColorMap = function() 
{
  if(this.colorMap){
    this.colorMap.style.display = "none";
  }
}


apl_wikibar_ColorPicker.prototype.moveColorMap = function(theTarget)
{
  try{

    var cm = this.colorMap; 
    if(!cm) return;
    
  	var rootLeft = findPosX(theTarget);
	  var rootTop = findPosY(theTarget);
	  var rootHeight = theTarget.offsetHeight;
	  
	  var popupLeft = rootLeft;
	  var popupTop = rootTop + rootHeight;
	  
	  var popupWidth = cm.offsetWidth;
	  
	  var winWidth = findWindowWidth();
	  if(popupLeft + popupWidth > winWidth)
		  popupLeft = winWidth - popupWidth;
  		
	  cm.style.left = popupLeft + "px";
	  cm.style.top = popupTop + "px";
	  cm.style.display = "block";
	  
//    window.scrollTo(0,y);   // some bugs here
    
  }catch(ex){
    alert('moveColorMap(): '+ex.description);
  }
}

apl_wikibar_ColorPicker.prototype.createColorMap = function() 
{
	try{	

    if(!this.theAction) return;
        
		if(this.colorMap)	return;
	
    // create div
		this.colorMap = document.createElement("div");
		this.colorMap.setAttribute("id","colorMap");
		this.colorMap.setAttribute("style","display:none; position:absolute; left:0px; top:0px; z-index:99; margin:0px; padding:0px; cursor:crosshair;");
		document.body.appendChild(this.colorMap);

    // create table
    var theTable = document.createElement("table");
    theTable.setAttribute("cellspacing", 0);
    theTable.setAttribute("cellpadding", 0);
    theTable.setAttribute("style", "border:solid 1px black;");
    this.colorMap.appendChild(theTable);
    
    // create tr/td
    cellsPerRow = 16;
    var theTR=null;
    for(i=0; i<this.colorTable.length; i++){
      // create new row
      if((i%cellsPerRow)==0){  // 16x16
        theTR = document.createElement("tr");
        theTable.appendChild(theTR);
      }

      var theTD = document.createElement("td");
      if(this.colorTable[i].trim() == '')
        theTD.setAttribute("bgcolor", "white");
      else
        theTD.setAttribute("bgcolor", this.colorTable[i]);
      theTD.setAttribute("style", "border:solid 1px black;");
      theTD.onclick = this.theAction;
      theTD.innerHTML = '<span style="font-size:8px">&nbsp;&nbsp;&nbsp;</span>';
      theTR.appendChild(theTD);
    }
    
    // bottom row
    theTR = document.createElement("tr");
		theTable.appendChild(theTR);
		var theTD = document.createElement("td");
		theTD.setAttribute("bgcolor", "white");
		theTD.setAttribute("style", "border:solid 1px black;");
		theTD.setAttribute("colspan",cellsPerRow);
    theTD.onclick = function(){	if(apl_wikibar_colorPicker)	apl_wikibar_colorPicker.hideColorMap(); };
		theTD.innerHTML = '<center><span style="font-size:10px;">close</span></center>';
    theTR.appendChild(theTD);
		
	}catch(ex){
		alert('createColorMap: '+ex.description);
	}
	
}

//------------------------------------------------------------------------------------------------
// do on select a color
//------------------------------------------------------------------------------------------------
function apl_wikibar_onSelectColor(e) 
{
  
	if (!e) var e = window.event;
	var theTarget = resolveTarget(e);   //<span>
	if(!theTarget) return(false);

  try{

  	if(!apl_wikibar_colorPicker)  return;
  	
    apl_wikibar_colorPicker.hideColorMap();

    // get the color  	
    theTD = theTarget.parentNode;
    color = theTD.getAttribute("bgcolor");
    if(!color)  return;
    
    if(apl_wikibar_colorPicker.targetSyntax && apl_wikibar_colorPicker.targetEditor)
      apl_wikibar_colorPicker.targetSyntax.format(apl_wikibar_colorPicker.targetEditor, color);
      
  }catch(ex){
    alert('apl_wikibar_onSelectColor: '+ex.description);
  }     
  
	e.cancelBubble = true;
	if (e.stopPropagation) e.stopPropagation();
	return(false);
   
}


//------------------------------------------------------------------------------------------------
// global variables: color picker
//------------------------------------------------------------------------------------------------
var apl_wikibar_colorPicker = new apl_wikibar_ColorPicker(apl_wikibar_onSelectColor);

//------------------------------------------------------------------------------------------------
// global variables: syntax object
// 
// parameter syntax: %1,%2,... - parameter needed, [%1] - optional parameter
//                   %N        - more than one parameter(1~n)
//                   [%N]      - any parameter(0~n)
//------------------------------------------------------------------------------------------------
var apl_wikibar_syntaxes = {
  formattings: [
		{
			name: 	"ignore",
			tip:    "ignore wiki word",
			symbol: "~",
			syntax: "~user_text",
			hint:   "wiki_word",
			format:	apl_wikibar_formatByWord
		},
		{
			name: 	"bold",
			tip:    "bolder text",
			symbol: "<strong>B</strong>",
			syntax: "''user_text''",
			hint:		"bold_text",
			format: apl_wikibar_formatByWord
		},
		{
			name: 	"italic",
			tip:    "italic text",
			symbol: "<em>I</em>",
			syntax: "//user_text//",
			hint:		"italic_text",
			format: apl_wikibar_formatByWord
		},
		{
			name: 	"underline",
			tip:    "underline text",
			symbol: "<u>U</u>",
			syntax: "__user_text__",
			hint:		"underline_text",
			format: apl_wikibar_formatByWord
		},
		{
			name: 	"strike",
			tip:    "strikethrough text",
			symbol: "<strike>S</strike>",
			syntax: "==user_text==",
			hint:		"strikethrough_text",
			format: apl_wikibar_formatByWord
		},
		{
			name: 	"sup",
			tip:    "superscript text",
			symbol: "X<sup>2</sup>",
			syntax: "^^user_text^^",
			hint:		"superscript_text",
			format: apl_wikibar_formatByWord
		},
		{
			name: 	"sub",
			tip:    "subscript text",
			symbol: "X<sub>2</sub>",
			syntax: "~~user_text~~",
			hint:		"subscript_text",
			format: apl_wikibar_formatByWord
		},
		{
			name: 	"comment",
			tip:    "comment text",
			symbol: "/%",
			syntax: "/%user_text%/",
			hint:		"comment_text",
			format: apl_wikibar_formatByWord
		},
		{
			name: 	"monospaced",
			tip:    "monospaced text",
			symbol: "<code>mono</code>",
			syntax: "{{{user_text}}}",
			hint:		"monospaced_text",
			format: apl_wikibar_formatByWord
		},
		{
			name: 	"line",
			tip:    "horizontal line",
			symbol: "&mdash;",
			syntax: "\n----\n",
			format: apl_wikibar_formatByCursor
		},
		{
			name: 	"crlf",
			tip:    "line break",
			symbol: "&para;",
			syntax: "\n",
			format: apl_wikibar_formatByCursor
		}
  ],  // formattings
  colors: [
		{
			name: 	"highlight",
			tip:    "highlight text",
			syntax: "@@user_text@@",
			hint:		"highlight_text",
			format: apl_wikibar_formatByWord
		},
		{
			name: 	"color",
			tip:    "text color",
			hint:		"your_text",
			syntax: "@@color(%1):user_text@@",
			format: apl_wikibar_formatByWord,
			needParam: apl_wikibar_getColorCode
		},
		{
			name: 	"bgcolor",
			tip:    "background color",
			hint:		"your_text",
			syntax: "@@bgcolor(%1):user_text@@",
			format: apl_wikibar_formatByWord,
			needParam: apl_wikibar_getColorCode
		},
    {
      name:   "colorcode",
      tip:    "insert colorcode",
      syntax: "%1",
      format: apl_wikibar_formatByCursor,
      needParam: apl_wikibar_getColorCode
    }		
  ],  // colors
  lists:[
		{
			name: 	"bullet",
			tip:    "bullet point",
			syntax: "*user_text",
			hint:		"bullet_text",
			format: apl_wikibar_formatByLine
		},
		{
			name: 	"numbered",
			tip:    "numbered list",
			syntax: "#user_text",
			hint:		"numbered_text",
			format: apl_wikibar_formatByLine
		}
  ],  // lists
  headings:[
		{
			name: 	"Heading 1",
			tip:    "Heading 1",
			syntax: "!user_text",
			hint:		"heading_1",
			format: apl_wikibar_formatByLine
		},
		{
			name: 	"Heading 2",
			tip:    "Heading 2",
			syntax: "!!user_text",
			hint:		"heading_2",
			format: apl_wikibar_formatByLine
		},
		{
			name: 	"Heading 3",
			tip:    "Heading 3",
			syntax: "!!!user_text",
			hint:		"heading_3",
			format: apl_wikibar_formatByLine
		},
		{
			name: 	"Heading 4",
			tip:    "Heading 4",
			syntax: "!!!!user_text",
			hint:		"heading_4",
			format: apl_wikibar_formatByLine
		},
		{
			name: 	"Heading 5",
			tip:    "Heading 5",
			syntax: "!!!!!user_text",
			hint:		"heading_5",
			format: apl_wikibar_formatByLine
		}
  ],  // headings
  paragraphs:[
		{
			name: 	"comment by line",
			tip:    "line comment",
			syntax: "/%user_text%/",
			hint:		"comment_text",
			format: apl_wikibar_formatByLine
		},
		{
			name: 	"comment by block",
			tip:    "block comment",
			syntax: "/%\nuser_text\n%/",
			hint:		"comment_text",
			byBlock: true,			
			format: apl_wikibar_formatByLine
		},
		{
			name: 	"monospaced by line",
			tip:    "line monospaced",
			syntax: "{{{\nuser_text\n}}}",
			hint:		"monospaced_text",
			format: apl_wikibar_formatByLine
		},
		{
			name: 	"monospaced by block",
			tip:    "block monospaced",
			syntax: "{{{\nuser_text\n}}}",
			hint:		"monospaced_text",
			byBlock: true,
			format: apl_wikibar_formatByLine
		},
		{
			name: 	"quote by line",
			tip:    "line quote",
			syntax: ">user_text",
			hint:		"quote_text",
			format: apl_wikibar_formatByLine
		},
		{
			name: 	"quote by block",
			tip:    "block quote",
			syntax: "<<<\nuser_text\n<<<",
			hint:		"quote_text",
			byBlock: true,			
			format: apl_wikibar_formatByLine
		}
  ],  // paragraphs
  links:[
		{
			name: 	"wiki",
			tip:    "wiki link",
			syntax: "[[user_text]]",
			hint:		"wiki_word",
			format: apl_wikibar_formatByWord
		},
		{
			name: 	"pretty",
			tip:    "pretty link",
			syntax: "[[user_text|%1]]", 
			hint:		"pretty_word",
			format: apl_wikibar_formatByWord,
			needParam: apl_wikibar_getLinkUrl,
			param:	"PrettyLink Target"
		},
		{
			name: 	"url",
			tip:    "url link",
			syntax: "[[user_text|%1]]", 
			hint:		"your_text",
			format: apl_wikibar_formatByWord,
			needParam: apl_wikibar_getLinkUrl,
			param:	"http://..."
		},
		{
			name: 	"image",
			tip:    "image link",
			syntax: "[img[user_text|%1]]", 
			hint:		"alt_text",
			format: apl_wikibar_formatByWord,
			needParam: apl_wikibar_getLinkUrl,
			param:	"image/icon.jpg"
		}
  ],  // links
  plugins:[
		{
			name: 	"codes area",
			tip:    "block monospaced for plugin",
			syntax: "//{{{\nuser_text\n//}}}",
			hint:		"monospaced_plugin_text",
			byBlock: true,
			format: apl_wikibar_formatByLine
		},  
		{
			name: 	"comment by line",
			tip:    "line comment",
			syntax: "//user_text",
			hint:		"plugin_comment",
			format: apl_wikibar_formatByLine
		},
		{
			name: 	"comment by block",
			tip:    "block comment",
			syntax: "/***\nuser_text\n***/",
			hint:		"plugin_comment",
			byBlock: true,
			format: apl_wikibar_formatByLine
		}
  ],  // plugins
  tables:[
		{
			name: 	"table",
			tip:    "create a new table",
			syntax: "\n%1\n",
			format: apl_wikibar_formatByWord,
			needParam: apl_wikibar_getTableRowCol
		},
		{
			name: 	"table header",
			tip:    "table header text",
			syntax: "|user_text|c",
			hint:		"table_header",
			format: apl_wikibar_formatByWord
		},		
		{
			name: 	"cell",
			tip:    "create a tabel cell",
			syntax: "|user_text|",
			hint:		"your_text",
			format: apl_wikibar_formatByWord
		},
		{
			name: 	"column header",
			tip:    "create a column header cell",
			syntax: "|!user_text|",
			hint:		"column_header",
			format: apl_wikibar_formatByWord
		},
		{
			name: 	"cell bgcolor",
			tip:    "cell bgcolor",
			syntax: "|bgcolor(%1):user_text|",
			hint:		"your_text",
			format: apl_wikibar_formatByTableCell,
			needParam: apl_wikibar_getColorCode
		},
		{
			name: 	"align left",
			tip:    "add a tabel cell",
			syntax: "|user_text|",
			hint:		"your_text",
			format: apl_wikibar_formatByTableCell
		},
		{
			name: 	"align center",
			tip:    "add a tabel cell",
			syntax: "| user_text |",
			hint:		"your_text",
			format: apl_wikibar_formatByTableCell
		},
		{
			name: 	"align right",
			tip:    "add a tabel cell",
			syntax: "| user_text|",
			hint:		"your_text",
			format: apl_wikibar_formatByTableCell
		}
  ],  // tables
  macros:[
		{
			name: 	"allTags",
			tip:    "allTags",
			syntax: "<<allTags>>",
			format: apl_wikibar_formatByWord
		},
		{
			name: 	"closeAll",
			tip:    "closeAll",
			syntax: "<<closeAll>>",
			format: apl_wikibar_formatByWord
		},
		{
			name: 	"gradient",
			tip:    "gradient",
			syntax: "<<gradient vert #ffffff %1>>user_text>>",
			format: apl_wikibar_formatByWord,
      needParam: apl_wikibar_getColorCode
		},
		{
			name: 	"list",
			tip:    "list",
			syntax: "<<list>>",
			format: apl_wikibar_formatByWord
		},
		{
			name: 	"list missing",
			tip:    "list missing",
			syntax: "<<list missing>>",
			format: apl_wikibar_formatByWord
		},
		{
			name: 	"list orphans",
			tip:    "list orphans",
			syntax: "<<list orphans>>",
			format: apl_wikibar_formatByWord
		},		
		{
			name: 	"newJournal",
			tip:    "newJournal",
			syntax: "<<newJournal>>",
			format: apl_wikibar_formatByWord
		},		
		{
			name: 	"newTiddler",
			tip:    "newTiddler",
			syntax: "<<newTiddler>>",
			format: apl_wikibar_formatByWord
		},		
		{
			name: 	"option",
			tip:    "option",
			syntax: "<<option %1>>[%2]\n",
			format: apl_wikibar_formatByWord,
			needParam: apl_wikibar_getMacroParam,
			param: 	'chkOpenInNewWindow "Open link in new window"'
		},		
		{
			name: 	"permaview",
			tip:    "permaview",
			syntax: "<<permaview>>",
			format: apl_wikibar_formatByWord
		},		
		{
			name: 	"saveChanges",
			tip:    "saveChanges",
			syntax: "<<saveChanges>>",
			format: apl_wikibar_formatByWord
		},		
		{
			name: 	"search",
			tip:    "search",
			syntax: "<<search>>",
			format: apl_wikibar_formatByWord
		},		
		{
			name: 	"slider",
			tip:    "slider",
			syntax: "<<slider %1 %2 %3>>",
			format: apl_wikibar_formatByWord,
			needParam: apl_wikibar_getMacroParam,
			param: 	"sliderID sliderTiddler sliderLabel"
		},		
		{
			name: 	"sparkline",
			tip:    "sparkline",
			syntax: "<<sparkline %N>>", 
			format: apl_wikibar_formatByWord,
			needParam: apl_wikibar_getMacroParam,
			param:	"number_list(ex: 100 123 ...)"
		},		
		{
			name: 	"tabs",
			tip:    "tabs",
			syntax: "<<tabs [%N]>>",
			format: apl_wikibar_formatByWord,
			needParam: apl_wikibar_getMacroParam,
			param: 	"indentifier tabLabel tabName Tiddler"
		},		
		{
			name: 	"tag",
			tip:    "tag",
			syntax: "<<tag %1>>",
			format: apl_wikibar_formatByWord,
			needParam: apl_wikibar_getMacroParam,
			param: 	"tagName(ex: systemConfig)"
		},		
		{
			name: 	"tiddler",
			tip:    "tiddler",
			syntax: "<<tiddler %1>>",
			format: apl_wikibar_formatByWord,
			needParam: apl_wikibar_getMacroParam,
			param: 	"Tiddler"
		},		
		{
			name: 	"timeline",
			tip:    "timeline",
			syntax: "<<timeline>>",
			format: apl_wikibar_formatByWord
		},		
		{
			name: 	"today",
			tip:    "today",
			syntax: "<<today [%1]>>", 
			format: apl_wikibar_formatByWord,
			needParam: apl_wikibar_getMacroParam,
			param:  '"YYYY/MM/DD hh:mm:ss"'
		},		
		{
			name: 	"version",
			tip:    "version",
			syntax: "<<version>>",
			format: apl_wikibar_formatByWord
		}
  ], // macros
  dates:[
    {
      name:   "YYYY",
      tip:    "full year",
      syntax: "YYYY",
      format: apl_wikibar_formatByCursor
    },
    {
      name:   "YY",
      tip:    "2-digit year",
      syntax: "YY",
      format: apl_wikibar_formatByCursor
    },
    {
      name:   "MMM",
      tip:    "month name",
      syntax: "MMM",
      format: apl_wikibar_formatByCursor
    },
    {
      name:   "MM",
      tip:    "month",
      syntax: "MM",
      format: apl_wikibar_formatByCursor
    },
    {
      name:   "0MM",
      tip:    "zero-leading month",
      syntax: "0MM",
      format: apl_wikibar_formatByCursor
    },
    {
      name:   "DDD",
      tip:    "week day",
      syntax: "DDD",
      format: apl_wikibar_formatByCursor
    },
    {
      name:   "DD",
      tip:    "day",
      syntax: "DD",
      format: apl_wikibar_formatByCursor
    },
    {
      name:   "0DD",
      tip:    "zero-leading day",
      syntax: "0DD",
      format: apl_wikibar_formatByCursor
    },
    {
      name:   "hh",
      tip:    "hour",
      syntax: "hh",
      format: apl_wikibar_formatByCursor
    },
    {
      name:   "mm",
      tip:    "minute",
      syntax: "mm",
      format: apl_wikibar_formatByCursor
    },
    {
      name:   "ss",
      tip:    "second",
      syntax: "ss",
      format: apl_wikibar_formatByCursor
    }    
  ], // dates
  htmls:[
		{
			name: 	"<html>",
			tip:    "html tag",
			syntax: "<html>\nuser_text\n</html>",
			hint:		"html_content",
			byBlock: true,
			format: apl_wikibar_formatByLine
		}
  ]	// htmls
};
    * 法律保留原則
    * 國家與人民的關係
    * 國家主權
    * 基本權第三人效力
    * 基本人權與人性尊嚴
    * 新聞自由與言論保障
    * 隱私權、肖像權與公共利益維護
    * 職業自由與工作權保障、三階說理論
    * 宗教信仰自由與私法關係
    * 立法委員職務與單一選區兩票制
    * 國家機關組織的改造
    * 國會議員免責權
    * 平等原則與平等權
    * 比例原則
    * 單一選區兩票制
一、事實背景
    因公殉職的軍官孫吉祥未婚妻欲為其留後,故積極奔走死後取精事宜,成功取得其精液後,因受限於我國人工生殖法規定,無法在本國以人工生殖方式受孕。此一事件當時引起國人高度的關注,但較少從憲法的觀點予以討論。

二、憲法爭點
1.人性尊嚴:身體的自主權係人性尊嚴之核心,在未經死者同意前提下,誰有權力支配死者之精子?死者本身?配偶?長期同居人?未婚妻?直系血親?
2.未出生者的是否亦有尊嚴的問題?

三、憲法上相關理論的闡釋
1. 人性尊嚴意義及內涵
2. 人性尊嚴與其他基本權的衝突與衡量

四、活動方式
    利用分組討論作報告之方式,使學生更融入問題思考。

五、延伸問題
1. 死刑犯留後是否應予許可?
2. 複製人
3. 人獸胚胎的許可及禁止
4. 複製人的許可

六、參考文獻
1.李惠宗,死後取精-基本權與人性尊嚴的衝突?94.11
2.吳煜宗,死後取精生子的民法難題,月旦法學教室,第40期12-13 頁
3.曾淑瑜,從人體精子、卵子之法律地位論死後取精之刑法可罰性萬國法律,第 145期15-22 頁
4.吳介尊,我要你的精子!-「死後取精」倫理法律相關問題初探,萬國法律 第 145 期30-35 頁
5.戴東雄,孫連長死後取精留後與人工生殖法草案,萬國法律第145期2-14頁


[[辯論實況-錄音檔下載|recording/1004.mp3]]
[[老師講評-錄音檔下載|recording/1004-1.mp3]]

[[憲法分組報告 第一組-死後取精|downloads/case1-final.doc]]

第七案<中正紀念堂易名為台灣民主紀念館案>
一、事實背景
    2007年4月19日教育部為準備中正紀念堂更名為「台灣民主紀念館」之揭牌儀式活動,於本堂南北兩側壁面懸掛大型活動布幔,臺北市政府文化局為了因應外牆拆除之爭議,依文化資產保存法第17條規定,將其列為暫定古蹟後,台北市政府以違反文化資產保存法第三十條規定為由,依同法第九十七條第一項第四款處以新台幣十萬元罰鍰,隔日再連續處以新台幣二十萬元罰鍰。其後臺北市政府又依上開法條規定,主動強制拆除該布幔。
二、憲法爭點
    1.  中正紀念堂易名為台灣民主紀念館案
三、憲法上相關理論的闡釋
		1. 國家機關之設置的實質正當性
		2. 法律保留原則的理論
四、活動方式: 
提供投影片介紹臺灣古蹟及其建築特色,接著講述中正紀念堂之歷史由來,再由學生分組討論本案例問題。
五、延伸問題
		1. 精省的過程
		2. 廢止台灣省議會的過程
六、參考文獻
		(一)月旦法學教室
1.陳愛娥,行政組織法:第五講 行政法人化與行政效能
          - 「行政法人」作為政府組織改造的另一種選擇?,12期  
2. 李惠宗,一塊布幔的爭執
—談行政組織上的形式合法性與實質正當性,57期  
3. 林昱梅,古蹟指定與地方自治,57期  

(二)月旦法學雜誌
1. 黃啟禎,凍結省自治選舉後中央與地方權限之劃分,24期  
2. 蔡茂寅,地方自治立法權的界限,30期  
3. 蔡茂寅,當前地方自治重大問題及其因應之道的探討,61期 
4. 劉文仕,我國憲政體制下的地方制度改造芻議,93期  
5. 王泰升;薛化元,台灣法律事件百選,100期 
6. 蔡宗珍,地方法規之概念與體系化,132期  
7. 蔡宗珍,地方法規之形成與效力之研究,133期  
8. 蔡宗珍,地方自治監督與自治法規監督,134期  
(三)台灣本土法學雜誌
1. 陳愛娥,古蹟指定、「召開古蹟指定公聽會」之程序要求的法律性質,66期  
2. 林騰鷂,國立中正紀念堂之改名與暫定古蹟
-依法行政原則與對物的一般處分- ,96期 
(四)國立臺灣大學法學論叢
         黃錦堂,由「精省」看九七憲改 ,27卷2期  
(五)博碩士論文
1. 陳雅慧,台北大學,古蹟指定相關法制問題之研究,88年 
2. 謝碩駿,政治大學,地方法規定位與監督之研究,91年  
(六)大法官會議解釋
         釋字第259、498、553號解釋

[[憲法分組報告 第七組-中正紀念堂易名為台灣民主紀念館案|downloads/case7-final.doc]]
#事實背景
   各縣市普遍均在主要路口裝設監視器,而臺北市更透過頻寬系統,將視訊傳遞至各派出所及每個網路家庭。其設立監視器之主要目的也是為了預防嚇阻犯罪,且蒐證較為容易,亦可提供民眾交通路況之最新訊息,但卻也同時對一般民眾的隱私權造成威脅,甚至變成選舉攻防的武器。

#憲法爭點
##隱私權:以德國為例,路口監視器係為查看車輛是否有繳交費用,而非作用於犯罪偵,然在台灣此監視器似乎已習慣於偵查犯罪之用,然並未立法明示其作用,且監視錄影不挑人、不挑時,皆全部錄影存證,此恐侵害人民之隱私。
##國家得否以犯罪偵查或交通違規取締為由,裝設道路監視器?其裝設有無限制?
##監視錄影帶保存及調閱權限

#憲法上相關理論的闡釋
##隱私權保護理論
##公益理論

#活動方式
##利用10分鐘拍攝學生進入課堂之生活畫面,使學生體會無意間被拍攝之感覺,於課堂,請學生當場刪除該錄影內容,接續探討本案例隱私權與犯罪偵防之相關問題。
##可能的話,參觀警察局的道路監視器終端監控中心或各鄰里監視器監看辦公室。

#延伸問題
##道路監視器錄影內容作為車輛使用牌照稅處罰之證據
##道路監視器錄影內容作為車輛違反道路交通規則之證據
##道路監視器錄影內容作為通姦罪之證據能力

#參考文獻
##李震山,警察機關設置監視錄影器的法制問題-人權保障與治安維護的動態平衡,臺灣本土法學雜誌,第86期,95.09,頁114-126。
##吳信賢,捺指紋、電信監聽與錄影監視器,台南律師通訊第119期,94.7.1。
##程明修,國家透過公共場所的監視器對人民基本權利的干預,法學講座第三期,91.3.1。
##許義寶,論公共場所監視器設置之法律程序(上),法令月刊第57卷第2期,14-24頁。
##許義寶,論公共場所監視器設置之法律程序(下),法令月刊第57卷第3期,31-40頁。
##廖緯民,以個資法作為公設街頭監視系統的法律規範基礎,台灣本土法學,87期,2006/10,頁122-144。
##李震山等,「街頭監視系統法律規範基礎」,台灣本土法學,87期,2006/10,頁145-154。



[[辯論實況-錄音檔下載|recording/1018.mp3]]
[[老師講評-錄音檔下載|recording/1018-1.mp3]]

[[憲法分組報告 第三組-路口監視器案|downloads/case3-final.doc]]
第九案<樂生療養院事件案>

#事實背景:
    院齡最早可以追溯及日本昭和五年(民國十九年)的樂生療養院,雖然被暫定為古蹟,卻又是捷運新莊線的機廠預定用地,拆遷問題爭議已久。捷運局根據行政院在2006年五月十五日的指示,依據台北縣政府提出的方案,也就是保留百分之四十一點六的樂生療養院,進行工程。新莊線捷運工程總經費一千七百億元,現已接近完工階段,機廠的建置、捷運通車和樂生院民的搬遷密切相關。捷運的通車則關係著新莊、三重、泰山、林口等地近一百萬台北縣民生活之便利與商圈之發展。
#憲法爭點:
##樂生院民於捷運新莊線建置下,被迫搬遷。政府的政策是否侵犯憲法第十條欲保障人民之居住遷徙自由權利?
##憲法第十五條保障人民之生存權,其內涵包括了生命權及生活權。申言之,即生命之尊重與生活之存續。此案,身罹痲瘋之院民被迫搬遷,政府政策是否侵害其生存權?若不使捷運通車,是否侵害其他台北縣民生存權或幸福追求權?
##古蹟涉及憲法第166條有關教育文化之基本國策。基本國策的性質為何,它與行政權下政策的作成,關聯性為何?
##憲法第23條比例原則的適用(增進公共利益)。
#憲法上相關理論的闡釋
##公益文化資產保存的衝突
##人民文化權的實現與國家義務
#活動方式
    分配學生作業,由學生蒐集樂生療養院之歷史及建築特色,並分析台北市捷運新莊線之相關資料,並與學生討論現代化建設與古蹟的衝突問題,並切入憲法議題。
#延伸問題
##台中地區私宅作為古蹟的問題(摘星山莊、筱雲山莊)
#參考文獻
李建良,公益理論之研究,中興大學法研所碩士論文,1987/6。

[[辯論實況-錄音檔下載|recording/20080103.mp3]]

[[憲法分組報告 第九組-樂生療養院事件案|downloads/case9-final.doc]]
一、事實背景
     台北第院在審理股市勁永禿鷹案時,二度傳喚聯合報記者高年億,但其堅持不肯透露禿鷹案報導的消息來源,故合議庭認為其無正當理由而依刑事訴訟法第193條,處以新台幣三萬元罰鍰。

二、憲法爭點:基本權衝突如何解決?
1.工作權:記者若在法庭上作證,透露消息來源,則將來不會再有人提供資料,記者之工作權是否受到影響?記者可否以工作權之保障為由拒絕證言?
2.言論自由權:言論自由係憲法所賦予的權利,積極性與消極性皆屬保護範圍,記者不欲證言,是否屬於言論自由保障之範圍?又是否會因為職業身份而使言論自由範圍有所增減?
3.拒絕證言權:刑事訴訟法第182條規定得拒絕證言之業務關係,與民事訴訟法第307條之拒絕證言事由,有何不同之處?又記者之拒絕證言權相較於實現正義、發現真實之公共利益相比,何者為重?何者有優先保護之必要?

三、憲法上相關理論的闡釋
1. 言論自由保護在民主國家中的功能
2. 記者善意查證義務理論及告知義務
3. 記者告知義務與職業倫理衝突的理論

四、活動方式
   採用假法庭活動,進行辯論。

五、延伸問題
     1. 公務員、醫師、律師、會計師之保密義務
     2. 職業倫理的具體化

六、參考文獻
1.吳巡龍,記者有無拒絕證言權,月旦法學教室第52期,26-27頁。
2.陳雅譽,偵查機關之線民身分拒絕證言權(Informer ldentity Privilege)之討論,法務通訊第2325期 3-6 版。
3.王兆鵬,論新聞記者之拒絕證言權,月旦法學雜誌第134期,199-211頁。
4.張明偉,拒絕證言前之陳述與傳聞之例外,全國律師第10卷第3期,79-94頁。


[[辯論實況-錄音檔下載|recording/1011.mp3]]
[[老師講評-錄音檔下載|recording/1011-1.mp3]]


[[憲法分組報告 第二組-記者拒絕證言案|downloads/case2-final.doc]]
第五案<宗教信仰拒絕當兵與受教育案>
#事實背景
   B自幼為「耶和華見證人」基督徒,核心教義為教徒不可服兵役。故B自幼在良心上即拒絕參與任何與軍事有關之活動,於應徵入伍報到時,表示在良心上無法接受軍事訓練,致遭依陸海空軍刑法以抗命罪判處有期徒刑。服刑後再度本於良心拒絕接受軍事訓練,致再度依妨害兵役治罪條例判處有期徒刑。
#憲法爭點
##B得否主張宗教信仰自由,而拒絕服兵役? 
##服兵役受教育之義務,是否得因宗教信仰之關係而免除
#憲法上相關理論的闡釋
#活動方式:由學生以辯論比賽方式探討爭點問題。
#延伸問題
##耶和華教派之教義拒絕輸血
#宗教教義認為不應接受國民教育
#參考文獻
##司法院大法官釋字第490號解釋及不同意見書
##李惠宗,論宗教信仰自由及國家保護義務——評司法院大法官釋字第四九○號解釋,台灣本土法學雜誌,第5期,1999/12,頁39-60。



[[辯論實況-錄音檔下載|recording/1101.mp3]]

[[憲法分組報告 第五組-宗教信仰案|downloads/case5-final.doc]]
#事實背景:
    英國科學家打算培植「人獸胚胎」引發醫學倫理爭議,原本擬全面封殺的英國政府卻出現政策大轉彎,於十七日公布新法草案,同意科學家可以有條件利用混合人類DNA與排除遺傳物質的動物卵子所製造出來的人獸混合胚胎,來培育幹細胞,以便進一步了解並發展阿茲海默症、帕金森氏症、運動神經元病變等絕症新療法。
#憲法爭點:
##基本權利的核心價值人性尊嚴的探尋(法律vs.宗教)。
##針對於胚胎,人性尊嚴與憲法第十五條生存權保障的時點,即從何開始、何時結束。
##可由該項生物技術治療之病患,憲法生存權對之保障。
##為保障病患之生存權,而准許該項技術的實施,有否妨害憲法第二十二條中之社會秩序,又此處社會秩序應作何解釋?
##憲法第二十三條比例原則的適用(增進公共利益)。
#憲法上相關理論的闡釋
##人性尊嚴的圖像
##學術自由及其界限
##國家危險及風險管理的義務
#活動方式
    分配學生作業,請學生蒐集胚胎幹細胞研究之現況及其目的,及阿茲海默症、帕金森氏症、運動神經元病變等病之相關資料。並於課堂中以分組報告方式進行相關憲法議題之討論。
#延伸問題
##國家對基因改造食品的管制權限
##危險與風險的管理
#參考文獻
##李震山,胚胎基因工程之法律涵意-以生命權保障為例,臺灣大學法學論叢,31卷第3期,91.05,頁1-16。
##陳英鈐,人類胚胎幹細胞研究的憲法問題,臺北大學法學論叢,56卷,94.06,頁41-110。

[[辯論實況-錄音檔下載|recording/20071129.mp3]]

[[憲法分組報告 第八組-人獸胚胎研究案|downloads/case8-final.doc]]
第六案<立委入獄薪水照領案>
##事實背景
   立法委員邱毅於民國93年3月31日唆使宣傳車司機撞毀高雄地方法院大門,造成多名員警受傷,被最高法院依首謀聚眾妨礙公務罪,判刑1年2個月。然其因未被褫奪公權,故仍保有立委資格,月薪俸加上問政事務經費仍可領取約三十萬元。
##憲法爭點
#立法委員遭判處有期徒刑是否應保有立委資格?
#立法委員遭判處有期徒刑,得否領取薪俸或其他費用?
##憲法上相關理論的闡釋
#公務員與國家關係之理論
# 
##活動方式
提示相關新聞照片或影片,使同學瞭解案情,並進一步分組討論相關問題。
##延伸問題
#立法委員言論免責權及不逮捕特權
#立法委員之行為分際
##參考文獻
#李人豪,張美慧,立法委員的電視媒體策略與表演行為,廣告學研究第27卷,96年1月,79-104頁。
#李建良,國會議員言論免責權之理論與實務,法令月刊第51卷第10期,172-189頁。


[[憲法分組報告 第六組-立委入獄案|downloads/case6-final.doc]]
第十一案<北市里長延選案>
#事實背景:
    2002年台北市政府以「里鄰調整」為由,延後里長選舉日程。而行政院支持內政部報請撤銷的三項理由,將台北市政府延後辦理下屆里長選舉決定予以撤銷。理由如下:
##台北市政府因為進行里鄰調整作業而延選里長,不符合地方制度法第八十三條所稱因「特殊事故」得延期辦理改選規定。 
##台北市政府進行里鄰調整,並非事實上有不能改選的原因,與大法官釋字第四九九號解釋揭示的國民主權原則及定期改選的民主契約原則不符。 
##依台北市「行政區劃及里鄰編組自治條例」規定,里鄰調整方案尚需經市議會審議通過,則市議會是否通過?何時通過?都難以預料。以此種不確定理由將里長延任,確切期限又難以估計,已經嚴重影響市民選舉權。 
#憲法爭點:
##與釋字499號解釋國大代表自肥案相比較,闡明國民主權原則及定期改選的民主契約原則。亦涉及憲法第十七條保障人民之選舉權。
##憲法第十一章地方制度保障地方自治,究地方自治範圍的狹廣至何處。
##關於本案所做出之釋字553號解釋之探討。地方自治團體處理其自治事項與承中央主管機關之命辦理委辦事項之差異。
#憲法上相關理論的闡釋
##地方自治理論
##中央對地方自治之監督理論
#活動方式
    文獻閱讀、分組報告,辯論。
#延伸問題
##地方垃圾問題的解決
##中央對地方自治團體的人事組織
#參考文獻:同上案



[[憲法分組報告 第十一組-北市里長延選案簡報|downloads/case11-final.ppt]]

[[憲法分組報告 第十一組-北市里長延選案|downloads/case11-final.doc]]
#事實背景:
    2006年6月22日,「台灣紅」公司的負責人李慧芬向國民黨立委爆料,指她的300萬新台幣君悅飯店住宿發票,被她的堂姐李碧君拿去轉交吳淑珍核銷「國務機要費」。6月23日,審計部派員赴總統府查賬,並將疑涉不法相關資料函送台灣高等法院檢察署查緝黑金行動中心調查。負責此案的陳瑞仁檢察官曾經訊問陳水扁、吳淑珍、馬永成等人,要求他們就國務機要費的支出作出說明。並於該年十一月三日將吳淑珍、馬永成等人予以起訴。另起訴書表明陳水扁總統因憲法五十二條刑事豁免權之故,而於任內免於刑事之追訴。
#憲法爭點:
##憲法第五十二條總統刑事豁免權,豁免之刑事範圍、豁免的時點,此項權利可否放棄。
##國務機要費的性質,與釋字391號解釋理由書內的預算定義,有何不同又有何相同?
#憲法上相關理論的闡釋
##總統刑事豁免權的理論及其範圍
##權力分立原則
#活動方式
	簡式奧瑞綱是辯論賽。
#延伸問題
##立法委員免責權之範圍
##其他公職人員免責或豁免的範圍之檢討(國賠法§13)
#參考文獻
##蔡茂寅,國務機要費與特別費之評析,月旦法學142期,96.03,頁136-148。
##黃國昌,美國法上總統之豁免權與秘匿特權,月旦法學140期,96.01頁,5-16。
##許澤天,總統之刑事豁免權與證人特權-德國法啟示,月旦法學,142期,96.03,頁177-202。
##程明修,總統之刑事豁免權,台灣本土法學,87期,2006/10,頁155-159。


[[辯論實況-錄音檔下載|recording/20071227.mp3]]

[[憲法分組報告 第十三組-國務機要費案|downloads/case13-final.doc]]
第十二案<NCC組織法違憲案>
#事實背景
NCC(國家傳播通訊委員會),其成立主要目的係為貫徹黨政軍退出媒體之精神,其組織法規定其成員之選任為政黨提名之方式,是否妥適?NCC法已被宣告違憲,其應如何運作?將來NCC之組織應如何設計?
#憲法爭點
##NCC組織法上地位:其組織係一獨立運作之機關,不受任何機關監督,然其成員由政黨提名,是否能獨立運作?
##NCC權限:NCC權限與行政院新聞局如何區分?
#憲法上相關理論的闡釋
##權力分立原則
##司法權之界限
#活動方式
	文獻閱讀(釋字613號)、分組討論。
#延伸問題
##中央選舉委員會組織法
##獨立機關與非獨立機關的行政組織權
#參考文獻
##陳新民,試論NCC組織法的違憲性問題,臺灣本土法學雜誌,第83期,95.06,頁1-30。
##李震山主持,「釋字第六一三號解釋與NCC違憲」座談會,月旦法學137期,95.10,頁88-103。
##專題研討,解讀釋字第613號解釋,台灣本土法學,87期,2006/10,頁80以下。
##李惠宗,國家通訊傳播委員會組織法違憲性的探討――司法院大法官釋字第613號解釋評釋,台灣本土法學,第86 期,2006/9,頁58-78。



[[憲法分組報告 第十二組-NCC組織法違憲案|downloads/case12-final.doc]]
第十四案<蘇建和等重審案>
#事實背景:
    1991年台北縣汐止鎮發生夫婦命案。檢察官勘驗筆錄上記載證物為廚房菜刀及菜刀上的毛髮,以及血指紋三枚、浴室中毛髮數根。蘇建和等三人被判處死刑。蘇建和等人堅稱清白,全案歷經三次非常上訴,高院歷經兩年多再審,2003年以罪證不足,改判蘇建和等三人無罪。2006年因檢察官提起上訴最高法院撤銷無罪判決,由台灣高等法院再度審理。旅美鑑識專家李昌鈺以證人身分返台作證,推翻過去法醫的認定,並提出18項新發現。
#憲法爭點:
##基於憲法對生命權之保障,死刑是否應該存在?
##對於生命權剝奪之刑事審判程序應如何設計?
#憲法上相關理論的闡釋
##國家對生命權保護義務
##死刑存廢論的憲法基礎
#活動方式:
由學生組成辯論隊伍,辯論死刑是否應該存廢。並介紹蘇建和案之始末。探討憲法生命權之保障及死刑相關議題。
#延伸問題
##國家是否應容許安樂死?
##其他國家立法例的比較 
#參考文獻
##鄭逸哲,現行法架構下「廢除死刑執行」的「實質途徑」,臺灣本土法學雜誌91期,96.02,頁96-124。
##廖福特,生命權與廢除死刑-歐洲理事會觀點之分析,政大法學評論,92期,95.08,頁49-119。


第十案<台中市行動電話基地台管理自治條例案>
#事實背景:
    台中市政府所訂定的「臺中市行動電話基地臺設置管理自治條例」,於2006年間遭國家通訊傳播委員會(NCC )以牴觸電信法第三十二條第二項、第六項及第三十三第二項之規定,依地方制度法第三十條第四項規定函告市府自治條例無效。國家通訊傳播委員會(NCC)認為牴觸電信法部份內容為:明定基地臺新設要件、限制基地臺於建築物屋頂、住宅區及範圍之設置及共用天線之原則等規定。
#憲法爭點:
#3憲法第一百七十二條及地方制度法第三十條法律優位原則之內涵。
#3憲法第十章中央與地方之權限分配,即立法和執行事項之分配。
##憲法第十一章地方制度(第118、121、128條)保障地方自治,究地方自治範圍的狹廣至何處。
#憲法上相關理論的闡釋
##地方自治作為一種制度性保障
##中央與地方分權的理論
#活動方式
請學生於課餘時間注意臺中市有哪些行動電話基地台。並於課堂分析為何縣市政府紛紛訂定行動電話基地臺設置管理自治條例,並問答方式引導學生進入憲法議題。
#延伸問題
##地方自治村里長的選舉爭議
##
#參考文獻
##黃錦堂,地方自治法治化問題之研究,月旦出版社,1995/3。
##蔡茂寅,地方自治之理論與地方制度法,增訂版,學林出版社,2006/4。
##劉文仕,地方立法權,學林出版社,1999/7。


[[憲法分組報告 第十組-台中市行動電話基地台管理自治條例案|downloads/case10-final.doc]]
#事實背景
    各縣市普遍均在主要路口裝設監視器,而臺北市更透過頻寬系統,將視訊傳遞至各派出所及每個網路家庭。其設立監視器之主要目的也是為了預防嚇阻犯罪,且蒐證較為容易,亦可提供民眾交通路況之最新訊息,但卻也同時對一般民眾的隱私權造成威脅,甚至變成選舉攻防的武器。
#憲法爭點
##隱私權:以德國為例,路口監視器係為查看車輛是否有繳交費用,而非作用於犯罪偵查,然在台灣此監視器似乎已習慣於偵查犯罪之用,然並未立法明示其作用,且監視錄影不挑人、不挑時,皆全部錄影存證,此恐侵害人民之隱私。
##國家得否以犯罪偵查或交通違規取締為由,裝設道路監視器?其裝設有無限制?
##監視錄影帶保存及調閱權限
#憲法上相關理論的闡釋
##隱私權保護理論
##公益理論
#活動方式
##利用10分鐘拍攝學生進入課堂之生活畫面,使學生體會無意間被拍攝之感覺,於課堂中,請學生當場刪除該錄影內容,接續探討本案例隱私權與犯罪偵防之相關問題。
##可能的話,參觀警察局的道路監視器終端監控中心或各鄰里監視器監看辦公室。
#延伸問題
##道路監視器錄影內容作為車輛使用牌照稅處罰之證據
##道路監視器錄影內容作為車輛違反道路交通規則之證據
##道路監視器錄影內容作為通姦罪之證據能力
#參考文獻
##李震山,警察機關設置監視錄影器的法制問題-人權保障與治安維護的動態平衡,臺灣本土法學雜誌,第86期,95.09,頁114-126。
##吳信賢,捺指紋、電信監聽與錄影監視器,台南律師通訊第119期,94.7.1。
##程明修,國家透過公共場所的監視器對人民基本權利的干預,法學講座第三期,91.3.1。
##許義寶,論公共場所監視器設置之法律程序(上),法令月刊第57卷第2期,14-24頁。
##許義寶,論公共場所監視器設置之法律程序(下),法令月刊第57卷第3期,31-40頁。
##廖緯民,以個資法作為公設街頭監視系統的法律規範基礎,台灣本土法學,87期,2006/10,頁122-144。
##李震山等,「街頭監視系統法律規範基礎」,台灣本土法學,87期,2006/10,頁145-154。


[[辯論實況-錄音檔下載|recording/1025.mp3]]

[[憲法分組報告 第四組-職場歧視案|downloads/case4-final.doc]]
  本計畫擬利用報紙剪報的方式,從具體生活事件的發生,擷取上課內容的教材,除可引發學生參與之興趣外,亦能從客觀角度探討時事新聞,培養學生法律專業的分析能力,不至流於情緒或受媒體影響,避免主觀意識而影響客觀法判斷。
各國的憲政體制大多受其歷史背景影響,將其適用在政治、經濟、社會、文化等等方面,無絕對的好與壞,又因憲法上之問題,具有高度開放性,通常並無所謂的標準答案,原則上不違法理,如有足夠理由,且有實踐的可能性,亦得作為本國憲政體制之依據。
故本計畫強調憲法價值的思辯,設計一個學期約16個與憲法有關的時事新聞作為之單元,以便導引學生瞭解憲法內容,並能培養其獨立思考能力。課程內容包含十個基本權單元與六個組織法單元。為使課程更加生動,亦將採用問題對答、投影片方式、分組討論報告、辯論比賽、影片播放或課後作業等方式。
[img[|photos/1.jpg]
[img[|photos/2.jpg]
[img[|photos/3.jpg]
[img[|photos/4.jpg]
[img[|photos/5.jpg]
[img[|photos/6.jpg]
[img[|photos/7.jpg]
[img[|photos/8.jpg]
[img[|photos/9.jpg]
[img[|photos/10.jpg]
[img[|photos/11.jpg]
[img[|photos/12.jpg]
[img[|photos/13.jpg]
[img[|photos/14.jpg]
[img[|photos/15.jpg]
[img[|photos/16.jpg]
[img[|photos/17.jpg]
[img[|photos/18.jpg]
[img[|photos/19.jpg]
[img[|photos/20.jpg]
[img[|photos/21.jpg]
[img[|photos/22.jpg]
[img[|photos/23.jpg]
計畫目標


現今的憲法教學主要著重在學理研究方面的探討,大多未將課程連接其當代所發生的時事,

學生對該時事多半無法從所學習的課程中學以致用,特別是無法從正確的憲法學理對時事做出較為合乎法理的判斷,

而易受一般不具有獨立性媒體輿論所影響,此為憲法教學一大盲點,也是教育無法教導學生獨立思考的問題所在。


本計畫擬以生活時事為課程素材,以對話方式引導學生產生問題意識,刺激學生思考憲法議題,

再輔以憲法教科書內容,使得學生更能深刻體會憲法之意義與價值。搭配時事新聞教學,能使課程更加生動活潑,

並使學生在上課之餘,能將所學實際用運至生活中,並能培養學生獨立思考能力。
第七案<中正紀念堂易名為台灣民主紀念館案>

#事實背景
    2007年4月19日教育部為準備中正紀念堂更名為「台灣民主紀念館」之揭牌儀式活動,於本堂南北兩側壁面懸掛大型活動布幔,臺北市政府文化局為了因應外牆拆除之爭議,依文化資產保存法第17條規定,將其列為暫定古蹟後,台北市政府以違反文化資產保存法第三十條規定為由,依同法第九十七條第一項第四款處以新台幣十萬元罰鍰,隔日再連續處以新台幣二十萬元罰鍰。其後臺北市政府又依上開法條規定,主動強制拆除該布幔。
#憲法爭點
##中正紀念堂易名為台灣民主紀念館案
#憲法上相關理論的闡釋
##國家機關之設置的實質正當性
##法律保留原則的理論
#活動方式: 
提供投影片介紹臺灣古蹟及其建築特色,接著講述中正紀念堂之歷史由來,再由學生分組討論本案例問題。
#延伸問題
##精省的過程
##廢止台灣省議會的過程
#參考文獻