loadSuggestions.req = ""

function loadSuggestions()
{
	suggest.prevInp = document.frmVertaal.teVertalen.value
	var url = "/Web/Majstro/suggest.php?input=" + encodeURI(suggest.prevInp) + "&bronTaal=" + suggest.bronTaal + "&doelTaal=" + suggest.doelTaal
	if (window.XMLHttpRequest)
	{
		loadSuggestions.req = new XMLHttpRequest()
	}
	else if (window.ActiveXObject)
	{
		try
		{
			loadSuggestions.req = new ActiveXObject("Msxml2.XMLHTTP")
		} 
		catch (e)
		{
			try
			{
				loadSuggestions.req = new ActiveXObject("Microsoft.XMLHTTP")
			} 
			catch (e) {}
		}
	}
	loadSuggestions.req.onreadystatechange = processReqChange
	loadSuggestions.req.open("GET", url, true)
	loadSuggestions.req.send(null)
}

autoComplete.lastCompletion = ""
suggest.suggestions = ""
suggest.loaded = false
suggest.prevInp = ""
suggest.bronTaal = ""
suggest.doelTaal = ""
//suggest.gebrTaal = ""

function suggest(showSuggestions)
{
	var formulier = document.frmVertaal
	var currInp = formulier.teVertalen.value
	if (containsWildCards(currInp))
	{
		return
	}
	suggest.bronTaal = formulier.bronTaal.value
	if (suggest.bronTaal == '*')
	{
		return
	}
	suggest.doelTaal = formulier.doelTaal.value
	if (suggest.loaded)
	{
		for (i = 0; i < suggest.suggestions.length; i++)
		{
			loadSuggestions()
			break
		}
	}
	else
	{
		loadSuggestions()
	}
	if (showSuggestions)
	{
		sug = document.getElementById("sugFieldSet")
		sug.style.display = 'block'
	}
}
 
function autoComplete()
{
	var a = suggest.suggestions
	if (a[0] != "")
	{
		var currInp = document.frmVertaal.teVertalen.value
		if (stripNonAlpha(autoComplete.lastCompletion).length < stripNonAlpha(currInp).length && a[0] != currInp)
		{
			iStart = calcStartPosSelection(currInp, a[0])
			iLength = a[0].length
			if (a[0].slice(-1) != "*")
			{
				document.frmVertaal.teVertalen.value = a[0]
			}
			else
			{
				document.frmVertaal.teVertalen.value = a[0].slice(0, -1)
			}
			if (document.frmVertaal.teVertalen.createTextRange)
			{
				var oRange = document.frmVertaal.teVertalen.createTextRange()
				oRange.moveStart("character", iStart)
				oRange.moveEnd("character", iLength - document.frmVertaal.teVertalen.value.length)
				oRange.select()
			}
			else if (document.frmVertaal.teVertalen.setSelectionRange)
			{
				document.frmVertaal.teVertalen.setSelectionRange(iStart, iLength)
			}
		}
		autoComplete.lastCompletion = currInp
	}
}

function isNonAlpha(c)
{
	return c == "-" || c == " " || c == "’" || c == "." || c == '‐'
}

function stripNonAlpha(s)
{
	var newString = ""
	for (var i = 0; i < s.length; i++)
	{
		if (!isNonAlpha(s.substring(i, i + 1)))
		{
			newString += s.substring(i, i + 1)
		}
	}
	return newString
}

function calcStartPosSelection(currInp, suggestedWord)
{
	var i = 0
	var t = 0
	while (i < stripNonAlpha(currInp).length)
	{
		var c = suggestedWord.substring(t, ++t)
		if (!isNonAlpha(c))
		{
			i++
		}
	}
	return t
}

function containsWildCards(w)
{
	return w.indexOf('_') != -1 || w.indexOf('%') != -1
}
