var calendar=new Object();
calendar.module=new Object();
calendar.module.mouse=new Object();
calendar.mouse=new Object();
calendar.left=new Object();
calendar.left.test=new Object();
calendar.server=new Object();
calendar.selectid=0;
calendar.dates=Array();
calendar.createpage=new Object();
calendar.canmove=true; //是否能够移动日历光标
calendar.left.actives=new Object();
calendar.classes=new Object();
calendar.server.date=function(){
var ub=$_DOM('_cday').innerHTML.split(',');
for (var i=0;i<ub.length;i++) ub[i]=Number(ub[i]);
return ub;
}
calendar.date=function(){
var ub=$_DOM('_cdate').innerHTML.replace(/月/gi,'').split('年');
for (var i=0;i<ub.length;i++) ub[i]=Number(ub[i]);
return ub;
}
calendar.module.mouse.out=function(t,fx){
if (fx==0){
t.className='left';
}else if (fx==1){
t.className='right';
}
}
calendar.module.mouse.over=function(t,fx){
if (fx==0){
t.className='lefting';
}else if (fx==1){
t.className='righting';
}
}
calendar.module.mouse.click=function(fx){
var daf=$_DOM('_calendar_defaultdate').value.split('-');
for (j=0;j<3;j++) daf[j]=Number(daf[j]);
this.sunday=$_DOM('_calendar_date').value.split('-'); //切换前的星期日日期array(2010,10,25)
var d=new Date(this.sunday[0],this.sunday[1]-1,this.sunday[2]);
this.parameters="k="+$_DOM('boardid').value+"&f="+fx+"&ds="+$_DOM('_calendar_date').value;
if (fx==1) d=new Date(d-(-7)*24*60*60*1000);
else d=new Date(d-7*24*60*60*1000);
//生成7个日期
var ds=Array(),str,span,ek;
for (var i=0;i<7;i++){
ds[i]=new Date(d-(-i)*24*60*60*1000);
ek=ds[i].getDate();
if (ek<10) ek="0"+String(ek);
else ek=String(ek);
el=Number(ds[i].getMonth())+1;
if (el<10) el="0"+String(el);
else el=String(el);
str=el+"-"+ek;
span=$_DOM('calendar_module_listof'+i);
span.innerHTML=str; //更新表格第一列的日期
//将当前日期背景改为蓝色
span=$_DOM('calendar_module_tr'+i);
span.className=(daf[0]==Number(ds[i].getFullYear()) && daf[1]==Number(ds[i].getMonth())+1 && daf[2]==Number(ds[i].getDate()))?'select':'';
}
$_DOM('rilicrrqi').innerHTML=String(ds[6].getFullYear())+"年"+String(Number(ds[6].getMonth())+1)+"月";
$_DOM('_calendar_date').value=String(Number(d.getFullYear()))+"-"+String(Number(d.getMonth())+1)+"-"+String(Number(d.getDate()));
this.sunday=$_DOM('_calendar_date').value.split('-');
}
calendar.onload=function(){
this.left.update();
this.onturnpage(4);
document.onkeydown=function(event){
if (!calendar.canmove) return;
if (jswindow_id>0) return;
if (calendar.classes.menu.opened) return;
if (!event) event=window.event;
var ckey=event.keyCode;
//alert(ckey);
var sid=calendar.selectid,sad;
switch (ckey){
case 13:
calendar.create();
return false;
case 37: case 65:
//left
sad=sid-1;
if (sad<0){
with (calendar){
onturnpage(1);
select(41);
}
}else{
calendar.select(sad);
}
return false;
case 38: case 87:
//up
sad=sid-7;
if (sad<0){
with (calendar){
onturnpage(1);
select(41-(6-sid));
}
}else{
calendar.select(sad);
}
return false;
case 39: case 68:
//right
sad=sid+1;
if (sad>41){
with (calendar){
onturnpage(2);
select(0);
}
}else{
calendar.select(sad);
}
return false;
case 40: case 83:
//down
sad=sid+7;
if (sad>41){
with (calendar){
onturnpage(2);
select(sid-35);
}
}else{
calendar.select(sad);
}
return false;
}
}
document.search_form.text.onfocus=function(){calendar.canmove=false;};
var xmlDoc=loadXML("../Ajax/calendar_colors.xml");
var aitem=xmlDoc.documentElement.childNodes;
var aitam=aitem.length;
var sk,aitom;
for (var i=0;i<aitam;i++){
sk=aitem[i].childNodes;
aitom=sk.length;
calendar.classes.menu.colors[i]=Array();
for (var j=0;j<aitom;j++){
calendar.classes.menu.colors[i][j]=xmlvalue(sk[j]);
}
}
}
calendar.left.update=function(){
var cd=calendar.date();
var span,a,m,y;
var myDate=new Date(cd[0],cd[1]-1,1);
var gd=myDate.getDay(); //获取这个月1日的星期数
if (gd==1) gd=8;
var v=24*60*60*1000;
var start_date=new Date(myDate-gd*v);
var cdk=calendar.server.date();
var sban,vl=/color_gray/gi,swan,skan;
for (var i=0;i<42;i++){
a=start_date.getDate();
calendar.dates[i]=start_date;
span=$_DOM('__'+String(i));
span.innerHTML='<a id="_a'+i+'" href="#">'+a+'</a>';
swan=$_DOM('_d'+String(i));
skan=$_DOM('_tdd'+String(i));
swan.innerHTML=a;
sban=$_DOM('_a'+i);
m=start_date.getMonth()+1;
sban.className="black";
if (cd[1]!=m){
swan.innerHTML='<span>'+a+'</span>';
sban.className="gray";
}
//当前日高亮显示
y=start_date.getYear();
if (y==Number(cdk[0]) && m==Number(cdk[1]) && a==Number(cdk[2])){
span.className="istoday";
swan.className="istoday";
skan.className="istoday";
}else{
span.className="";
swan.className="day";
swan.style.color="";
skan.className="";
}
sban.onclick=function(){calendar.onclick(this.id);return false;};
start_date=new Date(start_date-(-1)*v);
$_DOM('_actives'+String(i)).innerHTML=""; //删除以前获取的活动列表
}
span=$_DOM('today');
span.disabled=(cd[0]==Number(cdk[0]) && cd[1]==Number(cdk[1]));
//重新获取每日活动列表
this.actives.get();
}
calendar.onturnpage=function(ik){
var cd=this.date();
var cdk=this.server.date();
if (ik!==4){
if (ik==1){
cd[1]--;
if (cd[1]<1){
cd[1]=12;
cd[0]--;
}
}else if (ik==2){
cd[1]++;
if (cd[1]>12){
cd[1]=1;
cd[0]++;
}
}else if (ik==3){
cd[0]=cdk[0];
cd[1]=cdk[1];
}
var str=String(cd[0])+"年"+String(cd[1])+"月";
sed($_DOM('_cdate'),str);
sed($_DOM('__cdate'),str);
this.left.update();
}
//选中今天
var stf,i;
if (ik==3 || ik==4){
for (i=0;i<42;i++){
stf=$_DOM("_a"+String(i));
if (stf.innerHTML==cdk[2] && (!/gray/gi.test(stf.className))){
this.select(i);
break;
}
}
}
//若切换月份后光标指向了今天
if (ik==1 || ik==2){
for (i=0;i<42;i++){
stf=$_DOM("_a"+String(i)); //当前节点
//判断日期是否为今天且不为灰色日期
if (stf.innerHTML==cdk[2] && (!/gray/gi.test(stf.className))){
stf=$_DOM("__"+i);
if (classhave(stf.className,"istoday")){ //必须是当前年月
//将背景设为深蓝
$_DOM(stf+i).className=classpast($_DOM(stf+i).className,"todayandselected");
}
break; //找到后退出循环
}
}
}
}
calendar.onclick=function(ik){
var span=$_DOM(ik);
span.blur();
if (/gray/.test(span.className)){
var tunedid=Number(span.innerHTML);
this.onturnpage((Number(ik.replace(/_a/gi,''))<20)?1:2);
var str="_a",stt,stf;
for (i=0;i<42;i++){
stt=str+String(i);
stf=$_DOM(stt);
if (stf.innerHTML==tunedid && (!/gray/gi.test(stf.className))){
this.select(i);
break;
}
}
}else{
this.select(Number(ik.replace(/_a/gi,'')));
}
}
calendar.mouse.over=function(t){
t.className="hover";
}
calendar.mouse.out=function(t){
t.className="";
}
calendar.select=function(tid){
var span=$_DOM('_td'+tid);
var spaned=$_DOM('_td'+this.selectid);
var sban=$_DOM('__'+tid); //当前点击的日期
var sbaned=$_DOM('__'+this.selectid); //上次点击的日期
var styled=sban.className;
var styled2=sbaned.className;
var v=/haveactives/gi;
span.className="selected";
if (classhave(sban.className,"istoday") || classhave(sban.className,"todayandselected")){
sban.className="todayandselected";
}else{
sban.className="selected";
}
if (tid!=this.selectid){
spaned.className="";
if (classhave(sbaned.className,"todayandselected")){
sbaned.className="istoday";
}else{
sbaned.className="";
}
}
//若当前日期有活动
if (v.test(styled)) sban.className=classpast(sban.className,"haveactives");
//若以前的日期有活动
if (v.test(styled2)) sbaned.className=classpast(sbaned.className,"haveactives");
sbaned.getElementsByTagName('a')[0].style.color=(classhave(sbaned.className,"istoday"))?"#FFFFFF":"";
//更新当前表格id
this.selectid=tid;
}
calendar.create=function(){
var cdm=this.dates[this.selectid];
var cdy=cdm.getFullYear();
var cdmo=cdm.getMonth()+1;
var cdd=cdm.getDate();
var str=String(cdy)+'-'+String(cdmo)+'-'+String(cdd);
var url="back/create_active.php?b="+$_URL('b')+"&d="+str;
jswindow.open('新建活动',url,700,550);
}
calendar.createpage.onload=function(){
this.starttimechange();
var osp=$_DOM('textfield2').value.split('-');
var odp=new Date(Number(osp[0]),Number(osp[1])-1,Number(osp[2]));
odp=new Date(odp-(-7)*24*60*60*1000);
$_DOM('textfield7').value=odp.getFullYear()+"-"+(odp.getMonth()+1)+"-"+odp.getDate();
with (document.form1.textfield){
if (Trim(value)==""){
focus();
}else{
select();
}
}
}
calendar.createpage.starttimechange=function(){
$_DOM('textfield6').value=$_DOM("textfield2").value;
this.blur(2);
}
calendar.createpage.blur=function(t){
switch (t){
case 1:
//全天
if ($_DOM('checkbox').checked){
$_DOM('textfield3').style.display='none';
$_DOM('textfield5').style.display='none';
}else{
$_DOM('textfield3').style.display='';
$_DOM('textfield5').style.display='';
}
break;
case 2:
//重复频率
var seled=Number($_DOM('select').value);
var span=$_DOM('rep');
if (seled>0){
span.className='';
span=$_DOM('repif').style;
if (seled==2){
span.display='';
}else{
span.display='none';
}
var ost="",r=$_DOM('textfield2').value.split('-');
var until="";
var rd=new Date(Number(r[0]),Number(r[1])-1,Number(r[2]));
var rda="日,一,二,三,四,五,六".split(',');
var osd=rda[rd.getDay()];
switch (seled){
case 1:
ost="每周 在 星期"+osd;
break;
case 2:
if ($_DOM('radio3').checked){
ost=r[2]+"日";
}else{
var sd,j=0;
for (var i=1;i<31;i++){
sd=new Date(Number(r[0]),Number(r[1]-1),i);
sds=sd.getDay();
if (i==1 && sds!=1) j++;
if (sds==1) j++;
if (sd.getDate()==r[2]) break;
}
ost="第"+rda[j]+"周星期"+osd;
}
ost="每月 在 "+ost;
break;
case 3:
ost="每年 在 "+r[1]+"月"+r[2]+"日";
break;
}
if ($_DOM('radio2').checked){
var osp=$_DOM('textfield7').value.split('-');
until=",直到 "+osp[0]+"年"+osp[1]+"月"+osp[2]+"日";
}
$_DOM("frequency").innerHTML=ost+until;
}else{
span.className='disp';
}
break;
case 3:
var t=$_DOM('radio').checked;
var u=$_DOM("textfield7");
u.disabled=t;
this.blur(2);
break;
default:
alert('Error');
break;
}
}
calendar.createpage.submit=function(){
$_DOM("button").disabled=true;
var d=$_DOM('textfield8').value;
if (Trim($_DOM('textfield').value)==""){
Alert("创建失败","请填写活动主题",300,110,"calendar.createpage.error(1)");
return false;
}else if (Trim(d)==""){
Alert("创建失败","请填写活动分类",300,110,"calendar.createpage.error(2)");
return false;
}
$_DOM('actian').value="crcld_ca";
$_DOM('form1').target="ifr";
$_DOM('cot').value=$_DOM('editarea_base').innerHTML;
var seled=Number($_DOM('select').value);
var r=$_DOM('textfield2').value.split('-');
var rd=new Date(Number(r[0]),Number(r[1])-1,Number(r[2]));
var osd=Number(rd.getDay());
var val="";
switch (seled){
case 1:
val=String(osd);
break;
case 2:
if ($_DOM('radio3').checked){
//日期
val=String(r[2]);
}else{
//星期
var sd,j=0;
for (i=1;i<31;i++){
sd=new Date(Number(r[0]),Number(r[1]-1),i);
sds=sd.getDay();
if (i==1 && sds!=1) j++;
if (sds==1) j++;
if (sd.getDate()==r[2]) break;
}
val=String(j)+'|'+String(osd);
}
case 3:
val=String(r[1])+'|'+String(r[2]);
}
$_DOM('unt').value=val;
return true;
}
calendar.createpage.error=function(id){
with ($_WIN(1)){
$_DOM("button").disabled=false;
switch (id){
case 1:
$_DOM('textfield').focus();
break;
case 2:
$_DOM('textfield8').focus();
break;
case 3:
$_DOM('textfield3').select();
break;
case 4:
$_DOM('textfield5').select();
break;
case 5:
$_DOM('textfield2').select();
break;
case 6:
$_DOM('textfield4').select();
break;
case 7:
$_DOM('textfield7').select();
break;
}
}
window_close();
}
calendar.createpage.iframeload=function(){
var msg=window.frames['ifr'].document.getElementById('msg').innerHTML;
if (msg=="default"){
return false;
}else if (msg=="OK"){
top.document.location.reload();
return true;
}else{
msd=msg.split(',');
Alert("创建失败",msd[1],300,110,"calendar.createpage.error("+msd[0]+")");
return false;
}
}
calendar.left.actives.get=function(){
var a;
var str="";
var b=calendar.dates.length;
for (var i=0;i<b;i++){
a=calendar.dates[i];
str+=String(a.getFullYear())+'-'+String(a.getMonth()+1)+'-'+String(a.getDate())+'-'+String(a.getDay());
if (i+1!=b) str+=",";
}
this.parameters="dates="+str+"&action=getdata&b="+ajaxcode($_DOM('span_bn').innerHTML);
this.url="../Ajax/calendardata.php";
this.method="post";
this.Ajax=new Ajax.Request(this.url,{method:this.method,parameters:this.parameters,onComplete:this.finish});
}
calendar.left.actives.finish=function(q){
//copy(q.responseText);
var ot=calendar.left.actives;
ot.ids=Array();
ot.xml=q.responseXML;
var root=ot.xml.documentElement.childNodes; //根节点(data)
ot.activedatenum=root.length; //有活动的日期数(data节点下的各item节点)
//遍历各日期
var actives,itemid,activesnum,j,actclass,acttitle,span,allday,actcolor,actstarttime;
var sast,amn=0,actdisp,actid,actlink,dds;
for (var i=0;i<ot.activedatenum;i++){
actives=root[i].childNodes;
itemid=Number(root[i].getAttribute("id")); //当前item节点下的id属性(表格号)
span=$_DOM('_actives'+itemid);
span.innerHTML='';
//遍历item节点下的全部活动数据
activesnum=actives.length; //共有多少个活动
//左侧日历加粗显示有活动的日期
if (activesnum>0){
dds=$_DOM("__"+String(itemid));
//若是今天则只加粗
if (classhave(dds.className,"todayandselected")){
dds.className=classpast(dds.className,"haveactivesbold");
}else{
dds.className=classpast(dds.className,"haveactives");
}
}
for (j=0;j<activesnum;j++,amn++){
actclass=Number(actives[j].getAttribute("class")); //当前活动所属分类ID
acttitle=actives[j].firstChild.nodeValue; //当前活动的标题
allday=actives[j].getAttribute("allday"); //是否全天
actcolor=actives[j].getAttribute("color"); //背景颜色
actstarttime=actives[j].getAttribute("starttime"); //开始时间
sast=actstarttime.split(' ');
sast=sast[1].split(':');
ot.ids[amn]=actclass; //ot.ids[活动id]=所属分类id
actid=actives[j].getAttribute("dataid");
actlink='#" onclick="calendar.balloon.showactive(event,'+actid+','+itemid+');return false';
//更新到表格
if (allday=="true"){
if ($_DOM('ccesc'+String(actclass)).checked) actdisp="";
else actdisp=" style=\"display:none\"";
span.innerHTML+='<li id="actidis'+String(amn)+'" class="uup"'+actdisp+'><a class="notallday" target="_blank" href="'+actlink+'" style="color:'+actcolor+'" title="'+acttitle+'">'+String(sast[0])+':'+String(sast[1])+' '+acttitle+'</a></li>';
}else{
if ($_DOM('ccesc'+String(actclass)).checked) actdisp="";
else actdisp=";display:none";
span.innerHTML+='<li id="actidis'+String(amn)+'" style="background-color:'+actcolor+actdisp+'"><span class="uul"></span><span class="uur"></span><span class="udl"></span><span class="udr"></span><a href="'+actlink+'" title="'+acttitle+'" target="_blank">'+acttitle+'</a></li>';
}
}
}
}
calendar.classes.checkbox=function(u){
var span=$_DOM('ccesc'+u);
var val=span.checked;
span.checked=(!val);
span.onclick();
}
calendar.classes.checked=function(sta,id){
//function(复选框状态,复选框所属分类id)
var a=calendar.left.actives.ids; //已加载的全部活动的所属分类id
var dp=(sta)?'':'none';
for (var i=0;i<a.length;i++){
if (a[i]==id){
$_DOM('actidis'+i).style.display=dp;
}
}
}
calendar.classes.menu=new Object();
calendar.classes.menu.opened=false;
calendar.classes.menu.colors=Array();
calendar.classes.menu.open=function(id){
if (this.opened) this.close(); //若已打开菜单则关掉
this.openedid=id;
this.opened=true;
var span=$_DOM("_rlof"+id);
var sdan=span.style;
var cih=Number($_DOM("_colorof"+id).innerHTML);
sdan.display='';
sdan.background=this.colors[1][cih];
sdan.border="1px solid "+this.colors[2][cih];
this.eventstring='onmouseover="this.style.background=\''+this.colors[3][cih]+'\'" onmouseout="this.style.background=\'\'"';
span.innerHTML='<ul class="menul"><li '+this.eventstring+' onclick="calendar.classes.menu.click(1,'+id+')">只显示此分类</li><li '+this.eventstring+' onclick="calendar.classes.menu.click(2,'+id+')">重命名</li></ul><div class="div_line" style="background-color:'+this.colors[2][cih]+'"><div></div></div>';
var n='<div class="zfxd"><table width="140" border="0" cellspacing="0" cellpadding="0">',j=0,k=0;
for (var i=0;i<3;i++){
n+='<tr>';
for (j=0;j<7;j++){
n+='<td><div class="zfxk" style="background-color:'+this.colors[0][k]+'" onmouseover="this.style.border=\'1px solid #000000\'" onmouseout="this.style.border=\'1px solid #FFFFFF\'" onclick="calendar.classes.menu.selectedcolor('+k+','+id+')">';
if (cih==k) n+='<img src="../Images/board/right.gif" />';
n+='</div></td>';
k++;
}
n+='</tr>';
}
n+='</table></div>';
span.innerHTML+=n;
}
calendar.classes.menu.close=function(){
var id=this.openedid;
this.openedid=null;
this.opened=false;
var span=$_DOM("_rlof"+id);
span.style.display='none';
span.innerHTML="";
}
calendar.classes.menu.click=function(keyid,val){
var kcu,kcuid;
switch (keyid){
case 1:
//只显示此分类
var span=$_DOM("checkboxesarea").getElementsByTagName('input');
for (var i=0;i<span.length;i++){
kcu=span[i];
if (kcu.type!="checkbox") continue; //若不是复选框
kcuid=Number(kcu.id.replace(/^ccesc/gi,''));
kcu.checked=(kcuid==val);
calendar.classes.checked(kcu.checked,kcuid);
}
break;
case 2:
//重命名
jswindow.open("重命名","Include/calendarclassname.php?i="+val,400,105);
break;
}
this.close(); //关闭菜单
}
calendar.classes.editname=function(){
$_DOM('button').disabled=true;
this.editnameid=Trim($_DOM('_ccidf').innerHTML);
this.value=$_DOM("textfield").value;
this.method="post";
this.url="../Ajax/calendardata.php";
this.parameters="action=editclassname&id="+this.editnameid+"&val="+ajaxcode(this.value);
this.Ajax=new Ajax.Request(this.url,{method:this.method,parameters:this.parameters,onComplete:this.editnamefinish});
}
calendar.classes.editnamefinish=function(q){
var root=q.responseXML.documentElement;
var msg=root.firstChild.childNodes.firstChild.nodeValue;
if (msg=="OK"){
var span=$_DAM('_ddd'+calendar.classes.editnameid);
span.innerHTML=calendar.classes.value;
span.title=span.innerHTML;
top.window_close();
}else{
top.Alert("操作失败",msg,400,110,"calendar.classes.editnameerror()");
return false;
}
}
calendar.classes.editnameerror=function(){
$_WIN(1).$_DOM('button').disabled=false;
window_close();
}
calendar.classes.menu.selectedcolor=function(colorid,classid){
this.close();
var col=this.colors[0][colorid];
var cii=-colorid*15;
$_DOM('classes_item_of'+classid).style.background=col; //更新分类名div背景颜色
$_DOM('rightlof'+classid).style.backgroundPosition=cii+"px -79px"; //更新下拉按钮颜色
$_DOM('_colorof'+classid).innerHTML=colorid; //更新菜单背景颜色
var a=calendar.left.actives.ids,b; //已加载的全部活动的所属分类id
for (var i=0;i<a.length;i++){
if (a[i]==classid){
b=$_DOM('actidis'+i);
if (b.style.backgroundColor==""){
b.getElementsByTagName("a")[0].style.color=col;
}else{
b.style.backgroundColor=col;
}
}
}
this.url="../Ajax/calendardata.php";
this.method="post";
this.parameters="classid="+classid+"&colorid="+colorid+"&action=setclasscolor";
this.Ajax=new Ajax.Request(this.url,{method:this.method,parameters:this.parameters});
}