
/* ----- recipe_manager.js ----- */
var numIngredients             = null;
var imageUrlId                 = '';
var imageBrowserURL            = 'choose_image_popup?imagedir=';
var ingredientId               = '';
var ingredientIdBaseLabel      = "ingredientid_";
var ingredientLiteralBaseLabel = ingredientIdBaseLabel + "literal_";
var ingredientErrorBaseLabel   = ingredientIdBaseLabel + "error_";
var ingredientFieldBaseLabel   = ingredientIdBaseLabel + "field_";
var chooserBaseURL             = "choose_satellite_table_popup";
var newIngredientBaseURL       = "new_satellite_table_popup";
var messageMoreThan3Chars      = "Please enter more than 3 characters before starting a search.";
var messageFieldIncomplete     = "The search or creation yielded no valid result, maybe due to closing the popup window. Please either delete the ingredient, re-run the search or create a new ingredient.";
var createImageURL             = "";

function setUrlAndCloseWindow(url){
  opener.setUrl(url,'','','');
  window.close();
}

function addIngredient(){
  var elemIngredients = document.getElementById('ingredients');
  var elemTemplate    = document.getElementById('ingredient_template');
  var elemControls    = document.getElementById('formControls');
  var elemNode        = elemTemplate.cloneNode(true);
  if (numIngredients == null) {
    var elem          = document.getElementById('numIngredients');
    numIngredients    = Number(elem.value);
  }
  currentNumber     = String(numIngredients);
  
  elemNode.id         = 'ingredient_' + currentNumber;

  renameTree('_template', '_temp');

  elemIngredients.insertBefore(elemNode, elemControls);

  renameTree('_template', '_' + currentNumber);

  renameTree('_temp', '_template');

  numIngredients      = numIngredients + 1;
}

function renameTree(oldSuffix, newSuffix){
  var elem            = null;
  var items           = new Array('label_for_ingredientid', 'ingredientid', 'label_for_ingredientgroupid', 'ingredientgroupid', 'label_for_ingredientquantity', 'ingredientquantity', 'label_for_ingredientunitid', 'ingredientunitid', 'label_for_ingredientremark', 'ingredientremark', 'formControls' , 'delIngredientButton', 'ingredientid_literal', 'ingredientid_search_button', 'ingredientid_new_button', 'ingredientid_error', 'ingredientid_field');
  var item            = items.pop();
  do {
    elem = document.getElementById(item + oldSuffix);
    elem.id             = item + newSuffix;
    item = items.pop();
  } while ( item != null );
}

function delIngredient(id){
  var number = id.split('_')[1];
  var elem   = document.getElementById('ingredient_' + number);
  var parent = elem.parentNode;
  parent.removeChild(elem);
}

function setUrl(imgUrl, imgWidth, imgHeight, imgAlt){
  var elem   = document.getElementById(imageUrlId);
  elem.value = imgUrl;
}

function openRecipeImageBrowser( id, title, url ){
  imageUrlId = id;
  window.open( imageBrowserURL+url, title, "height=700,width=700,scrollbars=yes,dependent=yes" );
}

function setIngredient( id, name ){
  var elem   = document.getElementById(ingredientIdBaseLabel + String(ingredientId));
  elem.value = id;
  elem       = document.getElementById(ingredientLiteralBaseLabel + String(ingredientId));
  elem.value = name;
  setFieldComplete();
}

function setFieldIncomplete(){
  var elem             = document.getElementById(ingredientErrorBaseLabel + String(ingredientId));
  if ( elem.firstChild == null ) {
    var textNode = document.createTextNode(messageFieldIncomplete);
    elem.appendChild(textNode);
  } else {
    elem.innerHTML = messageFieldIncomplete;
  }
  elem                 = document.getElementById(ingredientFieldBaseLabel + String(ingredientId));
  elem.className       = 'field error';
  document.getElementById(ingredientLiteralBaseLabel + String(ingredientId)).focus();
}

function setFieldComplete(){
  var elem             = document.getElementById(ingredientErrorBaseLabel + String(ingredientId));
  if ( elem.firstChild != null ) {
    elem.innerHTML = '';
  }
  elem                 = document.getElementById(ingredientFieldBaseLabel + String(ingredientId));
  elem.className       = 'field';
  document.getElementById(ingredientLiteralBaseLabel + String(ingredientId)).focus();
}

function openIngredientSearchResults( id ) {
  ingredientId = id.split('_')[3];
  var fieldId  = ingredientLiteralBaseLabel + String(ingredientId);
  var elem     = document.getElementById(fieldId);
  var value    = elem.value;
  setFieldIncomplete();
  if (value.length > 3) {
    window.open( chooserBaseURL+'?tablename=ingredient&name=' + String(value), "IngredientChooser", "scrollbars=yes,width=800,height=600,location=no,menubar=no,status=no,toolbar=no");
  } else {
    alert (messageMoreThan3Chars);
    document.getElementById(ingredientLiteralBaseLabel + String(ingredientId)).focus();
  }
}

function openNewIngredient( id ) {
  ingredientId = id.split('_')[3];
  var fieldId  = ingredientLiteralBaseLabel + String(ingredientId);
  var elem     = document.getElementById(fieldId);
  var value    = elem.value;
  setFieldIncomplete();
  window.open( newIngredientBaseURL+'?tablename=ingredient&name=' + String(value), "IngredientCreator", "scrollbars=yes,width=600,height=400,location=no,menubar=no,status=no,toolbar=no");
}


