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