var parameters = [

'querying_removes_characters',
'querying_stopwords',
'querying_splits_text_on'

];

function hasBeenUpdated(name) {

$('#parameters .' + name + ' input').css('background-color', 'lightgreen');

};

// If this returns true there were errors. // function handleErrors(data) {

var error = false;
$.each(data, function(index, element) {
  if (element == 'ERROR') {
    $('#parameters').find('.' + index + ' .error').html('Error in this config, not updated.');
    error = true;
  } else {
    $('#parameters').find('.' + index + ' .error').html('');
  }
});
return error;

};

// TODO Find a way to handle this correctly. // function rememberOriginal(name, data) {

var input = $('#parameters .' + name + ' input');
if (input.val() == '') {
  var originalValue = data[name];
  $('#parameters .' + name + ' span.original').html(', was  ' + originalValue + '  on last reload.');
  $('#parameters .' + name + ' button.original').click(function() {
    input.val(originalValue);
    hasBeenUpdated(name);
  });
};

};

function updateParameter(name, data) {

var input = $('#parameters .' + name + ' input');
input.val(data[name]);
$('#parameters .' + name + ' input').css('background-color', 'white');

};

var firstTime = true; var pickyPositiveAnswers = [‘Yes’, ‘Ok’, ‘Fine’, ‘Done’, ‘Good’, ‘Alright’, ‘Sure’, ‘As you wish’, ‘Made adjustments’]; var pickyNegativeAnswers = [‘Nu-uh’, ‘Nope’, ‘Sorry’, ‘No’, ‘Whoops’, ‘Oy vey’, ‘Oh dear’, “That didn’t work”];

function answerWith(answers) {

$('#actions .status').html('Picky answered: ' + answers[Math.round(Math.random()*(answers.length-1))] + '.').fadeIn(200).fadeOut(800);

};

function updateParameters(data) {

if (handleErrors(data)) {
  answerWith(pickyNegativeAnswers);
  return;
} else {
  answerWith(pickyPositiveAnswers);
};
$.each(parameters, function(index, parameter) {
  if (firstTime) { rememberOriginal(parameter, data); }
  updateParameter(parameter, data);
});
if (firstTime) { firstTime = false; };

};

function getParameters() {

var data = {};

$('#actions button').attr('disabled', 'disabled');

$.each(parameters, function(index, parameter) {
  var value = $('#parameters .' + parameter + ' input').val();
  if (value != '') { data[parameter] = value; };
});

$.ajax({
  url: 'index.json',
  data: data,
  success: function(data) {
    data = $.parseJSON(data);
    updateParameters(data);
    $('#actions button').removeAttr('disabled');
  }
});

};

function clear(name) {

$('#parameters .' + name + ' input').val('');

}

function installHandler(name) {

$('#parameters .' + name + ' input').keydown(function(event) {
  if (event.keyCode != '9' || event.keyCode != '16') { // Not tab or shift.
    hasBeenUpdated(name);
  }
});

};

$(document).ready(function() {

$.each(parameters, function(index, parameter) {
  clear(parameter);
  installHandler(parameter);
});

});