JSlib.dataReady=false;
submitAJAX('/bikefun.nsf/getData?OpenAgent', $H({'type':'bikefun', 'anon':true}), null, storeData); // sets dataReady onSuccess
function myOnLoad() {
JSlib.anchor = document.location.href.rightOf('#!');
doDivTable();
}
function storeData(responseJSON) {
//var today=new Date();
//var alldata=responseJSON.data;
var dbString = "@" + "DB";
//alldata.each
//JSlib.future = alldata.filter(function(element){return compareDates(formatDate(today, "d/M/y"),"d/M/y",element.item3 + ":" + element.item4,"d/M/y:h:ma")<=0});
//JSlib.past = alldata.filter(function(element){return compareDates(formatDate(today, "d/M/y"),"d/M/y",element.item3 + ":" + element.item4,"d/M/y:h:ma")>0});
JSlib.future = responseJSON.data.sort(function(a,b) {return compareDates(a.item3+":"+a.item4, "d/M/y:h:ma",b.item3+":"+b.item4, "d/M/y:h:ma")});
JSlib.future.each(function(el) {el.item9 = el.item9.replace(dbString, db)});
//JSlib.past = JSlib.past.sort(function(a,b) {return compareDates(b.item3+":"+b.item4, "d/M/y:h:ma", a.item3+":"+a.item4, "d/M/y:h:ma")});
//delete alldata;
JSlib.agendaStates = ['future','past']; // which JSlib array to use
JSlib.agendaAction = ['View past events', 'View future events']; // label for button
JSlib.agendaState = 0; // initially, show the future
JSlib.dataReady=true;
doDivTable()
}
function getArchiveData() {
  submitAJAX('/bikefun.nsf/getData?OpenAgent', $H({'type':'archive', 'anon':true}), null, storeArchiveData)
}
function storeArchiveData(responseJSON) {
  var dbString = "@" + "DB";
  JSlib.past = responseJSON.data.sort(function(a,b) {return compareDates(b.item3+":"+b.item4, "d/M/y:h:ma", a.item3+":"+a.item4, "d/M/y:h:ma")});
  JSlib.past.each(function(el) {el.item9 = el.item9.replace(dbString, db)});
  doDivTable()
}
function doDivTable() {
  if(!(JSlib.dataReady && JSlib.domReady)) return false;
  if(JSlib.agendaState==1 && !JSlib.past) {
    getArchiveData()
    return
  }
  var colattr = [
{'title' : 'Date', 'templ' : '{item3}', 'width': 200, 'type': 'date', 'linkfmt': 'E, dd MMM, yyyy', 'dateFormat': 'd/M/y', 'class': 'leftJ'},
{'title' : 'Time', 'templ' : function(row) {return row.item4.substr(0,1)=="0" ? row.item4.substr(1) : row.item4}, 'width' : 70},
{'title' : 'What', 'templ' : '{item2}', 'width' : 340, 'callback' : gotoAgenda, 'class': 'leftJ'}
];
  if(subscribers) {
    colattr.push({'title':'Moderated', 'templ':'{item8}', 'width':70, 'class': 'leftJ'})
  }
  JSlib.divtable = new divTable({
    'columns' : colattr,
    'lessHeight':300,
    'data' : JSlib[JSlib.agendaStates[JSlib.agendaState]],
    'target' : $('agenda')
  });
  if($('loadingImage')) $('loadingImage').dispose();
  if(JSlib.anchor!='') { // show the selected event
    JSlib.divtable.options.data.each(function(row) {
      if(row.UNID==JSlib.anchor) gotoAgenda(row)
    });
    JSlib.anchor=''; // only do this once on first load
  };
  $('createEvent').addEvent('click', createEvent);
  $('addToCalendar').addEvent('click', createEvent);
}
var showEntry
function gotoAgenda(row) {
  document.location.hash = '!' + row.UNID;
//  showEntry = new shimmer(row, 'agenda', 500, 200, showDiv)  // see cms.js for shimmer
  showEntry = new shimmer2({row: row, divId: 'agenda', minWidth: 500, minHeight: 200, borderSize: 10, showDiv: showDiv, beforeClose: callCloseEntry});
  if(!editor) _gaq.push(['_trackEvent', 'CalendarEntry', 'view', row.item2]);
}
function showDiv(row, el, entry) {
 var localrow = row; // keep it local
 if(localrow.item9!="") { // image present
  localrow.graphic="<img src='" + localrow.item9 + "' border='0' align='right' width='" + localrow.item10 + "px' height='" + localrow.item11 + "px'>"
 }
 var d = new Date(getDateFromFormat(localrow.item3, "d/M/y"));
 localrow.day = formatDate(d, "E");
 localrow.item6=localrow.item6.replace(/\n/g, '<br>');
 el.set('html', JSlib.navElement.calendarShowHTML.substitute(localrow));
 $('iCalid').set('href', "/bikefun.nsf/iCal?OpenAgent&UNID=" + localrow.UNID);
 if(localrow.item7!="") $('outLink').set('href', "http://" + localrow.item7);
 $('closeButton').addEvent('click', entry.closeEntry.bind(entry) );
 if($('editButton')) $('editButton').addEvent('click', editEvent.bind(row));
 $(el).getChildren('.g-plusone').each(function(g) {g.set('data-href', "http://www.bikefun.org/bikefun.nsf/melbourne/calendar?opendocument#!"+localrow.UNID)}); // URL is "normalised" for plusone
 gapi.plusone.go(el); // activate plusone on this el
}
function callCloseEntry() {
  $('closeButton').removeEvents('click');
  document.location.hash='';
}
function toggleHistory() {
  JSlib.agendaState = 1-JSlib.agendaState;
  $('agenda').set('html','<img id="loadingImage" src="/bikefun.nsf/loading.gif?openImageResource" border="0">');
  delete JSlib.divtable;
  $('toggleHistoryButton').set('html', JSlib.agendaAction[JSlib.agendaState]);
  doDivTable()
}
/* edit events */
var editEntry
function createEvent() {
  if(showEntry && !showEntry.closed) showEntry.closeEntry();
  var row={'database':'bikefun'}; // assume it's a "future" event
  editEntry = new shimmer2({row: row, divId: 'agenda', minWidth: 500, minHeight: 700, borderSize: 10, showDiv: showEditDiv, beforeClose: closeEditEntry, afterSaveEntry: afterSaveEntry});
}
function editEvent() {
  showEntry.closeEntry(); // remove display of event
  editEntry = new shimmer2({row: this, divId: 'agenda', minWidth: 500, minHeight: 700, borderSize: 10, showDiv: showEditDiv, beforeClose: closeEditEntry, afterSaveEntry: afterSaveEntry});
}
function showEditDiv(row, el) { // fills in the pop-up with content
 el.set('html', JSlib.navElement.calendarHTML); // write the HTML
 row.database = row.type; // stored in db as "type" but submitted as "database" :#(#
 el.dataForm(row); // put the data into the form
 if(!row.UNID) $('UNID').dispose(); // if this is a new entry, there won't be a UNID, so don't return one - used as the marker for a new entry
 $('saveButton').addEvent('click', saveEntry.bind(row));
}
function closeEditEntry() {
  $('saveButton').removeEvents('click');
  $('saveButton').set('disabled', false);
}
function saveEntry(event) {
  event.stop();
  if(!validateform()) return false;
  editEntry.saveEntry($('saveButton'));
  if(!this.UNID) {
    JSlib.divtable.changeData(JSlib.divtable.options.data.sort(function(a,b) {return compareDates(a.item3+":"+a.item4, "d/M/y:h:ma",b.item3+":"+b.item4, "d/M/y:h:ma")}))
  }
}
function afterSaveEntry(responseJSON) {
  if(responseJSON.UNID) editEntry.row.UNID = responseJSON.UNID; // indicates a new doc was created, store UNID to allow edits in this session
  editEntry.closeEntry.call(editEntry)
}
function saveEntry20111001(event) {
  event.stop();
  if(!validateform()) return false;
  var createNew = !this.UNID
  this.item1 = $('item1').value; // put changes back into divtable data array
  this.item2 = $('item2').value;
  this.item3 = $('item3').value;
  this.item4 = $('item4').value;
  this.item5 = $('item5').value;
  this.item6 = $('item6').value;
  this.item7 = $('item7').value;
  this.item9 = $('item9').value;
  this.item10 = $('item10').value;
  this.item11 = $('item11').value;
  this.item12 = $('item12').value;
  $('item8').value = ($('item8y').checked ? "y" : ""); // put changes into form fields for submitAJAX to serialize
  this.item8 = $('item8').value;
  submitAJAX('/bikefun.nsf/databaseAJAXinput?openagent', editEntry.el, $('saveButton'), editEntry.closeEntry.bind(editEntry));
  if(createNew) {
    var data=JSlib.divtable.options.data;
    data.push({}); // add an empty object to the data array
    data[data.length-1]=this;
    JSlib.divtable.changeData(data.sort(function(a,b) {return compareDates(a.item3+":"+a.item4, "d/M/y:h:ma",b.item3+":"+b.item4, "d/M/y:h:ma")}))
  } else {
    JSlib.divtable.redraw();
  }
}
function validateform() {
var err=false;
var errors="";
var field=$('item1');
if (field.value.trim()!="" && !checkEmail(field.value)) {
if(!err) field.focus();
errors+="The email address you entered does not appear to be valid.\n";
err=true
}
field=$('item3'); // date
if(!isDate(field.value, "d/M/y") ) {
if(!err) field.focus();
errors+="Please enter date in dd/mm/yy format.\n";
err=true
}
field=$('item4'); // time
if(!isDate(field.value, "h:ma") ) {
if(!err) field.focus();
errors+="Please enter start time in hh:mmAM format.\n";
err=true
}
field=$('item12'); // time
if(!isDate(field.value, "h:ma") ) {
if(!err) field.focus();
errors+="Please enter finish time in hh:mmAM format.\n";
err=true
}
field=$('item7'); // URL
field.value=field.value.replace(/^http:\/\//i, '').replace(/^\/\//, ''); // strip off the protocol
if(err) {
  alert(errors);
}
return !err
}
function gotoSubscribe() {
  window.location.href="/" + db + "/" + URLview + "/subscribe"
}

