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

📄 monthcalendar.htc

📁 HTC,demo WEB用于。 超大型
💻 HTC
字号:
<!-- 
	//  Module Name: monthCalendar //////////////////////////////////
    //       Author: hzh	        ///////////////////////////////////////////////////
    //		   Date: 2005-04-13   ///////////////////////////////////////////////////
    //      Version: 1.0   //////////////////////////////////////////////////////////
 -->

<public:component  name="monthCalendar" urn="monthCalendar" lightWeight=true>
  
  <public:property name="left" put="putLeft"/>	
  <public:property name="top" put="putTop"/>	
  <public:property name="width" put="putWidth"/>	
  <public:property name="style" put="putStyle"/>	
  <public:property name="caption" put="putCaption"/>	
  <public:property name="value" put="putValue" get="getValue"/>	
  <public:property name="text" get="getText"/>	
  <public:property name="init" put="init"/>
  
  <public:attach event="onmousedown" onevent="clickElement()"/>
	
  <script language="JavaScript">
	
	var objContainersDiv = null;
	var objCaption = null;
	var objBtnContainers = null;
	var objCalendarListContainers = null;
	var objCalendarListTable = null;
	var objBtn = null;
	var objYearOperationBtnContainersDiv = null;
	var objYearAddBtn = null;
	var objYearReduceBtn = null;
	var objTodaySpan = null;
	var objCurDateSpan = null;
	var strCurSelectMonthBackColor = "";
	
	var objRange = null;
	
	var vLeft = 0;
	var vTop = 0;
	var vWidth = 83;
	var vCaption = "";
	var intStyle = 0;//0: yyyy-mm  1: yyyy年mm月
	
	var vYear = "";//
	var vMonth = "";
	
	function init(){
		
		objCaption = element.document.createElement("<span class='hzh_monthCalendar_caption'>");
		objCaption = element.appendChild(objCaption);
		objCaption.innerText = vCaption + "	";
		objCaption.style.cursor = "default";
		
		objContainersDiv = element.document.createElement("<input class='hzh_monthCalendar_containersDiv'>");
		objContainersDiv = element.appendChild(objContainersDiv);
		objContainersDiv.onkeydown = processInputkeydownEvent;
		objContainersDiv.onmouseup = selectRange;
		if( vYear == "" && vMonth == ""){
			var objDate = new Date();
			vYear = objDate.getYear();
			vMonth = objDate.getMonth() + 1;
		}
		showYearAndMonth();
		
		objBtnContainers = element.document.createElement("<div>");
		objBtnContainers.innerHTML = "<v:group style='left:0;top:2px;position:absolute;width:16px; height:19px;z-index:3;' coordsize='15,18'><v:roundrect arcsize='0.1' style='width:14;height:14;' fillcolor='#B5CFFF' strokecolor='#ADC3F7'><v:fill type='gradientradial' color2='#DEE3FF' angle='75'/></v:roundrect><v:polyline style='position:absolute;top:6; left:4' points='-1,0 3,3 7,0' strokecolor='#4A6184' strokeweight='2px' filled='false'/><v:oval id=test style=\"width: 10; height: 10;left:2;top:2;\"><v:stroke weight=\"1px\" color=\"#4A6184\"/></v:oval><v:polyline style='position:absolute;top:6; left:4' points='0,-1 3,2 6,0' strokecolor='#0066FF' strokeweight='1px' filled='false'/></v:group>";
		
		objBtnContainers = element.appendChild(objBtnContainers);
		objBtn = objBtnContainers.firstChild;
		objBtn.onclick = processBtnClickEvent;
		
		objCalendarListContainers = element.document.createElement("<div class='hzh_monthCalendarList_containersDiv'>");
		objCalendarListContainers = element.appendChild(objCalendarListContainers);
		objCalendarListContainers.style.visibility = "hidden";
		objCalendarListContainers.onselectstart = function (){event.returnValue = false;};
		objCalendarListTable = element.document.createElement("<table style='position:absolute;left0;top:0;border-bottom:solid 1px #83A3C0' cellspacing='1' cellpadding='1' width='100%' bgcolor='#ffffff'>");
		refresh();
		var objTempTR,objTempTD;
		for( var i = 1; i <= 2; i ++ ){
			objTempTR = objCalendarListTable.insertRow();
			for( var j = 1; j <= 6; j ++ ){
				objTempTD = objTempTR.insertCell();	
				objTempTD.align = "center";
				objTempTD.style.cursor = "hand";
				objTempTD.onmouseover = processCellMouseoverEvent;
				objTempTD.onmouseout = processCellMouseoutEvent;
				objTempTD.style.width = ( objCalendarListContainers.offsetWidth / 6);
				objTempTD.innerText = ( i == 1 ) ? j : j + 6 ;
				if( vMonth == objTempTD.innerText){
					objTempTD.style.background = "#3169C6";	
					objTempTD.style.color = "white";	
				}
				objTempTD.onclick = processTdClickEvent; 
			}
		}		
		objCalendarListTable = objCalendarListContainers.appendChild(objCalendarListTable);
		
		objYearOperationBtnContainersDiv = element.document.createElement("<div style='position:absolute;left:0;height:17;top:36;border:solid 0px red;'>");
		objYearOperationBtnContainersDiv.style.width = objCalendarListContainers.offsetWidth - 2;
		objYearOperationBtnContainersDiv.innerHTML = "<v:group style='position:absolute;left:5;top:2;width:12px; height:12px;' coordsize='12 12'><v:oval style='width:12; height:12;' fillcolor='#009A00' style='position:absolute;' strokecolor='#7B9EBD'><v:fill type='gradientradial' color2='#84EB52'  Opacity='0.99'/></v:oval><v:polyline points='4,0 4,4 0,2 4,0' fillcolor='#ffffff' style='position:absolute; top:4; left:3;' strokecolor='#ffffff'/></v:group><v:group style='position:absolute;left:95;top:2;width:12px; height:12px;' coordsize='12 12'><v:oval style='width:12; height:12;' fillcolor='#009A00' style='position:absolute;' strokecolor='#7B9EBD' ><v:fill type='gradientradial' color2='#84EB52' Opacity='0.99'/></v:oval><v:polyline points='0,0 0,4 4,2 0,0' fillcolor='#ffffff' style='position:absolute; top:4; left:4;' strokecolor='#ffffff'/></v:group>";
		
		objYearReduceBtn = objYearOperationBtnContainersDiv.children(0);
		objYearReduceBtn.onclick = processYearReduceBtnClickEvent;
		objYearAddBtn = objYearOperationBtnContainersDiv.children(1);
		objYearAddBtn.onclick = processYearAddBtnClickEvent;
		
		objYearOperationBtnContainersDiv = objCalendarListContainers.appendChild(objYearOperationBtnContainersDiv);
		
		objCurDateSpan = element.document.createElement("<span style='position:absolute;left:28;top:37;width:60;height:13;text-align:center;padding-top:1;color:#666666;cursor:default;'>");
		objCurDateSpan.innerText = "2005-10";
		objCurDateSpan = objCalendarListContainers.appendChild(objCurDateSpan);
		
		objTodaySpan = element.document.createElement("<span style='position:absolute;left:0;top:18;width:113;height:13;border-top:solid 1px #83A3C0;text-align:center;padding-top:2;color:#666666;cursor:hand;'>");
		objTodaySpan.innerText = "本月:" + new Date().getYear() + "年" + (new Date().getMonth() + 1) + "月";
		objTodaySpan.year = new Date().getYear();
		objTodaySpan.month = new Date().getMonth() + 1;
		objTodaySpan.onclick = processTodaySpanClickEvent;
		objTodaySpan = objYearOperationBtnContainersDiv.appendChild(objTodaySpan);
		
		element.oncontextmenu = function(){event.returnValue = false;};
	}
	
	function processInputkeydownEvent(){
		var objLocalRange = event.srcElement.createTextRange();
		window.status = objLocalRange.text;
	}
	
	function processTodaySpanClickEvent(){
		vYear = event.srcElement.year;
		vMonth = event.srcElement.month;
		showYearAndMonth();
		objCalendarListContainers.style.visibility = "hidden";
	}
	
	function processYearReduceBtnClickEvent(){//年份递减
		vYear = parseInt(vYear) - 1;
		objCurDateSpan.innerText = vYear + "-" + vMonth;
		showYearAndMonth();
	}
	
	function processYearAddBtnClickEvent(){//年份递增
		vYear = parseInt(vYear) + 1;
		objCurDateSpan.innerText = vYear + "-" + vMonth;
		showYearAndMonth();
	}
	
	function processCellMouseoverEvent(){
		var objSrcElement = event.srcElement;
		if(objSrcElement.tagName.toLowerCase() == "td"){
			if( objSrcElement.style.color != "white" ){
				objSrcElement.style.color = "red";
			}
			objCurDateSpan.innerText = vYear + "-" + objSrcElement.innerText;
		}
	}
	
	function processCellMouseoutEvent(){
		var objSrcElement = event.srcElement;
		if(objSrcElement.tagName.toLowerCase() == "td"){
			if( objSrcElement.style.color != "white" ){
				objSrcElement.style.color = "black";
			}
		}
	}
	
	function selectRange(){
		objCalendarListContainers.style.visibility = "hidden";
		objRange = element.document.selection.createRange();
		objRange.expand("word");
		switch(objRange.text.replace(/\s/g,"")){
			case "年":
				objRange.move("character",-2);
				break;
			case "月":
				objRange.move("character",-1);
				break;
			default:
				objRange.expand("word");
				if(objRange.text == ""){
					objRange.move("character",-2);
				}
				break;
		}
		objRange.expand("word");
		objRange.select();
	}
	
	function clickElement(){
		window.document.attachEvent("onmousedown",clickDocument);
	}
	
	function clickDocument(){
		if(element.contains(event.srcElement)) return;
		objCalendarListContainers.style.visibility = "hidden";
		window.document.detachEvent("onmousedown",clickDocument);
	}
	
	function processTdClickEvent(){
		var objSrcElement = event.srcElement;
		if(objSrcElement.tagName.toLowerCase() == "td"){
			vMonth = objSrcElement.innerText;
			showYearAndMonth();
			clearSelect();
			with(objSrcElement.style){
				background = "#3169C6";
				color = "white";
			}
		}
		objCalendarListContainers.style.visibility = "hidden";
	}
	
	function showYearAndMonth(){
		if(objContainersDiv)
			objContainersDiv.innerText = vYear + "年" + formatMonth(vMonth,false) + "月";
	}
	
	function formatMonth(argMonth,booleanHasZero){//返回格式化后的月份
		return ( isNaN(parseInt(argMonth)) || (parseInt(argMonth) < 0 || parseInt(argMonth) > 12) ) ? ( booleanHasZero ? "01" : "1" ) : ( ( parseInt(argMonth) < 10 ) ? ( booleanHasZero ? ("0" + parseInt(argMonth)) : ( (argMonth.toString().indexOf("0") == -1) ? argMonth : argMonth.substr(1,1)) ) : argMonth );
	}
	
	function refresh(){
		with(objContainersDiv.style){//
			left = objCaption.offsetWidth;
			width = vWidth;
			height = 20;
		}
		
		with(element.runtimeStyle){
			left = vLeft;
			top = vTop;
			width = parseInt(vWidth) + parseInt(objCaption.offsetWidth) + 2;
		}
		
		with(objBtn.style){//按钮
			left = objCaption.offsetWidth + objContainersDiv.offsetWidth - 18;	
		}
		with(objCalendarListContainers.style){
			left = objContainersDiv.style.left;
			width = 115;
			top = objContainersDiv.offsetTop + 21;
		}
	}
	
	function processBtnClickEvent(){
		objCalendarListContainers.style.visibility = "visible";
		var objTDList = objCalendarListContainers.all.tags("TD");
		for( var i = 0; i < objTDList.length; i ++ ){
			if( vMonth == objTDList[i].innerText ){
				clearSelect();
				objTDList[i].style.background = "#3169C6";
				objTDList[i].style.color = "white";
			}
		}
		//objCalendarListContainers.innerHTML = '<table cellspacing="1" cellpadding="1" width="100%" bgcolor="#ffffff"><tr bgcolor="#ffffff" align="center"><td>01</td><td>02</td><td>03</td><td>04</td><td>05</td><td>06</td></tr><tr bgcolor="#ffffff" align="center"><td>07</td><td>08</td><td>09</td><td>10</td><td>11</td><td>12</td></tr></table>';
	}
	
	function clearSelect(){
		var objTDList = objCalendarListContainers.all.tags("TD");
		for( var i = 0; i < objTDList.length; i ++ ){
			if( objTDList[i].style.color == "white" ){
				objTDList[i].style.background = "white";
				objTDList[i].style.color = "black";
				break;
			}
		} 
	}
	
	///////////////////////////////////////////////
	function putLeft(argLeft){
		vLeft = isNaN(parseInt(argLeft)) ? vLeft : argLeft;
	}
	
	function putTop(argTop){
		vTop = isNaN(parseInt(argTop)) ? vTop : argTop;
	}
	
	function putWidth(argWidth){
		vWidth = isNaN(parseInt(argWidth)) ? vWidth : argWidth;
	}
	
	function putCaption(argCaption){
		vCaption = argCaption.toString().replace(/\s/g,"");
	}
	
	function putStyle(argStyle){
		//intStyle = ( isNaN(parseInt(argStyle)) || parseInt(argStyle) > 1 ) ? 0 : parseInt(argStyle);  
	}
	
	function putValue(argValue){// only apply the string with format "yyyy-mm" or "yyyy-m"
		if( argValue != "" && argValue.match(/^([1-2]{1}[0-9]{3}-([1-9]{1}|1[0-2]{1}|0[1-9]{1}))*$/) != null ){
			vYear = argValue.split("-")[0];
			vMonth = argValue.split("-")[1];
			showYearAndMonth();
		}
	}
	
	function getValue(){
		var strReturnVal = "";
		switch(intStyle){
			case 0:
				strReturnVal = vYear + "-" + formatMonth(vMonth,true);
				break;
			//extend here......
		}
		return strReturnVal;
	}
	
	function getText(){
		var strReturnVal = "";
		switch(intStyle){
			case 0:
				strReturnVal = vYear + "年" + formatMonth(vMonth,false) + "月";
				break;
			//extend here......
		}
		return strReturnVal;
	}
	
  </script>
</public:component>

⌨️ 快捷键说明

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