var dict_basicmatch = /[a-zA-Z]/i;

var xmlHttp;

var numResults=0,tId=0;

var result_str,results,selectedIndex,sWidth=15;

var resdiv,txt_srch,divs,query='',prevQuery='';

var _res = '';

var es,url;



function parse2spa(res1)
{
	var result;
	result=res1.replace(/&#161;/g,"¡");
	result=result.replace(/&#168;/g,"¨");
	result=result.replace(/&#176;/g,"°");
	result=result.replace(/&#193;/g,"Á");
	result=result.replace(/&#205;/g,"Í");
	result=result.replace(/&#211;/g,"Ó");
	result=result.replace(/&#225;/g,"á");
	result=result.replace(/&#227;/g,"ã");
	result=result.replace(/&#233;/g,"é");
	result=result.replace(/&#237;/g,"í");
	result=result.replace(/&#241;/g,"ñ");
	result=result.replace(/&#243;/g,"ó");
	result=result.replace(/&#250;/g,"ú");
	result=result.replace(/&#252;/g,"ü");
	result=result.replace(/&#253;/g,"ý");
	result=result.replace(/&#146;/g,"’");	
	return result;	
}

function revparse2spa(res1)
{
	var result;
	result=res1.replace(/¡/g,"&#161;");
	result=result.replace(/¨/g,"&#168;");
	result=result.replace(/°/g,"&#176;");
	result=result.replace(/Á/g,"&#193;");
	result=result.replace(/Í/g,"&#205;");
	result=result.replace(/Ó/g,"&#211;");
	result=result.replace(/á/g,"&#225;");
	result=result.replace(/ã/g,"&#227;");
	result=result.replace(/é/g,"&#233;");
	result=result.replace(/í/g,"&#237;");
	result=result.replace(/ñ/g,"&#241;");
	result=result.replace(/ó/g,"&#243;");
	result=result.replace(/ú/g,"&#250;");
	result=result.replace(/ü/g,"&#252;");
	result=result.replace(/ý/g,"&#253;");
	return result;	
}





function txt_change(str,dict_type)

{

	

	query= str.replace(/^\s+|\s+$/g, '');
		if (query.length == 0 || !dict_basicmatch.test(query))
			{

			dict_emptyresults();

			clearTimeout (tId);

			return;

		}

		else

		{

			clearTimeout (tId);

			//if(prevQuery==query) {return;}

			tId = setTimeout ( "dict_getquery()", 400 );

		}

}



function frm_submit(dict_type)

{

es=dict_type;

if(dict_type==1) {document.spaeng.hidden_dict_type.value="es";} else {document.spaeng.hidden_dict_type.value="se";}

document.spaeng.submit();	

}



function key_pressed(str,e,dict_type)

{

	es=dict_type;

	if(dict_type==1) {document.spaeng.hidden_dict_type.value="es";} else {document.spaeng.hidden_dict_type.value="se";}

	var key =e.keyCode? e.keyCode : e.charCode

	switch (key) {

		case 27: // escape

			dict_hide();

			break;

		case 38: // up arrow

//			dict_handleup();

			break;

		case 40: // down arrow

//			dict_handledown();

			break;

		case 37: 

			break;

		case 39: 

			break;

		default: // other keys meaning actual text

			query= str.replace(/^\s+|\s+$/g, '');
//			query=revparse2spa(query);
			

			if (query.length == 0 || !dict_basicmatch.test(query))

			{

				dict_emptyresults();

				clearTimeout (tId);

				return;

			}

			else

			{

				clearTimeout (tId);

				//if(prevQuery==query) {return;}

				tId = setTimeout ( "dict_getquery()", 400 );

			}

	}

}



function key_down(e,dict_type)

{

	es=dict_type;

	if(dict_type==1) {document.spaeng.hidden_dict_type.value="es";} else {document.spaeng.hidden_dict_type.value="se";}

	var key =e.keyCode? e.keyCode : e.charCode

	switch (key) {

		case 27: // escape

			dict_hide();

			break;

		case 38: // up arrow

			dict_handleup();

			break;

		case 40: // down arrow

			dict_handledown();

			break;

		case 37: 

			break;

		case 39: 

			break;

		default: // other keys meaning actual text

			break;

	}

}



function dict_getquery()

{

	document.getElementById("load").innerHTML='Loading Please Wait....';

	dict_emptyresults();

	xmlHttp=GetXmlHttpObject();

	if (xmlHttp==null)

	 {

	 alert ("Browser does not support HTTP Request");

	 return;

	 } 

	

	if(es==1) {url="get_eng.php";} else {url="get_spa.php";}

	url=url+"?q="+query;

	url=url+"&sid="+Math.random();

	xmlHttp.onreadystatechange=stateChanged; 

	xmlHttp.open("GET",url,true);

	xmlHttp.send(null);

}



function dict_hide()

{

//	resdiv=document.getElementById("livesearch");

    if (resdiv) resdiv.style.display = 'none';

}

 

function dict_ishidden()

{

//	resdiv=document.getElementById("livesearch");

	return resdiv.style.display == 'none';

}

 

function dict_show()

{

//	resdiv=document.getElementById("livesearch");

	if (resdiv) resdiv.style.display = 'block';

}

 

function dict_emptyresults()

{

//	resdiv=document.getElementById("livesearch");



	if (!resdiv) return;

    resdiv.innerHTML = '';

   	numResults = 0;

   	selectedIndex = 0;

	_res = '';

	dict_hide();

}

 

function dict_addresult(q, sel)

{

    if (!resdiv) return;

    if (sel) selectedIndex = numResults;

 

    idx = numResults;

    results[numResults++] = q;

 

    _res += '<div class="' + (sel ? 'srs' : 'sr') + '"'

         +  ' onclick="dict_mouseclick(' + idx + ')">';

    _res += '<span class="srt">' + q + '</span>';

    _res += '</div>';

}

 

function dict_mouseover(idx)

{

    selectedIndex = idx;

    txt_srch.focus();

 

    dict_highlightsel();

}

 

function dict_mouseout(idx)

{

    selectedIndex = -1;

 

    dict_highlightsel();

}

 

function dict_mouseclick(idx)

{

	selectedIndex = idx;

    txt_srch.value = parse2spa(results[idx]);

	dict_highlightsel();

//    txt_srch.form.submit();	

	frm_submit(es);

//##################################################################check this here#######################################################

}

 

function dict_handleup()

{

    if (numResults > 0 && dict_ishidden())

	{

        dict_show();

        return;

    }



    if (selectedIndex == 0)

	{

		selectedIndex=numResults-1;

		resdiv.scrollTop-=sWidth;

	}

    else

	{

		selectedIndex=(selectedIndex-1)%numResults;

		resdiv.scrollTop-=sWidth;

	}

    

	dict_highlightsel();

}

 

function dict_handledown()

{

    if (numResults > 0 && dict_ishidden())

	{

        dict_show();

        return;

    }

    selectedIndex=(selectedIndex+1)%numResults;

	resdiv.scrollTop+=sWidth; 



	dict_highlightsel();

}

 

function dict_highlightsel()

{

    divs = resdiv.getElementsByTagName('div');

 

    for (i = 0; i < divs.length; i++) {

        if (i == selectedIndex)

		{

            divs[i].className = 'srs';

//          if (txt_srch) 

//			{

          	txt_srch.value = parse2spa(results[i]);

//              if (txt_srch.createTextRange)

//				{

//              	r = txt_srch.createTextRange();

//                  r.moveStart('character', results[i].length);

//                  r.moveEnd('character', txt_srch.value.length);

//                  r.select();

//              }

//	        }

        }

        else

            divs[i].className = 'sr';

    }

}



function stateChanged() 

{

	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")

	{ 

		if(es==1)

		{txt_srch=document.getElementById("es_word");}

		else 

		{txt_srch=document.getElementById("se_word");}

		resdiv=document.getElementById("livesearch");

		result_str=xmlHttp.responseText;

		if(result_str!='')

		{

		results=result_str.split("+");

		for(i=0;i<results.length-1;i++)

		{

			dict_addresult(results[i],i==0);

		}

		resdiv.innerHTML = _res;

		}

		else

		{resdiv.innerHTML='No Suggestion!'}

		resdiv.style.border="1px solid #A5ACB2";

		resdiv.style.display = 'block';

		document.getElementById("load").innerHTML='';		

	}

}



function GetXmlHttpObject()

{

var xmlHttp=null;

try

 {

 // Firefox, Opera 8.0+, Safari

 xmlHttp=new XMLHttpRequest();

 }

catch (e)

 {

 // Internet Explorer

 try

  {

  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");

  }

 catch (e)

  {

  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");

  }

 }

return xmlHttp;

}