+++ /dev/null
-//Javascript name: My Date Time Picker\r
-//Date created: 16-Nov-2003 23:19\r
-//Scripter: TengYong Ng\r
-//Website: http://www.rainforestnet.com\r
-//Copyright (c) 2003 TengYong Ng\r
-//FileName: DateTimePicker.js\r
-//Version: 0.8\r
-//Contact: contact@rainforestnet.com\r
-// Note: Permission given to use this script in ANY kind of applications if\r
-// header lines are left unchanged.\r
-\r
-//Global variables\r
-var winCal;\r
-var dtToday=new Date();\r
-var Cal;\r
-var docCal;\r
-var MonthName=["January", "February", "March", "April", "May", "June","July", \r
- "August", "September", "October", "November", "December"];\r
-var WeekDayName=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]; \r
-var exDateTime;//Existing Date and Time\r
-\r
-//Configurable parameters\r
-var cnTop="200";//top coordinate of calendar window.\r
-var cnLeft="500";//left coordinate of calendar window\r
-var WindowTitle ="DateTime Picker";//Date Time Picker title.\r
-var WeekChar=2;//number of character for week day. if 2 then Mo,Tu,We. if 3 then Mon,Tue,Wed.\r
-var CellWidth=20;//Width of day cell.\r
-var DateSeparator="-";//Date Separator, you can change it to "/" if you want.\r
-var TimeMode=24;//default TimeMode value. 12 or 24\r
-\r
-var ShowLongMonth=true;//Show long month name in Calendar header. example: "January".\r
-var ShowMonthYear=true;//Show Month and Year in Calendar header.\r
-var MonthYearColor="#cc0033";//Font Color of Month and Year in Calendar header.\r
-var WeekHeadColor="#0099CC";//Background Color in Week header.\r
-var SundayColor="#6699FF";//Background color of Sunday.\r
-var SaturdayColor="#CCCCFF";//Background color of Saturday.\r
-var WeekDayColor="white";//Background color of weekdays.\r
-var FontColor="blue";//color of font in Calendar day cell.\r
-var TodayColor="#FFFF33";//Background color of today.\r
-var SelDateColor="#FFFF99";//Backgrond color of selected date in textbox.\r
-var YrSelColor="#cc0033";//color of font of Year selector.\r
-var ThemeBg="";//Background image of Calendar window.\r
-//end Configurable parameters\r
-//end Global variable\r
-\r
-function NewCal(pCtrl,pFormat,pShowTime,pTimeMode)\r
-{\r
- Cal=new Calendar(dtToday);\r
- if ((pShowTime!=null) && (pShowTime))\r
- {\r
- Cal.ShowTime=true;\r
- if ((pTimeMode!=null) &&((pTimeMode=='12')||(pTimeMode=='24')))\r
- {\r
- TimeMode=pTimeMode;\r
- } \r
- } \r
- if (pCtrl!=null)\r
- Cal.Ctrl=pCtrl;\r
- if (pFormat!=null)\r
- Cal.Format=pFormat.toUpperCase();\r
- \r
- exDateTime=document.getElementById(pCtrl).value;\r
- if (exDateTime!="")//Parse Date String\r
- {\r
- var Sp1;//Index of Date Separator 1\r
- var Sp2;//Index of Date Separator 2 \r
- var tSp1;//Index of Time Separator 1\r
- var tSp1;//Index of Time Separator 2\r
- var strMonth;\r
- var strDate;\r
- var strYear;\r
- var intMonth;\r
- var YearPattern;\r
- var strHour;\r
- var strMinute;\r
- var strSecond;\r
- //parse month\r
- Sp1=exDateTime.indexOf(DateSeparator,0)\r
- Sp2=exDateTime.indexOf(DateSeparator,(parseInt(Sp1)+1));\r
- \r
- if ((Cal.Format.toUpperCase()=="DDMMYYYY") || (Cal.Format.toUpperCase()=="DDMMMYYYY"))\r
- //if ((Cal.Format.toUpperCase()=="YYYYMMDD") || (Cal.Format.toUpperCase()=="YYYYMMMDD"))\r
- {\r
- strMonth=exDateTime.substring(Sp1+1,Sp2);\r
- strDate=exDateTime.substring(0,Sp1);\r
- }\r
- else if ((Cal.Format.toUpperCase()=="MMDDYYYY") || (Cal.Format.toUpperCase()=="MMMDDYYYY"))\r
- {\r
- strMonth=exDateTime.substring(0,Sp1);\r
- strDate=exDateTime.substring(Sp1+1,Sp2);\r
- }\r
- if (isNaN(strMonth))\r
- intMonth=Cal.GetMonthIndex(strMonth);\r
- else\r
- intMonth=parseInt(strMonth,10)-1; \r
- if ((parseInt(intMonth,10)>=0) && (parseInt(intMonth,10)<12))\r
- Cal.Month="0"+intMonth;\r
- //end parse month\r
- //parse Date\r
- if ((parseInt(strDate,10)<=Cal.GetMonDays()) && (parseInt(strDate,10)>=1))\r
- Cal.Date=strDate;\r
- //end parse Date\r
- //parse year\r
- strYear=exDateTime.substring(Sp2+1,Sp2+5);\r
- YearPattern=/^\d{4}$/;\r
- if (YearPattern.test(strYear))\r
- Cal.Year=parseInt(strYear,10);\r
- //end parse year\r
- //parse time\r
- if (Cal.ShowTime==true)\r
- {\r
- tSp1=exDateTime.indexOf(":",0)\r
- tSp2=exDateTime.indexOf(":",(parseInt(tSp1)+1));\r
- strHour=exDateTime.substring(tSp1,(tSp1)-2);\r
- Cal.SetHour(strHour);\r
- strMinute=exDateTime.substring(tSp1+1,tSp2);\r
- Cal.SetMinute(strMinute);\r
- strSecond=exDateTime.substring(tSp2+1,tSp2+3);\r
- Cal.SetSecond(strSecond);\r
- } \r
- }\r
- winCal=window.open("","DateTimePicker","toolbar=0,status=0,menubar=0,fullscreen=no,width=195,height=245,resizable=0,top="+cnTop+",left="+cnLeft);\r
- docCal=winCal.document;\r
- RenderCal();\r
-}\r
-\r
-function RenderCal()\r
-{\r
- var vCalHeader;\r
- var vCalData;\r
- var vCalTime;\r
- var i;\r
- var j;\r
- var SelectStr;\r
- var vDayCount=0;\r
- var vFirstDay;\r
-\r
- docCal.open();\r
- docCal.writeln("<html><head><title>"+WindowTitle+"</title>");\r
- docCal.writeln("<script>var winMain=window.opener;</script>");\r
- docCal.writeln("</head><body background='"+ThemeBg+"' link="+FontColor+" vlink="+FontColor+"><form name='Calendar'>");\r
-\r
- vCalHeader="<table border=1 cellpadding=1 cellspacing=1 width='100%' align=\"center\" valign=\"top\">\n";\r
- //Month Selector\r
- vCalHeader+="<tr>\n<td colspan='7'><table border=0 width='100%' cellpadding=0 cellspacing=0><tr><td align='left'>\n";\r
- vCalHeader+="<select name=\"MonthSelector\" onChange=\"javascript:winMain.Cal.SwitchMth(this.selectedIndex);winMain.RenderCal();\">\n";\r
- for (i=0;i<12;i++)\r
- {\r
- if (i==Cal.Month)\r
- SelectStr="Selected";\r
- else\r
- SelectStr=""; \r
- vCalHeader+="<option "+SelectStr+" value >"+MonthName[i]+"\n";\r
- }\r
- vCalHeader+="</select></td>";\r
- //Year selector\r
- vCalHeader+="\n<td align='right'><a href=\"javascript:winMain.Cal.DecYear();winMain.RenderCal()\"><b><font color=\""+YrSelColor+"\"><</font></b></a><font face=\"Verdana\" color=\""+YrSelColor+"\" size=2><b> "+Cal.Year+" </b></font><a href=\"javascript:winMain.Cal.IncYear();winMain.RenderCal()\"><b><font color=\""+YrSelColor+"\">></font></b></a></td></tr></table></td>\n"; \r
- vCalHeader+="</tr>";\r
- //Calendar header shows Month and Year\r
- if (ShowMonthYear)\r
- vCalHeader+="<tr><td colspan='7'><font face='Verdana' size='2' align='center' color='"+MonthYearColor+"'><b>"+Cal.GetMonthName(ShowLongMonth)+" "+Cal.Year+"</b></font></td></tr>\n";\r
- //Week day header\r
- vCalHeader+="<tr bgcolor="+WeekHeadColor+">";\r
- for (i=0;i<7;i++)\r
- {\r
- vCalHeader+="<td align='center'><font face='Verdana' size='2'>"+WeekDayName[i].substr(0,WeekChar)+"</font></td>";\r
- }\r
- vCalHeader+="</tr>"; \r
- docCal.write(vCalHeader);\r
- \r
- //Calendar detail\r
- CalDate=new Date(Cal.Year,Cal.Month);\r
- CalDate.setDate(1);\r
- vFirstDay=CalDate.getDay();\r
- vCalData="<tr>";\r
- for (i=0;i<vFirstDay;i++)\r
- {\r
- vCalData=vCalData+GenCell();\r
- vDayCount=vDayCount+1;\r
- }\r
- for (j=1;j<=Cal.GetMonDays();j++)\r
- {\r
- var strCell;\r
- vDayCount=vDayCount+1;\r
- if ((j==dtToday.getDate())&&(Cal.Month==dtToday.getMonth())&&(Cal.Year==dtToday.getFullYear()))\r
- strCell=GenCell(j,true,TodayColor);//Highlight today's date\r
- else\r
- {\r
- if (j==Cal.Date)\r
- {\r
- strCell=GenCell(j,true,SelDateColor);\r
- }\r
- else\r
- { \r
- if (vDayCount%7==0)\r
- strCell=GenCell(j,false,SaturdayColor);\r
- else if ((vDayCount+6)%7==0)\r
- strCell=GenCell(j,false,SundayColor);\r
- else\r
- strCell=GenCell(j,null,WeekDayColor);\r
- } \r
- } \r
- vCalData=vCalData+strCell;\r
-\r
- if((vDayCount%7==0)&&(j<Cal.GetMonDays()))\r
- {\r
- vCalData=vCalData+"</tr>\n<tr>";\r
- }\r
- }\r
- docCal.writeln(vCalData); \r
- //Time picker\r
- if (Cal.ShowTime)\r
- {\r
- var showHour;\r
- showHour=Cal.getShowHour(); \r
- vCalTime="<tr>\n<td colspan='7' align='center'>";\r
- vCalTime+="<input type='text' name='hour' maxlength=2 size=1 style=\"WIDTH: 22px\" value="+showHour+" onchange=\"javascript:winMain.Cal.SetHour(this.value)\">";\r
- vCalTime+=" : ";\r
- vCalTime+="<input type='text' name='minute' maxlength=2 size=1 style=\"WIDTH: 22px\" value="+Cal.Minutes+" onchange=\"javascript:winMain.Cal.SetMinute(this.value)\">";\r
- vCalTime+=" : ";\r
- vCalTime+="<input type='text' name='second' maxlength=2 size=1 style=\"WIDTH: 22px\" value="+Cal.Seconds+" onchange=\"javascript:winMain.Cal.SetSecond(this.value)\">";\r
- if (TimeMode==12)\r
- {\r
- var SelectAm =(parseInt(Cal.Hours,10)<12)? "Selected":"";\r
- var SelectPm =(parseInt(Cal.Hours,10)>=12)? "Selected":"";\r
-\r
- vCalTime+="<select name=\"ampm\" onchange=\"javascript:winMain.Cal.SetAmPm(this.options[this.selectedIndex].value);\">";\r
- vCalTime+="<option "+SelectAm+" value=\"AM\">AM</option>";\r
- vCalTime+="<option "+SelectPm+" value=\"PM\">PM<option>";\r
- vCalTime+="</select>";\r
- } \r
- vCalTime+="\n</td>\n</tr>";\r
- docCal.write(vCalTime);\r
- } \r
- //end time picker\r
- docCal.writeln("\n</table>");\r
- docCal.writeln("</form></body></html>");\r
- docCal.close();\r
-}\r
-\r
-function GenCell(pValue,pHighLight,pColor)//Generate table cell with value\r
-{\r
- var PValue;\r
- var PCellStr;\r
- var vColor;\r
- var vHLstr1;//HighLight string\r
- var vHlstr2;\r
- var vTimeStr;\r
- \r
- if (pValue==null)\r
- PValue="";\r
- else\r
- PValue=pValue;\r
- \r
- if (pColor!=null)\r
- vColor="bgcolor=\""+pColor+"\"";\r
- else\r
- vColor=""; \r
- if ((pHighLight!=null)&&(pHighLight))\r
- {vHLstr1="color='red'><b>";vHLstr2="</b>";}\r
- else\r
- {vHLstr1=">";vHLstr2="";} \r
- \r
- if (Cal.ShowTime)\r
- {\r
- vTimeStr="winMain.document.getElementById('"+Cal.Ctrl+"').value+=' '+"+"winMain.Cal.getShowHour()"+"+':'+"+"winMain.Cal.Minutes"+"+':'+"+"winMain.Cal.Seconds";\r
- if (TimeMode==12)\r
- vTimeStr+="+' '+winMain.Cal.AMorPM";\r
- } \r
- else\r
- vTimeStr=""; \r
- PCellStr="<td "+vColor+" width="+CellWidth+" align='center'><font face='verdana' size='2'"+vHLstr1+"<a href=\"javascript:winMain.document.getElementById('"+Cal.Ctrl+"').value='"+Cal.FormatDate(PValue)+"';"+vTimeStr+";window.close();\">"+PValue+"</a>"+vHLstr2+"</font></td>";\r
- return PCellStr;\r
-}\r
-\r
-function Calendar(pDate,pCtrl)\r
-{\r
- //Properties\r
- this.Date=pDate.getDate();//selected date\r
- this.Month=pDate.getMonth();//selected month number\r
- this.Year=pDate.getFullYear();//selected year in 4 digits\r
- this.Hours=pDate.getHours(); \r
-\r
- if (pDate.getMinutes()<10)\r
- this.Minutes="0"+pDate.getMinutes();\r
- else\r
- this.Minutes=pDate.getMinutes();\r
- \r
- if (pDate.getSeconds()<10)\r
- this.Seconds="0"+pDate.getSeconds();\r
- else \r
- this.Seconds=pDate.getSeconds();\r
- \r
- this.MyWindow=winCal;\r
- this.Ctrl=pCtrl;\r
- this.Format="ddMMyyyy";\r
- this.Separator=DateSeparator;\r
- this.ShowTime=false;\r
-\r
- if (pDate.getHours()<12)\r
- this.AMorPM="AM";\r
- else\r
- this.AMorPM="PM"; \r
-}\r
-\r
-function GetMonthIndex(shortMonthName)\r
-{\r
- for (i=0;i<12;i++)\r
- {\r
- if (MonthName[i].substring(0,3).toUpperCase()==shortMonthName.toUpperCase())\r
- { return i;}\r
- }\r
-}\r
-Calendar.prototype.GetMonthIndex=GetMonthIndex;\r
-\r
-function IncYear()\r
-{ Cal.Year++;}\r
-Calendar.prototype.IncYear=IncYear;\r
-\r
-function DecYear()\r
-{ Cal.Year--;}\r
-Calendar.prototype.DecYear=DecYear;\r
- \r
-function SwitchMth(intMth)\r
-{ Cal.Month=intMth;}\r
-Calendar.prototype.SwitchMth=SwitchMth;\r
-\r
-function SetHour(intHour)\r
-{ \r
- var MaxHour;\r
- var MinHour;\r
- if (TimeMode==24)\r
- { MaxHour=23;MinHour=0}\r
- else if (TimeMode==12)\r
- { MaxHour=12;MinHour=1}\r
- else\r
- alert("TimeMode can only be 12 or 24"); \r
- var HourExp=new RegExp("^\\d\\d$");\r
- if (HourExp.test(intHour) && (parseInt(intHour,10)<=MaxHour) && (parseInt(intHour,10)>=MinHour))\r
- { \r
- if ((TimeMode==12) && (Cal.AMorPM=="PM"))\r
- {\r
- if (parseInt(intHour,10)==12)\r
- Cal.Hours=12;\r
- else \r
- Cal.Hours=parseInt(intHour,10)+12;\r
- } \r
- else if ((TimeMode==12) && (Cal.AMorPM=="AM"))\r
- {\r
- if (intHour==12)\r
- intHour-=12;\r
- Cal.Hours=parseInt(intHour,10);\r
- }\r
- else if (TimeMode==24)\r
- Cal.Hours=parseInt(intHour,10); \r
- }\r
-}\r
-Calendar.prototype.SetHour=SetHour;\r
-\r
-function SetMinute(intMin)\r
-{\r
- var MinExp=new RegExp("^\\d\\d$");\r
- if (MinExp.test(intMin) && (intMin<60))\r
- Cal.Minutes=intMin;\r
-}\r
-Calendar.prototype.SetMinute=SetMinute;\r
-\r
-function SetSecond(intSec)\r
-{ \r
- var SecExp=new RegExp("^\\d\\d$");\r
- if (SecExp.test(intSec) && (intSec<60))\r
- Cal.Seconds=intSec;\r
-}\r
-Calendar.prototype.SetSecond=SetSecond;\r
-\r
-function SetAmPm(pvalue)\r
-{\r
- this.AMorPM=pvalue;\r
- if (pvalue=="PM")\r
- {\r
- this.Hours=(parseInt(this.Hours,10))+12;\r
- if (this.Hours==24)\r
- this.Hours=12;\r
- } \r
- else if (pvalue=="AM")\r
- this.Hours-=12; \r
-}\r
-Calendar.prototype.SetAmPm=SetAmPm;\r
-\r
-function getShowHour()\r
-{\r
- var finalHour;\r
- if (TimeMode==12)\r
- {\r
- if (parseInt(this.Hours,10)==0)\r
- {\r
- this.AMorPM="AM";\r
- finalHour=parseInt(this.Hours,10)+12; \r
- }\r
- else if (parseInt(this.Hours,10)==12)\r
- {\r
- this.AMorPM="PM";\r
- finalHour=12;\r
- } \r
- else if (this.Hours>12)\r
- {\r
- this.AMorPM="PM";\r
- if ((this.Hours-12)<10)\r
- finalHour="0"+((parseInt(this.Hours,10))-12);\r
- else\r
- finalHour=parseInt(this.Hours,10)-12; \r
- }\r
- else\r
- {\r
- this.AMorPM="AM";\r
- if (this.Hours<10)\r
- finalHour="0"+parseInt(this.Hours,10);\r
- else\r
- finalHour=this.Hours; \r
- }\r
- }\r
- else if (TimeMode==24)\r
- {\r
- if (this.Hours<10)\r
- finalHour="0"+parseInt(this.Hours,10);\r
- else \r
- finalHour=this.Hours;\r
- } \r
- return finalHour; \r
-} \r
-Calendar.prototype.getShowHour=getShowHour; \r
-\r
-function GetMonthName(IsLong)\r
-{\r
- var Month=MonthName[this.Month];\r
- if (IsLong)\r
- return Month;\r
- else\r
- return Month.substr(0,3);\r
-}\r
-Calendar.prototype.GetMonthName=GetMonthName;\r
-\r
-function GetMonDays()//Get number of days in a month\r
-{\r
- var DaysInMonth=[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r
- if (this.IsLeapYear())\r
- {\r
- DaysInMonth[1]=29;\r
- } \r
- return DaysInMonth[this.Month]; \r
-}\r
-Calendar.prototype.GetMonDays=GetMonDays;\r
-\r
-function IsLeapYear()\r
-{\r
- if ((this.Year%4)==0)\r
- {\r
- if ((this.Year%100==0) && (this.Year%400)!=0)\r
- {\r
- return false;\r
- }\r
- else\r
- {\r
- return true;\r
- }\r
- }\r
- else\r
- {\r
- return false;\r
- }\r
-}\r
-Calendar.prototype.IsLeapYear=IsLeapYear;\r
-\r
-function FormatDate(pDate)\r
-{\r
-\r
- if (this.Format.toUpperCase()=="DDMMYYYY")\r
- return (this.Year+DateSeparator+(this.Month+1)+DateSeparator+pDate); \r
- else if (this.Format.toUpperCase()=="DDMMMYYYY")\r
- return (pDate+DateSeparator+this.GetMonthName(false)+DateSeparator+this.Year);\r
- else if (this.Format.toUpperCase()=="MMDDYYYY")\r
- return ((this.Month+1)+DateSeparator+pDate+DateSeparator+this.Year);\r
- else if (this.Format.toUpperCase()=="MMMDDYYYY")\r
- return (this.GetMonthName(false)+DateSeparator+pDate+DateSeparator+this.Year); \r
- \r
-}\r
-Calendar.prototype.FormatDate=FormatDate;
\ No newline at end of file