調(diào)用qq的方法:
<A href="tencent://message/?uin=20989163&Site=博客園&Menu=yes"
target=blank><IMG alt=點(diǎn)擊這里給我發(fā)消息 src="http://wpa.qq.com/pa?p=1:20989163:11"
border=0></A>
調(diào)用msn的方法:
<A href="msnim:chat?contact=xxqq0824@hotmail.com" target=blank>點(diǎn)這里和我MSN聊天</A>
放在頁面上就能出效果了!
1.如何在網(wǎng)頁上顯示騰訊QQ在線洽談?
QQ在線咨詢代碼(qq在線交談代碼/qq在線客服代碼/qq在線狀態(tài)代碼/qq在線客服代碼)
(將123456換成你的號碼,site后面換成你的網(wǎng)站就可以了)
更多的生成顯示QQ在線狀態(tài)的代碼,請查看騰訊官方網(wǎng)站
http://imis.qq.com/webpresence/code.shtml
你只需要填寫你的號碼,網(wǎng)站名稱以及提示就可以點(diǎn)擊生成就可以生成QQ在線狀態(tài)的代碼,拷貝生成的代碼加入網(wǎng)頁即可
2.阿里巴巴貿(mào)易通在線狀態(tài)代碼生成,eric改成你的ID就行了,還有ALT改成你的內(nèi)容
更多的阿里巴巴貿(mào)易通在線狀態(tài)代碼生成樣式,請查看阿里巴巴官方網(wǎng)站
http://club.china.alibaba.com/club/block/alitalk/alitalkfire.html
3.skype在線狀態(tài)代碼生成
將eric換成你的skype ID就可以了,需要在skype個人賬戶里設(shè)置對任何人顯示狀態(tài)
更多的skype在線狀態(tài)代碼生成樣式,請查看skype的官方網(wǎng)站
http://www.skype.com/share/buttons/
4.如何生成MSN在線狀態(tài)代碼
可以設(shè)置自定義顯示圖片,不過檢測速度有點(diǎn)慢,另外一部分人在msn的配置中,設(shè)置了不加好友就不顯示在線。這是為了個人隱私保護(hù),但這樣會顯示狀態(tài)未知或者離線。如果你不介意別人看到你,就開啟那個選項就好了。
6:雅虎
將admin@hichf.com換成您自己的:
7.在線客服的代碼
有很多朋友問我在線客服的代碼,貌似網(wǎng)上也找不到好用的,因此打算把自己珍藏的代碼拿出來給大家分性享一下,很好用。
按鈕部分,我是用圖片來做例子
JS部分:
ENGLISH
以上代碼已經(jīng)不支持msn8.0,MSN 8.0的代碼
收藏自:CHF精品論壇
1、 傳遞參數(shù)時需要使用encodeURIComponent,這樣組合的url才不會被#等特殊字符截斷。
例如:<script language="javascript">document.write('<a );</script>
2、 進(jìn)行url跳轉(zhuǎn)時可以整體使用encodeURI
例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");
3、 js使用數(shù)據(jù)時可以使用escape
[Huoho.Com編輯]例如:搜藏中history紀(jì)錄。
4、 escape對0-255以外的unicode值進(jìn)行編碼時輸出%u****格式,其它情況下escape,encodeURI,encodeURIComponent編碼結(jié)果相同。
最多使用的應(yīng)為encodeURIComponent,它是將中文、韓文等特殊字符轉(zhuǎn)換成utf-8格式的url編碼,所以如果給后臺傳遞參數(shù)需要使用encodeURIComponent時需要后臺解碼對utf-8支持(form中的編碼方式和當(dāng)前頁面編碼方式相同)
escape不編碼字符有69個:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不編碼字符有82個:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不編碼字符有71個:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
d.onmousemove=function(a){
if(!a)a=window.event;
if(!a.pageX)a.pageX=a.clientX;
if(!a.pageY)a.pageY=a.clientY;
var tx=a.pageX-x,ty=a.pageY-y;
box.style.left=tx;
box.style.top=ty;
};
d.onmouseup=function(){
if(header.releaseCapture)
header.releaseCapture();
else if(window.captureEvents)
window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
d.onmousemove=null;
d.onmouseup=null;
};
};
}
window.onload=function(){
drag(document.getElementById('box_header'),document.getElementById('box'));
Nifty("#box_header","top");
Nifty("#content","bottom");
Nifty("#box");
};
//-->
</script>
</head>
<body>
<div id="box" >
<div id='box_header'>
<li style="margin:5px 0px 5px 0px;list-style-type:none">
咸菜
</li>
</div>
<div id="content">
<li>孤獨(dú)中等待,</li>
<li>等待中無耐。</li>
<li>無耐中戀愛,</li>
<li>戀愛中變態(tài)。</li>
</div>
</div>
</body>
</html>
這是我學(xué)習(xí)javascript中面向?qū)ο筇匦缘囊稽c(diǎn)總結(jié)。希望對具有其他語言的面向?qū)ο笤O(shè)計經(jīng)驗的朋友理解javascript的OO有所幫助。我具有c++,java和python的面向?qū)ο笤O(shè)計的經(jīng)驗。
總的感受, javascript作為一種弱類型的動態(tài)語言,語法接近于java,但其面向?qū)ο蟮姆绞礁蚿ython相識。
1 面向?qū)ο蟮奶匦?/strong>
類,成員變量,成員函數(shù),類變量,類方法,繼承,多態(tài)
1) 類
類的定義:function Circle(r) { this.r = r; }
類的實(shí)例化: c = Circle(3);
2)成員變量
成員變量在初始化函數(shù)里申明:this.r = r;
注意,在對象生成后,你也可以給它附上成員變量,比如c.name="my circle",
但是除非特別的需要,我強(qiáng)烈建議你不要這樣做。也就是所有的成員都應(yīng)在初始化函數(shù)里聲明。我認(rèn)為這是一種好的style。
這一點(diǎn)和python很相識。
3)成員函數(shù)
成員函數(shù)的標(biāo)準(zhǔn)形式是這樣的:
Cricle.prototype.area = function() { return 3.14 * this.r * this.r; }
這和java或python或c++都大不一樣。但為了幫助理解,你可以把prototype看作基類。
prototype里面的變量或方法,是所有對象共享的。
比如,c.area()調(diào)用最終就會讓解釋器調(diào)用到Circle.prototype.area().
相比于java和c++,javascript具有他們都沒有的一個語義,也就是你可以在prototype里定義變量。定義在prototype里的變量可以被所有的實(shí)例共享量。所以一般它應(yīng)該是一個常數(shù),比如:Circle.prototype.PI = 3.14.
顯然,prototype里的變量和方法都應(yīng)該是不變的。每一個對象實(shí)例都不應(yīng)該取修改prototype中的內(nèi)容。雖然語言允許你可以這樣做,但這樣做沒有任何意義,也違反了面向?qū)ο蟮恼Z義(想想,java會讓你動態(tài)修改一個類的方法嗎)。
當(dāng)然,對于多態(tài)是另外一回事,在后面詳述。
而且,我建議所有的成員函數(shù)都在緊接類定義的地方定義。而不應(yīng)該在代碼運(yùn)行的某個地方對一個對象實(shí)例增加/修改成員函數(shù)。這樣的結(jié)果是javascript的類定義盡量向java看齊。使得代碼更清晰。
4)類變量
類變量是屬于一個類的變量。就像java里用static修飾的變量。因為它屬于類,所以它也應(yīng)該是一個常量。實(shí)例不應(yīng)該去修改它,雖然你可以 (java里可以用final修飾,使得類變量一旦定義,就不能修改)。這里可以看到,類變量和prototype里定義的變量的功能是相似的。確實(shí)如 此,他們的目的都是一樣的。但他們的訪問方式
不一樣。比如:
Circle.prototype.PI = 3.14;
Circle.PI = 3.14;
//用prototype里的變量
Circle.prototype.area1 = function() { return this.PI * this.r * this.r; }
//用類變量
Circle.prototype.area2 = function() { return Circle.PI * this.r * this.r; }
5)類方法
這個概念應(yīng)該很簡單。注意類方法里絕對不要用this關(guān)鍵字,和java完全一樣。
Circle.max = function(a, b) {
return a.r > b.r ? a : b;
}
theMax = Circle(new Circle(1), new Circle(4));
6)繼承
子類繼承父類,那么 “子類實(shí)例” 具有和 “父類實(shí)例” 完全一樣的行為。javascript是這樣實(shí)現(xiàn)的。
function SubCircle(x, y, r) {
this.x = x;
this.y = y;
this.r =r;
}
SubCircle.prototype = new Circle(0);
記得前面說的嗎?可以把prototype看作一個基類。這里,prototype確確實(shí)實(shí)是一個基類。它是如何實(shí)現(xiàn)的呢?
舉例如下:
sc = SubCirlce(1,1,3);
sc.area();
調(diào)用的傳遞:
sc.area()->sc.prototype.area()->Circle(0).area()->Circle.prototype.area().
看來是不是很奇妙呢。
通過這種方式,javascript實(shí)現(xiàn)了繼承。
7)多態(tài)
多態(tài)是子類會定義和父類具有相同signature的方法。假設(shè)在SubCircle所在的空間PI=100,而面積公式也變?yōu)?PI*R*R*R。
SubCircle.prototype.PI = 100
SubCircle.prototype.area = function() {
return this.PI*this.r*this.r*this.r;
}
Sc.area()
這樣的操作可以認(rèn)為是:
Sc.PI->sc.prototype.PI->Cricle(0).PI = 100
Sc.area()->sc.prototype.area()->Circle(0).area.
這個時候,調(diào)用過程是這樣的
sc.area()->sc.prototype.area(),在這里解釋器發(fā)現(xiàn)了area這個方法,于是它就調(diào)用此方法。
而Cricle.prototype.area就永遠(yuǎn)也不會被調(diào)用。PI的調(diào)用也是如此。那么子類如何想調(diào)用父類的方法應(yīng)怎么辦呢?好像沒有什么辦 法哦,誰知道可以告訴我。但面向?qū)ο蟮睦碚摳嬖V我們,繼承主要是提供接口而不是代碼復(fù)用,所以還是少有這樣的念頭為好 :)。
下面是一個例子程序。包含上面的所有的概念。
例子
///////////define: Cricle//////////////////
function Circle(r) {
this.r = r;
}
Circle.PI = 3.14;
Circle.prototype.PI = 3.14;
Circle.prototype.area = function() { return Circle.PI*this.r*this.r; }
Circle.prototype.area2 = function() { return this.PI*this.r*this.r; }
//// test
c = new Circle(3);
//alert("area1 :"+c.area());
//alert("area2 :"+c.area2());
Circle.max = function(a, b) { return a.r>b.r ? a.r : b.r; }
//alert("max is "+Circle.max(new Circle(1), new Circle(3)));
c1 = new Circle(1);
c2 = new Circle(1);
c2.PI = 100;//Circle.prototype.PI=100;
//alert("c1.area1 "+c1.area());
//alert("c1.area2 "+c1.area2());
//alert("c2.area1 "+c2.area());
//alert("c2.area2 "+c2.area2());
////////////////////////define: SubCircle //////////////////
function SubCircle(x, y, r) {
this.x = x;
this.y = y;
this.r = r;
}
SubCircle.prototype = new Circle(0);
SubCircle.prototype.PI = 100;
SubCircle.prototype.move2 = function(x, y) { this.x = x; this.y = y;}
SubCircle.prototype.area = function() { return this.PI*this.r*this.r*this.r; }
//// test
sc = new SubCircle(0,0,2);
alert(sc.area());
只能是中文
<input onkeyup="value=value.replace(/[ -~]/g,'')" onkeydown="if(event.keyCode==13)event.keyCode=9">
屏蔽輸入法
<input style="ime-mode:disabled" onkeydown="if(event.keyCode==13)event.keyCode=9">
只能輸入英文和數(shù)字
<input onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" onkeydown="if(event.keyCode==13)event.keyCode=9">
只能是數(shù)字
<input onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))">
只能顯示,不能修改
<input readonly value="只能顯示,不能修改">
只能書數(shù)字,判斷按鍵的值
<script language=javascript>
function onlyNum()
{
if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105)||(event.keyCode==8)))
event.returnValue=false;
}
</script>
<input onkeydown="onlyNum();">
56.JS中的焦點(diǎn)順序:document.getElementByid("表單元素").tabIndex = 1
57.innerHTML的值是表單元素的值:如<p id="para">"how are <em>you</em>"</p>,則innerHTML的值就是:how are <em>you</em>
58.innerTEXT的值和上面的一樣,只不過不會把<em>這種標(biāo)記顯示出來.
59.contentEditable可設(shè)置元素是否可被修改,isContentEditable返回是否可修改的狀態(tài).
60.isDisabled判斷是否為禁止?fàn)顟B(tài).disabled設(shè)置禁止?fàn)顟B(tài)
61.length取得長度,返回整型數(shù)值
62.addBehavior()是一種JS調(diào)用的外部函數(shù)文件其擴(kuò)展名為.htc
63.window.focus()使當(dāng)前的窗口在所有窗口之前.
64.blur()指失去焦點(diǎn).與FOCUS()相反.
65.select()指元素為選中狀態(tài).
66.防止用戶對文本框中輸入文本:onfocus="this.blur()"
67.取出該元素在頁面中出現(xiàn)的數(shù)量:document.all.tags("div(或其它HTML標(biāo)記符)").length
68.JS中分為兩種窗體輸出:模態(tài)和非模態(tài).window.showModaldialog(),window.showModeless()
69.狀態(tài)欄文字的設(shè)置:window.status='文字',默認(rèn)的狀態(tài)欄文字設(shè)置:window.defaultStatus = '文字.';
70.添加到收藏夾:external.AddFavorite("http://www.xrss.cn","jaskdlf");
71.JS中遇到腳本錯誤時不做任何操作:window.onerror = doNothing; 指定錯誤句柄的語法為:window.onerror = handleError;
72.JS中指定當(dāng)前打開窗口的父窗口:window.opener,支持opener.opener...的多重繼續(xù).
73.JS中的self指的是當(dāng)前的窗口
74.JS中狀態(tài)欄顯示內(nèi)容:window.status="內(nèi)容"
75.JS中的top指的是框架集中最頂層的框架
76.JS中關(guān)閉當(dāng)前的窗口:window.close();
77.JS中提出是否確認(rèn)的框:if(confirm("Are you sure?")){alert("ok");}else{alert("Not Ok");}
78.JS中的窗口重定向:window.navigate("http://www.sina.com.cn");
79.JS中的打印:window.print()
80.JS中的提示輸入框:window.prompt("message","defaultReply");
81.JS中的窗口滾動條:window.scroll(x,y)
82.JS中的窗口滾動到位置:window.scrollby
83.JS中設(shè)置時間間隔:setInterval("expr",msecDelay)或setInterval(funcRef,msecDelay)或setTimeout
84.JS中的模態(tài)顯示在IE4+行,在NN中不行:showModalDialog("URL"[,arguments][,features]);
85.JS中的退出之前使用的句柄:function verifyClose(){event.returnValue="we really like you and hope you will stay longer.";}} window.onbeforeunload=verifyClose;
86.當(dāng)窗體第一次調(diào)用時使用的文件句柄:onload()
87.當(dāng)窗體關(guān)閉時調(diào)用的文件句柄:onunload()
88.window.location的屬性: protocol(http:),hostname(www.example.com),port(80),host(www.example.com:80),pathname("/a/a.html"),hash("#giantGizmo",指跳轉(zhuǎn)到相應(yīng)的錨記),href(全部的信息)
89.window.location.reload()刷新當(dāng)前頁面.
89-1.parent.location.reload()刷新父親對象(用于框架)
89-2.opener.location.reload()刷新父窗口對象(用于單開窗口)
89-3.top.location.reload()刷新最頂端對象(用于多開窗口)
90.window.history.back()返回上一頁,window.history.forward()返回下一頁,window.history.go(返回第幾頁,也可以使用訪問過的URL)
91.document.write()不換行的輸出,document.writeln()換行輸出
92.document.body.noWrap=true;防止鏈接文字折行.
93.變量名.charAt(第幾位),取該變量的第幾位的字符.
94."abc".charCodeAt(第幾個),返回第幾個字符的ASCii碼值.
95.字符串連接:string.concat(string2),或用+=進(jìn)行連接
96.變量.indexOf("字符",起始位置),返回第一個出現(xiàn)的位置(從0開始計算)
97.string.lastIndexOf(searchString[,startIndex])最后一次出現(xiàn)的位置.
98.string.match(regExpression),判斷字符是否匹配.
99.string.replace(regExpression,replaceString)替換現(xiàn)有字符串.
100.string.split(分隔符)返回一個數(shù)組存儲值.
101.string.substr(start[,length])取從第幾位到指定長度的字符串.
102.string.toLowerCase()使字符串全部變?yōu)樾?
103.string.toUpperCase()使全部字符變?yōu)榇髮?
104.parseInt(string[,radix(代表進(jìn)制)])強(qiáng)制轉(zhuǎn)換成整型.
105.parseFloat(string[,radix])強(qiáng)制轉(zhuǎn)換成浮點(diǎn)型.
106.isNaN(變量):測試是否為數(shù)值型.
107.定義常量的關(guān)鍵字:const,定義變量的關(guān)鍵字:var
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>本地計算機(jī)時間</title>
</head>
<body>
<SCRIPT language=JavaScript>
<!--
/*****************************************************************************
日期資料
*****************************************************************************/
var lunarInfo=new Array(
0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,
0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,
0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,
0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,
0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,
0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,
0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,
0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,
0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,
0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,
0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,
0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,
0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,
0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,
0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0)
var solarMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var Gan=new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
var Zhi=new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");
var Animals=new Array("鼠","牛","虎","兔","龍","蛇","馬","羊","猴","雞","狗","豬");
var solarTerm = new Array("小寒","大寒","立春","雨水","驚蟄","春分","清明","谷雨","立夏","小滿","芒種","夏至","小暑","大暑","立秋","處暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至")
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)
var nStr1 = new Array('日','一','二','三','四','五','六','七','八','九','十')
var nStr2 = new Array('初','十','廿','卅',' ')
var monthName = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");
//國歷節(jié)日 *表示放假日
var sFtv = new Array(
"0101*元旦",
"0214 情人節(jié)",
"0303 我生日",
"0308 婦女節(jié)",
"0312 植樹節(jié)",
"0315 消費(fèi)者權(quán)益日",
"0317 St. Patrick's",
"0401 愚人節(jié)",
"0501 勞動節(jié)",
"0504 青年節(jié)",
"0512 護(hù)士節(jié)",
"0512 茵生日",
"0601 兒童節(jié)",
"0614 Flag Day",
"0701 建黨節(jié) 香港回歸紀(jì)念",
"0703 炎黃在線誕辰",
"0718 托普誕辰",
"0801 建軍節(jié)",
"0808 父親節(jié)",
"0909 毛澤東逝世紀(jì)念",
"0910 教師節(jié)",
"0928 孔子誕辰",
"1001*國慶節(jié)",
"1006 老人節(jié)",
"1024 聯(lián)合國日",
"1111 Veteran's / Remembrance Day",
"1112 孫中山誕辰紀(jì)念",
"1220 澳門回歸紀(jì)念",
"1225 Christmas Day",
"1226 毛澤東誕辰紀(jì)念")
//農(nóng)歷節(jié)日 *表示放假日
var lFtv = new Array(
"0101*春節(jié)",
"0115 元宵節(jié)",
"0505 端午節(jié)",
"0707 七夕情人節(jié)",
"0715 中元節(jié)",
"0815 中秋節(jié)",
"0909 重陽節(jié)",
"1208 臘八節(jié)",
"1224 小年",
"0100*除夕")
//某月的第幾個星期幾
var wFtv = new Array(
"0131 Martin Luther King Day",
"0231 President's Day",
"0520 母親節(jié)",
"0530 Armed Forces Day",
"0531 Victoria Day",
"0716 合作節(jié)",
"0730 被奴役國家周",
"0811 Civic Holiday",
"0911 Labor Holiday",
"1021 Columbus Day",
"1144 Thanksgiving")
/*****************************************************************************
日期計算
*****************************************************************************/
//====================================== 傳回農(nóng)歷 y年的總天數(shù)
function lYearDays(y) {
var i, sum = 348
for(i=0x8000; i>0x8; i>>=1) sum += (lunarInfo[y-1900] & i)? 1: 0
return(sum+leapDays(y))
}
//====================================== 傳回農(nóng)歷 y年閏月的天數(shù)
function leapDays(y) {
if(leapMonth(y)) return((lunarInfo[y-1900] & 0x10000)? 30: 29)
else return(0)
}
//====================================== 傳回農(nóng)歷 y年閏哪個月 1-12 , 沒閏傳回 0
function leapMonth(y) {
return(lunarInfo[y-1900] & 0xf)
}
//====================================== 傳回農(nóng)歷 y年m月的總天數(shù)
function monthDays(y,m) {
return( (lunarInfo[y-1900] & (0x10000>>m))? 30: 29 )
}
//====================================== 算出農(nóng)歷, 傳入日期物件, 傳回農(nóng)歷日期物件
// 該物件屬性有 .year .month .day .isLeap .yearCyl .dayCyl .monCyl
function Lunar(objDate) {
var i, leap=0, temp=0
var baseDate = new Date(1900,0,31)
var offset = (objDate - baseDate)/86400000
this.dayCyl = offset + 40
this.monCyl = 14
for(i=1900; i<2050 && offset>0; i++) {
temp = lYearDays(i)
offset -= temp
this.monCyl += 12
}
if(offset<0) {
offset += temp;
i--;
this.monCyl -= 12
}
this.year = i
this.yearCyl = i-1864
leap = leapMonth(i) //閏哪個月
this.isLeap = false
for(i=1; i<13 && offset>0; i++) {
//閏月
if(leap>0 && i==(leap+1) && this.isLeap==false)
{ --i; this.isLeap = true; temp = leapDays(this.year); }
else
{ temp = monthDays(this.year, i); }
//解除閏月
if(this.isLeap==true && i==(leap+1)) this.isLeap = false
offset -= temp
if(this.isLeap == false) this.monCyl ++
}
if(offset==0 && leap>0 && i==leap+1)
if(this.isLeap)
{ this.isLeap = false; }
else
{ this.isLeap = true; --i; --this.monCyl;}
if(offset<0){ offset += temp; --i; --this.monCyl; }
this.month = i
this.day = offset + 1
}
//==============================傳回國歷 y年某m+1月的天數(shù)
function solarDays(y,m) {
if(m==1)
return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28)
else
return(solarMonth[m])
}
//============================== 傳入 offset 傳回干支, 0=甲子
function cyclical(num) {
return(Gan[num%10]+Zhi[num%12])
}
//============================== 月歷屬性
function calElement(sYear,sMonth,sDay,week,lYear,lMonth,lDay,isLeap,cYear,cMonth,cDay) {
this.isToday = false;
//國歷
this.sYear = sYear;
this.sMonth = sMonth;
this.sDay = sDay;
this.week = week;
//農(nóng)歷
this.lYear = lYear;
this.lMonth = lMonth;
this.lDay = lDay;
this.isLeap = isLeap;
//干支
this.cYear = cYear;
this.cMonth = cMonth;
this.cDay = cDay;
this.color = '';
this.lunarFestival = ''; //農(nóng)歷節(jié)日
this.solarFestival = ''; //國歷節(jié)日
this.solarTerms = ''; //節(jié)氣
}
//===== 某年的第n個節(jié)氣為幾日(從0小寒起算)
function sTerm(y,n) {
var offDate = new Date( ( 31556925974.7*(y-1900) + sTermInfo[n]*60000 ) + Date.UTC(1900,0,6,2,5) )
return(offDate.getUTCDate())
}
//============================== 傳回月歷物件 (y年,m+1月)
function calendar(y,m) {
var sDObj, lDObj, lY, lM, lD=1, lL, lX=0, tmp1, tmp2
var lDPOS = new Array(3)
var n = 0
var firstLM = 0
sDObj = new Date(y,m,1) //當(dāng)月一日日期
this.length = solarDays(y,m) //國歷當(dāng)月天數(shù)
this.firstWeek = sDObj.getDay() //國歷當(dāng)月1日星期幾
for(var i=0;i<this.length;i++) {
if(lD>lX) {
sDObj = new Date(y,m,i+1) //當(dāng)月一日日期
lDObj = new Lunar(sDObj) //農(nóng)歷
lY = lDObj.year //農(nóng)歷年
lM = lDObj.month //農(nóng)歷月
lD = lDObj.day //農(nóng)歷日
lL = lDObj.isLeap //農(nóng)歷是否閏月
lX = lL? leapDays(lY): monthDays(lY,lM) //農(nóng)歷當(dāng)月最後一天
if(n==0) firstLM = lM
lDPOS[n++] = i-lD+1
}
//sYear,sMonth,sDay,week,
//lYear,lMonth,lDay,isLeap,
//cYear,cMonth,cDay
this[i] = new calElement(y, m+1, i+1, nStr1[(i+this.firstWeek)%7],
lY, lM, lD++, lL,
cyclical(lDObj.yearCyl) ,cyclical(lDObj.monCyl), cyclical(lDObj.dayCyl++) )
if((i+this.firstWeek)%7==0) this[i].color = 'red' //周日顏色
if((i+this.firstWeek)%14==13) this[i].color = 'red' //周休二日顏色
}
//節(jié)氣
tmp1=sTerm(y,m*2 )-1
tmp2=sTerm(y,m*2+1)-1
this[tmp1].solarTerms = solarTerm[m*2]
this[tmp2].solarTerms = solarTerm[m*2+1]
if(m==3) this[tmp1].color = 'red' //清明顏色
//國歷節(jié)日
for(i in sFtv)
if(sFtv[i].match(/^(\d{2})(\d{2})([\s\*])(.+)$/))
if(Number(RegExp.$1)==(m+1)) {
this[Number(RegExp.$2)-1].solarFestival += RegExp.$4 + ' '
if(RegExp.$3=='*') this[Number(RegExp.$2)-1].color = 'red'
}
//月周節(jié)日
for(i in wFtv)
if(wFtv[i].match(/^(\d{2})(\d)(\d)([\s\*])(.+)$/))
if(Number(RegExp.$1)==(m+1)) {
tmp1=Number(RegExp.$2)
tmp2=Number(RegExp.$3)
this[((this.firstWeek>tmp2)?7:0) + 7*(tmp1-1) + tmp2 - this.firstWeek].solarFestival += RegExp.$5 + ' '
}
//農(nóng)歷節(jié)日
for(i in lFtv)
if(lFtv[i].match(/^(\d{2})(.{2})([\s\*])(.+)$/)) {
tmp1=Number(RegExp.$1)-firstLM
if(tmp1==-11) tmp1=1
if(tmp1 >=0 && tmp1<n) {
tmp2 = lDPOS[tmp1] + Number(RegExp.$2) -1
if( tmp2 >= 0 && tmp2<this.length) {
this[tmp2].lunarFestival += RegExp.$4 + ' '
if(RegExp.$3=='*') this[tmp2].color = 'red'
}
}
}
//黑色星期五
if((this.firstWeek+12)%7==5)
this[12].solarFestival += '黑色星期五 '
//今日
if(y==tY && m==tM) this[tD-1].isToday = true;
}
//====================== 中文日期
function cDay(d){
var s;
switch (d) {
case 10:
s = '初十'; break;
case 20:
s = '二十'; break;
break;
case 30:
s = '三十'; break;
break;
default :
s = nStr2[Math.floor(d/10)];
s += nStr1[d%10];
}
return(s);
}
///////////////////////////////////////////////////////////////////////////////
var cld;
function drawCld(SY,SM) {
var i,sD,s,size;
cld = new calendar(SY,SM);
if(SY>1874 && SY<1909) yDisplay = '光緒' + (((SY-1874)==1)?'元':SY-1874)
if(SY>1908 && SY<1912) yDisplay = '宣統(tǒng)' + (((SY-1908)==1)?'元':SY-1908)
if(SY>1911 && SY<1950) yDisplay = '民國' + (((SY-1911)==1)?'元':SY-1911)
// if(SY>1949) yDisplay = '共和國' + (((SY-1949)==1)?'元':SY-1949)
// GZ.innerHTML = yDisplay +'年 農(nóng)歷' + cyclical(SY-1900+36) + '年 【'+Animals[(SY-4)%12]+'】';
if(SY>1949) yDisplay = ''
GZ.innerHTML = yDisplay +' 農(nóng)歷' + cyclical(SY-1900+36) + '年 【'+Animals[(SY-4)%12]+'】';
YMBG.innerHTML = " " + SY + "<BR> " + monthName[SM];
for(i=0;i<42;i++) {
sObj=eval('SD'+ i);
lObj=eval('LD'+ i);
sObj.className = '';
sD = i - cld.firstWeek;
if(sD>-1 && sD<cld.length) { //日期內(nèi)
sObj.innerHTML = sD+1;
if(cld[sD].isToday) sObj.className = 'todyaColor'; //今日顏色
sObj.style.color = cld[sD].color; //國定假日顏色
if(cld[sD].lDay==1) //顯示農(nóng)歷月
lObj.innerHTML = '<b>'+(cld[sD].isLeap?'閏':'') + cld[sD].lMonth + '月' + (monthDays(cld[sD].lYear,cld[sD].lMonth)==29?'小':'大')+'</b>';
else //顯示農(nóng)歷日
lObj.innerHTML = cDay(cld[sD].lDay);
s=cld[sD].lunarFestival;
if(s.length>0) { //農(nóng)歷節(jié)日
if(s.length>6) s = s.substr(0, 4)+'…';
s = s.fontcolor('red');
}
else { //國歷節(jié)日
s=cld[sD].solarFestival;
if(s.length>0) {
size = (s.charCodeAt(0)>0 && s.charCodeAt(0)<128)?8:4;
if(s.length>size+2) s = s.substr(0, size)+'…';
s = s.fontcolor('blue');
}
else { //廿四節(jié)氣
s=cld[sD].solarTerms;
if(s.length>0) s = s.fontcolor('limegreen');
}
}
if(s.length>0) lObj.innerHTML = s;
}
else { //非日期
sObj.innerHTML = '';
lObj.innerHTML = '';
}
}
}
function changeLong()
{
var y,m,ly,lm,id,im,iy,yangy,yangm,deltm,miny,tt;
CLD.SY.selectedIndex=CLD.D1.selectedIndex;
CLD.SM.selectedIndex=CLD.D2.selectedIndex;
yangm=0;yangy=0;
tt=true;
while (tt)
{
yangm=0;yangy=0;
changeCld();
for(i=0;i<42;i++)
{
sD = i - cld.firstWeek;
if(sD>-1 && sD<cld.length)
{ //日期內(nèi)
if ((cld[sD].lMonth==CLD.D2.selectedIndex+1)&&(cld[sD].lYear==CLD.D1.selectedIndex+1900))
{
yangy=CLD.SY.selectedIndex+1900; yangm=CLD.SM.selectedIndex ;
tt=false;
break;
}
}
}
if (!tt) break;
pushBtm('MD');
changeCld();
// alert(CLD.SY.selectedIndex+" "+CLD.SM.selectedIndex);
for(i=0;i<42;i++)
{
sD = i - cld.firstWeek;
if(sD>-1 && sD<cld.length)
{ //日期內(nèi)
if ((cld[sD].lMonth==CLD.D2.selectedIndex+1)&&(cld[sD].lYear==CLD.D1.selectedIndex+1900))
{
yangy=CLD.SY.selectedIndex+1900; yangm=CLD.SM.selectedIndex ;
tt=false;
break;
}
}
}
break;
}
// alert(yangy+" "+yangm);
//CLD.SY.selectedIndex=yangy;//-1900;
//pushBtm('YU');
//pushBtm('YD');
CLD.SM.selectedIndex=yangm;
pushBtm('MD');
pushBtm('MU');
}
//changeLong end
function changeCld() {
var y,m;
y=CLD.SY.selectedIndex+1900;
m=CLD.SM.selectedIndex;
drawCld(y,m);
}
function pushBtm(K) {
switch (K){
case 'YU' :
if(CLD.SY.selectedIndex>0) CLD.SY.selectedIndex--;
break;
case 'YD' :
if(CLD.SY.selectedIndex<149) CLD.SY.selectedIndex++;
break;
case 'MU' :
if(CLD.SM.selectedIndex>0) {
CLD.SM.selectedIndex--;
}
else {
CLD.SM.selectedIndex=11;
if(CLD.SY.selectedIndex>0) CLD.SY.selectedIndex--;
}
break;
case 'MD' :
if(CLD.SM.selectedIndex<11) {
CLD.SM.selectedIndex++;
}
else {
CLD.SM.selectedIndex=0;
if(CLD.SY.selectedIndex<149) CLD.SY.selectedIndex++;
}
break;
default :
CLD.SY.selectedIndex=tY-1900;
CLD.SM.selectedIndex=tM;
}
changeCld();
}
var Today = new Date();
var tY = Today.getFullYear();
var tM = Today.getMonth();
var tD = Today.getDate();
//////////////////////////////////////////////////////////////////////////////
var width = "130";
var offsetx = 2;
var offsety = 16;
var x = 0;
var y = 0;
var snow = 0;
var sw = 0;
var cnt = 0;
var dStyle;
document.onmousemove = mEvn;
//顯示詳細(xì)日期資料
function mOvr(v) {
var s,festival;
var sObj=eval('SD'+ v);
var d=sObj.innerHTML-1;
//sYear,sMonth,sDay,week,
//lYear,lMonth,lDay,isLeap,
//cYear,cMonth,cDay
if(sObj.innerHTML!='') {
sObj.style.cursor = 's-resize';
if(cld[d].solarTerms == '' && cld[d].solarFestival == '' && cld[d].lunarFestival == '')
festival = '';
else
festival = '<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR="#CCFFCC"><TR><TD>'+
'<FONT COLOR="#000000" STYLE="font-size:9pt;">'+cld[d].solarTerms + ' ' + cld[d].solarFestival + ' ' + cld[d].lunarFestival+'</FONT></TD>'+
'</TR></TABLE>';
s= '<TABLE WIDTH="130" BORDER=0 CELLPADDING="2" CELLSPACING=0 BGCOLOR="#000066"><TR><TD>' +
'<TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD ALIGN="right"><FONT COLOR="#ffffff" STYLE="font-size:9pt;">'+
cld[d].sYear+' 年 '+cld[d].sMonth+' 月 '+cld[d].sDay+' 日<br>星期'+cld[d].week+'<br>'+
'<font color="violet">農(nóng)歷'+(cld[d].isLeap?'閏 ':' ')+cld[d].lMonth+' 月 '+cld[d].lDay+' 日</font><br>'+
'<font color="yellow">'+cld[d].cYear+'年 '+cld[d].cMonth+'月 '+cld[d].cDay + '日</font>'+
'</FONT></TD></TR></TABLE>'+ festival +'</TD></TR></TABLE>';
document.all["detail"].innerHTML = s;
if (snow == 0) {
dStyle.left = x+offsetx-(width/2);
dStyle.top = y+offsety;
dStyle.visibility = "visible";
snow = 1;
}
}
}
//清除詳細(xì)日期資料
function mOut() {
if ( cnt >= 1 ) { sw = 0 }
if ( sw == 0 ) { snow = 0; dStyle.visibility = "hidden";}
else cnt++;
}
//取得位置
function mEvn() {
x=event.x;
y=event.y;
if (document.body.scrollLeft)
{x=event.x+document.body.scrollLeft; y=event.y+document.body.scrollTop;}
if (snow){
dStyle.left = x+offsetx-(width/2)
dStyle.top = y+offsety
}
}
///////////////////////////////////////////////////////////////////////////
function tick() {
var today
today = new Date()
Clock.innerHTML = today.toLocaleString().replace(/(年|月)/g, "/").replace(/日/, "");
// Clock.innerHTML = TimeAdd(today.toGMTString(), CLD.TZ.value)
window.setTimeout("tick()", 1000);
}
function setCookie(name, value) {
var today = new Date()
var expires = new Date()
expires.setTime(today.getTime() + 1000*60*60*24*365)
document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString()
}
function getCookie(Name) {
var search = Name + "="
if(document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if(offset != -1) {
offset += search.length
end = document.cookie.indexOf(";", offset)
if(end == -1) end = document.cookie.length
return unescape(document.cookie.substring(offset, end))
}
else return ""
}
}
/////////////////////////////////////////////////////////
function initial() {
dStyle = detail.style;
CLD.SY.selectedIndex=tY-1900;
CLD.SM.selectedIndex=tM;
drawCld(tY,tM);
// CLD.TZ.selectedIndex=getCookie("TZ");
// changeTZ();
tick();
}
//-->
</SCRIPT>
<STYLE>.todyaColor {
BACKGROUND-COLOR: aqua
}
</STYLE>
<META content="Microsoft FrontPage 6.0" name=GENERATOR></HEAD>
<BODY onload=initial()>
<SCRIPT language=JavaScript><!--
if(navigator.appName == "Netscape" || parseInt(navigator.appVersion) < 4)
document.write("<h1>你的瀏覽器無法執(zhí)行此程序。</h1>此程序在 IE4 以后的版本才能執(zhí)行!!")
//--></SCRIPT>
<DIV id=detail style="POSITION: absolute"></DIV>
<FORM name=CLD>
<div align="center">
<TABLE width="672" align="right" height="259" bordercolordark="#CC9900" border="4" background="l11.gif">
<CENTER>
<center>
<TBODY>
</center></center>
<TR>
<TD align=center vAlign=top width="170" height="255">
<div align="center">
<center>
<TABLE BORDER=1 COLSPAN=2 width="221">
<CENTER>
<center><FONT size=2
style="FONT-SIZE: 9pt">
<td width="209">
<p align="center"><font style="font-size:10.8pt" color=RED>本地計算機(jī)時間:</FONT></FONT><BR><FONT color=#000080 face=ARIAL
id=Clock size=3 align="center"></FONT>
<P><!--時區(qū) *表示自動調(diào)整為日光節(jié)約時間-->
</center>
</CENTER>
</TABLE>
</center>
</div>
<div align="center">
<center>
<table border=1 height="1" width="16">
<td height="1" width="255">
<table width="212" height="1"><CENTER>
<center>
<FONT id=tSave
style="COLOR: red; FONT-FAMILY: Wingdings; FONT-SIZE: 18pt"></FONT>
<td height="1" width="152"><font size="2"><FONT style="FONT-SIZE: 9pt">
<font color="#0000FF">公歷</font>年</font><FONT color=#ffffff
style="FONT-SIZE: 9pt"><SELECT name=SY onchange=changeCld()
style="FONT-SIZE: 9pt">
<SCRIPT language=JavaScript><!--
for(i=1900;i<2050;i++) document.write('<option>'+i)
//--></SCRIPT>
</SELECT> </FONT>月<FONT color=#ffffff
style="FONT-SIZE: 9pt"><SELECT name=SM onchange=changeCld()
style="FONT-SIZE: 9pt">
<SCRIPT language=JavaScript><!--
for(i=1;i<13;i++) document.write('<option>'+i)
//--></SCRIPT>
</SELECT></FONT></font>
<P><font size="2"><FONT style="FONT-SIZE: 9pt"><font color="#0000FF">陰歷</font>年</font><FONT color=#ffffff
style="FONT-SIZE: 9pt"><SELECT name=D1 onchange=changeLong()
style="FONT-SIZE: 9pt">
<SCRIPT language=JavaScript><!--
for(i=1900;i<2050;i++) document.write('<option>'+i)
//--></SCRIPT>
</SELECT> </FONT>月<FONT color=#ffffff
style="FONT-SIZE: 9pt"><SELECT name=D2 onchange=changeLong()
style="FONT-SIZE: 9pt">
<SCRIPT language=JavaScript><!--
for(i=1;i<13;i++) document.write('<option>'+i)
//--></SCRIPT>
</SELECT></FONT></font></P>
<div align="center" style="width: 4; height: 1">
</div>
<td width="1" align="center" height="1">
<BUTTON onclick="pushBtm('MU')" style="FONT-SIZE: 9pt">月↑</BUTTON>
<BUTTON onclick="pushBtm('')" style="FONT-SIZE: 9pt">當(dāng)月</BUTTON>
<BUTTON onclick="pushBtm('MD')" style="FONT-SIZE: 9pt">月↓</BUTTON>
</td>
</center></center>
<tr>
<CENTER>
<TD align=center vAlign=top width=152 height="1">
<BUTTON onclick="pushBtm('YU')" style="FONT-SIZE: 9pt">年↑</BUTTON>
<BUTTON onclick="pushBtm('YD')" style="FONT-SIZE: 9pt">年↓</BUTTON>
</TD>
</center>
<td colspan=2 width="46" height="1">
<p align="left"><INPUT onclick="javascript:window.close();" style="FONT-SIZE: 9pt" type=button value=關(guān)閉></p>
</td>
</table>
<CENTER>
<table border="1" width="100%" height="1" bordercolordark="#FFFFCC">
<tr>
<td width="100%" height="1"><font style="font-size:10.8pt" color=#0>
陰歷存在跨月情況,如果查找到的陰歷月跨兩個公歷月,用<font color=blue>[月↑][月↓]</font>翻動可以找到你想要的確切日期。</font></td>
</tr>
</table>
</CENTER>
</table>
</center>
</div>
<TD align=center width="423" height="255">
<DIV style="position: absolute; top: 31; z-index: -1; left: 270; width: 347; height: 108">
<p>
<p>
<p><FONT id=YMBG
style="COLOR: #f0f0f0; FONT-FAMILY: 'Arial Black'; FONT-SIZE: 20pt"> </FONT>
</DIV>
<div align="center">
<center>
<TABLE border=0 height="27" cellspacing="1">
<TBODY>
<TR>
<TD bgColor=#000080 colSpan=7 align="center" height="24"><FONT color=#000080 size=2
style="FONT-SIZE: 9pt">月</FONT> <FONT color=#ffffff face=宋體 id=GZ
size=4></FONT><BR></TD></TR>
<TR align=center bgColor=#e0e0e0>
<TD width=54 height="1" align="center" bgcolor="#99CCFF"><font size="2">日</font></TD>
<TD width=54 height="1" align="center" bgcolor="#99CCFF"><font size="2">一</font></TD>
<TD width=54 height="1" align="center" bgcolor="#99CCFF"><font size="2">二</font></TD>
<TD width=50 height="1" align="center" bgcolor="#99CCFF"><font size="2">三</font></TD>
<TD width=54 height="1" align="center" bgcolor="#99CCFF"><font size="2">四</font></TD>
<TD width=54 height="1" align="center" bgcolor="#99CCFF"><font size="2">五</font></TD>
<TD width=54 height="1" align="center" bgcolor="#99CCFF"><font size="2">六</font></TD></TR>
<SCRIPT language=JavaScript><!--
var gNum
for(i=0;i<6;i++) {
document.write('<tr align=center>')
for(j=0;j<7;j++) {
gNum = i*7+j
document.write('<td id="GD' + gNum +'" onMouseOver="mOvr(' + gNum +')" onMouseOut="mOut()"><font id="SD' + gNum +'" size=2 face="Arial Black"')
if(j == 0) document.write(' color=red')
if(j == 6)
if(i%2==1) document.write(' color=red')
else document.write(' color=green')
document.write(' TITLE=""> </font><br><font id="LD' + gNum + '" size=2 style="font-size:9pt"> </font></td>')
}
document.write('</tr>')
}
//--></SCRIPT>
</TBODY></TABLE>
</center>
</div>
</TD>
</TR></TBODY></TABLE>
</div>
</FORM>
</body>
</html>
Windows關(guān)機(jī)效果分析
使用Windows系統(tǒng)的用戶在關(guān)機(jī)的時候,出現(xiàn)的界面只允許用戶選擇關(guān)機(jī)、注銷或取消動作,而桌面上的程序都不能使用,并且屏幕呈現(xiàn)灰色狀態(tài)。
本例將仿照這種高亮顯示的效果在網(wǎng)頁上實(shí)現(xiàn).
在網(wǎng)頁上運(yùn)用這種關(guān)機(jī)效果有什么好處呢?首先,由于單擊某一鏈接后,將用戶此時不可用的操作隱藏在后臺,將可用的操作放在屏幕最上層,并高亮顯示,可以避免用戶的誤操作。其次,將信息高亮顯示,也可以提醒用戶應(yīng)該注意的事項。
網(wǎng)頁中實(shí)現(xiàn)關(guān)機(jī)效果分析
在網(wǎng)頁中實(shí)現(xiàn)這種效果的原理很簡單。創(chuàng)建兩個圖層,一個為遮蓋層,覆蓋整個頁面,并且顯示為灰色;另一個圖層作為高亮顯示的部分,在遮蓋層的上方,這可通過設(shè)置圖層的z-index屬性來設(shè)置。當(dāng)取消關(guān)機(jī)效果后,只需將這兩個圖層元素在頁面中刪除即可。
以下代碼實(shí)現(xiàn)顯示關(guān)機(jī)效果。
以下是引用片段:
<html> |
在使用IE瀏覽器時,要先將網(wǎng)頁中的<select>元素隱藏起來。如以下代碼可以用于隱藏頁面所有的<select>元素。
selects = document.getElementsByTagName('select');
以下是引用片段:
for(i = 0; i < selects.length; i++) { |
以下是引用片段:
<html> |
以下是引用片段:
#lightbox { |
以下是引用片段:
snap_preview_added="no">操作系統(tǒng)。 |
//網(wǎng)頁加載調(diào)用initialize和getBrowserInfo方法 |
var lightbox = Class.create(); |
服務(wù)器端首先獲得查詢中的“id”值,如果該值為null或為空,則設(shè)置為默認(rèn)值。然后判斷該值,并且返回相應(yīng)的一段字符串信息。處理請求的getInfohtml" class="wordstyle">jsp頁面代碼如下:
以下是引用片段:
<%@ page language="java" import="java.util.*"%> |
/*
用途:校驗ip地址的格式
輸入:strIP:ip地址
返回:如果通過驗證返回true,否則返回false;
*/
function isIP(strIP) {
if (isNull(strIP)) return false;
var re=/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/g //匹配IP地址的正則表達(dá)式
if(re.test(strIP))
{
if( RegExp.$1 <256 && RegExp.$2<256 && RegExp.$3<256 && RegExp.$4<256) return true;
}
return false;
}
/*
用途:檢查輸入字符串是否為空或者全部都是空格
輸入:str
返回:
如果全是空返回true,否則返回false
*/
function isNull( str ){
if ( str == "" ) return true;
var regu = "^[ ]+$";
var re = new RegExp(regu);
return re.test(str);
}
/*
用途:檢查輸入對象的值是否符合整數(shù)格式
輸入:str 輸入的字符串
返回:如果通過驗證返回true,否則返回false
*/
function isInteger( str ){
var regu = /^[-]{0,1}[0-9]{1,}$/;
return regu.test(str);
}
/*
用途:檢查輸入手機(jī)號碼是否正確
輸入:
s:字符串
返回:
如果通過驗證返回true,否則返回false
*/
function checkMobile( s ){
var regu =/^[1][3][0-9]{9}$/;
var re = new RegExp(regu);
if (re.test(s)) {
return true;
}else{
return false;
}
}
/*
用途:檢查輸入字符串是否符合正整數(shù)格式
輸入:
s:字符串
返回:
如果通過驗證返回true,否則返回false
*/
function isNumber( s ){
var regu = "^[0-9]+$";
var re = new RegExp(regu);
if (s.search(re) != -1) {
return true;
} else {
return false;
}
}
/*
用途:檢查輸入字符串是否是帶小數(shù)的數(shù)字格式,可以是負(fù)數(shù)
輸入:
s:字符串
返回:
如果通過驗證返回true,否則返回false
*/
function isDecimal( str ){
if(isInteger(str)) return true;
var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/;
if (re.test(str)) {
if(RegExp.$1==0&&RegExp.$2==0) return false;
return true;
} else {
return false;
}
}
/*
用途:檢查輸入對象的值是否符合端口號格式
輸入:str 輸入的字符串
返回:如果通過驗證返回true,否則返回false
*/
function isPort( str ){
return (isNumber(str) && str<65536);
}
/*
用途:檢查輸入對象的值是否符合E-Mail格式
輸入:str 輸入的字符串
返回:如果通過驗證返回true,否則返回false
*/
function isEmail( str ){
var myReg = /^[-_A-Za-z0-9]+@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/;
if(myReg.test(str)) return true;
return false;
}
/*
用途:檢查輸入字符串是否符合金額格式
格式定義為帶小數(shù)的正數(shù),小數(shù)點(diǎn)后最多三位
輸入:
s:字符串
返回:
如果通過驗證返回true,否則返回false
*/
function isMoney( s ){
var regu = "^[0-9]+[\.][0-9]{0,3}$";
var re = new RegExp(regu);
if (re.test(s)) {
return true;
} else {
return false;
}
}
/*
用途:檢查輸入字符串是否只由英文字母和數(shù)字和下劃線組成
輸入:
s:字符串
返回:
如果通過驗證返回true,否則返回false
*/
function isNumberOr_Letter( s ){ //判斷是否是數(shù)字或字母
var regu = "^[0-9a-zA-Z\_]+$";
var re = new RegExp(regu);
if (re.test(s)) {
return true;
}else{
return false;
}
}
/*
用途:檢查輸入字符串是否只由英文字母和數(shù)字組成
輸入:
s:字符串
返回:
如果通過驗證返回true,否則返回false
*/
function isNumberOrLetter( s ){ //判斷是否是數(shù)字或字母
var regu = "^[0-9a-zA-Z]+$";
var re = new RegExp(regu);
if (re.test(s)) {
return true;
}else{
return false;
}
}
/*
用途:檢查輸入字符串是否只由漢字、字母、數(shù)字組成
輸入:
value:字符串
返回:
如果通過驗證返回true,否則返回false
*/
function isChinaOrNumbOrLett( s ){ //判斷是否是漢字、字母、數(shù)字組成
var regu = "^[0-9a-zA-Z\u4e00-\u9fa5]+$";
var re = new RegExp(regu);
if (re.test(s)) {
return true;
}else{
return false;
}
}
/*
用途:判斷是否是日期
輸入:date:日期;fmt:日期格式
返回:如果通過驗證返回true,否則返回false
*/
function isDate( date, fmt ) {
if (fmt==null) fmt="yyyyMMdd";
var yIndex = fmt.indexOf("yyyy");
if(yIndex==-1) return false;
var year = date.substring(yIndex,yIndex+4);
var mIndex = fmt.indexOf("MM");
if(mIndex==-1) return false;
var month = date.substring(mIndex,mIndex+2);
var dIndex = fmt.indexOf("dd");
if(dIndex==-1) return false;
var day = date.substring(dIndex,dIndex+2);
if(!isNumber(year)||year>"2100" || year< "1900") return false;
if(!isNumber(month)||month>"12" || month< "01") return false;
if(day>getMaxDay(year,month) || day< "01") return false;
return true;
}
function getMaxDay(year,month) {
if(month==4||month==6||month==9||month==11)
return "30";
if(month==2)
if(year%4==0&&year%100!=0 || year%400==0)
return "29";
else
return "28";
return "31";
}
/*
用途:字符1是否以字符串2結(jié)束
輸入:str1:字符串;str2:被包含的字符串
返回:如果通過驗證返回true,否則返回false
*/
function isLastMatch(str1,str2)
{
var index = str1.lastIndexOf(str2);
if(str1.length==index+str2.length) return true;
return false;
}
/*
用途:字符1是否以字符串2開始
輸入:str1:字符串;str2:被包含的字符串
返回:如果通過驗證返回true,否則返回false
*/
function isFirstMatch(str1,str2)
{
var index = str1.indexOf(str2);
if(index==0) return true;
return false;
}
/*
用途:字符1是包含字符串2
輸入:str1:字符串;str2:被包含的字符串
返回:如果通過驗證返回true,否則返回false
*/
function isMatch(str1,str2)
{
var index = str1.indexOf(str2);
if(index==-1) return false;
return true;
}
/*
用途:檢查輸入的起止日期是否正確,規(guī)則為兩個日期的格式正確,
且結(jié)束如期>=起始日期
輸入:
startDate:起始日期,字符串
endDate:結(jié)束如期,字符串
返回:
如果通過驗證返回true,否則返回false
*/
function checkTwoDate( startDate,endDate ) {
if( !isDate(startDate) ) {
alert("起始日期不正確!");
return false;
} else if( !isDate(endDate) ) {
alert("終止日期不正確!");
return false;
} else if( startDate > endDate ) {
alert("起始日期不能大于終止日期!");
return false;
}
return true;
}
/*
用途:檢查輸入的Email信箱格式是否正確
輸入:
strEmail:字符串
返回:
如果通過驗證返回true,否則返回false
*/
function checkEmail(strEmail) {
//var emailReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/;
var emailReg = /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/;
if( emailReg.test(strEmail) ){
return true;
}else{
alert("您輸入的Email地址格式不正確!");
return false;
}
}
/*
用途:檢查輸入的電話號碼格式是否正確
輸入:
strPhone:字符串
返回:
如果通過驗證返回true,否則返回false
*/
function checkPhone( strPhone ) {
var phoneRegWithArea = /^[0][1-9]{2,3}-[0-9]{5,10}$/;
var phoneRegNoArea = /^[1-9]{1}[0-9]{5,8}$/;
var prompt = "您輸入的電話號碼不正確!"
if( strPhone.length > 9 ) {
if( phoneRegWithArea.test(strPhone) ){
return true;
}else{
alert( prompt );
return false;
}
}else{
if( phoneRegNoArea.test( strPhone ) ){
return true;
}else{
alert( prompt );
return false;
}
}
}
/*
用途:檢查復(fù)選框被選中的數(shù)目
輸入:
checkboxID:字符串
返回:
返回該復(fù)選框中被選中的數(shù)目
*/
function checkSelect( checkboxID ) {
var check = 0;
var i=0;
if( document.all(checkboxID).length > 0 ) {
for( i=0; i<document.all(checkboxID).length; i++ ) {
if( document.all(checkboxID).item( i ).checked ) {
check += 1;
}
}
}else{
if( document.all(checkboxID).checked )
check = 1;
}
return check;
}
function getTotalBytes(varField) {
if(varField == null)
return -1;
var totalCount = 0;
for (i = 0; i< varField.value.length; i++) {
if (varField.value.charCodeAt(i) > 127)
totalCount += 2;
else
totalCount++ ;
}
return totalCount;
}
function getFirstSelectedValue( checkboxID ){
var value = null;
var i=0;
if( document.all(checkboxID).length > 0 ){
for( i=0; i<document.all(checkboxID).length; i++ ){
if( document.all(checkboxID).item( i ).checked ){
value = document.all(checkboxID).item(i).value;
break;
}
}
} else {
if( document.all(checkboxID).checked )
value = document.all(checkboxID).value;
}
return value;
}
function getFirstSelectedIndex( checkboxID ){
var value = -2;
var i=0;
if( document.all(checkboxID).length > 0 ){
for( i=0; i<document.all(checkboxID).length; i++ ) {
if( document.all(checkboxID).item( i ).checked ) {
value = i;
break;
}
}
} else {
if( document.all(checkboxID).checked )
value = -1;
}
return value;
}
function selectAll( checkboxID,status ) {
if( document.all(checkboxID) == null)
return;
if( document.all(checkboxID).length > 0 ){
for( i=0; i<document.all(checkboxID).length; i++ ) {
document.all(checkboxID).item( i ).checked = status;
}
} else {
document.all(checkboxID).checked = status;
}
}
function selectInverse( checkboxID ) {
if( document.all(checkboxID) == null)
return;
if( document.all(checkboxID).length > 0 ) {
for( i=0; i<document.all(checkboxID).length; i++ ) {
document.all(checkboxID).item( i ).checked = !document.all(checkboxID).item( i ).checked;
}
} else {
document.all(checkboxID).checked = !document.all(checkboxID).checked;
}
}
function checkDate( value ) {
if(value=='') return true;
if(value.length!=8 || !isNumber(value)) return false;
var year = value.substring(0,4);
if(year>"2100" || year< "1900") return false;
var month = value.substring(4,6);
if(month>"12" || month< "01") return false;
var day = value.substring(6,8);
if(day>getMaxDay(year,month) || day< "01") return false;
return true;
}
/*
用途:檢查輸入的起止日期是否正確,規(guī)則為兩個日期的格式正確或都為空
且結(jié)束日期>=起始日期
輸入:
startDate:起始日期,字符串
endDate: 結(jié)束日期,字符串
返回:
如果通過驗證返回true,否則返回false
*/
function checkPeriod( startDate,endDate ) {
if( !checkDate(startDate) ) {
alert("起始日期不正確!");
return false;
} else if( !checkDate(endDate) ) {
alert("終止日期不正確!");
return false;
} else if( startDate > endDate ) {
alert("起始日期不能大于終止日期!");
return false;
}
return true;
}
/*
用途:檢查證券代碼是否正確
輸入:
secCode:證券代碼
返回:
如果通過驗證返回true,否則返回false
*/
function checkSecCode( secCode ) {
if( secCode.length !=6 ){
alert("證券代碼長度應(yīng)該為6位");
return false;
}
if(!isNumber( secCode ) ){
alert("證券代碼只能包含數(shù)字");
return false;
}
return true;
}
/****************************************************
function : cTrim(sInputString,iType)
description : 字符串去空格的函數(shù)
parameters : iType: 1=去掉字符串左邊的空格
2=去掉字符串左邊的空格
0=去掉字符串左邊和右邊的空格
return value: 去掉空格的字符串
****************************************************/
function cTrim(sInputString,iType)
{
var sTmpStr = ' ';
var i = -1;
if(iType == 0 || iType == 1)
{
while(sTmpStr == ' ')
{
++i;
sTmpStr = sInputString.substr(i,1);
}
sInputString = sInputString.substring(i);
}
if(iType == 0 || iType == 2)
{
sTmpStr = ' ';
i = sInputString.length;
while(sTmpStr == ' ')
{
--i;
sTmpStr = sInputString.substr(i,1);
}
sInputString = sInputString.substring(0,i+1);
}
return sInputString;
}
/*
-------------------------------------------------------------------------------
說 明:JavaScript腳本,驗證表單中的數(shù)據(jù)項 begin
-------------------------------------------------------------------------------
*/
function checkForm(objFrm){
var len = 0;
len = objFrm.elements.length;
var i = 0;
var objCheck;
//文本框
for(i = 0; i < len; i ++){
objCheck = objFrm.elements[i];
if(objCheck.type =="text" && !f_checkTextValid(objCheck) ){
return false;
}
}
//下拉框
for(i = 0; i < len; i ++){
objCheck = objFrm.elements[i];
if(objCheck.type =="select-one" && !f_checkSelectValid(objCheck) ){
return false;
}
}
//時間段有效
if( f_checkStartAndEndDate(objFrm) == false) return false;
return true;
}
function f_checkSelectValid(obj){
//alert("check select");
if(obj.options.length <= 0){
alert("下拉選框無數(shù)據(jù)!");
return false;
}
return true;
}
function f_checkStartAndEndDate(frm){
var len = frm.elements.length;
if(len == null && len == 0) return true;
var i=0;
var temp;
var objCheck;
var objStartDate;
var objEndDate;
//alert("start date period check");
try{
for(i=0; i< len ; i++){
objCheck = frm.elements[i];
temp = objCheck.name;
if( temp.indexOf("startDate") >0 ||temp.indexOf("beginDate")>0 )
objStartDate = objCheck;
if( temp.indexOf("endDate") > 0 )
objEndDate = objCheck;
}
//alert(objStartDate.value);
//alert(objEndDate.value);
if(objStartDate.value==null || objStartDate.value =="" || objStartDate.value ==null || objStartDate.value ==""){
return true;
}
return checkTwoDate(objStartDate.value, objEndDate.value);
//alert("end date period check");
}catch(E){}
return true;
}
function f_checkTextValid(obj){
//不能為空
if(obj.getAttribute("isNeed") != null){
if(f_isNotNull(obj) == false) return false;
}
//不能超過長度
if(obj.getAttribute("maxlength") != null){
if(f_checkLength(obj) == false) return false;
}
var checkType ="";
checkType = obj.getAttribute("checkType");
if(checkType==null||checkType=="") return true;
//
if (checkType.indexOf("number") >=0){
if(f_isNumber(obj) == false) return false;
if(f_checkNumType(obj,checkType) == false) return false;
}
//
if (checkType.indexOf("positive") >=0){
if(f_isNumber(obj) == false) return false;
if(f_isPositive(obj)==false) return false;
if(f_checkNumType(obj,checkType) == false) return false;
}
if (checkType.indexOf("date") >=0){
if(f_checkDate(obj) == false) return false;
}
/*
switch(checkType){
case "number": if(f_isNumber(obj) == false) return false;break;
case "date": if(f_checkDate(obj) == false) return false;break;
default:
}
*/
return true;
}
function f_isNotNull(obj){
if(obj.value == ""){
f_alert(obj, " 不允許為空值!");
return false;
}
return true;
}
function f_isNumber(obj){
if(isNaN(obj.value)){
f_alert(obj," 應(yīng)為數(shù)值類型");
return false;
}
return true;
}
function f_checkDate(obj) {
if(checkDate(obj.value) ==false){
f_alert(obj," 不是合法日期格式!");
return false;
}
return true;
}
function f_checkLength(obj){
if(getTotalBytes(obj) > Math.abs( obj.getAttribute("maxlength") ) ){
f_alert(obj," 超出長度限制!");
return false;
}
return true;
}
function f_alert(obj,alertStr){
var fielName = obj.getAttribute("fieldName");
if(fielName == null)
fielName = "";
alert(fielName + "\n" +alertStr);
obj.select();
obj.focus();
}
function f_checkNumType(obj, numType){
//假設(shè): 已經(jīng)進(jìn)行數(shù)字類型判斷
var strTemp;
var numpric;
var numLen;
var strArr;
var defaultLen = 19;
var defaultpric = 5;
try{
if(numType == null|| numType =="") return f_checkNumLenPrec(obj,defaultLen, defaultpric);
if(numType.indexOf("(") < 0 || numType.indexOf(")") < 0 ) return f_checkNumLenPrec(obj,defaultLen, defaultpric);
strTemp = numType.substr( numType.indexOf("(") + 1 ,numType.indexOf(")") - numType.indexOf("(") -1 );
if(strTemp == null||strTemp =="") return f_checkNumLenPrec(obj,defaultLen, defaultpric);
strArr = strTemp.split(",");
numLen = Math.abs( strArr[0] );
numpric = Math.abs( strArr[1] );
return f_checkNumLenPrec(obj,numLen, numpric);
}catch(e){
alert("in f_checkNumType = " + e);
return f_checkNumLenPrec(obj,defaultLen, defaultpric);
}
}
function f_checkNumLenPrec(obj, len, pric){
var numReg;
var value = obj.value;
var strValueTemp, strInt, strDec;
//alert(value + "=====" + len + "====="+ pric);
try{
numReg =/[\-]/;
strValueTemp = value.replace(numReg, "");
strValueTemp = strValueTemp.replace(numReg, "");
//整數(shù)
if(pric==0){
numReg =/[\.]/;
//alert(numReg.test(value));
if(numReg.test(value) == true){
f_alert(obj, "輸入必須為整數(shù)類型!");
return false;
}
}
if(strValueTemp.indexOf(".") < 0 ){
//alert("lennth==" + strValueTemp);
if(strValueTemp.length >( len - pric)){
f_alert(obj, "整數(shù)位不能超過"+ (len - pric) +"位");
return false;
}
}else{
strInt = strValueTemp.substr( 0, strValueTemp.indexOf(".") );
//alert("lennth==" + strInt);
if(strInt.length >( len - pric)){
f_alert(obj, "整數(shù)位不能超過"+ (len - pric) +"位");
return false;
}
strDec = strValueTemp.substr( (strValueTemp.indexOf(".")+1), strValueTemp.length );
//alert("pric==" + strDec);
if(strDec.length > pric){
f_alert(obj, "小數(shù)位不能超過"+ pric +"位");
return false;
}
}
return true;
}catch(e){
alert("in f_checkNumLenPrec = " + e);
return false;
}
}
function f_isPositive(obj){
var numReg =/[\-]/;
if(numReg.test(obj.value) == true){
f_alert(obj, "必須為正數(shù)!");
return false;
}
return true;
}
/*
function selectedCheckboxCount(form)
功能說明:對Form中選中的可選項計數(shù)
參數(shù)說明:
form:指定的表單
*/
function selectedCheckboxCount(form){
var length =0;
var i=0;
var count =0;
eles = form.elements;
while(i<eles.length){
obj= eles.item(i);
// type = obj.attributes.item("type").nodeValue;
type = obj.type;
if(type == "checkbox"){
if(obj.checked){
count++;
}
}
i++;
}
return count;
}
//得到字節(jié)長度
function getByteLen(str)
{
var l = str.length;
var n = l;
for ( var i=0; i<l; i++ )
if ( str.charCodeAt(i) <0 || str.charCodeAt(i) >255 )
n=n+1;
return n
}
/*
說明:
1.清除表格中的數(shù)據(jù)(0.0 和 0)
2.如果cell中沒有數(shù)據(jù),則自動加上一個空格
3.清除空白行的checkbox
參數(shù):
clearzero:是否清除"0"、"0.0",false不清除、true清除(默認(rèn)為true)
tablename:要清除的表格名字,默認(rèn)為sortTable
*/
function clear_table(clearzero,tablename)
{
var tobject;
if(tablename==null)
tobject=gmobj("sortTable");
else
tobject=gmobj(tablename);
//如果table未定義,則不進(jìn)行過濾
if(tobject==null)
return;
//如果函數(shù)調(diào)用參數(shù)為空,表示要清除0、0.0;反之,不要清除0、0.0。
var clear = (clearzero==null)?true:clearzero;
//清除0、0.0,填補(bǔ)空格
var rows = tobject.rows;
var j=0;
for(var i=0;i<rows.length;i++)
{
//取得第一個cell的屬性clear,如果為1,表示該行沒有數(shù)據(jù),則清除該行所有數(shù)據(jù)
while(tobject.rows[i].cells[j] != null)
{
if(clear)
{
if(tobject.rows[i].cells[j].innerHTML==0 ||tobject.rows[i].cells[j].innerHTML==0.0||tobject.rows[i].cells[j].innerHTML=="")
tobject.rows[i].cells[j].innerText=" ";
}
else
{
if (tobject.rows[i].cells[j].innerHTML=="")
tobject.rows[i].cells[j].innerText=" ";
}
j++;
}
j=0;
}
return true;
}
function gmobj(mtxt) /* Get object by object name */
{
if (document.getElementById) {
m=document.getElementById(mtxt);
} else if (document.all) {
m=document.all[mtxt];
} else if (document.layers) {
m=document.layers[mtxt];
}
return m;
}
/*
-------------------------------------------------------------------------------
說 明:JavaScript腳本,驗證表單中的數(shù)據(jù)項 end
-------------------------------------------------------------------------------
*/
/*
用途:檢查輸入字符串是否是帶小數(shù)的數(shù)字格式,可以是負(fù)數(shù)(并且滿足規(guī)定的精度)
輸入:str:字符串
l:總位數(shù)
d:小數(shù)點(diǎn)后位數(shù)
返回:
如果通過驗證返回true,否則返回false
*/
function isDecimal( str,l,d ){
if(isInteger(str)) {
if (l==null) return true;
if (str<0) l--;
if (str.length<=l) return true;
}
var re = /^[-]{0,1}(\d+)[\.]+(\d+)$/;
if (re.test(str)) {
if (l==null) return true;
if (d==null) d=0;
if(RegExp.$1==0&&RegExp.$2==0) return false;
if (RegExp.$1.length+RegExp.$2.length<=l
&& RegExp.$2.length<=d) return true;
}
return false;
}
<div id="Javascript.Div2" class="div" style="width: 240px; height:90px;" align="center">左上...</div>
<SCRIPT LANGUAGE="JavaScript">
function sc2(){
document.getElementById("Javascript.Div2").style.top=document.documentElement.scrollTop
document.getElementById("Javascript.Div2").style.left=document.documentElement.scrollLeft;
}
</SCRIPT>
<div id="Javascript.Div3" class="div" style="width: 240px; height:90px;" align="center">左下...</div>
<SCRIPT LANGUAGE="JavaScript">
function sc3(){
document.getElementById("Javascript.Div3").style.top=
document.documentElement.scrollTop+document.documentElement.clientHeight-document.getElementById("Javascript.Div3").offsetHeight;
document.getElementById("Javascript.Div3").style.left=document.documentElement.scrollLeft;
}
</SCRIPT>
<div id="Javascript.Div4" class="div" style="width: 240px; height:90px;" align="center">右上...</div>
<SCRIPT LANGUAGE="JavaScript">
function sc4(){
document.getElementById("Javascript.Div4").style.top=document.documentElement.scrollTop;
document.getElementById("Javascript.Div4").style.left=
document.documentElement.scrollLeft+document.documentElement.clientWidth-document.getElementById("Javascript.Div4").offsetWidth;
}
</SCRIPT>
<div id="Javascript.Div5" class="div" style="width: 240px; height:90px;" align="center">右下...</div>
<SCRIPT LANGUAGE="JavaScript">
function sc5(){
document.getElementById("Javascript.Div5").style.top=
document.documentElement.scrollTop+document.documentElement.clientHeight-document.getElementById("Javascript.Div5").offsetHeight;
document.getElementById("Javascript.Div5").style.left=
document.documentElement.scrollLeft+document.documentElement.clientWidth-document.getElementById("Javascript.Div5").offsetWidth;;
}
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
<!--
function scall(){
sc1();sc2();sc3();sc4();sc5();
}
window.onscroll=scall;
window.onresize=scall;
window.onload=scall;
//-->
</SCRIPT>
<div style="position: absolute; top: 0; left: 0; width: 10000px; height: 4000px;"></div>
</BODY>
</HTML>