function clearSearchBox(boxId, forcefully)
{
    var searchBoxElement = $(boxId);

    if (true == forcefully && searchBoxElement) { searchBoxElement.update(''); return; }

    if (! searchBoxElement || ! window.defaultSearchTerm) { return; }

    var searchTerm = $F(boxId);
    if (window.defaultSearchTerm == searchTerm ||
        (window.emptySearchTermMessage && window.emptySearchTermMessage == searchTerm )) {

        searchBoxElement.value = '';
        restoreSearchBoxStyle(searchBoxElement);
    }
}

function restoreSearchBoxStyle(searchBoxElementOrId)
{
    // Restore the search box (input element)'s foreground colour in case
    // its color had changed whilst displaying a previous error message.
    $(searchBoxElementOrId).style.color = 'black';
}

var searchBoxRuleset =
{
    '#q' : function (el)
    {
        el.onfocus =  function() { clearSearchBox(el.id); };
        el.onkeydown = function(event) {
                            if (! event) { event = window.event; }
                            var el = Event.element(event);
                            var keyCode = event.which || event.keyCode;
                            if (('red' == el.style.color || '#ff0000' == el.style.color) &&
                                keyCode != Event.KEY_RETURN) {
                                
                                restoreSearchBoxStyle(el);
                            }
                        }
    },

    '#search-form' : function (el)
    {
        var searchBoxId = 'q';
        el.onsubmit =  function(event) {
                            clearSearchBox(searchBoxId);
                            if (! $F(searchBoxId)) {
                                if (window.emptySearchTermMessage) {
                                    $(searchBoxId).value = window.emptySearchTermMessage;
                                    $(searchBoxId).style.color = 'red'; 
                                }
                                return false;
                            }
                        };
    }
}

Behaviour.register(searchBoxRuleset);

