summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'calendar.js')
-rw-r--r--calendar.js226
1 files changed, 226 insertions, 0 deletions
diff --git a/calendar.js b/calendar.js
new file mode 100644
index 0000000..7945900
--- /dev/null
+++ b/calendar.js
@@ -0,0 +1,226 @@
+var mas = mas || new Object();
+mas.calendar = new Object();
+mas.calendar.private = new Object();
+mas.calendar.private.curriculum_groups_file = new Array();
+mas.calendar.private.curriculum_classes_file = new Array();
+mas.calendar.private.groups_url_sources = null;
+
+mas.calendar.curriculums = null;
+mas.calendar.groups = null;
+mas.calendar.classes = null;
+mas.calendar.output_url = null;
+mas.calendar.qrcode = null;
+mas.calendar.url_sources = null;
+
+mas.calendar.private.add_curriculum =
+function (id, fullname, groups, classes)
+{
+ var entry;
+
+ if (fullname == "")
+ {
+ return;
+ }
+
+ entry = "<option value=" + id + ">" + fullname + "</option>";
+
+ mas.calendar.curriculums.innerHTML = entry + mas.calendar.curriculums.innerHTML;
+
+ mas.calendar.private.curriculum_groups_file[id] = groups;
+ mas.calendar.private.curriculum_classes_file[id] = classes;
+};
+
+mas.calendar.private.add_group =
+function (data)
+{
+ var entry, i, url_sources;
+
+ if (data[0] == "")
+ {
+ return;
+ }
+
+ url_sources = new Array();
+
+ for (i = 3; i < data.length; i += 2)
+ {
+ url_sources.push(data[i]);
+ }
+
+ mas.calendar.private.groups_url_sources[data[1]] = url_sources;
+
+ entry = "<option value=" + data[1] + ">" + data[0] + "</option>";
+
+ mas.calendar.groups.innerHTML = entry + mas.calendar.groups.innerHTML;
+};
+
+mas.calendar.private.add_class =
+function (fullname, id)
+{
+ var entry;
+
+ if (fullname == "")
+ {
+ return;
+ }
+
+ entry =
+ (
+ "<tr><td class=\"class_checkbox\"><input type=\"checkbox\" "
+ + "onclick=\"mas.calendar.generate_url();\" name=\"classes\" value=\""
+ + id
+ + "\" /></td><td class=\"class_id\">"
+ + id
+ + "</td><td class=\"class_fullname\">"
+ + fullname
+ + "</td></tr>"
+ );
+
+ mas.calendar.classes.innerHTML = entry + mas.calendar.classes.innerHTML;
+};
+
+mas.calendar.private.load_curriculums =
+function ()
+{
+ var lines, i, val;
+
+ lines = this.responseText.split('\n');
+
+ for (i = lines.length; i --> 0;)
+ {
+ val = lines[i].split("::");
+ mas.calendar.private.add_curriculum(i, val[0], val[1], val[2]);
+ }
+
+ mas.calendar.select_curriculum();
+};
+
+mas.calendar.private.load_groups =
+function ()
+{
+ var lines, i, j, val;
+
+ mas.calendar.groups.innerHTML = "";
+ mas.calendar.private.groups_url_sources = new Array();
+
+ lines = this.responseText.split('\n');
+
+ for (i = lines.length; i --> 0;)
+ {
+ val = lines[i].split("::");
+ mas.calendar.private.add_group(val);
+ }
+
+ mas.calendar.select_group();
+};
+
+mas.calendar.private.load_classes =
+function ()
+{
+ var lines, i, val;
+
+ mas.calendar.classes.innerHTML = "";
+
+ lines = this.responseText.split('\n');
+
+ for (i = lines.length; i --> 0;)
+ {
+ val = lines[i].split("::");
+ mas.calendar.private.add_class(val[0], val[2]);
+ }
+
+ mas.calendar.generate_url();
+};
+
+mas.calendar.private.get_file =
+function (file, fun)
+{
+ var req
+ req = new XMLHttpRequest();
+
+ req.onload = fun;
+
+ req.open("get", file, true);
+ req.send();
+};
+
+mas.calendar.select_curriculum =
+function ()
+{
+ var fullname;
+
+ fullname = mas.calendar.curriculums.value;
+
+ mas.calendar.private.get_file
+ (
+ ("data/" + mas.calendar.private.curriculum_groups_file[fullname]),
+ mas.calendar.private.load_groups
+ );
+
+ mas.calendar.private.get_file
+ (
+ ("data/" + mas.calendar.private.curriculum_classes_file[fullname]),
+ mas.calendar.private.load_classes
+ );
+};
+
+mas.calendar.select_group =
+function ()
+{
+ var data, i, result;
+
+ mas.calendar.url_sources.innerHTML = "";
+
+ data = mas.calendar.private.groups_url_sources[mas.calendar.groups.value];
+ result = "";
+
+ for (i = 0; i < data.length; ++i)
+ {
+ result += "<li>" + data[i] + "</li>";
+ }
+
+ mas.calendar.url_sources.innerHTML = result;
+};
+
+mas.calendar.populate =
+function ()
+{
+ mas.calendar.curriculums = document.getElementById("curriculums");
+ mas.calendar.groups = document.getElementById("groups");
+ mas.calendar.classes = document.getElementById("classes");
+ mas.calendar.output_url = document.getElementById("output_url");
+ mas.calendar.qrcode = document.getElementById("qrcode");
+ mas.calendar.url_sources = document.getElementById("url_sources");
+
+ mas.calendar.private.get_file
+ (
+ "data/CURRICULUMS",
+ mas.calendar.private.load_curriculums
+ );
+};
+
+mas.calendar.generate_url =
+function ()
+{
+ var url, loc, i, classes;
+
+ url = document.location.href.toString();
+ loc = url.substring(0, (url.lastIndexOf("/") + 1));
+ loc = loc + "get.php?g=" + mas.calendar.groups.value + "&m=unknown,";
+
+ classes = document.getElementsByName("classes");
+
+ for (i = classes.length; i --> 0;)
+ {
+ if (classes[i].checked)
+ {
+ loc = loc + classes[i].value + ",";
+ }
+ }
+
+ loc = loc.substring(0, (loc.length - 1));
+
+ mas.calendar.qrcode.innerHTML= "";
+ mas.calendar.output_url.setAttribute("value", loc);
+ jQuery('#qrcode').qrcode(loc);
+};