source: sandbox/2.3-MailArchiver/calendar/js/dhtmlx/sources/base.js @ 6779

Revision 6779, 4.7 KB checked in by rafaelraymundo, 12 years ago (diff)

Ticket #2946 - Liberado Expresso(branch 2.3) integrado ao MailArchiver?.

Line 
1scheduler.date={
2        date_part:function(date){
3                date.setHours(0);
4                date.setMinutes(0);
5                date.setSeconds(0);
6                date.setMilliseconds(0);       
7                return date;
8        },
9        time_part:function(date){
10                return (date.valueOf()/1000 - date.getTimezoneOffset()*60)%86400;
11        },
12        week_start:function(date){
13                        var shift=date.getDay();
14                        if (scheduler.config.start_on_monday){
15                                if (shift==0) shift=6
16                                else shift--;
17                        }
18                        return this.date_part(this.add(date,-1*shift,"day"));
19        },
20        month_start:function(date){
21                date.setDate(1);
22                return this.date_part(date);
23        },
24        year_start:function(date){
25                date.setMonth(0);
26                return this.month_start(date);
27        },
28        day_start:function(date){
29                        return this.date_part(date);
30        },
31        add:function(date,inc,mode){
32                var ndate=new Date(date.valueOf());
33                switch(mode){
34                        case "day": ndate.setDate(ndate.getDate()+inc); break;
35                        case "week": ndate.setDate(ndate.getDate()+7*inc); break;
36                        case "month": ndate.setMonth(ndate.getMonth()+inc); break;
37                        case "year": ndate.setYear(ndate.getFullYear()+inc); break;
38                        case "hour": ndate.setHours(ndate.getHours()+inc); break;
39                        case "minute": ndate.setMinutes(ndate.getMinutes()+inc); break;
40                        default:
41                                return scheduler.date["add_"+mode](date,inc,mode);
42                }
43                return ndate;
44        },
45        to_fixed:function(num){
46                if (num<10)     return "0"+num;
47                return num;
48        },
49        copy:function(date){
50                return new Date(date.valueOf());
51        },
52        date_to_str:function(format,utc){
53                format=format.replace(/%[a-zA-Z]/g,function(a){
54                        switch(a){
55                                case "%d": return "\"+scheduler.date.to_fixed(date.getDate())+\"";
56                                case "%m": return "\"+scheduler.date.to_fixed((date.getMonth()+1))+\"";
57                                case "%j": return "\"+date.getDate()+\"";
58                                case "%n": return "\"+(date.getMonth()+1)+\"";
59                                case "%y": return "\"+scheduler.date.to_fixed(date.getFullYear()%100)+\"";
60                                case "%Y": return "\"+date.getFullYear()+\"";
61                                case "%D": return "\"+scheduler.locale.date.day_short[date.getDay()]+\"";
62                                case "%l": return "\"+scheduler.locale.date.day_full[date.getDay()]+\"";
63                                case "%M": return "\"+scheduler.locale.date.month_short[date.getMonth()]+\"";
64                                case "%F": return "\"+scheduler.locale.date.month_full[date.getMonth()]+\"";
65                                case "%h": return "\"+scheduler.date.to_fixed((date.getHours()+11)%12+1)+\"";
66                                case "%g": return "\"+((date.getHours()+11)%12+1)+\"";
67                                case "%G": return "\"+date.getHours()+\"";
68                                case "%H": return "\"+scheduler.date.to_fixed(date.getHours())+\"";
69                                case "%i": return "\"+scheduler.date.to_fixed(date.getMinutes())+\"";
70                                case "%a": return "\"+(date.getHours()>11?\"pm\":\"am\")+\"";
71                                case "%A": return "\"+(date.getHours()>11?\"PM\":\"AM\")+\"";
72                                case "%s": return "\"+scheduler.date.to_fixed(date.getSeconds())+\"";
73                                case "%W": return "\"+scheduler.date.to_fixed(scheduler.date.getISOWeek(date))+\"";
74                                default: return a;
75                        }
76                })
77                if (utc) format=format.replace(/date\.get/g,"date.getUTC");
78                return new Function("date","return \""+format+"\";");
79        },
80        str_to_date:function(format,utc){
81                var splt="var temp=date.split(/[^0-9a-zA-Z]+/g);";
82                var mask=format.match(/%[a-zA-Z]/g);
83                for (var i=0; i<mask.length; i++){
84                        switch(mask[i]){
85                                case "%j":
86                                case "%d": splt+="set[2]=temp["+i+"]||1;";
87                                        break;
88                                case "%n":
89                                case "%m": splt+="set[1]=(temp["+i+"]||1)-1;";
90                                        break;
91                                case "%y": splt+="set[0]=temp["+i+"]*1+(temp["+i+"]>50?1900:2000);";
92                                        break;
93                                case "%g":
94                                case "%G":
95                                case "%h":
96                                case "%H":
97                                                        splt+="set[3]=temp["+i+"]||0;";
98                                        break;
99                                case "%i":
100                                                        splt+="set[4]=temp["+i+"]||0;";
101                                        break;
102                                case "%Y":  splt+="set[0]=temp["+i+"]||0;";
103                                        break;
104                                case "%a":                                     
105                                case "%A":  splt+="set[3]=set[3]%12+((temp["+i+"]||'').toLowerCase()=='am'?0:12);";
106                                        break;                                 
107                                case "%s":  splt+="set[5]=temp["+i+"]||0;";
108                                        break;
109                        }
110                }
111                var code ="set[0],set[1],set[2],set[3],set[4],set[5]";
112                if (utc) code =" Date.UTC("+code+")";
113                return new Function("date","var set=[0,0,1,0,0,0]; "+splt+" return new Date("+code+");");
114        },
115               
116        getISOWeek: function(ndate) {
117                if(!ndate) return false;
118                var nday = ndate.getDay();
119                if (nday == 0) {
120                        nday = 7;
121                }
122                var first_thursday = new Date(ndate.valueOf());
123                first_thursday.setDate(ndate.getDate() + (4 - nday));
124                var year_number = first_thursday.getFullYear(); // year of the first Thursday
125                var ordinal_date = Math.floor( (first_thursday.getTime() - new Date(year_number, 0, 1).getTime()) / 86400000); //ordinal date of the first Thursday - 1 (so not really ordinal date)
126                var week_number = 1 + Math.floor( ordinal_date / 7);   
127                return week_number;
128        },
129       
130        getUTCISOWeek: function(ndate){
131        return this.getISOWeek(ndate);
132   }
133}
Note: See TracBrowser for help on using the repository browser.