$(function()
{
    $('[name^=year], [name^=amebaAccount]').change(function()
    {
        var year         = $(this).parents('tr').find('[name^=year]').val();
        var amebaAccount = $(this).parents('tr').find('[name^=amebaAccount]').val();
        var $category    = $(this).parents('tr').find('[name^=category]');
        var $tradeDept   = $(this).parents('tr').find('[name^=tradeDept]');
        var $line        = $(this).parents('tr').find('[name^=line]');
        var $product     = $(this).parents('tr').find('[name^=product]');
        var category     = $category.val();
        var tradeDeptID  = $tradeDept.attr('id');
        if(amebaAccount == 'internalIncome' || amebaAccount == 'internalDeal')
        {
            $tradeDept.removeAttr('disabled').hide().next('#' + tradeDeptID + '_chosen').show();
        }
        else
        {
            $tradeDept.attr('disabled', 'disabled').show().next('#' + tradeDeptID+ '_chosen').hide();
        }

        $line.find('option:selected').removeAttr('selected').trigger('chosen:updated');
        $product.find('option:selected').removeAttr('selected').trigger('chosen:updated');
        $category.load(createLink('budget', 'ajaxGetCategory', 'year=' + year + '&amebaAccount=' + amebaAccount), function()
        {
            $category.val(category).trigger('chosen:updated');
        })
    });

    $('[name^=line]').change(function()
    {
        var $product = $(this).parents('tr').find('[name^=product]');
        var product  = $product.val();
        $product.load(createLink('product', 'ajaxGetByCategory', 'status=normal&category=' + $(this).val()), function()
        {
            $product.val(product).trigger('chosen:updated');
        });
    });

    $('[name^=year], [name^=product]').change(function()
    {
        var $tr = $(this).parents('tr');
        if($tr.find('[name^=amebaAccount]').val() != 'externalIncome') return;

        var product = $tr.find('[name^=product]').val();
        var year    = $tr.find('[name^=year]').val();
        $.get(createLink('product', 'ajaxGetSubject', 'product=' + product + '&year=' + year + '&type=amebaCategory'), function(category)
        {
            $tr.find('[name^=category]').val(category).trigger('chosen:updated');
        });
    });

    $('[name^=year], [name^=dept], [name^=amebaAccount], [name^=line], [name^=category]').change(function()
    {
        var tr = $(this).parents('tr');
        var year         = tr.find('[name^=year]').val();
        var dept         = tr.find('[name^=dept]').val();
        var amebaAccount = tr.find('[name^=amebaAccount]').val();
        var line         = tr.find('[name^=line]').val();
        var category     = tr.find('[name^=category]').val();

        $.get(createLink('budget', 'ajaxGetMoney', 'year=' + year + '&dept=' + dept + '&amebaAccount=' + amebaAccount + '&line=' + line + '&category=' + category), function(money)
        {
            tr.find('[name^=lastMoney]').val(money);
        });
    });

    $('[name^=amebaAccount]').change();
})
