/* 
 * Objects for fellows profile page
 * Does the onload object
 * */

var Profile = {
  Version : 1,

  busyImage : '<img src="/images/waiting_anim.gif" alt="loading data" class="waitingimg" /><br />',

  newSecondment : function (fid) {
    var str = '';
    var i = new Ajax.Request('includes/inc_eip_new_secondment.php', {
      parameters: {'fellow_id':fid, 'secondment_id': 0},
      method: 'post',
      onSuccess:  function (t) {
        str = t.responseText;
        $('secondment').replace(str);
      }
    });

    return;
  },

  deleteSecondment : function (fid, sid) {
    var str = '';
    if (confirm('Are you sure?')) {
      var i = new Ajax.Request('includes/inc_eip_delete_secondment.php', {
        parameters: {'fellow_id':fid, 'secondment_id': sid},
        method: 'post',
        onSuccess:  function (t) {
          str = t.responseText;
          Profile.readData({'fellow_id':fid, 'secondment_id':sid, 'field':'secondment'});
        }
      });
    }

    return;
  },

  newTraining : function (fid) {
    var str = '';
    var i = new Ajax.Request('includes/inc_eip_new_training.php', {
      parameters: {'fellow_id':fid, 'training_id': 0},
      method: 'post',
      onSuccess:  function (t) {
        str = t.responseText;
        $('fellowtrainingcourses').replace(str);
      }
    });

    return;
  },

  deleteTraining : function (fid, sid) {
    var str = '';
    if (confirm('Are you sure?')) {
      var i = new Ajax.Request('includes/inc_eip_delete_training.php', {
        parameters: {'fellow_id':fid, 'training_id': sid},
        method: 'post',
        onSuccess:  function (t) {
          str = t.responseText;
          Profile.readData({'fellow_id':fid, 'training_id':sid, 'field':'fellowtrainingcourses'});
        }
      });
    }

    return;
  },


  readData : function (h) {
    /* h = { fellow_id: fellow_id, field: 'field' } */
    //alert($H(h).inspect())

    var field = h.field;
    if (h.edit == true)
      h.field = h.field+'edit';

    $(field).insert({'top': Profile.busyImage});
    
    var str = '';
    var i = new Ajax.Request('includes/inc_eip_read_profile.php', {
      parameters: h,
      method: 'post',
      onComplete:  function (t) {
        str = t.responseText;
        //alert(str);
        $(field).replace(str);
      }
    });
  },

  updateData : function (h, field) {
    // h sent to save field, to read
    //alert($H(h).inspect());
    var i = new Ajax.Request('includes/inc_eip_save.php', {
      parameters: h,
      method: 'post',
      onComplete:  function (t) {
        var str = t.responseText;
        //alert(str); return;
        var j = $H(str.evalJSON(true));
        j.set('view' , $H(j.get('view'))); 

        switch (j.get('table')) {
        case 'fellow_fellowship_research_projects':
        case 'fellow_secondments':
        case 'fellow_training_courses':
          fid = j.get('view').get('fellow_id');
          break;
        default:
          fid = j.get('id');
          break;
        }
        Profile.readData({'fellow_id':fid, 'field':field});
      }
    });
  },

  updateOptin : function (opt, val, fid, tid) {
    var i = new Ajax.Request('includes/inc_eip_opt.php', {
      parameters: {'opt':opt, 'val':val, 'fellow_id':fid},
      method: 'post',
      onComplete: function (t) {
        var str = t.responseText;
        //alert(str +' '+ tid);
        $('optmsg'+tid).update(str)
      }
    });
  }
};

// Onload event
Event.observe(window, 'load', function() {
  //CArea.setToggleButtons(); // This is done by inline scripts now
  //CArea.fireAllToggleButtons();
  //CArea.fireToggleButton(1);
});

/*
 *  Collapsible area object
 *  Handles these areas' toggle event
 * */
var CArea = {
  Version : 1,
  
  /* 
   *  Set the buttons event handlers
   * */
  setToggleButtons : function (el) {
    if (typeof el == 'undefined')
      var b = $$('.openbutton','.profiletitle');
    else
      var b = [el];
    
    b.each(function (button){
      bindButton = CArea.openCloseHandler.bindAsEventListener(button);
      button.observe('click', bindButton);              // Normal onclick event
      button.observe('button:fireClick', bindButton);   // Fire custom event
    });
  },

  /* 
   *  Fire custom event on
   *  all buttons
   * */
  fireAllToggleButtons : function () {
    var b = $$('.openbutton');
    b.each(function (button){
      button.fire('button:fireClick');
    });
  },

  /* 
   *  Fire one button
   * */
  fireToggleButton : function (index) {
    var b = $$('.openbutton');
    b[index-1].fire('button:fireClick');
  },

  /* 
   *  Collapsible-areas' toggle
   *  event handler
   * */
  openCloseHandler : function (e) {
    var el = Event.element(e);
    var a = el.readAttribute('id').split('-');
    var id = a[1];
    var style = '';
    var img = $('openbuttonimg-'+id);

    // Use style attribute to determine state
    if (area = $('collapsiblearea-'+id)) {
      style = area.readAttribute('style');

      if (style == null || style.blank()) {
        area.hide();
        img.writeAttribute('src', 'images/div_closed.gif');
      } else {
        area.show();
        img.writeAttribute('src', 'images/div_opened.gif');
      }
    } else {
      // Area not found
    }
  }

};
