|
Home - Old Man Programmer
| Displaying webapps/scheduler/main.js
var _tabs = new Array();
var _body, _active = null;
var disable_flag = new Boolean(false);
function startup() {
_body = document.getElementById("body");
_tabs[0] = new schedule_class("Main");
var e = new schedule_event();
for(var d = 1; d < 6; d++) e.day[d] = 1;
add_event(_tabs[0], e);
refresh_body(_tabs[0]);
for(var i = 0; i < 5; i++) {
if (localStorage.getItem("schedule"+i+"data") == undefined) {
localStorage.setItem("schedule"+i+"data", "");
localStorage.setItem("schedule"+i+"name", "");
localStorage.setItem("schedule"+i+"date", "");
}
}
}
function save_tab() {
if (_active == null) return;
var sc = _active;
sc.description = document.getElementById(sc.id + "desc").value;
sc.color = document.getElementById(sc.id + "color").value;
}
function switch_tab(id) {
if(disable_flag == true) return;
save_tab();
var tabs = document.getElementById("tabs");
for(var c = 0; c < tabs.children.length; c++) {
if (tabs.children[c].className = "activetab")
tabs.children[c].setAttribute("class", "tab");
}
var t = document.getElementById(id);
t.setAttribute("class", "activetab");
for(var i=0; i < _tabs.length; i++) {
if (_tabs[i].id == id) {
refresh_body(_tabs[i]);
break;
}
}
}
function refresh_body(sc) {
var t = new Array();
var row;
_body.innerHTML = "Description: ";
_body.appendChild(el("input", null, {type:'textbox', id:sc.id + "desc", size: 30, value:sc.description}));
_body.appendChild(el("input", null, {class:"color", id:sc.id + "color", size: 6, value: sc.color}));
for(var i = 0; i < sc.events.length; i++) {
if (i % 3 == 0) {
if (i) t.push(el("tr", row));
row = new Array();
}
row.push(el("td", [ make_event_table(sc.events[i]) ]));
}
if (i && row.length) {
t.push(el("tr", row));
}
_body.appendChild(el("table", t));
_body.appendChild(el("button", null, {id:sc.id+"add", innerHTML:"+", onclick: "newevent();", style: "margin-left:123px;"}));
jscolor.bind();
_active = sc;
}
function make_event_table(e) {
var cl = "event" + ((e.end.hour < e.start.hour || (e.end.hour == e.start.hour && e.end.min <= e.start.min))? " alert" : "");
var t = el("table", [
el("tr", [
el("td", null, {innerHTML: "Start:"}),
el("td", [hoursel(e.start.hour, e, 0)]),
el("td", null, {innerHTML:":"}),
el("td", [minsel(e.start.min, e, 0)]),
el("td", [el("button", null, {innerHTML: "X", onclick: "delevent('"+e.id+"');"})], {rowspan: 2})
]),
el("tr", [
el("td", null, {innerHTML: "End:"}),
el("td", [hoursel(e.end.hour, e, 1)]),
el("td", null, {innerHTML:":"}),
el("td", [minsel(e.end.min, e, 1)])
]),
el("tr", [
el("td", [
el("button", null, {innerHTML: "S", id: e.id+"day0", onclick:"day(0,'"+e.id+"');", class: e.day[0]? "on" : "off"}),
el("button", null, {innerHTML: "M", id: e.id+"day1", onclick:"day(1,'"+e.id+"');", class: e.day[1]? "on" : "off"}),
el("button", null, {innerHTML: "T", id: e.id+"day2", onclick:"day(2,'"+e.id+"');", class: e.day[2]? "on" : "off"}),
el("button", null, {innerHTML: "W", id: e.id+"day3", onclick:"day(3,'"+e.id+"');", class: e.day[3]? "on" : "off"}),
el("button", null, {innerHTML: "T", id: e.id+"day4", onclick:"day(4,'"+e.id+"');", class: e.day[4]? "on" : "off"}),
el("button", null, {innerHTML: "F", id: e.id+"day5", onclick:"day(5,'"+e.id+"');", class: e.day[5]? "on" : "off"}),
el("button", null, {innerHTML: "S", id: e.id+"day6", onclick:"day(6,'"+e.id+"');", class: e.day[6]? "on" : "off"})
],{colspan: 5})
]),
], {id: e.id, class:cl});
return t;
}
function display_event(e) {
_body.appendChild(make_event_table(e));
}
function add_event(sc, evnt) {
sc.events.push(evnt);
}
function schedule_class(name) {
this.name = name;
this.id = newid();
this.color = "";
this.description = "";
this.events = new Array();
var tabs = document.getElementById("tabs");
for(var c = 0; c < tabs.children.length; c++) {
if (tabs.children[c].className = "activetab")
tabs.children[c].setAttribute("class", "tab");
}
tabs.appendChild(el("div", null, {id:this.id, class:'activetab',innerHTML:name, onclick:'switch_tab("'+this.id+'");'}));
refresh_body(this);
}
function get_event(id) {
for(var i = 0; i < _active.events.length; i++)
if (_active.events[i].id == id) return _active.events[i];
}
function delevent(id) {
if(disable_flag == true) return;
var e = get_event(id);
if (_active.name == "Main" && _active.events.length == 1) {
window.alert("You cannot delete the last event in the Main tab.");
return;
}
for(var i=0; i< _active.events.length; i++) {
if (_active.events[i] == e) {
_active.events.splice(i,1);
refresh_body(_active);
if(!_active.events.length)
deltab(_active.id);
return;
}
}
}
function day(d, id) {
if(disable_flag == true) return;
var e = get_event(id);
e.day[d] = (e.day[d]+1) % 2;
document.getElementById(e.id+"day"+d).setAttribute("class", e.day[d]? "on" : "off");
}
function updatehour(id, what) {
var e = get_event(id);
var v = document.getElementById(e.id+"hour-"+(what?"end":"start")).value;
if (what) {
e.end.hour = parseInt(v);
} else {
e.start.hour = parseInt(v);
}
if (e.end.hour < e.start.hour || (e.end.hour == e.start.hour && e.end.min <= e.start.min)) {
document.getElementById(e.id).setAttribute("class","event alert");
} else {
document.getElementById(e.id).setAttribute("class","event");
}
}
function updatemin(id, what) {
var e = get_event(id);
var v = document.getElementById(e.id+"min-"+(what?"end":"start")).value;
if (what) {
e.end.min = parseInt(v);
} else {
e.start.min = parseInt(v);
}
if (e.end.hour < e.start.hour || (e.end.hour == e.start.hour && e.end.min <= e.start.min)) {
document.getElementById(e.id).setAttribute("class","event alert");
} else {
document.getElementById(e.id).setAttribute("class","event");
}
}
function newevent() {
if(disable_flag == true) return;
var e = new schedule_event();
save_tab();
add_event(_active,e);
refresh_body(_active);
}
function schedule_event() {
this.id = newid();
this.start = {hour: 8, min:00};
this.end = {hour: 16, min: 30};
this.day = new Array(0,0,0,0,0,0,0);
}
function addtab() {
if(disable_flag == true) return;
var add = document.getElementById("add");
var name = add.value;
if (name == "") return;
save_tab();
for(var i = 0; i<_tabs.length; i++)
if (_tabs[i].name == name) return;
var sc = new schedule_class(name);
add_event(sc, new schedule_event());
_tabs.push(sc);
refresh_body(sc);
add.value = "";
}
function deltab(id) {
if(disable_flag == true) return;
for(var i = 0; i<_tabs.length; i++)
if(_tabs[i].id == id) {
switch_tab(_tabs[i-1].id);
_tabs.splice(i,1);
break;
}
var tab = document.getElementById(id);
tab.parentNode.removeChild(tab);
return;
}
|