Drupal.behaviors.explainfield = function(context) {
  $(".explainfield-select select").change(function() {
    process_my_textfield(this);
  });
  $(".explainfield-select select").change();
  $(".explainfield-buttons input:radio").click(function() {
    process_my_textfield(this);
  });
  $(".explainfield-buttons input:checkbox").click(function() {
    process_my_textfield(this);
  });
  $(".explainfield-buttons input").load(function() {
    load_my_textfield(this);
  });
  $(".explainfield-buttons input:radio").load();
  $(".explainfield-buttons input:checkbox").load();
}

function load_my_textfield(me) {
  var my_class = $(me).attr('class');
  var my_type = $(me).attr('type');
  var field_name = me.name.substring(0, me.name.indexOf('['))
  var my_element = $(me).parent();
  while ($(my_element).attr('class') != 'explainfield-buttons' &&
      $(my_element).attr('class') != 'explainfield-select') {
    my_element = $(my_element).parent();
  }
  my_element = $(my_element).children('span.keys-' + field_name);
  var trigger_value = $(my_element).children('input.trigger').val();
  var pointer_value = $(my_element).children('input.pointer').val();
  my_text = '.explainfield-text-' + field_name + '-' + pointer_value;
  $(my_text).hide();
  if (my_type == 'checkbox') {
    if ($(me).attr('checked')) {
      $(my_text).show();
    }
  }
  if ($('input:radio[name="' + me.name + '"]:checked').val() == trigger_value) {
    $(my_text).show();
  }
}

function process_my_textfield(me) {
  var my_class = $(me).attr('class');
  var my_type = $(me).attr('type');
  var field_name = me.name.substring(0, me.name.indexOf('['))
  var my_element = $(me).parent();
  while ($(my_element).attr('class') != 'explainfield-buttons' && $(my_element).attr('class') != 'explainfield-select') {
    my_element = $(my_element).parent();
  }
  my_element = $(my_element).children('span.keys-' + field_name);
  var trigger_value = $(my_element).children('input.trigger').val();
  var pointer_value = $(my_element).children('input.pointer').val();
  my_text = '.explainfield-text-' + field_name + '-' + pointer_value;
  $(my_text).hide();
  var ready = true;
  if (my_type == 'checkbox') {
    ready = ($(me).attr('checked'));
  }
  if (me.value == trigger_value && ready) {
    $(my_text).show();
  }
}
