/***\n|''Name:''|ArchivedTimeline|\n|''Version:''|0.5.2 (Jun 21, 2006)|\n|''Source:''|https://sourceforge.net/projects/ptw/|\n|''Author:''|BramChen|\n|''Type:''|Macro|\n!Description\nTimeline archived monthly.\n!Syntax/Examples\n>{{{<<timeline [modified | created]>>}}}\n\n!Known issues/Todos\n* \n\n!Instructions\n\n!Notes\n*\n!Code\n***/\n//{{{\nversion.extensions.archivedTimeline = {major: 0, minor: 5, revision: 2,\n date: new Date("Jun 21, 2006"),\n name: "ArchivedTimeline",\n type: "Macro",\n author: "BramChen",\n source: "http://sourceforge.net/project/showfiles.php?group_id=150646"\n};\nconfig.options.txtTimelineMaxentries=0;\nconfig.macros.archivedTimeline = {\n tooltips: "Archives sorted by ",\n orderBy:{modified: "modified", created: "created"},\n dateFormat: "0DD mmm YYYY"\n};\nconfig.macros.timeline = config.macros.archivedTimeline;\n\nconfig.macros.timeline.handler = function(place,macroName,params) {\n var field = params[0] ? params[0] : "modified";\n\n place.appendChild(document.createTextNode(this.tooltips + this.orderBy[field]));\n var tiddlers = store.reverseLookup("tags","excludeLists",false,field);\n var lastMonth = ""; var lastDay = ""; var theText = "----\sn"; var i = 0;\n var last = (params[1])?params[1]:config.options.txtTimelineMaxentries;\n last = (isNaN(last)||last<1) ? 0:tiddlers.length-Math.min(tiddlers.length,parseInt(last));\n var cookie; var archives;\n for (var t=tiddlers.length-1; t>=last; t--) {\n var tiddler = tiddlers[t];\n var theMonth = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,6);\n var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);\n if(theMonth != lastMonth) {\n if (lastMonth === "") {\n lastMonth = theMonth;\n }\n else {\n place.appendChild(document.createElement("hr"));\n cookie = 'chktimeline'+(i++);\n archives = this.formatString(this.dateFormat, lastMonth);\n this.slider(place,cookie,theText,archives,this.tooltips + archives);\n lastMonth = theMonth; theText = "----\sn";\n }\n }\n if(theDay != lastDay){\n theText += tiddler[field].formatString(this.dateFormat) + '\sn';\n lastDay = theDay; \n }\n theText += '* [[' + tiddler.title + ']]\sn';\n }\n place.appendChild(document.createElement("hr"));\n cookie = 'chktimeline'+(i++);\n archives = this.formatString(this.dateFormat, lastMonth);\n this.slider(place,cookie,theText,archives,this.tooltips + archives);\n place.appendChild(document.createElement("hr"));\n};\n\nconfig.macros.timeline.onClickSlider = config.macros.slider.onClickSlider;\n\nconfig.macros.timeline.slider = function(place,cookie,text,id,tooltips)\n{\n var btn = createTiddlyButton(place,id,tooltips,this.onClickSlider);\n var panel = createTiddlyElement(place,"div",null,"timelineSliderPanel",null);\n panel.setAttribute("cookie",cookie);\n panel.style.display = config.options[cookie] ? "block" : "none";\n if(text){\n wikify(text,panel);\n }\n};\n\nconfig.macros.timeline.formatString = function(template, yyyymm)\n{\n var dateString = new Date(yyyymm.substr(0,4)+'/'+yyyymm.substr(4,2)+'/01');\n template = template.replace(/DDD|0DD|DD/g,'');\n return dateString.formatString(template);\n};\nif (!Date.prototype.convertToLocalYYYYMMDDHHMM){\n Date.prototype.convertToLocalYYYYMMDDHHMM = function(){\n return(String.zeroPad(this.getFullYear(),4) + String.zeroPad(this.getMonth()+1,2) + String.zeroPad(this.getDate(),2) + String.zeroPad(this.getHours(),2) + String.zeroPad(this.getMinutes(),2));\n }\n}\n//}}}
if (config.macros.timeline.tooltips != undefined){\n config.macros.timeline.tooltips = "按月";\n config.macros.archivedTimeline.orderBy = {modified: "归档",\ncreated: "建立日期"};\n config.macros.archivedTimeline.dateFormat = "YYYY0MM0DD"; \n}
/***\n\n!!!!!Code\n***/\n//{{{\nif (config.macros.attach==undefined) config.macros.attach= { };\n//}}}\n//{{{\nif (config.macros.attach.isAttachment==undefined) config.macros.attach.isAttachment=function (title) {\n var tiddler = store.getTiddler(title);\n if (tiddler==undefined || tiddler.tags==undefined) return false;\n return (tiddler.tags.find("attachment")!=null);\n}\n//}}}\n//{{{\nif (config.macros.attach.getAttachment==undefined) config.macros.attach.getAttachment=function(title) {\n var text = store.getTiddlerText(title);\n var result=""; var pos=0; var endpos=0;\n\n var startmarker="---BEGIN_DATA---\sn";\n var endmarker="\sn---END_DATA---";\n if (!config.browser.isIE && (pos=text.indexOf(startmarker))!=-1 && (endpos=text.indexOf(endmarker))!=-1) {\n var out="data:"+(text.substring(pos+startmarker.length,endpos)).replace(/\sn/g,''); // strip embedded newlines\n return out;\n }\n if ((pos=text.indexOf("/%LOCAL_LINK%/"))!=-1) // fallback to local link\n return text.substring(text.indexOf("|",pos)+1,text.indexOf("]]",pos)); \n if ((pos=text.indexOf("/%REMOTE_LINK%/"))!=-1) // fallback to remote URL\n return text.substring(text.indexOf("|",pos)+1,text.indexOf("]]",pos));\n\n // fallback for backward-compatibility:\n // before 3.2.0 encoded datablock was located between ----'s instead of using embedded 'keyword markers' in the tiddler content\n var data=text.split('\sn----\sn');\n if (!config.browser.isIE && data[1] && data[1].length) // NOTE: IE does not support the "data:" URI scheme\n return "data:"+data[1].replace(/\s\sn/g,'');\n\n return "";\n}\n//}}}\n//{{{\nif (config.macros.attach.init_formatters==undefined) config.macros.attach.init_formatters=function() {\n if (this.initialized) return;\n // find the formatter for "image" and replace the handler\n for (var i=0; i<config.formatters.length && config.formatters[i].name!="image"; i++);\n if (i<config.formatters.length) config.formatters[i].handler=function(w) {\n if (!this.lookaheadRegExp) // fixup for TW2.0.x\n this.lookaheadRegExp = new RegExp(this.lookahead,"mg");\n this.lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) // Simple bracketted link\n {\n var e = w.output;\n if(lookaheadMatch[5])\n {\n var link = lookaheadMatch[5];\n // ELS -------------\n if (!config.formatterHelpers.isExternalLink) // fixup for TW2.0.x\n var external=!store.tiddlerExists(link)&&!store.isShadowTiddler(link);\n else\n var external=config.formatterHelpers.isExternalLink(link);\n if (external)\n {\n if (config.macros.attach.isAttachment(link))\n {\n e = createExternalLink(w.output,link);\n e.href=config.macros.attach.getAttachment(link);\n e.title = config.macros.attach.linkTooltip + link;\n }\n else\n e = createExternalLink(w.output,link);\n }\n else \n e = createTiddlyLink(w.output,link,false,null,w.isStatic);\n // ELS -------------\n addClass(e,"imageLink");\n }\n var img = createTiddlyElement(e,"img");\n if(lookaheadMatch[1])\n img.align = "left";\n else if(lookaheadMatch[2])\n img.align = "right";\n if(lookaheadMatch[3])\n img.title = lookaheadMatch[3];\n img.src = lookaheadMatch[4];\n // ELS -------------\n if (config.macros.attach.isAttachment(lookaheadMatch[4]))\n img.src=config.macros.attach.getAttachment(lookaheadMatch[4]);\n // ELS -------------\n w.nextMatch = this.lookaheadRegExp.lastIndex;\n }\n }\n//}}}\n//{{{\n // find the formatter for "prettyLink" and replace the handler\n for (var i=0; i<config.formatters.length && config.formatters[i].name!="prettyLink"; i++);\n if (i<config.formatters.length) config.formatters[i].handler=function(w) {\n if (!this.lookaheadRegExp) // fixup for TW2.0.x\n this.lookaheadRegExp = new RegExp(this.lookahead,"mg");\n this.lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart)\n {\n var e;\n var text = lookaheadMatch[1];\n if (lookaheadMatch[2]) // Simple bracketted link\n {\n e = createTiddlyLink(w.output,text,false,null,w.isStatic);\n }\n else if(lookaheadMatch[3]) // Pretty bracketted link\n {\n var link = lookaheadMatch[4];\n // ELS -------------\n if (!config.formatterHelpers.isExternalLink) // fixup for TW2.0.x\n var external=!store.tiddlerExists(link)&&!store.isShadowTiddler(link);\n else\n var external=config.formatterHelpers.isExternalLink(link);\n if (external)\n {\n if (config.macros.attach.isAttachment(link))\n {\n e = createExternalLink(w.output,link);\n e.href=config.macros.attach.getAttachment(link);\n e.title = config.macros.attach.linkTooltip + link;\n }\n else\n e = createExternalLink(w.output,link);\n }\n else \n e = createTiddlyLink(w.output,link,false,null,w.isStatic);\n // ELS -------------\n }\n createTiddlyText(e,text);\n w.nextMatch = this.lookaheadRegExp.lastIndex;\n }\n }\n this.initialized=true;\n}\n//}}}\n//{{{\nconfig.macros.attach.init_formatters(); // load time init\n//}}}\n//{{{\nif (TiddlyWiki.prototype.coreGetRecursiveTiddlerText==undefined) {\n TiddlyWiki.prototype.coreGetRecursiveTiddlerText = TiddlyWiki.prototype.getRecursiveTiddlerText;\n TiddlyWiki.prototype.getRecursiveTiddlerText = function(title,defaultText,depth) {\n return config.macros.attach.isAttachment(title)?\n config.macros.attach.getAttachment(title):this.coreGetRecursiveTiddlerText(title,defaultText,depth);\n }\n}\n//}}}
/***\n!Metadata:\n|''Name:''|BreadcrumbsPlugin|\n|''Description:''||\n|''Version:''|1.4.0|\n|''Date:''|Aug 02, 2006|\n|''Source:''|http://sourceforge.net/project/showfiles.php?group_id=150646|\n|''~CoreVersion:''|2.1.0|\n\n!Code section:\n***/\n//{{{\nversion.extensions.breadCrumbs = {major: 1, minor: 2, revision: 0,date: new Date("Aug 02, 2006")};\nconfig.breadCrumbs = [];\n\nwindow.onClickTiddlerLink_orig_breadCrumbs = window.onClickTiddlerLink;\nwindow.onClickTiddlerLink = function(e){\n if (!e) {var e = window.event;} \n window.onClickTiddlerLink_orig_breadCrumbs(e);\n addCrumb(e);\n return false;\n};\n\nfunction addCrumb(e){\n if (!e) {var e = window.event;}\n var thisCrumb = "[[" + resolveTarget(e).getAttribute("tiddlyLink") + "]]";\n var ind = config.breadCrumbs.find(thisCrumb);\n if(ind === null){\n config.breadCrumbs.push(thisCrumb);\n }\n else{\n config.breadCrumbs.length = ind++;\n }\n refreshCrumbs();\n return false;\n}\n\nfunction refreshCrumbs(){\n var crumbArea = document.getElementById("breadCrumbs");\n if (!crumbArea) {\n crumbArea = document.createElement("div");\n crumbArea.id = "breadCrumbs";\n crumbArea.style.display= "none"; \n var targetArea = document.getElementById("tiddlerDisplay");\n targetArea.parentNode.insertBefore(crumbArea,targetArea);\n }\n crumbArea.style.display = "block";\n removeChildren(crumbArea);\n createTiddlyButton(crumbArea,"主页",null,restartHome);\n wikify(" || " + config.breadCrumbs.join(' > '),crumbArea);\n}\n\nfunction restartHome(){\n story.closeAllTiddlers();\n restart();\n config.breadCrumbs = [];\n var crumbArea = document.getElementById("breadCrumbs");\n crumbArea.style.display = "none";\n}\n//}}}
/* background images */\n/* colors and borders */\na { color:#ccf; }\n#breadCrumbs { color:#ccc; }\n#breadCrumbs a { color:#ccf; }\n#titleLine { color: #fff; }\n#titleLine a { color: #009900; }\n.siteMenu { color: #fff; border:0; margin-bottom:.5em }\n.siteMenu a, .siteMenu .button, .siteMenu .tiddlyLink { color: #ccf; }\n.storyMenu { color: #fff; border:0; margin-bottom:.5em }\n.storyMenu a, .storyMenu .button, .storyMenu .tiddlyLink { color: #ccf; }\n/*\n#mainMenu { color: #fff; }\n#mainMenu .tiddlyLink { color: #def; }\n#mainMenu .tiddlyLink:hover { color: #fff; }\n#mainMenu .externalLink { color: #def; }\n#mainMenu .externalLink:hover { color: #fff; }\n#mainMenu .button, #mainMenu A { color: #def; }\n#mainMenu .button:hover, #mainMenu A:hover { color: #fff; }\n*/\n#messageArea { color: #006; }\n#messageArea a:link, #messageArea a:visited { color: #006; }\n#messageArea a:hover { color: #f00; }\n#messageArea a:active { color: #006; }\n#popup { color: #000; }\n#popup a { color: #006; }\n#popup a:hover { color: #006; }\n#popup hr { color: #666; }\n.tabContents { color: #000; }\n.tiddler .button { color: #ccf; }\n.tiddler .button:hover { color: #fff; }\n.tiddler .button:active { color: #fff; }\n.title { color: #def; }\n.toolbar { color: #aaa; }\n.footer { color: #888; }\n.selectedTiddler .footer { color: #ddd; }\n.viewer { color: #fff; }\n.viewer a:link, .viewer a:visited { color: #ccf; }\n.viewer a:hover { color: #fff; }\n.viewer .button { color: #def; }\n.viewer .button:hover { color: #fff; }\n.viewer th { color: #fff; }\n.viewer td { color: #fff; }\n.viewer code { color: #ccc; }\n.viewer pre { color: #000; }\n.viewer hr { color: #666; }\n.viewer .highlight, .viewer .marked { color: #fff; }\n.viewer .tabSelected { background-color: #014; color:#fff; border-color:#999; border-width:2px; padding-bottom:2px !important; }\n.viewer .tabUnselected { background-color: #236; color:#999; border-color:#666}\n.viewer .tabContents { background-color: #014; color:#fff; border-color:#999; border-width:2px }\n.tagging .button, .tagged .button { color: #009; }\n.highlight, .marked { color: #fff; }\n.editor { color: #402C74; }\n.editorFooter { color: #aaa; }\n.editorFooter A { color: #930; }\n.editorFooter A:hover { color: #cf6; }\n.editorFooter A:active { color: #fff; }\n#licensePanel A { color: #66f; }\n#licensePanel A:hover { color: #fff; }\n#licensePanel A:active { color: #fff; }\n.errorNoSuchMacro { color: #ff0; }\n.zoomer { color: #fff; }\n\n.floatingPanel .button,\n.floatingPanel a:link,\n.floatingPanel a:visited,\n.viewer .floatingPanel .button,\n.viewer .floatingPanel a:link,\n.viewer .floatingPanel a:visited {\n color: #009 !important;\n}\n.floatingPanel a:hover,\n.viewer .floatingPanel a:hover {\n color: #fff !important;\n}\n/***\n----\n***/\n/*{{{*/\n.tiddlyCard\n { color:#000 !important; }\n.tiddlyCard a, .tiddlyCard .button, .tiddlyCard .tiddlyLinkExisting, .tiddlyCard .tiddlyLinkNonExisting\n { color:#009 !important; }\n.attachPanel a, #importPanel a, #exportpanel a,\n.attachPanel .button, #importPanel .button, #exportpanel .button,\n.attachPanel .tiddlyLinkExisting, #importPanel .tiddlyLinkExisting, #exportpanel .tiddlyLinkExisting,\n.attachPanel .tiddlyLinkNonExisting, #importPanel .tiddlyLinkNonExisting, #exportpanel .tiddlyLinkNonExisting,\n.tab .button, .tab A,\n.tab .tiddlyLinkExisting, .tab .tiddlyLinkNonExisting\n { color:#009 !important; }\n#sidebarOptions, #sidebarOptions .sliderPanel\n { color: #fff; }\n#sidebarOptions .button, #sidebarOptions A,\n#sidebarOptions .tiddlyLinkExisting, #sidebarOptions .tiddlyLinkNonExisting,\n#sidebarOptions .sliderPanel .button, #sidebarOptions .sliderPanel A,\n#sidebarOptions .sliderPanel .tiddlyLinkExisting, #sidebarOptions .sliderPanel .tiddlyLinkNonExisting\n { color: #def; }\n#sidebarTabs, #sidebarTabs .sliderPanel, #sidebarTabs .tabContents\n { color: #fff; }\n#sidebarTabs .tabContents *[class="TOCList"] /* MOZ ONLY */\n { color:#fff !important; }\n#sidebarTabs .button, /* #sidebarTabs A, */\n#sidebarTabs .tiddlyLinkExisting, #sidebarTabs .tiddlyLinkNonExisting\n { color: #def; }\n.menubox\n { color:#fff; }\n.menubox a, .menubox .button, .menubox .tiddlyLinkExisting, .menubox .tiddlyLinkNonExisting\n { color:#99f !important; }\n.groupbox\n { color:#000; }\n.groupbox a, .groupbox .button, .groupbox .tiddlyLinkExisting, .groupbox .tiddlyLinkNonExisting\n { color:#009 !important; }\n/*}}}*/
/***\n''Name:'' Calendar plugin\n''Author:'' SteveRumsby\n\n// // updated by Jeremy Sheeley to add cacheing for reminders\n// // see http://www.geocities.com/allredfaq/reminderMacros.html\n\n''Configuration:''\n\n|''First day of week:''|<<option txtCalFirstDay>>|(Monday = 0, Sunday = 6)|\n|''First day of weekend:''|<<option txtCalStartOfWeekend>>|(Monday = 0, Sunday = 6)|\n\n''Syntax:'' \n|{{{<<calendar>>}}}|Produce a full-year calendar for the current year|\n|{{{<<calendar year>>}}}|Produce a full-year calendar for the given year|\n|{{{<<calendar year month>>}}}|Produce a one-month calendar for the given month and year|\n|{{{<<calendar thismonth>>}}}|Produce a one-month calendar for the current month|\n|{{{<<calendar lastmonth>>}}}|Produce a one-month calendar for last month|\n|{{{<<calendar nextmonth>>}}}|Produce a one-month calendar for next month|\n\n***/\n// //Modify this section to change the text displayed for the month and day names, to a different language for example. You can also change the format of the tiddler names linked to from each date, and the colours used.\n\n// // ''Changes by ELS 2005.10.30:''\n// // config.macros.calendar.handler()\n// // ^^use "tbody" element for IE compatibility^^\n// // ^^IE returns 2005 for current year, FF returns 105... fix year adjustment accordingly^^\n// // createCalendarDays()\n// // ^^use showDate() function (if defined) to render autostyled date with linked popup^^\n// // calendar stylesheet definition\n// // ^^use .calendar class-specific selectors, add text centering and margin settings^^\n\n//{{{\nconfig.macros.calendar = {};\n\nconfig.macros.calendar.monthnames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];\nconfig.macros.calendar.daynames = ["M", "T", "W", "T", "F", "S", "S"];\n\nconfig.macros.calendar.weekendbg = "#c0c0c0";\nconfig.macros.calendar.monthbg = "#e0e0e0";\nconfig.macros.calendar.holidaybg = "#ffc0c0";\n\n//}}}\n// //''Code section:''\n// (you should not need to alter anything below here)//\n//{{{\nif(config.options.txtCalFirstDay == undefined)\n config.options.txtCalFirstDay = 0;\nif(config.options.txtCalStartOfWeekend == undefined)\n config.options.txtCalStartOfWeekend = 5;\n\nconfig.macros.calendar.tiddlerformat = "0DD/0MM/YYYY"; // This used to be changeable - for now, it isn't// <<smiley :-(>> \n\nversion.extensions.calendar = { major: 0, minor: 6, revision: 0, date: new Date(2006, 1, 22)};\nconfig.macros.calendar.monthdays = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nconfig.macros.calendar.holidays = [ ]; // Not sure this is required anymore - use reminders instead\n//}}}\n\n// //Is the given date a holiday?\n//{{{\nfunction calendarIsHoliday(date)\n{\n var longHoliday = date.formatString("0DD/0MM/YYYY");\n var shortHoliday = date.formatString("0DD/0MM");\n\n for(var i = 0; i < config.macros.calendar.holidays.length; i++) {\n if(config.macros.calendar.holidays[i] == longHoliday || config.macros.calendar.holidays[i] == shortHoliday) {\n return true;\n }\n }\n return false;\n}\n//}}}\n\n// //The main entry point - the macro handler.\n// //Decide what sort of calendar we are creating (month or year, and which month or year)\n// // Create the main calendar container and pass that to sub-ordinate functions to create the structure.\n// ELS 2005.10.30: added creation and use of "tbody" for IE compatibility and fixup for year >1900//\n// ELS 2005.10.30: fix year calculation for IE's getYear() function (which returns '2005' instead of '105')//\n// ELS 2006.05.29: add journalDateFmt handling//\n//{{{\nconfig.macros.calendar.handler = function(place,macroName,params)\n{\n var calendar = createTiddlyElement(place, "table", null, "calendar", null);\n var tbody = createTiddlyElement(calendar, "tbody", null, null, null);\n var today = new Date();\n var year = today.getYear();\n if (year<1900) year+=1900;\n \n // get format for journal link by reading from SideBarOptions (ELS 5/29/06 - based on suggestion by Martin Budden)\n var text = store.getTiddlerText("SideBarOptions");\n this.journalDateFmt = "DD-MMM-YYYY";\n var re = new RegExp("<<(?:newJournal)([^>]*)>>","mg"); var fm = re.exec(text);\n if (fm && fm[1]!=null) { var pa=fm[1].readMacroParams(); if (pa[0]) this.journalDateFmt = pa[0]; }\n\n if (params[0] == "thismonth")\n {\n cacheReminders(new Date(year, today.getMonth(), 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, today.getMonth());\n } \n else if (params[0] == "lastmonth") {\n var month = today.getMonth()-1; if (month==-1) { month=11; year--; }\n cacheReminders(new Date(year, month, 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, month);\n }\n else if (params[0] == "nextmonth") {\n var month = today.getMonth()+1; if (month>11) { month=0; year++; }\n cacheReminders(new Date(year, month, 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, month);\n }\n else {\n if (params[0]) year = params[0];\n if(params[1])\n {\n cacheReminders(new Date(year, params[1]-1, 1, 0, 0), 31);\n createCalendarOneMonth(tbody, year, params[1]-1);\n }\n else\n {\n cacheReminders(new Date(year, 0, 1, 0, 0), 366);\n createCalendarYear(tbody, year);\n }\n }\n window.reminderCacheForCalendar = null;\n}\n//}}}\n//{{{\n//This global variable is used to store reminders that have been cached\n//while the calendar is being rendered. It will be renulled after the calendar is fully rendered.\nwindow.reminderCacheForCalendar = null;\n//}}}\n//{{{\nfunction cacheReminders(date, leadtime)\n{\n if (window.findTiddlersWithReminders == null)\n return;\n window.reminderCacheForCalendar = {};\n var leadtimeHash = [];\n leadtimeHash [0] = 0;\n leadtimeHash [1] = leadtime;\n var t = findTiddlersWithReminders(date, leadtimeHash, null, 1);\n for(var i = 0; i < t.length; i++) {\n //just tag it in the cache, so that when we're drawing days, we can bold this one.\n window.reminderCacheForCalendar[t[i]["matchedDate"]] = "reminder:" + t[i]["params"]["title"]; \n }\n}\n//}}}\n//{{{\nfunction createCalendarOneMonth(calendar, year, mon)\n{\n var row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, true, year, mon);\n row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarDayHeader(row, 1);\n createCalendarDayRowsSingle(calendar, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonth(calendar, year, mon)\n{\n var row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, false, year, mon);\n row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarDayHeader(row, 1);\n createCalendarDayRowsSingle(calendar, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarYear(calendar, year)\n{\n var row;\n row = createTiddlyElement(calendar, "tr", null, null, null);\n var back = createTiddlyElement(row, "td", null, null, null);\n var backHandler = function() {\n removeChildren(calendar);\n createCalendarYear(calendar, year-1);\n };\n createTiddlyButton(back, "<", "Previous year", backHandler);\n back.align = "center";\n\n var yearHeader = createTiddlyElement(row, "td", null, "calendarYear", year);\n yearHeader.align = "center";\n yearHeader.setAttribute("colSpan", 19);\n\n var fwd = createTiddlyElement(row, "td", null, null, null);\n var fwdHandler = function() {\n removeChildren(calendar);\n createCalendarYear(calendar, year+1);\n };\n createTiddlyButton(fwd, ">", "Next year", fwdHandler);\n fwd.align = "center";\n\n createCalendarMonthRow(calendar, year, 0);\n createCalendarMonthRow(calendar, year, 3);\n createCalendarMonthRow(calendar, year, 6);\n createCalendarMonthRow(calendar, year, 9);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonthRow(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon], false, year, mon);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+1], false, year, mon);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+2], false, year, mon);\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDayHeader(row, 3);\n createCalendarDayRows(cal, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonthHeader(cal, row, name, nav, year, mon)\n{\n var month;\n if(nav) {\n var back = createTiddlyElement(row, "td", null, null, null);\n back.align = "center";\n back.style.background = config.macros.calendar.monthbg;\n\n/*\n back.setAttribute("colSpan", 2);\n\n var backYearHandler = function() {\n var newyear = year-1;\n removeChildren(cal);\n cacheReminders(new Date(newyear, mon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, mon);\n };\n createTiddlyButton(back, "<<", "Previous year", backYearHandler);\n*/\n var backMonHandler = function() {\n var newyear = year;\n var newmon = mon-1;\n if(newmon == -1) { newmon = 11; newyear = newyear-1;}\n removeChildren(cal);\n cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, newmon);\n };\n createTiddlyButton(back, "<", "Previous month", backMonHandler);\n\n\n month = createTiddlyElement(row, "td", null, "calendarMonthname", name)\n// month.setAttribute("colSpan", 3);\n month.setAttribute("colSpan", 5);\n\n var fwd = createTiddlyElement(row, "td", null, null, null);\n fwd.align = "center";\n fwd.style.background = config.macros.calendar.monthbg; \n\n// fwd.setAttribute("colSpan", 2);\n var fwdMonHandler = function() {\n var newyear = year;\n var newmon = mon+1;\n if(newmon == 12) { newmon = 0; newyear = newyear+1;}\n removeChildren(cal);\n cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, newmon);\n };\n createTiddlyButton(fwd, ">", "Next month", fwdMonHandler);\n/*\n var fwdYear = createTiddlyElement(row, "td", null, null, null);\n var fwdYearHandler = function() {\n var newyear = year+1;\n removeChildren(cal);\n cacheReminders(new Date(newyear, mon , 1, 0, 0), 31);\n createCalendarOneMonth(cal, newyear, mon);\n };\n createTiddlyButton(fwd, ">>", "Next year", fwdYearHandler);\n*/\n } else {\n month = createTiddlyElement(row, "td", null, "calendarMonthname", name)\n month.setAttribute("colSpan", 7);\n }\n month.align = "center";\n month.style.background = config.macros.calendar.monthbg;\n}\n//}}}\n\n//{{{\nfunction createCalendarDayHeader(row, num)\n{\n var cell;\n for(var i = 0; i < num; i++) {\n for(var j = 0; j < 7; j++) {\n var d = j + (config.options.txtCalFirstDay - 0);\n if(d > 6) d = d - 7;\n cell = createTiddlyElement(row, "td", null, null, config.macros.calendar.daynames[d]);\n\n if(d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))\n cell.style.background = config.macros.calendar.weekendbg;\n }\n }\n}\n//}}}\n\n//{{{\nfunction createCalendarDays(row, col, first, max, year, mon)\n{\n var i;\n for(i = 0; i < col; i++) {\n createTiddlyElement(row, "td", null, null, null);\n }\n var day = first;\n for(i = col; i < 7; i++) {\n var d = i + (config.options.txtCalFirstDay - 0);\n if(d > 6) d = d - 7;\n var daycell = createTiddlyElement(row, "td", null, null, null);\n var isaWeekend = ((d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))? true:false);\n\n if(day > 0 && day <= max) {\n var celldate = new Date(year, mon, day);\n // ELS 2005.10.30: use <<date>> macro's showDate() function to create popup\n if (window.showDate) {\n showDate(daycell,celldate,"popup","DD",config.macros.calendar.journalDateFmt,true, isaWeekend); // ELS 5/29/06 - use journalDateFmt \n } else {\n if(isaWeekend) daycell.style.background = config.macros.calendar.weekendbg;\n var title = celldate.formatString(config.macros.calendar.tiddlerformat);\n if(calendarIsHoliday(celldate)) {\n daycell.style.background = config.macros.calendar.holidaybg;\n }\n if(window.findTiddlersWithReminders == null) {\n var link = createTiddlyLink(daycell, title, false);\n link.appendChild(document.createTextNode(day));\n } else {\n var button = createTiddlyButton(daycell, day, title, onClickCalendarDate);\n }\n }\n }\n day++;\n }\n}\n//}}}\n\n// //We've clicked on a day in a calendar - create a suitable pop-up of options.\n// //The pop-up should contain:\n// // * a link to create a new entry for that date\n// // * a link to create a new reminder for that date\n// // * an <hr>\n// // * the list of reminders for that date\n//{{{\nfunction onClickCalendarDate(e)\n{\n var button = this;\n var date = button.getAttribute("title");\n var dat = new Date(date.substr(6,4), date.substr(3,2)-1, date.substr(0, 2));\n\n date = dat.formatString(config.macros.calendar.tiddlerformat);\n var popup = createTiddlerPopup(this);\n popup.appendChild(document.createTextNode(date));\n var newReminder = function() {\n var t = store.getTiddlers(date);\n displayTiddler(null, date, 2, null, null, false, false);\n if(t) {\n document.getElementById("editorBody" + date).value += "\sn<<reminder day:" + dat.getDate() +\n " month:" + (dat.getMonth()+1) +\n " year:" + (dat.getYear()+1900) + " title: >>";\n } else {\n document.getElementById("editorBody" + date).value = "<<reminder day:" + dat.getDate() +\n " month:" + (dat.getMonth()+1) +\n " year:" + (dat.getYear()+1900) + " title: >>";\n }\n };\n var link = createTiddlyButton(popup, "New reminder", null, newReminder); \n popup.appendChild(document.createElement("hr"));\n\n var t = findTiddlersWithReminders(dat, [0,14], null, 1);\n for(var i = 0; i < t.length; i++) {\n link = createTiddlyLink(popup, t[i].tiddler, false);\n link.appendChild(document.createTextNode(t[i].tiddler));\n }\n}\n//}}}\n\n//{{{\nfunction calendarMaxDays(year, mon)\n{\n var max = config.macros.calendar.monthdays[mon];\n if(mon == 1 && (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0)) {\n max++;\n }\n return max;\n}\n//}}}\n\n//{{{\nfunction createCalendarDayRows(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n\n var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first1 < 0) first1 = first1 + 7;\n var day1 = -first1 + 1;\n var first2 = (new Date(year, mon+1, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first2 < 0) first2 = first2 + 7;\n var day2 = -first2 + 1;\n var first3 = (new Date(year, mon+2, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first3 < 0) first3 = first3 + 7;\n var day3 = -first3 + 1;\n\n var max1 = calendarMaxDays(year, mon);\n var max2 = calendarMaxDays(year, mon+1);\n var max3 = calendarMaxDays(year, mon+2);\n\n while(day1 <= max1 || day2 <= max2 || day3 <= max3) {\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;\n createCalendarDays(row, 0, day2, max2, year, mon+1); day2 += 7;\n createCalendarDays(row, 0, day3, max3, year, mon+2); day3 += 7;\n }\n}\n//}}}\n\n//{{{\nfunction createCalendarDayRowsSingle(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n\n var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);\n if(first1 < 0) first1 = first1+ 7;\n var day1 = -first1 + 1;\n var max1 = calendarMaxDays(year, mon);\n\n while(day1 <= max1) {\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;\n }\n}\n//}}}\n\n// //ELS 2005.10.30: added styles\n//{{{\nsetStylesheet(".calendar, .calendar table, .calendar th, .calendar tr, .calendar td { text-align:center; } .calendar, .calendar a { margin:0px !important; padding:0px !important; }", "calendarStyles");\n//}}}\n
// // override cookie settings for CalendarPlugin:\n//{{{\nconfig.options.txtCalFirstDay=6;\nconfig.options.txtCalStartOfWeekend=5;\n//}}}
<script label="关闭">\n var panel=place;\n while (panel && panel.className!='sliderPanel' && panel.className!='floatingPanel')\n { panel=panel.parentNode; }\n if (!panel) { alert('not in a slider'); return false; }\n panel.style.display='none';\n var cookie=panel.button.sliderCookie;\n if (cookie && cookie.length) {\n config.options[cookie]=false;\n if (config.options[cookie]!=panel.button.defOpen)\n saveOptionCookie(cookie);\n else { // remove cookie if slider is in default display state\n var ex=new Date(); ex.setTime(ex.getTime()-1000);\n document.cookie = cookie+"=novalue; path=/; expires="+ex.toGMTString();\n }\n }\n return false;\n</script><script>\n place.lastChild.style.fontWeight="normal";\n if (story.findContainingTiddler(place))\n place.lastChild.className="toolbar button";\n else {\n var s=place.lastChild.style\n s.fontSize="90%"; s.float="right";\n }\n</script>
<<player id=1 flash http://www.youtube.com/v/lea5h-ETmlw 425 350>>\n<<player id=2 flash http://www.youtube.com/v/xdOeqErqaW8 425 350>>\n<html>\n<iframe src='http://kylecn.blogspot.com/2006/08/kyle-xycomic-con-2006-its-one-of.html' scrolling='no' style='width:100%; height:700px' frameborder='0'></iframe>\n</html>
// // add TiddlyTools 'brand' to shadow SiteTitle (default for TiddlyTools starter documents)\n//{{{\nconfig.shadowTiddlers.SiteTitle += " {{medium{with [[叶落尘天 |http://avxavx.googlepages.com]] extensions}}}\sn";\n//}}}\n\n// // add shadows for common TiddlyTools default tiddlers used in starter documents\n//{{{\nconfig.shadowTiddlers.Welcome = "[[欢迎]]";\n//}}}\n\n// // add param handler for "group:tiddlerName"\n//{{{\nif (config.paramifiers)\n config.paramifiers.group = { onstart: function(id) { story.displayTiddlers(null,store.getTiddlerText(id,"").readBracketedList()) } };\n//}}}\n\n// // force no animation\n//{{{\nconfig.options.chkAnimate=true;\nconfig.options.chkShowRightSidebar=false; \nconfig.options.chkToggleLinks=true;\nconfig.options.chkOpenInNewWindow=false;\nconfig.options.chkForceMinorUpdate=true;\nconfig.options.chkShowTopButton=true;\nconfig.options.chkOpenInNewWindow=true\nconfig.options.chkSinglePageMode=true;\nconfig.options.chkTopOfPageMode=true;\n//}}}
// // \n//{{{\nwindow.coreWikify = wikify;\nwindow.wikify = function(source,output,highlightRegExp,tiddler)\n{\n if (source) source=source.replace(/\s\s\sn\ss*/mg,"<<br>>");\n coreWikify(source,output,highlightRegExp,tiddler)\n}\n//}}}\n\n// // \n//{{{\nfunction confirmExit()\n{\n hadConfirmExit = true;\n if(store && store.isDirty && store.isDirty())\n return config.messages.confirmExit;\n // added by ELS\n var editing=false;\n story.forEachTiddler(function(title,element) { if(element.getAttribute("dirty")=="true") editing=true; });\n if (editing) return config.messages.confirmExit;\n}\n//}}}\n\n// // \n//{{{\nSlider.prototype.tick = function()\n{\n this.progress += this.step;\n if(this.progress < 0 || this.progress > 1)\n {\n this.stop();\n return false;\n }\n else\n {\n var f = Animator.slowInSlowOut(this.progress);\n var h = this.realHeight * f;\n this.element.style.height = h + "px";\n// REMOVED BY ELS:\n// this.element.style.opacity = f;\n// this.element.style.filter = "alpha(opacity:" + f * 100 +")";\n return true;\n }\n}\n//}}}\n
/***\n''Date Plugin for TiddlyWiki version 2.x''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#DatePlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n^^last update: <<date tiddler "DDD, MMM DDth, YYYY hh:0mm:0ss">>^^\n\nThere are quite a few calendar generators, reminders, to-do lists, 'dated tiddlers' journals, blog-makers and GTD-like schedule managers that have been built around TW. While they all have different purposes, and vary in format, interaction, and style, in one way or another each of these plugins displays and/or uses date-based information to make finding, accessing and managing relevant tiddlers easier. This plugin provides a general approach to embedding dates and date-based links/menus within tiddler content.\n\nYou can ''specify a date using a combination of year, month, and day number values or mathematical expressions (such as "Y+1" or "D+30")'', and then just display it as formatted date text, or create a ''link to a 'dated tiddler''' for quick blogging, or create a ''popup menu'' containing the dated tiddler link plus links to ''tiddlers that were changed'' as well as any ''scheduled reminders'' for that date.\n!!!!!Usage\n<<<\nWhen installed, this plugin defines a macro: {{{<<date [mode] [date] [format] [linkformat]>>}}}. All of the macro parameters are optional and, in it's simplest form, {{{<<date>>}}}, it is equivalent to the ~TiddlyWiki core macro, {{{<<today>>}}}.\n\nHowever, where {{{<<today>>}}} simply inserts the current date/time in a predefined format (or custom format, using {{{<<today [format]>>}}}), the {{{<<date>>}}} macro's parameters take it much further than that:\n* [mode] is either ''display'', ''link'' or ''popup''. If omitted, it defaults to ''display''. This param let's you select between simply displaying a formatted date, or creating a link to a specific 'date titled' tiddler or a popup menu containing a dated tiddler link, plus links to changes and reminders.\n* [date] lets you enter ANY date (not just today) as ''year, month, and day values or simple mathematical expressions'' using pre-defined variables, Y, M, and D for the current year, month and day, repectively. You can display the modification date of the current tiddler by using the keyword: ''tiddler'' in place of the year, month and day parameters. Use ''tiddler://name-of-tiddler//'' to display the modification date of a specific tiddler. You can also use keywords ''today'' or ''filedate'' to refer to these //dynamically changing// date/time values. \n* [format] and [linkformat] uses standard ~TiddlyWiki date formatting syntax. The default is "YYYY.0MM.0DD"\n>^^''DDD'' - day of week in full (eg, "Monday"), ''DD'' - day of month, ''0DD'' - adds leading zero^^\n>^^''MMM'' - month in full (eg, "July"), ''MM'' - month number, ''0MM'' - adds leading zero^^\n>^^''YYYY'' - full year, ''YY'' - two digit year, ''hh'' - hours, ''mm'' - minutes, ''ss'' - seconds^^\n>^^//note: use of hh, mm or ss format codes is only supported with ''tiddler'', ''today'' or ''filedate'' values//^^\n* [linkformat] - specify an alternative date format so that the title of a 'dated tiddler' link can have a format that differs from the date's displayed format\n\nIn addition to the macro syntax, DatePlugin also provides a public javascript API so that other plugins that work with dates (such as calendar generators, etc.) can quickly incorporate date formatted links or popups into their output:\n\n''{{{showDate(place, date, mode, format, linkformat, autostyle, weekend)}}}'' \n\nNote that in addition to the parameters provided by the macro interface, the javascript API also supports two optional true/false parameters:\n* [autostyle] - when true, the font/background styles of formatted dates are automatically adjusted to show the date's status: 'today' is boxed, 'changes' are bold, 'reminders' are underlined, while weekends and holidays (as well as changes and reminders) can each have a different background color to make them more visibly distinct from each other.\n* [weekend] - true indicates a weekend, false indicates a weekday. When this parameter is omitted, the plugin uses internal defaults to automatically determine when a given date falls on a weekend.\n<<<\n!!!!!Examples\n<<<\nThe current date: <<date>>\nThe current time: <<date today "0hh:0mm:0ss">>\nToday's blog: <<date link today "DDD, MMM DDth, YYYY">>\nRecent blogs/changes/reminders: <<date popup Y M D-1 "yesterday">> <<date popup today "today">> <<date popup Y M D+1 "tomorrow">>\nThe first day of next month will be a <<date Y M+1 1 "DDD">>\nThis tiddler (DatePlugin) was last updated on: <<date tiddler "DDD, MMM DDth, YYYY">>\nThe SiteUrl was last updated on: <<date tiddler:SiteUrl "DDD, MMM DDth, YYYY">>\nThis document was last saved on <<date filedate "DDD, MMM DDth, YYYY at 0hh:0mm:0ss">>\n<<date 2006 07 24 "MMM DDth, YYYY">> will be a <<date 2006 07 24 "DDD">>\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''DatePlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n''2006.05.09 [2.2.1]'' added "todaybg" handling to set background color of current date. Also, honor excludeLists tag when getting lists of tiddlers. Based on suggestions by Mark Hulme.\n''2006.05.05 [2.2.0]'' added "linkedbg" handling to set background color when a 'dated tiddler' exists. Based on a suggestion by Mark Hulme.\n''2006.03.08 [2.1.2]'' add 'override leadtime' flag param in call to findTiddlersWithReminders(), and add "Enter a title" default text to new reminder handler. Thanks to Jeremy Sheeley for these additional tweaks.\n''2006.03.06 [2.1.0]'' hasReminders() nows uses window.reminderCacheForCalendar[] when present. If calendar cache is not present, indexReminders() now uses findTiddlersWithReminders() with a 90-day look ahead to check for reminders. Also, switched default background colors for autostyled dates: reminders are now greenish ("c0ffee") and holidays are now reddish ("ffaace").\n''2006.02.14 [2.0.5]'' when readOnly is set (by TW core), omit "new reminders..." popup menu item and, if a "dated tiddler" does not already exist, display the date as simple text instead of a link.\n''2006.02.05 [2.0.4]'' added var to variables that were unintentionally global. Avoids FireFox 1.5.0.1 crash bug when referencing global variables\n''2006.01.18 [2.0.3]'' In 1.2.x the tiddler editor's text area control was given an element ID=("tiddlerBody"+title), so that it was easy to locate this field and programmatically modify its content. With the addition of configuration templates in 2.x, the textarea no longer has an ID assigned. To find this control we now look through all the child nodes of the tiddler editor to locate a "textarea" control where attribute("edit") equals "text", and then append the new reminder to the contents of that control.\n''2006.01.11 [2.0.2]'' correct 'weekend' override detection logic in showDate()\n''2006.01.10 [2.0.1]'' allow custom-defined weekend days (default defined in config.macros.date.weekend[] array)\nadded flag param to showDate() API to override internal weekend[] array\n''2005.12.27 [2.0.0]'' Update for TW2.0\nAdded parameter handling for 'linkformat'\n''2005.12.21 [1.2.2]'' FF's date.getYear() function returns 105 (for the current year, 2005). When calculating a date value from Y M and D expressions, the plugin adds 1900 to the returned year value get the current year number. But IE's date.getYear() already returns 2005. As a result, plugin calculated date values on IE were incorrect (e.g., 3905 instead of 2005). Adding +1900 is now conditional so the values will be correct on both browsers.\n''2005.11.07 [1.2.1]'' added support for "tiddler" dynamic date parameter\n''2005.11.06 [1.2.0]'' added support for "tiddler:title" dynamic date parameter\n''2005.11.03 [1.1.2]'' when a reminder doesn't have a specified title parameter, use the title of the tiddler that contains the reminder as "fallback" text in the popup menu. Based on a suggestion from BenjaminKudria.\n''2005.11.03 [1.1.1]'' Temporarily bypass hasReminders() logic to avoid excessive overhead from generating the indexReminders() cache. While reminders can still appear in the popup menu, they just won't be indicated by auto-styling the date number that is displayed. This single change saves approx. 60% overhead (5 second delay reduced to under 2 seconds).\n''2005.11.01 [1.1.0]'' corrected logic in hasModifieds() and hasReminders() so caching of indexed modifieds and reminders is done just once, as intended. This should hopefully speed up calendar generators and other plugins that render multiple dates...\n''2005.10.31 [1.0.1]'' documentation and code cleanup\n''2005.10.31 [1.0.0]'' initial public release\n''2005.10.30 [0.9.0]'' pre-release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.date = {major: 2, minor: 2, revision: 1, date: new Date(2006,5,9)};\n//}}}\n\n//{{{\nconfig.macros.date = {\n format: "YYYY.0MM.0DD", // default date display format\n linkformat: "YYYY.0MM.0DD", // 'dated tiddler' link format\n linkedbg: "#babb1e", // "babble"\n todaybg: "#ffab1e", // "fable"\n weekendbg: "#c0c0c0", // "cocoa"\n holidaybg: "#ffaace", // "face"\n modifiedsbg: "#bbeeff", // "beef"\n remindersbg: "#c0ffee", // "coffee"\n holidays: [ "01/01", "07/04", "07/24", "11/24" ], // NewYearsDay, IndependenceDay(US), Eric's Birthday (hooray!), Thanksgiving(US)\n weekend: [ 1,0,0,0,0,0,1 ] // [ day index values: sun=0, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6 ]\n};\n//}}}\n\n//{{{\nconfig.macros.date.handler = function(place,macroName,params)\n{\n // do we want to see a link, a popup, or just a formatted date?\n var mode="display";\n if (params[0]=="display") { mode=params[0]; params.shift(); }\n if (params[0]=="popup") { mode=params[0]; params.shift(); }\n if (params[0]=="link") { mode=params[0]; params.shift(); }\n // get the date\n var now = new Date();\n var date = now;\n if (!params[0] || params[0]=="today")\n { params.shift(); }\n else if (params[0]=="filedate")\n { date=new Date(document.lastModified); params.shift(); }\n else if (params[0]=="tiddler")\n { date=store.getTiddler(story.findContainingTiddler(place).id.substr(7)).modified; params.shift(); }\n else if (params[0].substr(0,8)=="tiddler:")\n { var t; if ((t=store.getTiddler(params[0].substr(8)))) date=t.modified; params.shift(); }\n else {\n var y = eval(params.shift().replace(/Y/ig,(now.getYear()<1900)?now.getYear()+1900:now.getYear()));\n var m = eval(params.shift().replace(/M/ig,now.getMonth()+1));\n var d = eval(params.shift().replace(/D/ig,now.getDate()+0));\n date = new Date(y,m-1,d);\n }\n // date format with optional custom override\n var format=this.format; if (params[0]) format=params.shift();\n var linkformat=this.linkformat; if (params[0]) linkformat=params.shift();\n showDate(place,date,mode,format,linkformat);\n}\n//}}}\n\n//{{{\nwindow.showDate=showDate;\nfunction showDate(place,date,mode,format,linkformat,autostyle,weekend)\n{\n if (!mode) mode="display";\n if (!format) format=config.macros.date.format;\n if (!linkformat) linkformat=config.macros.date.linkformat;\n if (!autostyle) autostyle=false;\n\n // format the date output\n var title = date.formatString(format);\n var linkto = date.formatString(linkformat);\n\n // just show the formatted output\n if (mode=="display") { place.appendChild(document.createTextNode(title)); return; }\n\n // link to a 'dated tiddler'\n var link = createTiddlyLink(place, linkto, false);\n link.appendChild(document.createTextNode(title));\n link.title = linkto;\n link.date = date;\n link.format = format;\n link.linkformat = linkformat;\n\n // if using a popup menu, replace click handler for dated tiddler link\n // with handler for popup and make link text non-italic (i.e., an 'existing link' look)\n if (mode=="popup") {\n link.onclick = onClickDatePopup;\n link.style.fontStyle="normal";\n }\n\n // format the popup link to show what kind of info it contains (for use with calendar generators)\n if (!autostyle) return;\n if (hasModifieds(date))\n { link.style.fontStyle="normal"; link.style.fontWeight="bold"; }\n if (hasReminders(date))\n { link.style.textDecoration="underline"; }\n if(isToday(date))\n { link.style.border="1px solid black"; }\n\n if( (weekend!=undefined?weekend:isWeekend(date)) && (config.macros.date.weekendbg!="") )\n { place.style.background = config.macros.date.weekendbg; }\n if(isHoliday(date)&&(config.macros.date.holidaybg!=""))\n { place.style.background = config.macros.date.holidaybg; }\n if (hasModifieds(date)&&(config.macros.date.modifiedsbg!=""))\n { place.style.background = config.macros.date.modifiedsbg; }\n if (store.tiddlerExists(linkto)&&(config.macros.date.linkedbg!=""))\n { place.style.background = config.macros.date.linkedbg; }\n if (hasReminders(date)&&(config.macros.date.remindersbg!=""))\n { place.style.background = config.macros.date.remindersbg; }\n if(isToday(date)&&(config.macros.date.todaybg!=""))\n { place.style.background = config.macros.date.todaybg; }\n}\n//}}}\n\n//{{{\nfunction isToday(date) // returns true if date is today\n { var now=new Date(); return ((now-date>=0) && (now-date<86400000)); }\n\nfunction isWeekend(date) // returns true if date is a weekend\n { return (config.macros.date.weekend[date.getDay()]); }\n\nfunction isHoliday(date) // returns true if date is a holiday\n{\n var longHoliday = date.formatString("0MM/0DD/YYYY");\n var shortHoliday = date.formatString("0MM/0DD");\n for(var i = 0; i < config.macros.date.holidays.length; i++) {\n var holiday=config.macros.date.holidays[i];\n if (holiday==longHoliday||holiday==shortHoliday) return true;\n }\n return false;\n}\n//}}}\n\n//{{{\n// Event handler for clicking on a day popup\nfunction onClickDatePopup(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var popup = createTiddlerPopup(this);\n if(popup) {\n // always show dated tiddler link (or just date, if readOnly) at the top...\n if (!readOnly || store.tiddlerExists(this.date.formatString(this.linkformat)))\n createTiddlyLink(popup,this.date.formatString(this.linkformat),true);\n else\n createTiddlyText(popup,this.date.formatString(this.linkformat));\n addModifiedsToPopup(popup,this.date,this.format);\n addRemindersToPopup(popup,this.date,this.linkformat);\n }\n scrollToTiddlerPopup(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n\n//{{{\nfunction indexModifieds() // build list of tiddlers, hash indexed by modification date\n{\n var modifieds= { };\n var tiddlers = store.getTiddlers("title","excludeLists");\n for (var t = 0; t < tiddlers.length; t++) {\n var date = tiddlers[t].modified.formatString("YYYY0MM0DD")\n if (!modifieds[date])\n modifieds[date]=new Array();\n modifieds[date].push(tiddlers[t].title);\n }\n return modifieds;\n}\nfunction hasModifieds(date) // returns true if date has modified tiddlers\n{\n if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();\n return (config.macros.date.modifieds[date.formatString("YYYY0MM0DD")]!=undefined);\n}\n\nfunction addModifiedsToPopup(popup,when,format)\n{\n if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n var mods = config.macros.date.modifieds[when.formatString("YYYY0MM0DD")];\n if (mods) {\n mods.sort();\n var e=createTiddlyElement(popup,"div",null,null,"changes:");\n for(var t=0; t<mods.length; t++) {\n var link=createTiddlyLink(popup,mods[t],false);\n link.appendChild(document.createTextNode(indent+mods[t]));\n createTiddlyElement(popup,"br",null,null,null);\n }\n }\n}\n//}}}\n\n//{{{\nfunction indexReminders(date,leadtime) // build list of tiddlers with reminders, hash indexed by reminder date\n{\n var reminders = { };\n if(window.findTiddlersWithReminders!=undefined) { // reminder plugin is installed\n // DEBUG var starttime=new Date();\n var t = findTiddlersWithReminders(date, [0,leadtime], null, null, 1);\n for(var i=0; i<t.length; i++) reminders[t[i].matchedDate]=true;\n // DEBUG var out="Found "+t.length+" reminders in "+((new Date())-starttime+1)+"ms\sn";\n // DEBUG out+="startdate: "+date.toLocaleDateString()+"\sn"+"leadtime: "+leadtime+" days\sn\sn";\n // DEBUG for(var i=0; i<t.length; i++) { out+=t[i].matchedDate.toLocaleDateString()+" "+t[i].params.title+"\sn"; }\n // DEBUG alert(out);\n }\n return reminders;\n}\n\nfunction hasReminders(date) // returns true if date has reminders\n{\n if (window.reminderCacheForCalendar)\n return window.reminderCacheForCalendar[date]; // use calendar cache\n if (!config.macros.date.reminders)\n config.macros.date.reminders = indexReminders(date,90); // create a 90-day leadtime reminder cache\n return (config.macros.date.reminders[date]);\n}\n\nfunction addRemindersToPopup(popup,when,format)\n{\n if(window.findTiddlersWithReminders==undefined) return; // reminder plugin not installed\n\n var indent = String.fromCharCode(160)+String.fromCharCode(160);\n var reminders=findTiddlersWithReminders(when, [0,31],null,null,1);\n var e=createTiddlyElement(popup,"div",null,null,"reminders:"+(!reminders.length?" none":""));\n for(var t=0; t<reminders.length; t++) {\n link = createTiddlyLink(popup,reminders[t].tiddler,false);\n var diff=reminders[t].diff;\n diff=(diff<1)?"Today":((diff==1)?"Tomorrow":diff+" days");\n var txt=(reminders[t].params["title"])?reminders[t].params["title"]:reminders[t].tiddler;\n link.appendChild(document.createTextNode(indent+diff+" - "+txt));\n createTiddlyElement(popup,"br",null,null,null);\n }\n if (readOnly) return; // omit "new reminder..." link\n var link = createTiddlyLink(popup,indent+"new reminder...",true); createTiddlyElement(popup,"br");\n var title = when.formatString(format);\n link.title="add a reminder to '"+title+"'";\n link.onclick = function() {\n // show tiddler editor\n story.displayTiddler(null, title, 2, null, null, false, false);\n // find body 'textarea'\n var c =document.getElementById("tiddler" + title).getElementsByTagName("*");\n for (var i=0; i<c.length; i++) if ((c[i].tagName.toLowerCase()=="textarea") && (c[i].getAttribute("edit")=="text")) break;\n // append reminder macro to tiddler content\n if (i<c.length) {\n if (store.tiddlerExists(title)) c[i].value+="\sn"; else c[i].value="";\n c[i].value += "<<reminder";\n c[i].value += " day:"+when.getDate();\n c[i].value += " month:"+(when.getMonth()+1);\n c[i].value += " year:"+when.getFullYear();\n c[i].value += ' title:"Enter a title" >>';\n }\n };\n}\n//}}}\n
// // date plugin calendar colors\n//{{{\nconfig.macros.date.holidays=[ "01/01", "07/04", "07/24", "11/24" ]; // NewYearsDay, IndependenceDay(US), Eric's Birthday (hooray!), Thanksgiving(US)\nconfig.macros.date.weekend=[ 1,0,0,0,0,0,1 ]; // day index values: sun=0, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6\nconfig.macros.date.format="YYYY.0MM.0DD"; // default date display format\nconfig.macros.date.linkformat="YYYY.0MM.0DD"; // 'dated tiddler' link format\nconfig.macros.date.weekendbg="#c0c0c0";\nconfig.macros.date.holidaybg="#ffaace";\nconfig.macros.date.modifiedsbg="#bbeeff";\nconfig.macros.date.linkedbg="#babb1e";\nconfig.macros.date.remindersbg="#c0ffee";\n//}}}\n
<html><embed src="http://lads.myspace.com/videos/vplayer.swf" flashvars="m=1014363433&type=video&cp=1" type="application/x-shockwave-flash" width="430" height="346"></embed></html><<tiddler ReplaceTiddlerTitle with: "<span style='white-space:nowrap;font-size:.9em'>Declan说自己有趣的事情</span>">>
[[欢迎]]\n
<script>\n if (!story.findContainingTiddler(place)) return;\n var t=story.findContainingTiddler(place); // get the tiddler element\n for (var i=0; i<t.childNodes.length; i++)\n if (hasClass(t.childNodes[i],"viewer")) t.ondblclick=null; // disable double-click\n</script>
<script>\n var t=story.findContainingTiddler(place); // get the tiddler element\n if (!t) return;\n // if CollapseTiddlerPlugin is installed, double-click on title to 'focus' a tiddler\n if (config.commands.collapseOthers.handler!=undefined)\n t.ondblclick=function(){config.commands.collapseOthers.handler(null,place,t.id.substr(7));}\n</script>
| source file|{{{sunset.jpg}}}|\n| attached on|20 May 2006 by ELSDesignStudios|\n| embedded data|//none//|\n| local link|//none//|\n| remote link|/%REMOTE_LINK%/[[sunset.jpg|sunset.jpg]]|\nimage\n<<<\nusage: {{{[img[tooltip|Edge of Night Background]] or [img[tooltip|Edge of Night Background][link]]}}}\n[img[tooltip|Edge of Night Background]]\n<<<\n
| source file|{{{Edgemarble_black.jpg}}}|\n| attached on|14 July 2006 by ELSDesignStudios|\n| embedded data|//none//|\n| local link|//none//|\n| remote link|/%REMOTE_LINK%/[[Edgemarble_black.jpg|Edgemarble_black.jpg]]|\nimage\n<<<\n\n<<<\n
/***\n!!!!!Code\n***/\n//{{{\nversion.extensions.HTMLFormatting = {major: 2, minor: 1, revision: 4, date: new Date(2006,9,10)};\n\n// find the formatter for HTML and replace the handler\ninitHTMLFormatter();\nfunction initHTMLFormatter()\n{\n for (var i=0; i<config.formatters.length && config.formatters[i].name!="html"; i++);\n if (i<config.formatters.length) config.formatters[i].handler=function(w) {\n if (!this.lookaheadRegExp) // fixup for TW2.0.x\n this.lookaheadRegExp = new RegExp(this.lookahead,"mg");\n this.lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = this.lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n var html=lookaheadMatch[1];\n // optionally suppress wiki-style literal handling of newlines\n // strip any carriage returns added by Internet Explorer's textarea edit field\n // encode newlines as \sn so Internet Explorer's HTML parser won't eat them\n // encode macro brackets (<< and >>) so HTML parser won't eat them\n if (html.indexOf('<hide linebreaks>')!=-1) html=html.replace(regexpNewLine,' ');\n html=html.replace(regexpCarriageReturn,'');\n html=html.replace(regexpNewLine,'\s\sn');\n html=html.replace(/<</g,'%%(').replace(/>>/g,')%%');\n // create span to hold HTML\n // parse HTML and normalize the results\n // walk node tree and call wikify() on each text node\n var e = createTiddlyElement(w.output,"span");\n e.innerHTML=html;\n e.normalize(); \n wikifyTextNodes(e);\n // advance to next parse position\n w.nextMatch = this.lookaheadRegExp.lastIndex;\n }\n }\n}\n\n// wikify text nodes remaining after HTML content is processed (pre-order recursion)\nfunction wikifyTextNodes(theNode)\n{\n // textarea node doesn't get wikified, just decoded... \n if (theNode.nodeName.toLowerCase()=='textarea')\n theNode.value=theNode.value.replace(/\s%%\s(/g,'<<').replace(/\s)\s%%/g,'>>').replace(regexpBackSlashEn,'\sn');\n else for (var i=0;i<theNode.childNodes.length;i++) {\n var theChild=theNode.childNodes.item(i);\n if (theChild.nodeName.toLowerCase()=='option') continue;\n if (theChild.nodeName.toLowerCase()=='select') continue;\n wikifyTextNodes(theChild);\n if (theChild.nodeName=='#text') {\n var txt=theChild.nodeValue;\n // decode macro brackets and newlines\n txt=txt.replace(/\s%%\s(/g,'<<').replace(/\s)\s%%/g,'>>').replace(regexpBackSlashEn,'\sn');\n // replace text node with wikified() span\n var newNode=createTiddlyElement(null,"span");\n theNode.replaceChild(newNode,theChild);\n wikify(txt,newNode);\n }\n }\n}\n//}}}
/***\n|Name|HaloscanMacro|\n|Created by|JimSpeth (modefyied by Bram Chen)|\n|Location|http://end.com/~speth/HaloscanMacro.html|\n|Version|1.0.3|\n|Requires|~TW2.x|\n\n!Examples\n|!Source|!Output|h\n|{{{<<haloscan>>}}}|<<haloscan>>|\n|{{{<<haloscan commentCount>>}}}|<<haloscan commentCount>>|\n|{{{<<haloscan trackbackCount>>}}}|<<haloscan trackbackCount>>|\n\n!Code\n***/\n//{{{\nversion.extensions.haloscan = {major: 1, minor: 0, revision: 4, date: new Date("Feb 16, 2006")};\n\nvar count, hs = [], hstb = [];\nconfig.macros.haloscan = {\n account: "kylexy",\n baseURL: "http://www.haloscan.com/load/",\n haloscanLoaded: false,\n load: function (){\n var haloscanLoaded = config.macros.haloscan.haloscanLoaded;\n if (haloscanLoaded){\n return;\n }\n var account = config.macros.haloscan.account;\n if (!account || (account == "YourName")) {\n account = store.getTiddlerText("SiteTitle");\n }\n var el = document.createElement('script');\n el.language = 'JavaScript'; \n el.type = 'text/javascript'; \n el.src = config.macros.haloscan.baseURL + account;\n document.documentElement.childNodes[0].appendChild(el);\n haloscanLoaded = true;\n },\n \n commentCount: function (id){\n try {count = hs[id];}\n catch (e) {count = "?";}\n if (count === undefined) {\n count = 0;\n }\n return String(count);\n },\n\n trackbackCount: function (id){\n try {count = hstb[id];}\n catch (e) {count = "?";}\n if (count === undefined) {\n count = 0;\n }\n return String(count);\n }\n};\n\nconfig.macros.haloscan.handler = function (place,macroName,params,wikifier,paramString,tiddler)\n{\n var id = story.findContainingTiddler(place).id.substr(7);\n id = encodeURIComponent(String.encodeTiddlyLink(id));\n var result = "";\n \n var account = config.macros.haloscan.account;\n if (!account || (account == "YourName")) {\n account = store.getTiddlerText("SiteTitle");\n }\n switch (params.length)\n {\n case 0:\n // JGS - try using HaloScan(id) and HaloScanTB(id)\n var commentURL = "http://www.haloscan.com/comments/" + account + "/" + id + "/";\n var trackbackURL = "http://www.haloscan.com/tb/" + account + "/" + id + "/";\n// result = "[[评论|" + commentURL + "]] (<<haloscan commentCount>>) or [[引用|" + trackbackURL + "]] (<<haloscan trackbackCount>>)";\n result ="+++[评论]: <html><iframe src=" + commentURL + " width= 480 height = 240></iframe></html>===(<<haloscan commentCount>>) ";\n result +="+++[引用]: <html><iframe src=" + trackbackURL + " width= 480 height = 240></iframe></html>===(<<haloscan trackbackCount>>) ";\n break;\n case 1: \n if (params[0] == "commentCount") {\n result = config.macros.haloscan.commentCount(id);\n }\n else if (params[0] == "trackbackCount") {\n result = config.macros.haloscan.trackbackCount(id);\n }\n else {\n result = "Error: unknown argument: " + params[0];\n }\n break;\n default:\n result = "Error: bad argument count";\n break;\n }\n\n if (result == "?") {\n var refreshCount = "story.forEachTiddler(function(title){story.refreshTiddler(title,DEFAULT_VIEW_TEMPLATE,true)});"\n setTimeout(refreshCount, 500);\n }\n\n wikify(result, place);\n // JGS - use createTiddlyElement(place,"span",null,null,result);\n\n};\n\nconfig.macros.haloscan.load();\n\n//}}}\n\n
<script>\n var s=place.parentNode.style;\n s.backgroundImage="none";\n s.backgroundColor="transparent"\n s.borderColor="transparent";\n s.borderWidth=0;\n s.margin=0;\n s.padding=0;\n</script>
<script>\n // get the tiddler element\n var t=story.findContainingTiddler(place);\n if (t && t.id!="tiddlerHideTiddlerSubtitle") \n for (var i=0; i<t.childNodes.length; i++)\n if (hasClass(t.childNodes[i],"subtitle"))\n t.childNodes[i].style.display="none";\n</script>
<script>\n var t=story.findContainingTiddler(place);\n if (t && t.id!="tiddlerHideTiddlerTags")\n for (var i=0; i<t.childNodes.length; i++)\n if (hasClass(t.childNodes[i],"tagging")||hasClass(t.childNodes[i],"tagged"))\n t.childNodes[i].style.display="none";\n</script>
<script>\n // get the tiddler element\n var t=story.findContainingTiddler(place);\n if (t && t.id!="tiddlerHideTiddlerTitle") \n for (var i=0; i<t.childNodes.length; i++)\n if (hasClass(t.childNodes[i],"title")||hasClass(t.childNodes[i],"subtitle"))\n t.childNodes[i].style.display="none";\n</script>
<script>\n var t=story.findContainingTiddler(place);\n if (t && t.id!="tiddlerHideTiddlerToolbar")\n for (var i=0; i<t.childNodes.length; i++)\n if (hasClass(t.childNodes[i],"toolbar"))\n t.childNodes[i].style.display="none";\n</script>
/***\n''InlineJavascriptPlugin for ~TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#InlineJavascriptPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\n\n<<<\n!!!!!Examples\n<<<\nan "alert" message box:\n><script show>\n alert('InlineJavascriptPlugin: this is a demonstration message');\n</script>\ndynamic output:\n><script show>\n return (new Date()).toString();\n</script>\nwikified dynamic output:\n><script show>\n return "link to current user: [["+config.options.txtUserName+"]]";\n</script>\ndynamic output using 'place' to get size information for current tiddler:\n><script show>\n if (!window.story) window.story=window;\n var title=story.findContainingTiddler(place).id.substr(7);\n return title+" is using "+store.getTiddlerText(title).length+" bytes";\n</script>\ncreating an 'onclick' button/link that runs a script:\n><script label="click here" show>\n if (!window.story) window.story=window;\n alert("Hello World!\snlinktext='"+place.firstChild.data+"'\sntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");\n</script>\nloading a script from a source url:\n>http://www.TiddlyTools.com/demo.js contains:\n>>{{{function demo() { alert('this output is from demo(), defined in demo.js') } }}}\n>>{{{alert('InlineJavascriptPlugin: demo.js has been loaded'); }}}\n><script src="demo.js" show>\n return "loading demo.js..."\n</script>\n><script label="click to execute demo() function" show>\n demo()\n</script>\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.inlineJavascript= {major: 1, minor: 5, revision: 1, date: new Date(2006,6,1)};\n\nconfig.formatters.push( {\n name: "inlineJavascript",\n match: "\s\s<script",\n lookahead: "\s\s<script(?: src=\s\s\s"((?:.|\s\sn)*?)\s\s\s")?(?: label=\s\s\s"((?:.|\s\sn)*?)\s\s\s")?( show)?\s\s>((?:.|\s\sn)*?)\s\s</script\s\s>",\n\n handler: function(w) {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {\n if (lookaheadMatch[1]) { // load a script library\n // make script tag, set src, add to body to execute, then remove for cleanup\n var script = document.createElement("script"); script.src = lookaheadMatch[1];\n document.body.appendChild(script); document.body.removeChild(script);\n }\n if (lookaheadMatch[4]) { // there is script code\n if (lookaheadMatch[3]) // show inline script code in tiddler output\n wikify("{{{\sn"+lookaheadMatch[0]+"\sn}}}\sn",w.output);\n if (lookaheadMatch[2]) { // create a link to an 'onclick' script\n // add a link, define click handler, save code in link (pass 'place'), set link attributes\n var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);\n link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}\n link.code="function _out(place){"+lookaheadMatch[4]+"};_out(this);"\n link.setAttribute("href","javascript:;"); link.setAttribute("title",""); link.style.cursor="pointer";\n }\n else { // run inline script code\n var code="function _out(place){"+lookaheadMatch[4]+"};_out(w.output);"\n code=code.replace(/document.write\s(/gi,'place.innerHTML+=(');\n try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }\n if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);\n }\n }\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n }\n }\n} )\n//}}}\n
<<player id=1 flash http://www.youtube.com/v/mLgIdKTBJbY 425 350>>\n<html><iframe src='http://kylecn.blogspot.com/2006/08/jimmy-kimmel-our-next-guest-tonight.html' scrolling='no' style='width:100%; height:2050px' frameborder='0'></iframe></html>\n
<html>\n<iframe src='http://inblogs.net/kylecn/2006/08/h2o-kyle-kyle-kylekylekyle-kyle.html' scrolling='no' style='width:680px; height:1600px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>><<tiddler ReplaceTiddlerTitle with: "<span style='white-space:nowrap;font-size:.9em'>Kyle. XY.——从0—1的人生记忆</span>">>
<<tiddler SiteMenuLeftSidebar>>\n<<tiddler DoubleClickDisable>>\n<<tiddler 相关链接>>
<<player id=1 flash http://www.youtube.com/v/SC8wOJjg0yo 425 350>>\n2006年7月12日matt在"The Groomsmen"(中文译名:事实)首映现场
<<player id=1 flash http://www.youtube.com/v/Vwho8GZyKK8 425 350>>
<<player id=1 flash http://www.youtube.com/v/WFfKFfg_idQ 425 350>>
/***\n''MoveablePanelPlugin for TiddlyWiki version 2.x''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#MoveablePanelPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n!!!!!Usage\n<<<\nsyntax: {{{<<moveablePanel>>}}}\n\nexample: //using NestedSlidersPlugin 'floating panel' syntax//\n//{{{\n+++^30em^[panel]<<moveablePanel>>this is a headline for the panel\n----\n this is a moveable floating panel\n with a few lines of text\n as an example for you to try...\n //note: this line is really long so you can see what happens to word wrapping when you re-size this panel//\n===\n//}}}\nTry it: +++^30em^[panel]<<moveablePanel>>this is a headline for the panel\n----\n this is a moveable floating panel\n with a few lines of text\n as an example for you to try...\n //note: this line is really long so you can see what happens to word wrapping when you re-size this panel//\n===\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''MoveablePanelPlugin'' (tagged with <<tag systemConfig>>)\nNote: for compatibility, please also install the current version of ''NestedSlidersPlugin''.\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.moveablePanel= {major: 1, minor: 3, revision: 3, date: new Date(2006,5,25)};\n//}}}\n//{{{\nconfig.macros.moveablePanel= { \n handler:\n function(place,macroName,params) {\n var p=this.getPanel(place); if (!p) return;\n\n // remember original panel event handlers, size, location, border\n if (!p.saved) p.saved= {\n mouseover: p.onmouseover,\n mouseout: p.onmouseout,\n dblclick: p.ondblclick,\n top: p.style.top,\n left: p.style.left,\n width: p.style.width,\n height: p.style.height,\n position: p.style.position,\n border: p.style.border\n };\n\n // create control menu items\n var menupos=p.className=="floatingPanel"?"float:right;":"position:absolute;right:2em;top:3em;";\n var menustyle=p.className!="floatingPanel"?'style="border:1px solid #666;background:#ccc;color:#000;padding:0px .5em;"':"";\n var html='<div style="font-size:7pt;display:none;'+menupos+'">&nbsp;';\n if (p.className=="floatingPanel")\n html+='<a href="javascript:;" title="reduce panel size" '+menustyle\n +' onclick="return config.macros.moveablePanel.foldPanel(this,event)">折叠</a>&nbsp; ';\n if (!config.browser.isIE)\n html+='<a href="javascript:;" title="keep panel in view when scrolling"'+menustyle\n +' onclick="return config.macros.moveablePanel.hoverPanel(this,event)">跟随</a>&nbsp; ';\n if (p.className=="floatingPanel")\n html+='<a href="javascript:;" title="close panel and reset to default size and position"'+menustyle\n +' onclick="return config.macros.moveablePanel.closePanel(this,event)">关闭</a>';\n else\n html+='<a href="javascript:;" title="reset panel to default size and position"'+menustyle\n +' onclick="return config.macros.moveablePanel.closePanel(this,event)">dock</a>';\n html+='</div>';\n p.menudiv=createTiddlyElement(place,"span");\n p.menudiv.innerHTML=html;\n\n // init mouse handling and tooltip\n p.title="drag edge to move, shift key=stretch, double-click=max/restore";\n p.onmouseover=function(event) {\n if (this.className=="floatingPanel"||this.style.position=="absolute"||this.style.position=="fixed") {\n if (this.className!="floatingPanel") this.style.border="1px dotted #999"; // border around tiddler\n this.menudiv.firstChild.style.display="inline";\n }\n if (this.saved.mouseover) return this.saved.mouseover(event);\n };\n p.onmouseout=function(event) {\n this.menudiv.firstChild.style.display="none";\n if (this.className!="floatingPanel") this.style.border=this.saved.border;\n if (this.saved.mouseout) return this.saved.mouseout(event);\n };\n p.ondblclick=function(event) {\n if (!config.macros.moveablePanel.maximizePanel(this,event)) return false; // processed\n return this.saved.dblclick?this.saved.dblclick(event):true;\n };\n p.onmousemove=function(event) { return config.macros.moveablePanel.setCursorPanel(this,event); };\n p.onmousedown=function(event) { return config.macros.moveablePanel.moveOrSizePanel(this,event); };\n },\n\n getPanel:\n function(place) {\n var p=place; while (p && p.className!='floatingPanel') p=p.parentNode; if (p) return p; // floatingPanel\n p=story.findContainingTiddler(place); if (!p || !store.getTiddler(p.getAttribute("tiddler"))) return null; // not in a tiddler\n\n // moveable **tiddlers** in IE have LOTS of problems... DISABLED FOR NOW... but floating panels still work in IE\n if (config.browser.isIE) return null;\n\n // tiddlers tagged (e.g. with "moveable") to allow movement? use null or "" to bypass tag check\n var tag="moveable"; if (!tag || !tag.trim().length) return p;\n return (store.getTiddler(p.getAttribute("tiddler")).tags.find(tag)!=null)?p:null; // tiddler is tagged for moving\n },\n\n processed:\n function(event) {\n event.cancelBubble=true; if (event.stopPropagation) event.stopPropagation(); return false;\n },\n\n getClientWidth:\n function() {\n if(document.width!=undefined) return document.width;\n if(document.documentElement && document.documentElement.clientWidth) return document.documentElement.clientWidth;\n if(document.body && document.body.clientWidth) return document.body.clientWidth;\n if(window.innerWidth!=undefined) return window.innerWidth;\n return 100; // should never get here\n },\n\n closePanel:\n function(place,event) {\n if (!event) var event=window.event;\n var p=this.getPanel(place); if (!p) return true;\n if (p.hover) this.hoverPanel(p.hoverButton,event); \n if (p.folded) this.foldPanel(p.foldButton,event); \n p.maxed=false; \n p.style.top=p.saved.top;\n p.style.left=p.saved.left;\n p.style.width=p.saved.width;\n p.style.height=p.saved.height;\n p.style.position=p.saved.position;\n if (p.button) { p.button.focus(); onClickNestedSlider({target:p.button}); } // click on slider "button" (if any) to close the panel\n return this.processed(event);\n },\n\n foldPanel:\n function(place,event) {\n if (!event) var event=window.event;\n var p=this.getPanel(place); if (!p) return true;\n if (!p.foldButton) p.foldButton=place;\n if (p.folded) {\n p.style.height=p.folded_savedheight;\n p.style.overflow=p.folded_savedoverflow;\n } else {\n p.folded_savedheight=p.style.height; p.style.height="1em"; \n p.folded_savedoverflow=p.style.overflow; p.style.overflow="hidden";\n }\n p.folded=!p.folded;\n place.innerHTML=p.folded?"放开":"折叠";\n place.title=p.folded?"restore panel size":"reduce panel size";\n return this.processed(event);\n },\n\n hoverPanel:\n function(place,event) {\n if (config.browser.isIE) { return this.processed(event); } // 'fixed' position is not handled properly by IE :-(\n if (!event) var event=window.event;\n var p=this.getPanel(place); if (!p) return true;\n if (!p.hoverButton) p.hoverButton=place;\n if (p.hover)\n p.style.position=p.hover_savedposition;\n else\n { p.hover_savedposition=p.style.position; p.style.position="fixed"; }\n p.hover=!p.hover;\n place.innerHTML=p.hover?"不跟随":"跟随";\n place.title=p.hover?"make panel move with page when scrolling":"keep panel in view when scrolling page";\n return this.processed(event);\n },\n\n maximizePanel:\n function(place,event) {\n if (!event) var event=window.event;\n var p=this.getPanel(place); if (!p) return true;\n var left=findPosX(p); var top=findPosY(p);\n var width=p.offsetWidth; var height=p.offsetHeight;\n var x=!config.browser.isIE?event.pageX:event.clientX;\n var y=!config.browser.isIE?event.pageY:event.clientY;\n if (x<left||x>=left+width||y<top||y>=top+height) return true; // not inside panel, let mousedown bubble through\n var edgeWidth=10; var edgeHeight=10;\n var isTop=(y-top<edgeHeight);\n var isLeft=(x-left<edgeWidth);\n var isBottom=(top+height-y<edgeHeight);\n var isRight=(left+width-x<edgeWidth);\n if (!(isTop||isLeft||isBottom||isRight))\n return true; // not near an edge... let double click bubble through\n if (p.folded) this.foldPanel(p.foldButton,event); // unfold panel first (if needed)\n if (p.maxed) {\n p.style.top=p.max_savedtop;\n p.style.left=p.max_savedleft;\n p.style.width=p.max_savedwidth;\n p.style.height=p.max_savedheight;\n p.style.position=p.max_savedposition;\n } else {\n p.max_savedwidth=p.style.width;\n p.max_savedheight=p.style.height;\n p.max_savedtop=p.style.top;\n p.max_savedleft=p.style.left;\n p.max_savedposition=p.style.position;\n // IE gets the percentage stretch wrong if floating panel is inside a table\n p.style.width=config.browser.isIE?(getClientWidth()*0.95+"px"):"95%";\n p.style.height="95%";\n p.style.top=p.style.left='1em';\n p.style.position="absolute";\n }\n p.maxed=!p.maxed;\n return this.processed(event);\n },\n\n setCursorPanel:\n function(place,event) {\n if (!event) var event=window.event;\n var p=this.getPanel(place); if (!p) return true;\n var left=findPosX(p); var top=findPosY(p);\n var width=p.offsetWidth; var height=p.offsetHeight;\n var x=!config.browser.isIE?event.pageX:event.clientX;\n var y=!config.browser.isIE?event.pageY:event.clientY;\n if (x<left||x>=left+width||y<top||y>=top+height) return true; // not inside panel, let mousedown bubble through\n var edgeWidth=10; var edgeHeight=10;\n var isTop=(y-top<edgeHeight);\n var isLeft=(x-left<edgeWidth);\n var isBottom=(top+height-y<edgeHeight);\n var isRight=(left+width-x<edgeWidth);\n if (!(isTop||isLeft||isBottom||isRight))\n { p.style.cursor="auto"; if (!p.savedtitle) p.savedtitle=p.title; p.title=""; }\n else {\n p.style.cursor=!event.shiftKey?"move":((isTop?'n':(isBottom?'s':''))+(isLeft?'w':(isRight?'e':''))+'-resize');\n if (p.savedtitle) p.title=p.savedtitle;\n }\n return true; // let mouseover event bubble through\n },\n\n moveOrSizePanel:\n function(place,event) {\n if (!event) var event=window.event;\n var p=this.getPanel(place); if (!p) return true;\n var left=findPosX(p); var top=findPosY(p);\n var width=p.offsetWidth; var height=p.offsetHeight;\n var x=!config.browser.isIE?event.pageX:event.clientX;\n var y=!config.browser.isIE?event.pageY:event.clientY;\n if (x<left||x>=left+width||y<top||y>=top+height) return true; // not inside panel, let mousedown bubble through\n var edgeWidth=10; var edgeHeight=10;\n var isTop=(y-top<edgeHeight);\n var isLeft=(x-left<edgeWidth);\n var isBottom=(top+height-y<edgeHeight);\n var isRight=(left+width-x<edgeWidth);\n if (!(isTop||isLeft||isBottom||isRight)) return true; // not near an edge... let mousedown bubble through\n \n // when resizing, change cursor to show directional (NSEW) "drag arrows"\n var sizing=event.shiftKey; // remember this for use during mousemove tracking\n if (sizing) p.style.cursor=((isTop?'n':(isBottom?'s':''))+(isLeft?'w':(isRight?'e':''))+'-resize');\n \n var adjustLeft=0; var adjustTop=0;\n var pp=p.parentNode; while (pp && pp.className!="floatingPanel") pp=pp.parentNode;\n if (pp) { adjustLeft=findPosX(pp); adjustTop=findPosY(pp); }\n \n // start tracking mousemove events\n config.macros.moveablePanel.activepanel=p;\n var target=p; // if 'capture' handling not supported, track within panel only\n if (document.body.setCapture) { document.body.setCapture(); var target=document.body; } // IE\n if (window.captureEvents) { window.captureEvents(Event.MouseMove|Event.MouseUp,true); var target=window; } // moz\n if (target.onmousemove!=undefined) target.saved_mousemove=target.onmousemove;\n target.onmousemove=function(e){\n if (!e) var e=window.event;\n var p=config.macros.moveablePanel.activepanel;\n \n // PROBLEM: p.offsetWidth and p.offsetHeight do not seem to account for padding or borders\n // WORKAROUND: subtract padding and border (in px) when calculating new panel width and height\n // TBD: get these values from p.style... convert to px as needed.\n var paddingWidth=10.6667; var paddingHeight=10.6667;\n var borderWidth=1; var borderHeight=1;\n var adjustWidth=-(paddingWidth*2+borderWidth*2);\n var adjustHeight=-(paddingHeight*2+borderHeight*2);\n \n if (p.style.position!="absolute") { // convert relative DIV to movable absolute DIV\n p.style.position="absolute";\n p.style.left=left+"px"; p.style.top=top+"px";\n p.style.width=(width+adjustWidth)+"px"; p.style.top=(height+adjustHeight)+"px";\n }\n var newX=!config.browser.isIE?e.pageX:e.clientX;\n var newY=!config.browser.isIE?e.pageY:e.clientY;\n if (sizing) { // resize panel\n // don't let panel get smaller than edge "grab" zones\n var minWidth=edgeWidth*2-adjustWidth;\n var minHeight=edgeHeight*2-adjustHeight;\n p.maxed=false; // make sure panel is not maximized\n if (p.folded) this.foldPanel(p.foldButton,e); // make sure panel is unfolded\n if (isBottom) var newHeight=height+newY-y+1;\n if (isTop) var newHeight=height-newY+y+1;\n if (isLeft) var newWidth=width-newX+x+1;\n if (isRight) var newWidth=width+newX-x+1;\n if (isLeft||isRight) p.style.width=(newWidth>minWidth?newWidth:minWidth)+adjustWidth+"px";\n if (isLeft) p.style.left=left-adjustLeft+newX-x+1+"px";\n if (isTop||isBottom) p.style.height=(newHeight>minHeight?newHeight:minHeight)+adjustHeight+"px";\n if (isTop) p.style.top=top-adjustTop+newY-y+1+"px";\n } else { // move panel\n p.style.top=top-adjustTop+newY-y+1+"px";\n p.style.left=left-adjustLeft+newX-x+1+"px";\n }\n var status=sizing?("size: "+p.style.width+","+p.style.height):("pos: "+p.style.left+","+p.style.top);\n window.status=status.replace(/(\s.[0-9]+)|px/g,""); // remove decimals and "px"\n return config.macros.moveablePanel.processed(e);\n };\n \n // stop tracking mousemove events\n if (target.onmouseup!=undefined) target.saved_mouseup=target.onmouseup;\n target.onmouseup=function(e){\n if (!e) var e=window.event;\n if (this.releaseCapture) this.releaseCapture(); // IE\n if (this.releaseEvents) this.releaseEvents(Event.MouseMove|Event.MouseUp); // moz\n this.onmousemove=this.saved_mousemove?this.saved_mousemove:null;\n this.onmouseup=this.saved_mouseup?this.saved_mouseup:null;\n config.macros.moveablePanel.activepanel=null;\n window.status="";\n return config.macros.moveablePanel.processed(e);\n };\n return this.processed(event); // mousedown handled\n }\n};\n//}}}
/***\n''NestedSlidersPlugin for TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman\nsource: http://www.TiddlyTools.com/#NestedSlidersPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n++++!!!!![Configuration]>\nDebugging messages for 'lazy sliders' deferred rendering:\n<<option chkDebugLazySliderDefer>> show debugging alert when deferring slider rendering\n<<option chkDebugLazySliderRender>> show debugging alert when deferred slider is actually rendered\n===\n++++!!!!![Examples]>\nsimple in-line slider: \n{{{\n+++\n content\n===\n}}}\n+++\n content\n===\n----\nuse a custom label and tooltip: \n{{{\n+++[label|tooltip]\n content\n===\n}}}\n+++[label|tooltip]\n content\n===\n----\ncontent automatically blockquoted: \n{{{\n+++>\n content\n===\n}}}\n+++>\n content\n===\n----\nall options combined //(default open, cookie, heading, sized floater, rollover, label/tooltip/key, blockquoted, deferred)//\n{{{\n++++(testcookie)!!!^30em^*[label=Z|click or press Alt-Z to open]>...\n content\n===\n}}}\n++++(testcookie)!!!^30em^*[label=Z|click or press Alt-Z to open]>...\n content\n===\n----\ncomplex nesting example:\n{{{\n+++^[get info...=I|click for information or press Alt-I]\n put some general information here, plus a floating slider with more specific info:\n +++^10em^[view details...|click for details]\n put some detail here, which could include a rollover with a +++^25em^*[glossary definition]explaining technical terms===\n ===\n===\n}}}\n+++^[get info...=I|click for information or press Alt-I]\n put some general information here, plus a floating slider with more specific info:\n +++^10em^[view details...|click for details]\n put some detail here, which could include a rollover with a +++^25em^*[glossary definition]explaining technical terms===\n ===\n===\n----\nnested floaters\n>menu: <<tiddler NestedSlidersExample>>\n(see [[NestedSlidersExample]] for definition)\n----\n===\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''NestedSlidersPlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Credits\n<<<\nThis feature was implemented by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]] with initial research and suggestions from RodneyGomes, GeoffSlocock, and PaulPetterson.\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.nestedSliders = {major: 1, minor: 9, revision: 3, date: new Date(2006,7,25)};\n//}}}\n\n//{{{\n// options for deferred rendering of sliders that are not initially displayed\nif (config.options.chkDebugLazySliderDefer==undefined) config.options.chkDebugLazySliderDefer=false;\nif (config.options.chkDebugLazySliderRender==undefined) config.options.chkDebugLazySliderRender=false;\n\n// default styles for 'floating' class\nsetStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \s\n background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");\n//}}}\n\n//{{{\nconfig.formatters.push( {\n name: "nestedSliders",\n match: "\s\sn?\s\s+{3}",\n terminator: "\s\ss*\s\s={3}\s\sn?",\n lookahead: "\s\sn?\s\s+{3}(\s\s+)?(\s\s([^\s\s)]*\s\s))?(\s\s!*)?(\s\s^(?:[^\s\s^\s\s*\s\s[\s\s>]*\s\s^)?)?(\s\s*)?(\s\s[[^\s\s]]*\s\s])?(\s\s>)?(\s\s.\s\s.\s\s.)?\s\ss*",\n handler: function(w)\n {\n var lookaheadRegExp = new RegExp(this.lookahead,"mg");\n lookaheadRegExp.lastIndex = w.matchStart;\n var lookaheadMatch = lookaheadRegExp.exec(w.source)\n if(lookaheadMatch && lookaheadMatch.index == w.matchStart)\n {\n // location for rendering button and panel\n var place=w.output;\n\n // default to closed, no cookie, no accesskey\n var show="none"; var title=">"; var tooltip="show"; var cookie=""; var key="";\n\n // extra "+", default to open\n if (lookaheadMatch[1])\n { show="block"; title="<"; tooltip="hide"; }\n\n // cookie, use saved open/closed state\n if (lookaheadMatch[2]) {\n cookie=lookaheadMatch[2].trim().slice(1,-1);\n cookie="chkSlider"+cookie;\n if (config.options[cookie]==undefined)\n { config.options[cookie] = (show=="block") }\n if (config.options[cookie])\n { show="block"; title="<"; tooltip="hide"; }\n else\n { show="none"; title=">"; tooltip="show"; }\n }\n\n // parse custom label/tooltip/accesskey: [label=X|tooltip]\n if (lookaheadMatch[6]) {\n title = lookaheadMatch[6].trim().slice(1,-1);\n var pos=title.indexOf("|");\n if (pos!=-1) { tooltip = title.substr(pos+1,title.length); title=title.substr(0,pos); }\n if (title.substr(title.length-2,1)=="=") { key=title.substr(title.length-1,1); title=title.slice(0,-2); }\n if (pos==-1) tooltip += " "+title; // default tooltip: "show/hide <title>"\n }\n\n // create the button\n if (lookaheadMatch[3]) { // use "Hn" header format instead of button/link\n var lvl=(lookaheadMatch[3].length>6)?6:lookaheadMatch[3].length;\n var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,null,title);\n btn.onclick=onClickNestedSlider;\n btn.setAttribute("href","javascript:;");\n btn.setAttribute("title",tooltip);\n }\n else\n var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider);\n\n // set extra button attributes\n btn.sliderCookie = cookie; // save the cookiename (if any) in the button object\n btn.defOpen=lookaheadMatch[1]!=null; // save default open/closed state (boolean)\n btn.keyparam=key; // save the access key letter ("" if none)\n if (key.length) {\n btn.setAttribute("accessKey",key); // init access key\n btn.onfocus=function(){this.setAttribute("accessKey",this.keyparam);}; // **reclaim** access key on focus\n }\n\n // "non-click" MouseOver open/close slider\n if (lookaheadMatch[5]) btn.onmouseover=onClickNestedSlider;\n\n // create slider panel\n var panelClass=lookaheadMatch[4]?"floatingPanel":"sliderPanel";\n var panel=createTiddlyElement(place,"div",null,panelClass,null);\n panel.button = btn; // so the slider panel know which button it belongs to\n panel.defaultPanelWidth=(lookaheadMatch[4] && lookaheadMatch[4].length>2)?lookaheadMatch[4].slice(1,-1):""; // save requested panel size\n btn.sliderPanel=panel;\n panel.style.display = show;\n panel.style.width=panel.defaultPanelWidth;\n\n // render slider (or defer until shown) \n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n if ((show=="block")||!lookaheadMatch[8]) {\n // render now if panel is supposed to be shown or NOT deferred rendering\n w.subWikify(lookaheadMatch[7]?createTiddlyElement(panel,"blockquote"):panel,this.terminator);\n // align slider/floater position with button\n adjustSliderPos(place,btn,panel,panelClass);\n }\n else {\n var src = w.source.substr(w.nextMatch);\n var endpos=findMatchingDelimiter(src,"+++","===");\n panel.setAttribute("raw",src.substr(0,endpos));\n panel.setAttribute("blockquote",lookaheadMatch[7]?"true":"false");\n panel.setAttribute("rendered","false");\n w.nextMatch += endpos+3;\n if (w.source.substr(w.nextMatch,1)=="\sn") w.nextMatch++;\n if (config.options.chkDebugLazySliderDefer) alert("deferred '"+title+"':\sn\sn"+panel.getAttribute("raw"));\n }\n }\n }\n }\n)\n\n// TBD: ignore 'quoted' delimiters (e.g., "{{{+++foo===}}}" isn't really a slider)\nfunction findMatchingDelimiter(src,starttext,endtext) {\n var startpos = 0;\n var endpos = src.indexOf(endtext);\n // check for nested delimiters\n while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {\n // count number of nested 'starts'\n var startcount=0;\n var temp = src.substring(startpos,endpos-1);\n var pos=temp.indexOf(starttext);\n while (pos!=-1) { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }\n // set up to check for additional 'starts' after adjusting endpos\n startpos=endpos+endtext.length;\n // find endpos for corresponding number of matching 'ends'\n while (startcount && endpos!=-1) {\n endpos = src.indexOf(endtext,endpos+endtext.length);\n startcount--;\n }\n }\n return (endpos==-1)?src.length:endpos;\n}\n//}}}\n\n//{{{\nwindow.onClickNestedSlider=function(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var theLabel = theTarget.firstChild.data;\n var theSlider = theTarget.sliderPanel\n var isOpen = theSlider.style.display!="none";\n // if using default button labels, toggle labels\n if (theLabel==">") theTarget.firstChild.data = "<";\n else if (theLabel=="<") theTarget.firstChild.data = ">";\n // if using default tooltips, toggle tooltips\n if (theTarget.getAttribute("title")=="show")\n theTarget.setAttribute("title","hide");\n else if (theTarget.getAttribute("title")=="hide")\n theTarget.setAttribute("title","show");\n if (theTarget.getAttribute("title")=="show "+theLabel)\n theTarget.setAttribute("title","hide "+theLabel);\n else if (theTarget.getAttribute("title")=="hide "+theLabel)\n theTarget.setAttribute("title","show "+theLabel);\n // deferred rendering (if needed)\n if (theSlider.getAttribute("rendered")=="false") {\n if (config.options.chkDebugLazySliderRender)\n alert("rendering '"+theLabel+"':\sn\sn"+theSlider.getAttribute("raw"));\n var place=theSlider;\n if (theSlider.getAttribute("blockquote")=="true")\n place=createTiddlyElement(place,"blockquote");\n wikify(theSlider.getAttribute("raw"),place);\n theSlider.setAttribute("rendered","true");\n }\n // show/hide the slider\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n theSlider.style.display = isOpen ? "none" : "block";\n // reset to default width (might have been changed via plugin code)\n theSlider.style.width=theSlider.defaultPanelWidth;\n // align slider/floater position with target button\n if (!isOpen) adjustSliderPos(theSlider.parentNode,theTarget,theSlider,theSlider.className);\n // if showing panel, set focus to first 'focus-able' element in panel\n if (theSlider.style.display!="none") {\n var ctrls=theSlider.getElementsByTagName("*");\n for (var c=0; c<ctrls.length; c++) {\n var t=ctrls[c].tagName.toLowerCase();\n if ((t=="input" && ctrls[c].type!="hidden") || t=="textarea" || t=="select")\n { ctrls[c].focus(); break; }\n }\n }\n if (this.sliderCookie && this.sliderCookie.length) {\n config.options[this.sliderCookie]=!isOpen;\n if (config.options[this.sliderCookie]!=this.defOpen)\n saveOptionCookie(this.sliderCookie);\n else { // remove cookie if slider is in default display state\n var ex=new Date(); ex.setTime(ex.getTime()-1000);\n document.cookie = this.sliderCookie+"=novalue; path=/; expires="+ex.toGMTString();\n }\n }\n return false;\n}\n\n// hijack animation handler 'stop' handler so overflow is visible after animation has completed\nSlider.prototype.coreStop = Slider.prototype.stop;\nSlider.prototype.stop = function() { this.coreStop(); this.element.style.overflow = "visible"; }\n\n// adjust panel position based on button position\nif (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel,panelClass) {\n if (panelClass=="floatingPanel") {\n var left=0;\n var top=btn.offsetHeight; \n if (place.style.position!="relative") {\n var left=findPosX(btn);\n var top=findPosY(btn)+btn.offsetHeight;\n var p=place; while (p && p.className!='floatingPanel') p=p.parentNode;\n if (p) { left-=findPosX(p); top-=findPosY(p); }\n }\n if (left+panel.offsetWidth > getWindowWidth()) left=getWindowWidth()-panel.offsetWidth-10;\n panel.style.left=left+"px"; panel.style.top=top+"px";\n }\n}\n\nfunction getWindowWidth() {\n if(document.width!=undefined)\n return document.width; // moz (FF)\n if(document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )\n return document.documentElement.clientWidth; // IE6\n if(document.body && ( document.body.clientWidth || document.body.clientHeight ) )\n return document.body.clientWidth; // IE4\n if(window.innerWidth!=undefined)\n return window.innerWidth; // IE - general\n return 0; // unknown\n}\n//}}}
[[StyleSheetAdjustments]]\n[[BrightText]]\n/* ==== Edge of Night ==== */\n/*{{{*/\nbody\n { background-image: url('[[Edge of Night Background]]'); background-color:#113; }\n.menubox\n { background-image: none; background-color: #002; }\n#mainMenu .menubox\n { background-image: url('[[Edge of Night Background]]'); }\n.viewer\n { background-image: url('[[EdgeMarbleBlack]]'); background-color:#111; border: 1px solid #999; -moz-border-radius:1em; padding:1em; }\n.header\n { background-image: none; background-color:transparent; color:#ccf; border:0; }\n#siteSubtitle\n { color:#0c0; }\n.floatingPanel, .attachPanel, #importPanel, #exportPanel,\n { background: #eee; background-image: url('[[TexturesParchmentGray]]');}\n.floatingPanel a, .attachPanel a, #importPanel a, #exportPanel a, \n.floatingPanel .button, .attachPanel .button, #importPanel .button, #exportPanel .button,\n.floatingPanel .tiddlyLinkExisting, .attachPanel .tiddlyLinkExisting, #importPanel .tiddlyLinkExisting, #exportPanel .tiddlyLinkExisting,\n { color:#009; }\n.siteMenu .floatingPanel, #messageArea \n { background: #eef; }\n.tiddlyCard { background:#ffd; }\n.groupbox { background:#ddf; }\n\n.viewer h1,.viewer h2,.viewer h3,.viewer h4,.viewer h5 { background: #666; color:#fff; }\n\n#sidebarTabs .tabContents \n { background-image:none; background-color:#113; color:#fff; }\n#sidebarTabs .tabContents a, #sidebarTabs .tabContents .button, #sidebarTabs .tabContents .tiddlyLinkExisting\n { color:#99f; }\n/*}}}*/
这些设置将缓存于浏览器\n请签名<<option txtUserName>>\n (范例:用户名)\n\n<<option chkRegExpSearch>> 正规式搜寻\n<<option chkCaseSensitiveSearch>> 区分大小写搜寻\n<<option chkAnimate>> 使用动画显示\n<<tiddler ToggleTopButton>>\n<<tiddler ToggleSiteTitles>>\n<<tiddler ToggleSiteMenu>>\n<<tiddler ToggleReadOnly>>\n<<option chkSinglePageMode>>一次显示只一个页面\n<<option chkTopOfPageMode>> 页面显示总是置顶\n[[进阶选项]]
/***\n''PlayerPlugin for TiddlyWiki version 1.2.x and 2.x''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#PlayerPlugin \nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\nstatus: ''ALPHA / EXPERIMENTAL''\n!!!!!Usage\n<<<\n{{{<<player [type] [URL] [width] [height] [hidecontrols]>>}}}\n\n<<<\n!!!!!Configuration\n<<<\nDefault player size:\nwidth: <<option txtPlayerDefaultWidth>> height: <<option txtPlayerDefaultHeight>>\n<<<\n!!!!!Examples\n<<<\n+++[Windows Media]...\nTimes Square Live Webcam\n{{{<<player id=1 http://www.earthcam.com/usa/newyork/timessquare/asx/tsq_stream.asx>>}}}\n<<player id=1 http://www.earthcam.com/usa/newyork/timessquare/asx/tsq_stream.asx>>\n===\n+++[RealOne]...\nBBC London: Live and Recorded news\n{{{<<player id=2 http://www.bbc.co.uk/london/realmedia/news/tvnews.ram>>}}}\n<<player id=2 http://www.bbc.co.uk/london/realmedia/news/tvnews.ram>>\n===\n+++[Quicktime]...\nAmerica Free TV: Classic Comedy\n{{{<<player id=3 http://www.americafree.tv/unicast_mov/AmericaFreeTVComedy.mov>>}}}\n<<player id=3 http://www.americafree.tv/unicast_mov/AmericaFreeTVComedy.mov>>\n===\n+++[Flash]...\nAsteroids arcade game\n{{{<<player id=4 http://www.80smusiclyrics.com/games/asteroids/asteroids.swf 400 300>>}}}\n<<player id=4 http://www.80smusiclyrics.com/games/asteroids/asteroids.swf 400 300>>\nGoogle Video\n{{{<<player id=5 flash http://video.google.com/googleplayer.swf?videoUrl=http%3A%2F%2Fvp.video.google.com%2Fvideodownload%3Fversion%3D0%26secureurl%3DoQAAAIVnUNP6GYRY8YnIRNPe4Uk5-j1q1MVpJIW4uyEFpq5Si0hcSDuig_JZcB9nNpAhbScm9W_8y_vDJQBw1DRdCVbXl-wwm5dyUiiStl_rXt0ATlstVzrUNC4fkgK_j7nmse7kxojRj1M3eo3jXKm2V8pQjWk97GcksMFFwg7BRAXmRSERexR210Amar5LYzlo9_k2AGUWPLyRhMJS4v5KtDSvNK0neL83ZjlHlSECYXyk%26sigh%3Dmpt2EOr86OAUNnPQ3b9Tr0wnDms%26begin%3D0%26len%3D429700%26docid%3D-914679554478687740&thumbnailUrl=http%3A%2F%2Fvideo.google.com%2FThumbnailServer%3Fcontentid%3De7e77162deb04c42%26second%3D5%26itag%3Dw320%26urlcreated%3D1144620753%26sigh%3DC3fqXPPS1tFiUqLzmkX3pdgYc2Y&playerId=-91467955447868774 400 326>>}}}\n<<player id=5 flash http://video.google.com/googleplayer.swf?videoUrl=http%3A%2F%2Fvp.video.google.com%2Fvideodownload%3Fversion%3D0%26secureurl%3DoQAAAIVnUNP6GYRY8YnIRNPe4Uk5-j1q1MVpJIW4uyEFpq5Si0hcSDuig_JZcB9nNpAhbScm9W_8y_vDJQBw1DRdCVbXl-wwm5dyUiiStl_rXt0ATlstVzrUNC4fkgK_j7nmse7kxojRj1M3eo3jXKm2V8pQjWk97GcksMFFwg7BRAXmRSERexR210Amar5LYzlo9_k2AGUWPLyRhMJS4v5KtDSvNK0neL83ZjlHlSECYXyk%26sigh%3Dmpt2EOr86OAUNnPQ3b9Tr0wnDms%26begin%3D0%26len%3D429700%26docid%3D-914679554478687740&thumbnailUrl=http%3A%2F%2Fvideo.google.com%2FThumbnailServer%3Fcontentid%3De7e77162deb04c42%26second%3D5%26itag%3Dw320%26urlcreated%3D1144620753%26sigh%3DC3fqXPPS1tFiUqLzmkX3pdgYc2Y&playerId=-91467955447868774 400 326>>\nYouTube Video\n{{{<<player id=6 flash http://www.youtube.com/v/OdT9z-JjtJk 400 300>>}}}\n<<player id=6 flash http://www.youtube.com/v/OdT9z-JjtJk 400 300>>\n===\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].\n<<<\n!!!!!Code\n***/\n\n// // macro definition\n\n//{{{\nversion.extensions.player = {major: 0, minor: 8, revision: 0, date: new Date(2006,3,7)};\n\nconfig.macros.player = {};\nconfig.macros.player.html = {};\nconfig.macros.player.handler= function(place,macroName,params) {\n var id=null;\n if (params[0].substr(0,3)=="id=") id=params.shift().substr(3);\n var type="";\n if ((params[0]=="windows")||(params[0]=="realone")||(params[0]=="quicktime")||(params[0]=="flash")) type=params.shift();\n var url=params.shift(); if (!url || !url.trim().length) url="";\n var width=params.shift();\n var height=params.shift();\n var show=(params.shift()=='hidecontrols')?"0":"1"; \n var extras=""; while (params[0]!=undefined) extras+="<param name='"+params.shift()+"' value='"+params.shift()+"'> ";\n this.loadURL(place,id,type,url,width,height,show,extras);\n}\n\nif (config.options.txtPlayerDefaultWidth==undefined) config.options.txtPlayerDefaultWidth="100%";\nif (config.options.txtPlayerDefaultHeight==undefined) config.options.txtPlayerDefaultHeight="480"; // can't use "100%"... player height doesn't stretch right :-(\n\nconfig.macros.player.loadURL=function(place,id,type,url,width,height,show,extras) {\n\n if (id==undefined) id="tiddlyPlayer";\n if (!width) var width=config.options.txtPlayerDefaultWidth;\n if (!height) var height=config.options.txtPlayerDefaultHeight;\n if (url && (!type || !type.length)) {\n if ((url.indexOf('mms')!=-1)||(url.indexOf('.asx')!=-1)||(url.indexOf('.wvx')!=-1)||(url.indexOf('.wmv')!=-1)||(url.indexOf('.mp3')!=-1))\n var type="windows";\n else if ((url.indexOf('rtsp')!=-1)||(url.indexOf('.ram')!=-1)||(url.indexOf('.rpm')!=-1)||(url.indexOf('.rm' )!=-1)||(url.indexOf('.ra' )!=-1))\n var type="realone";\n else if ((url.indexOf('.mov')!=-1)||(url.indexOf('.qt' )!=-1))\n var type="quicktime";\n else if ((url.indexOf('.swf')!=-1)||(url.indexOf('.flv')!=-1))\n var type="flash";\n }\n if (!type) var type="none";\n if (!url) var url="";\n if (show===undefined) var show=true;\n if (!extras) var extras="";\n if (type=="none" && url.trim().length) url="<br>unrecognized media type:<br>"+url;\n if (type=="realone") height-=show?60:0; // leave room for controls\n if (type=="windows") show=show?"1":"0"; // player-specific param value\n if (type=="realone") show=show?"block":"none";\n if (type=="quicktime") show=show?"true":"false";\n\n // create containing div for player HTML\n // and add or replace player in TW DOM structure\n var newplayer = document.createElement("div");\n newplayer.playerType=type;\n newplayer.setAttribute("id",id+"_div");\n var existing = document.getElementById(id+"_div");\n if (existing && !place) place=existing.parentNode;\n if (!existing)\n place.appendChild(newplayer);\n else {\n if (place==existing.parentNode) place.replaceChild(newplayer,existing)\n else { existing.parentNode.removeChild(existing); place.appendChild(newplayer); }\n }\n\n var html=config.macros.player.html[type];\n html=html.replace(/%i%/mg,id);\n html=html.replace(/%w%/mg,width);\n html=html.replace(/%h%/mg,height);\n html=html.replace(/%u%/mg,url);\n html=html.replace(/%s%/mg,show);\n html=html.replace(/%x%/mg,extras);\n newplayer.innerHTML=html;\n}\n//}}}\n\n// // Player-specific API functions: isReady(id), isPlaying(id), toggleControls(id), showControls(id,flag)\n\n//{{{\n// status values:\n// Windows: 0=Undefined, 1=Stopped, 2=Paused, 3=Playing, 4=ScanForward, 5=ScanReverse\n// 6=Buffering, 7=Waiting, 8=MediaEnded, 9=Transitioning, 10=Ready, 11=Reconnecting\n// RealOne: 0=Stopped, 1=Contacting, 2=Buffering, 3=Playing, 4=Paused, 5=Seeking\n// QuickTime: 'Waiting', 'Loading', 'Playable', 'Complete', 'Error:###'\n// Flash: 0=Loading, 1=Uninitialized, 2=Loaded, 3=Interactive, 4=Complete\nconfig.macros.player.isReady=function(id)\n{\n var d=document.getElementById(id+"_div"); if (!d) return false;\n var p=document.getElementById(id); if (!p) return false;\n if (d.playerType=='windows') return !((p.playState==0)||(p.playState==7)||(p.playState==9)||(p.playState==11));\n if (d.playerType=='realone') return (p.GetPlayState()>1);\n if (d.playerType=='quicktime') return !((p.getPluginStatus()=='Waiting')||(p.getPluginStatus()=='Loading'));\n if (d.playerType=='flash') return (p.ReadyState>2);\n return true;\n}\nconfig.macros.player.isPlaying=function(id)\n{\n var d=document.getElementById(id+"_div"); if (!d) return false;\n var p=document.getElementById(id); if (!p) return false;\n if (d.playerType=='windows') return (p.playState==3);\n if (d.playerType=='realone') return (p.GetPlayState()==3);\n if (d.playerType=='quicktime') return (p.getPluginStatus()=='Complete');\n if (d.playerType=='flash') return (p.ReadyState<4);\n return false;\n}\nconfig.macros.player.showControls=function(id,flag) {\n var d=document.getElementById(id+"_div"); if (!d) return false;\n var p=document.getElementById(id); if (!p) return false;\n if (d.playerType=='windows') { p.ShowControls=flag; p.ShowStatusBar=flag; }\n if (d.playerType=='realone') { alert('show/hide controls not available'); }\n if (d.playerType=='quicktime') // if player not ready, retry in one second\n { if (this.isReady(id)) p.setControllerVisible(flag); else setTimeout('config.macros.player.showControls("'+id+'",'+flag+')',1000); }\n if (d.playerType=='flash') { alert('show/hide controls not available'); }\n}\nconfig.macros.player.toggleControls=function(id) {\n var d=document.getElementById(id+"_div"); if (!d) return false;\n var p=document.getElementById(id); if (!p) return false;\n if (d.playerType=='windows') var flag=!p.ShowControls;\n if (d.playerType=='realone') var flag=true; // TBD\n if (d.playerType=='quicktime') var flag=!p.getControllerVisible();\n if (d.playerType=='flash') var flag=true; // TBD\n this.showControls(id,flag);\n}\nconfig.macros.player.fullScreen=function(id) {\n var d=document.getElementById(id+"_div"); if (!d) return false;\n var p=document.getElementById(id); if (!p) return false;\n if (d.playerType=='windows') p.DisplaySize=3;\n if (d.playerType=='realone') p.SetFullScreen();\n if (d.playerType=='quicktime') { alert('full screen not available'); }\n if (d.playerType=='flash') { alert('full screen not available'); }\n}\n//}}}\n\n// // Player HTML\n\n//{{{\n// placeholder (no player)\nconfig.macros.player.html.none=' \s\n <table id="%i%" width="%w%" height="%h%" style="background-color:#111;border:0;margin:0;padding:0;"> \s\n <tr style="background-color:#111;border:0;margin:0;padding:0;"> \s\n <td width="%w%" height="%h%" style="background-color:#111;color:#ccc;border:0;margin:0;padding:0;text-align:center;"> \s\n &nbsp; \s\n %u% \s\n &nbsp; \s\n </td></tr></table>';\n//}}}\n\n//{{{\n// Windows Media Player\n// v7.1 ID: classid=CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6\n// v9 ID: classid=CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95\nconfig.macros.player.html.windows=' \s\n <object id="%i%" width="%w%" height="%h%" style="margin:0;padding:0;" \s\n classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95" \s\n codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" \s\n align="baseline" border="0" \s\n standby="Loading Microsoft Windows Media Player components..." \s\n type="application/x-oleobject"> \s\n <param name="FileName" value="%u%"> <param name="ShowControls" value="%s%"> \s\n <param name="ShowPositionControls" value="1"> <param name="ShowAudioControls" value="1"> \s\n <param name="ShowTracker" value="1"> <param name="ShowDisplay" value="0"> \s\n <param name="ShowStatusBar" value="1"> <param name="AutoSize" value="1"> \s\n <param name="ShowGotoBar" value="0"> <param name="ShowCaptioning" value="0"> \s\n <param name="AutoStart" value="1"> <param name="AnimationAtStart" value="1"> \s\n <param name="TransparentAtStart" value="0"> <param name="AllowScan" value="1"> \s\n <param name="EnableContextMenu" value="1"> <param name="ClickToPlay" value="1"> \s\n <param name="InvokeURLs" value="1"> <param name="DefaultFrame" value="datawindow"> \s\n %x% \s\n <embed src="%u%" style="margin:0;padding:0;" \s\n align="baseline" border="0" width="%w%" height="%h%" \s\n type="application/x-mplayer2" \s\n pluginspage="http://www.microsoft.com/windows/windowsmedia/download/default.asp" \s\n name="%i%" showcontrols="%s%" showpositioncontrols="1" \s\n showaudiocontrols="1" showtracker="1" showdisplay="0" \s\n showstatusbar="%s%" autosize="1" showgotobar="0" showcaptioning="0" \s\n autostart="1" autorewind="0" animationatstart="1" transparentatstart="0" \s\n allowscan="1" enablecontextmenu="1" clicktoplay="0" invokeurls="1" \s\n defaultframe="datawindow"> \s\n </embed> \s\n </object>';\n//}}}\n\n//{{{\n// RealNetworks' RealOne Player\nconfig.macros.player.html.realone=' \s\n <table width="%w%" style="border:0;margin:0;padding:0;"><tr style="border:0;margin:0;padding:0;"><td style="border:0;margin:0;padding:0;"> \s\n <object id="%i%" width="%w%" height="%h%" style="margin:0;padding:0;" \s\n CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"> \s\n <PARAM NAME="CONSOLE" VALUE="player"> \s\n <PARAM NAME="CONTROLS" VALUE="ImageWindow"> \s\n <PARAM NAME="AUTOSTART" Value="true"> \s\n <PARAM NAME="MAINTAINASPECT" Value="true"> \s\n <PARAM NAME="NOLOGO" Value="true"> \s\n <PARAM name="BACKGROUNDCOLOR" VALUE="#333333"> \s\n <PARAM NAME="SRC" VALUE="%u%"> \s\n %x% \s\n <EMBED width="%w%" height="%h%" controls="ImageWindow" type="audio/x-pn-realaudio-plugin" style="margin:0;padding:0;" \s\n name="%i%" \s\n src="%u%" \s\n console=player \s\n maintainaspect=true \s\n nologo=true \s\n backgroundcolor=#333333 \s\n autostart=true> \s\n </OBJECT> \s\n </td></tr><tr style="border:0;margin:0;padding:0;"><td style="border:0;margin:0;padding:0;"> \s\n <object id="%i%_controls" width="%w%" height="60" style="margin:0;padding:0;display:%s%" \s\n CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"> \s\n <PARAM NAME="CONSOLE" VALUE="player"> \s\n <PARAM NAME="CONTROLS" VALUE="All"> \s\n <PARAM NAME="NOJAVA" Value="true"> \s\n <PARAM NAME="MAINTAINASPECT" Value="true"> \s\n <PARAM NAME="NOLOGO" Value="true"> \s\n <PARAM name="BACKGROUNDCOLOR" VALUE="#333333"> \s\n <PARAM NAME="SRC" VALUE="%u%"> \s\n %x% \s\n <EMBED WIDTH="%w%" HEIGHT="60" NOJAVA="true" type="audio/x-pn-realaudio-plugin" style="margin:0;padding:0;display:%s%" \s\n controls="All" \s\n name="%i%_controls" \s\n src="%u%" \s\n console=player \s\n maintainaspect=true \s\n nologo=true \s\n backgroundcolor=#333333> \s\n </OBJECT> \s\n </td></tr></table>';\n//}}}\n\n//{{{\n// QuickTime Player\nconfig.macros.player.html.quicktime=' \s\n <OBJECT ID="%i%" WIDTH="%w%" HEIGHT="%h%" style="margin:0;padding:0;" \s\n CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" \s\n CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab"> \s\n <PARAM name="SRC" VALUE="%u%"> \s\n <PARAM name="AUTOPLAY" VALUE="true"> \s\n <PARAM name="CONTROLLER" VALUE="%s%"> \s\n <PARAM name="BGCOLOR" VALUE="#333333"> \s\n <PARAM name="SCALE" VALUE="aspect"> \s\n <PARAM name="SAVEEMBEDTAGS" VALUE="true"> \s\n %x% \s\n <EMBED name="%i%" WIDTH="%w%" HEIGHT="%h%" style="margin:0;padding:0;" \s\n SRC="%u%" \s\n AUTOPLAY="true" \s\n SCALE="aspect" \s\n CONTROLLER="%s%" \s\n BGCOLOR="#333333" \s\n EnableJavaSript="true" \s\n PLUGINSPAGE="http://www.apple.com/quicktime/download/"> \s\n </EMBED> \s\n </OBJECT>';\n//}}}\n\n//{{{\n// Flash Player\nconfig.macros.player.html.flash='\s\n <object id="%i%" width="%w%" height="%h%" style="margin:0;padding:0;" \s\n classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" \s\n codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"> \s\n <param name="movie" value="%u%"> \s\n <param name="quality" value="high"> \s\n <param name="SCALE" value="exactfit"> \s\n <param name="bgcolor" value="333333"> \s\n %x% \s\n <embed name="%i%" src="%u%" style="margin:0;padding:0;" \s\n height="%h%" width="%w%" quality="high" \s\n pluginspage="http://www.macromedia.com/go/getflashplayer" \s\n type="application/x-shockwave-flash" scale="exactfit"> \s\n </embed> \s\n </object>';\n//}}}
[img[http://image2.sina.com.cn/blog/tmpl/v3/images/xmlRSS2.gif][http://kylexycn.googlepages.com/index.xml]]\n<html>\n<a href="http://fusion.google.com/add?feedurl=http://kylexycn.googlepages.com/index.xml"><img src="gr.gif" alt="Add to Google"></a><a href="http://www.bloglines.com/sub/http://kylexycn.googlepages.com/index.xml">\n<img src="bl.gif" border="0" alt="订阅 Bloglines" /></a>\n<a href="http://www.live.com/?add=http://kylexycn.googlepages.com/index.xml" title="添加到Live.com"><img src="li.gif" /></a><a href="http://www.zhuaxia.com/add_channel.php?url=http://kylexycn.googlepages.com/index.xml">\n<img src="zhx.gif" border="0" alt="订阅到抓虾" />\n<a href=" http://www.gougou.com/2QF4A5J4 " title="用狗狗订阅"><img src="gg.gif" border="0" /></a></a>\n<a href="http://www.emailrss.cn/?rss=http://kylexycn.googlepages.com/index.xml" title="使用RSS邮天下订阅"><img src="er.gif" border="0"/></a></html>
<script>\n var field="modified";\n var dir=-1; // +1==ascending, -1==descending\n var tiddlers=store.getTiddlers(field);\n tiddlers.sort(function(a,b){if(a[field]==b[field])return(0);else return(a[field]<b[field])?-dir:dir;});\n var limit=15; // set to tiddlers.length to list *all* tiddlers\n var out="";\n for (var i=0; i<limit; i++)\n if (!tiddlers[i].tags.contains("excludeLists"))\n out+="<<tiddler ShowTiddlerClip with: "+tiddlers[i].title+">>";\n return(out);\n</script>
/%\nusage:\n <<tiddler ReplaceTiddlerTitle with: "new title text">>\n\n%/<script>\n // get the tiddler element\n var t=story.findContainingTiddler(place);\n if (t && t.id!="tiddlerReplaceTiddlerTitle") \n for (var i=0; i<t.childNodes.length; i++)\n if (hasClass(t.childNodes[i],"title"))\n t.childNodes[i].innerHTML="$1";\n</script>
/%\n\nUsage: <<tiddler ScrollBox with: TiddlerName height>>\n\n%/@@display:block;height:$2;overflow:auto;<<tiddler $1>>@@@@display:block;text-align:right;^^scroll for more...^^@@
<script>\n\n var sliderWidth="18em"; // ADJUST AS DESIRED\n\n var here=story.findContainingTiddler(place);\n var field="title";\n var dir=+1; // +1==ascending, -1==descending\n var tiddlers=store.getTiddlers(field,"excludeLists");\n tiddlers.sort(function(a,b){if(a[field]==b[field])return(0);else return(a[field]<b[field])?-dir:dir;});\n var 电视=""; var 片断=""; var 歌曲=""; var 采访=""; var 搞笑="";\n var 花絮=""; var 广告=""; var 角色=""; var 八卦="";var 剧评="";\n var others=""; var attachments=""; var 预览="";var styles="";\n for (var i=0; i<tiddlers.length; i++) {\n\n \n if (tiddlers[i].tags.contains("电视")) 电视+="[[%0]]\sn".format([tiddlers[i].title])\n if (tiddlers[i].tags.contains("片断")) 片断+="[[%0]]\sn".format([tiddlers[i].title])\n if (tiddlers[i].tags.contains("歌曲")) 歌曲+="[[%0]]\sn".format([tiddlers[i].title])\n if (tiddlers[i].tags.contains("采访")) 采访+="[[%0]]\sn".format([tiddlers[i].title])\n if (tiddlers[i].tags.contains("搞笑")) 搞笑+="[[%0]]\sn".format([tiddlers[i].title]) \n if (tiddlers[i].tags.contains("预览")) 预览+="[[%0]]\sn".format([tiddlers[i].title])\n if (tiddlers[i].tags.contains("花絮")) 花絮+="[[%0]]\sn".format([tiddlers[i].title])\n if (tiddlers[i].tags.contains("广告")) 广告+="[[%0]]\sn".format([tiddlers[i].title])\n if (tiddlers[i].tags.contains("角色")) 角色+="[[%0]]\sn".format([tiddlers[i].title])\n if (tiddlers[i].tags.contains("八卦")) 八卦+="[[%0]]\sn".format([tiddlers[i].title])\n if (tiddlers[i].tags.contains("剧评")) 剧评+="[[%0]]\sn".format([tiddlers[i].title])\n if (tiddlers[i].tags.containsAny(["stylesheets","template","css"])) styles+="[[%0]]\sn".format([tiddlers[i].title])\n if (tiddlers[i].tags.contains("attachment")) attachments+="[[%0]]\sn".format([tiddlers[i].title])\n }\n var pre="@@display:block;+++";\n var box="{{groupbox{@@display:block;width:"+sliderWidth+";";\n box+="{{floatright{<<tiddler CloseSlider>>}}}"; // add 'close' link\n var post="@@}}}===@@";\n var out="";\n if (电视.length) out+=pre+"[电视]"+box+电视+post;\n if (片断.length) out+=pre+"[片断]"+box+片断+post;\n if (歌曲.length) out+=pre+"[歌曲]"+box+歌曲+post;\n if (采访.length) out+=pre+"[采访]"+box+采访+post;\n if (搞笑.length) out+=pre+"[搞笑]"+box+搞笑+post;\n if (花絮.length) out+=pre+"[花絮]"+box+花絮+post;\n if (广告.length) out+=pre+"[广告]"+box+广告+post;\n if (角色.length) out+=pre+"[角色]"+box+角色+post;\n if (八卦.length) out+=pre+"[八卦]"+box+八卦+post;\n if (剧评.length) out+=pre+"[剧评]"+box+剧评+post;\n if (others.length) out+=pre+"[other plugins]"+box+others+post;\n if (styles.length) out+=pre+"[themes/templates]"+box+styles+post;\n if (attachments.length) out+=pre+"[attachments]"+box+attachments+post;\n if (预览) out+=pre+"[预览]"+box+预览+post;\n return out;\n</script>
<script>\n var tiddlers=store.getTiddlers("modified","excludeLists");\n var out="";\n var limit=15; // set to tiddlers.length to list *all* tiddlers\n for (var i=tiddlers.length-1; i>=tiddlers.length-limit; i--)\n out+="@@display:block;[["+tiddlers[i].title+"]]@@";\n return out;\n</script>
<script>\n var tid="$1"; // replaced by "TiddlerWithParams" macro\n var clipsize=0; // # of chars to display from each tiddler\n var tiddler=store.getTiddler(tid); if (!tiddler) return "";\n var title=tiddler.title;\n var author=tiddler.modifier\n var size=tiddler.text.length;\n var mod=tiddler.modified.formatString("0MM/0DD 0hh:0mm");\n var clip=tiddler.text.substr(0,clipsize);\n var edit='onclick="story.displayTiddler(null,\s''+title+'\s',2);return false;">'+(readOnly?'view':'edit')+' source...';\n var out="";\n out+='@@display:block;+++['+title+']{{groupbox{@@display:block;overflow:hidden;width:30em;';\n out+='{{floatright{<<tiddler CloseSlider>>}}}[['+title+']] ('+size+' 字节) \sn';\n out+='^^变更在 '+mod+' 由 '+author+'^^\sn';\n out+='@@}}}===@@';\n return out;\n</script>
''~最近的更新时间 <<date filedate "DDD, MMM DD YYYY 在 hh:0mm:0ss">>''\n<script>\n var field="modified";\n var dir=-1; // +1==ascending, -1==descending\n var tiddlers=store.getTiddlers(field,"excludeLists");\n tiddlers.sort(function(a,b){if(a[field]==b[field])return(0);else return(a[field]<b[field])?-dir:dir;});\n var out="";\n out+="一共有 "+tiddlers.length+" 主题.\sn"\n out+="最近更新: [["+tiddlers[0].title+"]]";\n out+=" {{fine{(updated "+tiddlers[0].modified.formatString("MMM DDth YYYY, hh:0mm:0ss")+")}}}\sn";\n var field="created"; tiddlers.sort(function(a,b){if(a[field]==b[field])return(0);else return(a[field]<b[field])?-dir:dir;});\n out+="最新主题: [["+tiddlers[0].title+"]]";\n out+=" {{fine{(created "+tiddlers[0].created.formatString("MMM DDth YYYY, hh:0mm:0ss")+")}}}\sn";\n out+="最老主题: [["+tiddlers[tiddlers.length-1].title+"]]";\n out+=" {{fine{(created "+tiddlers[tiddlers.length-1].created.formatString("MMM DDth YYYY, hh:0mm:0ss")+")}}}\sn"\n tiddlers.sort(function(a,b){if(a.text.length==b.text.length)return(0);else return(a.text.length<b.text.length)?-dir:dir;});\n out+="最小主题: [["+tiddlers[tiddlers.length-1].title+"]]";\n out+=" {{fine{("+tiddlers[tiddlers.length-1].text.length+" bytes)}}}\sn"\n out+="最大主题: [["+tiddlers[0].title+"]]";\n out+=" {{fine{("+tiddlers[0].text.length+" bytes)}}}\sn"\n return(out);\n</script>
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal ' YYYY0MM0DD'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel '偏好设置' '变更选项'>>
+++(内容目录)[月份更新]...\n <<tabs txtMainTab 最近更新 '依更新日期排序' TabTimeline 全部 '所有文章' TabAll>>===\n<script>var s=place.lastChild.button.style; s.marginLeft=".3em"; s.display="block"; s.padding=".2em";</script>
/***\n''Single Page Mode Plugin for TiddlyWiki version 2.0 or above''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#SinglePageModePlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n!!!!!Configuration\n<<<\nWhen installed, this plugin automatically adds checkboxes in the AdvancedOptions tiddler so you can enable/disable the plugin behavior. For convenience, these checkboxes are also included here:\n\n<<option chkSinglePageMode>> Display one tiddler at a time\n<<option chkTopOfPageMode>> Always open tiddlers at the top of the page\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].\nSupport for BACK/FORWARD buttons adapted from code developed by Clint Checketts\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.SinglePageMode= {major: 2, minor: 2, revision: 1, date: new Date(2006,7,3)};\n\nif (config.options.chkSinglePageMode==undefined) config.options.chkSinglePageMode=false;\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSinglePageMode>> Display one tiddler at a time";\n\nif (config.options.chkTopOfPageMode==undefined) config.options.chkTopOfPageMode=false;\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkTopOfPageMode>> Always open tiddlers at the top of the page";\n\nconfig.SPMTimer = 0;\nconfig.lastURL = window.location.hash;\nfunction checkLastURL()\n{\n if (!config.options.chkSinglePageMode)\n { window.clearInterval(config.SPMTimer); config.SPMTimer=0; return; }\n if (config.lastURL == window.location.hash)\n return;\n var tiddlerName = convertUTF8ToUnicode(decodeURI(window.location.hash.substr(1)));\n tiddlerName=tiddlerName.replace(/\s[\s[/,"").replace(/\s]\s]/,""); // strip any [[ ]] bracketing\n if (tiddlerName.length) story.displayTiddler(null,tiddlerName,1,null,null);\n}\n\nif (Story.prototype.SPM_coreDisplayTiddler==undefined) Story.prototype.SPM_coreDisplayTiddler=Story.prototype.displayTiddler;\nStory.prototype.displayTiddler = function(srcElement,title,template,animate,slowly)\n{\n if (config.options.chkSinglePageMode) {\n window.location.hash = encodeURIComponent(String.encodeTiddlyLink(title));\n config.lastURL = window.location.hash;\n document.title = wikifyPlain("SiteTitle") + " - " + title;\n story.closeAllTiddlers();\n if (!config.SPMTimer) config.SPMTimer=window.setInterval(function() {checkLastURL();},1000);\n }\n if (config.options.chkTopOfPageMode) { story.closeTiddler(title); window.scrollTo(0,0); srcElement=null; }\n this.SPM_coreDisplayTiddler(srcElement,title,template,animate,slowly)\n}\n\nif (Story.prototype.SPM_coreDisplayTiddlers==undefined) Story.prototype.SPM_coreDisplayTiddlers=Story.prototype.displayTiddlers;\nStory.prototype.displayTiddlers = function(srcElement,titles,template,unused1,unused2,animate,slowly)\n{\n // suspend single-page mode when displaying multiple tiddlers\n var saveSPM=config.options.chkSinglePageMode; config.options.chkSinglePageMode=false;\n var saveTPM=config.options.chkTopOfPageMode; config.options.chkTopOfPageMode=false;\n this.SPM_coreDisplayTiddlers(srcElement,titles,template,unused1,unused2,animate,slowly);\n config.options.chkSinglePageMode=saveSPM; config.options.chkTopOfPageMode=saveTPM;\n}\n//}}}
''问题/解答:''\n<script>\n var sliderWidth="auto"; // ADJUST AS DESIRED\n var here=story.findContainingTiddler(place);\n var field="modified";\n var dir=+1; // +1==ascending, -1==descending\n var tiddlers=store.getTiddlers(field,"excludeLists");\n tiddlers.sort(function(a,b){if(a[field]==b[field])return(0);else return(a[field]<b[field])?-dir:dir;});\n var out="";\n for (var i=0; i<tiddlers.length; i++) {\n if (!tiddlers[i].tags.contains("faq")) continue;\n out+=tiddlers[i].text+"\sn";\n }\n return out;\n</script>
{{floatright{{{nowrap{<<tiddler SiteMenuRight>>}}}}}}{{nowrap{<<tiddler SiteMenuLeft>>
<script label="欢迎光临">\n story.closeTiddler('欢迎');\n story.displayTiddler(null,'欢迎',1);\n return false;\n</script> |+++^52em^[视频阅览目录]...{{wrap{\n <<moveablePanel>>观看视频或者阅览文章:\n----\n <<tiddler ShowComponents>>}}}===\n | +++^52em^[近期文章更新|最近更新的文章]...{{wrap{\n <<moveablePanel>>最近更新:\n----\n <<tiddler RecentChanges>>}}}===\n | +++^100%^[截图全集|收集kyle xy的屏幕截图]...{{wrap{\n <<moveablePanel>>浏览图片:\n----\n <<tiddler kylexy截图集>>}}}===\n +++^100%^[图片收藏|收集kyle xy的相关图片]...{{wrap{\n <<moveablePanel>>[[浏览图片:|http://kylexy.org/gallery/index.php?cat=2]]\n----\n <<tiddler kylexy图册>>}}}===\n | +++^100%^[kyle xy论坛|进入论坛讨论]...{{wrap{\n <<moveablePanel>>[[点击在新页面打开|http://www.yyets.com/bbs/forumdisplay.php?fid=69]]\n----\n <<tiddler kylexy论坛>>}}}===\n----\n[[欢迎访问新版Kyle XY中文网|http://kylexycn.blogspot.com/]] 此网站停止更新。现在网站的所有文章会尽快迁移到新版kyle xy 中文网上。kyle xy第二季的内容也都会直接在新版kyle xy中文网上更新。谢谢大家的长期支持!
{{menubox{{{fine{{{big{\n<script label="欢迎">story.closeTiddler('欢迎');story.displayTiddler(null,'欢迎',1);return false;</script>\n}}}{{big{@@display:block;/%\n\nRECENT CHANGES: %/\n{{nowrap{+++(changes)[最近更新|看看最近更新的文章]...{{borderleft{\n {{normal{<<tiddler ShowRecentChanges>>}}}}}}===\n}}}/%\n\n[[诗歌]], [[评论]], [[转贴]], TEMPLATES, ATTACHMENTS: %/\n{{nowrap{++++(installed)[视频阅览|全部视频阅览目录]...{{borderleft{\n {{normal{<<tiddler ShowComponents>>}}}}}}===\n}}}{{normal{@@display:block;/%\n\n工具: %/\n[[聊天室]]\n[[留言本]]
[[Roswell中文网|http://roswellcn.googlepages.com/index.html]] | +++^52em^[月份更新存档|查看按月归档的文章]...{{wrap{\n <<moveablePanel>>按月归档文章检索:\n----\n <<tiddler TabTimeline>>}}}===\n | +++^18em^[RSS订阅|订阅本站RSS]...{{wrap{\n <<moveablePanel>>订阅RSS\n----\n <<tiddler RSS订阅>>}}}===\n | +++^18em^[日历|显示日历]...{{wrap{\n <<moveablePanel>>月历:\n----\n {{small{<<calendar thismonth>><script>place.lastChild.style.width="100%";</script>}}}===\n
''新闻/公告:''<script>\n var sliderWidth="auto"; // ADJUST AS DESIRED\n var here=story.findContainingTiddler(place);\n var field="modified";\n var dir=+1; // +1==ascending, -1==descending\n var tiddlers=store.getTiddlers(field,"excludeLists");\n tiddlers.sort(function(a,b){if(a[field]==b[field])return(0);else return(a[field]<b[field])?-dir:dir;});\n var out="";\n for (var i=0; i<tiddlers.length; i++) {\n if (!tiddlers[i].tags.contains("news")) continue;\n out+="@@display:block;<<tiddler %0>>@@".format([tiddlers[i].title]);\n }\n return out;\n</script>
{{right{{{nowrap{@@font-size:6pt;font-family:"Trebuchet MS"; [[YYeTs美剧|http://www.yyets.com]] @@\n@@font-size:6pt;font-family:"Trebuchet MS";[[KYLE论坛|http://www.yyets.com/bbs/forumdisplay.php?fid=69]] @@\n@@font-size:6pt;font-family:"Trebuchet MS";[[联系本人|mailto:avxavx@gmail.com]] \n@@}}}}}}
{{floatleft{@@font-size:26pt;[[Kyle XY\n|http://kylexycn.googlepages.com/index.html]]@@ @@font-size:10pt;谁是kyle xy?kyle xy是谁?@@}}}
{{center{{{fine{{{normal{{{floatleft{<<tiddler ToggleLeftSidebar>>}}}{{floatright{<<tiddler ToggleRightSidebar>>}}}\n}}}}}}
[[StyleSheetAdjustments]]\n[[Night7788]]\n
!body /%==================================================%/\nIE needs explicit "position:static" declaration (fixes 'partial background display bug')\n***/\n/*{{{*/\nbody { font-family: Verdana,Arial,Helvetica; position:static; }\n/*}}}*/\n\n/***\n!common colors /%==================================================%/\n***/\n/*{{{*/\n/* these seem to have been omitted from the core defaults for link styles */\na { color:#014; }\na:hover { color:#f00; }\n/*}}}*/\n\n/***\n!header and titles /%==================================================%/\nIE needs explicit "position:static" declaration (fixes 'background display hides text bug')\n***/\n/*{{{*/\n.header\n { background:transparent; padding:.2em; border-bottom:1px solid; position:static }\n.headerShadow, .headerForeground\n { padding:.5em; }\n.header a, .header .button, .header .tiddlyLinkExisting, .header .tiddlyLinkNonExisting\n { font-weight: normal; font-style: normal; }\n.header .externalLink,\n.siteSubtitle a, .siteSubtitle .button, .siteSubtitle .tiddlyLinkExisting, .siteSubtitle .tiddlyLinkNonExisting\n { font-style:italic; text-decoration:none; }\n/*}}}*/\n\n/***\n!siteMenu /%==================================================%/\n***/\n/*{{{*/\n.siteMenu\n { background:transparent; padding:.2em 1em .2em 1em; }\n.siteMenu a, .siteMenu .button, .siteMenu .tiddlyLinkExisting, .siteMenu .tiddlyLinkNonExisting\n { font-weight: normal; font-style: normal; }\n/*}}}*/\n\n/***\n!storyMenu /%==================================================%/\n***/\n/*{{{*/\n.storyMenu\n { display:block; margin:.2em 0em .5em 0em; }\n.storyMenu a, .storyMenu .button, .storyMenu .tiddlyLinkExisting, .storyMenu .tiddlyLinkNonExisting\n { font-weight: normal; font-style: normal; text-decoration:none; }\n/*}}}*/\n\n/***\n!displayArea /%==================================================%/\n***/\n/*{{{*/\n#displayArea\n { margin-top:0em; }\n/*}}}*/\n\n\n/***\n!popups /%==================================================%/\nwhite-space:nowrap prevents items from wrapping if popup is near right edge of window\nz-index:1000 makes sure popup is above EVERYTHING else\n***/\n/*{{{*/\n.popup\n { white-space: nowrap; z-index:1000; color: #000; background: #ffe; border: 1px solid #000;\n -moz-border-radius-topright: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; }\n.popup a, .popup .button, .popup .tiddlyLinkExisting, .popup .tiddlyLinkNonExisting\n { font-weight: normal; font-style: normal; }\n.popup hr\n { color: #000; background: #ddd; border: 0; }\n.popup li.disabled\n { color: #999; }\n.popup li a, .popup li a:visited\n { color: #300; }\n.popup li a:hover\n { background: #006; color: #fff;}\n/*}}}*/\n\n/***\n!messageArea /%==================================================%/\n***/\n/*{{{*/\n#messageArea\n { font-size:90%; -moz-border-radius:1em; background:#eee; }\n/*}}}*/\n\n/***\n!main menu (left sidebar) /%==================================================%/\n***/\n/*{{{*/\n#mainMenu\n { width:9em; text-align:left; margin:0; margin-top:.5em; margin-left:1em; padding:0; }\n*[id="mainMenu"] /* moz browsers only */\n { width:auto !important; } \n/*}}}*/\n\n/***\n!sidebar (right sidebar) /%==================================================%/\n***/\n/*{{{*/\n#sidebar\n { width:12em;}\n#sidebar .attachPanel, #sidebar #importPanel, #sidebar #exportPanel\n { right:115%; top:3em; text-align:left; }\n#sidebarTabs .tab\n { font-size:90%; -moz-border-radius-topleft:.5em; -moz-border-radius-topright:.5em; }\n#sidebarTabs .tabContents\n { background:transparent; border:1px solid #999; padding:.5em; height:auto; overflow:auto; width:92.5%; }\n#sidebarTabs .tabContents .tabContents\n { background:transparent; border:1px solid #999; padding:.5em; height:auto; }\n#sidebarTabs .tabContents *[class="TOCList"] /* MOZ ONLY */\n { background-color: transparent; border-color:transparent !important; }\n#sidebarOptions .sliderPanel\n { margin:0; padding:0; font-size:1em; background:transparent; }\n#sidebarOptions .sliderPanel a\n { font-weight:normal; }\n#sidebarOptions .sliderPanel blockquote\n { margin:0;padding:0;margin-left:1em; border-left:1px dotted; padding-left:1em }\n#sidebarOptions input[type="text"]\n { font-size:8pt; }\n}\n*/\n/*}}}*/\n\n/***\n!tabs /%==================================================%/\n***/\n/*{{{*/\n.tabset\n { padding: 0.2em 0 0 0; }\n.tab\n { padding:0 1px 0 1px; }\n.tabSelected\n { border: 1px solid; border-bottom: 0px !important; margin-bottom:-2px !important; }\n.tabUnselected\n { border: 1px solid #999; }\n.tabContents\n { border: 1px solid; -moz-border-radius:1em; padding: 1em; }\n/*}}}*/\n\n/***\n!tiddler display elements /%==================================================%/\n***/\n/*{{{*/\n.tiddler\n { padding: 0 1em 1em 1em; }\n.button, .button:hover, .button:active,\n.viewer .button, .viewer .button:hover, .viewer .button:active\n { background:transparent; border:0; }\n.toolbar\n { float:right; display:inline; padding-bottom:0; }\n.toolbar .button\n { border:1px solid transparent; background:transparent; margin:1px 1px; padding:0px .5em; -moz-border-radius:.5em; }\n.toolbar .button:hover\n { border:1px solid #69c; background:#006; color:#fff; }\n.tagging, .tagged\n { -moz-border-radius:1em; }\n.subtitle\n { font-size:90%; }\n.editor input, .editor textarea\n { font-size: 8pt;}\n.title\n { font-size: 12pt; }\n.viewer\n { font-size: 9pt; padding: 0.7em; text-align:justify; }\n.viewer pre, .viewer code, .viewer blockquote\n { font-size:8pt; text-align:left; }\n.viewer hr {\n margin: 1px; padding:1px;\n border:0;\n border-top: solid 1px #666;\n color: #666;\n}\n.viewer blockquote {\n line-height: 1.5em;\n padding-left: 1em;\n margin-left: 1em;\n border-left: 1px dotted;\n}\n\ninput[type="Checkbox"] { margin-top:2px;margin-bottom:2px; }\n/*}}}*/\n\n/***\n!floating panels /%==================================================%/\n***/\n/*{{{*/\n.floatingPanel\n { padding:1em; margin:0em; border:1px solid; -moz-border-radius:1em; font-size:8pt; text-align:left; }\n.floatingPanel hr\n { margin:2px 0 1px 0; padding:0; }\n/*}}}*/\n\n/***\n!breadcrumbs /%==================================================%/\n***/\n/*{{{*/\n/* smaller size for bread crumbs (see BreadcrumbsPlugin) */\n#breadCrumbs\n { display:none; margin:0 1em; font-size:7pt; } /* display:block is set by plugin when crumbs are in use */\n/*}}}*/\n\n/***\n!formatting shortcuts /%==================================================%/\n***/\n/*{{{*/\n\n/* text alignments */\n.left\n { display:block;text-align:left; }\n.floatleft\n { float:left; }\n.right \n { display:block;text-align:right; }\n.floatright\n { float:right; }\n.center\n { display:block;text-align:center; }\n.wrap\n { white-space:normal }\n.nowrap\n { white-space:nowrap }\n\n/* font sizes */\n.big\n { font-size:14pt;line-height:120% }\n.medium\n { font-size:12pt;line-height:120% }\n.normal\n { font-size:9pt;line-height:120% }\n.small\n { font-size:8pt;line-height:120% }\n.fine\n { font-size:7pt;line-height:120% }\n.tiny\n { font-size:6pt;line-height:120% }\n.larger\n { font-size:120%; }\n.smaller\n { font-size:80%; }\n\n/* borderless tables */\n.borderless, .borderless table, .borderless td, .borderless tr, .borderless th, .borderless tbody\n { border:0 !important; margin:0 !important; padding:0 !important; }\n\n/* grouped content */\n.outline\n { display:block; padding:1em; -moz-border-radius:1em; border:1px solid; }\n.menubox\n { display:block; padding:1em; -moz-border-radius:1em; border:1px solid; background:#fff; color:#000; }\n.menubox a, .menubox .button, .menubox .tiddlyLinkExisting, .menubox .tiddlyLinkNonExisting\n { color:#009 !important; }\n.groupbox\n { display:block; padding:1em; -moz-border-radius:1em; border:1px solid; background:#ffe; color:#000; }\n.groupbox a, .groupbox .button, .groupbox .tiddlyLinkExisting, .groupbox .tiddlyLinkNonExisting\n { color:#009 !important; }\n.indent\n { margin:0;padding:0;border:0;margin-left:.5em; }\n.borderleft\n { margin:0;padding:0;border:0;margin-left:1em; border-left:1px dotted; padding-left:.5em; }\n.borderright\n { margin:0;padding:0;border:0;margin-right:1em; border-right:1px dotted; padding-right:.5em; }\n.borderbottom\n { margin:0;padding:0;border:0;border-bottom:1px dotted; padding-bottom:1px; }\n.bordertop\n { margin:0;padding:0;border:0;border-top:1px dotted; padding-top:1px; }\n\n/* compact form */\n.smallform\n { white-space:nowrap; }\n.smallform input, .smallform textarea, .smallform button, .smallform checkbox, .smallform radio, .smallform select\n { font-size:8pt; }\n/*}}}*/
/%\nSwitchTiddlers: insert a link that closes the current tiddler and opens another one in its place\nNOTE: 'instant macro' - uses InlineJavascriptPlugin and TiddlerWithParamsPlugin\nsyntax is: <<tiddler SwitchTiddlers with: NewTiddlerTitle linktext>>\n%/<script label="$2">\n var tiddler=story.findContainingTiddler(place);\n story.displayTiddler(tiddler,"$1");\n story.closeTiddler(tiddler.id.substr(7)); // close self\n return false;\n</script>
{{big{<<tiddler CloseSlider>>}}}<<timeline>>
/***\n''Plugin:'' Tag Cloud Macro\n''Author:'' Clint Checketts\n''Source URL:''\n\n!Usage\n<<tagCloud>>\n\n!Code\n***/\n//{{{\nversion.extensions.tagCloud = {major: 1, minor: 0 , revision: 0, date: new Date(2006,2,04)};\n//Created by Clint Checketts, contributions by Jonny Leroy and Eric Shulman\n\nconfig.macros.tagCloud = {\n noTags: "No tag cloud created because there are no tags.",\n tooltip: "%1 tiddlers tagged with '%0'"\n};\n\nconfig.macros.tagCloud.handler = function(place,macroName,params) {\n \nvar tagCloudWrapper = createTiddlyElement(place,"div",null,"tagCloud",null);\n\nvar tags = store.getTags();\nfor (var t=0; t<tags.length; t++) {\n for (var p=0;p<params.length; p++) if (tags[t][0] == params[p]) tags[t][0] = "";\n}\n\n if(tags.length == 0) \n createTiddlyElement(tagCloudWrapper,"span",null,null,this.noTags);\n //Findout the maximum number of tags\n var mostTags = 0;\n for (var t=0; t<tags.length; t++) if (tags[t][0].length > 0){\n if (tags[t][1] > mostTags) mostTags = tags[t][1];\n }\n //divide the mostTags into 4 segments for the 4 different tagCloud sizes\n var tagSegment = mostTags / 4;\n\n for (var t=0; t<tags.length; t++) if (tags[t][0].length > 0){\n var tagCloudElement = createTiddlyElement(tagCloudWrapper,"span",null,null,null);\n tagCloudWrapper.appendChild(document.createTextNode(" "));\n var theTag = createTiddlyButton(tagCloudElement,tags[t][0],this.tooltip.format(tags[t]),onClickTag,"tagCloudtag tagCloud" + (Math.round(tags[t][1]/tagSegment)+1));\n theTag.setAttribute("tag",tags[t][0]);\n }\n\n};\n\nsetStylesheet(".tagCloud span{height: 1.8em;margin: 3px;}.tagCloud1{font-size: 1.2em;}.tagCloud2{font-size: 1.4em;}.tagCloud3{font-size: 1.6em;}.tagCloud4{font-size: 1.8em;}.tagCloud5{font-size: 1.8em;font-weight: bold;}","tagCloudsStyles");\n//}}}
<script>\n var out="<html><form style='display:inline;margin:0;padding:0;'><table style='border:0'><tr style='border:0'><td style='border:0;text-align:right'>";\n // fill tiddler listbox\n // on change, show current settings\n out+="<select size=1 name=tiddlers onchange='if (!this.value.length) return; var cdate=store.getTiddler(this.value).created; var mdate=store.getTiddler(this.value).modified; this.form.cm.value=cdate.getMonth()+1; this.form.cd.value=cdate.getDate(); this.form.cy.value=cdate.getFullYear(); this.form.ch.value=cdate.getHours(); this.form.cn.value=cdate.getMinutes(); this.form.mm.value=mdate.getMonth()+1; this.form.md.value=mdate.getDate(); this.form.my.value=mdate.getFullYear(); this.form.mh.value=mdate.getHours(); this.form.mn.value=mdate.getMinutes(); this.form.author.value=store.getTiddler(this.value).modifier'>";\n out+="<option value=''>please select a tiddler...</option>"\n var tiddlers=store.getTiddlers("title");\n for (var t=0; t<tiddlers.length; t++)\n out+="<option value='"+tiddlers[t].title+"'>"+tiddlers[t].title+"</option> ";\n out+="</select><br>"\n // fields for settings\n out+="created: ";\n out+="<input type=text name=cm size=2 style='width:2em;padding:0' value='mm'>/";\n out+="<input type=text name=cd size=2 style='width:2em;padding:0' value='dd'>/";\n out+="<input type=text name=cy size=4 style='width:3em;padding:0' value='yyyy'>@";\n out+="<input type=text name=ch size=2 style='width:2em;padding:0' value='hh'>:";\n out+="<input type=text name=cn size=2 style='width:2em;padding:0' value='mm'><br>";\n out+="modified: ";\n out+="<input type=text name=mm size=2 style='width:2em;padding:0' value='mm'>/";\n out+="<input type=text name=md size=2 style='width:2em;padding:0' value='dd'>/";\n out+="<input type=text name=my size=4 style='width:3em;padding:0' value='yyyy'>@";\n out+="<input type=text name=mh size=2 style='width:2em;padding:0' value='hh'>:";\n out+="<input type=text name=mn size=2 style='width:2em;padding:0' value='mm'><br>";\n out+="author: <input type=text name=author size=25 value='author'>";\n out+="<input type=button value='set' onclick='var cdate=(new Date(this.form.cy.value,this.form.cm.value-1,this.form.cd.value,this.form.ch.value,this.form.cn.value)); var mdate=(new Date(this.form.my.value,this.form.mm.value-1,this.form.md.value,this.form.mh.value,this.form.mn.value)); store.getTiddler(this.form.tiddlers.value).assign(null,null,this.form.author.value,mdate,null,cdate)'>";\n return out+"</td></tr></table></form></html>";\n</script>
/***\n|''Name:''|TiddlerWithParamsPlugin|\n|''Version:''|1.0.1 (2006-03-22)|\n|''Source:''|http://tiddlywiki.abego-software.de/#TiddlerWithParamsPlugin|\n|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|\n|''Licence:''|[[BSD open source license]]|\n!Description\n\nThe TiddlerWithParamsPlugin extends the build-in {{{<<tiddler...>>}}} macro. It replaces placeholders ($1, $2, ...) in the given tiddler by values passed with the macro. Then it inserts the (replaced) text, just like the original {{{<<tiddler...>>}}} macro.\n\n''Syntax:'' \n|>|{{{<<}}}''tiddler '' //tiddlerName// [//className//] [''asText''] [''with:'' //arguments// ] [''prefix:'' //prefixString//] {{{>>}}}|\n|//tiddlerName//|The name of the tiddler to be included. The tiddler may contain placeholders ($1, $2, ... $9) that will be replaced with the values passed with the macro|\n|//className//|The (CSS) class to be used around the embedded tiddler|\n|''asText''|When defined the (replaced) content of the tiddler is inserted as pure text, i.e. it is not "wikified".|\n|//arguments//|up to 9 arguments may be passed to the macro, used as the values for the placeholders $1, $2, ... $9 in the referenced template|\n|//prefixString//|By default the placeholders $1, $2, $3,..., $9 are used. But you may change the "prefix" before the placeholder number ("$") to some other text through the "prefix:" option. This may be necessary when you are using the $n in the tiddler you are referencing (e.g. when you are using regular expressions).|\n|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. ~~|\n\n!Example\n\nThe following ''//ProjectTemplate//'' tiddler defines an "Overview" page for a project, that gives access to various "sub-tiddlers" used in the project, that follow a static naming schema (e.g. all Notes for any project are stored in a tiddler called "//projectName// Notes"). $1 holds the name of the Project (e.g. "ForEachTiddler"), $2 holds the type of the published component (e.g. "Plugin", "Macro", "Function").\n{{{\n![[$1Project]] Overview\n* [[$1$2]]\n* [[ToDo|$1 ToDos]]\n* [[Notes|$1 Notes]]\n* [[Examples|$1Examples]]\n* [[Tests|$1 Tests]]\n* [[Open Bugs/CRs|$1 Open Bugs and ChangeRequests]]\n}}}\n\nThis template is now used in the ''//ForEachTiddlerProject//'' tiddler:\n{{{\n<<tiddler ProjectTemplate with: ForEachTiddler Plugin>>\n}}}\n\nThis results in the following tiddler text for the ''//ForEachTiddlerProject//'' tiddler:\n{{{\n![[ForEachTiddlerProject]] Overview\n* [[ForEachTiddlerPlugin]]\n* [[ToDo|ForEachTiddler ToDos]]\n* [[Notes|ForEachTiddler Notes]]\n* [[Examples|ForEachTiddlerExamples]]\n* [[Tests|ForEachTiddler Tests]]\n* [[Open Bugs/CRs|ForEachTiddler Open Bugs and ChangeRequests]]\n}}}\n\n!Code\n***/\n//{{{\n//============================================================================\n// TiddlerWithParamsPlugin\n//============================================================================\n\n// Ensure that the Plugin is only installed once.\n//\nif (!version.extensions.TiddlerWithParamsPlugin) {\n\nversion.extensions.TiddlerWithParamsPlugin = {\n major: 1, minor: 0, revision: 1, \n date: new Date(2006,3,22), \n type: 'plugin',\n source: "http://tiddlywiki.abego-software.de/#TiddlerWithParamsPlugin"\n};\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nvar indexInArray = function(array, item) {\n for (var i = 0; i < array.length; i++) {\n if (array[i] == item) {\n return i;\n }\n }\n return -1;\n}\n\nvar myEscapeRegExp = function(s)\n{\n // The original escapeRegExp function does not work with Safari (2.0.3) \n // since the $& is not implemented.\nvar t = s.replace(/\s\s/g, "\s\s\s\s");\n t = t.replace(/\s^/g, "\s\s^");\n t = t.replace(/\s$/g, "\s\s$");\n t = t.replace(/\s*/g, "\s\s*");\n t = t.replace(/\s+/g, "\s\s+");\n t = t.replace(/\s?/g, "\s\s?");\n t = t.replace(/\s(/g, "\s\s(");\n t = t.replace(/\s)/g, "\s\s)");\n t = t.replace(/\s=/g, "\s\s=");\n t = t.replace(/\s!/g, "\s\s!");\n t = t.replace(/\s|/g, "\s\s|");\n t = t.replace(/\s,/g, "\s\s,");\n t = t.replace(/\s{/g, "\s\s{");\n t = t.replace(/\s}/g, "\s\s}");\n t = t.replace(/\s[/g, "\s\s[");\n t = t.replace(/\s]/g, "\s\s]");\n t = t.replace(/\s./g, "\s\s.");\n\n return t;\n}\n\n// ---------------------------------------------------------------------------\n// The (hijacked) tiddler Macro Handler \n// ---------------------------------------------------------------------------\n\nconfig.macros.tiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {\n \n var className = null;\n var argsStart = -1;\n var doWikify = true;\n\n var iParams = 1;\n if (params[iParams] != "asText" && params[iParams] != "with:") {\n className = params[iParams++];\n }\n if (params[iParams] == "asText") {\n iParams++;\n doWikify = false;\n }\n if (params[iParams] == "with:") {\n iParams++;\n argsStart = iParams;\n }\n \n var wrapper = createTiddlyElement(place,"span",null,className ? className : null,null);\n var text = store.getTiddlerText(params[0]);\n if(text) {\n // Check for recursion\n var tiddlerName = params[0];\n var stack = config.macros.tiddler.tiddlerStack;\n if (stack.find(tiddlerName) !== null) return;\n\n if (argsStart >= 0) {\n // The params between the "with:" and the "prefix:" (or the end) are the arguments,\n // The param behind the "prefix:" is the prefix before the placeholder numbers.\n var argsEnd = params.length;\n var prefix = "$";\n var prefixIndex = indexInArray(params, "prefix:");\n if (prefixIndex >= argsStart) {\n argsEnd = prefixIndex;\n if (prefixIndex < (params.length-1)) {\n prefix = params[prefixIndex+1];\n }\n }\n // to avoid any "special RE chars" problems with the prefix string escape all chars.\n prefix = myEscapeRegExp(prefix);\n \n var args = params.slice(argsStart, argsEnd);\n var n = Math.min(args.length, 9);\n for (var i = 0; i < n; i++) {\n var value = args[i];\n \n var placeholderRE = new RegExp(prefix+(i+1),"mg");\n text = text.replace(placeholderRE, value);\n }\n }\n stack.push(tiddlerName);\n try {\n if (doWikify) {\n wikify(text,wrapper,null,store.getTiddler(params[0]));\n } else {\n wrapper.appendChild(document.createTextNode(text));\n }\n } finally { \n stack.pop();\n }\n }\n}\nconfig.macros.tiddler.tiddlerStack = [];\n\n// End of "install only once"\n}\n\n//============================================================================\n// End of TiddlerWithParamsPlugin\n//============================================================================\n//}}}
<script label="show/hide left sidebar">\n var show=document.getElementById('mainMenu').style.display=='none';\n if (!show) {\n document.getElementById('mainMenu').style.display='none';\n var margin='1em';\n }\n else {\n document.getElementById('mainMenu').style.display='block';\n var margin=config.options.txtDisplayAreaLeftMargin?config.options.txtDisplayAreaLeftMargin:"";\n }\n place.innerHTML=(show?"&lt;&lt;隐藏工具栏":"&gt;&gt;显示工具栏"); // SET LINK TEXT\n place.title=show?"hide sidebar":"show sidebar"; // SET TOOLTIP\n document.getElementById('displayArea').style.marginLeft=margin;\n config.options.chkShowLeftSidebar=show;\n saveOptionCookie('chkShowLeftSidebar');\n var sm=document.getElementById("storyMenu"); if (sm) config.refreshers.content(sm);\n return false;\n</script><script>\n if (config.options.chkShowLeftSidebar==undefined)\n config.options.chkShowLeftSidebar=true;\n if (!config.options.txtDisplayAreaLeftMargin||!config.options.txtDisplayAreaLeftMargin.length)\n config.options.txtDisplayAreaLeftMargin="11em";\n var show=config.options.chkShowLeftSidebar;\n document.getElementById('mainMenu').style.display=show?"block":"none";\n document.getElementById('displayArea').style.marginLeft=show?config.options.txtDisplayAreaLeftMargin:"1em";\n place.lastChild.innerHTML=(show?"&lt;&lt;隐藏工具栏":"&gt;&gt;显示工具栏"); // SET LINK TEXT\n place.lastChild.title=show?"hide sidebar":"show sidebar"; // SET TOOLTIP\n place.lastChild.style.fontWeight="normal";\n</script>
<<option chkHttpReadOnly>><script>\n var chk=place.lastChild;\n chk.style.margin=chk.style.padding="0";\n chk.id="ToggleReadOnly_checkbox";\n chk.title="enable/disable TiddlyWiki editing functions";\n chk.checked=readOnly;\n chk.coreOnChange=chk.onchange;\n chk.onchange=function() {\n if (this.coreOnChange) this.coreOnChange();\n readOnly=!readOnly;\n this.checked=readOnly;\n story.forEachTiddler(function(t,e){story.refreshTiddler(t,null,true)});\n refreshDisplay();\n };\n</script><script label="只能读取">\n place.previousSibling.onchange();\n</script><script>\n var s=place.lastChild.style; s.display="inline"; s.fontWeight="normal";\n</script>
<script label="show/hide right sidebar">\n var show=document.getElementById('sidebar').style.display=='none';\n if (!show) {\n document.getElementById('sidebar').style.display='none';\n var margin='1em';\n }\n else {\n document.getElementById('sidebar').style.display='block';\n var margin=config.options.txtDisplayAreaRightMargin?config.options.txtDisplayAreaRightMargin:"";\n }\n place.innerHTML=(show?"隐藏工具栏&gt;&gt;":"&lt;&lt;显示工具栏"); // SET LINK TEXT\n place.title=show?"hide sidebar":"show sidebar"; // SET TOOLTIP\n document.getElementById('displayArea').style.marginRight=margin;\n config.options.chkShowRightSidebar=show;\n saveOptionCookie('chkShowRightSidebar');\n var sm=document.getElementById("storyMenu"); if (sm) config.refreshers.content(sm);\n return false;\n</script><script>\n if (config.options.chkShowRightSidebar==undefined)\n config.options.chkShowRightSidebar=true;\n if (!config.options.txtDisplayAreaRightMargin||!config.options.txtDisplayAreaRightMargin.length)\n config.options.txtDisplayAreaRightMargin="12em";\n var show=config.options.chkShowRightSidebar;\n document.getElementById('sidebar').style.display=show?"block":"none";\n document.getElementById('displayArea').style.marginRight=show?config.options.txtDisplayAreaRightMargin:"1em";\n place.lastChild.innerHTML=(show?"隐藏工具栏&gt;&gt;":"&lt;&lt;显示工具栏"); // SET LINK TEXT\n place.lastChild.title=show?"hide sidebar":"show sidebar"; // SET TOOLTIP\n place.lastChild.style.fontWeight="normal";\n</script>
<script>\n window.toggleSiteMenu=function() {\n var m=document.getElementById('siteMenu'); \n if (!m) return true; // no sitemenu element... let event bubble through...\n var show=m.style.display=="none";\n m.style.display=show?"block":"none";\n config.options.chkHideSiteMenu=!show; saveOptionCookie('chkHideSiteMenu');\n var nodes = document.getElementsByTagName("input");\n for(var t=0; t<nodes.length; t++)\n if (nodes[t].getAttribute("option")=="chkHideSiteMenu") nodes[t].checked=show;\n var doDblclick=config.options.chkHideSiteMenu&&!config.options.chkShowRightSidebar;\n document.ondblclick=doDblclick?window.toggleSiteMenu:null;\n window.status=document.body.title=doDblclick?"double-click page background to display menubar":"";\n return false;\n };\n if (config.options.chkHideSiteMenu==undefined) config.options.chkHideSiteMenu=false;\n var m=document.getElementById('siteMenu'); \n m.style.display=config.options.chkHideSiteMenu?"none":"block";\n var doDblclick=config.options.chkHideSiteMenu&&!config.options.chkShowRightSidebar;\n document.ondblclick=doDblclick?window.toggleSiteMenu:null;\n window.status=document.body.title=doDblclick?"double-click page background to display menubar":"";\n</script><<option chkHideSiteMenu>><script>\n place.lastChild.id="ToggleSiteMenu_checkbox"\n place.lastChild.checked=!config.options.chkHideSiteMenu;\n place.lastChild.coreOnChange=place.lastChild.onchange;\n place.lastChild.onchange=function() {\n if (this.coreOnChange) this.coreOnChange();\n window.toggleSiteMenu();\n if (config.options.chkHideSiteMenu&&!config.options.chkShowRightSidebar) { \n clearMessage(); displayMessage("double-click page background to redisplay menubar")\n setTimeout("clearMessage()",3000); // EPHEMERAL "REMINDER" MESSAGE\n }\n };\n</script> 显示顶部工具栏
<script>\n var c=document.getElementById('contentWrapper'); \n if (config.options.chkHideSiteTitles==undefined) config.options.chkHideSiteTitles=false;\n for (var i=0; i<c.childNodes.length; i++) if (hasClass(c.childNodes[i],"header")) var h=c.childNodes[i];\n h.style.display=config.options.chkHideSiteTitles?"none":"block";\n</script><<option chkHideSiteTitles>><script>\n place.lastChild.checked=!config.options.chkHideSiteTitles;\n place.lastChild.onchange=function() {\n var c=document.getElementById('contentWrapper'); \n for (var i=0; i<c.childNodes.length; i++) if (hasClass(c.childNodes[i],"header")) var h=c.childNodes[i];\n config.options.chkHideSiteTitles=!this.checked;\n h.style.display=config.options.chkHideSiteTitles?"none":"block";\n saveOptionCookie("chkHideSiteTitles");\n };\n</script> 显示置顶主题页面
<script> \n window.showTopButton=function(show) {\n // remove existing "top" button (if any)\n var e=document.getElementById("scrollToTopButton"); if (e) e.parentNode.removeChild(e);\n if (config.browser.isIE) return; // IE doesn't do FIXED... do nothing.\n if (!show) return; // hiding button... we're done.\n // create a link that scrolls to the top of page\n e=createTiddlyElement(null,"A",null,null,"top");\n e.id="scrollToTopButton";\n e.title="scroll to top of page";\n e.onclick=function(){window.scrollTo(0,0)};\n // make it hover in the bottom right corner of the window\n var s=e.style;\n s.position="fixed";\n s.zIndex="1001"; // hopefully, this will be on top of ALL other elements!\n s.bottom=".5em";\n s.right=".5em";\n s.cursor="pointer";\n s.backgroundColor="#eee";\n s.color="#009";\n s.border="1px solid";\n s.padding="0 1em";\n s.MozBorderRadius="1em";\n s.fontSize="7pt";\n document.body.insertBefore(e,null);\n }\n if (config.options.chkShowTopButton==undefined) config.options.chkShowTopButton=false;\n window.showTopButton(config.options.chkShowTopButton);\n</script><<option chkShowTopButton>><script>\n place.lastChild.onchange=function() {\n window.showTopButton(this.checked);\n config.options.chkShowTopButton=this.checked;\n saveOptionCookie("chkShowTopButton");\n };\n</script> 增加向上按钮
/***\n!WebTemplatePlugin with ViewSourcePlugin and 404TiddlerPlugin\n''Version'': 0.3 (19 Jan 2006)\n''Author'': Clint Checketts\n\n!Instructions\nWebPageTemplate\nWebViewTemplate\nWebEditTemplate\n\n!Code\n***/\n//{{{\nconfig.options.chkHttpReadOnly = true;\nreadOnly = (document.location.toString().substr(0,4) == "http") ? config.options.chkHttpReadOnly : false;\n\nconfig.shadowTiddlers['WebPageTemplate'] = config.shadowTiddlers['PageTemplate'];\nconfig.shadowTiddlers['WebViewTemplate'] = "<!--{{{-->\sn<div class='toolbar' macro='toolbar closeTiddler permalink'></div>\sn<div class='title' macro='view title'></div>\sn<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date [[DD MMM YYYY]]'></span> (created <span macro='view created date [[DD MMM YYYY]]'></span>)</div>\sn<div class='tagging' macro='tagging'></div>\sn<div class='tagged' macro='tags'></div>\sn<div class='viewer' macro='view text wikified'></div>\sn<div class='tagClear'></div>\sn<<div class='commentsHaloscan' macro='haloscan' style='float: right;'></div><br />\sn<!--}}}-->";\nconfig.shadowTiddlers['WebEditTemplate'] = "<!--{{{-->\sn<div class='toolbar' macro='toolbar -cancelTiddler'></div>\sn<div class='title'><span macro='view title'></span> (source code)</div>\sn<div class='editor' macro='edit text'></div>\sn<!--}}}-->\sn";\n\nif(readOnly){ \n showWebView();\n}\n\nwindow.applyPageTemplateWebTemplate = window.applyPageTemplate;\nwindow.applyPageTemplate = function(title){\n if(readOnly && store.tiddlerExists('WebPageTemplate')) title = 'WebPageTemplate';\n applyPageTemplateWebTemplate(title);\n}\n\nfunction showWebView(){\n config.tiddlerTemplates[1] = "WebViewTemplate";\n config.tiddlerTemplates[2] = "WebEditTemplate";\n}\n\nconfig.macros.testWebView = {}\nconfig.macros.testWebView.handler = function(place,macroName,params)\n{\n createTiddlyButton(place,"ToggleWebTemplates","Toggle the web mode",toggleWebView);\n}\n\nvar toggleWebView = function(){\n readOnly = !readOnly;\n if(readOnly){\n showWebView();\n } else {\n config.tiddlerTemplates[1] = "ViewTemplate";\n config.tiddlerTemplates[2] = "EditTemplate";\n }\n store.notifyAll();\n}\n//}}}\n/***\n!View Source Plugin\n***/\n//{{{\nconfig.commands.viewSource = false;\n//}}}\n/***\n!404 Tiddler Plugin\n***/\n//{{{\n//config.shadowTiddlers['404 Error'] = "The tiddler you were looking for doesn't exist.\sn\snTry a <<search>> for the information you were looking for.";\nconfig.shadowTiddlers['404Template'] = "<div class='toolbar' macro='toolbar -closeTiddler closeOthers'></div><div class='title'>404 Error: <span macro='view title'></span></div><div class='viewer'>The page '<span macro='view title'></span>' doesn't exist.<br /><br />Try a <span macro='search'></span> for the information you were looking for.</div>";\n\n\nStory.prototype.displayTiddler404 = Story.prototype.displayTiddler;\nStory.prototype.displayTiddler = function(srcElement,title,template,animate,slowly)\n{\n// if (readOnly && !store.tiddlerExists(title) && !store.isShadowTiddler(title)){title = '404 Error'}\n if (readOnly && !store.tiddlerExists(title) && !store.isShadowTiddler(title)){template = '404Template';}\n this.displayTiddler404(srcElement,title,template,animate,slowly);\n}\n\n//}}}
<!--{{{-->\n<div class='toolbar' macro='toolbar closeTiddler permalink'></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date [[DD MMM YYYY]]'></span> (created <span macro='view created date [[DD MMM YYYY]]'></span>)</div>\n<div class='tagging' macro='tagging'></div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>\n<div class='commentsHaloscan' macro='haloscan' style='float: right;'></div><br />\n<!--}}}-->
<html>\n<iframe src='http://inblogs.net/kylecn/2006/08/by-shepherded-abckyle-xy.html' scrolling='no' style='width:680px; height:280px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
<<player id=1 flash http://www.youtube.com/watch?v=qBy4S7kLlkc 425 350>>
<html>\n<iframe src='http://inblogs.net/kylecn/2006/08/amanda.html' scrolling='no' style='width:680px; height:550px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
<<player id=1 flash http://www.youtube.com/v/qOu_oPY3wOI 425 350>>\n2006年7月25日Chris Olivero在 "John Tucker Must Die" (中文译名:恋爱刺客)首映现场谈男孩和女孩的事情。
<html>\n<iframe src='http://inblogs.net/kylecn/2006/08/86-josh.html' scrolling='no' style='width:680px; height:490px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
<<player id=1 flash http://www.youtube.com/v/He_SCEBqA4Q 425 350>>
<<player id=1 flash http://www.youtube.com/v/JeKqMkaMauA 425 350>>
<<player id=1 flash http://www.youtube.com/v/oB2InYyOHj4 425 350>>
<html><iframe border="0" src="http://kylexy.org/gallery/index.php?cat=2" name="book" hspace="0" vspace="0" marginwidth="0" marginheight="0" frameborder="0" height="2500" width="100%"></iframe>\n</html><<tiddler HideTiddlerTags>>
<html><iframe border="0" src="http://imagearchive.somber-resplendence.net/index.php?cat=16" name="book" hspace="0" vspace="0" marginwidth="0" marginheight="0" frameborder="0" height="1500" width="100%"></iframe>\n</html><<tiddler HideTiddlerTags>>
<html>\n<iframe src='http://inblogs.net/kylecn/2006/08/abc.html' scrolling='no' style='width:680px; height:320px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
<html><iframe src='http://www.yyets.com/bbs/forumdisplay.php?fid=69' style='width:100%; height:2500px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
<html>\n<iframe src='http://inblogs.net/kylecn/2006/08/yyetsidjakeypc-kylekyle79100kylekyle.html' scrolling='no' style='width:700px; height:580px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
<<player id=1 flash http://www.youtube.com/v/nSBklA9r77Q 425 350>>
<<player id=1 flash http://www.youtube.com/v/3eHGck5jGcY 425 350>>\n
<<player id=1 flash http://www.youtube.com/v/xE7Zq1fsYGU 425 350>>
2006年\n<<player id=1 flash http://www.youtube.com/v/6VDsNItdFFQ 425 350>>
<<player id=1 flash http://www.youtube.com/v/ISGpceOaexU 425 350>>
<<player id=1 flash http://www.youtube.com/v/lzPa9MDyNq8 425 350>>\n2006年8月10日,matt在洛杉矶的 "Pulse"(中文译名:连锁信)首映现场接受采访,谈为什么人们喜欢看恐怖电影, 他最喜欢的恐怖电影,以及他看了这部电影之后如何害怕,等等~\n
<html>\n<iframe src='http://nsvapp-prod-rr.stream.aol.com/fugu?t=uni&tsize=uni&tzone=-5&pmmsid=1701476&s1=&s2=&s3=Star%20Catcher%20LA%3A%20Emmy%20Couples&live=0&angle=0&startpos=0&startpos=0&lpos=0&ppos=0&poffset=0&event=&maxbps=0&skin=grey&width=320&height=317&aspect=4&video=true&showui=1&prefs=1&pid=DL&brand=AOL&player=unknown&len=126&country=US&company=AOL&version=1.0&franchise=ENTERTAINMENT%3A%20TMZ.com&showads=1&locale=US&autoplay=true&mtrack=1&gender=&age=&daypart=&dma=&genre=&cpid=pmmsid%3A1701476&surfacePoint=us.aol&sync=1&restartUrl=http%3A//us.video.aol.com/video.index.adp%3Fmode%3D1%26pmmsid%3D1701476&FUGU_CC=2&FUGU_SPEED=320000' scrolling='no' style='width:350px; height:350px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>\n
<<player id=1 flash http://www.youtube.com/v/HziwaIfg_tE 425 350>>
<script>\nconfig.options.chkShowRightSidebar = false; // 隐藏 or true 顯示\nsaveOptionCookie('chkShowRightSidebar');\nconfig.refreshers.content(document.getElementById("storyMenu"));\n</script>
<script>\nconfig.options.chkShowRightSidebar = true; // 隐藏 or true 顯示\nsaveOptionCookie('chkShowRightSidebar');\nconfig.refreshers.content(document.getElementById("storyMenu"));\n</script>
<script>\nconfig.options.chkShowLeftSidebar = false; // 隐藏 or true 顯示\nsaveOptionCookie('chkShowRightSidebar');\nconfig.refreshers.content(document.getElementById("storyMenu"));\n</script>
<html>\n<iframe src='http://inblogs.net/kylecn/2006/09/kyle-xy-hottie-stopped-by-our-office.html' scrolling='no' style='width:680px; height:1480px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
<html>\n<iframe src='http://inblogs.net/kylecn/2006/08/2006717.html' scrolling='no' style='width:680px; height:730px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
<html>\n<iframe src='http://inblogs.net/kylecn/2006/08/yyetsid-kylekylewhy-people-do-that.html' scrolling='no' style='width:680px; height:350px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
<<player id=1 flash http://www.youtube.com/watch?v=20BXerxnJ-0 450 350>>
新版本直接构建在blogspot的博客服务基础上,大大提高了网站访问速度。而且发表新内容也相对非常容易。\n\n总之新版本的kyle xy中文网在各方面大大超越了老版本,希望在Kyle xy第二季播出的时候,能够给大家提供更好的服务。\n\n新版本的KYLE XY中文网地址: http://kylexycn.blogspot.com\n\n最后谢谢大家长期以来对老版本kyle xy中文网的支持!
<script label="关闭所有窗口">\n var tiddlers=store.getTiddlers('title');\n var titles=[];\n for (var t=0;t<tiddlers.length; t++)\n titles.push(tiddlers[t].title);\n story.closeAllTiddlers();\n return false;\n</script>
2006年7月31日: +++^70em^[kyle xy的又一则好消息,加收视率! ]...{{groupbox{{{small{\n <<moveablePanel>>[[最新公告|kyle xy的又一则好消息,加收视率! ]]: ''{{normal{"kyle xy的又一则好消息,加收视率! "}}}''\n----\n<html>\n<iframe src='http://kylecn.blogspot.com/2006/08/abc-has-decided-to-keep-airing-friday.html' scrolling='no' style='width:100%; height:320px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
<<player id=1 flash http://www.youtube.com/v/0Z-fgsdDAWA 425 350>>
Daniel ~Power-Bad Day\n<<player id=1 flash http://www.youtube.com/v/fhbFh6trE94 425 350>>
<html>\n<iframe src='http://inblogs.net/kylecn/2006/08/yyetsid.html' scrolling='no' style='width:680px; height:420px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
2006年8月5日: +++^60%^[KYLE XY的中国网站正式建成了! ]...{{groupbox{{{small{\n <<moveablePanel>>[[最新公告|庆祝新网站建成]]: ''{{normal{"KYLE XY的中国网站正式建成了!"}}}''\n----\n为各位kyle xy 的爱好者谋福利!!!为推广kyle xy而努力!!!\n\n最后,建议大家使用@@<<slider chkSlider '火狐浏览器' '火狐浏览器' '下载火狐浏览器'>>@@——自私的想法,因为火狐对本站支持比较好!
+++[怎么看本站视频?]...\n{{menubox{{{normal{<<tiddler CloseSlider>>\n本站视频一般使用的flash架构,待flash出现后,按播放按钮即可。\n可能在网络拥挤的时候需要更加耐心的等待,如果加载flash的时候始终出现空白,请把该栏目关闭后再打开,相当于刷新。\n\n观看分成几部分的较长视频节目,可以先把那几部分视频都点击播放,再全部暂停,等网络缓冲足够时间再播放,效果较好。\n===<script>place.lastChild.button.style.fontWeight="bold"</script>
<html>\n<iframe src='http://kylecn.blogspot.com/2006/08/kyle-kylekyle-xy-kylekyle-who-is-kyle.html' scrolling='no' style='width:680px; height:680px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>\n<<tiddler ReplaceTiddlerTitle with: "<span style='white-space:nowrap;font-size:.9em'>新剧 kyle xy 第1,2,3集观后感</span>">>
<<player id=1 flash http://www.youtube.com/v/dVFsoy8RbGw 425 350>>\n
[img[http://kylexycn.googlepages.com/1.jpg]]\n[img[http://kylexycn.googlepages.com/2.jpg]]\n[img[http://kylexycn.googlepages.com/3.jpg]]\n[img[http://kylexycn.googlepages.com/4.jpg]]\n[img[http://kylexycn.googlepages.com/5.jpg]]\n[img[http://kylexycn.googlepages.com/6.jpg]]\n[img[http://kylexycn.googlepages.com/7.jpg]]\n[img[http://kylexycn.googlepages.com/8.jpg]]\n[img[http://kylexycn.googlepages.com/9.jpg]]\n[img[http://kylexycn.googlepages.com/9a.jpg]]\n[img[http://kylexycn.googlepages.com/10.jpg]]\n[img[http://kylexycn.googlepages.com/10b.jpg]]\n[img[http://kylexycn.googlepages.com/10c.jpg]]\n[img[http://kylexycn.googlepages.com/10d.jpg]]\n[img[http://kylexycn.googlepages.com/11.jpg]]\n[img[http://kylexycn.googlepages.com/12.jpg]]\n[img[http://kylexycn.googlepages.com/12a.jpg]]\n[img[http://kylexycn.googlepages.com/13.jpg]]\n[img[http://kylexycn.googlepages.com/14.jpg]]\n[img[http://kylexycn.googlepages.com/15.jpg]]\n[img[http://kylexycn.googlepages.com/16.jpg]]\n[img[http://kylexycn.googlepages.com/17.jpg]]\n[img[http://kylexycn.googlepages.com/18.jpg]]\n[img[http://kylexycn.googlepages.com/19.jpg]]\n[img[http://kylexycn.googlepages.com/20.jpg]]\n[img[http://kylexycn.googlepages.com/21.jpg]]\n[img[http://kylexycn.googlepages.com/22.jpg]]
2006年8月30日: +++^70em^[第二季何时播出?采访kyle的爸爸得知时间]...{{groupbox{{{small{\n <<moveablePanel>>[[最新公告|最新采访kyle爸爸]]: ''{{normal{"来自Kyle爸爸的最新报道,第二季明年2月启动"}}}''\n----\n<html>\n<iframe src='http://inblogs.net/kylecn/2006/08/kyle-xykylebruce-thomas-kyle-bruce.html' scrolling='no' style='width:100%; height:780px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
2006年9月9日: +++^70em^[本站未来更新计划,重要进来看! ]...{{groupbox{{{small{\n <<moveablePanel>>[[最新公告|本站未来更新计划!重要进来看! ]]: ''{{normal{"本站未来更新计划!重要进来看! "}}}''\n----\n第一季完结后,本站下一步计划。基本上只更新一些基本关于kyle xy的新闻和大家新写的剧评。偶尔更新一些花絮性的访谈和搞笑视频。目前本人的更新重心放在了Roswell上,大家注意右上角的链接噢——[[Roswell中文网|http://roswellcn.googlepages.com/index.html]]。\n大家没看过Roswell的人如果觉得kyle xy很好看,也许你应该也看看roswell,真的会有似曾相识又很不同的感觉。而且非常好看,站长我看了三遍!!!依然感动!\n看完kyle xy看什么?看roswell!!!!\n顺便提一下,站长我得到了得到matt的亲笔签名照片的机会,到手之后会发上来给大家看~~~\n<<tiddler HideTiddlerTags>>
----\n++++(WelcomeShowFAQ)[问题|问题与解答]>...\n {{small{<<tiddler SiteFAQ>>}}}===<script>\n place.lastChild.id="Welcome_faq";\n place.lastChild.button.className="toolbar button";\n</script> ++++(WelcomeShowNews)[新闻|公告, 最新情报]>...\n {{small{<<tiddler SiteNews>>}}}===<script>\n place.lastChild.id="Welcome_news";\n place.lastChild.button.className="toolbar button";\n</script> ++++(WelcomeShowStats)[统计|最新统计文章,最新的,最老的,最长的,最短的文章……]>...\n {{small{@@display:block;<<tiddler ShowTiddlerStatistics>>@@}}}===<script>\n place.lastChild.id="Welcome_stats";\n place.lastChild.button.className="toolbar button";\n</script> {{left{{{nomal{{{nowrap{}}} &nbsp; {{nowrap{+++^18em^[clock]...<<moveablePanel>>钟\n----\n <html><embed src='clock.swf' style='margin:0;padding:0;height:90%;width:100%;'></embed></html>\n===<script>\n place.lastChild.button.innerHTML=(new Date()).formatString("今天是 DDD, MMM DD, YYYY");\n place.lastChild.button.style.marginLeft=place.lastChild.button.style.paddingLeft="0";\n</script>}}}}}}}}}<script>\n place.insertBefore(document.getElementById("Welcome_stats"),null);\n place.insertBefore(document.getElementById("Welcome_news"),null);\n place.insertBefore(document.getElementById("Welcome_faq"),null);\n</script><<tiddler HideTiddlerSubtitle>><<tiddler HideTiddlerBackground>><<tiddler HideTiddlerTags>><<tiddler DoubleClickDisable>><<tiddler ReplaceTiddlerTitle with: "<span style='white-space:nowrap;font-size:.9em'>欢迎光临kyle xy中文站</span>">>\n
2006年10月31日: +++^70em^[沉痛哀悼本站存放在youtube的70个剧集视频! ]...{{groupbox{{{small{\n <<moveablePanel>>[[最新公告|沉痛哀悼本站存放在youtube的70个剧集视频! ]]: ''{{normal{"沉痛哀悼本站存放在youtube的70个剧集视频! "}}}''\n----\n实在太沉痛了,今天突然收到youtube管理员寄来的70封信……我昏,把本站长上传的70个视频都删除了……\n该死的google收购了youtube就是把youtube赶尽杀绝吗?\n幸亏有24jack 同学在土豆网上上传的视频做替代,不然本站kyle xy第一季的全集在线看就要打水瓢了……\n大家注意了~~本站依然提供全集在线看~~少数空缺几集会尽快更新补全~~\n<<tiddler HideTiddlerTags>>
+++[我浏览这个网站遇到了麻烦?]...\n{{menubox{{{normal{<<tiddler CloseSlider>>\n 首先建议大家使用@@<<slider chkSlider '火狐浏览器' '火狐浏览器' '下载火狐浏览器'>>@@浏览,效果更好。@@color(#99ccff):IE 6.0@@浏览器可能不支持某些代码。实在是古老的浏览器……\n@@color(#99ccff):OPERA@@浏览器浏览效果也不错!\n像"Kyle XY论坛"这样的模块打开以后不知道如何关闭?再次点击“"Kyle XY论坛"”这个标题即可关闭!\n脚本有时很消耗时间,会显得有些卡,看到右边的<<tiddler ToggleRightSidebar>>吗?点击后,在<<slider chkSlider 'OptionsPanel' '偏好设置' '设置基本浏览选项'>>里设置成不显示动画(即点击取消动画项那个小勾),会大大缓解卡的情况。\n===<script>place.lastChild.button.style.fontWeight="bold"</script>
<html>\n<iframe src='http://avxavx.googlepages.com/firefox' scrolling='no' style='width:500px; height:110px' frameborder='0'></iframe>\n</html>
<html>\n<iframe border="0" src="http://www.haloscan.com/comments/kylexy/guestbook/" name="book" hspace="0" vspace="0" marginwidth="0" marginheight="0" frameborder="0" height="1500" width="100%"></iframe>\n</html><<tiddler HideTiddlerTags>>
{{menubox{{{fine{{{nomal{\n{{normal{@@display:block;/%\n{{nowrap{+++(changes)[相关链接:|LINKS,链接友站]...\n[[官方网站|http://abcfamily.go.com/kylexy/index.html]]\n[[MADa Corp|http://www.madacorp.com]]\n[[Matt's Official|http://www.mattdallasonline.com/]]\n[[Matt's Fan|http://mattdallasfan.com/]]\n[[josh博客|http://joshtrager.blogspot.com/]]\n\n[[YYeTs论坛|http://www.yyets.com/bbs/forumdisplay.php?fid=69]]\n[[星际之门|http://bbs.sger.net/forumdisplay.php?fid=268&sid=ZYHRrK]]\n[[天赐吧|http://post.baidu.com/f?ct=&tn=&rn=&pn=&lm=&kw=%CC%EC%B4%CD&rs2=0&myselectvalue=1&word=%CC%EC%B4%CD&submit=%B0%D9%B6%C8%CB%D1%CB%F7&tb=on]]\n[[美剧天地|http://www.meijumi.com]]\n\n无关链接:\n[[donews|http://inout.donews.com/]]\n===\n}}}/%
<html>\n<iframe src='http://inblogs.net/kylecn/2006/08/aimering-kyle-xy-kyle.html' scrolling='no' style='width:680px; height:1100px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
<html>\n<iframe src='http://inblogs.net/kylecn/2006/08/1kyle-xy-info2yyetssmallnai-1pilotshe.html' scrolling='no' style='width:680px; height:1550px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
<<player id=1 flash http://www.tudou.com/v/PZ61WnAdH2A 595 490>>\n<<player id=2 flash http://www.tudou.com/v/XMjP9r4LL40 595 490>>
<<player id=1 flash http://www.tudou.com/v/Dx7Hi3dak18 595 490>>\n<<player id=2 flash http://www.tudou.com/v/ogEh25uf9vs 595 490>>\n\n
<<player id=1 flash http://www.tudou.com/v/1L98Wt8xpJI 595 490>>\n<<player id=2 flash http://www.tudou.com/v/mCOhsOfAuhs 595 490>>\n\n
<<player id=1 flash http://www.tudou.com/v/81lZLr8ihtc 595 490>>\n<<player id=2 flash http://www.tudou.com/v/fiYyXyJiffw 595 490>>
<<player id=1 flash http://www.tudou.com/v/ldEiDpzvoWY 595 490>>\n<<player id=2 flash http://www.tudou.com/v/OmN6R1p9dDk 595 490>>
<<player id=1 flash http://v.56.com/flashApp/56.swf?img_host=v7.56.com&host=fcs6.56.com&pURL=28&sURL=5&user=avxjl&URLid=zhajm_1154939797_361&totaltimes=888866&effectID=0&flvid=1743975 375 355>><<player id=2 flash http://v.56.com/flashApp/56.swf?img_host=v8.56.com&host=fcs6.56.com&pURL=28&sURL=5&user=avxjl&URLid=zhajm_1154972585_673&totaltimes=888866&effectID=0&flvid=1748781 375 355>><<player id=3 flash http://v.56.com/flashApp/56.swf?img_host=v8.56.com&host=fcs6.56.com&pURL=28&sURL=5&user=avxjl&URLid=zhajm_1154972585_673&totaltimes=888866&effectID=0&flvid=1748781 375 355>>
<<player id=1 flash http://www.tudou.com/v/-xvpJ62SirU 595 490>>\n<<player id=2 flash http://www.tudou.com/v/kkEpNducwYg 595 490>>
<<player id=1 flash http://v.56.com/flashApp/56.swf?img_host=v10.56.com&host=fcs6.56.com&pURL=28&sURL=5&user=avxjl&URLid=zhajm_1155016077_434&totaltimes=873872&effectID=0&flvid=1752860 375 355>><<player id=2 flash http://v.56.com/flashApp/56.swf?img_host=v7.56.com&host=fcs6.56.com&pURL=28&sURL=5&user=avxjl&URLid=zhajm_1155018395_872&totaltimes=873872&effectID=0&flvid=1753141 375 355>><<player id=3 flash http://v.56.com/flashApp/56.swf?img_host=v8.56.com&host=fcs6.56.com&pURL=28&sURL=5&user=avxjl&URLid=zhajm_1155020101_68&totaltimes=873866&effectID=0&flvid=1753382 375 355>>
<<player id=1 flash http://v.56.com/flashApp/56.swf?img_host=v7.56.com&host=fcs6.56.com&pURL=28&sURL=5&user=avxjl&URLid=zhajm_1154888009_954&totaltimes=828199&effectID=0&flvid=1738747 375 350>>\n<<player id=2 flash http://v.56.com/flashApp/56.swf?img_host=v8.56.com&host=fcs6.56.com&pURL=28&sURL=5&user=avxjl&URLid=zhajm_1154889074_186&totaltimes=828199&effectID=0&flvid=1738849 375 350>>\n<<player id=3 flash http://v.56.com/flashApp/56.swf?img_host=v7.56.com&host=fcs6.56.com&pURL=28&sURL=5&user=avxjl&URLid=zhajm_1154890096_633&totaltimes=828199&effectID=0&flvid=1738940 375 350>>
<<player id=1 flash http://www.tudou.com/v/Q7yw-hR2Vyw 595 490>>\n<<player id=2 flash http://www.tudou.com/v/pwuy0cfKe6Y 595 490>>
<<player id=1 flash http://v.56.com/flashApp/56.swf?img_host=v8.56.com&host=fcs6.56.com&pURL=28&sURL=5&user=avxjl&URLid=zhajm_1155210286_277&totaltimes=865332&effectID=0&flvid=1773341 375 370>>\n<<player id=2 flash http://v.56.com/flashApp/56.swf?img_host=v10.56.com&host=fcs6.56.com&pURL=28&sURL=5&user=avxjl&URLid=zhajm_1155212908_540&totaltimes=865333&effectID=0&flvid=1773697 375 370>>\n<<player id=3 flash http://v.56.com/flashApp/56.swf?img_host=v10.56.com&host=fcs6.56.com&pURL=28&sURL=5&user=avxjl&URLid=zhajm_1155217880_10&totaltimes=865332&effectID=0&flvid=1774364 375 370>>
<<player id=1 flash http://www.tudou.com/v/hJznZYu_FGU 595 490>>\n<<player id=2 flash http://www.tudou.com/v/3yZTtFcbAGA 595 490>>\n\n
<<player id=1 flash http://www.tudou.com/v/AWBoH2qFSe8 595 490>>\n<<player id=2 flash http://www.tudou.com/v/en4VBr676nA 595 490>>\n
<<player id=1 flash http://www.tudou.com/v/QeBo1rhuUGk 595 490>>\n<<player id=2 flash http://www.tudou.com/v/ns1zicHXskQ 595 490>>
第3集预告<<player id=3 flash http://www.youtube.com/v/Ssv_nbgPyS8 425 350>>\n第4集预告<<player id=4 flash http://www.youtube.com/v/PiG2mCJhVC0 425 350>>\n第5集预告<<player id=5 flash http://www.youtube.com/v/qEpyEUOQNXo 425 350>>\n第6集预告<<player id=6 flash http://www.youtube.com/v/tlyXRneiEwQ 425 350>>\n<<player id=12 flash http://www.youtube.com/v/bj5kyjlwdsM 425 350>>\n第7集预告<<player id=7 flash http://www.youtube.com/v/8SDWdaYPwp4 425 350>>\n第8集预告<<player id=8 flash http://www.youtube.com/v/f4r1SdaIFQQ 425 350>>\n第9集预告<<player id=9 flash http://www.youtube.com/v/EV3VBUNXTD8 425 350>>\n<<player id=13 flash http://www.youtube.com/v/uSU9nJHyhB0 425 350>>\n第10集预告<<player id=10 flash http://www.youtube.com/v/IC8p50YYZ18 425 350>>
<html>\n<iframe src='http://cw.gabbly.com/gabbly/cw.jsp?e=1&t=kylexycn.googlepages.com' scrolling='no' style='width:100%; height:480px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>\n
TV Guide在艾美奖后采访Matt Dallas\n<html><iframe src='http://online.tvguide.com/Video/VideoPlayer.asp?videoname=EmmysAP06_Dallas&headerJPG=emmyafterparty06&vTime=97&live=true&vdir=Emmys2006' scrolling='no' style='width:400px; height:400px' frameborder='0'></iframe></html><<tiddler HideTiddlerTags>>\n\n
本站视频一般使用的flash架构,请耐心稍带调用flash文件的时间几秒钟。待flash出现后,按播放按钮即可。\n观看电视剧的时候,一般的电视都被分为几段,所以可以在看第一段的时候即把其他几段也播放,然后暂停,让其他每段都开始缓存,于是后面的几段视频都会看得非常流畅!\n\n一个小技巧: 大家在看较长切分成几部分的视频的时候,可以先按播放,再接着按暂停,分成几部分视频的就把几个部分都这样做,等视频缓冲一段时间后再观看,会流畅很多:)
<html>\n<iframe src='http://inblogs.net/kylecn/2006/08/kirsten-prout-amanda-bloom-kyle-xy-1.html' scrolling='no' style='width:680px; height:420px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
<html><iframe src='http://inblogs.net/kylecn/2006/08/chris-olivero-declan-on-kyle-xy.html' scrolling='no' style='width:680px; height:540px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
<html><iframe src='http://inblogs.net/kylecn/2006/08/jean-luc-bilodeau-josh-tra_115669010508694413.html' scrolling='no' style='width:680px; height:990px' frameborder='0'></iframe><embed src="http://lads.myspace.com/videos/vplayer.swf" flashvars="m=1059545187&type=video&cp=1" type="application/x-shockwave-flash" width="430" height="346"></embed>\n</html><<tiddler HideTiddlerTags>>
<html><iframe src='http://inblogs.net/kylecn/2006/08/kyle-on-kyle-xy-19821021-matt-dallas.html' scrolling='no' style='width:680px; height:435px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
<html><iframe src='http://inblogs.net/kylecn/2006/08/april-matson-lori-trager-on-kyle-xy.html' scrolling='no' style='width:680px; height:395px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
<html><iframe src='http://inblogs.net/kylecn/2006/08/marguerite-macintyre-nicole-trager.html' scrolling='no' style='width:680px; height:580px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
<html><iframe src='http://inblogs.net/kylecn/2006/08/bruce-thomas-stephen-trager-kyle-xy.html' scrolling='no' style='width:680px; height:250px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
使用此 TiddlyWiki 的空白范本之前,请先修改以下默认文章::[[TiddlerTweaker]]\n* SiteTitle 及 SiteSubtitle:网站的标题和副标题,显示于页面上方(在保存变更后,将显示于浏览器视窗的标题列)。\n* MainMenu:主菜单(通常在页面左测)。[[SiteMenuRight]] [[SiteMenuLeft]] [[StoryMenu]] [[SiteMenu]]\n [[SideBarOptions]] [[SideBarTabs]] [[OptionsPanel]]\n* DefaultTiddlers:包含一些文章的标题,可于进入TiddlyWiki 后开启。\n* PageTemplate:页面上标题背景\n* ArchivedTimeline: 按月归档插件 [[ArchivedTimelinezh_TW]]中文插件\n* SelectStylesheetPlugin:格式设定 [[woodshop]] [[Textures]]\n* StyleSheetColors: 颜色设定[[StyleSheetLayout]]\n* WebTemplatePlugin: 隐藏工具栏 [[WebTemplate]] [[ViewTemplate]]\n请输入您的大名,作为所建立/ 编辑文章的署名:<<option txtUserName>>\n\n[[ShowComponents]] [[StyleSheet]] [[config.notifyTiddlers]]\n\n[[PageTemplate]] [[StyleSheetLayout]][[SinglePageModePlugin]][[CheckboxPlugin]]\n\n[[TiddlerGroupsPlugin]] [[BrightText]] [[TiddlerGroupsPlugin]] [[TagCloudPlugin]][[TableOfContentsPlugin]] [[CollapseTiddlersPlugin]] [[BreadcrumbsPlugin]]\n[[TiddlerWithParamsPlugin]] [[TiddlyCardsPlugin]] [[ReminderMacros]] [[QuoteOfTheDayPlugin]]\n[[PlayerPlugin]] [[NestedSlidersPlugin]] [[MoveablePanelPlugin]]\n[[InlineJavascriptPlugin]] [[EditTiddlerPlugin]] [[DisableWikiLinksPlugin]] [[DeliciousPlayTaggerPlugin]]\n[[DatePluginConfig]] [[AliasPlugin]] [[DatePlugin]] [[CheckboxPlugin]] [[AttachFilePluginFormatters]]\n\n[[AutoTaggerPlugin]] [[HTMLFormattingPlugin]] [[ConfigTweaks]] [[SiteMenuLeftSidebar]]\n\n[[TabTimeline]]
+++[这是什么站点?如何和本站交换链接]...\n{{menubox{{{normal{<<tiddler CloseSlider>>\n 这是我帮kyle xy建立的kyle xy中文专门站!\n希望能推动观看kyle xy的浪潮~~\n\n如果您有意和本站交换链接,请给我发邮件avxavx@gmail.com\n===<script>place.lastChild.button.style.fontWeight="bold"</script>
<<option chkSaveBackups>> 保存备份\n<<option chkAutoSave>> 自动保存\n<<option chkGenerateAnRssFeed>> [[产生 RssFeed]]\n<<option chkOpenInNewWindow>> [[链接开启于新视窗]]\n<<option chkSaveEmptyTemplate>> [[保存范本]]\n<<option chkToggleLinks>> 点击文章使已开启者关闭\n\n<<option chkHttpReadOnly>> [[隐藏编辑功能]] ({{{http:}}})\n<<option chkForceMinorUpdate>> 修改文章不变更日期时间\n(确认修改同时按 Shift 键,或只按 Ctrl-Shift-Enter)\n<<option chkConfirmDelete>> 删除文章前确认\n\n编辑模式中显示列数: <<option txtMaxEditRows>>\n存放备份文件的资料夹: <<option txtBackupFolder>>\n档案系统编码:<<option txtFsEncode>>\n<<<\n使用Gecko based的浏览器(如:Firefox)时,\n指定正确系统环境编码(BIG5、GBK、SHIFT-JIS、EUC-KR....等),\n可支持保存文件于非 ASCII 路径及档名。\n<<<
<<player id=1 flash http://www.youtube.com/v/bP8B66LzDg8 425 350>>
<html>\n<iframe src='http://kylecn.blogspot.com/2006/08/matt-dallas-kirsten-kyle-xy-abc.html' scrolling='no' style='width:680px; height:980px' frameborder='0'></iframe>\n</html><<tiddler HideTiddlerTags>>
<<player id=1 flash http://www.youtube.com/v/EB8RjYDhDHs 425 350>>