diff options
| author | Jules Laplace <jules@okfoc.us> | 2014-07-09 18:17:16 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2014-07-09 18:17:16 -0400 |
| commit | 0f9e0e60cc52cfbd052cf3b8925abadeda374c2f (patch) | |
| tree | 9e4d7f14e34a5cc56b512441e9768bce64c253e8 /public/js/protocols_site.js | |
| parent | c251396987dcffa38d421303162661b68443314f (diff) | |
static site
Diffstat (limited to 'public/js/protocols_site.js')
| -rw-r--r-- | public/js/protocols_site.js | 967 |
1 files changed, 967 insertions, 0 deletions
diff --git a/public/js/protocols_site.js b/public/js/protocols_site.js new file mode 100644 index 0000000..3a38ab9 --- /dev/null +++ b/public/js/protocols_site.js @@ -0,0 +1,967 @@ +var API_MAGIC = "#(@)PROTOCOLS" +var URLregexp = /^(https?:\/\/)(www.)?([-A-Z0-9.]+)(\/)?([-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])*/ig; +var months = { Jan: 0, Feb: 1, Mar: 2, Apr: 3, May: 4, Jun: 5, Jul: 6, Aug: 7, Sep: 8, Oct: 9, Nov: 10, Dec: 11 } +function isScrolledIntoView (elem) + { + return true; + var docViewTop = $(window).scrollTop(); + var docViewBottom = docViewTop + $(window).height(); + var elemTop = $(elem).offset().top; + var elemBottom = elemTop + $(elem).height(); + return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom)); + } +function scrollToTop (div) + { $(div).scrollTop( 0 ) } +function scrollToBottom (div) + { $(div).scrollTop( $(div)[0].scrollHeight ) } +function warn(s) + { +// return + var h = document.getElementById('msg').innerHTML + h = s + '<br/>' + h + document.getElementById('msg').innerHTML = h + } +var image_extensions = ["jpg","gif","png","jpeg","JPEG","JPG","GIF","PNG"] +function is_image(s) + { + for (i in image_extensions) + { + if (s.indexOf(image_extensions[i]) !== -1) + return true + } + return false + } +var domain_extensions = [".com",".net",".org",".uk",".fr",".de",".ch",".info",".nu",".mu","facebook.com","twitter.com"] +function has_domain(s) + { + for (var i in domain_extensions) + { + if (s.indexOf(domain_extensions[i]) !== -1) + return true + } + return false + } +function parse_blurb(s) + { + // s = linkify(s+"\n") + var parsed_lines = [] + var lines = s.split("\n") + for (i in lines) + { + var parsed_words = [] + var words = lines[i].split(" ") + for (j in words) + { + if (words[j].indexOf("http") !== -1) + { + if (is_image(words[j])) + parsed_words.push('<img src="'+words[j]+'"/>') + else + parsed_words.push(linkify(words[j])) + } + else if (words[j].indexOf("www") === 0 || has_domain(words[j])) + { + parsed_words.push(linkify("http://"+words[j])) + } + else + parsed_words.push(words[j]) + } + parsed_lines.push( parsed_words.join(" ") ) + } + // return s.replace(/\n/g, '<br/>') + return parsed_lines.join("<br/>") + } +function linkify(s) + { + var link = ''; + var punctuation = ''; + var end = s.length-1; + + // strip the terminal punctuation mark if it's a period or comma + if (s.indexOf(".", end) === end || s.indexOf(",", end) === end) + { + punctuation = s.substr(end, 1); + s = s.substr(0, end); + } + if (s.indexOf("twitter.com") !== -1) + { + var partz = s.split("/"); + var uname = ''; + if (partz[partz.length-1].length) + uname = partz[partz.length-1]; + else if (parts[-2].length) + uname = partz[partz.length-2]; + link = '<a href="' + s + '" target="_blank">@' + uname + '</a>'; + } + else + { + // link = s.replace(URLregexp,"<a href='$1$2$3$4$5' target='_blank'>[$3]</a>"); + var match = URLregexp.exec(s); + if (match && match.length == 6) + { + var url = match[0] || ""; + var http = match[1] || ""; + var www = match[2] || ""; + var domain = match[3] || ""; + var slash = match[4] || ""; + var uri = match[5] ? match[5].replace(/\/?index.html$/, "") : ""; + link = '<a href="' + url + '" target="_blank">[' + domain + ']</a>'; + } + else + { + link = s.replace(URLregexp,"<a href='$1$2$3$4$5' target='_blank'>[$3]</a>"); + } + } + return link + punctuation; + } +var URL = + { + auth: + { + login: "/cgi-bin/auth/login.cgi", + logout: "/cgi-bin/auth/logout.cgi", + }, + party: + { + list: "/cgi-bin/party/list.cgi", + view: "/cgi-bin/party/view.cgi", + edit: "/cgi-bin/party/edit.cgi", + }, + user: + { + all: "/cgi-bin/user/all.cgi", + view: "/cgi-bin/user/view.cgi", + edit: "/cgi-bin/user/edit.cgi", + deleter: "/cgi-bin/user/delete.cgi", + }, + }; +var Party = + { + parties: {}, + currentID: -1, + partyData: '', + liclick: function () + { + Nav.selectClass(Party.parties, this.id) + var id = this.id.split("-")[1] + warn("viewing party "+id) + Party.view(id) + }, + list: function() + { + $('#partyListContainer').fadeOut(200) + $('#partyEditContainer').hide() + $('#userListContainer').hide() + $('#userEditContainer').hide() + $('#userViewContainer').hide() + $.get(URL.party.list,{},Party.listCallback) + }, + listCallback: function (raw) + { + warn("got party list") + var lines = raw.split("\n") + if (lines.shift() !== API_MAGIC) + { + warn(raw) + warn("bad api: party list") + return + } + var partyList = "" + if (Party.currentID != -1) + var firstPartyID = Party.currentID + for (i in lines) + { + if (! lines[i]) + continue + var fields = lines[i].split('\t') + if (! firstPartyID) + firstPartyID = fields[0] + // 0 id 1 date + partyList += "<li id='party-"+fields[0]+"'>"+fields[1]+"</li>" + Party.parties["party-"+fields[0]] = fields + } + $('#partyList').html(partyList) + $('#partyListContainer').fadeIn(200) + for (id in Party.parties) + $('#'+id).click(Party.liclick) + Nav.selectClass(Party.parties, "party-"+firstPartyID) + if (firstPartyID) + Party.view(firstPartyID) + }, + view: function(id) + { + $('#userViewContainer').hide() + $('#userEditContainer').hide() + $('#partyEditContainer').hide() + $('#userListContainer').fadeOut(200) + $.get(URL.party.view,{'id':id},Party.viewCallback) + }, + viewCallback: function (raw) + { + warn ("got party view") + var lines = raw.split("\n") + if (lines.shift() !== API_MAGIC) + { + warn("bad api: party view") + return + } + var partyData = ''; + var partyUserList = "" + var partyLocationTag = "" + var editable = [] + var currentHost = -1 + for (i in lines) + { + if (! lines[i]) + continue + var fields = lines[i].split('\t') + if (! partyData) + { partyData = fields; continue } + // 0 id 1 group 2 name 3 email 4 blurb + if (fields[1] !== currentHost) + { + currentHost = fields[1] + if (currentHost === '0') + partyUserList += "<li class='hostlist'>guest host</li>" + else + partyUserList += "<li class='hostlist'>invited by "+Auth.hosts[fields[1]]+"</li>" + } + partyUserList += "<li><span class='view' id='user-"+fields[0]+"'>"+fields[2]+"</span>" + if (Auth.isHost || fields[0] === Auth.userID) + { + partyUserList += "<span class='edit' id='edit-"+fields[0]+"'>edit</span>" + editable.push(fields[0]) + } + partyUserList += "</li>" + Users.userlist['user-'+fields[0]] = fields + } + partyLocationTag = partyData[2] + Party.currentID = partyData[0] + Party.partyData = partyData + $('#partyLocation').html(partyLocationTag) + $('#userList').html(partyUserList) + if (Auth.isHost) + { + $('#user-add').show() + $('#party-edit').show() + } + $('#userListContainer').fadeIn(200) + $('#userViewContainer').show() + for (id in Users.userlist) + { + $('#'+id).hover(Users.limousein, Users.limouseout) + $('#'+id).click(Users.liclick) + } + for (i in editable) + { + $('#edit-'+editable[i]).bind("click",Users.editClick) + } + Users.hovering = true + }, + addClick: function () + { + warn("NEW PARTY FORM") + var id = "NEW" + var today = new Date() + $('#party-id').val(id) + $('#party-day').val(today.getDate()) + $('#party-year').val(today.getFullYear()) + $('#party-month option').attr("selected", false); + $('#party-month option[value="'+today.getMonth()+'"]').attr("selected", true); + $('#party-location').val("") + $('#partyEditContainer h2').html("New party") + $('#userListContainer').hide() + $('#userViewContainer').hide() + $('#userEditContainer').hide() + $('#partyEditContainer').show() + $('#party-location').focus() + Main.saveFunction = Party.editSave + Nav.selectClass(Party.parties, "") + }, + editClick: function () + { + var id = Party.currentID + // 0 id 1 date 2 location + var party = Party.partyData + var date = party[1].split("-") + $('#party-id').val(id) + $('#party-day').val(date[0]) + $('#party-year').val(date[2]) + $('#party-month option').attr("selected", false); + $('#party-month option[value="'+months[date[1]]+'"]').attr("selected", true); + $('#party-location').val(party[2]) + $('#partyEditContainer h2').html("Edit party") + $('#userListContainer').hide() + $('#userViewContainer').hide() + $('#userEditContainer').hide() + $('#partyEditContainer').show() + Main.saveFunction = Party.editSave + }, + editSave: function () + { + if (Main.saving) + return + Main.saving = true + warn("attempting save") + var data = + { + id: $('#party-id').val(), + userid: Auth.userID, + hostid: Auth.userID, + location: $('#party-location').val(), + month: $('#party-month').val(), + day: $('#party-day').val(), + year: $('#party-year').val(), + } + $('#partyEditContainer').fadeOut(200) + $.post(URL.party.edit, data, Party.editSaveCallback) + }, + editSaveCallback: function (raw) + { + var lines = raw.split("\n") + if (lines.shift() !== API_MAGIC) + { + warn("bad api: party save") + return + } + var result = lines.shift().split("\t") + if (result[0] === "ERROR") + { + warn("save error: "+result[1]) + return + } + var fields = lines.shift().split("\t") + var rowID = "party-"+fields[0] + if (result[0] === "OK") + { warn("party saved") } + else if (result[0] === "NEW") + { + warn("party created") + $("#partyList").append("<li id='"+rowID+"'>"+fields[1]+"</li>") + } + // Party.parties[rowID] = fields + // Party.view(fields[0]) + // Nav.selectClass(Party.parties, rowID) + Main.saving = false + Party.currentID = fields[0] + Party.list() + }, + }; +var Users = + { + userlist: {}, + hovering: true, + current: false, + allCount: 0, + userListIndex: [], + currentIdx: -1, + all: function () + { + $('#userViewContainer').hide() + $('#userEditContainer').hide() + $('#partyEditContainer').hide() + $('#userListContainer').fadeOut(200) + $.get(URL.user.all,{},Users.allCallback) + }, + allCallback: function (raw) + { + warn ("got all users") + var lines = raw.split("\n") + if (lines.shift() !== API_MAGIC) + { + warn("bad api: user all") + return + } + var partyUserList = []; + var guestHosts = []; + var editable = []; + var firstletter = "A"; + Users.allCount = 0; + Users.userListIndex = []; + for (i in lines) + { + if (! lines[i]) + continue + var fields = lines[i].split('\t') + // 0 id 1 group 2 name 3 email 4 blurb +// if (fields[1] !== currentHost) +// { +// currentHost = fields[1] +// partyUserList += "<li class='hostlist'>invited by "+Auth.hosts[fields[1]]+"</li>" +// } + + var a = fields[2].substr(0,1) + var li = "li id='r-"+Users.allCount+"'" + var userRow = ""; + var editSpan = ""; + + if (firstletter !== a) + { + firstletter = a + li += " class='br'" + } + + if (Auth.isHost || fields[0] === Auth.userID) + { + editSpan += "<span class='edit' id='edit-"+fields[0]+"'>edit</span>"; + editable.push(fields[0]); + } + + switch (fields[1]) { + case '2': // host + userRow = "<"+li+"><span class='view' id='user-"+fields[0]+"'>"+fields[2]+" *</span>" + editSpan + "</li>"; + break; + case '1': // guest host + userRow = "<"+li+"><span class='view' id='user-"+fields[0]+"'>"+fields[2]+" *</span>" + editSpan + "</li>"; + guestHosts.push(userRow); + Users.userListIndex.unshift('user-'+fields[0]); + Users.allCount += 1; + + break; + default: // guest + userRow = "<"+li+"><span class='view' id='user-"+fields[0]+"'>"+fields[2]+"</span>" + editSpan + "</li>"; + } + + partyUserList.push(userRow); + Users.userlist['user-'+fields[0]] = fields; + Users.userListIndex.push('user-'+fields[0]); + Users.allCount += 1; + } + $('#partyLocation').html(""); + + var guestHostHeader = "<li class='hostlist'>Guest Hosts</li>"; + var guestListHeader = "<li class='br'></li><li class='hostlist'>Guest List</li>"; + for (var i in guestHosts) + guestHosts[i] = guestHosts[i].replace("class='br'","").replace("*",""); + // console.log(guestHosts); + // guestHosts[guestHosts.length-1] = guestHosts[guestHosts.length-1].replace("<li", "<li class='br'"); + + $('#userList').html(guestHostHeader + guestHosts.join("") + guestListHeader + partyUserList.join("")); + $('#user-add').hide(); + $('#party-edit').hide(); + $('#userListContainer').fadeIn(200); +// $('#userViewContainer').html('<span id="userViewHelper">Here\'s a tip! Use the up and down arrow keys to browse this list.</span>').fadeIn(500) + $('#userViewContainer').html('<span id="userViewHelper"></span>'); + for (id in Users.userlist) + { + $('#'+id).hover(Users.limousein, Users.limouseout) + $('#'+id).click(Users.liclick) + } + for (i in editable) + { + $('#edit-'+editable[i]).bind("click",Users.editClick) + } + Users.hovering = true + }, + limouseout: function () + { + if (Users.hovering) + $("#"+this.id).removeClass("selected") + }, + limousein: function () + { + if (Users.hovering) + { + $("#"+this.id).addClass("selected") + Users.view(this.id) + } + }, + liclick: function () + { + if (! Users.hovering && Users.current === this.id) + { + Nav.selectClass(Users.userlist, false) + Users.current = false + Users.hovering = true + } + else + { + Nav.selectClass(Users.userlist, this.id) + Users.view(this.id) + Users.hovering = false + } + }, + viewIdx: function (idx) + { + var id = Users.userListIndex[idx] + + if (isScrolledIntoView("#r-"+idx)) + { + var offset = $("#r-"+idx)[0].offsetTop+5 + if (offset > 300) + $("body").scrollTop( offset ) + } + else + { + // get element at x,y + var element = document.elementFromPoint(30,180); + if (element.tagName === "UL") + element = document.elementFromPoint(30,190); + if (element.tagName === "UL") + element = document.elementFromPoint(30,200); + if (element.tagName === "SPAN") + id = element.id + } + Users.hovering = false + Users.view(id) + Nav.selectClass(Users.userlist, id) + }, + view: function (id) + { + var user = Users.userlist[id] + var userRec = ''; + // 0 id 1 group 2 name 3 email 4 blurb + var blurb = parse_blurb( atob ( user[4] ) ) + userRec += "<h2>" + user[2] + "</h2>" + userRec += "<h3>" + ( user[3] ? "<a href='mailto:"+user[3]+"'>"+user[3]+"</a>" : "" ) + "</h3>" + userRec += "<p>" + blurb + "</p>" + $('#userViewContainer').html(userRec) + $('#userEditContainer').hide() + $('#partyEditContainer').hide() + $('#userViewContainer').show() + Users.currentIdx = $("#"+id).parent().attr("id").substr(2) + }, + addClick: function () + { + warn("NEW USER FORM") + var id = "NEW" + $('#user-id').val(id) + $('#user-name').val("") + $('#user-email').val("") + $('#user-emailhidden').attr('checked', false) + $('#user-blurb').val("") + $('#userViewContainer').hide() + $('#userEditContainer').show() + $('#user-name').focus() + $('#userEditContainer h2').html("Add a new guest") + if (Auth.isHost) + { + $('#user-password-block').show() + $('#user-isstaff-block').show() + } + Nav.selectClass(Users.userlist, "") + Users.hovering = false + Main.saveFunction = Users.editSave + }, + editClick: function () + { + $(window).unbind("keydown") + var id = this.id.split("-")[1] + Users.hovering = false + $('#userViewContainer').fadeOut(200) + $('#userEditContainer').hide() + $.post(URL.user.view, {id:id}, Users.editClickCallback) + }, + editClickCallback: function (raw) + { + var lines = raw.split("\n") + if (lines.shift() !== API_MAGIC) + { + warn("bad api: user edit") + return + } + var user = lines.shift().split('\t') + warn ("editing user "+user[0]) + var hidemail = user[4] === '1' ? true : false + + // 0 id 1 name 2 email 3 access 4 emailhidden 5 hostid 6 blurb + var blurb = atob ( user[6] ) + $('#user-id').val(user[0]) + $('#user-name').val(user[1]) + $('#user-email').val(user[2]) + $('#user-emailhidden').attr('checked', hidemail) + $('#user-access option').attr("selected", false); + $('#user-access option[value="'+parseInt(user[3])+'"]').attr("selected", true); + $('#user-host option').attr("selected", false); + $('#user-host option[value="'+parseInt(user[5])+'"]').attr("selected", true); + $('#user-blurb').val(blurb) + $('#userViewContainer').hide() + if (user[0] === Auth.userID) + { + $('#userEditContainer h2').html("Editing your profile") + $('#user-password-block').show() + $('#user-isstaff-block').hide() + } + else + { + $('#user-password-block').hide() + $('#user-isstaff-block').hide() + $('#user-invitedby-block').hide() + $('#userEditContainer h2').html("Editing "+user[1]) + } + if (Auth.isHost) + { + $('#user-password-block').show() + $('#user-isstaff-block').show() + $('#user-invitedby-block').show() + $('#user-delete').show() + var ishost = user[3] === '1' ? true : false + $('#user-ishost').attr('checked', ishost) + } + $('#user-password1').val('') + $('#user-password2').val('') + $('#userEditContainer').fadeIn(300) + Main.saveFunction = Users.editSave + }, + editSave: function () + { + if (Main.saving) + return + Main.saving = true + var hidemail = $('#user-emailhidden').attr("checked") === true ? 1 : 0 + warn("attempting save") + var id = $('#user-id').val() + var data = + { + id: id, + partyid: Party.currentID, + hostid: $('#user-host').val(), + name: $('#user-name').val(), + email: $('#user-email').val(), + emailhidden: hidemail, + blurb: $('#user-blurb').val(), + } + if (Auth.isHost) + { + var access = $('#user-access').val() + data['access'] = access + } + if (Auth.isHost || id === Auth.userID) + { + var pw1 = $('#user-password1').val() + var pw2 = $('#user-password2').val() + if (pw1 && pw2) + { + warn("setting password?! "+pw1) + if (pw1 === pw2) + data['password'] = pw1 + else + warn("passwords don't match!") + } + } + $.post(URL.user.edit, data, Users.editSaveCallback) + }, + editSaveCallback: function (raw) + { + var lines = raw.split("\n") + if (lines.shift() !== API_MAGIC) + { + warn("bad api: user edit") + return + } + var result = lines.shift().split("\t") + if (result[0] === "ERROR") + { + warn("save error: "+result[1]) + return + } + var fields = lines.shift().split("\t") + var rowID = "user-"+fields[0] + if (result[0] === "OK") + { + warn("user saved") + Users.userlist[rowID] = fields + Users.view(rowID) + Nav.selectClass(Users.userlist, rowID) + } + else if (result[0] === "NEW") + { + warn("user created") + // $("#userList").append("<li id='"+rowID+"'>"+fields[1]+"</li>") + Party.view( Party.currentID ) + } + Main.saving = false + }, + deleteClick: function () + { + var id = $('#user-id').val() + var name = $('#user-name').val() + var r = confirm("ARE YOU SURE YOU WANT TO DELETE " + name + "?") + if (r) + $.post(URL.user.deleter, {'id':id}, Users.deleteClickCallback) + }, + deleteClickCallback: function () + { + var id = $('#user-id').val() + var name = $('#user-name').val() + Users.userlist['user-'+id] = [] + warn("DELETED "+id+ " "+name) + $('#userViewContainer').hide() + $('#userViewContainer h2').html('') + $('#userViewContainer b').html('') + $('#userViewContainer p').html('') + $('#userEditContainer').hide() + Party.view( Party.currentID ) + }, + }; +var Nav = + { + navIDs: {"nav_about":0,"nav_parties":0,"nav_users":0,"nav_patrons":0,"nav_reunions":0}, + aboutClick: function() + { + this.blur() + $('#aboutMode').show() + $('#patronMode').hide() + $('#partiesMode').hide() + $('#reunionMode').hide() + Nav.selectClass(Nav.navIDs, "nav_about") + $(window).unbind("keydown") + }, + partiesClick: function() + { + this.blur() + $('#aboutMode').hide() + $('#patronMode').hide() + $('#partiesMode').show() + $('#reunionMode').hide() + Nav.selectClass(Nav.navIDs, "nav_parties") + $('#userViewContainer').css("left", 520) + Party.list() + $(window).unbind("keydown") + }, + usersClick: function() + { + this.blur() + $('#aboutMode').hide() + $('#patronMode').hide() + $('#partiesMode').show() + $('#reunionMode').hide() + $('#userListContainer').hide() + $('#partyListContainer').hide() + Nav.selectClass(Nav.navIDs, "nav_users") + $('#userViewContainer').css("left", 320) + Users.all() + $(window).unbind("keydown") + $(window).bind("keydown", Nav.keydown) + }, + patronsClick: function() + { + this.blur() + $('#aboutMode').hide() + $('#partiesMode').hide() + $('#patronMode').show() + $('#reunionMode').hide() + Nav.selectClass(Nav.navIDs, "nav_patrons") + $(window).unbind("keydown") + }, + reunionClick: function() + { + this.blur() + $('#aboutMode').hide() + $('#patronMode').hide() + $('#partiesMode').hide() + $('#reunionMode').show() + Nav.selectClass(Nav.navIDs, "nav_reunions") + $(window).unbind("keydown") + }, + selectClass: function (ids, selected) + { + for (var id in ids) + { + $("#"+id).removeClass("selected") + } + if (selected) + $("#"+selected).addClass("selected") + }, + keydown: function (e) + { + kc = event.keyCode + if (kc === 38) // up + { + // select previous name or last + newIdx = parseInt(Users.currentIdx) - 1 + if (newIdx < 0) + { + newIdx = Users.allCount - 1 + scrollToBottom("body") + } + Users.viewIdx(newIdx) + return false + } + if (kc === 40) // down + { + // select next name or first + newIdx = parseInt(Users.currentIdx) + 1 + if (newIdx === Users.allCount) + { + newIdx = 0 + scrollToTop("body") + } + Users.viewIdx(newIdx) + return false + } + return true + }, + }; +var Auth = + { + name: '', + userID: 1, + isHost: false, + loginPrompt: false, + hosts: {}, + init: function () + { + if (document.cookie.indexOf("_protocols") !== -1) + { + warn('got cookie') + $.post(URL.auth.login, {}, Auth.loginCallback) + return + } + Auth.load() + }, + unload: function () + { + if (Auth.loginPrompt) + { + Auth.loginPrompt = false + $('#login').fadeOut(1000, function(){ Main.load()} ) + } + else + Main.load() + }, + load: function () + { + $('#login').fadeIn(1000) + $('#login-email').focus() + $('#login-email').keydown(Main.kp) + $('#login-password').keydown(Main.kp) + $('#login-go').click( Auth.login ) + Auth.loginPrompt = true + Main.saveFunction = Auth.login + Main.saving = false + }, + login: function () + { + if (Main.saving) + return + Main.saving = true + warn("attempting login") + var data = + { + username: $('#login-email').val(), + password: $('#login-password').val(), + } + $('#login-password').val(''), + $.post(URL.auth.login, data, Auth.loginCallback) + }, + loginCallback: function (raw) + { + Main.saving = false + var lines = raw.split("\n") + if (lines.shift() !== API_MAGIC) + { + if (! Auth.loginPrompt) + Auth.load() + warn("bad api: login") + return + } + var result = lines.shift().split("\t") + if (result[0] === '0') + { + if (! Auth.loginPrompt) + Auth.load() + else + warn("bad login!") + return + } + + // 0 id 1 name 2 firstname 3 email 4 access + var name = result[1].split(' ')[0] || result[1].split('@')[0] + warn( "Logged in! Hello "+name ) + Auth.userID = result[0] + Auth.isHost = result[4] == 2 ? true : false; + Auth.name = result[1] + Auth.firstName = result[2] + + $('#profile-edit').html(Auth.firstName + "!") + $('#logout').click( Auth.logout ) + + var hostSelect = "" + for (i in lines) + { + if (! lines[i]) + continue + var host = lines[i].split("\t") + if (host[0] === Auth.userID) + hostSelect += "<option value='"+host[0]+"' selected='1'>"+host[1]+"</option>" + else + hostSelect += "<option value='"+host[0]+"'>"+host[1]+"</option>" + Auth.hosts[host[0]] = host[1] + } + $("#user-host").html(hostSelect) + + Auth.unload() + }, + logout: function () + { + warn("logging out") + document.cookie = '_protocols=LOGGEDOUT; expires=Mon, 1 Jan 2001 12:00:00 UTC; path=/' + Main.unload() + }, + }; +var Main = + { + saveFunction: false, + saving: false, + kp: function (e) + { + var evt = window.event ? window.event : e + var key = evt.keyCode ? evt.keyCode : e.which + if (key === 13) + Main.saveFunction() + }, + init: function () + { + warn("init site") + Auth.init() + }, + unload: function () + { + $('header').fadeOut(500) + $('section').fadeOut(500) + $('footer').fadeOut(500) + $('#bg').fadeIn(500) + Auth.init() + }, + load: function () + { + warn("loading site") + $('#bg').fadeOut(500) + $('header').show() + $('#welcome').fadeIn(500) + $('#nav_about').click( Nav.aboutClick ) + $('#nav_users').click( Nav.usersClick ) + $('#nav_patrons').click( Nav.patronsClick ) + $('#nav_reunions').click( Nav.reunionClick ) + if (Auth.isHost) + { + $('#nav_parties').show() + $('#nav_parties').click( Nav.partiesClick ) + $('#user-add').click( Users.addClick ) + $('#user-delete').click( Users.deleteClick ) + $('#party-add').click( Party.addClick ) + $('#party-edit').click( Party.editClick ) + } + else + { + $('#nav_parties').hide() + $('#user-add').hide() + $('#user-delete').hide() + $('#party-add').hide() + $('#party-edit').hide() + } + $('#user-save').click( Users.editSave ) + $('#user-name').keydown(Main.kp) + $('#user-email').keydown(Main.kp) + $('#user-password2').keydown(Main.kp) + $('#party-location').keydown(Main.kp) + $('#party-day').keydown(Main.kp) + $('#party-year').keydown(Main.kp) + $('#party-save').click( Party.editSave ) + Nav.selectClass(Nav.navIDs, "nav_about") + $('#aboutMode').show() + warn("done!") + }, + }; +Main.init(); |
