/*
     $Revision$
     $Id$
*/

$(function() {
  // Cache velden én hun rijen
  var $type        = $('#attributetype');

  var $length      = $('#length'),
      $decimals    = $('#decimals'),
      $minimum     = $('#minimum'),
      $maximum     = $('#maximum'),
      $domain      = $('#domain'),
      $unit        = $('#unit');

  var $lengthRow   = $length.closest('tr'),
      $decimalsRow = $decimals.closest('tr'),
      $minRow      = $minimum.closest('tr'),
      $maxRow      = $maximum.closest('tr'),
      $domainRow   = $domain.closest('tr'),
      $unitRow     = $unit.closest('tr');

  function updateFields() {
    var t;
    if ($('#attributetype').length) {
      // geval: <select id="attributetype"> bestaat
      t = $('#attributetype').val();
    } else {
      // geval: type is onveranderbaar en zit in een <span class="fld" title="Key: X">...</span>
      // we pakken de title, splitsen op ':' en trimmen het uiteinde
      var title = $('span.fld[title^="Key:"]').attr('title') || '';
      // title is iets als "Key: C"
      t = title.split(':')[1].trim(); // wordt "C"
    }
    // 1) Eerst alle rijen verbergen, alle inputs uitzetten en 'required' weghalen
    [$lengthRow, $decimalsRow, $minRow, $maxRow, $domainRow, $unitRow].forEach(function($row) {
      $row.hide().find('input,select').prop({
        disabled: true,
        required: false
      });
    });

    // 2) Per type de juiste rijen tonen, inputs aanzetten en ev. required zetten
    switch (t) {
      case 'C': // Tekstveld
        $lengthRow.show();
        $length.prop('disabled', false)
               .prop('required', true)
               .addClass('required');
        break;

      case 'N': // Numeriek
        $lengthRow.show();
        $decimalsRow.show();
        $minRow.show();
        $maxRow.show();
        $unitRow.show();
        $length.prop('disabled', false)
               .prop('required', true)
               .addClass('required');
        $decimals.prop('disabled', false)
               .prop('required', true)
               .addClass('required');
        $minimum.prop('disabled', false);
        $maximum.prop('disabled', false);
        $unit.prop('disabled', false);
        break;

      case 'D': // Datum
      case 'T': // Tijd
        $minRow.show();
        $maxRow.show();
        $minimum.prop('disabled', false);
        $maximum.prop('disabled', false);
        break;

      case 'R': // Referentie (listbox)
      case 'r': // Referentie (radio)
      case 'S': // Referentie (suggestie)
        $domainRow.show();
        $domain.prop('disabled', false)
               .prop('required', true)
               .addClass('required');
        break;

      case 'M': // Map
      case 'E': // Encrypted
      case 'F': // File
        $unitRow.show();
        $unit.prop('disabled', false);

      default:
        // overige types: alles blijft verborgen/uit
    }
    FcltMgr.resized();
  }

  // Eventlistener en initialisatie
  $type.on('change', updateFields);
  updateFields();

    $("#attributetype").change(change_attributetype);
    $("#contractpropertytype").change(change_contractpropertytype);

});


function change_attributetype()
{
    var ktype = $("#attributetype option:selected").val();
    var ktype_lbl_default  = (ktype == "l" ? L("mgt_kenmerk_icon") : L("mgt_kenmerk_default"));
    var ktype_lbl_readonly = (ktype == "l" ? L("mgt_kenmerk_collapsed") : L("mgt_kenmerk_toonbaar"));
    $("label[for*='propertydefault']").html(ktype_lbl_default);
    $("label[for*='readonly']").html(ktype_lbl_readonly);
}

function change_contractpropertytype()
{
    var ktype = $("#contractpropertytype option:selected").attr("cnt_srtkenmerk_kenmerktype");
    var ktype_lbl_default  = (ktype == "l" ? L("mgt_kenmerk_icon") : L("mgt_kenmerk_default"));
    var ktype_lbl_readonly = (ktype == "l" ? L("mgt_kenmerk_collapsed") : L("mgt_kenmerk_toonbaar"));
    $("label[for*='propertydefault']").html(ktype_lbl_default);
    $("label[for*='readonly']").html(ktype_lbl_readonly);
}

function pre_submit(params)
{
    var params = params || {};
    if (params.isMulti)
        return true; // te ingewikkeld

    // var module:        gezet in xxx_kenmerk.asp.
    // var property_type: voor nieuw kenmerk uit formfield "property_type".
    //                    voor bestaand kenmerk indien a) wijzigbaar:      uit formfield "property_type"
    //                                                 b) niet wijzigbaar: gezet in xxx_kenmerk.asp
    var attributeType = ($("#attributetype").length == 0? property_type : $("#attributetype").val() );
    var validation_message = "";

    if (attributeType == "C" && $("#length").val() == "")
        validation_message = L("mgt_srtkenmerk_lengte_val1");
    if (attributeType == "N" && $("#length").val() == "")
        validation_message = L("mgt_srtkenmerk_lengte_val1");
    if (["R", "r", "S"].includes(attributeType) && $("#domain").val() == -1)
        validation_message = L("mgt_srtkenmerk_domein_val1");

    if (attributeType == "C"
       && (  $("#length").val() > 4000
          || $("#length").val() < 1
          ))
        validation_message = L("mgt_srtkenmerk_lengte_val2");

    if (validation_message != "")
    {
        FcltMgr.alert(validation_message);
        return false;
    }

    return true;
}