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 (parties)
{
warn("got party list")
var partyList = ""
if (Party.currentID != -1) {
var firstPartyID = Party.currentID
}
parties.forEach(function(party){
if (! firstPartyID) {
firstPartyID = party.id
}
partyList += "
"+party.date+""
Party.parties["party-"+party.id] = party
})
$('#partyList').html(partyList)
$('#partyListContainer').fadeIn(200)
for (id in Party.parties) {
$('#'+id).click(Party.liclick).data('party', Party.parties[id])
}
Nav.selectClass(Party.parties, "party-"+firstPartyID)
if (firstPartyID)
Party.view(firstPartyID)
},
view: function(id)
{
$('#userViewContainer').hide()
$('#userEditContainer').hide()
$('#partyEditContainer').hide()
$('#userListContainer').fadeOut(200)
Party.partyData = $(this).data('party')
$.get(URL.party.view, {'id':id}, Party.viewCallback)
},
viewCallback: function (users)
{
var partyUserList = ""
var partyLocationTag = ""
var editable = []
var currentHost = -1
users.forEach(function(user){
var fields = lines[i].split('\t')
// 0 id 1 group 2 name 3 email 4 blurb
partyUserList += ""+ user.name +""
if (Auth.isHost || user.id === Auth.userID) {
partyUserList += "edit"
editable.push(user.id)
}
partyUserList += ""
Users.userlist['user-'+user.id] = user
})
partyLocationTag = Party.partyData.location
Party.currentID = Party.partyData.id
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).click(Users.liclick).data('user', Users.userlist[id])
}
for (i in editable) {
$('#edit-'+editable[i]).bind("click",Users.editClick).data('user', Users.userlist[editable[i]])
}
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(""+fields[1]+"")
}
// Party.parties[rowID] = fields
// Party.view(fields[0])
// Nav.selectClass(Party.parties, rowID)
Main.saving = false
Party.currentID = fields[0]
Party.list()
},
};