/**
 * search.js
 * 
 */

var myLibriSearch;

/**
 * Libri search options
 * 
 */
LibriSearchOptions = Object.extend({
	ajaxUrl: {
		search: MAIN_URL_LANG+'ajax/order_kk/',
		antikvariumSearch: '/ws/ws_client_antikvarium.php'
		},
	ajaxLoadingImg: '/img/search_ajax_loading.gif',
	elements: {
		searchForm: 'kkSearchForm',
		searchResult: 'kkSearchResult',
		antikvariumSearchResult: 'antikvariumSearchResultContainer'
		},
	messages: {
		},
	url: {
		},
	actions: {
		}
	}, window.LibriSearchOptions || {});

/**
 * Libri search class
 *
 */
var LibriSearch = Class.create();

LibriSearch.prototype = Object.extend(new LibriCommon(), {
	/**
	 * Parameters
	 */
	actions: {},
	overlay: null,
	searchForm: null,
	searchResult: null,
	antikvariumSearchResult: null,
	
	/**
	 * Methods
	 *
	 * Class constructor
	 * 
	 * @return LibriOrder
	 */
	initialize: function() {
		this.ajaxUrl = LibriSearchOptions.ajaxUrl;
		this.ajaxLoadingImg = Builder.node('img', {'src': LibriSearchOptions.ajaxLoadingImg, 'alt': '', 'class': 'searchAjaxLoadingImg'});

		this.elements = LibriSearchOptions.elements;
		this.messages = LibriSearchOptions.messages;
		this.url = LibriSearchOptions.url;

		this.actions = LibriSearchOptions.actions;

		if (myLibriOverlay && typeof(myLibriOverlay) == 'object') {
			this.overlay = myLibriOverlay;
		} else {
			this.overlay = new LibriOverlay();
		}

		this.searchForm = $(this.elements.searchForm);
		this.searchResult = $(this.elements.searchResult);
		this.antikvariumSearchResult = $(this.elements.antikvariumSearchResult);
	},

	search: function(page) {
		if (this.searchForm) {
			var params = Form.serialize(this.searchForm, true);

			if (page) {
				params['page'] = page;
			}

			new Ajax.Request(
				this.ajaxUrl.search,
				{
					method: this.ajaxMethod.GET,
					parameters: params,
					onCreate: (
						function() {
							this.updateElement(this.searchResult, this.ajaxLoadingImg);
						}).bind(this),
					onComplete: (
						function(response) {
							this.getAjaxResult(response);

							if (this.ajaxResult.design) {
								this.updateElement(this.searchResult, this.ajaxResult.design);
							}
						}).bind(this),
					onFailure: (this.handleAjaxFailure).bind(this)
				});
		}
	},

	antikvariumSearch: function(searchQuery) {
		if (searchQuery) {
			new Ajax.Request(
				this.ajaxUrl.antikvariumSearch,
				{
					method: this.ajaxMethod.GET,
					parameters: searchQuery,
					onCreate: (
						function() {
							/*this.updateElement(this.antikvariumSearchResult, this.ajaxLoadingImg);*/
						}).bind(this),
					onComplete: (
						function(response) {
							this.getAjaxResult(response);

							if (this.ajaxResult.search_status && this.ajaxResult.search_status == 'Folyamatban') {
								this.antikvariumSearch(searchQuery);
							} else if (this.ajaxResult.search_status && this.ajaxResult.search_status == 'Sikeres') {
								if (this.ajaxResult.design) {
									this.updateElement(this.antikvariumSearchResult, this.ajaxResult.design);
								} else {
									this.updateElement(this.antikvariumSearchResult, this.emptyDivHTML);
								}
							}
						}).bind(this),
					onFailure: (this.handleAjaxFailure).bind(this)
				});
		}
	},
	
	submitOnEnter: function(e) {
		e = (e) ? e : ((event) ? event : null);

		var keyCode = (e.which) ? e.which : e.keyCode;
		var tObj = (e.target) ? e.target : (((window.event)) ? window.event.srcElement : null);

		if (keyCode == 13 && tObj.type == 'text' && tObj.name != 'text' && myLibriSearch) {
			myLibriSearch.search();
		}
	}
});

/**
 * Create search object
 *
 * @return void
 */
function createLibriSearch() {
	myLibriSearch = new LibriSearch();
	
	document.onkeypress = myLibriSearch.submitOnEnter;
}
