{"dojo.cal.iCalendar":{"meta":{"requires":{"common":["dojo.lang.common","dojo.cal.textDirectory","dojo.date.common","dojo.date.serialize"]},"functions":{"dojo.cal.iCalendar.fromText":{"meta":{"summary":"Parse text of an iCalendar and return an array of iCalendar objects","parameters":{"text":{"type":"string"}},"src":"\tvar properties = dojo.cal.textDirectory.tokenise(text);\n\tvar calendars = [];\n\t\/\/dojo.debug(\"Parsing iCal String\");\n\tfor (var i = 0, begun = false; i < properties.length; i++) {\n\t\tvar prop = properties[i];\n\t\tif (!begun) {\n\t\t\tif (prop.name == 'BEGIN' && prop.value == 'VCALENDAR') {\n\t\t\t\tbegun = true;\n\t\t\t\tvar calbody = [];\n\t\t\t}\n\t\t} else if (prop.name == 'END' && prop.value == 'VCALENDAR') {\n\t\t\tcalendars.push(new dojo.cal.iCalendar.VCalendar(calbody));\n\t\t\tbegun = false;\n\t\t} else {\n\t\t\tcalbody.push(prop);\n\t\t}\n\t}\n\treturn \/* array *\/calendars;"}},"dojo.cal.iCalendar.Component":{"meta":{"summary":"A component is the basic container of all this stuff.","parameters":{"body":{"type":"string"}},"src":"\tif (!this.name) {\n\t\tthis.name = \"COMPONENT\"\n\t}\n\tthis.properties = [];\n\tthis.components = [];\n\tif (body) {\n\t\tfor (var i = 0, context = ''; i < body.length; i++) {\n\t\t\tif (context == '') {\n\t\t\t\tif (body[i].name == 'BEGIN') {\n\t\t\t\t\tcontext = body[i].value;\n\t\t\t\t\tvar childprops = [];\n\t\t\t\t} else {\n\t\t\t\t\tthis.addProperty(new dojo.cal.iCalendar.Property(body[i]));\n\t\t\t\t}\n\t\t\t} else if (body[i].name == 'END' && body[i].value == context) {\n\t\t\t\tif (context==\"VEVENT\") {\n\t\t\t\t\tthis.addComponent(new dojo.cal.iCalendar.VEvent(childprops));\n\t\t\t\t} else if (context==\"VTIMEZONE\") {\n\t\t\t\t\tthis.addComponent(new dojo.cal.iCalendar.VTimeZone(childprops));\n\t\t\t\t} else if (context==\"VTODO\") {\n\t\t\t\t\tthis.addComponent(new dojo.cal.iCalendar.VTodo(childprops));\n\t\t\t\t} else if (context==\"VJOURNAL\") {\n\t\t\t\t\tthis.addComponent(new dojo.cal.iCalendar.VJournal(childprops));\n\t\t\t\t} else if (context==\"VFREEBUSY\") {\n\t\t\t\t\tthis.addComponent(new dojo.cal.iCalendar.VFreeBusy(childprops));\n\t\t\t\t} else if (context==\"STANDARD\") {\n\t\t\t\t\tthis.addComponent(new dojo.cal.iCalendar.Standard(childprops));\n\t\t\t\t} else if (context==\"DAYLIGHT\") {\n\t\t\t\t\tthis.addComponent(new dojo.cal.iCalendar.Daylight(childprops));\n\t\t\t\t} else if (context==\"VALARM\") {\n\t\t\t\t\tthis.addComponent(new dojo.cal.iCalendar.VAlarm(childprops));\n\t\t\t\t}else {\n\t\t\t\t\tdojo.unimplemented(\"dojo.cal.iCalendar.\" + context);\n\t\t\t\t}\n\t\t\t\tcontext = '';\n\t\t\t} else {\n\t\t\t\tchildprops.push(body[i]);\n\t\t\t}\n\t\t}\n\t\tif (this._ValidProperties) {\n\t\t\tthis.postCreate();\n\t\t}\n\t}","instance_variables":["name","properties","components"]}},"dojo.cal.iCalendar.Property":{"meta":{"summary":"A single property of a component.","parameters":{"prop":{"type":""}},"src":"\t\/\/ unpack the values\n\tthis.name = prop.name;\n\tthis.group = prop.group;\n\tthis.params = prop.params;\n\tthis.value = prop.value;","instance_variables":["name","group","params","value"]}},"_P":{"meta":{"summary":"","parameters":{"n":{"type":""},"oc":{"type":""},"req":{"type":""}},"src":" return {name: n, required: (req) ? true : false,\n\t\toccurance: (oc == '*' || !oc) ? -1 : oc}"}},"dojo.cal.iCalendar.VCalendar":{"meta":{"summary":"VCALENDAR Component","parameters":{"calbody":{"type":"string"}},"src":"\tthis.name = \"VCALENDAR\";\n\tthis.recurring = [];\n\tthis.nonRecurringEvents = function(){};\n\tdojo.cal.iCalendar.Component.call(this, calbody);","instance_variables":["name","recurring","nonRecurringEvents"],"call_chain":["dojo.cal.iCalendar.Component"],"prototype_chain":["dojo.cal.iCalendar.Component"]}},"dojo.cal.iCalendar.VCalendar.nonRecurringEvents":{"meta":{"summary":"","src":"","instance":"dojo.cal.iCalendar.VCalendar"}},"dojo.cal.iCalendar.Standard":{"meta":{"summary":"STANDARD Component","parameters":{"body":{"type":"string"}},"src":"\tthis.name = \"STANDARD\";\n\tthis._ValidProperties = StandardProperties;\n\tdojo.cal.iCalendar.Component.call(this, body);","instance_variables":["name","_ValidProperties"],"call_chain":["dojo.cal.iCalendar.Component"],"prototype_chain":["dojo.cal.iCalendar.Component"]}},"dojo.cal.iCalendar.Daylight":{"meta":{"summary":"Daylight Component","parameters":{"body":{"type":"string"}},"src":" this.name = \"DAYLIGHT\";\n\tthis._ValidProperties = DaylightProperties;\n\tdojo.cal.iCalendar.Component.call(this, body);","instance_variables":["name","_ValidProperties"],"call_chain":["dojo.cal.iCalendar.Component"],"prototype_chain":["dojo.cal.iCalendar.Component"]}},"dojo.cal.iCalendar.VEvent":{"meta":{"summary":"VEVENT Component","parameters":{"body":{"type":"string"}},"src":" this._ValidProperties = VEventProperties;\n\tthis.name = \"VEVENT\";\n\tdojo.cal.iCalendar.Component.call(this, body);\n\tthis.recurring = false;\n\tthis.startDate = dojo.date.fromIso8601(this.dtstart.value);","instance_variables":["_ValidProperties","name","recurring","startDate"],"call_chain":["dojo.cal.iCalendar.Component"],"prototype_chain":["dojo.cal.iCalendar.Component"]}},"dojo.cal.iCalendar.VTimeZone":{"meta":{"summary":"VTIMEZONE Component","parameters":{"body":{"type":"string"}},"src":" this.name = \"VTIMEZONE\";\n\tthis._ValidProperties = VTimeZoneProperties;\n\tdojo.cal.iCalendar.Component.call(this, body);","instance_variables":["name","_ValidProperties"],"call_chain":["dojo.cal.iCalendar.Component"],"prototype_chain":["dojo.cal.iCalendar.Component"]}},"dojo.cal.iCalendar.VTodo":{"meta":{"summary":"VTODO Componenet","parameters":{"body":{"type":"string"}},"src":" this.name = \"VTODO\";\n\tthis._ValidProperties = VTodoProperties;\n\tdojo.cal.iCalendar.Component.call(this, body);","instance_variables":["name","_ValidProperties"],"call_chain":["dojo.cal.iCalendar.Component"],"prototype_chain":["dojo.cal.iCalendar.Component"]}},"dojo.cal.iCalendar.VJournal":{"meta":{"summary":"VJOURNAL Component","parameters":{"body":{"type":"string"}},"src":" this.name = \"VJOURNAL\";\n\tthis._ValidProperties = VJournalProperties;\n\tdojo.cal.iCalendar.Component.call(this, body);","instance_variables":["name","_ValidProperties"],"call_chain":["dojo.cal.iCalendar.Component"],"prototype_chain":["dojo.cal.iCalendar.Component"]}},"dojo.cal.iCalendar.VFreeBusy":{"meta":{"summary":"VFREEBUSY Component","parameters":{"body":{"type":"string"}},"src":" this.name = \"VFREEBUSY\";\n\tthis._ValidProperties = VFreeBusyProperties;\n\tdojo.cal.iCalendar.Component.call(this, body);","instance_variables":["name","_ValidProperties"],"call_chain":["dojo.cal.iCalendar.Component"],"prototype_chain":["dojo.cal.iCalendar.Component"]}},"dojo.cal.iCalendar.VAlarm":{"meta":{"summary":"VALARM Component","parameters":{"body":{"type":"string"}},"src":" this.name = \"VALARM\";\n\tthis._ValidProperties = VAlarmProperties;\n\tdojo.cal.iCalendar.Component.call(this, body);","instance_variables":["name","_ValidProperties"],"call_chain":["dojo.cal.iCalendar.Component"],"prototype_chain":["dojo.cal.iCalendar.Component"]}},"dojo.cal.iCalendar.Component.addProperty":{"meta":{"summary":"push a new property onto a component.","parameters":{"prop":{"type":""}},"src":" \tthis.properties.push(prop);\n\t\tthis[prop.name.toLowerCase()] = prop;"}},"dojo.cal.iCalendar.Component.addComponent":{"meta":{"summary":"add a component to this components list of children.","parameters":{"prop":{"type":""}},"src":" \tthis.components.push(prop);"}},"dojo.cal.iCalendar.Component.postCreate":{"meta":{"summary":"","src":" \tfor (var x=0; x 0) {\n\t\t\treturn events;\n\t\t} \n\t\treturn null;\t\t\t"}},"dojo.cal.iCalendar.VEvent.getDates":{"meta":{"summary":"","parameters":{"until":{"type":""}},"src":" \t\tvar dtstart = this.getDate();\n\t\t\tvar recurranceSet = [];\n\t\t\tvar weekdays=[\"su\",\"mo\",\"tu\",\"we\",\"th\",\"fr\",\"sa\"];\n\t\t\tvar order = { \n\t\t\t\t\"daily\": 1, \"weekly\": 2, \"monthly\": 3, \"yearly\": 4,\n\t\t\t\t\"byday\": 1, \"bymonthday\": 1, \"byweekno\": 2, \"bymonth\": 3, \"byyearday\": 4};\n\t\t\t\/\/ expand rrules into the recurrance \n\t\t\tfor (var x=0; x interval) {\n\t\t\t\t\tinterval = rrule.interval;\n\t\t\t\t}\n\t\t\t\tvar set = [];\n\t\t\t\tvar freqInt = order[freq];\n\t\t\t\tif (rrule.until) {\n\t\t\t\t\tvar tmpUntil = dojo.date.fromIso8601(rrule.until);\n\t\t\t\t} else {\n\t\t\t\t\tvar tmpUntil = until\n\t\t\t\t}\n\t\t\t\tif (tmpUntil > until) {\n\t\t\t\t\ttmpUntil = until\n\t\t\t\t}\n\t\t\t\tif (dtstart 1) {\n\t\t\t\t\t\t\tvar regex = \"([+-]?)([0-9]{1,3})\";\n\t\t\t\t\t\t\tfor (var z=1; x 0) {\n\t\t\t\t\t\t\tvar regex = \"([+-]?)([0-9]{1,3})\";\n\t\t\t\t\t\t\tfor (var z=0; z 0) {\n\t\t\t\t\t\t\t\tvar regex = \"([+-]?)([0-9]{0,1}?)([A-Za-z]{1,2})\";\n\t\t\t\t\t\t\t\tfor (var z=0; z 0) {\n\t\tvar arr = this.name.split('.');\n\t\tthis.group = arr[0];\n\t\tthis.name = arr[1];\n\t}\n\t\/\/ don't do any parsing, leave to implementation\n\tthis.value = right;","instance_variables":["name","params","group","value"]}},"dojo.cal.textDirectory.tokenise":{"meta":{"summary":"","parameters":{"text":{"type":""}},"src":" var nText = dojo.string.normalizeNewlines(text,\"\\n\");\n\tnText = nText.replace(\/\\n[ \\t]\/g, '');\n\tnText = nText.replace(\/\\x00\/g, '');\n\tvar lines = nText.split(\"\\n\");\n\tvar properties = []\n\tfor (var i = 0; i < lines.length; i++) {\n\t\tif (dojo.string.trim(lines[i]) == '') { continue; }\n\t\tvar prop = new dojo.cal.textDirectory.Property(lines[i]);\n\t\tproperties.push(prop);\n\t}\n\treturn properties;"}}}}}}