/* INGREDIENT FORM STATES */
var SINGLE_INGRED_MODE = 0;
var INGRED_GROUP_STARTED = 1;
var INGRED_GROUP_LIST = 2;
var state = 0;
var depth = 0;
var numIngreds = 0;


/* SHOW INGREDIENT ENTRY FORM */
function ingredFormShow(exists) {
  if (exists) { $('#ingredEditLink').hide(); }
  else { 
    $('#newIngredList').hide(); 
    $('#ingredStatus').hide();
  }
  $('#ingredArea').attr('class','ingredAreaEdit');
  $('#ingredX').show();
  $('#ingredAdd').attr('class','ingredEditShow');
}



/* HIDE INGREDIENT ENTRY FORM */
function ingredFormHide(exists) {
  if (exists) { $('#ingredEditLink').show(); }
  else { 
    $('#newIngredList').show();
    $('#ingredStatus').show();
  }
  $('#ingredArea').attr('class','ingredAreaShow');
  $('#ingredX').hide();
  $('#ingredAdd').attr('class','ingredEditHide');
}



/* ADDS INGREDIENT TEXT TO LIST */
function addIngredText(ingred, isGroup, groupJustStarted) {
  var ingredList = document.getElementById('ingredList');
  var ingredDel = '<a id="iDel'+ingredNum+'" class="del"' +
                  ' onclick="removeId(\'ingredList\',\'i\',' + 
                                      '\'ingredStr\',' + ingredNum + ');">' +
                  '[x]</a>';
  var comma = ', ';
  var group;

  if (isGroup === 1) { group = " ("; }
  else if (isGroup === 2) { group = ")"; }
  else { group = ""; }

  /* DETERMINE WHETHER TO PREPEND A COMMA TO MATCHED STRING */
  if (groupJustStarted === 1) { comma = " "; }
  if (ingredList.innerHTML === "") { comma = " "; }

  var span = '<span id="i' + ingredNum + '">' + 
               comma+ingred+ingredDel+group+
             "</span>";

  ingredList.innerHTML += span;
  ingredNum++;
}


// ADDS INGREDIENT TO LIST
function addIngred() {
  var groupJustStarted = 0;
  
  // UPDATE STATE AND BUTTON STATE                                        
  if (state === INGRED_GROUP_STARTED) {
    groupJustStarted = 1;
    state = INGRED_GROUP_LIST;
    document.getElementById("endGroupBtn").disabled = false;
  }
  
  if ((ddMatchStr == null)||(ddMatchStr == undefined)||(ddMatchStr === "")) {
    // if no match, add as a food type
	var newIngredient = $('#itemIngredientSearch').val();
    addFoodType(newIngredient, groupJustStarted);
  }
  else {
    addIngredText(ddMatchStr, 0, groupJustStarted);
    document.getElementById('ingredStr').value += ";i"+getValueFromId(ddMatchId);
  }
  document.getElementById('addGrp').disabled = false;
  numIngreds++;
  $('#itemIngredientSearch').val('');
}



function startGroup() {
  depth++;
  state = INGRED_GROUP_STARTED;

  var ingredText = document.getElementById('ingredList');
  ingredText.innerHTML = 
       ingredText.innerHTML.substr(0,(ingredText.innerHTML.length - 7)) +
       "(</SPAN>";

  /* ADD INGREDID TO HIDDENSTR */
  var ingredStr = document.getElementById("ingredStr");
  ingredStr.value = ingredStr.value.concat("g");

  /* DISABLE START GROUP BUTTON, ENABLED END GROUP BUTTON */
  document.getElementById("addGrp").disabled = true;
  document.getElementById("endGroupBtn").disabled = true;

  $('#itemIngredientSearch').focus(); // return focus
}



function endGroup() {
  depth--;

  // add closed paran
  var ingredText = document.getElementById('ingredList');
  ingredText.innerHTML = 
       ingredText.innerHTML.substr(0,(ingredText.innerHTML.length - 7)) +
       ")</SPAN>";

  // UPDATE THE STATE AND SET BUTTON STATES 
  if (depth > 0) { state = INGRED_GROUP_LIST; }
  else {
    state = SINGLE_INGRED_MODE;
    document.getElementById('endGroupBtn').disabled = true;
  }
  document.getElementById('addGrp').disabled = true;

  /* ADD 'e' TO INGREDSTR TO SPECIFY THE END OF THE GROUP */
  var ingredStr = document.getElementById("ingredStr");
  ingredStr.value = ingredStr.value.concat("e");

  $('#itemIngredientSearch').focus(); // focus on ingredient input
}



function removeIngred(cont, num) {
  removeId(cont, 'i', 'ingredStr', num);
}


function addFoodType(name, groupJustStarted) {
  $.ajax({
    url : "/type/add?q="+encodeURIComponent(name),
    success: function(data) {
      var typeId = data;
      if (typeId != -1) {
        addIngredText(name, 0, groupJustStarted);
  	document.getElementById('ingredStr').value += ";i" + typeId;
  	$('#itemIngredientSearch').val('');
      }
    }
  });  
}

