baseRef=location.href.substring(0, location.href.lastIndexOf("/")+1);
baseRef+="code/formsozdik/";
selectedVariant=0;
ru='Орыс';
kk='Қазақ';

formsozdikInit();

function formsozdikInit()
{
var kstr;
document.getElementById("backspace").onclick=formsozdikBackspaceClick;
document.getElementById("enter").onclick=formsozdikEnterClick;
document.getElementById("del").onclick=formsozdikDelClick;
	for(i=0; i<47; i++)
	{
	kstr='k'+i;
	eval('document.getElementById("' + kstr + '").onclick=formsozdikCharClick;');
	}
document.getElementById("formsozdik_word").onselect=keyboardStoreCaret;
document.getElementById("formsozdik_word").onclick=keyboardStoreCaret;
document.getElementById("formsozdik_word").onkeydown=formsozdikWordKeyDown;
document.getElementById("formsozdik_word").onkeypress=keyboardCharPress;
document.getElementById("formsozdik_word").onkeyup=formsozdikWordKeyUp;
document.body.onclick=formsozdikVariantsHide;

document.getElementById("formsozdik_variants").onchange=formsozdikVariantChange;

controllerSetFocus("formsozdik_word");
}


function formsozdikCharClick(evt) // overload of keyboardCharClick()
{
var obj;
	if(evt)
	{
	obj=evt.target;
	}
	else
	{
	evt=window.event;
	obj=evt.srcElement;
	}
keyboardPressed=obj.id;
keyboardCharPress();
formsozdikSuggest();
}


function formsozdikBackspaceClick() // overload of keyboardBackspacePress()
{
keyboardASCII=8;
keyboardButtonPress(keyboardASCII);
formsozdikSuggest();
}


function formsozdikEnterClick() // overload of keyboardEnterPress()
{
keyboardASCII=13;
keyboardButtonPress(keyboardASCII);
formsozdikTranslate();
}


function formsozdikDelClick() // overload of keyboardBackspacePress()
{
keyboardASCII=46;
keyboardButtonPress(keyboardASCII);
formsozdikSuggest();
}


function formsozdikWordKeyUp(evt) // overload of keyboardButtonUp()
{
keyboardButtonUp(evt);
evt=(evt)?evt:window.event;
keyboardASCII=evt.keyCode;
	switch(keyboardASCII)
	{
	case 8:
	case 46:
	formsozdikSuggest();
	break;

	case 13:
	formsozdikTranslate();
	break;

	default:
		if(keyboardPressed)
		{
		formsozdikSuggest();
		}
	}
}


function formsozdikWordKeyDown(evt) // overload of keyboardButtonPress()
{
evt=(evt)?evt:window.event;
keyboardASCII=evt.keyCode;
	switch(keyboardASCII)
	{
	case 8:
	case 46:
	keyboardPressed="";
		if(isMozilla)
		{
		keyboardButtonPress(keyboardASCII);
		}
	break;

	case 38:
	keyboardPressed="";
	formsozdikSelectVariantUp();
	break;

	case 40:
	keyboardPressed="";
	formsozdikSelectVariantDown();
	break;

	default:
	keyboardButtonPress(keyboardASCII);
	break;
	}
}


function formsozdikRenderVariants(obj)
{
eval(obj.responseText);
formsozdikSetVariants(s);
}


function formsozdikSuggest()
{
var word=document.getElementById("formsozdik_word").value;
	if(word>"")
	{
	var tc=new Date().getTime();
	var url=baseRef
	+ 'suggest.php'
	+ '?w=' + escape(word)
	+ '&t=' + tc;
	var request=controllerXMLHTTPRequest("GET", url, null, formsozdikRenderVariants);
		if(!request)
		{
		url+='&i=1';
		document.getElementById("formsozdik_frame").src=url;
		}
	}
	else
	{
	formsozdikVariantsHide();
	}
}


function formsozdikTranslate()
{
formsozdikVariantsHide();
document.getElementById("formsozdik_form").submit();
}


function formsozdikVariantChange()
{
formsozdikSetVariantWord();
formsozdikTranslate();
}


function formsozdikSetVariants(suggest)
{
var sel=document.getElementById("formsozdik_variants");
controllerRemoveOptions(sel);
sel.size=suggest.length;
	for(var i=0; i<suggest.length; i++)
	{
	controllerAddOption(self, sel, i, suggest[i])
	}
	if(!suggest.length)
	{
	formsozdikVariantsHide();
	}
	else
	{
	selectedVariant=-1;
	formsozdikVariantsShow();
	// sel.onchange=formsozdikVariantChange;
	}
}


function formsozdikVariantsHide()
{
document.getElementById("formsozdik_variants").style.display='none';
}


function formsozdikVariantsShow()
{
var sel=document.getElementById("formsozdik_variants");
sel.style.display='block';
sel.focus();
document.getElementById("formsozdik_word").focus();
}


function formsozdikSelectVariantUp()
{
var sel=document.getElementById("formsozdik_variants");
var variantsTotal=sel.options.length;
	if(variantsTotal)
	{
	selectedVariant--;
		if(selectedVariant<0)
		{
		selectedVariant=0;
		}
		else
		{
		formsozdikSelectVariantOption(selectedVariant);
		formsozdikSetVariantWord();
		}
	}
}


function formsozdikSelectVariantDown()
{
var sel=document.getElementById("formsozdik_variants");
var variantsTotal=sel.options.length;
	if(variantsTotal)
	{
	selectedVariant++;
		if(selectedVariant==variantsTotal)
		{
		selectedVariant=variantsTotal-1;
		}
		else
		{
		formsozdikSelectVariantOption(selectedVariant);
		formsozdikSetVariantWord();
		}
	}
}


function formsozdikSetVariantWord()
{
var sel=document.getElementById("formsozdik_variants");
document.getElementById("formsozdik_word").value=sel.options[sel.selectedIndex].text;
controllerSetFocus("formsozdik_word");
}


function formsozdikSelectVariantOption(selectedVariant)
{
document.getElementById("formsozdik_variants").selectedIndex=selectedVariant;
}