/**
 * Key Note search
 * 
 * @author Ollie Maitland
 * @copyright Byng Systems LLP
 */
Byng.register('kn.search', 
{	
	Implements : ByngView,
	
	/**
	 * Initialise the entity panel
	 * 
	 */
	initialize : function ()
	{
		this.searchWidget = $('kn-search');
		
		// event: submit event
		this.searchWidget.addEvent('submit', function(e) {
			var query = this.searchWidget.getElement('.kn-search_input');
			if (query.get('value') == "") {
				alert('Please enter a search value');
			} else {
				this.searchWidget.submit();
			}
		}.bind(this));
		
		
		// add the transport
		this.transport = Byng.input.fayt(	this.searchWidget.getElement('.kn-search_input'), 
											this.getRequest(), null, {'requestDelay' : 500, 'minStrLength' : 4});

		this.transport.options.loaderHost = this.searchWidget;
		this.transport.setContainer($('kn-search_content_holder'));
		this.transport.input.addEvent('blur', this.transport.looseDrop.bind(this.transport));
		
		
		Byng.ui.response.setListener('display_' + this.meta.entity, function(value, text, folder) {
			window.location = '/'+ folder +'/view/product/'+value+'/'+text;
		}.bind(this));
		
		this.searchWidget.addEvents({'open' : function () {
									this.setOpacity(0);				
									this.setStyle("display","block");
									var slider = new Fx.Morph(this, {	duration: 220, 
																		fps: 40, 
																		onStart : function() { }, 
																		onComplete : function () {
																			$('entity_search_q').focus();
																		} }).start({'opacity':[0,1]});	
									},
									'close' : function () {
										this.setStyle("display","none");
									}});
	},
	
	start : function (type) 
	{
		// condition: response engine not loaded
		if (!Byng.ui.response) {
			return;
		}
		
		// make this the active search container
		this.transport.setContainer($('kn-search_content_holder'));
		
		if (!this.searchType || this.searchType == type) {
			if (this.searchWidget.getStyle("display") == "none") {
				this.searchWidget.fireEvent('open');
			} else {
				this.searchWidget.fireEvent('close');
				this.searchType = null;
				return;
			}
		}

		this.searchWidget.getElement('.entity').set('html',type);
		this.searchType = type;
		
	}
}); 

Byng.register('kn.search.reports', 
{	
	Extends : 'kn.search',
	
	meta : {
		'entity'  		: 'report',
		'primaryKey' 	: 'productId',
		'gateway' 		: {'package' : 'site', 'module' : 'report_search', 'screen' : 'search'} 
	}
	
});
