PageSourceSearch

https://babylon-idiomas.com/new-site-files/js/datetimepicker.js

js babylon-idiomas.com collected 2026-10-02 13:46:06 UTC 13,784 bytes, 484 lines download raw bytes

1//Javascript name: My Date Time Picker
2//Date created: 16-Nov-2003 23:19
3//Scripter: TengYong Ng
4//Website: http://www.rainforestnet.com
5//Copyright (c) 2003 TengYong Ng
6//FileName: DateTimePicker.js
7//Version: 0.8
8//Contact: [email protected]
9// Note: Permission given to use this script in ANY kind of applications if
10//       header lines are left unchanged.
11
12//Global variables
13var winCal;
14var dtToday=new Date();
15var Cal;
16var docCal;
17var MonthName=["January", "February", "March", "April", "May", "June","July", 
18	"August", "September", "October", "November", "December"];
19var WeekDayName=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];	
20var exDateTime;//Existing Date and Time
21
22//Configurable parameters
23var cnTop="200";//top coordinate of calendar window.
24var cnLeft="500";//left coordinate of calendar window
25var WindowTitle ="DateTime Picker";//Date Time Picker title.
26var WeekChar=2;//number of character for week day. if 2 then Mo,Tu,We. if 3 then Mon,Tue,Wed.
27var CellWidth=20;//Width of day cell.
28var DateSeparator="/";//Date Separator, you can change it to "/" if you want.
29
30var TimeMode=24;//default TimeMode value. 12 or 24
31
32var ShowLongMonth=true;//Show long month name in Calendar header. example: "January".
33var ShowMonthYear=true;//Show Month and Year in Calendar header.
34var MonthYearColor="#cc0033";//Font Color of Month and Year in Calendar header.
35var WeekHeadColor="#D5DEF8";//Background Color in Week header.
36var SundayColor="#ccc";//Background color of Sunday.
37var SaturdayColor="#ccc";//Background color of Saturday.
38var WeekDayColor="#f5f5f5";//Background color of weekdays.
39var FontColor="#000";//color of font in Calendar day cell.
40var TodayColor="#FFFF33";//Background color of today.
41var SelDateColor="#FFFF99";//Backgrond color of selected date in textbox.
42var YrSelColor="#cc0033";//color of font of Year selector.
43var ThemeBg="";//Background image of Calendar window.
44//end Configurable parameters
45//end Global variable
46
47function NewCal(pCtrl,pFormat,pShowTime,pTimeMode)
48{
49	Cal=new Calendar(dtToday);
50	if ((pShowTime!=null) && (pShowTime))
51	{
52		Cal.ShowTime=true;
53		if ((pTimeMode!=null) &&((pTimeMode=='12')||(pTimeMode=='24')))
54		{
55			TimeMode=pTimeMode;
56		}		
57	}	
58	if (pCtrl!=null)
59		Cal.Ctrl=pCtrl;
60	if (pFormat!=null)
61		Cal.Format=pFormat.toUpperCase();
62	
63	exDateTime=document.getElementById(pCtrl).value;
64	if (exDateTime!="")//Parse Date String
65	{
66		var Sp1;//Index of Date Separator 1
67		var Sp2;//Index of Date Separator 2 
68		var tSp1;//Index of Time Separator 1
69		var tSp1;//Index of Time Separator 2
70		var strMonth;
71		var strDate;
72		var strYear;
73		var intMonth;
74		var YearPattern;
75		var strHour;
76		var strMinute;
77		var strSecond;
78		//parse month
79		Sp1=exDateTime.indexOf(DateSeparator,0)
80		Sp2=exDateTime.indexOf(DateSeparator,(parseInt(Sp1)+1));
81		
82		if ((Cal.Format.toUpperCase()=="DDMMYYYY") || (Cal.Format.toUpperCase()=="DDMMMYYYY"))
83		{
84			strMonth=exDateTime.substring(Sp1+1,Sp2);
85			strDate=exDateTime.substring(0,Sp1);
86		}
87		else if ((Cal.Format.toUpperCase()=="MMDDYYYY") || (Cal.Format.toUpperCase()=="MMMDDYYYY"))
88		{
89			strMonth=exDateTime.substring(0,Sp1);
90			strDate=exDateTime.substring(Sp1+1,Sp2);
91		}
92		if (isNaN(strMonth))
93			intMonth=Cal.GetMonthIndex(strMonth);
94		else
95			intMonth=parseInt(strMonth,10)-1;	
96		if ((parseInt(intMonth,10)>=0) && (parseInt(intMonth,10)<12))
97			Cal.Month=intMonth;
98		//end parse month
99		//parse Date
100		if ((parseInt(strDate,10)<=Cal.GetMonDays()) && (parseInt(strDate,10)>=1))
101			Cal.Date=strDate;
102		//end parse Date
103		//parse year
104		strYear=exDateTime.substring(Sp2+1,Sp2+5);
105		YearPattern=/^\d{4}$/;
106		if (YearPattern.test(strYear))
107			Cal.Year=parseInt(strYear,10);
108		//end parse year
109		//parse time
110		if (Cal.ShowTime==true)
111		{
112			tSp1=exDateTime.indexOf(":",0)
113			tSp2=exDateTime.indexOf(":",(parseInt(tSp1)+1));
114			strHour=exDateTime.substring(tSp1,(tSp1)-2);
115			Cal.SetHour(strHour);
116			strMinute=exDateTime.substring(tSp1+1,tSp2);
117			Cal.SetMinute(strMinute);
118			strSecond=exDateTime.substring(tSp2+1,tSp2+3);
119			Cal.SetSecond(strSecond);
120		}	
121	}
122	winCal=window.open("","DateTimePicker","toolbar=0,status=0,menubar=0,fullscreen=no,width=195,height=245,resizable=0,top="+cnTop+",left="+cnLeft);
123	docCal=winCal.document;
124	RenderCal();
125}
126
127function RenderCal()
128{
129	var vCalHeader;
130	var vCalData;
131	var vCalTime;
132	var i;
133	var j;
134	var SelectStr;
135	var vDayCount=0;
136	var vFirstDay;
137
138	docCal.open();
139	docCal.writeln("<html><head><title>"+WindowTitle+"</title>");
140	docCal.writeln("<script>var winMain=window.opener;</script>");
141	docCal.writeln("</head><body background='"+ThemeBg+"' link="+FontColor+" vlink="+FontColor+"><form name='Calendar'>");
142
143	vCalHeader="<table border=0 cellpadding=3 cellspacing=1 width='100%' align=\"center\" valign=\"top\">\n";
144	//Month Selector
145	vCalHeader+="<tr>\n<td colspan='7'><table border=0 width='100%' cellpadding=0 cellspacing=0><tr><td align='left'>\n";
146	vCalHeader+="<select name=\"MonthSelector\" onChange=\"javascript:winMain.Cal.SwitchMth(this.selectedIndex);winMain.RenderCal();\">\n";
147	for (i=0;i<12;i++)
148	{
149		if (i==Cal.Month)
150			SelectStr="Selected";
151		else
152			SelectStr="";	
153		vCalHeader+="<option "+SelectStr+" value >"+MonthName[i]+"\n";
154	}
155	vCalHeader+="</select></td>";
156	//Year selector
157	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";	
158	vCalHeader+="</tr>";
159	//Calendar header shows Month and Year
160	if (ShowMonthYear)
161		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";
162	//Week day header
163	vCalHeader+="<tr bgcolor="+WeekHeadColor+">";
164	for (i=0;i<7;i++)
165	{
166		vCalHeader+="<td align='center'><font face='Verdana' size='2'>"+WeekDayName[i].substr(0,WeekChar)+"</font></td>";
167	}
168	vCalHeader+="</tr>";	
169	docCal.write(vCalHeader);
170	
171	//Calendar detail
172	CalDate=new Date(Cal.Year,Cal.Month);
173	CalDate.setDate(1);
174	vFirstDay=CalDate.getDay();
175	vCalData="<tr>";
176	for (i=0;i<vFirstDay;i++)
177	{
178		vCalData=vCalData+GenCell();
179		vDayCount=vDayCount+1;
180	}
181	for (j=1;j<=Cal.GetMonDays();j++)
182	{
183		var strCell;
184		vDayCount=vDayCount+1;
185		if ((j==dtToday.getDate())&&(Cal.Month==dtToday.getMonth())&&(Cal.Year==dtToday.getFullYear()))
186			strCell=GenCell(j,true,TodayColor);//Highlight today's date
187		else
188		{
189			if (j==Cal.Date)
190			{
191				strCell=GenCell(j,true,SelDateColor);
192			}
193			else
194			{	 
195				if (vDayCount%7==0)
196					strCell=GenCell(j,false,SaturdayColor);
197				else if ((vDayCount+6)%7==0)
198					strCell=GenCell(j,false,SundayColor);
199				else
200					strCell=GenCell(j,null,WeekDayColor);
201			}		
202		}						
203		vCalData=vCalData+strCell;
204
205		if((vDayCount%7==0)&&(j<Cal.GetMonDays()))
206		{
207			vCalData=vCalData+"</tr>\n<tr>";
208		}
209	}
210	docCal.writeln(vCalData);	
211	//Time picker
212	if (Cal.ShowTime)
213	{
214		var showHour;
215		showHour=Cal.getShowHour();		
216		vCalTime="<tr>\n<td colspan='7' align='center'>";
217		vCalTime+="<input type='text' name='hour' maxlength=2 size=1 style=\"WIDTH: 22px\" value="+showHour+" onchange=\"javascript:winMain.Cal.SetHour(this.value)\">";
218		vCalTime+=" : ";
219		vCalTime+="<input type='text' name='minute' maxlength=2 size=1 style=\"WIDTH: 22px\" value="+Cal.Minutes+" onchange=\"javascript:winMain.Cal.SetMinute(this.value)\">";
220		vCalTime+=" : ";
221		vCalTime+="<input type='text' name='second' maxlength=2 size=1 style=\"WIDTH: 22px\" value="+Cal.Seconds+" onchange=\"javascript:winMain.Cal.SetSecond(this.value)\">";
222		if (TimeMode==12)
223		{
224			var SelectAm =(parseInt(Cal.Hours,10)<12)? "Selected":"";
225			var SelectPm =(parseInt(Cal.Hours,10)>=12)? "Selected":"";
226
227			vCalTime+="<select name=\"ampm\" onchange=\"javascript:winMain.Cal.SetAmPm(this.options[this.selectedIndex].value);\">";
228			vCalTime+="<option "+SelectAm+" value=\"AM\">AM</option>";
229			vCalTime+="<option "+SelectPm+" value=\"PM\">PM<option>";
230			vCalTime+="</select>";
231		}	
232		vCalTime+="\n</td>\n</tr>";
233		docCal.write(vCalTime);
234	}	
235	//end time picker
236	docCal.writeln("\n</table>");
237	docCal.writeln("</form></body></html>");
238	docCal.close();
239}
240
241function GenCell(pValue,pHighLight,pColor)//Generate table cell with value
242{
243	var PValue;
244	var PCellStr;
245	var vColor;
246	var vHLstr1;//HighLight string
247	var vHlstr2;
248	var vTimeStr;
249	
250	if (pValue==null)
251		PValue="";
252	else
253		PValue=pValue;
254	
255	if (pColor!=null)
256		vColor="bgcolor=\""+pColor+"\"";
257	else
258		vColor="";	
259	if ((pHighLight!=null)&&(pHighLight))
260		{vHLstr1="color='red'><b>";vHLstr2="</b>";}
261	else
262		{vHLstr1=">";vHLstr2="";}	
263	
264	if (Cal.ShowTime)
265	{
266		vTimeStr="winMain.document.getElementById('"+Cal.Ctrl+"').value+=' '+"+"winMain.Cal.getShowHour()"+"+':'+"+"winMain.Cal.Minutes"+"+':'+"+"winMain.Cal.Seconds";
267		if (TimeMode==12)
268			vTimeStr+="+' '+winMain.Cal.AMorPM";
269	}	
270	else
271		vTimeStr="";		
272	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>";
273	return PCellStr;
274}
275
276function Calendar(pDate,pCtrl)
277{
278	//Properties
279	this.Date=pDate.getDate();//selected date
280	this.Month=pDate.getMonth();//selected month number
281	this.Year=pDate.getFullYear();//selected year in 4 digits
282	this.Hours=pDate.getHours();	
283	
284	if (pDate.getMinutes()<10)
285		this.Minutes="0"+pDate.getMinutes();
286	else
287		this.Minutes=pDate.getMinutes();
288	
289	if (pDate.getSeconds()<10)
290		this.Seconds="0"+pDate.getSeconds();
291	else		
292		this.Seconds=pDate.getSeconds();
293		
294	this.MyWindow=winCal;
295	this.Ctrl=pCtrl;
296	this.Format="ddMMyyyy";
297	this.Separator=DateSeparator;
298	this.ShowTime=false;
299	if (pDate.getHours()<12)
300		this.AMorPM="AM";
301	else
302		this.AMorPM="PM";	
303}
304
305function GetMonthIndex(shortMonthName)
306{
307	for (i=0;i<12;i++)
308	{
309		if (MonthName[i].substring(0,3).toUpperCase()==shortMonthName.toUpperCase())
310		{	return i;}
311	}
312}
313Calendar.prototype.GetMonthIndex=GetMonthIndex;
314
315function IncYear()
316{	Cal.Year++;}
317Calendar.prototype.IncYear=IncYear;
318
319function DecYear()
320{	Cal.Year--;}
321Calendar.prototype.DecYear=DecYear;
322	
323function SwitchMth(intMth)
324{	Cal.Month=intMth;}
325Calendar.prototype.SwitchMth=SwitchMth;
326
327function SetHour(intHour)
328{	
329	var MaxHour;
330	var MinHour;
331	if (TimeMode==24)
332	{	MaxHour=23;MinHour=0}
333	else if (TimeMode==12)
334	{	MaxHour=12;MinHour=1}
335	else
336		alert("TimeMode can only be 12 or 24");		
337	var HourExp=new RegExp("^\\d\\d$");
338	if (HourExp.test(intHour) && (parseInt(intHour,10)<=MaxHour) && (parseInt(intHour,10)>=MinHour))
339	{	
340		if ((TimeMode==12) && (Cal.AMorPM=="PM"))
341		{
342			if (parseInt(intHour,10)==12)
343				Cal.Hours=12;
344			else	
345				Cal.Hours=parseInt(intHour,10)+12;
346		}	
347		else if ((TimeMode==12) && (Cal.AMorPM=="AM"))
348		{
349			if (intHour==12)
350				intHour-=12;
351			Cal.Hours=parseInt(intHour,10);
352		}
353		else if (TimeMode==24)
354			Cal.Hours=parseInt(intHour,10);	
355	}
356}
357Calendar.prototype.SetHour=SetHour;
358
359function SetMinute(intMin)
360{
361	var MinExp=new RegExp("^\\d\\d$");
362	if (MinExp.test(intMin) && (intMin<60))
363		Cal.Minutes=intMin;
364}
365Calendar.prototype.SetMinute=SetMinute;
366
367function SetSecond(intSec)
368{	
369	var SecExp=new RegExp("^\\d\\d$");
370	if (SecExp.test(intSec) && (intSec<60))
371		Cal.Seconds=intSec;
372}
373Calendar.prototype.SetSecond=SetSecond;
374
375function SetAmPm(pvalue)
376{
377	this.AMorPM=pvalue;
378	if (pvalue=="PM")
379	{
380		this.Hours=(parseInt(this.Hours,10))+12;
381		if (this.Hours==24)
382			this.Hours=12;
383	}	
384	else if (pvalue=="AM")
385		this.Hours-=12;	
386}
387Calendar.prototype.SetAmPm=SetAmPm;
388
389function getShowHour()
390{
391	var finalHour;
392    if (TimeMode==12)
393    {
394    	if (parseInt(this.Hours,10)==0)
395		{
396			this.AMorPM="AM";
397			finalHour=parseInt(this.Hours,10)+12;	
398		}
399		else if (parseInt(this.Hours,10)==12)
400		{
401			this.AMorPM="PM";
402			finalHour=12;
403		}		
404		else if (this.Hours>12)
405		{
406			this.AMorPM="PM";
407			if ((this.Hours-12)<10)
408				finalHour="0"+((parseInt(this.Hours,10))-12);
409			else
410				finalHour=parseInt(this.Hours,10)-12;	
411		}
412		else
413		{
414			this.AMorPM="AM";
415			if (this.Hours<10)
416				finalHour="0"+parseInt(this.Hours,10);
417			else
418				finalHour=this.Hours;	
419		}
420	}
421	else if (TimeMode==24)
422	{
423		if (this.Hours<10)
424			finalHour="0"+parseInt(this.Hours,10);
425		else	
426			finalHour=this.Hours;
427	}	
428	return finalHour;	
429}				
430Calendar.prototype.getShowHour=getShowHour;		
431
432function GetMonthName(IsLong)
433{
434	var Month=MonthName[this.Month];
435	if (IsLong)
436		return Month;
437	else
438		return Month.substr(0,3);
439}
440Calendar.prototype.GetMonthName=GetMonthName;
441
442function GetMonDays()//Get number of days in a month
443{
444	var DaysInMonth=[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
445	if (this.IsLeapYear())
446	{
447		DaysInMonth[1]=29;
448	}	
449	return DaysInMonth[this.Month];	
450}
451Calendar.prototype.GetMonDays=GetMonDays;
452
453function IsLeapYear()
454{
455	if ((this.Year%4)==0)
456	{
457		if ((this.Year%100==0) && (this.Year%400)!=0)
458		{
459			return false;
460		}
461		else
462		{
463			return true;
464		}
465	}
466	else
467	{
468		return false;
469	}
470}
471Calendar.prototype.IsLeapYear=IsLeapYear;
472
473function FormatDate(pDate)
474{
475	if (this.Format.toUpperCase()=="DDMMYYYY")
476		return (pDate+DateSeparator+(this.Month+1)+DateSeparator+this.Year);
477	else if (this.Format.toUpperCase()=="DDMMMYYYY")
478		return (pDate+DateSeparator+this.GetMonthName(false)+DateSeparator+this.Year);
479	else if (this.Format.toUpperCase()=="MMDDYYYY")
480		return ((this.Month+1)+DateSeparator+pDate+DateSeparator+this.Year);
481	else if (this.Format.toUpperCase()=="MMMDDYYYY")
482		return (this.GetMonthName(false)+DateSeparator+pDate+DateSeparator+this.Year);			
483}
484Calendar.prototype.FormatDate=FormatDate;	

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.