var termsfound = 0;
var lastsearchterm = "";
var currentscrollvalue = 0;

function repAllSpec( sentence )
{
	var specialchars = new Array(/à/g,/á/g,/â/g,/ã/g,/ä/g,/å/g,/æ/g,/ç/g,/è/g,/é/g,/ê/g,/ë/g,/ì/g,/í/g,/î/g,/ï/g,/ð/g,/ñ/g,/ò/g,/ó/g,/ô/g,/õ/g,/ö/g,/ø/g,/ù/g,/ú/g,/û/g,/ü/g,/ý/g);
	var normalchars =  new Array("a","a","a","a","a","a","a","c","e","e","e","e","i","i","i","i","o","n","o","o","o","o","o","o","u","u","u","u","y");
	var i;
	for( i = 0; i < specialchars.length; i++ )
	{
		sentence = sentence.replace( specialchars[i], normalchars[i] );
	}
	return sentence;
}

function searchLoad( searchText )
{
	lastsearchterm = searchText;
	searchText = new String(searchText);
	searchText = trim(searchText);
	var searchTextTest = searchText;
	if( (searchTextTest.replace(/\s*/g,"")).length >= 3 )
	{
		searchArray = searchText.split(" ");
		var i;
		for (i = 0; i < searchArray.length; i++)
		{
			searchArray[i] = trim(searchArray[i]);
		}
		var tempsearchArray = new Array();

		for (i = 0; i < searchArray.length; i++)
		{
			var searchval = trim(searchArray[i]);
			if (searchval.length > 2)
			{
				tempsearchArray.push(searchval);
			}
		}
		searchArray = tempsearchArray;

 		traverseMenucardTexts(searchArray);
	}
}

function searchPrompt( searchText )
{
	expandAllMenuCategories();
	if (searchText==lastsearchterm)
	{
		scrollToNextSearchResult();
		return false;
	}
	lastsearchterm = searchText;
	searchText = new String(searchText);
	searchText = trim(searchText);
	var searchTextTest = searchText;
	if( (searchTextTest.replace(/\s*/g,"")).length >= 3 )
	{
		searchArray = searchText.split(" ");
		var i;
		for (i = 0; i < searchArray.length; i++)
		{
			searchArray[i] = trim(searchArray[i]);
		}
		var tempsearchArray = new Array();

		for (i = 0; i < searchArray.length; i++)
		{
			var searchval = trim(searchArray[i]);
			if (searchval.length > 2)
			{
				tempsearchArray.push(searchval);
			}
		}
		searchArray = tempsearchArray;

		removeAllHighlights();

 		traverseMenucardTexts(searchArray);

		if (termsfound>0)
		{
			var scrollelt = document.getElementById('ihighlightspan1');
			currentscrollvalue = 1;
			if (scrollelt) scrollelt.scrollIntoView(true);
		}

		xmlRequest('setSearchterm.php','searchterm='+searchText,'idummy');
	}
	return false;
}

function scrollToNextSearchResult()
{
	if (currentscrollvalue!=0)
	{
		var lastscrollelt = document.getElementById('ihighlightspan'+currentscrollvalue);
		if (lastscrollelt)
		{
			if (lastscrollelt.style.setProperty)
			{
				lastscrollelt.style.setProperty('text-decoration','none',null);
			}
			else
			{
				lastscrollelt.style.textDecoration = 'none';
			}

		}

		currentscrollvalue++;
		var scrollelt = document.getElementById('ihighlightspan'+currentscrollvalue);
		if (scrollelt)
		{
			if (scrollelt.style.setProperty)
			{
				scrollelt.style.setProperty('text-decoration','underline',null);
			}
			else
			{
				scrollelt.style.textDecoration = 'underline';
			}
			scrollelt.scrollIntoView(true);
		}
		else
		{
			currentscrollvalue = 1;
			scrollelt = document.getElementById('ihighlightspan'+currentscrollvalue);
			if (scrollelt)
			{
				if (scrollelt.style.setProperty)
				{
					scrollelt.style.setProperty('text-decoration','underline',null);
				}
				else
				{
					scrollelt.style.textDecoration = 'underline';
				}
				scrollelt.scrollIntoView(true);
			}
		}
	}
}

function traverseMenucardTexts(searchTerms)
{
	var i,j;
	var ret;
	var searchTerm = "";
	var idnumber = 0;
	var restaurantsbasket = document.getElementById('irestaurantsbasket');
	//menucategorieslist
	var menucatlist = restaurantsbasket.getElementsByTagName('a');

	if (menucatlist && menucatlist.length>0)
	{
		for (i=0;i<menucatlist.length;i++)
		{
			if (menucatlist[i].className=='menucategorylink')
			{
		for (j=0; j < searchTerms.length;j++)
		{
			searchTerm = searchTerms[j];
			ret = doHighlight(menucatlist[i].innerHTML, searchTerm, 0);
			menucatlist[i].innerHTML = ret['html'];
		}
			}
		}
	}

	//menucard
	var menucardlist = document.getElementById('imenucard');
	var menucardptags = menucardlist.getElementsByTagName('p');
	if (menucardptags && menucardptags.length>0)
	{
		for (i=0;i<menucardptags.length;i++)
		{
			if
			(
				menucardptags[i].className=="menucardcategoryheader"
				||
				menucardptags[i].className=="menucardcategory"
				||
				menucardptags[i].className=="menucardproductdescription"
				||
				menucardptags[i].className=="menucardproductname"
				||
				menucardptags[i].className=="restaurantdiscounttitle"
				||
				menucardptags[i].className=="restaurantdiscounttext"
			)
			{
				for (j=0; j < searchTerms.length;j++)
				{
					searchTerm = searchTerms[j];

					if (idnumber==0) idnumber = 1;
					ret = doHighlight(menucardptags[i].innerHTML, searchTerm, idnumber);
					idnumber = ret['idnumber'];
					if (idnumber==1) idnumber = 1;
					menucardptags[i].innerHTML = ret['html'];
				}
			}
		}
	}

	//basket
	var basketproductlist = restaurantsbasket.getElementsByTagName('a');

	if (basketproductlist && basketproductlist.length>0)
	{
		for (i=0;i<basketproductlist.length;i++)
		{
			if (basketproductlist[i].className=='prodtitle')
			{
				for (j=0; j < searchTerms.length;j++)
				{
					searchTerm = searchTerms[j];
					ret = doHighlight(basketproductlist[i].innerHTML, searchTerm, 0);
					basketproductlist[i].innerHTML = ret['html'];
				}
			}
		}
	}

	return idnumber;
}

function doHighlight(highlighttext, searchTerm, idnumber)
{
  var newText = "";
  var i = -1;
  var inumeric = idnumber;
  var lcSearchTerm = repAllSpec( searchTerm.toLowerCase() );
  var lchighlighttext = repAllSpec( highlighttext.toLowerCase() );

  var highlightStartTag = '<span id="ihighlightspan';
  var highlightEndTag = '</span>';

  while( highlighttext.length > 0 )
  {
    i = lchighlighttext.indexOf(lcSearchTerm, i+1);
    if (i < 0)
    {
      newText += highlighttext;
      highlighttext = "";
    }
    else
    {
      termsfound++;
      newText += highlighttext.substring(0, i) + highlightStartTag + ((idnumber!=0)?idnumber:"") + '" class="highlight">' + highlighttext.substr(i, searchTerm.length) + highlightEndTag;
      highlighttext = highlighttext.substr(i + searchTerm.length);
      lchighlighttext = repAllSpec( highlighttext.toLowerCase() );
      i = -1;
      if (idnumber!=0) idnumber++;
    }
  }

  var ret = new Array();
  ret['html'] = newText;
  ret['idnumber'] = idnumber;
  return ret;
}

function removeAllHighlights()
{
	var words = document.getElementsByTagName('span');
	var teststr = '';
	var replacetext = '';
	for(i = (words.length-1); i >= 0; i--)
	{
		if (words[i].className=='highlight')
		{
			teststr = new String(words[i].id);
			teststr = teststr.substr(0,14);
			if(teststr == 'ihighlightspan')
			{
	   		if( words[i].innerHTML)
	   		{
	   			replacetext = words[i].innerHTML;
	  			var newnode = document.createTextNode( replacetext );
	      	words[i].parentNode.replaceChild( newnode, words[i] );
	      }
			}
		}
	}
}
