⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jscalendar.js

📁 达内CRM培训项目java源码:主要系统功能 1 用户登录 2 客户管理:查询客户、增加客户、修改客户; 3 订单管理:查询订单、生成订单、修改订单、订单确认; 4 产品管理:查询产品
💻 JS
📖 第 1 页 / 共 2 页
字号:
<!--
<!--
/**
 *
 * JSCalendar
 *
 * Author           :H.Z. Shang (Jack)
 * Email            :shhongzhang@cntomorrow.com
 * Site             :http://www.cntomorrow.com:3310
 * Version          :1.0.1
 * Finished Date    :2003-3-2
 * Beijing Huasun Mingtian Tech. Co., Ltd.
 * No CopyRight,Can be modified by you if you want improve it's function!!!!
 * LET'S MAKE IT BETTER TOGETHER!
 * HISTORY:
 *  1. [2003-3-4 by Jack] 采用IFRAME修正了会被页面SELECT对象挡住的BUG!
 *  2. [2003-3-4 by Jack] 增加了清空控件值的功能
 *  3. [2003-3-5 by Jack] 修正了当用户翻年、翻月时原输入框值被覆盖的情况
 *  4. [2003-3-5 by Jack] 通过使用DXImageTransform.Microsoft.Shadow来实现IFRAME的阴影效果
 *                        该滤镜只能在IE5.5下使用可加快程序运行速度,在IE5.0中还是使用原来的产生阴影的方法
 *  5. [2003-3-6 by Jack] 增加了另外一种生成该控件的方法:<script>createDateBox("Name", "2003-3-6")</script>
 *                        其中第二个参数为可选参数
 *  6. [2003-8-20 by GM ] 年使用 Select 方式选择,年范围(100年):当前年前60年,后40年
 *                        月使用 Select 方式选择
 */
var _lstFocus=null;  
var _cldTabIFrame = null;
var _cldTabIFrame2 = null;

var _cldTabFrm = null;
var _cldMonthMenuFrm = null;
var _curCldTabRltvObj = null;
var _bCanHide = true;
var _bHaveUpdated = false;
var _bHaveShown = false;

var _bHaveSelectNewValue = false;

var _dCurYear = null;
var _dCurMonth = null;
var _dCurDate = null;

var _curCldTabRltvObjValue = "";

/**
  * 在该日历控件中,我采用了给空间周围加上阴影层来增强控件的视觉感。
  * _nShadowLength 变量设定了阴影层的长度,默认值为 4;
  * 使用阴影层将相应的滞缓程序的运行速度,如果你想得到较快的运行速度,请将该值设为 0
  */
var _nShadowLength = 0;

/**
  * _sNeededFilePath 变量设定了JSCalendar控件所需的所有文件的位置
  * 当你将你的应用部署到应用服务器上后,你需要给改变量设定相应的值。
  * 例如:
  *		_sNeededFilePath = "/MyWebAPP/comm/js/JSCalendar/";
  *
  * 该变量的值必须正确设置,否则程序在运行中可能出现错误! 
  */


var _sBrowserVersion = navigator.appVersion.substring(navigator.appVersion.indexOf("MSIE") + 5,navigator.appVersion.indexOf("Windows") - 2);
var _bBrowserVer55	= _sBrowserVersion >= 5.5 ? true : false;



var _monthDays = new Array(12);
    _monthDays[ 0] = 31;
    _monthDays[ 1] = 28;
    _monthDays[ 2] = 31;
    _monthDays[ 3] = 30;
    _monthDays[ 4] = 31;
    _monthDays[ 5] = 30;
    _monthDays[ 6] = 31;
    _monthDays[ 7] = 31;
    _monthDays[ 8] = 30;
    _monthDays[ 9] = 31;
    _monthDays[10] = 30;
    _monthDays[11] = 31;

var _weeks = new Array(7);    
	_weeks[0] = "日";
	_weeks[1] = "一";
	_weeks[2] = "二";
	_weeks[3] = "三";
	_weeks[4] = "四"; 
	_weeks[5] = "五";
	_weeks[6] = "六";
var _months = new Array(12);
	_months[ 0] = "1";
	_months[ 1] = "2";
	_months[ 2] = "3";
	_months[ 3] = "4";
	_months[ 4] = "5";
	_months[ 5] = "6";
	_months[ 6] = "7";
	_months[ 7] = "8";
	_months[ 8] = "9";
	_months[ 9] = "10";
	_months[10] = "11";
	_months[11] = "12";
	
var _dftD = new Date(); 
var _dateObjName = "";
document.write("<IFRAME id=frm name=frm style='display:none'></IFRAME>");

function JSCalendar(rltvO,path, year, month, date){
	var _sNeededFilePath = path + "framework/images/";
	_dateObjName = rltvO.name;
	if(_bHaveUpdated && rltvO == _curCldTabRltvObj) return;
	if(rltvO.tagName != "INPUT"){("JSCalendar 1.0 alerts you:\n\n INPUT element(object) must be required!");return};
	
	hideCldTabFrm();
	
	rltvO.readOnly = true;
	rltvO.style.cursor = "default";
	rltvO.style.textAlign = "center";
	_curCldTabRltvObjValue = rltvO.value;
	//alert(_curCldTabRltvObjValue);
	_bHaveSelectNewValue = false;
	//------------------------------------------------------------------------------
	this.createCldTabFrm = createCldTabFrm;	
	this.fillCldTabFrm = fillCldTabFrm;
	this.placeCldTabFrm = placeCldTabFrm;
	//------------------------------------------------------------------------------
	
	this._rltvO = (rltvO == null ? document.body : rltvO);
	var _oldDate = rltvO.value;
	var _oldDateType = "From Input!";
	try{
		if(_oldDate == "") throw "";
		var d = _oldDate.split("-");
		var _tmpDate = getValidateDate(_oldDate);
		this._year  = _tmpDate.getFullYear();
		this._month = _tmpDate.getMonth();
		this._date  = _tmpDate.getDate();
	}catch(e){
		_debug("Error was be catched:" + e.description);
		_oldDateType = "From default or current date!";
		this._year = ((year == null || year=="") ? _dftD.getFullYear() : year);
		this._month = (month == null ? _dftD.getMonth() : month - 1);;
		this._date = (date == null ? _dftD.getDate() : date);
	}
	//alert(this._year + "-" + (this._month + 1) + "-" + this._date );
	_dCurYear = this._year;
	_dCurMonth = this._month;
	_dCurDate = this._date;

	if(_cldTabIFrame == null)
		this.createCldTabFrm(_sNeededFilePath);
	//alert(_cldTabIFrame2)
	_cldTabIFrame2.style.display = "inline";
	
	_debug(_oldDateType + "[]" + this._year + "-" + (this._month + 1) + "-" + this._date);
	this.fillCldTabFrm(this._year, this._month, this._date);
	if(!_bHaveShown || rltvO != _curCldTabRltvObj) this.placeCldTabFrm();
	
	//_cldTabIFrame2.style.display = "inline";
	
	if(!_bBrowserVer55){
		removeShadowDiv();
		MakeDivShadowEffect(_cldTabFrm, '#aaaaaa', _nShadowLength);
	}	
	_curCldTabRltvObj = this._rltvO;
	
	_bHaveUpdated = true;
	_bHaveShown = true;
}
function createCldTabFrm(_sNeededFilePath){
	/**
  * 定义所需图片
  * 
  */
var _imgReset1 = new Image();
	_imgReset1.src = _sNeededFilePath + "reset1.gif";
var _imgReset2 = new Image();
	_imgReset2.src = _sNeededFilePath + "reset2.gif";
var _imgBtnYear = new Image();
	_imgBtnYear.src = _sNeededFilePath + "btnYears.gif";
var _imgBgToday1 = new Image();
	_imgBgToday1.src = _sNeededFilePath + "bgToday1.gif";
	var _sz = "<HTML>"
			+ "<HEAD><link href='" +_sNeededFilePath + "JSCalendar.css' rel=stylesheet type='text/css'></HEAD>"
			+ "<BODY onselectstart='return false;' leftmargin=0 topmargin=0 rightmargin=0 bottommargin=0 style='cursor:default;background-color:transparent;border:0px solid black;scroll:no'>"
			+ "</BODY></HTML>";
	_cldTabIFrame = frm;//document.all("frm");//document.createElement("IFRAME");
	_cldTabIFrame2 = document.all("frm");
	_cldTabIFrame2.style.position = "absolute";
    
	if(_bBrowserVer55){
		_cldTabIFrame2.style.filter = "progid:DXImageTransform.Microsoft.Shadow(direction=0,color=#aaaaaa,strength=" + _nShadowLength + ")";
	}
	_cldTabIFrame.document.open("text/html","replace");
	_cldTabIFrame.document.write(_sz);
	_cldTabIFrame.document.close();
	_cldTabFrm = _cldTabIFrame.document.createElement("TABLE");
	_cldTabFrm.id = "JACKSHANGJIELOVEFEIFEI"
	_cldTabFrm.style.position = "absolute";
	_cldTabFrm.className = "calendar";
	_cldTabFrm.border = 0;
	//_cldTabFrm.height = 165;
	_cldTabFrm.style.pixelWidth = 200;
	
	_cldTabFrm.cellSpacing = 1;
	_cldTabFrm.cellPadding = 1;
	_cldTabFrm.bgColor = "ffffff";
	_cldTabFrm.attachEvent("onmouseover", whenMouseOverCldTabFrm);
	_cldTabFrm.attachEvent("onmouseout", whenMouseOutCldTabFrm);
	// Create Calendar Control header
	var _TR = _cldTabFrm.insertRow();
	var _TD = _TR.insertCell();
	_TD.colSpan = 7;
	_TD.align = "center";
	_TD.innerHTML = "&nbsp;";//"<b>JS Calendar 1.0 by Jack</b>";		
	// Create main block
	for(var i = 0; i < 7; i++){
		_TR = _cldTabFrm.insertRow();
		for(var j = 0; j < 7; j++){
			_TD = _TR.insertCell();
			_TD.style.cursor = "default";
			_TD.align = "center";
			_TD.width = 50;
			//_TD.style.border = "1px solid black";
			_TD.innerHTML = "*";
			if(i != 0){
				_TD.style.cursor = "hand";
				_TD.attachEvent("onmouseover", whenMouseOverDateItem);
				//_TD.attachEvent("onmouseout", whenMouseOutDateItem);
				_TD.attachEvent("onclick", whenClickDateItem);
			}	
			if(i == 0) _TD.innerHTML = "<b>" + _weeks[j] + "</b>";
			if(i == 0 && (j == 0 || j == 6)) _TD.className = "tdHoliday";
			//if(i == 0 && j == 6) _TD.className = "tdHoliday";
			//if(i == 0 && j == 6) _TD.className = "tdSat";
		}
	}
	// Create footer
	_TR = _cldTabFrm.insertRow(2);
	_TD = _TR.insertCell();
	_TD.colSpan = 7;
	_TD.height = 1;
	_TD.bgColor = "black";
	_TR = _cldTabFrm.insertRow();
	_TD = _TR.insertCell();
	_TD.colSpan = 7;
	_TD.innerHTML = "<table cellspacing=0 cellpadding=0 class=calendar style='border:0px solid;width:100%'>"
		+ "<tr><td title=   '今天日期'  onclick=\"parent._bHaveSelectNewValue=true;parent.setTargetFormaValue(" + _dftD.getFullYear() + "," + (_dftD.getMonth() + 1) + "," + _dftD.getDate() + ");parent.fillCldTabFrm(" + _dftD.getFullYear() + "," + _dftD.getMonth() + "," + _dftD.getDate() + ");\">"
		+ "<b>&nbsp;<img src='" + _imgBgToday1.src + "' width=30px>今天 : " + _dftD.getFullYear() + "-" + (_dftD.getMonth() + 1) + "-" + _dftD.getDate()
		+ "</td>"
		+ "<td width=30px>"
		+ "<img style='cursor:hand' onclick=parent.resetTargetValue() title='清空日期' src='" + _imgReset1.src + "' onmouseover=this.src='" + _imgReset2.src + "' onmouseout=this.src='" + _imgReset1.src + "'></td>"
		+ "<td align=right class=smallFont></td></tr></table>";
	_cldTabIFrame.document.body.insertBefore(_cldTabFrm);
	//_cldTabFrm.disabled = _curCldTabRltvObj.disabled;
}

function fillCldTabFrm(year, month, date){
	//return;
	var dCurDate = 0;
	var dNextMonthDate = 1;
	var iDateStartRow = 3;
	//var _d = new Date(this._year, this._month, 1);
	var _d = new Date(year, month, 1);
	var _day = _d.getDay();
	var _td = null;
	
	_dCurYear = year;
	_dCurMonth = month;
	_dCurDate = date;

	if (((_dCurYear % 4 == 0) && !(_dCurYear % 100 == 0))
		||(_dCurYear % 400 == 0)) _monthDays[1] = 29;
	else _monthDays[1] = 28;


	// 年列表 -------- GM
	var _sYearList = "<select name='_JSCYear' onchange='parent.setYearValue(this.value)' style='width:55;height:16;font-size:9pt'>"
	var _targetYear = parseInt(_dCurYear) + 40
	    for( i=_dCurYear-60; i<_targetYear; i++){
	      if(i == _dCurYear)
	        _sYearList += "<option value="+ i +" selected>" + i + "</option>"
	      else
		    _sYearList += "<option value="+ i +">" + i + "</option>"
		}
		_sYearList += "</select>"
		
	var _sMonthList = "<select name='_JSCMonth' onchange='parent.setMonthValue(this.value)' style='width:55;height:16;font-size:9pt'>"
	    for( i=0; i<12; i++){
	      if(i == _dCurMonth){
	        _sMonthList += "<option value="+ i +" selected>"+ (i+1) +"</option>";
	      }else{
	        _sMonthList += "<option value="+ i +" >"+ (i+1) +"</option>";
	      }
	    }
	    _sMonthList += "</select>"
//_months[_dCurMonth]
	_cldTabFrm.rows(0).cells(0).innerHTML
	 = "<table bgcolor=#e3efff  class=calendar style=\"color:white;font-weight:bolder;border:0px solid;width:100%;height:20px;\" cellspacing=0 cellpadding=0>"
		+ "<tr><td>"
		+ "</td>"
		+ "<td align=center vAlign=middle>"
		+ "" + _sYearList + " - " + _sMonthList
		+ "</td>"
		+ "<td align=right>"
		+ "</td></tr></table>"
		//+ "<map name=mapForBtnYears><area title='上一年' onclick=parent.switchNextYear() shape=rect coords=0,0,10,5><area title='下一年' onclick=parent.switchLastYear() shape=rect coords=0,5,10,15></map>"
		//+ "&nbsp;<img border=0 align=absMiddle src='" + _imgBtnYear.src + "' style='height:12px;width:10px' usemap=#mapForBtnYears>&nbsp;"
		//+ "&nbsp;<a style='cursor:hand' title='上一月' onclick=\"parent.switchLastMonth()\"><<</a>"
		//+ "<a style='cursor:hand' title='下一月' onclick=\"parent.switchNextMonth()\">>></a>&nbsp"
			
	_day = (_day == 0 ? 7 : _day);
	
	for(var i = _day - 1, dlt = 0; i >= 0; i--){
		_td = _cldTabFrm.rows(iDateStartRow).cells(i);
		//_td.disabled = true;
		_td.className = "lastMonth";
		_td.title = "";
		_td.name = "LASTMONTH";
		_td.style.backgroundColor = "transparent";
		_td.style.border = "0px solid";
		var _nextMonth = _dCurMonth - 1;
		if(_nextMonth < 0) _nextMonth = 11;
		_td.innerText = (_monthDays[_nextMonth] - (dlt++));
	}
	//alert(_cldTabFrm.rows.length);
	i = _day;
	for(var d = 1, iRow = iDateStartRow; d <= _monthDays[_dCurMonth] || iRow < 9; ){
		for(; i < 7; i++){
			dCurDate = d++;
			_td = _cldTabFrm.rows(iRow).cells(i);
			_td.disabled = false;
			_td.className = "normal";
			_td.name = "CURRENTMONTH";
			_td.style.backgroundColor = "transparent";
			_td.style.border = "0px solid";
			if(i == 0 || i == 6) _td.className = "tdHoliday";
			//if(i == 0) _td.className = "tdHoliday";

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -