<!DOCTYPE html>
<!-- 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
&quot;License&quot;); 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 &quot;AS IS&quot; 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. -->
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=1280, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <title>Pony Mail!</title>

    <!-- Bootstrap -->
    
    <link href="css/bootstrap.min.css" rel="stylesheet" media="all">
    <link href="css/popup.css" rel="stylesheet" media="all">
    <link href="css/solar.css" rel="alternate stylesheet" type="text/css" title="Solar theme" media="all">
    <link href="css/metro.css" rel="alternate stylesheet" type="text/css" title="Metropolis" media="all">
    <link rel="alternate" href="api/static.lua"/>
    <link rel="stylesheet" href="//cdn.jsdelivr.net/font-hack/2.013/css/hack.min.css">

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  <body onload="preGetListInfo(null, document.location.search.substr(1))">
    <header class="navbar navbar-default" style="margin-bottom: 5px; background: linear-gradient(to bottom, rgba(229,229,229,1) 0%,rgba(191,191,191,1) 100%);">
    <div class="container-fluid">
      <!-- Brand and toggle get grouped for better mobile display -->
      <div class="navbar-header collapse navbar-collapse">
      <a class="navbar-brand" href="./"><span><img src="images/logo.png" style="margin-top: -10px !important;" height="30" width="32"/>&nbsp;<span class='hidden-xs hidden-sm'>Pony Mail!</span></a>
      </div>
    
    
    <!-- Quick search -->
    
            
    
      <form style="padding-top: 8px; float: left; page-break-before: avoid; page-break-after: avoid;" id="quickform" action="list.html" method="get" onsubmit="return search(this.elements['q'].value,this.elements['d'].getAttribute('data'), false, this.elements['checkall'].checked);">
        <big style="padding-top: 4px; padding-right: 5px; float: left;">Search:</big>
        <div class="unifiedsearch">
        
        <input type="checkbox" style="display: none" id="checkall" name="checkall"/>
                <div class="form-group" style="display: inline; float: left;">
          <div class="input-group" style="float: left;"> 
        <a href="" aria-haspopup="true" aria-expanded="false" style="min-width: 145px; text-align: left; font-size: 9pt; line-height: 8.5pt !important; padding: 3px 4px 4px 0px !important; background: #333; color: #EEE; height: 31px; border-radius: 10px; border: none; border-right-style: none; border-top-right-radius: 0px;border-bottom-right-radius: 0px;" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
            &nbsp;-<span id="qs_list" style="padding-left: 5px;">This list<br/></span>
            &nbsp;-<span id="qs_date" style="padding-left: 5px;">Less than 1 month ago</span> <span style="font-size: 14pt !important;" class="caret"></span>
        </a>
        <ul class="dropdown-menu" id="slo" role="menu">
          <li><b>Where to search:</b></li>
          <li><a href="javascript:void(0);" onclick="document.getElementById('checkall').checked = false; document.getElementById('qs_list').innerHTML = this.innerHTML + '<br/>';" id="slot">This list</a></li>
          <li><a href="javascript:void(0);" onclick="document.getElementById('checkall').checked = true; document.getElementById('qs_list').innerHTML = this.innerHTML + '<br/>';"  id="sloa">All lists</a></li>
          <li class="divider"></li>
          <li><b>Date range:</b></li>
          <li id='drh'><input title="Click to change the date range" style="padding-left: 20px; border: none; cursor: url(images/daterange.ico), text; min-width: 200px; margin-right: 10px; font-size: 9pt;" name="d" id='d' data="lte=1M" value="Less than 1 month ago" onclick="datePicker(this);" readonly="readonly"/></li>
        </ul>
        </div>
                </div>
        <input type="text" name="q" id="q" placeholder="Type search terms..." style="border-top: none; border-bottom: none;"/>
        
        
        <button type="submit" title="Search!" value="Search!" class="btn btn-primary"><span class="glyphicon glyphicon-chevron-right"> </span></button>
        </div>
        &nbsp;
        <input type="button" value="Advanced" onclick="toggleView('advanced');toggleView('quicksearch');" style="float: left; margin-left: 4px;" class="btn btn-warning"/>
        <a href="javascript:void(0);" onclick="addSearchEngine();"><img src="images/opensearch.png" id="opensearch" title="Add these MLs as a search engine in your browser"/></a> &nbsp;
      </form>
           
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1" style="float: left;">
      <ul class="nav navbar-nav" id="listslist">

      </ul>
      <ul class="nav navbar-nav" id="otherstuff">
      <li class="dropdown navbar-right" id="listchoice">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Available projects: <span class="caret"></span></a>
            <ul class="dropdown-menu should-scroll" id="lc_dropdown">

          </ul>
      </li>
      </ul>
      <div class="nav navbar-nav hidden-large" id="filler" style="float: right; width: 128px;"></div>
      <ul class="nav navbar-nav" id="userprefs" style="position: absolute; right: 8px;">
        <li class="dropdown navbar-right">
          <!-- themes -->
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><img id="timg" src="images/themes.png" title="Theme selector"/>
            <span class="caret"></span></a>
            <ul class="dropdown-menu" id="themes_dropdown">
              <li><a href="javascript:void(0)" onclick="setTheme('default')">Default theme</a></li>
              <li><a href="javascript:void(0)" onclick="setTheme('social')">Social theme</a></li>
              <li><a href="javascript:void(0)" onclick="setTheme('compact')">Compact theme</a></li>
              <li><a href="api/static.lua/" onclick="location.href='api/static.lua/' + xlist;return false;">Static HTML lists</a></li>
          </ul>
        </li>
      <li class="dropdown navbar-right" id="listchoice">
          
            
          <!-- user prefs -->
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><img id="uimg" src="images/user_loggedout.png" title="Not logged in"/>
            <span class="caret"></span></a>
            <ul class="dropdown-menu" id="prefs_dropdown">
            <li><a href="oauth.html">Log in</a></li>
          </ul>
      </li>
      </ul>
      
    </div>
    
    </div>
    </header>
    <div class="container-fluid">
       <noscript>
          <div class="bs-callout bs-callout-alert">
            This site requires JavaScript enabled. Please enable it.
          </div>
      </noscript>
      <div class="row">
      
      
      <!-- Advanced search -->
      <div style="display: none;" class="bs-callout bs-callout-danger fade-in" id="advanced" style="margin: 2px !important; padding: 5px;">
      <form action="list.html" method="get" onsubmit="return searchAll(this.elements['aq'].value,this.elements['dp'].getAttribute('data'), this.elements['header_from'].value, this.elements['header_subject'].value, this.elements['lookwhere'].value);">
        <p>This search allows you to search all archives you have access to at once. Use with care.</p>
        <p>You may search for whole sentences using <code>"sentence goes here"</code> or omit certain words by prepending a - to them, such as: <code>apples -oranges</code> to search for apples but exclude emails with oranges.</p>
        <div style="float: left; width: 100%;">
          <div style="width: 120px; float: left;">When:</div>
          <div style="width: 300px; float: left; page-break-after: always;">
            <input name="dp" id='dp' data="lte=1M" value="Less than 1 month ago" onclick="datePicker(this);" style="min-width: 300px;" readonly="readonly"/>
          </div>
        </div>
        
        <div style="float: left; width: 100%;">
          <div style="width: 120px; float: left;">Quick query:</div>
          <div style="width: 300px; float: left; page-break-after: always;"><input type="text" name="aq" id="aq" style="min-width: 300px;"/></div>
        </div>
        <div style="float: left; width: 100%;">
          <div style="width: 120px; float: left;">From:</div>
          <div style="width: 300px; float: left;"><input type="text" name="header_from" id="header_from" style="min-width: 300px;"/></div>
        </div>
        <div style="float: left; width: 100%;">
          <div style="width: 120px; float: left;">Subject:</div>
          <div style="width: 300px; float: left;"><input type="text" name="header_subject" id="header_subject" style="min-width: 300px;"/></div>
        </div>
        <div style="float: left; width: 100%;">
          <div style="width: 120px; float: left;">Look in:</div>
          <div style="width: 300px; float: left;">
            <input type="radio" name="lookwhere" checked="checked" id="lookwhere_this" value="xlist"/> <label for="lookwhere_this">Current list</label>
            <input type="radio" name="lookwhere" id="lookwhere_all" value="*"/> <label for="lookwhere_all">All lists</label> 
          </div>
        </div>
        <input type="submit" value="Search!" class="btn btn-primary"/> &nbsp;
        <input type="button" value="Hide this panel" onclick="toggleView('advanced');toggleView('quicksearch');" style="float: right;" class="btn btn-warning"/>
      </form>
    </div>
      
      <!-- Popup box for various notices -->
      <div style="display: none;" class="bs-callout bs-callout-success" id="popupper" style="margin: 2px !important; padding: 5px;">
      </div>
    </div>
      
    <div class="row">
      <div id="datepicker" class="hidden-xs hidden-sm col-md-2" style="float: left;">
        &nbsp;
      </div>
      
      <div id="stats" class="hidden-xs hidden-sm hidden-md col-lg-3" style="font-size: 9pt;">
        &nbsp;
      </div>
      <div id="datepicker_mobile_parent" style="margin-bottom: 5px;" class="col-xs-10 col-sm-10 hidden-md hidden-lg" style="float: left;">
          Pick a month: <select onchange="toggleEmail(this.value);" id="datepicker_mobile"></select>
      </div>
      <div id="emails_parent" class="col-xs-10 col-md-8 col-lg-7" style="float: left;">
        
        <div style="min-height: 36px;">
          <div style="width: 170px; float: left;"><small>View mode: <select onchange="prefs.displayMode=this.value; saveEphemeral(); buildPage();" id="viewmode"></select></small></div>
          <div style="width: calc(100% - 170px);">
            <h3 id="listtitle" style="text-align: center; margin: 3px; padding: 0px;"><a href="#">&nbsp;</a></h3>
          </div>
        </div>
        <div id="emails">
          &nbsp;
        </div>
      </div>
      </div>
    </div>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="js/bootstrap.min.js"></script>
    <script src="js/config.js"></script>
    <script src="js/wordcloud.js"></script>
    <script src="js/ponymail.js"></script>
    <script src="js/weburl.js"></script>
    <div id="splash" class="splash fade-in"> &nbsp; </div>
  </body>
</html>