(function(){

/*
	Class: SearchManager 
	The base class for a collection of navigation components 
*/
function SearchManager()
{
}

SearchManager.prototype.setConfig = function( inConfig )
{
	this.searchHtmlObj = YUIDom.get(inConfig.id);
	this.searchInput = YUIDom.get(inConfig.searchInput);
	this.searchButton = YUIDom.get(inConfig.searchButton);
	this.clearSearchButton = YUIDom.get("sb_clear_search");

	this.searchOrigText = this.searchInput.value;

	YUIEvent.addListener( this.searchInput , "keypress", this.onKeyPress, this, true );
	YUIEvent.addListener( this.searchInput , "click", this.onInputClick, this, true );
	YUIEvent.addListener( this.searchButton , "click", this.PerformSearch, this, true );
	YUIEvent.addListener( this.clearSearchButton , "click", this.ClearSearch, this, true );
};

SearchManager.prototype.toString = function() { return "[SB.util.SearchManager]"; }

SearchManager.prototype.PerformSearch = function()
{
	var query = this.searchInput.value;
	var url = "/search/?q="+encodeURIComponent(query);
	var cb = { success:resultsReceived, arguments:{query:query} };

	YUIRequest.asyncRequest( 'GET', url, cb );		

	SButil.EventManager.fireEvent( "SearchStarted", { query:query});

	if( box = SButil.StateManager.currentBox )
		SButil.EventManager.fireEvent( "BoxItemDeactivated", { box:box } );
};

SearchManager.prototype.ClearSearch = function()
{
	this.searchInput.value = this.searchOrigText;
	this.clearSearchButton.style.display = "none";
	this.searchInput.blur();
	SBui.Stage.showDashboard('');
};

function resultsReceived( inReq )
{
	if( !inReq.responseText ) 
	{
		var param = { query:this.arguments.query, results:[]};
		SButil.EventManager.fireEvent( "SearchResultsAvailable", param );
		return;
	}

	var results = YUIJSON.parse( inReq.responseText );	

	param = { query:this.arguments.query, results:results };
	SButil.EventManager.fireEvent( "SearchResultsAvailable", param );
}

SearchManager.prototype.onKeyPress = function( e )
{
   if( this.searchInput.value.length )
   	this.clearSearchButton.style.display="block";
   else
   	this.clearSearchButton.style.display="none";

   var key;

   if(window.event)
          key = window.event.keyCode;     //IE
   else
          key = e.which;     //firefox

   if(key == 13)
	   this.PerformSearch();
}

SearchManager.prototype.onInputClick = function( e )
{
   this.searchInput.focus();
   this.searchInput.select();
}


window['SB']['util']['SearchManager'] = new SearchManager();

})();
