source: branches/2.2.0.1/calendar/js/dhtmlx/sources/ical.js @ 4001

Revision 4001, 1.8 KB checked in by rafaelraymundo, 13 years ago (diff)

Ticket #1615 - Componente novo para agenda......................................

Line 
1scheduler.ical={
2        parse:function(str){
3                var data = str.match(RegExp(this.c_start+"[^\f]*"+this.c_end,""));
4                if (!data.length) return;
5               
6                //unfolding
7                data[0]=data[0].replace(/[\r\n]+(?=[a-z \t])/g," ");
8                //drop property
9                data[0]=data[0].replace(/\;[^:\r\n]*/g,"");
10               
11               
12                var incoming=[];
13                var match;
14                var event_r = RegExp("(?:"+this.e_start+")([^\f]*?)(?:"+this.e_end+")","g");
15                while (match=event_r.exec(data)){
16                        var e={};
17                        var param;
18                        var param_r = /[^\r\n]+[\r\n]+/g;
19                        while (param=param_r.exec(match[1]))
20                                this.parse_param(param.toString(),e);
21                        if (e.uid && !e.id) e.id = e.uid; //fallback to UID, when ID is not defined
22                        incoming.push(e);       
23                }
24                return incoming;
25        },
26        parse_param:function(str,obj){
27                var d = str.indexOf(":");
28                        if (d==-1) return;
29               
30                var name = str.substr(0,d).toLowerCase();
31                var value = str.substr(d+1).replace(/\\\,/g,",").replace(/[\r\n]+$/,"");
32                if (name=="summary")
33                        name="text";
34                else if (name=="dtstart"){
35                        name = "start_date";
36                        value = this.parse_date(value,0,0);
37                }
38                else if (name=="dtend"){
39                        name = "end_date";
40                        if (obj.start_date && obj.start_date.getHours()==0)
41                                value = this.parse_date(value,24,00);
42                        else
43                                value = this.parse_date(value,23,59);
44                }
45                obj[name]=value;
46        },
47        parse_date:function(value,dh,dm){
48                var t = value.split("T");       
49                if (t[1]){
50                        dh=t[1].substr(0,2);
51                        dm=t[1].substr(2,2);
52                }
53                var dy = t[0].substr(0,4);
54                var dn = parseInt(t[0].substr(4,2),10)-1;
55                var dd = t[0].substr(6,2);
56                if (scheduler.config.server_utc && !t[1]) { // if no hours/minutes were specified == full day event
57                        return new Date(Date.UTC(dy,dn,dd,dh,dm)) ;
58                }
59                return new Date(dy,dn,dd,dh,dm);
60        },
61        c_start:"BEGIN:VCALENDAR",
62        e_start:"BEGIN:VEVENT",
63        e_end:"END:VEVENT",
64        c_end:"END:VCALENDAR"   
65};
Note: See TracBrowser for help on using the repository browser.