var ua = navigator.userAgent.toLowerCase();
var msIE = ((ua.indexOf ('msie') != -1) && 
			(ua.indexOf ('opera') == -1) && 
			(ua.indexOf ('webtv') == -1));

var _st;
var _ss;
var widthResults = 0;
var hoveredSuggestion = -1;
var storedSearchString = '';
var searchArray = new Array ();
var resultsArray = new Array ();


/*** SEARCH ***/

function buildSearch(sa)
{
	searchArray = sa;
  _st = document.getElementById('findtag');
  _ss = document.getElementById('search_suggest');
  
  initSearch();
  
  _st.setAttribute ('autocomplete', 'off');
  _st.onkeydown = function (ev)
  {
    try
    {
      searchKeyDown(event.keyCode);
    }
    catch (e)
    {
      searchKeyDown (ev.keyCode);
    }
  };
  
  _st.onkeyup = function (ev)
  {
    try
    {
      searchKeyUp (event.keyCode);
    }
    catch (e)
    {
      searchKeyUp (ev.keyCode);
    }
  };
  
  _st.onblur = function ()
  {
    setTimeout ("_ss.style.display = 'none';", 200);
  }
  
  widthResults = _st.offsetWidth - 6;
}

function initSearch()
{
	_ss.style.top = calcOffset (_st, 'offsetTop') + _st.offsetHeight - 1 + 'px';
	_ss.style.left = calcOffset (_st, 'offsetLeft') + 'px';
	_ss.style.width	= parseInt(_st.offsetWidth - 2) + 'px';
}


function calcOffset (calcElement, offsetType)
{
	var calculatedOffset = 0;
	while (calcElement)
	{
		calculatedOffset += calcElement[offsetType];
		calcElement = calcElement.offsetParent;
	}
	return calculatedOffset;
}


function hoverSuggestion (newHover, oldHover)
{
  initSearch ();
  
  if (oldHover != -1)
    {
      _ss.getElementsByTagName ('a').item (oldHover).className = '';
    }
  if (newHover != -1)
    {
      _ss.getElementsByTagName ('a').item (newHover).className = 'hovered';
      hoveredSuggestion = newHover;
    }
}


function searchKeyDown(evKeyCode)
{
	if (_ss.style.display == 'block')
	{
		initSearch ();
		
		if (evKeyCode == 38 && hoveredSuggestion != -1)
		{
			hoveredSuggestion--;
			hoverSuggestion (hoveredSuggestion, hoveredSuggestion + 1);
			_st.value = resultsArray[hoveredSuggestion];
		}

		if (_st.value != '' && evKeyCode == 40 && hoveredSuggestion < resultsArray.length - 1)
		{
			hoveredSuggestion++;
			hoverSuggestion (hoveredSuggestion, hoveredSuggestion - 1);
			_st.value = resultsArray[hoveredSuggestion];
		}
      
		if (evKeyCode == 38 && hoveredSuggestion == -1)
			_st.value = storedSearchString;
			
		if (evKeyCode != 38 && evKeyCode != 40)
			hoveredSuggestion = -1;
	}
}


function searchKeyUp(evKeyCode)
{
	initSearch ();
  
	if (evKeyCode != 38 && evKeyCode != 40)
		storedSearchString = _st.value;
		
	if (_st.value != '' && evKeyCode != 13 && evKeyCode != 27 && evKeyCode != 38 && evKeyCode != 40)
		showSearchResults ();
	
	if ((_st.value == '' || evKeyCode == 27) && _ss.style.display == 'block')
	{
		_ss.style.display = 'none';
		showTopAd ();
	}
}


function showSearchResults()
{
	_ss.style.display = 'block';
	_ss.innerHTML = '';
	var i = 0;
	var j = 0;
	resultsArray = new Array ();
	while (resultsArray.length < 10 && i < searchArray.length)
	{
		if (searchArray[i].indexOf (_st.value.toLowerCase ()) == 0)
		{
			resultsArray[j] = searchArray[i];
			j++;
		}
		i++;
	}
	
	i = 0;
	while (resultsArray.length < 10 && i < searchArray.length)
	{
		var doubleResult = false;
		var k = 0;
		if (searchArray[i].indexOf (_st.value.toLowerCase ()) != -1)
		{
			while (!doubleResult && k < resultsArray.length)
			{
				if (searchArray[i] == resultsArray[k])
					doubleResult = true;
				k++;
			}
			
			if (!doubleResult)
			{
				resultsArray[j] = searchArray[i];
				j++;
			}
		}
		i++;
	}
  
	if (resultsArray.length == 0 && _ss.style.display == 'block')
	{
		_ss.style.display = 'none';
	}

	var lang_id = document.getElementById('lang').value;
	var newstype = document.getElementById('newstype').value;
	var tagtype = document.getElementById('tagtype').value;	
	if (tagtype == '')
		tagtype = 0;
	if (newstype == '')
		newstype = 0;
		
	for (var i = 0; i < resultsArray.length; i++)
		_ss.innerHTML +=
			'<a href="/lang/' + lang_id + '/tagtype/' + tagtype + '/newstype/' + newstype + '/findtag/' + resultsArray[i] + '" style="width:' +
			widthResults + 'px;" onmouseover="hoverSuggestion(' + i +
			', hoveredSuggestion, 0)">' + resultsArray[i] + '</a>';
}

/*
Array.prototype.inArray = function (checkValue)
{
  for (var i = 0; i < this.length; i++)
    if (this[i] == checkValue)
      return i;
  return -1;
};
*/