<%/*
Licensed 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.
*/%>

<% _.each(_.initial(crumbs), function (crumb, index) { %>

  <% if (crumb.type === 'back') { %>
    <li class="pull-left breadcrumb-back-link">
      <a href="#<%- crumb.link %>" class="fonticon fonticon-left-open"></a>
    </li>
  <% } else { %>
    <li class="pull-left">
      <a href="#<%- crumb.link %>" class="fonticon <%- crumb.className %>"><%- crumb.name %></a>
    </li>

    <% if (nextCrumbHasLabel(crumb, index)) { %>
    <li class="divider fonticon-right-open"></li>
    <% } %>
  <% }  %>

<% }); %>

<% var last = _.last(crumbs) || {name: '', className: '', dataEvent: ''} %>
<li class="js-lastelement active <%- last.className %>" title="<%- last.name %>"><%- last.name %></li>
