/**
 * search result autocomplete script
 */

/**
 * 스트링 객체 확장 메소드
 * @param i index 
 * @param str 삽입할 string
 * @return 결과 string
 */
String.prototype.insert = function(i, str) {
	return this.substring(0, i) + str + this.substring(i); 
};

function searchResultAutocomplete(config) {
	///////////////////////////////////////////////////////
	// constructor
	///////////////////////////////////////////////////////
	
	/**
	 * 설정
	 */
	config = config || {};
	config.autocompleterQuery = config.autocompleterQuery || '#' + config.autocompleterId;
	
	$(config.autocompleterQuery)
		.autocomplete(config.url, {
			json: true,
			nocache: true,
			queryParam: 'query',
			rootName: 'xpersearch',
			searchName: 'autokeyword',
			resultWidth: $(config.autocompleterQuery).width() + 4,
			zIndex : 1100,
			resultsClass: 'keyword_search_result',
			overClass: 'keyword_search_over',
			onKeyPressEnter: function() {
				config.onSearch($(config.autocompleterQuery).val());
			},
			delay: 10,
			formatItem: function (row, i, num) {
				var keyword = $(config.autocompleterQuery).val().toLowerCase();
				var rowText = row[0];
				var start = rowText.toLowerCase().indexOf(keyword);
				if (start > -1) {
					var end = start + keyword.length;
					return rowText.insert(end, '</span>').insert(start,'<span class="sch_txt_global">');
				}
				return rowText;
			},
			onItemSelect: function (li) {
				if (li == null)
					return;
				var sValue = li.selectValue;
				if (config.onSelectValue) config.onSelectValue(sValue);
			}
		});
}

////////////////////////////////////////////////////////////////
// onLoad
////////////////////////////////////////////////////////////////
$(function() {	
	searchResultAutocomplete({
		url: '/FRA/lamp/autoComplete.do',//'/FRA/servlet/autoComplete.do',
		autocompleterId: 'totalkeyword',
		onSelectValue: function (value) {
			// select auto_complement
		},
		onSearch: function(value) {
			if (value.length == 0) {
				alert('Veuillez introduire un autre mot clé!');
				return;
			}
		}
	});
});
