📄 time.js
字号:
/**
* Systemname: Teems
* Filename: $path/$name
* Function: $function
* Encoding: $_lang['encoding']
* Author: xiulin.liu www.weaver.com.cn
* Date: 2007-3-5
* Version: 1.x
* Teems Version: 1.x
*/
/*
extend function for string
*/
String.prototype.toHm = function(x,p) {
if(x == null) x = ":";
if(p == null) p = "hi";
var a = this.split(x);
var h = parseInt(a[p.indexOf("h")],10); //10 十进制
var i = parseInt(a[p.indexOf("i")],10);
var hm = new Array();
hm[0] = h;
hm[1] = i;
return hm;
}
/*
class CallTime ,selected hours & minutes
*/
function CallTime(beginHM,endHM,showWord,lang,objBdate,objEdate){
this.beginHM = "00:00";
this.endHM ="24:00";
this.lang = 0; //0(中文) | 1(英文)
this.showWord = 0;
var today = new Date();
var toDayYear = today.getFullYear();
var toDayMonth = today.getMonth()+1;
toDayMonth = (toDayMonth)>10?toDayMonth:'0'+toDayMonth;
var toDayDa = today.getDate()>10?today.getDate():'0'+today.getDate();
todayDate = toDayYear+'-'+toDayMonth+'-'+toDayDa;
this.objBdate = todayDate;
this.objEdate = todayDate;
if (beginHM != null && trim(beginHM) != ""){ //注意 trim在common.js定义
this.beginHM = beginHM;
}
if (endHM != null){
this.endHM = endHM;
}
if (showWord != null){
this.showWord = showWord
}
if (objBdate != null && trim(objBdate) != ""){
this.objBdate = objBdate;
}
if (objEdate != null && trim(objEdate) != ""){
this.objEdate = objEdate;
}
if (lang != null){
this.lang = lang
}
if (this.showWord == 1){
var intDays = betterDate(this.objEdate,this.objBdate);
if (intDays<0){
this.showWord = 0;
this.beginHM = '00:00';;
}
}
this.panel = document.getElementById("timePanel");
this.date = new Date();
this.hour = this.date.getHours();
this.minute = this.date.getMinutes();
this.draw();
this.bindHour();
}
CallTime.warpxy = {
"x" : [10],
"y" : [2]
}
CallTime.language = {
"day" : [["天"], ["days"]],
"hour" : [["小时"], ["hours"]],
"minute" : [["分"], ["minutes"]]
}
/*
x y absolute position
*/
CallTime.prototype.getAbsPoint = function (e){
var x = e.offsetLeft;
var y = e.offsetTop;
while(e = e.offsetParent){
x += e.offsetLeft;
y += e.offsetTop;
}
return {"x": x, "y": y};
}
/*
print panel
*/
CallTime.prototype.show = function(timeControl){
if (timeControl == null){
throw new Error("arguments[0] is necessary")
}
this.timeControl = timeControl;
if (timeControl.value.length > 0){
var hm = timeControl.value.toHm();
this.hour = hm[0];
this.minute = hm[1];
//this.changeSelect();
}
var nowdate = new Date();
nowh = nowdate.getHours();
nowm = nowdate.getMinutes();
if (trim(this.timeControl.value) == ''){
//default value
if (this.showWord!=1){
nowm_s = nowm <=30?'00':'30';
nowh_s = (nowh.toString().length==1)?'0'+nowh:nowh;
this.timeControl.value = nowh_s+':'+nowm_s;
}
else{
bhm = this.beginHM.toHm();
bhour = bhm[0];
bminute = bhm[1];
if (bminute>=30){
nowm_s = '00';
nowh_s = bhour+1;
}
else{
nowm_s = '30';
nowh_s = bhour;
}
nowh_s = nowh_s.toString().length==1?'0'+nowh_s:nowh_s;
this.timeControl.value = nowh_s+':'+nowm_s;
}
}
var xy = this.getAbsPoint(timeControl);
this.panel.style.left = (xy.x - 4)+ "px";//why 4 warpx
this.panel.style.top = (xy.y + timeControl.offsetHeight + 2) + "px"; //why 2 warpy
if (this.panel.style.visibility == "hidden"){
this.panel.style.visibility = "visible";
}
else{
this.panel.style.visibility = "hidden";
}
this.changeSelect();
}
CallTime.prototype.getvalue = function() {
calltime = this;
this.timeControl.value = this.form.hourminute.value;
calltime.hide();
}
CallTime.prototype.hide = function() {
this.panel.style.visibility = "hidden";
}
/*
draw this hour & minute select option
*/
CallTime.prototype.draw = function() {
calltime = this;
var bhm,ehm;
var mvAry = [];
mvAry[mvAry.length] = ' <form name="calltimeform" style="margin: 0px;">';
mvAry[mvAry.length] = ' <table width="100%" border="0" cellpadding="2px" cellspacing="0" bgcolor="#77B5F9">';
mvAry[mvAry.length] = ' <tr align="left" style="background:url(/images/calendar/bg.jpg);"><th><select name="hourminute" id="hourminute" style="width:160px">';
mvAry[mvAry.length] = ' </select></th><th><img src="/images/calendar/close_cad.gif" onclick="calltime.hide();" border="0" alt="close" style="cursor:hand;"></th></tr>';
mvAry[mvAry.length] = ' </table>';
mvAry[mvAry.length] = ' </form>';
this.panel.innerHTML = mvAry.join("");
this.form = document.forms["calltimeform"];
this.form.hourminute.onchange = function () {calltime.getvalue();}
this.form.hourminute.onselect = function () {calltime.getvalue();}
}
/*
bind the select hourminute
*/
CallTime.prototype.bindHour = function() {
var intDays = betterDate(this.objEdate,this.objBdate);
var objform = this.form.hourminute;
objform.length = 0;
bhm = this.beginHM.toHm();
bhour = bhm[0];
bminute = bhm[1];
ehm = this.endHM.toHm();
ehour = ehm[0];
eminute = ehm[1];
var nowdate = new Date();
nowh = nowdate.getHours();
nowm = nowdate.getMinutes();
var btmphour = bhour;
var btmpminute = bminute;
var etmphour = ehour;
if (intDays > 0){
btmphour = 0;
btmpminute = 0;
}
var h,len,wstr,s1,s2,diffdhi;
for (var i=btmphour;i<=etmphour ;i++ ){
h = i<10? '0' + i:i;
wstr = "";
s1 = 1;
s2 = 1;
if (this.showWord == 1){
diffdhi = this.diffTime(intDays,i,0);
str_d = diffdhi.d;
str_i = diffdhi.h;
str_m = diffdhi.i;
str_d_d = str_d != 0?str_d + CallTime.language["day"][this.lang]:'';
str_i_h = str_i != 0?str_i + CallTime.language["hour"][this.lang]:'';
str_m_i = str_m != 0?str_m + CallTime.language["minute"][this.lang]:'';
wstr = ' ('+ str_d_d + str_i_h + str_m_i +')';
}
if (i==btmphour && this.showWord == 1 && intDays <= 0){
s1 = 0;
s2 = bminute >= 30?0:1;
}
s2 = i == 24?0:s2;// 不显示24:30
if(this.showWord != 1 && i == 24){
s1=0;
s2=0;
}
if (s1==1){
objform.options[objform.length] = new Option(h + ':00' + wstr , h + ':00');
}
if (this.showWord == 1){
diffdhi = this.diffTime(intDays,i,30);
str_d = diffdhi.d;
str_i = diffdhi.h;
str_m = diffdhi.i;
str_d_d = str_d != 0?str_d + CallTime.language["day"][this.lang]:'';
str_i_h = str_i != 0?str_i + CallTime.language["hour"][this.lang]:'';
str_m_i = str_m != 0?str_m + CallTime.language["minute"][this.lang]:'';
wstr = ' ('+ str_d_d + str_i_h + str_m_i +')';
}
if (s2==1){
objform.options[objform.length] = new Option(h + ':30' + wstr, h + ':30');
}
if (nowh == h && this.showWord != 1){
len = (i-btmphour)*2;
//alert(len);
objform[len].selected = true;
}
}
}
/*
*/
CallTime.prototype.diffTime = function(d,h,i) {
bhm = this.beginHM.toHm();
bhour = bhm[0];
bminute = bhm[1];
if (i<bminute){
h--;
var di = 60+i-bminute;
}
else{
var di = i-bminute;
}
if (h<bhour){
d--;
var dh = 24+h-bhour;
}
else{
var dh = h-bhour;
}
if (d>0 && dh == 24){
d++;
dh =0;
}
return {"d":d,"h":dh,"i":di};
}
/*
*/
CallTime.prototype.changeSelect = function() {
var objhm = this.form.hourminute;
for (var i= 0; i < objhm.length; i++){
thm = this.timeControl.value.toHm();
thour = thm[0];
tminute = thm[1];
ohm = objhm.options[i].value.toHm();
ohour = ohm[0];
ominute = ohm[1];
var rev = (parseInt(ohour,10)-parseInt(thour,10))*60+(parseInt(ominute,10)-parseInt(tminute,10));
if (rev>=0 && rev<30){
objhm[i].selected = true;
break;
}
}
}
document.write('<div id="timePanel" style="position: absolute ;visibility: hidden;z-index: 9999;background-color: #FFFFFF;border: 2px solid #99CCFF;width:98%;padding:2px;margin-left:5px;width:200px;"></div>');
//var calltime = new CallTime();
//calltime.show(objHm);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -