var gFormFieldId;
var gContainerElement;
function showPickSelect( elementNamePrefix, elementArray, formFieldId, isPickSelectPopulated, containerElement, hideSelectElements, blockIndex )
{
  gFormFieldId = formFieldId;
  var divId = elementNamePrefix + 'PickSelect';
  var isPopulatedElement = document.getElementById( isPickSelectPopulated );
  var pickerDiv = document.getElementById( elementNamePrefix + 'PickSelect' );
  if( isPopulatedElement.value == 'false' )
  {
    populatePickSelect( divId, elementArray );
    isPopulatedElement.value = 'true';
  }
  if ( pickerDiv.style.display == 'block' )
  {
    hidePickSelect( elementNamePrefix );
    return;
  }
  if( pickerDiv.childNodes.length > 5 )
  {
    var newHeight = '100px';
    pickerDiv.style.height = newHeight;
  }
  if( hideSelectElements == 'true' )
  {
    setSelectsVisibility( blockIndex, 'hidden' );
  }
  if( containerElement && containerElement.length > 0 )
  {
    showSubBox( divId, formFieldId, containerElement );
    gContainerElement = containerElement;
  }
  else
  {
    showBox( divId, formFieldId, 'true' );
    gContainerElement = '';
  }
}
function hidePickSelect( elementNamePrefix )
{
  var parentDiv = document.getElementById( elementNamePrefix + 'PickSelect' );
  if( parentDiv.style.display && parentDiv.style.display != 'none' )
  {
    parentDiv.style.display = 'none';
    var isLoadedDiv = document.getElementById( elementNamePrefix + 'IsLoaded' );
    isLoadedDiv.value = 'true';
  }
}
function setSelectsVisibility( blockIndex, newState )
{
  var roleSelector = document.getElementById( 'searchSpecBuilder.role[' + blockIndex + ']');
  var roleLI = document.getElementById( 'roleLI' + blockIndex );
  var degreeSelector = document.getElementById( 'searchSpecBuilder.degree[' + blockIndex + ']' );
  var degreeLI = document.getElementById( 'degreeLI' + blockIndex );
  //alert('newState=' + newState + ', blockIndex=' + blockIndex + ', roleSelector=' + roleSelector + ', roleLI=' + roleLI );
  //alert('degreeSelector=' + degreeSelector + ', degreeLI=' + degreeLI );
  if( roleSelector && roleLI && roleLI.style.display != 'none' && roleLI.style.display != '' )
  {
    //alert('role was visible (' + roleLI.style.display + '), setting state to ' + newState);
    //roleSelector.style.display = newState;
    roleSelector.style.visibility = newState;
  }
  if( degreeSelector && degreeLI && degreeLI.style.display != 'none' && degreeLI.style.display != '' )
  {
    //alert('degree was visible (' + degreeLI.style.display + '), setting state to ' + newState);
    //degreeSelector.style.display = newState;
    degreeSelector.style.visibility = newState;
  }
}
function setVisibilityOnAllRows( newState )
{
  if( self.getRowCount ) //if we are in advancedSearch, this function will be defined and we can go through and enable all the selectboxen
  {
    var numRows = getRowCount();
    for( var i = 0; i < numRows; i++ )
    {
      setSelectsVisibility( i, newState );
    }
  }
}
function populatePickSelect( divId, elementArray )
{
  var parentDiv = document.getElementById( divId );
  for ( var i = 0; i < elementArray.length; i++ )
  {
    var newDiv = document.createElement( 'div' );
    newDiv.setAttribute( 'id', divId + i );
    newDiv.innerHTML = '<a href="javascript:addVal(\'' + escapeSingleQuotes( elementArray[i] ) + '\')">' + elementArray[i] + '</a>';
    parentDiv.appendChild( newDiv );
  }
}
function escapeSingleQuotes( stringToEscape )
{
  var newstring = stringToEscape.replace(/'/g, "\\'");
  return newstring;
}
function addVal( textVal )
{
  var formField = $( gFormFieldId );
  var curVal = formField.value
  var i;
  for( i = curVal.length; i >= 0; i-- )
  {
    if( curVal.charAt( i ) == ' ' )
    {
      break
    }
    if( i == 0 )
    {
      curVal = '';
    }
  }
  if( curVal != '' )
  {
    curVal = curVal.substring( 0, i + 2 );
  }
  textVal = textVal.split(' ').length > 1 ? '"'+textVal+'"' : textVal;
  var newVal = curVal + textVal + ' ';
  formField.value = newVal;
  if( gContainerElement )
  {
    hideSubContextMenu();
  }
  else
  {
    hideContextMenu();
  }
  setVisibilityOnAllRows( 'visible' );
  formField.focus();
}