{% macro format_checkbox(admin, right, name, users, type) %}
    {% set id = right['base_id'] %}
    {% set class = 'base_id' %}
    {% if type == 'sbas' %}
      {% set id = right['sbas_id'] %}
      {% set class = 'sbas_id' %}
      {% set sbas_class = "" %}
    {% else %}
      {% set sbas_class = "inside_sbas_" ~ right['sbas_id'] %}
    {% endif %}

    {% set display = 'block' %}

    {% if right[name] != users|length and name != constant('\\ACL::ACCESS') and right[constant('\\ACL::ACCESS')] != users|length and type != 'sbas' %}
      {% set display = 'none' %}
    {% endif %}

    {% if right[name] == 0 %}
      {% set class = 'unchecked' %}
    {% elseif right[name] == users|length %}
      {% set class = 'checked' %}
    {% else %}
      {% set class = 'mixed' %}
    {% endif %}

  {% if name == 'access' %}
    {% if class != 'checked' and type == 'base' and app.getAclForUser(admin).has_access_to_base(id) is empty %}
      <div class="no_switch">
      </div>
    {% else %}
      <div style="display:{{display}}" class="{{class}} switch_right {{sbas_class}} {{type}} {{type}}_{{id}} right_{{name}}">
        <input class="{{class}}" name="{{name}}_{{id}}" value="" type="hidden"/>
       </div>
    {% endif %}
  {% else %}
    {% if class != 'checked' and type == 'base' and app.getAclForUser(admin).has_right_on_base(id, name) is empty %}
      <div class="no_switch">
      </div>
    {% elseif class != 'checked' and type == 'sbas' and app.getAclForUser(admin).has_right_on_sbas(id, name) is empty %}
      <div class="no_switch">
      </div>
    {% else %}
      <div style="display:{{display}}" class="{{class}} switch_right {{sbas_class}} {{type}} {{type}}_{{id}} right_{{name}}">
        <input class="{{class}}" name="{{name}}_{{id}}" value="" type="hidden"/>
       </div>
    {% endif %}
  {% endif %}
{% endmacro %}
<style>
  div.no_switch,
  div.switch_quota,
  div.switch_masks,
  div.switch_time,
  div.switch_right{
    background-repeat:no-repeat;
    background-position: center center;
    width:12px;
    height:12px;
    margin:0 auto;
  }
  div.no_switch{
    background-image:url(/assets/common/images/icons/ccoch5.gif);
  }
  div.switch_quota.mixed,
  div.switch_masks.mixed,
  div.switch_time.mixed,
  div.switch_right.mixed{
    background-image:url(/assets/common/images/icons/ccoch2.gif);
  }
  div.switch_quota.checked,
  div.switch_masks.checked,
  div.switch_time.checked,
  div.switch_right.checked{
    background-image:url(/assets/common/images/icons/ccoch1.gif);
  }
  div.switch_quota.unchecked,
  div.switch_masks.unchecked,
  div.switch_time.unchecked,
  div.switch_right.unchecked{
    background-image:url(/assets/common/images/icons/ccoch0.gif);
  }
  td.users_col{
    vertical-align:middle;
    text-align:center;
    width:23px;
    border:0px solid transparent;
  }
  .ui-datepicker{
    z-index:1500;
  }
</style>

<div>
  <div class="tabs PNB" style="bottom:40px;">
    <ul>
      <li>
        <a href="#rights_tab">{{ 'Rights' | trans }}</a>
      </li>
      {% if main_user is not empty and main_user.isTemplate is empty and main_user.isSpecial is empty %}
      <li>
        <a href="#user_infos_tab">{{ 'Infos' | trans }}</a>
      </li>
      {% endif %}
    </ul>
    <div id="rights_tab" class="" style="top:40px;">
      <form id="users_rights_form" method="post" action="{{ path('admin_users_rights_apply') }}">
        <input type="hidden" name="users" value="{{users_serial}}"/>
        <table style="width:100%;" cellspacing="0" cellpadding="0" border="0">
          <tr>
            <td>
              {% if main_user is not empty %}

                {% if main_user.isSpecial is not empty %}
                  {% if main_user.getLogin() == 'invite' %}
                      {{ 'Reglages:: reglages d acces guest' | trans }}
                  {% elseif main_user.getLogin() == 'autoregister' %}
                      {{ 'Reglages:: reglages d inscitpition automatisee' | trans }}
                  {% endif %}
                {% else %}
                  {% set display_name = main_user.getDisplayName() %}
                  {% trans with {'%display_name%' : display_name} %}Edition des droits de %display_name%{% endtrans %}
                {% endif %}
              {% else %}
                {% set number = users|length %}
                {% trans with {'%number%' : number} %}Edition des droits de %number% utilisateurs{% endtrans %}
              {% endif %}
            </td>
            <td style="text-align:right;">
              {{ 'Apply a template' | trans }}
              <select name="template">
                <option value="">{{ 'boutton::choisir' | trans }}</option>
                {% for template in templates %}
                    <option value="{{ template.getId() }}">{{ template.getLogin() }}</option>
                {% endfor %}
              </select>
               <button class="btn" type='button' id='reset_rights'>{{ 'Delete all users rights' | trans }}</button>
            </td>
          </tr>
        </table>
        <table cellspacing="0" cellpadding="0" border="0" style="table-layout: auto;width:820px;height:67px;bottom:auto;top:50px;" class="">
          <thead>
            <tr>
              <th style="width:122px;">

              </th>
              <th colspan="26">
                <img src="/assets/common/images/lng/inclin-{{app['locale']}}.png" style="width:698px"/>
              </th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>

              </td>
              <td colspan="26">

              </td>
            </tr>
          </tbody>
        </table>
        <div class="" style="bottom:40px;top:127px;overflow-y:auto;overflow-x:hidden;width:850px;max-height:450px">
          <table class="hoverable" cellspacing="0" cellpadding="0" border="0" style="table-layout: fixed;width:820px;">
      <!--      <thead>
              <tr>
                <th style="width:122px;">

                </th>
                <th colspan="26">
                  <img src="/assets/common/images/lng/inclin-{{app['locale']}}.gif" >
                </th>
              </tr>
            </thead>-->
            <tbody>
              {% set sbas = '' %}
              {% for rights in datas %}
              {% if rights['sbas_id'] != sbas %}
              {% set sbas = rights['sbas_id'] %}
              {% if loop.index != 1 %}
                <tr style="height:15px;">
                  <td></td>
                </tr>
              {% endif %}

              <tr>
                <td style="width:122px;overflow:hidden;white-space:nowrap;">
                  {{rights['sbas_id']|sbas_labels(app)}}
                </td>
                <td class="users_col options">
                  <div>
                    &#x25bc;
                    <input type="hidden" name="right" value="right_access"/>
                    <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
                  </div>
                </td>
                <td class="users_col options">
                  <div>
                    &#x25bc;
                    <input type="hidden" name="right" value="right_actif"/>
                    <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
                  </div>
                </td>
                <td class="users_col options">
                  <div>
                    &#x25bc;
                    <input type="hidden" name="right" value="right_canputinalbum"/>
                    <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
                  </div>
                </td>
                <td class="users_col options">
                  <div>
                    &#x25bc;
                    <input type="hidden" name="right" value="right_candwnldpreview"/>
                    <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
                  </div>
                </td>
                <td class="users_col options">
                  <div>
                    &#x25bc;
                    <input type="hidden" name="right" value="right_nowatermark"/>
                    <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
                  </div>
                </td>
                <td class="users_col options">
                  <div>
                    &#x25bc;
                    <input type="hidden" name="right" value="right_candwnldhd"/>
                    <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
                  </div>
                </td>
                <td class="users_col options">
                  <div>
                    &#x25bc;
                    <input type="hidden" name="right" value="right_cancmd"/>
                    <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
                  </div>
                </td>
                <td class="users_col">

                </td>
                <td class="users_col">
                  <div class="time_trigger time_sbas_{{rights['sbas_id']}}">
                    <img src="/assets/common/images/icons/user_details_gray.png" />
                    <input type="hidden" name="time_sbas_id" value="{{rights['sbas_id']}}"/>
                  </div>
                </td>
                <td class="users_col">

                </td>
                <td>

                </td>
                <td class="users_col options">
                  <div>
                    &#x25bc;
                    <input type="hidden" name="right" value="right_canaddrecord"/>
                    <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
                  </div>
                </td>
                <td class="users_col options">
                  <div>
                    &#x25bc;
                    <input type="hidden" name="right" value="right_canmodifrecord"/>
                    <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
                  </div>
                </td>
                <td class="users_col options">
                  <div>
                    &#x25bc;
                    <input type="hidden" name="right" value="right_chgstatus"/>
                    <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
                  </div>
                </td>
                <td class="users_col options">
                  <div>
                    &#x25bc;
                    <input type="hidden" name="right" value="right_candeleterecord"/>
                    <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
                  </div>
                </td>
                <td class="users_col options">
                  <div>
                    &#x25bc;
                    <input type="hidden" name="right" value="right_imgtools"/>
                    <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
                  </div>
                </td>
                <td class="users_col options">
                  <div>
                    &#x25bc;
                    <input type="hidden" name="right" value="right_canadmin"/>
                    <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
                  </div>
                </td>
                <td class="users_col options">
                  <div>
                    &#x25bc;
                    <input type="hidden" name="right" value="right_canreport"/>
                    <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
                  </div>
                </td>
                <td class="users_col options">
                  <div>
                    &#x25bc;
                    <input type="hidden" name="right" value="right_canpush"/>
                    <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
                  </div>
                </td>
                <td class="users_col options">
                  <div>
                    &#x25bc;
                    <input type="hidden" name="right" value="right_manage"/>
                    <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
                  </div>
                </td>
                <td class="users_col options">
                  <div>
                    &#x25bc;
                    <input type="hidden" name="right" value="right_modify_struct"/>
                    <input type="hidden" name="sbas_id" value="{{rights['sbas_id']}}"/>
                  </div>
                </td>
                <td style="text-align:center;width:19px;" title="{{ 'Allowed to publish' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::BAS_CHUPUB'), users, 'sbas')}}
                </td>
                <td style="text-align:center;width:19px;" title="{{ 'Manage Thesaurus' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::BAS_MODIF_TH'), users, 'sbas')}}
                </td>
                <td style="text-align:center;width:19px;" title="{{ 'Manage Database' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::BAS_MANAGE'), users, 'sbas')}}
                </td>
                <td style="text-align:center;width:19px;" title="{{ 'Manage DB fields' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::BAS_MODIFY_STRUCT'), users, 'sbas')}}
                </td>
                <td style="text-align:center;width:48px;"></td>
              </tr>
              {% endif %}
              <tr>
                <td style="overflow:hidden;white-space:nowrap;">
                  {{rights['base_id']|bas_labels(app)}}
                </td>
                <td class="users_col case_right_access" title="{{ 'Access' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::ACCESS'), users, 'base')}}
                </td>
                <td class="users_col case_right_actif" title="{{ 'Active' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::ACTIF'), users, 'base')}}
                </td>
                <td class="users_col case_right_canputinalbum" title="{{ 'Allowed to add in basket' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANPUTINALBUM'), users, 'base')}}
                </td>
                <td class="users_col case_right_candwnldpreview" title="{{ 'Access to preview' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANDWNLDPREVIEW'), users, 'base')}}
                </td>
                <td class="users_col case_right_nowatermark" title="{{ 'Remove watermark' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::NOWATERMARK'), users, 'base')}}
                </td>
                <td class="users_col case_right_candwnldhd" title="{{ 'Access to HD' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANDWNLDHD'), users, 'base')}}
                </td>
                <td class="users_col case_right_cancmd" title="{{ 'Allowed to order' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANCMD'), users, 'base')}}
                </td>
                <td class="users_col case_right_quota" title="{{ 'Set download quotas' | trans }}">
                  <div class="quota_trigger quota_{{rights['base_id']}} base_{{rights['base_id']}}">
                    {% if rights[constant('\\ACL::RESTRICT_DWNLD')] > 0 %}
                    <img src="/assets/common/images/icons/user_details_on.png" />
                    {% else %}
                    <img src="/assets/common/images/icons/user_details_off.png" />
                    {% endif %}
                    <input type="hidden" name="quota_base_id" value="{{rights['base_id']}}"/>
                  </div>
                </td>
                <td class="users_col case_right_time" title="{{ 'Set time restrictions' | trans }}">
                  <div class="time_trigger time_{{rights['base_id']}} base_{{rights['base_id']}}">
                    {% if rights['time_limited'] > 0 %}
                    <img src="/assets/common/images/icons/user_details_on.png" />
                    {% else %}
                    <img src="/assets/common/images/icons/user_details_off.png" />
                    {% endif %}
                    <input type="hidden" name="time_base_id" value="{{rights['base_id']}}"/>
                  </div>
                </td>
                <td class="users_col case_right_masks" title="{{ 'Set statuses restrictions' | trans }}">
                  <div class="masks_trigger quotatime_{{rights['base_id']}} base_{{rights['base_id']}}">
                    {% if rights['masks'] > 0 %}
                    <img src="/assets/common/images/icons/user_details_on.png" />
                    {% else %}
                    <img src="/assets/common/images/icons/user_details_off.png" />
                    {% endif %}
                    <input type="hidden" name="masks_base_id" value="{{rights['base_id']}}"/>
                  </div>
                </td>

                <td style="text-align:center;width:100px;"></td>

                <td class="users_col case_right_canaddrecord" title="{{ 'Allowed to add' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANADDRECORD'), users, 'base')}}
                </td>
                <td class="users_col case_right_canmodifrecord" title="{{ 'Allowed to edit' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANMODIFRECORD'), users, 'base')}}
                </td>
                <td class="users_col case_right_chgstatus" title="{{ 'Allowed to change statuses' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CHGSTATUS'), users, 'base')}}
                </td>
                <td class="users_col case_right_candeleterecord" title="{{ 'Allowed to delete' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANDELETERECORD'), users, 'base')}}
                </td>
                <td class="users_col case_right_imgtools" title="{{ 'Access to image tools' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::IMGTOOLS'), users, 'base')}}
                </td>
                <td class="users_col case_right_canadmin" title="{{ 'Manage users' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANADMIN'), users, 'base')}}
                </td>
                <td class="users_col case_right_canreport" title="{{ 'Allowed to access report' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANREPORT'), users, 'base')}}
                </td>
                <td class="users_col case_right_canpush" title="{{ 'Allowed to push' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::CANPUSH'), users, 'base')}}
                </td>
                <td class="users_col case_right_manage" title="{{ 'Manage collection' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::COLL_MANAGE'), users, 'base')}}
                </td>
                <td class="users_col case_right_modify" title="{{ 'Manage values lists' | trans }}">
                  {{_self.format_checkbox(app.getAuthenticatedUser(), rights, constant('\\ACL::COLL_MODIFY_STRUCT'), users, 'base')}}
                </td>
                <td colspan="5">

                </td>
              </tr>
              {% endfor %}
            </tbody>
          </table>
        </div>
      </form>
    </div>

    {% if main_user is not empty and main_user.isTemplate is empty and main_user.isSpecial is empty %}
    <div id="user_infos_tab" class="" style="top:40px;overflow:auto;">
      <form id="user_infos_form">
        <table>
          <tr>
            <td>
              {{ 'admin::compte-utilisateur identifiant' | trans }}
            </td>
            <td>
              <input type="text" value="{{main_user.getLogin()}}" readonly="readonly" />
            </td>
          </tr>
          <tr>
            <td>
              {{ 'admin::compte-utilisateur sexe' | trans }}
            </td>
            <td>
              <select name="gender">
                <option {% if main_user.getGender() == 0 %}selected="selected"{% endif %} value="0" >{{ 'admin::compte-utilisateur:sexe: mademoiselle' | trans }}</option>
                <option {% if main_user.getGender() == 1 %}selected="selected"{% endif %} value="1" >{{ 'admin::compte-utilisateur:sexe: madame' | trans }}</option>
                <option {% if main_user.getGender() == 2 %}selected="selected"{% endif %} value="2" >{{ 'admin::compte-utilisateur:sexe: monsieur' | trans }}</option>
              </select>
            </td>
          </tr>
          <tr>
            <td>
              {{ 'admin::compte-utilisateur prenom' | trans }}
            </td>
            <td>
              <input type="text" name="first_name" value="{{main_user.getFirstName()}}"/>
            </td>
          </tr>
          <tr>
            <td>
              {{ 'admin::compte-utilisateur nom' | trans }}
            </td>
            <td>
              <input type="text" name="last_name" value="{{main_user.getLastName()}}"/>
            </td>
          </tr>
          <tr>
            <td>
              {{ 'admin::compte-utilisateur email' | trans }}
            </td>
            <td>
              <input type="text" name="email" value="{{main_user.getEmail()}}"/>
            </td>
          </tr>
          <tr>
            <td>
              {{ 'admin::compte-utilisateur adresse' | trans }}
            </td>
            <td>
              <input type="text" name="address" value="{{main_user.getAddress()}}"/>
            </td>
          </tr>
          <tr>
            <td>
              {{ 'admin::compte-utilisateur code postal' | trans }}
            </td>
            <td>
              <input type="text" name="zip" value="{{main_user.getZipCode()}}"/>
            </td>
          </tr>
          <tr>
            <td>
              {{ 'admin::compte-utilisateur ville' | trans }}
            </td>
            <td>
              <input type="text" value="{{ main_user.getGeonameId() }}" class="geoname_field" name="geonameid" autocomplete="off"/>
            </td>
          </tr>
          <tr>
            <td>
              {{ 'admin::compte-utilisateur poste' | trans }}
            </td>
            <td>
              <input type="text" name="function" value="{{main_user.getActivity()}}"/>
            </td>
          </tr>
          <tr>
            <td>
              {{ 'admin::compte-utilisateur societe' | trans }}
            </td>
            <td>
              <input type="text" name="company" value="{{main_user.getCompany()}}"/>
            </td>
          </tr>
          <tr>
            <td>
              {{ 'admin::compte-utilisateur activite' | trans }}
            </td>
            <td>
              <input type="text" name="activite" value="{{main_user.getJob()}}"/>
            </td>
          </tr>

          <tr>
            <td>
              {{ 'admin::compte-utilisateur telephone' | trans }}
            </td>
            <td>
              <input type="text" name="telephone" value="{{main_user.getPhone()}}"/>
            </td>
          </tr>
          <tr>
            <td>
              {{ 'admin::compte-utilisateur fax' | trans }}
            </td>
            <td>
              <input type="text" name="fax" value="{{main_user.getFax()}}"/>
            </td>
          </tr>
        </table>
      </form>
    </div>
    {% endif %}
  </div>
  <div class="form-actions" style="">
    <button class="users_rights_valid btn btn-primary">{{ 'boutton::valider' | trans }}</button>
    <a href="{{ path('admin_users_search') }}" class="users_rights_cancel btn" style="text-decoration:none">{{ 'boutton::retour' | trans }}</a>
  </div>
</div>

<script type="text/javascript">

  $(document).ready(function() {

    function ini_edit_usrs() {
      $('.users_col.options').bind('click', function (event) {
        $('#users_check_uncheck').remove();
        event.stopPropagation();
        event.preventDefault();
        check_uncheck_menu($('input[name="right"]', $(this)).val(), $('input[name="sbas_id"]', $(this)).val(), $(this));
        return false;
      });

      $(document).unbind('click.usersoptions').bind('click.usersoptions', function (event) {
        $('#users_check_uncheck').remove();
      });

      $('table.hoverable tr').hover(
              function () {
                $(this).addClass('hovered');
              },
              function () {
                $(this).removeClass('hovered');
              }
      );

      $('table.hoverable td').hover(
              function () {
                var attr = $('input:first', this).attr('name');
                var right = attr ? attr.split('_').shift() : false;
                if (right)
                  $('td.case_right_' + right).addClass('hovered');
              },
              function () {
                var attr = $('input:first', this).attr('name');
                var right = attr ? attr.split('_').shift() : false;
                if (right)
                  $('td.hovered').removeClass('hovered');
              }
      );

      function user_click_box(event, element, status) {
        var newclass, newvalue, boxes;

        var $element = $(element);

        if ($element.hasClass('right_access')) {
          var base_id = $element.find('input').attr('name').split('_').pop();
          boxes = $('div.base_' + base_id + ':not(:first)');
        }

        if ((typeof status !== 'undefined' && status == 'checked') || (typeof status === 'undefined' && (($element.hasClass('mixed') === true) || ($element.hasClass('unchecked') === true)))) {
          newclass = 'checked';
          newvalue = '1';

          if (boxes)
            boxes.show();
        }
        else {
          newclass = 'unchecked';
          newvalue = '0';

          if (boxes)
            boxes.hide();
        }

        $element.find('input').val(newvalue);
        $element.removeClass('mixed checked unchecked').addClass(newclass);
      }

      $('#users_rights_form div.switch_right').bind('click', function (event) {
        user_click_box(event, $(this));
      });
      $('#right-ajax button.users_rights_valid').bind('click', function () {
        var datas = {
          users: $('#users_rights_form input[name="users"]').val(),
          values: $('#users_rights_form').serialize(),
          template: $('#users_rights_form select[name="template"]').val(),
          user_infos: $('#user_infos_form').serialize()
        };

        var callback = function (reset_before_apply) {
          datas.reset_before_apply = reset_before_apply;
          $.ajax({
            type: 'POST',
            url: '../admin/users/rights/apply/',
            dataType: 'json',
            data: datas,
            success: function (data) {
              if (!data.error)
                $('a.zone_editusers').trigger('click');
              else
                alert(data.message);
            }
          });
        };

        if (datas.template !== '') {
          dialogUserTemplate(callback);
        } else {
          callback('0');
        }

        return false;
      });

      $('#right-ajax .users_rights_cancel').bind('click', function () {
        var $this = $(this);
        $('#right-ajax').empty().addClass('loading').parent().show();
        $('#right').hide();
        $.get($this.attr('href'), function (data) {
          $('#right-ajax').removeClass('loading').html(data);
        });

        return false;
      });

      var time_buttons = {
        'Ok': function () {
          save_time();
        },
        'Cancel': function () {
          $('#time_dialog').dialog('close');
        }
      };
      $('#time_dialog').dialog({
        resizable: false,
        autoOpen: false,
        draggable: false,
        buttons: time_buttons,
        modal: true
      });
      var quota_buttons = {
        'Ok': function () {
          save_quotas();
        },
        'Cancel': function () {
          $('#quotas_dialog').dialog('close');
        }
      };
      $('#quotas_dialog').dialog({
        resizable: false,
        autoOpen: false,
        draggable: false,
        buttons: quota_buttons,
        modal: true
      });

      var masks_buttons = {
        'Ok': function () {
          save_masks();
        },
        'Cancel': function () {
          $('#masks_dialog').dialog('close');
        }
      };
      $('#masks_dialog').dialog({
        resizable: false,
        autoOpen: false,
        draggable: false,
        buttons: masks_buttons,
        width: 900,
        height: 300,
        modal: true
      });
      $('#users_rights_form .time_trigger').bind('click', function () {
        var base_id = $(this).find('input[name="time_base_id"]').val();
        if ('undefined' !== typeof base_id) {
          $.ajax({
            type: 'POST',
            url: '../admin/users/rights/time/',
            data: {
              users: $('#users_rights_form input[name="users"]').val(),
              base_id: base_id
            },
            success: function (data) {
              var dialog = $('#time_dialog');

              if (dialog.data("ui-dialog")) {
                dialog.html(data).dialog('open');
              }

              $('div.switch_time', dialog).bind('click', function (event) {
                var newclass, boxes;

                boxes = $(this).closest('form').find('input.datepicker');

                if (($(this).hasClass('mixed') === true) || ($(this).hasClass('unchecked') === true)) {
                  newclass = 'checked';
                  boxes.removeAttr('readonly');
                }
                else {
                  newclass = 'unchecked';
                  boxes.attr('readonly', 'readonly');
                }

                $(this).removeClass('mixed checked unchecked').addClass(newclass);
              });
            }
          });
        } else {
          var sbas_id = $(this).find('input[name="time_sbas_id"]').val();

          $.ajax({
            type: 'POST',
            url: '../admin/users/rights/time/sbas/',
            data: {
              users: $('#users_rights_form input[name="users"]').val(),
              sbas_id: sbas_id
            },
            success: function (data) {
              var dialog = $('#time_dialog');

              dialog.html(data);
              dialog.dialog('open');

              $('div.switch_time', dialog).bind('click', function (event) {
                var newclass, boxes;

                boxes = $(this).closest('form').find('input.datepicker');

                if (($(this).hasClass('mixed') === true) || ($(this).hasClass('unchecked') === true)) {
                  newclass = 'checked';
                  boxes.removeAttr('readonly');
                }
                else {
                  newclass = 'unchecked';
                  boxes.attr('readonly', 'readonly');
                }

                $(this).removeClass('mixed checked unchecked').addClass(newclass);
              });
            }
          });
        }
      });
      $('#users_rights_form .quota_trigger').bind('click', function () {
        var base_id = $(this).find('input[name="quota_base_id"]').val();
        $.ajax({
          type: 'POST',
          url: '../admin/users/rights/quotas/',
          data: {
            users: $('#users_rights_form input[name="users"]').val(),
            base_id: base_id
          },
          success: function (data) {
            var dialog = $('#quotas_dialog');

            if (dialog.data("ui-dialog")) {
              dialog.html(data).dialog('open');
            }

            $('div.switch_quota', dialog).bind('click', function (event) {
              var newclass, boxes;

              boxes = $(this).closest('form').find('input:text');

              if (($(this).hasClass('mixed') === true) || ($(this).hasClass('unchecked') === true)) {
                newclass = 'checked';
                boxes.removeAttr('readonly');
              }
              else {
                newclass = 'unchecked';
                boxes.attr('readonly', 'readonly');
              }

              $(this).removeClass('mixed checked unchecked').addClass(newclass);
            });
          }
        });
      });

      $('#users_rights_form .masks_trigger').bind('click', function () {
        var base_id = $(this).find('input[name="masks_base_id"]').val();
        $.ajax({
          type: 'POST',
          url: '../admin/users/rights/masks/',
          data: {
            users: $('#users_rights_form input[name="users"]').val(),
            base_id: base_id
          },
          success: function (data) {
            $('#masks_dialog').html(data).dialog('open');

            $('.switch_masks').bind('click', function () {
              var currentclass, newclass;

              var bit = $(this).find('input[name="bit"]').val();
              currentclass = 'unchecked';
              if ($(this).hasClass('mixed')) {
                currentclass = 'mixed';
              }
              if ($(this).hasClass('checked')) {
                currentclass = 'checked';
              }
              switch (currentclass) {
                case 'mixed':
                default:
                  $('.bitnum_' + bit).removeClass('mixed checked unchecked').addClass('checked')
                  break;
                case 'unchecked':
                  $(this).removeClass('mixed checked unchecked').addClass('checked')
                  break;
                case 'checked':
                  if ($('.checked.bitnum_' + bit).length == 2) {
                    $(this).removeClass('mixed checked unchecked').addClass('unchecked')
                  }
                  else {
                    alert("admin::user:mask: vous devez cocher au moins une case pour chaque status");
                    return;
                  }
                  break;
              }

              var left = $('.bitnum_' + bit + '.bit_left');
              var right = $('.bitnum_' + bit + '.bit_right');

              var maskform = $('#masks_dialog form');
              var vand_and = $('input[name="vand_and"]', maskform);
              var vand_or = $('input[name="vand_or"]', maskform);
              var vxor_and = $('input[name="vxor_and"]', maskform);
              var vxor_or = $('input[name="vxor_or"]', maskform);

              var newbit_vand_and = newbit_vand_or = newbit_vxor_and = newbit_vxor_or = 0;

              if (left.length === 1 && right.length === 1) {
                if (left.hasClass('checked') && right.hasClass('unchecked')) {
                  newbit_vand_and = "1";
                  newbit_vand_or = "1";
                }
                else if (left.hasClass('unchecked') && right.hasClass('checked')) {
                  newbit_vand_and = "1";
                  newbit_vand_or = "1";
                  newbit_vxor_and = "1";
                  newbit_vxor_or = "1";
                }
                vand_and.val(vand_and.val().substr(0, 31 - bit) + newbit_vand_and + vand_and.val().substr(31 + 1 - bit));
                vand_or.val(vand_or.val().substr(0, 31 - bit) + newbit_vand_or + vand_or.val().substr(31 + 1 - bit));
                vxor_and.val(vxor_and.val().substr(0, 31 - bit) + newbit_vxor_and + vxor_and.val().substr(31 + 1 - bit));
                vxor_or.val(vxor_or.val().substr(0, 31 - bit) + newbit_vxor_or + vxor_and.val().substr(31 + 1 - bit));
              }
            });
          }
        });
      });


      function save_masks() {
        var cont = $('#masks_dialog');

        var maskform = $('#masks_dialog form');
        var base_id = $('input[name="base_id"]', maskform).val();
        var users = $('input[name="users"]', maskform).val();
        var vand_and = $('input[name="vand_and"]', maskform).val();
        var vand_or = $('input[name="vand_or"]', maskform).val();
        var vxor_and = $('input[name="vxor_and"]', maskform).val();
        var vxor_or = $('input[name="vxor_or"]', maskform).val();


        $.ajax({
          type: 'POST',
          url: '../admin/users/rights/masks/apply/',
          data: {
            users: users,
            base_id: base_id,
            vand_and: vand_and,
            vand_or: vand_or,
            vxor_and: vxor_and,
            vxor_or: vxor_or
          },
          success: function (data) {
            $('#masks_dialog').dialog('close');
          }
        });
      }


      function save_quotas() {
        var cont = $('#quotas_dialog');
        var base_id = $('input[name="base_id"]', cont).val();
        var users = $('input[name="users"]', cont).val();
        var droits = $('input[name="droits"]', cont).val();
        var restes = $('input[name="restes"]', cont).val();

        var switch_quota = $('.switch_quota', cont);

        if (switch_quota.hasClass('mixed'))
          return;

        var quota = 0;

        if (switch_quota.hasClass('checked'))
          quota = 1;

        $.ajax({
          type: 'POST',
          url: '../admin/users/rights/quotas/apply/',
          data: {
            act: "APPLYQUOTAS",
            users: users,
            base_id: base_id,
            quota: quota,
            droits: droits,
            restes: restes
          },
          success: function (data) {
            $('#quotas_dialog').dialog('close');
          }
        });
      }

      function save_time() {
        var cont = $('#time_dialog');
        var dmin = $('input[name="dmin"]', cont).val();
        var dmax = $('input[name="dmax"]', cont).val();
        var users = $('input[name="users"]', cont).val();
        var base_id = $('input[name="base_id"]', cont).val();
        var sbas_id = $('input[name="sbas_id"]', cont).val();

        var switch_time = $('.switch_time', cont);

        if (switch_time.hasClass('mixed'))
          return;

        var limit = 0;

        if (switch_time.hasClass('checked'))
          limit = 1;

        $.ajax({
          type: 'POST',
          url: '../admin/users/rights/time/apply/',
          data: {
            users: users,
            base_id: base_id,
            sbas_id: sbas_id,
            limit: limit,
            dmin: dmin,
            dmax: dmax
          },
          success: function (data) {
            $('#time_dialog').dialog('close');
          }
        });
      }

      function check_uncheck_menu(right, sbas_id, el) {
        var top = el.offset().top;
        var left = el.offset().left + 16;
        $('body').append('<div id="users_check_uncheck" style="position:absolute;top:' + top + 'px;left:' + left + 'px;">' +
        '<div class="checker" >' +
        language.check_all +
        '<input type="hidden" name="sbas_id" value="' + sbas_id + '"/>' +
        '<input type="hidden" name="right" value="' + right + '"/>' +
        '</div>' +
        '<div class="unchecker">' +
        language.uncheck_all +
        '<input type="hidden" name="sbas_id" value="' + sbas_id + '"/>' +
        '<input type="hidden" name="right" value="' + right + '"/>' +
        '</div></div>');

        $('#users_check_uncheck div').hover(
                function () {
                  $(this).addClass('hovered');
                },
                function () {
                  $(this).removeClass('hovered');
                }
        );
        $('#users_check_uncheck div.checker').bind('click', function (event) {
          event.stopPropagation();
          event.preventDefault();
          users_check(true, $('input[name="sbas_id"]', $(this)).val(), $('input[name="right"]', $(this)).val());
          $('#users_check_uncheck').remove();
        });
        $('#users_check_uncheck div.unchecker').bind('click', function (event) {
          event.stopPropagation();
          event.preventDefault();
          users_check(false, $('input[name="sbas_id"]', $(this)).val(), $('input[name="right"]', $(this)).val());
          $('#users_check_uncheck').remove();
        });

      }

      function users_check(bool, sbas_id, right) {
        var newclass;
        if (bool) {
          newclass = "checked";
        }
        else {
          newclass = "unchecked";
        }
        $('.inside_sbas_' + sbas_id + '.' + right + ':visible').each(function (i, n) {
          user_click_box(null, $(n), newclass);
        });
      }
    }

    ini_edit_usrs();

    $('div.tabs').tabs();

    $('#users_rights_form button#reset_rights').bind('click', function () {
      if (confirm("{{ 'Are you sure you want to reset rights?' | trans }}")) {
        var users = $('#users_rights_form input[name="users"]').val();

        $.ajax({
          type: 'POST',
          url: '/admin/users/rights/reset/',
          dataType: 'json',
          data: {
            users: users
          },
          success: function (data) {
            if (!data.error) {
              if (users === '') {
                return false;
              }

              $('#right-ajax').empty().addClass('loading');
              p4.users.sel = [];
              $.ajax({
                type: 'GET',
                url: '/admin/users/rights/',
                data: {
                  users: users
                },
                success: function (data) {
                  $('#right-ajax').removeClass('loading').html(data);
                }
              });

              return false;
            } else {
              alert(data.message);
            }
          }
        });
      }
    });
  });

  require([
    "jquery",
    "common/geonames"
  ], function ($, geonames) {
    var geocompleter = geonames.init($('#user_infos_tab input.geoname_field'), {
      "server": "{{ app['geonames.server-uri'] }}",
      "limit": 40
    });

  });

</script>
