// JavaScript Document

	var cache = new Array;
	var lastKeyword = '';
	function suggestPhones(keyword){	
		$('#suggestResults').empty();
		
		//dopiero po wbiciu 3 liter, zeby nie pobierac calej bazy
		if(keyword.length > 2){			
			//optymalizacja
			//oblicz dlugosc ciagow, ktore moga byc takie same dla poprzedniej frazy i bierzacej			
			var length = 0;
			if(lastKeyword.length > keyword.length){
				length = keyword.length;
			} else {
				length = lastKeyword.length;
			}
			//jesli kolejna fraza jest zawezeniem poprzedniej, to pobierz wyniki z cache, jesli nie to z bazy
			if(keyword.substring(0, length) == lastKeyword.substring(0, length) && length > 0){
				data = getFromCache(keyword);
				showResults(data, keyword);
			} else {			
				$.getJSON('/telefony/suggest', {keyword:keyword}, function(data){								
					cache = data;
					showResults(data, keyword);
				});		
				lastKeyword = keyword;
			}
		} 
	}
	
	//pokaz wyniki jako liste
	function showResults(data, keyword){
		var prefix = '';
		var suffix = '';
		$.each(data, function(i,item){		
			prefix = '';						
			suffix = '';
			if(item.prefix){
				prefix = '('+item.prefix+') ';
			}
			if(item.suffix){
				suffix = 'wew:'+item.suffix;
			}
			$('#suggestResults').append('<li>'+item.person.replace(new RegExp(keyword, 'i'), '<b>'+keyword+'</b>')+': '+prefix+'<span>'+item.number+'</span> '+suffix+'</li>');
		});
	}
	
	//pobierz dane z cache
	function getFromCache(keyword){		
		var output = new Array();
		var regexp = new RegExp(keyword, 'i');
		//cache to wszystkie wyniki, trzeba je zawezyc
		$.each(cache, function(i,item){
			if(regexp.test(item.person)){
				output.push(item);
			}
		});		
		return output;
	}


