var req;
var reqTimeout;
var timerID = null;
var new_search_val = '';
var old_search_val = '';
var max_steps_check_search = 0;
var string_length_old = 0;
var string_length_new = 0;
var count_search = 0;


function RequestData(v)
{
	  req = CreateXmlHttpRequestObject();
  if (req)
  {
	  req.open( 'POST', './search.php', true );
	  req.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
	  req.onreadystatechange = UpdatePage;
	  req.send(encodeURI('test='+v));

	  reqTimeout = setTimeout("req.abort();", 5000);
  }
}

function UpdatePage()
{
 if (req.readyState == 4) {
  clearTimeout(reqTimeout);
  if (req.status == 200) {

   if ( req.responseText.indexOf(':')==-1)                      // ничего не найдено.
   {
	div = document.getElementById('div1');                     // не останавливаем. Даём возможность исправиться.
	div.innerHTML = '<p style="color: red">'+decodeURI(req.responseText)+'</p>';
   }
   else                                                         // Найдена хоть одна строка.
   {
	var r = req.responseText;
		r = decodeURI(r)
	var a_search = r.split(';');
	count_search = a_search.length;
	var options = '';
	for ( i=0; i<count_search; i++ )
	{
	 o = a_search[i].split(':');
//   options+='<OPTION VALUE='+o[0]+'>'+o[1]+': '+o[2];  // не работает в IE,  Opera. Работает FF. Safari - ? Не работает начиная со второй строки. Вставляется %0A между = и номером.
	 options+='<OPTION VALUE='+o[0]+'>'+o[1]+': '+o[2];
	}
																											   // onChange - ok, onSelect & onSelectStart - NO
	var inner = '<SELECT NAME="r" size="'+(count_search>1?count_search:2)+'"'
				+ ' onChange=document.form_search.submit()'
				+ '>'+options+'</SELECT>'

	div = document.getElementById('div1');
	div.innerHTML = inner;
   }
}}}
function CheckSearchInput()
{
 var s = document.getElementById('search');
 new_search_val = s.value;
 string_length_new = new_search_val.length;

 if ( new_search_val != old_search_val )
 {
  if ( !count_search || count_search>1 || string_length_new < string_length_old )   // Если осталась одна строка, а длина строки увеличивается, то не посылать запрос на сервер.
  {
   RequestData(new_search_val)
  }
  old_search_val = new_search_val
  string_length_old = string_length_new;
 }
 if (max_steps_check_search++>999) clearTimeout(timerID); // Защита от бесконечности.
 timerID = setTimeout( "CheckSearchInput()", 200 );
}
function StartCheckSearch()
{
  if (timerID) clearTimeout(timerID);
  max_steps_check_search = 0;
  document.getElementById('search').value='';
  div = document.getElementById('div1');
  div.style.display = 'block';
  div.style.display = '';
  CheckSearchInput();
}
function StopCheckSearch()
{
  if (timerID) clearTimeout(timerID);
  count_search      = 0;
  string_length_old = 0;
  string_length_new = 0;
  setTimeout( "CloseDiv()", 200 );  // Локально работает и без паузы, а на сервере только так.
}
function CloseDiv()
{
  div = document.getElementById('div1');
  div.style.display = 'none';
}
