<!--
 Licensed to the Apache Software Foundation (ASF) under one   *
 or more contributor license agreements.  See the NOTICE file *
 distributed with this work for additional information        *
 regarding copyright ownership.  The ASF licenses this file   *
 to you under the Apache License, Version 2.0 (the            *
 "License"); you may not use this file except in compliance   *
 with the License.  You may obtain a copy of the License at   *
                                                              *
   http://www.apache.org/licenses/LICENSE-2.0                 *
                                                              *
 Unless required by applicable law or agreed to in writing,   *
 software distributed under the License is distributed on an  *
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
 KIND, either express or implied.  See the License for the    *
 specific language governing permissions and limitations      *
 under the License.                                           *
-->
<lift:surround with="base" at="left">
  <div id="back-header">
    <div id="left">
      <h1>
        <lift:loc>ui_messages_search_for</lift:loc><i><lift:searchTerm/></i>     
      </h1>                                                                      
      <lift:embed what="templates-hidden/message_update_box"/>    
    </div> 
    <div class="container-aux">
      <lift:display_search> 
         <search:cometTimeline />
      </lift:display_search>
    </div> 
  </div>     
</lift:surround>

