/adei/ui

To get this branch, use:
bzr branch http://darksoft.org/webbzr/adei/ui

« back to all changes in this revision

Viewing changes to includes/datetimepicker.js.orig

  • Committer: Suren A. Chilingaryan
  • Date: 2008-04-02 10:23:22 UTC
  • Revision ID: csa@dside.dyndns.org-20080402102322-okib92sicg2dx3o3
Initial import

Show diffs side-by-side

added added

removed removed

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