カレンダー
[beforeExec]
entry = function(){
_sub_calen_year_month();
ini();
};

ini = function(){
cp3 = function(){ return cal.year + to2(cal.month) + to2(cal.date); };
enc = function(s){ return encodeURIComponent(s); };
cal = new Object();
cal.user = Fx.loc.match(/user=([a-z0-9\-]+)/) ? RegExp.$1 : "nancyan";
cal.dat = Fx.loc.match(/dat=(\d+)/) ? Number(RegExp.$1) : 1252416289;
cal.str = "";
cal.actDat = "";
cal.date = 1;
var a = new Date();
cal.nowYear = a.getFullYear();
cal.nowMonth = a.getMonth() + 1;
cal.nowDate = a.getDate();

cal.year = Fx.loc.match(/year=(\d+)/) ? Number(RegExp.$1) : cal.nowYear;
cal.month = Fx.loc.match(/month=(\d+)/) ? Number(RegExp.$1) : cal.nowMonth;
calenMain(cal.year,cal.month);
calenSelectShow();
Fx.e("/home/" + cal.user + "/" + Fx.times(cal.dat,1));
};

_sub_calen_year_month = function(){
var str = "", s = "Calendar"
for(var i = 0; i < s.length; i++){
str += "\x3cspan class='calen" + i + "'>" + s.charAt(i) + "\x3c/span>";
}
str += "\x3cspan id='calenYear'>\x3c/span>\-\x3cspan id='calenMonth'>\x3c/span>";
echo("top1Logo", str);
};


to2 = function(s){ return ("0" + s).slice(-2); };
/* 年月のセレクトの表示 */
calenSelectShow = function(){ return;
var str = "<select name='year'>";
for(var i = 2005; i < 2013; i++){
str += "<option value='" + i + "'";
if(i == cal.year) str += " selected='selected'";
str += ">" + i + "年</option>";
}
str += "</select><select name='month' onchange='selChg(this.form)'>";
for(i = 1; i < 13; i++){
str += "<option value='" + i + "'";
if(i == cal.month) str += " selected='selected'";
str += ">" + i + "月</option>";
}
str += "</select>";
echo("calenSelectForm", str);
};

/* データの取得 */
Lo.entry = function(){
var str = Re.entry.responseText.replace(/\r?\n/g, "");
str = str.replace(/^.+\x3cdiv id="responses">/, "");
cal.article = str.match(/name="article_id" value="(\d+)"/) ? RegExp.$1 : null;
re = str.match(/id=\d+.+?>cal::\d{8}[^<]+</g);
re = re.join("");
cal.str = re.replace(/id=(\d+).+?>(cal::\d{8}[^<]+)</g, "$1$2\n");
calenDataShow();
};
calenDatDecode = function(s){
return (
s.replace(/\[(.+?)\,(.*?)\]/g, "\x3cb class='dat1'>*\x3c/b>$1\x3cspan class='hide'>$2\x3c/span>\x3cbr />")
);
};
/* データの挿入 */
calenDataShow = function(){
var reg = new RegExp("\\d+cal::" + cal.year + to2(cal.month) + ".+","g");
var r1 = cal.str.match(reg),a1,a2,a3;
if(r1 == null) return;
for(var i = 0; i < r1.length; i++){
if(r1[i].match(/(\d+)cal::(\d{8})(.+)/)){
a1 = RegExp.$1; a2 = RegExp.$2; a3 = RegExp.$3;
var a = Fid("cp" + a2);
var str = calenDatDecode(a3);
echo(a.lastChild, "\x3ca href='javascript:daysEntry(" + a2 + ")'>" + str + "\x3c/a>");
var b = Ftag(a, "a");
echo(b[1], "編集");
b[1].href = "javascript:sEntry(" + a1 + "," + a2 + ")";
b[0].href = "main.html?no=84&dat=" + cal.dat + "&num=" + a1;
}
}
};

lastDate = function(month){
var a = month - 1;
if(a < 0) a = 11;
return [31,28,31,30,31,30,31,31,30,31,30,31][a];
};

calenMain = function(year,month){
echo("calenYear", year);
echo("calenMonth", month);

echo("calenLogo", "\x3ca href='main.html?no=184&user=" + cal.user + "&dat=" + cal.dat + "'>" + cal.user + "@eclat\x3c/a>");

var str = ""; s = "Feb Jan Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" ");
for(i = 0; i < 12; i++){
str += "\x3ca class='month" +
(i == month - 1 ? "Act" : "Def") +
"' href='javascript:calenMainTo(" + (i + 1) + ")' title='" +
(i + 1) + "月'>" + s[i] + "\x3c/a> ";
}
str += " \x3ca href='main.html?no=184&user=" + cal.user + "&dat=" + cal.dat + "&year=" + year + "&month=" + month + "'>uri\x3c/a>";
echo("nowDate",str);

var str = "<table cellspacing='3' cellpadding='3'><tbody><tr>";
var i,j,n,s = "Sun Mon Tue Wed Thu Fri Sat".split(" ");
for(i = 0; i < 7; i++){
str += "<th class='th" + (i == 0 ? "0" : i == "6" ? "1" : "2") + "'>" + s[i] + "</th>";
}
str += "</tr><tr>";
var date = year + "/" + to2(month) + "/01 09:00";
var d1 = (new Date(date)).getDay();
var max = lastDate(month);
var d2 = (d1 + max - 1) % 7;
var bmax = lastDate(month - 1);
var cnt = -1;
var day,link;
var d = 1 - d1;
for(i = 0; i < 5; i++){
str += "<tr>";
for(j = 0; j < 7; j++){
day = d == -5 ? 30 : d == -4 && max == 31 ? 31 : d;
link = "\x3ca href='main.html?no=84' target='_blank' class='lin1'>" + day + "\x3c/a>";
s1 = year + to2(month) + to2(day);
str += day > 0 && day <= max ?
"<td id='cp" + s1 + "' class='act td" + (year == cal.nowYear && month == cal.nowMonth && (cal.nowDate == d) ? "3" : j % 7 == 0 ? "0" : j % 7 == 6 ? "1" : "2") + "'>\x3cdiv class='d1'>\x3cspan class='cnt" + (i < 10 ? "1" : "2") + "'>" + link + "\x3c/span> \x3ca href='javascript:sEntry(" + day + ",0)'>新規\x3c/a>\x3c/div>\x3cdiv class='d2'>*\x3c/div></td>" : "<td class='td4 month2'>・</td>";
d++;
}
str += "</tr>";
}
str += "</tbody></table>";

echo("listDisp", str);
if(cal.str != "") calenDataShow();
};
calenMainTo = function(month){
cal.month = month;
calenMain(cal.year,cal.month);
};

sEntry = function(n,fg){
absDispPosition(Fid("sDisp"));
cal.date = fg ? fg % 100 : n;
echo("sTD1", "■" + cal.year + "年" + cal.month + "月" +
(fg ? fg % 100 : n) + "日\x3cbr />:" + (fg ? "編集" : "新規"));
echo("sDispButton", fg ? "(*^(^* ) 編集!" : "\(*⌒ー⌒*)/新規!");
sDispMode = fg;
sDispNo = n;
echo("posterName", Vis.from);
sDispReset();
if(fg){
var str = echo(Fid("cp" + fg).lastChild);
str = str.replace(/\x3cbr\s?\/?>|\x3c\/?a[^>]*>|\x3c\/?b[^>]*>/gi, "");
var i = 0;
str.replace(/(.+?)\x3cspan [^>]+>(.*?)\x3c\/span>/g, function(e0,e1,e2){
echo("posterNo" + i,e1.replace(/^\*/,""));
echo("posterStr" + i,e2);
i++;
return "";
});
}
Fid(fg ? "posterStr0" : "posterNo0").focus();
counter();
};
absDispPosition = function(a){
var o = Fid("listDisp");
o.className = "opa";
a.style.display = "block";
a.style.left = (o.offsetLeft + Math.floor(o.offsetWidth / 7) + 2) + "px";
a.style.top = (o.offsetTop + 33) + "px";
a.style.width = (o.offsetWidth - Math.floor(o.offsetWidth / 7) * 2 - 8) + "px";
a.style.height = (o.offsetHeight - 40) + "px";
};

daysEntry = function(date){
absDispPosition(Fid("daysDisp"));
var str = echo(Fid("cp" + date).lastChild);
str = str.replace(/\x3c\/?a[^>]*>/gi, "");
str = str.replace(/(\x3c\/?)span/g, "$1div");
str = str.replace(/class="hide"/g, "");
var d = String(date);
var d1 = d.replace(/(\d{4})(\d\d)(\d\d)/, "$1/$2/$3");
str = d1 + Po.dateByDay(d1,1) + "\x3cbr />" + str;
echo("daysMsg", Fx.col(str));
};
sDispReset = function(){
for(var i = 0; i < 3; i++){
echo("posterNo" + i,"");
echo("posterStr" + i,"");
}
};
sDispClose = function(){
Fid("sDisp").style.display = "none";
Fid("daysDisp").style.display = "none";
Fid("listDisp").className = "";
};
selChg = function(o){
cal.month = Number(o.month.options[o.month.selectedIndex].value);
calenMain(cal.year, cal.month);
};
submitEntry = function(n){
var s = "",a,b;
for(var i = 0; i < 3; i++){
a = echo("posterNo" + i);
b = echo("posterStr" + i);
if(a != "") s+= "[" + a + "," + b + "]";
}
cal.actDat = s;
var str = enc("cal::" + cp3() + s);
var dat = sDispMode ?
"mode=update&oid=" + enc(Vis.oid) + "&type=comments&id=" + enc(sDispNo) + "&text=" :
"article_id=" + enc(cal.article) + "&poster_name=" + enc(echo("posterName")) + "&comment=";
dat += str;
Fx.e("diary_" + (sDispMode ? "editor" : "comment"),dat,"sDispResponse");
};
Lo.sDispResponse = function(){
sDispClose();
echo(Fid("cp" + cp3()).lastChild.firstChild, calenDatDecode(cal.actDat));
};
Fx.col = function(s){
var s = s.replace(/(\(\*\^\(\^\* \))/g, "\x3cspan class='kiss1'>$1\x3c\/span>");
s = s.replace(/(\( \*\^\)\^\*\)|^^|\(#\^\-\^#\)|p\(\^\-\^\)q)/g, "\x3cspan class='kiss2'>$1\x3c\/span>");
s = s.replace(/(\(\^\-\^y|\(\*\^\-\^\*\)|\(\*\^_\^\*\))/g, "\x3cspan class='kao1'>$1\x3c\/span>");
s = s.replace(/(愛|大好き)/g, "\x3cspan class='big'>$1\x3c\/span>");

return s;
};

Fx.footerAdd = "Eclat Cyber City Calendar Ver1.1 Last update 2009/11/03\x3cbr />";
counter = function(){
var str1 = echo("posterNo0") + echo("posterNo1") + echo("posterNo2");
var str2 = echo("posterStr0") + echo("posterStr1") + echo("posterStr2");
var str = str1 + str2;
var s = str.length;
var cnt = 13 + s;
for(var i = 0; i < 3; i++) if(echo("posterNo" + i) != "") cnt += 3;
cnt +=
(s - str.replace(/<|>/g, "").length) * 3 +
(s - str.replace(/"/g, "").length) * 5 +
(s - str.replace(/\x26|'/g, "").length) * 4;
echo("cntDisp", cnt);
};

[/beforeExec]
[cssText]
body,td,th,div { font-size:10pt; }
.hide { display:none; }
.top1 {
padding-left:96px; vertical-align:bottom;
background:url(MIHO/eclat/wee01b-2.gif) no-repeat;
}
.top1Header { color:tomato; font-size:10pt; }
#top1Logo {
font-size:24pt; font-family:"Times New Roman";
padding-top:4px; padding-bottom:8px;
}
.calen0 { color:green; }
.calen1 { color:gold; }
.calen2 { color:lightseagreen; }
.calen3 { color:tomato; }
.calen4 { color:#808080; }
.calen5 { color:lightsalmon; }
.calen6 { color:sandybrown; }
.calen7 { color:orange; }
.calenYear { color:#000; }
.calenLogo {
font-size:18pt; font-family:"Times New Roman";
color:#808080; line-height:1em; margin-right:1em;
}
.calenLogo a { color:#336699;}
.calenLogo a:hover { color:#000; }
#nowDate { font-size:11pt; font-family:"Times New Roman";
line-height:1em; white-space:nowrap;
}
.monthDef { color:#369; border-bottom:1px solid gold;}
.monthDef a:hover { color:magenta; }
.monthAct { color:#000 !important; border-bottom:1px solid red; font-weight:bold; }
#listDisp {

}
#listDisp table {
width:100%; /*
background-color:#fee; width:100%;
border:1px solid #ccf; border-radius:3px; -moz-border-radius:3px;*/
}
#listDisp th { width:14%; }
.th0 { color:red; }
.th1 { color:steelblue; }
.th2 { color:#000; }
.opa { filter:alpha(opacity=30); opacity:.3; -moz-opacity:.3; }
#listDisp th {

/*border:1px solid brown;
border-radius:4px; -moz-border-radius:4px; */
}
#listDisp td {
border-style:solid; border-width:1px; height:6em; vertical-align:top;
border-radius:6px; -moz-border-radius:6px; font-size:10pt;
}
td.td0 { border-color:tomato; background-color:#ffebcd;}
td.td1 { border-color:steelblue; background-color:#b0e0e6;}
td.td2 { border-color:#ccc; background-color:#ffefff; }
td.td3 { border-color:#000; background-color:#ffc; }
td.td4 { border-color:#ccc; vertical-align:middle !important; text-align:center; color:brown; }
td.other { text-align:center; color:#808080; }
.d1 { padding-left:.25em; padding-top:.25em;}
.d1 span { font-size:12pt; font-weight:bold; font-family:"Times New Roman";
background-color:#ccc;
border:1px dotted #a0a0a0; border-radius:3px; -moz-border-radius:3px;
}
td.act div.d2 {
margin-top:.25em; color:#808080;
line-height:1.1em;
}

td.act div.d2 a { color:navy; display:block; }
td.act div.d2 a:hover { color:magenta; }
span.cnt1 { padding-left:.5em; padding-right:.5em; }
span.cnt2 { padding-left:.25em; padding-right:.25em; }
span.cnt3 { color:#fff; padding-left:.25em; padding-right:.25em; }
span.cnt4 { color:#fff; padding-left:.5em; padding-right:.5em; }
.d1 a { color:steelblue; }
.d1 a:hover { color:magenta; background-color:yellow; }
a.lin1 { color:#000; }
a.lin1:hover { background-color:transparent; color:tomato; }
.absDisp {
display:none; position:absolute;
border:1px dotted #fc6;
background:#fff url(MIHO/wee01b.gif) no-repeat left bottom;
border-radius:4px; -moz-border-radius:4px;
}
#menuDisp a { text-decoration:underline;
background-color:yellow;
}

.selForm { margin:0; }
.topMenu { height:80px; }

#sTD1 { color:steelblue; }
#daysDisp table { width:100%; height:100%; }
#daysDisp td { vertical-align:top; }
#daysMsg { padding:1.5em; color:steelblue; }
#daysMsg div { color:#808080; font-size:11pt; }
.daysClose { text-align:right; padding-right:2em; }

.in1 { border:1px dashed orange; color:#5c4033;
border-radius:4px; -moz-border-radius:4px;
}
.in2 { width:95%; border:1px dashed orange; color:#5c4033;
border-radius:4px; -moz-border-radius:4px; padding:.25em .5em;
}
.sb1 { padding-top:.5em; }
.kiss1 { color:red; }
.kiss2 { color:magenta; }
.kao1 { color:blueviolet; }
.big { font-size:13pt; color:#b22222; }
#bottomLink { margin-bottom:1em; }
.dat1 { color:tomato; }
[/cssText]
[body]
<table width="100%" class="topMenu"><tbody><tr>
<td class="top1">
<$$div class="top1Header">#184 #84 #85 #103<$$/div>
<$$div id="top1Logo"><$$/div>
<$$span class="calenLogo" id="calenLogo"><$$/span>
<$$span id="nowDate"><$$/span>

</td>
<td align="right" valign="bottom">
<form class="calenSelectForm" id="calenSelectForm"></form>
</td></tr></tbody></table>

<$$div id="listDisp"><$$/div>
<$$div id="bottomLink"> <$$/div>

<form id="sDisp" class="absDisp">
<table width="100%"><tbody><tr>
<td width="180px">
<$$div><$$span id="posterName"><$$/span><$$/div>
<$$div id="sTD1">■新規<$$/div>
</td>
<td><table width="100%"><tbody>
<tr><td>φ(..) title : <input type="text" size="16" id="posterNo0" class="in1" onkeypress="counter()" onchange="counter()" onclick="counter()" /></td></tr>
<tr><td><$$textarea id="posterStr0" cols="28" rows="3" class="in2" onkeypress="counter()" onchange="counter()" onclick="counter()" ><$$/textarea></td></tr>
<tr><td>φ(..) title : <input type="text" size="16" id="posterNo1" class="in1" onkeypress="counter()" onchange="counter()" onclick="counter()" /></td></tr>
<tr><td><$$textarea id="posterStr1" cols="28" rows="3" class="in2" onkeypress="counter()" onchange="counter()" onclick="counter()" ><$$/textarea></td></tr>
<tr><td>φ(..) title : <input type="text" size="16" id="posterNo2" class="in1" onkeypress="counter()" onchange="counter()" onclick="counter()" /></td></tr>
<tr><td><$$textarea id="posterStr2" cols="28" rows="3" class="in2" onkeypress="counter()" onchange="counter()" onclick="counter()" ><$$/textarea></td></tr>
<tr><td class="sb1"><input type="button" value="送信" id="sDispButton" onclick="submitEntry()" /><input type="button" value="やめ" onclick="sDispClose()" />
文字数 : <$$span id="cntDisp">0<$$/span>/200(max)
</td></tr>
</tbody></table>
</td></tr></tbody></table>
</form>

<$$div id="daysDisp" class="absDisp">
<table><tbody><tr>
<td>
<$$div id="daysMsg"><$$/div>
<$$div class="daysClose"><$$a href="javascript:sDispClose()"><$$img src="http://www.geocities.jp/musicgarden_jp/7852.gif" alt="" border="0" /><$$br />とじる<$$/a>
</td>
</tr></tbody></table>
<$$/div>
[/body]
[exec]
document.title = "カレンダー Ver1.1";
entry();
[/exec]