var digitRegex = new RegExp(".\\d+", "g");
var autocompletecount  = 0;
var autocompleteResults=new Array();
/*
* Autocomplete-boxje voor hylo zoekresultaten
*/
function initHyloSearchBox(){  

  $('#ZoeHylo').unbind();
  $('#ZoeHylo').click(function() { $('#ZoeHylo').val(''); });
  $('#ZoeHylo').attr("autocomplete", "off")
  .keyup(autocompleteHyloSearch)
  .keydown(scrollAutocompleteBox)
  .blur(function() {
    if (autocompleteTimeout) clearTimeout(autocompleteTimeout);    
  });
}

var autocompleteTimeout = null;
autocompleteHyloSearch = function(e) {
  if (autocompleteTimeout) clearTimeout(autocompleteTimeout);
  if (digitRegex.test($('#ZoeHylo').val()) == false) {
    if (e.which == 13 || e.which == 9) {
      removeAutocompleteBox();
    }
	else if (e.which == 40 || e.which == 38) {
      //    
	}
    else {
      autocompleteTimeout = window.setTimeout(realAutocompleteHyloSearch, 500);
    }
  }
}

realAutocompleteHyloSearch = function() {	
  clearTimeout(autocompleteTimeout);
  if ($('#ZoeHylo').val() != '' && $('#ZoeHylo').val().length > 2 && digitRegex.test($('#ZoeHylo').val()) == false) {
		$.ajax({
			url: proxyUrl + '?url='+suggestionUrl+'%3Fquery%3D'+$('#ZoeHylo').val()+'%26fullquery%3D'+$('#ZoeHylo').val(),
			type: 'GET',
			dataType: 'xml',
			timeout: 10000,
			error: function(){
				//alert('Error loading XML document');
			},
			success: function(xml){
				autocompletecount  = 0;
				var autocompleteHTML = '<div id="autocompleteBox" class="text" size="5" onclick="removeAutocompleteBox()">';				
				var autocompleteIndex = 0;
				var foundresults = false;

				$(xml).find('word').each(function(){
				  foundresults = true;
				  var item_text = $(this).text();	
				  autocompleteResults[autocompleteIndex]=item_text;
				  var search_text = $('#ZoeHylo').val();
				  item_text = item_text.replace(search_text, "<span class='gevonden'>"+search_text+"</span>"); 
				  autocompleteHTML += '<p id=\'autocomplete_';
				  autocompleteHTML += autocompleteIndex;
  				  autocompleteHTML += '\'>';
				  autocompleteHTML += item_text;
				  autocompleteHTML += '</p>';
				  autocompleteIndex++;
				});
				 autocompleteHTML += '</div>';
				 if (foundresults == true)
				 {
					$('#ZoeHyloRes').html(autocompleteHTML).show();
					if (autocompleteIndex>5)
					{
					    $('#autocompleteBox').addClass('withscroll');
					}
				    $("#ZoeHyloRes p").each(function() {
					$(this)
					  .css({ cursor: 'pointer' })
					  .mouseover(function() { hiliteResult($(this)); })
					  .mouseout(function() { restoreResult($(this)); })
					  .click(function() { dohylosearch($(this)); });
				  });
				 }
				 else
				 {
				 	$('#ZoeHyloRes').html(autocompleteHTML).hide();
				 }
			}
		});    
  } 
}


scrollAutocompleteBox = function(e) {
  // 40 = SCROLL DOWN
  if (e.which == 40) {
	autocompletecount++;
	updateAutocompleteSelected();
  }
  // 38 = SCROLL UP
  if (e.which == 38) {
	autocompletecount--;
    updateAutocompleteSelected();
  }
  // 13 = ENTER
  //  9 = TAB
  else if (e.which == 13 || e.which == 9) {
    removeAutocompleteBox();
  }
}

function updateAutocompleteSelected(){
 $('#autocompleteBox p.selected').each(function(e) {
        $(this).removeClass('selected');
      });

  $('#autocomplete_'+autocompletecount).addClass('selected');
  if (autocompleteResults[autocompletecount])
  {
	  $('#ZoeHylo').val(autocompleteResults[autocompletecount]);
  }
  
}

hiliteResult = function(resObj) {
  $('#autocompleteBox p.selected').each(function(e) {
      $(this).removeClass('selected');
  });
  resObj.addClass('selected');
}

restoreResult = function(resObj) {
  resObj.removeClass('selected');
}

dohylosearch = function(resObj) {
  var resid = resObj.attr("id").substr(13,3);
  if (autocompleteResults[autocompletecount])
  {
		$('#ZoeHylo').val(autocompleteResults[resid]);
  } 
  $('.search_form').submit();  
}

removeAutocompleteBox = function() {
  $('#ZoeHyloRes').html('');
}

keyEventsAutocomplete = function(e) {
  // 13 = ENTER
  //  9 = TAB
  if (e.which == 13 || e.which == 9) {
    removeAutocompleteBox();
  }
}

function initHyloHomeButton(){  
   $("#hylohomesearch")
	  .css({ cursor: 'pointer' })
	  .mouseover(function() { hiliteHyloButton($(this)); })
	  .mouseout(function() { restoreHyloButton($(this)); }) 

 $(".is_homepage")
	  .click(function() {  $('#ZoeHyloRes').hide(); })

}

hiliteHyloButton = function(resObj) { 
  resObj.addClass('selected');
}

restoreHyloButton = function(resObj) {
  resObj.removeClass('selected');
}


