/*
@version 1.0.0, 19.08.2009
*/
var body = document.getElementsByTagName('body');
body[0].onclick = no_show_box;

var select_el = 0;
var select_id;
var len_el;

// Инициализируем таблицу перевода
var trans = [];
for (var i = 0x410; i <= 0x44F; i++)
  trans[i] = i - 0x350; // А-Яа-я
trans[0x401] = 0xA8;    // Ё
trans[0x451] = 0xB8;    // ё

// Сохраняем стандартную функцию escape()
var escapeOrig = window.escape;

// Переопределяем функцию escape()
window.escape = function(str)
{
  var ret = [];
  // Составляем массив кодов символов, попутно переводим кириллицу
  for (var i = 0; i < str.length; i++)
  {
    var n = str.charCodeAt(i);
    if (typeof trans[n] != 'undefined')
      n = trans[n];
    if (n <= 0xFF)
      ret.push(n);
  }
  return escapeOrig(String.fromCharCode.apply(null, ret));
}

function create_request()
{
	try
	{
		request = new XMLHttpRequest();
	}
	catch(trymicrosoft)
	{
		try
		{
			request = new ActiveXObject("Msxm12.XMLHTTP");
		}
		catch(othermicrosoft)
		{
			try
			{
				request = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(failed)
			{
				request = null;
			}
		}
	}
	
}

function find_str(e, id, url)
{
	if(!e)
		e = event;
	
	if(e.keyCode==40) //стрелка вниз
	{
		if(len_el>0)
		{
			select_el++;
			if(select_el==len_el)
				select_el = 0;
			change_select();
		}
		var el = document.getElementById(select_id + '_' + select_el);
		var el2 = document.getElementById(id);
		el2.value = el.innerHTML;
	}
	else
		if(e.keyCode==38) //стрелка вверх
		{
			if(len_el>0)
			{
				select_el--;
				if(select_el<0)
					select_el = len_el-1;
				change_select();
			}
			var el = document.getElementById(select_id + '_' + select_el);
			var el2 = document.getElementById(id);
			el2.value = el.innerHTML;
		}
		else
		{
			/*if(e.keyCode==13) //интер
			{
				var el = document.getElementById(select_id + '_' + select_el);
				var el2 = document.getElementById(id);
				el2.value = el.innerHTML;
			}*/
		
			var el = document.getElementById(id);
			if(el==null)
				return;
			
			if(el.value=="")
				return;
			create_request();
				
			url = url + id + "/" + escape(el.value) + "/";

			//alert(escape(el.value));  %F1%F2%F0%E0%ED%E8%F6
			request.onreadystatechange = update_page;
			request.open("GET", url, true);
			request.send(null);
		}
}

function update_page()
{
	if(request.readyState==4 && request.status==200)
	{
		var text = request.responseText;
	
		var ansver = "";
		for(var i=0; i<text.length; i++)
		{
			if(text.charAt(i).charCodeAt()==13)
				break;
			ansver = ansver + text.charAt(i);
		}
		if(ansver!=1)
			return;
				
		var id = ""
		for(var k=i+1; k<text.length; k++)
		{
			if(text.charAt(k).charCodeAt()==13)
				break;
			id = id + text.charAt(k);
		}
	
		var arr=new Array();
		var n_arr = 0;
		arr[n_arr]="";
		for(var j=k+1; j<text.length; j++)
		{
			if(text.charAt(j).charCodeAt()==13)
			{
				n_arr++;
				arr[n_arr]="";
				continue;
			}
			arr[n_arr] = arr[n_arr] + text.charAt(j);

			//alert(text.charAt(j).charCodeAt());
		}
	
		var el = document.getElementById(id + '_res');
	
		select_el = -1;
		select_id = id;
		len_el = arr.length-1;
		var str = "";
		for(i=0; i<len_el; i++)
		{
			str = str + '<span id="' + select_id + '_' + i + '" class="list" onmousedown="select_element(' + i + ')">' + decode(arr[i]) + "</span><br>";
		}
		el.innerHTML = str;
		el.style.display='block';
	}
}

function decode(str)
{
	var out = "";
	for(var i=0; i<str.length; i++)
	{
		var tmp = ""
		if(str.charAt(i)=="%")
		{
			tmp = tmp + str.charAt(i);
			tmp = tmp + str.charAt(i+1);
			tmp = tmp + str.charAt(i+2);
			i+=2;

			switch(tmp)
			{
				case "%21": out = out + "!"; break;
				case "%22": out = out + '"'; break;
				case "%23": out = out + "#"; break;
				case "%24": out = out + "$"; break;
				case "%25": out = out + "%"; break;
				case "%26": out = out + "&"; break;
				case "%27": out = out + "'"; break;
				case "%28": out = out + "("; break;
				case "%29": out = out + ")"; break;
				case "%2A": out = out + "*"; break;
				case "%2B": out = out + "+"; break;
				case "%2C": out = out + ","; break;
				case "%2F": out = out + "/"; break;
				case "%3A": out = out + ":"; break;
				case "%3B": out = out + ";"; break;
				case "%3C": out = out + "<"; break;
				case "%3D": out = out + "="; break;
				case "%3E": out = out + ">"; break;
				case "%3F": out = out + "?"; break;
				case "%40": out = out + "@"; break;
				case "%5B": out = out + "["; break;
				case "%5C": out = out + "\\"; break;
				case "%5D": out = out + "]"; break;
				case "%5E": out = out + "^"; break;
				case "%60": out = out + "`"; break;
				case "%7B": out = out + "{"; break;
				case "%7C": out = out + "|"; break;
				case "%7D": out = out + "}"; break;
				case "%7E": out = out + "~"; break;
				case "%7F": out = out + ""; break;
				case "%80": out = out + "Ђ"; break;
				case "%81": out = out + "Ѓ"; break;
				case "%82": out = out + "‚"; break;
				case "%83": out = out + "ѓ"; break;
				case "%84": out = out + "„"; break;
				case "%85": out = out + "…"; break;
				case "%86": out = out + "†"; break;
				case "%87": out = out + "‡"; break;
				case "%88": out = out + "€"; break;
				case "%89": out = out + "‰"; break;
				case "%8A": out = out + "Љ"; break;
				case "%8B": out = out + "‹"; break;
				case "%8C": out = out + "Њ"; break;
				case "%8D": out = out + "Ќ"; break;
				case "%8E": out = out + "Ћ"; break;
				case "%8F": out = out + "Џ"; break;
				case "%90": out = out + "ђ"; break;
				case "%91": out = out + "‘"; break;
				case "%92": out = out + "’"; break;
				case "%93": out = out + "“"; break;
				case "%94": out = out + "”"; break;
				case "%95": out = out + "•"; break;
				case "%96": out = out + "–"; break;
				case "%97": out = out + "—"; break;
				case "%98": out = out + "?"; break;
				case "%99": out = out + "™"; break;
				case "%9A": out = out + "љ"; break;
				case "%9B": out = out + "›"; break;
				case "%9C": out = out + "њ"; break;
				case "%9D": out = out + "ќ"; break;
				case "%9E": out = out + "ћ"; break;
				case "%9F": out = out + "џ"; break;
				case "%A0": out = out + " "; break;
				case "%A1": out = out + "Ў"; break;
				case "%A2": out = out + "ў"; break;
				case "%A3": out = out + "Ј"; break;
				case "%A4": out = out + "¤"; break;
				case "%A5": out = out + "Ґ"; break;
				case "%A6": out = out + "¦"; break;
				case "%A7": out = out + "§"; break;
				case "%A8": out = out + "Ё"; break;
				case "%A9": out = out + "©"; break;
				case "%AA": out = out + "Є"; break;
				case "%AB": out = out + "«"; break;
				case "%AC": out = out + "¬"; break;
				case "%AD": out = out + "­"; break;
				case "%AE": out = out + "®"; break;
				case "%AF": out = out + "Ї"; break;
				case "%B0": out = out + "°"; break;
				case "%B1": out = out + "±"; break;
				case "%B2": out = out + "І"; break;
				case "%B3": out = out + "і"; break;
				case "%B4": out = out + "ґ"; break;
				case "%B5": out = out + "µ"; break;
				case "%B6": out = out + "¶"; break;
				case "%B7": out = out + "·"; break;
				case "%B8": out = out + "ё"; break;
				case "%B9": out = out + "№"; break;
				case "%BA": out = out + "є"; break;
				case "%BB": out = out + "»"; break;
				case "%BC": out = out + "ј"; break;
				case "%BD": out = out + "Ѕ"; break;
				case "%BE": out = out + "ѕ"; break;
				case "%BF": out = out + "ї"; break;
				case "%C0": out = out + "А"; break;
				case "%C1": out = out + "Б"; break;
				case "%C2": out = out + "В"; break;
				case "%C3": out = out + "Г"; break;
				case "%C4": out = out + "Д"; break;
				case "%C5": out = out + "Е"; break;
				case "%C6": out = out + "Ж"; break;
				case "%C7": out = out + "З"; break;
				case "%C8": out = out + "И"; break;
				case "%C9": out = out + "Й"; break;
				case "%CA": out = out + "К"; break;
				case "%CB": out = out + "Л"; break;
				case "%CC": out = out + "М"; break;
				case "%CD": out = out + "Н"; break;
				case "%CE": out = out + "О"; break;
				case "%CF": out = out + "П"; break;
				case "%D0": out = out + "Р"; break;
				case "%D1": out = out + "С"; break;
				case "%D2": out = out + "Т"; break;
				case "%D3": out = out + "У"; break;
				case "%D4": out = out + "Ф"; break;
				case "%D5": out = out + "Х"; break;
				case "%D6": out = out + "Ц"; break;
				case "%D7": out = out + "Ч"; break;
				case "%D8": out = out + "Ш"; break;
				case "%D9": out = out + "Щ"; break;
				case "%DA": out = out + "Ъ"; break;
				case "%DB": out = out + "Ы"; break;
				case "%DC": out = out + "Ь"; break;
				case "%DD": out = out + "Э"; break;
				case "%DE": out = out + "Ю"; break;
				case "%DF": out = out + "Я"; break;
				case "%E0": out = out + "а"; break;
				case "%E1": out = out + "б"; break;
				case "%E2": out = out + "в"; break;
				case "%E3": out = out + "г"; break;
				case "%E4": out = out + "д"; break;
				case "%E5": out = out + "е"; break;
				case "%E6": out = out + "ж"; break;
				case "%E7": out = out + "з"; break;
				case "%E8": out = out + "и"; break;
				case "%E9": out = out + "й"; break;
				case "%EA": out = out + "к"; break;
				case "%EB": out = out + "л"; break;
				case "%EC": out = out + "м"; break;
				case "%ED": out = out + "н"; break;
				case "%EE": out = out + "о"; break;
				case "%EF": out = out + "п"; break;
				case "%F0": out = out + "р"; break;
				case "%F1": out = out + "с"; break;
				case "%F2": out = out + "т"; break;
				case "%F3": out = out + "у"; break;
				case "%F4": out = out + "ф"; break;
				case "%F5": out = out + "х"; break;
				case "%F6": out = out + "ц"; break;
				case "%F7": out = out + "ч"; break;
				case "%F8": out = out + "ш"; break;
				case "%F9": out = out + "щ"; break;
				case "%FA": out = out + "ъ"; break;
				case "%FB": out = out + "ы"; break;
				case "%FC": out = out + "ь"; break;
				case "%FD": out = out + "э"; break;
				case "%FE": out = out + "ю"; break;
				case "%FF": out = out + "я"; break;
			}
		}
		else
		{
			if(str.charAt(i)=="+")
				 out = out + " ";
			else
				out = out + str.charAt(i);
		}
	}
	return out;
}


function no_show_box()
{
	len_el = 0;
	var els = document.getElementsByName('result');
	
	for(var i=0; i<els.length; i++)
	{
		els[i].style.display='none';
		select_el=-1;
	}
}
function change_select()
{
	for(i=0; i<len_el; i++)
	{
		var el = document.getElementById(select_id + '_' + i);
		if(i==select_el)
			el.style.color="#DD0000";
		else
			el.style.color="#000000";
	}
}

function select_element(nom)
{
	select_el = nom;
	var el = document.getElementById(select_id + '_' + select_el);
	var el2 = document.getElementById(select_id);
	el2.value = el.innerHTML;
}

function sumbit()
{
	//alert(select_el);
	/*if(select_el!=-1)
	{
		select_el=-1;
		no_show_box();
		return false;
	}*/
	no_show_box();
	return true;
}
