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 = '';

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)
{
		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 key_pressed(str,e)
{
	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)
{
	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 (getCheckedValue(document.spaeng.lang)=='spa')
		var url="/includes/get_eng.php";
	else
		var url="/includes/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 = results[idx];
	dict_highlightsel();
    txt_srch.form.submit();	
}
 
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 = divs[i].textContent || divs[i].innerText;

//              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")
	{ 
		resdiv=document.getElementById("livesearch");
		txt_srch=document.getElementById("word");

		result_str=xmlHttp.responseText;
	//	alert('a'+result_str+'a');
		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='<div class="sr" style="text-align:center">No Suggestion!</div>'}
		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;
}

/* ----- CUSTOM FUNCTIONS BY DEAN SOFER ------ */
function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}