$(document).ready(function()
{
    $('#menu a[href*=setReportUnit]').attr({'data-toggle' : 'modal', 'data-width' : 400});

    $('[name*=objectType]').change(function()
    {
        if($(this).prop('checked')) 
        {
            $('[name*=objectType]').not(this).prop('checked', false).change();
            $('.traderTR').hide();
        }
        else
        {
            $('.traderTR').show();
        }

        $('#' + $(this).val()).parents('tr').toggle($(this).prop('checked'))
        if($(this).val() == 'order') $('.customerTR').toggle($(this).prop('checked'));
        if($(this).val() == 'contract') $('.allCustomerTR').toggle($(this).prop('checked'));
    })

    $('[name*=objectType]').each(function()
    {
        if($(this).prop('checked')) $(this).change();
    });

    /* Toggle create trader items. */
    $('[name*=createTrader]').change(function()
    {
        var $inputGroup = $(this).parents('.input-group');
        if($(this).prop('checked')) 
        {
            $inputGroup.find('select').hide();
            $inputGroup.find('[id*=trader][id*=_chosen]').hide();
            $inputGroup.find('input[type=text][id*=traderName]').show().focus();
            $(this).parents('.input-group-addon').find('.icon-question').hide();
        }
        else
        {
            $inputGroup.find('[id*=trader][id*=_chosen]').show();
            $inputGroup.find('input[type=text][id*=traderName]').hide();
        }
        $inputGroup.fixInputGroup();
    })

    /* Highlight submenu. */
    if(v.modeType && v.modeType != 'undefined')
    {
        if(config.requestType == 'GET')
        {
            if(v.modeType == 'in')
            {
                $('#mainNavbar li').removeClass('active').find("[href*='mode\\=" + v.modeType + "']").not('[href*=mode\\=invest]').parent().addClass('active');
            }
            else
            {
                $('#mainNavbar li').removeClass('active').find("[href*='mode\\=" + v.modeType + "']").parent().addClass('active');
            }
        }
        else
        {
            $('#mainNavbar li').removeClass('active');
            if(v.modeType == 'in' || v.modeType == 'all')
            {
                $('#mainNavbar li').find("[href*='trade-browse-" + v.modeType + ".html']").parent().addClass('active');
            }
            else
            {
                $('#mainNavbar li').find("[href*='-" + v.modeType + "']").parent().addClass('active');
            }
        }
    }

    $(document).on('change', '#customer,#trader', function()
    {
        if($(this).val())
        {
            $.get(createLink('trade', 'ajaxGetDepositor', 'customer=' + $(this).val()), function(depositor)
            {
                if(depositor)  $('tr.customer-depositor').show().find('#customerDepositor').val(depositor);
                if(!depositor) $('tr.customer-depositor').hide();
            });
        }
        else
        {
            $('tr.customer-depositor').hide();
        }
    })

    $('#customer,#trader').change();

    $(document).on('change', '.amount', function()
    {
        if($('#receipt').find('option:selected').data('currency') != $('#payment').find('option:selected').data('currency'))
        {
            $('.transfer').show().find('input').attr('disabled', false);
            $('.money').hide().find('input').attr('disabled', true);
        }

        if($('#receipt').find('option:selected').data('currency') == $('#payment').find('option:selected').attr('data-currency'))
        {
            $('.money').show().find('input').attr('disabled', false);
            $('.transfer').hide().find('input').attr('disabled', true);
        }
    })

    $('.amount').change();
})

/**
 * Get contract of a trader. 
 * 
 * @param  int    $traderID 
 * @access public
 * @return void
 */
function getContract(traderID)
{
    if(traderID == '') return false;
    $('.contractTD select').empty().load(createLink('crm.contract', 'ajaxGetOptionMenu', 'traderID=' + traderID));
}

/**
 * Get order of a customer. 
 * 
 * @param  int    $customerID 
 * @access public
 * @return void
 */
function getOrder(customerID)
{
    if(customerID == '') return false;
    $('.orderTD select').empty().load(createLink('crm.order', 'ajaxGetOptionMenu', 'customerID=' + customerID));
}

/**
 * Init table header
 * @access public
 * @return void
 */
function initTableHeader()
{
    $('.table-wrapper > table.table-fixed-head').each(function()
    {
        var $table = $(this);
        var $panel = $table.closest('.table-wrapper');

        if(!$table.length || !$table.children('thead').length) return;
        var isFixed = $panel.height() < $table.outerHeight();

        $panel.toggleClass('with-fixed-header', isFixed);
        var $header = $panel.children('.table-header-fixed').toggle(isFixed);
        if(!isFixed)
        {
            $table.find('thead').css('visibility', 'visible');
            return;
        }
        var tableWidth = $table.width();
        var $oldTableHead = $table.find('thead');
        var updateTh = function()
        {
            $header.find('thead').empty().append($oldTableHead.find('tr').clone());
        };
        if(!$header.length)
        {
            $header = $('<div class="table-header-fixed" style="position: absolute; left: 9px; top: 3px; right: 0; margin: 0 10px 0 0; background: #fff;"><table class="table table-fixed no-margin table-header-fixed-shadow"></table></div>').css('right', $panel.width() - tableWidth - 1);
            $oldTableHead.find('th').each(function(idx)
            {
                $(this).attr('data-idx', idx);
            });
            $header.find('.table').addClass($table.attr('class')).append($oldTableHead.css('visibility', 'hidden').clone().css('visibility', 'visible'));
            $panel.addClass('with-fixed-header').append($header);
        }
        else
        {
            updateTh();
        }

        var timeoutCall = null;
        $table.parent().off('scroll.initTableHeader').on('scroll.initTableHeader', function()
        {
            clearTimeout(timeoutCall);
            var $tableContainer = $(this);
            timeoutCall = setTimeout(function() {
                $panel.toggleClass('table-scrolled', $tableContainer.scrollTop() > 0);
            }, 200);
        });
    });
}
