// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
//

function add_new_custom_factor_row(e)
{
  var source = $(e).attr('class');
  var row = $('td.js-custom').length;
  var link_row = $(e).parent().parent()[0]
  $(link_row).before('<tr><td><input id="factors[' + source + '][custom][' + row + '][type][]" class="check" type="checkbox" value="accelerator" name="factors[' + source + '][custom][' + row + '][type][]"/></td>' +
                     '<td><input id="factors[' + source + '][custom][' + row + '][type][]" class="check" type="checkbox" value="inhibitor" name="factors[' + source + '][custom][' + row + '][type][]"/></td>' +
                     '<td class="custom js-custom"><label>Enter Factor:</label><input id="factors[' + source + '][custom][' + row + '][name]" class="other number" type="text" value="" name="factors[' + source + '][custom][' + row + '][name]"/></td></tr>')
}

function add_new_custom_activity_row(e, category)
{
  var index = $('li.js-custom').length;
  $(e).parent().before('<li class="js-custom"><input id="activities[' + category + '][' + index + '][name]" class="other" type="text" name="activities[' + category + '][' + index + '][name]"/><input id="activities[' + category + '][' + index + '][details]" type="text" name="activities[' + category + '][' + index + '][details]"/><input type="hidden" value="true" name="activities[' + category + '][' + index + '][custom]" id="activities[' + category + 'r][' + index + '][custom]"/></li>');
}

function add_multiselect_option() {
  var content = "<li class=\"field\">" +
                "<input id=\"profile_question[submitted_options][]\" type=\"text\" name=\"profile_question[submitted_options][]\"/>" +
                "<a onclick=\"remove_list_item(this); return false;\" href=\"#\" class=\"remove\">Remove</a>" +
                "</li>";
  $('#new_profile_question_verify div.options ul.fields').append(content);
}

function add_custom_option(elem, field_name) {
  var content = "<li style=\"display: none\" class=\"field\">" +
                "<input class=\"text\" type=\"text\" name=\"" + field_name + "\" checked=\"checked\"/>" +
                "<a onclick=\"remove_list_item(this); return false;\" href=\"#\" class=\"remove\">Remove</a>" +
                "</li>";

  var node = $(content);
  $(elem).before(node)
  node.slideDown(200);
}

function add_custom_multivalue_option(elem, field_name) {
  var content = "<li style=\"display: none\" class=\"field\">" +
                "<input class=\"text\" type=\"text\" name=\"" + field_name + "\" checked=\"checked\"/>" +
                "<a onclick=\"remove_list_item(this); return false;\" href=\"#\" class=\"remove\">Remove</a>" +
                "</li>";
  var node = $(content);
  $(elem).parent('li').find('ul').append(node)
  node.slideDown(200);
}

function add_new_output_category(elem) {
  var question_id = $('.new_outcome_category').length + 1
  var content = "<li style=\"display: none\" class=\"new_outcome_category\"><label>Category name: </label>" +
                "<input class=\"text category\" type=\"text\" name=\"questions[question_" + question_id + "][category_name]\" />" +
                "<a onclick=\"remove_output_category(this); return false;\" href=\"#\" class=\"remove\">Remove</a>" +
                "<input type=\"hidden\" name=\"questions[question_" + question_id + "][keep]\" value=\"true\" />" +
                "<div class=\"activities\">" +
                "<ul class=\"fields\">" +
                "<li>" +
                "<input class=\"text\" type=\"text\" name=\"questions[question_" + question_id + "][activities][]\" checked=\"checked\"/>" +
                "<a onclick=\"remove_list_item(this); return false;\" href=\"#\" class=\"remove\">Remove</a>" +
                "</li>" +
                "<a class=\"add_option\" onclick=\"add_custom_option(this, 'questions[question_" + question_id + "][activities][]'); return false;\" href=\"#\">Add new output</a>" +
                "</ul>" +
                "</div>" +
                "</li>";

  var node = $(content);
  $(elem).before(node)
  node.slideDown(400);
}

function add_custom_multivalue(elem, link_text) {
  var question_id = $('.new_multivalue').length + 1
  var content = "<li style=\"display: none\" class=\"new_multivalue\"><label>Category name: </label>" +
                "<input class=\"text category\" type=\"text\" name=\"questions[question_" + question_id + "][name]\" />" +
                "<a onclick=\"remove_multivalue_question(this); return false;\" href=\"#\" class=\"remove\">Remove</a>" +
                "<input type=\"hidden\" name=\"questions[question_" + question_id + "][keep]\" value=\"true\" />" +
                "<div class=\"options\">" +
                "<ul class=\"fields\">" +
                "<li>" +
                "<input class=\"text\" type=\"text\" name=\"questions[question_" + question_id + "][options][]\" checked=\"checked\"/>" +
                "<a onclick=\"remove_list_item(this); return false;\" href=\"#\" class=\"remove\">Remove</a>" +
                "</li>" +
                "<a class=\"add_option\" onclick=\"add_custom_option(this, 'questions[question_" + question_id + "][options][]'); return false;\" href=\"#\">add new " + link_text + "</a>" +
                "</ul>" +
                "</div>" +
                "</li>";

  var node = $(content);
  $(elem).before(node)
  node.slideDown(400);
}

function remove_list_item(elem) {
  $(elem).parent('li').hide(200, function() {$(this).remove();});
}

function remove_output_category(elem) {
  $(elem).parent('li').hide(400, function() {
    $(this).remove();
  });
}

function remove_multivalue_question(elem) {
  $(elem).parent('li').hide(400, function() {
    $(this).remove();
  });
}

function wire_up_custom_profile() {
  $('#new_profile_question_verify input#profile_question_format_multiselect').attr('checked') ? $('#new_profile_question_verify div.options').show() : $('#new_profile_question_verify div.options').hide();

  $('#new_profile_question_verify input#profile_question_format_text').click(
      function() {
        $('#new_profile_question_verify .options').toggle();
      });
  $('#new_profile_question_verify input#profile_question_format_multiselect').click(
      function() {
        $('#new_profile_question_verify .options').toggle();
      });
}

function validate_and_preview(validate_path, on_valid_submit_to) {
  validate(function() {
    $('.custom_evaluation_form').attr('action', on_valid_submit_to).ajaxSubmit(function(response) {
      $('.custom_evaluation_form').attr('action', validate_path);
      var newwin = window.open(window.location, 'preview', 'width=1000,height=800,status=no,scrollbars=yes');
      newwin.document.write(response);
      // newwin.document.close();
      newwin.focus();
      $('div#preview_loading').jqmHide();
    });
  });
}

function validate_and_submit_customization(on_valid_submit_to) {
  validate(function() {
    $('.custom_evaluation_form').attr('action', on_valid_submit_to).submit();
  });
}

function validate(onValid) {
  $('div#preview_loading').jqm({toTop: true});
  $('div#preview_loading').jqmShow();
  $('.custom_evaluation_form').ajaxSubmit({dataType: "json", success: function(result) {
    if (result.valid) {
      onValid();
    } else {
      $('div#preview_loading').jqmHide();
      $('#errorExplanation').remove();
      $('#errors').before(result.error_markup);
      $.scrollTo(0, 500);
    }
  }});
  return false;
}

function wire_up_custom_activities() {
  $('input[type=checkbox].category_check').click(function() {

    var checked_status = this.checked;

    $(this).parent('li').find('input[type=checkbox].check').each(function() {
      this.checked = checked_status;
    });

    $(this).parent('li').find('input[type=text]').each(function() {
      if (checked_status) {
        $(this).css('color', '#666');
        $(this).css('background-color', '#FFF');
      } else {
        $(this).css('color', '#999');
        $(this).css('background-color', '#CCC');
      }
    });

    if (checked_status) {
      $(this).parent('li').find('a.add_option').css('visibility', 'visible');
    } else {
      $(this).parent('li').find('a.add_option').css('visibility', 'hidden');
    }

  });
}

function wire_up_remove_activity() {
  $('a.remove_activity').click(function() {
    if (confirm("Are you sure?")) {
      var row = $(this).closest("li").get(0);
      $.post(this.href, {_method:'delete',authenticity_token:$('input[name=authenticity_token]').first().val()}, null, "script");
      $(row).remove();
      return false;
    } else {
      return false;
    }
  });
}

jQuery(function($)
{
  $('div.check_all a.button').click(function(e)
  {
    e.preventDefault();
    $(this).parent().siblings().find(":input").each(function()
    {
      if (this.value != 'Other')
      {
        $(this).attr("checked", "checked");
      }
    });
  });

  $('select.comboselect').each(function()
  {
    $(this).comboselect();
  });

  $('#delete_confirm').jqm({toTop: true});

  wire_up_custom_profile();
  wire_up_custom_activities();
  wire_up_remove_activity();

  $('#group_indirect').hide();
  $('#group_direct').hide();
  $('span.disabled_nav').tooltip();
  $('a.view_grantees').tooltip({
    showURL: false,
    showBody: ": "
     });
  $('div.disabled_nav').tooltip();
  $('#email_form').jqm({toTop: true});
  $('#email_success').jqm({toTop: true});
  $('#question_confirm').jqm({toTop: true});
  $('div.edit_question').jqm({toTop: true});
  $('div.glossary_term_popup').jqm({toTop: true});
  $('div.glossary_term_popup').jqm({toTop: true});
  $('fieldset.custom_questions div.instructions').jqm({toTop: true});
  
});

