$(function()
{
    if(config.requestType == 'GET') $('.treeview li a[href$="=' + window.action + '"]').parent('li').addClass('active');
    if(config.requestType == 'PATH_INFO') $('.treeview li a[href$="-' + window.action + '.html"]').parent('li').addClass('active');

    $('#triggerModal').addClass('layout-modal').attr('data-action', window.action);

    var $trs = $('tr');
    $trs.filter('.fixed-enabled').appendTo('#fixedEnabled');
    $trs.filter('.fixed-required').appendTo('#fixedRequired');

    $('.table-origin').remove();

    $requireTrs = $('#fixedRequired tr');
    $enableTrs  = $('#fixedEnabled tr');
    if(!$requireTrs.length) $('#fixedRequired').hide();

    if($enableTrs.length < 2)
    {
        $('#fixedEnabled').addClass('sort-disabled');
        $enableTrs.find('input[name*=width]').val('auto').attr('disabled', 'disabled');
    }
    else
    {
        $('#fixedEnabled').sortable({trigger: '.icon-move', selector: 'tr'});
    }

    $('#reversechecker').click(function()
    { 
        $('.table-layout').find('tr').each(function()
        {
            if($(this).hasClass('head')) return;//exclude main table and sub table.
            if($(this).hasClass('disabled'))
            {
                $(this).removeClass('disabled').find('input[name*=show]').val('1');
            }
            else
            {
                $(this).addClass('disabled').find('input[name*=show]').val('0');
            }
        });
    });

    $(document).on('click', '#allchecker', function()
    {
        $('.table-layout').find('tr').removeClass('disabled').find('input[name*=show]').val('1');
    });

    /**
     * Show or hide a row. 
     */
    $('#adminLayoutForm .table-layout').on('click', 'tr:not(.required, :first-child) .show-hide, tr:not(.required, :first-child) .title', function()
    {
        var $tr = $(this).closest('tr');

        $tr.toggleClass('disabled');
        if($tr.hasClass('disabled'))  $tr.find('input[name*=show]').val('0');
        if(!$tr.hasClass('disabled')) $tr.find('input[name*=show]').val('1');

        if($tr.data('child') != undefined)
        {
            var child = '.child-' + $tr.data('child');
            $(child).toggleClass('disabled', $tr.hasClass('disabled'));

            if($(child).hasClass('disabled'))
            {
                $(child).find('tr').toggleClass('disabled', $tr.hasClass('disabled'));
                $(child).find('tr').find('input[name*=show]').val('0');
            }
        }

        if(window.method != 'browse' && window.method != 'view')
        {
            if($tr.data('field') == 'subStatus' && !$tr.hasClass('disabled'))
            {
                var $statusTr = $(this).parents('.table-layout').find('tr[data-field=status]');

                $tr.before($statusTr);

                if($statusTr.hasClass('disabled'))
                {
                    $statusTr.removeClass('disabled');
                    $statusTr.find('input[name*=show]').val('1');
                }
            }
        }
    });

    $('.child').each(function()
    {
        var module = '.module-' + $(this).data('module');
        $(this).toggleClass('disabled', $(module).hasClass('disabled'));
    })

    $('input[name*=custom]').change(function()
    {
        if($(this).parents('tr').data('control') == 'file') return false;

        var $group = $(this).parents('.input-group');
        if($(this).prop('checked'))
        {
            $group.find(('select[name*=defaultValue]')).attr('disabled', true).hide();
            $group.find(('input[name*=defaultValue]')).attr('disabled', false).show();
            $group.find('[id^=defaultValue][id$=chosen]').hide();
            $group.find('.picker').hide();
        }
        else
        {
            $group.find(('select[name*=defaultValue]')).attr('disabled', false);
            $group.find(('input[name*=defaultValue]')).attr('disabled', true).hide();
            $group.find('[id^=defaultValue][id$=chosen]').show();
            $group.find('.picker').show();
        }

        if(window.mode == 'view')
        {
            $group.find(('select[name*=defaultValue]')).attr('disabled', true);
            $group.find(('input[name*=defaultValue]')).attr('disabled', true);
        }
    })

    $('.fixed-required').find('input:not([name*=width], [name*=show]), select').attr('disabled', true);

    $('.child').sortable({trigger: '.icon-move', selector: 'tr'});

    $('.child').on('click', 'tr:first-child', function()
    {
        if(window.mode == 'view') return false;

        $(this).toggleClass('disabled');

        if($(this).hasClass('disabled'))  $(this).parents('.table-layout').find('tr:not(:first-child)').hide().find('input[name*=show]').val('0');
        if(!$(this).hasClass('disabled')) $(this).parents('.table-layout').find('tr:not(:first-child)').show().find('input[name*=show]').val('1');
    });

    $.setAjaxForm('#adminLayoutForm', function(response)
    {
        if(response.result == 'success')
        {
            setTimeout(function()
            {
                $('#triggerModal').load(response.locate, function()
                {
                    $.zui.ajustModalPosition();
                });
            }, 1200);
        }
    });

    $('input[name*=custom]').change();
});
