calendar

<HTML><HEAD><TITLE>Calendar</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<SCRIPT language=JavaScript>

var gd=new Date();
var gToday=[gd.getFullYear(),gd.getMonth()+1,gd.getDate()];
var agenda=new Array;
var gfSelf=parent.document.getElementById(self.name);
//var theme=self.name.split(":");
var gCurMonth=eval(gToday);

parent.gfPop=parent.frames[self.name];

function addEvent(date, message, color, action, imgsrc) {
agenda[date] = new Array(message, color, action, imgsrc);
}

function popup(url, framename) {
self.open(url,framename,gsPopConfig);
}
/*
with (document) {
write("<link rel='stylesheet' type='text/css' href='"+theme[1]+".css'>");
write("<script language='JavaScript' src='"+theme[1]+".js'></scr"+"ipt>");
write("<script language='JavaScript' src='"+theme[2]+"'></scr"+"ipt>");
}

*/
</SCRIPT>

<STYLE>A:link {
TEXT-DECORATION: none
}
A:visited {
TEXT-DECORATION: none
}
TD {
VERTICAL-ALIGN: middle; TEXT-ALIGN: center
}
.CalHead {
FONT: bold 10pt Arial; COLOR: mintcream
}
.CalCell {
FONT: 9pt Arial; CURSOR: hand; TEXT-ALIGN: center
}
.CalTitle {
FONT: bold 12pt Courier; COLOR: white
}
.Today {
FONT: bold 10pt Arial; COLOR: #426c81
}
.HeadBtn {
BORDER-RIGHT: #000000 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #000000 1px solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; FONT: 10pt Fixedsys; VERTICAL-ALIGN: middle; BORDER-LEFT: #000000 1px solid; WIDTH: 18px; PADDING-TOP: 0px; BORDER-BOTTOM: #000000 1px solid; HEIGHT: 22px; TEXT-ALIGN: center
}
.HeadBox {
FONT-WEIGHT: normal; FONT-SIZE: 10pt; VERTICAL-ALIGN: middle; LINE-HEIGHT: normal; FONT-STYLE: normal; FONT-VARIANT: normal
}
.toleft {
TEXT-ALIGN: left
}
.toright {
TEXT-ALIGN: right
}
</STYLE>

<META content="MSHTML 6.00.2800.1458" name=GENERATOR></HEAD>
<BODY οnmοuseup="self.status='';return true;" leftMargin=0 topMargin=0
marginwidth="0" marginheight="0">
<SCRIPT language=JavaScript>

// --------------- From here you can config the options freely! ----------------
var gsPopConfig="top=200,left=200,width=400,height=200,scrollbars=1,resizable=1"; // the look of popup window

var gMonths=new Array("1","2","3","4","5","6","7","8","9","10","11","12");
var gWeekDay=new Array("Su","Mo","Tu","We","Th","Fr","Sa");
var gsToday="Today : "+gToday[0]+"/"+gMonths[gToday[1]-1]+"/"+gToday[2]; // The expression of Today-Part.

var giCellWidth=18; // Calendar cell width;
var giCellHeight=18; // Calendar cell height;
var gbHideDC=false; // Replace the Date Controls at the top with gsCalTitle. If set true, gbCMFocus should be set to false!!
var gbHideToday=false; // Remove the Today Part from the bottom
var gsCalTitle="(gMonths[gCurMonth[1]-1]+' '+gCurMonth[0])"; // dynamic statement to be eval-ed

var gBegin=[1900,1,1]; // Valid Range begin from [Year,Month,Date]
var gEnd=[2050,12,31]; // Valid Range end at [Year,Month,Date]
var gsOutOfRange="The date is out of valid range!"; // Range Error Message

var gbEuroCal=false; // Show European Calendar Layout - Sunday goes after Saturday
var gsSplit="-"; // Separator of date string, AT LEAST one char.
var giDatePos=2; // Date format 0: D-M-Y ; 1: M-D-Y; 2: Y-M-D
var gbDigital=true; // true: 01-05-2001 ; false: 1-May-2001
var gbShortYear=false; // Set the year format in short, i.e. 79 instead of 1979

var gpicBG=null; // url of background image
var gsBGRepeat="no-repeat";// repeat mode of background image, except NN4. [no-repeat,repeat,repeat-x,repeat-y]
var gcBG="white"; // Background color of the cells. Use "" for transparent!
var gcFrame="gray"; // Frame color
var gsCalTable="border=0 cellpadding=2 cellspacing=1"; // the properties of calendar <table> tag
var gcCalBG="#ffffff"; // Background color of the calendar

var gcTodayBG="#CADDE1"; // The background highlight color of today
var gcSat="darkcyan"; // Saturday color
var gcSun="red"; // Sunday color
var gcWorkday="black"; // Workday color
var gcOtherDay="silver"; // The day color of other months
// gcOtherDay must be set in literal format, digital & rgb() format will not work in either NN6 or NN4!
var gcToggle="yellow"; // highlight color of focused cell

//------------configring the options over---------------------------------------------

// Default Action when you click a normal date //
var gsAction="fDemoCheck(y,m,d);"; // This is for demo use.
//var gsAction=""; // This should be the normal config.


// Add Agendas //
// Usage -- addEvent(date, message, color, action, imgsrc);
// Notice:
// 1. The format of event date is defined in fHoliday() plug-in. Current format is Y-M-D.
// 2. In the action part you can use any javascript statement.
// 3. Assign <null> to action part will result in a line-through effect of that day, while <" "> not.
// 4. imgsrc is the URL of your image, you can omit it if no image to show.
/
//addEvent("2001-5-13", "Disabled Date!", gcBG, null);
//addEvent("2001-5-14", "You may customize me!", "gray", "popup('mailto:liuss@neusoft.com?subject=Excellent Calendar')");
//addEvent("2001-6-6", "If you arrive on today, then your departure time will be confined!", "lightsteelblue", "fDemoArrive(y,m,d)");
//addEvent("2001-6-20", "If you depart on today, then your arrival time will be confined!", "lightsteelblue", "fDemoDepart()");
//addEvent("2001-6-12", " June 12, 2001 \n PopCalendarXP 3.0 Unleashed! ", "skyblue", gsAction+"popup('readme.txt');");



// Holiday PLUG-IN Function -- return [message,color,action,imgsrc] like agenda!

function fHoliday(y,m,d) {
/ Uncomment any of the following two lines will give you special effect! ///
// if (m!=gCurMonth[1]||y!=gCurMonth[0]) return ["",gcOtherDay,null]; // hide the days of other months
// if (new Date(y,m-1,d+1)<gd) return ["",gcBG]; // cross-over the past days


var r=agenda[y+"-"+m+"-"+d]; // Define your agenda date format here!!
if (false&&r) return r; // put this line to the end will lower the priority of agenda events.

if (false&&m==12&&d==25)
r=["Merry Xmas!", "seagreen"];
else if (false&&m==12&&d==26)
r=[" Boxing Day! \n Let's go shopping ... ", "skyblue", gsAction+"popup('readme.txt','main');"];
else if (false&&m==10&&d==1)
r=[" China National Day! \n Let's enjoy a long vacation ... ", "skyblue", gsAction];

return r;
}


/// Add your self-defined functions here ///
var gdc, gmc, gyc;
function fDemoPop(dayc,monc,yearc,dateCtrl,range) {
gdc=dayc; gmc=monc; gyc=yearc;
dateCtrl.value=gdc.value+"-"+gmc.value+"-"+gyc.value;
fPopCalendar(dateCtrl, range);
}

//������������Ф��ɤ����ʖˤ��롣

function fDemoCheck(y,m,d) {
if (gdCtrl.name=="dc1") {
with(parent.document.forms["demoform"]){gdc.value=d;gmc.value=m;gyc.value=y;};
parent.depRange=[];
}
if (gdCtrl.name=="dc2")
parent.arrRange=[];
}

function fDemoArrive(y,m,d) {
if (gdCtrl.name=="dc1") {
with(parent.document.forms["demoform"]){gdc.value=d;gmc.value=m;gyc.value=y;};
parent.depRange=[[2001,6,10],[2001,6,20],[2001,6,13]];
}
}


function fDemoDepart() {
if (gdCtrl.name=="dc2")
parent.arrRange=[[2001,6,1],[2001,6,10]];
}


var gdBegin,gdEnd,gRange;
var gdSelect=[0,0,0];
var gcbMon,gcbYear;
var gdCtrl;
var gcTemp=gcBG;
var gCellSet=[];
var giSat=(gbEuroCal)?5:6;
var giSun=(gbEuroCal)?6:0;
if (gbEuroCal)
gWeekDay=[].concat(gWeekDay.slice(1), gWeekDay[0]);
var cal=[];
for (var i=0;i<6;i++)
cal[i]=[];

//****************************************************************************
// dateCtrl is the widget into which you want to put the selected date;
// range is an array in this format [RangeBeginDate, RangeEndDate {,disabledDate}]
//****************************************************************************
function is_null_text(ob1)
{
if ( ob1.value.length > 0 )
{
var i;
for (i = 0; i < ob1.value.length; i++)
{
if (ob1.value.charAt(i) != ' ') return false;
}
ob1.value = "";
return true;
}
else return true;
}

var flag_alert = true;
function isDate(ob1, ob2, ob3)
{
var day=[31,(ob1%4==0&&ob1%100!=0||ob1%400==0)?29:28,31,30,31,30,31,31,30,31,30,31];
if (isNaN(ob1) || ((ob1 - 0) <= 0))
{
flag_alert = false;
return false;
}
if (isNaN(ob2) || ((ob2 - 0) <= 0) || ((ob2 - 12) > 0))
{
flag_alert = false;
return false;
}
var Max = day[ob2 - 1];
if (isNaN(ob3) || ((ob3 - 0) <= 0) || ((ob3 - Max - 0) > 0))
{
flag_alert = false;
return false;
}

return true;
}

function no_date(ob1)
{
var is_year = ob1.value.substring(0, 4);
var is_month = ob1.value.substring(5, 7);
var is_date = ob1.value.substring(8);
var is_1 = ob1.value.substring(4, 5);
var is_2 = ob1.value.substring(7, 8);
if (isDate(is_year, is_month, is_date))
{
if (is_1 == "-" && is_2 == "-")
{
return false;
}
else
{
flag_alert = false;
return true;
}
}
else return true;
}

function fDate(fDate) {
if (is_null_text(fDate)) return false;
flag_alert = true;
if ((fDate.value.length != 10) || no_date(fDate))
{
if (flag_alert)
//add by songl
fDate.focus();
fDate.select();
return true;
}
return false;
}

function fBlur(ob1) {
if (fDate(ob1))
{
ob1.value = "";
}
}


var flag_month = false;
var pay_day;
function fPopMonth(dateCtrl,range,payDay){
//if (fDate(dateCtrl)) return;

flag_month = true;
pay_day = payDay;
var pc=dateCtrl;
if (gdCtrl!=pc)
gdCtrl=pc;
else if (gfSelf.style.visibility=="visible") {
fHideCal();
return;
}
var s=fParseDate(gdCtrl.value);
if (s==null) {
s=eval(gToday);
gdSelect=[0,0,0];
} else
gdSelect=s;
fInitRange(range);
if (!fSetCal(s[0], s[1])) {
fHideCal();
return;
}
var p=fGetXY(pc);
with (gfSelf.style) {
left=p[0]-1;
top =p[1]+pc.offsetHeight+1;
visibility="visible";
}
}

var gyearCtrl;
var gmonCtrl;
var gdayCtrl;
function fPopCalendar1(yearCtrl, monCtrl, dayCtrl) {
gyearCtrl = yearCtrl;
gmonCtrl = monCtrl;
gdayCtrl = dayCtrl;
fPopCalendar(yearCtrl);
}
function fPopCalendar(dateCtrl,range){
// if (fDate(dateCtrl)) return;
var pc=dateCtrl;
if (gdCtrl!=pc)
gdCtrl=pc;
else if (gfSelf.style.visibility=="visible") {
fHideCal();
return;
}
var s=fParseDate(gdCtrl.value);
if (s==null) {
s=eval(gToday);
gdSelect=[0,0,0];
} else
gdSelect=s;
fInitRange(range);
if (!fSetCal(s[0], s[1])) {
fHideCal();
return;
}
var p=fGetXY(pc);
with (gfSelf.style) {
left=p[0]-1;
top =p[1]+pc.offsetHeight+1;
visibility="visible";
}
}

function fHideCal() {
if (gfSelf == null)
return;
with (gfSelf.style) {
visibility="hidden";
// top=parseInt(top)-10; // for nn6 bug
top=0; // for nn6 bug
}
}

function fGetXY(aTag){
var p=[0,0];
while(aTag!=null){
p[0]+=aTag.offsetLeft;
p[1]+=aTag.offsetTop;
aTag=aTag.offsetParent;
}
return p;
}

//--------

function fInitRange(r) {
gRange=r?r:[];
var rb=gRange[0]?r[0]:gBegin;
gdBegin=new Date(rb[0],rb[1]-1,rb[2]);
var re=gRange[1]?r[1]:gEnd;
gdEnd=new Date(re[0],re[1]-1,re[2]);
}
function fillZero(str){
if(str < 10){
return "0"+ str;
}else {
return str;
}
}
function fSetDate(y,m,d){
var action=fGetAgenda([y,m,d])[2];
if (!action)
return;
gCurMonth=[y,m];
gdSelect=[y,m,d];
gdCtrl.value=fFormatDate(y,m,d);
if (gyearCtrl != null) {
gyearCtrl.value = y;
gmonCtrl.value = fillZero(m);
gdayCtrl.value = fillZero(d);
}
fHideCal();
eval(action);
}

function setNull(){
gdCtrl.value="";
gyearCtrl.value = "";
gmonCtrl.value = "";
gdayCtrl.value = "";
fHideCal();
}

function fParseDate(ds) {
var r=null;
var i;
if (ds!=null) {
var pd=ds.split(gsSplit);
if (pd.length==3) {
var m=pd[giDatePos==1?0:1];
for (i=0; (i<12)&&(gMonths[i].substring(0,3).toLowerCase()!=m.substring(0,3).toLowerCase())&&(i+1!=m); i++);
if (i<12) {
var y=parseInt(pd[giDatePos==2?0:2].substring(0,4),10);
var pf=Math.floor(gEnd[0]/100)*100;
r=[y<100?y>gEnd[0]%100?pf-100+y:pf+y:y,i+1,parseInt(pd[giDatePos],10)];
} else
return null;
} else
return null;
var td=new Date(r[0],r[1]-1,r[2]);
if (isNaN(td)||td.getMonth()!=r[1]-1)
return null;
gdCtrl.value=fFormatDate(r[0],r[1],r[2]);
}
return r;
}

function fGetAgenda(d) {
var s=fCalibrate(d[0],d[1]);
if (!fValidRange(s[0],s[1],d[2]))
return [gsOutOfRange, gcBG];
for (var i=2; i<gRange.length; i++)
if (gRange[i][2]==d[2]&&gRange[i][1]==s[1]&&gRange[i][0]==s[0])
return [gsOutOfRange, gcBG];
var ag=fHoliday(s[0],s[1],d[2]);
if (ag==null)
ag=["",gcBG,gsAction];
return ag;
}

function fValidRange(y,m,d) {
var date=new Date(y,m-1,d);
return (date>=gdBegin)&&(date<=gdEnd);
}

function fCalibrate(y,m) {
if (m<1) { y--; m=12; }
else if (m>12) { y++; m=1; }
return [y,m];
}

function fFormatMonth(y,m,d){
var M=gbDigital?m<10?"0"+m:m:gMonths[m-1];
var D=gbDigital&&d<10?"0"+d:d;
var sy=y%100;
sy=sy<10?"0"+sy:sy;
switch (giDatePos) {
case 0: return M+gsSplit+(gbShortYear?sy:y);
case 1: return M+gsSplit+(gbShortYear?sy:y);
case 2: return (gbShortYear?sy:y)+gsSplit+M;
}
}

function fFormatDate(y,m,d){
var M=gbDigital?m<10?"0"+m:m:gMonths[m-1];
if (flag_month)
var D = pay_day;
else
var D=gbDigital&&d<10?"0"+d:d;
var sy=y%100;
sy=sy<10?"0"+sy:sy;
switch (giDatePos) {
case 0: return D+gsSplit+M+gsSplit+(gbShortYear?sy:y);
case 1: return M+gsSplit+D+gsSplit+(gbShortYear?sy:y);
case 2: return (gbShortYear?sy:y)+gsSplit+M+gsSplit+D;
}
}

function fBuildCal(y,m) {
m=parseInt(m,10);
var days=[31,31,(y%4==0&&y%100!=0||y%400==0)?29:28,31,30,31,30,31,31,30,31,30,31];
var dCalDate=new Date(y,m-1,1);
var iDayOfFirst=dCalDate.getDay();
if (gbEuroCal)
if (--iDayOfFirst<0)
iDayOfFirst=6;
var iOffsetLast=days[m-1]-iDayOfFirst+1;
var iDate=1;
var iNext=1;
for (var d=0;d<7;d++)
cal[0][d]=(d<iDayOfFirst)?[m-1,-(iOffsetLast+d)]:[m,iDate++];
for (var w=1;w<6;w++)
for (var d=0;d<7;d++)
cal[w][d]=(iDate<=days[m])?[m,iDate++]:[m+1,-(iNext++)];
return cal;
}

function fCheckRange(y,m) {
if (y>gEnd[0]||y<gBegin[0]||(y==gBegin[0]&&m<gBegin[1])||(y==gEnd[0]&&m>gEnd[1])) {
alert(gsOutOfRange);
if (gcbMon) gcbMon.options[gCurMonth[1]-1].selected=true;
if (gcbYear) gcbYear.options[gCurMonth[0]-gBegin[0]].selected=true;
return false;
}
return true;
}

//------------------

function fSetSelected(aCell) {
var s=fGetSelected(aCell);
fSetDate(s[0],s[1],s[2]);
}

function fGetSelected(aCell){
var iOffset=0;
var y=(gcbYear)?parseInt(gcbYear.value):gCurMonth[0];
var m=(gcbMon)?parseInt(gcbMon.value):gCurMonth[1];
aCell.bgColor=gcBG;
with (aCell.firstChild){
var d=parseInt(innerHTML,10);
if (style.color==gcOtherDay)
iOffset=(id<10)?-1:1;
m+=iOffset;
if (m<1) {
y--;
m=12;
}else if (m>12){
y++;
m=1;
}
return [y,m,d];
}
}


function fDrawCal() {
var sTD=" width='"+giCellWidth+"' style='height:"+giCellHeight+";' ";
var sDIV=" style='position:relative;height:"+(giCellHeight-4)+";width:"+giCellWidth+";' ";
var id=0;
with (document) {
write("<tr>");
for (var i=0; i<7; i++)
write("<td class='CalHead' "+sTD+">"+gWeekDay[i]+"</td>");
write("</tr>");
for (var w=1; w<7; w++) {
write("<tr>");
for (var d=0; d<7; d++) {
write("<td "+sTD+"><div class='CalCell' "+sDIV+" onMouseOver='gcTemp=this.style.backgroundColor;this.style.backgroundColor=gcToggle;self.status=this.title;return true;' onMouseOut='this.style.backgroundColor=gcTemp?gcTemp:\"transparent\";' οnclick='fSetSelected(this);'>"); //Coded by Liming Weng(Victor Won) email:victorwon@netease.com
write("<A id='"+(id++)+"' href='javascript:' οnfοcus='this.blur();' οnclick='return false;' >00</A></div></td>")
}
write("</tr>");
}
}
}

function fUpdateCal(y,m) {
var c=fBuildCal(y,m);
var ag,d;
for (var week=0; week<6; week++)
for (var day=0; day<7; day++) {
m=c[week][day][0];
d=c[week][day][1];
with (gCellSet[(7*week)+day]) {
if (d<0) {
style.color=gcOtherDay;
d=-d;
}else{
style.color=(day==giSun)?gcSun:(day==giSat)?gcSat:gcWorkday;
}
innerHTML=d;
ag=fGetAgenda([y,m,d]);
parentNode.title=ag[0];
style.textDecoration=(ag[2])?"none":"line-through";
if (ag[3]) innerHTML+="<BR><IMG SRC='"+ag[3]+"' BORDER=0></IMG>";
with (parentNode) {
style.backgroundColor=(m==gCurMonth[1])?(gdSelect+''==[y,m,d])?gcToggle:(gToday+''==[y,m,d])?gcTodayBG:ag[1]:ag[1];
style.backgroundColor=style.backgroundColor; // for nn6 bug
parentNode.bgColor=ag[1];
parentNode.bgColor=ag[1]; // for nn6 bug
}
}
}
}

function fSetCal(y,m){
if (!fCheckRange(y,m))
return false;
if (gcbMon) gcbMon.options[m-1].selected=true;
if (gcbYear) gcbYear.options[y-gBegin[0]].selected=true;
gCurMonth=[y,m];
fUpdateCal(y,m);
gfSelf.width=document.getElementById("popTable").offsetWidth;
gfSelf.height=document.getElementById("popTable").offsetHeight;
return true;
}

function fPrevMonth(){
var m=gcbMon.value;
var y=gcbYear.value;
if (--m<1) { m=12; y--; }
fSetCal(y,m);
}

function fNextMonth(){
var m=gcbMon.value;
var y=gcbYear.value;
if (++m>12) { m=1; y++; }
fSetCal(y,m);
}

fInitRange();

with (document) {
write("<TABLE id='popTable' bgcolor='"+gcCalBG+"' cellspacing='0' cellpadding='3' border='0'>");
if (!gbHideDC) {
write("<TR><TD align='center'>");
write(" <SELECT id='YearSelect' class='HeadBox' onChange='fSetCal(gcbYear.value, gcbMon.value)' Victor='Won'>");
for(var i=gBegin[0];i<=gEnd[0];i++)
write("<OPTION value='"+i+"'>"+i+"</OPTION>");
write("</SELECT> <select id='MonSelect' class='HeadBox' onChange='fSetCal(gcbYear.value, gcbMon.value)' Victor='Won'>");
for (var i=0; i<12; i++)
write("<option value='"+(i+1)+"'>"+gMonths[i]+"</option>");
write("</SELECT> </TD></TR>");
gcbMon=getElementById("MonSelect");
gcbYear=getElementById("YearSelect");
} else
write("<TR><TD align='center' class='CalTitle'>"+eval(gsCalTitle)+"</TD></TR>");
write("<TR><TD align='center'><DIV style='background:"+gcFrame+(gpicBG?" url("+gpicBG+") ":" ")+gsBGRepeat+";'><TABLE "+gsCalTable+" >");
fDrawCal();
gCellSet=getElementsByTagName("A");
fUpdateCal(gCurMonth[0],gCurMonth[1]);
write("</TABLE></DIV></TD></TR>");
if (!gbHideToday) {
write("<TR><TD align='center'>");
write("<A id='AToday' href='javascript:' class='Today' οnclick='fSetDate(gToday[0],gToday[1],gToday[2]);this.blur();return false;' onMouseOver='gcTemp=this.style.color;this.style.color=gcToggle;self.status=this.title;return true;' onMouseOut='this.style.color=gcTemp'>"+gsToday+"</A>");
getElementById("AToday").title=fGetAgenda(gToday)[0];
write("</TD></TR>");
}
write("</TABLE>");
}
</SCRIPT>
</BODY></HTML>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值