| summaryrefslogtreecommitdiff |
path: root/calendar.js
diff options
Diffstat (limited to 'calendar.js')
| -rw-r--r-- | calendar.js | 226 |
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); +}; |


