var TimePicker = {

  // stores field text to revert to when cancelling
  _priorFieldText: [],

  // stores time before datepicker to revert to when cancelling
  _priorTime: [],

  times: '12:00,12:15,12:30,12:45,1:00,1:15,1:30,1:45,2:00,2:15,2:30,2:45,3:00,3:15,3:30,3:45,4:00,4:15,4:30,4:45,5:00,5:15,5:30,5:45,6:00,6:15,6:30,6:45,7:00,7:15,7:30,7:45,8:00,8:15,8:30,8:45,9:00,9:15,9:30,9:45,10:00,10:15,10:30,10:45,11:00,11:15,11:30,11:45,12:00'.split(','),

  /* Method declarations */

  toggleTimePicker: function (id) {
    var selector = this.findSelectorElement(id);
    if (selector.style.display == 'block') {  // If showing, hide
      selector.style.display = 'none';
      selector.innerHTML = '';
    } else {                                  // Else, show
      selector.style.display = 'block';
      this._priorFieldText[id] = this.findFieldElement(id).value;
      this._priorTime[id] = $(id).value;
      this.writeSelector(id);
    }
  },

  cancel: function (id) {
    this.findFieldElement(id).value = this._priorFieldText[id];
    $(id).value = this._priorTime[id];
    this.findSelectorElement(id).style.display = 'none';
		show_select_elements();
  },

  setTime: function (id, time) {
    var t_hour  = time.split(':')[0];
    var t_minute = time.split(':')[1].split(' ')[0];
//    var t_meridian  = time.split(' ')[1];
    this.findFieldElement(id).value = t_hour + ':' + t_minute// + ' ' + t_meridian;
    $(id).value = time;
  },

  pickTime: function (id, time) {
    this.setTime(id, time);
    this.toggleTimePicker(id);
		show_select_elements();
  },

  writeSelector: function (id) {
    var o = '<ul>'; // start output buffer
    
    for(var i = 0; i < this.times.length; i++) {
      o += "<li><a href='#' onclick=\"TimePicker.pickTime('" + id + "','" + this.times[i] +"'); return false;\">" + this.times[i] + "</a></li>";
    }

    o += '</ul>';
    
    this.findSelectorElement(id).innerHTML = o;
  },

  findSelectorElement: function(id) {
    return $(id + '_selector');
  },

  findFieldElement: function(id) {
    return $(id + '_field');
  }
};
