var selectedProjectsIds = new Array();

function completeProjects(searchPattern, searchArea)
{
   var action = xmlClientUrl;
   if (searchArea == 'koop')
   {
       action += '/ajax/getsaleprojectsbynameasxml';
   }
   else if (searchArea == 'huur')
   {
      action += '/ajax/getrentprojectsbynameasxml';
   }
   else if (searchArea == 'piv')
   {
      action += '/ajax/getpivprojectsbynameasxml';
   }
   else
   {
      //Guessing this is sale
      action += '/ajax/getsaleprojectsbynameasxml';
   }

   action += '?search=' + searchPattern + '&maxresult=20&exceptids=' + arrayToCommaSeparated(selectedProjectsIds);

   jQuery.ajax({ url: action,
            context: document.body,
            success: completeProjectsCallback
          });

   window.status = 'Bezig met ophalen van projectnamen.';
}

function completeProjectsCallback(xmlResponse)
{
   var projects = xmlResponse.getElementsByTagName('to');
   showProjectOptionsSelectBox(projects.length > 0);

   //Get projectselect and remove all items
   var projectselect = document.getElementById('projectselect');
   projectselect.options.length = 0;

   //for each project add the name as option
   for(var i=0; i<projects.length; i++)
   {
      var id = projects[i].getElementsByTagName('i')[0].firstChild.nodeValue;
      var name = projects[i].getElementsByTagName('n')[0].firstChild.nodeValue;
      var cityName = projects[i].getElementsByTagName('c')[0].firstChild.nodeValue;

      var fullName = name + ' (' + cityName + ')';
      var option = new Option(fullName, id, false);
      option.title = fullName;
      projectselect.options.add(option);
   }
}

function showProjectOptionsSelectBox(show)
{
   mustCloseProjectSelect = !show;
   if (show)
   {
      changeDisplay('projectselect_div','block');
   }
   else
   {
      changeDisplay('projectselect_div','none');
   }
}

function setAddProjectButtonEnabledState(addButtonEnabled)
{
   document.getElementById('addprojectbutton').disabled = !addButtonEnabled;
}

function removeProject(removeProjectId)
{
   selectedProjectsIds = getArrayWithRemovedId(selectedProjectsIds, removeProjectId);
   extendedSearch('projects', arrayToCommaSeparated(selectedProjectsIds));
}

var mustCloseProjectSelect = false;
function onProjectSelectBlurTimeout()
{
   showProjectOptionsSelectBox(!mustCloseProjectSelect)
}

function cancelMustCloseProjectSelect()
{
   mustCloseProjectSelect = false;
}

function onProjectSelectBlur()
{
   //Cannot immediate close select when loosing focus on edit, else select is hidden before
   //a click on the select is handled.
   mustCloseProjectSelect = true;
   setTimeout("onProjectSelectBlurTimeout();", 500);
}


function projectInputKeyDown(event)
{
   //On key up or down, if there are project results, select the first one in the list
   //and set focus on list.
   var selectbox = document.getElementById('projectselect');

   if (event.keyCode == 40)
   {
      //up
      if (selectbox.options.length > 0)
      {
         selectbox.selectedIndex = 0;
         selectbox.focus();
      }
   }
   else if (event.keyCode == 38)
   {
      //down
      if (selectbox.options.length > 0)
      {
         selectbox.selectedIndex = selectbox.options.length;
         selectbox.focus();
      }
   }
   else if (event.keyCode == 13)
   {
      if (selectbox.options.length > 0)
      {
         projectSelectChoice(selectbox.options[0].value);
      }
   }
}

function projectInputKeyUp(editbox, searchArea)
{
   completeProjects(editbox.value, searchArea);
}

function onProjectSelectKeyUp(event, selectbox)
{
   //On pressing enter, select this item in the list.
   if (event.keyCode == 13)
   {
      projectSelectChoice(selectbox.value);
   }
}

function projectSelectChoiceForIEWhichDoesntSelectImmediateAfterOnMouseUp()
{
   var projectId = document.getElementById('projectselect').value;
   if (projectId != '')
   {
      projectSelectChoice(projectId);
   }
}

function projectSelectChoice(value)
{
   if (value != '')
   {
      //This actually deals with selecting a project and searching.
      document.getElementById('projectname_edit').value = '';
      showProjectOptionsSelectBox(false);
      selectedProjectsIds = getArrayWithAddedId(selectedProjectsIds, value);
      extendedSearch('projects', arrayToCommaSeparated(selectedProjectsIds));
   }
   else
   {
      setTimeout(projectSelectChoiceForIEWhichDoesntSelectImmediateAfterOnMouseUp, 50);
   }
}

