| 6137 | } }; |
| 6138 | } |
| 6139 | function extend$8(scheduler2) { |
| 6140 | scheduler2.ical = scheduler2._parsers.ical = { canParse: function(data) { |
| 6141 | if (typeof data === "string") { |
| 6142 | return new RegExp("^BEGIN:VCALENDAR").test(data); |
| 6143 | } |
| 6144 | return false; |
| 6145 | }, parse: function(str) { |
| 6146 | var data = str.match(RegExp(this.c_start + "[^\f]*" + this.c_end, "")); |
| 6147 | if (!data.length) |
| 6148 | return; |
| 6149 | data[0] = data[0].replace(/[\r\n]+ /g, ""); |
| 6150 | data[0] = data[0].replace(/[\r\n]+(?=[a-z \t])/g, " "); |
| 6151 | data[0] = data[0].replace(/;[^:\r\n]*:/g, ":"); |
| 6152 | var incoming = []; |
| 6153 | var match; |
| 6154 | var event_r = RegExp("(?:" + this.e_start + ")([^\f]*?)(?:" + this.e_end + ")", "g"); |
| 6155 | while ((match = event_r.exec(data)) !== null) { |
| 6156 | var e = {}; |
| 6157 | var param; |
| 6158 | var param_r = /[^\r\n]+[\r\n]+/g; |
| 6159 | while ((param = param_r.exec(match[1])) !== null) |
| 6160 | this.parse_param(param.toString(), e); |
| 6161 | if (e.uid && !e.id) |
| 6162 | e.id = e.uid; |
| 6163 | incoming.push(e); |
| 6164 | } |
| 6165 | return incoming; |
| 6166 | }, parse_param: function(str, obj) { |
| 6167 | var d = str.indexOf(":"); |
| 6168 | if (d == -1) |
| 6169 | return; |
| 6170 | var name = str.substr(0, d).toLowerCase(); |
| 6171 | var value = str.substr(d + 1).replace(/\\,/g, ",").replace(/[\r\n]+$/, ""); |
| 6172 | if (name == "summary") |
| 6173 | name = "text"; |
| 6174 | else if (name == "dtstart") { |
| 6175 | name = "start_date"; |
| 6176 | value = this.parse_date(value, 0, 0); |
| 6177 | } else if (name == "dtend") { |
| 6178 | name = "end_date"; |
| 6179 | value = this.parse_date(value, 0, 0); |
| 6180 | } |
| 6181 | obj[name] = value; |
| 6182 | }, parse_date: function(value, dh, dm) { |
| 6183 | var t2 = value.split("T"); |
| 6184 | var utcMark = false; |
| 6185 | if (t2[1]) { |
| 6186 | dh = t2[1].substr(0, 2); |
| 6187 | dm = t2[1].substr(2, 2); |
| 6188 | utcMark = !!(t2[1][6] == "Z"); |
| 6189 | } |
| 6190 | var dy = t2[0].substr(0, 4); |
| 6191 | var dn = parseInt(t2[0].substr(4, 2), 10) - 1; |
| 6192 | var dd = t2[0].substr(6, 2); |
| 6193 | if (scheduler2.config.server_utc || utcMark) { |
| 6194 | return new Date(Date.UTC(dy, dn, dd, dh, dm)); |
| 6195 | } else { |
| 6196 | return new Date(dy, dn, dd, dh, dm); |