''Adaptació del calendari de [[Paulo Soares|http://www.math.ist.utl.pt/~psoares/addons.html#PlasticCalendarPlugin]]''<<calendar>>\n* ''Instal·lació'': Per fer-lo servir al vostre TiddlyWiki, només cal copiar [[aquest tiddler|CalendariPetit]] i etiquetar-lo amb systemConfig.\n* ''Versions'':També hi ha una versió [[més gran|CalendariGran]]. Podeu provar les dues, però només podeu fer servir una versió al mateix temps, la que estigui etiquetada systemConfig.\n* ''Festius'':Per que indiqui els [[Festius]], també haureu de copiar el tiddler [[Festius]] i etiquetar-lo també amb systemConfig.\n* ''Anotacions del diari'':Per fer-hi una anotació, cliqueu sobre el dia, i entrei i deseu la anotació al tiddler que s'obrirà. Els tiddlers fets amb el botó ''nou diari'' també hi quedaran anotats, si no els hi canvieu el nom.\n* ''Ús'': Veieu els exemples (mireu el codi amb el botó ''mostra''):\n** Calendari del mes actual (més amunt).\n\n** Calendari d'un mes concret:\n<<calendar 1960 6>>\n** Calendari de 3 mesos des del més indicat (9):\n<<calendar 2075 9 3>>\n** Calendari des d'un mes (1), de 4 mesos, a 2 columnes:\n<<calendar 2006 1 4 2>>\n** Calendari d'un any sencer:\n<<calendar 2007>>\n
{{{\nversion.extensions.calendar = { major: 1, minor: 1, revision: 0, date: new Date(2005, 10, 02)};\n\n// --------------------------------------------------------------------\n// Calendar\n// --------------------------------------------------------------------\n\nconfig.macros.calendar = {holidays: []};\nconfig.macros.calendar.options = {\n // months as they appear in the calendar's title\n calendarMonths: ["gener", "febrer", "març", "abril", "maig", "juny", "juliol", "agost", "setembre", "octubre", "novembre","desembre"],\n // week day titles as they appear on the calendar\n calendarWeekDays: ["Du", "Dl", "Dm", "Dx", "Dj", "Dv", "Ds"],\n\n // day week starts from (normally 0-Su or 1-Mo)\n calendarWeekStart: 1,\n calendarToday: "Avui",\n calendarHoliday: "Festiu: ",\n calendarLongDateFormat: "DD MMM YYYY",\n calendarShortDateFormat: "0DD/0MM",\n calendarTag: ["horari"]\n};\n\n/***************************************************************************\n** Internal functions\n***************************************************************************/\nconfig.macros.calendar.calendarIsHoliday = function(date) {\n var cm = config.macros.calendar;\n var longHoliday = date.formatString(cm.options.calendarLongDateFormat);\n var shortHoliday = date.formatString(cm.options.calendarShortDateFormat);\n for(var i = 0; i < cm.holidays.length; i++) {\n var holiday = cm.holidays[i].split(":");\n if(holiday[0] == longHoliday || holiday[0] == shortHoliday) {\n return holiday[1];\n }\n }\n return null;\n}\n\nconfig.macros.calendar.onClickOtherDay = function(e) {\n var day = this.getAttribute('tiddlylink');\n story.displayTiddler(null,day,DEFAULT_EDIT_TEMPLATE);\n for(var i=0; i<config.macros.calendar.options.calendarTag.length; i++){\n story.setTiddlerTag(day, config.macros.calendar.options.calendarTag[i], i);\n }\n story.focusTiddler(day,"text");\n}\n\nconfig.macros.calendar.getPopupText = function(title) {\n var popup_entries = store.getTiddlerText(title).split("\sn");\n var popup = popup_entries[0];\n if(popup_entries.length>1) popup += " ...";\n return popup;\n}\n\nconfig.macros.calendar.findCalendar = function(child) {\n var parent;\n while (child && child.parentNode) {\n parent = child.parentNode;\n if (parent.id == "calendarWrapper") {\n return parent;\n }\n child = parent;\n }\n return null;\n}\n\nconfig.macros.calendar.selectDate = function(e) {\n if (!e) var e = window.event;\n var cm = config.macros.calendar;\n var calendar = cm.findCalendar(this);\n if (calendar) {\n var d = this.getAttribute("date");\n if (d != null) {\ncm.makeCalendar(calendar, new Date(new Number(d)));\n }\n }\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return false;\n}\n\nconfig.macros.calendar.makeCalendar = function(calendar, dt_current) {\n var cm = config.macros.calendar;\n var dt_today = new Date(new Number(calendar.getAttribute("today")));\n var currentDay = new Date(new Number(calendar.getAttribute("currentDay")));\n var setControls = calendar.getAttribute("setControls");\n calendar.setAttribute("date", dt_current.valueOf());\n\n while (calendar.hasChildNodes())\n calendar.removeChild(calendar.firstChild);\n\nif(setControls==1){\n // get same date in the previous year\n var dt_prev_year = new Date(dt_current);\n dt_prev_year.setFullYear(dt_prev_year.getFullYear() - 1);\n if (dt_prev_year.getDate() != dt_current.getDate())\n dt_prev_year.setDate(0);\n\n // get same date in the next year\n var dt_next_year = new Date(dt_current);\n dt_next_year.setFullYear(dt_next_year.getFullYear() + 1);\n if (dt_next_year.getDate() != dt_current.getDate())\n dt_next_year.setDate(0);\n\n // get same date in the previous month\n var dt_prev_month = new Date(dt_current);\n dt_prev_month.setMonth(dt_prev_month.getMonth() - 1);\n if (dt_prev_month.getDate() != dt_current.getDate())\n dt_prev_month.setDate(0);\n\n // get same date in the next month\n var dt_next_month = new Date(dt_current);\n dt_next_month.setMonth(dt_next_month.getMonth() + 1);\n if (dt_next_month.getDate() != dt_current.getDate())\n dt_next_month.setDate(0);\n}\n\n // get first day to display in the grid for current month\n var dt_firstday = new Date(dt_current);\n dt_firstday.setDate(1);\n dt_firstday.setDate(1 - (7 + dt_firstday.getDay() - cm.options.calendarWeekStart) % 7);\n\n var area, header;\n var line, cell, i;\n\n // 1 - calendar header table\n // 2 - print weekdays titles\n // 3 - calendar days table \ncalendar.cellPadding = 0;\ncalendar.cellSpacing = 0;\narea = createTiddlyElement(calendar, "tbody");\n\n // 1 - calendar header table\n header = createTiddlyElement(area,"tr", "calendarHeader");\n header.cellPadding = 0;\n header.cellSpacing = 0;\n\nif(setControls==1){ \nvar headerValues = [\n [ "<<", "selectYear", dt_prev_year.valueOf() ],\n [ "<", "selectMonth", dt_prev_month.valueOf() ],\n [ cm.options.calendarMonths[dt_current.getMonth()] + ' ' + dt_current.getFullYear(),\n "selectToday", dt_today.valueOf() ],\n [ ">", "selectMonth", dt_next_month.valueOf() ],\n [ ">>", "selectYear", dt_next_year.valueOf() ]\n ];\n\n for (i = 0; i < headerValues.length; ++i) {\n var link = createTiddlyElement(header,"td", null, null, headerValues[i][0]);\n if(i==2) link.colSpan=3;\n link.onclick = cm.selectDate;\n link.setAttribute("date", headerValues[i][2]);\n }\n} else {\n var link = createTiddlyElement(header,"td", null, null, cm.options.calendarMonths[dt_current.getMonth()] + ' ' + dt_current.getFullYear());\nlink.colSpan=7;\n}\n\n // 2 - print weekdays titles\n line = createTiddlyElement(area, "tr", "weekNames");\n for (var n = 0; n < 7; ++n) {\n createTiddlyElement(line, "td", null, null, cm.options.calendarWeekDays[(cm.options.calendarWeekStart + n)%7]);\n }\n\n // 3 - calendar days table\n var dt_current_day = new Date(dt_firstday);\n var day_class;\n var title;\n var holiday_name;\n var popup;\n var clickHandler;\n\n while (dt_current_day.getMonth() == dt_current.getMonth() ||\n dt_current_day.getMonth() == dt_firstday.getMonth()) {\n\n // print row header\n line = createTiddlyElement(area, "tr", "calendarLine", null, null);\n for (var n_current_wday = 0; n_current_wday < 7; ++n_current_wday) {\n title = dt_current_day.formatString(cm.options.calendarLongDateFormat);\n clickHandler = cm.onClickOtherDay;\n popup = null;\n holiday_name = cm.calendarIsHoliday(dt_current_day);\n\n if (holiday_name != null) {\n // holidays\n day_class = "holiDay";\n popup = cm.options.calendarHoliday + holiday_name;\n } else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6) {\n // weekend days\n day_class = "weekDay";\n } else {\n // print working days of current month\n day_class = "workingDay";\n }\n\nif(dt_current_day.getMonth() == dt_current.getMonth()){\n if (currentDay.valueOf() == dt_current_day.valueOf()) {\n // print current date\n if (store.tiddlerExists(title)) {\n // day has a tiddler associated with it\n day_class += " currentscheduledDay";\n clickHandler = onClickTiddlerLink;\n popup = cm.options.calendarToday + ": "+ cm.getPopupText(title);\n } else {\n day_class += " currentDay";\n popup = cm.options.calendarToday;\n}\n}\n\n if (store.tiddlerExists(title) && dt_current_day.valueOf() != dt_today.valueOf()) {\n // day has a tiddler associated with it\n day_class += " scheduledDay";\n clickHandler = onClickTiddlerLink;\n popup = cm.getPopupText(title);\n }\n}\n\n // extra formatting for days of previous or next month\n if (dt_current_day.getMonth() != dt_current.getMonth()) {\n day_class += " otherMonthDay";\n }\n\n var text = dt_current_day.getDate();\n var cell = createTiddlyElement(line, "td", null, day_class, text);\n cell.onclick=clickHandler;\n cell.setAttribute("date", dt_current_day.valueOf());\n cell.setAttribute("tiddlyLink", title);\n if(popup) cell.setAttribute("title", popup);\n\n dt_current_day.setDate(dt_current_day.getDate()+1);\n }\n }\n}\n\nconfig.macros.calendar.handler = function(place, macroName, params) {\n var start_date = new Array();\n var date;\n var n_rows = 1;\n var n_cols = 1;\n var n_months = 1;\n var setControls = 1;\n switch(params.length){\n case 0:\n date = new Date();\n // filter time values off\n start_date[0] = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n break;\n case 1:\n for(var i = 0; i < 12; i++){\n start_date[i] = new Date(params[0], i, 1);\n }\n n_rows = 4;\n n_cols = 3;\n n_months = 12;\n break;\n case 2:\n start_date[0] = new Date(params[0], params[1]-1, 1);\n break;\n case 3:\n n_cols = 3;\n n_months = params[2];\n for(var i = 0; i < n_months; i++){\n start_date[i] = new Date(params[0], params[1]-1+i, 1);\n }\n n_rows = Math.max(1,Math.ceil(n_months/n_cols));\n n_cols = Math.min(n_cols,n_months);\n break;\n case 4:\n n_months = params[2];\n n_cols = params[3];\n for(var i = 0; i < n_months; i++){\n start_date[i] = new Date(params[0], params[1]-1+i, 1);\n }\n n_rows = Math.max(1,Math.ceil(n_months/n_cols));\n n_cols = Math.min(n_cols,n_months);\n break;\n }\n if(n_months>1) setControls = 0;\n var currentDay = new Date();\n currentDay = new Date(currentDay.getFullYear(), currentDay.getMonth(), currentDay.getDate());\n var holder = createTiddlyElement(place, "table", null,"calendarHolder");\n var holderTable = createTiddlyElement(holder, "tbody");\n for(var i = 0; i < n_rows; i++){\n var holderLine = createTiddlyElement(holderTable, "tr");\n for(var j = 0; j < n_cols; j++){\n var holderCell = createTiddlyElement(holderLine, "td");\n if(n_cols*i+j+1<=n_months){\n var calendar = createTiddlyElement(holderCell, "table", "calendarWrapper");\n calendar.setAttribute("name", "calendarWrapper");\n calendar.setAttribute("setControls", setControls);\n calendar.setAttribute("today", start_date[n_cols*i+j].valueOf());\n calendar.setAttribute("currentDay", currentDay.valueOf());\n config.macros.calendar.makeCalendar(calendar, start_date[n_cols*i+j]);\n }\n }\n }\n}\n\nfunction refreshCalendars(hint) {\n var calendars = document.getElementsByName("calendarWrapper");\n var i, c;\n for (i = 0; i < calendars.length; ++i) {\n c = calendars.item(i);\n if (c.id == "calendarWrapper") {\n config.macros.calendar.makeCalendar(c, new Date(new Number(c.getAttribute("date"))));\n }\n }\n}\n\nstore.addNotification(null, refreshCalendars);\n\nsetStylesheet("/***\sn!Calendar Styles\sn***/\sn/*{{{*/\sn .viewer .calendarHolder {\sn margin-left: auto;\sn margin-right: auto;\sn border: none;\sn}\sn\sn .viewer .calendarHolder table {\sn border: none;\sn margin: 0;\sn}\sn\sn .viewer .calendarHolder tr {\sn border: none;\sn vertical-align: top;\sn}\sn\sn .viewer .calendarHolder td {\sn border: none;\sn vertical-align: top;\sn}\sn\sn .viewer #calendarWrapper {\sn width: 21em;\sn border: 2px solid #4682b4;\sn cursor: pointer;\sn}\sn\sn #calendarWrapper #calendarLine td {\sn height: 2.5em;\sn}\sn\sn #calendarWrapper tr {\sn border:none;\sn}\sn\sn #calendarWrapper td {\sn text-align: center;\sn vertical-align: middle;\sn width: 14.28%;\sn border:none;\sn}\sn\sn #calendarWrapper #calendarHeader td{\sn color: #ffffff;\sn background-color: #4682b4;\sn height: 2em;\sn}\sn\sn #calendarWrapper #weekNames td {\sn color: #ffffff;\sn background-color: #87cefa;\sn height: 2em;\sn}\sn\sn #calendarWrapper .weekDay {\sn background-color: #ff9999;\sn}\sn\sn #calendarWrapper .holiDay {\sn background-color: #ff0000;\sn}\sn\sn #calendarWrapper .currentDay {\sn border: solid #ff0000 1px;\sn font-weight: bold;\sn}\sn\sn #calendarWrapper .currentscheduledDay {\sn border: solid #ff0000 2px;\sn font-weight: bold;\sn}\sn\sn #calendarWrapper .workingDay {\sn background-color: #ffffff;\sn}\sn\sn #calendarWrapper .scheduledDay {\sn border: solid orange 2px;\sn}\sn\sn #calendarWrapper .otherMonthDay {\sn background-color: #ddd;\sn}\sn\sn/*}}}*/","CalendarStyles");\n}}}
{{{\nversion.extensions.calendar = { major: 1, minor: 1, revision: 0, date: new Date(2005, 10, 02)};\n\n// --------------------------------------------------------------------\n// Calendar\n// --------------------------------------------------------------------\n\nconfig.macros.calendar = {holidays: []};\nconfig.macros.calendar.options = {\n // months as they appear in the calendar's title\n calendarMonths: ["gener", "febrer", "març", "abril", "maig", "juny", "juliol", "agost", "setembre", "octubre", "novembre","desembre"],\n // week day titles as they appear on the calendar\n calendarWeekDays: ["Du", "Dl", "Dm", "Dx", "Dj", "Dv", "Ds"],\n\n // day week starts from (normally 0-Su or 1-Mo)\n calendarWeekStart: 1,\n calendarToday: "Avui",\n calendarHoliday: "Festiu: ",\n calendarLongDateFormat: "DD MMM YYYY",\n calendarShortDateFormat: "0DD/0MM",\n calendarTag: ["horari"]\n};\n\n/***************************************************************************\n** Internal functions\n***************************************************************************/\nconfig.macros.calendar.calendarIsHoliday = function(date) {\n var cm = config.macros.calendar;\n var longHoliday = date.formatString(cm.options.calendarLongDateFormat);\n var shortHoliday = date.formatString(cm.options.calendarShortDateFormat);\n for(var i = 0; i < cm.holidays.length; i++) {\n var holiday = cm.holidays[i].split(":");\n if(holiday[0] == longHoliday || holiday[0] == shortHoliday) {\n return holiday[1];\n }\n }\n return null;\n}\n\nconfig.macros.calendar.onClickOtherDay = function(e) {\n var day = this.getAttribute('tiddlylink');\n story.displayTiddler(null,day,DEFAULT_EDIT_TEMPLATE);\n for(var i=0; i<config.macros.calendar.options.calendarTag.length; i++){\n story.setTiddlerTag(day, config.macros.calendar.options.calendarTag[i], i);\n }\n story.focusTiddler(day,"text");\n}\n\nconfig.macros.calendar.getPopupText = function(title) {\n var popup_entries = store.getTiddlerText(title).split("\sn");\n var popup = popup_entries[0];\n if(popup_entries.length>1) popup += " ...";\n return popup;\n}\n\nconfig.macros.calendar.findCalendar = function(child) {\n var parent;\n while (child && child.parentNode) {\n parent = child.parentNode;\n if (parent.id == "calendarWrapper") {\n return parent;\n }\n child = parent;\n }\n return null;\n}\n\nconfig.macros.calendar.selectDate = function(e) {\n if (!e) var e = window.event;\n var cm = config.macros.calendar;\n var calendar = cm.findCalendar(this);\n if (calendar) {\n var d = this.getAttribute("date");\n if (d != null) {\ncm.makeCalendar(calendar, new Date(new Number(d)));\n }\n }\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return false;\n}\n\nconfig.macros.calendar.makeCalendar = function(calendar, dt_current) {\n var cm = config.macros.calendar;\n var dt_today = new Date(new Number(calendar.getAttribute("today")));\n var currentDay = new Date(new Number(calendar.getAttribute("currentDay")));\n var setControls = calendar.getAttribute("setControls");\n calendar.setAttribute("date", dt_current.valueOf());\n\n while (calendar.hasChildNodes())\n calendar.removeChild(calendar.firstChild);\n\nif(setControls==1){\n // get same date in the previous year\n var dt_prev_year = new Date(dt_current);\n dt_prev_year.setFullYear(dt_prev_year.getFullYear() - 1);\n if (dt_prev_year.getDate() != dt_current.getDate())\n dt_prev_year.setDate(0);\n\n // get same date in the next year\n var dt_next_year = new Date(dt_current);\n dt_next_year.setFullYear(dt_next_year.getFullYear() + 1);\n if (dt_next_year.getDate() != dt_current.getDate())\n dt_next_year.setDate(0);\n\n // get same date in the previous month\n var dt_prev_month = new Date(dt_current);\n dt_prev_month.setMonth(dt_prev_month.getMonth() - 1);\n if (dt_prev_month.getDate() != dt_current.getDate())\n dt_prev_month.setDate(0);\n\n // get same date in the next month\n var dt_next_month = new Date(dt_current);\n dt_next_month.setMonth(dt_next_month.getMonth() + 1);\n if (dt_next_month.getDate() != dt_current.getDate())\n dt_next_month.setDate(0);\n}\n\n // get first day to display in the grid for current month\n var dt_firstday = new Date(dt_current);\n dt_firstday.setDate(1);\n dt_firstday.setDate(1 - (7 + dt_firstday.getDay() - cm.options.calendarWeekStart) % 7);\n\n var area, header;\n var line, cell, i;\n\n // 1 - calendar header table\n // 2 - print weekdays titles\n // 3 - calendar days table \ncalendar.cellPadding = 0;\ncalendar.cellSpacing = 0;\narea = createTiddlyElement(calendar, "tbody");\n\n // 1 - calendar header table\n header = createTiddlyElement(area,"tr", "calendarHeader");\n header.cellPadding = 0;\n header.cellSpacing = 0;\n\nif(setControls==1){ \nvar headerValues = [\n [ "<<", "selectYear", dt_prev_year.valueOf() ],\n [ "<", "selectMonth", dt_prev_month.valueOf() ],\n [ cm.options.calendarMonths[dt_current.getMonth()] + ' ' + dt_current.getFullYear(),\n "selectToday", dt_today.valueOf() ],\n [ ">", "selectMonth", dt_next_month.valueOf() ],\n [ ">>", "selectYear", dt_next_year.valueOf() ]\n ];\n\n for (i = 0; i < headerValues.length; ++i) {\n var link = createTiddlyElement(header,"td", null, null, headerValues[i][0]);\n if(i==2) link.colSpan=3;\n link.onclick = cm.selectDate;\n link.setAttribute("date", headerValues[i][2]);\n }\n} else {\n var link = createTiddlyElement(header,"td", null, null, cm.options.calendarMonths[dt_current.getMonth()] + ' ' + dt_current.getFullYear());\nlink.colSpan=7;\n}\n\n // 2 - print weekdays titles\n line = createTiddlyElement(area, "tr", "weekNames");\n for (var n = 0; n < 7; ++n) {\n createTiddlyElement(line, "td", null, null, cm.options.calendarWeekDays[(cm.options.calendarWeekStart + n)%7]);\n }\n\n // 3 - calendar days table\n var dt_current_day = new Date(dt_firstday);\n var day_class;\n var title;\n var holiday_name;\n var popup;\n var clickHandler;\n\n while (dt_current_day.getMonth() == dt_current.getMonth() ||\n dt_current_day.getMonth() == dt_firstday.getMonth()) {\n\n // print row header\n line = createTiddlyElement(area, "tr", "calendarLine", null, null);\n for (var n_current_wday = 0; n_current_wday < 7; ++n_current_wday) {\n title = dt_current_day.formatString(cm.options.calendarLongDateFormat);\n clickHandler = cm.onClickOtherDay;\n popup = null;\n holiday_name = cm.calendarIsHoliday(dt_current_day);\n\n if (holiday_name != null) {\n // holidays\n day_class = "holiDay";\n popup = cm.options.calendarHoliday + holiday_name;\n } else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6) {\n // weekend days\n day_class = "weekDay";\n } else {\n // print working days of current month\n day_class = "workingDay";\n }\n\nif(dt_current_day.getMonth() == dt_current.getMonth()){\n if (currentDay.valueOf() == dt_current_day.valueOf()) {\n // print current date\n if (store.tiddlerExists(title)) {\n // day has a tiddler associated with it\n day_class += " currentscheduledDay";\n clickHandler = onClickTiddlerLink;\n popup = cm.options.calendarToday + ": "+ cm.getPopupText(title);\n } else {\n day_class += " currentDay";\n popup = cm.options.calendarToday;\n}\n}\n\n if (store.tiddlerExists(title) && dt_current_day.valueOf() != dt_today.valueOf()) {\n // day has a tiddler associated with it\n day_class += " scheduledDay";\n clickHandler = onClickTiddlerLink;\n popup = cm.getPopupText(title);\n }\n}\n\n // extra formatting for days of previous or next month\n if (dt_current_day.getMonth() != dt_current.getMonth()) {\n day_class += " otherMonthDay";\n }\n\n var text = dt_current_day.getDate();\n var cell = createTiddlyElement(line, "td", null, day_class, text);\n cell.onclick=clickHandler;\n cell.setAttribute("date", dt_current_day.valueOf());\n cell.setAttribute("tiddlyLink", title);\n if(popup) cell.setAttribute("title", popup);\n\n dt_current_day.setDate(dt_current_day.getDate()+1);\n }\n }\n}\n\nconfig.macros.calendar.handler = function(place, macroName, params) {\n var start_date = new Array();\n var date;\n var n_rows = 1;\n var n_cols = 1;\n var n_months = 1;\n var setControls = 1;\n switch(params.length){\n case 0:\n date = new Date();\n // filter time values off\n start_date[0] = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n break;\n case 1:\n for(var i = 0; i < 12; i++){\n start_date[i] = new Date(params[0], i, 1);\n }\n n_rows = 4;\n n_cols = 3;\n n_months = 12;\n break;\n case 2:\n start_date[0] = new Date(params[0], params[1]-1, 1);\n break;\n case 3:\n n_cols = 3;\n n_months = params[2];\n for(var i = 0; i < n_months; i++){\n start_date[i] = new Date(params[0], params[1]-1+i, 1);\n }\n n_rows = Math.max(1,Math.ceil(n_months/n_cols));\n n_cols = Math.min(n_cols,n_months);\n break;\n case 4:\n n_months = params[2];\n n_cols = params[3];\n for(var i = 0; i < n_months; i++){\n start_date[i] = new Date(params[0], params[1]-1+i, 1);\n }\n n_rows = Math.max(1,Math.ceil(n_months/n_cols));\n n_cols = Math.min(n_cols,n_months);\n break;\n }\n if(n_months>1) setControls = 0;\n var currentDay = new Date();\n currentDay = new Date(currentDay.getFullYear(), currentDay.getMonth(), currentDay.getDate());\n var holder = createTiddlyElement(place, "table", null,"calendarHolder");\n var holderTable = createTiddlyElement(holder, "tbody");\n for(var i = 0; i < n_rows; i++){\n var holderLine = createTiddlyElement(holderTable, "tr");\n for(var j = 0; j < n_cols; j++){\n var holderCell = createTiddlyElement(holderLine, "td");\n if(n_cols*i+j+1<=n_months){\n var calendar = createTiddlyElement(holderCell, "table", "calendarWrapper");\n calendar.setAttribute("name", "calendarWrapper");\n calendar.setAttribute("setControls", setControls);\n calendar.setAttribute("today", start_date[n_cols*i+j].valueOf());\n calendar.setAttribute("currentDay", currentDay.valueOf());\n config.macros.calendar.makeCalendar(calendar, start_date[n_cols*i+j]);\n }\n }\n }\n}\n\nfunction refreshCalendars(hint) {\n var calendars = document.getElementsByName("calendarWrapper");\n var i, c;\n for (i = 0; i < calendars.length; ++i) {\n c = calendars.item(i);\n if (c.id == "calendarWrapper") {\n config.macros.calendar.makeCalendar(c, new Date(new Number(c.getAttribute("date"))));\n }\n }\n}\n\nstore.addNotification(null, refreshCalendars);\n\nsetStylesheet("/***\sn!Calendar Styles\sn***/\sn/*{{{*/\sn .viewer .calendarHolder {\sn margin-left: auto;\sn margin-right: auto;\sn border: none;\sn}\sn\sn .viewer .calendarHolder table {\sn border: none;\sn margin: 0;\sn}\sn\sn .viewer .calendarHolder tr {\sn border: none;\sn vertical-align: top;\sn}\sn\sn .viewer .calendarHolder td {\sn border: none;\sn vertical-align: top;\sn}\sn\sn .viewer #calendarWrapper {\sn width: 11em;\sn border: 2px solid #4682b4;\sn cursor: pointer;\sn}\sn\sn #calendarWrapper #calendarLine td {\sn height: 0.5em;\sn}\sn\sn #calendarWrapper tr {\sn border:none;\sn}\sn\sn #calendarWrapper td {\sn text-align: center;\sn vertical-align: middle;\sn width: 0%;\sn border:none;\sn}\sn\sn #calendarWrapper #calendarHeader td{\sn color: #ffffff;\sn background-color: #4682b4;\sn height: 2em;\sn}\sn\sn #calendarWrapper #weekNames td {\sn color: #ffffff;\sn background-color: #87cefa;\sn height: 2em;\sn}\sn\sn #calendarWrapper .weekDay {\sn background-color: #ff9999;\sn}\sn\sn #calendarWrapper .holiDay {\sn background-color: #ff0000;\sn}\sn\sn #calendarWrapper .currentDay {\sn border: solid #ff0000 1px;\sn font-weight: bold;\sn}\sn\sn #calendarWrapper .currentscheduledDay {\sn border: solid #ff0000 2px;\sn font-weight: bold;\sn}\sn\sn #calendarWrapper .workingDay {\sn background-color: #ffffff;\sn}\sn\sn #calendarWrapper .scheduledDay {\sn border: solid orange 2px;\sn}\sn\sn #calendarWrapper .otherMonthDay {\sn background-color: #ddd;\sn}\sn\sn/*}}}*/","CalendarStyles");\n}}}
{{{\nversion.extensions.CatalanLingo = {\n major: 1, minor: 0, revision: 4,\n date: new Date(2006, 7, 17), \n type: 'translation',\n source: "http://pacoriviere.googlepages.com/index.htm#CatalanLingo"\n};\nconfig.shadowTiddlers.Copyright = "CatalanLingo - Localització de TiddlyWiki versió 1.0.3 (c) Paco Rivière, 2006. \sn\snSi ''feu servir CatalanLingo públicament'' apreciaria un enllaç cap a (http://pacoriviere.cat/).\sn\sn''L'ús comercial'' requireix permís previ escrit. Contacteu Paco Rivière a (friviere [a] palmcat [punt] cat).\sn\sn!LLICÈNCIA\sn\snCopyright (c) Paco Rivière 2006\sn\snEs permet la distribució del codi font i binari, amb o sense modificacions, sempre que es compleixin les següents condicions:\sn\snLa distribució del codi font ha de mantenir el copyright anterior, aquesta llista de condicions i el següent avís.\sn\snLa distribució del codi binari ha de mantenir el copyright anterior, aquesta llista de condicions i el següent avís a la documentació i/o altres materials subministrats amb la distribució.\sn\snEl nom de Paco Rivière ni els dels seus col·laboradors no es poden fer servir per recolçar o promoure productes derivats d'aquest programari, sense el seu permís explícit previ per escrit.\sn\snELS POSSEÏDORS DEL COPYRIGHT I/O ALTRES PARTS FACILITEN EL PROGRAMARI &quot;TAL QUAL&quot; SENSE CAP MENA DE GARANTIA, NI EXPLÍCITA NI IMPLÍCITA, INCLOSES, ENTRE ALTRES, LES GARANTIES IMPLÍCITES DE COMERCIALITZABILITAT I APTITUD PER A PROPÒSITS DETERMINATS. EN CAP CAS EL POSSEÏDOR DEL COPYRIGHT I/O ALTRES PARTS, TRET DEL QUE REQUEREIXIN ELS ACORDS PER ESCRIT, NO US HAURÀ DE RESPONDRE PER PERJUDICIS, INCLOSOS ELS DIRECTES, INDIRECTES, ESPECIALS, EXEMPLARS, O DANYS CONSEQÜENTS (INCLOSES ENTRE D'ALTRES LES PÈRDUES DE DADES, O BENEFICIS; O INTERRUPCIO DEL NEGOCI), COM SIGUI QUE S'HAGIN PRODUÏT I EN QUALSEVOL TEORIA DE FIABILITAT, TAN SI ÉS EN CONTRACTE, FIABILITAT ESTRICTE, O ALTRES (INCLOSES LA NEGLIGÈNCIA O ALTRES), QUE ES DERIVIN DE L'ÚS DEL PROGRAMA, EN QUALSEVOL FORMA, FINS I TOT SI AQUEST POSSEÏDOR O ALTRA PART HA ESTAT ADVERTIDA DE LA POSSIBILITAT D'AQUESTS PERJUDICIS.";\n\nconfig.commands.closeTiddler.text = "tanca";\nconfig.commands.closeTiddler.tooltip = "Tanca aquest tiddler";\nconfig.commands.closeOthers.text = "tanca altres";\nconfig.commands.closeOthers.tooltip = "Tanca tots els altres tiddlers";\nconfig.commands.editTiddler.text = "edita";\nconfig.commands.editTiddler.tooltip = "Canvia aquest tiddler";\nconfig.commands.editTiddler.readOnlyText = "mostra";\nconfig.commands.editTiddler.readOnlyTooltip = "Mostra el codi d'aquest tiddler";\nconfig.commands.saveTiddler.text = "desa";\nconfig.commands.saveTiddler.tooltip = "Desa els canvis a aquest tiddler";\nconfig.commands.saveTiddler.readOnlyText = "fet";\nconfig.commands.saveTiddler.readOnlyTooltip = "Torna a l'aspecte normal";\nconfig.commands.cancelTiddler.text = "anul·la";\nconfig.commands.cancelTiddler.tooltip = "Anul·la els canvis a aquest tiddler";\nconfig.commands.deleteTiddler.text = "suprimeix";\nconfig.commands.deleteTiddler.tooltip = "Suprimeix aquest tiddler";\nconfig.commands.deleteTiddler.warning = "Segur que voleu que suprimir '%0'?";\nconfig.commands.permalink.text = "enllaç permanent";\nconfig.commands.permalink.tooltip = "Enllaç permanent d'aquest tiddler";\nconfig.commands.references.text = "referències";\nconfig.commands.references.tooltip = "Mostra els tiddlers que enllacen a aquest";\nconfig.commands.references.popupNone = "Sense referències";\nconfig.commands.jump.text = "salta";\nconfig.commands.jump.tooltip = "Salta a un altre tiddler obert";\n\nconfig.macros.allTags.noTags = "No hi ha tiddlers amb etiquetes";\nconfig.macros.allTags.tooltip = "Mostra els tiddlers amb l'etiqueta ";\nconfig.macros.closeAll.label = "tanca tots";\nconfig.macros.closeAll.prompt = "Tanca tots el tiddlers que es mostren (excepte els que s'estàn editant)";\nconfig.macros.list.all.prompt = "Tots els tiddlers per ordre alfabètic";\nconfig.macros.list.missing.prompt = "Tiddlers que tenen enllaços cap a ells, però no estàn definits";\nconfig.macros.list.orphans.prompt = "Tiddlers sense enllaços des de cap altre";\nconfig.macros.list.shadowed.prompt = "Tiddlers amb ombres amb contingut per omisió";\nconfig.macros.newJournal.label = "nou diari";\nconfig.macros.newJournal.months = ["de gener de", "de febrer de", "de març de", "d'abril de", "de maig de", "de juny de", "de juliol de", "d'agost de", "de setembre de", "d'octubre de", "de novembre de","de desembre de"];\nconfig.macros.newJournal.prompt = "Fes un tiddler nou amb la data i hora actuals";\nconfig.macros.newTiddler.label = "nou tiddler";\nconfig.macros.newTiddler.title = "Nou tiddler";\nconfig.macros.newTiddler.prompt = "Obre un nou tiddler";\nconfig.macros.permaview.label = "torna vista";\nconfig.macros.permaview.prompt = "Enllaça a una URL que torni tots els tiddlers que es mostren ara";\nconfig.macros.saveChanges.label = "desa els canvis";\nconfig.macros.saveChanges.prompt = "Desa tots els canvis a un arxiu";\nconfig.macros.search.label = "cerca";\nconfig.macros.search.prompt = "Cerca en aquest TiddlyWiki";\nconfig.macros.search.successMsg = "S'han trobat %0 tiddlers que contenen: '%1'";\nconfig.macros.search.failureMsg = "No s'ha trobat cap tiddler amb: '%0'";\nconfig.macros.timeline.dateFormat = "DD MMM YYYY";\nconfig.macros.tagging.label = "articles:";\nconfig.macros.tagging.labelNotTag = "cap article:";\nconfig.macros.tagging.tooltip = "Llista de tiddlers etiquetats amb '%0'";\n\nconfig.messages.backupFailed = "No ha estat possible desar la còpia de l'arxiu";\nconfig.messages.backupSaved = "S'ha desat la còpia";\nconfig.messages.cantSaveError = "No es poden desar els canvis. Pot ser que el vostre navegador no permeti desar (Proveu de fer servir Firefox, en lloc), o degut a que el nom de la ruta de l'arxiu TiddlyWiki té algun caràcter incorrecte";\nconfig.messages.confirmExit = "--------------------------------\sn\snHi ha canvis que no s'han desat al TiddlyWiki. Si continueu perdreu aquests canvis\sn\sn--------------------------------";\nconfig.messages.customConfigError = "Error del tiddler systemConfig '%1' - '%0'";\nconfig.messages.emptyFailed = "No ha estat possible desar la plantilla buida";\nconfig.messages.emptySaved = "S'ha desat la plantilla buida";\nconfig.messages.externalLinkTooltip = "Enllaç extern cap a '%0'";\nconfig.messages.invalidFileError = "Sembla que l'arxiu original '%0' no és un TiddlyWiki vàlid";\nconfig.messages.macroError = "Hi ha un error a la macro <<%0>>";\nconfig.messages.macroErrorDetails = "Hi ha hagut un error a l'executar la macro <<%0>>:\sn%1";\nconfig.messages.missingMacro = "No es troba la macro";\nconfig.messages.mainFailed = "No ha estat possible desar l'arxiu principal de TiddlyWiki. Els vostres canvis no s'han desat";\nconfig.messages.mainSaved = "S'ha desat l'arxiu principal de TiddlyWiki";\nconfig.messages.noTags = "No hi ha tiddlers amb etiquetes";\nconfig.messages.notFileUrlError = "Cal desar aquest TiddlyWiki a un arxiu per poder desar els canvis";\nconfig.messages.overwriteWarning = "Ja hi ha un tiddler amb el nom '%0'. Trieu D'acord si el voleu sobreescriure";\nconfig.messages.rssFailed = "No ha estat possible desar el fil RSS";\nconfig.messages.rssSaved = "S'ha desat el fil RSS";\nconfig.messages.savedSnapshotError = "Sembla que aquest TiddlyWiki s'ha desat malament. Veieu el detalls a http://pacoriviere.googlepages.com/TiddlyWiki.html#BaixaElProgramari";\nconfig.messages.subtitleUnknown = "(desconegut)";\nconfig.messages.undefinedTiddlerToolTip = "El tiddler '%0' encara no existeix";\nconfig.messages.shadowedTiddlerToolTip = "El tiddler '%0' encara no existeix, però té un valor d'ombra predefinit";\nconfig.messages.unsavedChangesWarning = "ATENCIÓ! Hi ha canvis que no s'han desat al TiddlyWiki\sn\snTrieu D'acord per desar\snTrieu ANUL·LA per descartar-los";\nconfig.messages.messageClose.text = "tanca";\nconfig.messages.messageClose.tooltip = "Tanca aquest quadre";\nconfig.messages.dates.months = ["de gener de", "de febrer de", "de març de", "d'abril de", "de maig de", "de juny de", "de juliol de", "d'agost de", "de setembre de", "d'octubre de", "de novembre de","de desembre de"];\nconfig.messages.dates.days = ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"];\n\nconfig.views.editor.defaultText = "Entreu el text per a '%0'.";\nconfig.views.editor.tagChooser.popupNone = "No hi ha etiquetes definides";\nconfig.views.editor.tagChooser.tagTooltip = "Afegeix etiqueta ";\nconfig.views.editor.tagChooser.text = "afegeix etiquetes";\nconfig.views.editor.tagChooser.tooltip = "Tria entre les etiquetes actuals per afegir a aquest tiddler";\nconfig.views.editor.tagPrompt = "Afegiu les etiquetes separades per espais, [[feu servir corxets]] si cal, o afegiu-ne";\n\nconfig.shadowTiddlers.OpcionsAvançades = "<<option chkGenerateAnRssFeed>> [[GeneraFilRSS|FilRss]]\sn<<option chkOpenInNewWindow>> ObreEnllaçosEnNovaFinestra\sn<<option chkSaveEmptyTemplate>> DesaPlantillaBuida\sn<<option chkToggleLinks>> Clicant als enllaços a tiddlers ja oberts els tanca\sn^^(s'ignora amb la tecla Control o altre tecla modificadora)^^\sn<<option chkHttpReadOnly>> AmagaBotonsDEdicio al veure's com a HTTP\sn<<option chkForceMinorUpdate>> Tracta les edicions com a CanvisMenors conservant data i hora\sn^^(s'ignora amb la tecla Shift al clicar 'fet' o amb Ctrl-Shift-Enter^^\sn<<option chkConfirmDelete>> ConfirmaAbansDeSuprimir\snMàxim nombre de línies d'una capsa d'edició tiddler: <<option txtMaxEditRows>>\snNom de la carpeta per als arxius de còpia: <<option txtBackupFolder>>\sn";\nconfig.shadowTiddlers.ActualitzarCatalanLingo = "''Com actualitzar la versió de TiddlyWiki en català'':\sn\snEs recomana treballar sempre amb la darrera versió de CatalanLingo.\sn\sn!Instruccions\sn* Copia el [[contingut d'aquest tiddler|CatalanLingo]], al tiddler ''~CatalanLingo'' del teu TiddlyWiki i ''desa els canvis''.\sn* Només cal seguir aquestes instruccions si ja has afegit continguts (tiddlers) al teu TiddlyWiki. Per començar un nou TiddlyWiki clica [[aquí|BaixaElProgramari]].\sn\sn!Nota tècnica\snLa versió catalana de TiddlyWiki està formada per dues entitats separades, el que facilita l'actualizació del codi i de la traducció de forma independent:\sn* El codi (en anglés) que es troba aquí: http://www.tiddlywiki.com/empty.html\sn* La traducció al català, que es troba aquí: http://pacoriviere.googlepages.com/TiddlyWiki.html#CatalanLingo\snPer disposar de la darrera versió en anglés traduïda al català, només cal baixar els dos arxius anteriors i combinar-los seguint les Instruccions anteriors.\sn\sn!Versions\sn1.0.0 5-5-2006 - Primera versió pública\sn1.0.1 13-5-2006 - Petites correccions\sn1.0.2 14-5-2006 - Connector Calendari\sn1.0.3 15-5-2006 - Connector TriaTema i com ActualitzarCatalanLingo";\nconfig.shadowTiddlers.BaixaElProgramari = "Anem a baixar una còpia de TiddlyWiki que tú podràs modificar al teu ordinador.\sn\snClica [[aquí|http://pacoriviere.googlepages.com/TiddlyWiki.html]] amb el botó dret del ratolí i tria ''Desa l'enllaç al disc''. (No obris la pàgina).\sn\snA partir d'aquí ja pots obrir la pàgina al teu navegador, modificar-la i omplir-la de contingut. Pots fer-la servir al teu ordinador o pujar-la a internet i compartir-la.\sn\snAquí trobaràs una [[èxplicació més detallada|http://pacoriviere.googlepages.com/20minuts.html]]\snActualitzarCatalanLingo";\nconfig.shadowTiddlers.ComComençar = "Per començar amb aquest TiddlyWiki en blanc, heu de modificar els següents tiddlers:\sn* [[TitolDelLloc|SiteTitle]] & [[SubtitolDelLloc|SiteSubtitle]]: El títol i el subtítol del lloc, com es mostra a sobre (un cop desats, també apareixeran a la barra de títols del navegador)\sn* [[MenuPrincipal|MainMenu]]: El menú (normalment a l'esquerra)\sn* [[TiddlersPerOmisio|DefaultTiddlers]]: Conté els noms dels tiddlers que voleu que apareguin quan s'obre el TiddlyWiki\snTambé heu d'entrar el vostre nom d'usuari per signar les vostres edicions: <<option txtUserName>>";\nconfig.shadowTiddlers.Connectors = "Els connectors (plugins) permeten ampliar les funcions de [[TiddlyWiki]]:\sn\sn* ''En català'':\sn** [[Calendari|http://pacoriviere.googlepages.com/CalendariPlugin.html]] Calendari i agenda.\sn** [[Tria el Tema|http://pacoriviere.googlepages.com/TriaTema.html]] Tria l'aspecte de TiddlyWiki entre diversos fulls d'estil.\sn** [[Presentació|http://pacoriviere.googlepages.com/PresentacioPlugin.html]] Fes presentacions amb TiddlyWiki.\sn\sn* ''En anglés'': http://www.tiddlywiki.com/index.html#Plugins";\nconfig.shadowTiddlers.MainMenu = "ComComençar\snTiddlyWiki\sn[[BaixaElProgramari]]\sn[[Connectors]]\sn[[Donacions]]\sn[[RSS|FilRss]]\sn\sn© 2006 [[osmosoft|http://www.osmosoft.com]]\sn[[©|Copyright]] 2006 [[frivière|http://pacoriviere.cat/]]\sn\sn\sn^^TiddlyWiki versió <<version>>^^";\nconfig.shadowTiddlers.DefaultTiddlers = "ComComençar";\nconfig.shadowTiddlers.Donacions = "La localització de TiddlyWiki al català és programari lliure, disponible gratuitament per tothom i sempre ho serà. Si feu servir TiddlyWiki de forma regular i us resulta útil, podeu [[contribuïr amb una donació|https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;amp;business=friviere%40palmcat%2eorg&amp;amp;item_name=Donaci%c3%b3%20per%20la%20localitzaci%c3%b3%20de%20TiddlyWiki%20al%20catal%c3%a0&amp;amp;item_number=0035&amp;amp;amount=10%2e00&amp;amp;no_shipping=0&amp;amp;no_note=1&amp;amp;tax=0&amp;amp;currency_code=EUR&amp;amp;bn=PP%2dDonationsBF&amp;amp;charset=UTF%2d8]] encara que sigui modesta a PayPal (com ara 10 Euros)";\nconfig.shadowTiddlers.FilRss = "El fill RSS es troba [[aquí|index.xml]]. L'opció de generar un fil RSS encara està en desenvolupament, i s'ha d'acabar de polir en les properes versions. Només incorpora el text sense enllaços ni format, però permet seguir els canvis fàcilment. Podeu crear un fil RSS al vostre propi TiddlyWiki amb l'[[Opció Avançada|AdvancedOptions]] GeneraFilRSS.\sn\snMés informació sobre el fil RSS (en anglés):\sn\snhttp://www.tiddlywiki.com/index.html#RssFeed";\nconfig.shadowTiddlers.SiteTitle = "El meu TiddlyWiki";\nconfig.shadowTiddlers.SiteSubtitle = "bloc web personal no lineal, reutilitzable";\nconfig.shadowTiddlers.TiddlyWiki = "TiddlyWiki en català:\sn\snhttp://pacoriviere.googlepages.com/TiddlyWiki.html\sn[[Guia ràpida en català|http://pacoriviere.googlepages.com/20minuts.html]]\sn\snLloc web original de TiddlyWiki (en anglés):\sn\snhttp://www.tiddlywiki.com/";\n\nconfig.shadowTiddlers.OptionsPanel = "Aquestes [[Opcions d'Interficie|OptionsPanel]] per personalitzar TiddlyWiki es desen al vostre navegador\sn\snEl vostre nom per signar les vostres edicions. Escribiu-lo com una ParaulaWiki (com ara MartiCliment)\sn<<option txtUserName>>\sn<<option chkSaveBackups>> DesaCòpies\sn<<option chkAutoSave>> AutoDesa\sn<<option chkRegExpSearch>> CercaExpReg\sn<<option chkCaseSensitiveSearch>> CercaSensibleACaixa\sn<<option chkAnimate>> ActivaAnimacions\sn\snMostra les OpcionsAvançades";\n\nconfig.shadowTiddlers.SideBarOptions = "<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal '0DD MMM YYYY' 'diari'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel opcions 'Canvia les opcions avançades del TiddlyWiki'>>";\n\nconfig.shadowTiddlers.SideBarTabs = "<<tabs txtMainTab 'Data' 'Tiddlers per ordre cronològic' TabTimeline 'Títol' 'Tiddlers per ordre alfabètic' TabAll 'Etiquetes' 'Tiddlers etiquetats' TabTags 'Més' 'Més opcions' TabMore>>";\n\nconfig.shadowTiddlers.TabMore = "<<tabs txtMoreTab 'Falten' 'Tiddlers que no existeixen' TabMoreMissing 'Orfes' 'Tiddlers orfes' TabMoreOrphans Ombres 'Tiddlers amb ombra' TabMoreShadowed>>";\n\nconfig.views.wikified.defaultText = "El tiddler '%0' no existeix. Cliqueu dos cops per començar-lo.";\nconfig.views.wikified.defaultModifier = "(falta)";\nconfig.views.wikified.shadowModifier = "(ombra)";\nconfig.views.wikified.tag.tooltip = "Obre tiddlers marcats amb ";\nconfig.views.wikified.tag.labelTags = "Etiquetes: ";\nconfig.views.wikified.tag.openTag = "Obre l'etiqueta '%0'";\nconfig.views.wikified.tag.labelNoTags = "Sense etiquetes";\nconfig.views.wikified.tag.openAllText = "Obre tots els tiddlers marcats amb '%0'";\nconfig.views.wikified.tag.openAllTooltip = "Obre tots aquests tiddlers";\nconfig.views.wikified.tag.popupNone = "No hi ha altres tiddlers marcats amb '%0'";\n}}}\n
[[Calendari]]
version.extensions.Festiu = {\n major: 1, minor: 0, revision: 0,\n date: new Date(2006, 3, 2), \n type: 'config'\n};\n\nconfig.macros.calendar.holidays = [ "01/01:Cap d'Any", "06/01:Reis", "01/05:Festa del Treball", "24/06:Sant Joan", "11/09:Diada Nacional de Catalunya", "12/10:El Pilar", "01/11:Tots Sants", "06/12:Dia de la Constitució", "08/12:la Immaculada", "25/12:Nadal", "26/12:Sant Esteve" ];
version.extensions.Festiu = {\n major: 1, minor: 0, revision: 0,\n date: new Date(2006, 3, 3), \n type: 'config'\n};\n\nconfig.macros.calendar.holidays = [ "01/01:Cap d'Any", "06/01:Reis", "01/05:Festa del Treball", "24/06:Sant Joan", "11/09:Diada Nacional de Catalunya", "12/10:El Pilar", "01/11:Tots Sants", "06/12:Dia de la Constitució", "08/12:la Immaculada", "25/12:Nadal", "26/12:Sant Esteve" ];
<<calendar>>\nComComençar\nTiddlyWiki\n[[BaixaElProgramari]]\n[[Connectors]]\n[[Donacions]]\n[[RSS|FilRss]]\n\n© 2006 [[osmosoft|http://www.osmosoft.com]]\n[[©|Copyright]] 2006 [[frivière|http://www.xtec.cat/~friviere]]\n\n\n^^TiddlyWiki versió <<version>>^^
connector per a TiddlyWiki en català
Calendari