
var min_lenght_query = 2;
var url = "/classes/quick_search.php?q=";
var search_div = "Quick_Search";
var show_all = "Показать все";
var search_str = "";

var xmlhttp;
var number_of_results = 0;
var selected_result   = 0;
function loadXMLDoc(url,method,header,param){
	xmlhttp=null;
	
	if(!method){method = "GET";}
	if(method == "POST" && !header){header = "multipart/form-data";} //multipart/form-data
	if(!header){header = "text/html; charset=utf-8";}
	if(!param){param = null;}

	//alert(url+"\n"+method+"\n"+header+"\n"+param+"\n");
	// code for Mozilla, etc.
	if (window.XMLHttpRequest){
		xmlhttp=new XMLHttpRequest();
	}
	// code for IE
	else if (window.ActiveXObject){
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (xmlhttp!=null){
		xmlhttp.onreadystatechange=state_Change;
		xmlhttp.open(method,url,true);
		xmlhttp.setRequestHeader("Content-Type", header);
		xmlhttp.send(param);
	}else{
		alert("Your browser does not support XMLHTTP.");
	}
}

function state_Change(){
	// if xmlhttp shows "loaded"
	
	if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete"){
		// if "OK"
		if (xmlhttp.status==200){
			// ...some code here...
			var xml = xmlhttp.responseText;
			//alert(xml);
			//var res_headers = xmlhttp.getAllResponseHeaders();
			//alert(res_headers);
			//document.getElementById('text').value = xml;
			
			// XML
			var xmlDoc = xmlhttp.responseXML;
			//alert(xmlDoc);
			var TextDoc = xmlhttp.responseText;
			var elDocRoot = xmlDoc.getElementsByTagName('d');
			//alert(elDocRoot.length);
			number_of_results = 0;
			var str = '';
			var name = null;
			var lnk = null;
			for(i = 0; i < elDocRoot.length; i++){
				number_of_results ++;
				name = elDocRoot[i].getElementsByTagName('n')[0].firstChild.nodeValue;
				lnk  = elDocRoot[i].getElementsByTagName('l')[0].firstChild.nodeValue;
				str += '<nobr><a href="/drug/' + lnk + '" style="text-decoration: ;background-color: ;" id="R_' + number_of_results + '">' + name + '</a></nobr><br>\n';
			}
			//alert(search_query);
			//alert(number_of_results);
			if(number_of_results == 10){
				search_query = xmlDoc.getElementsByTagName("query").item(0).firstChild.nodeValue;
				search_query = win_to_uni(search_query,'small')
				str += '<nobr><a href="/search?Q=' + search_query + '" style="text-decoration: ;background-color: ;" id="R_11">' + show_all + '</a></nobr><br>\n';
				number_of_results ++;
			}
			if(str != ''){
				document.getElementById(search_div).innerHTML = str;
				document.getElementById(search_div).style.visibility = "visible";
				max_len = xmlDoc.getElementsByTagName("max_len").item(0).firstChild.nodeValue;
				div_width = Math.ceil(max_len * 7.1) + "px";
				document.getElementById(search_div).style.width = div_width;
			}else{
				Hidden_Quick_Search()
			}
			//alert(str);

			
		}else{
			alert("Problem retrieving XML data");
		}
	}
}

function Some_type(e){
	if(!e) e = window.event; 
	var key_code = e.keyCode;
	//alert(key_code);
	if(key_code == 38 || key_code == 40 || key_code == 37 || key_code == 39 || key_code == 13 || key_code == 27 || key_code == 18 || key_code == 9 && document.getElementById(search_div).style.visibility == "visible"){ //'z' или 'я' или 'Enter'
		// Подсвечиваем результат
		Light_result(key_code);
	}else{
		// Посылаем запрос
		var q = document.all.Q.value;
		if(q != ''){
			search_str = q;
			q = win_to_uni(q,'small');
			if(q.length >= min_lenght_query){
				var link_s = "http://" + document.location.host + url + q;
				var param = "";
				//document.all.Q.value = link_s;
				loadXMLDoc(link_s,"GET","",param);
				//alert(link_s);
			}else{
				Hidden_Quick_Search()
			}
		}
	}
}
function Hidden_Quick_Search(){
	document.getElementById(search_div).style.visibility = "hidden";
	document.getElementById(search_div).innerHTML = '';
	selected_result   = 0;
}
function Light_result(key_code){
	//alert(key_code);
	if(key_code == 38){
		if(selected_result == 0){
			selected_result = number_of_results;
		}else{
			if(selected_result == 1){
				selected_result = number_of_results;
			}else{
				selected_result = selected_result - 1;
			}
		}
		Unlight_result();
		document.getElementById("R_"+selected_result).style.textDecoration = "underline";
		document.getElementById("R_"+selected_result).style.backgroundColor = "#d6dbbb";
		if(document.getElementById("R_"+selected_result).innerHTML != show_all){
			document.all.Q.value = document.getElementById("R_"+selected_result).innerHTML;
		}else{
			document.all.Q.value = search_str;	
		}
		search_str = document.getElementById("R_"+selected_result).innerHTML;
	}
	if(key_code == 40){
		if(selected_result == 0){
			selected_result = 1;
		}else{
			if(selected_result == number_of_results){
				selected_result = 1;
			}else{
				selected_result = selected_result + 1;
			}
		}
		Unlight_result();
		document.getElementById("R_"+selected_result).style.textDecoration = "underline";
		document.getElementById("R_"+selected_result).style.backgroundColor = "#d6dbbb";
		if(document.getElementById("R_"+selected_result).innerHTML != show_all){
			document.all.Q.value = document.getElementById("R_"+selected_result).innerHTML;
		}else{
			document.all.Q.value = search_str;	
		}
		search_str = document.getElementById("R_"+selected_result).innerHTML;
	}
	if(key_code == 13 && selected_result != 0){
		document.location = document.getElementById("R_"+selected_result).href;
		document.getElementById("R_"+selected_result)
	}
	if(key_code == 27){
		if(search_str != show_all){
			document.all.Q.value = search_str;
		}
		Hidden_Quick_Search();
	}
}
function Unlight_result(){
	for(i = 1; i <= number_of_results; i++){
		document.getElementById("R_"+i).style.textDecoration = "none";
		document.getElementById("R_"+i).style.backgroundColor = "#f0f2da";
	}
}

function Clear_input(){
	var q = document.all.Q.value;
	if(q == "Поиск товаров"){
		document.all.Q.value = "";
		document.getElementById("SearchInput").style.color = "#000000";
	}
}

function win_to_uni(str,upp){
	// str - строка
	// upp - нужно ли регистр: 'big' - все регистры сохраняем, 'small' - все делаем маленькими буквами
	if(str){
		if(upp == 'big'){
			str = replace_str(str,"ё","%B8");	
			str = replace_str(str,"й","%E9");	
			str = replace_str(str,"ц","%F6");	
			str = replace_str(str,"у","%F3");	
			str = replace_str(str,"к","%EA");	
			str = replace_str(str,"е","%E5");	
			str = replace_str(str,"н","%ED");	
			str = replace_str(str,"г","%E3");	
			str = replace_str(str,"ш","%F8");	
			str = replace_str(str,"щ","%F9");	
			str = replace_str(str,"з","%E7");	
			str = replace_str(str,"х","%F5");	
			str = replace_str(str,"ъ","%FA");	
			str = replace_str(str,"ф","%F4");	
			str = replace_str(str,"ы","%FB");	
			str = replace_str(str,"в","%E2");	
			str = replace_str(str,"а","%E0");	
			str = replace_str(str,"п","%EF");	
			str = replace_str(str,"р","%F0");	
			str = replace_str(str,"о","%EE");	
			str = replace_str(str,"л","%EB");	
			str = replace_str(str,"д","%E4");	
			str = replace_str(str,"ж","%E6");	
			str = replace_str(str,"э","%FD");	
			str = replace_str(str,"я","%FF");	
			str = replace_str(str,"ч","%F7");	
			str = replace_str(str,"с","%F1");	
			str = replace_str(str,"м","%EC");	
			str = replace_str(str,"и","%E8");	
			str = replace_str(str,"т","%F2");	
			str = replace_str(str,"ь","%FC");	
			str = replace_str(str,"б","%E1");	
			str = replace_str(str,"ю","%FE");	
			str = replace_str(str," ","%20");	
			str = replace_str(str,"Ё","%A8");	
			str = replace_str(str,"Й","%C9");	
			str = replace_str(str,"Ц","%D6");	
			str = replace_str(str,"У","%D3");	
			str = replace_str(str,"К","%CA");	
			str = replace_str(str,"Е","%C5");	
			str = replace_str(str,"Н","%CD");	
			str = replace_str(str,"Г","%C3");	
			str = replace_str(str,"Ш","%D8");	
			str = replace_str(str,"Щ","%D9");	
			str = replace_str(str,"З","%C7");	
			str = replace_str(str,"Х","%D5");	
			str = replace_str(str,"Ъ","%DA");	
			str = replace_str(str,"Ф","%D4");	
			str = replace_str(str,"Ы","%DB");	
			str = replace_str(str,"В","%C2");	
			str = replace_str(str,"А","%C0");	
			str = replace_str(str,"П","%CF");	
			str = replace_str(str,"Р","%D0");	
			str = replace_str(str,"О","%CE");	
			str = replace_str(str,"Л","%CB");	
			str = replace_str(str,"Д","%C4");	
			str = replace_str(str,"Ж","%C6");	
			str = replace_str(str,"Э","%DD");	
			str = replace_str(str,"Я","%DF");	
			str = replace_str(str,"Ч","%D7");	
			str = replace_str(str,"С","%D1");	
			str = replace_str(str,"М","%CC");	
			str = replace_str(str,"И","%C8");	
			str = replace_str(str,"Т","%D2");	
			str = replace_str(str,"Ь","%DC");	
			str = replace_str(str,"Б","%C1");	
			str = replace_str(str,"Ю","%DE");	
		}
		if(upp == 'small'){
			str = str.toLowerCase();
			str = replace_str(str,"ё","%B8");	
			str = replace_str(str,"й","%E9");	
			str = replace_str(str,"ц","%F6");	
			str = replace_str(str,"у","%F3");	
			str = replace_str(str,"к","%EA");	
			str = replace_str(str,"е","%E5");	
			str = replace_str(str,"н","%ED");	
			str = replace_str(str,"г","%E3");	
			str = replace_str(str,"ш","%F8");	
			str = replace_str(str,"щ","%F9");	
			str = replace_str(str,"з","%E7");	
			str = replace_str(str,"х","%F5");	
			str = replace_str(str,"ъ","%FA");	
			str = replace_str(str,"ф","%F4");	
			str = replace_str(str,"ы","%FB");	
			str = replace_str(str,"в","%E2");	
			str = replace_str(str,"а","%E0");	
			str = replace_str(str,"п","%EF");	
			str = replace_str(str,"р","%F0");	
			str = replace_str(str,"о","%EE");	
			str = replace_str(str,"л","%EB");	
			str = replace_str(str,"д","%E4");	
			str = replace_str(str,"ж","%E6");	
			str = replace_str(str,"э","%FD");	
			str = replace_str(str,"я","%FF");	
			str = replace_str(str,"ч","%F7");	
			str = replace_str(str,"с","%F1");	
			str = replace_str(str,"м","%EC");	
			str = replace_str(str,"и","%E8");	
			str = replace_str(str,"т","%F2");	
			str = replace_str(str,"ь","%FC");	
			str = replace_str(str,"б","%E1");	
			str = replace_str(str,"ю","%FE");	
			str = replace_str(str," ","%20");	
		}
	}
	return str;
}

function replace_str(str,s_search,s_replace){   
	// str       - строка
	// s_search  - строка поиска
	// s_replace - строка замены
	var res = "";
	if(str && s_search && s_replace){
		while(true){
			var f = str.indexOf(s_search);
			if(f >=0){
				res = res + str.substr(0,f) + s_replace;
				str = str.substr(f + s_search.length);
			}else break;
		}
	}
	return res + str;
}