﻿var SearchController = function()
{	
	var searchInput = null;
	var searchButton = null;
	var searchTrigger = null;	
	
	var initControls = function(config)
	{		
		searchInput = $(config.selector.searchInput);
		searchButton = $(config.selector.searchButton);	
		searchTrigger = $(config.selector.searchTrigger);	
	};	
	
	var initEventHandlers = function()
	{
		searchButton.click(function(e)
		{
			if (e != null)
			{
				e.cancelBubble = true;
			}
			
			searchTrigger.click();
			
			return false;
		});
		
		searchInput.keypress(function (e) 
		{
			if (e.which == 13)
			{
				searchButton.click();
	        }	      
	    });
		
		$('body').find('*').focus(syncSearchState);		
	};	
	
	var syncSearchState = function()
	{
		if (searchInput.is(':focus')||searchButton.is(':focus'))
		{
			searchButton.removeAttr("disabled");
		}
		else
		{
			searchButton.attr("disabled","disabled");
		}
	}
			   
    // return a public interface
    return {
		init: function(config)	
		{
			initControls(config);
			initEventHandlers(config);
			
			syncSearchState();
		}		
    };
}();
