/**************************************************** * *****
* 사용법
* 컨트롤은 onclick="fPopCalendar(event,this,this)"
* 다음과 같이 컨트롤을 읽기 전용으로 설정합니다.
* <입력 유형 =" text" style="border:1px solid #cccccc;"
* size="15" onclick="fPopCalendar(event,this,this)"
* onfocus="this.select()" 읽기 전용 =" readonly" />
* "
* " 페이지가 깨졌을 경우 한자가 포함된 다음 정의 항목을 페이지에 넣으세요
************ ****** ****************************************/
var gMonths=new Array("1월","2월","3월","4월","5월","6월","7월","8월"," 9월","10월","11월","12월");
var WeekDay=new Array("日","一","2" ,"3","4","5","六");
var strToday="Today";
var strYear="연도";
var strMonth="Month";
var strDay="day";
var SplitChar= "-";
var startYear=2000;
var dayTdHeight=12;
var gcNotCurMonth="#E0E0E0"; var gcRestDay="#FF0000";
var gcWorkDay="#444444";
var gcWeekDay="#990099";
var gcMouseOver= "#79D0FF"
var gcMouseOut=" ";
var gcToday="#444444";
var gcTodayMouseOver="#6699FF";
var gcTodayMouseOut="#CCCCFF";
var gdCtrl=new Object();
var goSelectTag=new Array();
var gdCurDate=new Date();
var giYear=curYear=gdCurDate.getFullYear()
var giMonth=curMonth=gdCurDate.getMonth() 1; var giDay=curDay=gdCurDate.getDate();
function $(){var elements=new Array();for(var i=0;i< 인수.length;i ) {var element=arguments[i] ;if(typeof(arguments[i])=='string'){element=document.getElementById(arguments[i]);}if(arguments.length= =1){return element;}elements.Push(element) ;}요소 반환;}
Array.prototype.Push=function(){var startLength=this.length;for(var i=0;iString.prototype.HexToDec=function(){returnparseInt(this,16);}
String .prototype.cleanBlank=function(){return this.isEmpty( )?"":this.replace(/s/g,"");}
function checkColor(){var color_tmp=(arguments[0] " ").replace(/s/g,""). toUpperCase();var model_tmp1=arguments[1].toUpperCase();var model_tmp2="rgb(" 인수[1].substring(1,3).HexToDec () "," 인수[1].substring(1, 3).HexToDec() "," 인수[1].substring(5).HexToDec() ")";model_tmp2=model_tmp2.toUpperCase();if( color_tmp==model_tmp1 ||color_tmp==model_tmp2){return true ;}false 반환;}
function $V(){return $(arguments[0]).value;}
function fPopCalendar(evt,popCtrl ,dateCtrl){evt.cancelBubble=true;gdCtrl=dateCtrl; var evtDate="";if(document.all){evtDate=evt.srcElement.value;}else{evtDate=evt.currentTarget.value;}var reg= /(^d{4})-([0-1 ]d)-([0-2]d$)/;if(reg.test(evtDate)){reg.exec();giYear=RegExp.$1 ;giMonth=RegExp.$2;giDay=RegExp.$3;} fSetYearMon(giYear,giMonth);var point=fGetXY(popCtrl);with($("calendardiv").style){left=point.x "px"; top=(point.y popCtrl.offsetHeight 1) "px" ;visibility='visible';zindex='99';position='absolute';}$("calendardiv").focus();}
function fSetDate(iYear,iMonth,iDay){var iMonthNew=new String (iMonth);var iDayNew=new String(iDay);if(iMonthNew.length<2){iMonthNew="0" iMonthNew;}if(iDayNew.length< 2){iDayNew="0" iDayNew;}gdCtrl.value =iYear SplitChar iMonthNew SplitChar iDayNew;fHideCalendar();}
function fHideCalendar(){$("calendardiv").style.visibility="hidden";for (var i=0;ifunction fSetSelected(){var iOffset=0;var iYear=parseInt($("tbSelYear").value); var iMonth=parseInt($("tbSelMonth").value);var aCell=$("cellText" 인수[0]);with(aCell){var iDay =parseInt(innerHTML);if(checkColor(style.color, gcNotCurMonth)){iOffset=(innerHTML>10)?-1:1;}iMonth =iOffset;if(iMonth<1){iYear--;iMonth=12 ;}else if(iMonth>12){iYear ;iMonth= 1;}}fSetDate(iYear,iMonth,iDay);}
함수 Point(iX,iY){this.x=iX;this.y=iY ;}
함수 fBuildCal(iYear,iMonth){var aMonth=new Array();for(var i=1;i함수 fUpdateCal(iYear,iMonth){var myMonth=fBuildCal(iYear,iMonth);var i=0;for(var w=1;w<7; w ){for(var d=0;d<7;d ){with($("cellText" w "" d)){parentNode.style.BackgroundColor=gcMouseOut;parentNode.style.borderColor=gcMouseOut;parentNode.onmouseover =function(){this.style.BackgroundColor=gcMouseOver;};parentNode.onmouseout=function(){this.style.BackgroundColor=gcMouseOut;};if(myMonth[w][d]<0){style.color =gcNotCurMonth;innerHTML=Math.abs(myMonth[w][d]);}else{style.color=((d==0)||(d==6))?gcRestDay:gcWorkDay;innerHTML=myMonth[ w][d];if(iYear==giYear && iMonth==giMonth && myMonth[w][d]==giDay){parentNode.style.BackgroundColor=gcMouseOver;parentNode.onmouseover=function(){this.style. backgroundColor=gcMouseOver;};parentNode.onmouseout=function(){this.style.BackgroundColor=gcMouseOver;};}if(iYear==curYear && iMonth==curMonth && myMonth[w][d]==curDay){style .color=gcToday;parentNode.style.BackgroundColor=gcTodayMouseOut;parentNode.onmouseover=function(){this.style.BackgroundColor=gcTodayMouseOver;};parentNode.onmouseout=function(){this.style.BackgroundColor=gcTodayMouseOut;};} }}}}}
함수 fCurrentDate(){return curYear strYear curMonth strMonth curDay strDay;}
함수 fSetYearMon(iYear,iMon){$("tbSelMonth").options[iMon-1].selected=true ;for(var i=0;i<$("tbSelYear").length;i ){if($("tbSelYear").options[i].value==iYear){$("tbSelYear").options [i].selected=true;}}fUpdateCal(iYear,iMon);}
함수 fPrevMonth(){var iMon=$("tbSelMonth").value;var iYear=$("tbSelYear").value; if(--iMon<1){iMon=12;iYear--;}fSetYearMon(iYear,iMon);}
함수 fNextMonth(){var iMon=$("tbSelMonth").value;var iYear=$ ("tbSelYear").value;if( iMon>12){iMon=1;iYear ;}fSetYearMon(iYear,iMon);}
함수 fGetXY(aTag){var oTmp=aTag;var pt=new Point( 0,0);do{pt.x =oTmp.offsetLeft;pt.y =oTmp.offsetTop;oTmp=oTmp.offsetParent;}while(oTmp.tagName.toUpperCase()!="BODY");return pt;}
함수 getDateDiv(){var noSelectForIE="";var noSelectForFireFox="";if(document.all){noSelectForIE="onselectstart='return false;'";}else{noSelectForFireFox="-moz-user- select:none;";}var dateDiv="";dateDiv ="";return dateDiv;}
with(document){onclick=fHideCalendar;write(getDateDiv());}
日历控件.htm
<머리>
日历控件_脚本の家
<본문>