var tplFoundAward = '<li><table><tr><td><a href="/award.php?code={encoded}" class="imgframe" style="background-image:url({image})"><img src="/images/thumb_frame_64x64.png"></a></td><td><a href="/award.php?code={encoded}"><span class="name">{name}</span><br/>{price}<br/><span class="snippet">{snippet}</span></a></td></tr></table></li>';
var pricePoints = '<span class="points">{points} баллов</span>';
var pricePointsNMoney = '<span class="money">{money} рублей + </span><span class="points">{points} баллов</span>';
var orderNow = '<p class="compellation"><span style="color:#E70057">{firstname}</span>, у Вас достаточно баллов для заказа этого вознаграждения:</p><p class="name">{name}</p><div class="image" style="text-align:center"><img src="{category_image}"/></div><p class="description">{snippet}</p><p style="text-align:center">{price}</p><div id="order" style="text-align:center"><form action="award.php?code={encoded}" method="post"><input type="hidden" value="{encoded}" name="catalog_code"/><input type="image" value="{encoded}" name="add" alt="Заказать" src="images/order_button.png"/></form></div>';
var tplSearchMore = '<p class="search_more"><a href="/search2.php?q={q}">Все вознаграждения</a></p>'

window.addEvent('domready', function(e) {
	N = 4;
	q = $('q');
	q.oldvalue = '';
	q.ready = true;
	if(q) {
		q.addEvent('keyup', function(e) {
			e = new Event(e);
			if (e.code != 27) {
		    	if(q.value.length >= 4 && q.value != q.oldvalue && q.ready) {
		    	    if(q.value != q.oldvalue)
						var url = '/search.xml.php?q='+encodeURIComponent(q.value);
					var aj = new Ajax(url, {method:'get', update:null, onComplete:showResults});
					aj.request();
					q.ready = false;
					q.oldvalue = q.value;
				}
				if(q.value.length < 4) {
					$('search_bubble').style.display='none';
					if(q.value.length == 0)
						resetSearch();
				}
			}
		});
	}

	$('search_bubble').addEvent('click', function(e){
		e = new Event(e);
		e.stopPropagation();
	});

	document.addEvent('click', function(e){
		resetSearch();
	});

	document.addEvent('keydown', function(e){
		e = new Event(e);
		if (e.code == 27)
			resetSearch();
	});
});

function showResults(text, xml) {
	var li = '', inner = '', gifts = [];

	var bubble = $('search_bubble');
	var results = $('search_results');
	var giftEls = xml.getElementsByTagName('gift');
	var recommend = {};
	for(var i=0; i<giftEls.length; i++) {
		var nodes = giftEls[i].childNodes;
		var gift = {price:''};
		for(var j=0; j<nodes.length; j++)
			if(nodes[j].nodeType == 1 && nodes[j].childNodes.length)
				gift[nodes[j].tagName] = nodes[j].firstChild.nodeValue;
		if(gift.money > 0)
			gift.price = pricePointsNMoney;
		else
			gift.price = pricePoints;
		if(customerPoints > gift.points) {
			if(isEmpty(recommend))
				recommend = gift;
			else
				if(gift.points > recommend.points)
					recommend = gift;
		}

		gifts[gifts.length] = gift;
	}
	if(gifts.length > 3 && !isEmpty(recommend))	{
		recommend['firstname'] = $('firstName').innerHTML;
		$('search_recommend').style.display='block';
		bubble.style.width='700px';
		var content = orderNow;
		for(var key in recommend) {
			rx = new RegExp('{'+key+'}', 'g');
			content = content.replace(rx, recommend[key]);
		}
		$('search_recommend').innerHTML = content;
	}
	else {
		$('search_recommend').style.display='none';
		bubble.style.width='400px';
	}

	for(var i=0; i<gifts.length && i<5; i++) {
		var li = tplFoundAward;
		for(var key in gifts[i]) {
			rx = new RegExp('{'+key+'}', 'g');
			li = li.replace(rx, gifts[i][key]);
		}
		inner += li;
	}
	if(gifts.length > 0) {
	    inner = '<ul>'+inner+'</ul>';
	    if(gifts.length > 5)
	    	inner += tplSearchMore.replace(/\{q\}/i, encodeURIComponent(q.value));
		results.innerHTML = inner;
		bubble.style.display = 'block';
	}
	q.ready = true;
}

function resetSearch() {
	if($('search_bubble').style.display!='none')
		$('search_bubble').style.display='none';
	q.oldvalue = '';
	q.ready = true;
}

function isEmpty(o) {for (var i in o){return false}return true}
