/[LeafOK_CVS]/fenglin/www/calendar.php
ViewVC logotype

Annotation of /fenglin/www/calendar.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (hide annotations)
Sat Mar 1 09:08:07 2025 UTC (12 months, 2 weeks ago) by sysadm
Branch: MAIN
Changes since 1.1: +399 -402 lines
Convert GB2312 to UTF-8

1 sysadm 1.1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2     <html>
3     <head>
4 sysadm 1.2 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5     <title>枫林在线 - 万年历</title>
6 sysadm 1.1 <link rel="stylesheet" href="css/default.css" type="text/css">
7     </head>
8     <SCRIPT language=JScript>
9     <!--
10     /*****************************************************************************
11 sysadm 1.2 个人偏好设定
12 sysadm 1.1 *****************************************************************************/
13    
14 sysadm 1.2 var conWeekend = 3; // 星期六颜色显示: 1=黑色, 2=绿色, 3=红色, 4=隔周休
15 sysadm 1.1
16    
17     /*****************************************************************************
18 sysadm 1.2 日期资料
19 sysadm 1.1 *****************************************************************************/
20    
21     var lunarInfo=new Array(
22     0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,
23     0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,
24     0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,
25     0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,
26     0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,
27     0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052b0,0x0a9a8,0x0e950,0x06aa0,
28     0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,
29     0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,
30     0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,
31     0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,
32     0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,
33     0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,
34     0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,
35     0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,
36     0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0,
37     0x14b63);
38    
39     var solarMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
40 sysadm 1.2 var Gan=new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
41     var Zhi=new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");
42     var Animals=new Array("鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪");
43     var solarTerm = new Array("小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至");
44 sysadm 1.1 var sTermInfo = new Array(0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758);
45 sysadm 1.2 var nStr1 = new Array('日','一','二','三','四','五','六','七','八','九','十');
46     var nStr2 = new Array('初','十','廿','卅','□');
47 sysadm 1.1 var monthName = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");
48    
49     var sFtv = new Array(
50 sysadm 1.2 "0101*元旦",
51     "0214 情人节",
52     "0308 妇女节",
53     "0501 劳动节",
54     "0504 青年节",
55     "0601 儿童节",
56     "0701 建党节 香港回归纪念",
57     "0801 建军节",
58     "1001*国庆节");
59 sysadm 1.1
60 sysadm 1.2 //农历节日 *表示放假日
61 sysadm 1.1 var lFtv = new Array(
62 sysadm 1.2 "0101*春节",
63     "0115 元宵节",
64     "0505 端午节",
65     "0815 中秋节",
66     "0909 重阳节",
67     "1224 小年",
68     "0100*除夕");
69 sysadm 1.1
70 sysadm 1.2 //某月的第几个星期几。 5,6,7,8 表示到数第 1,2,3,4 个星期几
71 sysadm 1.1 var wFtv = new Array(
72 sysadm 1.2 "0520 母亲节 Mother's Day",
73     "0630 父亲节 Father's Day",
74     "1144 感恩节 Thanksgiving Day");
75 sysadm 1.1
76    
77    
78 sysadm 1.2 //世界时间资料
79 sysadm 1.1 var timeData = {
80 sysadm 1.2 "Asia 亚洲": { //----------------------------------------------
81     "China 中国 ":["+0800","","北京、重庆、乌鲁木齐"],
82     "Brunei 汶莱 ":["+0800","","斯里巴加万港"],
83     "Burma 缅甸 ":["+0630","","仰光"],
84     "Khmer 柬埔寨 ":["+0700","","金边"],
85     "Hong kong 香港 ":["+0800","","九龙"],
86     "Indonesian 印尼 ":["+0700","","耶加达"],
87     "Japan 日本 ":["+0900","","东京、大阪、札幌"],
88     "Korea 韩国 ":["+0900","","汉城"],
89     "Laos 寮国 ":["+0700","","永珍"],
90     "Malaysian 马来西亚":["+0800","","吉隆坡"],
91     "Mongolia 蒙古 ":["+0800","03L03|09L03","库伦"],
92     "Philippines 菲律宾 ":["+0800","04F53|10F53","马尼拉"],
93     "Russia(Anadyr) 俄罗斯 ":["+1300","03L03|10L03","阿那底河"],
94     "Russia(Kamchatka) 俄罗斯 ":["+1200","03L03|10L03","堪察加半岛"],
95     "Russia(Magadan) 俄罗斯 ":["+1100","03L03|10L03","马加丹"],
96     "Russia(Vladivostok)俄罗斯 ":["+1000","03L03|10L03","海参威"],
97     "Russia(Yakutsk) 俄罗斯 ":["+0900","03L03|10L03","雅库次克"],
98     "Singapore 新加坡 ":["+0800","","新加坡"],
99     "China 北京、重庆、乌鲁木齐 ":["+0800","","北京、重庆、乌鲁木齐"],
100     "Thailand 泰国 ":["+0700","","曼谷"],
101     "Vietnam 越南 ":["+0700","","河内"]
102 sysadm 1.1 },
103 sysadm 1.2 "ME, India pen. 中东、印度半岛": { //------------------------------------
104     "Afghanistan 阿富汗 ":["+0430","","喀布尔"],
105     "Arab Emirates 阿拉伯联合大公国":["+0400","","阿布达比"],
106     "Bahrain 巴林 ":["+0300","","麦纳玛"],
107     "Bangladesh 孟加拉 ":["+0600","","达卡"],
108     "Bhutan 不丹 ":["+0600","","辛布"],
109     "Cyprus 赛普勒斯":["+0200","","尼古西亚"],
110     "Georgia 乔治亚 ":["+0500","","第比利斯"],
111     "India 印度 ":["+0530","","新德里、孟买、加尔各答"],
112     "Iran 伊朗 ":["+0330","04 13|10 13","德黑兰"],
113     "Iraq 伊拉克 ":["+0300","04 13|10 13","巴格达"],
114     "Israel 以色列 ":["+0200","04F53|09F53","耶路撒冷"],
115     "Jordan 约旦 ":["+0200","","安曼"],
116     "Kuwait 科威特 ":["+0300","","科威特市"],
117     "Lebanon 黎巴嫩 ":["+0200","03L03|10L03","贝鲁特"],
118     "Maldives 马尔地夫":["+0500","","玛律"],
119     "Nepal 尼泊尔 ":["+0545","","加德满都"],
120     "Oman 阿曼 ":["+0400","","马斯喀特"],
121     "Pakistan 巴基斯坦":["+0500","","喀拉蚩、伊斯兰堡"],
122     "Qatar 卡达 ":["+0300","","杜哈"],
123     "Saudi Arabia 沙乌地阿拉伯":["+0300","","利雅德"],
124     "Sri Lanka 斯里兰卡":["+0600","","可伦坡"],
125     "Syria 叙利亚 ":["+0200","04 13|10 13","大马士革"],
126     "Tajikistan 塔吉克 ":["+0500","","杜桑贝"],
127     "Turkey 土耳其 ":["+0200","","伊斯坦堡"],
128     "Turkmenistan 土库曼 ":["+0500","","阿什哈巴德"],
129     "Uzbekistan 乌兹别克斯坦":["+0500","","塔什干"],
130     "Yemen 叶门 ":["+0300","","沙那"]
131 sysadm 1.1 },
132 sysadm 1.2 "North Europe 北欧": { //----------------------------------------------
133     "Denmark 丹麦":["+0100","04F03|10L03","哥本哈根"],
134     "Finland 芬兰":["+0200","03L01|10L01","赫尔辛基"],
135     "Iceland 冰岛":["+0000","","雷克雅未克"],
136     "Norwegian 挪威":["+0100","","奥斯陆"],
137     "Sweden 瑞典":["+0100","03L01|10L01","斯德哥尔摩"]
138 sysadm 1.1 },
139 sysadm 1.2 "Eastern Europe 中欧、东欧": { //----------------------------------------
140     "Armenia 亚美尼亚":["+0400","","叶里温"],
141     "Austria 奥地利 ":["+0100","03L01|10L01","维也纳"],
142     "Azerbaijan 亚塞拜然":["+0400","","巴库"],
143     "Czech 捷克 ":["+0100","","布拉格"],
144     "Estonia 爱沙尼亚":["+0200","","塔林"],
145     "Germany 德国 ":["+0100","03L01|10L01","柏林"],
146     "Hungarian 匈牙利 ":["+0100","","布达佩斯"],
147     "Kazakhstan(Almaty) 哈萨克 ":["+0600","","Almaty"],
148     "Kazakhstan(Aqtobe) 哈萨克 ":["+0500","","Aqtobe"],
149     "Kazakhstan(Aqtau) 哈萨克 ":["+0400","","Aqtau"],
150     "Kirghizia 吉尔吉斯":["+0500","","比斯凯克"],
151     "Latvia 拉脱维亚":["+0200","","里加"],
152     "Lithuania 立陶宛 ":["+0200","","维尔纽斯"],
153     "Moldova 摩尔多瓦":["+0200","","基希涅夫"],
154     "Poland 波兰 ":["+0100","","华沙"],
155     "Rumania 罗马尼亚":["+0200","","布加勒斯特"],
156     "Russia(Moscow) 俄罗斯 ":["+0300","03L03|10L03","莫斯科"],
157     "Russia(Volgograd) 俄罗斯 ":["+0300","03L03|10L03","伏尔哥格勒"],
158     "Slovakia 斯洛伐克":["+0100","","布拉提斯拉瓦"],
159     "Switzerland 瑞士 ":["+0100","","苏黎世"],
160     "Ukraine 乌克兰 ":["+0200","","基辅"],
161     "Ukraine(Simferopol)乌克兰 ":["+0300","","Simferopol"],
162     "Belarus 白俄罗斯":["+0200","03L03|10L03","明斯克"]
163 sysadm 1.1 },
164 sysadm 1.2 "Western Europe 西欧": { //----------------------------------------------
165     "Belgium 比利时 ":["+0100","03L01|10L01","布鲁塞尔"],
166     "France 法国 ":["+0100","03L01|10L01","巴黎"],
167     "Ireland 爱尔兰 ":["+0000","03L01|10L01","都柏林"],
168     "Monaco 摩纳哥 ":["+0100","","摩纳哥市"],
169     "Netherlands 荷兰 ":["+0100","03L01|10L01","阿姆斯特丹"],
170     "Luxembourg 卢森堡 ":["+0100","03L01|10L01","卢森堡市"],
171     "United Kingdom 英国 ":["+0000","03L01|10L01","伦敦、爱丁堡"]
172 sysadm 1.1 },
173 sysadm 1.2 "South Europe 南欧": { //------------------------------------------------
174     "Albania 阿尔巴尼亚":["+0100","","地拉那"],
175     "Bulgaria 保加利亚":["+0200","","索菲亚"],
176     "Greece 希腊 ":["+0200","03L01|10L01","雅典"],
177     "Holy See 教廷 ":["+0100","","梵蒂冈"],
178     "Italy 义大利 ":["+0100","03L01|10L01","罗马"],
179     "Malta 马尔他 ":["+0100","","瓦勒他"],
180     "Portugal 葡萄牙 ":["+0000","03L01|10L01","里斯本"],
181     "San Marino 圣马利诺":["+0100","","圣马利诺"],
182     "Span 西班牙 ":["+0100","03L01|10L01","马德里"],
183     "Slovenia 斯洛维尼亚":["+0100","","卢布尔雅那"],
184     "Serbia(前南斯拉夫) 塞尔维亚":["+0100","","贝尔格勒"]
185 sysadm 1.1 },
186 sysadm 1.2 "North America 北美洲": { //--------------------------------------------
187     "Canada(NST) 加拿大":["-0330","04F02|10L02","纽芬兰、St. John's,Goose Bay"],
188     "Canada(AST) 加拿大":["-0400","04F02|10L02","Pangnirtung, Glace Bay"],
189     "Canada(EST) 加拿大":["-0500","04F02|10L02","蒙特娄"],
190     "Canada(CST) 加拿大":["-0600","04F02|10L02","Swift Current, Regina, Rainy River"],
191     "Canada(MST) 加拿大":["-0700","04F02|10L02","Inuvik, Edmonton, Dawson Creek"],
192     "Canada(PST) 加拿大":["-0800","04F02|10L02","温哥华"],
193     "US(Eastern) 美国(东岸)":["-0500","04F02|10L02","纽约"],
194     "US(Indiana) 美国 ":["-0500","","印第安纳"],
195     "US(Central) 美国(中部)":["-0600","04F02|10L02","芝加哥"],
196     "US(Mountain) 美国(山区)":["-0700","04F02|10L02","丹佛"],
197     "US(Arizona) 美国 ":["-0700","","亚历桑那"],
198     "US(Pacific) 美国(西岸)":["-0800","04F02|10L02","旧金山、洛杉矶"],
199     "US(Alaska) 美国 ":["-0900","","朱诺"]
200 sysadm 1.1 },
201 sysadm 1.2 "South America 中南美洲": { //------------------------------------------
202     "Argentina 阿根廷 ":["-0300","","布宜诺斯艾利斯"],
203     "Bahamas 巴哈马 ":["-0500","","拿索"],
204     "Belize 贝里斯 ":["-0600","","贝尔墨邦"],
205     "Bolivia 玻利维亚":["-0400","","拉巴斯"],
206     "Brazil(FST) 巴西 ":["-0200","10F03|02L03","Noronha"],
207     "Brazil(EST) 巴西 ":["-0300","10F03|02L03","里约热内卢、巴西利亚"],
208     "Brazil(WST) 巴西 ":["-0400","10F03|02L03","Cuiaba"],
209     "Brazil(AST) 巴西 ":["-0500","10F03|02L03","Porto Acre"],
210     "Chilean 智利 ":["-0500","10F03|03F03","Hanga Roa"],
211     "Chilean 智利 ":["-0300","10F03|03F03","圣地牙哥"],
212     "Colombia 哥伦比亚":["-0500","","波哥大"],
213     "Costa Rica 哥斯大黎加":["-0600","","圣约瑟"],
214     "Cuba 古巴 ":["-0500","04 13|10L03","哈瓦那"],
215     "Dominican 多明尼加":["-0400","","圣多明哥"],
216     "Ecuador 厄瓜多 ":["-0500","","基多"],
217     "El Salvador 萨尔瓦多":["-0600","","圣萨尔瓦多"],
218     "Falklands 福克兰群岛":["-0300","09F03|04F03","史坦利"],
219     "Guatemala 瓜地马拉":["-0600","","瓜地马拉城"],
220     "Haiti 海地 ":["-0500","","太子港"],
221     "Honduras 宏都拉斯":["-0600","","德古斯加巴"],
222     "Jamaica 牙买加 ":["-0500","","京斯敦"],
223     "Mexico(首都) 墨西哥 ":["-0600","","墨西哥城"],
224     "Mexico(Mazatlan) 墨西哥 ":["-0700","","Mazatlan"],
225     "Mexico(蒂娃娜) 墨西哥 ":["-0800","","蒂娃娜"],
226     "Nicaragua 尼加拉瓜":["-0500","","马纳瓜"],
227     "Panama 巴拿马 ":["-0500","","巴拿马市"],
228     "Paraguay 巴拉圭 ":["-0300","10F03|02L03","亚松森"],
229     "Peru 秘鲁 ":["-0500","","利马"],
230     "Trinidad & Tobago 千里达及托巴哥":["-0400","","西班牙港"],
231     "Uruguay 乌拉圭 ":["-0300","","蒙特维多"],
232     "Venezuela 委内瑞拉":["-0400","","卡拉卡斯"]
233 sysadm 1.1 },
234 sysadm 1.2 "Africa 非洲": { //----------------------------------------------
235     "Algeria 阿尔及利亚":["+0100","","阿尔及尔"],
236     "Angola 安哥拉 ":["+0100","","鲁安达"],
237     "Benin 贝南 ":["+0100","","新港"],
238     "Botswana 波札那 ":["+0200","","嘉伯隆里"],
239     "Burundi 蒲隆地 ":["+0200","","布松布拉"],
240     "Cameroon 喀麦隆 ":["+0100","","雅恩德"],
241     "Cape Verde 维德角 ":["-0100","","培亚"],
242     "Central African 中非共和国":["+0100","","班基"],
243     "Chad 查德 ":["+0100","","恩加美纳"],
244     "Congo 刚果 ":["+0100","","布拉萨市"],
245     "Djibouti 吉布地 ":["+0300","","吉布地"],
246     "Egypt 埃及 ":["+0200","04L53|09L43","开罗"],
247     "Equatorial Guinea 赤道几内亚":["+0100","","马拉博"],
248     "Ethiopia 衣索比亚":["+0300","","阿迪斯阿贝巴"],
249     "Gabon 加彭 ":["+0100","","自由市"],
250     "Gambia 甘比亚 ":["+0000","","班竹"],
251     "Ghana 迦纳 ":["+0000","","阿克拉"],
252     "Guinea 几内亚 ":["+0000","","柯那克里"],
253     "Ivory Coast 象牙海岸":["+0000","","雅穆索戈"],
254     "Kenya 肯亚 ":["+0300","","奈洛比"],
255     "Lesotho 赖索托 ":["+0200","","马赛鲁"],
256     "Liberia 赖比瑞亚":["+0000","","蒙罗维亚"],
257     "Madagascar 马达加斯加":["+0300","","安塔那那利佛"],
258     "Malawi 马拉威 ":["+0200","","里朗威"],
259     "Mali 马利 ":["+0000","","巴马科"],
260     "Mauritania 茅利塔尼亚":["+0000","","诺克少"],
261     "Mauritius 模里西斯":["+0400","","路易士港"],
262     "Morocco 摩洛哥 ":["+0000","","卡萨布兰卡"],
263     "Mozambique 莫三比克":["+0200","","马布多"],
264     "Namibia 纳米比亚":["+0200","09F03|04F03","温吐克"],
265     "Niger 尼日 ":["+0100","","尼阿美"],
266     "Nigeria 奈及利亚":["+0100","","阿布札"],
267     "Rwanda 卢安达 ":["+0200","","吉佳利"],
268     "Sao Tome 圣多美 ":["+0000","","圣多美"],
269     "Senegal 塞内加尔":["+0000","","达卡"],
270     "Sierra Leone 狮子山国":["+0000","","自由城"],
271     "Somalia 索马利亚":["+0300","","摩加迪休"],
272     "South Africa 南非 ":["+0200","","普利托里亚"],
273     "Sudan 苏丹 ":["+0200","","卡土穆"],
274     "Tanzania 坦尚尼亚":["+0300","","杜笃玛"],
275     "Togo 多哥 ":["+0000","","洛梅"],
276     "Tunisia 突尼西亚":["+0100","","突尼斯"],
277     "Uganda 乌干达 ":["+0300","","坎帕拉"],
278     "Zaire 萨伊 ":["+0100","","金夏沙"],
279     "Zambia 尚比亚 ":["+0200","","路沙卡"],
280     "Zimbabwe 辛巴威 ":["+0200","","哈拉雷"]
281 sysadm 1.1 },
282 sysadm 1.2 "Oceania 大洋洲": { //----------------------------------------------
283     "Aus.(Adelaide) 澳大利亚 ":["+0930","10L03|03L03","阿德莱德"],
284     "Aus.(Brisbane) 澳大利亚 ":["+1000","10L03|03L03","布利斯班"],
285     "Aus.(Darwin) 澳大利亚 ":["+0930","10L03|03L03","达尔文"],
286     "Aus.(Hobart) 澳大利亚 ":["+1000","10L03|03L03","荷伯特"],
287     "Aus.(Perth) 澳大利亚 ":["+0800","10L03|03L03","伯斯"],
288     "Aus.(Sydney) 澳大利亚 ":["+1000","10L03|03L03","雪梨"],
289     "Eniwetok 安尼威托克岛":["-1200","","安尼威托克岛"],
290     "Fiji 斐济 ":["+1200","11F03|02L03","苏瓦"],
291     "Guam 关岛 ":["+1000","","阿加纳"],
292     "Hawaii(US) 夏威夷(美)":["-1000","","檀香山"],
293     //"Mariana Islands 塞班岛 ":["","","塞班岛"],
294     "Marshall Is. 马绍尔群岛":["+1200","","Majuro"],
295     "Midway Is.(US) 中途岛(美)":["-1100","","中途岛"],
296     "Nauru Rep. 诺鲁共和国":["+1200","","雅连"],
297     "New Calednia 新克里多尼亚":["+1100","","Noumea"],
298     "New Guined 新畿内亚 ":["+1000","","莫勒斯比港"],
299     "New Zealand 纽西兰 ":["+1300","10F03|04F63","奥克兰"],
300     "New Zealand(CHADT) 纽西兰 ":["+1345","10F03|04F63","Waitaing"],
301     "Solomon Is. 索罗门群岛":["+1100","","荷尼阿拉"],
302     "Tahiti 大溪地 ":["-1000","","大溪地"],
303     "Tonga 东加 ":["+1300","10F63|04F63","努瓜娄发"],
304     "Tuvalu 吐瓦鲁 ":["+1200","","富那富提"],
305     "Western Samoa 西萨摩亚 ":["-1100","","阿庇亚"],
306     "国际换日线 ":["-1200","","国际换日线"]
307 sysadm 1.1 }
308     };
309    
310    
311    
312     /*****************************************************************************
313 sysadm 1.2 日期计算
314 sysadm 1.1 *****************************************************************************/
315    
316 sysadm 1.2 //====================================== 传回农历 y年的总天数
317 sysadm 1.1 function lYearDays(y) {
318     var i, sum = 348;
319     for(i=0x8000; i>0x8; i>>=1) sum += (lunarInfo[y-1900] & i)? 1: 0;
320     return(sum+leapDays(y));
321     }
322    
323 sysadm 1.2 //====================================== 传回农历 y年闰月的天数
324 sysadm 1.1 function leapDays(y) {
325     if(leapMonth(y)) return((lunarInfo[y-1900] & 0x10000)? 30: 29);
326     else return(0);
327     }
328    
329 sysadm 1.2 //====================================== 传回农历 y年闰哪个月 1-12 , 没闰传回 0
330 sysadm 1.1 function leapMonth(y) {
331     return(lunarInfo[y-1900] & 0xf);
332     }
333    
334 sysadm 1.2 //====================================== 传回农历 y年m月的总天数
335 sysadm 1.1 function monthDays(y,m) {
336     return( (lunarInfo[y-1900] & (0x10000>>m))? 30: 29 );
337     }
338    
339    
340 sysadm 1.2 //====================================== 算出农历, 传入日期物件, 传回农历日期物件
341     // 该物件属性有 .year .month .day .isLeap
342 sysadm 1.1 function Lunar(objDate) {
343    
344     var i, leap=0, temp=0;
345     var offset = (Date.UTC(objDate.getFullYear(),objDate.getMonth(),objDate.getDate()) - Date.UTC(1900,0,31))/86400000;
346    
347     for(i=1900; i<2050 && offset>0; i++) { temp=lYearDays(i); offset-=temp; }
348    
349     if(offset<0) { offset+=temp; i--; }
350    
351     this.year = i;
352    
353 sysadm 1.2 leap = leapMonth(i); //闰哪个月
354 sysadm 1.1 this.isLeap = false;
355    
356     for(i=1; i<13 && offset>0; i++) {
357 sysadm 1.2 //闰月
358 sysadm 1.1 if(leap>0 && i==(leap+1) && this.isLeap==false)
359     { --i; this.isLeap = true; temp = leapDays(this.year); }
360     else
361     { temp = monthDays(this.year, i); }
362    
363 sysadm 1.2 //解除闰月
364 sysadm 1.1 if(this.isLeap==true && i==(leap+1)) this.isLeap = false;
365    
366     offset -= temp;
367     }
368    
369     if(offset==0 && leap>0 && i==leap+1)
370     if(this.isLeap)
371     { this.isLeap = false; }
372     else
373     { this.isLeap = true; --i; }
374    
375     if(offset<0){ offset += temp; --i; }
376    
377     this.month = i;
378     this.day = offset + 1;
379     }
380    
381 sysadm 1.2 //==============================传回国历 y年某m+1月的天数
382 sysadm 1.1 function solarDays(y,m) {
383     if(m==1)
384     return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28);
385     else
386     return(solarMonth[m]);
387     }
388 sysadm 1.2 //============================== 传入 offset 传回干支, 0=甲子
389 sysadm 1.1 function cyclical(num) {
390     return(Gan[num%10]+Zhi[num%12]);
391     }
392    
393 sysadm 1.2 //============================== 月历属性
394 sysadm 1.1 function calElement(sYear,sMonth,sDay,week,lYear,lMonth,lDay,isLeap,cYear,cMonth,cDay) {
395    
396     this.isToday = false;
397 sysadm 1.2 //国历
398     this.sYear = sYear; //西元年4位数字
399     this.sMonth = sMonth; //西元月数字
400     this.sDay = sDay; //西元日数字
401     this.week = week; //星期, 1个中文
402     //农历
403     this.lYear = lYear; //西元年4位数字
404     this.lMonth = lMonth; //农历月数字
405     this.lDay = lDay; //农历日数字
406     this.isLeap = isLeap; //是否为农历闰月?
407     //八字
408     this.cYear = cYear; //年柱, 2个中文
409     this.cMonth = cMonth; //月柱, 2个中文
410     this.cDay = cDay; //日柱, 2个中文
411 sysadm 1.1
412     this.color = '';
413    
414 sysadm 1.2 this.lunarFestival = ''; //农历节日
415     this.solarFestival = ''; //国历节日
416     this.solarTerms = ''; //节气
417 sysadm 1.1 }
418    
419 sysadm 1.2 //===== 某年的第n个节气为几日(从0小寒起算)
420 sysadm 1.1 function sTerm(y,n) {
421     var offDate = new Date( ( 31556925974.7*(y-1900) + sTermInfo[n]*60000 ) + Date.UTC(1900,0,6,2,5) );
422     return(offDate.getUTCDate());
423     }
424    
425    
426    
427    
428 sysadm 1.2 //============================== 传回月历物件 (y年,m+1月)
429 sysadm 1.1 /*
430 sysadm 1.2 功能说明: 传回整个月的日期资料物件
431 sysadm 1.1
432 sysadm 1.2 使用方式: OBJ = new calendar(年,零起算月);
433 sysadm 1.1
434 sysadm 1.2 OBJ.length 传回当月最大日
435     OBJ.firstWeek 传回当月一日星期
436 sysadm 1.1
437 sysadm 1.2 由 OBJ[日期].属性名称 即可取得各项值
438 sysadm 1.1
439 sysadm 1.2 OBJ[日期].isToday 传回是否为今日 true 或 false
440 sysadm 1.1
441 sysadm 1.2 其他 OBJ[日期] 属性参见 calElement() 中的注解
442 sysadm 1.1 */
443     function calendar(y,m) {
444    
445     var sDObj, lDObj, lY, lM, lD=1, lL, lX=0, tmp1, tmp2, tmp3;
446 sysadm 1.2 var cY, cM, cD; //年柱,月柱,日柱
447 sysadm 1.1 var lDPOS = new Array(3);
448     var n = 0;
449     var firstLM = 0;
450    
451 sysadm 1.2 sDObj = new Date(y,m,1,0,0,0,0); //当月一日日期
452 sysadm 1.1
453 sysadm 1.2 this.length = solarDays(y,m); //国历当月天数
454     this.firstWeek = sDObj.getDay(); //国历当月1日星期几
455 sysadm 1.1
456 sysadm 1.2 ////////年柱 1900年春分后为庚子年(60进制36)
457 sysadm 1.1 if(m<2) cY=cyclical(y-1900+36-1);
458     else cY=cyclical(y-1900+36);
459 sysadm 1.2 var term2=sTerm(y,2); //立春日期
460 sysadm 1.1
461 sysadm 1.2 ////////月柱 1900年1月小寒以前为 丙子月(60进制12)
462     var firstNode = sTerm(y,m*2) //传回当月「节」为几日开始
463 sysadm 1.1 cM = cyclical((y-1900)*12+m+12);
464    
465 sysadm 1.2 //当月一日与 1900/1/1 相差天数
466     //1900/1/1与 1970/1/1 相差25567日, 1900/1/1 日柱为甲戌日(60进制10)
467 sysadm 1.1 var dayCyclical = Date.UTC(y,m,1,0,0,0,0)/86400000+25567+10;
468    
469     for(var i=0;i<this.length;i++) {
470    
471     if(lD>lX) {
472 sysadm 1.2 sDObj = new Date(y,m,i+1); //当月一日日期
473     lDObj = new Lunar(sDObj); //农历
474     lY = lDObj.year; //农历年
475     lM = lDObj.month; //农历月
476     lD = lDObj.day; //农历日
477     lL = lDObj.isLeap; //农历是否闰月
478     lX = lL? leapDays(lY): monthDays(lY,lM); //农历当月最后一天
479 sysadm 1.1
480     if(n==0) firstLM = lM;
481     lDPOS[n++] = i-lD+1;
482     }
483    
484 sysadm 1.2 //依节气调整二月分的年柱, 以春分为界
485 sysadm 1.1 if(m==1 && (i+1)==term2) cY=cyclical(y-1900+36);
486 sysadm 1.2 //依节气月柱, 以「节」为界
487 sysadm 1.1 if((i+1)==firstNode) cM = cyclical((y-1900)*12+m+13);
488 sysadm 1.2 //日柱
489 sysadm 1.1 cD = cyclical(dayCyclical+i);
490    
491     //sYear,sMonth,sDay,week,
492     //lYear,lMonth,lDay,isLeap,
493     //cYear,cMonth,cDay
494     this[i] = new calElement(y, m+1, i+1, nStr1[(i+this.firstWeek)%7],
495     lY, lM, lD++, lL,
496     cY ,cM, cD );
497    
498    
499    
500     }
501    
502    
503 sysadm 1.2 //节气
504 sysadm 1.1 tmp1=sTerm(y,m*2 )-1;
505     tmp2=sTerm(y,m*2+1)-1;
506     this[tmp1].solarTerms = solarTerm[m*2];
507     this[tmp2].solarTerms = solarTerm[m*2+1];
508 sysadm 1.2 if(m==3) this[tmp1].color = 'red'; //清明颜色
509 sysadm 1.1
510 sysadm 1.2 //国历节日
511 sysadm 1.1 for(i in sFtv)
512     if(sFtv[i].match(/^(\d{2})(\d{2})([\s\*])(.+)$/))
513     if(Number(RegExp.$1)==(m+1)) {
514     this[Number(RegExp.$2)-1].solarFestival += RegExp.$4 + ' ';
515     if(RegExp.$3=='*') this[Number(RegExp.$2)-1].color = 'red';
516     }
517    
518 sysadm 1.2 //月周节日
519 sysadm 1.1 for(i in wFtv)
520     if(wFtv[i].match(/^(\d{2})(\d)(\d)([\s\*])(.+)$/))
521     if(Number(RegExp.$1)==(m+1)) {
522     tmp1=Number(RegExp.$2);
523     tmp2=Number(RegExp.$3);
524     if(tmp1<5)
525     this[((this.firstWeek>tmp2)?7:0) + 7*(tmp1-1) + tmp2 - this.firstWeek].solarFestival += RegExp.$5 + ' ';
526     else {
527     tmp1 -= 5;
528 sysadm 1.2 tmp3 = (this.firstWeek+this.length-1)%7; //当月最后一天星期?
529 sysadm 1.1 this[this.length - tmp3 - 7*tmp1 + tmp2 - (tmp2>tmp3?7:0) - 1 ].solarFestival += RegExp.$5 + ' ';
530     }
531     }
532    
533 sysadm 1.2 //农历节日
534 sysadm 1.1 for(i in lFtv)
535     if(lFtv[i].match(/^(\d{2})(.{2})([\s\*])(.+)$/)) {
536     tmp1=Number(RegExp.$1)-firstLM;
537     if(tmp1==-11) tmp1=1;
538     if(tmp1 >=0 && tmp1<n) {
539     tmp2 = lDPOS[tmp1] + Number(RegExp.$2) -1;
540     if( tmp2 >= 0 && tmp2<this.length && this[tmp2].isLeap!=true) {
541     this[tmp2].lunarFestival += RegExp.$4 + ' ';
542     if(RegExp.$3=='*') this[tmp2].color = 'red';
543     }
544     }
545     }
546    
547    
548 sysadm 1.2 //复活节只出现在3或4月
549 sysadm 1.1 if(m==2 || m==3) {
550     var estDay = new easter(y);
551     if(m == estDay.m)
552 sysadm 1.2 this[estDay.d-1].solarFestival = this[estDay.d-1].solarFestival+' 复活节 Easter Sunday';
553 sysadm 1.1 }
554    
555    
556     //if(m==2) this[20].solarFestival = this[20].solarFestival+unescape('%20%u6D35%u8CE2%u751F%u65E5');
557    
558 sysadm 1.2 //黑色星期五
559 sysadm 1.1 if((this.firstWeek+12)%7==5)
560 sysadm 1.2 this[12].solarFestival += '黑色星期五 ';
561 sysadm 1.1
562 sysadm 1.2 //今日
563 sysadm 1.1 if(y==tY && m==tM) this[tD-1].isToday = true;
564     }
565    
566 sysadm 1.2 //======================================= 传回该年的复活节(春分后第一次满月周后的第一主日)
567 sysadm 1.1 function easter(y) {
568    
569 sysadm 1.2 var term2=sTerm(y,5); //取得春分日期
570     var dayTerm2 = new Date(Date.UTC(y,2,term2,0,0,0,0)); //取得春分的国历日期物件(春分一定出现在3月)
571     var lDayTerm2 = new Lunar(dayTerm2); //取得取得春分农历
572 sysadm 1.1
573 sysadm 1.2 if(lDayTerm2.day<15) //取得下个月圆的相差天数
574 sysadm 1.1 var lMlen= 15-lDayTerm2.day;
575     else
576     var lMlen= (lDayTerm2.isLeap? leapDays(y): monthDays(y,lDayTerm2.month)) - lDayTerm2.day + 15;
577    
578 sysadm 1.2 //一天等于 1000*60*60*24 = 86400000 毫秒
579     var l15 = new Date(dayTerm2.getTime() + 86400000*lMlen ); //求出第一次月圆为国历几日
580     var dayEaster = new Date(l15.getTime() + 86400000*( 7-l15.getUTCDay() ) ); //求出下个周日
581 sysadm 1.1
582     this.m = dayEaster.getUTCMonth();
583     this.d = dayEaster.getUTCDate();
584    
585     }
586    
587 sysadm 1.2 //====================== 中文日期
588 sysadm 1.1 function cDay(d){
589     var s;
590    
591     switch (d) {
592     case 10:
593 sysadm 1.2 s = '初十'; break;
594 sysadm 1.1 case 20:
595 sysadm 1.2 s = '二十'; break;
596 sysadm 1.1 break;
597     case 30:
598 sysadm 1.2 s = '三十'; break;
599 sysadm 1.1 break;
600     default :
601     s = nStr2[Math.floor(d/10)];
602     s += nStr1[d%10];
603     }
604     return(s);
605     }
606    
607     ///////////////////////////////////////////////////////////////////////////////
608    
609     var cld;
610    
611     function drawCld(SY,SM) {
612     var i,sD,s,size;
613     cld = new calendar(SY,SM);
614    
615 sysadm 1.2 if(SY>1874 && SY<1909) yDisplay = '光绪' + (((SY-1874)==1)?'元':SY-1874);
616     if(SY>1908 && SY<1912) yDisplay = '宣统' + (((SY-1908)==1)?'元':SY-1908);
617     if(SY>1949) yDisplay = '共和国' + (((SY-1949)==1)?'元':SY-1949);
618 sysadm 1.1
619 sysadm 1.2 GZ.innerHTML = yDisplay +'年 农历' + cyclical(SY-1900+36) + '年 【'+Animals[(SY-4)%12]+'】';
620 sysadm 1.1
621     YMBG.innerHTML = "&nbsp;" + SY + "<BR>&nbsp;" + monthName[SM];
622    
623     for(i=0;i<42;i++) {
624    
625     sObj=eval('SD'+ i);
626     lObj=eval('LD'+ i);
627    
628     sObj.className = '';
629    
630     sD = i - cld.firstWeek;
631    
632 sysadm 1.2 if(sD>-1 && sD<cld.length) { //日期内
633 sysadm 1.1 sObj.innerHTML = sD+1;
634    
635 sysadm 1.2 if(cld[sD].isToday) sObj.className = 'todyaColor'; //今日颜色
636 sysadm 1.1
637 sysadm 1.2 sObj.style.color = cld[sD].color; //国定假日颜色
638 sysadm 1.1
639 sysadm 1.2 if(cld[sD].lDay==1) //显示农历月
640     lObj.innerHTML = '<b>'+(cld[sD].isLeap?'闰':'') + cld[sD].lMonth + '月' + (monthDays(cld[sD].lYear,cld[sD].lMonth)==29?'小':'大')+'</b>';
641     else //显示农历日
642 sysadm 1.1 lObj.innerHTML = cDay(cld[sD].lDay);
643    
644     s=cld[sD].lunarFestival;
645 sysadm 1.2 if(s.length>0) { //农历节日
646 sysadm 1.1 if(s.length>6) s = s.substr(0, 4)+'...';
647     s = s.fontcolor('red');
648     }
649 sysadm 1.2 else { //国历节日
650 sysadm 1.1 s=cld[sD].solarFestival;
651     if(s.length>0) {
652     size = (s.charCodeAt(0)>0 && s.charCodeAt(0)<128)?8:4;
653     if(s.length>size+2) s = s.substr(0, size)+'...';
654     s = s.fontcolor('blue');
655     }
656 sysadm 1.2 else { //廿四节气
657 sysadm 1.1 s=cld[sD].solarTerms;
658     if(s.length>0) s = s.fontcolor('limegreen');
659     }
660     }
661     if(s.length>0) lObj.innerHTML = s;
662    
663     }
664 sysadm 1.2 else { //非日期
665 sysadm 1.1 sObj.innerHTML = '';
666     lObj.innerHTML = '';
667     }
668     }
669     }
670    
671    
672     function changeCld() {
673     var y,m;
674     y=CLD.SY.selectedIndex+1900;
675     m=CLD.SM.selectedIndex;
676     drawCld(y,m);
677     }
678    
679     function pushBtm(K) {
680     switch (K){
681     case 'YU' :
682     if(CLD.SY.selectedIndex>0) CLD.SY.selectedIndex--;
683     break;
684     case 'YD' :
685     if(CLD.SY.selectedIndex<150) CLD.SY.selectedIndex++;
686     break;
687     case 'MU' :
688     if(CLD.SM.selectedIndex>0) {
689     CLD.SM.selectedIndex--;
690     }
691     else {
692     CLD.SM.selectedIndex=11;
693     if(CLD.SY.selectedIndex>0) CLD.SY.selectedIndex--;
694     }
695     break;
696     case 'MD' :
697     if(CLD.SM.selectedIndex<11) {
698     CLD.SM.selectedIndex++;
699     }
700     else {
701     CLD.SM.selectedIndex=0;
702     if(CLD.SY.selectedIndex<150) CLD.SY.selectedIndex++;
703     }
704     break;
705     default :
706     CLD.SY.selectedIndex=tY-1900;
707     CLD.SM.selectedIndex=tM;
708     }
709     changeCld();
710     }
711    
712     var Today = new Date();
713     var tY = Today.getFullYear();
714     var tM = Today.getMonth();
715     var tD = Today.getDate();
716     //////////////////////////////////////////////////////////////////////////////
717    
718     var width = "130";
719     var offsetx = 2;
720     var offsety = 10;
721    
722     var x = 0;
723     var y = 0;
724     var snow = 0;
725     var sw = 0;
726     var cnt = 0;
727    
728     var dStyle;
729     document.onmousemove = mEvn;
730    
731 sysadm 1.2 //显示详细日期资料
732 sysadm 1.1 function mOvr(v) {
733     var s,festival;
734     var sObj=eval('SD'+ v);
735     var d=sObj.innerHTML-1;
736    
737     //sYear,sMonth,sDay,week,
738     //lYear,lMonth,lDay,isLeap,
739     //cYear,cMonth,cDay
740    
741     if(sObj.innerHTML!='') {
742    
743     sObj.style.cursor = 's-resize';
744    
745     if(cld[d].solarTerms == '' && cld[d].solarFestival == '' && cld[d].lunarFestival == '')
746     festival = '';
747     else
748     festival = '<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR="#CCFFCC"><TR><TD>'+
749     '<FONT COLOR="#000000" STYLE="font-size:9pt;">'+cld[d].solarTerms + ' ' + cld[d].solarFestival + ' ' + cld[d].lunarFestival+'</FONT></TD>'+
750     '</TR></TABLE>';
751    
752     s= '<TABLE WIDTH="130" BORDER=0 CELLPADDING="2" CELLSPACING=0 BGCOLOR="#000066" style="filter:Alpha(opacity=80)"><TR><TD>' +
753     '<TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD ALIGN="right"><FONT COLOR="#ffffff" STYLE="font-size:9pt;">'+
754 sysadm 1.2 cld[d].sYear+' 年 '+cld[d].sMonth+' 月 '+cld[d].sDay+' 日<br>星期'+cld[d].week+'<br>'+
755     '<font color="violet">农历'+(cld[d].isLeap?'闰 ':' ')+cld[d].lMonth+' 月 '+cld[d].lDay+' 日</font><br>'+
756     '<font color="yellow">'+cld[d].cYear+'年 '+cld[d].cMonth+'月 '+cld[d].cDay + '日</font>'+
757 sysadm 1.1 '</FONT></TD></TR></TABLE>'+ festival +'</TD></TR></TABLE>';
758    
759     document.all["detail"].innerHTML = s;
760    
761     if (snow == 0) {
762     dStyle.left = x+offsetx-(width/2);
763     dStyle.top = y+offsety;
764     dStyle.visibility = "visible";
765     snow = 1;
766     }
767     }
768     }
769    
770 sysadm 1.2 //清除详细日期资料
771 sysadm 1.1 function mOut() {
772     if ( cnt >= 1 ) { sw = 0; }
773     if ( sw == 0 ) { snow = 0; dStyle.visibility = "hidden";}
774     else cnt++;
775     }
776    
777 sysadm 1.2 //取得位置
778 sysadm 1.1 function mEvn() {
779     x=event.x;
780     y=event.y;
781     if (document.body.scrollLeft)
782     {x=event.x+document.body.scrollLeft; y=event.y+document.body.scrollTop;}
783     if (snow){
784     dStyle.left = x+offsetx-(width/2);
785     dStyle.top = y+offsety;
786     }
787     }
788    
789     /*****************************************************************************
790 sysadm 1.2 世界时间计算
791 sysadm 1.1 *****************************************************************************/
792     var OneHour = 60*60*1000;
793     var OneDay = OneHour*24;
794    
795     function showUTC(objD) {
796     var dn,s;
797     var hh = objD.getUTCHours();
798     var mm = objD.getUTCMinutes();
799     var ss = objD.getUTCSeconds();
800 sysadm 1.2 s = objD.getUTCFullYear() + "年" + (objD.getUTCMonth() + 1) + "月" + objD.getUTCDate() +"日 ("+ nStr1[objD.getUTCDay()] +")";
801 sysadm 1.1
802 sysadm 1.2 if(hh>12) { hh = hh-12; dn = '下午'; }
803     else dn = '上午';
804 sysadm 1.1
805     if(hh<10) hh = '0' + hh;
806     if(mm<10) mm = '0' + mm;
807     if(ss<10) ss = '0' + ss;
808    
809     s += " " + dn + ' ' + hh + ":" + mm + ":" + ss;
810     return(s);
811     }
812    
813     function showLocale(objD) {
814     var dn,s;
815     var hh = objD.getHours();
816     var mm = objD.getMinutes();
817     var ss = objD.getSeconds();
818 sysadm 1.2 s = objD.getFullYear() + "年" + (objD.getMonth() + 1) + "月" + objD.getDate() +"日 ("+ nStr1[objD.getDay()] +")";
819 sysadm 1.1
820 sysadm 1.2 if(hh>12) { hh = hh-12; dn = '下午'; }
821     else dn = '上午';
822 sysadm 1.1
823     if(hh<10) hh = '0' + hh;
824     if(mm<10) mm = '0' + mm;
825     if(ss<10) ss = '0' + ss;
826    
827     s += " " + dn + ' ' + hh + ":" + mm + ":" + ss;
828     return(s);
829     }
830    
831 sysadm 1.2 //传入时差字串, 传回偏移之正负毫秒
832 sysadm 1.1 function parseOffset(s) {
833     var sign,hh,mm,v;
834     sign = s.substr(0,1)=='-'?-1:1;
835     hh = Math.floor(s.substr(1,2));
836     mm = Math.floor(s.substr(3,2));
837     v = sign*(hh*60+mm)*60*1000;
838     return(v);
839     }
840    
841 sysadm 1.2 //传回UTC日期物件 (年,月-1,第几个星期几,几点)
842 sysadm 1.1 function getWeekDay(y,m,nd,w,h){
843     var d,d2,w1;
844     if(nd>0){
845     d = new Date(Date.UTC(y, m, 1));
846     w1 = d.getUTCDay();
847     d2 = new Date( d.getTime() + ((w<w1? w+7-w1 : w-w1 )+(nd-1)*7 )*OneDay + h*OneHour);
848     }
849     else {
850     nd = Math.abs(nd);
851     d = new Date( Date.UTC(y, m+1, 1) - OneDay );
852     w1 = d.getUTCDay();
853     d2 = new Date( d.getTime() + ( (w>w1? w-7-w1 : w-w1 )-(nd-1)*7 )*OneDay + h*OneHour);
854     }
855     return(d2);
856     }
857    
858 sysadm 1.2 //传入某时间值, 日光节约字串 传回 true 或 false
859 sysadm 1.1 function isDaylightSaving(d,strDS) {
860    
861     if(strDS == '') return(false);
862    
863     var m1,n1,w1,t1;
864     var m2,n2,w2,t2;
865     with (Math){
866     m1 = floor(strDS.substr(0,2))-1;
867     w1 = floor(strDS.substr(3,1));
868     t1 = floor(strDS.substr(4,1));
869     m2 = floor(strDS.substr(6,2))-1;
870     w2 = floor(strDS.substr(9,1));
871     t2 = floor(strDS.substr(10,1));
872     }
873    
874     switch(strDS.substr(2,1)){
875     case 'F': n1=1; break;
876     case 'L': n1=-1; break;
877     default : n1=0; break;
878     }
879    
880     switch(strDS.substr(8,1)){
881     case 'F': n2=1; break;
882     case 'L': n2=-1; break;
883     default : n2=0; break;
884     }
885    
886    
887     var d1, d2, re;
888    
889     if(n1==0)
890     d1 = new Date(Date.UTC(d.getUTCFullYear(), m1, Math.floor(strDS.substr(2,2)),t1));
891     else
892     d1 = getWeekDay(d.getUTCFullYear(),m1,n1,w1,t1);
893    
894     if(n2==0)
895     d2 = new Date(Date.UTC(d.getUTCFullYear(), m2, Math.floor(strDS.substr(8,2)),t2));
896     else
897     d2 = getWeekDay(d.getUTCFullYear(),m2,n2,w2,t2);
898    
899     if(d2>d1)
900     re = (d>d1 && d<d2)? true: false;
901     else
902     re = (d>d1 && d<d2)? false: true;
903    
904     return(re);
905     }
906    
907     var isDS = false;
908    
909 sysadm 1.2 //计算全球时间
910 sysadm 1.1 function getGlobeTime() {
911     var d,s;
912     d = new Date();
913     d.setTime(d.getTime()+parseOffset(objTimeZone[0]));
914     isDS=isDaylightSaving(d,objTimeZone[1]);
915     if(isDS) d.setTime(d.getTime()+OneHour);
916    
917     return(showUTC(d));
918     }
919    
920     var objTimeZone;
921     var objContinentMenu;
922     var objCountryMenu;
923    
924     function tick() {
925     var today;
926     today = new Date();
927     LocalTime.innerHTML = showLocale(today);
928     GlobeTime.innerHTML = getGlobeTime();
929     window.setTimeout("tick()", 1000);
930     }
931    
932 sysadm 1.2 //指定自定索引时区
933 sysadm 1.1 function setTZ(a,c){
934     objContinentMenu.options[a].selected=true;
935     chContinent();
936     objCountryMenu.options[c].selected=true;
937     chCountry();
938     }
939    
940 sysadm 1.2 //变更区域
941 sysadm 1.1 function chContinent() {
942     var key,i;
943     continent = objContinentMenu.options[objContinentMenu.selectedIndex].text;
944     for (var i = objCountryMenu.options.length-1; i >= 0; i--)
945     objCountryMenu[0]=null;
946     for (key in timeData[continent])
947     objCountryMenu.options[objCountryMenu.options.length]=new Option(key);
948     objCountryMenu.options[0].selected=true;
949     chCountry();
950     }
951    
952 sysadm 1.2 //变更国家
953 sysadm 1.1 function chCountry() {
954     var txtContinent = objContinentMenu.options[objContinentMenu.selectedIndex].text;
955     var txtCountry = objCountryMenu.options[objCountryMenu.selectedIndex].text;
956    
957     objTimeZone = timeData[txtContinent][txtCountry];
958    
959     getGlobeTime();
960    
961 sysadm 1.2 //地图位移
962     City.innerHTML = (isDS==true?"<SPAN STYLE='font-size:12pt;font-family:Wingdings; color:Red;'>R</span> ":'') + objTimeZone[2]; //首都
963 sysadm 1.1 var pos = Math.floor(objTimeZone[0].substr(0,3));
964     if(pos<0) pos+=24;
965     pos*=-10;
966     world.style.left = pos;
967    
968     }
969    
970     ///////////////////////////////////////////////////////////////////////////
971    
972     function initialize() {
973     var key;
974    
975 sysadm 1.2 //时间
976 sysadm 1.1 map.filters.Light.Clear();
977     map.filters.Light.addAmbient(255,255,255,60);
978     map.filters.Light.addCone(120, 60, 80, 120, 60, 255,255,255,120,60);
979    
980     objContinentMenu=document.WorldClock.continentMenu;
981     objCountryMenu=document.WorldClock.countryMenu;
982    
983     for (key in timeData)
984     objContinentMenu[objContinentMenu.length]=new Option(key);
985    
986     setTZ(0,18);
987    
988     tick();
989    
990    
991 sysadm 1.2 //月历
992 sysadm 1.1 dStyle = detail.style;
993     CLD.SY.selectedIndex=tY-1900;
994     CLD.SM.selectedIndex=tM;
995     drawCld(tY,tM);
996    
997     }
998    
999     //-->
1000     </SCRIPT>
1001     <body oncontextmenu=self.event.returnValue=false onload=initialize()>
1002     <center>
1003     <?
1004     include "./head.inc.php";
1005     ?>
1006     <table width="760" border="0" cellpadding="0" cellspacing="0">
1007     <tr height=20 bgcolor=#F3F9FC>
1008     <td width="20">&nbsp;</td>
1009 sysadm 1.2 <td>枫林在线 &gt;&gt; 万年历</td>
1010 sysadm 1.1 <td width="20">&nbsp;</td>
1011     </tr>
1012     <tr>
1013     <td colspan=3 height=1 bgcolor=gray></td>
1014     </tr>
1015     <tr height=5>
1016     <td>&nbsp;</td>
1017     </tr>
1018     </table>
1019     <SCRIPT language=JavaScript><!--
1020     if(navigator.appName == "Netscape" || parseInt(navigator.appVersion) < 4)
1021 sysadm 1.2 document.write("<h1>你的浏览器无法执行此程式。</h1>此程式需在 IE4 以后的版本才能执行!!")
1022 sysadm 1.1 //--></SCRIPT>
1023     <table width="760" border="0" cellpadding="0" cellspacing="0">
1024     <tr>
1025     <td>
1026     <DIV id=detail
1027     style="Z-INDEX: 3; FILTER: shadow(color=#333333,direction=135); WIDTH: 140px; POSITION: absolute; HEIGHT: 120px"></DIV>
1028     <CENTER>
1029     <TABLE border=0>
1030     <TBODY>
1031 sysadm 1.2 <TR><!------------------------------ 世界时间 ----------------------------------->
1032 sysadm 1.1 <FORM name=WorldClock>
1033     <TD vAlign=top align=middle width=240 height=340><FONT
1034 sysadm 1.2 style="FONT-SIZE: 9pt" size=2><B>本地时间</B></FONT><BR><SPAN id=LocalTime
1035     style="FONT-SIZE: 9pt; COLOR: #000080; FONT-FAMILY: Arial">0000年0月0日 ( )
1036      午 00:00:00</SPAN>
1037     <P><SPAN id=City style="FONT-SIZE: 9pt; WIDTH: 150px">中国</SPAN> <BR><SPAN
1038 sysadm 1.1 id=GlobeTime
1039 sysadm 1.2 style="FONT-SIZE: 9pt; COLOR: #000080; FONT-FAMILY: Arial">0000年0月0日 ( )
1040      午 00:00:00</SPAN><BR>
1041 sysadm 1.1 <TABLE style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings">
1042     <TBODY>
1043     <TR>
1044     <TD align=middle>&Uacute;
1045     <DIV id=map
1046     style="FILTER: Light; OVERFLOW: hidden; WIDTH: 240px; HEIGHT: 120px; BACKGROUND-COLOR: mediumblue"><FONT
1047     id=world
1048     style="FONT-SIZE: 185px; LEFT: 0px; COLOR: green; FONT-FAMILY: Webdings; POSITION: relative; TOP: -26px">&ucirc;&ucirc;</FONT>
1049     </DIV>&Ugrave; </TD></TR></TBODY></TABLE><BR><SELECT
1050     style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; WIDTH: 240px; LINE-HEIGHT: normal; FONT-STYLE: normal; BACKGROUND-COLOR: #bcc496; FONT-VARIANT: normal"
1051     onchange=chContinent() name=continentMenu></SELECT><BR><SELECT
1052     style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; WIDTH: 240px; LINE-HEIGHT: normal; FONT-STYLE: normal; BACKGROUND-COLOR: #bcc496; FONT-VARIANT: normal"
1053 sysadm 1.2 onchange=chCountry() name=countryMenu></SELECT></P></TD></FORM><!------------------------------ 万年历 ----------------------------------->
1054 sysadm 1.1 <FORM name=CLD>
1055     <TD align=middle height=340>
1056     <DIV style="Z-INDEX: -1; POSITION: absolute; TOP: 150px"><FONT id=YMBG
1057     style="FONT-SIZE: 100pt; COLOR: #f0f0f0; FONT-FAMILY: 'Arial Black'">&nbsp;0000<BR>&nbsp;JUN</FONT>
1058     </DIV>
1059     <TABLE border=0>
1060     <TBODY>
1061     <TR>
1062     <TD bgColor=#000080 colSpan=7><FONT style="FONT-SIZE: 9pt"
1063 sysadm 1.2 color=#ffffff size=2>西历<SELECT style="FONT-SIZE: 9pt"
1064 sysadm 1.1 onchange=changeCld() name=SY>
1065     <SCRIPT language=JavaScript><!--
1066     for(i=1900;i<2051;i++) document.write('<option>'+i)
1067     //--></SCRIPT>
1068 sysadm 1.2 </SELECT>年<SELECT style="FONT-SIZE: 9pt" onchange=changeCld()
1069 sysadm 1.1 name=SM>
1070     <SCRIPT language=JavaScript><!--
1071     for(i=1;i<13;i++) document.write('<option>'+i)
1072     //--></SCRIPT>
1073 sysadm 1.2 </SELECT>月</FONT> <FONT id=GZ color=#ffff00 size=4></FONT><BR></TD></TR>
1074 sysadm 1.1 <TR align=middle bgColor=#ccccff>
1075 sysadm 1.2 <TD width=54>日</TD>
1076     <TD width=54>一</TD>
1077     <TD width=54>二</TD>
1078     <TD width=50>三</TD>
1079     <TD width=54>四</TD>
1080     <TD width=54>五</TD>
1081     <TD width=54>六</TD></TR>
1082 sysadm 1.1 <SCRIPT language=JavaScript><!--
1083     var gNum, color1, color2;
1084    
1085 sysadm 1.2 // 星期六颜色
1086 sysadm 1.1 switch (conWeekend) {
1087     case 1:
1088     color1 = 'black';
1089     color2 = color1;
1090     break;
1091     case 2:
1092     color1 = 'green';
1093     color2 = color1;
1094     break;
1095     case 3:
1096     color1 = 'red';
1097     color2 = color1;
1098     break;
1099     default :
1100     color1 = 'green';
1101     color2 = 'red';
1102     }
1103    
1104     for(i=0;i<6;i++) {
1105     document.write('<tr align=center>')
1106     for(j=0;j<7;j++) {
1107     gNum = i*7+j
1108     document.write('<td id="GD' + gNum +'" onMouseOver="mOvr(' + gNum +')" onMouseOut="mOut()"><font id="SD' + gNum +'" size=5 face="Arial Black"')
1109     if(j == 0) document.write(' color=red')
1110     if(j == 6) {
1111     if(i%2==1) document.write(' color='+color2)
1112     else document.write(' color='+color1)
1113     }
1114     document.write(' TITLE=""> </font><br><font id="LD' + gNum + '" size=2 style="font-size:9pt"> </font></td>')
1115     }
1116     document.write('</tr>')
1117     }
1118     //--></SCRIPT>
1119     </TBODY></TABLE></TD>
1120 sysadm 1.2 <TD vAlign=top align=middle width=40 height=340><BR><BR><BR>年<BR><BUTTON
1121     style="FONT-SIZE: 9pt" onclick="pushBtm('YD')">▲</BUTTON><BR><BUTTON
1122     style="FONT-SIZE: 9pt" onclick="pushBtm('YU')">◆</BUTTON>
1123     <P>月<BR><BUTTON style="FONT-SIZE: 9pt"
1124     onclick="pushBtm('MD')">▲</BUTTON><BR><BUTTON style="FONT-SIZE: 9pt"
1125     onclick="pushBtm('MU')">◆</BUTTON>
1126     <P><BUTTON style="FONT-SIZE: 9pt" onclick="pushBtm('')">当<BR>月</BUTTON>
1127 sysadm 1.1 <P></P></TD></FORM></TR></TBODY></TABLE></CENTER>
1128     </td>
1129     </tr>
1130     </table>
1131     <?
1132     include "./foot.inc.php";
1133     ?>
1134     </center>
1135     </body>
1136     </html>

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1