/*
some functions to aid controls in scaffold
*/

function multiSelectorMove(relationName, direction) {
  relationDiv = document.getElementById(relationName);
  selector = document.getElementById(relationName+'_selector');
  selected = document.getElementById(relationName+'_selected');
  
  if(direction == 'add'){
    obA = selector;
    obB = selected;
  }else{
    obA = selected;
    obB = selector;
  }
  
  count = obA.options.length;
  move_me = new Array;

  for(var i = 0; i < count; i++) {
    if (obA.options[i].selected)
      move_me.push(obA.options[i]);
  }

  for(var i = 0;i < move_me.length;i++) {
      opt = move_me[i];
      opt2 = opt.cloneNode(true);
      opt.parentNode.removeChild(opt);
      obB.appendChild(opt2);
      if(obA == selector){
        //append inputEl
        inputEl = document.createElement('input');
        inputEl.setAttribute('id', relationName+'_'+opt2.value);
        inputEl.setAttribute('type', 'hidden');
        inputEl.setAttribute('name', relationName+'[]');
        inputEl.setAttribute('value', opt2.value);
        relationDiv.appendChild(inputEl);
      }else{
        //remove inputEl
        relationDiv.removeChild(document.getElementById(relationName+'_'+opt2.value));
      }
  }

  return false;
}


function confirmAndGoto(url){
  if (confirm('You will lose any unsaved changes to this entity. Are you sure you wish to continue?'))
    window.location.href=url;
  else
    return false;
}

function addEntity(relationName){
  selectElement = document.getElementById(relationName+'_selector');
  if (selectElement.options.length <= 0) 
    return false;
  selectedOption = selectElement.options[selectElement.selectedIndex];
  listEl = document.createElement('li');
  listEl.setAttribute('class', 'list_entity');
  listEl.setAttribute('id', relationName+'_'+selectedOption.value);
  inputEl = document.createElement('input');
  inputEl.setAttribute('type', 'hidden');
  inputEl.setAttribute('name', relationName+'[]');
  inputEl.setAttribute('value', selectedOption.value);
  listEl.appendChild(inputEl);
  spanEl1 = document.createElement('span');
  spanEl1.setAttribute('class', 'display');
  spanEl1.innerHTML = selectedOption.innerHTML;
  listEl.appendChild(spanEl1);
  spanEl2 = document.createElement('span');
  spanEl2.setAttribute('class', 'edit');
  aEl2 = document.createElement('a');
  aEl2.setAttribute('href', '#');
  aEl2.innerHTML = 'edit';
  spanEl2.appendChild(aEl2);
  listEl.appendChild(spanEl2);
  spanEl3 = document.createElement('span');
  spanEl3.setAttribute('class', 'remove');
  aEl3 = document.createElement('a');
  aEl3.setAttribute('href', "javascript:void(removeEntity('"+relationName+"', '"+relationName+"_"+selectedOption.value+"'))" );
  aEl3.innerHTML = 'remove';
  spanEl3.appendChild(aEl3);
  listEl.appendChild(spanEl3);
  document.getElementById(relationName+'_list').appendChild(listEl);
  //remove option from list
  selectElement.removeChild(selectedOption);
}
function removeEntity(relationName, liId){
  //add back into selector
  liEl = document.getElementById(liId);
  inputElement = liEl.getElementsByTagName('input')[0];
  optionElement = document.createElement('option');
  optionElement.setAttribute('value', inputElement.value)
  optionElement.innerHTML = liEl.getElementsByTagName('span')[0].innerHTML;
  document.getElementById(relationName+'_selector').appendChild(optionElement);
  //remove from list
  liEl.parentNode.removeChild(liEl);
}