<!--
    * 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.
-->
<!DOCTYPE html>
<html>
  <head>
    <title>Super Admin Login</title>
	<style type="text/css">
	    #container {
	      padding: 1em;      
	    }
	</style>
   </head>
   <body>
	<div id="container">
  <div style="float:right;width:50%;font-size:0.8em;text-align:right;">
     <div><span><a href="../">Gallery</a></span></div>
  </div>
    <div style="clear:both"></div>
    <div style="color:red;font-size:1.4em">&nbsp; The username or password you entered is incorrect. </div>
    <p>Login as <span style="color:green">Super Admin</span></p>
    <form method="post" action="j_security_check">
      <table cellspacing="3">
        <tr>
          <th align="right">Username:</th>
          <td align="left"><input type="text" name="j_username"/></td>
        </tr>
        <tr>
          <th align="right">Password:</th>
          <td align="left"><input type="password" name="j_password"/></td>
        </tr>
        <tr>
          <th align="right">&nbsp;</th>
          <td align="left"><input type="submit" value="Log In"/></td>
        </tr>
      </table>
    </form>
  </body>
</html>